
function padout(number) {
	return (number < 10) ? '0' + number : number;
}

function y2k(number) {
	return (number < 1000) ? number + 1900 : number;
}

function days_between(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(date1_ms - date2_ms)

    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY)
}


function check_enq_dates() {
	pass = true;
	var use_dates = false;

    var startday = document.globe.arr_day.options[document.globe.arr_day.selectedIndex].value;
    var startmonth = document.globe.arr_month.options[document.globe.arr_month.selectedIndex].value;
    var startyear = document.globe.arr_year.options[document.globe.arr_year.selectedIndex].text;
    var endday = document.globe.dep_day.options[document.globe.dep_day.selectedIndex].value;
    var endmonth = document.globe.dep_month.options[document.globe.dep_month.selectedIndex].value;
    var endyear = document.globe.dep_year.options[document.globe.dep_year.selectedIndex].text;

	if (startday != "" || startmonth != "" || startyear != "" || endday != "" || endmonth != "" || endyear != "") {
		use_dates = true;
	}
	else {
		return true;
	}

    var unvalidstartdate = startday + '/' + startmonth + '/' + startyear;
    var unvalidenddate = endday + '/' + endmonth + '/' + endyear;

    var startdate = new Date(startyear-0,startmonth-1,startday-0);
    var enddate = new Date(endyear-0,endmonth-1,endday-0);

    var validstartdate = padout(startdate.getDate()) + '/' + padout(startdate.getMonth()+1) + '/' + y2k(startdate.getYear())
    var validenddate = padout(enddate.getDate()) + '/' + padout(enddate.getMonth()+1) + '/' + y2k(enddate.getYear())

    starttime = Date.UTC(y2k(startdate.getYear()),startdate.getMonth(),startdate.getDate(),0,0,0);
    endtime = Date.UTC(y2k(enddate.getYear()),enddate.getMonth(),enddate.getDate(),0,0,0);
    
    if ((parseInt(starttime) > parseInt(endtime)) && use_dates) {
        alert('Arrival Date cannot be later than Departure Date');
        return false;
    }

    currentdate = new Date();
    currenttime = Date.UTC(y2k(currentdate.getYear()),currentdate.getMonth(),currentdate.getDate(),0,0,0);

    if (starttime < currenttime && use_dates) {
        alert('Arrival Date cannot be not less than today!');
			//document.globe.specific_dates[0].focus();
        return false;
    }
    
    if (endtime < currenttime && use_dates) {
        alert('Departure Date is less than todays date');
        return false;
    }
    
    if (starttime == endtime) {
     alert('Arrival Date cannot be the same as the Departure Date!');
     return false;
    }        

    return true
 }

function doDayName(dayElem, monthElem, yearElem, nameElem) {
	var dayNames = new Array ("Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat");
	timeA = new Date(yearElem.options[yearElem.selectedIndex].text, monthElem.selectedIndex - 1, dayElem.selectedIndex);
	var dayWeek = timeA.getDay();

	if (yearElem.options[yearElem.selectedIndex].text == '' ||  monthElem.selectedIndex == 0 || dayElem.selectedIndex == 0) {
		nameElem.value = "";
		return;
	}
	nameElem.value = dayNames[dayWeek];
}

function populateDays(dayElem, monthElem, yearElem, nameElem) {
	timeA = new Date(yearElem.options[yearElem.selectedIndex].text, monthElem.selectedIndex, 1);
	timeDifference = timeA - 86400000;
	timeB = new Date(timeDifference);
	var daysInMonth = timeB.getDate();
	var curDaySel = dayElem.selectedIndex;
	for (var i = 0; i < dayElem.length; i++) {
		dayElem.options[0] = null;
	}
	dayElem.options[0] = new Option('');
	for (var i = 1; i <= daysInMonth; i++) {
		dayElem.options[i] = new Option(i);
		dayElem.options[i].value = i;
	}

	if (curDaySel > daysInMonth) {
		curDaySel = daysInMonth;
	}
	dayElem.options[curDaySel].selected = true;
}

function showDates(dayElem1,dayElem2,monthElem1,monthElem2,yearElem1,yearElem2,nameElem1,nameElem2,nightsElem,typeNow) {
	var date = new Date();
//alert("show: " + dayElem1.value + " month: " + monthElem1.value + " year: " + yearElem1.value);
	if (typeNow==1 || typeNow==3) {
		if (dayElem1.value == "") {
			dayElem1.value = date.getDate();
		}

		if (monthElem1.value == "") {
			monthElem1.value = date.getMonth() + 1;
		}

		if (yearElem1.value == "") {
			yearElem1.value = date.getFullYear();
		}
	}

	if (typeNow==2 || typeNow==4) {
		if (dayElem2.value == "") {
			dayElem2.value = date.getDate();
		}

		if (monthElem2.value == "") {
			monthElem2.value = date.getMonth() + 1;
		}

		if (yearElem2.value == "") {
			yearElem2.value = date.getFullYear();
		}
	}

	if (typeNow==1) {
		populateDays(dayElem1,monthElem1,yearElem1,nameElem1);
		doDayName(dayElem1,monthElem1,yearElem1,nameElem1);
	} 
	if (typeNow==2) {
		populateDays(dayElem2,monthElem2,yearElem2,nameElem2);
		doDayName(dayElem2,monthElem2,yearElem2,nameElem2);
	}
	if (typeNow==3) {
		doDayName(dayElem1,monthElem1,yearElem1,nameElem1);
	} 
	if (typeNow==4) {
		doDayName(dayElem2,monthElem2,yearElem2,nameElem2);
	}
	timeA = new Date(yearElem1.options[yearElem1.selectedIndex].text,monthElem1.selectedIndex-1,dayElem1.selectedIndex);
	timeB = new Date(yearElem2.options[yearElem2.selectedIndex].text,monthElem2.selectedIndex-1,dayElem2.selectedIndex);

	var days = days_between(timeB, timeA);
	if (days<0) {
		days=0;
	}
	nightsElem.value=days.toString();

	document.globe.ad.value = timeA.print("%d %m %Y 00:00:00");
	document.globe.dd.value = timeB.print("%d %m %Y 00:00:00");
}

function clearDates() {
	document.globe.arr_day.selectedIndex = 0;
    document.globe.arr_month.selectedIndex = 0;
    document.globe.arr_year.selectedIndex = 0;
    document.globe.dep_day.selectedIndex = 0;
    document.globe.dep_month.selectedIndex = 0;
    document.globe.dep_year.selectedIndex = 0;
    document.globe.num_nights.value = 0;
    document.globe.arr_day_name.value = '';
    document.globe.dep_day_name.value = '';
    document.globe.ad.value = '';
    document.globe.dd.value = '';

}
