// Decide browser version
var ns6 = (document.getElementById)? true:false;
var ie4 = (document.all)? true:false;
var ie5 = false;

// IE Stupidity Check.
if (ie4) {
	if ((navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0)) {
		ie5 = true;
	}
	if (ns6) {
		ns6 = false;
	}
}

//Handle mouse location
var mX;
var mY;
document.onmousemove = mouseMove;
function mouseMove(e) {
	if (ns6) {mX=e.pageX; mY=e.pageY;}
	if (ie4) {mX=event.x; mY=event.y;}
	if (ie5) {mX=window.event.clientX; mY=(window.document.body.scrollTop +  window.event.clientY);}
}

//---------------------------------------------------------------------------------------
//write the calendar box (initiate)
//---------------------------------------------------------------------------------------
//document.write("<div id='calBox' style='display:none;width:170px;height:133px;></div>");

//---------------------------------------------------------------------------------------
//CALENDAR BUILDING
//---------------------------------------------------------------------------------------
var mArray 			= new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var dArray 			= new Array("S","M","T","W","T","F","S")
var datesArray 		= new Array(31,28,31,30,31,30,31,31,30,31,30,31)
var sD				= new Array() 				//keep track of selected Date
var today 			= new Date()				//todays date
	today.setDate(today.getDate()+1);
var cD 				= today.getDay()			//current day of week 0-6
var cT				= today.getDate()			//current day 0-31
var cM				= today.getMonth()			//current month 0-11
var cMDs 			= datesArray[cM]			//number of days in current month
var cY				= today.getFullYear()		//current Year
var newT			= cT						//cal selected date
var newM			= cM						//cal selected month
var newY			= cY						//cal selected year
var newDs			= cMDs						//days for selected Month
var newD			= cD						//day of week
var newPrevDate;
var intDateLineCounter = 1;						//used to print exra empty line or not depending on the month weeks

function findFirstDay()
{
	firstDay = new Date();
	firstDay.setDate(1);
	firstDay.setMonth(newM);
	firstDay.setFullYear(newY);
	return firstDay.getDay();
}

