formslib dates: MDL-16592 by popular demand, a close icon on the popup.
authortjhunt <tjhunt>
Mon, 16 Mar 2009 07:38:27 +0000 (07:38 +0000)
committertjhunt <tjhunt>
Mon, 16 Mar 2009 07:38:27 +0000 (07:38 +0000)
lib/javascript-static.js

index 5f284bd274e9bd8b6935fbdaee3ba376b96aeee5..a8f8843985c7470298c8251bdf43db6ca7d86c6e 100644 (file)
@@ -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();
         }
     }