﻿//Basic Ajax Routine- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated: Jan 15th, 06',revised by yahao@163.com at 2008-01-12

var __cc = '',__fc = '',__pf = '',__pp = '',__pt = 0;

var ajaxDelay = new Object();
ajaxDelay.flag = false;
ajaxDelay.data = new Array();
ajaxDelay.index = 0;

function createAjaxObj(){
	var httprequest = false
	if (window.XMLHttpRequest){
		httprequest = new XMLHttpRequest()
//		if (httprequest.overrideMimeType) httprequest.overrideMimeType('text/xml')
	}
	else if (window.ActiveXObject){
	try { httprequest = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e){
		try { httprequest = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e){}
		}
	}
	return httprequest;
}

function AjaxCallBackFunction(){
	ajaxDelay.callbackfunc();
	if(ajaxpack.ajaxobj.readyState == 4) {
		ajaxDelay.flag = false;
		if(ajaxDelay.data.length > ajaxDelay.index) {
			var adobj = ajaxDelay.data[ajaxDelay.index++];
			if(adobj.xtype == "get") {
				ajaxpack.getAjaxRequest(adobj.url,adobj.para,adobj.callbackfunc,adobj.filetype);
			}else{
				ajaxpack.postAjaxRequest(adobj.url,adobj.para,adobj.callbackfunc,adobj.filetype);
			}
		}else{
			ajaxDelay.index = 0;
			ajaxDelay.data.length = 0;
			ajaxDelay.data = new Array();
		}
	}
}

var ajaxpack = new Object();
ajaxpack.basedomain = "http://"+window.location.hostname;
ajaxpack.ajaxobj = createAjaxObj();
ajaxpack.filetype = "txt";
ajaxpack.addrandomnumber = 1;

ajaxpack.getAjaxRequest = function(url, para, callbackfunc, filetype) {
	if(ajaxDelay.flag) {
		ajaxDelay.data.push({
			xtype:"get",
			url:url,
			para:para,
			callbackfunc:callbackfunc,
			filetype:filetype
		});
	}else{
		ajaxDelay.callbackfunc = callbackfunc;
		ajaxDelay.flag = true;
		ajaxpack.ajaxobj = createAjaxObj();
		if (ajaxpack.addrandomnumber==1)
		var para = para + "&ajaxcachebust=" + new Date().getTime();

		if (this.ajaxobj){
			this.filetype = filetype;
			this.ajaxobj.onreadystatechange = AjaxCallBackFunction;
			this.ajaxobj.open('GET', url+"?"+para, true);
			this.ajaxobj.send(null);
		}
	}
}

ajaxpack.postAjaxRequest = function(url, para, callbackfunc, filetype) {
	if(ajaxDelay.flag) {
		ajaxDelay.data.push({
			xtype:"post",
			url:url,
			para:para,
			callbackfunc:callbackfunc,
			filetype:filetype
		});
	}else{
		ajaxDelay.callbackfunc = callbackfunc;
		ajaxDelay.flag = true;
		ajaxpack.ajaxobj = createAjaxObj();
		if (this.ajaxobj) {
			this.filetype = filetype;
			this.ajaxobj.onreadystatechange = AjaxCallBackFunction;
			this.ajaxobj.open('POST', url, true);
			this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.ajaxobj.setRequestHeader("Content-length", para.length);
			this.ajaxobj.setRequestHeader("Connection", "close");
			this.ajaxobj.send(para);
		}
	}
}

ajaxpack.loadFileContent = function(url, para,containerid,prefix,postfix) {
	ajaxpack.getAjaxRequest(url, para, _gfc, 'txt');
	__cc = containerid;
	__pf = prefix;
	__pp = postfix;
}

function _gfc() {
	var ao = ajaxpack.ajaxobj;
	if (ao.readyState==4 && (ao.status==200||window.location.href.indexOf("http")==-1)) {
		__fc = ao.responseText;
		if(__pt==0)
			sethtm(__cc,__pf + __fc + __pp);
		else
			setfilecontent(__fc);
	}
}

function loadfilecontent(url,para,cc,prf,psf,pt) {
	if(arguments.length==6) __pt = pt;

	ajaxpack.addrandomnumber = 1;
	ajaxpack.loadFileContent(url,para,cc,prf,psf);
}
