/*  Copyright (c) 2009, Yahoo! Inc. All rights reserved. |  Adaptaciones para Zews.SA - Rolando Avalos
 * ---------------------------------------------------------------------------
 * This script is distributed under the BSD License.
 * Read the entire license text here: http://developer.yahoo.net/yui/license.txt
 */
 
(function(){
    var Dom = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        cal,
        over_cal = false,
        cur_field = '';

    var init = function(){
        
        var fechaActual = new Date();
        fechaActual = fechaActual.getMonth() + 1 +"/" + fechaActual.getDate()+"/"+ fechaActual.getFullYear();
        
        var navConfig = {
            strings : {
                month: "Choose Month",
                year: "Enter Year",
                submit: "OK",
                cancel: "Cancel",
                invalidYear: "Please enter a valid year"
            },
            initialFocus: "year"
        };
        
        cal = new YAHOO.widget.Calendar("calDate","calResvDate", {title:"Choose a date:", mindate: fechaActual, navigator:navConfig, close:true});
        cal.selectEvent.subscribe(getDate, cal, true);
        cal.renderEvent.subscribe(setupListeners, cal, true);
        Event.addListener(['ReservationArrivalDate', 'ReservationDepartureDate'], 'focus', showCal);
        Event.addListener(['ReservationArrivalDate', 'ReservationDepartureDate'], 'blur', hideCal);
        
        Event.addListener("arrdate", "click", handleArrival);
        Event.addListener("depdate", "click", handleDeparture);
        cal.render();
    }

    var setupListeners = function() {
        Event.addListener('calResvDate', 'mouseover', function() {
            over_cal = true;
        });
        Event.addListener('calResvDate', 'mouseout', function() {
            over_cal = false;
        });
    }

    var getDate = function() {
            var calDate = this.getSelectedDates()[0];
            calDate = (calDate.getMonth() + 1) + '/' + calDate.getDate() + '/' + calDate.getFullYear();
            cur_field.value = calDate;
            
            var noches = 1;
            if(cur_field.id=="ReservationArrivalDate"){
                depDate = Dom.get('ReservationDepartureDate').value;
                noches = restarFechas(new Date(calDate),new Date(depDate));
                
            }else{
                arrDate = Dom.get('ReservationArrivalDate').value;
                noches = restarFechas(new Date(arrDate),new Date(calDate));
            }
            Dom.get('nights').value = noches;
            over_cal = false;
            hideCal();
    }

    var showCal = function(ev) {
        var tar = Event.getTarget(ev);
        cur_field = tar;
    
        var xy = Dom.getXY(tar), date = Dom.get(tar).value;
        if (date) {
            cal.cfg.setProperty('selected', date);
            cal.cfg.setProperty('pagedate', new Date(date), true);
        } else {
            cal.cfg.setProperty('selected', '');
            cal.cfg.setProperty('pagedate', new Date(), true);
        }
        cal.render();
        Dom.setStyle('calResvDate', 'display', 'block');
        xy[1] = xy[1] + 20;
        Dom.setXY('calResvDate', xy);
    }

    var hideCal = function() {
        if (!over_cal) {
            Dom.setStyle('calResvDate', 'display', 'none');
        }
    }
    
    var handleArrival = function(){
        Dom.get('ReservationArrivalDate').focus();
    }
    
    var handleDeparture = function(){
        Dom.get('ReservationDepartureDate').focus();
    }
    
    Event.addListener(window, 'load', init);

})();