var _monthNames=new Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");

<!--StartFragment -->
var _rightToLeft=false;
var _calendarBackground="#cccccc";
var _calenderBorderSize=1;
var _calenderBorderColor="#cccccc";
var _calenderCellColor="#ffffff";
var _calenderCellColorCurrentDay="#ffcccc";
var _calenderCellFontName="Verdana";
var _calenderCellFontSize="10px";
var _calenderTextFontName="Verdana";
var _calenderTextFontSize="11px";
var _calenderTextColor="#000000";
var _calendarAddLight=30;
var _calendarCallbackFunction="CalendarCallback";
var weekDays=new Array( "S","M","T","W","T","F","S");

var startDateInputName = '';
var endDateInputName = '';
//var _panelID="CalendarPanel";
//var _currentYear=0;
//var _currentMonth=-1;

function UpdateIFrameHeight(otherPanelName)
{
	var iFrameElem = parent.document.getElementById("IFrameID");
	var currentPanelName = document.getElementById(currentPanelName);
	var otherPanelName = document.getElementById(otherPanelName);
	
	if(iFrameElem != null)
	{
		if(iFrameElem.height=="190")
			iFrameElem.height = "400";
		else
		{
			if(otherPanelName ==null)
				iFrameElem.height = "190";
		}
	}
}

function CompareTwoDates(DateOne, DateTwo)
{
	if((DateOne!=null)&&(DateTwo!=null))
	{
		if((DateTwo>DateOne)||((DateTwo.getDate()==DateOne.getDate())&&(DateTwo.getMonth()==DateOne.getMonth())&&(DateTwo.getFullYear()==DateOne.getFullYear())))
			return true;
		else
			return false;
	}
	else
		return true;
}

function OpenCalendar(defYear, defMonth, defDay, PanelDateName, divDateControl, dateInputField) 
{
	var now=new Date();
	if ((typeof defYear == "undefined")||(isNaN(defYear)))
		defYear = now.getFullYear();
	if ((typeof defMonth == "undefined")||(isNaN(defMonth)))
		defMonth = now.getMonth();
	else
		defMonth--;
	if ((typeof defDay == "undefined")||(isNaN(defDay)))
		defDay = now.getDate();
	FillCalendar(defYear, defMonth+1, defDay, PanelDateName, divDateControl, dateInputField);
}

