function isValidDate(day,month,year){ var dteDate; dteDate=new Date(year,month,day); return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear())); } YAHOO.util.Event.onDOMReady(function(){ var Dom = YAHOO.util.Dom, Event = YAHOO.util.Event, cal1, over_cal = false, cur_field = ''; var init = function() { cal1 = new YAHOO.widget.Calendar("cal1","calendar"); cal1.cfg.setProperty("mindate","9/9/2010",false); cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/"); cal1.cfg.setProperty("MDY_DAY_POSITION", 1); cal1.cfg.setProperty("MDY_MONTH_POSITION", 2); cal1.cfg.setProperty("MDY_YEAR_POSITION", 3); cal1.cfg.setProperty("MD_DAY_POSITION", 1); cal1.cfg.setProperty("MD_MONTH_POSITION", 2); cal1.selectEvent.subscribe(getDate, cal1, true); cal1.renderEvent.subscribe(setupListeners, cal1, true); Event.addListener(['StartDate', 'EndDate'], 'focus', showCal); Event.addListener(['StartDate', 'EndDate'], 'blur', hideCal); cal1.render(); } var setupListeners = function() { Event.addListener('calendar', 'mouseover', function() { over_cal = true; }); Event.addListener('calendar', 'mouseout', function() { over_cal = false; }); } var getDate = function() { var calDate = this.getSelectedDates()[0]; calDate = calDate.getDate() + '/' + (calDate.getMonth() + 1) + '/' + calDate.getFullYear(); cur_field.value = calDate; 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; var mySplitResult = date.split("/"); if (isValidDate(mySplitResult[0], mySplitResult[1], mySplitResult[2])) { cal1.cfg.setProperty('selected', date); cal1.cfg.setProperty('pagedate', new Date(mySplitResult[2], mySplitResult[1]-1, mySplitResult[0]), true); } else { cal1.cfg.setProperty('selected', ''); cal1.cfg.setProperty('pagedate', new Date(), true); } cal1.render(); Dom.setStyle('calendar', 'display', 'block'); xy[1] = xy[1] + 20; Dom.setXY('calendar', xy); } var hideCal = function() { if (!over_cal) { Dom.setStyle('calendar', 'display', 'none'); } } Event.addListener(window, 'load', init); });