//Global variables
var req;
var xmlDoc;
var statusValue="-";
var intCounter;
//var intRefresh;

var strURL;

//Scoring values
var intPlayer1Points;
var intPlayer2Points;
var intPlayer1Score;
var intPlayer2Score;
var intBreakPoints;
var intHours;
var intMins;
var intYears;
var intStatus;
var intMatchHours;
var intMatchMinutes;
var intCurrentFrame;
    
var intPlayer1Name;
var intPlayer2Name;
var intPlayer1Image;
var intPlayer2Image;
var intFrames;

var GetStatusInt;



function selectScreen(){

	document.getElementById('writeroot').innerHTML = "<p class='livescoring'><b>Welcome to LIVE SCORING from World Snooker, the official source of scores and results.</b></p><p class='livescoring'>Please select how you would like to view live scoring?</p><h2 class='livescoring'>New window</h2><p class='livescoring'><a href='#' onclick='liveScoringPopup();'>Click here to open live scoring in a new window.</a></p><h2 class='livescoring'>Embedded (Recommended)</h2><p class='livescoring'><a href='javascript:flash();'>Click here to open live scoring within the website.</a></p><p class='livescoring'>Requires Adobe Flash Player 8 (<a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW' target='_blank'>Get it free here</a>).</p><ul class='livescoring'><li>Special LIVE SCORING web page</li><li>Live updates approximately every 20-30 seconds</li><li>Direct data link with Official Match Referee</li><li>All the key matches</li><li>Full tournament coverage for FREE</li></ul>" 
//	document.getElementById('writeroot').innerHTML = "<p><b>Welcome to LIVE SCORING from World Snooker, the official source of scores and results.</b></p><p>Please select which version of live scoring you would like to use?</p><h2>Standard</h2><p><a href='javascript:importXML();'>Click here to open Standard.</a></p><h2>Enhanced (Recommended)</h2><p>The enhanced version of live scoring is currently down for maintenance. <br />Please try again later.</p><p>Requires Adobe Flash Player 8 (<a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW' target='_blank'>Get it free here</a>).</p><ul><li>Special LIVE SCORING web page</li><li>Live updates approximately every 20-30 seconds</li><li>Direct data link with Official Match Referee</li><li>All the key matches</li><li>Full tournament coverage for FREE</li></ul>" 

}


function w(d){
	document.getElementById('writeroot').appendChild(d);
}

function clr(){
	document.getElementById('writeroot').innerHTML = "";
	document.getElementById('breakPoints1').innerHTML = ""; 
	document.getElementById('breakPoints2').innerHTML = ""; 
	document.getElementById('player1Arrow').innerHTML = ""; 
	document.getElementById('player2Arrow').innerHTML = "";  
	document.getElementById('player1Points').innerHTML = ""; 
	document.getElementById('player1Score').innerHTML = ""; 
	document.getElementById('player2Points').innerHTML = ""; 
	document.getElementById('player2Score').innerHTML = ""; 
	document.getElementById('framesBack').innerHTML = ""; 
	document.getElementById('player1Name').innerHTML = ""; 
	document.getElementById('player2Name').innerHTML = ""; 
	document.getElementById('player1Img').innerHTML = ""; 
	document.getElementById('player2Img').innerHTML = ""; 
	document.getElementById('totalFrames').innerHTML = ""; 
	document.getElementById('vs').innerHTML = ""; 
	document.getElementById('lastUpdated').innerHTML = ""; 

}
//Import XML - to create category list
function importXML(){
	
	if (document.implementation && document.implementation.createDocument){
		xmlDoc = document.implementation.createDocument("", "", null);
		xmlDoc.onload = createMatchList;
	}else if (window.ActiveXObject){
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function () {
			if (xmlDoc.readyState == 4) createMatchList()
		};
 	}else{
		alert('Your browser can\'t handle this script');
		return;
	}
	//alert(strEventURL);
	xmlDoc.load(strEventURL);
}


