/*
 *  author : ±èÀº¼®
 *  email : ultragas@naver.com
 *  comment : ¹«´Ü¹èÆ÷ ±ÝÁö
 *  comment2 : dom xml object ÀÇ µ¥ÀÌÅ¸ È°¿ëÀ» ¿ëÀÌÇÏ°Ô ÇÏ±â À§ÇÑ in,out ¹× ±âÅ¸ ÇÔ¼ö ÀÛ¼º
 *
 *  version : 20080108
 *
*/


/* org xml °´Ã¼Áß xecure·Î ¾ÏÈ£È­µÇ¾î ÀÖ´Â nodetext ºÎºÐ Ã³¸® */
/* xecure ¾ÏÈ£È­¸¸ Ç®°í ¿øº» org dom Ãâ·ÂÀ» À§ÇÑ xmlDoc °´Ã¼ »ý¼º ¸ñÀû */

var DOM_DOC = "Microsoft.XMLDOM"
//var DOM_DOC = "Msxml2.DOMDocument.4.0"
var HTTP_DOC = ""


function xmlDoc(xml)
{


	this.xgetXmlDoc = xgetXmlDoc;
	this.xecureDecode = xecureDecode;
	this.newXml = newXml;
	this.xml = this.newXml(xml,false);


	function xecureDecode(doc)
	{
		var tmp = doc.childNodes;

		for(var i=0 ; i<tmp.length ; i++)
		{
			if(tmp[i].nodeType != "1") tmp[i].text = BlockDec(tmp[i].text);
			else this.xecureDecode(tmp[i]);
		}

	}


	function xgetXmlDoc()
	{
		var doc = this.xml.documentElement;
		this.xecureDecode(doc);
		return this.xml;
	}


	function newXml(xslFile, async)
	{
		var xsl = new ActiveXObject(DOM_DOC);
		xsl.async = async;
		xsl.load(xslFile);

		return xsl;
	}


}//xmlDoc





//string Çü½ÄÀÇ xml À» ÀÌ¿ëÇØ¼­ xml dom À» »ý¼ºÇÑ´Ù.
function loadTextXML(xmlStr, async)
{
	if(async == undefined || async == null || async == "") async = false;
	var doc = new ActiveXObject(DOM_DOC);
	doc.async = async;
	doc.loadXML(xmlStr);

	return doc;
}//loadTextXML



//xsl ÆÄÀÏ ·ÎµåÇÑ °´Ã¼ ¸®ÅÏ
function xslLoad(xslFile, async)
{
	var xsl = new ActiveXObject(DOM_DOC);
	xsl.async = async;
	xsl.load(xslFile);

	return xsl;
}//xslLoad




function newDom(root)
{
	var dom = new ActiveXObject(DOM_DOC);
	var newEmt = dom.createElement(root);
	dom.appendChild(newEmt);
	return dom;
}



