boolDisableFlight = false;

function handleKeyPress(e,button)
{
	var key=e.keyCode || e.which;
	if (key==13)
		{
		e.returnValue=false;
        e.cancel = true;
        boolDisableFlight = true;
        document.getElementById(button).click()
		return false;
		}
}

function setDates(controlName) 
{
	var currentDate = new Date();
	var bookNowDate = new Date();
	var fromDate= new String(GetQueryStringParam('FromDate'));
	var ddlDay = document.getElementById(controlName)
	var targetDate = DateAdd(currentDate, 1, 0, 0).getDate() - 1;

	if(fromDate != "")
	{
	bookNowDate.setDate(fromDate.substring(0,2));
	bookNowDate.setMonth(fromDate.substring(3,5)-1);
	bookNowDate.setYear(fromDate.substring(6,10));
		if(currentDate < bookNowDate)
		{
			ddlDay.options[bookNowDate.getDate()-1].selected = true;
		}
		else
		{
			ddlDay.options[targetDate].selected = true;
		}
	
	}
	else
	{
	ddlDay.options[targetDate].selected = true;
	}
}

function blocking(nr)
{
	if (document.layers)
	{
		current = (document.layers[nr].display == 'none') ? 'block' : 'none';
		document.layers[nr].display = current;
	}
	else if (document.all)
	{
		current = (document.all[nr].style.display == 'none') ? 'block' : 'none';
		document.all[nr].style.display = current;
	}
	else if (document.getElementById)
	{
		vista = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none';
		document.getElementById(nr).style.display = vista;
	}
}

arrPortOptions = new Array('Select a city','Kadavu','Labasa','Lakeba','Levuka','Nadi','Savusavu','Suva (Nausori Airport)','Taveuni','Vanuabalavu');

arrPortOptions1 = new Array('','KDV','LBS','LKB','LEV','NAN','SVU','SUV','TVU','VBV');


function checkPortAvailable(selectListElement, selectListElementOpposite, checkAvailibility)
{

var strOppositeSectedValue = selectListElementOpposite.value;
var arrInvalidPorts
var limitListPort = false;
var arrNoOnlineBooking = new Array("YVR","NRT","HNL", "TRW", "CXI");
selectListElementOpposite.options.length = null;

if( selectListElement.value == "LKB" || selectListElement.value == "VBV" ) {
	limitListPort = true;
	arrInvalidPorts =  new Array("SUV", "NAN");
} else if (selectListElement.value == "SUV" || selectListElement.value == "NAN") {
	arrInvalidPorts =  new Array(selectListElement.value);
} else {
	arrInvalidPorts =  new Array(selectListElement.value,"LKB","VBV");
}

        
//clear and add country select list
for ( var i=0, len=arrPortOptions.length; i<len; i++ )
	{
	var anOption = document.createElement("OPTION");
	anOption.innerHTML  = arrPortOptions[i];
	anOption.value = arrPortOptions1[i];
	selectListElementOpposite.appendChild(anOption);
	if(arrPortOptions1[i] == strOppositeSectedValue )
		{
		anOption.selected = true;
		}
	
	}

//remove invalid ports
for ( var i=0; i < arrInvalidPorts.length; i++ ) {
	if( limitListPort ) {
	    for (var j = selectListElementOpposite.options.length - 1; j >= 0; j--) {
	        if (selectListElementOpposite.options[j].value != arrInvalidPorts[0] && selectListElementOpposite.options[j].value != arrInvalidPorts[1]) {
				selectListElementOpposite.removeChild(selectListElementOpposite.options[j]);
			}
		}
	} else {
		for ( var j=0; j < selectListElementOpposite.options.length; j++ ) {
			if(selectListElementOpposite.options[j].value==arrInvalidPorts[i] ) {
				selectListElementOpposite.removeChild(selectListElementOpposite.options[j]);
			}
		}
	}
}

if(checkAvailibility == true)
{
	for ( var i=0; i < arrNoOnlineBooking.length; i++ ){
		if(arrNoOnlineBooking[i]==selectListElement.value)
			{
				if(confirm("The port of " + selectListElement[selectListElement.options.selectedIndex].text + " cannot currently be booked online. Please click OK to go the Contact Us page and complete this booking over the phone. You may also view schedules online before contacting us.\n\n"))
				{
				top.location.href='default.aspx?sid=AP_TheOrganisation&pid=AP_contactInformation'
				}
			}
		}
}		


	return false;
}

