// The screen saver's container id.
var SCREEN_SAVER_ID = "screenSaver_flash";

// The number of milliseconds to wait before showing the screen saver.
var SCREEN_SAVER_DELAY = 180000;

// Restricts the program to call the screen saver functions in order.
var screenSaverShown = false;
var screenSaverTimer = null;

initScreenSaver();

function initScreenSaver() {

	// Size the screen saver to the window.
	resizeScreenSaver();
	window.onresize = resizeScreenSaver;

	// Reset the screen saver when the user moves the mouse cursor.
	document.onmouseover = resetScreenSaver;

	resetScreenSaver();

} // End initScreenSaver().

function resizeScreenSaver() {

	var obj = document.getElementById( SCREEN_SAVER_ID );
	if ( obj == null ) return;

	var winSize = ssUtil_getWindowSize();

	obj.style.height = winSize.height + 'px';

} // End resizeScreenSaver().

function resetScreenSaver() {

	// Clear the currently scheduled event.
	if ( screenSaverTimer != null ) {
		clearTimeout( screenSaverTimer );
	} // End if.
	
	//If the screen saver is not shown, schedule it to appear after the specified amount of time.
	if ( screenSaverShown == false ) {
		screenSaverTimer = setTimeout( "showScreenSaver()", SCREEN_SAVER_DELAY );
	} // End if.

} // End resetScreenSaver().

function showScreenSaver() {

	if ( screenSaverShown ) return;

	// The last scheduled event executed -- reset its index.
	screenSaverTimer = null;

	var obj = document.getElementById( SCREEN_SAVER_ID );
	if ( obj == null ) return;

	// Hides the tagged dropdowns so they do not appear over the blimp.
	setTaggedElementVisibility( false );

	// Load the screen saver.
	// Do this every time the screen saver shows to restart the Flash animation.
	obj.innerHTML = "";
	obj.style.display = "";
	var screenSaver_so = new SWFObject( "/flash/screenSaver/screenSaver.swf", "screenSaverFlashMovie", "100%", "700", "7", "#ffffff" );
	screenSaver_so.addParam( "wmode", "transparent" );
	screenSaver_so.addParam( "scale", "noscale" );
	screenSaver_so.addParam( "salign", "lt" );
	screenSaver_so.addParam( "flashvars", "showConsole=false" );
	screenSaver_so.write( SCREEN_SAVER_ID );

	screenSaverShown = true;

} // End showScreenSaver().

function hideScreenSaver() {

	if ( screenSaverShown == false ) return;

	// Re-show the tagged dropdowns.
	setTaggedElementVisibility( true );

	var obj = document.getElementById( SCREEN_SAVER_ID );
	if ( obj == null ) return;

	// Hide the screen saver.
	obj.innerHTML = "";
	obj.style.display = "none";

	screenSaverShown = false;

	resetScreenSaver();

} // End hideScreenSaver().

// Returns the size of the window.
//
function ssUtil_getWindowSize() {
	
	var retObj = new Object();

	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		retObj.width = window.innerWidth;
		retObj.height = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		retObj.width = document.documentElement.clientWidth;
		retObj.height = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		retObj.width = document.body.clientWidth;
		retObj.height = document.body.clientHeight;
	}

	return retObj;

} // End ssUtil_getWindowSize().