var FvkXml = {};

//XML ¹®¼­ ÀÐ¾î¼­ ¸®ÅÏ
FvkXml.getXML = function(sUrl){
	
	var xml;
	
	if(document.implementation && document.implementation.createDocument){ //¸ðÁú¶óÀÏ°æ¿ì
		
		/*
		´Ù¸¥ ¹æ½Ä
		¹®¼­°¡ xml Å¸ÀÔÀÌ ¾Æ´Ò°æ¿ì
		¸ðÁú¶ó¿¡¼­´Â DOMParser ÀÌ¿ë
		*/				
		var xmlHttp = new XMLHttpRequest();
		xmlHttp.open("GET",sUrl, false);
		xmlHttp.send(null);
		
		var parser = new DOMParser();
		xml = parser.parseFromString(xmlHttp.responseText,"text/xml");

		/*
		//¹®¼­°¡ xml Å¸ÀÔÀÌ¿©¾ß ÇÔ
		xml = self.document.implementation.createDocument("","",null);
		xml.async = false;
		xml.load(sUrl);
		
		if(xml.documentElement.nodeName=="parsererror"){
			alert("¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\n"+xml.documentElement.childNodes[0].nodeValue);
			xml = null;
		}
		*/

	}else if(window.ActiveXObject){ //IE ÀÎ °æ¿ì
		xml = new ActiveXObject("Microsoft.XMLDOM");

		xml.validateOnParse = false;
		xml.async = false;
		xml.load(sUrl);
		
		if(xml.parseError.errorCode == -2146697210){
			alert("ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.");
			xml = null;
		}else if (xml.parseError.errorCode != 0) {
			alert(
				"XML Parse Error!\n" +
				xml.parseError.reason +
				xml.parseError.url + "\n" +
				"line:" + xml.parseError.line + " col:" + xml.parseError.linepos + "\n" +
				xml.parseError.errorCode
			);
			xml = null;
		}	
	}	
	return xml;
}


//ÅØ½ºÆ®·Î ÀÐ¾î µéÀÌ±â
FvkXml.getText = function(sUrl){
	
	var txt;
		
	var xmlHttp;

	if (window.ActiveXObject){
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		if (xmlHttp ==  null){
			xmlHttp = new ActiveXObject ("Microsoft.XMLHTTP");            
		}
	}else if (window.XMLHttpRequest){
		xmlHttp = new XMLHttpRequest();
	}			

	xmlHttp.open("GET", sUrl, false);
	
	xmlHttp.send(null);

	txt = xmlHttp.responseText;
	return txt;
}

//Æ¯Á¤ ¹ë·ù°ª °¡Á®¿À±â
FvkXml.getXmlValue = function(sUrl, xPath, attribute){

	var xml = FvkXml.getXML(sUrl); //xml ·Îµù abc.jsp
	if( xml==null ) return "";
		
	var rVal = "";

	var xpath = xPath;  //"/root/menu[@id='"+ sVal + "']"

	var val;
	if( typeof(xml.selectSingleNode)!="undefined" ){ //IE ÀÌ¶ó¸é
		
		try{
			val = xml.selectSingleNode( xpath );
			if(val!=null) rVal = val.getAttribute( attribute );
		}catch(e){
			var msg = "¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\n";
			for(p in e){
				msg += p+":"+e[p]+"\n";
			}
			alert(msg);
		}
		
	}else{ //¸ðÁú¶ó ºê¶ó¿ìÁ®
		try{
			val = document.evaluate(xpath,xml,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);
			if(val.singleNodeValue!=null) rVal = val.singleNodeValue.getAttribute( attribute );
		}catch(e){
			var msg = "¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\n";
			for(p in e){
				msg += p+":"+e[p]+"\n";
			}
			alert(msg);
		}
	}
	
	return rVal;
}


//Æ¯Á¤ ³ëµå°ª °¡Á®¿À±â
FvkXml.getXmlSelectNodes = function(sUrl, xPath){
	
	var xml = FvkXml.getXML(sUrl); //xml ·Îµù
	if( xml==null ) return null;
	
	var xpath = xPath; ///menu/item
	
	var arrResult = [];
	var result;
	if( typeof(xml.selectNodes)!="undefined" ){ //IE ÀÌ¶ó¸é
		result = xml.selectNodes( xpath );
		for (var i=0; i<result.length; i++) {
			arrResult.push(result[i]);
		}
	}else{ //¸ðÁú¶ó ºê¶ó¿ìÁ®
		result = document.evaluate(xpath,xml,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
		for(var i=0;i<result.snapshotLength;i++){
			arrResult.push(result.snapshotItem(i));
		}
	}
	return arrResult;
	
}