function CustomPopupLeave(e) 
{ 
	var datePicker = eval(leaveDatePickerControlName); 
	var popupButton = document.getElementById(datePicker.PopupControlID); 
	var popupElement = datePicker.GetPopupContainer(); 
	var dimensions = datePicker.GetElementDimensions(popupButton); 
	var position = datePicker.GetElementPosition(popupButton); 
	datePicker.ShowPopup(position.x, position.y + dimensions.height); 
}     

function CustomPopupReturn(e) 
{ 
	var datePicker = eval(returnDatePickerControlName); 
	var popupButton = document.getElementById(datePicker.PopupControlID); 
	var popupElement = datePicker.GetPopupContainer(); 
	var dimensions = datePicker.GetElementDimensions(popupButton); 
	var position = datePicker.GetElementPosition(popupButton); 
	datePicker.ShowPopup(position.x, position.y + dimensions.height); 
}      


function CalendarLeave_Onpopupupdating()
{
	var datePicker = eval(leaveDatePickerControlName); 
	var dateNow = new Date();
	dateNow.setDate(dateNow.getDate()+2)
	var customdate = new Date(dateNow.getFullYear(), dateNow.getMonth(), dateNow.getDate(), 00, 00, 00);  
}

function CalendarReturn_Onpopupupdating()
{
	var datePicker = eval(returnDatePickerControlName); 
	var dateNow = new Date();
	dateNow.setDate(dateNow.getDate()+3)
	var customdate = new Date(dateNow.getFullYear(), dateNow.getMonth(), dateNow.getDate(), 00, 00, 00);  
}

