var bHideDivMaskAtWaitingProcessEnd = false;
var bFirstDisplay = false;
var bDisplayNews = true;

var nIFramesDisplayCount = 0;
var nIFramesDisplayId = 0;

var aDisplayedIFrames = new Array();
var aInWaitingIFrames = new Array();
//var aIFrameNames = new Array( "news", "newsHome", "externSite", "rightnow", "userguidePangya", "userguideGunbound", "rankingPangya", "rankingGunbound", "rankingKart", "rankingXtrem");
var aIFrameNames = new Array( "news", "newsHome", "externSite", "rightnow", "userguidePangya", "userguideGunbound", "rankingPangya", "rankingGunbound");

var sDebug = "";

// Default not log
var isLog = false;


// Default language is English
var sParameters = 'language=en';

if (navigator.appName == 'Netscape') {
	var sLanguage = navigator.language.substring(0,2); // return a str en-US get the first part
} else {
	var sLanguage = navigator.browserLanguage.substring(0,2); // return a str en-US get the first part
}


// Find out which language is used according to the browser
if ( sLanguage == 'fr' ) {
	sParameters = 'language=fr'; 
} else if ( sLanguage == 'de' ) {
	sParameters = 'language=de'; 
} else if ( sLanguage == 'es' ) {
	sParameters = 'language=es'; 
}

if (navigator.appName == 'Netscape') {
	sParameters = sParameters +'&browser=others';
} else {
	sParameters = sParameters +'&browser=ie';

	if ( navigator.userAgent.indexOf("MSIE") > -1 ) {
		sParameters = sParameters + '&ieversion=' + ( navigator.userAgent.substr( navigator.userAgent.indexOf("MSIE")+5, 1 ) );
	}
}


// Add other paramters (the ones fromt he URL)
var sURL = window.document.URL.toString();
if (sURL.indexOf("?") > 0) {
	var arrParams = sURL.split("?");
	sParameters = sParameters+'&' +arrParams[1];
} 

// Wmode
//sParameters = sParameters+'&wmode=transparent';


