var flashPopupHeaderHeight = 26;
var flashPopupCloserID = "flashPopupCloser";
var flashPopupContentID = "flashPopupContent";
var htmlLoaderID = "htmlLoader";
var flashPopupPadding = 16;

function queryString( parameter ) {
	var loc = location.search.substring(1, location.search.length);
	var param_value = false;
	var params = loc.split("&");
	for (i=0; i<params.length;i++) {
		param_name = params[i].substring(0,params[i].indexOf('='));
		if (param_name == parameter) {
			param_value = params[i].substring(params[i].indexOf('=')+1)
		}
	}
	if (param_value) {
		return param_value;
	} else {
		return '';
	}
}

function closeFlashPopup() {
	var flashpopup = document.getElementById( 'flashpopup' );
	var dimoverlay = document.getElementById( 'dimoverlay' );
	flashpopup.style.visibility = 'hidden';
	dimoverlay.style.visibility = 'hidden';
	swfobject.removeSWF( flashPopupContentID );	
	swfobject.removeSWF( flashPopupCloserID );	
	
	createFlashPopupCloserContainer(); //make sure the closer is created before the content
	
	document.getElementById( 'controller' ).closeFlashPopup();
}

function centerFlashPopup( p_width, p_height, minWidthForDim, minHeightForDim, topOffset, leftOffset, minLeftOffset ) {
	
	minWidthForDim = minWidthForDim ? minWidthForDim : -1;
	minHeightForDim = minHeightForDim ? minHeightForDim : -1;
	
	var showDim = p_width > minWidthForDim || p_height > minHeightForDim;	
	if ( showDim ) return;
	
	var flashpopup = document.getElementById( 'flashpopup' );
	var myWidth = 0;
	var myHeight = 0;
	var xOffsetIE = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
	} else if ( document.documentElement && document.documentElement.clientWidth ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
		xOffsetIE = 9;
	} else if ( document.body && document.body.clientWidth ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
		xOffsetIE = 9;
	} 
	var x = (myWidth/2) + leftOffset + xOffsetIE;
	if (x < minLeftOffset) x = minLeftOffset;
	var offsetDifference = (minWidthForDim - p_width) / 2;	
	flashpopup.style.left = x + offsetDifference + "px";
	var offsetDifference = (minHeightForDim - p_height) / 2;	
	flashpopup.style.top = topOffset + offsetDifference + "px";		
}

function openFlashPopup( p_url, p_params, p_width, p_height, p_fps, p_bgcolor, minWidthForDim, minHeightForDim, topOffset, leftOffset, minLeftOffset ) {
	var flashpopup = document.getElementById( 'flashpopup' );
	var dimoverlay = document.getElementById('dimoverlay');
	flashpopup.style.visibility = 'visible';
	minWidthForDim = minWidthForDim ? minWidthForDim : -1;
	minHeightForDim = minHeightForDim ? minHeightForDim : -1;
	
	var showDim = p_width > minWidthForDim || p_height > minHeightForDim;	
	
	p_close = showDim ? 1 : 0;
	loadFlash( p_url, p_params, p_width, p_height, p_fps, p_bgcolor, p_close, minWidthForDim, minHeightForDim );
	
	if (dimoverlay) {
		dimoverlay.style.visibility = showDim ? 'visible' : 'hidden';
	}
	
	if (!showDim) {
		flashpopup.style.width = (p_width) + "px";
		flashpopup.style.height = (p_height) + "px";
		centerFlashPopup(p_width, p_height, minWidthForDim, minHeightForDim, topOffset, leftOffset, minLeftOffset);
	}
	
	document.getElementById( 'controller' ).openFlashPopup(showDim);
}
		
function loadFlash( p_url, p_params, p_width, p_height, p_fps, p_bgcolor, p_close, minWidthForDim, minHeightForDim ) {
	
	var flashPopup = document.getElementById( "flashpopup" );
	
	//need to ensure that the old DIV tag is gone
	swfobject.removeSWF( flashPopupContentID ); 
	var flashPopupContent = document.getElementById( flashPopupContentID );
	if(flashPopupContent)
	{
		flashPopup.removeChild( flashPopupContent );
	}		
	
	createHtmlLoaderContainer();
	createFlashPopupCloserSWF(p_width, p_height, p_close, p_bgcolor);
	createFlashPopupContentContainer();	
	
	
	// popup loader
	// ===============================================
	var attributes = {};	
	attributes.bgColor = p_bgcolor;
	attributes.width = p_width;
	attributes.height = p_height;
	attributes.data = p_url;
	var basePath = p_url.substring( 0, p_url.lastIndexOf( '/' )+1 );
	attributes.base = basePath;		
	
	var flashvars = "swfPath=" + p_url + "&width=" + p_width + "&height=" + p_height + "&frameRate=" + p_fps + "&bgColour=" + p_bgcolor + "&" + p_params + "&showClose=" + p_close;
	
	var params = { flashvars:flashvars, base:basePath, bgColor:p_bgcolor };
	
	swfobject.createSWF( attributes, params, flashPopupContentID );
}

