/**
 * ************************************ config ************************************ 
 */

var plugin_config = {
	
	/** >>>>>>>>>>>>>>>>>>>>>> 以下配置根据各个子网站情况修改 BEGIN >>>>>>>>>>>>>>>>>>>>>> **/
	//网站地址
	website_host : 'http://cbox.cntv.cn',
	//放置本组件的目录地址
	jsca_fullpath : 'http://cbox.cntv.cn/jsca',
	//默认的用户logo地址
	default_user_logo : 'http://cbox.cntv.cn/jsca/images/remote/userphoto.jpg',	
	//webim配置
	im_server_domain : 'webim.cntv.cn',//** im domain
	
	//各网站ID标志
	//cntv 首页
	//tiyu 体育
	//xinwen 新闻
	//zongyi 综艺
	//iseeyoo 西柚
	//ibugu 布谷
	//caijing 财经
	//dianying 电影
	//dianshiju 电视剧
	//jilupian 纪录片
	//tansuo 探索
	siteid : 'cntv',

	//有新纸条 闪烁提示
	new_note_flash : true,
		
	//有新消息 闪烁提示
	new_msg_flash : true,
	
	//显示左侧导航条
	left_banner_show : false,
	
	//跨域ajax请求所使用的objectid 若页面元素id冲突，可于此调整
	swf_adapter_id : 'cross_domain_adapter',
	
	cookie_domain : ['cntv.cn', 'cctv.com'],
	
	/** <<<<<<<<<<<<<<<<<<<<<< END <<<<<<<<<<<<<<<<<<<<<< **/
	
	//以下配置开发人员酌情改动 测试用
	
	//是否使用聊天插件
	chat_plugin_enabled : false,
	
	//放置工具条的dom节点
	toolbar_div : document.getElementById('remotecontrol'),
	
	//以下配置为测试调制用
	//true 显示每次后台交互的提交信息
	ajax_request_debug : false,
	//true 显示每次后台交互的返回信息
	ajax_response_debug : false,
	//测试是否调用页面同步刷新方法
	other_module_notify : false,	
	//true 显示模板生成内容	
	template_gen_debug : false,
	//template loading debug
	template_load_debug : false,
	//每次ajax请求附带提交用户标识ID
	ajax_request_uid_append : true,
	//flash and js files putting into pages by document.write() method
	flash_n_js_write : true,
	
	//以下配置不需改动
	//接口

	api_address_clear_sso : 'http://passport.cctv.com/app_pass/verify/logincookie/delcookie.jsp',
	api_address_sso : 'http://passport.cntv.cn/app_pass/verify/interface/ssocheck.jsp',
	api_address_login : 'http://passport.cntv.cn/app_pass/verify/interface/userlogin.jsp',
	api_address_user_info : 'http://wo.cctv.com/personcenter/interface/viewinfor.jsp',
	api_address_get_pwd : 'http://passport.cctv.com/app_pass/verify/interface/sendpasswd.jsp',
	api_address_register : 'http://passport.cctv.com/app_pass/verify/interface/userreg.jsp',
	api_address_resend_mail : 'http://passport.cctv.com/app_pass/verify/interface/sendemail.jsp',
	api_address_edit_user : 'http://wo.cctv.com/personcenter/interface/modifyinfor.jsp',
	api_address_edit_pwd : 'http://passport.cctv.com/app_pass/verify/interface/modifypasswd.jsp',
	api_address_list_friend : 'http://wo.cctv.com/personcenter/interface/viewfriends.jsp',
	api_address_list_msg : 'http://wo.cctv.com/personcenter/interface/viewmessages.jsp',
	api_address_send_msg : 'http://wo.cctv.com/personcenter/interface/sendmessage.jsp',
	api_address_show_msg : 'http://wo.cctv.com/personcenter/interface/viewmessagedetail.jsp',
	api_address_del_msg : 'http://wo.cctv.com/personcenter/interface/deletemessage.jsp',
	api_address_reply_msg : 'http://wo.cctv.com/personcenter/interface/remessage.jsp',
	api_address_list_sysmsg : 'http://wo.cctv.com/personcenter/interface/viewsysmessage.jsp',
	
	//网页内链接
	api_link_active_note : 'http://passport.cctv.com/app_pass/verify/login2009/o_activation.jsp?msg=',
	api_link_logo : 'http://wo.cctv.com/podcast/',
	api_link_more_user_info_edit : 'http://wo.cctv.com/personcenter/showinfor/personalInformation.jsp',
	api_link_find_friend : 'http://wo.cctv.com/personcenter/showfriend/seekfriend.jsp',
	api_link_manage_friend : 'http://wo.cctv.com/personcenter/showfriend/myfriend.jsp',
	api_link_more_notes : 'http://wo.cctv.com/personcenter/showMessage/inboxMessage.jsp',
	api_link_more_sysmsg : 'http://wo.cctv.com/personcenter/showMessage/sysMessage.jsp',
	api_link_user_space : 'http://wo.cctv.com/podcast/',	
	api_link_help : 'http://www.cctv.com/service/contact/index.shtml',
	api_link_agreement : 'http://passport.cctv.com/app_pass/verify/login2/reg1.jsp',
	api_link_service : 'http://www.cntv.cn/special/csc/shouye/index.shtml',	
	
	//全局变量
	panel_position : {
		'info' : false,
		'frnd' : false,
		'chat' : false,
		'smsg' : false,
		'note' : false
	},
	
	user : null,
	
	friendlist_data : null,
	friendlist_func : null,
	
	marquee : false

};

/**
 * ************************************ ajax ************************************ 
 */

function pwin_ajax(uri, callback, parameters, method){

    var _method = method ? method : "POST";
    var entity = callback.toString();
    
    var params = '';
    parameters = parameters ? parameters : {};
    
    if(plugin_config['ajax_request_uid_append']){
        if(typeof(parameters['email']) == 'undefined'){
        	var user = pwin_get_login_user();
        	if(user && typeof(parameters['email']) == 'undefined'){
        		parameters['email'] = user['email'];
        	}
        }
    }
    
    parameters['sid'] = new Date().getTime();
    
    if(plugin_config['ajax_request_debug']){
    	var txt = 'ajax request URL :: ' + uri + '\n';
    	txt += 'ajax request method :: ' + _method + '\n';
    	txt += 'ajax request params :: \n';
    	for(var x in parameters){
    		txt += x + " : " + parameters[x] + '\n';
    	}
    	alert(txt);
    }
    
	for(var x in parameters){
		params += x + '=' + parameters[x] + '&'; 
	}
	params = params.substring(0, params.length - 1);

	pwin_cross_domain_request
	(
		{
	        url: uri,
	        data: params,
	        method: _method,
	        success: "pwin_ajax_result_succ:{callback:" + entity + "}",
	        error: "pwin_ajax_result_error:{callback:" + entity + "}"					        
		}
	);
	
}

