// namespace : webon.js.nav
// object : null(Xml Methods)
// version : 1.0.0
// modify : 20/09/2004

String.prototype.xmlFilter=String_xmlFilter;

var isIE=document.all!=null?true:false;
var isNS6=document.getElementById!=null && document.all==null?true:false;

function String_xmlFilter(){
	var result="";
	for(var i=0;i<this.length;i++){
		var c=this.charAt(i);
		switch(c){
			case "\"":
				result+="&quot;";
				break;
			case "&":
				result+="&amp;";
				break;				
			case "<":
				result+="&lt;";
				break;
			case ">":
				result+="&gt;";
				break;
			case "'":
				result+="&apos;";
				break;			
			default:
				result+=c;
				break;
		}
	}
	return result;
}

function loadXmlDoc(path){
	var doc=null;
	if(isIE){
		doc=new ActiveXObject("Microsoft.XMLDOM");
	}else if(isNS6){
		doc=document.implementation.createDocument("", "xmlDoc", null);
		
	}
	doc.async=false;
	doc.load(path);
	if(doc.documentElement==null)return null;
	else return doc;
}


function selectSingleNode(node,path){
	var nodeList=selectNodes(node,path);
	if(nodeList==null)return null;
	else if(nodeList.length==0)return null;
	else return nodeList[0];
}

function selectNodes(node,path){
	//if(isIE)return node.selectNodes(path);
	//else if(isNS6){
	
	var tagNames=path.split("/");
	var i=0;
	var nextNode=node;
	var nodeList=new Array();
	while(i<tagNames.length){
		
		nodeList=selectChildNodesByTagName(nextNode,tagNames[i]);
		if(nodeList.length==0)return nodeList;
		nextNode=nodeList[0];
		i++;
	}
	return nodeList;
	//}
}

function selectChildNodesByTagName(node,tagName){
	var	nodeList=new Array();
	if(tagName.indexOf("@")==0){
		tagName=tagName.substring(1,tagName.length);
		var n=node.getAttributeNode(tagName);
		if(n!=null)nodeList[0]=n;
		
	}else{
		for(var i=0;i<node.childNodes.length;i++){
			var n=node.childNodes.item(i);
			if(n.nodeName==tagName && n.nodeType==1){
				nodeList[nodeList.length]=n;
			}
		}
	}
	
	return nodeList;
}


function getNodeValue(node,path,defaultValue){
	var n=selectSingleNode(node,path);
	if(n==null)return defaultValue;
	else return n.nodeValue;
}

function setNodeValue(node,name,value){
	if(value==null)return;
	var n=node.selectSingleNode(name);
	if(n==null){
		n=xmlDoc.createElement(name);
		node.appendChild(n);
	}
	n.text=value;
}

function setAttrValue(node,attrName,attrValue){
	if(attrValue==null)return;
	if(node==null)return;
	var attr=node.attributes.getNamedItem(attrName);
	if(attr==null){
		attr=xmlDoc.createAttribute(attrName);
		node.attributes.setNamedItem(attr);
	}
	attr.value=attrValue;
}

function getAttrValue(node,attr,defaultValue){
	var n=node.attributes.getNamedItem(attr);
	if(n==null)return defaultValue;
	else return n.nodeValue;
}