function createFlashPopupCloserSWF(contentWidth, contentHeight, p_close, p_bgcolor) {
	
	createFlashPopupCloserContainer();
		
	var POPUP_CLOSER = "/global/swf/popUpCloser.swf?showClose=" + p_close;
	
	var swfwidth = contentWidth + 2; 
	var swfheight = flashPopupHeaderHeight;
	
	var attributes = {};
	attributes.bgColor = p_bgcolor;
	attributes.width = swfwidth;
	attributes.height = swfheight;
	attributes.data = POPUP_CLOSER;		
	
	var params = {};
	
	swfobject.createSWF( attributes, params, flashPopupCloserID );
	
	var flashpopupCloser = document.getElementById(flashPopupCloserID);

	flashpopupCloser.style.width = swfwidth + "px";
	flashpopupCloser.style.height = swfheight + "px";	
	flashpopupCloser.style.top = '-' + flashPopupHeaderHeight + 'px';
	
	var htmlLoader = document.getElementById( htmlLoaderID );	
	htmlLoader.style.width = swfwidth + "px";
	htmlLoader.style.height = contentHeight + "px";	
	htmlLoader.style.top = flashPopupHeaderHeight + "px";	
	htmlLoader.style.backgroundColor = "#FF6600";
	//htmlLoader.style.backgroundColor = p_bgcolor;
	
	var loaderImg = document.getElementById( 'loaderImage' );	
	loaderImg.style.marginTop = (contentHeight/2 - 36) + 'px';
	
	if(!p_close){
		flashpopupCloser.style.display = 'none';
	}
	
	alignFlashPopupCloserSWF(contentWidth, contentHeight);
}

function alignFlashPopupCloserSWF(contentWidth, contentHeight) {	
	
	var screenWidth = 0;
	var xOffsetIE = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		screenWidth = window.innerWidth;
	} else if ( document.documentElement && document.documentElement.clientWidth ) {
		//IE 6+ in 'standards compliant mode'
		screenWidth = document.documentElement.clientWidth;
		xOffsetIE = 9;
	} else if ( document.body && document.body.clientWidth ) {
		//IE 4 compatible
		screenWidth = document.body.clientWidth;
		xOffsetIE = 9;
	} 	
	var middleX = (screenWidth/2) + xOffsetIE;
	
	var htmlLoader = document.getElementById( htmlLoaderID );
	var htmlLoaderWidth = htmlLoader.style.width.replace(/px/g, '') + 0;
	htmlLoader.style.left = (middleX - htmlLoaderWidth/2) + 'px';	
}

function createFlashPopupCloserContainer() {
	var flashPopupCloser = document.getElementById( flashPopupCloserID );
	if ( !flashPopupCloser ) {
		var flashPopupCloser = document.createElement( "div" );
		flashPopupCloser.setAttribute( "id", flashPopupCloserID );
		document.getElementById( "flashpopup" ).appendChild( flashPopupCloser );
	}	
}

function createFlashPopupContentContainer() {
	var flashPopupContent = document.getElementById( flashPopupContentID );
	if ( !flashPopupContent ) {
		var flashPopupContent = document.createElement( "div" );
		flashPopupContent.setAttribute( "id", flashPopupContentID );
		document.getElementById( "flashpopup" ).appendChild( flashPopupContent );
	}		
}

function createHtmlLoaderContainer() {
	var htmlLoader = document.getElementById( htmlLoaderID );
	
	if ( !htmlLoader ) {
		var htmlLoader = document.createElement( "div" );
		htmlLoader.setAttribute( "id", htmlLoaderID );
		document.getElementById( "flashpopup" ).appendChild( htmlLoader );
	}	
	
	htmlLoader.innerHTML  = "<img id='loaderImage' src='/global/img/loading.gif'/></div>";
}

function updateDimOverlay( p_height ) {
	var div = document.getElementById('dimoverlay');
	if (!div) return;
	div.style.height = ( p_height - 164 ) + "px";
}

//HIGH SCORES
function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        return document[movieName];
    }
}

function refreshHighScores() {
	thisMovie("controller").refreshHighScores();
}