function checkBookingParameters(flightSearch) {
if(!boolDisableFlight)
{
	var currentDate = new Date();
	var targetDate = DateAdd(currentDate, 1, 0, 0);
	var alertMessage = 'Please adjust your booking details as follows:\n\n';
	var parametersOk = 1;
	var targetYear = String(targetDate.getFullYear());
	var targetMonth = "0" + String(Number(targetDate.getMonth()) + 1);
	var targetDay = "0" + String(targetDate.getDate());
	var targetDateString = targetYear + targetMonth.substring(targetMonth.length-2,targetMonth.length) + targetDay.substring(targetDay.length-2,targetDay.length);
	
	var strLeaveYearMonth = new String()
	var strReturnYearMonth = new String()
	
	var leaveDay = document.getElementById(leaveControlNameDay);
	var returnDay = document.getElementById(returnControlNameDay);
	var leaveMonth = document.getElementById(leaveControlNameMonth);
	var returnMonth = document.getElementById(returnControlNameMonth);
	
	strLeaveYearMonth = document.getElementById(leaveControlNameMonth).value;
	strReturnYearMonth = document.getElementById(returnControlNameMonth).value;

	var ddlOrigin = document.getElementById(originControlName);
	var ddlDestination = document.getElementById(destinationControlName);
	var cbOneWay = document.getElementById(oneWayControlName); 
	
	

	
	if (ddlDestination.value == "") {
		alertMessage += "Please select your Destination city.\n\n";
		parametersOk = 0;
	}
	
	if (ddlOrigin.value == "") {
		alertMessage += "Please select your Origin city.\n\n";
		parametersOk = 0;
	}
	
	
	if (ddlOrigin.value != "" && ddlOrigin.value == ddlDestination.value) {
		alertMessage += "The Origin and Destination cities cannot be the same.\n\n";
		parametersOk = 0;
	}

if(flightSearch)
		{
//	if ((Number(leaveMonth.value + leaveDay.options[leaveDay.selectedIndex].text)) < Number(targetDateString)) {
//			alertMessage += "You may only book flights departing at least 24 hours from now.\nPlease adjust your departure date.\n\n";
//			parametersOk = 0;
//	}
	}
	
	if (Number(returnMonth.value + returnDay.options[returnDay.selectedIndex].text) < Number(leaveMonth.value + leaveDay.options[leaveDay.selectedIndex].text) && returnDay.disabled == false) {
				alertMessage += "You may only book flights departing before the return date.\nPlease adjust your return date.\n\n";
				parametersOk = 0;
		}
	if(flightSearch)
		{
		var ddlPassengersAdult =  document.getElementById(passengersAdult); 
		var ddlPassengersChildren =  document.getElementById(passengersChildren); 
		if (passengersInfants != null) {
            var ddlPassengersInfants = document.getElementById(passengersInfants);
            if (Number(ddlPassengersAdult.value) + Number(ddlPassengersChildren.value) + Number(ddlPassengersInfants.value) > 8) {
                alertMessage += "There is a limit of eight (8) passengers per online booking.\nThe number of adult and child passengers you have specified is greater than eight.\n\n";
                parametersOk = 0;
            }
            if (Number(ddlPassengersInfants.value) > Number(ddlPassengersAdult.value)) {
                alertMessage += "The number of Infants cannot exceed the number of Adults\n\n";
                parametersOk = 0;
            }
        } else {
            if (Number(ddlPassengersAdult.value) + Number(ddlPassengersChildren.value) > 8) {
                alertMessage += "There is a limit of eight (8) passengers per online booking.\nThe number of adult and child passengers you have specified is greater than eight.\n\n";
                parametersOk = 0;
            }
        }
	}
	
	/*/fare specials
	var fromDate= new String(GetQueryStringParam('FromDate'));
	var toDate= new String(GetQueryStringParam('ToDate'));

	if(fromDate != "" && toDate != "")
	{
	var dtFromDate = new Date();
	var dtToDate = new Date();
	var dtFromDateSelected = new Date();
	var dtToDateSelected = new Date();
	
	dtFromDate.setDate(fromDate.substring(0,2));
	dtFromDate.setMonth(fromDate.substring(3,5)-1);
	dtFromDate.setYear(fromDate.substring(6,10));
	
	dtToDate.setDate(toDate.substring(0,2));
	dtToDate.setMonth(toDate.substring(3,5)-1);
	dtToDate.setYear(toDate.substring(6,10));
	
	dtFromDateSelected.setDate(leaveDay.value);
	dtFromDateSelected.setMonth(strLeaveYearMonth.substring(4,6)-1);
	dtFromDateSelected.setYear(strLeaveYearMonth.substring(0,4));
	
	dtToDateSelected.setDate(returnDay.value);
	dtToDateSelected.setMonth(strReturnYearMonth.substring(4,6)-1);
	dtToDateSelected.setYear(strReturnYearMonth.substring(0,4));
	
		if((dtFromDateSelected < dtFromDate || dtFromDateSelected > dtToDate) || (dtToDateSelected < dtFromDate || dtToDateSelected > dtToDate))
		{
			//alertMessage += "You may only book flights between " + dtFromDate.toLocaleDateString() + " and " + dtToDate.toLocaleDateString() + ".\nPlease adjust your flight dates.\n\n";
			//parametersOk = 0;
			if(confirm("The Fare Specials only apply to flight dates between " + dtFromDate.toLocaleDateString() + " and " + dtToDate.toLocaleDateString()+"\n\n"))
				{
				top.location.href='default.aspx?sid=aboutpacificsun&pid=contactInformation'
				}
		}

	}
*/
	
	if (parametersOk == 0) 
		{
			alert(alertMessage);
			return false;
		}
	else
		{
				if(ddlDestination.value == "SVU" | ddlOrigin.value == "SVU")
				{
					
					if((Number(leaveMonth.value + leaveDay.options[leaveDay.selectedIndex].text) >= 20080714 && Number(leaveMonth.value + leaveDay.options[leaveDay.selectedIndex].text) <= 20081201) | (Number(returnMonth.value + returnDay.options[returnDay.selectedIndex].text) >= 20080714 && Number(returnMonth.value + returnDay.options[returnDay.selectedIndex].text) <= 20081105))
					{
					alert("Savusavu Airport will be closed for runway works between 14 Jul 08 and approx. 1 Dec 08. Customers should book to Labasa Airport as the nearest alternative. Pacific Sun will not be responsible for ground transfers between Labasa Airport and Savusavu. Resort guests staying at Savusavu properties should contact their hosts directly for ground transfer details. Public Transport buses, taxi's and mini buses will be available on a user pays basis. Driving time is approx 1.5 - 2 hours each way. \n\n")
					return false;
					}
				}
				if (ddlOrigin.value == "VLI") 
				{
					if(confirm("The port of " +ddlOrigin[ddlOrigin.options.selectedIndex].text + "  cannot currently be booked online. Please click OK to go the Contact Us page and complete this booking over the phone. You may also view schedules online before contacting us.\n\n"))
					{
					top.location.href='default.aspx?sid=PS_aboutpacificsun&pid=PS_contactInformation'
					}
				return false;
				}
			//}
			
			return true;
			
		}
	}
}