//Create match list
function createMatchList(){
	
	clr();
	
	 clearTimeout(GetStatusInt);

//	var intRefresh = xmlDoc.childNodes[0].childNodes[0].childNodes[3].firstChild.nodeValue;
//	intRefresh=intRefresh*1000;
	//alert(intRefresh);
	var x = xmlDoc.getElementsByTagName('table');
	var newEl = document.createElement('table');
	newEl.setAttribute('cellPadding',5);
	newEl.setAttribute('cellSpacing',0);
	newEl.setAttribute('width','100%');
	var tmp = document.createElement('tbody');
	newEl.appendChild(tmp);
	var row = document.createElement('tr');

	for (j=0;j<x[0].childNodes.length;j++){
				
		if (x[0].childNodes[j].nodeType != 1) continue;		

		switch(x[0].childNodes[j].nodeName){
		
			case 'player1Name': 
				
				var container = document.createElement('th');
				var theData = document.createTextNode('Please select a match.');
				container.setAttribute('colSpan',3);
				container.appendChild(theData);
				row.appendChild(container);
				

			break;

		
		}
		//alert(x[0].childNodes[j].nodeName);
		//var theData = document.createTextNode(x[0].childNodes[j].nodeName);
		
	}
	
	
	
	
	tmp.appendChild(row);
	for (i=0;i<x.length;i++)	{
		
		var row = document.createElement('tr');
		//alert(x[i].childNodes[1].firstChild.nodeValue);

		row.setAttribute('url',x[i].childNodes[1].firstChild.nodeValue);
		row.setAttribute('Player1Name',x[i].childNodes[3].firstChild.nodeValue);
		row.setAttribute('Player2Name',x[i].childNodes[5].firstChild.nodeValue);
		row.setAttribute('Player1Img',x[i].childNodes[4].firstChild.nodeValue);
		row.setAttribute('Player2Img',x[i].childNodes[6].firstChild.nodeValue);
		row.setAttribute('intFrames',x[i].childNodes[7].firstChild.nodeValue);
		row.className = "ActiveRow";
		
		row.onclick = SetupFeed;
		row.onmouseover = RowOver;
		row.onmouseout = RowOut;

		for (j=0;j<x[i].childNodes.length;j++){
			if (x[i].childNodes[j].nodeType != 1) continue;
			
			//alert(i + ' : ' + j +' : ' +x[i].childNodes[j].firstChild.nodeValue);
			
			switch(x[0].childNodes[j].nodeName){
		
			case 'player1Name': 
					
					var container = document.createElement('td');
					container.setAttribute('className','player1');
					container.setAttribute('align','right');
					container.className = "player1"
					var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue);
					container.appendChild(theData);
					row.appendChild(container);
					
					var container = document.createElement('td');
					container.setAttribute('className','vs');
					container.className = "vs"
					var theData = document.createTextNode('vs');
					container.appendChild(theData);
					row.appendChild(container);
					
				break;
				
				case 'player2Name': 
				
					var container = document.createElement('td');
					container.setAttribute('className','player2');
					container.className = "player2";
					var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue);
					container.appendChild(theData);
					row.appendChild(container);
					
				break;
			
			}
			
			
			
		}
		tmp.appendChild(row);
	}
	document.getElementById('writeroot').appendChild(newEl);
	//runUpdate = setTimeout('importXML()', 2000);

}


function RowOver(){
	this.setAttribute('className','ActiveRowOver');
	this.className = "ActiveRowOver";
}

function RowOut(){
	this.setAttribute('className','ActiveRow');
	this.className = "ActiveRow";
}
//Setup the livescoring feed
function SetupFeed() {

	clr();
	
	//var out = "";
	//for(i in this){
		//out+= i+  " : " + this[i] + "<br>";
	//}
	
	//document.write(out);
	
	document.getElementById('flash').style.zIndex = 99;
	//alert(this.intPlayer1Name);

	document.getElementById('framesBack').innerHTML = "<img src='gfx/framesBack.png' />"; 
	document.getElementById('player1Name').innerHTML = this.Player1Name 
	document.getElementById('player2Name').innerHTML = this.Player2Name;
	document.getElementById('player1Img').innerHTML = "<img src='"+''+ this.Player1Img +"' />"; 
	document.getElementById('player2Img').innerHTML = "<img src='"+''+ this.Player2Img +"' />"; 
	
	intFrames = this.intFrames
	
	document.getElementById('vs').innerHTML = "<img src='gfx/vs.png' />";
	
	intCounter=0;
	strURL=this.url;
	GetStatus();
}

//Get livescoring status value
function GetStatus() {
	
	intCounter++;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } 
	if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    req.onreadystatechange = processRequest;
    intCounter=Math.random()*5;
    req.open("GET", strURL + '?counter=' + intCounter, true);
    req.send(null);
}

//Process the request based on the readystate and status values of the XML object
function processRequest() {
   // alert(req.readyState);
	//if (req.readyState == 4 || req.readyState == 0) {
	if (req.readyState == 4) {
        if (req.status == 200) {
         
		  parseMessages();
        } else {
          alert ( "Not able to retrieve live score feed." );
		}
    }
}

