//*******************************************
//   留言板
//*******************************************	
var djConfig = {
    isDebug: false,
    debugContainerId: "",
    allowQueryConfig: false,
    baseScriptUri: "",
    parseWidgets: true,
    searchIds: [],
    baseRelativePath: "",
    libraryScriptUri: "",
    iePreventClobber: false,
    ieClobberMinimal: true,
    preventBackButtonFix: true,
	bindEncoding: "utf-8"	
};
	var div="ulGuestBook";     //显示留言内容的DIV
	var msgdiv="msginfo"       //显示提示信息的DIV
	var url="guestbook.asp";   //提交页地址
	var num=8;                 //每页显示留言数
	var maxpagenum=10;           //显示页码数
	var currpage=1;            //当前页码
	var objName="gb";           //对象名
	var cookiename="gbisadmin"; //管理员Cookie名称
	function GuestBook(gbname){

		if(typeof(gbname) != "string" || gbname == "")
    	throw(new Error(-1, 'Error,Please Tell Me Your Name!'));		

		this.objName=gbname
		//取得留言列表
		this.getGuestBook=function(page){
			postMsg("数据载入中，请稍等...","loading")		
			dojo.io.bind({
				url:url+"?action=get&page="+page+"&num="+num+"&rnd="+Math.random()*1000,
				handle: function(type, data, evt){ 
    			    if(type == "load"){ 
            			responseXML(data)
		        	 }else if(type == "error"){ 
						postMsg(data,"error")
			         }else{ 
						postMsg(data,"error")        	
			   	     }
	    		 },
				mimetype:"text/xml",
				preventCache: false,
				useCache: false
			})			
		}			
		
		function responseXML(data){
		   var xmldoc = data
		   var items = xmldoc.getElementsByTagName('item');
	 	   var rss="";
		   var rssnum=items.length;		

		   var totalnum=0
      	   for(i=0;(totalnum<num && i<rssnum);i++){		
				var postid=getXMLNode(items[i].getElementsByTagName("postid")[0].firstChild);  
				var name=getXMLNode(items[i].getElementsByTagName("name")[0].firstChild);
				var email=getXMLNode(items[i].getElementsByTagName("email")[0].firstChild);
				email=(email==""?"":"<a href='mailto:"+email+"'>"+email+"</a>")
				var phone=getXMLNode(items[i].getElementsByTagName("phone")[0].firstChild);
			    var url=getXMLNode(items[i].getElementsByTagName("url")[0].firstChild)
				url=(url.toLowerCase().indexOf("http://")=="-1"?("<a href='http://"+url+"' target='_blank'>"+url+"</a>"):("<a href='"+url+"' target='_blank'>"+url+"</a>"))	
				var posttime=getXMLNode(items[i].getElementsByTagName("posttime")[0].firstChild)
				var ip=getXMLNode(items[i].getElementsByTagName("ip")[0].firstChild)
				var arrip=ip.split(".")
				if(arrip.length>=1){ipa=arrip[0]+"."+arrip[1]+".*.*"}else{ip=""}
				var replytime=getXMLNode(items[i].getElementsByTagName("replytime")[0].firstChild)
				var content=getXMLNode(items[i].getElementsByTagName("content")[0].firstChild)
				var replycontent=getXMLNode(items[i].getElementsByTagName("replycontent")[0].firstChild)
					totalnum+=1;			
								
				try {
				    rss+="<li id='li_"+postid+"' style='display:block' class=\"liGuestBook\">"				
					rss+="<div class='gbcontent'>"					
					rss+="<form name='frm_"+postid+"' id='frm_"+postid+"' method='post'>"
					rss+="<table class='tblcontent' cellspacing='0' cellpadding='4' border='0'>";
					rss+="<tr><td class='spanTitle'>作　者：</td><td><strong>"+name+"</strong>&nbsp;&nbsp;<span class='gbgraycolor'>Time："+posttime+"&nbsp;&nbsp;IP："+ipa+"</span></td></tr>"
					rss+="<tr><td class='spanTitle'>内　容：</td><td>"+XMLEncode(content)+"</td></tr>"
					var isAdmin=getCookie(cookiename)					
					if(isAdmin=="1"){
					rss+="<tr><td class='fred spanTitle'>回　复：</td><td><textarea cols='50' rows='4' name='replycontent' id='replycontent_"+postid+"' class='gbinput'>"+XMLEncode(replycontent)+"</textarea></td></tr>";
					rss+="<tr class='AdminMenu'><td></td><td><a href='#' onclick=\"javascript:{"+this.objName+".delGuestBook('"+postid+"');return false;}\">删除</a> | <a href='#' onclick=\"javascript:{"+this.objName+".replyGuestBook('"+postid+"');return false;}\">回复</a></td></tr>"					
					rss+="<tr><td class='spanTitle'>Email：</td><td>"+email+"</td></tr>"
					rss+="<tr><td class='spanTitle'>电　话：</td><td>"+phone+"</td></tr>"
					rss+="<tr><td class='spanTitle'>主　页：</td><td>"+url+"</td></tr>"
					rss+="<tr><td class='spanTitle'>IP地址：</td><td>"+ip+"</td></tr>"
					}
					else
					{
					rss+=(replycontent==""?"":"<tr><td class='spanTitle'>回　复：</td><td class='grayreply'>"+replytime+"<br />"+XMLEncode(replycontent)+"</td></tr>");
					}
					rss+="</table></form></div>	"
				    rss+="</li>"					
					}
				catch(e){
					rss+="<div style='display:block'>无内容</div>"}	
					rss+="";						
				}
		    var info = xmldoc.getElementsByTagName('info');				
			var pageHTML=""
			var pagecount=getXMLNode(info[0].getElementsByTagName("pagecount")[0].firstChild);	
			var page=getXMLNode(info[0].getElementsByTagName("page")[0].firstChild);				
			var nums=getXMLNode(info[0].getElementsByTagName("num")[0].firstChild);	
			var totalnum=getXMLNode(info[0].getElementsByTagName("totalnum")[0].firstChild);	
			currpage=page;
			if(pagecount.length==0)	{pagecount=1}			
			

			pageHTML=showPageNoList(totalnum,pagecount,currpage)
		    $(div).innerHTML=rss+pageHTML;			   
			postMsg("","") 		
		}					

		//显示提交表单
		this.showGuestBookForm=function(){
			var html="<li style='display:block;' class='liGuestBook'>";
				html+="<form name='form1' id='form1' method='post'>";
				html+="<table class='tblcontent' cellspacing='0' cellpadding='2' border='0'>";
				html+="<tr><td class='spanTitle'>称　呼：</td><td><input type='text' id='name' name='name' size='50' class='gbinput' style='width:120px;'> <span class='fred' id='msg_name'>* 您的网络昵称（如Zerone）或称呼(如：向先生)</span></td></tr>"
				html+="<tr><td class='spanTitle'>Email：</td><td><input type='text' id='email' name='email' size='50' class='gbinput' style='width:150px;'> <span class='fred' id='msg_email'>*</span></td></tr>"
				html+="<tr><td class='spanTitle'>电　话：</td><td><input type='text' id='phone' name='phone' size='50' class='gbinput' style='width:150px;'> <span class='fred' id='msg_email'>格式如：028-81768499</span></td></tr>"
				html+="<tr><td class='spanTitle'>主　页：</td><td><input type='text' id='url' name='url' size='50' class='gbinput' style='width:150px;'></td></tr>"
				html+="<tr><td class='spanTitle'>内　容：</td><td><textarea rows='6' id='content' name='content' cols='40' class='gbinput' style='width:300px;overflow:auto;'></textarea> <span class='fred' id='msg_content'>*</span></td></tr>"				
				html+="<tr><td class='spanTitle'></td><td>内容为纯文本，不支持HTML等语法</td></tr>"
				html+="<tr><td class='spanTitle'></td><td><input id='btnPost' type='button' value='　提　交　' onclick=\"javascript:"+this.objName+".postGuestBook('1');\" class='btn'></td></tr>"		
				html+="</table></form></li>"
	    	$(div).innerHTML=html;	
		}		
		
	    //提交留言
		this.postGuestBook=function(){	
		 	var errMsg=""	
			var errNum=0;
			if($("name").value==""){
				$("msg_name").innerHTML="请输入姓名!";
				errNum+=1;
			}else{$("msg_name").innerHTML="";}
			if($("email").value=="" || isEmail($("email").value)==false){
				$("msg_email").innerHTML="Email地址有误!";
				errNum+=1;		
			}else{$("msg_email").innerHTML="";}
			if($("content").value==""){
				$("msg_content").innerHTML="请输入留言内容！";
				errNum+=1;				
			}else{$("msg_content").innerHTML="";}				

			if(chkStrLen($("content").value)>1000){alert('留言内容最长不能超过1000个字符！');return false}		
			//By hopesoft @ 2006-9-20
			//escape Ascii(ascii code < 32 )
			$("content").value=escapeAscii($("content").value)		
			if(errNum>0){return false}
			$("btnPost").disabled=true;
			$("btnPost").value='正在提交,请稍候...'	
			currpage=1;

			dojo.io.bind({
				url:url+"?action=post"+"&rnd="+Math.random()*1000,
				handle: function(type, data, evt){ 
    		    	if(type == "load"){ 
            			processReturnMsg(data)
			         }else if(type == "error"){ 
						postMsg(data,"error")
			         }else{ 
						postMsg(data,"error")        	
		   	    	 }
		    	 },
				method:"post",
				formNode: $("form1"),
				mimetype:"text/xml",
				preventCache: false,
				useCache: false				
			})
		}		

		//删除留言
		this.delGuestBook=function(postid){	
			var tmpname=this.objName
			if(confirm("您确认要删除此留言吗？")){
				dojo.io.bind({
					url:url+"?action=del&postid="+postid+"&page="+currpage+"&rnd="+Math.random()*1000,
					handle: function(type, data, evt){ 
    				    if(type == "load"){ 
							eval(tmpname+".getGuestBook(currpage)")
			        	 }else if(type == "error"){ 
							postMsg(data,"error")
				         }else{ 
							postMsg(data,"error")        	
		   		    	 }
		    		 },
					mimetype:"text/xml",
					preventCache: false,
					useCache: false
				})		
			}
		}

		//回复留言
		this.replyGuestBook=function(postid){
				//var replycontent=$("replycontent_"+postid.toString()).value
				var replycontent=eval("document.frm_"+postid.toString()+".replycontent")
				//By hopesoft @ 2006-9-20
				//escape Ascii(ascii code < 32 )
				replycontent.value=escapeAscii(replycontent.value)		
				if(chkStrLen(replycontent.value)>1000){alert('回复内容最长不能超过1000个字符！');return false}
				postMsg("正在提交数据，请稍等...","loading")
				dojo.io.bind({
					url:url+"?action=reply&postid="+postid+"&page="+currpage+"&rnd="+Math.random()*1000,
					handle: function(type, data, evt){ 			
    				    if(type == "load"){ 
							processReturnMsg(data)
			    	     }else if(type == "error"){ 
							postMsg(data,"error")
				         }else{ 
							postMsg(data,"error")        	
			   	    	 }
		    		 },
					method:"post",
					formNode: $("frm_"+postid),					 
					mimetype:"text/xml",
					preventCache: false,
					useCache: false
				})	
		 }  	 

		//处理返回信息
		function processReturnMsg(data){
		   var xmldoc = data;
		   var items = xmldoc.getElementsByTagName('guestbook');
		   var msg=items[0].getElementsByTagName("msg")[0].firstChild.nodeValue;  
		   postMsg(msg,"")			   
		   setTimeout("eval("+this.objName+".getGuestBook(currpage))",1000)
		}			 
	
		//显示页码 参数:总记录，总页数，当前页码，共显示多少页 totalnum,totalpage,cpage,showpagenum
		function showPageNoList(){
			totalnum=arguments[0];
			totalpage=arguments[1];			
			cpage=arguments[2];
			if(arguments.length==4){var shownum=arguments[3];}else{var showpagenum=maxpagenum;}
						
			var pstart,pend
			pstart=pend=1
			totalpage=parseInt(totalpage)
			cpage=parseInt(cpage)
			if(cpage>totalpage){cpage=totalpage}
				
			if(totalpage<=showpagenum){pstart=1;pend=totalpage;}		
			else{
				var movestep=Math.round(showpagenum/2)
				if(cpage>movestep){pstart=cpage-movestep
					pend=cpage+movestep
					if(pend>totalpage){
						pstart=totalpage-showpagenum
						pend=totalpage
					}				
				}
				else{
					pstart=1
					pend=showpagenum
				}			
			}		
			if(pstart<1){pstart=1}
			if(pend<1){pend=1}			
		   	var str_page=""		
			if(totalpage>1){
				str_page="<div class='pagelist'><a class=p_total>"+totalnum+"</a> <a class=p_pages>&nbsp;"+cpage+"/"+totalpage+"&nbsp;</a> "
				str_page+="<a href='#' onclick='javascript:"+this.objName+".getGuestBook(1);return false;' class='p_num'>|&lsaquo;</a> <a href='#' onclick='javascript:"+this.objName+".getGuestBook(\""+(cpage-1)+"\");return false;' class='p_num'>&lsaquo;&lsaquo;</a> "
				for(var k=pstart;k<=pend;k++){
					str_page+=((k==cpage)?("<a class='p_curpage'>"+k+"</a> "):("<a href='#' class='p_num' onclick='javascript:"+this.objName+".getGuestBook(\""+k+"\");return false;'>"+k+"</a> "))
				}
				str_page=str_page+" <a href='#' onclick='javascript:"+this.objName+".getGuestBook(\""+((cpage==totalpage)?cpage:cpage+1)+"\");return false;' class='p_num' >&rsaquo;&rsaquo;</a> <a href='#' onclick='javascript:"+this.objName+".getGuestBook(\""+totalpage+"\");return false;' class='p_num'>&rsaquo;|</a>"
				str_page+="</div>"
			}
			return str_page
		}
		
	}
	