function CalendarLeave_OnDateSelectedIndexChanged()
{
	var strLeaveYearMonth = document.getElementById(leaveControlNameMonth).value;
	var dllLeaveMonth = document.getElementById(returnControlNameMonth); 
	var dllLeaveDay = document.getElementById(returnControlNameDay); 
	var dllReturnMonth = document.getElementById(returnControlNameMonth); 
	var dllReturnDay = document.getElementById(returnControlNameDay); 
	//also preselect leave date
	for(var i=0; i<=dllLeaveMonth.length-1;i++)
	{
		if(dllReturnMonth.options[i].value == strLeaveYearMonth )
		{
		dllReturnMonth.selectedIndex = i;
		}
	}
	dllReturnDay.selectedIndex = dllLeaveDay.selectedIndex
}

function CalendarLeave_OnDateSelected()
{
	var datePicker = eval(leaveDatePickerControlName);
	var datePickerReturn = eval(returnDatePickerControlName);
	var date = new Date()
	var dllLeaveMonth = document.getElementById(leaveControlNameMonth); 
	var dllLeaveDay = document.getElementById(leaveControlNameDay); 
	var dllReturnMonth = document.getElementById(returnControlNameMonth); 
	var dllReturnDay = document.getElementById(returnControlNameDay); 
	date = datePicker.GetDate();
	var selectedMonth = ((date.getMonth()+1) < 10 ? "0" : "") +(date.getMonth()+1)
	var intSelectedMonth  = date.getFullYear() + "" + selectedMonth;
	//find and select picked month index
	for(var i=0; i<=dllLeaveMonth.length-1;i++)
	{
		if(dllLeaveMonth.options[i].value == intSelectedMonth )
		{
		dllLeaveMonth.selectedIndex = i;
		}
	}
	dllLeaveDay.selectedIndex = date.getDate()-1;
	
	//also preselect leave date
	for(var i=0; i<=dllLeaveMonth.length-1;i++)
	{
		if(dllReturnMonth.options[i].value == intSelectedMonth )
		{
		dllReturnMonth.selectedIndex = i;
		}
	}
	dllReturnDay.selectedIndex = date.getDate()-1;
	
	//update return datepicker
	datePickerReturn.SetDate(date);
}

function SelectReturnDate(dayOrigin, monthOrigin, dayTarget, monthTarget) {
    if (monthTarget.selectedIndex == monthOrigin.selectedIndex) {
        dayTarget.selectedIndex = dayOrigin.selectedIndex;
    } else {
        monthTarget.selectedIndex = monthOrigin.selectedIndex;
        DateSelectorSwitch(monthTarget, dayTarget);
        dayTarget.selectedIndex = dayOrigin.selectedIndex;
    }
}

function CalendarReturn_OnDateSelected()
{
	var datePicker = eval(returnDatePickerControlName);
	var date = new Date()
	var dllReturnMonth = document.getElementById(returnControlNameMonth); 
	var dllReturnDay = document.getElementById(returnControlNameDay); 
	
	date = datePicker.GetDate();
	
	var selectedMonth = ((date.getMonth()+1) < 10 ? "0" : "") +(date.getMonth()+1)
	var intSelectedMonth  = date.getFullYear() + "" + selectedMonth;
	//find and select picked month index
	for(var i=0; i<=dllReturnMonth.length-1;i++)
	{
		if(dllReturnMonth.options[i].value == intSelectedMonth )
		{
		dllReturnMonth.selectedIndex = i;
		}
	}
	dllReturnDay.selectedIndex = date.getDate()-1;
}


function updateDatePickerLeave()
{
	var datePickerLeave = eval(leaveDatePickerControlName);
	var datePickerReturn = eval(returnDatePickerControlName);
	var strLeaveYearMonth = new String(document.getElementById(leaveControlNameMonth).value);
	var date = new Date()
	date.setMonth(strLeaveYearMonth.substring(4,6)-1)
	date.setDate(document.getElementById(leaveControlNameDay).value)
	date.setFullYear(strLeaveYearMonth.substring(0,4))
	datePickerLeave.SetDate(date);
	datePickerReturn.SetDate(date);
}


function updateDatePickerReturn()
{
	var datePickerReturn = eval(returnDatePickerControlName);
	var strReturnYearMonth = new String(document.getElementById(returnControlNameMonth).value);
	var date = new Date()
	date.setMonth(strReturnYearMonth.substring(4,6)-1)
	date.setDate(document.getElementById(returnControlNameDay).value)
	date.setFullYear(strReturnYearMonth.substring(0,4))
	datePickerReturn.SetDate(date);
}


