if(typeof(Tools) == "undefined") Tools = {};

//*** This code is copyright 2003 by Gavin Kistner, gavin@refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt

if(window.attachEvent) {
	Tools.attachEvent = function(obj, evt, handler) {
		return obj.attachEvent("on" + evt, handler);
	}
	Tools.detachEvent = function(obj, evt, handler) {
		return obj.detachEvent("on" + evt, handler);
	}
	Tools.fireEvent = function(obj, evtype, evt) {
		return obj.fireEvent("on" + evtype);
	}
	Tools.getEventElement = function(evt) {
		var elem = null;
		evt = evt ? evt : (window.event ? window.event : null);
		if(evt) elem = evt.srcElement;
		return elem;
	}
} else if(window.addEventListener) {
	Tools.attachEvent = function(obj, evt, handler) {
		obj.addEventListener(evt, handler, false);
		return true;
	}
	Tools.detachEvent = function(obj, evt, handler) {
		return obj.removeEventListener(evt, handler, false);
	}
	Tools.fireEvent = function(obj, evtype, evt) {
		return obj.dispatchEvent(evt);
	}
	Tools.getEventElement = function(evt) {
		var elem = null;
		if(evt) elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
		return elem;
	}
} else {
	Tools.attachEvent = function(obj, evt, handler) {
		obj["on" + evt] = handler;
		return true;
	}
	Tools.detachEvent = function(obj, evt, handler) {
		obj["on" + evt] = null;
		return true;
	}
	Tools.fireEvent = function(obj, evtype, evt) {
		obj["on" + evtype]();
		return true;
	}
	Tools.fireEvent = function(obj, evtype, evt) {
		return false;
	}
}

Tools.preventDefault  = function(evt) {
	if(!evt && window.event) evt = window.event;

	if(evt.preventDefault) evt.preventDefault();
	else evt.returnValue = false;
	return false;
}

/*
2003-2006 Bjoern Graf, b.gr@b-cage.net, http://b-cage.net/
*/

Tools.getRelativeByTag = function(obj, rel, tn) {
	tn = tn.toUpperCase();
	while(obj && (!obj.tagName || obj.tagName != tn))
		obj = obj[rel];
	return obj;
}

String.pad = function(txt, pad, width) {
	var r = txt + "";
	while(r.length < width) r = pad + r;
	return r;
}

Tools.performCommand = function(evt) {
	var e = evt.srcElement || evt.target;
	if(e.tagName == "BUTTON" ||
		(e.tagName == "INPUT" && e.type == "button") ||
		(e.tagName == "A" && /_/.test(e.id))) {
		var h = e.id.split("_");
		var o = window;
		for(var i = 0; o && i < h.length; i++) o = o[h[i]];
		if(o) {
			o(evt);
			return Tools.preventDefault(evt);
		}
	}
}
Tools.attachEvent(document, "click", Tools.performCommand);