function pwin_ajax_result_succ(result, parameters) {

	if(plugin_config['ajax_response_debug']){
    	var txt = 'ajax response values :: \n';
    	txt += unescape(result).trim();
    	alert(txt);
    }
	
	var options = pwin_convert_string_to_json(parameters);
    options.callback(pwin_convert_string_to_json(unescape(result)));
}

function pwin_ajax_result_error(result, parameters) {

    if(plugin_config['ajax_response_debug']){
    	var txt = 'ajax response values :: \n';
    	txt += "result :: " + result + '\n';
    	txt += "parameters :: " + parameters + '\n';
    	alert(txt);
    }
    
	var options = pwin_convert_string_to_json(parameters);
    options.callback(null);
}

function pwin_cross_domain_request(options){
    var adapter = pwin_get_adapter();

    if(adapter.crossDomainRequest){
    	adapter.crossDomainRequest(options);
    }else{
    	setTimeout(function(){pwin_cross_domain_request(options)}, 100);
    }
}

function pwin_get_adapter(adapterId) {
	var obj = null;
	var adapterId = plugin_config['swf_adapter_id'];
    if (navigator.appName.indexOf("Microsoft") != -1) {
    	obj = window[adapterId];
    }else{
    	obj = document[adapterId];
    }
    if(obj){
    	return obj;
    }
    
    return null;
}

function pwin_convert_string_to_json(text){
	try{
		if(text){
			if(text.replace(/\s/g, '') == ''){
				return null;
			}
			return eval("(" + text + ")");
		}		
	}catch(err){		
	}
	
	return null;
}

if(plugin_config['flash_n_js_write']){
	
	var _swf = plugin_config['jsca_fullpath'] + '/cross_domain_adapter.swf';
	var adapterId = plugin_config['swf_adapter_id'];
	
	var txt = '';
	txt += '<object id="' + adapterId + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">';
	txt += '<param name="allowScriptAccess" value="sameDomain" />';
	txt += '<param name="movie" value="' + _swf + '" />';
	txt += '<embed src="' + _swf + '" name="' + adapterId + '" width="0" height="0" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	txt += '</object>';
	
	document.write(txt);	
}

function pwin_print_object(obj, step){
	if(!step){
		step = 0;
	}
	var space = '';
	for(var i = 0; i < step; i++){
		space += '  ';
	}
	if(typeof(obj) == 'object'){
		var txt = '';
		for(var x in obj){
			if(typeof(obj[x]) == 'object'){
				txt += space + x + ' : \n';
				txt += space + '  ' + pwin_print_object(obj[x], step + 1) + '\n';
			}else{
				txt += space + x + ' : ' + obj[x] + '\n';
			}			
		}
		return txt;
	}else{
		return space + obj;
	}
}

/**
 * ************************************ common ************************************ 
 */

function pwin_add_node(type, parent, options){
	
	var node = document.createElement(type);
	
	if(options){
		for(var name in options){
			var value = options[name];
			if(name == 'classname'){
				node.setAttribute("class", value);
				node.setAttribute("className", value);
			}else{
				node[name] = value;
			}
			
		}
	}
	
	parent.appendChild(node);
	return node;
}

function pwin_get_node(id, index){
	var node = document.getElementById(id);
	if(node){
		return node;
	}
	var list = document.getElementsByName(id);
	if(list && list.length > 0){
		if(index && index < list.length && index >= 0){
			return list[index];
		}
		return list[0];
	}
	return null;
}

function pwin_del_node(id){
	var node = null;
	do{
		node = pwin_get_node(id);
		if(node){
			node.parentNode.removeChild(node);
		}		
	}while(node);	
}

function pwin_set_css(id, css){
	pwin_get_node(id).className = css;
	pwin_get_node(id).setAttribute("className", css);
	pwin_get_node(id).setAttribute("class", css);	
}

