﻿///////////////////////默认设置///////////////////////////////////////////////
var rows = 15; //留言显示条数
var dataRate = 5000;  //刷新数据的频率
var autoCloseTime = 3000;  //留言输入窗口自动关闭时间
var txtLength = 50;  //设置留言字数
var nameLength = 8; //设置昵称最长字符数
//需要加载的文件
var baseUrl = "http:\/\/act.cqnews.net:8080\/chart_fm1035\/";
var fileName = {"fn":[baseUrl+"jsr_class.js",baseUrl+"toGB2312.js",
					  baseUrl+"chartUser\/process.jsp",baseUrl+"chartUser\/page.jsp"]};
//留言内容,网友名称,留言日期,分页的文字样式
var lyTxt  = {"color":"#333","size":"12px"};
var lyName = {"color":"blue","size":"12px"};
var lyDate = {"color":"#aaa","size":"12px"};
var lyFenye = {"color":"blue","size":"12px","bgcor":"#eee","weight":"bold"};
var lyContentBgCol = "#fff";//留言显示框背景色
//////////////////////////////////////////////////////////////////////////////

////////定义全局变量//////////////////////////////////////////////////////////
var oldHtmlContent = ""; //上次显示的留言内容
var oldHtmlFenye = "";  //上次显示的分页栏
var oldFenyeNum = 0;  //上次显示的分页数
var fenyeContent = "";  //留言分页栏
var n1,n2,conStr,result; //验证码操作数,操作符及答案
var uName="",uContent="",selValue="",trueValue=""; //声明传送参数
var showTxtFlag;  //留言输入框的提示
//////////////////////////////////////////////////////////////////////////////

//////////////////////加载json<script>标签////////////////////////////////////
document.write("<script type=\"text\/javascript\" src=\""+fileName.fn[0]+"\"><\/script>\n");
//////////////////////////////////////////////////////////////////////////////

//////////////////////加载转换字符编码<script>标签////////////////////////////
document.write("<script type=\"text\/javascript\" src=\""+fileName.fn[1]+"\"><\/script>\n");
//////////////////////////////////////////////////////////////////////////////