function makeCal()
{
	if (makeCal.arguments[0]) 
		newT = makeCal.arguments[0]; 
	if (makeCal.arguments[1]) 
		newM+= makeCal.arguments[1];
	if (newM==12)
	{
		newM=0;
		newY++;
	}
	if (newM==-1)
	{
		newM=11;
		newY--;
	}
	
	//intialize the line counter
	intDateLineCounter = 1;
	
	//the new date's past month object
	//this will tell us to show prev month link and blackout passed dates
	newPrevDate = new Date(newY,newM,newT);
	
	//select this months ending date
	newDs = datesArray[newM];

	//calculate Leap Year
	isLeap 	= (newY % 4 == 0 && (newY % 100 !=0 || newY % 400 ==0 )) ? 1:0;
	
	//adds one to Feb if Leap Year
	if (newM==1) 
		newDs=newDs+isLeap
	
	newD = findFirstDay();		// finds first day of month returns 0-6
	countDay = newD;
	
	// this only necessary to remember which day was last clicked on run on onload
	if(makeCal.arguments.length==0) 
		sD[0] = new selectedDate(cT, newM , newY);
		
	//the extra table is just for visual effect you can remove with no problem	
	cal = "<table height='177' cellpadding='0' cellspacing='0' border='0' style='background-image: url(http://www.cheapoair.com/Travel/test/CHwidgets/Widgets/336x280/images/calendar_layout.gif)'>"
		+ "<tr>"
		+ "	<td valign='top'>"
		+ "		<table cellpadding='0' cellspacing='0' border='0' width='150'>" 
		+ "		<tr height='18'>"
		+ "			<td colspan='7' align='center' valign='middle' nowrap>";
	if (newPrevDate.valueOf() >= today.valueOf())
		cal	+= "		&nbsp;<a href='JavaScript:changeDate(0,-1);' class='arrows'><<</a>";
	else
		cal	+= "		&nbsp;&nbsp;&nbsp;&nbsp;";
	cal	+="					<span class='monthYear' style='width:98;'>" + mArray[newM] +  " " + newY + "</span>"
		+ "				<a href='JavaScript:changeDate(0,1);' class='arrows'>>></a>"
		+ "			</td>"
		+ "			</td>"
		+ "			<td width='4' nowrap rowspan='9'></td>"
		+ "		</tr>"
		+ "		<tr height='23'></td>";
	for (dm=0;dm<7;dm++) 
	{
		cal+= "<td align='right' valign='bottom' class='dayOfWeek' width='23' >" + dArray[dm] + "</td>";
	}
	cal	+= "</tr>\n<tr height='19' >";
	
	for (d=1;d<=newDs;d++)
	{
		if(d==1)
		{
			for (bd=0; bd < newD; bd++) 
				cal+= "<td> </td>";
		}
		
		//print that date
		if (newY <= today.getFullYear() && newM <= today.getMonth() && today.getDate() > d)
		{
			cal	+= "<td class='passedDate' align='right' id='d" + d + "' width='23' height='19'>"
				+  d
				+  "</td>";
		}
		else
		{
			cal	+= "<td align='right' id='d" + d + "' width='23'  height='19'>"
				+  "<a href=' ' onclick='changeDate(" + d + ");return false;' class='validDate'>" + d + "</a>"
				+  "</td>";
		}
		
		//handle day of the week and new week line
		countDay++;
		if(countDay==7)
		{
			countDay	 = 0;
			intDateLineCounter++;
			cal			+= "</tr>\n<tr height='19'>";
		}
		
		// if we reached the last day of month, 
		//then fill the remaining cells in this row row with empty cells 
		if (d == newDs && countDay != 0)	
			for (bd=countDay; bd < 7; bd++) 
				cal+= "<td> </td>"
	} //for
	
	//first close the active line
	cal	+= "		</tr>";
	
	//if we need extra line then put it here
	if (intDateLineCounter == 5)
		cal	+= "	<tr height='17'><td nowrap class='emptyCell'>&nbsp;</td></tr>";

	cal	+= "		</table>"
		+  "	</td>"
		+  "</tr>"
		+ "			<tr><td align='center'>	<a href='JavaScript:hideCalendar();' style='vertical-align:center; font-size:10px; font-family: Arial;  '>"
		+ "					close x "
		+ "				</a> </td></tr>"
		+  "</table>";
	
	document.getElementById("calBox").innerHTML = cal;
}

function selectedDate()
{
	this.date 	= selectedDate.arguments[0];
	this.month	= selectedDate.arguments[1];
	this.year	= selectedDate.arguments[2];
}
			
function changeDate()
{
	var whoDo = changeDate.arguments[0];
	if (changeDate.arguments[1]) 
		makeCal(changeDate.arguments[0],changeDate.arguments[1]);
	else 
	{
		document.getElementById("d"+whoDo).style.backgroundColor = "";
		newT		= whoDo;
		sD[0].date	= whoDo;
		sD[0].month = newM;
		sD[0].year	= newY;
		document.getElementById("d" + whoDo).style.backgroundColor = "#cccccc";
		this.setNewDate((newM+1)  + "/" + whoDo + "/" + newY);
	}
}

//---------------------------------------------------------------------------------------
//PAGE INTERACTION CODE
//---------------------------------------------------------------------------------------
makeCal(); //build the calendar at least once
var activeElement;

function setNewDate(theDateStr)
{
	document.getElementById(activeElement).value	= theDateStr;
	document.getElementById("maskBox").style.display= document.getElementById("calBox").style.display = "none";
}

function showCalendar(theActiveDateBox)
{
	activeElement	= theActiveDateBox;
	var my_datebox	= document.getElementById(theActiveDateBox);
	var my_calendar = document.getElementById("calBox");
	var my_mask		= document.getElementById("maskBox");

	my_mask.style.left		= my_calendar.style.left	= (window.screen.availWidth < (mX + 270) ? mX-250 : mX);
	my_mask.style.top		= my_calendar.style.top		= mY;
	my_mask.style.position	= my_calendar.style.position= "absolute";
	my_mask.style.display	= my_calendar.style.display = "";
}

function hideCalendar()
{
	document.getElementById("maskBox").style.display = document.getElementById("calBox").style.display = "none";
	document.getElementById(activeElement).focus();
}