/********************************************************************************

	Ajax를 Control 하기위한 공통소스
	2008-07-21 이승훈

**********************************************************************************/
var docRt = document.documentElement;
//var layerReq;		// Ajax object 변수
var ajxstatus;		// Ajax 결과값
var ajxstates;		// Ajax 상태값
var tmpItvl;		// interval 변수

var AjxControl = {
	// Ajax 제어
	ajxProc : function (layerReq, url, param, debug, divName, isWait, callBackFunc) {
		if (debug == true) {
			window.location.href = url + "?" + param;
		} else {
			//개체생성
			if (window.XMLHttpRequest) {
				layerReq = new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				layerReq = new ActiveXObject("Microsoft.XMLHTTP");
			}

			layerReq.open("POST", url, true);

			if(callBackFunc != null){
				layerReq.onreadystatechange = getReadyStateHandler(layerReq, callBackFunc);
			}else{
				layerReq.onreadystatechange = function() {
					AjxControl.ajxLoad(layerReq,divName, isWait);
				};
			}

			var contentTypeUrlenc = "application/x-www-form-urlencoded; charset=utf-8";

			layerReq.setRequestHeader("Content-Type", contentTypeUrlenc);

			// Ajax에서 한글을 파라미터로 넘길 경우 글자가 깨지는 문제를 해결하기 위함.
			// 마지막에 담을 파라미터 값
			var paramEscape = '';
			// 각각의 파리미터와 value들
			var parameter = param.split("&");

			for (i=0; i < parameter.length; i++) {
				var temp = parameter[i].split("=");
				paramEscape += (i>0) ? "&" : "";
				paramEscape += temp[0] + "=" + escape(temp[1]);
			}
			layerReq.send(paramEscape);
		}
	},

	ajxLoad : function (layerReq,divName, isWait) {
		//var el = $(divName);
		var el = document.getElementById(divName);

		if (layerReq.readyState == 4) {
			var ajxstates = layerReq.readyState;
			// ajax의 결과를 저장
			var ajxstatus = layerReq.status;
			if(layerReq.status == 200) {
			
				var data = layerReq.responseText;

				if(divName == "divAlert"){
					alert(data);
					return;
				}
				el.innerHTML = data;

				if(isWait){
					document.getElementById('AjaxWait').style.visibility = "hidden";
					document.getElementById('AjaxWait').style.display = "none";
				}

				el.style.display = "block";
				layerReq = '';
				
			} else {
				//오류나는 것을 보고싶다면 아래것을 풀것
				var data = layerReq.responseText;
				alert(data);
				alert(layerReq.status);
				if(isWait){
					document.getElementById('AjaxWait').style.display="none";
				}
				alert('정보를 호출하는 중 에러가 발생하였습니다.<br>잠시뒤에 이용해주세요');
			}
		} else {
			if(isWait){
				if(document.getElementById('AjaxWait')){
					el.style.display = "none";
				}
				this.forWait();
			}else{
				el.style.display = "none";
			}
				
			// ajax의 상태 저장
			ajxstates = layerReq.readyState;
		}
	},

	// 기다리는 플래시를 위해서 .....
	forWait : function()
	{
		var waitEl = document.getElementById('AjaxWait');					
		waitEl.innerHTML = "<img src='/images/common/etc/e_loading.gif' alt='Page Loding...'>";
	},

	// Ajax 제어
	ajxProcCHK : function (layerReq,url, param, debug, divName, sUrl) {
		if (debug == true) {
			window.location.href = url + "?" + param;
		} else {
			//개체생성
			if (window.XMLHttpRequest) {
				layerReq = new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				layerReq = new ActiveXObject("Microsoft.XMLHTTP");
			}

			layerReq.open("POST", url, true);

			layerReq.onreadystatechange = function() {
				AjxControl.ajxLoadCHK(divName, sUrl, "SelDong");
			};

			var contentTypeUrlenc = "application/x-www-form-urlencoded; charset=euc-kr";

			layerReq.setRequestHeader("Content-Type", contentTypeUrlenc);

			// Ajax에서 한글을 파라미터로 넘길 경우 글자가 깨지는 문제를 해결하기 위함.
			// 마지막에 담을 파라미터 값
			var paramEscape = '';
			// 각각의 파리미터와 value들
			var parameter = param.split("&");

			for (i=0; i < parameter.length; i++) {
				var temp = parameter[i].split("=");
				paramEscape += (i>0) ? "&" : "";
				paramEscape += temp[0] + "=" + escape(temp[1]);
			}

			layerReq.send(paramEscape);
		}
	},

	ajxLoadCHK : function (layerReq,divName, sUrl, sDivName) {
		var el = $(divName);

		if (layerReq.readyState == 4) {
			var ajxstates = layerReq.readyState;
			// ajax의 결과를 저장
			var ajxstatus = layerReq.status;

			if(layerReq.status == 200) {
			
				var data = layerReq.responseText;

				el.innerHTML = data;
				document.getElementById('AjaxWait').style.visibility = "hidden";
				document.getElementById('AjaxWait').style.display = "none";
				el.style.display = "block";
				layerReq = '';

				this.ajxProc(sUrl, "", false, sDivName);
				
			} else {
				//오류나는 것을 보고싶다면 아래것을 풀것
				//var data = layerReq.responseText;
				//alert(data);
				//alert(layerReq.status);
				//alert(layerReq.status);
				document.getElementById('AjaxWait').style.display="none";
				alert('정보를 호출하는 중 에러가 발생하였습니다.<br>잠시뒤에 이용해주세요');
			}
		} else {
			if(document.getElementById('AjaxWait')){
				el.style.display = "none";
			}
/*
			if(document.getElementById('pageBg').style.display=="none"){
				layerControl.bgOpen("#000000",50);
			}
*/			
			this.forWait();
			// ajax의 상태 저장
			ajxstates = layerReq.readyState;
		}
	}
}

	function getReadyStateHandler(layerReq, responseXmlHandler) {
		return function(){
			if (layerReq.readyState == 4) {
				if(layerReq.status == 200) {	
					responseXmlHandler(layerReq.responseText);
				} else {
					alert("HTTP error " + layerReq.status + ": " + layerReq.statusText);
				}
			}
		}
	}

/***********************************************************************************************************

	문서를 컨트롤 해야할 상황을 위해 만듬
	2007-10-14	박재현
	
***********************************************************************************************************/
var DocControl = {
	// AjaxList에서 페이징 처리를 해주기 위함
	paging : function(url,param,divName) {
		AjxControl.ajxProc(url,param,false,divName);
	}
}
