/***********************************************************
	CLASS NAME	:	AJAX
	작성자		:	김정대
	처리내용		: 	XMLHTTP 객체 생성 및 콜백함수 처리
	사용법		:
				1.AJAX.create();선언으로 XHR[XMLHttprequest] 객체 생성
				2.AJAX.openXML(Sr_List , 'SM=5&KW='+escape(kw.value) ,'GET' , POI_SEARCH_CALL_PAGE , true);
				-파라미터설명 : 콜백함수 , 호출페이지에 넘길 파라미터 , 파라미터를 넘기는 방식[GET/POST] , 호출페이지 경로 , 동기/비동기 선언
				3.function Sr_List(oj){}
				-파라미터 설명 : oj 는 XHR객체로서 xml 혹은 파일을 파싱하는데 사용
				4.AJAX.abortXML();	실행 도중 강제 종료
	사용예제		:
	
				<script language=javascript src="현재 파일을 인크루트"></script>
				<script language=javascript>
					
				AJAX.create();
				AJAX.openXML(Sr_List , 'SM=5&KW='+escape(kw.value) ,'GET' , POI_SEARCH_CALL_PAGE , true);
				function Sr_List(oj){
					var xmlDoc = oj.responseXML;
					
					...... 원하는 작업 수행.
				}
				
				///강제 종료
				//AJAX.abortXML();
				
				</script>
***********************************************************/
var AJAX = {
	a:null,
	ua:null,
	bw:null,	
        XmlHttp: null,
        create: function () {
                try {
                	AJAX.XmlHttp = WitXmlHttp.create();
                }
                catch (e) {
                        alert("해당 브라우저는 [XmlHttp objects]를 지원하지 않습니다.");
                }
        },
        chkAjaBrowser: function () {        	
		AJAX.ua = navigator.userAgent;
		AJAX.bw= { 
		  safari    : ((AJAX.a=AJAX.ua.split('AppleWebKit/')[1])?AJAX.a.split('(')[0]:0)>=124 ,
		  konqueror : ((AJAX.a=AJAX.ua.split('Konqueror/')[1])?AJAX.a.split(';')[0]:0)>=3.3 ,
		  mozes     : ((AJAX.a=AJAX.ua.split('Gecko/')[1])?AJAX.a.split(" ")[0]:0) >= 20011128 ,
		  opera     : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
		  msie      : (!!window.ActiveXObject)?(!!AJAX.create()):false 
		}
        }
}

	/**----------------------------
	처리내용		:ajax 실행
	-----------------------------**/
AJAX.openXML =  function (callback,data,method,url,async) {
        if (AJAX.XmlHttp != null) {

        	if(method.toUpperCase() == 'GET'){
        		url += "?";
        		url += data;
        	}
        	AJAX.chkAjaBrowser();
        	
	        if(AJAX.bw.opera || AJAX.bw.safari || AJAX.bw.mozes){		//파이어 폭스 실행
	        	AJAX.XmlHttp.onload = function () { callback(AJAX.XmlHttp); }
	        }else{
	        	AJAX.XmlHttp.onreadystatechange = function () {
	                        if (AJAX.XmlHttp.readyState == 4) {
	                        	if (AJAX.XmlHttp.status == 200) {
						callback(AJAX.XmlHttp);
					}else{
						if(AJAX.XmlHttp.status ==0){	//데이터 강제 종료 [AJAX.abortXML 실행시... ]
							//alert("검색을 종료합니다.");
						}else{
							alert("데이터처리에 실패했습니다.다시 시도해 주세요.");
						}
					}
	                        }
	                }
		}

		AJAX.XmlHttp.open(method, url, async);        	
                AJAX.XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
                AJAX.XmlHttp.setRequestHeader("Content-length", data.length);	
                AJAX.XmlHttp.send(data);

        } else {
		alert("[XmlHttp objects] 생성이 필요합니다.");
        }
}
 
	/**----------------------------
	처리내용		:ajax 실행 강제 종료
	-----------------------------**/
AJAX.abortXML =  function () {
	AJAX.XmlHttp.abort();
}