/******************************DropdownDatePicker Script Start**********************************/

function DropdownDatePicker(month, day, year, hasLeadingZero, time, mins){
	var me = this;
	this.month = month;
	this.day = day;
	this.year = year;
	if (hasLeadingZero==null || typeof hasLeadingZero=="undefined") hasLeadingZero=false;
	this.hasLeadingZero = hasLeadingZero;
	this.setWeekend = false;
	
	this.populateDate = function(){
		var dSelYear = me.year.options[me.year.selectedIndex].value;
		var dSelMonth = me.month.options[me.month.selectedIndex].value;
		var timeA = new Date(dSelYear,dSelMonth,1); //get date of first day of next month
		var timeDifference = timeA - 86400000; //subtract 1 day
		var timeB = new Date(timeDifference);
		var daysInMonth = timeB.getDate();
		prevDaysInMonth = me.day.options.length;
		if (daysInMonth < prevDaysInMonth){	//current month's days < previous month's
			if (me.day.selectedIndex>=daysInMonth-1){
				me.day.selectedIndex = daysInMonth-1;	//select last day of the current month if previous month's selected day is > current month's
			}
			me.day.options.length = daysInMonth;
   		}
   		else if (daysInMonth > prevDaysInMonth){	//current month's days > previous month's
			var sDay;
			for (var i = prevDaysInMonth; i < (daysInMonth); i++) {
				sDay = ((i+1)<10 && me.hasLeadingZero)?"0"+(i+1):i+1;
				me.day.options[i] = new Option(sDay,sDay);
			}		
	    	}
		if (me.setWeekend){
			me.setWeekendStyleOn(me.callbackOn);
		}
	}

	this.setDisplayMonths = function(mode, isUpperCase, arrMonth){
		switch (mode){
			case 1: //numeric months
				for (var i=0;i<12;i++){
					me.month.options[i] = new Option(((i+1)<10 && me.hasLeadingZero)?"0"+(i+1):i+1, i+1);
				}
				break;
			case 2: //full english month names
				var arrMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
				for (var i=0;i<arrMonth.length;i++){
					me.month.options[i] = new Option((isUpperCase)?arrMonth[i].toUpperCase():arrMonth[i],i+1);
				}
				break;
			case 3: //abbreviated english month names (first 3 letters)
				var arrMonth = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
				for (var i=0;i<arrMonth.length;i++){
					me.month.options[i] = new Option((isUpperCase)?arrMonth[i].toUpperCase():arrMonth[i],i+1);
				}
				break;
			case 4: //customized month names
				if (arrMonth==null || typeof arrMonth=="undefined"){ //default is full english month names if arrMonth is invalid
					var arrMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December");				
				}
				for (var i=0;i<arrMonth.length;i++){
					me.month.options[i] = new Option((isUpperCase)?arrMonth[i].toUpperCase():arrMonth[i],i+1);
				}
				break;
			default: //numeric months
				for (var i=0;i<12;i++){
					me.month.options[i] = new Option(((i+1)<10 && me.hasLeadingZero)?"0"+(i+1):i+1, i+1);
				}
		}		
	}
	
	// This is default one.
	this.setDisplayYears = function(fromYear, toYear){
		me.year.length=0;
		for (var i=fromYear;i<=toYear;i++){
			me.year.options[i-fromYear] = new Option(i,i);
		}
	}

	//set default date
	this.setDefaultDate = function(defaultDate){
		if (defaultDate==null || typeof defaultDate=="undefined" || isNaN(defaultDate)){
			defaultDate = new Date();
		}
		me.month.options[defaultDate.getMonth()].selected = true;		//select default month
		me.day.options[defaultDate.getDate()-1].selected = true;		//select default day
		//select default year
		for (var i=0;i<me.year.options.length;i++){
			if (me.year.options[i].value==defaultDate.getFullYear()){
				me.year.selectedIndex = i;
				break;
			}
		}
		me.month.onchange();
	}

	//set day as title (title attribute in select and option tags is currently supported only by Gecko)
	//no problem with other browsers as this will be ignored by them
	this.displayDay = function(arrDay){
		if (arrDay==null || typeof arrDay=="undefined"){
			var arrDay = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		}
		me.arrDay = arrDay;

		//set month select title
		me.month.onmouseover = function(){
			var selectedDate = new Date(me.year.options[me.year.selectedIndex].value, this.selectedIndex, me.day.options[me.day.selectedIndex].value);
			this.title = me.arrDay[selectedDate.getDay()];
		}
		//set month options title
		for (var i=0;i<me.month.options.length;i++){
			me.month.options[i].onmouseover = function(){
				var selectedDate = new Date(me.year.options[me.year.selectedIndex].value, this.value-1, me.day.options[me.day.selectedIndex].value);
				this.title = me.arrDay[selectedDate.getDay()];
			}
		}

		//set day select title
		me.day.onmouseover = function(){
			var selectedDate = new Date(me.year.options[me.year.selectedIndex].value, me.month.selectedIndex, this.options[this.selectedIndex].value);
			this.title = me.arrDay[selectedDate.getDay()];
		}
		//set day options title
		for (var i=0;i<me.day.options.length;i++){
			me.day.options[i].onmouseover = function(){
				var selectedDate = new Date(me.year.options[me.year.selectedIndex].value, me.month.selectedIndex, this.value);
				this.title = me.arrDay[selectedDate.getDay()];
			}
		}

		//set year select title
		me.year.onmouseover = function(){
			var selectedDate = new Date(me.year.options[me.year.selectedIndex].value, this.selectedIndex, me.day.options[me.day.selectedIndex].value);
			this.title = me.arrDay[selectedDate.getDay()];
		}
		//set year options title
		for (var i=0;i<me.year.options.length;i++){
			me.year.options[i].onmouseover = function(){
				var selectedDate = new Date(this.value, me.month.selectedIndex, me.day.options[me.day.selectedIndex].value);
				this.title = me.arrDay[selectedDate.getDay()];
			}

		}
	}

	this.setWeekendStyleOn = function(callbackFunc){
		me.callbackOn = callbackFunc;
		me.setWeekend = true;
		for (var i=0;i<me.day.options.length;i++){
			var date = new Date(me.year.options[me.year.selectedIndex].value, me.month.selectedIndex, i+1);
			var day = date.getDay();
			if (day==0 || day==6){
				me.callbackOn(me.day.options[i]);
			}
			else{
				me.callbackOff(me.day.options[i]);
			}

		}
	}

	this.setWeekendStyleOff = function(callbackFunc){
		me.callbackOff = callbackFunc;	
	}
		
	
	this.compareDate = function(otherDropdownDatePicker){
		if (otherDropdownDatePicker instanceof DropdownDatePicker){
			var thisDate = new Date(me.year.options[me.year.selectedIndex].value, me.month.options[me.month.selectedIndex].value, me.day.options[me.day.selectedIndex].value);
			var otherDate = new Date(otherDropdownDatePicker.year.options[otherDropdownDatePicker.year.selectedIndex].value, otherDropdownDatePicker.month.options[otherDropdownDatePicker.month.selectedIndex].value, otherDropdownDatePicker.day.options[otherDropdownDatePicker.day.selectedIndex].value);
			return Date.parse(thisDate) - Date.parse(otherDate);
		}
		return 0; //assume the same when otherDropdownDatePicker is not valid
	}	
	
	//set onchange handler
	var monthChange = this.month.onchange;
	if (monthChange){
		this.month.onchange = function(){
			me.populateDate();
			monthChange();
		}
	}
	else{
		this.month.onchange = this.populateDate;
	};this.month.onchange();
	var yearChange = this.year.onchange;
	if (yearChange){
		this.year.onchange = function(){
			me.populateDate();
			yearChange();
		}
	}
	else{
		this.year.onchange = this.populateDate;	
	}
	
}