function main_DoFSCommand(command, args) {
	//alert( "main_DoFSCommand command=> " + command + " = " + args);

	if ( !isNaN(args) ) {
		var aParameter = args;
	}
	else {
		var aParameter = args.split("||");
	}

	switch( command ) {
		case "stats":
			myStats( aParameter[0], aParameter[1] );
			break;
			
		case "accessRN":
			window.open(aParameter[0], 'accessRN');
			break;
			
		case "hideDivMaskAtWaitingProcessEnd":
			//sDebug += "hideDivMaskAtWaitingProcessEnd<br/>";
			bHideDivMaskAtWaitingProcessEnd = true;
			break;
			
		case "authorisedDisplayNews":
			//sDebug += "authorisedDisplayNews<br/>";
			bDisplayNews = true;
			break;
				
		case "resizeHTML":
			resizeHTML( aParameter );
			break;
			
		case "lockDisplayNews":
			//sDebug += "lockDisplayNews<br/>";
			bDisplayNews = false;
			break;
			
		case "displayIFrame":
			//sDebug += "displayIFrame > name = " + aParameter[0] + " / bDisplayNews = " + bDisplayNews + "<br/>";
			if ( aParameter[0] == "news") {
				displayNewsIFrame( aParameter[0] );
			} 
			else if ( aParameter[0] == "newsHome" ) {
				if (bDisplayNews) {
					displayNewsIFrame( aParameter[0] );
				}
				else {
					addToInWaitingIframes( aParameter[0] );
				}
			}
			else if ( aParameter[0] == "rightnow" ) {
				displayRightNowIFrame( aParameter[0] );
			}
			else if ( aParameter[0] == "userguide" ) {
				displayUserGuideIFrame( aParameter[0], aParameter[1] );
			}
			else if ( aParameter[0] == "ranking" ) {
				displayRankingIFrame( aParameter[0], aParameter[1] );
			}
			break;
			
		case "hideAllIFramesToStart":
			//sDebug += "hideAllIFramesToStart<br/>";
			hideAllIFramesToStart();
			break;
			
		case "hideAllIFrames":
			//sDebug += "hideAllIFrames<br/>";
			hideAllIFrames();
			break;
			
		case "showAllIFrames":
			//sDebug += "showAllIFrames<br/>";
			showAllIFrames();
			//alert(sDebug);
			break;
			
		case "loadNews":
			//sDebug += "loadNews<br/>";
			loadNews( aParameter[0], aParameter[1], "news", aParameter[2], aParameter[3] );
			break;
			
		case "loadNewsHome":
			//sDebug += "loadNewsHome<br/>";
			loadNews( aParameter[0], aParameter[1], "newsHome" );
			break;
		case "launchExternSite":
			launchExternSite( aParameter[0] );
			break;
			
		case "launchRightnow":
			//sDebug += "launchRightnow > name = " + aParameter[0] + "<br/>";
			launchRightnow( aParameter[0] );
			break;
		
		case "changeLanguage":
			//sDebug += "changeLanguage > name = " + aParameter[0] + "<br/>";
			changeLanguage( aParameter[0] );
			break;
			
		case "launchUserguide":
			launchUserguide( aParameter[0], aParameter[1] );
			break;
		
		case "launchRanking":
			launchRanking( aParameter[0], aParameter[1] );
			break;
		
		case "startWaitingAnim":
			//sDebug += "startWaitingAnim > name = " + aParameter[0] + " / bFirstDisplay = " + aParameter[1] + "<br/>";
			if ( aParameter[1] != undefined ) {
				bFirstDisplay = true;
			}
			startWaitingAnim( aParameter[0] );
			break;
		
		case "endWaitingAnim":
			//sDebug += "endWaitingAnim > name = " + aParameter[0] + "<br/>";
			//alert("0- " + aParameter[0]);
			//document.getElementById( "newsHomeMaskPix" ).setAttribute("height",300);
			//document.getElementById( "newsHomeMaskPix" ).height = document.getElementById( aParameter[0] + "Content" ).offsetHeight + 100;
			//alert("2- " + document.getElementById( "newsHomeMaskPix" ).height);
			endWaitingAnim( aParameter[0] );
			break;
		
		case "manageSession":
			manageSession( aParameter[0] );
			break;
		
		case "downloadPartner":
		case "accessInvoice":
			//window.open(aParameter[0], 'accessInvoice');
			// Check for popup killer to warn the user
			var win = window.open(aParameter[0], command);
			//win.focus();
			if ( !win || !win.open) {
				switch (aParameter[1])
				{
					case "fr":
						alert("Une fenêtre pop-up vient d'être bloquée par votre navigateur.\n\nVeuillez modifier les paramètres de filtrage de votre navigateur." );
						break;
					case "de":
						alert("Ihr Browser hat soeben ein Pop-up-Fenster blockiert.\n\nBitte ändern Sie die Filtereinstellungen Ihres Browsers." );
						break;
					case "es":
						alert("Su navegador ha bloqueado una ventana emergente.\n\nPor favor modifique los parámetros de filtro de su navegador." );
						break;
					default:
						alert("A pop-up has been blocked.\n\nPlease change settings to allow pop-ups." );
				}
			}
			break;
		
		case "scroll_swf":
			window.scrollBy(0,aParameter);
			break;
			
		case "launchPartner":
			launchPartner( aParameter[0], aParameter[1] );
			break;
			
		case "showmenu":
			break;
			
		case "estat":
		   //_estatl(serial,cumul,page,groupe,l3,l4);
		   //_estatl(aParameter[0], aParameter[1], aParameter[2], aParameter[3], aParameter[4], aParameter[5]);
		   /*_uacct = "UA-2860046-1";
			 urchinTracker("/"+location.hash);*/
			break;
		
		// 2 paramètres possibles : tag (param 0) + email (param 1)
		// fin du formulaire
		case "subscriptionValid":
			urchinTracker("/"+aParameter[0]);
			esvtk_track( {esvtk_v:'1', esvtk_esvid:'A10105' , event:'goa_formulaire_inscription'});
			Zanox(aParameter[1]);
			smartadserver(5195);
			break;
			
		// 1 seul paramètre possible : tag (param 0)
		//retour de mail
		case "subscriptionConfirm":
			esvtk_track( {esvtk_v:'1', esvtk_esvid:'A10105' , event:'goa_confirmation_inscription'});
			smartadserver(5196);
			/*call admarket*/
			call_admarket_confirm(aParameter[0]);
			/**/
			break;
			
		//param 0 = tag dans le fichier download.xml
		case "gameDownload":
			esvtk_track( {esvtk_v:'1', esvtk_esvid:'A10105' ,  event:'goa_telechargement', jeu: aParameter[0]});
			break;
			
		default:
			alert("ERROR :: command = " + command);
	}
}

