/**
* xml.js
* ieznbuilder xmlRpc lib
* Copyright : iezn.com 
* Author : iezn <iezn@iezn.com>
* 
*/
function ieznSwfRpc(requestMethod,url,methodName,params,msg){	
	var str = null;
	str = "<methodCall>"
	str += "<methodName>"+methodName+"</methodName>"
	str += "<params>"
	if(params){
		str += "<param>"
		str += "<value>"
		str += "<struct>"
		for(i=0;i<params[0].length;i++){
			str +="<member>"
			str +="<name>"+params[0][i]+"</name>"
			str +="<value><"+params[1][i]+">"
			if(params[2][i]) {
				//str +="<![CDATA["+params[2][i]+"]]>"
				str +=""+params[2][i]+""
			}
			str +="</"+params[1][i]+"></value>"
			str +="</member>"
		}
		str += "</struct>"
		str += "</value>"
		str += "</param>"
	}
	str += "</params>";
	str += "</methodCall>";
	if(msg){
		waitBoxView(msg);
	}
	if(ie==true){
		document.all['ieznSwf'].SetVariable("rpc_file",rpc_file);
		document.all['ieznSwf'].SetVariable("call_method_value",str);
		document.all['ieznSwf'].TGotoLabel("/","callRpcLabel");
	}else{
		window.document.ieznSwf.SetVariable("rpc_file",rpc_file);
		window.document.ieznSwf.SetVariable("call_method_value",str);
		window.document.ieznSwf.TGotoLabel("/","callRpcLabel");
	}
}


function ieznCallRpc(requestMethod,url,methodName,params){
	
	var xmlhttp = null;
	var str = null;
	var xmlDoc = null;
	
	str = "<?xml version='1.0' encoding='UTF-8'?>"
	str += "<methodCall>"
	str += "<methodName>"+methodName+"</methodName>"
	str += "<params>"
	if(params){
		str += "<param>"
		str += "<value>"
		str += "<struct>"
		for(i=0;i<params[0].length;i++){
			str +="<member>"
			str +="<name>"+params[0][i]+"</name>"
			str +="<value><"+params[1][i]+">"
			if(params[2][i]) {
				str +="<![CDATA["+params[2][i]+"]]>"
			}
			str +="</"+params[1][i]+"></value>"
			str +="</member>"
		}
		str += "</struct>"
		str += "</value>"
		str += "</param>"
	}
	str += "</params>";
	str += "</methodCall>";
	try{//ÀÍ½º Á¡°Ë
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
		//xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}catch(e){
		try{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
		}catch(e){
			xmlhttp = false;
		}
	}	
	if(!xmlhttp){
		try{
			xmlhttp = new XMLHttpRequest();//mozilla
		}catch(e){
			xmlhttp = false;
		}
	}

	if(!xmlhttp) {
		alert('Your browser doesn\'t support the Level 1 DOM');
	}
	try{
		xmlhttp.open(requestMethod,url,false,'','');
		xmlhttp.setRequestHeader('client_agent','ieznbuilder');
		xmlhttp.setRequestHeader('client_key',IEZN_SESS);
		xmlhttp.setRequestHeader("Accept-encoding", "gzip");//test Áß
		xmlhttp.setRequestHeader('Content-Type','application/xml');
		xmlhttp.setRequestHeader("Cache-Control","no-store, must-revalidate, private");
		xmlhttp.setRequestHeader("pragma","no-cache");
		xmlhttp.send(str);
		if (xmlhttp.readyState==4) {//¸ðµçµ¥ÀÌÅ¸°¡ Àü¼ÛµÈ°æ¿ì
			if (xmlhttp.status==404){
				return (url+"¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù");
			}
			strXML = ltrim(xmlhttp.responseText);//¹ÞÀº¹®ÀÚ
			xmlhttp = null;
		}else{
			return ('Problem communicating with remote server...');
		}
		
	}catch(e){
		xmlhttp = null;
		return false;
	}
//	alert(strXML);
////////////////////////////////////////////////////////////////////////////////////////////////	
// DOM Parse //
	var ARR_ACTIVEX = ["MSXML4.DOMDocument","MSXML3.DOMDocument","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XmlDom"]
	var STR_ACTIVEX = "";
	if (ie) {
	   var bFound = false;
	   for (var i=0; i < ARR_ACTIVEX.length && !bFound; i++) {
		  try {
			 var objXML = new ActiveXObject(ARR_ACTIVEX[i]);
			 STR_ACTIVEX = ARR_ACTIVEX[i];
			 bFound = true
		  } catch (objException) {
		  }
	   }
	   if (!bFound)
		  throw "MSXML not found on your computer."
	}
	try{
		var xmlDoc = new ActiveXObject(STR_ACTIVEX);
		xmlDoc.async= false;
		while(xmlDoc.readyState!= 4) {}; 
		xmlDoc.loadXML(strXML);//lost string xml
	}catch(e){
		var objParser = new DOMParser();
		var xmlDoc = objParser.parseFromString(strXML,"text/xml");
	}

	if(document.parseError){
		var xmlDocError = xmlDoc.parseError;
		if(xmlDocError.errorCode!=0){
			alert(xmlDocError.errorCode+' '+xmlDocError.reason +' '+xmlDocError.line);
			alert(xmlDoc.parseError.reason);
		}
	}
	
	try{
		var xmlVal = new Object();
		root = xmlDoc.documentElement;
		if(root.hasChildNodes()){
			total = root.childNodes.length;
			if(ns){
				for(i=0;i<total;i++){
					node_type = root.childNodes.item(i).nodeType;
					if(node_type==1 || node_type==4){
						xmlVal[root.childNodes.item(i).nodeName] = root.childNodes.item(i).firstChild.nodeValue;
					}
				}
			}else{
				for(i=0;i<total;i++){
					xmlVal[root.childNodes.item(i).tagName] = root.childNodes.item(i).text;
				}
			}
			xmlDoc = null;
			return xmlVal;
		}
	}catch(e){alert("¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù\r\n\r\n"+strXML);alert(e.number + " " + e.description);}
}

