﻿
function createXmlHttp(){//创建AJAX(XMLHTTPRequest)
	var XmlHttp = false;
	try{
		XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e1){
		try{
			XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e2){
			try{
				XmlHttp = new XMLHttpRequest();
			}catch(e3){
				XmlHttp = false;
			}
		}
	}
	return XmlHttp;
}

/**
 * 执行Ajax
 */
function doAjax(url){

	var XmlHttp=createXmlHttp();
	if(!XmlHttp){//创建XmlHttpRequest
		alert("此浏览器不支持AJAX");
	}else{
		//2 建立URL地址
		var url = encodeURI(url);
		//alert(url);
		//3 连接地址
		XmlHttp.open("POST",url,true);
		//alert(url);
		//4 从服务器上返回以后,调用ispinming函数
		XmlHttp.onreadystatechange = function () {isAjaxNext(XmlHttp);};
		//XmlHttp.onreadystatechange = isAjaxNext;
		XmlHttp.setRequestHeader("If-Modified-Since","0");
		//5 发送
		XmlHttp.send(null);
	}
}

function isAjaxNext(xmlHttp){//调用的函数
	if(xmlHttp.readyState==4){//正常
		if(xmlHttp.status==200){// 正常
			var result = unescape(xmlHttp.responseText);//从Action中返回的值
			//alert(result);
			if(result!=""){
				doNext(result);
			}
		}else if(xmlHttp.status==404){//错误
			alert("404错误:找不到文件或目录");
		}else if(xmlHttp.status==500){//错误
			alert("500错误:服务器内部错误");
		}
	}
}

/**
 * 执行Ajax(备用)
 */
function doAjax2(url,poststr){
	var XmlHttp=createXmlHttp();
	if(!XmlHttp){//创建XmlHttpRequest
		alert("此浏览器不支持AJAX");
	}else{
		//2 建立URL地址
		var url = url;
		//alert(url);
		//3 连接地址
		XmlHttp.open("POST",url,true);
		//定义传输的文件HTTP头信息
		XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//alert("aaa");
		//4 从服务器上返回以后,调用ispinming函数
		XmlHttp.onreadystatechange = function () {isAjaxNext2(XmlHttp);};
		//XmlHttp.onreadystatechange = isAjaxNext2;
		XmlHttp.setRequestHeader("If-Modified-Since","0");
		//5 发送
		XmlHttp.send(poststr);
	}
}

function isAjaxNext2(xmlHttp){//调用的函数
	if(xmlHttp.readystate==4){//正常
		if(xmlHttp.status==200){// 正常
			var result = unescape(xmlHttp.responseText);//从Action中返回的值
			//alert(result);
			if(result!=""){
				doNext2(result);
			}
		}else if(xmlHttp.status==404){//错误
			alert("404错误:找不到文件或目录");
		}else if(xmlHttp.status==500){//错误
			alert("500错误:服务器内部错误");
		}
	}
}


/**
 * 解析返回的数据,组合HTML代码
 * 
 * result		Ajax返回的数据集合字符串
 * headmodel	头部数据模板
 * bodymodel	主体数据模板
 * footmodel	底部数据模板
 * elsemodel	备用代码(用于返回数据为空的情况)
 * 
 * return spanstr	生成后的HTML代码
 */
function changePageStr(result,headmodel,bodymodel,footmodel,elsemodel){
	var spanstr="";
	if(result==null||result==""){
		//alert("null");
		//如果返回数据为空,则使用备用代码
		spanstr=elsemodel;
	}else{
		//alert("have");
		//将底部数据切下(a1[0]为其它数据,a1[1]为底部数据)
		var a1=result.split("###LISTLABELSPLIT######LISTWHILESPLIT######BIGFRAMESPLIT###");
		if(a1!=null&&a1.length==2){
			var foot=a1[1];
			//alert(foot);
			//将头部数据切下(a2[1]为主体数据,a2[0]为头部数据)
			var a2=a1[0].split("###BIGFRAMESPLIT###");
			if(a2!=null&&a2.length==2){
				var head=a2[0];
				//alert(head);
				//替换头部模板中需要的数据
				spanstr+=headmodel.replace("[%=turnpagestr%]",head);
				//分隔主体数据(按行分隔)
				var a3=a2[1].split("###LISTLABELSPLIT######LISTWHILESPLIT###");
				if(a3!=null){
					for(var i=0;i<a3.length;i++){
						//分隔每一行中的每一个变量
						var a4=a3[i].split("###LISTLABELSPLIT###");
						if(a4!=null){
							var codelist=new Array(); //变量名数组
							var valuelist=new Array(); //变量值数组
							for(var j=0;j<a4.length;j++){
								//分隔变量名与变量值
								var a5=a4[j].split("###CODEANDVALUE###");
								if(a5!=null&&a5.length==2){
									codelist[j]=a5[0];
									valuelist[j]=a5[1];
								}
							}
							//初始化主体模板
							var body=bodymodel;
							if(codelist.length>0&&codelist.length==valuelist.length){
								//alert("in");
								for(var k=0;k<codelist.length;k++){
									//替换主体模板中的各个变量
									var reg=new RegExp("\\[%="+codelist[k]+"%\\]","g");
									body=body.replace(reg,valuelist[k]);
									//alert(codelist[k]+"="+valuelist[k]);
									//alert(body);
								}
								spanstr+=body;
							}
						}
					}
				}
				//替换底部模板中需要的数据
				spanstr+=footmodel.replace("[%=turnpagestr%]",foot);
			}
		}
	}
	return spanstr;
}