function resizeHTML( sHeight ){
	document.getElementById("flashcontent").style.height = sHeight+"px";
}


function displayGunboundSection(){
	top.location.href = "http://www-goacom-devel.goa.com/?action=gunbounddownload";
}


function launchPartner( psType, psUrl ){
	
	// var tmp = "Test => main.js :: launchPartner()\n";
	// tmp += "     - psType = " + psType + "\n\n";
	// tmp += "     - psUrl sans escape = " + psUrl + "\n\n";

  // Sous IE6, il n'ya pas besoin de faire un "escape" : l'URL est bonne et bien encodée par défaut.
  // Pour les autres navigateurs, il faut encoder la chaîne.
  // Donc, on teste si le paramètre "m" contient un ";". Si oui, on encode, sinon, ça veut dire que la chaîne est déjà encodée et on ne fait rien.
  
  // Si c'est W-HA, on fait le traitement. Pour Bibit, on ne fait rien.
  if ( psUrl.indexOf("w-ha") > -1 && psUrl.indexOf("?m=") > -1 ) {
    var aTmp = psUrl.split( "?m=" );
     if ( aTmp[1].indexOf(";") > 0 ) {
      aTmp[1] = escape(aTmp[1]);
      psUrl = aTmp.join( "?m=" );
      
      // NOTE : La fonction javascript "escape" encode tous les caractères spéciaux sauf * @ - _ + . / 
      // On a besoin de remplacer les "+" en dur
      aTmp = psUrl.split( "+" );
      psUrl = aTmp.join( "%2B" );
    }
  }
	
  // tmp += "     - psUrl avec escape = " + psUrl + "\n\n";
	// alert( tmp );
  // var debugWin = window.open("","debug","");
  // debugWin.document.write("<html><head></head><body>" + tmp + "</body></html>");

	switch ( psType ) {
		case "popup":
			var windowHandle = window.open( psUrl, '', 'width=725,height=760,resizable=yes,scrollbars=yes,status=yes' );
			windowHandle.focus();
			break;
			
		case "newNavigator":
			var windowHandle = window.open(psUrl, '', '');
			windowHandle.focus();
			break;
		
		case "parent":
			window.location.href = psUrl;
			break;
	}
}


