﻿//======================================================
//--- Description : XMLHttpRequest 생성
//--- Func Name : createXMLHttpRequest() 
//--- Param : 없음
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function createXMLHttpRequest() 
{
	if (window.XMLHttpRequest) 
	{
		xmlHttp = new XMLHttpRequest();
	}	
	else 
	{
		if (window.ActiveXObject)
		{
			try
			{
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(err1)
			{
				try
				{
					xmlHttp = new ActiveXObject("Msm12.XMLHTTP");
				}
				catch(err2)
				{
					xmlHttp =  false;
				}
			}
		}
	}

	return xmlHttp;
}


//======================================================
//--- Description : get방식으로 ajax넘기기
//--- Func Name : requestGET(url, query, xmlHttp)
//--- Param : obj(url, query, xmlhttp instance)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function requestGET(url, query, xmlHttp)
{
	var myRandom = parseInt(Math.random()*99999999);
	xmlHttp.open("GET", url+"&rand="+myRandom, true);
	xmlHttp.send(null);
}


//======================================================
//--- Description : post방식으로 ajax넘기기
//--- Func Name : requestPOST(url, query, xmlHttp)
//--- Param : obj(url, query, xmlhttp instance)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function requestPOST(url, query, xmlHttp)
{
	xmlHttp.open("POST", url, true);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
	xmlHttp.send(query);
}


//======================================================
//--- Description : ajax실행
//--- Func Name : doAjax(reqtype, url, query, calltype, calltype_name)
//--- Param : obj(form method, action url, query, calltype, calltype_name)
//--- Param detail : calltype(fn, inner), calltype_name(함수명 or id명)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function doAjax(reqtype, url, query, calltype, calltype_name) {	//reqtype(POST,GET), calltype(fn,inner) 
	var myreq = createXMLHttpRequest();
	myreq.onreadystatechange = function() {
		if(myreq.readyState == 4) {			//0:초기화 안됨, 1:로드하는중, 2:로드됨, 3:상호작용, 4:완료됨
			if(myreq.status == 200) {	
				try{
					var res = xmlHttp.responseText;
					
					if (calltype=='fn')
					{
						eval(calltype_name+'(res)');
					}
					else
					{
						document.getElementById(calltype_name).innerHTML = res;
					}
				}catch(e){}
			}
			else {
				alert("["+myreq.status+"]"+myreq.statusText);	 //에러 코드 및 메시지 출력
			}
		}
		else{
			
			try
			{
				document.getElementById('waiting').innerHTML = "잠시만기다려주세요";		//혹은 이미지 삽입. 필요한 경우만 사용
			}
			catch(err1)
			{
				return false;
			}
			
		}
	}

	if(reqtype=='post'){
		requestPOST(url,query,myreq);
	}
	else {
		requestGET(url,query,myreq);
	}
}



//======================================================
//--- Description : ajax 버튼 실행전 confirm (firefox검증)
//--- Func Name : confirm_btn_ajax(msg,reqtype, url, query, calltype, calltype_name)
//--- Param : obj(confirm msg, form method, action url, query, calltype, calltype_name)
//--- Param detail : calltype(fn, inner), calltype_name(함수명 or id명)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function confirm_btn_ajax(msg,reqtype, url, query, calltype, calltype_name){
		flag = confirm(msg)
		if(flag == true){		
			doAjax(reqtype, url, query, calltype, calltype_name);
		}
}


//======================================================
//--- Description : ajax 체킹된 내용 실행전 confirm (firefox검증)
//--- Func Name : confirm_chking_ajax(obj,msg,reqtype, url, query, calltype, calltype_name)
//--- Param : obj(form object, action url, alert msg)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function confirm_chking_ajax(obj,msg,reqtype, url, query, calltype, calltype_name){
	var  check_nums = obj.elements.length;
	
	for (var i = 0; i < check_nums; i++) {
		if (obj.elements[i].checked == true) {
			break;
		}
   }

   if (i == check_nums) {
		alert('선택해 주십시오.');
   }    
   else {
	   if (msg =='')
	   {
			checkbox_form_ajax(obj,url, query, calltype, calltype_name);
	   }
	   else
	   {
			flag = confirm(msg)
			if(flag == true){		
				checkbox_form_ajax(obj,url, query, calltype, calltype_name);
			}
	   }
   }
}

//======================================================
//--- Description : form check (firefox검증)
//--- Func Name : checkbox_form_ajax(obj,url, query, calltype, calltype_name);
//--- Param : obj(form method, action url, calltype, calltype_name)
//--- Make Date : 2008/12/04
//--- Author : kdy
//======================================================
function checkbox_form_ajax(obj,url, query, calltype, calltype_name) {
       var i,currEl;
	
	   if (query != '')
	   {
		   query = query + '&'
	   }
       for(i = 0; i < obj.elements.length; i++){ 
              currEl = obj.elements[i];       

		     if(currEl.type.toUpperCase() == "CHECKBOX")
		     {
				if (currEl.checked)
				{
					 query = query + currEl.name + "="+currEl.value + "&";
				}
			 }
			 else
		     {
				 query = query + currEl.name + "="+currEl.value + "&";
			 }
       }
		doAjax("post", url, query, calltype, calltype_name);
		return false;
}

