/********************************************
* This function opens up a full-screen pop-up.
* */
var cogWindow;
var homeTextsArr = new Array();
var form  = document.createElement("form");
form.style.display = "none";
var detect;
var httpObject;

//-- Un-remark when uploading to production server--
var storageDir = "OnLineProjectAs3";
var server = "http://program.cognifit.com/";
var scriptsServer = "http://www.cognifit.com/";
//------------------------------------------

//-- Un-remark when uploading to QA server--
/*var storageDir = "OnLineProjectAs3_storage";
var server = "http://www.mindfitnessforum.com/";
var scriptsServer = "http://www.mindfitnessforum.com/";*/
//------------------------------------------

var curServer;
var proxyPage = "/cognifit.php";
var getArr = new Array();
//
var scriptsNumber = 0;
var scriptsLoaded = 0;
var xmlParsed = false;
var launchStr;
var flashDivInnerHtml = "";
/**
 * Start opening the full-screen window hosting home.swf
* */
function start(){
	if (locArr["storageDir"]) storageDir = locArr["storageDir"];
	setHomeTexts(locArr);
	openFullWindow_php();
	//writeFullWindow("");
}
function launch() {
	start();
}
/**
 * Launch the demo
* */
function launchDemo(project, product, language, country, demoVer) {
	var getStr = "project=" + project + "&product=" + product + "&language=" + language + "&country=" + country + "&swf=demo.swf" + "&demoVer=" + demoVer;
	writeFullWindow(getStr);
}
/**
* This function builds a form with parameters to be submited to home.php (in full screen).
* Currently NETSCAPE and OPERA will open a new tab instead of a pop-up window :(
* @param _getStr - String with parameters that replaces the $_GET array when opening from external site (3rd party)
* */
function openFullWindow_php(_getStr) { //v2.0
	if(cogWindow == undefined || cogWindow.closed){
		curServer = server;
		if(homeTextsArr["server"]) {
			curServer = homeTextsArr["server"] + "/" + storageDir + "/";
		}
		detectBrowser();
		//Get the BODY element
		var body = document.getElementsByTagName("body")[0];
		//Build the form
		form.setAttribute("target", "flashapp");
		form.setAttribute("method", "post");
		form.onSubmit = fullScreenPost();
		if(homeTextsArr["product"] == "GENERIC_V4"){
			homeTextsArr["product"] = "generic_v4";
		}
		if(!_getStr){
			form.setAttribute("action", "http://" + locArr["HTTP_HOST"] + "/" + locArr["localDir"] + "/home.php");
			//Language
			createInput("language", homeTextsArr["language"]);
			//Country
			createInput("country", homeTextsArr["country"]);
			//Product
			createInput("project", homeTextsArr["project"]);
			//Product
			createInput("product", homeTextsArr["product"]);
			//Login mode
			createInput("loginmode", homeTextsArr["LOGIN_MODE"]);
			//backgroundcolor
			createInput("bgcolor", homeTextsArr["bgcolor"]);
			//Style
			createInput("added_style", homeTextsArr["STYLESHEET"]);
			//Xml path
			createInput("xmlpath", homeTextsArr["xmlpath"]);
			//Server path
			createInput("server", curServer);
			//Allow script access
			if(homeTextsArr["ALLOW_SCRIPT_ACCESS"]){
				createInput("allowScriptAccess", homeTextsArr["ALLOW_SCRIPT_ACCESS"]);
			} else {
				createInput("allowScriptAccess", "always");
			}
			//Registration string
			if(homeTextsArr["regs"]){
				createInput("regs", homeTextsArr["regs"]);
			}
			if(homeTextsArr["groupCode"]){
				createInput("groupCode", homeTextsArr["groupCode"]);
			}
			if(homeTextsArr["regNumber"]){
				createInput("regNumber", homeTextsArr["regNumber"]);
			}
			if(homeTextsArr["email"]){
				createInput("email", homeTextsArr["email"]);
			}
			//
			if(homeTextsArr["username"]){
				createInput("username", homeTextsArr["username"]);
			}
			if(homeTextsArr["pswrd"]){
				createInput("pswrd", homeTextsArr["pswrd"]);
			}
			//Mode (for debug: mode=debug)
			if(homeTextsArr["mode"]){
				createInput("mode", homeTextsArr["mode"]);
			}
			if(homeTextsArr["tt"]){
				createInput("tt", homeTextsArr["tt"]);
			}
		} else {
			var pairsArr = _getStr.split("&");
			var tmpArr;
			var _storageDir = storageDir;
			
			for(var i = 0 ; i < pairsArr.length ; i++){
				tmpArr = pairsArr[i].split("=");
				if (tmpArr[0] == "storageDir") {
					_storageDir = tmpArr[1];
				} else if(tmpArr[1] != ""){
					createInput(tmpArr[0], tmpArr[1]);
				}
			}
			curServer += _storageDir + "/";
			createInput("server", curServer);
			
			form.setAttribute("action", scriptsServer + _storageDir + "/home.php");
		}
      	body.appendChild(form);
		form.submit();
  	}
	cogWindow.focus();
}
/**
 * Dynamically write the full-screen window content
 * @param _getStr - String with pseudo GET parameters
 */
