/******************************
 forum manage   xpow 2009.9
*******************************/

var treeImgAct = new XPOWS.shellTree(),treeData = new XPOWS.shellTree(),treeList = new XPOWS.shellTree();
var tableList = new XPOWS.shellTable(),lockDlg = new xpow.point.dlg(),xpowEmBbs={}
var vote = new xpow.point.Vote()


var reHts,reMhts,reIhts,reEdt,tt,x_Edit,sn
var xtm,nologin = false;
var SUB_CMT_REEDITOR = 'subreform_'
var SUB_CMT_CONTENT = 'subcomments_'
var NEED_LOGIN = '请您 <a class="linkchnb" href="http://passport.chndesign.com">登陆</a> / <a class="linkchnb" href="http://passport.chndesign.com/register">注册</a> 为个人用户后继续当前的操作！<p></p>'
var COMMENT_ISLOCK = '当前主题已被作者或管理员锁定,不能进行评论和当前操作！'
var COMMENT_SUCC = '评论成功！'
var CASE_PREFIX = '确实要'
var CASE_STOP_COMMENT = '禁止该用户发言吗?'
var CASE_RESUME_COMMENT = '恢复该用户发言吗?'
var CASE_DELETE_COMMENT = '删除该评论吗?'
var CASE_DELETE_TOPIC = '删除该主题吗?'
var ERR_CONTENT_ISEMPTY = '内容不能为空！'
var ERR_INMAIN_CLASS = '不能转移到主分类下！'
var ERR_MOVE_CLASS = '请选择要转移的论坛！'
var ERR_ISUSER_TYPE = '对不起,企业会员不能在论坛发表！'
var ERR_ISUSER_FAVO = '对不起,企业会员不能行此操作！'
var ERR_ISUSER_TALK = '你已经被管理员禁止发表言论，如有疑问请联系管理员！'
var ERR_HIDDEN = 'err.hidden'
var ERR_NOLOGIN = 'err.login'
var ERR_POWER = 'err.power'
var ERR_IDT = 'err.idt'
var ERR_TALK = 'err.talk'