function pwin_cookie_set(name, value, expires, path, domain, secure){

	var today = new Date();
	today.setTime(today.getTime());

	if(expires){
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date(today.getTime() + (expires));

	document.cookie = name + "=" + escape(value) + 
		((expires) ? ";expires=" + expires_date.toGMTString() : "" ) +
		((path) ? ";path=" + path : "") + 
		((domain) ? ";domain=" + domain : "") +
		((secure) ? ";secure" : "");
}

function pwin_cookie_get(check_name){
	
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false;
	var i = '';
	
	for(i = 0; i < a_all_cookies.length; i++){

		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		if(cookie_name == check_name){
			b_cookie_found = true;
			if(a_temp_cookie.length > 1){
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	
	if(!b_cookie_found){
		return null;
	}

}

function pwin_cookie_destroy(name, path, domain){
	if(pwin_cookie_get(name)){
		document.cookie = name + "=" + ((path) ? ";path=" + path : "") + ((domain) ? ";domain=" + domain : "") + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}	
}

String.prototype.trim = function(){ 
	return this.replace(/(^\s*)|(\s*$)/g, ""); 
}

String.prototype.leftTrim = function(){ 
	return this.replace(/(^\s*)/g, ""); 
}

String.prototype.rightTrim = function(){ 
	return this.replace(/(\s*$)/g, ""); 
}

String.prototype.isEmpty = function(){ 
	return this.trim() == ''; 
}

String.prototype.cnLength = function(){ 
	return this.replace(/[^\x00-\xff]/g,"**").length; 
}

String.prototype.isAbc123_ = function(){ 
	return /^[\w]+$/.test(this);
}

String.prototype.isEmail = function(){ 
	return !/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/.test(this) && /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/.test(this); 
}

//设置指定位置为打开状态。若指定位置没有变化，返回false，否则true
function pwin_panel_set_position(type){
	
	return true;
	
	if(!type){
		alert('ASSERT::cannot read arguments.');
		return false;
	}
	
	if(plugin_config['panel_position'][type]){
		pwin_panel_clear_position(type);
		return false;
	}
	
	pwin_panel_clear_position();
	plugin_config['panel_position'][type] = true;
	return true;
}

//不传参数 清理所以占位。传参数，清理除参数外的所有占位
function pwin_panel_clear_position(type){
	var panels = plugin_config['panel_position'];
	
	for(var x in panels){
		if(type && type == x){
			continue;
		}
		panels[x] = false;
	}
}

/**
 * ************************************ pwinbox ************************************ 
 */

function pwin_box_set_content(content){
	
	var txt = content ? content : '';	
	$('.pwin_loadwindow').html(txt);
	
	$('.pwin_loadwindow').show();
	
	pwin_all_dialog_init();
}

function pwin_destroy_windows(){
	$('.pwin_loadwindow').hide();
	$('.subpop').hide();
}

function pwin_toolbar_toggle(){
	$('.pwin_loadwindow').hide();
	$('.controlmenu').toggle();
	$('.remotereg').toggle();
	$('.pwin_foldarrow').toggleClass('unfoldarrow');
}

function pwin_all_dialog_init(){	
	
	$('.pwin_closebtn').click(function(){
		
		$('.pwin_loadwindow').hide();
		
		pwin_panel_clear_position();
		
	});
	
	$('.closebtn2').click(function(){
		$('.subpop').hide();		
	});
	
	$('.pwin_tag').click(function(){
		var index=$('.pwin_tag').index(this);
		$(this).addClass('pwin_current').siblings().removeClass('pwin_current');
		$('.popcon').eq(index).show().siblings().hide();
		return false;
	});

	$('.unfold').click(function(){
		$(this).toggleClass('fold');
		$(this).next('table').toggle();
		return false;
	});
	
	$('.showsubpop').click(function(){
		$('.subpop').show();
		return false;
	});
	
	try{
		
		$('.breviary').mouseover(function(e){
			var paramValue = e.target.parentNode.parentNode.getElementsByTagName("input")[0].value;
			var params = paramValue.split(",");
			$("#pwin_logo").attr("src", params[0]);
			$("#pwin_name").text(params[1]);
			$("#pwin_sex").text("性别: " + (parseInt(params[2]) == 0 ? "男" : "女"));
			$("#pwin_age").text("年龄: " + (parseInt(params[3]) < 1 ? "未知" : params[3]));
			$("#pwin_city").text("城市: " + params[4]);
			$('.userbox').show();
			$('.userbox').css('top', e.pageY+10);
			$('.userbox').css('left', e.pageX-70);
		});
		
		$('.breviary').mouseout(function(){
			$('.userbox').hide();
		});	
		
		$('.breviary').mouseout(function(){
			$('.userbox').hide();
		});
		
	}catch(e){}	
	
}

function pwin_pager_create(func, index, size, pages){	
	
	if(index > pages || pages <= 1){
		return '';
	}
	
	var list_size = 10;
	var txt = '';
	
	if(index > 1){
		txt += "<a href='javascript:" + func + "(1, " + size + ");'>首页</a> | ";
	}
	
	var start = index - list_size / 2;
	start = start < 1 ? 1 : start;
	var end = index + list_size / 2;
	end = end > pages ? pages : end;
	
	for(var i = start; i <= end; i++){
		if(i == index){
			txt += index + ' ';
		}else{
			txt += "<a href='javascript:" + func + "(" + i + ", " + size + ");'>" + i + "</a> ";
		}		
	}
	
	if(index < pages){
		txt += "| <a href='javascript:" + func + "(" + pages + ", " + size + ");'>尾页</a>";
	}	
	
	return txt;	
	
}

/**
 * ************************************ tplbuilder ************************************ 
 */
var _pwin_xml_request = null;
var _pwin_template_content = '';

function pwin_start_sync_request(uri) {
	
	if (window.ActiveXObject) {
		_pwin_xml_request = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		_pwin_xml_request = new XMLHttpRequest();
	}
	
	try {

		if (navigator.userAgent.indexOf("Firefox") > 0) {
			_pwin_xml_request.onload = pwin_handle_state_change;
		}else{
			_pwin_xml_request.onreadystatechange = pwin_handle_state_change;
		}
		
		_pwin_xml_request.open("GET", uri, false);
		_pwin_xml_request.send(null);
		
	} catch (exception) {
		if(plugin_config['template_load_debug']){
			alert("cannot find template resource!");
		}
	}
}
function pwin_handle_state_change() {
	
	if (_pwin_xml_request.readyState == 4) {
		if (_pwin_xml_request.status == 200 || _pwin_xml_request.status == 0){
			_pwin_template_content = _pwin_xml_request.responseText;
		}else{
			if(plugin_config['template_load_debug']){
				alert(_pwin_xml_request.status + ' :: ' + 'cannot find template resource!');
			}			
		}
	}
	
}

function pwin_func_name_parse(func){
    var callerfunc;
    if ('undefined' !== typeof func.name) {
        callerfunc = func.name;
    } else {
        callerfunc = /^function\s*([a-z0-9_\-\$]+)/im.exec(func)[1];
    }
    return callerfunc;
}

function pwin_content_output(template_uri, data){
	
	template_uri = plugin_config['jsca_fullpath'] + '/templates/' + template_uri;
	
	if(!data){
		data = {};		
	}
	data['sys_config'] = plugin_config;
	
	pwin_start_sync_request(template_uri);
	
	var template = _pwin_template_content;
	_pwin_template_content = '';
	
	if(!template){
		if(plugin_config['template_load_debug']){
			alert('DEBUG :: cannot load template! ::' + template_uri);
		}		
		return '';
	}
	
	try{
		
		var content = '';
		if(data){
			content = template.toString().process(data);
		}else{
			content = template.toString();
		}
		
		if(plugin_config['template_gen_debug']){
			alert(content);
		}
		
		return content;
		
	}catch(e){
		if(plugin_config['template_load_debug']){
			alert('DEBUG :: parse template & data error!\n' + e.message);
		}		
		return '';
	}
}

function pwin_content_output_auto(data, debug){
//	alert(arguments.callee.caller)
    var name = pwin_func_name_parse(arguments.callee.caller);		
	var file = name + '.html';

	if(debug){
		alert("TEMPLATE :: \n" + file);
		alert("RETURN :: \n" + pwin_content_output(file, data));
	}
	return pwin_content_output(file, data);		
}

/**
 * ************************************ pages functions ************************************
 * ************************************   LIST BELOW    ************************************ 
 */

/**
 * ************************************ toolbar ************************************ 
 */

function pwin_toolbar_init(){
	
	var dir = plugin_config['jsca_fullpath'];
	var showchat = plugin_config['chat_plugin_enabled'];
	var css = dir + '/css/' + (showchat ? 'style_controlbar.css' : 'style_controlbar_cw.css');
	var include = '<link href="' + css + '" rel="stylesheet" type="text/css" />';
//	alert(include)
	document.write(include);
	
	var user = pwin_get_login_user();
	var node = plugin_config['toolbar_div']; 
	var ssoCode = pwin_cookie_get('verifycode');
	
	pwin_destroy_windows();
	node.innerHTML = '';
	
	if(ssoCode){
		pwin_toolbar_sso(ssoCode);		
	}else{
		node.innerHTML = pwin_toolbar_text_unlogin();
	}	
	
	//TODO marquee
	if(plugin_config['marquee']){
		pwin_banner_marquee_handle();
	}
}

function pwin_toolbar_sso(ssoCode){

	var parameters = {verifycode : ssoCode};
	
	pwin_ajax(
			plugin_config['api_address_sso'], 
			function(result){
				
				var errtype = parseInt(result['errtype']);
				
				if(errtype != 0){
					plugin_config['toolbar_div'].innerHTML = pwin_toolbar_text_unlogin();
					return;
				}

				var user = {
						id : result['usrid'], 
						email : result['email'], 
						name : result['nickname'],
						logo : result['photo']
				};
				
				pwin_set_login_user_entity(user);
				pwin_toolbar_display();
			}, 
			parameters
		);
	
}

function pwin_toolbar_display(url){

	if(url){
		pwin_ajax(
			url, 
			function(result){
				return;
			}, 
			null,
			'GET'
		);	
	}
	
	var node = plugin_config['toolbar_div'];
	var user = pwin_get_login_user();
	
	pwin_destroy_windows();
	node.innerHTML = '';
	
	if(user){
		node.innerHTML = pwin_toolbar_text_login(user);
	}else{
		node.innerHTML = pwin_toolbar_text_unlogin();
	}
	
	//TODO marquee
	if(plugin_config['marquee']){
		pwin_banner_marquee_handle();
	}
}

function pwin_toolbar_text_unlogin(){
	var banner = plugin_config['left_banner_show'] ? pwin_content_output('pwin_toolbar_banner.html', null) : '';
	return pwin_content_output_auto({banner : banner});
}

function pwin_toolbar_text_login(user){
	
	pwin_toolbar_set_status();
	
	if(plugin_config['chat_plugin_enabled']){
		
		$(document.body).append('<iframe id="im_proxy_frame" src="http://' + plugin_config['im_server_domain'] + '/proxy.html" style="width:1px;height:1px;" frameborder="0" allowTransparency="1"></iframe>');
				
		try{
			IM.login(user.email);		
		}catch(err){		
			//TODO
		}
	}
	
	var banner = plugin_config['left_banner_show'] ? pwin_content_output('pwin_toolbar_banner.html', null) : '';
	
	return pwin_content_output_auto({user : user, banner : banner});
}

function pwin_toolbar_set_status(){	
	
	pwin_toolbar_set_status_logo();
	pwin_toolbar_set_status_note();
	pwin_toolbar_set_status_sysmsg();
}

//设置用户logo
function pwin_toolbar_set_status_logo(){
	
	var user = pwin_get_login_user();

	if(!user['logo'] || user['logo'] == plugin_config['default_user_logo']){
		pwin_ajax(
				plugin_config['api_address_user_info'],
				
				function(result){
					
					var succ = parseInt(result['errtype']);				
					if(succ != 0){
						return;
					}
					
					var user = {
							id : result['usrid'],
							name : result['nickname'],
							email : result['email'],
							logo : result['pic']
						};

					pwin_set_login_user_entity(user);				
					pwin_get_node('item_logo').src = result['pic'];
				},
				
				null
			);		
	}
	
}

//设置是否有未读纸条
function pwin_toolbar_set_status_note(){

	pwin_ajax(
			plugin_config['api_address_list_msg'],
			
			function(result){

				var succ = parseInt(result['errtype']);
				if(succ != 0){
					return;
				}
				
				var noread = parseInt(result['noread']);
				
				pwin_msgbar_set_flash('note', noread);
			},
			
			{pageno : 1, perpage : 1}
		);
}

//设置是否有未读系统消息
function pwin_toolbar_set_status_sysmsg(){

	pwin_ajax(
			plugin_config['api_address_list_sysmsg'],
			
			function(result){
				
				var succ = parseInt(result['errtype']);
				if(succ != 0){
					return;
				}
				var noread = parseInt(result['noread']);
				pwin_msgbar_set_flash('sysmsg', noread);
				
			},
			
			{pageno : 1, perpage : 1}
		);		
}

function pwin_msgbar_set_flash(type, num){
	
	var id = type == 'note' ? 'item_note' : 'item_smsg';
	var css = type == 'note' ? 'icon4' : 'icon5';
	var css_ = type == 'note' ? 'icon4_' : 'icon5_';
	var desc = type == 'note' ? '字条' : '消息';
	var cfg = type == 'note' ? plugin_config['new_note_flash'] : plugin_config['new_msg_flash'];
	
	if(num <= 0){
		pwin_set_css(id, "controlicon " + css);
		pwin_get_node(id).title = "";					
	}else if(cfg){
		pwin_set_css(id, "controlicon " + css  + ' ' + css_);
		pwin_get_node(id).title = num + " 个未读" + desc;
	}
	
}

function pwin_toolbar_logout(){
	
	if(plugin_config['chat_plugin_enabled']){
		try{
			IM.proxy.logout();
		}catch(err){
			//TODO
		}		
	}
	
	pwin_destroy_windows();
	pwin_destory_login_user();
	
	var node = plugin_config['toolbar_div'];
	node.innerHTML = pwin_toolbar_text_unlogin();	

	pwin_ajax(
		plugin_config['api_address_clear_sso'], 
		function(result){
			return;
		}, 
		null,
		'GET'
	);
	
	//TODO marquee
	if(plugin_config['marquee']){
		pwin_banner_marquee_handle();
	}
	
	//清空好友列表缓存
	plugin_config['friendlist_data'] = null;
}

/**
 * ************************************ edit_info ************************************ 
 */

function pwin_editinfo_init(){
	
	if(!pwin_panel_set_position('info')){
		return;
	}
	
	var user = pwin_get_login_user();

	var parameters = {email: user ? user['email'] : ''};
	
	pwin_ajax(
			plugin_config["api_address_user_info"], 
			function(result){
				
				var template = 'pwin_editinfo_text_init.html';
				
				var content = pwin_content_output(template, {user : result});

				pwin_box_set_content(content);
				
			}, 
			parameters
		);	
}

function pwin_editinfo_do(){
	
	var province = "";
	var sex = "0";
	
	province = pwin_get_node('pwin_field_province').value;
	var sexObj = document.getElementsByName("pwin_field_sex");
	var a = false;
	for(var i = 0; i < sexObj.length; i++){
		if(sexObj[i].checked){
			sex = sexObj[i].value;
		}
	}
	
	var parameters = { province : province, sex:sex};
	pwin_ajax(
			plugin_config["api_address_edit_user"], 
			function(result){
				var succ = result['errtype']==0?true:false;
				if(succ){
					pwin_editinfo_alert(1);
					return;
				}
				else
				{
					pwin_editinfo_init();
					pwin_editinfo_alert(2);
					return;
				}
				
			}, 
			parameters
		);	
}
function  pwin_changepwd_do()
{
	var oldPasswd = pwin_get_node('pwin_field_Oldpasswd').value;
	var passwd = pwin_get_node('pwin_field_passwd').value;
	var verifyPasswd = pwin_get_node('pwin_field_verifypasswd').value;
	if(oldPasswd == '' ){
		pwin_get_node('pwin_field_Oldpasswd').focus();
		pwin_editinfo_alert(3);
		return;
	}
	
	if(passwd == '' ){
		pwin_get_node('pwin_field_passwd').focus();
		pwin_editinfo_alert(4);
		return;
	}
	
	if(verifyPasswd == '' ){
		pwin_get_node('pwin_field_verifypasswd').focus();
		pwin_editinfo_alert(5);
		return;
	}
	
	if( passwd!=verifyPasswd )
	{
		pwin_get_node('pwin_field_passwd').focus();
		pwin_editinfo_alert(6);
		return;
	}	
	
	var parameters = {oldpasswd: oldPasswd, passwd : passwd, verifypasswd:verifyPasswd};
	pwin_ajax(
			plugin_config["api_address_edit_pwd"], 
			function(result){
				var succ = result['errtype']==0?true:false;
				if(succ){
					pwin_editinfo_alert(7);
					pwin_get_node('pwin_field_Oldpasswd').value = '';
					pwin_get_node('pwin_field_passwd').value = '';
					pwin_get_node('pwin_field_verifypasswd').value = '';					
					return;
				}
				else
				{
					pwin_editinfo_alert(8);
					return;
				}
				
			}, 
			parameters
		);	
}

function pwin_editinfo_alert(type){
	
	var tips = pwin_get_node('pwin_tips_area');
	if( type>2 )
		 tips = pwin_get_node('pwin_tips_area1');
	var msg = '';
	
	switch(type){
		case 0 :  msg = '姓名不能为空！'; break;
		case 1 :  msg = '基本资料更新成功！'; break;
		case 2 :  msg = '基本资料更新失败！'; break;
		case 3 :  msg = '旧密码不能为空！'; break;
		case 4 :  msg = '确认密码不能为空！'; break;
		case 5 :  msg = '新确认密码不能为空！'; break;
		case 6 :  msg = '新密码及新确认密码不符！'; break;
		case 7 :  msg = '密码修改成功！'; break;
		case 8 :  msg = '密码修改失败！'; break;
	}
	
	msg = '<font color="red">' + msg + '</font>';
	
	tips.innerHTML = msg;
}

/**
 * ************************************ friend ************************************ 
 */

function pwin_friend_list_dataset(func){
	
	plugin_config['friendlist_func'] = func;
	
	if(plugin_config['friendlist_data']){
		
		func(plugin_config['friendlist_data']);
		
	}else{
		
		var user = pwin_get_login_user();
		var parameters = {email: user['email']};
		
		pwin_ajax(
				plugin_config["api_address_list_friend"], 
				function(result){
					plugin_config['friendlist_data'] = result['data'];
					plugin_config['friendlist_func'](plugin_config['friendlist_data']);
				}, 
				parameters
			);
	}
}

function pwin_friend_init(){	
	
	if(!pwin_panel_set_position('frnd')){
		return;
	}
	
	pwin_friend_list_dataset(pwin_friend_init_callback);
	
}

function pwin_friend_init_callback(values){
	
	var template = 'pwin_friend_text_init.html';
	var data = {groups : values};
	
	var content = pwin_content_output(template, data);

	pwin_box_set_content(content);
}

function pwin_note_txt_send(name, email){
	
	var template = 'pwin_note_txt_send.html';
	var data = {name : name, email : email};				
	
	var content = pwin_content_output(template, data);
	pwin_box_set_content(content);
}

function pwin_note_send_do(){
		
	var user = pwin_get_login_user();
	
	var acceptor = pwin_get_node('pwin_field_acceptor').value.trim();
	var title = pwin_get_node('pwin_field_title').value.trim();
	var content = pwin_get_node('pwin_field_content').value.trim();
	
	if(title.isEmpty() || content.isEmpty()){
		pwin_note_alert(-1);
		return;
	}
	
	var parameters = {
			accept : acceptor,
			title : title,
			content : content
		};
	
	pwin_note_alert(2);
	
	pwin_ajax(
			plugin_config['api_address_send_msg'], 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ != 0){
					pwin_note_alert(0);
					return;
				}
				
				pwin_note_alert(1);
								
			}, 
			parameters
		);	
}

function pwin_note_alert(type){
	
	var tips = pwin_get_node('pwin_tips_area');

	var msg = '';

	switch(type){
		case 0 :  msg = '发送失败，请稍后再试！'; break;
		case 1 :  msg = '发送成功！'; break;
		case 2 :  msg = '正在发送...'; break;

		case -1 :  msg = '标题、内容不能为空！'; break;
		default : msg = ''; break;
	}
	
	tips.innerHTML = msg;
}


/**
 * ************************************ get_pwd ************************************ 
 */

function pwin_getpwd_init(){

	var template = 'pwin_getpwd_text_init.html';
	var content = pwin_content_output(template, null);
	
	pwin_box_set_content(content);
}

function pwin_getpwd_do(){
	
	var email = pwin_get_node('pwin_field_email').value.trim();
	
	if(email.isEmpty() || !email.isEmail()){
		pwin_getpwd_alert(1);
		return;
	}
	
	var url = plugin_config['api_address_get_pwd'];	
	var parameters = {email: email};

	pwin_ajax(
			url, 
			function(result){
				
				var succ = parseInt(result['errtype']);		
				
				pwin_getpwd_alert(succ);
			}, 
			parameters
		);
}

function pwin_getpwd_alert(type){
	
	var tips = pwin_get_node('pwin_tips_area');
	var msg = '';
	
	switch(type){
		case 1 :  msg = 'Email为空或者格式不合法！'; break;
		case 0 :  msg = '发送成功，请查收！'; break;
		case -1 :  msg = '没有这个邮箱！'; break;
		case -2 :  msg = '有多个相同的邮箱！'; break;
		case -3 :  msg = '邮箱没有激活！'; break;
		default : msg ='系统错误，请稍后再试！';
	}
	
	tips.innerHTML = msg;
}

/**
 * ************************************ login ************************************ 
 */
function pwin_login_init(){
	
	var template = 'pwin_login_text_init.html';
		
	var email = pwin_cookie_get('pwin_transient_email');
	email = email ? email : '请输入邮箱/用户名';
	
	var content = pwin_content_output(template, {email : email});
	pwin_box_set_content(content);
}

function pwin_login_do(){
	
	var email = pwin_get_node('pwin_field_email').value.trim();
	var passwd = pwin_get_node('pwin_field_passwd').value.trim();
	var remember = pwin_get_node('pwin_field_rememberme').checked;	
	
	if(email.isEmpty() || passwd.isEmpty()){
		pwin_login_alert(0);
		return;
	}
	
	if(remember){
		pwin_cookie_set('pwin_transient_email', email);
	}
	
	var parameters = {email: email, password : passwd, check : -1};

	pwin_login_alert(99);
	
	pwin_ajax(
			plugin_config['api_address_login'], 
			function(result){
				
				var succ = parseInt(result['errtype']);

				if(succ != 0){
					pwin_login_alert(succ, result['msg']);
					return;
				}
				
				var usrid = result['usrid'];							
				var email = result['email'];
				var url = result['url'];

				pwin_set_login_user_entity({id : usrid, email : email});
				
				pwin_toolbar_display(url);
			}, 
			parameters
		);	
}

function pwin_login_alert(type, msg){
	
	var tips = pwin_get_node('pwin_tips_area');

	var email = pwin_cookie_get('_email', email);
	
	switch(type){
		case 99 :  msg = '数据提交中，请稍候......'; break;
		case 0 :  msg = '帐号、密码不能为空！'; break;
		case 1 :  msg = '帐号、密码不正确！'; break;
		case 2 :  msg = '邮箱格式不正确！'; break;
		case -3 : 	 
					top.location.href = plugin_config['api_link_active_note'] + encodeURIComponent(msg);
					msg = '';
					break;
		default : msg = '帐号、密码不正确！'; break;
	}
	
	tips.innerHTML = msg;
}
/**
 * ************************************ note ************************************ 
 */

function pwin_note_init(index, size){
	
	if(!pwin_panel_set_position('note')){
		return;
	}
	
	pwin_note_page();
}

function pwin_note_page(index, size){
	
	var _index = index ? index : 1;
	var _size = size ? size : 5;
		
	var user = pwin_get_login_user();
	
	var parameters = {pageno : _index, perpage : _size};
	
	pwin_ajax(
			plugin_config['api_address_list_msg'], 
			function(result){
				
				var titlelen = 20;
				
				var index = parseInt(result['pageno']);
				var size = parseInt(result['perpage']);
				var pages = parseInt(result['pages']);
								
				var pager = pwin_pager_create('pwin_note_page', index, size, pages);

				var template = 'pwin_note_text_init.html';
				var data = {notes : result['data'], pager : pager};
				
				var noread = parseInt(result['noread']);
				
				pwin_msgbar_set_flash('note', noread);
				
				for(var i = 0; i < data['notes'].length; i++){
					var len = data['notes'][i].title.length < titlelen ? data['notes'][i].title.length : titlelen;
					var suffix = data['notes'][i].title.length < titlelen ? '' : '...';
					data['notes'][i].title = data['notes'][i].title.substring(0, len) + suffix; 
				}
				
				var content = pwin_content_output(template, data);
				pwin_box_set_content(content);
			}, 
			parameters
		);

}

function pwin_note_pre_delete(messageid){
	var msgbox = pwin_get_node('message_box_id');
	msgbox.style.display = 'block'; 
	pwin_get_node('pwin_field_selectedMsgId').value = messageid;
}

function pwin_note_delete(messageid){
	
	var msgid = pwin_get_node('pwin_field_selectedMsgId').value.trim();
	
	if(msgid.isEmpty()){
		return;
	}
	
	pwin_get_node('message_box_id').style.display='none';
		
	var user = pwin_get_login_user();
	
	var parameters = {messageid : msgid};
	
	pwin_ajax(
			plugin_config['api_address_del_msg'], 
			function(result){
				
				pwin_note_init();
				
			}, 
			parameters
		);
}

function pwin_note_txt_detail(msgid){
		
	var user = pwin_get_login_user();
	
	var parameters = {messageid : msgid};
	
	pwin_ajax(
			plugin_config['api_address_show_msg'], 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ != 0){
					return;
				}
				
				var template = 'pwin_note_txt_detail.html';			
				
				var content = pwin_content_output(template, {msg : result});
				
				pwin_box_set_content(content);				
				
				pwin_toolbar_set_status_note();
			}, 
			parameters
		);
	
}