function writeFullWindow(_getStr, dontOpenWindow) {
	if(cogWindow == undefined || cogWindow.closed || dontOpenWindow){			
		scriptsNumber = 2;
		scriptsLoaded = 0;
		xmlParsed = false;
		
		curServer = server + storageDir + "/";
		
		detectBrowser();
		
		//
		if (homeTextsArr["server"] != undefined) {
			curServer = homeTextsArr["server"] + "/" + storageDir + "/";
		}
		var textFilePath;
		if(!_getStr) {
			//htmlText must be a well-formed XML
			textFilePath = curServer + homeTextsArr["project"] + 
			"products/" + homeTextsArr["product"] + 
			"/text/htmlText_" + homeTextsArr["language"] + "_" + 
			homeTextsArr["country"] + ".xml";
			getArr["project"] = homeTextsArr["project"].split("/")[1];
			getArr["product"] = homeTextsArr["product"];
			getArr["language"] = homeTextsArr["language"];
			getArr["country"] = homeTextsArr["country"];
		} else {
			launchStr = _getStr;
			var pairsArr = _getStr.split("&");
			for(var i = 0 ; i < pairsArr.length ; i++){
				getArr[pairsArr[i].split("=")[0]] = pairsArr[i].split("=")[1];
			}
			
			setProducts();
			
			//htmlText must be a well-formed XML
			textFilePath = curServer + "projects/" + getArr["project"] + "/products/" + getArr["productName"] + "/text/htmlText_" + getArr["language"] + "_" + getArr["country"] + ".xml";
		}
		//
		readHomeXml(textFilePath);
		if (dontOpenWindow == undefined) fullScreenPost();
		waitForLaunch();
	}
	cogWindow.focus();
}
/**
* Wait until full-screen window is open
*/
function waitForLaunch() {
	if (cogWindow && xmlParsed) {
		buildPage();
	} else {
		setTimeout("waitForLaunch();", 20);
	}
}
/**
* Set special products to pont at the generic product, while keeping the product code
* getArr['product'] is used as product code
*/
function setProducts() {
	getArr["productName"] = getArr["product"];
	
	switch (getArr["product"]) {
		case "MFOL":
		case "MFOLD":
			getArr["productName"] = "generic";
			break;
	}
}
/**
 * This function will be called from the fullscreen page (cognifit.php)
 * Builds the basic page, adds the js scripts to page head
 */