function DateAdd(startDate, numDays, numMonths, numYears)
{

	var returnDate = new Date(startDate.getTime());
	var yearsToAdd = numYears;
	var month = returnDate.getMonth()	+ numMonths;
	
	if (month > 11)
	{
		yearsToAdd = Math.floor((month+1)/12);
		month -= 12*yearsToAdd;
		yearsToAdd += numYears;
	}
	returnDate.setMonth(month);
	returnDate.setFullYear(returnDate.getFullYear()	+ yearsToAdd);
	returnDate.setTime(returnDate.getTime()+60000*60*24*numDays);
	
	return returnDate;
}

function GetQueryStringParam(paramName) 
	{
	var queryString = window.location.search.substring(1);
	var queryStringParams = queryString.split("&");
	var paramValue = "";
	var returnValue = "";
	for (i=0;i<queryStringParams.length;i++) 
		{
		paramValue = queryStringParams[i].split("=");
		if (paramValue[0] == paramName) 
			{
			returnValue = paramValue[1];
			}
		}
	return returnValue;
}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
var defaultDateSeparator = "/"; 
var defaultDateFormat = "mdy" 
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;
var closeCalendar = true;

function actionCloseCalendar()
{
if( closeCalendar != false && document.getElementById(datePickerDivID))
{
var pickerDiv = document.getElementById(datePickerDivID)
pickerDiv.style.visibility = "hidden";
pickerDiv.style.display = "none";
}
closeCalendar = true;
}

function displayDatePicker(dayFieldList, monthFieldList, displayBelowThisObject, dtFormat, dtSep, intOffsetY)
{
if (dtSep)
dateSeparator = dtSep;
else
dateSeparator = defaultDateSeparator;
if (dtFormat)
dateFormat = dtFormat;
else
dateFormat = defaultDateFormat;
var x = displayBelowThisObject.offsetLeft;
var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
var parent = displayBelowThisObject;
while (parent.offsetParent) {
parent = parent.offsetParent;
x += parent.offsetLeft;
y += parent.offsetTop;
}
if (intOffsetY != null) {
    y = y - intOffsetY
    x = x + 20
}
drawDatePicker(dayFieldList,monthFieldList, x, y);
}

function drawDatePicker(dayFieldList, monthFieldList, x, y)
{
var dt = getFieldDate(dayFieldList, monthFieldList );
if (!document.getElementById(datePickerDivID)) {
var newNode = document.createElement("div");
newNode.setAttribute("id", datePickerDivID);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;display: none;");
newNode.setAttribute("onClick", "closeCalendar=false;");
document.body.appendChild(newNode);
}
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.position = "absolute";
pickerDiv.style.left = x + "px";
pickerDiv.style.top = y + "px";
pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
pickerDiv.style.zIndex = 10000;
refreshDatePicker(dayFieldList, monthFieldList, dt.getFullYear(), dt.getMonth(), dt.getDate());
}

