// made by iNum 2007.01.28 (Hwang In-weon, inumiz@gmail.com)
function AjaxClass(cName, handleFunc){
		// XML COM OBJECT
		if(cName == null || cName == "") return errorStr("º¯¼ö¸íÀÌ ÇÊ¿äÇÕ´Ï´Ù.");
		//if(handleFunc == null){
		//	alert("Ajax°´Ã¼¿¡ ¾²ÀÏ ÇÚµéÇÔ¼ö¸¦ ³Ö¾îÁÖ¼Å¾ß ÇÕ´Ï´Ù");
		//	return null;
		//}
		var handleFunction = function(){ eval(cName + ".handle();"); }; //handleFunc;
		var className = "AjaxClass";
		var myID = Math.round(Math.random() * 10000000);
		var xmlhttp = createXMLHttpRequest();
		var style = { elementName : null,
							 method : "POST",
							async : true,
							loadedAction:null,
							isLoading:false};
		var XMLHIT = null;

		var cMode = "AJAX";
		var AHAH_DATA = "";

		var requestTimer = null;

		
		// I_METHOD
		function createXMLHttpRequest() {
			try{
				if (window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} 
				else if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				}
			}catch(e){ errAlert(e, className + ".createXMLHttpRequest"); }
		}
		
		//Specially Method.. 
		function handleStateChange() {
			var LMgr=null;
//			try{
				//setLoadingStat = function(id, isLoaded){
				
				if(xmlhttp.readyState == 1){
					style.isLoading = true;
					if(LMgr != null) LMgr.addProcess(myID);	
				}else if(xmlhttp.readyState == 4) {
					style.isLoading = false;
					if(LMgr != null) LMgr.delProcess(myID);	
					//if(sMgr != null) sMgr.setLoadingStat(myID, true);						
					if(xmlhttp.status == 200) {
						//alert("¸ðµå="+cMode+",°Ë»ö¾î="+style.elementName+",°á°ú="+xmlhttp.responseText);

						if(cMode == "AJAX"){
							xml = xmlhttp.responseXML;
							//alert("xml="+xmlhttp.responseText);
							XMLHIT = xml.getElementsByTagName(style.elementName);
							//alert("¸ðµå="+cMode+",°Ë»ö¾î="+style.elementName+",°á°ú="+XMLHIT.length);
							style.loadedAction(XMLHIT);
						}else if(cMode=="AHAH"){
							AHAH_DATA = xmlhttp.responseText;
//							GEID('debugDiv').innerHTML += AHAH_DATA;
							style.loadedAction(AHAH_DATA);
						}
					}
				}
				if(requestTimer != null) {
					try{
						clearTimeout(requestTimer); 
					}catch(e){

					}
					requestTimer = null;
				}
				/*else{
					alert("Àá½Ã ÈÄ ½ÃµµÇØ ÁÖ½Ê½Ã¿À. : J_AC_HS :" + xmlhttp.readyState);
				}*/
//				alert(xmlhttp.readystate);
//			}catch(e){
//				errAlert(e, "AjaxMgr.handleStateChange("+cName+")");
//			}
		}
		
		
		
		// PS_METHOD
		this.getXML = function(){
			return XMLHIT;
		}

		this.getAHAH = function(){
			return AHAH_DATA;
		}
		
		this.isLoadingChk = function(){
			try{
				if(style.isLoading) {
					//alert("·ÎµùÁßÀÔ´Ï´Ù");
					if(xmlhttp.readyState == 4){
						isLoading=false;
						return true;
					}
					return false;
				}
			}catch(e) { errAlert(e, className + ".isLoadingCheck()"); }
		
		}

	this.getXMLData = function (url, nowFunc, query, eName) {
		try{
			cMode = "AJAX";
			if(this.isLoadingChk()) return;			
			
			XMLHIT = null;
			
			style.loadedAction = nowFunc;
			
			if(style.loadedAction == null) {
				alert("handle functionÀ» ¼³Á¤ÇØ ÁÖ½Ê½Ã¿À");
				return;
			}
			
			if(xmlhttp == null) xmlhttp = createXMLHttpRequest();
			style.elementName = eName;

			var queryString  = createQuery(query);
			with(xmlhttp){

				if(AJAX_CONFIG.timeout > 0) requestTimer = setTimeout(function(){eval(cName + ".abort();")}, AJAX_CONFIG.timeout);
				open(style.method, url, style.async);
				onreadystatechange = handleFunction;
				setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
				send(queryString);

/*
				open(style.method, url, false);
				setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				send(queryString);
				xml = responseXML;
				alert(responseText);
*/
			}
			
		}catch(e){
			errAlert(e, "AjaxMgr.getXMLData");
		}
	}

	this.getAHAHData = function(url, nowFunc, query){
//		try{
			
			cMode = "AHAH";
			if(this.isLoadingChk()) return;			
			style.loadedAction = nowFunc;

			if(style.loadedAction == null) {
				alert("handle functionÀ» ¼³Á¤ÇØ ÁÖ½Ê½Ã¿À");
				return;
			}
			
			if(xmlhttp == null) xmlhttp = createXMLHttpRequest();
			
			var queryString  = createQuery(query);
			with(xmlhttp){
				if(AJAX_CONFIG.timeout > 0) requestTimer = setTimeout(function(){eval(cName + ".abort();")}, AJAX_CONFIG.timeout);

				open(style.method, url, true);
				//timeout = 10;
				//onTimeout = function(){alert("timeOut"); };
				onreadystatechange = handleFunction;
				setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
				send(queryString);
			}

//		}catch(e){
//			errAlert(e, className + ".getAHAHData()");
//		}
	}

	this.abort = function(msg){
		if(msg==null) msg=true;
		if(msg) alert("¼­¹ö¿ÍÀÇ Åë½ÅÀÌ ±æ¾îÁö°í ÀÖ½À´Ï´Ù....");
		xmlhttp.abort();
	}

	
	this.handle = function(){
		handleStateChange();
	}
	
	this.toString = function(){
		return className + " Class (NewAjaxControll.js)";
	}

}



function createQuery(queryArray){
	var queryData="";
	for(var i =0 ; i < queryArray.length ; i++){
		queryData += queryArray[i].name + "=" + escape(queryArray[i].value);
		if(i != (queryArray.length-1) ) queryData+= "&";
	}
	//alert("Has been making Query : " + queryData);
	return queryData;
}
				

// -- AJAX CLASS END