function pwin_note_txt_reply(msgid, name, email, title){
	
	var template = 'pwin_note_txt_reply.html';
	var data = {msgid : msgid, name : name, email : email, title : title};				
	
	var content = pwin_content_output(template, data);

	pwin_box_set_content(content);
}

function pwin_note_reply_do(){
		
	var user = pwin_get_login_user();
	
	var acceptor = pwin_get_node('pwin_field_acceptor').value.trim();
	var title = pwin_get_node('pwin_field_title').value.trim();
	var content = pwin_get_node('pwin_field_content').value.trim();
	var msgid = pwin_get_node('pwin_field_msgid').value.trim();
	
	if(title.isEmpty() || content.isEmpty()){
		pwin_note_alert(-1);
		return;
	}
	
	var parameters = {
			accept : acceptor,
			title : title,
			content : content,
			messageid : msgid
		};
	
	pwin_note_alert(2);
	
	pwin_ajax(
			plugin_config['api_address_reply_msg'], 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ != 0){
					pwin_note_alert(0);
					return;
				}
				
				pwin_note_alert(1);
								
			}, 
			parameters
		);	
}

function pwin_note_alert(type){
	
	var tips = pwin_get_node('pwin_tips_area');
	var msg = '';

	switch(type){
		case 0 :  msg = '发送失败，请稍后再试！'; break;
		case 1 :  msg = '发送成功！'; break;
		case 2 :  msg = '正在发送...'; break;

		case -1 :  msg = '标题、内容不能为空！'; break;
		default : msg = ''; break;
	}
	
	tips.innerHTML = msg;
}

