// Author: Kuan
// File Name: AJAXClass.js
// Website: www.ThaiFreelanceBid.com
// Created Date: 17 Oct 2006
// webmaster@thaifreelancebid.com

var xmlhttp;
var response_text = "";
var function_name = "";

function AJAXClass(){
	//Variables
	this.url = "";
	this.method = "GET";
	this.parameters = new Array();
	this.paramstr = "";

	//Check Browser
	if(window.ActiveXObject){
		//IE
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		//FF, NS
		xmlhttp = new XMLHttpRequest();
	}

	//Create Parameter String
	this.createParameters = function(){
		if(this.parameters.length > 0){
			for(i=0; i<this.parameters.length; i++){
				this.paramstr += encodeURI(this.parameters[i]) + "&";
			}
			this.clearParameter();
			return this.paramstr.substr(0, this.paramstr.length-1);
		}else{
			return null;
		}
	}
	
	//Send Query
	this.send = function(){
		if(xmlhttp != null){
			var tempurl = this.url;
			var param = this.createParameters();
			if(this.method.toLowerCase()=="get"){
                var cDate = new Date();
				var timeParam = "TimeStamp=";
                timeParam += cDate.getFullYear();
                timeParam += "-" + (cDate.getMonth() + 1);
                timeParam += "-" + cDate.getDate();
                timeParam += "-" + cDate.getHours();
                timeParam += "-" + cDate.getMinutes();
                timeParam += "-" + cDate.getSeconds();
				if(param!=null){
					tempurl += "?"+param;
					param = null;
					tempurl += "&" + timeParam;
				}
				else {
	                if (tempurl.indexOf("?") > 0) tempurl += "&"; else tempurl += "?";
					tempurl += timeParam;
				}
			
			}
			xmlhttp.onreadystatechange = funcStateChange;
			xmlhttp.open(this.method, tempurl, true);

			//Check POST 
			if(this.method.toLowerCase()=="post"){
				xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			}
			
			xmlhttp.send(param);
		}
	}

	//Add Parameter
	this.addParameter = function(name, value){
		this.parameters.push(name + "=" + value);
	}
	
	//Clear Parameters
	this.clearParameter = function(){
		this.parameters = null;
		this.parameters = new Array();
	}
}

//Business Method
function funcStateChange(){
	var LOAD = 4;
	var SUCCESS = 200;
	if(xmlhttp.readyState == LOAD){
		if(xmlhttp.status == SUCCESS){
			var result = xmlhttp.responseText;	
			if(result != ""){
				response_text = "";
				response_text = result;
				eval(function_name);
			}
		}else{
			alert("Error HTTP Return State: "+xmlhttp.status);
		}
	}
}
function Next(){
	location.href()
	}