// AJAX类
function AJAXRequest() {
	var xmlObj = false;
	var ObjSelf=this;
	try 
	{ 
		xmlObj=new XMLHttpRequest; 
		this.isIE=false;
	}
	catch(e) 
	{
		try 
		{ 
			xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); 
			this.isIE=true;
		}
		catch(e2) 
		{
			try 
			{
				xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); 
				this.isIE=true;
			}
			catch(e3) 
			{ xmlObj=false; }
		}
	}
	if (!xmlObj) return false;
	this.target;
	this.state;
	this.contentType=""
	this.method="POST";
	this.url;
	this.async=true;
	this.content="";
	this.callback=function(cbobj) {return;}
	this.dealUrl=function(url){ 
		if(url.indexOf("?")>0)
			if(url.indexOf('rnd=')>0)
			{
				var part1=url.substring(0,url.indexOf('rnd='))
				var part2=url.substring(part1.length,url.length)
				if(part2.indexOf('&'))
					part2=part2.substring(part2.indexOf('&'),part2.length)
				else 
					part2='';
				url=part1 + "rnd=" + Math.random() + part2
			}
			else
				url=url + "&rnd=" + Math.random()
		else
			url=url + "?rnd=" + Math.random()
		return url
	}
	this.gb2utf8=function(data){
        var glbEncode=[],t,i,j,len
        gb2utf8_data=data
        execScript("gb2utf8_data = MidB(gb2utf8_data, 1)+' '", "vbscript")
        t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2")
        t=t.split("@")
        i=0
        len=t.length
        while(++i<len){
            j=t[i].substring(0,4)
            if(!glbEncode[j]) {
                gb2utf8_char = eval("0x"+j)
                execScript("gb2utf8_char=Chr(gb2utf8_char)","vbscript")
                glbEncode[j]=escape(gb2utf8_char).substring(1,6)
            }
            t[i]=glbEncode[j]+t[i].substring(4)
        }
        gb2utf8_data=gb2utf8_char=null
        return unescape(t.join("%")).slice(0,-1)
    }
	this.send=function() {
		
		if(!this.method||!this.url||!this.async) return false;
		xmlObj.open (this.method,this.dealUrl(this.url), this.async);
		if(this.method=="POST"){
			xmlObj.setRequestHeader("Content-Length",this.content.length)
			if(this.contentType=="")
				xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			else
				xmlObj.setRequestHeader("Content-Type",this.contentType);
		}
		var tar=this.target;
		var sta=this.state;
		var type=this.type;
		xmlObj.onreadystatechange=function() {
			if(xmlObj.readyState < 4) {
//					alert(tar)
					if(typeof(tar)=="undefined"){
						if(typeof(sta)!="undefined") {
							showTipInfo("",sta);	//不必给提示信息参数，只给状态信息就可以了！
						}
					}
					else{
						if(type!="none"){	
							if(!getObj(tar + "loading")){
								var body = document.body;
								var loadBox = document.createElement("div");
								loadBox.id = tar + "loading";
								loadBox.style.position="absolute";
								loadBox.style.width="130px";
								loadBox.style.height="30px";
								getObj(tar).appendChild(loadBox);
							}
							showLoadInfo(tar,type); 
						}
					}
			} 
			else {
				if(typeof(tar)=="undefined") 
					clearTipInfo();
				else
					clearLoadInfo(tar);
				if(xmlObj.status == 200)
					ObjSelf.callback(xmlObj);
				else
					showTipInfo("警告！有一个错误发生了，请与技术联系，错误代码为: " + xmlObj.status + "，" + xmlObj.responseText,"err");
			}
		}
		if(this.method=="POST") 
			xmlObj.send(this.content);
		else 
			xmlObj.send(null);
	}
}
function getObj(objId){
	if(!isString(objId))return objId;
	return document.getElementById(objId)
}
function isString(str){ 
    return (typeof str=='string')&&str.constructor==String; 
} 
//-----------------------------------------以上为基类-----------------------------------------

