//all things that happen on every form

var calendarleftoffset=EnvVariables.CALENDAR_LEFT_OFFSET;
var calendartopoffset=EnvVariables.CALENDAR_TOP_OFFSET;
var calendarleftretoffset=EnvVariables.CALENDAR_LEFT_RET_OFFSET;
var calendartopretoffset=EnvVariables.CALENDAR_TOP_RET_OFFSET;
var calenderformat=EnvVariables.CALENDER_FORMAT;
var calenderformatforvalidator=EnvVariables.CALENDER_FORMAT_FOR_VALIDATOR;
var load_method = EnvVariables.LOAD_METHOD;
var fromCalendar=null;
var returnCalendar=null;
var departureCalendar=null;

function createFormChecks(){
	var tipsOffsetLeft=EnvVariables.TIPS_OFFSET_LEFT;
	var tipsOffsetTop=EnvVariables.TIPS_OFFSET_TOP;
	var checkers=new Array();
	var forms=$$(EnvVariables.SEARCH_FORM_CLASSNAME);	
	forms.each(function(form){		
		var formcheck=createFormCheck(tipsOffsetLeft,tipsOffsetTop,form);
		checkers.push (formcheck);
	});
	return checkers;
}

function createFormCheck(tipsOffsetLeft,tipsOffsetTop,form){	
	if(tipsOffsetLeft==null)tipsOffsetLeft=0;
	if(tipsOffsetTop==null)tipsOffsetTop=0;
	
    var hotchecker = new FormCheck(form, {
		tips_class : EnvVariables.TIPS_CLASS,
		error_class : EnvVariables.ERROR_FIELD_CLASS,
		 callback:showJaxWithMsg,
			display : {
                		scrollToFirst : false,
                        tipsOffsetLeft :tipsOffsetLeft,			//ok Left position of the tips box (margin-left)
                        tipsOffsetTop: tipsOffsetTop,
                        indicateErrors	: 1,
                        timeout:5000,
                        listErrorsAtTop:false
                       
                                 
			},
			alerts : {
                		required : 'This field is ablsolutely required! Please enter a value',
						date:'Enter a valid date in '+calenderformatforvalidator+' format',
            			dateafter:'End date should be after start date',
            			postdated:'Bookings searched should be for a day in the future'
                	
			},
			functions:{
				postdated:function(d){
					if(d==null || d==''){						
						return false;
					}
					else if(Date.isValid(d,calenderformatforvalidator)){
						var leavedate=Date.parseString(d,calenderformatforvalidator);
						var curdate=new Date();						
						if(!leavedate.isBefore(curdate)){
							return true;
						}
						else {							
							return false;
						}
					}
					else {						
						return false;				
					}
					
				},
				dateafter:function(d){					
					
					var previousdate=$(EnvVariables.FROM_DATE_FIELD_ID).value;
					if(!previousdate || previousdate=='' || !Date.isValid(previousdate,calenderformatforvalidator)){										
						return false;
					}else {
						var ret=Date.parseString(d,calenderformatforvalidator);
						var leave=Date.parseString(previousdate,calenderformatforvalidator);
						if(leave.isBefore(ret)){							
							return true;
						}
						else {							
							return false;
						}
					}
				}
			}
                         
		});
    	form.validator=hotchecker;
		return hotchecker;	
}


