window.eventListenerList={
	list:new Array(),
	addEventListener: function(elem,evt,fun,bubble){
		if(typeof(bubble)=='undefined') bubble=false;
		if(window.attachEvent){
			elem.attachEvent('on' + evt,function(){
				var wEvent=window.event;
				wEvent.target=window.event.srcElement;
				fun(wEvent);
			});
		}
		else{
			elem.addEventListener(evt,fun,bubble);
		}
		if(eventListenerList.list.length==0){
			if(window.attachEvent){
				window.attachEvent('onunload',window.eventListenerList.removeAll);
			}
			else{
				window.addEventListener('unload',window.eventListenerList.removeAll,false);
			}
		}
		eventListenerList.list.push(arguments);
	},
	removeEventListener : function(elem,evt,fun,bubble){
		if(window.detachEvent){
			elem.detachEvent('on' + evt,fun);
		}
		else{
			elem.removeEventListener(evt,fun,bubble);
		}
	},
	removeAll: function(){
		var handler;
		while(handler=window.eventListenerList.list.pop()){
			window.eventListenerList.removeEventListener(handler[0],handler[1],handler[2],handler[3]);
		}
	}
};

