

function getXmlHttpObject(){
	var xmlHttp = null;
	try{
  		// Firefox, Opera 8.0+, Safari
  		xmlHttp=new XMLHttpRequest();
  	}catch (e){
  		// Internet Explorer
  		try{
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}catch (e){
    		try{
      			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}catch (e){
      			alert("Your browser does not support AJAX!");      			
      		}
    	}
  	}
  	return xmlHttp;
}



function TestObj(id) {   
	YAHOO.util.Event.onContentReady(id, this.onContentReady, this);    
}

TestObj.prototype.onContentReady = initPage;   


function sendRequest(url,type){
	var req 	= getXmlHttpObject();
	if(req != null){
		req.onreadystatechange=function(){state_Change(req,type);};		
  		req.open("GET",url,true);
  		req.send(null);
	}else{
		debug2("req not ready or No xmlHttp object");	
	}	
}


function initPage(){	
	var type	= 0;	
	var sid		= "?sid="+Math.random();
	var url 	= "lesson1status"+sid;
	debug2("requesting url: "+url);
	sendRequest(url,type);
}

function updatePoints(){
	var type	= 3;
	var sid		= "?sid="+Math.random();
	var url 	= "lesson1status"+sid;
	debug2("requesting url: "+url);
	sendRequest(url,type);	
}

function uploadChecker(){
	var type	= 4;
	var sid		= "?sid="+Math.random();
	var url 	= "uploadstatus"+sid;
	debug2("requesting url: "+url);
	sendRequest(url,type);
}

function updatePage(){
	
	var type	= 1;
	var sid		= "?sid="+Math.random();
	var url 	= "lesson1status"+sid;
	debug2("requesting url: "+url);
	if(!updateBlock){
		sendRequest(url,type);
	}
}

function sendClick(ua){
	
	var type	= 2;
	var gid		= document.getElementById("gid").value;
	var query	= "&ua="+ua+"&group="+gid+"&type="+type;	
	var sid		= "?sid="+Math.random();
	var url 	= "lesson1status"+sid+query;
	debug2("requesting url: "+url);
	if(!clickBlock){
		sendRequest(url,type);
	}
}

function requestReplay() {
	var type	= 2;
	var gid		= document.getElementById("gid").value;
	var query	= "&group="+gid;	
	var sid		= "?sid="+Math.random();
	var url 	= "replay"+sid+query;
	debug2("requesting url: "+url);
	sendRequest(url,type);
}


function state_Change(req,type)
{
	/*
	 * case 0 = init
	 * case 1 = update
	 * case 2 = ua 
	 */
	 
	debug2(req.readyState);
	if (req.readyState==4){
		// 4 = "loaded"
  		if (req.status==200){
  			// 200 = "OK"
  			var rXml 		= req.responseXML;  			
	    	var xmlDoc 		= rXml.documentElement;	    	
	    	
	    	switch(Number(type)){
	    		case 0:
	    				processInit(xmlDoc);
	    			break;
	    		case 1:
	    				processUpdate(xmlDoc);
	    			break;
	    		case 2:
	    				processUA(xmlDoc);
	    			break;
	    		case 3:
	    				processTower(xmlDoc);
	    			break;
	    		case 4: 
	    				debug2("xmlDoc:" + xmlDoc );
	    				processUploadCheck(xmlDoc);
	    			break;
	    			
	    	}	    		    	    	
    	}else{
    		alert("Problem retrieving data:" + req.statusText);
    	}
  	}
}



function processInit(xmlDoc){
	
	var icebear		= getAnimal("icebear",xmlDoc);
	var elephant	= getAnimal("elephant",xmlDoc);
	var hippo		= getAnimal("hippo",xmlDoc);
	var erling		= getCharacter("erling",xmlDoc);
	var yvonne		= getCharacter("yvonne",xmlDoc);
	var hat1		= getSunscreen("hat1possible",xmlDoc);
	var hat2		= getSunscreen("hat2possible",xmlDoc);
	var hat3		= getSunscreen("hat3possible",xmlDoc);
	var creme1		= getSunscreen("creme1possible",xmlDoc);
	var creme2		= getSunscreen("creme2possible",xmlDoc);
	var creme3		= getSunscreen("creme3possible",xmlDoc);
	
	debug2("INIT<br/>icebear: "+icebear+"<br/>elephant: "+elephant+"<br/>hippo: "+hippo+
		  "<br/>erling: "+erling+"<br/>yvonne: "+yvonne+"<br/>hat1: "+hat1+
		  "<br/>hat2: "+hat2+"<br/><br/>hat3: "+hat3+"<br/>creme1: "+creme1+
		  "<br/>creme2: "+creme2+"<br/>creme3: "+creme3
			);
	drawPage(icebear,0,hippo,erling,yvonne,hat1,hat2,hat3,creme1,creme2,creme3);		
	processTower(xmlDoc);	
}

function processUpdate(xmlDoc){
	var erling		= getCharacter("erling",xmlDoc);
	var yvonne		= getCharacter("yvonne",xmlDoc);
	
	debug2("UPDATE<br/>Erling: "+erling+"<br/>Yvonne: "+yvonne);
	drawUpdate(erling,yvonne);
}