/*function scroll_swf(){
	window.scrollBy(0,aParameter[0]);
}*/
function changeLanguage( sNewLanguage ){
	//alert('changeLangue' + sNewLanguage); 
	//changement de titre
/*	if ( sNewLanguage == 'fr' ) {
		document.title = 'GOA.COM : Jouez sans limites'; 
	} else if ( sNewLanguage == 'de' ) {
		document.title = 'GOA.COM : Spielen ohne Limit';
	} else if ( sNewLanguage == 'es' ) {
		document.title = 'GOA.COM : Barra libre para jugar';
	} else if ( sNewLanguage == 'en' ) {
		document.title = 'GOA.COM : Be free to play';
	} */
	
	
	//document.getElementById("flashcontent").contentWindow.document.getElementById("main").changeTitleLanguage();
	
	//changement de cible pour la frame du bas
	//document.getElementById( "footerFrame" ).src = 'i18n/footer/' + sNewLanguage + '/footer.html';
	
	var aLocalizedTexts = new Array(4);
	
	aLocalizedTexts['fr'] =  new Array(7);
	aLocalizedTexts['fr'][0] = "Copyrights";
	aLocalizedTexts['fr'][1] = "Charte de Comportement";
	aLocalizedTexts['fr'][2] = "Conditions G&#233;n&#233;rales d&#8217;Utilisation";
	aLocalizedTexts['fr'][3] = "Contrat de Licence Utilisateur Final";
	aLocalizedTexts['fr'][4] = "Informations L&#233;gales";
	aLocalizedTexts['fr'][5] = "Emplois";
	aLocalizedTexts['fr'][6] = "Contacts";
	
	aLocalizedTexts['en'] =  new Array(7);
	aLocalizedTexts['en'][0] = "Copyright";
	aLocalizedTexts['en'][1] = "Behaviour Charter";
	aLocalizedTexts['en'][2] = "General Conditions Of Use";
	aLocalizedTexts['en'][3] = "End-User Licence Agreement";
	aLocalizedTexts['en'][4] = "Legal Notices";
	aLocalizedTexts['en'][5] = "Jobs";
	aLocalizedTexts['en'][6] = "Contacts";
	
	aLocalizedTexts['de'] =  new Array(7);
	aLocalizedTexts['de'][0] = "Copyrights";
	aLocalizedTexts['de'][1] = "Verhaltenscharta";
	aLocalizedTexts['de'][2] = "Allgemeine Nutzungsbedingungen";
	aLocalizedTexts['de'][3] = "Lizenzvertrag für Endnutzer";
	aLocalizedTexts['de'][4] = "Rechtliche Hinweise";
	aLocalizedTexts['de'][5] = "Jobs";
	aLocalizedTexts['de'][6] = "Kontakte";
	
	aLocalizedTexts['es'] =  new Array(7);
	aLocalizedTexts['es'][0] = "Copyrights";
	aLocalizedTexts['es'][1] = "C&oacute;digo de Conducta";
	aLocalizedTexts['es'][2] = "Condiciones Generales De Utilizaci&#243;n";
	aLocalizedTexts['es'][3] = "Contrato de Licencia Usuario Final";
	aLocalizedTexts['es'][4] = "Informaci&#243;n Legal";
	aLocalizedTexts['es'][5] = "Empleo";
	aLocalizedTexts['es'][6] = "Contactos";
	
	var sFooter = "";
//    sFooter += '<a href="javascript:void(0);" onclick= "window.open(\'i18n/footer/' + sNewLanguage + '/copyrights.html\',null,\'width=740, height=700, status=no, directories=no, toolbar=no, location=no, scrollbars=yes, resizable=no, top=0, left=0\');">' + aLocalizedTexts[sNewLanguage][0] + '</a>';
    sFooter += '<a href="http://' + sNewLanguage + '.goa.com/copyrights/">' + aLocalizedTexts[sNewLanguage][0] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/behaviour/">' + aLocalizedTexts[sNewLanguage][1] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/cgu/">' + aLocalizedTexts[sNewLanguage][2] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/cluf/">' + aLocalizedTexts[sNewLanguage][3] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/legals/">' + aLocalizedTexts[sNewLanguage][4] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/jobs/">' + aLocalizedTexts[sNewLanguage][5] + '</a>';
    sFooter += ' &#183; ';
	sFooter += '<a href="http://' + sNewLanguage + '.goa.com/contact/">' + aLocalizedTexts[sNewLanguage][6] + '</a>';

	document.getElementById( "footer" ).innerHTML = sFooter;
}

function resizeBG() {
	document.getElementById("mainLeftMiddle").height = document.getElementById("mainCenter").offsetHeight - document.getElementById("mainLeftPattern").height;
	document.getElementById("mainLeftMiddleImg").height = document.getElementById("mainCenter").offsetHeight - document.getElementById("mainLeftPattern").height;
}