function buildPage() {
	var gaId = "UA-7774279-1";
	//Build input in opener
	if (!document.getElementById("winLoaded")) {
		winLoadEle = document.createElement("input");
		winLoadEle.setAttribute("type", "hidden");
		winLoadEle.setAttribute("id", "winLoaded");
		winLoadEle.setAttribute("value", "");
		try {
			document.getElementsByTagName("body")[0].appendChild(winLoadEle);
		} catch (e){}
	} else {
		document.getElementById("winLoaded").value = "";
	}
	if (homeTextsArr["PLEASE_WAIT"] == undefined) {
		homeTextsArr["PLEASE_WAIT"] = "Please wait...";
	}
    var docStr = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" +
	"<html>\n" +
	"<head>\n" +
	"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" +
    "<meta name=\"robots\" content=\"NOINDEX\" />\n" +
    "<meta http-equiv=\"EXPIRES\" content=\"" + getPageExpireDate() + "\" />\n" +
	"<base href=\"" + curServer + "projects/" + getArr["project"] + "/\" />\n" +
	"<link rel=\"stylesheet\" type=\"text/css\" href=\"products/generic/style/html_style.css\" />\n" +
	"<title>" + homeTextsArr["HOME_TITLE"] + "</title>\n" +
	"</head>\n" +
	"<body class=\"home_body_style\" onload=\"window.opener.reBuild(this);\">\n" +
	"	<div id=\"flashcontent\" style=\"display:block;\">\n" +
	"		<div style='font-size: 14px; text-align: center; margin-top: 300px; color: #3f68a3; font-family: verdana;'>" + homeTextsArr["PLEASE_WAIT"] + "</div>\n" +
	"	</div>\n" +
	"<form><input id=\"getStr\" value=\"" + launchStr + "\" type=\"hidden\" /></form>\n" +
	"</body></html>";
	cogWindow.document.write(docStr);
	
	var htm = cogWindow.document.getElementsByTagName("head")[0];
	var element = cogWindow.document.createElement("script");
	element.type="text/javascript";
	element.src = "../../scripts/swfobject.js";
	setOnloadBehavior(element);
	htm.appendChild(element);
	
	var element1 = cogWindow.document.createElement("script");
	element1.type="text/javascript";
	element1.src = "../../scripts/home_functions.js";
	setOnloadBehavior(element1);
	htm.appendChild(element1);
	
	//In case of demo - Add google google-analytics
	if (getArr["swf"] == "demo.swf") {
		//Add Google analytics calls
		var element2 = cogWindow.document.createElement("script");
		element2.type = "text/javascript";
		element2.src = "http://www.google-analytics.com/ga.js";
		htm.appendChild(element2);
		
		element2 = cogWindow.document.createElement("script");
		element2.type = "text/javascript";
		element2.text = "try {var pageTracker = _gat._getTracker(\"" + gaId + "\");pageTracker._setDomainName(\"cognifit.com\");pageTracker._trackPageview();} catch(e) {}\n";
		htm.appendChild(element2);
	}
	//Wait untill scripts are loaded
	checkLoading();
}
/**
 * Get expiry date for meta tag
 */
