var monthsArray = new Array(); 
var currentLeftMonth = 0; 
var hereNow = new Date();
var thisMonth = hereNow.getMonth();
var thisYear = hereNow.getYear();

//var NS6 = (document.getElementById) && !document.all);
var NS4 = (document.layers);
var NS6 = navigator.appName.indexOf("Netscape"); //&& navigator.appVersion >= 6;
var IE = (document.all);

months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function write18Months(){

	for(monthSpan=0;monthSpan<18;monthSpan++){
		monthsArray[monthSpan] = writeSingleMonth();
	}

}

function writeSingleMonth(){
	//var mnthName = hereNow.getYear().toString() +" + 1900"
	var mnthName = hereNow.getYear() + 1900;
	
	if(NS4){
		strSingleMonth ="<SPAN CLASS='mnthNameNS' style='text-align:center;'>&nbsp;" + months[hereNow.getMonth()] +"&nbsp;&nbsp;"+ mnthName.toString()+"&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>"
	}else
	{
		if(NS6){
			strSingleMonth = "<SPAN CLASS='mnthName' style='text-align:center;'>&nbsp;" + months[hereNow.getMonth()] +"&nbsp;&nbsp;"+ mnthName.toString()+"&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>"
			}
		else{
			strSingleMonth ="<SPAN CLASS='mnthName'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + months[hereNow.getMonth()] +"&nbsp;&nbsp;"+ hereNow.getYear().toString()+"&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>"
			}
	}
	
	strSingleMonth += writeTableTop();
	strSingleMonth = strSingleMonth + writeTableContent();
	return strSingleMonth;
}

function write_first_calendar(){
	fillDaysGone();
	write18Months();
	if(NS4){
		document.layers["left"].document.open();
		document.layers["left"].document.write(monthsArray[0]);
		document.layers["left"].document.close();
	}
	else
	{
		if(NS6){
			document.write("<br><br><br><br><table><tr><td id='calenderLeft'>"+monthsArray[0]+"</td>");
			left.style.display="none"
			}
		else{
//			document.all.left.innerHTML = monthsArray[0];
			//document.write = "<td>"+monthsArray[0]+"</td>";
			//AB Edit - Should clean up the text behind & it didn't work...
			document.getElementById("left").innerHTML = monthsArray[0];	
			
			}	
	}
	
	if(NS4){
		document.layers["right"].document.open();
		document.layers["right"].document.write(monthsArray[1]);
		document.layers["right"].document.close();
	}
	else
	{
	
		if(NS6){
			document.write("<td id='calenderRight'>"+monthsArray[1]+"</td></tr></table>");
			}
		else{
			//document.write = monthsArray[1];
			document.all.right.innerHTML = monthsArray[1];
			}
	}
}

function previous_month(){
	if(currentLeftMonth == 0){
		alert('Sorry, you cannot see availability for months that have passed.');
		return;
	}
	currentLeftMonth--;
	writeInnerHTML();
}

function next_month(){
	if(currentLeftMonth == 16){
		alert('Sorry, availability is not shown this far in advance.');
		return;
	}
	currentLeftMonth++;
	writeInnerHTML();
}

function writeInnerHTML(){
	if(NS4){
		document.layers["left"].document.open();
		document.layers["left"].document.write(monthsArray[currentLeftMonth]);
		document.layers["left"].document.close();
	}
	else
	{
		if(NS6){
			document.getElementById("calenderLeft").innerHTML = monthsArray[currentLeftMonth];
			//document.getElementById("left").innerHTML = monthsArray[currentLeftMonth];
			}
		else{
			document.all.left.innerHTML = monthsArray[currentLeftMonth];
			}
	} 
	if(NS4){
		document.layers["right"].document.open();
		document.layers["right"].document.write(monthsArray[(currentLeftMonth + 1)]);
		document.layers["right"].document.close();
	}else
	{
		if(NS6){
			document.getElementById("calenderRight").innerHTML = monthsArray[(currentLeftMonth + 1)];
			//document.getElementById("right").innerHTML = monthsArray[(currentLeftMonth + 1)];
			}
		else{
			document.all.right.innerHTML = monthsArray[(currentLeftMonth + 1)]}
	} 
}