function refreshDatePicker(dayFieldList, monthFieldList, year, month, day)
{
var thisDay = new Date();
var todayDate = new Date()
var nextYear = new Date();
nextYear.dateAdd('m', 11);

if ((month >= 0) && (year > 0)) {
thisDay = new Date(year, month, 1);
} else {
day = thisDay.getDate();
thisDay.setDate(1);
}
var crlf = "\r\n";
var TABLE = "<table cols=7 class='dpTable'>" + crlf;
var xTABLE = "</table>" + crlf;
var TR = "<tr class='dpTR'>";
var TR_title = "<tr class='dpTitleTR'>";
var TR_days = "<tr class='dpDayTR'>";
var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
var xTR = "</tr>" + crlf;
var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";// leave this tag open, because we'll be adding an onClick event
var TD_title = "<td colspan=5 class='dpTitleTD'>";
var TD_buttons = "<td class='dpButtonTD'>";
var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
var TD_days = "<td class='dpDayTD'>";
var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";// leave this tag open, because we'll be adding an onClick event
var xTD = "</td>" + crlf;
var DIV_title = "<div class='dpTitleText'>";
var DIV_selected = "<div class='dpDayHighlight'>";
var xDIV = "</div>";
var html = TABLE;
html += TR_title;
if(thisDay > todayDate.dateAdd('d', 1))
{html += TD_buttons + getButtonCode(dayFieldList,monthFieldList,thisDay, -1, "&lt;") + xTD;}
else
{ html += TD_buttons + xTD; }

html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
if(thisDay <= nextYear)
{html += TD_buttons + getButtonCode(dayFieldList,monthFieldList, thisDay, 1, "&gt;") + xTD; }
html += xTR;
html += TR_days;
for(i = 0; i < dayArrayShort.length; i++)
html += TD_days + dayArrayShort[i] + xTD;
html += xTR;
html += TR;
for (i = 0; i < thisDay.getDay(); i++)
html += TD + "&nbsp;" + xTD;
do {
dayNum = thisDay.getDate();
TD_onclick = " onclick=\"updateDateField('" + dayFieldList + "','" + monthFieldList + "', " + thisDay.getDate() + ", " + thisDay.getMonth() + ", " + thisDay.getFullYear() + ");\">";
if (dayNum == day)
html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
else
html += TD + TD_onclick + dayNum + xTD;
if (thisDay.getDay() == 6)
html += xTR + TR;
thisDay.setDate(thisDay.getDate() + 1);
} while (thisDay.getDate() > 1)
if (thisDay.getDay() > 0) {
for (i = 6; i > thisDay.getDay(); i--)
html += TD + "&nbsp;" + xTD;
}
html += xTR;
 html += TR_todaybutton + TD_todaybutton;
html += xTD + xTR;
html += xTABLE;
 document.getElementById(datePickerDivID).innerHTML = html;
}


function getButtonCode(dayFieldList,monthFieldList, dateVal, adjust, label)
{
var newMonth = (dateVal.getMonth () + adjust) % 12;
var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
if (newMonth < 0) {
newMonth += 12;
newYear += -1;
}


return "<button class='dpButton' onClick='refreshDatePicker(\"" + dayFieldList+ "\",\"" + monthFieldList + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}


function getDateString(dateVal)
{
var dayString = "00" + dateVal.getDate();
var monthString = "00" + (dateVal.getMonth()+1);
dayString = dayString.substring(dayString.length - 2);
monthString = monthString.substring(monthString.length - 2);
switch (dateFormat) {
case "dmy" :
return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
case "ymd" :
return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
case "mdy" :
default :
return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
}
}


function getFieldDate(day, month)
{
var dateVal;
var dArray;
var d, m, y;
var dayE = document.getElementById(day.toString().split(',')[0])
var monthE = document.getElementById(month.toString().split(',')[0])

try {
d = parseInt(dayE.value, 10);
m = parseInt(monthE.value.substring(4,6)-1, 10);
y = parseInt(monthE.value.substring(0,4), 10);
dateVal = new Date(y, m, d);
} catch(e) 
{
dateVal = new Date();
}
return dateVal;
}


function splitDateString(dateString)
{
var dArray;
if (dateString.indexOf("/") >= 0)
dArray = dateString.split("/");
else if (dateString.indexOf(".") >= 0)
dArray = dateString.split(".");
else if (dateString.indexOf("-") >= 0)
dArray = dateString.split("-");
else if (dateString.indexOf("\\") >= 0)
dArray = dateString.split("\\");
else
dArray = false;
return dArray;
}


function datePickerClosed(targetDayFieldList,targetMonthFieldList)
{
var dateObj = getFieldDate(dateField.value);
var today = new Date();
today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
if (dateField.name == "StartDate") {
if (dateObj < today) {
alert("Please enter a date that is today or later");
dateField.value = "";
document.getElementById(datePickerDivID).style.visibility = "visible";
} else {
dateObj.setTime(dateObj.getTime() + (7 * 24 * 60 * 60 * 1000));
var endDateField = document.getElementsByName ("EndDate").item(0);
endDateField.value = getDateString(dateObj);
}
}
}

function updateDateField( targetDayFieldList, targetMonthFieldList, day, month, year )
{
	if( day > 0 ) {
		var arrDay		= targetDayFieldList.toString().split( ',' );
		var arrMonth	= targetMonthFieldList.toString().split( ',' );
		var monthString = "00" + ( month + 1 );
		
		for( var i = 0; i <= arrDay.length - 1; i++ ) {
			CalendarDateSelectorSwitch( document.getElementById( arrMonth[ i ] ), document.getElementById( arrDay[ i ] ), day, month, year );
		}
		
		for( var i = 0; i <= arrMonth.length - 1; i++ ) {
			var monthString = "00" + ( month + 1 );
			var targetMonthField = document.getElementById( arrMonth[ i ] );
			monthString = year + monthString.substring( monthString.length - 2 );
			for( var j = 0; j <= targetMonthField.length - 1; j++ ) {
				if( targetMonthField.options[ j ].value == monthString )
					targetMonthField.selectedIndex = j;
			}
		}
	}
	
	var pickerDiv = document.getElementById( datePickerDivID );
	pickerDiv.style.visibility	= "hidden";
	pickerDiv.style.display		= "none";
}