function isInActiveControllers( psElement ) {
	sDebug += "isInActiveControllers > elt = " + psElement + "<br/>";
	var sClassName = psElement.charAt(0).toUpperCase() + psElement.substr(1);
	document.getElementById( "flashcontent" ).contentWindow.document.main.SetVariable( "sCommunicationWithHTML", sClassName+"||inAC" );
}


function notifyEndCurrentProcess( psElement, psParam ) {
	sDebug += "notifyEndCurrentProcess > elt = " + psElement + " / param = " + psParam + "<br/>";
	//alert( "notifyEndCurrentProcess => " + psElement + " / " + bHideDivMaskAtWaitingProcessEnd );
	
	var sClassName = psElement.charAt(0).toUpperCase() + psElement.substr(1);
	document.getElementById( "flashcontent" ).contentWindow.document.main.SetVariable( "sCommunicationWithHTML", sClassName+"||"+psParam );
	
	if ( bHideDivMaskAtWaitingProcessEnd == true ) {
		bHideDivMaskAtWaitingProcessEnd = false;
		document.getElementById( psElement+"Mask" ).style.display = "none";
		document.getElementById( psElement+"Content" ).style.display = "none";
		
		// Cas particulier de RightNow :: on reset l'IFrame
		if(psElement == "rightnow") {
			document.getElementById("rightnowContent").src = "help.html";
		}
	}
}


/**
 * addToInWaitingIframes
 *
 * @param psTargetDiv [String] Nom de l'iframe cible
 * @return Void
 */
function addToInWaitingIframes( psTargetDiv ) {
sDebug += "addToInWaitingIframes > target = " + psTargetDiv + "<br/>";
	aInWaitingIFrames.push( psTargetDiv );
}


/**
 * hideAllIFramesToStart : Masque les iframes
 *
 * @return Void
 */
function hideAllIFramesToStart() {
	for ( i=0; i<aIFrameNames.length; i++ ) {
//sDebug += aIFrameNames[i] + " = " + document.getElementById( aIFrameNames[i] + "Content" ).style.display + "<br/>";
		document.getElementById( aIFrameNames[i] + "Mask" ).style.display = "none";
		document.getElementById( aIFrameNames[i] + "Content" ).style.display = "none";
		// debug 
		//alert( aIFrameNames[i] + "Mask" + " et " + aIFrameNames[i] + "Content" + " --> display à none");
	}	
	document.getElementById("rightnowContent").src = "help.html";
}


/**
 * hideAllIFrames : Masque les iframes
 *
 * @return Void
 */
function hideAllIFrames() {
	aDisplayedIFrames = null;
	aDisplayedIFrames = new Array();

	clearInterval( aAutoResizeTimeout );
	
	var j = 0;
	
	for ( i=0; i<aIFrameNames.length; i++ ) {
		sDebug += aIFrameNames[i] + " = " + document.getElementById( aIFrameNames[i] + "Content" ).style.display + "<br/>";
		if ( document.getElementById( aIFrameNames[i] + "Content" ).style.display != "none" ) {
			aDisplayedIFrames[j++] = aIFrameNames[i];
		}
		
		//document.getElementById( aIFrameNames[i] + "Content" ).src = "";
		
		document.getElementById( aIFrameNames[i] + "Mask" ).style.display = "none";
		document.getElementById( aIFrameNames[i] + "Content" ).style.display = "none";
	}
	
	document.getElementById("rightnowContent").src = "help.html";
}


/**
 * showAllIFrames : Affiche les iframes
 *
 * @return Void
 */
