﻿var hotelTabs = new Array ("Details", "Rates", "Photos", "Reviews", "Map");
var isPageLoad = true;
var fileName;
var ratesViewDisplay = false;
var monthsLong = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] ;
var weekdaysShort = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
var calTitle = "Choose a date:";
var myLabelYearPosition = 2; 
var myLabelMonthPosition = 1;
var myLabelYearSuffix = ""; 
var myLabelMonthSuffix = " "; 
var currentTabId = "Details";
//Yahoo Calendar
 function setupCal(checkin, checkout, checkinId, checkoutId, checkinCalId, checkoutCalId, numOfCal)
 {
    var theMindate = new Date();    
    var min_date = theMindate.getDate();  
    var min_month = theMindate.getMonth();
    min_month++;
    var min_year = theMindate.getFullYear();
    theMindate = min_month + "/" + min_date + "/" + min_year;    
    var theMaxdate = min_month + "/" + min_date + "/" + (min_year + 1);    
    //make yesterday selectable for checkin calendar(due to time zone differnce)
    var earlyMindate = new Date();
    earlyMindate.setDate(min_date);
    var early_month = earlyMindate.getMonth();
    early_month++;
    earlyMindate = early_month + "/" + earlyMindate.getDate() + "/" + earlyMindate.getFullYear();    
    if (checkin == null || checkout == null)
    {
        checkin = dateFormat(min_month) + "/" + dateFormat(min_date) + "/" + min_year;
        checkout = checkin;
    }
    //get calendar selected date
    var checkinSelection = document.getElementById(checkinId).value == 0? checkout : reFormatDate(document.getElementById(checkinId).value);
    var checkoutSelection = document.getElementById(checkoutId).value == 0? checkout : reFormatDate(document.getElementById(checkoutId).value);    
    
    //get calendar seleted month
    var checkinCalPage =  checkinSelection.substr(0,2) + checkinSelection.substr(5,5);
    var checkoutCalPage =  checkout.substr(0,2) + checkout.substr(5,5);
    
    // setup checkin calendar
    var checkinCal = new YAHOO1.widget.CalendarGroup("checkinCal",checkinCalId, 
                                                { pages:numOfCal, 
                                                  mindate:earlyMindate, 
                                                  maxdate:theMaxdate, 
                                                  navigator:true
                                                });                     
    checkinCal.cfg.setProperty("pagedate",checkinCalPage,false);  
    checkinCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false);    
    //add international features
    checkinCal.cfg.setProperty("MONTHS_LONG", monthsLong);                                             
    checkinCal.cfg.setProperty("WEEKDAYS_SHORT", weekdaysShort);         
    checkinCal.cfg.setProperty("MY_LABEL_YEAR_POSITION", myLabelYearPosition); 
    checkinCal.cfg.setProperty("MY_LABEL_MONTH_POSITION", myLabelMonthPosition);
    checkinCal.cfg.setProperty("MY_LABEL_YEAR_SUFFIX",  myLabelYearSuffix); 
    checkinCal.cfg.setProperty("MY_LABEL_MONTH_SUFFIX",  myLabelMonthSuffix); 
    checkinCal.render();       
    //set the input field as the calendar trigger        
    var checkinShow = document.getElementById(checkinId);
    YAHOO1.util.Event.addListener(checkinShow, "click", checkinCal.show, checkinCal, true); 
    YAHOO1.util.Event.addListener(checkinShow, "focus", checkinCal.show, checkinCal, true); 
    //handle calendar select event
    checkinCal.selectEvent.subscribe(checkinHandleSelect, checkinCal, true);
	checkinCal.hide();    	
    function checkinHandleSelect(type,args,obj) 
    {
        var dates = args[0];
        var date = dates[0];
        var year = date[0], month = dateFormat(date[1]), day = dateFormat(date[2]);
        var checkinDate = day + "-" + month + "-" + year;
        checkinSelection = month + "/" + day + "/" + year;
        document.getElementById(checkinId).value = checkinDate;        
        document.getElementById("ctl00_plhBody_checkinValue").value = checkinDate;
        document.getElementById("ctl00_plhBody_checkoutValue").value = document.getElementById(checkoutId).value;
        checkinCal.hide();
        setDates();
        //update checkout calendar start month according to checkin date
        checkinCalPage = date[1] + "/" + year;
        checkoutCal.cfg.setProperty("pagedate",checkinCalPage,false);    
        
        //update checkout calendar highlight dates
        if (document.getElementById(checkoutId).value != "")
        {
            if (document.getElementById(checkoutId).value != 0)
                checkoutSelection = reFormatDate(document.getElementById(checkoutId).value);
        }         
        checkinCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false); 
        checkoutCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false);         
	    checkinCal.render();
	    checkoutCal.render();
    }    
    // setup checkout calendar    
    var checkoutCal = new YAHOO1.widget.CalendarGroup("checkoutCal",checkoutCalId, 
                                                { pages:numOfCal, 
                                                  mindate:theMindate, 
                                                  maxdate:theMaxdate, 
                                                  navigator:true
                                                });
    checkoutCal.cfg.setProperty("pagedate",checkoutCalPage,false);     
    checkoutCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false);
    
    //add international features 
    checkoutCal.cfg.setProperty("MONTHS_LONG", monthsLong);                                             
    checkoutCal.cfg.setProperty("WEEKDAYS_SHORT", weekdaysShort);    
    checkoutCal.cfg.setProperty("MY_LABEL_YEAR_POSITION", myLabelYearPosition); 
    checkoutCal.cfg.setProperty("MY_LABEL_MONTH_POSITION", myLabelMonthPosition);
    checkoutCal.cfg.setProperty("MY_LABEL_YEAR_SUFFIX",  myLabelYearSuffix); 
    checkoutCal.cfg.setProperty("MY_LABEL_MONTH_SUFFIX",  myLabelMonthSuffix);                                         
    checkoutCal.render();    
    //set the input field as the calendar trigger
    var checkoutShow = document.getElementById(checkoutId);
    YAHOO1.util.Event.addListener(checkoutShow, "click", checkoutCal.show, checkoutCal, true); 
    YAHOO1.util.Event.addListener(checkoutShow, "focus", checkoutCal.show, checkoutCal, true); 
    //handle calendar select event
    checkoutCal.selectEvent.subscribe(checkoutHandleSelect, checkoutCal, true);
	checkoutCal.hide();		
    function checkoutHandleSelect(type,args,obj) {
        var dates = args[0];
        var date = dates[0];
        var year = date[0], month = dateFormat(date[1]), day = dateFormat(date[2]);
        var checkoutDate = day + "-" + month + "-" + year;
        checkoutSelection = month + "/" + day + "/" + year;
        document.getElementById(checkoutId).value = checkoutDate;
        document.getElementById("ctl00_plhBody_checkinValue").value = document.getElementById(checkinId).value;
        document.getElementById("ctl00_plhBody_checkoutValue").value = checkoutDate;

        //update checkout calendar highlight dates
        if (document.getElementById(checkinId).value != "")
        {
            if (document.getElementById(checkinId).value != 0)
                checkinSelection = reFormatDate(document.getElementById(checkinId).value);
        }
	    checkinCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false); 
        checkoutCal.cfg.setProperty("selected", checkinSelection + ", " + checkoutSelection, false);         
	    checkinCal.render();
	    checkoutCal.render();   
        checkoutCal.hide();
        getDateDiff();
    }    
    //hide calendar when user click anywhere outside the calendar
    function hideDiv(e)
    {
        var target=(e?e.target:event.srcElement);
        var checkinCalDiv =document.getElementById(checkinCalId);
        var checkinDiv =document.getElementById(checkinId);
        var checkoutCalDiv =document.getElementById(checkoutCalId);
        var checkoutDiv =document.getElementById(checkoutId);
        if(checkinCalDiv != null && checkinDiv != null && checkoutCalDiv != null && checkoutDiv != null)
        {
            (isChild(target,checkinCalDiv) || target == checkinDiv) ? null : checkinCalDiv.style.display='none';
            (isChild(target,checkoutCalDiv) || target == checkoutDiv) ? null : checkoutCalDiv.style.display='none';
        }
    }
    document.onclick=hideDiv
}
// visibility control for hotel.aspx page rate tab first calendar
function hideHotelDiv(e){
    var target=(e?e.target:event.srcElement);
    var checkinCalDiv =document.getElementById("checkinCalContainer");
    var checkinDiv =document.getElementById("ctl00_plhBody_hotelCheckin");
    var checkoutCalDiv =document.getElementById("checkoutCalContainer");
    var checkoutDiv =document.getElementById("ctl00_plhBody_hotelCheckout");
    if(checkinCalDiv != null && checkinDiv != null && checkoutCalDiv != null && checkoutDiv != null)
    {
        (isChild(target,checkinCalDiv) || target == checkinDiv) ? null : checkinCalDiv.style.display='none';
        (isChild(target,checkoutCalDiv) || target == checkoutDiv) ? null : checkoutCalDiv.style.display='none';
    }
}
//change date format from yyyy-mm-dd to mm/dd/yyyy
function reFormatDate(date)
{
    var year = date.substr(6,4);
    var month = date.substr(3,2);
    var day = date.substr(0,2);
    return month + "/" + day + "/" + year;
}    
function dateFormat(date)
{
    return date.toString().length == 1? "0" + date: date;
}
//check if child is a childNode of parent
function isChild(child, parent) {
	while(child) {
		if (child == parent) 
			return true;
		child = child.parentNode;
	}
	return false;
}
//setup calendar for hotel, city, searchResults pages
function SetupHotelCalendars() {
    var currentYear = new Date().getFullYear();
    var nextYear = currentYear +  1;
    // checkin calendar
    Calendar.setup({
        inputField     : "ctl00_plhBody_hotelCheckin",
        ifFormat       : "%d-%m-%Y",
        //daFormat       : "%Y-%m-%d",
        button         : "HotelCheckinTD", 
        weekNumbers    : false,
        onUpdate       : hotelCheckinCalendarUpdated,
        dateStatusFunc : disabledStatus,
        range          : [currentYear, nextYear]
    });    
    // checkout calendar
    Calendar.setup({
        inputField     : "ctl00_plhBody_hotelCheckout",
        ifFormat       : "%d-%m-%Y",
        button         : "HotelCheckoutTD",
        weekNumbers    : false,
        onUpdate       : hotelCheckoutCalendarUpdated,
        dateStatusFunc : disabledStatus,
        range          : [currentYear, nextYear]
    });
}
function disabledStatus (calDate) {
    //date can't be earlier than current date or later than one year
    if ((calDate - new Date())/86400000  < -1 ||(calDate - new Date())/86400000 >363 )  //86400000 is one days in milliseconds
        return true;    
    return false;
}
function hotelCheckinCalendarUpdated(cal) 
{
    if (cal.dateClicked) 
    {
          cal.hide();
        document.getElementById("checkinValue").value = document.getElementById("ctl00_plhBody_hotelCheckin").value;
        document.getElementById("checkoutValue").value = document.getElementById("ctl00_plhBody_hotelCheckout").value;  
    }    
}
function hotelCheckoutCalendarUpdated(cal) {
    if (cal.dateClicked) { alert("CHeckOutClicked");               
        cal.hide();
        document.getElementById("ctl00_plhBody_checkoutValue").value = document.getElementById("ctl00_plhBody_hotelCheckout").value;
    }
}
function isLeapYear( yrStr ) {
    var leapYear = false;
    var year = parseInt( yrStr, 10 );
    // every fourth year is a leap year
    if ( year % 4 == 0 ) {
        leapYear = true;
        // unless it's a multiple of 100
        if( year % 100 == 0 ) {
            leapYear = false;
            // unless it's a multiple of 400
            if( year % 400 == 0 ) {
                leapYear=true;
            }
        }
    }
    return leapYear;
}
function getDaysInMonth( mthIdx, YrStr ) {
    // all the rest have 31
    var maxDays = 31
    // expect Feb. (of course)
    if( mthIdx == 1 ) {
        if( isLeapYear( YrStr ) ) {
            maxDays=29;
        } else {
            maxDays=28;
        }
    }

    // thirty days hath...
    if( mthIdx == 3 || mthIdx == 5 || mthIdx == 8 || mthIdx == 10 ) {
        maxDays=30;
    }
    return maxDays;
}
function getYear(mthIdx) {
    var today = new Date()
    var theYear = parseInt(today.getFullYear())
    
    if( mthIdx < today.getMonth() ) {
        theYear = ( parseInt(today.getFullYear()) + 1 )
    }

    return theYear    
}
// do not allow selection of days that are not valid
// return non-zero if it is the last day of the month
function adjustDate( mthIdx, Dt ) {
    var value = 0;
    var theYear = getYear(mthIdx)
    var numDays = getDaysInMonth( mthIdx, theYear );
    
    if( mthIdx == 1 ) {
        if( Dt.options.selectedIndex + 2 < numDays ) {
            return 0;
        } else {
            if( Dt.options.selectedIndex + 1 > numDays) {
                Dt.options.selectedIndex=numDays - 1;
            }
            //check for leap year
            if( (Dt.options.selectedIndex + 1) == numDays ) {
                return 1;
            } else {
                return 4;
            }
        }
    }
    if( Dt.options.selectedIndex + 2 < numDays ) {
        value = 0;
    } else {
        if ( Dt.options.selectedIndex + 1 > numDays ) {
            Dt.options.selectedIndex--;
            value = 3;
        } else if ( Dt.options.selectedIndex + 1 == numDays ) {
            //index is 31 or 30
            value = 2;
        } else {
            value = 4;
        }
    }
    return value;
}
