Mise à jour des en-têtes.
[Plinn.git] / skins / ajax_scripts / javascript_events_api.js
index 62ec577..174491e 100644 (file)
@@ -1,4 +1,4 @@
-// (c) Benoît PIN 2006-2009
+// (c) Benoît PIN 2006-2014
 // http://plinn.org
 // Licence GPL
 // 
@@ -27,6 +27,11 @@ var getCopyOfNode; /* (node) returns a clone of the given node.
                                                * to inject HMTL code inside tags where innerHtml is read only (IE)
                                        */
 
+var copyPrototype; // (descendant, parent) lightwheight javascript inheritance
+if (!history.pushState) {
+    history.pushState = function(){};
+}
+
 (function(){
 
 function buildMetaFunctions() {
@@ -43,17 +48,17 @@ function buildMetaFunctions() {
        clearSelection = _build_clearSelection();
 }
 
-__groupListeners = {};
+var __groupListeners = {};
 
 function _build_addListener() {
        var _browserSpecific;
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                _browserSpecific = function(ob, eventName, listenerFunction) {
                        eventName = "on" + eventName;
                        ob.attachEvent(eventName, listenerFunction);
                };
        }
-       else if (browser.isDOM2Event) {
+       else {
                _browserSpecific = function(ob, eventName, listenerFunction) {
                        ob.addEventListener(eventName, listenerFunction, false); // only bubbling events :-(
                };
@@ -70,14 +75,14 @@ function _build_addListener() {
 }
 
 function _build_removeListener() {
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                var _ie_removeListener = function(ob, eventName, listenerFunction) {
                        eventName = "on" + eventName;
                        ob.detachEvent(eventName, listenerFunction);
                };
                return _ie_removeListener;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _dom2_removeListener = function(ob, eventName, listenerFunction) {
                        ob.removeEventListener(eventName, listenerFunction, false); // only bubbling events :-(
                };
@@ -97,13 +102,13 @@ removeGroupListeners = function(group) {
 };
 
 function  _build_raiseMouseEvent() {
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                var _ie_raiseMouseEvent = function(ob, eventName) {
                        ob.fireEvent("on" + eventName);
                };
                return _ie_raiseMouseEvent;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _dom2_raiseMouseEvent = function(ob, eventName) {
                        var event = document.createEvent("MouseEvents");
                        event.initEvent(eventName, true, true);
@@ -114,13 +119,13 @@ function  _build_raiseMouseEvent() {
 }
 
 function _build_getTargetedObject(){
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                var _ie_getTargetedObject = function() {
                        return window.event.srcElement;
                };
                return _ie_getTargetedObject;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _appleWebKit_getTargetedeObject = function(evt) {
                        var target = evt.target;
                        // is it really safe ?...
@@ -134,13 +139,13 @@ function _build_getTargetedObject(){
 }
 
 function _build_getEventObject(){
-       if (browser.isIE) {
+       if (!browser.isDOM2Event) {
                var _ie_getEventObject = function() {
                        return window.event;
                };
                return _ie_getEventObject;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _dom2_getEventObject = function(evt) {
                        return evt;
                };
@@ -150,13 +155,13 @@ function _build_getEventObject(){
 
 
 function _build_disableDefault(){
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                var _ie_disableDefault = function() {
                        window.event.returnValue = false;
                };
                return _ie_disableDefault;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _dom2_disableDefault = function(evt) {
                        evt.preventDefault();
                };
@@ -165,13 +170,13 @@ function _build_disableDefault(){
 }
 
 function _build_disablePropagation() {
-       if (browser.isIE55 || browser.isIE6up) {
+       if (!browser.isDOM2Event) {
                var _ie_disablePropagation = function() {
                        window.event.cancelBubble = true;
                };
                return _ie_disablePropagation;
        }
-       else if (browser.isDOM2Event) {
+       else {
                var _dom2_disablePropagation = function(evt) {
                        evt.stopPropagation();
                };
@@ -218,9 +223,19 @@ function _build_clearSelection() {
        }
 }
 
-
 buildMetaFunctions();
 
+addListener(window, 'load', function(evt) {
+    // html5 facade
+    if (!document.body.classList) {
+        var nop = function(){};
+        var fakeDOMTokenList = {'length':0, 'item':nop, 'contains':nop, 'add':nop, 'remove':nop, 'toggle':nop};
+        Element.prototype.classList = fakeDOMTokenList;
+    }
+});
+
+
+
 var ELEMENT_NODE = 1;
 var TEXT_NODE = 3;
 var _setAttribute;
@@ -297,4 +312,19 @@ else {
        _setAttribute = function(e, name, value) {e.setAttribute(name, value);};
 }
 
+/* 
+* http://www.sitepoint.com/blogs/2006/01/17/javascript-inheritance/
+*/
+
+copyPrototype = function (descendant, parent) { 
+       var sConstructor = parent.toString(); 
+       var aMatch = sConstructor.match( /\s*function (.*)\(/ );
+       if ( aMatch !== null ) { descendant.prototype[aMatch[1]] = parent; }
+       var m;
+       for (m in parent.prototype) {
+               if (parent.prototype.hasOwnProperty(m)) {
+                       descendant.prototype[m] = parent.prototype[m]; }
+       }
+};
+
 }());