-// (c) Benoît PIN 2006-2009
+// (c) Benoît PIN 2006-2014
// http://plinn.org
// Licence GPL
//
// Meta functions for events management.
var addListener; /* (ob, eventName, listenerFunction, group) add event listener eventName without "on" prefix.
- * optionally, listeners can be grouped to make removing convenient.
+ * optionally, listeners can be grouped to make removing convenient.
*/
var removeListener; // (ob, eventName, listenerFunction, group) remove event listener.
var removeGroupListeners; // (group) remove all listeners in group.
* the node came from a foreign document (eg. XmlHttpRequest xml reponse)
* 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(){
disablePropagation = _build_disablePropagation();
getWindowWidth = _build_getWindowWidth();
getWindowHeight = _build_getWindowHeight();
+ getWindowScrollX = _build_getWindowScrollX();
+ getWindowScrollY = _build_getWindowScrollY();
clearSelection = _build_clearSelection();
}
}
}
+function _build_getWindowScrollX() {
+ if (window.scrollX !== undefined) {
+ return function(){
+ return window.scrollX;
+ };
+ }
+ else {
+ return function(){
+ return document.documentElement.scrollLeft;
+ };
+ }
+}
+
+function _build_getWindowScrollY() {
+ if (window.scrollY !== undefined) {
+ return function(){
+ return window.scrollY;
+ };
+ }
+ else {
+ return function(){
+ return document.documentElement.scrollTop;
+ };
+ }
+}
+
function _build_clearSelection() {
if (document.selection) {
return function() {
}
}
-
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;
}
};
-if (browser.isIE) {
+if (browser.isIE10max) {
_setAttribute = function(e, name, value) {
// workarround IE lack of dom implementation.
switch(name.toLowerCase()) {
}
};
var reCompoundPropName = /^\s*([^\-]+)\-([a-z])([a-z]+)\s*$/;
- var _capitalizeCssPropName = function (s, g1, g2, g3) { // gN args match above regexp groups
- if(g2) {
- return g1 + g2.toUpperCase() + g3;}
+ var _capitalizeCssPropName = function (s) {
+ var g = reCompoundPropName.exec(s);
+ if(g) {
+ return g[1] + g[2].toUpperCase() + g[3];}
else {
return s;}
};