window.addEvent(load_method, function(){
	tipsOffsetLeft=0;
	tipsOffsetTop=0;	


	if($('fromCal')){		
	     fromCalendar = new Calendar("fromCal", $("fromToggler"), {
	    	offset:{x:calendarleftoffset,y:calendartopoffset},
	        inputField: 'fromdate',
	        numMonths: 2,
	        multiSelection: false,
	        selectedDate:getEndDate(),
	        endDate:getOneYearDate(),
	        preTdHTML:'&nbsp;<&nbsp;',
	        nexTdHTML:'&nbsp;>&nbsp;',
	        preYrTdHTML:'&nbsp;<<&nbsp;',
	        nexYrTdHTML:'&nbsp;>>&nbsp;',
	        onSelect: function(){
	        	if($('fromdate').revalidate)$('fromdate').revalidate();
	            this.closeCalendar();
	            if(returnCalendar!=null){
	            	
	            	var retDate=Date.parseString($('fromdate').value,calenderformatforvalidator);
	            	//retDate.add('d',1);	            	
	            	returnCalendar.options.startDate=returnCalendar.processDates(retDate);
	            	returnCalendar.updateCalendar($('fromdate').value);            	
	            }
	            if(departureCalendar!=null){
	            	
	            	var retDate=Date.parseString($('fromdate').value,calenderformatforvalidator);	            		            	
	            	departureCalendar.options.startDate=departureCalendar.processDates(retDate.format(calenderformatforvalidator));
	            	departureCalendar.updateCalendar($('fromdate').value);            	
	            }
	        },
	        allowWeekendSelection: true,
	        allowDatesOffSelection: true, 
	        speedFireFox: true,
	        dateFormat: calenderformat,
	        idPrefix: 'cal3'
	    });
	}
	if($('returnCal')){		
		 returnCalendar = new Calendar("returnCal", $("returnToggler"), {
			offset:{x:calendarleftretoffset,y:calendartopretoffset},
	        inputField: 'returndate',
	        numMonths: 2,
	        multiSelection: false,
	        startDate:getEndDate(),
	        //startDate:getstartdate(),
	        //selectedDate:getEndDate(),
	        endDate:getOneYearDate(),
	        preTdHTML:'&nbsp;<&nbsp;',
	        nexTdHTML:'&nbsp;>&nbsp;',
	        preYrTdHTML:'&nbsp;<<&nbsp;',
	        nexYrTdHTML:'&nbsp;>>&nbsp;',
	        onSelect: function(){
	        	if($('returndate').revalidate)$('returndate').revalidate();
	            this.closeCalendar();
	            
	            var retDate=Date.parseString($('returndate').value,calenderformatforvalidator);	   
             	var newdate = retDate.getDate();
	            retDate.setDate(newdate);  
	            fromCalendar.options.endDate=fromCalendar.processDates(retDate);
                fromCalendar.updateCalendar($('fromdate').value);
	        },
	        allowWeekendSelection: true,
	        allowDatesOffSelection: true,
	        speedFireFox: true,
	        dateFormat:calenderformat,
	        idPrefix: 'cal4'
	    });
    }
	if($('departureCal')){		
		departureCalendar = new Calendar("departureCal", "returnToggler", {
			offset:{x:calendarleftoffset,y:calendartopoffset},
	        inputField: 'returndate',
	        numMonths: 2,
	        multiSelection: false,
	        onSelect: function(){
	        	if($('returndate').revalidate)$('returndate').revalidate();
	            this.closeCalendar();
	        },
	        allowWeekendSelection: true,
	        allowDatesOffSelection: true,
	        speedFireFox: true,
	        dateFormat:calenderformat,
	        idPrefix: 'cal4'
	    });
   }
	
	if($('roundtripradio'))
	{	
		$('roundtripradio').addEvent('change',function(){
			
			if($('roundtripradio') && $('roundtripradio').checked==true)
			{
				/*if($('fromdate').value!=null && $('fromdate').revalidate)$('fromdate').revalidate();
				if($('fromdate').value!=null && returnCalendar!=null)
				{
		        	var retDate=Date.parseString($('fromdate').value,calenderformatforvalidator);	            	
		        	returnCalendar.options.startDate=returnCalendar.processDates(retDate);
		        	returnCalendar.updateCalendar($('fromdate').value);            	
		        }*/
			}
		});
		
		$('onwardtripradio').addEvent('change',function(){
		
			if($('roundtripradio') && $('roundtripradio').checked==false)
			{
				if(fromCalendar!=null){
					fromCalendar.options.endDate=getOneYearDate();
					fromCalendar.updateCalendar($('fromdate').value);
				}
				if(returnCalendar!=null)
				{
					if($('returndate').value!=null && $('returndate').value!='')
					{	var date=Date.parseString($('returndate').value,calenderformatforvalidator)
						returnCalendar.unselectDate(date);
					}
				}
				if($('returndate'))$('returndate').value='';
			}
		});
		
	}		
			
	var MyImages=new Array();
	MyImages[0]='/images/ads/home_banner/1.gif';
	MyImages[1]='/images/ads/home_banner/2.gif';
	MyImages[2]='/images/ads/home_banner/3.gif';
	MyImages[3]='/images/ads/home_banner/4.gif';
	MyImages[4]='/images/ads/home_banner/5.gif';
	MyImages[5]='/images/ads/home_banner/6.gif';
	
	if($('imgchange'))
	{
		$('imgchange').set("src", $('pagePath').value+MyImages[Math.round(Math.random()*5)])
	}
	
});

function onSelectFromDate(date,returnCalendar){
    var date = returnCalendar.processDates(date);
	if (!$defined(date)) return false;
	
	var id_str = returnCalendar.options.idPrefix+'date-'+(date.getMonth()+1)+'-'+date.getDate()+'-'+date.getFullYear();
    //alert('id_str '+id_str);
	if ($defined($(id_str)))
	{
		$(id_str).removeClass(returnCalendar.options.classPrefix+"outOfRange");
		$(id_str).addClass(returnCalendar.options.classPrefix+"fromDateselect");
	}
	
	//alert($(id_str).getAttribute("class"));	
}
function getOneYearDate()
{
	var yearDate=new Date();
	yearDate.add('y',1);
	return yearDate;
}
function getEndDate()
{ 
	var retDate=Date.parseString($('fromdate').value,calenderformatforvalidator);
	//retDate.format(USER_DATE_FORMAT);
	return retDate;
}
function getstartdate()
{ 
	var retDate=Date.parseString($('returndate').value,calenderformatforvalidator);
	//retDate.format(USER_DATE_FORMAT);
	return retDate;
}  
