// (C) Andrea Giammarchi [www.devpro.it]
// Fake (and incomplete) DOM Object, requires JSL (http://www.devpro.it/JSL/)
DOM = window.DOM || {};
if(!DOM.eventsList)DOM.eventsList = {
DOMActivate :"ondomactivate",
DOMAttrModified :"onattrmodified",
DOMCharacterDataModified:"oncharacterdatamodified",
DOMFocusIn :"ondomfocusin",
DOMFocusOut :"ondomfocusout",
DOMMouseScroll :"onmousewheel",
DOMNodeInserted :"onnodeinserted",
DOMSubtreeModified :"onsubtreemodified",
NodeInsertedIntoDocument:"onnodeinsertedintodocument"
};
if(!DOM.elementsList)DOM.elementsList = [];
if(!DOM.elementsManager)DOM.elementsManager = function(element, type, callback){
var i = 0;
if(!DOM.elementsList.some(function(obj, j){var b = obj.node === element; if(b)i = j; return b}))
i = DOM.elementsList.push({node:element,events:{}}) - 1;
callback(DOM.elementsList[i], type);
};
if(!DOM.addEventListener)DOM.addEventListener = function(element, type, listener, useCapture) {
function attachEvent(element, type) {
if(!element.events[type])
element.events[type] = [];
if(!element.events[type].some(function(lst){return lst===listener}))
element.events[type].push(listener);
element.node[type] = function(event) {
element.events[type].forEach(
function(listener){
if(event) listener.call(element.node, event);
else listener.call(element.node);
}
)
};
};
if(DOM.eventsList[type]) {
if(element.addEventListener && !window.opera)
element.addEventListener(type, listener, !!useCapture);
else
DOM.elementsManager(element, DOM.eventsList[type], attachEvent);
}
else {
if(element.addEventListener)
element.addEventListener(type, listener, !!useCapture);
else
DOM.elementsManager(element, "on".concat(type), attachEvent);
};
return element;
};
if(!DOM.removeEventListener)DOM.removeEventListener = function(element, type, listener, useCapture) {
function detachEvent(element, type) {
if(element.events[type])
element.events[type] = element.events[type].filter(function(lst){return lst!==listener});
};
if(DOM.eventsList[type]) {
if(element.removeEventListener && !window.opera)
element.removeEventListener(type, listener, !!useCapture);
else
DOM.elementsManager(element, DOM.eventsList[type], detachEvent);
}
else {
if(element.removeEventListener)
element.removeEventListener(type, listener, !!useCapture);
else
DOM.elementsManager(element, "on".concat(type), detachEvent);
};
return element;
};