var http = createRequestObject();
var http2 = createRequestObject();
var http3 = createRequestObject();

function changeDate(date,element)
{
	if(element)
	{
		updateDates(element);
	}
	else
	{
		updateDates();	
	}
	
	viewDate = date.substring(8,10) + '/' + date.substring(5,7) + '/' + date.substring(0,4);
	
	document.getElementById('date-viewing').innerHTML = viewDate;
	
	loading('ratings');
	
	url = 'responder.php?f=getmeetings&date=' + date + '&gKey=' + randomNumber();
	loading('meetings');
	http.open("GET", url);
	http.onreadystatechange = handleResponseMeeting;
	http.send(null);
	
	//races must use http2
	url = 'responder.php?f=getracesbydate&date=' + date + '&gKey=' + randomNumber();
	loading('races');
	http2.open("GET", url);
	http2.onreadystatechange = handleResponseRaces;
	http2.send(null);
}


function createRequestObject()
{
	var obj;
	if(window.XMLHttpRequest)
	{
		obj = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		obj = new ActiveXObject("MSXML2.XMLHTTP");
	}
	return obj;
}

function handleResponseMeeting()
{
	if(http.readyState == 4)
	{
		replacementDiv = document.getElementById('meetings');
		replacementDiv.innerHTML = http.responseText;

		document.getElementById('ratings').innerHTML = 'Please select a race from the list above.';

		return true;
	}
}

//races must use http2
function handleResponseRaces()
{
	if(http2.readyState == 4)
	{
		replacementDiv = document.getElementById('races');
		replacementDiv.innerHTML = http2.responseText;
		if(document.getElementById('racetable')){
			sorttable.makeSortable(document.getElementById('racetable'));
		}

		return true;
	}
}

function handleResponseRatings()
{
	if(http.readyState == 4)
	{
		replacementDiv = document.getElementById('ratings');
		replacementDiv.innerHTML = http.responseText;
		sorttable.makeSortable(document.getElementById('ratingstable'));
		
		return true;
	}
}

function handleResponseUpdates()
{
	if(http3.readyState == 4)
	{
		responseParts = http3.responseText.split(',');
		
		if(responseParts[1] !== 'None')
		{
			alert('New/updated ratings were uploaded at ' + responseParts[1]);
		}
		usersLastCheck = responseParts[0];
		
		return true;
	}
}

function loading(element)
{
	document.getElementById(element).innerHTML = '<img src="images/indicator.gif" width="16" height="16" /> Loading...';
}

function updateDates(element)
{
	dates = document.getElementById('datelist').getElementsByTagName('A');
	
	for(i = 0; i < dates.length; i++)
	{
		dates[i].className = '';
	}
	
	if(element)
	{
		element.className = 'disabled';
	}
}

//races must use http2
function updateRaces()
{
	loading('races');
	
	meetingboxes = document.getElementById('meetings').getElementsByTagName('input');
	var meetingslist = '';
	
	for(i = 0; i < meetingboxes.length; i++)
	{
		if(meetingboxes[i].checked == true)
		{
			meetingslist += meetingboxes[i].value + ',';	
		}
	}

	url = 'responder.php?f=getracesbymeeting&meetings=' + meetingslist + '&gKey=' + randomNumber();
	http2.open("GET", url);
	http2.onreadystatechange = handleResponseRaces;
	http2.send(null);
}

function updateRatings(raceID)
{
	loading('ratings');
	
	url = 'responder.php?f=getratings&raceID=' + raceID + '&gKey=' + randomNumber();
	http.open("GET", url);
	http.onreadystatechange = handleResponseRatings;
	http.send(null);
}

function randomNumber()
{
	return Math.random()*1234567;
}

function checkForUpdates()
{
	url = 'responder.php?f=checkupdates&userslastupdate=' + usersLastCheck + '&gKey=' + randomNumber();
	http3.open("GET", url);
	http3.onreadystatechange = handleResponseUpdates;
	http3.send(null);
}
	