﻿/* 处理字串 */
var ListLang=function(){
	/* 错误信息 */
	this.UNKNOWN=" ";
	this.AJAX_1="无效的操作";
	this.AJAX_2="未知错误";
	this.DATA_1="无效的请求方式";
	this.DATA_2="内容编号不能为空";
	this.DATA_3="无效的内容编号";
	this.DATA_4="无效的操作";
	this.DATA_5="无效的参数";
	this.DATA_6="内容编号不能为空，提交失败";
	this.DATA_7="无效的内容编号，提交失败";
	this.HANDLEDATA_1="起始编号不能为空";
	this.HANDLEDATA_2="无效的起始编号";
	this.HANDLEDATA_3="结束编号不能为空";
	this.HANDLEDATA_4="无效的结束编号";
	this.HANDLEDATA_5="无法获取数据库连接";
	this.HANDLEDATA_6="无法获取内容记录";
	this.HANDLEDATA_7="标题不能为空，提交失败";
	this.HANDLEDATA_8="标题的长度不能超过500字节，提交失败";
	this.HANDLEDATA_9="联系人的长度不能超过50字节，提交失败";
	this.HANDLEDATA_10="邮箱的长度不能超过100字节，提交失败";
	this.HANDLEDATA_11="内容的长度不能超过2000字节，提交失败";
	this.HANDLEDATA_12="无法获取客户端IP地址，提交失败";
	this.HANDLEDATA_13="该内容不存在，可能是已经被删除";
	this.HANDLEDATA_14="不允许对该内容发表评论";
	this.HANDLEDATA_15="未知错误";
	this.HANDLEDATA_16="回复内容不能为空，提交失败";
	this.HANDLEDATA_17="回复内容的长度不能超过2000字节，提交失败";
	this.HANDLEDATA_18="转换回复时间失败";
	this.HANDLEDATA_19="该评论不存在，可能是已经被删除";
	this.HANDLEDATA_20="无法获取此评论所属的内容分类记录";
	this.HANDLEDATA_21="用户名不能为空";
	this.HANDLEDATA_22="密码不能为空";
	this.HANDLEDATA_23="验证码不能为空";
	this.HANDLEDATA_24="无法获取会话";
	this.HANDLEDATA_25="无法从会话中获取验证码";
	this.HANDLEDATA_26="无效的验证码";
	this.HANDLEDATA_27="用户名不存在或者是密码不正确";
	this.HANDLEDATA_28="无效的内容分类编号";
	this.HANDLEDATA_29="无效的内容排序方式";
	this.HANDLEDATA_30="分页大小过大";
	this.LIST_1="\u3000";/* 全角空格 */
	this.LIST_2="本机不能查看结果，请上传网站";
	this.LIST_3="无法创建XMLHttpRequest对象";
	this.LIST_4="服务器没有生成正确的XML响应";
	this.LIST_5="数据载入中...";
	this.LIST_6="未知错误";
	this.LIST_7="未知错误：";
	/* end of 错误信息 */
	/* 获取错误信息 */
	this.getString=function(n){
		if(typeof(g_list_lang[n])=="string"){
			return g_list_lang[n];
		}else{
			return g_list_lang[g_list_lang.UNKNOWN];
		}
	};
};
/* 处理list页面中所有脚本动作的对象 */
var List=function(){
	this.request_url="/scms/servlet/Ajax?ac=data";/* 请求地址 */
	this.ORDER_BY_SEQNO_DESC=0;/* 排序方式：按照排序编号降序排列 */
	this.ORDER_BY_SEQNO_ASC=1;/* 排序方式：按照排序编号升序排列 */
	this.ORDER_BY_UPLOAD_TIME_DESC=2;/* 排序方式：按照发布时间降序排列 */
	this.ORDER_BY_UPLOAD_TIME_ASC=3;/* 排序方式：按照发布时间升序排列 */
	this.ORDER_BY_VIEW_NUMBER_DESC=4;/* 排序方式：按照浏览次数降序排列 */
	/* 生成json字串 */
	var json_pattern={
		'\b':'\\b',
		'\t':'\\t',
		'\n':'\\n',
		'\f':'\\f',
		'\r':'\\r',
		'"':'\\"',
		'\\':'\\\\'
	};
	var json_convert={
		array:function(x){
			var a=['['],b,f,i,l=x.length,v;
			for(i=0;i<l;i+=1){
				v=x[i];
				f=json_convert[typeof v];
				if(f){
					v=f(v);
					if(typeof v =='string'){
						if(b){a[a.length]=',';}
						a[a.length]=v;
						b=true;
					}
				}
			}
			a[a.length]=']';
			return a.join('');
		},
		'boolean':function(x){
			return String(x);
		},
		'null':function(x){
			return "null";
		},
		number:function(x){
			return isFinite(x)?String(x):'null';
		},
		object:function(x){
			if(x){
				if(x instanceof Array){
					return json_convert.array(x);
				}
				var a=['{'],b,f,i,v;
				for(i in x){
					v=x[i];
					f=json_convert[typeof v];
					if(f){
						v=f(v);
						if(typeof v =='string'){
							if(b){a[a.length]=',';}
							a.push(json_convert.string(i),':',v);
							b=true;
						}
					}
				}
				a[a.length]='}';
				return a.join('');
			}
			return 'null';
		},
		string:function(x){
			if(/["\\\x00-\x1f]/.test(x)){
				x=x.replace(/([\x00-\x1f\\"])/g,
					function(a,b){
						var c=json_pattern[b];
						if(c){
							return c;
						}
						c=b.charCodeAt();
						return '\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);
					}
				);
			}
			return '"' + x + '"';
		}
	};
	/* 将对象转换为JSON字符串 */
	this.toJSONString=function(o){
		return json_convert.object(o);
	};
	/* 通过id获取html对象 */
	this.$=function(id){return document.getElementById(id);};
	/* 判断一个字符串是否是空 */
	this.isEmpty=function(sz){return (sz==null)||(sz=="");};
	/* 将一个windows文本转换成编辑用的html代码 */
	this.convertTxt2HtmlWhenShow=function(s){
		function handleSpace(s1){
			if(g_list.isEmpty(s1)){return "";}
			var r="";var c,got=0;
			for(var i=0;i<s1.length;i++){
				c=s1.charAt(i);
				if(c==' '){
					got++;
				}else{
					if(got>0){
						for(var j=0;j<(got-1);j++){
							r+='&nbsp;';
						}
						if(i==1){
							r+='&nbsp;';
						}else{
							r+=' ';
						}
					}
					r+=c;
					got=0;
				}
			}
			if(got>0){
				for(var j=0;j<got;j++){
					r+='&nbsp;';
				}
			}
			return r;
		};
		function handleOther(s1){
			var r=s1;
			var re=/\t/ig;r=r.replace(re,"  ");
			var re=/&/ig;r=r.replace(re,"&amp;");
			re=/[<]/ig;r=r.replace(re,"&lt;");
			re=/>/ig;r=r.replace(re,"&gt;");
			re=/"/ig;r=r.replace(re,"&quot;");
			return r;
		};
		function oneLine(s1){
			if(g_list.isEmpty(s1)){return "";}
			return handleSpace(handleOther(s1));
		};
		var space=g_list_lang.getString("LIST_1")/*"\u3000"*/;
		var re=/\r\n/ig;s=s.replace(re,"\n");
		var re=/\r/ig;s=s.replace(re,"\n");
		var a=s.split("\n");
		if(a==null){return "";}if(a.length==0){return "";}
		var r="";
		for(var i=0;i<a.length;i++){if(i>0){r+="<br>";}r+=oneLine(a[i]);}
		return r;
	};
	/* 替换 */
	this.replaceKey=function(sz,kv){if(g_list.isEmpty(sz))return "";var reg;for(var i=0;i<kv.length;i++){eval("reg=/"+kv[i][0]+"/ig;");sz=sz.replace(reg,kv[i][1]);}return sz;};
	/* 转换日期为字符表示 */
	this.date2Str=function(date){
		if(date==null)return "";
		function fmt(n){if(n<10)return "0"+n;else return n+"";}
		return date.getFullYear()+"-"+fmt(date.getMonth()+1)+"-"+fmt(date.getDate())+" "+fmt(date.getHours())+":"+fmt(date.getMinutes())+":"+fmt(date.getSeconds());
	};
	/* 转换日期为字符表示 */
	this.date2Str1=function(date){
		if(date==null)return "";
		function fmt(n){if(n<10)return "0"+n;else return n+"";}
		var ret=date.getFullYear()+"-"+fmt(date.getMonth()+1)+"-"+fmt(date.getDate());
		if((date.getHours()!=0)){
			ret+=" "+fmt(date.getHours())+":"+fmt(date.getMinutes());
			if(date.getSeconds()!=0){
				ret+=":"+fmt(date.getSeconds());
			}
		}
		return ret;
	};
	/* 获取ajax对象 */
	this.getHTTPRequest=function(){
		var msxmlNames=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
		try{return new XMLHttpRequest();}catch(e){}
		for(var i=0;i<msxmlNames.length;i++){try{return new ActiveXObject(msxmlNames[i]);}catch(e){}}
		return null;
	};
	/* 使用xpath选取一个节点 */
	this.xmlSelectSingleNode=function(doc,xpath){
		if(navigator.userAgent.indexOf('MSIE')>=0){/*IE*/
			return doc.selectSingleNode(xpath);
		}else{/*Gecko*/
			var xPathResult=doc.evaluate(xpath,doc,
					doc.createNSResolver(doc.documentElement),9,null);
			if(xPathResult&&xPathResult.singleNodeValue)
				return xPathResult.singleNodeValue;
			else
				return null;
		}
	};
	/* 显示提示信息 */
	this.showPrompt=function(cfg,msg){
		var div=g_list.$(cfg.prompt_e);if(div==null)return;
		div.innerHTML=g_list.convertTxt2HtmlWhenShow(msg);
		if((div.style)&&(div.style.display=="none")){div.style.display="block";}
	};
	/* 隐藏提示信息 */
	this.hidePrompt=function(cfg){
		var div=g_list.$(cfg.prompt_e);if(div==null)return;
		if((div.style)&&(div.style.display!="none")){div.style.display="none";}
	};
	/* 处理错误 */
	this.checkError=function(cfg,doc){
		var iErrorNumber=-1;
		var oErrorNode=g_list.xmlSelectSingleNode(doc,'ajaxret/error');
		if(oErrorNode){
			iErrorNumber=parseInt(oErrorNode.attributes.getNamedItem('code').value,10);
			switch(iErrorNumber){
				case 0:/*not an error*/
					break;
				case g_list.SSOErrorCode:/*SSO*/
					break;
				case -1:/*custom error msg*/
					if(oErrorNode.firstChild){
						if(oErrorNode.firstChild.nodeValue){
							g_list.showPrompt(cfg,g_list_lang.getString(oErrorNode.firstChild.nodeValue));
						}else{
							g_list.showPrompt(cfg,g_list_lang.getString("LIST_6")/*"未知错误"*/);
						}
					}
					break ;
				default:
					g_list.showPrompt(cfg,g_list_lang.getString("LIST_7")/*"未知错误："*/+iErrorNumber);
					break ;
			}
		}else{
			g_list.showPrompt(cfg,g_list_lang.getString("LIST_6")/*"未知错误"*/);
		}
		return iErrorNumber;
	};
	/* 转义key中的单引号和双引号 */
	this.escapeKey=function(ct){
		if(g_list.isEmpty(ct)){
			return "";
		}
		var kv=[
			["~",""],["`",""],["\\!",""],["@",""],["#",""],["\\$",""],
			["%",""],["\\^",""],["&",""],["\\*",""],["\\(",""],["\\)",""],
			["-",""],['_',""],["\\+",""],["=",""],["\\{",""],["}",""],
			["\\[",""],["]",""],["\\|",""],["\\\\",""],[":",""],[";",""],
			["\'",""],["\"",""],["<",""],[",",""],[">",""],["\\.",""],
			["\\?",""],["\\/",""],["\\n",""],["\\r",""],["\\t",""]
		];
		return g_list.replaceKey(ct,kv);
	};
	/* 获取数据 */
	this.getDataList=function(cfg,page_id,key){
		function checkCfg(){
			if(cfg==null)return false;
			if(typeof cfg!="object")return false;
			if(typeof cfg.reg_name!="string"){
				cfg.reg_name="";
			}
			if(typeof cfg.cate_id!="number")return false;
			if((cfg.reg_name=="")&&(cfg.cate_id<=0))return false;
			if(typeof cfg.only_immediate!="boolean"){cfg.only_immediate=false;}
			if(cfg.only_immediate!=true){cfg.only_immediate=false;}
			if((cfg.order!=g_list.ORDER_BY_SEQNO_ASC)&&(cfg.order!=g_list.ORDER_BY_UPLOAD_TIME_DESC)&&(cfg.order!=g_list.ORDER_BY_UPLOAD_TIME_ASC)&&(cfg.order!=g_list.ORDER_BY_VIEW_NUMBER_DESC)){
				cfg.order=g_list.ORDER_BY_SEQNO_DESC;
			}
			if(typeof cfg.list_e!="string")return false;
			if(!g_list.$(cfg.list_e))return false;
			if(typeof cfg.prompt_e!="string"){
				cfg.prompt_e="";
			}else{
				if(g_list.isEmpty(cfg.prompt_e)){
					cfg.prompt_e="";
				}else{
					if(!g_list.$(cfg.prompt_e))return false;
				}
			}
			if(typeof cfg.pagesize!="number"){
				cfg.pagesize=10;
			}else{
				if(cfg.pagesize<=0){
					cfg.pagesize=10;
				}
			}
			if(typeof cfg.showlink!="number"){
				cfg.showlink=10;
			}else{
				if(cfg.showlink<=0){
					cfg.showlink=10;
				}
			}
			if(typeof cfg.getEmptyHtml!="function"){
				cfg.getEmptyHtml=function(){return "";};
			}
			if(typeof cfg.getPage1Html!="function"){
				cfg.getPage1Html=function(){return "";};
			}
			if(typeof cfg.getPage2Html!="function"){
				cfg.getPage2Html=function(){return "";};
			}
			if(typeof cfg.getDataHeaderHtml!="function"){
				cfg.getDataHeaderHtml=function(){return "";};
			}
			if(typeof cfg.getOneDataHtml!="function"){
				return false;
			}
			if(typeof cfg.getDataTailHtml!="function"){
				cfg.getDataTailHtml=function(){return "";};
			}
			if(typeof cfg.afterGetDataList!="function"){
				cfg.afterGetDataList=function(){};
			}
			return true;
		};
		function checkParams(){
			if(!checkCfg())return false;
			if(typeof page_id!="number"){
				page_id=0;
			}else{
				if(page_id<0){
					page_id=0;
				}
			}
			if(typeof key!="string"){
				key="";
			}
			return true;
		}
		if(!checkParams())return;
		var p=document.location.protocol;
		if((p!="http:")&&(p!="https:")){
			g_list.showPrompt(cfg,g_list_lang.getString("LIST_2")/*"本机不能查看结果，请上传网站"*/);
			return;
		}
		g_list.showPrompt(cfg,g_list_lang.getString("LIST_5")/*"数据载入中..."*/);
		var record=function(){
			if(typeof cfg.reg_name=="string"){
				this.reg_name=cfg.reg_name;
			}else{
				this.reg_name="";
			}
			this.cate_id=cfg.cate_id;
			this.only_immediate=cfg.only_immediate;
			this.from=cfg.pagesize*page_id+1;
			this.to=cfg.pagesize*(page_id+1);
			this.key=key;
			this.order=cfg.order;
		};
		var http=g_list.getHTTPRequest();
		if(http==null){g_list.showPrompt(cfg,g_list_lang.getString("LIST_3")/*"无法创建XMLHttpRequest对象"*/);return;}
		function cb(){
			if(http.readyState==4){
				if(((http.status!=200)&&(http.status!=304))||(http.responseXML==null)||(http.responseXML.firstChild==null)){
					g_list.showPrompt(cfg,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				var doc=http.responseXML;
				delete http;
				if(g_list.checkError(cfg,doc)!=0)return;
				var oRetNode=g_list.xmlSelectSingleNode(doc,'ajaxret/ret');
				if(oRetNode==null){
					g_list.showPrompt(cfg,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				if((!oRetNode.firstChild)||((oRetNode.firstChild)&&(!oRetNode.firstChild.nodeValue))){
					g_list.showPrompt(cfg,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				var ret=oRetNode.firstChild.nodeValue;/*json string*/
				var jsonobj=null;eval("jsonobj="+ret+";");
				if((jsonobj==null)||((jsonobj!=null)&&(jsonobj.al==null))){
					g_list.showPrompt(cfg,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				g_list.hidePrompt(cfg);
				g_list.showDataList(jsonobj,cfg,page_id,key);
				/*call cb*/
				cfg.afterGetDataList(cfg,jsonobj.total,jsonobj.al,page_id,key);
			}
		}
		var url=g_list.request_url+"&command=getDataList&t="+(new Date().getTime());
		http.onreadystatechange=cb;
		http.open("post",url,true);
		var t = new record();
		try{http.setRequestHeader("Content-type","text/plain");}catch(e){}
		try{http.send(g_list.toJSONString(t));}catch(e){}
	};
	/* 获取所有内容分类 */
	this.getCateListByRegName=function(reg_name,cbfunc){
		function checkParams(){
			if(typeof reg_name!="string"){
				return false;
			}
			reg_name=reg_name.toLowerCase();
			if(typeof cbfunc!="function"){
				return false;
			}
			return true;
		};
		function checkError(doc){
			var iErrorNumber=-1;
			var oErrorNode=g_list.xmlSelectSingleNode(doc,'ajaxret/error');
			if(oErrorNode){
				iErrorNumber=parseInt(oErrorNode.attributes.getNamedItem('code').value,10);
				if(iErrorNumber==0){
					return "";
				}else if (iErrorNumber==-1){
					if(oErrorNode.firstChild){
						if(oErrorNode.firstChild.nodeValue){
							return g_list_lang.getString(oErrorNode.firstChild.nodeValue);
						}
					}
				}
			}
			return g_list_lang.getString("LIST_6")/*"未知错误"*/;
		};
		if(!checkParams())return;
		var p=document.location.protocol;
		if((p!="http:")&&(p!="https:")){
			cbfunc(reg_name,null,g_list_lang.getString("LIST_2")/*"本机不能查看结果，请上传网站"*/);
			return;
		}
		var http=g_list.getHTTPRequest();
		if(http==null){cbfunc(reg_name,null,g_list_lang.getString("LIST_3")/*"无法创建XMLHttpRequest对象"*/);return;}
		function cb(){
			if(http.readyState==4){
				if(((http.status!=200)&&(http.status!=304))||(http.responseXML==null)||(http.responseXML.firstChild==null)){
					cbfunc(reg_name,null,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				var doc=http.responseXML;
				delete http;
				var errmsg=checkError(doc);
				if(errmsg!=""){
					cbfunc(reg_name,null,errmsg);
					return;
				}
				var oRetNode=g_list.xmlSelectSingleNode(doc,'ajaxret/ret');
				if(oRetNode==null){
					cbfunc(reg_name,null,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				if((!oRetNode.firstChild)||((oRetNode.firstChild)&&(!oRetNode.firstChild.nodeValue))){
					cbfunc(reg_name,null,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				var ret=oRetNode.firstChild.nodeValue;/*json string*/
				var jsonobj=null;eval("jsonobj="+ret+";");
				if((jsonobj==null)||((jsonobj!=null)&&(jsonobj.al==null))){
					cbfunc(reg_name,null,g_list_lang.getString("LIST_4")/*"服务器没有生成正确的XML响应"*/);
					return;
				}
				cbfunc(reg_name,jsonobj.al,"");
			}
		}
		var url=g_list.request_url+"&command=getCateList&regName="+reg_name+"&t="+(new Date().getTime());
		http.onreadystatechange=cb;
		http.open("get",url,true);
		try{http.setRequestHeader("Content-type","text/plain");}catch(e){}
		try{http.send(null);}catch(e){}
	};	
	/* 获取内容的分级目录 */
	this.getCateFolderByData=function(r){
		var s="/"+r.cate_id;
		if(r.cate_id1!=0){
			s+="/c"+r.cate_id1;
		}
		if(r.cate_id2!=0){
			s+="/c"+r.cate_id2;
		}
		if(r.cate_id3!=0){
			s+="/c"+r.cate_id3;
		}
		if(r.cate_id4!=0){
			s+="/c"+r.cate_id4;
		}
		if(r.cate_id5!=0){
			s+="/c"+r.cate_id5;
		}
		if(r.cate_id6!=0){
			s+="/c"+r.cate_id6;
		}
		if(r.cate_id7!=0){
			s+="/c"+r.cate_id7;
		}
		if(r.cate_id8!=0){
			s+="/c"+r.cate_id8;
		}
		if(r.cate_id9!=0){
			s+="/c"+r.cate_id9;
		}
		return s;
	};
	/* 显示数据 */
	this.showDataList=function(jsonobj,cfg,page_id,key){
		var div=g_list.$(cfg.list_e);
		var total=jsonobj.total;
		if(jsonobj.al.list.length<=0){
			div.innerHTML=cfg.getEmptyHtml(cfg,page_id,key);
		}else{
			var html=cfg.getPage1Html(cfg,total,jsonobj.al,page_id,key)+cfg.getDataHeaderHtml(cfg,total,jsonobj.al,page_id,key);
			for(var i=0;i<jsonobj.al.list.length;i++){
				html+=cfg.getOneDataHtml(cfg,total,jsonobj.al,i,jsonobj.al.list[i],page_id,key);
			}
			html+=cfg.getDataTailHtml(cfg,total,jsonobj.al,page_id,key)+cfg.getPage2Html(cfg,total,jsonobj.al,page_id,key);
			div.innerHTML=html;
		}
	};
};
g_list_js_loaded=true;