/***************************************************************************
 * filename : FFCallXml.js<br>
 * CallXml 구현, 자바스크립트와 ActiveX를 이용해 페이지 이동없이 실시간으로 서버페이지의 결과를 받는다<br>
 *
 * @version	: 1.0
 * @author	: Copyright (c) 2003 by free270. All Rights Reserved.
****************************************************************************/
if(FFCALLXML_CLASS!=null) {
	alert("[FFCallXml.js]는 이미 include 되어있습니다!!");
}
var FFCALLXML_CLASS = true;

var isIE=(document.all)?true:false; 
var isN4=(document.layers)?true:false; 
var isN6=(!isIE&&document.getElementById)?true:false; 

function FFCallXmlClass( responseText ){
	//[PROPERTY]------------------------------------
	this.responseText	= responseText

	//[METHOD]--------------------------------------
	this.getString		= FFCallXml_getString;
	this.getDoc			= FFCallXml_getDoc;

	this.xml = new ActiveXObject("microsoft.xmldom");
	this.xml.loadXML(this.responseText);
}


/*###########[아래 함수들은 클래스의 정의를       ]######################*/
/*###########[위해서만 사용됩니다.                ]######################*/
/*###########[직접 사용하시지 마시고 위에 정의된  ]######################*/
/*###########[클래스를 이용해 호출해 주세요       ]######################*/

function FFCallXml_getString(field_nm){
	var txt = "this.xml.getElementsByTagName('" + field_nm + "').item(0)"
	var xmltmp
		

	try{ 
		xmltmp = eval(txt).text;
		return xmltmp;
	}catch(e) { 
		alert("'" + field_nm + "' 은 잘못된 필드명입니다. 자바스크립트를 수정하십시요");
		return ""; 
	}
}

function FFCallXml_getDoc(str){
	return this.responseText;
}

function FFCallXml_isSuccess(){
	if(this.getString("CODE")=="1"){
		return true;
	}else{
		return false;
	}
}



/*
 * 일반 함수
 */
function getPostData(theForm) { 
    var qs = ''; 
    for (e=0;e<theForm.elements.length;e++) { 
        if (theForm.elements[e].name!='') { 
			if( theForm.elements[e].type == "radio" || theForm.elements[e].type == "checkbox"){
				if(theForm.elements[e].checked){
					var name = theForm.elements[e].name; 
					qs+=(qs=='')?'':'&'; 
					qs+= encodeURIComponent(name) + '=' + encodeURIComponent(theForm.elements[e].value); 				
				}			
			}else{
				var name = theForm.elements[e].name; 
				qs+=(qs=='')?'':'&'; 
				qs+= encodeURIComponent(name) + '=' + encodeURIComponent(theForm.elements[e].value); 
			}
        } 
    } 
   // qs+="\r\n\r\n"; 
    return qs; 
} 
function getGetData(theForm) { 
    var qs = ''; 
    for (e=0;e<theForm.elements.length;e++) { 
        if (theForm.elements[e].name!='') { 
			if( theForm.elements[e].type == "radio" || theForm.elements[e].type == "checkbox"){
				if(theForm.elements[e].checked){
					var name = theForm.elements[e].name; 
					qs+=(qs=='')?'':'&'; 
					qs+= (name) + '=' + (theForm.elements[e].value); 				
				}			
			}else{
				var name = theForm.elements[e].name; 
				qs+=(qs=='')?'':'&'; 
				qs+= (name) + '=' + (theForm.elements[e].value); 
			}
        } 
    } 
    return qs; 
} 
function getXmlHttp() {
	var xmlhttp
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
	xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	} catch (e) {
	try {
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
	} catch (E) {
	xmlhttp=false
	}
	}
	@else
	xmlhttp=false
	@end @*/

	if (!xmlhttp) {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false
		}
	}
	return xmlhttp
}

 /*
 * CallXml
 */
function callXml( url, debug ){

	if(!isIE){
		alert("Internet Explorer 5.0이상에서만 지원하는 기능입니다.\n\n사용을 원하시면 Internet Explorer의 최신버젼으로 업데이트 하시기 바랍니다");
		return;
	}

	if(url=="[object]"){
		alert("URL에 oject를 넣으셨습니다. URL로 입력하시거나 callXmlForm()를 호출바랍니다.");
		return;		
	}

	if(debug!=null && debug){
		open(url,"callXml","width=500,height=500");
	}


	var xmlhttp=false;
	xmlhttp = getXmlHttp();

	xmlhttp.Open("GET", url , false);
	xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=euc-kr");
	xmlhttp.Send();

	var callXml = new FFCallXmlClass( xmlhttp.responseText );


	return callXml;
}

function callXmlForm( frm, debug ){
	if(frm == null){
		alert("잘못된 폼정보입니다.");
		return;
	}
	
	if(frm!="[object]"){
		alert("form object를 잘못 넣으셨습니다. form object로 입력하시거나 callXml()를 호출바랍니다.");
		return;		
	}

	var url   = frm.action;

	if(!isIE){
		alert("Internet Explorer 5.0이상에서만 지원하는 기능입니다.\n\n사용을 원하시면 Internet Explorer의 최신버젼으로 업데이트 하시기 바랍니다");
		return;
	}

	var xmlhttp=false;
	xmlhttp = getXmlHttp();

	if(debug!=null && debug){
		var getparam = getGetData(frm);
		open(url + ((getparam==null)?"":"?") + getparam, "callXmlForm", "width=500,height=500");
	}		

	if(frm.method == "post"){
		var param = getPostData(frm);
		xmlhttp.Open(frm.method, url , false);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
		xmlhttp.Send(param);
	}else{
		var param = getGetData(frm);
		xmlhttp.Open(frm.method, url + ((param==null)?"":"?") + param , false);
		xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=euc-kr");
		xmlhttp.Send();	
	}

	var callXml = new FFCallXmlClass( xmlhttp.responseText );

	return callXml;
}