function adjustiFrame(pickerDiv, iFrameDiv)
{
var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
if (is_opera)
return;
try {
if (!document.getElementById(iFrameDivID)) {
var newNode = document.createElement("iFrame");
newNode.setAttribute("id", iFrameDivID);
newNode.setAttribute("src", "javascript:false;");
newNode.setAttribute("scrolling", "no");
newNode.setAttribute ("frameborder", "0");
document.body.appendChild(newNode);
}

if (!pickerDiv)
pickerDiv = document.getElementById(datePickerDivID);
if (!iFrameDiv)
iFrameDiv = document.getElementById(iFrameDivID);

try {
iFrameDiv.style.position = "absolute";
iFrameDiv.style.width = pickerDiv.offsetWidth;
iFrameDiv.style.height = pickerDiv.offsetHeight ;
iFrameDiv.style.top = pickerDiv.style.top;
iFrameDiv.style.left = pickerDiv.style.left;
iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
iFrameDiv.style.visibility = pickerDiv.style.visibility ;
iFrameDiv.style.display = pickerDiv.style.display;
} catch(e) {
}
} catch (ee) {
}
}


function dateAddExtention(p_Interval, p_Number){
 var thing = new String();
 p_Interval = p_Interval.toLowerCase();
 if(isNaN(p_Number)){
throw "The second parameter must be a number. \n You passed: " + p_Number;
return false;
 }
 p_Number = new Number(p_Number);
 switch(p_Interval.toLowerCase()){
case "yyyy": {// year
 this.setFullYear(this.getFullYear() + p_Number);
 break;
}
case "q": {// quarter
 this.setMonth(this.getMonth() + (p_Number*3));
 break;
}
case "m": {// month
 this.setMonth(this.getMonth() + p_Number);
 break;
}
case "y":// day of year
case "d":// day
case "w": {// weekday
 this.setDate(this.getDate() + p_Number);
 break;
}
case "ww": { // week of year
 this.setDate(this.getDate() + (p_Number*7));
 break;
}
case "h": {// hour
 this.setHours(this.getHours() + p_Number);
 break;
}
case "n": {// minute
 this.setMinutes(this.getMinutes() + p_Number);
 break;
}
case "s": {// second
 this.setSeconds(this.getSeconds() + p_Number);
 break;
}
case "ms": {// second
 this.setMilliseconds(this.getMilliseconds() + p_Number);
 break;
}
default: {
 throw "The first parameter must be a string from this list: \n" +
 "yyyy, q, m, y, d, w, ww, h, n, s, or ms.You passed: " + p_Interval;
 return false;
}
 }
 return this;
}
Date.prototype.dateAdd = dateAddExtention; 






function DateSelectorSwitchP(monthYearList, dayList, isLeave) {
    var strSelectedValue = monthYearList[monthYearList.selectedIndex].value,
     strYear = strSelectedValue.substring(0, 4),
     strMonth = strSelectedValue.substring(4),
     dtSelectedDate = new Date(strYear, strMonth - 1, 1),
     dtIncrementedDate = new Date(strYear, strMonth - 1, 1),
     dtCurrentDate = new Date(),
     validDate = false,
     dayNumber = "01",
     dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
     arrDays = ["true", "true", "true", "true", "true", "true", "true"],
     intTrans = 1,
     dtFrom = new Date(),
     dtTo = new Date();

    if (dtCurrentDate.setDate(dtCurrentDate.getDate() + 365) < dtTo) {
        dtTo.setDate(dtTo.getDate() + 365);
    }

    if (isLeave === true) {
        arrDays = PackageObject.lDays.split(",");
        intTrans = parseInt(PackageObject.lTrans, 10);
        dtFrom = PackageObject.lFrom;
        dtTo = PackageObject.lTo;
    }
    else if (isLeave === false) {
        arrDays = PackageObject.rDays.split(",");
        intTrans = parseInt(PackageObject.rTrans, 10);
        dtFrom = PackageObject.rFrom;
        dtTo = PackageObject.rTo;
    }


    dayList.options.length = 0

    while (dtSelectedDate.getMonth() == dtIncrementedDate.getMonth()) {
        if (dtCurrentDate.getMonth() == dtSelectedDate.getMonth()) {
            if (dtCurrentDate.getDate() < dtIncrementedDate.getDate()) {
                validDate = true;
            }
        }
        else {
            validDate = true;
        }

        if (validDate) {
            if (arrDays[dtIncrementedDate.getDay()] == 'true') {

                dayNumber = (dtIncrementedDate.getDate().toString().length == 1) ? "0" + dtIncrementedDate.getDate().toString() : dtIncrementedDate.getDate().toString();
                dayList.options[dayList.options.length] = new Option(dayNames[dtIncrementedDate.getDay()] + " " + dayNumber, dayNumber, false, false);
            }
        }
        dtIncrementedDate.setDate(dtIncrementedDate.getDate() + 1);
    }
}


