Author: ivaynberg
Date: Thu Aug 13 15:54:43 2009
New Revision: 803936

URL: http://svn.apache.org/viewvc?rev=803936&view=rev
Log:
WICKET-2423 Not all "domready" events are called when two wicket-event.js files 
are added to the page
Issue: WICKET-2423

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/wicket-event.js

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/wicket-event.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/wicket-event.js?rev=803936&r1=803935&r2=803936&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/wicket-event.js 
(original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/wicket-event.js 
Thu Aug 13 15:54:43 2009
@@ -41,46 +41,46 @@
 /**
  * Browser types
  */
-
-Wicket.Browser = { 
-       isKHTML: function() {
-               return /Konqueror|KHTML/.test(navigator.userAgent) && 
!/Apple/.test(navigator.userAgent);
-       },
-       
-       isSafari: function() {
-               return /KHTML/.test(navigator.userAgent) && 
/Apple/.test(navigator.userAgent);
-       },
-       
-       isOpera: function() {
-               return !Wicket.Browser.isSafari() && typeof(window.opera) != 
"undefined";
-       },
-
-       isIE: function() {
-               return !Wicket.Browser.isSafari() && typeof(document.all) != 
"undefined" && typeof(window.opera) == "undefined";
-       },
-       
-       isIEQuirks: function() {
-               // is the browser internet explorer in quirks mode (we could 
use document.compatMode too)               
-               return Wicket.Browser.isIE() && 
document.documentElement.clientHeight == 0;
-       },              
-       
-       isIELessThan7: function() {
-               var index = navigator.userAgent.indexOf("MSIE");
-               var version = parseFloat(navigator.userAgent.substring(index + 
5));
-               return Wicket.Browser.isIE() && version < 7;
-       },
-       
-       isIE7: function() {
-               var index = navigator.userAgent.indexOf("MSIE");
-               var version = parseFloat(navigator.userAgent.substring(index + 
5));
-               return Wicket.Browser.isIE() && version >= 7;
-       },
-       
-       isGecko: function() {
-               return /Gecko/.test(navigator.userAgent) && 
!Wicket.Browser.isSafari();
-       }
-};
-
+if (typeof(Wicket.Browser) == "undefined") {
+       Wicket.Browser = { 
+               isKHTML: function() {
+                       return /Konqueror|KHTML/.test(navigator.userAgent) && 
!/Apple/.test(navigator.userAgent);
+               },
+               
+               isSafari: function() {
+                       return /KHTML/.test(navigator.userAgent) && 
/Apple/.test(navigator.userAgent);
+               },
+               
+               isOpera: function() {
+                       return !Wicket.Browser.isSafari() && 
typeof(window.opera) != "undefined";
+               },
+       
+               isIE: function() {
+                       return !Wicket.Browser.isSafari() && 
typeof(document.all) != "undefined" && typeof(window.opera) == "undefined";
+               },
+               
+               isIEQuirks: function() {
+                       // is the browser internet explorer in quirks mode (we 
could use document.compatMode too)               
+                       return Wicket.Browser.isIE() && 
document.documentElement.clientHeight == 0;
+               },              
+               
+               isIELessThan7: function() {
+                       var index = navigator.userAgent.indexOf("MSIE");
+                       var version = 
parseFloat(navigator.userAgent.substring(index + 5));
+                       return Wicket.Browser.isIE() && version < 7;
+               },
+               
+               isIE7: function() {
+                       var index = navigator.userAgent.indexOf("MSIE");
+                       var version = 
parseFloat(navigator.userAgent.substring(index + 5));
+                       return Wicket.Browser.isIE() && version >= 7;
+               },
+               
+               isGecko: function() {
+                       return /Gecko/.test(navigator.userAgent) && 
!Wicket.Browser.isSafari();
+               }
+       };
+}
 
 
 
