// 评论V4 XML数据EMBEDDED应用接口

// 声明所需变量
var Count = new Object();
Count.c_total 	= 0;
Count.c_show 	= 0;
Count.c_strip 	= 0;
Count.c_nice 	= 0;
Count.c_count	= 0;
Count.c_pages 	= 0;
var Rating 		= new Object();
var CmsgList 	= new Array();
var TopList 	= new Array();
var NiceList 	= new Array();
var PageSize 	= MSGS_PERPAGE;
var ActualPage	= 1;
var PostJump	= "";
var PostForm	= null;

// 缺页自动重建
function cmnt_rebuild() {
	if ( typeof(News) != "undefined" ) {
		return; // html/htt/cmsg.js
	}
	// not found callback
	if ( typeof(cmnt_notfound) != "undefined" ) {
		cmnt_notfound(); // must defined by outside html page
	}

	var host = V4_HOST;
	if ( typeof(cmnt_host)!="undefined" && cmnt_host!="" ) {
		host = cmnt_host;
	}
	var rebuild_request = host + XML_CGI + TYPE_CMSG_JS +
						  "&channel=" + uri_encode(cmnt_channel) +
						  "&newsid=" + uri_encode(cmnt_newsid) +
						  "&group=" + cmnt_group + "&page=1";
	var rebuild_page = function() {
		load_js( rebuild_request );
	};
	window.setTimeout( rebuild_page, 6000 ); 	
}
// 读取数据
function cmnt_reload( channel, newsid, group ) {
	if ( channel=="" || newsid=="" ) return;
	// adjust page number
	if ( typeof(cmnt_pagesize)!="undefined" && 
		 (cmnt_pagesize==5 || cmnt_pagesize==10 || cmnt_pagesize==20) ) {
		PageSize = cmnt_pagesize;
	}
	if ( typeof(cmnt_page) != "undefined" ) {
		ActualPage = Math.ceil( cmnt_page/(MSGS_PERPAGE/PageSize) );
	}
	// select host
	var host = "";
	if ( typeof(cmnt_host)!="undefined" && cmnt_host!="" ) {
		host = cmnt_host;
	}
	var cmnt_embed_url = cmsglist_embed( channel, newsid, group, ActualPage, host );
	load_js( cmnt_embed_url, cmnt_rebuild );
}
// data loaded callback
function cmnt_callback() {
	// 定义了cmsg_page参数或者cmnt_print()函数时才使用回调模式
	if ( typeof(cmnt_page)=="undefined" && typeof(cmnt_print)=="undefined" ) {
		return;
	}
	// adjust pages
	Count.c_pages = Math.floor( (Count.c_strip+PageSize-1)/PageSize );
	// adjust cmsg array by page number
	if ( typeof(cmnt_page) != "undefined" ) {
		var need_skip = 0;
		var offset = (PageSize*(cmnt_page-1)) % MSGS_PERPAGE;
		var residue = Count.c_strip % MSGS_PERPAGE;
		if ( ActualPage>1 && residue>0 ) need_skip = MSGS_PERPAGE - residue;
		if ( cmnt_page > 1 ) need_skip += offset;
		if ( need_skip>0 && CmsgList.length>need_skip ) {
			CmsgList.reverse();
			CmsgList.length -= need_skip;
			CmsgList.reverse();
		}
		if ( cmnt_page>1 && CmsgList.length>PageSize )
			CmsgList.length = PageSize;
	}
	// invoke callback renderer
	if ( typeof(cmnt_print) != "undefined" ) {
		cmnt_print(); // must defined by outside html page
	}
}
// 显示投票选项列表函数，供显示留言提交FORM用
function show_vote( vote_list ) {
	if ( vote_list==undefined || vote_list==null ) return;
	for ( vote in vote_list )
		document.writeln( "<input type=radio name=vote value="+vote_list[vote]+">"+vote+"&nbsp;" );
}
// 显示页码列表范例
function cmnt_pages() {
	// show pages
	var formated_pages = "当前页码" + cmnt_page;
	if ( Count.c_pages <= 1 ) return; // less than one page
	if ( cmnt_page > 1 ) 
		formated_pages += ( "&nbsp;<a href=# onclick='javascript:cmnt_show(" + parseInt(cmnt_page-1) + ");return false;'>上一页</a>" );
	if ( cmnt_page < Count.c_pages ) 
		formated_pages += ( "&nbsp;<a href=# onclick='javascript:cmnt_show(" + parseInt(cmnt_page+1) + ");return false;'>下一页</a>" );
	return formated_pages;
}
// 翻页函数
function cmnt_show( page ) {
	if ( page < 1 ) page = 1;
	if ( page > Count.c_pages ) page = Count.c_pages;
	// reload js interface
	cmnt_page = page;
	cmnt_reload( cmnt_channel, cmnt_newsid, cmnt_group );
}