/**
 * ************************************ register ************************************ 
 */
function pwin_register_init(){
	
	var template = 'pwin_register_text_init.html';
	var content = pwin_content_output(template, null);
	
	pwin_box_set_content(content);
}

function pwin_register_do(){
	
	var email = pwin_get_node('pwin_field_email').value.trim();
//	var usrid = pwin_get_node('pwin_field_usrid').value.trim();
	var name = pwin_get_node('pwin_field_name').value.trim();
	var passwd = pwin_get_node('pwin_field_passwd').value.trim();
	var pwdrpt = pwin_get_node('pwin_field_pwdrpt').value.trim();
	var agree = pwin_get_node('pwin_field_agree').checked;
	
//	if(email.isEmpty() || usrid.isEmpty() || name.isEmpty() || passwd.isEmpty() || pwdrpt.isEmpty()){
	if(email.isEmpty() || name.isEmpty() || passwd.isEmpty() || pwdrpt.isEmpty()){
		pwin_register_alert(0);
		return;
	}
	
	if(passwd.cnLength() < 6 || passwd.cnLength() > 20){
		pwin_register_alert(5);
		return;		
	}
/*
	if(!usrid.isAbc123_()){
		pwin_register_alert(6);
		return;		
	}
	
	if(usrid.cnLength() < 4 || usrid.cnLength() > 20){
		pwin_register_alert(7);
		return;		
	}
*/	
	if(name.cnLength() < 4 || name.cnLength() > 20){
		pwin_register_alert(8);
		return;		
	}	
	
	if(!agree){
		pwin_register_alert(1);
		return;		
	}
	
	if(passwd != pwdrpt){
		pwin_register_alert(2);
		return;		
	}
	
	if(!email.isEmail()){
		pwin_register_alert(3);
		return;		
	}
	
	var url = plugin_config['api_address_register'];	
//	var parameters = {email: email, usrid : usrid, nicknm : name, passwd : passwd, verifypasswd : pwdrpt, check : -1};
	var parameters = {email: email, nicknm : name, passwd : passwd, verifypasswd : pwdrpt, check : -1};

	pwin_ajax(
			url, 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ != 0){
					pwin_register_alert(succ);
					return;
				}
				
				var email = pwin_get_node('pwin_field_email').value.trim();
				var passwd = pwin_get_node('pwin_field_passwd').value.trim();
				pwin_register_nextstep(email, passwd);
			}, 
			parameters
		);	
}