function processUA(xmlDoc){
	var icebear		= getAnimal("icebear",xmlDoc);
	var elephant	= getAnimal("elephant",xmlDoc);
	var hippo		= getAnimal("hippo",xmlDoc);
	var erling		= getCharacter("erling",xmlDoc);
	var yvonne		= getCharacter("yvonne",xmlDoc);
	var hat1		= getSunscreen("hat1possible",xmlDoc);
	var hat2		= getSunscreen("hat2possible",xmlDoc);
	var hat3		= getSunscreen("hat3possible",xmlDoc);
	var creme1		= getSunscreen("creme1possible",xmlDoc);
	var creme2		= getSunscreen("creme2possible",xmlDoc);
	var creme3		= getSunscreen("creme3possible",xmlDoc);
	
	debug2("UA<br/>icebear: "+icebear+"<br/>elephant: "+elephant+
		   "<br/>hippo: "+hippo+"<br/>erling: "+erling+
		   "<br/>yvonne: "+yvonne+"<br/>hat1: "+hat1+
		   "<br/>hat2: "+hat2+"<br/>hat3: "+hat3+
		   "<br/>creme1: "+creme1+"<br/>creme2: "+creme2+
		   "<br/>creme3: "+creme3
			);
	drawPage(icebear,elephant,hippo,erling,yvonne,hat1,hat2,hat3,creme1,creme2,creme3);
}

function drawSidebar(/*hat1,hat2,hat3,creme1,creme2,creme3*/) {
	var icestat		= document.getElementById("iceStat").value;
	if (icestat == 1) {
		//doAssignment2();
	}
}

function processTower(xmlDoc){
	var ePoints		= getPoints("erling",xmlDoc);
	var yPoints		= getPoints("yvonne",xmlDoc);
	var eArrow		= getArrow("erling",xmlDoc);
	var yArrow		= getArrow("yvonne",xmlDoc);	
	
	debug2("Tower<br/>points erling: "+ePoints+"<br/>points yvonne:: "+yPoints+
		  "<br/>erling arrow: "+eArrow+"<br/>yvonne arrow: "+yArrow);
	drawTowerUpdate(ePoints,yPoints,eArrow,yArrow);	
	
	debug2("processTower");
	var groups		= getGroups(xmlDoc);
	drawHigscorePoints(groups);
}

function processUploadCheck(xmlDoc){
	debug2("xmlDoc = null: " + xmlDoc == null);
	debug2(xmlDoc.getElementsByTagName("status")[0]);
	debug2(xmlDoc.getElementsByTagName("status")[0].childNodes[0]);
	debug2(xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue);
	var _status		= xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;
	debug2("uploadstatus: "+_status);
	drawUploadUpdate(_status);
}

function getGroups(xmlDoc){
	var output 	= null;
	//if(c1 == _name){
		output	= xmlDoc.getElementsByTagName("groups")[0];
		debug2("getGroups " + output);
		return output;
		//output	= xmlDoc.getElementsByTagName(groups)[0].childNodes[0].nodeValue;
	//}
	return output; 
}

function getPoints(_name,xmlDoc){
	var output 	= null;
	var c1		= "erling";
	var c2		= "yvonne";
	if(_name != c1 && _name != c2){
		debug("Illigal character")
	}else{
		if(c1 == _name){
			output	= xmlDoc.getElementsByTagName("points")[0].childNodes[0].childNodes[0].nodeValue;
		}
		if(c2 == _name){
			output	= xmlDoc.getElementsByTagName("points")[0].childNodes[1].childNodes[0].nodeValue;
		}
	}
	return output; 
}

function getArrow(_name,xmlDoc){
	var output 	= null;
	var c1		= "erling";
	var c2		= "yvonne";
	if(_name != c1 && _name != c2){
		debug("Illigal character")
	}else{
		if(c1 == _name){
			output	= xmlDoc.getElementsByTagName("pointsplacement")[0].childNodes[0].childNodes[0].nodeValue;
		}
		if(c2 == _name){
			output	= xmlDoc.getElementsByTagName("pointsplacement")[0].childNodes[1].childNodes[0].nodeValue;
		}
	}
	return output; 
}



function getAnimal(animal,xmlDoc){
	var output 	= null;
	var a1		= "icebear";
	var a2		= "elephant";
	var a3		= "hippo";	
	if(animal != a1 && animal != a2 && animal != a3){
		debug("Illigal animal");
	}else{	
		output 	= xmlDoc.getElementsByTagName(animal)[0].childNodes[0].nodeValue;		
	}
	return output;
}

function getCharacter(_name,xmlDoc){
	var output	= null;
	var c1		= "erling";
	var c2		= "yvonne";
	if(_name != c1 && _name != c2){
		debug("Illigal character")
	}else{
		output	= xmlDoc.getElementsByTagName(_name)[0].childNodes[0].nodeValue;
	}
	return output;
}

function getSunscreen(item,xmlDoc){
	var output	= null;
	var s1		= "hat1possible";
	var s2		= "hat2possible";
	var s3		= "hat3possible";
	var s4		= "creme1possible";
	var s5		= "creme2possible";
	var s6		= "creme3possible";
	if(item != s1 && item != s2 && item != s3 && item != s4 && item != s5 && item != s6){
		debug("Illigal sunscreen")
	}else{
		output	= xmlDoc.getElementsByTagName(item)[0].childNodes[0].nodeValue;
	}
	return output;
}





function debug(text){
	//document.getElementById("debug").innerHTML = text;	
}
function debug2(text){
	//var debug2			= document.getElementById("debug2");
	//var inner 			= debug2.innerHTML;
	//var newInner 		= text +"<br/>#######<br/>"+inner;
	//debug2.innerHTML	= newInner;	
}	