// 读取统一注册cookie用户id
function cmnt_ssouid() {
	if ( typeof(sinaSSOManager) == "object" ) {
		var cookiearr = sinaSSOManager.getSinaCookie();
		if ( cookiearr && parse_str(cookiearr.user) != "" ) {
			return cookiearr.user;
		}
	}
	return "";
}

function cmnt_ssonickname() {
	if ( typeof(sinaSSOManager) == "object" ) {
		var cookiearr = sinaSSOManager.getSinaCookie();
		if ( cookiearr && parse_str(cookiearr.nick) != "" )
			return cookiearr.nick;
	}
	return "";
}

// 检查统一注册cookie
function cmnt_checksso() {
	var nickname = cmnt_ssonickname();
	if ( nickname!="" && typeof(cmnt_showsso)=="function" ) {
		cmnt_showsso( nickname );
		return true;
	}
	return false;
}

// 发帖后跳转
function cmnt_postjump() {
	if ( PostJump == "_blank" ) {
		_o( view_url(cmnt_channel,cmnt_newsid,cmnt_group) );
	} else if ( PostJump == "_self" ) {
		_j( view_url(cmnt_channel,cmnt_newsid,cmnt_group) );
	} else {
		cmnt_postsucc( PostForm );
	}
}

var showCommStatus = {
    clear : true, //是否清空(可选true|false)
    showTimeLimit : 1, //显示时间(秒)
    _divObj : null,
    _timeObj : null,
    absPosition :  function(obj,parentObj,noScroll){
    	var left = obj.offsetLeft;
    	var top = obj.offsetTop - (noScroll?obj.offsetParent.scrollTop:0);
    	var tempObj = obj;
    	var sss = "";
    	try{
    		while(tempObj!=document.body && tempObj!=document.documentElement && tempObj != parentObj && tempObj!= null){
    			sss += tempObj.tagName + " , ";
    			tempObj = tempObj.offsetParent;
    			left += tempObj.offsetLeft;
    			top += tempObj.offsetTop - (noScroll?tempObj.offsetParent.scrollTop:0);
    		};
    	}catch(e){};
    	return {left:left,top:top};
    },
    show : function(element,text,fontsize){ //element：表单对象 ，text：提示文字（可选）
    	if(!text) {
		text = "感谢您发表评论，您发表的评论将在管理员审核后发布";
	}
	if (!fontsize) {
		fontsize="16px/19px";
	}
    	var thisTemp = this;
    	try{
    		
    		var pos = this.absPosition(element,document.body);
    		if(this._divObj == null){
    			this._divObj = document.createElement("div");
    			this._divObj.style.position = "absolute";
    			this._divObj.style.font = fontsize+' 微软雅黑,黑体';
    			this._divObj.style.color = '#999';
    			document.body.appendChild(this._divObj);
    		};
    		this._divObj.innerHTML = text;
    		this._divObj.style.display = 'block';
    		this._divObj.style.top = Math.ceil(pos.top + (element.offsetHeight - this._divObj.offsetHeight)*0.45) + 'px';
    		this._divObj.style.left = Math.ceil(pos.left + (element.offsetWidth - this._divObj.offsetWidth)*0.5) + 'px';
    		
    		if(this.clear){
    			element.value = '';
    		};
    		
    		clearTimeout(this._timeObj);
    		if(this.showTimeLimit){
    			this._timeObj = setTimeout(function(){thisTemp.hide()},this.showTimeLimit * 1000);
    		};
    	}catch(e){};
    },
    hide : function(){
    	try{
    		this._divObj.style.display = "none";
    	}catch(e){}
    }
};