function pwin_register_nextstep(email, pwd){

	var template = 'pwin_register_nextstep.html';
	var content = pwin_content_output(template, {email : email, passwd : pwd});

	pwin_box_set_content(content);	
}

function pwin_register_getmail(email, pwd){
	
	if(!email || email.isEmpty() || !pwd || pwd.isEmpty()){
		pwin_register_alert(0);
		return;
	}	
	
	var url = plugin_config['api_address_resend_mail'];	
	var parameters = {email: email, password : pwd};
	
	pwin_ajax(
			url, 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ == 0){
					pwin_register_alert(4);
				}else{
					pwin_register_alert(-2);
				}
				
			}, 
			parameters
		);		
}

function pwin_register_alert(type){
	
	var tips = pwin_get_node('pwin_tips_area');
	var msg = '';
	
	switch(type){
		case 0 :  msg = '提交的数据不完全！'; break;
		case 1 :  msg = '请阅读并同意《 中国网络电视台服务条款》'; break;
		case 2 :  msg = '密码和重复密码不一致！'; break;
		case 3 :  msg = 'Email格式不正确！'; break;
		case 4 :  msg = '激活邮件已重新发送，请查收！'; break;
		case 5 :  msg = '密码长度为6-20位！'; break;
		case 6 :  msg = '用户名仅限字母、数字、下划线！'; break;
		case 7 :  msg = '用户名长度为4-20个字符！'; break;
		case 8 :  msg = '昵称长度为4-20个字符！'; break;
		
		case -1 : msg = '邮箱存在并已经激活！';break;
		case -2 : msg = '用户名已存在！';break;
		case -3 : msg = '昵称已存在！';break;
		case -4 : msg = '密码错误！';break;
		case -7 : msg = '用户名含有非法字符！';break;
		case -8 : msg = '昵称含有非法字符！';break;
		default :  msg = '提交失败，请稍候再试！'; break;
	}
	
	tips.innerHTML = msg;
}

