// ******************************************************
//    Javascript¿¡¼­ Ã³¸®µÇ´Â XML °ü·Ã ÇÔ¼ö Á¤ÀÇ
//
//    Mozilla¿Í IEÀÇ XML°ü·Ã Ã³¸® ¹æ½ÄÀÌ ´Þ¶ó¼­ °¢ ÇüÅÂº°·Î Ã³¸® ÇÔ¼ö¸¦ Àç Á¤ÀÇ
//    
// ******************************************************


// ******************************************************
// XML Data Function
// ******************************************************
	// Æ¯Á¤ NodeÀÇ Text °ªÀ» ÀÐ¾î ¿À´Â ºÎºÐ
	function node_val (xnode)
	{
		var ret_val = "";

		if (_get_BrowserVersion() == "IE")
		{
			ret_val = xnode.firstChild.text;		
		}
		else
		{
			ret_val = xnode.firstChild.nodeValue;
		}

		return ret_val;
	}

	function path_val(objxml, xpath)
	{
		var ret_val = "";

		if (objxml) {
			var single_node = objxml.documentElement.selectSingleNode(xpath);
			if (single_node) {
				ret_val = node_val(single_node);
			}
		}

		return ret_val;
	}

// ******************************************************
// Error ¸Þ½ÃÁö XMLµ¥ÀÌÅ¸¸¦ Ã³¸®ÇÏ´Â ºÎºÐ
// ******************************************************
	function retxmlErrChk(xml_doc)
	{
		var err_chk = true;

		if (xml_doc.documentElement && xml_doc.documentElement.nodeName == "error")
		{
			var key_items = xml_doc.selectSingleNode ("/error/desc");

			if (key_items)
			{
				err_chk = false;
			}
		}

		return err_chk;
	}

// ******************************************************
// ¾Ë¸² ¸Þ½ÃÁö XMLµ¥ÀÌÅ¸¸¦ Ã³¸®ÇÏ´Â ºÎºÐ
// ******************************************************
	function retxmlInfoMsg(xml_doc)
	{
		if (xml_doc.nodeName == "info")
		{
			var key_items = xml_doc.selectSingleNode ("/info/desc");
	
			if (key_items)
			{
				alert (node_val (key_items));
			}
		}
	}

// ******************************************************
// XMLµ¥ÀÌÅ¸¸¦ ¹®ÀÚ¿­ Çü½ÄÀ¸·Î ¸®ÅÏÇØÁÖ´Â ºÎºÐ
// ******************************************************
	function retxmlInfoResult(xml_doc)
	{
		var retval = "";
		if (xml_doc.nodeName == "info")
		{
			var key_items = xml_doc.selectSingleNode ("/info/desc");
	
			if (key_items)
			{
				 retval = node_val (key_items);
			}
		}
		return retval;
	}

// ******************************************************
// XML NodeÀÇ µ¥ÀÌÅ¸¸¦ ¹è¿­·Î º¯È¯
// ******************************************************
	function getNodeToArray(xml_obj, sel_nodes)
	{
		if (xml_obj)
		{
			var xml_doc = xml_obj;

			if (retxmlErrChk (xml_doc))
			{
				var xml_items = xml_doc.selectNodes (sel_nodes);		
				
				var arr_data = new StrBuf();
				
				//alert(xml_items.length); 
				//alert(  xml_items[0].childNodes.length);
				//alert(  node_val (xml_items[0].childNodes[1])); 
				for (i=0; i < xml_items.length; i++)
				{
					if (xml_items[i].childNodes.length > 1)
					{
						var arr_sub = Array();

						for (j=0; j < xml_items[i].childNodes.length; j++)
						{
							alert(node_val (xml_items[i].childNodes[j]));
							arr_sub[j] = node_val (xml_items[i].childNodes[j]);
							//arr_data.add (node_val(xml_items[i].childNodes[j]);
						}
						
						arr_data.add (arr_sub);
					}
					else 
					{
						alert(node_val (xml_items[i]));
						arr_data.add (node_val (xml_items[i]));
					}
				}
				
				return arr_data.get();
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}

// ******************************************************
// °¢ ºê¶ó¿ìÁ®º° XML Ã³¸®°¡ ´Ù¸£±â ¶§¹®¿¡ °¢ ºê¶ó¿ìÁ®ÀÇ Æ¯¼º¿¡ ¸Âµµ·Ï Prototype¸¦ Àç Á¤ÀÇÇØ ÁØ´Ù.
//
//   selectNodes / selectSingleNodeÀÇ °æ¿ì¿¡´Â 
//   Mozilla¿¡¼­´Â Á÷Á¢ Áö¿øÀ» ÇÏÁö ¾Ê±â ¶§¹®¿¡ µû·Î Á¤ÀÇÇØ ÁÜ
// ******************************************************
	function setEachBrowserPrototype()
	{
		if (_get_BrowserVersion() == "IE")
		{
			
		}
		else
		{
			// ******************************************************
			// Mozilla¸¦ À§ÇÑ selectNodes / selectSingleNode ¸Þ¼­µå Àç Á¤ÀÇ
			// ******************************************************

			// XML Document Element "selectNodes"
			XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
			{
				if( !xNode ) { xNode = this; } 

				var oNSResolver = this.createNSResolver(this.documentElement);
				var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
				var aResult = [];
				for( var i = 0; i < aItems.snapshotLength; i++)
				{
					aResult[i] =  aItems.snapshotItem(i);
				}

				return aResult;
			}

			// XML Document Element "selectSingleNode"
			XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
			{
				if( !xNode ) { xNode = this; } 

				var xItems = this.selectNodes(cXPathString, xNode);
				if( xItems.length > 0 )
				{
					return xItems[0];
				}
				else
				{
					return null;
				}
			}

			// XML Element "selectNodes"
			Element.prototype.selectNodes = function(cXPathString)
			{
				if(this.ownerDocument.selectNodes)
				{
					return this.ownerDocument.selectNodes(cXPathString, this);
				}
				else{throw "For XML Elements Only";}
			}

			// XML Element "selectSingleNode"
			Element.prototype.selectSingleNode = function(cXPathString)
			{	
				if(this.ownerDocument.selectSingleNode)
				{
					return this.ownerDocument.selectSingleNode(cXPathString, this);
				}
				else{throw "For XML Elements Only";}
			}
		}
	}