function fillDaysGone(){ //add the first of the current month and yesterday's date to the already booked array.
var currentMonth = new Date();
if(currentMonth.getDate() == 1){return;} //do nothing, first of the month
var dateStr = 1 + ' ' + months[currentMonth.getMonth()] + ' ' + currentMonth.getFullYear();
	fromTo[fromTo.length] = new Date(dateStr);
	dateStr = (currentMonth.getDate() -1) + ' ' + months[currentMonth.getMonth()] + ' ' + currentMonth.getFullYear();
	fromTo[fromTo.length] = new Date(dateStr);
}

function writeTableTop (){
	var top = "<TABLE WIDTH='220px' BORDER=0 CELLSPACING=1 CELLPADDING=0><TR><TD CLASS='tblHeader' WIDTH='35px'>Sun</TD><TD CLASS='tblHeader' WIDTH='35px'>Mon</TD><TD CLASS='tblHeader' WIDTH='35px'>Tue</TD><TD CLASS='tblHeader' WIDTH='35px'>Wed</TD><TD CLASS='tblHeader' WIDTH='35px'>Thu</TD><TD CLASS='tblHeader' WIDTH='35px'>Fri</TD><TD CLASS='tblHeader' WIDTH='35px'>Sat</TD></TR>";
	 return top;
}

function writeTableContent(){
	var content = "<TR>"; 
	hereNow.setDate(1); 
	var daysSoFar = 0;
	var firstDay = hereNow.getDay();
	var tableContentCurrentMonth = hereNow.getMonth();
	var tableContentCurrentYear = hereNow.getFullYear();
	var daysInMonth = monthLength(tableContentCurrentMonth,tableContentCurrentYear);
	for(x=0;x<firstDay;x++){
		content = content + "<TD CLASS='tblEmpty'>&nbsp;</TD>";
	}

for(y=firstDay;y<7;y++){
		daysSoFar++;
		if((checkIfBooked(daysSoFar,tableContentCurrentMonth,tableContentCurrentYear) == 1)){
			content += "<TD CLASS='bookedLayer'>"+daysSoFar+"</TD>";
		}else{
			content += "<TD CLASS='tblContent'>"+daysSoFar+"</TD>";
		}
}
content += "</TR><TR>"

for(h=0;h<5;h++){
		if(daysSoFar == daysInMonth)
		break;
	for(i=0;i<7;i++){
		daysSoFar++;
		if((checkIfBooked(daysSoFar,tableContentCurrentMonth,tableContentCurrentYear) == 1)){
		content += "<TD CLASS='bookedLayer'>"+daysSoFar+"</TD>";
		}else{
		content += "<TD CLASS='tblContent'>"+daysSoFar+"</TD>";
		}
		if(daysSoFar == daysInMonth){
			for(j=(i + 1);j<7;j++){
						content = content + "<TD CLASS='tblEmpty'>&nbsp;</TD>";
			}
			content += "</TR>"			
			break; 
		}
	}
		content += "</TR><TR>"
}
	content += "</TABLE>";
hereNow.setMonth(tableContentCurrentMonth + 1); 
return content;
}

function checkIfBooked(day,month,year){
	var dateStr = day + ' ' + months[month] + ' ' + year;
	var dateToCheck = new Date(dateStr);//the date being created in the calendar is now a long format date string
	var rtnVal = 0;//assume this day is not booked
	for(q=0;q<fromTo.length;q=q+2){
		if((dateToCheck.getTime() >= fromTo[q].getTime()) && (dateToCheck.getTime()  <= fromTo[q+1].getTime()))
		{
			rtnVal = 1;
			return rtnVal;
		}
	}
	return rtnVal;//this date is not booked
} //end of checkIfBooked

function monthLength(monthNo, yearNo) {
if(monthNo == 1)
{
	if ((yearNo % 4) == 0) 
	{
		if ((yearNo % 100) == 0 && (yearNo % 400) != 0)
			return daysInMonths[monthNo];
		return daysInMonths[monthNo] + 1;
	} 
	else
		return daysInMonths[monthNo];
}
		return daysInMonths[monthNo];
}