//*******************************************
//   用户
//*******************************************	
	function User(){
	
		//判断是否是管理员，并显示相应链接
		this.chkAdmin=function(){
			var isAdmin=getCookie(cookiename)
			if(isAdmin=="1"){$("span_admin").innerHTML="<a href='#' onclick='javascript:user.logout();return false;' id='adminLink'>注销登陆</a>"}
			else{$("span_admin").innerHTML="<a href='#' onclick='javascript:user.login();return false;' id='adminLink'>管理登录</a>"		}
		}			

		//管理登录
		this.login=function(){
			var html="<li style='display:' class='liGuestBook'><form name='form1' id='form1' method='post'>"
				html+="<P><table class='tblcontent' cellspacing='0' cellpadding='2' border='0'>";
				html+="<tr><td class='spanTitle'>用户名：</td><td><input type='text' id='username' name='uname' size='20' style='width:150px;' class='gbinput'> <span class='fred' id='msg_username'>*</span></td></tr>"
				html+="<tr><td class='spanTitle'>密　码：</td><td><input type='password' id='password' name='password' size='20' style='width:150px;' class='gbinput'> <span class='fred' id='msg_password'>*</span></td></tr>"
				html+="<tr><td class='spanTitle'></td><td style='padding-top:6px;'><input id='btnLogin' type='button' value='　提　交　' onclick='javascript:user.chkLogin()' class='btn'></td></tr>"		
				html+="</table></P></form></li>"
	    	$(div).innerHTML=html;	
		}	
	
		//检查登录
		this.chkLogin=function(){
	 		var errMsg="";	
			var errNum=0;
			if($("username").value==""){
				$("msg_username").innerHTML="请输入您的用户名!";
				errNum+=1;
			}else{$("msg_username").innerHTML=""}
			if($("password").value==""){
				$("msg_password").innerHTML="请输入您的密码!";
				errNum+=1;			
			}else{$("msg_password").innerHTML=""}
			if(errNum>0){return false}
			$("btnLogin").disabled=true;
			$("btnLogin").value="正在提交，请稍等..."
			dojo.io.bind({
				url:url+"?action=login"+"&rnd="+Math.random()*1000,
				handle: function(type, data, evt){ 
	    		    if(type == "load"){ 
    	        		processLogin(data);	
			         }else if(type == "error"){ 
						postMsg(data,"error")
		        	 }else{ 
						postMsg(data,"error")        	

			   	     }
	    		 },
				method:"post",
				formNode: $("form1"),
				mimetype:"text/xml",
				preventCache: false,
				useCache: false
			})	
		}

		//处理登录

		function processLogin(data){
		   var xmldoc = data;
		   var items = xmldoc.getElementsByTagName('guestbook');		   
		   var msg=items[0].getElementsByTagName("msg")[0].firstChild.nodeValue;  		   
   		   postMsg(msg,"");
		   var user=new User();
		   user.chkAdmin();	   
		   setTimeout("eval("+this.objName+".getGuestBook(currpage))",1000)
		}		
			
		//退出登录
		this.logout=function(){
			postMsg("正在提交，请稍等！","loading")					
			dojo.io.bind({
				url:url+"?action=logout"+"&rnd="+Math.random()*1000,
				handle: function(type, data, evt){ 
    			    if(type == "load"){ 
            			processLogin(data);	
		        	 }else if(type == "error"){ 
						postMsg(data,"error")
			         }else{ 
						postMsg(data,"error")        	
			   	     }
	    		 },
				mimetype:"text/xml",
				preventCache: false,
				useCache: false
			})	
		}			
	}
	
