var available = false;
var client;

var calMonth = 0;
var calYear = 0;

createClient();

function createClient() 
{
	try 
	{
		client = window.XMLHttpRequest ? new XMLHttpRequest() :	new ActiveXObject("Microsoft.XMLHTTP");
	} 
	catch (e) 
	{ 
		alert("Sorry, your browser is not AJAX-enabled!"); 
	}
}

function checkAvailability()
{
	if(getValueById('bookmonth') != '' && getValueById('bookday') != '' && getValueById('bookyear') != '' && getValueById('booktime') != '' && getValueById('bookseats') != '')
	{
		client.onreadystatechange = callbackCheckAvailability;
		client.open("get","ajax/available.php?loc="+getValueById('location')+"&bookmonth="+getValueById('bookmonth')+"&bookday="+getValueById('bookday')+"&bookyear="+getValueById('bookyear')+"&booktime="+getValueById('booktime')+"&bookseats="+getValueById('bookseats'),true);
		client.send(null);
	}
	else
	{
		swapImage('avail', 'images/unknown.jpg');
		available = false;
	}
}

function callbackCheckAvailability()
{
	if (client.readyState == 4) 
	{
		if (client.status == 200) 			
		{
			//document.getElementById('avail').value = client.responseText;
			if(client.responseText == '1')
			{
				swapImage('avail', 'images/available.jpg');
				available = true;
			}
			else if(client.responseText == '2')
			{
				swapImage('avail', 'images/call-'+getValueById('location')+'.jpg');
				available = false;
			}
			else
			{
				swapImage('avail', 'images/not-available.jpg');
				available = false;
			}
			createClient();
			if(getValueById('bookmonth') != '')
			{
				loadCalendar(getValueById('bookmonth'), getValueById('bookyear'));
			}
		} 
		else 
		{
			alert("There was a problem checking availability:\n"+client.statusText);
			createClient();
		}
	}
}

function loadCalendar()
{
	loadCalendar(0, 0);	
}

function loadCalendar(month, year)
{
	client.onreadystatechange = callbackLoadCalendar;
	client.open("get","ajax/calendar.php?month="+month+"&year="+year,true);
	client.send(null);
}

function callbackLoadCalendar()
{
	if (client.readyState == 4) 
	{
		if (client.status == 200) 			
		{
			document.getElementById('calendar').innerHTML = client.responseText;
			createClient();
		} 
		else 
		{
			//reset so it tries to load on next event.
			calMonth = 0;
			calYear = 0;
			alert("There was a problem loading the Calendar:\n"+client.statusText);
			createClient();
		}
	}
}

function setDate(year, month, day)
{
	setSelect('bookyear', year);
	setSelect('bookmonth', month);
	setSelect('bookday', day);
	checkAvailability();
}

function setSelect(elemid, val)
{
	elem = document.getElementById(elemid);
	for(var i = 0; i < elem.options.length; i++)
    {
		if(val == elem.options[i].value)
		{
			elem.selectedIndex = i;
		}
	}
}

function getValueById(elem)
{
	return document.getElementById(elem).value;	
}

function swapImage(elemid, img)
{
	if(document.getElementById(elemid).src != img)
	{
		var newImage = new Image();
		newImage.src = img;
		document.getElementById(elemid).src = newImage.src;
	}
}

function isAvailable()
{
	return available == 1;
}