Forum={
	init : function(){
		xpow.point.init()
		this.view.init()
		linkImg()
		var self = this
		$j('.addfavo').click(function(){doFavo()})
		$j('.handleimgop').click(function(){doImg2Index(this.id)})
		if (cfumparam.commenttotal>2){$j('.popnum,.replybtn').removeClass('disnone')}
		$j(document).ready(function(){self.regAvd() })
	},
	regAvd :function(){
		$('gavds').innerHTML = $('hidegavds').innerHTML
		$('hidegavds').innerHTML=''
		$('gavds2').innerHTML = $('hidegavds2').innerHTML
		$('hidegavds2').innerHTML=''
	},
	view : {
		param:{},
		init : function(){
			this.comment.init()
			this.regBtns()
		},
		add : function(){
			if (!verifyUser('login') ){return}
			var terr = false,tmsg
			switch (cfumparam.ISADD){
			case 0:
				terr = false;
				break;
			case ERR_HIDDEN:
				terr = true
				tmsg = '此版块已关闭新主题发布！'
				break;
			case ERR_NOLOGIN:
				terr = true
				return xpow.point.Message.login()
				break;
			case ERR_IDT :
			case ERR_POWER:
				terr = true
				tmsg = '此版块只有管理员才能发表新主题！'
				break;
			case ERR_TALK:
				terr = true
				tmsg = '您已经被管理员禁止发表言论，如有疑问请联系管理员！'
				break;
			}
			(terr)?alert(tmsg):function(){JSNinit('vsi');xpow.JSN.Send('addnew&dataId='+cfumparam.classid)}()
		},
		edit : function(){
			if (!verifyUser('login') ||!verifyUser('edit') ){return}
			JSNinit('vsi')
			xpow.JSN.Send('edit&dataId='+cfumparam.classid+'&eid='+cfumparam.tid)
		},
		regBtns : function(){
			var param={}
			if (cfumparam.cmtpage>1){
				$j('.clonepage').html($j('.Pages').html()).addClass('Pages')
				$j('.addbtn').addClass('disnone')
			}
			$j('.add').click(function(){Forum.view.add()})	
			$j('a.more,a.mores').mouseover(function(){clearTimeout(param.timer);  $j(this).parent().find('.sublist').removeClass('disnone').css({left:$j(this).offset().left+'px',top:$j(this).offset().top+'px'})})
			$j('a.more').mouseout(function(){ param.timer=setTimeout(function(){$j('.sublist').addClass('disnone')},300) })
			$j('.sublist').mouseout(function(){ param.timer=setTimeout(function(){$j('.sublist').addClass('disnone')},300) })
			$j('.sublist').mouseover(function(){ clearTimeout(param.timer) })
			$j('.cmsearch').click(function(){ redirect('/searchs/'+encodeURI(trim($j('.querykey').attr('value')))) })
			$j('.gavbar .bbs').click(function(){location.href='/'})
			$j('.addfriend').click(function(){doAddfriend($g(this,'for'))})
			$j('.sendmessage').click(function(){xpow.point.Message.Send.init($g(this,'for').evalJSON())})
		},
		manage : function(){
			this.param.dlg=this.param.dlg?this.param.dlg:xpow.Use('dlg')
			this.param['mangeitem'] = $('mangeitem').innerHTML!=''?$('mangeitem').innerHTML:this.param['mangeitem']
			$('mangeitem').innerHTML = '';var self = this
			Forum.util.popItem(this.param.dlg,{id:'Forum.view.param.dlg',html:this.param['mangeitem'],width:700,onComplete:function(){self.setManageDefault()},button:[{description:'确 定',action:function(){self.saveManage()}}]})
		},
		saveManage : function(){
			var tary = $t('forum-manage','input'),re=''
			for(var i in tary){
				if(tary[i].type=='checkbox'){
					if (tary[i].checked){
						switch(tary[i].id){
						case 'isaddscore' :
							if (cfumparam.USERID==cfumparam.userid){return alert('管理员不能给自己加分！')}
							var sc = inSpace($('score').value)
							if (sc == '' || isInt(sc)){alert('给主题加分的分值不能空，请输入正整数！');$('score').focus(); return}
							if (sc>cfumparam.bbscore){return alert('没有足够的分值！')}
							re += 'score='+sc+xpow.JSN.aSyb;
							break;
						case 'isgood' :
							if (trim($('dkey').value)==''){return alert('标签不能为空！')}
							//if(!isKeyword()){return xpow.point.Error.Out(0,'','')}
							re += 'qkey='+trim($('dkey').value)+xpow.JSN.aSyb;
							break;
						}
					}
					re += tary[i].id+'='+(tary[i].checked?1:0)+xpow.JSN.aSyb;
				}
			}
			
			if ($('istop').checked)re += 'istop=1'+xpow.JSN.aSyb;
			if ($('isfixed').checked)re += 'isfixed=1'+xpow.JSN.aSyb;
			if ($('istopfixed').checked)re += 'istopfixed=0'+xpow.JSN.aSyb;
			if ($('fcls').value!='')re += 'classid='+$('fcls').value+xpow.JSN.aSyb;
			this.param.dlg.setBtns({id:'Forum.view.param.dlg',button:[
				{description:'请稍候...',title:'正在保存当前的操作',action:function(){return false}}														 
			]})
			JSNinit('vsi')
			xpow.JSN.SendX('tomanager&dataId='+cfumparam.tid+'&uid='+cfumparam.USERID,re)
		},
		setManageDefault : function(){
			if (cfumparam.viewrank==1){$('_view_login').checked = true}
			if (cfumparam.ISGOOD==1){$('isgood').checked = true}
			if (cfumparam.USERSTATU==1&& (cfumparam.USERID==cfumparam.userid)){$('istalk').checked = true}
			if (cfumparam.ISFIXED==1){$('isfixed').checked = true}
			if (cfumparam.ISTOP==1){$('istop').checked = true}
		},
		del:function(t){
			if (!t){
				xpow.point.setPop({mWidth:400,button:[{description:'确 定',action:function(){Forum.view.del(1)}}]})
				xpow.point.doPop('<div><div>请输入删除的原因：</div><textarea id="_del_reason" rows="5"></textarea></div>',5.2)
			}else{
				var re = trim($('_del_reason').value)
				if (re==''){return alert('请输入删除的原因！')}
				JSNinit('vsi')
				xpow.JSN.SendX('delete&t=t&tid='+cfumparam.tid+'&cid='+cfumparam.classid+'&page='+$('page').value+'&uid='+cfumparam.userid+'&date='+cfumparam.tim,'reason='+re)
			}
		},
		comment : {
			param :{},
			init : function(){
				this.regBtns()
			},
			show : function(){
				if (!verifyUser('login') || !verifyUser('add')){return}
				this.param.dlg = this.param.dlg?this.param.dlg:xpow.Use('dlg')
				this.param.dlginner = this.param.dlginner?this.param.dlginner:''
				var self = this
				Forum.util.popItem(this.param.dlg,{id:'Forum.view.comment.param.dlg',ismask:1,width:850,onComplete:function(){xpow.editor.getEditor('',300,800,{unFullScreen:function(){ },onFullScreen:function(){ }, onComplete:function(){ if (getData('act')=='ed') {JSNinit('vsi'); xpow.JSN.Send('loadrepliy&dataId='+$('cmtparam_'+(getData('sn'))).value.evalJSON().id) } }})},onClose:function(){return self.cancel()},button:[{description:'确 定',action:function(){self.add()}},{description:'取 消',action: function(){self.cancel()}}],html:'<div class="editor"><textarea id="_editor_concc" name="_editor_concc" style="width:500px;height:200px;visibility:hidden;"></textarea></div>'})
				this.param.dlginner =''
			},
			add : function(){
				JSNinit('vsi')
				var param={},erromsg='',founErr=false,tmpremark
				param.act = getData('act')?'ed':'ad';
				param.id = getData('act')?getData('id') + xpow.JSN.aSyb + 'iid=' + cfumparam.tid + xpow.JSN.aSyb:cfumparam.tid;
				param.remark = trim(KE.getData())
				var reAry = cfumparam.filter.split(',');
				for (var ix = 0 ; ix < reAry.length ; ix ++){param.remark = DecodeFilter(param.remark,reAry[ix])}
				if (param.remark!='') tmpremark = param.remark.toHtmlTrim()
				if (tmpremark == ''){founErr = true;erromsg += ERR_CONTENT_ISEMPTY}
				if (founErr){ return alert(erromsg)}
				param.topic = cfumparam.topic
				param.classid = cfumparam.classid
				param.islock = 0
				param.page = $('page').value
				param.pagecount = $('pagecount').value
				xpow.JSN.SendX('addcomment',JSON2Post(param));
			},
			edit : function(sn){
				if (!verifyUser('login') || !verifyUser('add')){return}
				setData('sn',sn)
				setData('act','ed')
				setData('id',$('r_id_'+sn).value)
				this.param.dlginner=this.getRemark(sn)
				this.show()
			},
			del : function(id,t){
				if (!verifyUser('login') || !verifyUser('add')){return}
				JSNinit('vsi');
				t = t?'s':'m'
				setData('act','del')
				if (confirm(CASE_PREFIX+CASE_DELETE_COMMENT)){xpow.JSN.Send('delete&dataId='+id+'&t='+t+'&tid='+cfumparam.tid+'&page=' + $('page').value+'&uid='+$('d_'+id).value)}
			},
			cancel : function(){
				if (!confirm('确定要取消发表吗?'))	return 'unclose'
				this.param.dlg.Clear()
				KE.isExecute['complete']=false
				setData('act','')
			},
			getRemark : function(sn){
				var tObj=$('remark_'+sn)
				if (cfumparam.isOps){
					if (!$('d_id_'+(getData('sn')))){return}
					JSNinit('vsi')
					xpow.JSN.Send('loadrepliy&dataId='+$('d_id_'+(getData('sn'))).value)
				}else{
					return tObj.innerHTML
				}
			},
			resucc : function(){
				if (getData('act')=='del'){
					alert('操作成功！')
				}else{
					alert('评论成功！')
				}
				window.location.reload()
			},
			Sub : {
				show : function(){
					if (!verifyUser('login') || !verifyUser('add')){return}
					xpow.osEvent.catchSrc()
					Forum.util.slidItem('#subcomments_'+$g(xpow.osEvent.cSrcElmt,'for'))
				},
				add : function(){
					JSNinit('vsi')
					xpow.osEvent.catchSrc()
					var param={},erromsg='',founErr=false,tmpremark
					param.act = getData('act')?'ed':'ad';
					param.id = getData('act')?getData('id') + xpow.JSN.aSyb + 'iid=' + cfumparam.tid + xpow.JSN.aSyb:cfumparam.tid;
					param.remark = trim($(SUB_CMT_REEDITOR+$g(xpow.osEvent.cSrcElmt,'for')).value)
					if (param.remark!='') tmpremark = param.remark.toHtmlTrim()
					if (tmpremark == ''){founErr = true;erromsg += ERR_CONTENT_ISEMPTY}
					if (founErr){ return alert(erromsg)}
					param.topic = cfumparam.topic
					param.classid = cfumparam.classid
					param.islock = 0
					param.page = $('page').value
					param.Class = cfumparam.Class
					param.pagecount = $('pagecount').value
					param.iid = $('d_id_'+$g(xpow.osEvent.cSrcElmt,'for')).value
					xpow.JSN.SendX('ascomment',JSON2Post(param));
				},
				edit : function(id,uid,sn){
					if (!verifyUser('login') || !verifyUser('add')){return}
					setData('id',id)
					setData('uid',uid)
					setData('act','ed')
					setData('sn',sn)
					var content = $(SUB_CMT_CONTENT+sn);
					var reform = $(SUB_CMT_REEDITOR+sn);
					if(content.style.display == 'none')$j(content).slideDown();
					reform.value = trim($('subs_remark_'+id).innerHTML.deHTML())
					$('re_sub_focus_'+sn).focus()
				},
				resucc : function(){
					var sn = getData('sn')
					var reform = $(SUB_CMT_REEDITOR+sn);
					Forum.util.slidItem('#'+SUB_CMT_CONTENT+sn)
					$('subs_remark_'+getData('id')).innerHTML=$(SUB_CMT_REEDITOR+sn).value.toHTML()
					setData('id',null)
					setData('uid',null)
					setData('act',null)
					setData('sn',null)
				},
				cancel : function(){
					xpow.osEvent.catchSrc()
					var sn = $g(xpow.osEvent.cSrcElmt,'for')
					Forum.util.slidItem('#subcomments_'+sn)
					$j('#'+SUB_CMT_REEDITOR+sn).attr('value','')
				}
			},
			regBtns : function(){
				var param={},self=this
				param.resubbtn=$j('.comment-tmplate .resubbtn')
				param.resubcancel=$j('.comment-tmplate .sub-cancel')
				param.resubsubmit=$j('.comment-tmplate .sub-submit')
				param.replybtn=$j('.commentlist .replybtn')
				param.resubbtn.click(function(){ self.Sub.show() })
				param.resubcancel.click(function(){ self.Sub.cancel() })
				param.resubsubmit.click(function(){ self.Sub.add() })
				param.replybtn.click(function(){ self.show() })
			}
		}
	},
	util : {
		slidItem : function(elemt,callback){
			elemt = $j(elemt)
			if (elemt[0].style.display == 'none'){
				elemt.slideDown('slow',callback)
			}else{
				elemt.slideUp('slow',callback)
			}
		},
		popItem : function(obj,param){
			if (obj.ISEXPORT){obj.Clear()}
			obj.doInit(param.id);
			obj.isMask = param.ismask;
			obj.onComplete = param.onComplete
			obj.onClose = param.onClose
			obj.button = param.button
			obj.mWidth = param.width
			obj.mHeight = 100
			obj.Export(param.html);
		}
	}
}

