var oUpd;
var sDate = "";
var sMinDate = "";
var sMaxDate = "";
var monthLength = Array(31,28,31,30,31,30,31,31,30,31,30,31);

function fnShowCal(iTop,iLeft,obj,objMinDate,objMaxDate)
{
	sDate = obj.value;
	sMinDate = objMinDate.value;
	sMaxDate = objMaxDate.value;
	fnCalc();
	cal.style.posTop = iTop;
	cal.style.posLeft = iLeft;
	cal.style.display = "";
	oUpd = obj;
}

function fnHideCal()
{
	cal.style.display = "none";
}

function fnPrev()
{
	var oDate = new Date(sDate);
	var one_day=1000*60*60*24;
	var newDate = new Date(oDate.getTime()-(one_day*oDate.getDate()));
	
	sDate = (newDate.getMonth() + 1) + "/" + newDate.getDate() + "/" + newDate.getYear();
	fnCalc();
}

function fnNext()
{
	var oDate = new Date(sDate);
	var one_day=1000*60*60*24;
	var addTime = ((monthLength[oDate.getMonth()]*one_day) - (one_day*oDate.getDate())) + (one_day * 2);
	var newDate = new Date(oDate.getTime()+addTime);
	
	sDate = (newDate.getMonth() + 1) + "/" + newDate.getDate() + "/" + newDate.getYear();
	//alert(sDate);
	fnCalc();
}

function fnSelectDate(strDate){
	arrSelectedDate = strDate.split('/');
  
  	sDay = arrSelectedDate[1];
  	sMonth = arrSelectedDate[0];
  	sYear = arrSelectedDate[2];
  	if(sDay.length<2){sDay = "0" + sDay;}
	if(sMonth.length<2){sMonth = "0" + sMonth;}
	selectedDate = sMonth + "/" + sDay + "/" + sYear;
	
	var oDepDate = oUpd;
	oDepDate.value = selectedDate;
	
	fnUpdBooking(oDepDate);
	cal.style.display = "none";

}

function checkLeapYear(year) { 
	return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}

function fnCalc()
{
		
	oDate = new Date(sDate);
	oMinDate = new Date(sMinDate);
	oMaxDate = new Date(sMaxDate);
	
	iDay = oDate.getDate();
	iMonth = oDate.getMonth() + 1;
	iYear = oDate.getYear();
	
	sFDOM = iMonth + "/1/" + iYear;
	oFDOM = new Date(sFDOM);
	
	prevMonth = 0;
	prevYear = 0;
	
	if((checkLeapYear()==1)&&(oDate.getMonth()==1))
	{
		daysInMonth = 29;
	}
	else
	{
		daysInMonth = monthLength[oDate.getMonth()];
	}
	if(oDate.getMonth()>0)
	{
		daysInPrevMonth = monthLength[oDate.getMonth()-1];
	}
	else
	{
		daysInPrevMonth = monthLength[11];
	}
	monthNumber = oDate.getMonth() + 1;
	monthDayNumber = oDate.getDate();
	weekDayNumber = oDate.getDay();;
	
	fdomWeekDayNumber = oFDOM.getDay();
	nextMonthCounter = 1;
	//echo "***" . $year;
	TDs = 42;
	
	monthName.innerHTML = monthNames[oDate.getMonth()] + " " + oDate.getYear();
	
	var sCal = "<table cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">";
	
	for(i=0;i<TDs;i++)
	{
		if(i==0)
		{
			sCal += "<tr>";
		}
		if((i!=0)&&(i%7==0)&&(i!=TDs))
		{
			sCal += "</tr><tr>";
		}
		if(fdomWeekDayNumber==0){fdomWeekDayNumber=7;}//First day of month is Sunday
		if((i>=fdomWeekDayNumber - 1)&&(i<=daysInMonth + fdomWeekDayNumber - 2))
		{
			var theDay =new Date(monthNumber + "/" + (i - fdomWeekDayNumber + 2) + "/" + iYear);
			bgColor = "";
			
			//Mark today
			var tmp = new Date();
			var today = new Date(tmp.getYear(),tmp.getMonth(),tmp.getDate());
			if(today.getTime()==theDay.getTime())
			{
				bgColor = " bgcolor=\"#FFFF99\"";
			}
			if((theDay.getDay()==0)||(theDay.getDay()==6))
			{
				bgColor = " bgcolor=\"#D3D3D3\"";
			}
			
			//Check if date within range
			if((theDay<oMinDate)||(theDay>oMaxDate)){
				noURL = true;
			}
			else{
				noURL = false;
			}
			if(noURL){
				sCal += "<td align=\"Center\" width=\"14%\"" + bgColor + "><font face=\"verdana,Arial,Helvetica,sans-serif\" color=\"#003399\" size=\"1\">" + (i - fdomWeekDayNumber + 2) + "</font></td>";
			}
			else{
				sCal += "<td align=\"Center\" width=\"14%\"" + bgColor + "><font face=\"verdana,Arial,Helvetica,sans-serif\" color=\"#003399\" size=\"1\"><a href=\"javascript:fnSelectDate('" + monthNumber + "/" + (i - fdomWeekDayNumber + 2) + "/" + iYear + "')\" style=\"color:#003399\">" + (i - fdomWeekDayNumber + 2) + "</a></font></td>";
			}
		}
		else
		{
			tdStart = "<td align=\"Center\" width=\"14%\"><font face=\"verdana,Arial,Helvetica,sans-serif\" color=\"LightGrey\" size=\"1\">";
			aStart1 = "<a href=\"javascript:fnSelectDate('";
			aStart2 =  "')\" style=\"color:LightGrey\">";
			aEnd = "</a>";
			tdEnd = "</td>";
			
			if(i<fdomWeekDayNumber - 1){
				if(iMonth!=1){
					dayIs = (monthNumber - 1) + "/" + ((daysInPrevMonth - (fdomWeekDayNumber - i)) + 2) + "/" + iYear;
					dayNbr = ((daysInPrevMonth - (fdomWeekDayNumber - i)) + 2);
				}
				else{
					dayIs = "12/" + ((daysInPrevMonth - (fdomWeekDayNumber - i)) + 2) + "/" + (iYear - 1);
					dayNbr = ((daysInPrevMonth - (fdomWeekDayNumber - i)) + 2);
				}
			}
			else{
				if(iMonth!=12){
					dayIs = (monthNumber + 1) + "/" + nextMonthCounter + "/" + iYear;
					dayNbr = nextMonthCounter;
				}
				else{
					dayIs = "1/" + nextMonthCounter + "/" + (iYear + 1);
					dayNbr = nextMonthCounter;
				}
				nextMonthCounter += 1;
			}
			theDay = new Date(dayIs);
			if((theDay<oMinDate)||(theDay>oMaxDate)){
				sCal += tdStart + dayNbr + tdEnd;
			}
			else{
				sCal += tdStart + aStart1 + dayIs + aStart2 + dayNbr + aEnd + tdEnd;
			}
		}
	}
	sCal += "</tr></table>";
		
 	tdCal.innerHTML = sCal;
}