function FillCalendar(year, month, day, PanelDateName, divDateControl, dateInputField) 
{
	// set the current date div to the passe in one.
	if (boolIsCalendarPanelEnd) {
		var strDateLimit = ArrivalDateTextField;
		var arrDateLimitParts=strDateLimit.split("/");
		if(arrDateLimitParts[0]!=null&&arrDateLimitParts[0].length>0&&arrDateLimitParts[0].charAt(0)=="0")
			arrDateLimitParts[0]=arrDateLimitParts[0].charAt(1);
		if(arrDateLimitParts[1]!=null&&arrDateLimitParts[1].length>0&&arrDateLimitParts[1].charAt(0)=="0")
			arrDateLimitParts[1]=arrDateLimitParts[1].charAt(1);
		var _currentYear = year;
		var _currentMonth = month - 1;
		//alert(_currentYear);
		//alert(_currentMonth);
		var now = new Date(arrDateLimitParts[2],arrDateLimitParts[0]-1, parseInt(arrDateLimitParts[1]) + 1);
		//var now = new Date(2010,1,4);
	} else {
		var _currentYear = year;
		var _currentMonth = month-1;
		var now = new Date();
	}
	
	// Get the Week Day for the first day of the passed in month
	var _firstWeekDay = new Date(_currentYear, _currentMonth, 1).getDay();
	
	// Find how many days in the passed in month
	var daysCount=DaysInMonth(year, month);
	//var objPanel = document.getElementById(_panelID);
	
	var objPanel = document.getElementById(PanelDateName);
	var varCurrentDateDiv = document.getElementById(divDateControl);
	
	if(objPanel==null)
	{
		// Create the Calendar div and set it as a child to the
		// passed in div from the page.
		objPanel = document.createElement("div");
		objPanel.id = PanelDateName;
		objPanel.style.display = "block";
		//objPanel.onclick = new Function("HideCalendar('" + PanelDateName + "', '" + divDateControl + "')");
		varCurrentDateDiv.appendChild(objPanel);
	}	
	
	// empty the dynamic div calendar panel from all the controls
	while (objPanel.childNodes.length > 0)
			objPanel.removeChild(objPanel.childNodes[0]);
		
	BuildCalendarDetails(objPanel, _currentMonth, _currentYear, PanelDateName, divDateControl, dateInputField);
	
	var currentDay=1;
	
	var StartDayPosition=currentDay;
	var EndDayPostion = daysCount;
	
	// If the first day of the month is not at position 0 (Sunday), then
	// shift the EndDays count
	if(_firstWeekDay==0)
	{
		StartDayPosition=1;
		EndDayPostion = daysCount;
	}
	else
	{
		StartDayPosition = _firstWeekDay+1;
		EndDayPostion = daysCount+_firstWeekDay;
	}
	
	var objTable=document.createElement("table");
	var objRow=0;
	
	// First add the days of the week
	BuildWeekDays(objTable);
	
	// Now add the empty cells for the current month.
	if(StartDayPosition>1)
	{
		objRow=objTable.insertRow(objTable.rows.length);
		for(var j=1; j<StartDayPosition; j++)
		{
			var objCellEmpty=objRow.insertCell(objRow.cells.length);
			objCellEmpty.innerHTML = "";
		}
		
		for (var i=StartDayPosition; i<=7; i++) 
		{
			if (StartDayPosition > EndDayPostion)
				break;	
			var objCell=objRow.insertCell(objRow.cells.length);
			
			var workingDate = new Date(_currentYear, _currentMonth, currentDay);
			objCell.style.border = "1px solid black";
			objCell.style.color = _calenderTextColor;
			
			if(CompareTwoDates(now, workingDate))
			{
				// set the color to white and enable the click event
				objCell.style.backgroundColor = _calenderCellColor;
				objCell.style.cursor = "hand";
				objCell.innerHTML = "<a href=\"JavaScript:void(0);\" onclick=\"JavaScript:CalenderCellClick(this, '" + PanelDateName +  "','" + divDateControl + "', " + _currentYear + ", " +_currentMonth+", '" + dateInputField + "');\">" + currentDay+"</a>";
				if(workingDate.getDate()==now.getDate()&&workingDate.getMonth()==now.getMonth()&&workingDate.getFullYear()==now.getFullYear())
					objCell.style.color = "#00ffff";
			}
			else
			{
				// set the color to gray and disable the user click event
				objCell.style.backgroundColor = _calendarBackground;
				objCell.innerHTML = currentDay+"";
			}
			StartDayPosition++;
			currentDay++;
		}
	}

	while (StartDayPosition <= EndDayPostion) 
	{
		if (((StartDayPosition-1)%7) == 0) 
		{
			objRow=objTable.insertRow(objTable.rows.length);
		}	
		for (var i=1; i<=7; i++) 
		{
			if (StartDayPosition > EndDayPostion)
				break;
			var objCell=objRow.insertCell(objRow.cells.length);
			
			var workingDate = new Date(_currentYear, _currentMonth, currentDay);
			
			objCell.style.border = "1px solid black";
			objCell.style.color = _calenderTextColor;
			if(CompareTwoDates(now, workingDate))
			{
				// set the color to white and enable the click event
				objCell.style.backgroundColor = _calenderCellColor;
				objCell.style.cursor = "hand";
				objCell.innerHTML = "<a href=\"JavaScript:void(0);\" onclick=\"JavaScript:CalenderCellClick(this, '" + PanelDateName + "', '" + divDateControl + "', " + _currentYear + ", " + _currentMonth + ", '" + dateInputField + "');\">" + currentDay+"</a>";
				if(workingDate.getDate()==now.getDate()&&workingDate.getMonth()==now.getMonth()&&workingDate.getFullYear()==now.getFullYear())
					objCell.style.color = "#00ffff";
			}
			else
			{
				// set the color to gray and disable the user click event
				objCell.style.backgroundColor = _calendarBackground;
				objCell.innerHTML =	currentDay+"";
			}
			StartDayPosition++;
			currentDay++;
		}
	}
	objPanel.appendChild(objTable);
	BuildCloseLink(objPanel, PanelDateName, divDateControl);
	varCurrentDateDiv.style.display="block";
}

function BuildWeekDays(objTable)
{
	var objRow = 0;
	objRow=objTable.insertRow(objTable.rows.length);
	for(var k=0; k<=6; k++) 
	{
		var objCellEmpty=objRow.insertCell(objRow.cells.length);
		objCellEmpty.style.border = "0px solid black";
		objCellEmpty.style.color = _calenderTextColor;
		objCellEmpty.innerHTML = weekDays[k];
	}
}

// This is a function that appends Close link to the 
// passed in objContainer container.
function BuildCloseLink(objContainer, PanelDateName, divDateControl)
{
	var btnClose = BuildCalendarButton("Close");
	btnClose.onclick = new Function("HideCalendar('" + PanelDateName + "', '" + divDateControl + "')");
	
	var objSpan=document.createElement("p");
	objSpan.setAttribute("align", "right");
	objSpan.innerHTML = "<a href=\"JavaScript:void(0);\" onclick=\"JavaScript:HideCalendar('" + PanelDateName + "', '" + divDateControl + "'); UpdateIFrameHeight('" + PanelDateName +"');\">Close</a>&nbsp;&nbsp;";	
	
	objContainer.appendChild(objSpan);
}


