/******************************************************** 
   파일명 : lib.ajax.js
   설  명 : ajax 통신을 위한 스크립트
   작성자 : 장연호 
   작성일 : 2008.09.11 
   수정일 : 2008.09.11 
*********************************************************/

function paramEscape(paramValue) {
    return encodeURIComponent(paramValue);
}

/**
	함수명 : formData2QueryString
	설  명 : form 에 선언된 값들을 Ajax를 위한 파라미터값으로 변경
	인  자 : form에 선언된 모든 값들
	리  턴 : 쿼리화된 인자값
	필 수 : 필수
	사용법 :		
 */	
function formData2QueryString(docForm) {
   var submitString = '';
   var formElement = '';
   var lastElementName = '';

   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 + '=' + paramEscape(formElement.value) + '&';
           break;
        case 'radio' :   
           if(formElement.checked)
           {
             submitString += formElement.name + '=' + paramEscape(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 += ',' + paramEscape(formElement.value);
             }
             else
             {
                submitString += formElement.name + '=' + paramEscape(formElement.value); 
             }
             submitString += '&';
             lastElementName = formElement.name;
           }
           break; 
     }                                                                            
   }
   submitString = submitString.substring(0, submitString.length - 1);
   //document.all("result").value = submitString;

   return submitString;                               
}

/**
	함수명 : xmlHttpPost
	설  명 : Action 으로 xmlHttp 통신
	인  자 : url, queryString(파라미터), 성공시 실행될 함수명, 리턴할 값 지정(xml,String, json)
	리  턴 : Action 호출
	필 수 : 필수		
	사용법 : 
		xmlHttpPost('/rp/cm/usGoodsType_prc_00.do', document.form, 'okFunction', '');
 */	
function xmlHttpPost(actionUrl, submitParameter, resultFunction, actionType) {
   var xmlHttpRequest = false;

   //IE인경우
   if(window.ActiveXObject)
   {
       xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
   }
   else
   {       
     xmlHttpRequest = new XMLHttpRequest();
     xmlHttpRequest.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 404:
             alert('오류: ' + actionUrl + '이 존재하지 않음');
             break;
          case 500:
             alert('오류: ' + xmlHttpRequest.responseText);
             break;
          default:          
            if(actionType == 'xml') {
                eval(resultFunction + '(xmlHttpRequest.responseXML);');
            }else{
            	eval(resultFunction + '(xmlHttpRequest.responseText);');       					
            }
             break;     
        }        
     }
   }

   xmlHttpRequest.send(submitParameter);             
}

/**
	함수명 : evalFunc
	설  명 : Action 에서 json 형식으로 리턴된 값을 오브젝트로 변경(json 리턴시만 사용)
	인  자 : xmlHttpRequest.responseText
	리  턴 : json
	필 수 : 		
	사용법 : 
		evalFunc(result);
 */	
function evalFunc(request) {
	return eval('('+request+')');
}

//---------------------------------
// XML 을 통한 JSP 결과값 얻어오기
//---------------------------------
function xmlHttpRequestToXmlArray(pageurl)
{
	//*******xml과 xsl뿌리기*************************/
		var myXml;
		var xmlroot;
		try
		{
 			myXml = new ActiveXObject("Microsoft.xmldom");
 			myXml.async=false;
 			myXml.validateOnParse = true;
 			myXml.load(pageurl);

 			if (myXml.parseError.errorCode != 0) alert(myXml.parseError.reason);
		}
		catch ( exception )
		{
			alert("ActiveX Object 에러!");
			return;
		}
 		xmlroot=myXml.documentElement;

		var elements = new Array();
		for (var i=0; i<xmlroot.childNodes.length; i++) {
			var node = xmlroot.childNodes.item(i);
			if (node.nodeType == "1")
				elements[i]	= [node.nodeName, node.text];
		}
		return elements;

}

function getXmlArrayValue(src, name)
{
	if( src == null || src == '' || src.length == 0 ) return '';

	var data = '';
	for( var i = 0; i < src.length ; i++ )
	{
		if( src[i][0] == name ) return src[i][1];
	}

	return data;
}