// 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;
	window.onscroll = 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 vp = new ssUtil_Viewport();
	obj.style.top = vp.scrollY + 'px';
	obj.style.height = vp.windowY + '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%", "100%", "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;

	resizeScreenSaver();

} // 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().

function ssUtil_Viewport() {

	this.windowX = (document.documentElement && document.documentElement.clientWidth) || window.innerWidth || self.innerWidth || document.body.clientWidth;
	this.windowY = (document.documentElement && document.documentElement.clientHeight) || window.innerHeight || self.innerHeight || document.body.clientHeight;
	this.scrollX = (document.documentElement && document.documentElement.scrollLeft) || window.pageXOffset || self.pageXOffset || document.body.scrollLeft;
	this.scrollY = (document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop;
	this.pageX = (document.documentElement && document.documentElement.scrollWidth) ? document.documentElement.scrollWidth : (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth;
	this.pageY = (document.documentElement && document.documentElement.scrollHeight) ? document.documentElement.scrollHeight : (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;

} // End ssUtil_Viewport().