window.addEvent('domready', function(){

var oneHour=1000*60*60;
	
$.Require(["/includes/scripts/vlaCal.js","/includes/css/vlaCalendarOverlay.css"],function() {

	var todayAtMidnight=(new Date()).getDateAtFirst();
    var calOpts={
			format:"m/d/y",
			twoDigitYear:false,
			alignX:"left",
			alignY:"bottom"/**/,
			offset:{x:-72,y:3},
			alternateHideFn:Browser.Engine.trident5,
			alternateShowFn:Browser.Engine.trident5,
			maxShownDate:todayAtMidnight.addMilliseconds(1000*60*60*24*365),//12 months from the 1st
			minShownDate:todayAtMidnight,
			quickPickMonth:false,
			quickPickYear:false,
            inputPrefix:""
	}
    var startPickCallback=function(date,visible,self) {
        var end=self.getParent("form").getElement(".vlaEndDate");
        var startDate=new Date(self.value.replace(self.get("prefix"), ""))
        var endDate=new Date(end.value.replace(end.get("prefix"), ""))
        var now=new Date();
        now=new Date((now.getMonth()+1)+"/"+now.getDate()+"/"+now.getFullYear());//this gets todays date starting at midnight, instead of this exact second

        var param=new Date(date.month+"/"+date.day+"/"+date.year)
        //if the end/departure date is less than the newly selected start/arrival date...set it to blank
        if (endDate<param) end.calendar.setDate(param.addMilliseconds(oneHour*24*5+oneHour))

        //if they selected a start/arrival date before today (@ midnight), scoot them up to now
        if (now>startDate) {
            this.setDate(now)
            param=now;
        }

        //if end/departure date is blank or MM/DD/YYYY then set it to now+5days
        if (isNaN(endDate)) {
            var plus5days=oneHour*24*5;
            // Here we add oneHour to compensate for daylight savings time.
            plus5days=param.getTime()+oneHour+plus5days;
            var plus5Date = new Date(plus5days);
            end.calendar.setDate(plus5Date);
        }

        //if the calendar is visible and we need to update a calendar overlay...do it
        if (visible&&typeof(cal)!="undefined")cal.updateCalendarFromInputBoxes.call(cal)

    }
    var endPickCallback=function(date,visible,self) {
		var start=self.getParent("form").getElement(".vlaStartDate");
        //if start date is greater than end date, scoot them up
        if (new Date(start.value.replace(start.get("prefix"), ""))>new Date(date.month+"/"+date.day+"/"+date.year)) {
        	this.setDate(new Date(start.value.replace(start.get("prefix"), "")).addMilliseconds(1000*60*60*24*5+oneHour))
        }	// if
        if (visible&&typeof(cal)!="undefined") { 
        	cal.updateCalendarFromInputBoxes.call(cal);
        }	// if
		this.linkedUpdate();
    }

    $(document.body).addEvent("click",function(event) {
        var self=$(event.target);

        if (self.hasClass("vlaStartDate")||self.hasClass("vlaEndDate")) {
            var start=self.getParent("form").getElement(".vlaStartDate");
            calOpts.inputPrefix=start.get("prefix")||calOpts.inputPrefix;
            if (self.hasClass("deals-filterby-input")||self.getParent("#rad_bar"))calOpts.offset={x:3,y:3}//if it's a search page, offset differently
		    if (start.calendar==null)start.calendar=new vlaDatePicker(start,calOpts).addEvent("pick",startPickCallback);
            var end=self.getParent("form").getElement(".vlaEndDate");
            calOpts.inputPrefix=end.get("prefix")||calOpts.inputPrefix;
		    if (end.calendar==null)end.calendar=new vlaDatePicker(end,calOpts).addEvent("pick",endPickCallback);
            self.fireEvent("focus")
            event.stop()
        }
    })



    $$("#rad_bar,#rail-booking-panel form,#home-ent-search").addEvent("submit",function(event) {
        var self=$(event.target),s=self.getElement(".vlaStartDate"),sd=new Date(s.value),e=self.getElement(".vlaEndDate"),ed=new Date(e.value);
        s.calendar&&s.calendar.setDate(sd);
        e.calendar&&e.calendar.setDate(ed);
        s.setStyle('border-color',isNaN(sd)?"red":"#FCB040");
        e.setStyle('border-color',isNaN(ed)?"red":"#FCB040");
        $$(e,s).getStyle('border-color').indexOf("red")>-1&&event.stop();//stop event if there's a red one
    })
})

});

