//	----------------------------------------------------------------------//
//	Author:Jacksen
//	Email: tianeyi@sina.com.cn
//	Date:  2006-08-08
//	----------------------------------------------------------------------//
// JavaScript Document
function Ajax(recvB,resultF, errorF) {
    this.xmlHttp = this.createXMLHttpRequest();
	this.errorF;
	if (arguments.length>2)
	{
		this.errorF = arguments[2];
	}
    if (this.xmlHttp == null) {
        this.errorF("创建 XMLHTTP 对象失败。");
        return false;
    }
    var objxml = this.xmlHttp;
    objxml.onreadystatechange = function (){Ajax.handleStateChange(objxml,recvB,resultF,errorF)};
}

Ajax.prototype.createXMLHttpRequest = function() {
    try { return new ActiveXObject("Msxml2.XMLHTTP");    } catch(e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
    try { return new XMLHttpRequest();                   } catch(e) {}
    return null;
}

Ajax.prototype.get = function (url, ansychronous) {
	if (arguments.length>1)
	{
	    this.xmlHttp.open("GET", url, ansychronous);
	}else{
	    this.xmlHttp.open("GET", url, true);
	}
    this.xmlHttp.send(null);
}

Ajax.prototype.post = function(url, stringS) {
    this.xmlHttp.open("POST",url,true);
    this.xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    this.xmlHttp.send(stringS);
}
    
Ajax.handleStateChange = function (xmlHttp,recvB,resultF, errorF) {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status == 200) {
			if (resultF!=null)
			{
				resultF(recvB?xmlHttp.responseXML:xmlHttp.responseText);
			}
        }else {
			if (errorF!=null)
			{
				errorF("您所请求的页面有异常。");
			}
        }
    }
}

//	Ajax Data Command
function AjaxExecute(url, Anyschronous){
	this.ajax;
	this.ajax = new Ajax(false, null, null);
	this.ajax.get(url, Anyschronous);
}

//	Ajax Data Command
function AjaxCommand(url, params, fsuccess, ferror){
	this.ajax;
	this.ajax = new Ajax(false, fsuccess, ferror);
	this.ajax.post(url, params);
}

//	Ajax Text Alert
function AjaxAlert(url, params){
	this.ajax;
	this.RecvData = function(e){
		window.alert(e);
	}
	this.Error = function(e){
		window.alert(e);
	}
	this.ajax = new Ajax(false, this.RecvData, this.Error);
	this.ajax.post(url, params);
}

//	Ajax Data Reader
function AjaxReader(obj, url, fsuccess, ferror){
	this.ajax;
	this.RecvData = function(e){
		document.getElementById(obj).innerHTML = e;
		if (fsuccess!=null)
		{
			fsuccess(e);
		}
	}
	this.Error = function(e){
		document.getElementById(obj).innerHTML = "错误信息：" + e;
		if (ferror!=null)
		{
			fsuccess(e);
		}
	}
	this.ajax = new Ajax(false, this.RecvData, this.Error);
	this.ajax.get(url);
}

//	Ajax Panel
function AjaxPanel(obj, url, seconds, fsuccess, ferror){
	this.timer = null;
	this.Object = obj;
	this.Action = url;
	this.Second = seconds;
	this.FSuccess;
	this.FError;
	this.State = 0;

	if (document.getElementById(obj)==null)
	{
		var tDiv = document.createElement("div"); 
		tDiv.id = obj;	document.body.appendChild(tDiv); 
	}

	if (arguments.length > 2)
	{
		if (arguments.length > 3)
		{
			if (arguments.length > 4)
			{
				this.FSuccess = fsuccess;
				this.FError = ferror;
				AjaxReader(obj, url, fsuccess, ferror);
				this.timer = window.setInterval("AjaxReader('"+obj+"', '"+url+", "+fsuccess+", "+ferror+");", seconds);
			}else{
				this.FSuccess = fsuccess;
				AjaxReader(obj, url, fsuccess);
				this.timer = window.setInterval("AjaxReader('"+obj+"', '"+url+"', "+fsuccess+");", seconds);
			}
		}else{
			AjaxReader(obj, url);
			this.timer = window.setInterval("AjaxReader('"+obj+"', '"+url+"');", seconds);
		}
	}else{
		AjaxReader(obj, url);
	}
}

AjaxPanel.prototype.start = function() {
	if (this.timer==null)
	{
		if (this.FSuccess!=null)
		{
			if (this.FError!=null)
			{
				this.timer = window.setInterval("AjaxReader('"+this.Object+"', '"+this.Action+"', "+ this.FSuccess +", "+ this.FError +");", this.Second);
			}else{
				this.timer = window.setInterval("AjaxReader('"+this.Object+"', '"+this.Action+"', "+ this.FSuccess +");", this.Second);
			}
		}else{
			this.timer = window.setInterval("AjaxReader('"+this.Object+"', '"+this.Action+"');", this.Second);
		}
		this.State = 0;
	}
}

AjaxPanel.prototype.stop = function() {
	if (this.timer!=null)
	{
		clearInterval(this.timer);
		this.timer = null;
		this.State = 1;
	}
}

//	Ajax Form Action
function AjaxForm(tForm){
	var iUrl = "";
	for (i=0;i<tForm.elements.length ; i++)
	{
		if (i==0)
		{
			if (tForm.elements[i].type == "checkbox" || tForm.elements[i].type == "radio")
			{
				if (tForm.elements[i].checked)
				{
					iUrl += tForm.elements[i].name + "=" + tForm.elements[i].value;
				}
			}else{
				iUrl += tForm.elements[i].name + "=" + tForm.elements[i].value;
			}
		}else{
			if (tForm.elements[i].type == "checkbox" || tForm.elements[i].type == "radio")
			{
				if (tForm.elements[i].checked)
				{
					iUrl += "&" + tForm.elements[i].name + "=" + tForm.elements[i].value;
				}
			}else{
				iUrl += "&" + tForm.elements[i].name + "=" + tForm.elements[i].value;
			}
		}
	}
	return iUrl;
}