//xml dom È°¿ëÀ» À§ÇÑ dataset class
function DomDataset(xmlDom)
{

	this.xmlDom = xmlDom;
	this.root = xmlDom.documentElement;




	//idx ¹øÂ° keyElementÀÇ text ¸®ÅÏ
	function get(key, idx)
	{
		var dList = this.xmlDom.getElementsByTagName(key);

		if(!dList) return '';
		if(idx == null ) idx = 0;
		var val;

		try
		{
			val = dList.item(idx).text;
		}
		catch (e)
		{
			return '';
		}

		return val.toString().replace(/(^\s*)|(\s*$)/g, "");
	}



	//idx ¹øÂ° keyElement ¸®ÅÏ
	function getEmt(key, idx)
	{
		var dList = this.xmlDom.getElementsByTagName(key);

		if(!dList) return '';
		if(idx == null ) idx = 0;

		return dList.item(idx);
	}



	//keyElement Ä«¿îÆ® ¸®ÅÏ
	function getCount(key)
	{
		var dList = this.xmlDom.getElementsByTagName(key);
		if(!dList) return 0;
		return dList.length;
	}



	//keyElement Ãß°¡
	function put(key, content)
	{
		var newEmt = this.xmlDom.createElement(key);
		var textnode = this.xmlDom.createTextNode(content);
		newEmt.appendChild(textnode);
		this.root.appendChild(newEmt);
	}



	//keyElement °´Ã¼ »ý¼ºÈÄ ¸®ÅÏ
	function getNewEmt(key, content)
	{
		var newEmt = this.xmlDom.createElement(key);
		var textnode = this.xmlDom.createTextNode(content);
		newEmt.appendChild(textnode);

		return newEmt;
	}



	//oldEmt¸¦ newEmt·á ±³Ã¼
	function replace(newEmt, oldEmt)
	{
		this.root.replaceChild(newEmt, oldEmt);
	}




	//keyElement °¡ ÀÖÀ¸¸é replace ¾øÀ¸¸é put
	function merge(key, content)
	{
		if(this.getCount(key) > 0) this.replace(this.getNewEmt(key, content), this.getEmt(key));
		else this.put(key, content);
	}



	//dom xml ¸®ÅÏ
	function getDom()
	{
		return this.xmlDom;
	}



	//xml È­¸é Ãâ·Â
	function debug()
	{
		alert(this.xmlDom.xml);
	}



	//xslt Çü½Ä¿¡ ¸Â°Ô transform
	function transform(target, xslt)
	{
		document.all[target].innerHTML = this.xmlDom.transformNode(xslLoad(xslt,false));
	}


	function domMerge(addDom)
	{
		var dom = addDom.documentElement;
		var domChild = dom.childNodes;
		var cnt = domChild.length;

		for(var i=0 ; i<cnt ; ++i)
		{
			var xml = new ActiveXObject(DOM_DOC);
			xml.loadXML(domChild.item(i).xml);
			this.root.appendChild(xml.documentElement);
		}
	}




	function domMerge2(addDom)
	{
		var dom = addDom.documentElement;
		var result = dom.childNodes;

		if(result.item(0).nodeName == "result")
		{
			var domChild = result.item(0).childNodes;
			var cnt = domChild.length;

			for(var i=0 ; i<cnt ; ++i)
			{
				var xml = new ActiveXObject(DOM_DOC);
				xml.loadXML(domChild.item(i).xml);
				this.root.childNodes.item(0).appendChild(xml.documentElement);
			}
		}
	}



	function domMergeWrap(addDom)
	{
		this.root.appendChild(addDom.documentElement);
	}

	//¹«Á¶°Ç 0¹øÂ°ÀÇ ¿¤¸®¸ÕÆ®¸¦ »ý¼ºÇÑ´Ù.
	//ex) zput("targetfg","false");
	function zput(key,value){
		var dList = this.xmlDom.getElementsByTagName(key);
		
		if (!dList || dList.length == 0 ) {

			var newEmt = this.xmlDom.createElement(key);
			var textnode = this.xmlDom.createTextNode(value);
			newEmt.appendChild(textnode);
			this.root.appendChild(newEmt);
		}else{
			//alert(dList.length);
			dList.item(0).text = value;
		}
	}


	this.get				= get;
	this.getEmt			= getEmt;
	this.getCount		= getCount;
	this.put				= put;
	this.getNewEmt	= getNewEmt;
	this.replace		= replace;
	this.merge			= merge;
	this.getDom		= getDom;
	this.transform		= transform;
	this.debug		    = debug;
	this.domMerge		= domMerge;
	this.domMergeWrap		= domMergeWrap;
	this.zput		= zput;

}//class DomDataset







//º°µµÀÇ xml class ¸¦ »ç¿ëÇÏÁö ¾Ê°í xslt ¸¦ È­¸é¿¡ ³ëÃâ ½ÃÅ°±â À§ÇÑ ÇÔ¼ö
function applyXslt(target, xmlDom, xslt)
{
	var obj = document.all[target];

	if(xmlDom == undefined || xmlDom == null || xmlDom == "")
	{
		var xmlDom = new ActiveXObject(DOM_DOC);
		obj.innerHTML = xmlDom.transformNode(xslLoad(xslt,false));
	}
	else
	{
		obj.innerHTML = xmlDom.transformNode(xslLoad(xslt,false));
	}
}