@@ -90,114 +90,116 @@
  * Based on code from Mootools (http://mootools.net)
  */
 
-Wicket.Event = {
-       idCounter: 0,
-       
-       getId: function(element) {
-               var current = element.getAttribute("id");
-               if (typeof(current) == "string" && current.length > 0) {
-                       return current;
-               } else {
-                       current = "wicket-generated-id-" + 
Wicket.Event.idCounter++;
-                       element.setAttribute("id", current);
-                       return current;
-               }
-       },
-       
-       handler: function() {
-               var id = this[0];
-               var original = this[1];
-               var element = Wicket.$(id);
-               original.bind(element)();
-       },
-
-       // adds an event of specified type to the element
-       // also supports the domready event on window
-       // domready is event fired when the DOM is complete, but before loading 
external resources (images, ...)
-       add: function(element, type, fn) {
-               // is the event domready?
-               if (element == window && type == "domready") {
-                       Wicket.Event.addDomReadyEvent(fn);
-               } else {
-                       if (element.addEventListener){
-                               element.addEventListener((type == 'mousewheel' 
&& Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type, fn, false);
+if (typeof(Wicket.Event) == "undefined") {
+       Wicket.Event = {
+               idCounter: 0,
+               
+               getId: function(element) {
+                       var current = element.getAttribute("id");
+                       if (typeof(current) == "string" && current.length > 0) {
+                               return current;
                        } else {
-                               if (element == window || element == document)   
{
-                                       fn = fn.bind(element);
+                               current = "wicket-generated-id-" + 
Wicket.Event.idCounter++;
+                               element.setAttribute("id", current);
+                               return current;
+                       }
+               },
+               
+               handler: function() {
+                       var id = this[0];
+                       var original = this[1];
+                       var element = Wicket.$(id);
+                       original.bind(element)();
+               },
+       
+               // adds an event of specified type to the element
+               // also supports the domready event on window
+               // domready is event fired when the DOM is complete, but before 
loading external resources (images, ...)
+               add: function(element, type, fn) {
+                       // is the event domready?
+                       if (element == window && type == "domready") {
+                               Wicket.Event.addDomReadyEvent(fn);
+                       } else {
+                               if (element.addEventListener){
+                                       element.addEventListener((type == 
'mousewheel' && Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type, fn, false);
+                               } else {
+                                       if (element == window || element == 
document)   {
+                                               fn = fn.bind(element);
+                                       }
+                                       else {
+                                               fn = 
Wicket.Event.handler.bind([Wicket.Event.getId(element), fn]);                   
                   
+                                       }                               
+                                       // Because of the fn.bind (returning a 
new function object)
+                                       // you can't detach the event first to 
be sure that there are no doubles :(
+                                       //element.detachEvent('on'+type, fn);
+                                       element.attachEvent('on'+type, fn);
                                }
-                               else {
-                                       fn = 
Wicket.Event.handler.bind([Wicket.Event.getId(element), fn]);                   
                   
-                               }                               
-                               // Because of the fn.bind (returning a new 
function object)
-                               // you can't detach the event first to be sure 
that there are no doubles :(
-                               //element.detachEvent('on'+type, fn);
-                               element.attachEvent('on'+type, fn);
                        }
-               }
-               return element;
-       },
-       
-       // handlers that will be fired on dom ready event
-       domReadyHandlers : new Array(),
-       
-       // fires the dom ready event and cleanup the handlers
-       fireDomReadyHandlers : function() {
-               var h = Wicket.Event.domReadyHandlers;
-               while (h.length > 0) {
-                       var c = h.shift();
-                       c();
-               }
-               Wicket.Event.domReadyHandlers = null;
-       },
-       
-       // adds the dom ready event 
-       addDomReadyEvent : function(fn) {
-               // is the window already loaded?
-               if (window.loaded)  {
-                       fn();
-               } else if (!window.events || !window.events.domready) {
-                       // register the handler
-                       Wicket.Event.domReadyHandlers.push(fn);
-               
-                       // callback
-                       var domReady = function() {
-                               if (window.loaded) 
-                                       return;
-                               window.loaded = true;
-                               
-                               // invoke the handlers
-                               Wicket.Event.fireDomReadyHandlers();
-                       }.bind(this);
+                       return element;
+               },
+               
+               // handlers that will be fired on dom ready event
+               domReadyHandlers : new Array(),
+               
+               // fires the dom ready event and cleanup the handlers
+               fireDomReadyHandlers : function() {
+                       var h = Wicket.Event.domReadyHandlers;
+                       while (h.length > 0) {
+                               var c = h.shift();
+                               c();
+                       }
+                       Wicket.Event.domReadyHandlers = null;
+               },
+               
+               // adds the dom ready event 
+               addDomReadyEvent : function(fn) {
+                       // is the window already loaded?
+                       if (window.loaded)  {
+                               fn();
+                       } else if (!window.events || !window.events.domready) {
+                               // register the handler
+                               Wicket.Event.domReadyHandlers.push(fn);
                        
-                       if (document.readyState && (Wicket.Browser.isKHTML() || 
Wicket.Browser.isSafari())) { 
-                         //safari and konqueror don't support the event - 
simulate it through a timeout
-                               var domCheck = function() {
-                                       if (document.readyState == "loaded" ||
-                                           document.readyState == "complete") {
-                                           domReady();
-                                       } else {
-                                               // dom not yet ready, set timer 
to check later
-                                               window.setTimeout(domCheck, 10);
+                               // callback
+                               var domReady = function() {
+                                       if (window.loaded) 
+                                               return;
+                                       window.loaded = true;
+                                       
+                                       // invoke the handlers
+                                       Wicket.Event.fireDomReadyHandlers();
+                               }.bind(this);
+                               
+                               if (document.readyState && 
(Wicket.Browser.isKHTML() || Wicket.Browser.isSafari())) { 
+                                 //safari and konqueror don't support the 
event - simulate it through a timeout
+                                       var domCheck = function() {
+                                               if (document.readyState == 
"loaded" ||
+                                                   document.readyState == 
"complete") {
+                                                   domReady();
+                                               } else {
+                                                       // dom not yet ready, 
set timer to check later
+                                                       
window.setTimeout(domCheck, 10);
+                                               }
                                        }
+                                       window.setTimeout(domCheck, 10);
+                               } else if (document.readyState && 
Wicket.Browser.isIE()) { 
+                                       if (document.getElementById('ie_ready') 
== null) {
+                                               // for internet explorer we 
need to load a "dummy" scrip from ::/ to get the 
+                                               // readystatechangeevernt - 
that means the main page being loaded and now the browser
+                                               // is loading dependencies
+                                               var src = 
(window.location.protocol == 'https:') ? '\/\/:' : 'javascript:void(0)';
+                                               document.write('<script 
id="ie_ready" defer src="' + src + '"><\/script>');
+                                               
document.getElementById('ie_ready').onreadystatechange = function() {
+                                                       if (this.readyState == 
'complete') domReady();
+                                               };
+                                       }
+                               } else { 
+                                       // other browsers
+                                       Wicket.Event.add(document, 
"DOMContentLoaded", domReady);
                                }
-                               window.setTimeout(domCheck, 10);
-                       } else if (document.readyState && 
Wicket.Browser.isIE()) { 
-                               if (document.getElementById('ie_ready') == 
null) {
-                                       // for internet explorer we need to 
load a "dummy" scrip from ::/ to get the 
-                                       // readystatechangeevernt - that means 
the main page being loaded and now the browser
-                                       // is loading dependencies
-                                       var src = (window.location.protocol == 
'https:') ? '\/\/:' : 'javascript:void(0)';
-                                       document.write('<script id="ie_ready" 
defer src="' + src + '"><\/script>');
-                                       
document.getElementById('ie_ready').onreadystatechange = function() {
-                                               if (this.readyState == 
'complete') domReady();
-                                       };
-                               }
-                       } else { 
-                               // other browsers
-                               Wicket.Event.add(document, "DOMContentLoaded", 
domReady);
+                       } else {
+                               window.addEventListener("domready", fn, false);
                        }
-               } else {
-                       window.addEventListener("domready", fn, false);
                }
-       }
-}
+       };
+}
\ No newline at end of file


Reply via email to