//用页面获取的值填充也面元素(如:DIV、TABLE)		
function loadPage(url,target,showType){
	var ajaxobj=new AJAXRequest;
	ajaxobj.target=target;
	ajaxobj.type=showType;
	ajaxobj.method="GET";  // 设置请求方式为GET
	ajaxobj.url=url
	ajaxobj.callback=function(xmlobj) {
		var v
		var charresult = xmlobj.responseText.match(/CharSet=(\S+)\">/i);
		if (charresult != null)
			v=!ajaxobj.isIE?xmlobj.responseText:ajaxobj.gb2utf8(xmlobj.responseBody)
		else
			v=xmlobj.responseText
						
		try{
			getObj(target).innerHTML= v
			ExecScript(target)			
		}catch(et){}
	}
	ajaxobj.send();    // 发送请求
}

function execPage(url){
//只执行页面不管返回值，用于执行更新等操作
	var ajaxobj=new AJAXRequest;
	ajaxobj.method="GET";  // 设置请求方式为GET
	ajaxobj.url=url
	ajaxobj.callback=function(xmlobj) {}
	ajaxobj.send();    // 发送请求	
}
//
function sendPage4UDF(url,fnc){
//注：fnc必须有且只有一个参数，进入函数后其参数类型为xmlhttp对象
//如果fnc中要将XMLHttp的返回字符串赋给一个HTML标签，请在赋值后执行ExecScript，否则javascript不执行
	var ajaxobj=new AJAXRequest;
//	ajaxobj.state=state;
	ajaxobj.method="GET";  // 设置请求方式为GET
	ajaxobj.url=url
	ajaxobj.callback=fnc;
	ajaxobj.send();    // 发送请求	
}

function SendPage(state,url,param,func)
{
	var ajaxobj=new AJAXRequest;
	ajaxobj.state=state;
	ajaxobj.method="POST";  // 设置请求方式为POST
	ajaxobj.content = param
	ajaxobj.url=url	
	ajaxobj.callback=func
	ajaxobj.send();    // 发送请求	
}

//执行指定HTML标记中的JAVASCRIPT脚本  TagId为HTML标记的ID string类型
function ExecScript(TagId){
	e=document.getElementById(TagId).getElementsByTagName("SCRIPT")	
	for(var i=0;i<e.length;i++){
		var oScript=document.createElement('script')
		var sId="scr" + (new Date()).getTime() % 1000000000
		oScript.id=sId
		if(e[i].innerHTML!=''){			
			if(navigator.appName.toLowerCase().indexOf("microsoft")!=-1){
				document.getElementsByTagName("head")[0].appendChild(oScript);
				getObj(sId).text=e[i].innerHTML				
			}else{
				oScript.innerHTML=e[i].innerHTML
				e[i].innerHTML=""
				document.getElementsByTagName("head")[0].appendChild(oScript);
			}
		}
		if(e[i].src!=''){			
			oScript.src=e[i].src
			var sSrc=e[i].src;
			e[i].src='';
			e[i].src=sSrc;
			document.getElementsByTagName("head")[0].appendChild(oScript);
		}		
	}
} 

function showLoadInfo(target,showType){
//	alert(target)
	//使提示窗口居中间显示
	var tar = getObj(target);
	var loading=getObj(target+"loading")
	//130是tip的高、30是tip的宽	
//	alert(tar.offsetHeight)
	var x = parseInt((tar.offsetWidth - 130)/2);
	var y = parseInt((tar.offsetHeight - 30)/2);
//	alert(x + "+" + y)
	if(showType=="small")
		loading.innerHTML="<img src='/images/loadings.gif' style='width:16px;height:16px;' align='absmiddle'>&#160;Loading..."
	else
		loading.innerHTML="<div class='tip'><div class='tip-in'><img src='/images/loadings.gif' style='width:16px;height:16px;' align='absmiddle'>&#160;Loading...</div></div>"
	eval("loading.style.left='" + x + "px'")
	eval("loading.style.top='" + y + "px'")
}

function showTipInfo(info,state) {
	if(!info && !state) return;
	if (document.getElementById('tipDiv')) {
		var tipBox = document.getElementById('tipDiv');
		var tipBox_in = document.getElementById('tipDiv-indicator');
	}
	if (!tipBox) {
		var body = document.body;
		var tipBox = document.createElement("div");
		body.appendChild(tipBox);
		tipBox.id = "tipDiv";
		tipBox.className = "tip";
		var tipBox_in=document.createElement("div");
		tipBox.appendChild(tipBox_in);
		tipBox_in.id = "tipDiv-indicator";
		tipBox_in.className="tip-in";
		
		//使提示窗口居中间显示
		var x = (body.offsetWidth - tipBox.offsetWidth)/2;
		var y = (body.offsetHeight - tipBox.offsetHeight)/2;
		tipBox.style.left = x + "px";
		tipBox.style.top = y + "px";		
	}
	
	switch(state){
		case "submit":
			tipBox_in.innerHTML = "<img src='/images/loadings.gif' style='width:16px;height:16px;' align='absmiddle'>&#160;数据提交中...";
			break;
		case "del":
			tipBox_in.innerHTML = "<img src='/images/loadings.gif' style='width:16px;height:16px;' align='absmiddle'>&#160;数据删除中...";
			break;
		case "save":
			tipBox_in.innerHTML = "<img src='/images/loadings.gif' style='width:16px;height:16px;' align='absmiddle'>&#160;数据保存中...";
			break;	
		default:
			tipBox_in.innerHTML = info;
			break;	
	}

	if(!state)
		setTimeout('clearTipInfo()',3000);	
}

function clearTipInfo(){
	if(document.getElementById("tipDiv"))
		document.body.removeChild(document.getElementById("tipDiv"))
}

function clearLoadInfo(target){
	if(document.getElementById(target + "loading"))
		document.getElementById(target).removeChild(document.getElementById(target + "loading"))		
}

function submitTip(){
	showTipInfo('','submit')
}
