﻿var SBEvent = Class.create();
SBEvent = {
	Pool	: new Array(),

	add: function(obj, evt, listener) {
	    if(! this.find(obj, evt, listener) ) {
		    if(obj.addEventListener) obj.addEventListener(evt.replace("on",""), listener, false);
		    else if(obj.attachEvent) obj.attachEvent(evt, listener);
		    this.Pool.push([obj, evt, listener]);
		}
	},
	remove: function(obj, evt, listener) {
		if(obj.removeEventListener) obj.removeEventListener(evt.replace("on",""), listener, false);
		else if(obj.detachEvent) obj.detachEvent(evt, listener);
		for(var i=0; i<this.Pool.length; i++) {
		    var arr = this.Pool[i];
		    if(obj == arr[0] && evt == arr[1] && listener == arr[2]) {
		        this.Pool.splice(i,1); break;
		    }
		}
	},
	find: function(obj, evt, listener) {
		for(var i=0; i<this.Pool.length; i++) {
		    var arr = this.Pool[i];
		    if(obj == arr[0] && evt == arr[1] && listener == arr[2]) {
		        return true;
		    }
		}
		return false;
	},
	cleanUp: function() {
		//alert("SBEvent.cleanUp()::this.Pool.length=" + SBEvent.Pool.length);
		for(var i=0; i<SBEvent.Pool.length; i++) {
		    var arr = SBEvent.Pool[i];
		    SBEvent.remove(arr[0], arr[1], arr[2]);
		}
	}
};
SBEvent.add(window, "onunload", SBEvent.cleanUp);



// ex) createEventScript("EvtL_MediaEvent", "SeeVideo", $('playerNew').parentNode, "MediaEvent(msg, code)", "", "pl.media_event(msg, code);");
function createEventScript(scID, strObj, scPObj, scEvent, scSrc, scText) {
	if(!scID || $(scID)) return;
    var objES 	= document.createElement("SCRIPT");
    objES.id	= scID;
    objES.type	= "text/javascript";
    objES.htmlFor	= strObj;
    objES.event = scEvent;
    if(scSrc)  objES.src 	= scSrc;
    if(scText) objES.text	= scText;
    scPObj.appendChild(objES);
}
