function JSAll() {
	this.objects=new Object(); this.unique=new Unique(); this.register=JSAll_register; this.clobberUID=JSAll_clobberUID;
	function JSAll_register(oObject) {
		if (!this.objects[oObject.oType]) { this.objects[oObject.oType]=new Array(); }
		regUID = this.unique.get(oObject.oType);
		if (oObject.oID!='') {
			for (var si in this.objects) {
				if (this.objects[si][oObject.oID]) { delete this.objects[si][oObject.oID]; this.objects[si][regUID]=oObject; }
			}
		}
		this.objects[oObject.oType][regUID]=oObject; return regUID;
	}
	function JSAll_clobberUID(oObject) {
		for (var si in this.objects) {
			for (var sObject in this.objects[si]) {
				if (this.objects[si][sObject]!=null) { if (this.objects[si][sObject].oID==oObject.oID) { delete this.objects[si][sObject]; } }
			}
		}
	}
}
function Unique() {
	var o = new Object();
	o.m_nVal = 0; o.m_nUnique = Unique.nUnique++; o.get = Unique_get; o.hexval = Unique_hexval; return o;
	function Unique_get(sType) {
		var rVal = new String();
		var newVal = new String();
		for (i = 0; i < sType.length; i++) { newVal += this.hexval(sType.charCodeAt(i)-65); }
		newVal = newVal.substring(0,24);
		for (i=newVal.length-1; i<=22; i++) { newVal="0"+newVal; }
		for (i=0; i<newVal.length; i+=6) { rVal += newVal.substring(i,i+6)+"_";	}
		rVal += this.hexval(65+(this.m_nVal%26))+this.hexval(this.m_nUnique)+"_"+this.hexval(this.m_nVal++);
		return rVal;
	}
	function Unique_hexval(c) { return String("0123456789ABCDEF").charAt((c/16)&0x0F)+String("0123456789ABCDEF").charAt((c/1)&0x0F); }
}

Unique.nUnique = 1;
function JSObj() {
	this.oType=new String("JSObj"); this.oID=new String();this.last_error= new String();this.create=JSObj_create;this.destroy=JSObj_destroy;
	function JSObj_create() { this.oID = jsAll.register(this); }
	function JSObj_destroy() { jsAll.clobberUID(this); }
}

function isIE() {
	var rVal = false;
	try {
		var oDOM = new ActiveXObject("Microsoft.XMLDOM");
		if ((document.all) && (oDOM)) { rVal = true; oDOM = null; }
	} catch(ex) { if (disable_debug_handler == true) { debug(ex); } }
	return rVal;
}
function isNS() {
	var rVal = false;
	try {
		var oNodes = document.getElementsByTagName("A");
		if (oNodes) {
			rVal = true;
			oNodes = null;
		}
	} catch(ex) { if (disable_debug_handler == true) { debug(ex); } }
	return rVal;
}

function addLinkBehaviors() {
	if (isIE()) {
		var oLinks=document.getElementsByTagName("A");
		var nLinkLen=oLinks.length; var si = 0;
		var sAttrib = "";
		while (si < nLinkLen) {
			if (oLinks[si].getAttribute("isData") == "true") {			
				if (isIE()) {					
					oDataA[oDataA.length] = oLinks[si];									
				}
			} else if (oLinks[si].getAttribute("isRollover") == "true") {															
				oLinks[si].bh=new LinkBehavior(oLinks[si], oDataA.length-1);				
			}
			si++;
		}
	}
}

function hideall() { 
if (isIE()) { try { if ((jsAll) && (jsAll.objects) && (jsAll.objects['ContentObj'])) { var oObjs = jsAll.objects['ContentObj']; if (oObjs) { for (i in oObjs) { if (oObjs[i]) { oObjs[i].hide(); }}}}} catch(ex) { if (disable_debug_handler == true) { debug(ex); }}}}
function window_onunload() { try { for (var si in jsAll.objects) { for (var si2 in jsAll.objects[si]) { jsAll.objects[si][si2].destroy();} } CollectGarbage(); } catch(ex) { if (disable_debug_handler == true) { debug(ex); } } }
function window_onscroll() { hideall(); }

function debug(oError) {
	var oCaller = debug.caller.toString();
	oCaller = oCaller.substring(oCaller.indexOf(" "), oCaller.indexOf("{"));
	var sStr = "In function " + oCaller + " :\n" + oError.message + "\n";
	for (var i in oError)
	{
		sStr += i + ": " + oError[i].toString() + "\n";
	}
	//alert(sStr);
}
