function addEvent(obj, type, fn){ 
	if(obj.addEventListener){
		obj.addEventListener( type, fn, false ); 
	}else if(obj.attachEvent){ 
		var ev = type+fn;
		obj['e'+ev] = fn; 
		obj[ev] = function(){obj['e'+ev]( window.event );} 
		obj.attachEvent('on'+type, obj[ev]); 
	}else{
		var ev="on"+type;
		var oldevent = obj[ev];
		if (typeof oldevent != "function"){			
			obj[ev]=fn;
		}else{			
			obj[ev] = function(){ oldevent();fn();}
		}
	}	
}

function removeEvent( obj, type, fn ){   
	if(obj.removeEventListener){
		obj.removeEventListener( type, fn, false ); 
	}else if(obj.detachEvent){
		ShowDebug("detachEvent on on"+type+" " + obj.id + " - " + obj.tagName);
		try{
			obj.detachEvent( 'on'+type, obj[type+fn] ); 
			ShowDebug("now set to null")
			obj[type+fn] = null; 
			ShowDebug("detachedEvent on " + obj.id + " - " + obj.tagName);
		}catch(e){}
	}else{
		var exfunc = obj["on"+type];		
		if(exfunc==fn){		
			obj["on"+type]=null;
		}
	}
} 