﻿// Start Date Select
                    
/******************************
* Editable section -- Start --
******************************/
// DATE SETTINGS - EDIT AS REQUIRED
var daysinAdvance = 1; // Sets default days in advance from current date
var numberNights = 2;  // Sets default number of nights
var numberYears = 4; // Sets default number of years to display in year select list
var numberNightsMin = 1; // Sets minimum number of nights accepted
var imgDir = "js/"; // Directory for the dynamic calendar script and images. Trailing slash must be included.

// FLAG SETTINGS ON/OFF - SET TO 1 FOR ON & 0 FOR OFF
var wdDisplay = 1; //weekday display
var numberNightsDisplay = 1; //number of nights display
var departDateDisplay = 1; //departure dates display
var departDateUpdate = 1; //auto update departure date

// WEEK DAY AND NUMBER NIGHTS TEXT - EDIT TEXT AS REQUIRED
var wdArray = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var nightTxt = " Night";
var nightsTxt = " Nights";

// ERROR MESSAGE TEXT - EDIT TEXT AS REQUIRED
var invalidDateTxt = "Invalid Arrival Date. Please check number of days selected";
var invalidDatePriorTxt = "Arrival Date selected is prior Today's date. Please change...";
var invalidDepartDateTxt = "Invalid Departure Date. Please check number of days selected";
var invalidDepartTxt = "Departure Date is prior to Arrival Date selected. Please change...";
var invalidNightsTxt = "Sorry, reservations under " + numberNightsMin + " nights are not accepted.";
/******************************
* Editable section -- End --
******************************/

/**************************************************
* DO NOT CHANGE JAVASCRIPT SETTINGS BELOW THIS LINE
**************************************************/
//Days in each month Array
var aNumDays = new Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

//Cancel out if no departure date display
if (departDateDisplay == 0) {
    numberNightsDisplay = 0;
    departDateUpdate = 0;
}

//Sets dates selected from dyncalendar
function calendarCallback(day, month, year, objName, formName) {
    if (objName == "calendarArrive") {
        document.getElementById("fd").selectedIndex = day - 1;
        document.getElementById("fm").selectedIndex = month - 1;
        document.getElementById("fy").selectedIndex = year - document.getElementById("fy").options[0].text;
        updateDates(document.forms[formName]);
        if (wdDisplay == 1) setWkd(formName, 1);
    } else {  //objName == calendarDepart
        document.getElementById("td").selectedIndex = day - 1;
        document.getElementById("tm").selectedIndex = month - 1;
        document.getElementById("ty").selectedIndex = year - document.getElementById("ty").options[0].text;
        if (wdDisplay == 1) setWkd(formName, 1);
    }
}

//Update form with selected dates
function updateDates(form, loadDates) {
    //check Leap Year
    if (document.getElementById("fm").selectedIndex == 1) {
        var leapYear = new Date(document.getElementById("fy").options[document.getElementById("fy").selectedIndex].text, document.getElementById("fm").selectedIndex + 1, 1);
        var leapYear = new Date(leapYear - (24 * 60 * 60 * 1000));
        var numDaysInMonth = leapYear.getDate();
    } else {
        var numDaysInMonth = aNumDays[document.getElementById("fm").selectedIndex];
    }
    // Update departure date only when loading the form and/or departDateUpdate is set to 1
    if (loadDates == 1 || departDateUpdate == 1) {
        var selectDate = new Date(document.getElementById("fy").options[document.getElementById("fy").selectedIndex].text, document.getElementById("fm").selectedIndex, document.getElementById("fd").selectedIndex);
        var setDate = new Date(selectDate.getTime() + ((numberNights + 1) * 86400000));
        var setDay = setDate.getDate();
        var setMonth = setDate.getMonth();
        var setYear = setDate.getFullYear() - document.getElementById("fy").options[0].text;
        var checkinDate = new Date(document.getElementById("fy").options[document.getElementById("fy").selectedIndex].text, document.getElementById("fm").selectedIndex, document.getElementById("fd").selectedIndex + 1);
        var checkoutDate = new Date(document.getElementById("ty").options[document.getElementById("ty").selectedIndex].text, document.getElementById("tm").selectedIndex, document.getElementById("td").selectedIndex + 1);
        if (checkinDate > checkoutDate) {
            if (setYear == document.getElementById("ty").length) {
                document.getElementById("td").options[30].selected = 1;
                document.getElementById("tm").options[11].selected = 1;
                document.getElementById("ty").options[document.getElementById("ty").length - 1].selected = 1;
            } else {
                document.getElementById("td").options[setDay - 1].selected = 1;
                document.getElementById("tm").options[setMonth].selected = 1;
                document.getElementById("ty").options[setYear].selected = 1;
            }
        }
    }
    if (document.getElementById("fd").selectedIndex + 1 > numDaysInMonth) {
        alert(invalidDateTxt);
        document.getElementById("fd").selectedIndex = numDaysInMonth - 1;
    }
}