//发表评论后的提示函数
function cmnt_postsucc( post_form ) {
	if ( post_form != null ) {
		showCommStatus.show( post_form.content );
	}
}

// 新闻页发表评论函数
function cmnt_submit( form ) {
	// 检查参数
	var Cmsg = new Object();
	Cmsg.m_channel 	= parse_str( form.channel.value );
	Cmsg.m_newsid 	= parse_str( form.newsid.value );
	Cmsg.m_content 	= parse_str( form.content.value );
	Cmsg.m_user 	= parse_str( form.user.value );
	Cmsg.m_pass 	= parse_str( form.pass.value );
	if ( typeof(form.vote) == "object" ) {
		Cmsg.m_vote = parse_int( form.vote.value );
	}
	if ( typeof(form.charset) == "object" ) {
		Cmsg.charset = parse_str( form.charset.value );
	}
	Cmsg.format		= "js";
	PostForm		= form;
	PostJump		= form.jump.value;
	
	if ( Cmsg.m_channel=="" || Cmsg.m_newsid=="" ) {
		alert( "评论参数错误" );
		return;
	}
	if ( Cmsg.m_content == "" ) {
		alert( "请填写您的评论内容" );
		return;
	}

	var user_id = cmnt_ssouid();
	if ( user_id=="" ) {
		if ( (typeof(PostForm.anonymous) == "object"  
            && (PostForm.anonymous.value||PostForm.anonymous.checked)) 
			|| !isneedlogin(Cmsg.m_channel ) ) {
			cmnt_post( Cmsg );
			PostForm.content.value = "";
		}
		else {
			if ( Cmsg.m_user=="" || Cmsg.m_user=="会员名/手机/UC号"|| Cmsg.m_pass=="" ) {
				alert( "需要在登录后发表评论，请填写您的用户名和密码" );
				return;
			}
			if ( typeof(sinaSSOManager) == "object" && typeof(sinaSSOManager.login) == "function" ) {
				var savestate=30;
				if ( typeof(PostForm.savestate) == "object"  && PostForm.savestate.checked ) {
					savestate = "30";
				}
				sinaSSOManager.login(
					function (result) {
						if (result["retcode"]==0 || result["retcode"]=="0" ) {
							Cmsg.m_user = cmnt_ssonickname();
							cmnt_post( Cmsg );
							PostForm.content.value = "";
						}
						else {
							PostForm.user.focus();
							PostForm.user.select();
							alert("您输入的用户名不存在或密码错误，请重新输入");
						}
					},
					Cmsg.m_user, Cmsg.m_pass, savestate );
			}
		}
	}
	else
	{
		if ( typeof(sinaSSOManager) == "object" && typeof(sinaSSOManager.autoLogin) == "function" ) {
			//提交评论前检查并更新ilogin cookie
			sinaSSOManager.autoLogin(function(cookiearr) {
				if ( cmnt_checksso()==true )  {
					Cmsg.m_user = cmnt_ssonickname();
					cmnt_post( Cmsg );
					Cmsg.postform.content.value = "";
				}
			});
		}			
	}
	
}

// 默认初始第cmnt_page页数据
if ( typeof(_CMNT_EMBED_DISABLE_)=="undefined" || _CMNT_EMBED_DISABLE_==false ) { // DEBUG
	cmnt_reload( cmnt_channel, cmnt_newsid, cmnt_group );
	if ( typeof(sinaSSOManager) == "object" &&  typeof(sinaSSOManager.config) == "object" ) {
		sinaSSOManager.config.service = "comment";
	}
}

