var GLM={DOM:Object,AJAX:Object,Collection:Object};GLM.DOM.isInternetExplorer=(navigator.userAgent.indexOf("MSIE")>=0);GLM.DOM.isMozilla=(navigator.userAgent.indexOf("Gecko")>=0);GLM.DOM.isOpera=(navigator.userAgent.indexOf("Opera")>=0);GLM.Collection.Map=function(){var len=0;var keys=new Array();var values=new Array();this.get=function(key){var val=null;for(var i=0;i<len;i++){if(keys[i]==key){val=values[i];break;}}return val;};this.put=function(key,value){keys[len]=key;values[len++]=value;};this.length=function(){return len;};this.contains=function(key){var con=false;for(var i=0;i<len;i++){if(keys[i]==key){con=true;break;}}return con;};this.remove=function(key){var keyArr=new Array();var valArr=new Array();var l=0;for(var i=0;i<len;i++){if(keys[i]!=key){keyArr[l]=keys[i];valArr[l++]=values[i];}}keys=keyArr;values=valArr;len=l;};};GLM.AJAX=function(){var nameSpace="http://tempuri.org/";var map=new GLM.Collection.Map();var ajaxObject=function(){try{return new XMLHttpRequest();}catch(ex){};try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(ex){};try{return new SOAPCall();}catch(ex){};};;this.onError=function(error){alert(error);};this.callPage=function(url,callbackFunction,method,args,async){try{var ao=ajaxObject();ao.onreadystatechange=function(){if(ao.readyState==4||ao.readyState=="complete"){callbackFunction(ao.responseText);}};if(!method)method="GET";if(!args)args=null;if(async==null)async=true;ao.open(method,url,async);if(method=="POST")ao.setRequestHeader("Content-Type","application/x-www-form-urlencoded");ao.send(args);}catch(ex){this.onError(ex);}};this.callService=function(serviceUrl,soapMethod,callbackFunction){var callServiceError=this.onError;var ao=ajaxObject();if(GLM.DOM.isInternetExplorer){if(serviceUrl.indexOf("http://")<0)serviceUrl="http://"+serviceUrl;serviceUrl+="?WSDL";var soapEnvelope="<?xml version=\"1.0\" encoding=\"utf-8\"?>";soapEnvelope+="<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";soapEnvelope+="<soap:Body>";soapEnvelope+="<"+soapMethod+" xmlns=\""+nameSpace+"\">";if(arguments.length>3){for(var i=3;i<arguments.length;i++){var params=arguments[i].split("=");soapEnvelope+="<"+params[0]+">";soapEnvelope+=params[1];soapEnvelope+="</"+params[0]+">";}}soapEnvelope+="</"+soapMethod+">";soapEnvelope+="</soap:Body>";soapEnvelope+="</soap:Envelope>";ao.onreadystatechange=function(){if(ao.readyState==4){if(GLM.DOM.IsOpera){var response=ao.responseXML.getElementsByTagName(soapMethod+"Result")[0];if(!response)response=ao.responseXML.getElementsByTagName(soapMethod+"Response")[0];if(!response){callServiceError("WebService does not contain a Result/Response node");return;}ao.callbackFunction(ao.responseXML.getElementsByTagName(soapMethod+"Result")[0].innerHTML);}else if (GLM.DOM.isInternetExplorer){var responseXml=new ActiveXObject('Microsoft.XMLDOM');responseXml.loadXML(ao.responseText);var responseNode=responseXml.selectSingleNode("//"+soapMethod+"Response");if(!responseNode)responseNode=responseXml.selectSingleNode("//"+soapMethod+"Result");if(!responseNode)callServiceError("Response/Result node not found.\n\nResponse:\n"+ao.responseText);var resultNode=responseNode.firstChild;if(resultNode!=null){try{callbackFunction(resultNode.text);}catch(ex){callServiceError(ex);}}else{try{callbackFunction();}catch(ex){callServiceError(ex);}}}}};ao.open("POST",serviceUrl,true);ao.setRequestHeader("Content-Type","text/xml");ao.setRequestHeader("SOAPAction",nameSpace+soapMethod);try{ao.send(soapEnvelope);}catch(ex){serviceCallError(ex);}}else{var soapParams=new Array();var headers=new Array();var soapVersion=0;var object=nameSpace;if(serviceUrl.indexOf("http://")<0)serviceUrl=document.location+serviceUrl;ao.transportURI=serviceUrl;ao.actionURI=nameSpace+soapMethod;for(var i=3;i<arguments.length;i++){var params=arguments[i].split("=");soapParams.push(new SOAPParameter(params[1],params[0]));}try{ao.encode(soapVersion,soapMethod,object,headers.length,headers,soapParams.length,soapParams);}catch(ex){serviceCallError(ex);}try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}catch(ex){return false;}try{ao.asyncInvoke(function(resp,call,status){if(resp.fault)return callServiceError(resp.fault);if(!resp.body){callServiceError("Service "+call.transportURI+" not found.");}else{try{callbackFunction(resp.body.firstChild.firstChild.firstChild.data);}catch(ex){callServiceError(ex);}}});}catch(ex){serviceCallError(ex);}}};this.setNameSpace=function(ns){nameSpace=ns;};this.getNameSpace=function(){return ns;};};

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function glm_empty_callback()
{
	return;
}

function tracking_ajax_log_update()
{
	var ajax = new GLM.AJAX();
	ajax.callPage("game_log.php?action=pulse", glm_empty_callback);
}

function tracking_ajax_log()
{
	var ajax = new GLM.AJAX();
	ajax.callPage("game_log.php", glm_empty_callback);
	setInterval(tracking_ajax_log_update, 5000);
}

function popupShowFlash()
{
	if(BrowserDetect.OS == "Mac")
	{
		window.location.href = "http://www.scpathways.org/pathways.php";
		return;
	}
	
	var hiddenLightBoxLink = document.getElementById("hiddenLightBoxLink");
	myLightbox.start(hiddenLightBoxLink);
	
	setTimeout(tracking_ajax_log, 5000);
	
	/*
	url = "http://www.scpathways.com/game_log.php";
	if(window.XMLHttpRequest)
	{
		startRequest = new XMLHttpRequest();
		startRequest.open("GET", url, true);
		startRequest.send(null);
	}
			
	else if(window.ActiveXObject)
	{
		startRequest = new ActiveXObject("Microsoft.XMLHTTP");
		if(startRequest)
		{
			startRequest.open("GET", url, true);
			startRequest.send();
		}
	}
	*/
}

function popupHideFlash()
{
	myLightbox.end();
}
