var lang		= "";
var timer		= false;	
var rollerImgs	= false;
var images		= new Array();
var preLoad		= new Array( "leftArrow.gif", "leftArrowDisabled.gif", "rightArrow.gif", "rightArrowDisabled.gif" );
var inAnimation = false;

function getSWFDimensionsByName( swfName )
{
	var dimensions = {width:null, height:null};
	switch( swfName.toLowerCase() )
	{
		case "greeningwidget":
		case "renovatingwidget":
		case "homebuyingwidget":
			dimensions.height = 200;
			dimensions.width = 300;
		break;
		
		case "didyouknow":
			dimensions.height = 150;
			dimensions.width = 300;
		break;
		
		case "share":
			dimensions.height = 120;
			dimensions.width = 340;
		break;
		
		case "mortgagecalc":
			dimensions.height = 450;
			dimensions.width = 320;
		break;

		case "mortgage-payment-calculator":
		case "affordability":
		case "budget":
			dimensions.height = 600;
			dimensions.width = 300;
		break;
		
	}

	return( dimensions );
}

function swfModal( swfName )
{
	var scope = $( "a.nyroModal[rel='" + swfName + "']" ).get( 0 );

	var from = null;
	var url = null;

	if( scope == undefined )
	{
		from = null;
		url = "/" + lang + "/modal.html?name=" + swfName;
	}
	else
	{
		from = scope;
		url = $( scope ).attr( "href" );
	}

	if( url != null )
	{
		if( swfName )
		{
			var dimensions = getSWFDimensionsByName( swfName.toLowerCase() );
			var flashHeight = dimensions.height;
			var flashWidth	= dimensions.width;
			var	minWidth = 50;
			var minHeight = 50;			

			if( flashWidth != null && flashHeight != null )
			{
				$.nyroModalManual({
					minWidth:	50,
					minHeight:	50,
					height:		flashHeight,
					width:		flashWidth,
					resizable:	false,
					from:		from,
					type:		"iframe",
					url:		url
				});

				return( true );
			}
		}
	}
	
	return( false );
}

$( document ).ready( function()
{
	lang = $( "html" ).attr( "lang" );
	
	// Preloading Scroller images.
	for ( var x = 0; x < preLoad.length; x++ )
	{
		var image = new Image();
		image.src = "../inc/images/" + preLoad[ x ];
		images.push( image );
	}
	
	// Attach methods for pausing and resuming roller
	$( ".flashBox" ).mouseover(function()
	{
		roller( "pause" );
	});

	$( ".flashBox" ).mouseout(function(){
		roller( "resume" );
	});
	
	$( ".scrollLeft" ).click( function()
	{
		if ( $( this ).hasClass( "scrollLeftDisabled" ) )
		{
			return false;
		}

		var elemId	= $( this ).attr( "id" );
		var secId	= elemId.split( "_" )[ 1 ];

		scroll( secId, "left" );
	});
	
	$( ".scrollRight" ).click( function()
	{
		if ( $( this ).hasClass( "scrollRightDisabled" ) )
		{
			return false;
		}

		var elemId	= $( this ).attr( "id" );
		var secId	= elemId.split( "_" )[ 1 ];

		scroll( secId, "right" );
	});

	height = 150;

	if( lang == "fr")
	{
		height = 170;
	}

	// Setting Javascript Enabled specific Style
	$( ".sectionRow" ).css({
		position: "relative",
		overflow: "hidden",
		height: height+"px"
	});
	
	$( ".sectionHeader" ).css({
		border: "0px none transparent"
	});
	
	$( ".scrollers" ).css({
		display: "block"
	});

	// Init of Scroll Boxes
	$( ".sectionScroll" ).each( function()
	{
		var downloadsCount	= $( this ).find( ".downloadSection" ).length;
		var elemId			= $( this ).attr( "id" );
		var secId			= elemId.split( "_" )[ 1 ];
		var many			= 3;

		if ( downloadsCount < 3 )
		{
			var many = downloadsCount;
		}

		if ( lang == "en" )
		{
			var ofStr = " of ";
		}
		else
		{
			var ofStr = " de ";
		}
		
		$( "." + secId ).html( Math.ceil( many / 3 ) + ofStr + Math.ceil( downloadsCount / 3 ) );

		$( this ).css({
			position: "absolute",
			width: downloadsCount * 260 + "px"
		});
	});

	$( ".numberBox" ).livequery( "click", function()
	{
		var boxVal = $( this ).find( "input" ).val();

		if( inFade[ 0 ] == true || inFade[ 1 ] == true || boxVal == lastItem )
		{
			return false;
		}

		xFade( parseInt( boxVal ) );
	});

	$( "a.nyroModal" ).click( function( e )
	{
		e.preventDefault();

		return( swfModal( $( this ).attr( "rel" ) ) );
	});

	if( $.query.get( "name" ) != "" )
	{
		// This allows us to load a modal window for a widget on page load,
		// but only if there is a link to this widget somewhere on the page.
		if( window.location.pathname.indexOf( "/modal.html" ) == -1 )
		{
			swfModal( $.query.get( "name" ) );
		}
	}
});

