var calIn;var calOut;var over_cal=false;var calInMargin=convertDaysToUnix(marginInMin);var calInRange=convertDaysToUnix(marginInMax);var calInDateMin=new Date();var calInDateMax=new Date();calInDateMin.setTime(calInDateMin.getTime()+calInMargin);calInDateMax.setTime(calInDateMin.getTime()+calInRange);var calOutMargin=convertDaysToUnix(marginOutMin);var calOutRange=convertDaysToUnix(marginOutMax);var calOutDateMin=new Date();var calOutDateMax=new Date();var calInDateStart=new Date;calInDateStart.setTime(calInDateMin.getTime()+convertDaysToUnix(startDateInMod));var calOutDateStart=new Date;calOutDateStart.setTime(calOutDateMin.getTime()+convertDaysToUnix(startDateOutMod));function init(){calIn=new YAHOO.widget.CalendarGroup("calIn",nameInContainer,{title:calInTitle,close:true});calIn=localizationGeneral(calIn);calOut=new YAHOO.widget.CalendarGroup("calOut",nameOutContainer,{title:calOutTitle,close:true});calOut=localizationGeneral(calOut);setDateOutMargin(calInDateMin);calIn.cfg.setProperty('mindate',dateToStringFormat(calInDateMin));calIn.cfg.setProperty('maxdate',dateToStringFormat(calInDateMax));selectRender();calIn.selectEvent.subscribe(getDateIn,calIn,true);calOut.selectEvent.subscribe(getDateOut,calOut,true);calIn.renderEvent.subscribe(setupListenersIn,calIn,true);calOut.renderEvent.subscribe(setupListenersOut,calOut,true);YAHOO.util.Event.addListener(nameInInput,'focus',showCalIn);YAHOO.util.Event.addListener(nameOutInput,'focus',showCalOut);YAHOO.util.Event.addListener(nameInInput,'blur',hideCalIn);YAHOO.util.Event.addListener(nameOutInput,'blur',hideCalOut);YAHOO.util.Event.addListener(nameBetween,'change',betweenChange);YAHOO.util.Dom.get(nameInInput).value=dateToStringFormat(calInDateStart);setDateInCalIn(dateToStringFormat(calInDateStart));YAHOO.util.Dom.get(nameOutInput).value=dateToStringFormat(calOutDateStart);setDateInCalOut(dateToStringFormat(calOutDateStart));setBetweenSelect();calIn.render();calOut.render();}function setupListenersIn(){YAHOO.util.Event.addListener(nameInContainer,'mouseover',overCal);YAHOO.util.Event.addListener(nameInContainer,'mouseout',outCal);}function setupListenersOut(){YAHOO.util.Event.addListener(nameOutContainer,'mouseover',overCal);YAHOO.util.Event.addListener(nameOutContainer,'mouseout',outCal);}function getDateIn(){var calInDate=new Date(calIn.getSelectedDates()[0]);var calOutDate=new Date(calOut.getSelectedDates()[0]);calOutDate.setTime(calInDate.getTime()+convertDaysToUnix(YAHOO.util.Dom.get(nameBetween).value));setDateInCalOut(dateToStringFormat(calOutDate));setDateOutMargin(calInDate);if (calOutDate.getTime()<calOutDateMin.getTime()){calOutDate.setTime(calOutDateMin.getTime());setDateInCalOut(dateToStringFormat(calOutDate));}if (calOutDate.getTime()>calOutDateMax.getTime()){calOutDate.setTime(calOutDateMax.getTime());setDateInCalOut(dateToStringFormat(calOutDate));}setBetweenSelect();YAHOO.util.Dom.get(nameOutInput).value=dateToStringFormat(calOutDate);YAHOO.util.Dom.get(nameInInput).value=dateToStringFormat(calInDate);over_cal=false;calIn.render();calOut.render();hideCalIn();}function getDateOut(){var calInDate=new Date(calIn.getSelectedDates()[0]);var calOutDate=new Date(calOut.getSelectedDates()[0]);var calInDateMinUnix=calInDateMin.getTime();var calInDateMaxUnix=calInDateMax.getTime();setDateOutMargin(calInDate);setBetweenSelect();YAHOO.util.Dom.get(nameInInput).value=dateToStringFormat(calInDate);YAHOO.util.Dom.get(nameOutInput).value=dateToStringFormat(calOutDate);over_cal=false;calIn.render();calOut.render();hideCalOut();}function betweenChange(){var value=convertDaysToUnix(YAHOO.util.Dom.get(nameBetween).value);var selectedDateIn=new Date(calIn.getSelectedDates()[0]);selectedDateIn.setTime(selectedDateIn.getTime()+value);setDateInCalOut(dateToStringFormat(selectedDateIn));YAHOO.util.Dom.get(nameOutInput).value=dateToStringFormat(selectedDateIn);calOut.render();}function showCalIn(){var xy=YAHOO.util.Dom.getXY(nameInInput);var date=YAHOO.util.Dom.get(nameInInput).value;if(date){setDateInCalIn(date);calIn.render();}YAHOO.util.Dom.setStyle(nameInContainer,'display','block');xy[1]=xy[1]+20;YAHOO.util.Dom.setXY(nameInContainer, xy);}function showCalOut(){var xy=YAHOO.util.Dom.getXY(nameOutInput);var date=YAHOO.util.Dom.get(nameOutInput).value;if(date){setDateInCalOut(date);calOut.render();}YAHOO.util.Dom.setStyle(nameOutContainer,'display','block');xy[1]=xy[1]+20;YAHOO.util.Dom.setXY(nameOutContainer, xy);}function hideCalIn(){if(!over_cal){YAHOO.util.Dom.setStyle(nameInContainer,'display','none');}}function hideCalOut(){if(!over_cal){YAHOO.util.Dom.setStyle(nameOutContainer,'display','none');}}function overCal(){over_cal=true;}function outCal(){over_cal=false;}function setDateOutMargin(date){calOutDateMin.setTime(date.getTime()+calOutMargin);calOutDateMax.setTime(date.getTime()+calOutRange);calOut.cfg.setProperty('mindate',dateToStringFormat(calOutDateMin));calOut.cfg.setProperty('maxdate',dateToStringFormat(calOutDateMax));}function setDateInCalIn(date){var dateArray=date.split("-");var dateObject=new Date(dateArray[0],(dateArray[1]-1),dateArray[2]);calIn.cfg.setProperty('selected',date);calIn.cfg.setProperty('pagedate',dateObject);}function setDateInCalOut(date){var dateArray=date.split("-");var dateObject=new Date(dateArray[0],(dateArray[1]-1),dateArray[2]);calOut.cfg.setProperty('selected',date);calOut.cfg.setProperty('pagedate',dateObject);}function dateToStringFormat(object){var dDay=object.getDate().toString();var dMonth=(object.getMonth()+1).toString();if(dDay.length<2){dDay="0"+dDay;}if(dMonth.length<2){dMonth="0"+dMonth;}return object.getFullYear()+'-'+dMonth+'-'+dDay;}function setBetweenSelect(num){var dateFirst=new Date(calOut.getSelectedDates()[0]);var dateSecond=new Date(calIn.getSelectedDates()[0]);var num=getNumberOfDaysBetweenTwoDates(dateFirst.getTime(),dateSecond.getTime());YAHOO.util.Dom.get(nameBetween).value=num;}function getNumberOfDaysBetweenTwoDates(first,second){var output=((first-second)/60/60/24/1000);return output;}function convertDaysToUnix(days){var unix=days*60*60*24*1000;return unix;}function selectRender(){var select="<select name='"+nameBetween+"' id='"+nameBetween+"'>";for(x=marginOutMin;x<=marginOutMax;x++){select+="<option value='"+x+"'>"+x+"</option>";}select+="</select>";YAHOO.util.Dom.get(nameBetweenContainer).innerHTML=select;}function localizationGeneral(calendar){calendar.cfg.setProperty("DATE_FIELD_DELIMITER","-");calendar.cfg.setProperty("DATE_RANGE_DELIMITER","=");calendar.cfg.setProperty("MDY_DAY_POSITION",3);calendar.cfg.setProperty("MDY_MONTH_POSITION",2);calendar.cfg.setProperty("MDY_YEAR_POSITION",1);calendar.cfg.setProperty("START_WEEKDAY",1);calendar=localizationNames(calendar);return calendar;}YAHOO.util.Event.addListener(window,'load',init);