function getData(key){return treeData.getItem(key)}
function setData(key,val){treeData.addItem(key,val)}
function isLogin() { return cfumparam.ISLOGIN }
function handleSucc(t){
	var tAc = ''
	switch(t.toLowerCase()){
	case 'move':tAc = 'goForum(cfumparam.clsID,cfumparam.clsCss)';break;
	default:tAc = '';
	}
	alert('操作成功!');xpow.point.popClear();if (tAc!=''){eval(tAc)}else{location.reload()}
}

function goForum(cid){xpow.point.Path.Redirect('/list/'+cid+'/1.html')}
function doTardeScore(){
	if(cfumparam.integral <cfumparam.tradesc){return xpow.point.Message.integral()};
	JSNinit('vsi',1)
	xpow.JSN.Send('tradesc&dataId='+cfumparam.tid+'&trade='+cfumparam.tradescore+','+cfumparam.userid+','+encodeURI(top.location)+','+encodeURI(cfumparam.topic)+','+encodeURI(cfumparam.username))
}

function linkImg(t){
	xpow.point.IMG.setOps(1)
	xpow.point.IMG.ReLink('remarkimgs',774,200,775)
	xpow.point.IMG.ReLink('commentimgs',505,200,505)
	if (t){$('_sendCmts_').focus()}
}


