//━━━━━━━━━━━━━━━━━━━━━━━
// XmlHttpRequest 생성
//───────────────────────
function cfGetXmlHttpRequest() {
	var reqHttp;   
	if (window.ActiveXObject) {  
	var avers = ["Microsoft.XmlHttp", "MSXML2.XmlHttp",	"MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.6.0"];
		for (var i = avers.length -1; i >= 0; i--) {
			try {
				reqHttp = new ActiveXObject(avers[i]);
				return reqHttp;
			} catch(e) {reqHttp =  null;}
		}

	} else if (window.XMLHttpRequest){  // IE 이외의 브라우져

		try {reqHttp =  new XMLHttpRequest();} catch (e) {reqHttp =  null;}

		}

	if (reqHttp == null) cfFail();				 //XMLHttpRequest 생성 실패시
  
	return reqHttp;
}

//───────────────────────
// XmlHttpRequest 생성 실패 인 경우 
//───────────────────────
function cfFail() {               
	alert("지원되지 않는 브라우저입니다."); 
}

//───────────────────────
// 예외 처리 (status != 200) 
//───────────────────────
function cfHttpException(xmlHttp) {
	if (xmlHttp.status == "500"){
		alert("DB통신 에러입니다. DB서버와 연결이 안되었거나, \n내부오류 및 네트워크 장애가 발생하였습니다.");
	}else{
		var exceptShow = "상태 코드: " + xmlHttp.status;
		exceptShow += ",  데이터를 받아오는데 에러가 발생하였습니다.";
		alert(exceptShow);
	}
}

//━━━━━━━━━━━━━━━━━━━━━━━
// DOM객체로 파서
//───────────────────────
function DOM_Object(){
	 // IE인 경우 XML 버전별 유효값 받기
	if (window.ActiveXObject) {  
		var avers = ["MSXML2.DOMDocument","Microsoft.XMLDOM"];
		for (var i = avers.length -1; i >= 0; i--) {
			try {
				reqDOM = new ActiveXObject(avers[i]);
				return reqDOM;
			} catch(e) {reqDOM =  null;}
		}
	} else if (window.XMLHttpRequest){  // IE 이외의 브라우져
		try {
			reqDOM =  new XMLHttpRequest();
		} catch (e) {
			reqDOM =  null;
		}
	}

	if (reqDOM == null) {alert("XML문서의 형식이 아니거나, 파일을 로드하지 못했습니다.");}				 //XMLHttpRequest 생성 실패시
}


//━━━━━━━━━━━━━━━━━━━━━━━
// DOM호출
//───────────────────────
function DOM_Request(url) {

	var DOM_Request = DOM_Object();       

	DOM_Request.async = false;
	DOM_Request.load(url);
	return DOM_Request;
}

//━━━━━━━━━━━━━━━━━━━━━━━
// 서버로 xml데이터 요청 및 call back 함수.
//───────────────────────
function RequestForm(sendType, URL_Code, commType, parameters, SomeOne, Pass) {
	var url
		switch( URL_Code ){
		case "OZD":
			url = "http://165.141.120.118:60000/Linkage/tradesearch.asp"
			break;
		default :
	}

	var request = cfGetXmlHttpRequest();

alert(url);
	request.open(sendType, url, commType, SomeOne, Pass);  // 송신방법,URL,통신방법
alert(URL_Code);
	request.setRequestHeader("Content-Type", "text/xml;application/x-www-form-urlencoded;charset=UTF-8"); //charset=UTF-8  , euc-kr

	/* 상태값에 따른 에러 메세지 및 처리 */
	request.onreadystatechange = function() {		// 처리상태 변경 발생시 수행되는 이벤트 call back함수

		if (request.readyState == 4) {					// 서버 처리 완료

handleErrFullPage(request.responseText);
//handleErrFullPage(request.responseXML.xml);

			if (request.status == 200) { 
				//───────────────────────
				// 전달받은 XML문서를 그대로 쓰면 Insert등 할때 문서 객체가 틀리다고 나온다. 따라서 DOM으로 문서를 재로드한다.
				//───────────────────────
				 xmldoc	= DOM_Object();	
				 xmldoc.loadXML(request.responseXML.xml);
				 xmldoc.preserveWhiteSpace = true;
				 root		= xmldoc.documentElement;
				 error		= xmldoc.parseError;
//				alert(error);
				 //───────────────────────
				 if (error.errorCode != 0) alert(error.errorCode + "\n" + error.reason + "\n" + error.line);
				//───────────────────────
				 
				//리스트와 뷰일때 각각 다른 Coding을 수행
				//───────────────────────
				if (URL_Code == "sLogin_Check"){
					Open_LogCheck(xmldoc,"","");		
				}else{
					Open_goInfoView(xmldoc,"","",URL_Code);	
				}
			} else {
				cfHttpException(request);					// 예외 처리
			}
		}
	}
	request.send(KEncode(parameters) );        // 서버로 요청

}

//━━━━━━━━━━━━━━━━━━━━━━━
// String -> XML로.. DOM으로 스트링을 변화시키는 방식
//───────────────────────
function String2XML(string) {
   var xmlDocument;
   var xmlParser;
   if(window.ActiveXObject){   //IE일 경우
      xmlDocument = DOM_Object(); 
      xmlDocument.async = false;
      xmlDocument.loadXML(string);
   } else if (window.XMLHttpRequest) {   //Firefox, Netscape일 경우
      xmlParser = new DOMParser();
      xmlDocument = xmlParser.parseFromString(string, 'text/xml');
   } else {
      return null;
   }
   return xmlDocument;
}
//━━━━━━━━━━━━━━━━━━━━━━━
function KEncode(data) {
    if(data != "") {
        var encdata = '';
        var datas = data.split('&');
        
        for(var i=0; i<datas.length ; i++) {
            var dataq = datas[i].split('=');
			if (i == 0){
	            encdata += encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
			}else{
	            encdata += '&'+encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
			}
        }
    } else {
        encdata = "";
    }
    return encdata;
}
//━━━━━━━━━━━━━━━━━━━━━━━
function handleErrFullPage(strIn) {

        var errorWin;

        // Create new window and display error
        try {
                errorWin = window.open('', 'errorWin');
                errorWin.document.body.innerHTML = strIn;
        }
        // If pop-up gets blocked, inform user
        catch(e) {
                alert('An error occurred, but the error message cannot be' +
                        ' displayed because of your browser\'s pop-up blocker.\n' +
                        'Please allow pop-ups from this Web site.');
        }
}
