/* #############################################################################

NS: TESCO.system.DOM.node
	static: yes

dependancies:
	TESCO

############################################################################# */

TESCO.system.DOM.node = new function() {
	this.VERSION = "1.0.6";
	this.NAME = "TESCO.system.DOM.node";

	this.create = function(nodeName, textValue, context, ns) {
		if(nodeName) {
			var oNode;
			if(!context) {
				context = document;
			}
			if(!ns && ns !== "") {
				ns = "http://www.w3.org/1999/xhtml"
			}
			if(context.createElementNS) {
				oNode = context.createElementNS(ns, nodeName);
			} else {
				oNode = context.createElement(nodeName);
			}
			if(textValue) {
				TESCO.system.DOM.node.setTextValue(oNode, textValue);
			}
		}
		
		return oNode;
	}

	this.createText = function(textValue, context) {
		if(!context) {
			context = document;
		}
		return context.createTextNode(textValue);
	}

	this.setTextValue = function(node, textValue) {
		if(node.nodeType == 3) {	// Text node
			node.nodeValue = textValue;
		} else {
			while(node.firstChild) {
				node.removeChild(node.firstChild);
			}
			node.appendChild(this.createText(textValue));
		}
	}
	
	this.getTextValue = function(node) {
		try {
			if(node.innerText) {
				return node.innerText;
			} else {
				return node.textContent;
			}
		} catch(e) {
			return node.innerText;
		}
	}

	this.getTextValueNS = function(prefix, local, parentElem, index) {
		var result = TESCO.system.DOM.node.getNS(prefix, local, parentElem, index);
		if(result) {
			if (result.childNodes.length > 1) {
				return result.childNodes[1].nodeValue;
			} else {
				return result.firstChild.nodeValue;    		
			}
		} else {
			return "";
		}
	}
	
	this.getNS = function(prefix, local, parentElem, index) {
		var result = null;
		if(prefix && window.ActiveXObject) {
			result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
		} else {
			result = parentElem.getElementsByTagName(local)[index];
		}
		return result;
	}
	
	this.createAttribute = function(name, context, ns) {
		if(name) {
			var oNode;
			if(!context) {
				context = document;
			}
			if(!ns && ns !== "") {
				ns = "http://www.w3.org/1999/xhtml"
			}
			if(context.createAttributeNS) {
				oNode = context.createAttributeNS(ns, name);
			} else {
				oNode = context.createAttribute(name);
			}
		}
		
		return oNode;
	}
	
	this.setNamedItem = function(attribute, context) {
		if(context.setNamedItemNS) {
			return context.setNamedItemNS(attribute);
		} else {
			return context.setNamedItem(attribute);
		}
	}
}
