/* updated: 24/01/08 */
/* This class use to invoke all kinds of ajax */

function createXMLRequest(){
	var request=null;
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return request;
}

//method get with synchronous option & callback function after completed request
function getAjaxRequest(url,requestObj,divID,asyn,callback_func){
	if(requestObj) {
		var objContainer=document.getElementById(divID);
		if(asyn === undefined) asyn=true;
		requestObj.open('GET', url,asyn);
		requestObj.onreadystatechange = function(){
											if (requestObj.readyState == 4 && requestObj.status == 200) {
												objContainer.innerHTML=requestObj.responseText;
												if(callback_func !== undefined) callback_func();
											} else objContainer.innerHTML="<div id='load' style='background-color:#f00;color:#f99;font-size:11px;position:relative;width:10px;'>Loading...</div>";
										}
		requestObj.send(null);
		if(asyn == false){
			objContainer.innerHTML=requestObj.responseText;
			if(callback_func !== undefined) callback_func();
		}
	}
}

function ajax_get_caller(url, divID, asyn,callback_func){
	var obj = createXMLRequest();
	getAjaxRequest(url,obj,divID,asyn,callback_func);
}

//method post with synchronous option & callback function after completed request
function postAjaxRequest(url,requestObj,param,divID,asyn,callback_func){
	if(requestObj) {
		var objContainer=document.getElementById(divID);
		if(asyn === undefined) asyn=true;
		requestObj.open('POST', url, asyn);
		requestObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		requestObj.onreadystatechange = function(){
											if (requestObj.readyState == 4 && requestObj.status == 200) {
												objContainer.innerHTML=requestObj.responseText;
												if(callback_func !== undefined) callback_func();
											} else objContainer.innerHTML="<div id='load' style='background-color:#f00;color:#f99;font-size:11px;position:relative;width:10px;'>Loading...</div>";
										}
		requestObj.send(param);
		if(asyn == false){
			objContainer.innerHTML=requestObj.responseText;
			if(callback_func !== undefined) callback_func();
		}
	}
}

function ajax_post_caller(url,param,divID, asyn,callback_func){
	var obj = createXMLRequest();
	postAjaxRequest(url,obj,param,divID,asyn,callback_func);
}