function Trim(){
	return this.replace(/\s+$|^\s+/g,"");
}
String.prototype.Trim=Trim;	//过滤两端空格

function getObject(elementId) { 	//获取指定id的object
	if (document.getElementById) { 
		return document.getElementById(elementId); 
	} else if (document.all) { 
		return document.all[elementId]; 
	} else if (document.layers) { 
		return document.layers[elementId]; 
	} 
}

function getObjValue(elementId){	//获取指定id的form组件的值
	if(getObject(elementId).value!=undefined)
		return getObject(elementId).value.Trim();
	else
		return "";
}

function XHR(){	//创建XMLHttpRequest对象
	var xhr;
	try{
		xhr=new XMLHttpRequest();
	}catch(e){
    		var a=['MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','MICROSOFT.XMLHTTP.1.0','MICROSOFT.XMLHTTP.1','MICROSOFT.XMLHTTP'];
    		for (var i=0;i<a.length;i++){
      			try{
        			xhr = new ActiveXObject(a[i]);
        			break;
      			}catch(e){}
    		}
  	}
	return xhr;
}

function checkForm(){	//表单的检测
	if(getObjValue("username")==""||getObjValue("content")==""){
		alert("请把带*号的项填写完整！");
		return false;
	}
	if(getObjValue("username").length>20){
		alert("输入的名字太长了，不要大于20哦！");
		return false;
	}
	return true;
}