//---------------------------------------------------

//======================================================
//--- Description : form check (firefox검증)
//--- Func Name : check_form_ajax(obj,url, query, calltype, calltype_name);
//--- Param : obj(form method, action url, calltype, calltype_name)
//--- Make Date : 2008/12/04
//--- Author : kdy
//======================================================
function check_form_ajax(obj,url, query, calltype, calltype_name) {
       var i,currEl;
	
	   if (query != '')
	   {
		   query = query + '&'
	   }
       for(i = 0; i < obj.elements.length; i++){ 
              currEl = obj.elements[i]; 

              if (currEl.getAttribute("required") != null)
              { 
                     if(currEl.type.toUpperCase() == "TEXT" || currEl.tagName.toUpperCase() == "SELECT" || currEl.tagName.toUpperCase() == "TEXTAREA" ||currEl.type.toUpperCase() == "PASSWORD" )
                     { 
                            if(!chkText(currEl,currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "FILE"){ 
                            if(!chkFile(currEl,currEl.getAttribute("hname"))) return false;

                     }else if(currEl.type.toUpperCase() == "CHECKBOX"){ 
                            if(!chkCheckbox(obj,currEl, currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "RADIO"){ 
                            if(!chkRadio(obj,currEl, currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "HIDDEN"){ 
                            if(!chkHidden(currEl,currEl.getAttribute("hname"))) return false; 

                     }
              }
              if(currEl.getAttribute("option") != null && currEl.value.length > 0){ 
                     if(!chkPatten(currEl,currEl.getAttribute("option"),currEl.getAttribute("hname"))) return false; 
              } 

			 query = query + currEl.name + "="+currEl.value + "&";
       }
		doAjax("post", url, query, calltype, calltype_name);
		return false;
}

//---------------------------------------------------



//======================================================
//--- Description : ajax실행
//--- Func Name : doAjax(reqtype, url, query, calltype, calltype_name)
//--- Param : obj(form method, action url, query, calltype, calltype_name)
//--- Param detail : calltype(fn, inner), calltype_name(함수명 or id명)
//--- Make Date : 2008/09/22
//--- Author : kdy
//======================================================
function doEscapeAjax(reqtype, url, query, calltype, calltype_name) {	//reqtype(POST,GET), calltype(fn,inner) 
	var myreq = createXMLHttpRequest();
	myreq.onreadystatechange = function() {
		if(myreq.readyState == 4) {			//0:초기화 안됨, 1:로드하는중, 2:로드됨, 3:상호작용, 4:완료됨
			if(myreq.status == 200) {				
				var res = xmlHttp.responseText;
				if (calltype=='fn')
				{
					eval(calltype_name+'(res)');
				}
				else
				{
					document.getElementById(calltype_name).innerHTML = res;
				}
			}
			else {
				alert("["+myreq.status+"]"+myreq.statusText);	 //에러 코드 및 메시지 출력
			}
		}
		else{
			
			try
			{
				document.getElementById('waiting').innerHTML = "잠시만기다려주세요";		//혹은 이미지 삽입. 필요한 경우만 사용
			}
			catch(err1)
			{
				return false;
			}
			
		}
	}

//	url = url +"?" + query;
//	query = "";

	if(reqtype=='post'){
		requestPOST(url,query,myreq);
	}
	else {
		requestGET(url,query,myreq);
	}
}


//======================================================
//--- Description : form check - 한글입력이 있는 경우 (firefox검증)
//--- Func Name : check_form_escape_ajax(obj,url, query, calltype, calltype_name);
//--- Param : obj(form method, action url, calltype, calltype_name)
//--- Make Date : 2008/12/04
//--- Author : kdy
//======================================================
function check_form_escape_ajax(obj,url, query, calltype, calltype_name) {
       var i,currEl;
	
	   if (query != '')
	   {
		   query = query + '&'
	   }
       for(i = 0; i < obj.elements.length; i++){ 
              currEl = obj.elements[i]; 

              if (currEl.getAttribute("required") != null)
              { 
                     if(currEl.type.toUpperCase() == "TEXT" || currEl.tagName.toUpperCase() == "SELECT" || currEl.tagName.toUpperCase() == "TEXTAREA" ||currEl.type.toUpperCase() == "PASSWORD" )
                     { 
                            if(!chkText(currEl,currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "FILE"){ 
                            if(!chkFile(currEl,currEl.getAttribute("hname"))) return false;

                     }else if(currEl.type.toUpperCase() == "CHECKBOX"){ 
                            if(!chkCheckbox(obj,currEl, currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "RADIO"){ 
                            if(!chkRadio(obj,currEl, currEl.getAttribute("hname"))) return false; 

                     } else if(currEl.type.toUpperCase() == "HIDDEN"){ 
                            if(!chkHidden(currEl,currEl.getAttribute("hname"))) return false; 

                     }
              }
              if(currEl.getAttribute("option") != null && currEl.value.length > 0){ 
                     if(!chkPatten(currEl,currEl.getAttribute("option"),currEl.getAttribute("hname"))) return false; 
              } 

			 query = query + currEl.name + "="+escape(currEl.value) + "&";
       }
		doEscapeAjax("post", url, query, calltype, calltype_name);
		return false;
}

//---------------------------------------------------