
var ajax=new Object();

ajax.Request=function(url, params, callback, method){	
	this.url=url;				//처리파일
	this.params=params;			//처리파일에 전달할 데이터
	this.callback=callback;		//콜백함수명
	this.method=method;			//데이터전송방식(GET or POST <- 꼭! 대문자로))
	this.send();
}

ajax.Request.prototype={
	getXMLHttpRequest:function(){
		if(window.ActiveXObject){
			var waystation=new ActiveXObject("Msxml2.XMLHTTP");

			if(!waystation){
				var waystation=new ActiveXObject("Microsoft.XMLHTTP");
			}
		}else if(window.XMLHttpRequest){
			var waystation=new XMLHttpRequest();
		}else{
			var waystation=false;
		}

		return waystation;
	},

	send:function(){
		this.req=this.getXMLHttpRequest();

		var httpMethod=this.method ? this.method : "GET";
		if(httpMethod!="GET" && httpMethod!="POST"){
			httpMethod="GET";
		}

		var httpParams=(this.params==null || this.params=="") ? null : this.params;

		var httpUrl=this.url;
		if(httpMethod=="GET" && httpMethod!="POST"){
			httpUrl+="?"+httpParams;
		}

		this.req.open(httpMethod, httpUrl, true);
		this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		var request=this;
		this.req.onreadystatechange=function(){
			request.onStateChange();
		}

		this.req.send(httpMethod=="POST" ? httpParams : null);
	},

	onStateChange:function(){
		this.callback(this.req);
	}
}
/******ajax 클래스******/


/******
1.	변수를 넘겨줄때 encodeURIComponent() 함수를 사용하여
	UTF-8로 인코딩 후에 넘겨주어야 함
	ex) var params="name="+encodeURIComponent("테스트");

2.	콜백함수에서 데이터 전송 여부는
	readyState, status 메소드로 확인.

	readyState=0(open 메서드가 호출되지 않음)
	readyState=1(open 메서드가 호출)
	readyState=2(send 메서드가 호출)
	readyState=3(데이터의 일부를 받음)
	readyState=4(데이터 전체를 받음)

	status=200(요청성공)
	status=403(접근거부)
	status=404(페이지 없음)
	status=500(서버 오류)
	
	readyState=4, status=200 값을 가져야 정상

3.	콜백함수 데이터 호출
	responseText 데이터 호출 메소드
	responseXML 데이터 호출 메소드

4.	콜백함수로 넘어온 데이터를 사용하려면
	eval()함수를 사용하여 객체로 변환하여야함.
	ex) date="넘어온 데이터";
		eval(date);
******/