back to devpro   download
// (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;
};
back to devpro   download
Creative Commons License