//  Copyright - RealTime Fantasy Sports 2007
//--
//-- AJAX/Refresh stuff
//--
var WatchDogTimerLdrbrd = 0;
var RefreshRateLdrbrd = 300000;
var isWorkingLdrbrd = false;
var displayEventName = false;
var httpLeaderboard = getHTTPObject();
var lastLdrbrdUpdateTime = -1;

function handleHttpLeaderboardResponse() {

	if (httpLeaderboard.readyState == 4) {
		if (httpLeaderboard.responseText.indexOf('invalid') == -1) {
			try
			{
				var xmlDocument = httpLeaderboard.responseXML;
				DisplayLeaderboardResults(xmlDocument);

				isWorkingLdrbrd = false;

				timerID = setTimeout("DoTheLeaderboardResultsUpdate()", RefreshRateLdrbrd + Math.floor(Math.random() * 5));

				clearTimeout(WatchDogTimerLdrbrd);
				WatchDogTimerLdrbrd = setTimeout("RefreshPage()", RefreshRateLdrbrd * 2);

				updateElement = xmlDocument.getElementsByTagName('event_results').item(0);
				if (updateElement)
				{
					//Update the time on the screen
					//var updateCell = document.getElementById("TopCurrDate");
					//if (updateCell) updateCell.innerHTML = updateElement.getAttribute('time');
				}
			}
			catch (e)
			{
				RefreshPage();
			}

		} else {
			//  invalid xml
			RefreshPage();
		}
	}
}

function UpdateLeaderboardResults()
{
	timerID = setTimeout("DoTheLeaderboardResultsUpdate()", RefreshRateLdrbrd + Math.floor(Math.random() * 5));

	clearTimeout(WatchDogTimerLdrbrd);
	WatchDogTimerLdrbrd = setTimeout("RefreshPage()", RefreshRateLdrbrd * 2);
}

function DoTheLeaderboardResultsUpdate(event_id,num_plyrs)
{
//	if (event_id) document.RefreshForm.EVENTID.value=event_id;
//	if (num_plyrs) document.RefreshForm.NUM_PLYRS.value=num_plyrs;

	if (!isWorkingLdrbrd && httpLeaderboard && document.RefreshForm.EVENTID.value.length>0 && document.RefreshForm.NUM_PLYRS.value.length>0) {
		httpLeaderboard.open("GET", "/pbr/leaderboard-provider.php?EVENTID=" + escape(document.RefreshForm.EVENTID.value) +
							 "&NUM_PLYRS=" + escape(document.RefreshForm.NUM_PLYRS.value) +
							  "&SEASONID=" + escape(document.RefreshForm.SEASONID.value) + "&X=" + Math.floor(Math.random() * 99999), true);

		httpLeaderboard.onreadystatechange = handleHttpLeaderboardResponse;
		isWorkingLdrbrd = true;
		httpLeaderboard.send(null);
	}
}

function RefreshPage()
{
	document.RefreshForm.submit();
}

function DisplayLeaderboardResults(xmlDocument) {
	updateElement = xmlDocument.getElementsByTagName('event_results').item(0);
	if (updateElement) {
		var leaderboardElement = document.getElementById('LEADERBOARD');
		if (leaderboardElement && (lastLdrbrdUpdateTime != updateElement.getAttribute('update_time')))
		{
//			leaderboardElement.innerHTML = updateElement.childNodes.item(0).data;

			var leaderElement = xmlDocument.getElementsByTagName('leaders').item(0);
			if (leaderElement)
			{
				var i;
				for (i = 0; i < leaderElement.childNodes.length; i++)
				{

					var node = leaderElement.childNodes.item(i);

					if (node.nodeType == 1)
					{
						if (node.tagName == 'event')
						{
							var userid = new Number(node.getAttribute('user_id'));
							var rank = new Number(node.getAttribute('rank'));
							var pts = new Number(node.getAttribute('points'));
							var nickname = node.getAttribute('nickname');
							var avatar = node.getAttribute('avatar');

							var nickElem = document.getElementById('NICK' + rank);
							if (nickElem) nickElem.innerHTML = "<a href=\"/pbr/" + (document.RefreshForm.EVENTID.value > 0 ? "results/" + document.RefreshForm.EVENTID.value + "/" + userid : "season/" + userid) + "\">" + nickname + "</a>";

							var ptsElem = document.getElementById('PTS' + rank);
							if (ptsElem) ptsElem.innerHTML = pts.toFixed(2);

							var avatarElem = document.getElementById('AVR' + rank);
							if (avatarElem) {
								if (avatar)
									avatarElem.innerHTML = "<img height=\"30\" width=\"30\" src=\"" + avatar + "\"/>";
								else
									avatarElem.innerHTML = "";
							}
						}
					}
				}
			}

			// If update_time > 0 it means we're displaying real results and not just a message
			// So change the class
			if (lastLdrbrdUpdateTime <= 0 && updateElement.getAttribute('update_time') > 0) {
				leaderboardElement.className = "SmallText";
			}
			lastLdrbrdUpdateTime = updateElement.getAttribute('update_time');



		}
	}
}