function sendJS() {	//发送留言
	var xhr=XHR();
	if(xhr&&checkForm()){
		getObject("submit").value="提交中...";
		getObject("submit").disabled=true;
		
		xhr.open("POST", "AddBook.asp", true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		var aIdArray=new Array("flag="+Math.random());
		var aUserArr=["username","qq","email","content"];
		var argLen=aUserArr.length;
		for(i=0;i<argLen;i++){
			aIdArray[i+1]="&"+aUserArr[i]+"="+escape(getObjValue(aUserArr[i]));
		}
		this.getSex=function(){	//获取性别
			var oSex=document.getElementsByName('sex');
			for(var i=0;i<oSex.length;i++){
				if(oSex[i].checked){
					return oSex[i].value;
				}
			}
			return "NONE";
		}
		aIdArray[i+1]="&sex="+this.getSex();
    		var data =aIdArray.join('');
		xhr.onreadystatechange=function(){
			if(xhr.readyState==4){
				if(xhr.status==200){
					if(xhr.responseText==1){
						alert("留言成功");	//输出返回信息，成功返回“留言成功”
					}else{
						alert("请您将带*号的项填写完整再提交");
					}

					getObject("submit").value="提 交";	//禁用发送表单，防止重复提交
					getObject("submit").disabled=false;

					clearForm();				//清除表单的值
					addNew();				//更新留言
				}else{
					alert("网络传输错误！请重试！");	
				}
			}	
		};
    		xhr.send(data);
  	}
}

function clearForm(){	//清空表单的函数
	getObject("username").value="";
	getObject("qq").value="";
	getObject("email").value="";
	getObject("content").value="";
}

function addNew(){	//更新留言，实质上是重新去服务器提取第一页的留言
	if(/LastDate=([^;]+)/.test(document.cookie)){	//删除cookie中记录的时间，模拟第一次浏览，防止重复更新留言
		var exp=new Date();
		exp.setTime(exp.getTime()-1);
		document.cookie="LastDate="+RegExp.$1+";expires="+exp.toGMTString();
	}
	getList(1);		//更新cookie后更新第一页的留言
}

function makBookStr(username,sex,qq,email,content,reply,pubdate){	//创建一条留言的文本串
	if((email=unescape(email))!="不告诉你"){
		email='<a href="mailto:'+email+'" title="'+email+'">给我写信</a>';
	}
	var tempStr='<div class="note">\
			<div class="sexName"><div class="sex">'+sex+'</div><strong>昵称：</strong>'+unescape(username)+'</div>\
			<div class="userInfo"><strong>QQ：</strong>'+unescape(qq)+' <strong>E-mail：</strong>'+email+'  <strong>时间：</strong>'+pubdate+'</div>\
			<div class="content">\
			<strong>留言内容：</strong>\
			<p>'+unescape(content)+'</p>\
			<strong>回复内容：</strong>\
			<p class="reply">'+unescape(reply)+'</p>\
			</div>\
		</div>';
	return tempStr;
}

function writeBookArr(Str){	//输出服务器返回的留言内容
	if(Str!=0){
		var bookList=eval("new Array("+Str+")");
		var allStr="";
		for(var i=0;i<bookList.length;i++){
			allStr+=makBookStr(bookList[i].username,bookList[i].sex,bookList[i].qq,bookList[i].email,bookList[i].content,bookList[i].reply,bookList[i].pubdate);	
		}
	}else{	//返回0说明没有留言
		allStr="<div class=\"tips\">暂时还没有留言！</div>"
	}
	getObject("bookList").innerHTML=allStr;
}

function getList(page){	//获取指定页的留言
	getObject("bookList").innerHTML="<div class=\"tips\">留言加载中....请稍后!</div>";	//清除原来显示的内容
	var xhr=XHR();
	xhr.open("GET", "getRecord.asp?page="+page+"&r="+Math.random(), true);
	xhr.onreadystatechange=function(){
		if(xhr.readyState==4){
			if(xhr.status==200){
				writeBookArr(xhr.responseText);
				getPage();	//更新分页信息
			}else{
				alert("获取留言失败！请刷新重试！");	
			}
		}
		
	}
	xhr.send(null);
}

function upDateList(){		//如果有新留言，则更新留言
	var xhr=XHR();
	xhr.open("GET", "getRecord.asp?act=getUpdate&r="+Math.random(), true);
	xhr.onreadystatechange=function(){
		if(xhr.readyState==4){
			if(xhr.status==200){
				//如果存在LastDate（即不是第一次访问）并且时间与服务器最新留言时间不同则更新留言
				if(/LastDate=([^;]+)/.test(document.cookie) && unescape(RegExp.$1)!=xhr.responseText){
					getList();		//如果cookie和服务器返回的最新留言时间不同则更新留言
				}
				document.cookie="LastDate="+escape(xhr.responseText);	//更新cookie中最新留言的时间
			}
		}
		
	}
	xhr.send(null);
	setTimeout("upDateList()",90000);	//每90秒更新一次留言
}

function getPage(){	//更新分页信息
	getObject("pageList").innerHTML="<div id=\"loadPage\">分页信息加载中....请稍后!</div>";	//清除原来显示的内容
	var xhr=XHR();
	xhr.open("GET", "getRecord.asp?act=getPageInfo&r="+Math.random(), true);
	xhr.onreadystatechange=function(){
		if(xhr.readyState==4){
			if(xhr.status==200){
				//Result=记录数|每页记录数|页数|当前页
				var Result=xhr.responseText.split("|");
				var tempPageStr=new Array("<div>共有<span class=\"num\">"+Result[0]+"</span>条留言 每页<span class=\"num\">"+Result[1]+"</span>条留言 当前第<span class=\"num\">"+Result[3]+"/"+Result[2]+"</span>页 转向第<select name=\"page\" onchange=\"getList(this.value)\" style=\"width:50px;\">");
				for(var i=1;i<=Result[2];i++){
					if(i!=Result[3])
						tempPageStr[i]="<option value=\""+i+"\">"+i+"</option>";
					else
						tempPageStr[i]="<option selected=\"selected\" value=\""+i+"\">"+i+"</option>";
				}
				tempPageStr[i]="</select>页</div>";
				var ResultStr=tempPageStr.join('');
				getObject("pageList").innerHTML=ResultStr;
			}else{
				alert("获取分页信息失败！请刷新重试！");	
			}
		}
		
	}
	xhr.send(null);
}

function changeStyle(id){	//切换样式
	var stylesheet=getObject("color").href="color/color"+id+".css";
	document.cookie="stylesheet="+escape(stylesheet);	//写入Cookie
}

function initStyle(){	//初始化样式，如果cookie存在样式，则加载cookie样式，否则加载默认样式
		if(/stylesheet=([^;]+)/.test(document.cookie))
			getObject("color").href=unescape(RegExp.$1);
}
window.onload=function(){initStyle();getList();upDateList()}	//网页加载完成后加载初始化样式