/******************************DropdownDatePicker Script End**********************************/


/*******************************Sample Usage of DatePicker Start****************************************/

var datePicker1, datePicker2, datePicker3;

function initDatePicker(){
	var f = document.forms['f1'];
	
	var today = new Date();
	datePicker1 = new DropdownDatePicker(f.month1, f.day1, f.year1);
	datePicker1.setDisplayMonths(4);
	datePicker1.setDisplayYears(today.getFullYear(), today.getFullYear()+10);
	datePicker1.setDefaultDate(today); //set default date to today's date
	datePicker1.displayDay();
	datePicker1.setWeekendStyleOff(resetStyleWeekend);//must be set first before setWeekendStyleOn()
	datePicker1.setWeekendStyleOn(setStyleWeekend);
	
	var today1 = new Date();
	datePicker2 = new DropdownDatePicker(f.month2, f.day2, f.year2);
	datePicker2.setDisplayMonths(4);
	datePicker2.setDisplayYears(today1.getFullYear(), today1.getFullYear()+10);
	datePicker2.setDefaultDate(today1); //set default date to today's date
	datePicker2.displayDay();
	datePicker2.setWeekendStyleOff(resetStyleWeekend);//must be set first before setWeekendStyleOn()
	datePicker2.setWeekendStyleOn(setStyleWeekend);
	
	
	var arrMonthNameTagalog = new Array("Enero","Pebrero","Marso","Abril","Mayo","Hunyo","Hulyo","Agosto","Setyembre","Oktubre","Nobyembre","Disyembre");
	datePicker3 = new DropdownDatePicker(f.month3, f.day3, f.year3);
	datePicker3.setDisplayMonths(4,false,arrMonthNameTagalog);
	datePicker3.setDisplayYears(today.getFullYear(), today.getFullYear()+1);
	datePicker3.setDefaultDate(today); //set default date to today's date
	datePicker3.displayDay(new Array("Linggo","Lunes","Martes","Miyerkules","Huwebes","Biyernes","Sabado"));

}

