﻿var xmlHttp;

function createXMLHttpRequest() {
	if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}
function getComment(page, first) {

	var aid = document.getElementById("aid").value;
	var page = page > 0 ? page : document.getElementById("page").value;
	if (document.getElementById("directionASC") != null) {
		var direction = document.getElementById("directionASC").checked ? "ASC" : "DESC";
	} else {
		var direction = "DESC";
	}

	var queryString = "aid=" + aid + "&direction=" + direction + "&page=" + page;
	var url = "/xml/getcomment.php?timeStamp=" + new Date().getTime();

	createXMLHttpRequest();
	xmlHttp.open("POST", url, true);
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send(queryString);

	function handleStateChange() {
		if(xmlHttp.readyState == 4) {
			if(xmlHttp.status == 200) {
				var xmlDoc = xmlHttp.responseXML;
				var comment = document.getElementById("comment");
				//移除原来所有comment下的节点
				while (comment.hasChildNodes()) {
					comment.removeChild(comment.childNodes[0]);
				}
				//根据XML建立评出论内容
				for (i=0;i<xmlDoc.getElementsByTagName("commentlist").length;i++){
					title = document.createElement("div");	//建立标题
					title.style.padding = "3px";			//设定CSS
					title.style.background = "#EEFFFF";
					date = document.createElement("span");	//建立标题中的日期节点
					date.style.styleFloat = "right";		//让日期节点向右对齐(IE)
					date.style.cssFloat = "right";			//让日期节点向右对齐(其它)
					date.appendChild(document.createTextNode(xmlDoc.getElementsByTagName("dateline")[i].childNodes[0].nodeValue));	//往日期节点里加入日期文字
					title.appendChild(date);	//将日期节点加入到标题中
					title.appendChild(document.createTextNode("第"+xmlDoc.getElementsByTagName("floor")[i].childNodes[0].nodeValue+"楼 发言人："+xmlDoc.getElementsByTagName("author")[i].childNodes[0].nodeValue));	//将第几楼发言人信息加入到标题中
					message = document.createElement("div");	//建立内容
					message.style.padding = "3px";				//设定CSS
					message.style.lineHeight = "25px";
					messageString = xmlDoc.getElementsByTagName("message")[i].childNodes[0].nodeValue;
					messageString = messageString.replace("\r", "");
					messageString = messageString.split("\n");
					for (j=0;j<messageString.length;j++){
						message.appendChild(document.createTextNode(messageString[j]));	//将内容信息加入到内容中
						message.appendChild(document.createElement("br"));	//将内容信息加入到内容中
					}
					comment.appendChild(title);		//向评论里添加标题
					comment.appendChild(message);	//向评论里添加内容
				}
				if (xmlDoc.getElementsByTagName("multipage").length > 0) {
					multipageinfo = xmlDoc.getElementsByTagName("multipage")[0];
					page = multipageinfo.getAttribute("page");
					page = parseInt(page);
					count = multipageinfo.getAttribute("count");
					count = parseInt(count);
					tpp = multipageinfo.getAttribute("tpp");
					tpp = parseInt(tpp);
					tid = multipageinfo.getAttribute("tid");
					tid = parseInt(tid);
					maxpages = multipageinfo.getAttribute("maxpages");
					maxpages = parseInt(maxpages);
					document.getElementById("page").setAttribute("value", page);	//更新当前页数
					var multipage = document.createElement("div");	//建立分页节点
					multipage.setAttribute("id", "multipage");
					multipage.style.height = "20px";
					comment.appendChild(multipage);		//添加分页
					multiComment = commentMulti(count, tpp, page, maxpages);
					multipage.innerHTML = multiComment;
					realpages = Math.ceil(count / tpp);	//总页数
					pages = maxpages && maxpages < realpages ? maxpages : realpages;	//显示页数
					//靠右对齐计算的左边padding数值
					if (page < 13 && pages < 11) {	//如果不超过十页的
						multipage.style.paddingLeft = 405 + ((13 - pages) * 15) + "px";
					} else if (page < 13){	//如果超过十页并且页码在13以下的
						multipage.style.paddingLeft = 270 + ((13 - page) * 10) + "px";
					} else {
						multipage.style.paddingLeft = "280px";
					}
				}
				if (count > 0 && first == 1) {
					var commentOther = document.getElementById("commentOther");	//取得其它信息节点
					commentOther.innerHTML = "<label><input type=\"radio\" name=\"direction\" id=\"directionASC\" value=\"ASC\" onclick=\"getComment(0, 0);\" />升序</label> <label><input type=\"radio\" name=\"direction\" id=\"directionDESC\" value=\"DESC\" onclick=\"getComment(0, 0);\" />降序</label> <a href=\"http://bbs.wowshell.com/viewthread.php?tid=" + tid + "\" target=\"_blank\">去论坛查看评论</a>";
				}
			}
		}
	}
}