function setWkd(form, calendar) {
    // change form object if returned from calendar
    if (calendar) form = document.forms[form];
    for (var i = 0; i < document.getElementById("fy").length; i++) {
        if (document.getElementById("fy").options[i].selected) var fyear = document.getElementById("fy").options[i].text;
        if (departDateDisplay == 1 && document.getElementById("ty").options[i].selected) var tyear = document.getElementById("ty").options[i].text;
    }
    var checkinDate = new Date(fyear, document.getElementById("fm").selectedIndex, document.getElementById("fd").selectedIndex + 1);
    if (departDateDisplay == 1) var checkoutDate = new Date(tyear, document.getElementById("tm").selectedIndex, document.getElementById("td").selectedIndex + 1);
    var numNights = Math.round((checkoutDate - checkinDate) / 86400000);
    if (numNights == 1) numNights += nightTxt;
    else numNights += nightsTxt;
    //Set Days of the week display
    if (wdDisplay == 1 && document.getElementById) {
        document.getElementById('inWd').firstChild.nodeValue = '(' + wdArray[checkinDate.getDay()] + ')';
        if (departDateDisplay == 1) document.getElementById('outWd').firstChild.nodeValue = '(' + wdArray[checkoutDate.getDay()] + ')';
    }
    //Set number of nights display
    if (numberNightsDisplay == 1 && document.getElementById) document.getElementById('frmNumberOfNights').firstChild.nodeValue = numNights;
}

//Load current dates on form load
function LoadDates(form) {
    var curDate = new Date();
    var setDate = new Date(curDate.getTime() + (daysinAdvance * 86400000));
    var setDay = setDate.getDate();
    var setMonth = setDate.getMonth();
    var setYear = setDate.getFullYear() - document.getElementById("fy").options[0].text;
    // Set Arrival Dates
    document.getElementById("fd").selectedIndex = setDay - 1;
    document.getElementById("fm").selectedIndex = setMonth;
    document.getElementById("fy").selectedIndex = setYear;
    // Set the Departure Dates
    updateDates(form, departDateDisplay);
    if (wdDisplay == 1 || numberNightsDisplay == 1) setWkd(form);
}

//Load current dates on form load
function checkDates(form) {
    var curDate = new Date();
    for (var i = 0; i < document.getElementById("fy").length; i++) {
        if (document.getElementById("fy").options[i].selected) var fyear = document.getElementById("fy").options[i].text;
        if (departDateDisplay == 1 && document.getElementById("ty").options[i].selected) var tyear = document.getElementById("ty").options[i].text;
    }
    var checkinDate = new Date(fyear, document.getElementById("fm").selectedIndex, document.getElementById("fd").selectedIndex + 2);
    if (departDateDisplay == 1) {
        if (document.getElementById("tm").selectedIndex == 1) {
            var leapYear = new Date(document.getElementById("ty").options[document.getElementById("ty").selectedIndex].text, document.getElementById("tm").selectedIndex + 1, 1);
            var leapYear = new Date(leapYear - (24 * 60 * 60 * 1000));
            var numDaysInMonth = leapYear.getDate();
        } else {
            var numDaysInMonth = aNumDays[document.getElementById("tm").selectedIndex];
        }
        if (document.getElementById("td").selectedIndex + 1 > numDaysInMonth) {
            alert(invalidDepartDateTxt);
            document.getElementById("td").selectedIndex = numDaysInMonth - 1;
            return false;
        }
        var checkoutDate = new Date(tyear, document.getElementById("tm").selectedIndex, document.getElementById("td").selectedIndex + 2);
        var numNights = Math.round((checkoutDate - checkinDate) / 86400000);
    } else {
        //var numNights = form.numnights.selectedIndex + 1;
    }
    if (checkinDate.getTime() < curDate.getTime()) {
        alert(invalidDatePriorTxt);
        return false;
    }
    if (numNights < 1) {
        alert(invalidDepartTxt);
        return false;
    }
    if (numNights < numberNightsMin) {
        alert(invalidNightsTxt);
        return false;
    }
}

//Generate years options for year select list
function year_option(form) {
    curDate = new Date();
    curYear = curDate.getFullYear();
    for (i = curYear; i <= curYear + (numberYears - 1); i++) {
        document.write('<option value="' + i + '">' + i + '</option>');
    }
}

// submit form

function bookNow(form) {
    checkDates(form);
    window.open("http://www.globekey.com/reserve.php?settings1=daysinAdvance=1;numberNights=2;numberYears=4;numberNightsMin=1;&settings2=wdDisplay=1;numberNightsDisplay=1;departDateDisplay=1;&sh=yes&lang=en&hid=YWG2559&fd=" + document.getElementById("fd").options[document.getElementById("fd").selectedIndex].text + "&fm=" + document.getElementById("fm").options[document.getElementById("fm").selectedIndex].text + "&fy=" + document.getElementById("fy").options[document.getElementById("fy").selectedIndex].text + "&td=" + document.getElementById("td").options[document.getElementById("td").selectedIndex].text + "&tm=" + document.getElementById("tm").options[document.getElementById("tm").selectedIndex].text + "&ty=" + document.getElementById("ty").options[document.getElementById("ty").selectedIndex].text);
}

// Open in a new window

function newWindow() {
    window.open();
}