/*
Parse the message and extract the scoring information then
update the display with the new score information
*/
function parseMessages(){
	
	var strUpdate=req.responseText;
	//Fetch values from the update
	intPlayer1Points=Number(strUpdate.substring(0,3));
	intPlayer2Points=Number(strUpdate.substring(3,6));
	intBreakPoints=Number(strUpdate.substring(6,9));
	intBreakPlayer=Number(strUpdate.substring(9,10));
	intPlayer1Score=Number(strUpdate.substring(10,13));
	intPlayer2Score=Number(strUpdate.substring(13,16));
	intCurrentFrame=Number(strUpdate.substring(16,18));
	
	intMatchHours=strUpdate.substring(18,20);
	intMatchMinutes=strUpdate.substring(20,22);
	intHours=strUpdate.substring(22,24);
	intMins=strUpdate.substring(24,26);
	intDay=strUpdate.substring(26,28);
	intMonth=strUpdate.substring(28,30);
	intYear=strUpdate.substring(30,32);
	intStatus=Number(strUpdate.substring(32,33));

	//window.status=intCounter + "-" + intPlayer1Points + '-' + intPlayer2Points + '-' + intBreakPoints + '-' + intBreakPlayer + '-' + intPlayer1Score + '-' + intPlayer2Score + '-' + intHours + '-' + intMins + '-' + intDay + '-' + intMonth + '-' + intYear + '-' + intStatus;
	
	//window.status=intCounter;
	
		
		
		//if (intCounter%2 == 0){
			//intBreakPlayer = 1;
		//}else{
		 	//intBreakPlayer =2;
		//}
		
		if(intBreakPlayer==1){
					
			document.getElementById('breakPoints1').innerHTML = intBreakPoints; 
			document.getElementById('breakPoints2').innerHTML = ""; 
			document.getElementById('player1Arrow').innerHTML = "<img src='gfx/redArrow.png' />"; 
			document.getElementById('player2Arrow').innerHTML = "<img src='gfx/greyArrow.png' />"; 

		}else{
			document.getElementById('breakPoints1').innerHTML = ""; 
			document.getElementById('breakPoints2').innerHTML = intBreakPoints; 
			document.getElementById('player1Arrow').innerHTML = "<img src='gfx/greyArrow.png' />"; 
			document.getElementById('player2Arrow').innerHTML = "<img src='gfx/redArrow.png' />"; 
		}
		//document.getElementById('totalFrames').innerHTML = intCurrentFrame + "/"+ intFrames;
		document.getElementById('totalFrames').innerHTML = "("+intFrames+")";
		document.getElementById('player1Points').innerHTML = intPlayer1Points;
		document.getElementById('player1Score').innerHTML = intPlayer1Score;
		document.getElementById('player2Points').innerHTML = intPlayer2Points;
		document.getElementById('player2Score').innerHTML = intPlayer2Score;
		document.getElementById('lastUpdated').innerHTML = "Match Duration: "+intMatchHours+":"+intMatchMinutes+"<br/>Last Update:&nbsp;<b>"+intHours+":"+intMins+"</b>&nbsp;"+intDay+"/"+intMonth+"/"+intYear+"<br/><a href='javascript:importXML();'>Go back to match list</a>";	
		
	GetStatusInt = window.setTimeout("GetStatus();",intRefresh);
	
}


runUpdate = setTimeout('selectScreen()', 200);


// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// the version of javascript supported
var jsVersion = 1.0;
// -----------------------------------------------------------------------------



function flash(){
	
	<!-- 
	// Version check based upon the values entered above in "Globals"
	var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	
	// Check to see if the version meets the requirements for playback
	if (hasReqestedVersion) {  // if we've detected an acceptable version
		clr();
		var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
		+ 'width="300" height="265" id="video" align="middle"'
		+ 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">'
		+ '<param name="movie" value="/livescoring/swf/viewer.swf?strEventURL='+strEventURL+'&logo='+strLogo+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent">'
		+ '<embed src="/livescoring/swf/viewer.swf?strEventURL='+strEventURL+'&logo='+strLogo+'" quality="high" bgcolor="#000000" '
		+ 'width="300" height="265" name="Stage" align="middle"'
		+ 'play="true"'
		+ 'loop="false"'
		+ 'wmode="transparent"'
		+ 'quality="high"'
		+ 'allowScriptAccess="sameDomain"'
		+ 'type="application/x-shockwave-flash"'
		+ 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
		+ '<\/embed>'
		+ '<\/object>';
		//document.write(oeTags);   // embed the Flash Content SWF when all tests are passed
		document.getElementById('flash').innerHTML = oeTags;
		document.getElementById('flash').style.zIndex = 101;
        //alert(document.getElementById('flash'));
	  } else {  // flash is too old or we can't detect the plugin
		var alternateContent = ''
		+ '<p>no flash</p>';
		document.write(alternateContent);  // insert non-flash content
	  }
	// -->
}