/**
 * ************************************ sysmsg ************************************ 
 */

function pwin_sysmsg_init(index, size){
	
	if(!pwin_panel_set_position('smsg')){
		return;
	}
	
	pwin_sysmsg_page();
}

function pwin_sysmsg_page(index, size){
	
	var _index = index ? index : 1;
	var _size = size ? size : 5;
		
	var user = pwin_get_login_user();
	
	var parameters = {pageno : _index, perpage : _size};
	
	pwin_ajax(
			plugin_config['api_address_list_sysmsg'], 
			function(result){
				
				var titlelen = 20;
				
				var index = parseInt(result['pageno']);
				var size = parseInt(result['perpage']);
				var pages = parseInt(result['pages']);
				
				var pager = pwin_pager_create('pwin_sysmsg_page', index, size, pages);
				
				var noread = parseInt(result['noread']);

				pwin_msgbar_set_flash('sysmsg', noread);
				
				var template = 'pwin_sysmsg_text_init.html';
				var data = {msgs : result['data'], pager : pager};
				
				for(var i = 0; i < data['msgs'].length; i++){
					var len = data['msgs'][i].title.length < titlelen ? data['msgs'][i].title.length : titlelen;
					var suffix = data['msgs'][i].title.length < titlelen ? '' : '...';
					data['msgs'][i].title = data['msgs'][i].title.substring(0, len) + suffix; 
				}
				
				var content = pwin_content_output(template, data);

				pwin_box_set_content(content);
			}, 
			parameters
		);
}

function pwin_sysmsg_pre_delete(messageid){
	var msgbox = pwin_get_node('message_box_id');
	msgbox.style.display = 'block'; 
	pwin_get_node('pwin_field_selectedMsgId').value = messageid;
}

function pwin_sysmsg_delete(messageid){
	
	var msgid = pwin_get_node('pwin_field_selectedMsgId').value.trim();
	
	if(msgid.isEmpty()){
		return;
	}
	
	pwin_get_node('message_box_id').style.display='none';
		
	var user = pwin_get_login_user();
	
	var parameters = {messageid : msgid};
	
	pwin_ajax(
			plugin_config['api_address_del_msg'], 
			function(result){
				
				pwin_sysmsg_init();
				
			}, 
			parameters
		);
}

function pwin_sysmsg_txt_detail(msgid, delflag){	
	
	window.pwin_sysmsg_del_flag = delflag;
	
	var user = pwin_get_login_user();
	
	var parameters = {messageid : msgid};
	
	pwin_ajax(
			plugin_config['api_address_show_msg'], 
			function(result){
				
				var succ = parseInt(result['errtype']);
				
				if(succ != 0){
					return;
				}
				
				var template = 'pwin_sysmsg_txt_detail.html';
				
				result['delflag'] = window.pwin_sysmsg_del_flag ? window.pwin_sysmsg_del_flag : '0';
				
				var content = pwin_content_output(template, {msg : result});
				
				pwin_box_set_content(content);
				
				pwin_toolbar_set_status_sysmsg();
			}, 
			parameters
		);
	
}