// Fix share this for french
$( ".stbuttontext" ).livequery( function()
{
	if( lang == "fr" )
	{
		$( this ).html( "Partagez" );
	}
});

function initRoller()
{
	if ( !rollerImgs )
	{
		// Preloading Roller images.
		var count = 1;

		while ( count < 7 )
		{
			var image = new Image();
			image.src = "../inc/images/" + count + ".jpg";
			images.push( image );
			count++;
		}

		rollerImgs = true;
	}
	if ( !timer )
	{
		timer = window.setInterval( function() { xFade( lastItem + 1 ); }, "5500" );
	}
}

function roller( method )
{
	switch (method)
	{
		case "pause":
			window.clearInterval( timer );
			timer = false;
		break;

		case "resume":
			initRoller();
		break;
	}
}

function scroll( elem, direction )
{
	if( inAnimation )
	{
		return false;
	}
	
	inAnimation	= true;

	var orignal	= parseInt( $( "#sec_" + elem ).css( "left" ) );
	var width	= parseInt( $( "#sec_" + elem ).css( "width" ) );
	
	if( direction == "right" )
	{
		var newPos =  orignal - 780;
	}
	else if( direction == "left" )
	{
		var newPos = orignal + 780;
	}

	$("#sec_" + elem ).animate( { left: newPos + "px" }, 600, "easeInOutBack", function()
	{
		var downloadsCount	= $( "#sec_" + elem ).find( ".downloadSection" ).length;
		var many			= ( ( ( ( newPos ) * -1 ) / 780 ) +1 ) * 3;

		if ( downloadsCount < many )
		{
			var many = downloadsCount;
		}

		if ( lang == "en" )
		{
			var ofStr = " of ";
		}
		else
		{
			var ofStr = " de ";
		}
		
		$( "." + elem ).html( Math.ceil( many / 3 ) + ofStr + Math.ceil( downloadsCount / 3 ) );

		if ( ( newPos -780 ) * -1 >=  width )
		{
			$("#scroll_" + elem + "_right").addClass( "scrollRightDisabled" );
		}
		else if( $("#scroll_" + elem + "_right").hasClass( "scrollRightDisabled" ) )
		{
			$("#scroll_" + elem + "_right").removeClass( "scrollRightDisabled" );
		}
	
		if ( newPos + 780 > 0 )
		{
			$("#scroll_" + elem + "_left").addClass( "scrollLeftDisabled" );
		}
		else if( $("#scroll_" + elem + "_left").hasClass( "scrollLeftDisabled" ) )
		{
			$("#scroll_" + elem + "_left").removeClass( "scrollLeftDisabled" );
		}
		
		inAnimation = false;
	});
}

var inFade		= new Array( false, false );
var lastItem	= 1; 

function xFade( image )
{
	lastItem = image;

	if ( image >= 7 )
	{
		lastItem = 0; 
	}
	
	inFade[ 0 ] = true;
	inFade[ 1 ] = true;
	
	$( ".numberBox" ).css( "backgroundImage", "url( ../inc/images/numbersState.png )" );
	$( ".item" + image ).css( "backgroundImage", "url( ../inc/images/numbersHover.png )" );
	$( ".bgimg.hidden" ).attr( "src", "../inc/images/" + image + ".jpg" );
	$( ".screen" ).css({
		display: "none"
	});

	$( ".bgimg" ).fadeOut( 500, function()
	{
		$( this ).addClass( "hidden" );
		inFade[ 0 ] = false;
	});

	$( ".bgimg.hidden" ).fadeIn( 500, function()
	{
		$( this ).removeClass( "hidden" );
		inFade[ 1 ] = false;
	});

	$( ".s" + image ).fadeIn( "slow" );
}

// Enables clicking on the various icons for tools
function InitToolIconsClickable()
{
	$( "div.downloadSection" ).each( function()
	{
		var link = $( this ).children( "a" );

		$( this ).hover( function()
		{
			$( "body" ).css( "cursor", "pointer" );

		}, function()
		{
			$( "body" ).css( "cursor", "default" );

		});

		$( this ).click( function()
		{
			window.open( link.attr( "href" ), link.attr( "target" ) );

		});
	});
}

// Document.write override
(function()
{
	try
	{
		HTMLDocument.prototype.write = function()
		{
			return( arguments[0] );
		}
	}
	catch(error)
	{ 
		try
		{
			document.write = function()
			{
				return( arguments[ 0 ] );
			}
		}
		catch( er )
		{
			alert( error + "\n\n" + er );
		}
	}
})();