//callback functions for setting option style for weekend
//must have one argument that refers to the option object

function setStyleWeekend(objOpt){
	if (objOpt && objOpt.style){
		//this is just a sample, it is customizable, you can put anything you want to do with the given option object
		objOpt.className = "weekend";
	}
}

function resetStyleWeekend(objOpt){
	if (objOpt && objOpt.style){
		//this is just a sample, it is customizable, you can put anything you want to do with the given option object
		objOpt.className = "weekday";
	}
}

function dateCompare(dp1, dp2){
	
	var f = document.forms['f1'];
	var year1 = f.year1.options[f.year1.selectedIndex].value;
	var month1 = f.month1.options[f.month1.selectedIndex].value;
	var day1 = f.day1.options[f.day1.selectedIndex].value;
		
	var selectedDate = new Date(year1,month1-1,day1 );
	var todayDate = new Date();
	todayDate.setHours(0,0,0,0)
	
	if (selectedDate < (todayDate )){ 
	
		alert("Pickup date is earlier than Today Date");
		return false;
	}
	
	diff = dp1.compareDate(dp2); //dp1 minus dp2
	
	if (diff > 0){ //dp1 is bigger than dp2
		alert("Return is earlier than Departure");
		return false;
	}
	
	return true;
//	if (diff < 0){ //dp2 is bigger than dp1
//		alert("Departure is earlier than Return");
//	}
//	else { //same date
//		alert("Date 1 is equal to Date 2");
//	}
}
/*******************************Sample Usage of DatePicker End****************************************/
function SetChange(x) {
       var box1 = document.f1.departingTerminal;
       var box2 = document.f1.returningTerminal;
       if(x==1) {
               var getValue = box1.options[box1.selectedIndex].value
               box2.selectedIndex = box1.selectedIndex;
               box1.selectedIndex = box2.selectedIndex;
       }
       else {
               var getValue = box2.options[box2.selectedIndex].value
               box1.selectedIndex = box2.selectedIndex;
               box2.selectedIndex = box1.selectedIndex;
       }

}

function validate()
{
	var is_checked = window.document.f1.termsConditions.checked;
	if (is_checked != true)
		{
  		alert("You must accept the terms and conditions in order to proceed");
		return false;
		} 
	else 
		{
  		return true
		}
}

function cardType() {
	formObj = document.f1;
	cardChoice = formObj.card_type.value;
	cancChoice = formObj.cancWaiver.value;
	price = formObj.pR.value;
	
	if (cardChoice == "Visa")
		{
		priceVal = (1 * (price))+(1 * (0.899999999999999));
		cardCharge = ((1 * (priceVal)) - (1 * (price)));
		}
	else if (cardChoice == "Master Card")
		{
		priceVal = (1 * (price))+(1 * (0.899999999999999));
		cardCharge = ((1 * (priceVal)) - (1 * (price)));
		}
	else
		{
		priceVal = (1 * price);
		cardCharge = 0.00;
		}
		
	if (cancChoice == "yes")
		{
		priceVal = (1 * (priceVal))+(1 * (0.75));
		waiverCharge = (1 * (0.75));
		}
	else
		{
		priceVal = (1 * priceVal);
		waiverCharge = 0.00;
		}
		
		formObj.cardFee.value = isNaN(cardCharge) ? 'N/A' : displayPounds(cardCharge);
		formObj.chargeAmount.value = isNaN(priceVal) ? 'N/A' : displayPounds(priceVal);
		formObj.amount.value = isNaN(priceVal) ? 'N/A' : displayNoPounds(priceVal);
		formObj.ccCharge.value = isNaN(cardCharge) ? 'N/A' : displayNoPounds(cardCharge);
		formObj.waiverCharge.value = isNaN(waiverCharge) ? 'N/A' : displayNoPounds(waiverCharge);
}

function sendPolicy() {
	formObj = document.checkDetailsForm;
	price = formObj.p.value;
	
	if (formObj.policySend.checked)
		{
		priceVal = (1 * (price))+(0.75);
		postage = 0.75
		}
	else
		{
		priceVal = (1 * price);
		postage = 0.00
		}
		formObj.priceHolder.value = isNaN(priceVal) ? 'N/A' : displayPounds(priceVal);
		formObj.p2.value = isNaN(priceVal) ? 'N/A' : priceVal;
		formObj.postage.value = isNaN(postage) ? 'N/A' : displayPounds(postage);
}