function getPageExpireDate () {
  var exp = new Date();
  exp.setDate(exp.getDate()-1)
  var m = exp.getMonth()+1;
  if (m < 10) m = "0" + m;
  return m + "/" + (exp.getDate()) + "/" + exp.getFullYear();
}
/**
* Define behavior to happen onload
* @param	element - Element to attach behavior to
*/
function setOnloadBehavior(element) {
	switch (detect) {
		case "msie":
			element.onreadystatechange  = function () {
				if (element.readyState == "loaded" || element.readyState == "complete") {
					scriptsLoaded++;
				}
			}
			break;
		default:
			element.onload = function () {
				scriptsLoaded++;
			}
	}
}
/**
* Check the loading ststus of js script files
*/
function checkLoading() {
	setTimeout( function () {
		if (scriptsLoaded == scriptsNumber) {
			buildBody();
		} else {
			checkLoading();
		}
	}, 10);
}
/**
* Add elements to page  <BODY>
*/
function buildBody() {
	try {
		//BODY
		setTimeout(function() {
			htm = cogWindow.document.getElementsByTagName("body")[0];
			
			element = cogWindow.document.createElement("script");
			element.type = "text/javascript";
			
			if (homeTextsArr["ALLOWSCRIPTACCESS"] == undefined) homeTextsArr["ALLOWSCRIPTACCESS"] = "always";
			if (getArr["swf"] == undefined || getArr["swf"] == "") getArr["swf"] = "Home.swf";
			
			flashDivInnerHtml = "<table summary='' id='outerTable' cellpadding='0' cellspacing='0' align='center' style='margin-top:150px;'>" +
			"<tr>" +
			"<td id='outerTop'></td>" +
			"</tr>" +
			"<tr>" +
			"<td id='midTdErr'>" + homeTextsArr["FLASH_DETECTION"] + "</td>" +
			"</tr>" +
			"<tr>" +
			"<td id='outerBottom'></td>" +
			"</tr>" +
			"</table>";
          
           // getArr["demoVer"] = (getArr["demoVer"] == undefined)? "" : ",demoVer: \"" + getArr["demoVer"] + "\"\n";
getArr["demoVer"] = "";
            element.text = "var flashvars = {\n" +
				"lang: \"" + getArr["language"] +"\",\n" +
				"country: \"" + getArr["country"] + "\",\n" +
				"product: \"" + getArr["product"] + "\",\n" +
				"productName: \"" + getArr["productName"] + "\",\n" +
				"loginmode: \"" + getArr["loginmode"] + "\",\n" +
				"username: \"" + getArr["username"] + "\",\n" +
				"pswrd: \"" + getArr["pswrd"] + "\"\n" +
				getArr["demoVer"] +
			"}\n" +
			"var params = {\n" +
				"quality: \"high\",\n" +
				"loop: \"false\",\n" +
				"scale: \"showall\",\n" +
				"allowScriptAccess: \"" + homeTextsArr["ALLOWSCRIPTACCESS"] + "\",\n" +
				"menu: \"false\",\n" +
				"bgcolor: \"" + homeTextsArr["BGCOLOR"] + "\"\n" +
			"}\n" +
			"var attributes = {\n" +
				"id: \"CogFlashApp\",\n" +
				"name: \"CogFlashApp\"" +
			"}\n" +
			"swfobject.embedSWF(\"" + getArr["swf"] + "\",\"flashcontent\", \"100%\", \"100%\", \"9.0.0\", false, flashvars, params, attributes);\n" +
			"function checkSwf() {\n" +
			"	var errDiv = document.getElementById('flashcontent');\n" +
			"	if (errDiv)\n" +
			"		errDiv.innerHTML = \"" + flashDivInnerHtml + "\"\n" +
			"}\n" +
			"swfobject.addDomLoadEvent(checkSwf);\n" +
			"closeFlag = true\n" +
			"function logOut(){\n" +
			"	var movie;\n" +
			"	if(closeFlag != undefined && closeFlag == false){\n" +
			"		closeFlag = true;\n" +
			"		try {\n" +
			"			movie = document.getElementById(\"CogFlashApp\");\n" +
			"			movie.onClosed();\n" +
			"		} catch (e) { }\n";
			if (homeTextsArr["REFRESH_OPENER_ON_UNLOAD"] != undefined) {
				element.text += "window.opener.location.reload();\n";
			}
			element.text += "		alert(\"" + homeTextsArr["EXIT_ALERT"] + "\");" +
			"	}\n" +
			"	try {if (window.opener.document.getElementById(\"winLoaded\")) window.opener.document.getElementById(\"winLoaded\").value = \"loaded\";} catch(e){}\n" +
			"}\n" +
			"window.onbeforeunload = logOut;";
			
			htm.appendChild(element);
			//
			cogWindow.document.close();
			//
		}, 20);
	} catch (e) {/*We'll get here if the full-screen window has been closed*/}
}
/**
*
*/
function reBuild(win, interval) {
	if (!interval) interval = 0;
	setTimeout (function () {
		if (document.getElementsByTagName("body")[0] != undefined) {
			if(document.getElementById("winLoaded") == null || document.getElementById("winLoaded").value == "loaded") {
				if (document.getElementById("winLoaded")) {
					document.getElementById("winLoaded").value = "";
				}
				cogWindow = win;
				writeFullWindow(cogWindow.document.getElementById("getStr").value, true);
			}
		} else {
			reBuild(win, 200);
		}
	}, interval);
}
/**
*
*/
function detectBrowser() {
	detect = navigator.userAgent.toLowerCase();
	//Detect the browser.
	var browserArr = new Array("aol","opera","msie","firefox","netscape","gecko");
	for(var i = 0 ; i < browserArr.length ; i++){
		if(detect.indexOf(browserArr[i]) > -1){
			detect = browserArr[i];
			break;
		}
	}
}
/**
 * Start S(ynchronus)JAX sequence to read home texts
 */