function showAllIFrames() {
	sDebug += "showAllIFrames > aDisplayedIFrames = " + aDisplayedIFrames + "<br/>";
	for ( i=0; i<aDisplayedIFrames.length; i++ ) {
		document.getElementById( aDisplayedIFrames[i] + "Content" ).style.display = "block";
		//aAutoResizeTimeout = setInterval( "__autoResizeIFrame( '" + aDisplayedIFrames[i] + "' )", 500 );
		//document.getElementById( aDisplayedIFrames[i] + "Content" ).style.height = newsDocument.getElementById("content").scrollHeight + "px";
	}
	
	for ( k=0; k<aInWaitingIFrames.length; k++ ) {
		document.getElementById( aInWaitingIFrames[k] + "Content" ).style.display = "block";
	}
	aInWaitingIFrames = new Array();
	
	aDisplayedIFrames = null;
	aDisplayedIFrames = new Array();
}



function goToNews( pnNewsId, psUrl ) {
	document.getElementById( "flashcontent" ).contentWindow.document.main.SetVariable( "sCommunicationWithHTML", "NewsHome||goToNews||" + pnNewsId + "||" + psUrl );
}


function launchExternSite( psUrl ) {
	document.getElementById( "externSiteContent" ).src = psUrl;
	document.getElementById( "externSiteContent" ).style.display = "block";
}


function launchRightnow( psUrl ) {
	// RN redirection
	var sURL = window.document.URL.toString();
	if (sURL.indexOf("?") > 0) {
		var strParams = sURL.split("?")[1];
		var arrParams = strParams.split("&");
		for(var i=0; i<arrParams.length; i++) {
			getVars = arrParams[i].split("=");
			if(getVars[0] == 'action' && getVars[1] == 'rightnow') {
				psUrl += '&' + strParams;
				break;
			}
		}
	}
	
	document.getElementById( "rightnowContent" ).src = psUrl;
	isInActiveControllers( "rightnow" );
}	


/**
 * displayRightNowIFrame : Affiche l'iframe de rightnow
 *
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @return Void
 */
function displayRightNowIFrame( psTargetDiv ) {
	//alert("displayRightNowIFrame > " + psTargetDiv);
	
	document.getElementById( "rightnowContent" ).style.display = "block";
}

function launchUserguide( psUrl, psName ) {
	//alert("launchUserGuide -> psName="+psName);
	document.getElementById( "userguide"+psName+"Content" ).src = psUrl;
	isInActiveControllers( "userguide" );
}

function launchRanking( psGame, psLg ) {
	//alert("launchRanking -> ("+psGame+","+psLg+")");
// A FAIRE !!!!!!!!!!!!!!!!
	var sGameName = psGame.charAt(0).toUpperCase() + psGame.substr(1);
	document.getElementById( "ranking"+sGameName+"Content" ).src = "/i18n/ranking/"+psGame+"/index.html?lang="+psLg;
	document.getElementById( "ranking"+sGameName+"Content" ).style.display = "block";
//	document.getElementById( "rankingPangyaContent" ).src = "http://www.google.fr";
	isInActiveControllers( "ranking" );
}

function displayUserGuideIFrame( psTargetDiv, psName ) {
	//alert( "displayUserGuideIFrame => " + psTargetDiv + ","+psName);
	document.getElementById( "userguide"+psName+"Content" ).style.display = "block";
}

function displayRankingIFrame( psTargetDiv, psName ) {
	//alert( "displayRankingIFrame => " + psTargetDiv + ","+psName);
	document.getElementById( "ranking"+psName+"Content" ).style.display = "block";
}


function startWaitingAnim( targetDiv ) {
	tabFaders[ targetDiv ].fadeIn();
}	


function endWaitingAnim( targetDiv ) {
	document.getElementById( targetDiv+"Mask" ).style.display = "block";
	
	tabFaders[ targetDiv ].fadeOut();
}	

function manageSession( psUrl ) {
	document.getElementById( "sessionContent" ).src = psUrl;
	document.getElementById( "sessionContent" ).style.display = "none";
}

function printPopup(popupUrl) {
         if (navigator.appName=="Microsoft Internet Explorer"){
            var popup = window.open(popupUrl, 'popup',  config='height=600, width=624, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
            popup.window.print();
         }
         else
            window.print();
}