/**
 * ************************************ others ************************************ 
 */

function pwin_chat_init(){
	
	if(!plugin_config['chat_plugin_enabled']){
		return;
	}

	if(!pwin_panel_set_position('chat')){
		return;
	}	
	try{
		IM.chat();
	}catch(err){
		//TODO
	}
}

function pwin_set_login_user_entity(user, remember){
	
	var hasUsrid = typeof(user['id']) != "undefined" && user['id'] != null;
	var hasEmail = typeof(user['email']) != "undefined" && user['email'] != null;
	var hasName = typeof(user['name']) != "undefined" && user['name'] != null;
	var hasLogo = typeof(user['logo']) != "undefined" && user['logo'] != null;
	
	if(!plugin_config['user']){
		plugin_config['user'] = {};
	}
	
	if(hasUsrid){
		plugin_config['user']['id'] = user['id'];
	}
	
	if(hasEmail){
		plugin_config['user']['email'] = user['email'];
	}
	
	if(hasName){
		plugin_config['user']['name'] = user['name'];
	}
	
	if(hasLogo){
		plugin_config['user']['logo'] = user['logo'];
	}

	if(hasEmail && remember){
		pwin_cookie_set('pwin_transient_email', user['email']);
	}
	
	if(hasEmail && hasUsrid){
		pwin_user_login_notify_handler(user);
	}
}

function pwin_get_login_user(){
	
	var user = plugin_config['user'];
	
	if(!user){
		return null;
	}
	
	if(!user['logo']){
		user['logo'] = plugin_config['default_user_logo'];
	}
	
	if(user['id'] && user['email']){
		return user;
	}

	return null;
}

function pwin_destory_login_user(){
	
	plugin_config['user'] = null;
	
	var domains = plugin_config['cookie_domain'];
	for(var i = 0; i < domains.length; i++){
		pwin_cookie_destroy('verifycode', '/', domains[i]);
	}	
	
	pwin_user_quit_notify_handler();
}

/**
 * ************************************ sync env ************************************ 
 */

function pwin_user_login_notify_handler(user){
	if(typeof(pwin_user_login_notify) != "undefined" && typeof(pwin_user_login_notify) == 'function'){
		pwin_user_login_notify(user);
		if(plugin_config['other_module_notify']){
			alert('DEBUG:: invoke pwin_user_login_notify func.');
		}
	}else{
		if(plugin_config['other_module_notify']){
			alert('DEBUG:: pwin_user_login_notify func is undefined.');
		}
	}
}

function pwin_user_quit_notify_handler(){	
	if(typeof(pwin_user_quit_notify) != "undefined" && typeof(pwin_user_quit_notify) == 'function'){
		pwin_user_quit_notify();
		if(plugin_config['other_module_notify']){
			alert('DEBUG:: invoke pwin_user_quit_notify func.');
		}		
	}else{
		if(plugin_config['other_module_notify']){
			alert('DEBUG:: pwin_user_quit_notify func is undefined.');
		}
	}	
}

/******************************* IM Init ************************************/
if(plugin_config['chat_plugin_enabled']){
	try{
		window.IM = {
			login: function(email) {
				if (window.IM.proxy) {
					window.setTimeout(function() {
						IM.proxy.login(email, pwin_cookie_get('verifycode'));
					}, 0);
				}
				else {
					IM.delay['login'] = function() {
						IM.login(email);
					};
				}
			},
			logout: function() {
				if (window.IM.proxy) {
					window.IM.proxy.logout();
				}
			},
			ready: function() {
				var iframe = pwin_get_node('im_proxy_frame');
				if (iframe && iframe.contentWindow && iframe.contentWindow.IM) {
					window.IM.proxy = iframe.contentWindow.IM;
					for (f in IM.delay) {
						if (IM.delay[f]) {
							IM.delay[f]();
							IM.delay[f] = null;
						}
					}
				}
			},
			chat: function() {
				if (window.IM.proxy) {
					window.IM.proxy.ui.showFriends();
				}
				else {
					IM.delay['login'] = IM.chat;
				}
			},
			delay: []
		};
	}catch(err){
		//TODO
	}
}	

$(document).ready(function(){
	
	try{
		var topdomain = /\w+\.(?:com|com\.cn|cn|net|org|cc)$/i.exec(document.location.host);
		document.domain = topdomain[0];		
	}catch(err){
		//TODO
	}
	
	$(window).scroll(function(){
		var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        var s;
        (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
        (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
        (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
        (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
        (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

        if (Sys.ie=='6.0'){
        	var ht=$(window).height();//浏览器窗口高度
//        	var st=$(window).scrollTop();//滚动高度 jquery 1.3.2        	
        	var st = document.documentElement.scrollTop;
        	var ph=$('.pwin_popwindow').height();//弹窗高度

        	$('.remotecontrol').css('top',ht+st-45);
        	$('.pwin_popwindow').css('top',ht+st-45-ph);
		}
        
	});	
	
});

/******************************* marquee ************************************/

function pwin_marquee(elemid){
	
	var obj = jQuery("#" + elemid);
	var objW = obj.width();
	var timerid = -1;

	this.init = function(){
		try{			
			var list = obj.find("span");
			for(var loop = 0; loop < 2; loop++){
				for(var i = 0; i < list.length; i++){
					obj.append('<span>' + jQuery(list[i]).html() + '</span>');
				}				
			}
			
			obj.find("a").bind("mouseover",function(){funPause()}).bind("mouseout",function(){funPlay()});
			
			funPlay();
			
		}catch(e){
			alert(e)
		}
	}
	
	function funPlay(){
		clearInterval(timerid);
		timerid = setInterval(move, 100);
	}
	function move(){
		
		var t = obj.css("left");
				
		t = parseInt(t) - 1;
		if(isNaN(t)){
			t = 0;
		}
		
		if(t <= -objW) t = 0;
		obj.css("left", t + "px");
	}
	
	function funPause(){
		clearInterval(timerid);
	}
}

function pwin_banner_marquee(){
	
	plugin_config['marquee'] = true;
}

function pwin_banner_marquee_handle(){
	
	if(pwin_get_node('pwin_banner_content') == null){
		setTimeout(pwin_banner_marquee, 300);
		return;
	}
	
	new pwin_marquee('pwin_banner_content').init();	
}