/*************************************************************
	AJAX에 사용될 Util 함수 모음 
*************************************************************/	 

// 폼 엘리먼트들을 스트링 형태의 파라미터로 전환 
// 폼에 값을 Post 데이터로 전송하기 위해서 필요 
// 사용 주의사항: 폼 속성에 name 속성을 사용 해야된다. id 속성을 사용 하면 안된다.
// docForm: 폼 객체 
function jf_formData2QueryString(docForm)
{    
	var submitString = '';
	var formElement = '';
	var lastElementName = '';
	var i;
    
	for(i = 0 ; i < docForm.elements.length ; i++){
		formElement = docForm.elements[i];
		switch(formElement.type){
			case 'text' :
			case 'select-one' :
			case 'hidden' :
			case 'password' :
			case 'textarea' :
				submitString += formElement.name + '=' + encodeURIComponent(formElement.value) + '&';
				break;
			case 'radio' :     
				if(formElement.checked){
			    submitString += formElement.name + '=' + encodeURIComponent(formElement.value) + '&';
				}
				break;
			case 'checkbox' :    
				if(formElement.checked){
					if(formElement.name = lastElementName){
						if(submitString.lastIndexOf('&') == submitString.length - 1){
					    submitString = submitString.substring(0, submitString.length - 1);
						}
						submitString += ',' + encodeURIComponent(formElement.value);
					}
					else {
    				submitString += formElement.name + '=' + encodeURIComponent(formElement.value); 
					}
					
					submitString += '&';
					lastElementName = formElement.name;
				}
				break;  
		}                                                                                                                  
	}
	// 멘 앞에 붙은 '&'  값을 없에기 위해 
	submitString = submitString.substring(0, submitString.length - 1);
	return submitString;                                               
}

// 명령어 처리를 함
// actionUrl: 처리할 URL 주소
// submitParameter: 전달 파라미터
// resultFunction: 이벤트 처리 파라미터 
// isXML: true : 처리함수 responseXML 객체가 파라미터 
//        false: 처리함수 responseText 객체가  파라미터  
function jf_xmlHttpPost(actionUrl, submitParameter, resultFunction, isXML)
{
	var xmlHttpRequest = false;
    
	//IE인경우
	if(window.ActiveXObject){
		xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
	}
	else{
		xmlHttpReq = new XMLHttpRequest();
    xmlHttpReq.overrideMimeType('text/xml');
	}    
            
	xmlHttpRequest.open('POST', actionUrl, true);
  xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  
  // 이벤트 처리 함수 지정 
  xmlHttpRequest.onreadystatechange = function() {
	  if(xmlHttpRequest.readyState == 4){
			switch (xmlHttpRequest.status){
	      // 정상  처리 
	     	case 200:
	      	// 사용자 이벤트 처리 함수 지정 
					if(isXML){
		      	eval(resultFunction + '(xmlHttpRequest.responseXML);');
		      }
		      else{
			      eval(resultFunction + '(xmlHttpRequest.responseText);');
		      }

	        break;

				// 이후 부터는  에러 처리 
				case 404:
	      	alert('오류(응답코드: 404): ' + actionUrl + '이 존재하지 않음');
	     		break;
	     	case 500:
	      	alert('오류(응답코드: 500): ' + xmlHttpRequest.responseText);
	      	break;
	     	default:
	      	alert('정의되지 않은 오류(응답코드: '+xmlHttpRequest.status+'): ' 
	      			+ xmlHttpRequest.responseXML);
	      	break;
	      }            
			}
		}
	
	xmlHttpRequest.send(submitParameter);                    
}                                    
