function Garbage(){}Garbage.init=function(){if(!window._OBJECTS_){window._OBJECTS_=[];window._FUNCTIONS_=[];window._EVENTS_=[];window._CLASSES_=[]}};Garbage.release=function(){if(!window._OBJECTS_){return false}Garbage.release_events();for(var c in window._OBJECTS_){var d=window._OBJECTS_[c];if(typeof d=="function"){continue}window._OBJECTS_[c]=null}window._OBJECTS_=null;for(var c in window._FUNCTIONS_){var b=window._FUNCTIONS_[c];b=null}window._FUNCTIONS_=null;for(var c in window._CLASSES_){var a=window._CLASSES_[c];if(a.dispose){a.dispose()}window._CLASSES_[c]=null}window._CLASSES_=null;return true};Garbage.release_events=function(){var b=window._EVENTS_;for(var a=0;a<b.length;a++){var c=b[a];detach_event(c[0],c[1],c[2])}window._EVENTS_=null};Garbage.push_event=function(d,b,c){Garbage.init();var a=window._EVENTS_.length;window._EVENTS_[a]=[d,b,c]};Garbage.collect=function(d){Garbage.init();var b=this;var c=d._OBJID;if(!c){c=obj_OBJID=window._OBJECTS_.length;window._OBJECTS_[c]=d}var a=b._FUNCID;if(!a){a=b._FUNCID=window._FUNCTIONS_.length;window._FUNCTIONS_[a]=d._FUNCT=b}if(!d._CLOSURES){d._CLOSURES=[]}var e=d._CLOSURES[a];if(e){return e}d=b=null;return window._OBJECTS_[c]._CLOSURES[a]=function(){if(!window._FUNCTIONS_){return}return window._FUNCTIONS_[a].apply(window._OBJECTS_[c],arguments)}};Function.prototype.garbage=Garbage.collect;function event_install(c,b,a){if(c.addEventListener){c.addEventListener(b.substr(2),a.garbage(c),false)}else{if(c.attachEvent){c.attachEvent(b,a.garbage(c))}}Garbage.push_event(c,b,a)}function detach_event(c,b,a){if(c.removeEventListener){c.removeEventListener(b.substr(2),a,false)}else{if(c.detachEvent){c.detachEvent(b,a.garbage(c))}}}function IMPLEMENT_GARBAGE(a){Garbage.init();window._CLASSES_[window._CLASSES_.length]=a}event_install(window,"onunload",Garbage.release);
