/**
 * 实体对象id
 */
var id = $('itemid').value;
var contextPath = $('contextPath').value;
var ajaxListener = null;
var emTable = $('em_table');
var emTableShow = false; 

//初始化表情相关
addEventListener_($('insert_em'), 'click', showEmTable);
addEventListener_(window, 'load', initEm);
addEventListener_($('comment_content'), 'focus', function() { showEmTable(false); });
//初始化验证码相关
addEventListener_(window, 'load', changePic);
addEventListener_($('change_vc'), 'click', changePic);
//初始化评论相关
addEventListener_($('go_page'), 'click', goPage);
addEventListener_($('post_comment'), 'click', function() { postComment(contextPath + '/st/DoComment', id, $('comment_content').value, $('tm').value, $('code').value); });
//获取评论列表
addEventListener_(window, 'load', function() { loadComments($('contextPath').value + '/st/PComment?page=', $('itemid').value);});	    


function changePic(){
	var tm = new Date().valueOf();
	$('tm').value = tm;
	document.getElementById('signVerifyImg').src = contextPath + '/st/VerifyCode?d='+tm+'&t='+Math.random();
	return false;
}

function loadComments(prefix, idStr, page){
	var commentsUrl = prefix;
	if(arguments.length>2) {
		commentsUrl += arguments[2];
	}
	var pbd = 'id=' + id;
	//alert(commentsUrl);
	//alert(pbd);
	new Ajax.Updater(
		{success:'comments'}, 
		commentsUrl, 
		{
			method:'post', 
			postBody:pbd, 
			evalScripts:true
		}
	);
}

function isCommentValid() {
	var content = $('comment_content').value;
	content = content.trim();
	if(content.length==0) {
		inf('评论不能为空，请修改后提交');
		return false;
	}
	if(content.length>200) {
		inf('评论最多200字，现在为' + content.length + '字，请修改后提交');
		return false;
	}
	var code = $('code').value;
	if(code==null || code=='' || code.length!=4) {
		inf('验证码为空或位数不正确，请修改后提交');
		return false;		
	}
	return true;
}

function postComment(prefix, idStr, content, tm, code, type) {
	if(!isLogin()) {
		inf('你尚未登录，请登录后发表评论');
		return false;
	}
	if(!isCommentValid()) {
		return false;
	}
	var postCommentUrl = prefix;
	var pbd = 'id=' + id;
	pbd += '&content=' + content + '&tm=' + tm + '&code=' + code;
	if(type!=null) {
		pbd += '&type=' + type;
	}
//	alert(postCommentUrl);
	new Ajax.Updater(
		{success:'ret_inf'}, 
		postCommentUrl, 
		{
			method:'post', 
			postBody:pbd, 
			evalScripts:true,
			onSuccess:function() {
				ajaxListener = setInterval(checkResponse, 100);
			}
		}
	);
	return false;
}

function checkResponse() {
	if(DEBUG_ENABLE && confirm('clear ajaxListener?')) {
		clearInterval(ajaxListener);
	}
	var respNode = $('ret_inf').childNodes[0];
	if(respNode==null) {
		return false;
	}
	var resp = respNode.nodeValue;
	//console.log(resp);
	if(resp!=null && resp!='') {
		clearInterval(ajaxListener);
		if(resp.length>0) {
			var retStat = parseInt(resp.substring(0,1));
			if(retStat==1) {
				inf('评论添加成功');
				//updateDiv('comment', false);
				loadComments(contextPath + '/st/PComment?page=', id);
				$('comment_content').value = '';
				$('code').value = '';
				changePic();
				return true;
			} else {
				//目前返回状态用英文缩写表示，日后可以构造全局状态码
				//并将根据返回状态码给出提示的操作进一步封装为全局函数
				var retInf = resp.substring(2);
				retInf = retInf.trim();
				if(retInf=='err_vc') {
					inf('验证码错误，请重新输入验证码');
				} else if(retInf=='sys_err') {
					inf('系统错误，请稍后重试');
				} else {
					//目前先不提示~~
				}
			}
		}
		return false;
	}
}

function goPage() {
	var inputVal = $('cmt_pg_ipt').value;
	inputVal = inputVal.trim();

	if(inputVal==null || inputVal=='' || isNaN(inputVal)) {//空或非数字，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	var pageCount = $('pl_cmt_total').value;
	inputVal = parseInt(inputVal);
	if(inputVal<1 || inputVal>pageCount) {//不是合法页码范围，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	if(inputVal==$('pl_cmt_current').value) {//是当前页，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	//alert(inputVal);
	//alert(id);
	//alert(arguments[0]);
	if(arguments.length==0) {
		loadComments(contextPath + '/st/PComment?page=', id, inputVal);		
	} else if (arguments.length>1) {
		window.location.href = arguments[0] + $('cmt_pg_ipt').value + arguments[1];
	}
}

/**
 * 显示或隐藏表情图标列表
 * 不传参数时，根据当前状态判断：若当前显示，则隐藏；反之亦然
 * @param {Object} show	强制显示（true）或隐藏（false）
 */
function showEmTable(show) {
//	alert(emTable.className);
//	alert(emTableShow);
	resetEmTablePos();
	if(!isLogin() || emTableShow || arguments.length>0 && arguments[0]==false) {
		emTableShow = false;
		removeClass(emTable, 'disp_block');
		addClass(emTable, 'disp_none');
		//inf('你尚未登录，请登录后发表评论');
	} else if(!emTableShow || arguments.length>0 && arguments[0]==true) {
		emTableShow = true;
		removeClass(emTable, 'disp_none');
		addClass(emTable, 'disp_block');
	}
	return false;
}

function resetEmTablePos() {
	if(emTable==null) {
		return;
	}
	emTable.style.top = (parseInt(getTop($('insert_em').parentNode.parentNode)) + 30) + 'px';
	emTable.style.left = (parseInt(getLeft($('insert_em').parentNode.parentNode)) + 9) + 'px';	
}

function initEm() {
	if(emTable==null) {
		return;
	}
//	resetEmTablePos();
	showEmTable(false);
	emTable.cellSpacing = '0';
	emTable.cellPadding = '0';
	var ems = emTable.getElementsByTagName('img');
	for(var i=0; i<ems.length; i++) {
		addClass(ems[i], 'em_unselected');
		addClass(ems[i], 'hand');
		addEventListener_(ems[i], 'mouseover', function(e) {
			var evtTarget = getEvtTarget(e);
			removeClass(evtTarget, 'em_unselected');
			addClass(evtTarget, 'em_selected');
		});
		addEventListener_(ems[i], 'mouseout', function(e) {
			var evtTarget = getEvtTarget(e);
			removeClass(evtTarget, 'em_selected');
			addClass(evtTarget, 'em_unselected');
		});
		addEventListener_(ems[i], 'click', function(e) {
			showEmTable();
			var evtTarget = getEvtTarget(e);
			var cc = $('comment_content');
			var srcUrl = evtTarget.src;
			var startPos = srcUrl.lastIndexOf('/')+1;
			var endPos = srcUrl.lastIndexOf('.');
			var filename = srcUrl.substring(startPos, endPos);
			cc.value += '[' + filename + ']';
			cc.focus();
			return false;
		});
	}
}


