	


//					AJAX SETTING					//
/*
	파일명 : ajaxCls.js
	작성일 : 07.07.25
	작성자 : 조현희
	
	08.02.18 : prototype paramSetFrm( formName ) 추가
*/

//			1. XMLHttpRequest 객체 생성 ST			//
	function AjaxCls()
	{
		this.httpReq		= null;			// XMLHttpRequest 객체
		this.pageDoc		= null;			// 호출 페이지의 document 객체
		this.pageUrl		= '';			// 결과요청페이지 주소
		this.paramArr		= new Array();	// 요청페이지로 넘길 파라메터정보
		this.parameters		= '';			// 파라메터 정보 재정의
		this.handlerFunc	= null;			// response후 수행할 함수
		this.errMsg			= '';			// Error Message
		this.method			= 'POST';		// 데이터 전송방식 Default:POST
		
		if(window.XMLHttpRequest)
		{// Mozilla, Safari,...
			this.httpReq = new XMLHttpRequest();
			
		 	if(this.httpReq.overrideMimeType)
		 	{
		    		this.httpReq.overrideMimeType('text/xml');
		 	}
		}else if(window.ActiveXObject)
		{// IE
		 	try
		 	{
		    		this.httpReq = new ActiveXObject("Msxml2.XMLHTTP");
		 	}catch( errorMsg )
		 	{
		    		try
		    		{
		       		this.httpReq = new ActiveXObject("Microsoft.XMLHTTP");
		    		}catch( errorMsg ){}
		 	}
		}
		
		if (!this.httpReq)
		{
			alert('Cannot create XMLHTTP instance');
			return false;
		}
		
	}//		EO		function AjaxCls()
	
	AjaxCls.prototype = 
	{
		toString : function()
		{
			var str = "";
			str += "Ajax Class\n";
			str += "Target URI : "+this.pageUrl+"\n";
			str += "Method : "+this.method+"\n";
			str += "ReadyState : "+this.httpReq.readyState;
			return str;
		},
		
		paramSet : function( name, value )
		{
		    //escape : 유니코드, encodeURIComponent : UTF-8
			var paramInfo = name + "=" + value;
			this.paramArr.push( paramInfo );
		},
		
		paramSetFrm : function( formName )
		{
			var paramInfo = '';	
			var obj = eval( "document." + formName );
			var i=0;
			for( i=0; i<obj.elements.length; i++ )
			{
				paramInfo = obj.elements[i].id + "=" + obj.elements[i].value;
				this.paramArr.push( paramInfo );
			}
		},
		
		stateChange : function( req, handlerFunc )
		{
			return function()
			{
			    // 응답코드
				if( req.readyState == 4 )
				{
				    //  HTTP 상태코드
					if( req.status == 200 )
					{
						handlerFunc( req );
					}else if( req.status == 404 )
					{
						alert( "Request URL does not found." );
					}else
					{
						alert( "Error : status code is " + req.status );
					}
				}
			}
		},
		
		sendInfo : function()
		{
			if( this.url == "" )
			{
				this.ErrMsg = "URL이 설정되지 않았습니다";
				alert( this.ErrMsg );				
				return false;
			}else if( this.handlerFunc == null )
			{
				this.ErrMsg = "핸들러 함수가 정의되지 않았습니다";
				alert( this.ErrMsg );
				return false;
			}else if( this.pageDoc == null )
			{
				this.ErrMsg = "실 페이지의 객체를 설정해 주세요";
				alert( this.ErrMsg );
				return false;
			}else
			{
				this.parameters = this.paramArr.join("&");
				var handlerFunction = this.stateChange(this.httpReq, this.handlerFunc);
				this.httpReq.onreadystatechange = handlerFunction;
				this.httpReq.open( this.method, this.pageUrl, true );
				this.httpReq.setRequestHeader( "Content-Type","application/x-www-form-urlencoded" );
				this.httpReq.send( this.parameters );
			}
		}
		
	}//		EO		AjaxCls.prototype
//			1. XMLHttpRequest 객체 생성 ED			//
/*
**********************************************************************************
							사용 방법
**********************************************************************************	

	<script>
	
	function dataReq()
	{
	    var obj = new AjaxCls();
	    
		obj.pageUrl	= "testXml01.jsp";	            // 데이터를 요청할 페이지 주소
		obj.paramSet( "paramName", "paramData" );	// 해당 페이지로 넘길 파라메터 정보
		obj.pageDoc	= document;		                // 현재 페이지가 가진 document 객체
		obj.handlerFunc = dataRes();		        // 데이터 요청후 수행할 함수명
		//obj.handlerFunc = dataRes( variable );        // 변수 사용가능
		
		obj.sendInfo();				                // 메세지 전달
	}
	
	function dataRes()
	{
		return function( res )
		{
			필요작업 수행
			ex)	res.responseText;
				res.responseXML;
				등등...
				
				//xml 샘플
				var resXml = res.responseXML;
				
     			properties = resXml.getElementsByTagName( "properties" );
     			resultMsg  = properties[0].getElementsByTagName( "result" )[0].firstChild.nodeValue;
                
                var showEl      = resXml.getElementsByTagName( "show" );
                var titleEl     = resXml.getElementsByTagName( "title" );
                var ratingEl    = resXml.getElementsByTagName( "rating" );
                
                document.all.textSpan.innerText = textObj;
                
                document.all.titleSpan.innerText = titleEl[0].childNodes[0].nodeValue;
                document.all.ratingSpan.innerText = ratingEl[0].childNodes[0].nodeValue;
		}
	}
	
	</script>
	
*/
/*
    자매품 trim
    res.responseText를 사용할 경우 가끔쓰임 - 공백제거용
*/
	function trim(str)
	{
		str = str.replace(/(^\s*)|(\s*$)/g,"");		
		return str;
	}