/**
 * 解析返回的数据,组合HTML代码(直接写入页面)
 * 
 * result		Ajax返回的数据集合字符串
 * headmodel	头部数据模板
 * bodymodel	主体数据模板
 * footmodel	底部数据模板
 * elsemodel	备用代码(用于返回数据为空的情况)
 * spanid		页面Span的Id
 * 
 * return spanstr	生成后的HTML代码
 */
function addPageStr(result,headmodel,bodymodel,footmodel,elsemodel,spanid){
	//alert(result);
	//alert(headmodel);
	//alert(bodymodel);
	//alert(footmodel);
	//alert(elsemodel);
	//alert(spanid);
	var span=document.getElementById(spanid);
	var spanheadstr="";
	var spanbodystr="";
	var spanfootstr="";
	var regx=new RegExp("&","g");
	var regx2=new RegExp("##HONGDAIHUAN##","g");
	//alert(result);
	if(result==null||result==""){
		//alert("null");
		//如果返回数据为空,则使用备用代码
		span.innerHTML=elsemodel;
	}else{
		//alert("have");
		//将底部数据切下(a1[0]为其它数据,a1[1]为底部数据)
		var a1=result.split("###LISTLABELSPLIT######LISTWHILESPLIT######BIGFRAMESPLIT###");
		if(a1!=null&&a1.length==2){
			var foot=a1[1];
			//替换底部模板中需要的数据
			spanfootstr+=footmodel.replace("[%=turnpagestr%]",foot);
			//alert(foot);
			//将头部数据切下(a2[1]为主体数据,a2[0]为头部数据)
			var a2=a1[0].split("###BIGFRAMESPLIT###");
			if(a2!=null&&a2.length==2){
				var head=a2[0];
				//alert(head);
				//替换头部模板中需要的数据
				spanheadstr+=headmodel.replace("[%=turnpagestr%]",head);
				//分隔主体数据(按行分隔)
				var a3=a2[1].split("###LISTLABELSPLIT######LISTWHILESPLIT###");
				if(a3!=null){
					for(var i=0;i<a3.length;i++){
						//分隔每一行中的每一个变量
						var a4=a3[i].split("###LISTLABELSPLIT###");
						if(a4!=null){
							var codelist=new Array(); //变量名数组
							var valuelist=new Array(); //变量值数组
							for(var j=0;j<a4.length;j++){
								//分隔变量名与变量值
								var a5=a4[j].split("###CODEANDVALUE###");
								if(a5!=null&&a5.length==2){
									codelist[j]=a5[0];
									valuelist[j]=a5[1];
								}
							}
							//初始化主体模板
							var body=bodymodel;
							if(codelist.length>0&&codelist.length==valuelist.length){
								//alert("in");
								for(var k=0;k<codelist.length;k++){
									//替换主体模板中的各个变量
									var reg=new RegExp("\\[%="+codelist[k]+"%\\]","g");
									valuelist[k]=valuelist[k].replace(regx,"##HONGDAIHUAN##");
									//alert(codelist[k]+"##"+valuelist[k]);
									if(codelist[k].indexOf("utf8")!=-1&&valuelist[k]!=null){
										valuelist[k]=encodeURIComponent(valuelist[k]);
									}
									//alert(valuelist[k]);
									body=body.replace(reg,valuelist[k]);
									body=body.replace(regx2,"&");
									//alert(codelist[k]+"="+valuelist[k]);
									//alert(body);
								}
								spanbodystr+=body;
								span.innerHTML=spanheadstr+spanbodystr+spanfootstr;
							}
						}
					}
				}
			}
		}
		span.innerHTML=spanheadstr+spanbodystr+spanfootstr;
	}
}