if (typeof hoob != "object")
	hoob = new Object();

hoob.userAgent = navigator.userAgent.toLowerCase();
hoob.win = (hoob.userAgent.indexOf("win") > -1);
hoob.mac = (hoob.userAgent.indexOf("mac") > -1);
hoob.ie = (hoob.userAgent.indexOf("msie") > -1);
hoob.w3c = (document.getElementById && !hoob.ie);
hoob.opera = (hoob.userAgent.indexOf("opera") > -1);
hoob.safari = (hoob.userAgent.indexOf("safari") > -1);
hoob.ns6 = (hoob.userAgent.indexOf("netscape6") > -1);
hoob.version = (hoob.ie) ? parseFloat(navigator.appVersion.match(/MSIE\s(\d+\.\d+)/)[1]) : null;
hoob.ie7 = (hoob.ie && hoob.version > 6);

hoob.getObj = function(strLayer) {
	if(typeof(strLayer) == "object") return strLayer;
	var elmLayer = document.getElementById(strLayer);
	if (!elmLayer)
		elmLayer = document.getElementsByName(strLayer)[0];
	return elmLayer;
}

hoob.show = function() {
	for (var i=0; i<hoob.show.arguments.length; i++) {
		if ((elmLayer=hoob.getObj(hoob.show.arguments[i])))
			elmLayer.style.visibility = "visible";
	}
}

hoob.hide = function() {
	for (var i=0; i<hoob.hide.arguments.length; i++) {
		if ((elmLayer=hoob.getObj(hoob.hide.arguments[i])))
			elmLayer.style.visibility = "hidden";
	}
}

hoob.getX = function(strLayer,blnGlobal) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	var currentX = elmLayer.offsetLeft;
	if (blnGlobal) {
		while (elmLayer.offsetParent) {
			elmLayer = elmLayer.offsetParent;
			currentX += elmLayer.offsetLeft;
		}
	}
	return currentX;
}

hoob.getY = function(strLayer,blnGlobal) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	var currentY = elmLayer.offsetTop;
	if (blnGlobal) {
		while (elmLayer.offsetParent) {
			elmLayer = elmLayer.offsetParent;
			currentY += elmLayer.offsetTop;
		}
	}
	return currentY;
}

hoob.getW = function(strLayer) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	if (window.getComputedStyle) {
		var style=getComputedStyle(elmLayer, null);
		return parseInt(style.getPropertyValue('width'));
	}
	else if (elmLayer.style.pixelWidth)
		return elmLayer.style.pixelWidth;
	else if(elmLayer.offsetWidth)
		return elmLayer.offsetWidth;
}

hoob.getH = function(strLayer) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	if (window.getComputedStyle) {
		var style=getComputedStyle(elmLayer, null);
		return parseInt(style.getPropertyValue('height'));
	}
	else if (elmLayer.style.pixelHeight)
		return elmLayer.style.pixelHeight;
	else if(elmLayer.offsetHeight)
		return elmLayer.offsetHeight;
}

hoob.moveTo = function(strLayer, x, y, bRight) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	if (bRight) {
		if (x || x==0) elmLayer.style.right = x + "px";
	} 
	else {
		if (x || x==0) elmLayer.style.left = x + "px";
	}
	if (y || y==0) elmLayer.style.top = y + "px";
}

hoob.moveBy = function(strLayer, x, y, bRight) {
	hoob.moveTo(strLayer, hoob.getX(strLayer) + x, hoob.getY(strLayer) + y, bRight);
}

hoob.clip = function(strLayer,t,r,b,l) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	elmLayer.style.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)";
}

hoob.setOpacity = function(strLayer, intValue) {
	if (!(objLayer=hoob.getObj(strLayer)))
		return false;
	if (hoob.ie)
		objLayer.style.filter = "alpha(opacity=" + intValue + ")";
	else if (hoob.w3c) {
		objLayer.style.MozOpacity = intValue/100;
	}
}