function DateSelectorSwitch(monthYearList, dayList) {
    var strSelectedValue = monthYearList[monthYearList.selectedIndex].value;
    var strYear = strSelectedValue.substring(0, 4);
    var strMonth = strSelectedValue.substring(4);
    var dtSelectedDate = new Date(strYear, strMonth - 1, 1);
    var dtIncrementedDate = new Date(strYear, strMonth - 1, 1);
    var dtCurrentDate = new Date();

    var validDate = false;
    var dayNumber = "01";
    var dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

    for (var i = dayList.options.length - 1; i >= 0; i--) {
        dayList.removeChild(dayList.options[i]);
    }

    while (dtSelectedDate.getMonth() == dtIncrementedDate.getMonth()) {
        if (dtCurrentDate.getMonth() === dtSelectedDate.getMonth()) {
            if (dtCurrentDate.getDate() < dtIncrementedDate.getDate()) {
                validDate = true;
            }
        }
        else {
            validDate = true;
        }

        if (validDate) {
            dayNumber = (dtIncrementedDate.getDate().toString().length == 1) ? "0" + dtIncrementedDate.getDate().toString() : dtIncrementedDate.getDate().toString();
            dayList.options[dayList.options.length] = new Option(dayNames[dtIncrementedDate.getDay()] + " " + dayNumber, dayNumber, false, false);
        }

        dtIncrementedDate.setDate(dtIncrementedDate.getDate() + 1);
    }
}

function CalendarDateSelectorSwitch(monthYearList, dayList, day, month, year) {
    var strYear = year;
    var strMonth = month;
    var dtSelectedDate = new Date(strYear, strMonth, day);
    var dtIncrementedDate = new Date(strYear, strMonth, 1);
    var dtCurrentDate = new Date();

    var validDate = false;
    var dayNumber = "01";
    var dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

    for (var i = dayList.options.length - 1; i >= 0; i--) {
        dayList.removeChild(dayList.options[i]);
    }

    while (dtSelectedDate.getMonth() == dtIncrementedDate.getMonth()) {
        if (dtCurrentDate.getMonth() == dtSelectedDate.getMonth()) {
            if (dtCurrentDate.getDate() < dtIncrementedDate.getDate()) {
                validDate = true;
            }
        }
        else {
            validDate = true;
        }

        if (validDate) {
            dayNumber = (dtIncrementedDate.getDate().toString().length == 1) ? "0" + dtIncrementedDate.getDate().toString() : dtIncrementedDate.getDate().toString();
            dayList.options[dayList.options.length] = new Option(dayNames[dtIncrementedDate.getDay()] + " " + dayNumber, dayNumber, false, (dtIncrementedDate.getDate() == day));
        }

        dtIncrementedDate.setDate(dtIncrementedDate.getDate() + 1);
    }

    //SetDayHiddenInput(null, null, dayList, document.getElementById(dayList.getAttribute('hiddeninputclientid')));
} 

function SetDayHiddenInput(dayOrigin, hiddenInputOrigin, dayTarget, hiddenInputTarget) {
    if (dayOrigin != null && hiddenInputOrigin != null) {
        hiddenInputOrigin.value = dayOrigin.options[dayOrigin.selectedIndex].value;
    }
    if (dayTarget != null && hiddenInputTarget != null) {
        hiddenInputTarget.value = dayTarget.options[dayTarget.selectedIndex].value;
    }
}