function BuildCalendarDetails(objContainer, month, year, PanelDateName, divDateControl, dateInputField) {
	
	var passedInDate = new Date(year, month, 1);
	var todaysDate = new Date();
	
	if(!(passedInDate.getFullYear()<todaysDate.getFullYear()||(passedInDate.getFullYear()==todaysDate.getFullYear()&&passedInDate.getMonth()==todaysDate.getMonth())))
	{
		var btnPreviousMonth=BuildCalendarButton((_rightToLeft)?">>":"&lt;&lt;");
		btnPreviousMonth.onclick = new Function("PreviousMonthClick('" + PanelDateName + "', '" + divDateControl + "', " + year + ", " + month+ ", '" + dateInputField + "')");
	}
	
	var btnNextMonth=BuildCalendarButton((_rightToLeft)?"&lt;&lt;":">>");
	btnNextMonth.onclick = new Function("NextMonthClick('" + PanelDateName + "', '" + divDateControl + "', " + year + ", " + month + ", '" + dateInputField + "')");
	
	
	var objMonthSpan=BuildCalendarSpan(_monthNames[month]);
	var objYearSpan=BuildCalendarSpan(year+"");
	
	var objSpan=document.createElement("div");
	objSpan.id = PanelDateName+"_details";
	objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
	if (_rightToLeft) {
		objSpan.appendChild(btnNextMonth);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
		objSpan.appendChild(objMonthSpan);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;&nbsp;&nbsp;"));
		objSpan.appendChild(objYearSpan);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
		if(btnPreviousMonth!=null)
			objSpan.appendChild(btnPreviousMonth);
	}
	else {
		if(btnPreviousMonth!=null)
			objSpan.appendChild(btnPreviousMonth);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
		objSpan.appendChild(objYearSpan);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;&nbsp;&nbsp;"));
		objSpan.appendChild(objMonthSpan);
		objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
		objSpan.appendChild(btnNextMonth);
	}
	objSpan.appendChild(BuildCalendarSpan("&nbsp;"));
	objContainer.appendChild(objSpan);
}

function BuildCalendarButton(strText) {
	var result=document.createElement("a");
	result.setAttribute("href", "JavaScript:void(0);");
	//result.style.fontSize = "9px";
	result.innerHTML = strText;
	return result;
}

function BuildCalendarSpan(strText) {
	var result=document.createElement("span");
	result.style.fontFamily = _calenderTextFontName;
	result.style.fontSize = _calenderTextFontSize;
	result.style.color = _calenderTextColor;
	result.innerHTML = strText;
	return result;
}

function CalenderCellClick(objCell, DatePanelName, divDateControl, _currentYear, _currentMonth, dateInputField) {
	//hide:
	HideCalendar(DatePanelName, divDateControl);
	UpdateIFrameHeight(DatePanelName);
	//set date:
	var date=new Date();
	date.setFullYear(_currentYear, _currentMonth, parseInt(objCell.innerHTML));
	
	//activate callback function:
	eval(_calendarCallbackFunction+"('"+date+"', '" + dateInputField + "')");
}

function HideCalendar(DatePanelName, divDateControl) 
{
	var objDatePanel = document.getElementById(DatePanelName);
	var varCurrentDateDiv = document.getElementById(divDateControl);
	
	UpdateIFrameHeight(DatePanelName);
	
	if(objDatePanel!=null &&varCurrentDateDiv!=null)
	{
		varCurrentDateDiv.removeChild(objDatePanel);
		varCurrentDateDiv.style.display="none";
	}
}

function PreviousMonthClick(PanelDateName, divDateControl, _currentYear, _currentMonth, dateInputField) {
	_currentMonth--;
	if (_currentMonth < 0) {
		_currentMonth = 11;
		_currentYear--;
	}
	FillCalendar(_currentYear, _currentMonth+1, 1, PanelDateName, divDateControl, dateInputField);
}

function NextMonthClick(PanelDateName, divDateControl, _currentYear, _currentMonth, dateInputField) {
	_currentMonth++;
	if (_currentMonth > 11) {
		_currentMonth = 0;
		_currentYear++;
	}
	FillCalendar(_currentYear, _currentMonth+1, 1, PanelDateName, divDateControl, dateInputField);
}

function DaysInMonth(year, month) {
	var date=new Date();
	var result=0;
	date.setFullYear(year, month-1, 1);
	while ((date.getFullYear() <= year)&&(date.getMonth() <= (month-1))) {
		result++;
		if (result > 31) {
			alert("error getting days in month!\nyear: "+year+", month: "+month);
			return 0;
		}
		date.setFullYear(year, month-1, date.getDate()+1);
	}
	return result;
}

