function addEventHandler(element, eventName, handler, front) {
	if(element.length && element.constructor == Array) {
		for(var i = 0; i < element.length; i++) {
			addEventHandler(element[i], eventName, handler);
		}
	} else {
		
		//alert(eventName);
	
		var handlers = eventName + "Handlers";
		if(element[handlers]) {
			if(front) element[handlers].unshift(handler);
			else element[handlers].push(handler); 
		} else {
			element[handlers] = [];
			if(element[eventName]) {
				element[handlers].push(element[eventName]);
			}
			if(front) element[handlers].unshift(handler);
			else element[handlers].push(handler);
			
			element[eventName] = (
				function(e) { 
		            return function(e) {
		                for (var i = 0; i < this[handlers].length; i++) {
							this[handlers][i].call(this, e);
						}
					}
		        }
			) ();
		}
	}
}

function removeEventHandler(element, eventName, handler) {
	if(element.length && element.constructor == Array) {
		for(var i = 0; i < element.length; i++) {
			removeEventHandler(element[i], eventName, handler);
		}
	} else {
		var handlers = eventName + "Handlers";
		if(element[handlers]) {
			var i = 0;
			while(i < element[handlers].length) { 
				if(element[handlers][i] == handler) { 
					element[handlers].splice(i, 1);  
				} else {
					i++;
				}
			}
		}
	}
}
