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(file, params) {

	objDOM = new ActiveXObject("MSXML.DOMDocument");
	objDOM.async = false;
	var path = document_root + "common/xsql.php?mode=file&p1=" + file;
	if(params == null) params = new Array();
	for(var i=0 ; i<params.length ; i++)
	{
		path += "&a" + (i+1) + "=" + params[i];
	}
	//prompt("", path);

	var ret = objDOM.load(path);
	if(!ret)
	{
		alert("ERROR1 : Fail DB Connection");
		throw "error";
	}
	
	return objDOM;
}

XmlHandler.prototype.executeQuery = function(sql) {

	objDOM = new ActiveXObject("MSXML.DOMDocument");
	objDOM.async = false;
	var path = document_root + "common/xsql.php?mode=param&p1=" + sql;
	//prompt("", path);
	var ret = objDOM.load(path);
	if(!ret)
	{
		alert("ERROR : Fail DB Connection\nSQL : " + sql);
		throw "error";
	}
	
	return objDOM;
}

/**
 * insert, update query¼öÇà
 */
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;
}


/**
 * °á°ú 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 {
		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;
	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 = "";
XmlHandler.prototype.setCombo = function(sql, selectObj, value, text, chkVal, isAll, varText, varValue, params) 
{
	var firstText = (varText == null) ? "-----ÀüÃ¼-----" : varText;
    var firstValue = (varValue == null) ? "" : varValue;

	objDOM3 = new ActiveXObject("MSXML.DOMDocument");
	objDOM3.async=false;
	
	var mode = "param";
	if(sql.toUpperCase().indexOf("SELECT") != 0) mode = "file";
	
	var path = document_root + "common/xsql.php?mode=" + mode + "&p1=" + sql;

	if(params == null) params = new Array();
	for(var i=0 ; i<params.length ; i++)
	{
		path += "&a" + (i+1) + "=" + params[i];
	}

	if(sql == null || sql == "")
	{
		alert("Variable 'sql' Must be set!!!");
		throw "error";
	}

	var ret = objDOM3.load(path);
	if(!ret)
	{
		alert("ERROR : XmlHandler.setCombo");
		throw "error";
	}
	var DE = objDOM3.documentElement;

    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;
        }
	}
}