function form_to_params(obj,moduleName){
	var param = Array();
	param[0] = Array();
	param[1] = Array();
	param[2] = Array();
	param[0][0] = Array('module_name');
	param[1][0] = Array('string');
	param[2][0] = Array(moduleName);
	j=1;
	for (i=0;i<obj.elements.length;i++) {
		try{
			if(obj.elements[i].type!='button'){
				if(obj.elements[i].type=='checkbox'){
					if(obj.elements[i].checked==true){
						param[0][j] = obj.elements[i].name;
						param[1][j] = 'string';
						param[2][j] = obj.elements[i].value;
						j++;
					}
				}else if(obj.elements[i].type=='radio'){
					if(obj.elements[i].checked==true){
						param[0][j] = obj.elements[i].name;
						param[1][j] = 'string';
						param[2][j] = obj.elements[i].value;
						j++;
					}
				}else{
					param[0][j] = obj.elements[i].name;
					param[1][j] = 'string';
					param[2][j] = obj.elements[i].value;
					j++;
				}
			}
		}catch(e){}
	}
	return param;
}

function postXml(k,v,method,rt,swf,msg){

	method = method.split("::");
	if(method.length!=3){
		alert(method + '°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù');
		return false;
	}
	params = new Array();
	params[0] = new Array('module_name');
	params[1] = new Array('string');
	params[2] = new Array(method[0]);
	for(i=0;i<k.length;i++){
		j=i+1;
		params[0][j] = k[i];
		params[1][j] = 'string';
		params[2][j] = v[i];
	}
	methodName = method[1]+'::'+method[2];
	if(swf==1 && ie==true){
		try{
			ieznSwfRpc("POST",rpc_file+'?dummy='+proxy_rand_var(),methodName,params,msg);
		}catch(e){alert(e)}
	}else{
		xmlVal = ieznCallRpc("POST",rpc_file+'?null='+proxy_rand_var(),methodName,params);	
		if(rt==1){
			return xmlVal;
		}else{
			try{
				if(xmlVal['code']==1){
					if(xmlVal['message']) alert(xmlVal['message']);
					if(xmlVal['script']) eval(xmlVal['script']);
				}else if(xmlVal['code']==0){
					if(xmlVal['message']) alert(xmlVal['message']);
					if(xmlVal['script']) eval(xmlVal['script']);
				}
			}catch(e){alert(e)}
		}
	}
}

function postForm(obj,method,rt,swf,msg){
	method = method.split("::");
	if(method.length!=3){
		alert(method + '°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù');
	}
	moduleName = method[0];
	methodName = method[1]+'::'+method[2];
	var params = form_to_params(obj,moduleName);
	if(swf==1 && ie==true){
		ieznSwfRpc("POST",rpc_file+'?dummy='+proxy_rand_var(),methodName,params,msg);
	}else{
		xmlVal = ieznCallRpc("POST",rpc_file+'?dummy='+proxy_rand_var(),methodName,params);
		if(rt==1){
			return xmlVal;
		}else{
			try{
				if(xmlVal['code']==1){
					if(xmlVal['message']) alert(xmlVal['message']);
					if(xmlVal['script']) eval(xmlVal['script']);
				}else if(xmlVal['code']==0){
					if(xmlVal['message']) alert(xmlVal['message']);
					if(xmlVal['script']) eval(xmlVal['script']);
				}
			}catch(e){alert(e)}
		}
	}
}

function ltrim(str){
	return str.replace(/^s*/g,"");
}

function response_xml(j_name,j_value){

	var xmlVal = new Object();	

	if(document.getElementById('DivBg')){
		document.getElementById("divBg").style.display = 'none';
	}
	if(document.getElementById('waitBox')){
		document.all['message_box'].SetVariable("LOOP","false");
		document.getElementById('waitBox').style.display = 'none';
	}
	try{
	j_name = j_name.split(',');
	j_value = j_value.split(',');
	for(i=0;i<j_name.length;i++){
		xmlVal[j_name[i]] = j_value[i];
	}
	if(xmlVal['code']==1){
		if(xmlVal['message']) alert(xmlVal['message']);
		if(xmlVal['script']) eval(xmlVal['script']);
	}else if(xmlVal['code']==0){
		if(xmlVal['message']) alert(xmlVal['message']);
		if(xmlVal['script']) eval(xmlVal['script']);
	}
	}catch(e){alert(e)}
}

function response_flash_obj(obj){
	alert(obj);
}

function proxy_rand_var(){
	var now = new Date()
	return proxy_num=(now.getSeconds())%10+1
}
