/**
* Toolbox User Interface javascript toolkit
* Copyright Toolbox Software Corporation 2006, All Rights Reserved
*/
var tbox;
if (!tbox){tbox = {};}
if (!tbox.UI){tbox.UI = {};}

tbox.UI.getElement = function(element)
{
	if (typeof(element) == "string"){
		return document.getElementById(element);
	} else {
		return element;
	}
}
tbox.UI.addEventListener = function (element, eventName, callback, capture)
{
	if (element.addEventListener){
		element.addEventListener(eventName, callback, capture);
	} else if (element.attachEvent){
		element.attachEvent("on" + eventName, callback);
	}
}

tbox.UI.removeEventListener = function (element, eventName, callback, capture)
{
	if (element.removeEventListener){
		element.removeEventListener(eventName, callback, capture);
	} else if (element.detachEvent){
		if (callback != null){
			element.detachEvent("on" + eventName, callback);
		}
	}
}

//getElementsByClassName
tbox.UI.getElementsByClassName = function (element, className){
	var elements = [];
	children = element.getElementsByTagName("*");
	for (x=0;x<children.length;x++){
		child = children[x];
		if (child.className){
			if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))){
				elements.push(child);
			}
		}
	}
	return elements;
}
//Get elements by a specific attribute
tbox.UI.getElementsByAttribute = function (element, attribute){
	var elements = [];
	children = element.getElementsByTagName("*");
	for (x=0;x<children.length;x++){
		child = children[x];
		//getAttribute causes problems with tables in IE6
		if (child.getAttributeNode){
			if (child.getAttributeNode(attribute)){
				elements.push(child);
			}
		}
	}
	return elements;
}

/*
* will parse out the attributes in a tui name:value; string
*/
tbox.UI.parseAttributes = function(strAttributes){
	var arrTemp = strAttributes.split(";");
	var arrAttributes = new Array();
	for (x=0;x<arrTemp.length;x++){
		arrValues = arrTemp[x].split(":");
		//@TODO need to trim the strings
		name = arrValues[0].toString();
		value = eval(arrValues[1]);
		if (value){arrAttributes[name] = value;}
		//alert("--" + value + "--");
	}
	return arrAttributes;
}

//got this code here http://www.quirksmode.org/js/findpos.html
tbox.UI.getPosition = function (obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}