// JavaScript Document

function Ajax(){
		
	this.url = "";
	this.params = "";
	this.method = "GET";
	this.onSuccess = null;
	this.onError = function(msg){
		alert(msg);
	}
}

Ajax.prototype.doRequest = function(){
	
	if(!this.url){
		this.onError("No URL #error 001");
		return false;
	}
	if(!this.method){
		this.method = "GET";
	}
	else{
		this.method = this.method.toUpperCase();
	}
	
	// create XMLHttpRequest Object
	var xmlHttpRequest = getXMLHttpRequest();
	if(!xmlHttpRequest){
		this.onError("XMLHttpRequest could not be defined #error 002");
		return false;
	}
	
	var _this = this;
	
	switch(this.method){
		case "GET": 
			xmlHttpRequest.open(this.method, this.url+"?"+this.params, true);
			xmlHttpRequest.onreadystatechange = readyStateHandler;
			xmlHttpRequest.send(null);
		break;
		case "POST":
			xmlHttpRequest.open(this.method, this.url, true);
			xmlHttpRequest.onreadystatechange = readyStateHandler;
			xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlHttpRequest.send(this.params);
		break;
	}
	
	function readyStateHandler(){
		if(xmlHttpRequest.readyState < 4){
			return false;
		}
		if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 304 || xmlHttpRequest.status == 404){
			if(_this.onSuccess){
				_this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
			}
			else{
				if(_this.onError){
					_this.onError("=="+xmlHttpRequest.status+"=="+xmlHttpRequest.statusText+" Error occured");
				}
			}
		}
	}
	
	function getXMLHttpRequest(){
		if(window.XMLHttpRequest){
			// FF Opera Safari
			return new XMLHttpRequest();
		}
		else{
			if(window.ActiveXObject){
				try{
					return new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e){
					try{
						return new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e){
						return null;
					}
				}
			}
		}
	}
	
	return null;
};