hoob.addEvent = function(strLayer, strEvent, strFunction, bRemove) {
	if (!(elmLayer=hoob.getObj(strLayer)))
		return false;
	if (bRemove) {
		if (elmLayer.removeEventListener) {
			elmLayer.removeEventListener(strEvent, eval(strFunction), false);
		} else if (elmLayer.detachEvent) {
			elmLayer.detachEvent("on" + strEvent, eval(strFunction));
		}
	}
	else {
		if (elmLayer.addEventListener) {
			elmLayer.addEventListener(strEvent, eval(strFunction), false);
		} else if (elmLayer.attachEvent) {
			elmLayer.attachEvent("on" + strEvent, eval(strFunction));
		} else { // For browsers that don't have any of the addEventListener or attachEvent methods, we create a attachEvent method (NN4.x and IE 5.x on Mac)
			if (!eval("elmLayer.addedEventFunctions_" + strEvent))
				eval("elmLayer.addedEventFunctions_" + strEvent + " = ''");
			eval("elmLayer.addedEventFunctions_" + strEvent + " += '" + strFunction + "(); '");
			eval("elmLayer.on" + strEvent + " = new Function('" + eval("elmLayer.addedEventFunctions_" + strEvent) + "')");
		}
	}
}

hoob.getElementsByAttribute = function (strAttribute, strSearchValue, elmLayer, strTagName, bParentAxis, bPartialMatch) {
	strTagName = strTagName || "*";
	elmLayer = hoob.getObj(elmLayer) || document;
	var arElements = [];	
	if (bParentAxis) {
		// Look for parents
		while ((elmLayer = elmLayer.parentNode)) {
			var sAttrValue = elmLayer.getAttribute(strAttribute);
			if ((!strTagName || elmLayer.nodeName == strTagName) && 
				((strAttribute == "class" && (elmLayer.className == strSearchValue || (bPartialMatch && elmLayer.className.indexOf(strSearchValue) > -1))) ||
				(strSearchValue && (elmLayer.getAttribute(strAttribute) == strSearchValue || (bPartialMatch && sAttrValue && sAttrValue.indexOf(strSearchValue) > -1))) || 
				(!strSearchValue && sAttrValue))) {
					arElements.push(elmLayer);
			}
		}
	}
	else {
		// Look for children
		var arAllElements = elmLayer.getElementsByTagName(strTagName);
		var arElements = [];
		for (var i=0; i<arAllElements.length; i++) {
			var sAttrValue = arAllElements[i].getAttribute(strAttribute);
			if ((strAttribute == "class" && (arAllElements[i].className == strSearchValue || (bPartialMatch && arAllElements[i].className.indexOf(strSearchValue) > -1))) || 
				(strSearchValue && (sAttrValue == strSearchValue || (sAttrValue && sAttrValue.indexOf(strSearchValue) > -1))) ||
				(!strSearchValue && sAttrValue)) {
					arElements.push(arAllElements[i]);
			}
		}
	}
	return arElements.slice(0);
}

hoob.elementGetElementsByName = function (strName, strTagName, elmLayer) {
	strTagName = strTagName || "*";
	elmLayer = elmLayer || document;
	var arAllElements = elmLayer.getElementsByTagName(strTagName);
	var arElements = [];
	for (var i=0; i<arAllElements.length; i++) {
		if (arAllElements[i].name == strName)
			arElements[arElements.length] = arAllElements[i];
	}
	return arElements.slice(0);
}

hoob.getStyle = function (strLayer, sStyle) {
	if (!(elmLayer=hoob.getObj(strLayer))) return false;
	if (elmLayer.currentStyle)
		return elmLayer.currentStyle[sStyle];
	else if (document.defaultView && document.defaultView.getComputedStyle) {
		var oCss = document.defaultView.getComputedStyle(elmLayer, "");
		if (oCss)
			return document.defaultView.getComputedStyle(elmLayer, "").getPropertyValue(sStyle);
	}
	else if (window.getComputedStyle)
		return getComputedStyle(elmLayer, "").getPropertyValue(sStyle);
	else if (elmLayer.style)
		return elmLayer.style[sStyle];
}

hoob.addCssRule = function(sSelector, sProperty) {
	if (!(hoob.ie && hoob.win)) {
		var arStyles = document.getElementsByTagName("style");
		if (arStyles && arStyles.length > 0 && document.createTextNode) {
			var oLastStyle = arStyles[arStyles.length - 1];
			var oRule = document.createTextNode(sSelector + " {" + sProperty + ";}");
			oLastStyle.appendChild(oRule);
		}
	}
	else if (document.styleSheets && document.styleSheets.length > 0) {
		var oLastStyle = document.styleSheets[document.styleSheets.length - 1];
		if (typeof oLastStyle.addRule == "object"){
			oLastStyle.addRule(sSelector, sProperty);
		}
	}
}



