/*
與ajax.js最大不同有2點
1.可以使用POST
2.同一支程式尚未回傳不會再重複執行一次
*/
var ajaxBeta = function() {
	this.updating = false;
	var query = {};
	var thisref = this;
	var ajax = (function() {
		try{ return new ActiveXObject("Msxml2.XMLHTTP.6.0") }catch(e){}
		try{ return new ActiveXObject("Msxml2.XMLHTTP.3.0") }catch(e){}
		try{ return new ActiveXObject("Msxml2.XMLHTTP") }catch(e){}
		try{ return new ActiveXObject("Microsoft.XMLHTTP") }catch(e){}
		try{ return new XMLHttpRequest();} catch(e){}
		return null;
	})();
	function checkstate (callback) {
		switch (ajax.readyState) {
			case 1: break;
			case 2: break;
			case 3: break;
			case 4:
				callback(ajax.responseText,ajax.responseXML,ajax.status);
				thisref.updating = false;
				
		}
	}
	this.addQuery = function(name, value) {
		query[encodeURIComponent(name)] = encodeURIComponent(value);
	}
	this.request = function(method, url, callback) {
		try {
		this.updating = true;
		var qstr = "";
		for(var i in query) {
			qstr += i + "=" + query[i] + "&";
		}
		query = {};
		ajax.open(method, url, true);
		ajax.onreadystatechange = function() {
			checkstate(callback);
		};
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(qstr);
	}catch(e){alert(e);}
	}
}

//----------------------------------------------------------------------------------------------------------
var ajaxBetaArray = new Array();//紀錄所有new ajaxBeta()物件

function use_ajaxBeta(ajax_name, url, target, aArgs, callbackfn) {
	//alert(url);
	if( ajaxBetaArray[ajax_name] == null ){
		ajaxBetaArray[ajax_name] = new ajaxBeta();
	}
	var a = ajaxBetaArray[ajax_name];
	
	if ($("#" + target).css("display") == "none") {
	    $("#" + target).css("display", "block");
	}
	if ($("#" + target).css("visibility") == "hidden") {
	    $("#" + target).css("visibility", "visible");
	}

	//if (!a.updating) {
	    if (target) {
	        document.getElementById(target).innerHTML = '<div style="padding-top:10px; text-align:center"  ><img src="public/images/loadinfo_data.gif" />';
	    }
		//document.getElementById(target).innerHTML = '<div style="padding-left:10px; padding-top:10px; "  ><img src="public/images/loadinfo_data.gif" /></div>';
		if (aArgs) {
			for(var key in aArgs){
				a.addQuery(key,aArgs[key]);//POST變數
				
			}
		}
		a.addQuery("key1","value1");//POST變數
		a.request("POST", encodeURI(url), function(text, xml, status) {
		    //alert(text);
		    var key_word = text.substr(0, 12);
		    if (key_word == 'callAjaxBeta') {
		        var temp = new Array();
		        temp = text.split('::');
		        eval(temp[1]);
		        return;
		    }
		    if (target) {
		        document.getElementById(target).innerHTML = text;
		    }

		    if (callbackfn != null) {
		        callbackfn();
		    }
		});
	//} else {
		//document.getElementById(target).innerHTML = "updating!";
	//	alert(ajax_name+": updating!");
		
	//}
}