function readHomeXml(textFilePath) {
	getXml(textFilePath);
	//parseXml(httpObject.responseText);
}
function getHTTPObject(){
	if (window.ActiveXObject) 
		return new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest) 
		return new XMLHttpRequest();
	else {
		return null;
	}
}
/**
 * 
 */
function getXml(filePath){
	httpObject = getHTTPObject();
	if (httpObject != null) {
		//A(synchronus)JAX
		httpObject.open("GET", proxyPage + "?pvars=" + filePath, true);
		httpObject.onreadystatechange = setOutput;
		httpObject.send(null);
	}
}
function setOutput () {
	if (httpObject.readyState == 4) {
		parseXml(httpObject.responseText);
	}
}
/**
 *	Read XML after AJAX
 */
function parseXml(xmlDocStr) {
	var xmlDoc;
	if (detect == "msie") {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = "false";
		xmlDoc.loadXML(xmlDocStr);
 	} else {
		var parser = new DOMParser();
		xmlDoc = parser.parseFromString(xmlDocStr,"text/xml");
	}
	
	var root = xmlDoc.getElementsByTagName("HTML_LANGUAGE")[0];
	var nodevalue = "";
	for (var i = 0; i < root.childNodes.length; i++) {
		if (root.childNodes[i].nodeType != 1) {
			continue;
		}
		if(root.childNodes[i].firstChild != null) {
			nodevalue = root.childNodes[i].firstChild.data;
		} 
		if(root.childNodes[i].tagName != 1 && root.childNodes[i].tagName != undefined) {
			homeTextsArr[root.childNodes[i].tagName] = nodevalue;
		}
	}
	//
	xmlParsed = true;
}
/**
* Create an HTML form input field
*/
function createInput(inputName, arrVal){
	var tmpInput = document.createElement("input");
	tmpInput.setAttribute("type", "hidden");
	tmpInput.setAttribute("name", inputName);
	tmpInput.setAttribute("value", arrVal);
	form.appendChild(tmpInput);
}
/**
* Post the parameters form to home.php in a full-screen browser window
* Or just open an empty page to write content in it
* */
function fullScreenPost(){
	var winName = "cogHome";
	var targetPage = proxyPage;
	if (form.target){
		winName = form.target;
		targetPage = "";
	}
	switch(detect){
		case "firefox":
			cogWindow = window.open(targetPage, winName, "channelmode=0,location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbar=0,resizable=0,copyhistory=0");
			cogWindow.moveTo(0,0);
			cogWindow.resizeTo(screen.availWidth, screen.height - 24);
			break;
		case "aol":
			cogWindow = window.open(targetPage, winName, "channelmode=0,location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbar=0,resizable=1,copyhistory=0");
			cogWindow.moveTo(0,0);
			cogWindow.resizeTo(screen.availWidth, screen.height - 24);
			break;
		default:
			//To hide the launch bar add channelmode=yes, to features
			cogWindow = window.open(targetPage, winName, "location=no,toolbar=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=no,width="+(screen.availWidth-8)+",height="+(screen.availHeight-24)+",left=0, top=0,screenX=0,screenY=0");
	}
	
}
/**
* Initialize an array to hold home params
* */
function setHomeTexts(txtArr){
	homeTextsArr = txtArr;
}
/**
* Find operating system
* */
function checkOS() {
    switch(true) {
		case (navigator.appVersion.indexOf("Win")!=-1):
			return "win";
		case (navigator.appVersion.indexOf("Mac")!=-1):
			return "mac";
		case (navigator.appVersion.indexOf("X11")!=-1 || navigator.appVersion.indexOf("Linux")!=-1):
			return "unix";
		default:
			return "win";
	}
}

