Dom = function(){};

if (typeof(Aprimo) != "undefined")
	Aprimo.Namespace.Add("Aprimo.Dom","Dom");

Dom.cleanNode = function(node)
{
	var a = node.attributes, i, l, n;
	 if (a) {
		l = a.length;
		for (i = 0; i < l; i += 1) {
			n = a[i].name;
			if (typeof(node[n]) == 'function') {
				node[n] = null;
			}
		}
	}

}

Dom.purgeEvents = function(node)
{
	if(node)
	{
		var q = new Array();
		q.push(node);
		while(q.length > 0)
		{
			var x = q.pop();
			Dom.cleanNode(x);
			for(var i = 0;i<x.childNodes.length;i++)
				q.push(x.childNodes[i]);
			x = null;
		}
		
		q = null;
		/*var a = node.attributes, i, l, n;
	    if (a) {
	        l = a.length;
	        for (i = 0; i < l; i += 1) {
	            n = a[i].name;
	            if (typeof node[n] == 'function') {
	                node[n] = null;
	            }
	        }
	    }
	    a = node.childNodes;
	    if (a) {
	        l = a.length;
	        for (i = 0; i < l; i += 1) {
	            Dom.purgeEvents(node.childNodes[i]);
	        }
	    }*/
	}
}

Dom.appendChild = function(newNode, referenceNode) {
	if (!newNode || !referenceNode) 
	   return null;
	if (referenceNode.documentElement) {
		return referenceNode.documentElement.appendChild(newNode); 
    } else {
		return referenceNode.appendChild(newNode);
    }
}

Dom.removeChildNodes = function(node)
{
	if (node)
	{		
		while (node.childNodes.length > 0)
			Dom.removeNode(node.childNodes[node.childNodes.length - 1]);
	}
}

Dom.setText = function(node, text) {
	if (node) {
		if (typeof node.textContent != "undefined")
			node.textContent = text;
		else
			node.innerText = text;
	}
}

Dom.getText = function(node) {
	if (node) {
		if (typeof node.textContent != "undefined")
			return node.textContent;
		else
			return node.innerText;
	}
}

Dom.insertBefore = function(nodeToInsertInto, nodeToInsert, referenceNode)
{
	nodeToInsertInto.insertBefore(nodeToInsert, referenceNode);
}

Dom.insertAfter = function(nodeToInsertInto, nodeToInsert, referenceNode)
{
	var nextSib = referenceNode.nextSibling;
	if (nextSib == null)
		Dom.appendChild(nodeToInsert, nodeToInsertInto);
	else
		nodeToInsertInto.insertBefore(nodeToInsert, nextSib);
}

Dom.getParentNode = function(node)
{
	if(typeof node.parentNode != "undefined")
		return node.parentNode;
	else
		return node.parentElement;
}

Dom.removeNode = function(node,purge)
{
	//Dev Note..the whole purge event concept seemed to have
	//adverse effects on IE 7
	if(typeof purge == "undefined")
		purge = true;
		
	//if(purge)
	//	Dom.purgeEvents(node);
		
	Dom.getParentNode(node).removeChild(node);
}

Dom.swapNodes = function(node1,node2) 
{
	var tmp = node1.cloneNode(1);
	var parent = node1.parentNode;

	node2 = parent.replaceChild(tmp,node2);

	parent.replaceChild(node2,node1);

	parent.replaceChild(node1,tmp);
	tmp = null;
}

Dom.getKeyCode = function(event)
{
	if (event.type === 'keypress') 
		return event.charCode || event.keyCode;
	else
		return event.keyCode;
}

Dom.createElement = function(tag,id,cssClass)
{
	var t = document.createElement(tag);
	if(id)
		t.id = id;
	if(cssClass)
		t.className = cssClass;
	return t;
}

Dom.createTextNode = function(value)
{
	if(value)
	{
		return document.createTextNode(value);
	}
	else
	{
		return document.createTextNode('\u00A0');
	}
}

Dom.setAttribute = function(element,attribute,value)
{
	if(attribute == "class")
	{
		element.setAttribute((document.all ? 'className' : 'class'), value)
	}
	else
		element.setAttribute(attribute,value);
}

Dom.appendRowToTable = function(table, id, cssClass, index)
{
	if (table)
	{	
		var newRow = null;
		if (index)
			newRow = table.insertRow(index);
		else
			newRow = table.insertRow();
		newRow.id = id;
		newRow.className = cssClass;
		return newRow;
	}
}

Dom.HideRows = function(id)
{
	var rows = document.getElementsByTagName('tr');
	for(var i = 0;i<rows.length;i++)
	{
		if(rows[i].getAttribute('id') == id)
			rows[i].style.display = 'none';
	}
}

Dom.ShowRows = function(id)
{
	var rows = document.getElementsByTagName('tr');
	for(var i = 0;i<rows.length;i++)
	{
		if(rows[i].getAttribute('id') == id)
			rows[i].style.display = '';
	}
}