//////////////////////显示及输入留言面板//////////////////////////////////////
////显示留言内容
document.write("<div id=\"contentTotal\" style=\"width:95%;height:140px;line-height:17px;");
document.write("background-color:"+lyContentBgCol+";width:290px;padding:5px;overflow-y:auto;");
document.write("word-wrap:break-word;\" class=\"ly_txt\"><div style=\"width:95%;");
document.write("text-align:center;padding:7px;\">正在读取网友留言数据……</div></div>\n");
////显示留言分页栏
fenyeContent += "<div id=\"lyFenye\" style=\"width:93%;text-align:center;";
fenyeContent += "border-top:1px dotted #ccc;line-height:16px;padding-top:4px;margin-top:6px;\"><\/div>";
////插入留言内容样式表
addStyleSheets(".ly_txt","color:"+lyTxt.color+";font-size:"+lyTxt.size+";");
addStyleSheets(".ly_name","color:"+lyName.color+";font-size:"+lyName.size+";");
addStyleSheets(".ly_date","color:"+lyDate.color+";font-size:"+lyDate.size+";");
addStyleSheets("a.ly_fenye","color:"+lyFenye.color+";font-size:"+lyFenye.size+";background-color:"+lyFenye.bgcor+";font-weight:"+lyFenye.weight+";");
////留言输入区域背景
document.write("<div id=\"lyBg\" style=\"position:absolute; left:200px; top:200px;");
document.write("display:none; width:250px; height:200px; line-height:200px;");
document.write("padding:5px;padding-top:10px;\"></div>\n");
//////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////函数区/////////////////////////////////////////////////////////////////////////////
//////////////////////jsonp主程序/////////////////////////////////////////////
window.onload = function() {
	//每隔5秒接收一次数据
	var ti = setInterval("showJSONScript(\"receive\",\"&rows="+rows+"\")",dataRate);
	/*--其它程序调用的--*/show();/*--其它程序调用的--*/
}
///动态创建script标签
function showJSONScript(action,parm) {
	var url = fileName.fn[2] + "?action=" + action + parm;  //设置服务器地址
	//开始创建标签
	jsonObj = new JSONscriptRequest(url);
	jsonObj.buildScriptTag();
	jsonObj.addScriptTag();
}
//显示留言内容
function callback(msg) {
	if (msg.res_msg==null) {
		var newHtmlContent = msg.res_receive[0];  //读取新的留言数据
		//数据改变时才重新填充留言内容
		if (newHtmlContent != oldHtmlContent) {
			document.getElementById("contentTotal").innerHTML = newHtmlContent + fenyeContent;
			//////读取新的留言分页栏//////////////////////////////////////////////////
			if (oldFenyeNum != msg.res_receive[1]) {
				oldFenyeNum = msg.res_receive[1];
				var newHtmlFenye = "";
				for (var i=1;i<=parseInt(msg.res_receive[1]);i++) 
					newHtmlFenye += "<a href=\""+fileName.fn[3]+"?page="+i+"&rows="+rows+"\" class=\"ly_fenye\">"+i+"</a> ";
				oldHtmlFenye = newHtmlFenye;
				//////////////////////////////////////////////////////////////////////////
			}
			document.getElementById("lyFenye").innerHTML = oldHtmlFenye;
			oldHtmlContent = newHtmlContent;
		}
	}
	else {
		document.getElementById("lyStatus").innerHTML = msg.res_msg + autoCloseTime/1000 + "秒后窗口自动关闭";  //填充留言状态信息
		document.getElementById("ht").disabled = true;
		var ti = setTimeout("closeLy()",autoCloseTime); //3秒后自动关闭留言输入面板
	}
	jsonObj.removeScriptTag();
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////留言入口函数/////////////////////////////////////////////
function ly() {
	n1 = getRandomChar("int");
	n2 = getRandomChar("int");
	conStr = getRandomChar("char");
	result = getVerifyResult(n1,n2,conStr);
	var obj = document.getElementById("lyBg");
	obj.innerHTML = getLyArea();
	var objContent = document.getElementById("contentTotal");
	////解决firefox，opera下文本域不会自动换行的问题/////////////////////
	if ((/firefox/i.test(navigator.userAgent))||(/opera/i.test(navigator.userAgent))) {
		var i=0;
		var areaObj = document.getElementById("contentSelf");
		areaObj.onkeydown = function() {
								if (i>20) {
									areaObj.value += "\n";
									i=0;
								}
								i++;
							};
	}
	///////////////////////////////////////////////////////////
	obj.style.left = ie_x(objContent) + parseInt(objContent.style.width) + "px";
	obj.style.top = ie_y(objContent) - 15 + "px";
	obj.style.display = "block";
	showTxtFlag = true;
	//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。 
	if (/msie/i.test(navigator.userAgent)) document.getElementById("contentSelf").onpropertychange = handle;  //ie浏览器 
	else document.getElementById("contentSelf").addEventListener("keyup",handle,false); //非ie浏览器
}
/////输入字数检测，当状态改变的时候执行该函数 
function handle() {
	var tlObj = document.getElementById("contentSelf");
	if (tlObj.value.length > txtLength) tlObj.value = tlObj.value.substring(0,txtLength);
	document.getElementById("txtLenth").innerHTML = parseInt(txtLength - tlObj.value.length); 
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////生成验证码///////////////////////////////
/////生成随机字符///////////////////////
function getRandomChar(charType) {
	if (charType=="int") return Math.round(Math.random()*9);
	if (charType == "char") {
		var r = Math.round(Math.random()*2);
		if (r==0) return "+";
		if (r==1) return "-";
		if (r==2) return "*";
	}
	return null;
}
//////生成验证结果/////////////////////
function getVerifyResult(vn1,vn2,cc) {
	var n1 = parseInt(vn1);
	var n2 = parseInt(vn2);
	if (cc == "+") return n1+n2;
	if (cc == "-") return n1-n2;
	if (cc == "*") return n1*n2;
	return null;
}
//////生成列表代码//////////////////////
function getResultList(rn,vResult,vn1,vn2,cc) {
	vResult = parseInt(vResult);
	var rstSerial = Math.round(Math.random()*(rn-1))+1;
	var listr = "";
	listr += "<select id=\"selValue\" name=\"selValue\">\n";
	listr += "<option value=\"\">答案</option>\n";
	for (var i=1;i<=rn;i++) {
		if (i >= rstSerial)
			listr += "<option value=\"" + parseInt(vResult + (i - rstSerial)) + "\">" + parseInt(vResult + (i - rstSerial)) + "</option>\n";
		else
			listr += "<option value=\"" + parseInt(vResult - (rstSerial - i)) + "\">" + parseInt(vResult - (rstSerial - i)) + "</option>\n";
	}
	listr += "</select>\n";
	return listr;
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////

/////留言输入区域/////////////
function hidethis(obj) {
	if (showTxtFlag) { obj.innerHTML = ""; showTxtFlag = !showTxtFlag; }
}
function getLyArea() {
	var gg = "";
	gg += "<div style=\"width:212px; height:180px; padding:5px; border:1px solid #bbb;background-color:#ddd\">\n";
	gg += "<div style=\"width:200px; height:20px; line-height:20px;\">昵称：<input id=\"uName\" maxlength=\""+nameLength+"\"";
	gg += "name=\"uName\" value=\"匿名\" onmouseover=\"this.select()\" type=\"text\" size=\"13\" style=\"height:12px;border:1px solid #bbb;\"/><\/div>\n";
	gg += "<div style=\"text-align:center;width:200px; height:30px; line-height:30px; padding-top:6px;\">";
	gg += "<font style=\"text-decoration:underline;\">"+n1+" "+conStr+" "+n2+" = <font color=red>?<\/font><\/font>";
	gg += "&nbsp;&nbsp;"+getResultList(5,result,n1,n2,conStr)+"&nbsp;&nbsp;";
	gg += "<input id=\"ht\" type=\"button\" name=\"Submit2\" value=\"换题\" onClick=\"ly()\" style=\"width:40px; height:20px; border:1px solid #333;\"><\/div>\n";
	gg += "<div style=\"width:200px;padding-top:6px;\"><textarea onpaste=\"return false\" id=\"contentSelf\" name=\"contentSelf\" rows=\"5\" cols=\"22\" onClick=\"hidethis(this)\" style=\"overflow-y:visible;overflow-x:hidden;font-size:13px;height:90px;border:1px solid #bbb;\">";
	gg += "在此输入留言内容...<\/textarea><\/div>\n";
	gg += "<div id=\"lyStatus\" style=\"width:200px;height:15px;line-height:15px;text-align:center;padding-top:4px;color:red\">";
	gg += "<a href=\"javascript:submitLy()\" target=\"_self\">[提 交]<\/a>　<a href=\"javascript:closeLy()\" target=\"_self\">[关 闭]<\/a>";
	gg += "　还剩<span id=\"txtLenth\">" + txtLength + "<\/span>个字<\/div>\n";
	gg += "<\/div>\n";
	gg += "<input type=\"hidden\" id=\"trueValue\" name=\"trueValue\" value=\"" + result + "\">\n";
	return gg;
}

//////关闭留言输入区域///////////////
function closeLy() {
	document.getElementById("lyBg").style.display = "none";	
}

/////发送留言///////////////////////
function submitLy() {
	document.getElementById("contentSelf").disabled = true;
	document.getElementById("lyStatus").innerHTML = "<font color=red>正在发送，请稍等……</font>";
	uContent = document.getElementById("contentSelf").value;
	uContent = uContent.inputChk();
	document.getElementById("contentSelf").innerHTML = "";
	uName = document.getElementById("uName").value.inputChk();
	selValue = document.getElementById("selValue").value;
	trueValue = document.getElementById("trueValue").value;
	showJSONScript("send","&uName=" + UrlEncode(uName) + "&uContent=" + UrlEncode(uContent) + "&selValue=" + selValue + "&trueValue=" + trueValue + "&result=" + result);
}

/////插入自定义样式表
function addStyleSheets(name,rule) { 
	var cssObj = document.styleSheets[0];
	try {
		var index = cssObj.cssRules.length;
		cssObj.insertRule(name+"{"+rule+"}",index);
	}
	catch(e) {
		cssObj.addRule(name,rule);
	}
} 

/////获取控件相对地址
function ie_x(e) {
	var l=e.offsetLeft;
	while (e=e.offsetParent) l+=e.offsetLeft;
	return l;
}

function ie_y(e) {
	var l=e.offsetTop;
	while (e=e.offsetParent) l+=e.offsetTop;
	return l;
}

/////输入转换
String.prototype.inputChk = function() {
	var str = this;
	str=str.replace(/&lt;/g,"《");
	str=str.replace(/&gt;/g,"》");
	str=str.replace(/&amp;/g,"＆");
	str=str.replace(/\'/g,"’");
	str=str.replace(/\"/g,"”");
	str=str.replace(/\\/g,"＼");
	str=str.replace(/\//g,"／");
	str=str.replace("<P>","");
	str=str.replace("<\/P>","");
	str=str.replace(/\n/g,"");
	return str.toCase();
}

/////半角转全角
String.prototype.toCase = function() {
	var tmp = "";
	for (var i=0;i<this.length;i++) {
		if (this.charCodeAt(i)>0&&this.charCodeAt(i)<255)
			tmp += String.fromCharCode(this.charCodeAt(i)+65248);
		else
			tmp += String.fromCharCode(this.charCodeAt(i));
	}
	return tmp;
}