//*******************************************
//   公共函数
//*******************************************	
	//提示信息
	function postMsg(){
		if(arguments.length==3){var mdiv=arguments[2];}	else{var mdiv=msgdiv}	
		var msg=arguments[0];
		var imgtype=arguments[1]
		var imgtype=imgtype.toLowerCase();
		var img="";		
		switch(imgtype){
			case "loading":
				img="images/loading.gif";
				break;
			case "ok":
				img="images/icon_ok.gif";
				break;			
			case "error":
				img="images/icon_err.gif";
				break;		
			default:
				img="images/icon_war.gif"
				break;	
		}
		$(mdiv).innerHTML="<div id='loading'>"+(img!=""?"<img src='"+img+"' border='0'> ":"")+msg+"</div>";	
		if(msg!="")	{
			//By hopesoft@2006-11-19
			var navUserAgent = navigator.userAgent
			if (navUserAgent.indexOf("Firefox") >= 0 || navUserAgent.indexOf("Opera") >= 0) {
				$(mdiv).style.top = (document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop) + ((document.body.clientHeight > document.documentElement.clientHeight)?document.documentElement.clientHeight:document.body.clientHeight) - 70 + 'px';
			}
			else{
				$(mdiv).style.top = (document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop) + ((document.documentElement.clientHeight == 0)?document.body.clientHeight:document.documentElement.clientHeight) - 70 + 'px';
			}
			$(mdiv).style.display="block"			
		}
		else{$(mdiv).style.display="none"}						
	}	

	function escapeAscii(s){
		var ss=s
		var strNew=""
		for(var i=0;i<s.length;i++)	{
			strNew+=(ss.charCodeAt(0,1)<32?(escape(ss.substring(0,1))):(ss.substring(0,1)))
			ss=ss.substring(1,ss.length)
		}
		return strNew
	}
	
	function $(obj){return document.getElementById(obj)}
	function getXMLNode(obj){return (eval(obj)!==null)?obj.nodeValue:""}
	function isEmail(s){var re = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;return (re.test(s));}			   
	function XMLEncode(str){
//       str=Trim(str);
	   str=unescape(str);
	   str=str.replace(/\n/g,'<br>') 
//       str=str.replace(/\&/g,"&amp;");
       str=str.replace(/\</g,"&lt;");
       str=str.replace(/\>/g,"&gt;");
       str=str.replace(/\'/g,"&apos;");
       str=str.replace(/\\/g,"&quot;");	   
       return str;
	}
　　
　　function chkStrLen(msg){
	    var str=msg;
		var len=0;
		for(var i=0; i<str.length; i++){
			var c=str.charCodeAt(i);
		     //半角
    		 if(c<256||(c>=0xff61&&c<=0xff9f)){
		       len=len+1;
		     }
		     //全角
		     else{
		       len=len+2;
		     }
	   }
	   return len;
	}

    //from dojo.io.cookie.getCookie
	function getCookie(name){
		var idx = document.cookie.lastIndexOf(name+'=');
		if(idx == -1) { return null; }
		var value = document.cookie.substring(idx+name.length+1);
		var end = value.indexOf(';');
		if(end == -1) { end = value.length; }
		value = value.substring(0, end);
		value = unescape(value);
		return value;		
	}	