var scorexml = {title:"Essendon Live Scoring", top:"Essendon Live Scoring", bottom:"Essendon Football Club", url:"http://www.essendonfc.com.au/news/live.xml"};
var last_updated = 0;
var checkInterval = 30;
var score_request = null;

function begin () {
	createGenericButton(document.getElementById("doneButton"), "Done", null);
	checkForUpdate;
//	if (window.widget) {
		widget.onshow = update;
		widget.onhide = noUpdate;
		widget.onremove = refreshed;
//	}
}
//---------------------------------------------------------------------------------------------
// update - post a request to get the EFC Live Score XML
//----------------------------------------------------------------------------------------------
function update ()	 {
	var now = (new Date).getTime();
	if ((now - last_updated) > checkInterval) {
		if (score_request != null)	{
			score_request.abort();
			score_request = null;
		}
		score_request = new XMLHttpRequest();
		score_request.onload = function(e) {score_loaded(e, score_request);}
		score_request.overrideMimeType("text/xml");
		score_request.open("GET", scorexml.url);
		score_request.setRequestHeader("Cache-Control", "no-cache");
		score_request.send(null);
    }	
}
function noUpdate () {
	// do nothing while the widget is hidden
}
function refreshed () {
	last_updated = 0;
	checkInterval = 30;
	score_request = null;
	update;
}
//---------------------------------------------------------------------------------------------
// findChild - scan the children of a given DOM element for a node matching nodeName
//----------------------------------------------------------------------------------------------
function findChild (element, nodeName) {
	var child;	
	for (child = element.firstChild; child != null; child = child.nextSibling) {
		if (child.nodeName == nodeName)
			return child;
	}
	return null;
}
function score_loaded (e, request) {
	xml_request = null;
	if (request.responseXML) {
		var score = findChild(request.responseXML, 'efcwidgetdata');
		if (!score) {
			alert("no <efcwidgetdata> element"); 
			document.getElementById("errors").style.display = "block";
			return;
		}
		document.getElementById("errors").style.display = "none";
		var scoring = new Array;
		// Get all item elements subordinate to the efcwidgetdata element
		for (var item = score.firstChild; item != null; item = item.nextSibling) {
			if( item.nodeName == 'game' ) {
				var gameDate = findChild (item, 'gameDate');
				gameDate = gameDate.firstChild.data;
				var gameTime = findChild (item, 'gameTime');
				gameTime = gameTime.firstChild.data;
				var match_no = findChild (item, 'match');
				match_no = match_no.firstChild.data;
				var venue = findChild (item, 'venue');
				venue = venue.firstChild.data;
				var opp = findChild (item, 'opponent');
				opp = opp.firstChild.data;
				document.getElementById("oppName").innerHTML = opp;
				var homeTeam = findChild (item, 'home');
				document.getElementById("gameTitle").innerHTML = match_no;
				document.getElementById("gameSub2").innerHTML =  gameDate +" "+ gameTime +" "+ venue; 
			}
			if( item.nodeName == 'quarter1' ) {
				var eg1 = findChild (item, 'eg');
				document.getElementById("eg1").innerHTML = eg1.firstChild.data;
				var eb1 = findChild (item, 'eb');
				document.getElementById("eb1").innerHTML = eb1.firstChild.data;
				var og1 = findChild (item, 'og');
				document.getElementById("og1").innerHTML = og1.firstChild.data;
				var ob1 = findChild (item, 'ob');
				document.getElementById("ob1").innerHTML = ob1.firstChild.data;
			}
			if( item.nodeName == 'quarter2' ) {
				var eg2 = findChild (item, 'eg');
				document.getElementById("eg2").innerHTML = eg2.firstChild.data;
				var eb2 = findChild (item, 'eb');
				document.getElementById("eb2").innerHTML = eb2.firstChild.data;
				var og2 = findChild (item, 'og');
				document.getElementById("og2").innerHTML = og2.firstChild.data;
				var ob2 = findChild (item, 'ob');
				document.getElementById("ob2").innerHTML = ob2.firstChild.data;
			}
			if( item.nodeName == 'quarter3' ) {
				var eg3 = findChild (item, 'eg');
				document.getElementById("eg3").innerHTML = eg3.firstChild.data;
				var eb3 = findChild (item, 'eb');
				document.getElementById("eb3").innerHTML = eb3.firstChild.data;
				var og3 = findChild (item, 'og');
				document.getElementById("og3").innerHTML = og3.firstChild.data;
				var ob3 = findChild (item, 'ob');
				document.getElementById("ob3").innerHTML = ob3.firstChild.data;
			}
			if( item.nodeName == 'quarter4' ) {
				var eg4 = findChild (item, 'eg');
				document.getElementById("eg4").innerHTML = eg4.firstChild.data;
				var eb4 = findChild (item, 'eb');
				document.getElementById("eb4").innerHTML = eb4.firstChild.data;
				var og4 = findChild (item, 'og');
				document.getElementById("og4").innerHTML = og4.firstChild.data;
				var ob4 = findChild (item, 'ob');
				document.getElementById("ob4").innerHTML = ob4.firstChild.data;
			}
			if( item.nodeName == 'result' ) {
				var curQ = findChild (item, 'curQ');
				curQ = curQ.firstChild.data;
				var curTime = findChild (item, 'curTime');
				curTime = curTime.firstChild.data;
				var live = findChild (item, 'live');
				var escore = findChild (item, 'ep');
				document.getElementById("ep").innerHTML = escore.firstChild.data;
				var oscore = findChild (item, 'op');
				document.getElementById("op").innerHTML = oscore.firstChild.data;
				var margin = findChild (item, 'margin');
				live = live.firstChild.data;
				margin = margin.firstChild.data;
			}
			if( item.nodeName == 'special' ) {
				var comment = findChild (item, 'comment');	 // unimpletmented
			}
		}
		// finished getting data - needs to be written and acted on
		if ( live=='l' ) {
			var image = "q"+curQ;
			checkInterval = 30000; // set check time to every 30 seconds - 30,000 milliseconds	
			
			if (margin < 0) {
				margin = Math.abs(margin);
				if (margin==-1) {
					var summary = 'Essendon trail by ' + margin + ' point';
				} else {
					var summary = 'Essendon trail by ' + margin + ' points';
				}
			} else if (margin>0) {
				if (margin==1) {
				var summary = 'Essendon lead by ' + margin + ' point';
				} else {
				var summary = 'Essendon lead by ' + margin + ' points';
				}
			} else if (margin == 0) {
				var summary = 'Scores are tied';
			}
		} else if (live=="c") {
			var image = "qDone";
			checkInterval = 1800000; // set check time to every 30 minutes - 1,800,000 milliseconds
			if (margin < 0) {
				margin = Math.abs(margin);
				if (margin==1) {
				var summary = 'Essendon lost by ' + margin + ' point';
				} else {
				var summary = 'Essendon lost by ' + margin + ' points';
				}
			} else if (margin > 0) {
				if (margin==1) {
				var summary = 'Essendon won by ' + margin + ' point';
				} else {
				var summary = 'Essendon won by ' + margin + ' points';
				}
			} else if (margin == 0) {
				var summary = 'The game was drawn';
			}
		} else if (live=='p') {
			var image = 'qPregame';
			checkInterval = 180000; // set check time to every 3 minutes - 180,000 milliseconds
			var summary = "Pre-game";
		}
		
		if (curTime == 't') {
			if (live == 'l') {
				if (q=1) {curTime = "Warm Up";} 
				else if (q=2) {curTime = "1/4 Time";}
				else if (q=3) {curTime = "Half Time";}
				else if (q=4) {curTime = "3/4 Time";}	
				else {curTime = "00:00";}
			} else if (live == 'p') {curTime="00:00";} // pre-game
			else {curTime="Full Time";}
		}
		
		document.getElementById("quarter").innerHTML = '<img src="images/'+image+'.png"">';	
		document.getElementById("quarterT").innerHTML = curTime;
		document.getElementById("gameSub").innerHTML = summary;
		// set last_updated to the current time to keep track of the last time a request was posted
		last_updated = (new Date).getTime();
		// document.getElementById("debug").innerHTML = checkInterval;
	}
}
//---------------------------------------------------------------------------------------------
//
// clickOnTitle - take user to the  main web page when she clicks on the widget title. 
//
//----------------------------------------------------------------------------------------------
function clickOnTitle(event) {
	if (window.widget) {
			widget.openURL ("http://www.essendonfc.com.au/");
	}
}


