var document_root;
/**
	XmlHandler Constructor.

*/

function XmlHandler(doc_root)
{
	if(doc_root == null) 
	{
		if(frm.document_root != null) doc_root = frm.document_root.value;
		else doc_root = "/";
	}
	document_root = doc_root;
}

var objDOM;
var objDOM2;
var objDOM3;


/**
 * select query¼öÇà
 */

XmlHandler.prototype.executeQueryUrl = function(path) {

	objDOM = new ActiveXObject("MSXML.DOMDocument");
	objDOM.async = false;

	var ret = objDOM.load(path);
	var DE = objDOM.documentElement;
	if (DE.nodeName == "XSQL-ERROR") {
		alert(DE.text);
		throw "error";
	}
	
	return objDOM;
}

XmlHandler.prototype.executeQuery = function(sql) {

	objDOM = new ActiveXObject("MSXML.DOMDocument");
	objDOM.async = false;
	var path = document_root + "xsql/common.xsql?sql=" + sql;
	var ret = objDOM.load(path);

	var DE = objDOM.documentElement;
	if (DE.nodeName == "XSQL-ERROR") {
		alert(DE.text);
		throw "error";
	}
	
	return objDOM;
}

/**
 * insert, update query¼öÇà
 * Deprecated!!!
 */

XmlHandler.prototype.executeUpdate = function(sql) {
	try {
		objDOM = new ActiveXObject("MSXML.DOMDocument");
		objDOM.async = false;
		var url = "/kab/jsc/xsql/query_update.xsql?statement=" + sql;
		objDOM.load(url);
		var DE = objDOM.documentElement;
		
		if (DE.nodeName == "xsql-error") {
//			var statement = DE.selectNodes("statement");
//			var message = DE.selectNodes("message");
//			var errMsg = statement.item(0).text + "\n" + message.item(0).text;
//	
//			alert(errMsg);
			printErrorMsg(message, url);
		} else {
			return DE.getAttribute("rows");
		}
	} catch(e) {
		new JsException("TableHelper.execute()", e.message).alertException();
	}
	
	return -1;
}

XmlHandler.prototype.getRowNum = function() {
	return this.getRowCount();
}

/**
 * °á°ú row¼ö ¸®ÅÏ
 */
XmlHandler.prototype.getRowCount = function() {
	try {
		var DE = objDOM.documentElement;
		if (DE.nodeName == "XSQL"){
			return DE.selectNodes("ROW").length;
		}
	} catch(e) {
		alert("ERROR : XmlHandler.getRowCount");
		throw "error";
	}	
	
	return 0;
}


/**
 * ½ºÆ®¸µ °ª ¸®ÅÏ
 */
XmlHandler.prototype.getString = function(nodeName, rowIdx) {
	try {
		nodeName = nodeName.toUpperCase();
		var DE = objDOM.documentElement;
		if (DE.nodeName == "XSQL"){
			var matches = DE.selectNodes("ROW");
			if(matches.length == 0) return "";
			
			if (arguments.length == 1) {
				if(matches.item(0).selectSingleNode(nodeName) == null) return "";
				return (matches.item(0).selectSingleNode(nodeName).text);
			}
			
			else if (arguments.length == 2) {
				if (matches.length && matches.item(rowIdx)) {
					if(matches.item(0).selectSingleNode(nodeName) == null) return "";
					return (matches.item(rowIdx).selectSingleNode(nodeName).text);
				}
			}
		}
	} catch(e) {
		alert("ERROR : XmlHandler.getString -> [" + nodeName + "]");
		throw "error";
	}
	
	return "";
}

XmlHandler.prototype.getNumber = function(nodeName, rowIdx) {
	var value = 0;
	nodeName = nodeName.toUpperCase();
	try {
		
		var DE = objDOM.documentElement;
		if (DE.nodeName == "XSQL"){
			var matches = DE.selectNodes("ROW");
			if(matches.length == 0) return "";
			
			if (arguments.length == 1) {
				if(matches.item(0).selectSingleNode(nodeName) == null) return 0;
				value = (matches.item(0).selectSingleNode(nodeName).text);
			}
			
			else if (arguments.length == 2) {
				if (matches.length && matches.item(rowIdx)) {
					if(matches.item(0).selectSingleNode(nodeName) == null) return 0;
					value = (matches.item(rowIdx).selectSingleNode(nodeName).text);
				}
			}
		}
	} catch(e) {
		alert("ERROR : XmlHandler.getNumber() -> [" + nodeName + "]");
		throw "error";
	}
	
	return Number(value);
}

var gsURL = "";
/**
	@params
	sql : Äõ¸®³ª xsql °æ·Î
	selectObj : SELECT Object
	value : Option°´Ã¼¿¡ value·Î µé¾î°¥ ÄÃ·³¸í
	text : Option°´Ã¼¿¡ text·Î µé¾î°¥ ÄÃ·³¸í
	chkVal : selected ¼Ó¼ºÀ» °¡Áú value
	isAll : Ãß°¡ÀûÀÎ Option°´Ã¼¸¦ ¸¸µé°ÍÀÎÁö ¿©ºÎ(ÃÖ»ó´Ü¿¡ ¸¸µé¾îÁü)
	varText, 
	varValue
*/
XmlHandler.prototype.setCombo = function(sql, selectObj, value, text, chkVal, isAll, varText, varValue) 
{
	var firstText = (varText == null) ? "-----ÀüÃ¼-----" : varText;
    var firstValue = (varValue == null) ? "" : varValue;

	// ÄÃ·³¸í¿¡ ´ëÇÑ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ¾ø¾Ø´Ù.
	value = value.toUpperCase();
	text = text.toUpperCase();

	objDOM3 = new ActiveXObject("MSXML.DOMDocument");
	objDOM3.async=false;
	
	var mode = "param";
	var path = sql;
	if(sql.toUpperCase().indexOf("SELECT") == 0) path = document_root + "xsql/common.xsql?sql=" + sql;
	
	var ret = objDOM3.load(path);
	if(!ret)
	{
		alert("ERROR : XmlHandler.setCombo");
		throw "error";
	}
	var DE = objDOM3.documentElement;

	if (DE.nodeName == "XSQL-ERROR") {
		alert("ERROR : XmlHandler.setCombo\n" + DE.text);
		throw "error";
	}

    var index = 0;
	if (isAll) { index = 1; }

	if (DE.nodeName == "XSQL"){
		var matches = DE.selectNodes("ROW");
		if (isAll) {
			selectObj.options[0] = new Option(firstText, firstValue);
		}
        for(i = 0; i < matches.length; i++){
			selectObj.options[i + index] = new Option(matches.item(i).selectSingleNode(text).text,matches.item(i).selectSingleNode(value).text);
			if(matches.item(i).selectSingleNode(value).text == chkVal)
                selectObj.options[i+index].selected = true;
        }
	}
}
