Array.prototype.inArray = function (value) { var i; for (i=0; i < this.length; i++) { if (this[i] === value) { return true;} } return false; }; function addEvent( obj, type, fn ) { if (obj.addEventListener) { obj.addEventListener( type, fn, false ); EventCache.add(obj, type, fn);} else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } obj.attachEvent( "on"+type, obj[type+fn] ); EventCache.add(obj, type, fn);} else {obj["on"+type] = obj["e"+type+fn];} } var EventCache = function(){ var listEvents = []; return { listEvents : listEvents, add : function(node, sEventName, fHandler){ listEvents.push(arguments); }, flush : function(){ var i, it; for(i = listEvents.length - 1; i >= 0; i = i - 1){ it = listEvents[i]; if(it[0].removeEventListener){ it[0].removeEventListener(it[1], it[2], it[3]);}; if(it[1].substring(0, 2) != "on"){it[1] = "on" + it[1];}; if(it[0].detachEvent){it[0].detachEvent(it[1], it[2]);}; it[0][it[1]] = null;}; } };}(); addEvent(window,'unload',EventCache.flush);