//分页num记录总数，perpage每页显示数，curpage当前页码，mpurl页面URL，maxpages最大显示页数
function commentMulti(num, perpage, curpage, maxpages) {
	var multipage = '';
	num = parseInt(num);
	perpage = parseInt(perpage);
	curpage = parseInt(curpage);
	maxpages = parseInt(maxpages);
	//mpurl .= strpos(mpurl, '?') ? '&amp;' : '?';
	if(num > perpage) {
		var page = 10;
		offset = 2;
		
		realpages = Math.ceil(num / perpage);	//总页数
		pages = maxpages && maxpages < realpages ? maxpages : realpages;	//显示页数

		if(page > pages) {
			//当前页大于最大显示页数，则显示第一页
			from = 1;
			to = pages;
		} else {
			from = curpage - offset;
			to = from + page - 1;
			if(from < 1) {
				to = curpage + 1 - from;
				from = 1;
				if(to - from < page) {
					to = page;
				}
			} else if(to > pages) {
				from = pages - page + 1;
				to = pages;
			}
		}

		multipage = (curpage - offset > 1 && pages > page ? '<a class="p_redirect" href="#commenthead" onclick="getComment(1, 0);">|&lsaquo;</a>' : '')+
			(curpage > 1 ? '<a class="p_redirect" href="#commenthead" onclick="getComment('+(curpage - 1)+', 0);">&lsaquo;&lsaquo;</a>' : '');
		for(i = from; i <= to; i++) {
			multipage += i == curpage ? '<span class="p_curpage"><strong>'+i+'</strong></span>' :
				'<a href="#commenthead" onclick="getComment('+i+', 0);" class="p_num">'+i+'</a>';
		}

		multipage += (curpage < pages ? '<a class="p_redirect" href="#commenthead" onclick="getComment('+(curpage + 1)+', 0);">&rsaquo;&rsaquo;</a>' : '')+
			(to < pages ? '<a class="p_redirect" href="#commenthead" onclick="getComment('+pages+', 0);">&rsaquo;|</a>' : '')+
			//(curpage == maxpages ? '<a class="p_redirect" href="misc.php?action=maxpages&amp;pages='.maxpages.'">&rsaquo;?</a>' : '').
			(pages > page ? '<a class="p_pages" style="padding: 0px"><input class="p_input" type="text" name="custompage" onKeyDown="if(event.keyCode==13) {getComment(this.value, 0); return false;}"></a>' : '');

		multipage = multipage ? '<div class="p_bar"><span class="p_total">&nbsp;'+num+'&nbsp;</span><span class="p_pages">&nbsp;'+curpage+'/'+realpages+'&nbsp;</span>'+multipage+'</div>' : '';
	}
	return multipage;
}

//检查用户是否已登录
function checklogin(action) {
	var queryString = "action=" + action;
	var url = "/xml/login.php?timeStamp=" + new Date().getTime();

	createXMLHttpRequest();
	xmlHttp.open("POST", url, true);
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send(queryString);

	function handleStateChange() {
		if(xmlHttp.readyState == 4) {
			if(xmlHttp.status == 200) {
				var xmlText = xmlHttp.responseText;
				if (xmlText != "") {
					content = xmlText.split("|");
					document.getElementById("loginbar").innerHTML = content[0];
					if (content[1] < 1) {
						showseccodeverify();
					}
				}
				getComment(1, 1);
			}
		}
	}
}
//在提交评论时取得用户信息让用户做出相用的动作
function getuserinfo() {
	
	if (document.getElementById("message").value.length < 10) {
		alert("评论内容不能小于十个字！");
		document.getElementById("message").focus();
		return false;
	}

	var queryString = "action=getuserinfo";
	var url = "/xml/login.php?timeStamp=" + new Date().getTime();

	createXMLHttpRequest();
	xmlHttp.open("POST", url, true);
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send(queryString);

	function handleStateChange() {
		if(xmlHttp.readyState == 4) {
			if(xmlHttp.status == 200) {
				var xmlText = xmlHttp.responseText;
				var userinfo = eval('(' + xmlText + ')');
				if (userinfo.uid > 0) {
					if(document.getElementById("message").value.length < 10) {
						alert("评论内容不能小于十个字！");
						document.getElementById("message").focus();
					} else if (userinfo.posts < 1 && document.getElementById("seccodeverify").value.length != 4) {	//用户发贴小于1
						hiddenlogindiv("logindiv");
						showseccodeverify();
						document.getElementById("seccodeverify").focus();
						document.getElementById("seccodeverify").select();
					} else {
						document.getElementById("commentForm").submit();
					}
				} else {
					showlogindiv(document.getElementById("FeedbackBtn"), "logindiv");
				}
			}
		}
	}
}

function showseccodeverify() {
	document.getElementById("seccodeverifydiv").innerHTML = "验证码：<input type=\"text\" onFocus=\"updateseccode();this.onfocus = null\" id=\"seccodeverify\" name=\"seccodeverify\" size=\"8\" maxlength=\"4\" tabindex=\"0\" /><span id=\"seccodeimage\"></span><strong>点击输入框显示验证码</strong> 如果看不清验证码，请点图片刷新";
}
//取得对象位置
function getposition(obj) {
	var r = new Array();
	r['x'] = obj.offsetLeft;
	r['y'] = obj.offsetTop;
	while(obj = obj.offsetParent) {
		r['x'] += obj.offsetLeft;
		r['y'] += obj.offsetTop;
	}
	return r;
}
//显示登录层
function showlogindiv(controlobj, tageid) {
	var p = getposition(controlobj);
	document.getElementById(tageid).style.display = 'block';
	document.getElementById(tageid).style.left = (controlobj.offsetWidth + p['x'])+'px';
	document.getElementById(tageid).style.top = (p['y'] - document.getElementById(tageid).offsetHeight + controlobj.offsetHeight)+'px';
}
//隐藏登录层
function hiddenlogindiv(tageid) {
	document.getElementById(tageid).style.display = 'none';
}