window.onload = function () {

	// add the button
	var myButton = document.createElement("input");
	myButton.type="button";
	myButton.value="myButton - click me";
	document.body.appendChild(myButton);
	
	// prepare callback functions
	var myCallback1 = function () {
		alert("myButton has been clicked, myCallback1 triggered with priority 1");
	};
	var myCallback2 = function () {
		alert("myButton has been clicked, myCallback2 triggered with priority 0");
	};
	var myCallback3 = function () {
		alert("myButton has been clicked, myCallback3 triggered with priority 5");
	};
	
	// register the callbacks
	var evId1 = lib.evt.add(myButton, "click", myCallback1, 1);
	var evId2 = lib.evt.add(myButton, "click", myCallback2);
	var evId3 = lib.evt.add(myButton, "click", myCallback3, 5);
	
	// create event removal buttons
	var addEvtRemovalButton = function (evId, btnTitle) {
		var div = document.createElement("div");
		var btn = document.createElement("input");
		btn.type="button";
		btn.value = btnTitle;
		div.appendChild(btn);
		document.body.appendChild(div);
		
		var getRemoveEvClosure = function (evId, div) {
			var removeEv = function () {
				div.style.display = "none"; // hide the button - side effect
				return lib.evt.remove(evId); // remove the event
			};
			return removeEv;
		};
		var removeEv = getRemoveEvClosure(evId, div);
		
		lib.evt.add(btn, "click", removeEv);
		return true;
	};
	addEvtRemovalButton(evId1, "Remove event handler with id " + evId1 + ": myCallback1");
	addEvtRemovalButton(evId2, "Remove event handler with id " + evId2 + ": myCallback2");
	addEvtRemovalButton(evId3, "Remove event handler with id " + evId3 + ": myCallback3");
};