function verifyUser(t){
	switch(t){
	case 'repliy':
	case 'add':
	case 'edit':
		if (cfumparam.ISLOCKED){alert(COMMENT_ISLOCK);return false}
		if (cfumparam.USERSTATU==1){alert(ERR_ISUSER_TALK);return false};break;
	case 'login':
		if (!isLogin() || nologin == 'false'){return xpow.point.Message.login()};break;
	case 'favo':
		if (cfumparam.USERTYPE){alert(ERR_ISUSER_FAVO);return false};break;
	}
	return true
}

function goNext(id)
{
	if (id>0){
		xpow.point.Path.Redirect('/view/'+id+'.html')
	}else{
		alert('已经到达最后一个主题!');return false
	}
}

function goPrv(id)
{
	if (id>0){
		xpow.point.Path.Redirect('/view/'+id+'.html')
	}else{
		alert('已经到达第一主题!');return false
	}
}

function getCmtSubContent(){
	KE.setData($('forum.comment.load').innerHTML)
	$('vsi').innerHTML = ''
}

function doFavo()
{ 
	if (!verifyUser('favo')){return}
	xpowFavo = xpow.point.Favo
	xpowFavo.topic = cfumparam.topic
	xpowFavo.url = top.location
	xpowFavo.islogin = cfumparam.ISLOGIN
	xpowFavo.utp = cfumparam.USERTYPE
	xpowFavo.aChannel = Parmas.PS
	xpowFavo.addItem()
}


function doInit()
{
	if (cfumparam.ISINIT){return}
	_xpExt_.Page.isfinished(function(){xpow.emObj.Header.init(); linkImg()})
	cfumparam.ISINIT = true
}
