function DOMHelper(){}

DOMHelper.prototype.createLink = function(href,text){
	a = document.createElement("a");
	a.setAttribute("href",href);
	t = document.createTextNode(text);
	a.appendChild(t);
	return a;
};

DOMHelper.prototype.addText = function(container,text){
	t = document.createTextNode(text);
	container.appendChild(t);
};

DOMHelper.prototype.deleteChildren = function(elem){
	if(elem.hasChildNodes()){
		for(var m = elem.firstChild; m != null; m = elem.firstChild){
			this.deleteChildren(m);
			elem.removeChild(m);
		}
	}
};

DOMHelper.prototype.addCellToRow = function(row,cellText){
	currentCell = document.createElement("TD");
	currentText = document.createTextNode(cellText);
	currentCell.appendChild(currentText);
	row.appendChild(currentCell);
	return currentCell;
};

DOMHelper.prototype.addEvent = function(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		//eval("obj.on" + evType) = fn;
		return true;
	}
};

DOMHelper.prototype.getEventTrigger = function(e){
	var trigger='';
	if(window.event) {
		trigger= event.srcElement;
	} else if(e.target){
		trigger= e.target;
	}
	if (trigger.nodeType && trigger.nodeType == 3){
		trigger= trigger.parentNode;
	}
	return trigger;
};
DOMHelper.prototype.getElementPosition = function(elem) {
    var offsetTrail = elem;
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
};
function Link(href,text){
	this.linkElement = document.createElement('a');
	this.linkElement.setAttribute("href",href);
	this.linkElement.appendChild(document.createTextNode(text));
}
Link.prototype.setID = function(id){
	this.linkElement.setAttribute("id",id);
};
function List(listElement){
	this.list = listElement;
}
List.prototype.clear = function(){
	dom.deleteChildren(this.list);
};
List.prototype.newItem = function(){
	var listItem = document.createElement("li");
	this.list.appendChild(listItem);
	return listItem;
};
List.prototype.filterBy = function(filterFunction){
	var listItems = this.list.childNodes;
	for(var i = 0; i < listItems.length; i++){
		listItem = listItems[i];
		if(filterFunction(listItem)){
			listItem.style.display = "block";
		} else {
			listItem.style.display = "none";
		}
	}
};

var dom = new DOMHelper();
