

//HTTPÅë½Å °´Ã¼ 
var AJAX_REQUEST;

//form¿¡ ¼³Á¤µÈ µ¥ÀÌÅÍ¸¦ ÀÐ¾î¼­ ¼­¹ö¿¡ Àü¼ÛÇÑ POST Data string ±¸¼º
function ajax_getSendData(targetform, reqType){
	var varDisabled, varName;
	var strResult = '';
	if( targetform == null ) 
		return null;

	var objElements = targetform.elements;
	var objInput;
	for( var i = 0; i < objElements.length; i++ ){
		objInput = objElements[i];
		varDisabled=objInput.disabled;
		varName = objInput.name;

		if ( !varDisabled && varName !="" ) {
			switch(objInput.type) {
				case'radio':
				case'checkbox':
					if( objInput.checked == true ) {
						if( strResult.length )
							strResult += "&";
						strResult += varName + "=" + objInput.value;
					}
					break;
				case'file':
				case undefined:
				case'reset':
				case'button':
				case'submit':
					break;
				default:
					if( strResult.length )
						strResult += "&";
					strResult += varName + "=" + objInput.value;
			}
		}
	}
	return strResult;
}


//»ç¿ëÇÒ HTTP °´Ã¼ ¾ò±â
function ajax_getHttpRequest( objRequest ){
    if(objRequest && objRequest.readyState!=0) {
        objRequest.abort() ;
    }
	
	//Http °´Ã¼ »ý¼º
    //Mozilla-based browsers
    if(window.XMLHttpRequest){
        objRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject){
        objRequest=new ActiveXObject("Msxml2.XMLHTTP");
        if (! objRequest){
            objRequest=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    if(objRequest){
    	//alert( "XMLHTTP OK");
    }  else {
    	//°´Ã¼°¡ »ý¼ºµÇÁö ¾Ê´Â °æ¿ì ¿À·ù ¸Þ½ÃÁö
        alert("Your browser does not permit the use of all of this application's features!");
    }    
    return objRequest;
}


/* 
Wrapper function for constructing a Request object.
 Parameters:
  url     : The URL of the server program.
  reqType : GET / POST
  asynch  : Whether to send the request asynchronously or not.   
  	POST ¹æ½Ä »ç¿ë¾ÈÇÔ   	
*/
function ajax_sendHttpRequest(objRequest, url, state_func, frm, reqType, isXml){
	var varAsync = false;	//ÀÀ´äÀ» ±â´Ù·Á¾ß ÇÏ´ÂÁö ¿©ºÎ
	var varURL = url;		//¿äÃ»ÇÒ URL
	var varResult = null;
	var varData = null;
			
	//Http °´Ã¼ »ý¼º
    if(objRequest){

		//ÀÀ´äÀ» ¹ÞÀ» ÇÔ¼ö°¡ ¼±¾ðµÈ °æ¿ì
		if( state_func != null ) {
	    	objRequest.onreadystatechange = state_func;
	    	varAsync = true;
	    }
    	
		//º¸³¾ method Çü½Ä
		var varMethod = "GET";
//		if( reqType != null && reqType != varMethod ){
//			varMethod = reqType; }

    	//º¸³¾ form µ¥ÀÌÅÍ ÀÐ±â
		if ( frm != null && frm != "" ) 
			varData = ajax_getSendData(frm, varMethod);

		
//POST¹æ½ÄÀÏ °æ¿ì ÇÑ±Ûµ¥ÀÌÅÍ°¡ ±úÁ®¼­ GET¹æ½ÄÀ¸·Î Àü¼ÛÇÏµµ·Ï ÇÑ´Ù.
/*
		if( varMethod == "POST" && varData != null ) {
			alert( "post" );
			//POST¹æ½ÄÀ¸·Î º¸³¾ µ¥ÀÌÅÍ°¡ ÀÖ´Â °æ¿ì
			objRequest.open(varMethod, varURL, varAsync);
			//objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			//"application/x-www-form-urlencoded; charset=ISO-8859-1");
			//"application/x-www-form-urlencoded; charset=US-ASCII");
			//"application/x-www-form-urlencoded; charset=UTF-16");
			//"application/x-www-form-urlencoded; charset=euc-kr");
			//"application/x-www-form-urlencoded; charset=UTF-8");
	        //"application/x-www-form-urlencoded");			
			//objRequest.setRequestHeader('Content-Length', ''+varData.length);
			objRequest.send(varData);
		} else {
*/		
			//GET¹æ½ÄÀÎ °æ¿ì
			if ( varData != null && varData != "" ) {
				//º¸³¾ µ¥ÀÌÅÍ°¡ ÀÖ´Â °æ¿ì
				if( varURL.indexOf("?") > 0 ) {
					varURL = varURL + "&" + varData;
				} else {
					varURL = varURL + "?" + varData;
				}
			}
			
			objRequest.open("GET", varURL, varAsync);
			objRequest.send(null);
//		}

		//not async.
		if( state_func == null ) {
		    if(objRequest.readyState == 4){

		        if(objRequest.status == 200){
		        	//Á¤»óÀûÀÎ °á°ú¸¦ ¹ÞÀº °æ¿ì
					if( isXml ) {
			     		varResult = objRequest.responseXML;
			     	} else {

						try {
				     		varResult = objRequest.responseText;
				     	} catch(e) {
				     		alert( "Á¶È¸½Ã ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.");
				     		varResult = null;
						}
			     	}
		        } else if(objRequest.status == 404){
		        	alert("¿äÃ»µÈ URLÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.");
		        } else if(objRequest.status == 500){
		        	alert("³»ºÎ¼­¹ö ¿À·ùÀÔ´Ï´Ù.");
		        } else {
		            alert("A problem occurred with communicating between the XMLHttpRequest object and the server program.");
		        }
		    }
	     	objRequest = null;
	    }	

    }  else {
    	//°´Ã¼°¡ »ý¼ºµÇÁö ¾Ê´Â °æ¿ì ¿À·ù ¸Þ½ÃÁö
    	objRequest = null;
    }
   	return varResult;    
}





//POST¹æ½ÄÀ¸·Î Åë½ÅÇÑ´Ù.
function ajax_PostObjHttpRequest( argFrm, divObj ) {
	//Http °´Ã¼ »ý¼º
    AJAX_REQUEST = ajax_getHttpRequest();
    //Http Åë½ÅÀ¸·Î °á°ú¸¦ ¹Þ¾Æ¿Â´Ù.
	var returnHtml = ajax_sendHttpRequest(AJAX_REQUEST, argFrm.action, null, argFrm, "POST", false );
	
	if ( returnHtml != null ) {

		if ( divObj != null ) {
		
			divObj.innerHTML = returnHtml;
			if ( eval("document.all." + divObj.id + ".style") != null ) {
				divObj.style.display = "inline";
			}
			return true;
		} else {
		
			try {
				var retObj = eval(returnHtml);
	     	} catch(e) {
			}
		}
	}
	return false;
}


//GET¹æ½ÄÀ¸·Î Åë½ÅÇÑ´Ù.
function ajax_GetHttpRequest( argUrl, divObj,  argFrm ) {
	//Http °´Ã¼ »ý¼º
    AJAX_REQUEST = ajax_getHttpRequest();
    //Http Åë½ÅÀ¸·Î °á°ú¸¦ ¹Þ¾Æ¿Â´Ù.
	var returnHtml = ajax_sendHttpRequest(AJAX_REQUEST, argUrl, null, argFrm, "GET", false );

	if ( returnHtml != null ) {		
		
		if ( divObj != null ) {
			
			divObj.innerHTML = returnHtml;
			
			if ( eval("document.all." + divObj.id + ".style") != null ) {
				divObj.style.display = "inline";
			}

			return true;
		} else {
			try {
				return returnHtml;
	     	} catch(e) {}
		}
	}
	return false;
}


/////////////////////////////////////////////////////////////////////////
//
// Wrapper function for constructing a Request object. 
//
//		(POST ¹æ½Ä »ç¿ë°¡´É , ÇÑ±ÛÃ³¸® ¾ÈÇÔ)
//
/////////////////////////////////////////////////////////////////////////
function ajax_sendHttpRequestForSearch(objRequest, url, state_func, frm, reqType, isXml){

	var varAsync = false;	//ÀÀ´äÀ» ±â´Ù·Á¾ß ÇÏ´ÂÁö ¿©ºÎ
	var varURL = url;		//¿äÃ»ÇÒ URL
	var varResult = null;
			
	//Http °´Ã¼ »ý¼º
    //var objRequest = ajax_getHttpRequest();
    if(objRequest){

		//ÀÀ´äÀ» ¹ÞÀ» ÇÔ¼ö°¡ ¼±¾ðµÈ °æ¿ì
		if( state_func != null ) {
	    	objRequest.onreadystatechange = state_func;
	    	varAsync = true;
	    }
    	
		//º¸³¾ method Çü½Ä
		var varMethod = "GET";
		if( reqType != null && reqType != varMethod ){
			varMethod = reqType; 
		}

    	//º¸³¾ form µ¥ÀÌÅÍ ÀÐ±â
		var varData = ajax_getSendData(frm, varMethod)    	


		if( varMethod == "POST" && varData != null ) {
//			alert( "post" );
			//POST¹æ½ÄÀ¸·Î º¸³¾ µ¥ÀÌÅÍ°¡ ÀÖ´Â °æ¿ì
			objRequest.open(varMethod, varURL, varAsync);
			//objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			//"application/x-www-form-urlencoded; charset=ISO-8859-1");
			//"application/x-www-form-urlencoded; charset=US-ASCII");
			//"application/x-www-form-urlencoded; charset=UTF-16");
			//"application/x-www-form-urlencoded; charset=euc-kr");
			//"application/x-www-form-urlencoded; charset=UTF-8");
	            //"application/x-www-form-urlencoded");			
			//objRequest.setRequestHeader('Content-Length', ''+varData.length);
			objRequest.send(varData);
		} else {
		
			//GET¹æ½ÄÀÎ °æ¿ì
			if ( varData != null && varData != "" ) {
				//º¸³¾ µ¥ÀÌÅÍ°¡ ÀÖ´Â °æ¿ì
				if( varURL.indexOf("?") > 0 ) {
					varURL = varURL + "&" + varData;
				} 
			}
			//alert(varURL);
			objRequest.open("GET", varURL, varAsync);
			objRequest.send(null);
		}

		//not async.
		if( state_func == null ) {
		    if(objRequest.readyState == 4){

		        if(objRequest.status == 200){
		        	//Á¤»óÀûÀÎ °á°ú¸¦ ¹ÞÀº °æ¿ì
					if( isXml ) {
			     		varResult = objRequest.responseXML;
			     	} else {

						try {
				     		varResult = objRequest.responseText;
				     	} catch(e) {
				     		alert( "Á¶È¸½Ã ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.");
				     		varResult = null;
						}
			     	}
		        } else if(objRequest.status == 404){
		        	alert("¿äÃ»µÈ URLÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.");
		        } else if(objRequest.status == 500){
		        	alert("³»ºÎ¼­¹ö ¿À·ùÀÔ´Ï´Ù.");
		        } else {
		            alert("A problem occurred with communicating between the XMLHttpRequest object and the server program.");
		        }
		    }
	     	objRequest = null;
	    }	

    }  else {
    	//°´Ã¼°¡ »ý¼ºµÇÁö ¾Ê´Â °æ¿ì ¿À·ù ¸Þ½ÃÁö
    	objRequest = null;
    }
   	return varResult;    
}



//POST¹æ½ÄÀ¸·Î Åë½Å ÈÄ Æ¯Á¤ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. 
function ajax_PostHttpRequestExeFn( argFrm, divObj, exeFn ) {
	//Http °´Ã¼ »ý¼º
    AJAX_REQUEST = ajax_getHttpRequest();
    //Http Åë½ÅÀ¸·Î °á°ú¸¦ ¹Þ¾Æ¿Â´Ù.
	var returnHtml = ajax_sendHttpRequest(AJAX_REQUEST, argFrm.action, exeFn, argFrm, "POST", false );
	//alert( returnHtml );
	if ( divObj != null ) {
		divObj.innerHTML = returnHtml;
		divObj.style.display = "inline";
	}
}

//GET¹æ½ÄÀ¸·Î Åë½Å ÈÄ Æ¯Á¤ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
function ajax_GetHttpRequestExeFn( argUrl, divObj, exeFn ) {
	//Http °´Ã¼ »ý¼º
    AJAX_REQUEST = ajax_getHttpRequest();
    //Http Åë½ÅÀ¸·Î °á°ú¸¦ ¹Þ¾Æ¿Â´Ù.
	var returnHtml = ajax_sendHttpRequest(AJAX_REQUEST, argUrl, exeFn, null, "GET", false );
	//alert( returnHtml );
	if ( divObj != null ) {
		divObj.innerHTML = returnHtml;
		divObj.style.display = "inline";
	}
	return true;
}