function GetElementWidth(element) {
	return element.clientWidth;
}

function GetElementHeight(element) {
	return element.clientHeight;
}

var arrColoredControls=new Array();
function PutMoreLight(objControl, color, lightAmount) {
	var cancelAddLight=objControl.getAttribute("cancel_add_light");
	if (cancelAddLight == "1")
		return true;
	
	if (typeof color == "undefined")
		color = _calenderCellColor;
	
	if (typeof lightAmount == "undefined")
		lightAmount = _calendarAddLight;
	
	arrColoredControls[objControl] = color;
	
	var R=HexToInt(color.substring(1, 3));
	var G=HexToInt(color.substring(3, 5));
	var B=HexToInt(color.substring(5, 7));
	
	R = SafeAdd(R, lightAmount, 0, 255);
	G = SafeAdd(G, lightAmount, 0, 255);
	B = SafeAdd(B, lightAmount, 0, 255);
	
	var lightedColor=BuildColor(R, G, B);
	objControl.style.backgroundColor = lightedColor;
}

function RestoreColor(objControl) {
	var cancelAddLight=objControl.getAttribute("cancel_add_light");
	if (cancelAddLight == "1")
		return true;
	objControl.style.backgroundColor = arrColoredControls[objControl];
}

function IntToHex(num) {
	if (num < 10)
		return (num+"");
	
	switch (num) {
		case 10: return "a";
		case 11: return "b";
		case 12: return "c";
		case 13: return "d";
		case 14: return "e";
		case 15: return "f";
	}
	
	return IntToHex(parseInt(num/16))+IntToHex(parseInt(num%16));
}

function HexToInt(strHex) {
	return parseInt(strHex, 16);
}

function SafeAdd(num, addition, min, max) {
	num += addition;
	if (num > max)
		num = max;
	if (num < min)
		num = min;
	return num;
}

function BuildColor(r, g, b) {
	var R=IntToHex(r);
	var G=IntToHex(g);
	var B=IntToHex(b);
	R=(R.length == 1)?("0"+R):R;
	G=(G.length == 1)?("0"+G):G;
	B=(B.length == 1)?("0"+B):B;
	return "#"+R+G+B;
}



/**********************************************************************/ 
/*Function name :isDigit(theDigit) */ 
/*Usage of this function :test for an digit */ 
/*Input parameter required:thedata=string for test whether is digit */ 
/*Return value :if is digit,return true */ 
/* else return false */ 
/**********************************************************************/ 
function isDigit(theDigit) 
{ 
	var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'),j; 

	for (j = 0; j < digitArray.length; j++) 
	{
		if (theDigit == digitArray[j]) 
		return true 
	} 
	return false 
} 
/*************************************************************************/ 
/*Function name :isPositiveInteger(theString) */ 
/*Usage of this function :test for an +ve integer */ 
/*Input parameter required:thedata=string for test whether is +ve integer*/ 
/*Return value :if is +ve integer,return true */ 
/* else return false */ 
/*function require :isDigit */ 
/*************************************************************************/ 
function isPositiveInteger(theString) 
{ 
	var theData = new String(theString) 

	if (!isDigit(theData.charAt(0))) 
		if (!(theData.charAt(0)== '+')) 
			return false 

	for (var i = 1; i < theData.length; i++) 
		if (!isDigit(theData.charAt(i))) 
			return false 
	return true 
} 
/**********************************************************************/ 
/*Function name :isDate(s,f) */ 
/*Usage of this function :To check s is a valid format */ 
/*Input parameter required:s=input string */ 
/* f=input string format */ 
/* =1,in mm/dd/yyyy format */ 
/* else in dd/mm/yyyy */ 
/*Return value :if is a valid date return 1 */ 
/* else return 0 */ 
/*Function required :isPositiveInteger() */ 
/**********************************************************************/ 
function isDate(s,f) 
{
	var a1=s.split("/"); 
	var a2=s.split("-"); 
	var e=true; 
	if ((a1.length!=3) && (a2.length!=3)) 
	{ 
		e=false; 
	} 
	else 
	{
		if (a1.length==3) 
			var na=a1; 
		if (a2.length==3) 
			var na=a2; 
		if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2])) 
		{ 
			if (f==1) 
			{
				var d=na[1],m=na[0]; 
			} 
			else 
			{
				var d=na[0],m=na[1]; 
			} 
			var y=na[2]; 
			if (((e) && (y<1000)||y.length>4)) 
				e=false 
			if (e) 
			{ 
				v=new Date(m+"/"+d+"/"+y); 
				if (v.getMonth()!=m-1) 
					e=false; 
			} 
		} 
		else 
		{ 
			e=false; 
		} 
	} 
	return e 
}