diff --git a/lib/javascript-static.js b/lib/javascript-static.js index 5f284bd274e..a8f8843985c 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -415,7 +415,7 @@ function date_selector_calendar(el, firstdayofweek) { // Ensure that the shared div and calendar exist. if (!date_selector_calendar.panel) { date_selector_calendar.panel = new YAHOO.widget.Panel('date_selector_calendar_panel', - {visible: false, close: false, draggable: false}); + {visible: false, draggable: false}); var div = document.createElement('div'); date_selector_calendar.panel.setBody(div); date_selector_calendar.panel.render(document.body); @@ -424,6 +424,7 @@ function date_selector_calendar(el, firstdayofweek) { date_selector_calendar.panel.showEvent.subscribe(function() { date_selector_calendar.panel.fireEvent('changeContent'); }); + date_selector_calendar.panel.hideEvent.subscribe(date_selector_calendar.release_current); date_selector_calendar.calendar = new YAHOO.widget.Calendar(div, {iframe: false, hide_blank_weeks: true, start_weekday: firstdayofweek}); @@ -500,8 +501,7 @@ date_selector_calendar.delayed_reposition = function() { clearTimeout(date_selector_calendar.repositiontimeout); date_selector_calendar.repositiontimeout = null; } - date_selector_calendar.repositiontimeout = setTimeout( - function() {date_selector_calendar.fix_position();}, 500); + date_selector_calendar.repositiontimeout = setTimeout(date_selector_calendar.fix_position, 500); } date_selector_calendar.fix_position = function() { @@ -510,6 +510,16 @@ date_selector_calendar.fix_position = function() { } } +date_selector_calendar.release_current = function() { + if (date_selector_calendar.currentowner) { + date_selector_calendar.currentowner.release_calendar(); + } +} + +date_selector_calendar.prototype.focus_event = function(e, me) { + +} + date_selector_calendar.prototype.focus_event = function(e, me) { date_selector_calendar.cancel_any_timeout(); if (me.enablecheckbox == null || me.enablecheckbox.checked) { @@ -522,7 +532,7 @@ date_selector_calendar.prototype.focus_event = function(e, me) { } date_selector_calendar.prototype.blur_event = function(e, me) { - date_selector_calendar.hidetimeout = setTimeout(function() {me.release_calendar();}, 200); + date_selector_calendar.hidetimeout = setTimeout(date_selector_calendar.release_current, 300); } date_selector_calendar.prototype.handle_select_change = function(e, me) { @@ -533,7 +543,9 @@ date_selector_calendar.document_click = function(event) { if (date_selector_calendar.currentowner) { var currentcontainer = date_selector_calendar.currentowner.fieldset; var eventarget = YAHOO.util.Event.getTarget(event); - if (!YAHOO.util.Dom.isAncestor(currentcontainer, eventarget)) { + if (YAHOO.util.Dom.isAncestor(currentcontainer, eventarget)) { + setTimeout(function() {date_selector_calendar.cancel_any_timeout()}, 100); + } else { date_selector_calendar.currentowner.release_calendar(); } }