/*********************
* Check if cookies enabled
* Create a cookie and then check for it's existence
* */

/**
* Start the check
* */
function checkCookies(){
	//Try to create the cookie
	var exp = new Date(); 
	exp.setTime(exp.getTime() + 1800000); 
	// first write a test cookie 
	setCookie("cogCookie","CogniFit_cookie_test", exp, "/", false, false); 
	setTimeout('beginCheck();',200)
}
/**
* Try to Create the cognifit cookie
* */
function setCookie(name, value, expires, path, domain, secure){
	var curCookie = name + "=" + escape(value) + 
		((expires) ? "; expires=" + expires.toGMTString() : "") + 
		((path) ? "; path=" + path : "") + 
		((domain) ? "; domain=" + domain : "") + 
		((secure) ? "; secure" : ""); 
	document.cookie = curCookie;
}
/**
* Check operating system and set 'Require' texts accordingly.
* If cookies are NOT allowed - show the 'no_cookies' div.
* Else show the 'clickStart' div.
* */
function beginCheck(){
	//Check cookies
	if(!getCookie("cogCookie")){
		//Cookies blocked
		setDivsByOs("no_cookies");
	} else {
		setDivsByOs("require");
		//Cookies allowed
		document.getElementById('clickStart_hide').id='clickStart_show';
	}
	//
	//delete the cookie
	var exp = new Date(); 
	exp.setTime(exp.getTime() - 1800000);
	setCookie("cogCookie","CogniFit_cookie_test", exp, "/", false, false);
}
/**
* Find the cookie previously created for this check
* */
function getCookie(c_name){
	if (document.cookie.indexOf(c_name) > -1){
	  return true;
	} else {
		return false;
	}
}
/**
* Show and hide divs according to operating system (Mac or other)
* @param	divId - The div's id (e.g. 'require')
* */
function setDivsByOs(divId) {
	//First show the 'Windows' div
	try {
		document.getElementById(divId).style.display = "block";
	} catch(e){}

	if(checkOS() == "mac") {
		//Now if there is a 'Mac' div - show it instead of the 'Windows' div
		var mac_div = document.getElementById(divId + "_mac");
		if(mac_div != null) {
			if(mac_div.innerHTML != "" && mac_div.innerHTML.toLowerCase() != "<p></p>") {
				document.getElementById(divId).style.display = "none";
				mac_div.style.display = "block";
			}
		}
	}
	//
	testFlashVersion();
}
//-------------------------------------------------------------
/**
* Initiate the swfObject and load a small swf, to check Flash player version
*/
function testFlashVersion() {
	var badVersion = "10012";
	var playerVersion = swfobject.getFlashPlayerVersion();
	var vStr = playerVersion.major.toString() + playerVersion.minor.toString() + playerVersion.release.toString();
	if (document.getElementById("updateFlash")) {
		if (vStr == badVersion) {
			if (document.getElementById("clickStart_hide")) document.getElementById("clickStart_hide").style.display = "none";
			if (document.getElementById("require")) document.getElementById("require").style.display = "none";
			document.getElementById("updateFlash").style.display = "block";
		}
	}
}
//-------------------------------------------------------------
/**
* Swap image source (on mouse over/out)
*/
function swap_img(imgPath, imgId) {
	var _img = document.getElementById(imgId);
	_img.src = imgPath;
}
//-------------------------------------------------------------
/**
* Embed swf
*/
function addSWF(swfSrc, divName, width, height, ver) {
	var params = {
		quality: "high",
		loop: true,
		menu: false
	}
	swfobject.embedSWF(swfSrc, divName, width, height, ver, null, null, params);
}


