/**************************************************************
*				163 blog context input  				   	  *
*                                                             *
* Written by:  魏文庆                                       *
* Important: to use this script don't                         *
*            remove these comments                            *
* Version 2.0 (MSIE 6.0 above,Firefox1.0,Netscape.)           *
* Created Date: 2009-2-13									  *
* Copyright：1999-2009 NetEase.com Inc. All rights reserved.  *
**************************************************************/

/** 
 * @fileoverview 
 * 具有上下文提示的输入框
 * 
 * @author  	moonface@(wqwei@corp.netease.com)
 * @version 	1.0 
 * @requires  	prototype.js
 * @see		    
 */

if(NECtrl == undefined){
	var NECtrl = {};
}

/**
 * 具有上下文提示的输入框对象
 * @constructor
 * @class   具有上下文提示的输入框对象
 * @param  {String|Node} oParent  控件所在的父节点ID或者对象
 * @param  {Object}      oOptions 可选配置参数，已处理的参数列表
 * 								  inputId   [String]   - 输入框id
 * 								  className [String]   - 控件关联样式
 *                                onchange  [Function] - 输入框内容发生改变时的回调函数
 *                                onsuccess [Function] - 选中用户名的回调函数
 * 
 */	
NECtrl.CxtInput = Class.create();

/**
 * 控件初始化函数
 * @param {String|Node} oParent		父节点id或者对象
 * @param {Object} 		oOptions	可选配置参数
 */
NECtrl.CxtInput.prototype.initialize = function(oParent,oOptions){
	oParent = $(oParent);
	if(!oParent) return;
	oOptions = oOptions || {};
	this.body = document.createElement('div');
	this.body.className = oOptions.className || '';
	this.cbChange = oOptions.onchange || Prototype.emptyFunction;
	this.cbSuccess = oOptions.onsuccess;
	var	str = '<input type="text" autocomplete="off" class="txt"';
	if (oOptions.inputId)  str += ' id="'+oOptions.inputId+'"'+' name="'+oOptions.inputId+'"';
	str += '/><div class="' +  oOptions.className + '-cxt" style="display:none;"></div>';
	this.body.innerHTML = str;
	this.input = this.body.getElementsByTagName('input')[0];
	this.context = this.body.getElementsByTagName('div')[0];
	Event.observe(this.input,'input',this.onChange.bind(this));
	Event.observe(this.input,'propertychange',this.onChange.bind(this));
	Event.observe(this.input,'keypress',this.onKeyPress.bindAsEventListener(this));
	Event.observe(document,'click',this.onClick.bind(this));
	oParent.appendChild(this.body);
};
/**
 * 输入框输入的消息响应函数
 */
NECtrl.CxtInput.prototype.onChange = function(){
	if(this.input.value == ''){
		this.context.style.display = 'none';
		return;
	}
	this.cbChange(this.input.value,this.onListChange.bind(this));
};
/**
 * 上下文列表变化的回调函数
 * @param {Array} list	上下文列表
 */
NECtrl.CxtInput.prototype.onListChange = function(list){
	if(!list||!list.length) return;
	this.resetList(list);
	this.context.style.display = '';
};
/**
 * 在输入框中输入的消息响应函数
 * @param {Object} event	事件对象
 * 
 */
NECtrl.CxtInput.prototype.onKeyPress = function(event){
	switch(event.keyCode){
		case 9 :
		case 13:
			this.select(this.context.curIndex);
			Event.stop(event);
		break;
		case 38:
			if(this.context.curIndex > 0){
				Element.removeClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1],'cur');
				this.context.curIndex--;
				Element.addClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1],'cur');
			}
		break;
		case 40:
			if(this.context.curIndex < this.list.length - 1){
				Element.removeClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1],'cur');
				this.context.curIndex++;
				Element.addClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1],'cur');
			}
		break;
	}
};
/**
 * 设置上下文列表
 * @param {Array}	list	上下文列表
 */
NECtrl.CxtInput.prototype.resetList = function(list){
	if(!list||!list.length) list = [];
	this.list = list;
	for(var i=0,cs=this.context.childNodes,len=cs.length;i<len;i++)
		this.context.removeChild(this.context.firstChild);
	var frag = document.createDocumentFragment(),tpl=document.createElement('div'),div;
	div = tpl.cloneNode(false);
	div.className = 'hint';
	div.innerText = div.textContent = '请选择用户';
	div.onclick = this.select.bind(this,this.context.curIndex);
	frag.appendChild(div);
	for(var i=0,l=list.length,self = this;i<l;i++){
		div = tpl.cloneNode(false);
		div.innerText = div.textContent = list[i];
		if(i == 0){
			Element.addClassName(div,'cur');
			this.context.curIndex = i;  
		}
		div.onmouseover = this.onMouseOver.bind(this,i);
		frag.appendChild(div);
	}
	this.context.appendChild(frag);
};
/**
 * 鼠标over上下文中的一项的消息响应函数
 */
NECtrl.CxtInput.prototype.onMouseOver = function(index){
	Element.removeClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1], 'cur');
	this.context.curIndex = index;
	Element.addClassName(this.context.getElementsByTagName('div')[this.context.curIndex+1], 'cur');
};
/**
 * 鼠标点击的消息响应函数
 */
NECtrl.CxtInput.prototype.onClick = function(){
	if(this.context.curIndex != undefined&&this.context.style.display != 'none') this.select(this.context.curIndex);
};
/**
 * 选中上下文列表中的一项
 * @param {Number} index	索引值
 */
NECtrl.CxtInput.prototype.select = function(index){
	this.input.value = this.list[index];
	this.context.style.display = 'none';
	this.cbSuccess&&this.cbSuccess();
};


/*******************************************************************************
*修订by zjw for 活动快速登录
*/

/**
* NetEase QuickLogin快速登陆，也可用于首页登陆模块
* @param {Boolean}bFromIndex
*		  是否是首页调用
*/

if (NetEase==undefined){
	var NetEase={};
}
if(NetEase.Act==undefined){
	NetEase.Act={};
}

NetEase.Act.quickLoginTemplate = null;
NetEase.indexLoginTemplate = null;
var type163 = 0;
var typePopo = 1;
var type126 = 2;
var type188 = 3;
var typeVip =4;
var typeYeah =5;
var typePlayer =6;
//blog自动登录cookie，格式type;
var ckLoginInfoKey = "NEBLOG_LOGIN";
//自动登录cookie信息
var ckLoginInfo = {type:null, name:null, pass:null};
var ckPath = "/";
var ckDomain=DomainMap.cookieDomain;
var errInfo = ["用户名或密码不正确，请重新输入", "该网易博客用户名不存在", "超时退出或无权限访问，请重新登录"];

NetEase.Act.QuickLogin = Class.create();
/**
 * bFromIndex [Boolean]	是否首页登录框
 */
NetEase.Act.QuickLogin.prototype = {
	initialize: function(presentShowId, serverName, bFromIndex){
		this.options = Object.extend({
			err:false,
			jsWindowManager:null,
			loginTarget: null,
			invitor:null, //邀请者用户名
			group:null, //邀请者把注册用户加入到的博友分组名（中文）
			app:null //游戏组件app的id
		}, arguments[3] || {});
		//全局变量
		this.presentShowId = presentShowId;
		this.serverName = serverName;
		this.bFromIndex = bFromIndex;		
		this.err = false;
		this.jsWindowManager = this.options.jsWindowManager;
		this.objUsername;
		this.objPassword;
		this.objSetCkCheck;
		this.frmLogin;
		this.divNotice;
		this.btn_login;
		this.btn_reg;
		this.curUserType = 0;
		this.noticeInit = "请输入用户名和密码登录";
		this.noticeAccount = "请输入网易通行证用户名";
		this.noticePassword = "请完整填写登录信息，密码不能为空";
		this.isPwdFromCk = false;
		this.pwdFromCk;
		this.pwdFromCkTrim;	
		this.strUsername;
		this.strPassword;
		this.qLoginZone = null;
		this.loginTarget = this.options.loginTarget; 
		this._load();
	},
	_load: function(){	
		//从cookie得到用户名，密码等。get Login info  from last login .
		getLoginCookie();
		
		if(!this.bFromIndex || this.presentShowId=="qIndexLoginDiv"){
			//快速登录
			if (NetEase.Act.quickLoginTemplate == null) 
				NetEase.Act.quickLoginTemplate = NetEase.Act.quicklogin_jst;
			//注册通行证按钮的跳转地址
			var regUrl = "http://reg.163.com/reg0.shtml?product=blog&url=http://blog.163.com/ntesRegBlank.html";
			if(this.options.invitor != null && this.options.group != null){
				regUrl += encodeURIComponent("?invitor=" + this.options.invitor + "&group=" + this.options.group);
				if(this.options.app != null)
					regUrl += encodeURIComponent("&app=" + this.options.app);
			}
			var data={err:false, regUrl:regUrl};
			var result = NetEase.Act.quickLoginTemplate.processUseCache(data);
			if(this.presentShowId){
				this.qLoginZone = this.jsWindowManager.createWindow(this.presentShowId, {
					className:'g_win_5',width: 408, height:236,hideFlash:true,
					title:'登录', onTop:true,notKeepPos:true
				});			
				this.qLoginZone.panel.innerHTML = result;	
				this.qLoginZone.showWindow();
			}
		}else{
			//首页登录
			if (NetEase.indexLoginTemplate == null) 
				NetEase.indexLoginTemplate = indexlogin_jst;
			
			var data={err:false};
			var result = NetEase.indexLoginTemplate;//.process(data);
			$("outLoginDiv").innerHTML = result;	
		}
		var input = new NECtrl.CxtInput('div_in_username',{inputId:'in_username',className:'cxt-input',onchange:neteasebloglogin_getList,onsuccess:function(){$('in_password_new').focus();}});
		this.frmLogin = $("frmLogin");
		this.frmLogin.setAttribute('autocomplete', 'off');
		this.divNotice = $("notice_bar");
		this.objUsername = $("in_username");
		this.objPassword = $("in_password_new");
		this.objSetCkCheck = $("setCookieCheck");
				
		if(document.all) { // ie
			this.objPassword.attachEvent("onfocus", this.fnPassOnFocus.bind(this));
			this.objPassword.attachEvent("onblur", this.checkPassword.bind(this));
			$("qLoginButt").attachEvent("onclick", this.dologin.bind(this));
			this.frmLogin.attachEvent("onkeypress", this.frmDologinIE.bind(this));
			this.objSetCkCheck.attachEvent("onclick", this.changeCookieCheck.bind(this));
		}
		else {
			this.objPassword.addEventListener("focus", this.fnPassOnFocus.bind(this), true);
			this.objPassword.addEventListener("blur", this.checkPassword.bind(this), true);			
			$("qLoginButt").onclick = this.dologin.bind(this);
			this.frmLogin.onkeypress = this.frmDologin.bind(this);	
			this.objSetCkCheck.onclick = this.changeCookieCheck.bind(this);			
		}	
		this.selectUserType();
	},
	
	showWindow: function(target, title, submitButtonValue){
		if(target){
			this.loginTarget = target;
		}
		if(title){
			this.jsWindowManager.updateTitle(this.presentShowId, title);
		}
		if(submitButtonValue){
			$("qLoginButt").value = submitButtonValue;
		}	
		this.qLoginZone.showWindow();
	},
	
	frmDologinIE: function(){
		if(event.keyCode==13) 
			this.dologin();
	},
	frmDologin: function(event){
		if(event.keyCode==13) 
			this.dologin();
	},
	
	changeCookieCheck:function(){
		if(!this.objSetCkCheck.checked){	
			//get Login type from last login 
			clearLoginCookie();			
		}
	},
	
	checkUsername: function(){	
		var strUsername = this.getUserName();
		
		//不能输入特殊字符，用户名只能由不区分大小写的字母、数字、点、减号、下划线组成
		strUsername=Trim(strUsername);
		var filter = /^[@0-9a-zA-Z_\.\-\s]+$/;
        if (false==filter.test(strUsername) || strUsername.indexOf(" ")>0){
			this.divNotice.innerHTML = "请输入正确的用户名";
			return false;
        }
        
		if (strUsername.length>0){		
			this.divNotice.innerHTML = this.noticeAccount;
		} else {
			this.divNotice.innerHTML = this.noticeInit;
		}	
		return true;
	},
	
	//不响应onfocus事件，只做从cookie获得密码
	checkPasswordFocus: function(){
		var strPassword = this.objPassword.value;
		if(strPassword==""){
			strPassword = ckLoginInfo.pass;
			if(null != strPassword){
				this.pwdFromCk = strPassword;
				this.pwdFromCkTrim = strPassword;//.substring(0,11);			
				this.isPwdFromCk = true;
				this.objPassword.value = strPassword;//.substring(0,11);
			}
		}
		this.checkPassword();
	},
	
	//响应密码输入框的onfocus事件
	fnPassOnFocus: function(){
		this.objPassword.select();
		this.checkPassword();
	},
	
	checkPassword: function(){
		var strPassword = this.objPassword.value;
		if(null==strPassword || strPassword==""){
			this.isPwdFromCk = false;
		}
		
		var rePassword = /^[\s]*$/g;
			if (strPassword.match(rePassword) != null){
				this.divNotice.innerHTML = this.noticePassword;
				//this.objPassword.style.backgroundColor = "#fff";
				return false;
			} else {
				this.divNotice.innerHTML = this.noticeInit;
				//this.objPassword.style.backgroundColor = "#fff";
				return true;
			}
	},
	
	dologin: function(){
		if(this.checkUsername() && this.checkPassword()) { //顺利登录
			this.divNotice.innerHTML = "正在登录，请稍候...";
			this.objUsername.disabled=true;
			this.objPassword.disabled=true;
			
			if(document.all){
				this.objUsername.detachEvent("onblur", this.checkUsername);
				this.objPassword.detachEvent("onfocus", this.checkPassword);
				this.objPassword.detachEvent("onblur", this.checkPassword);
		
				$("frmLogin").detachEvent("onkeypress", this.frmDologinIE);	
				$("qLoginButt").detachEvent("onclick", this.dologin);
				this.objSetCkCheck.detachEvent("onclick", this.changeCookieCheck);				
			}else {
				this.objUsername.removeEventListener("blur", this.checkUsername, true);
				this.objPassword.removeEventListener("focus", this.checkPassword, true);
				this.objPassword.removeEventListener("blur", this.checkPassword, true);
			}
			
			var strPassword = this.objPassword.value;
			var strPwdOld;
			if(!this.isPwdFromCk || strPassword != this.pwdFromCkTrim){
				if(this.getCurUserType()==typeVip)
					strPassword = this.pwd_js_string(strPassword);
				if(this.getCurUserType()==type163  || this.getCurUserType()==typeVip){
					strPassword = strPassword.substring(0,16);
				}else if(this.getCurUserType()==typePopo){
					strPassword = strPassword.substring(0,21);
				}			
				strPwdOld = strPassword;
				strPassword = hex_md5(strPassword);		
			}else{
				//get from cookie
				strPassword = this.pwdFromCk;
				strPwdOld = strPassword;
			}
			
			var strUsername = Trim(this.objUsername.value.toLowerCase());	
			strUsername=neteaselogin_getBlogusername(strUsername);
			var strUsernameOld = strUsername;
			
			
			if(this.getCurUserType() == type126 || this.getCurUserType() == type188 || this.getCurUserType() == typeYeah){				
				strPassword = strPwdOld;//.replace(/#/g,"%23");			
			}
			
			if(this.objSetCkCheck.checked){
				//username
				clearLoginCookie();
				
				setLoginCookie(1, strUsernameOld);
				setLoginCookie(2, strPassword);
			}else{
				clearLoginCookie();
			}			
			var bSavePass = this.objSetCkCheck.checked;
			//save cookie for login type
			setLoginCookie(0, this.getCurUserType());
			
			this.strUsername = strUsername;
			this.strPassword = strPassword;
			if(this.bFromIndex || this.presentShowId=="qIndexLoginDiv"){
				loginFromIndex(strUsername, strPassword,bSavePass);
			}else{
				UserBean.check(strUsername, strPassword,this.preloginCb.bind(this));	
				//UserBean.checkPassportVN (strUsername, strPassword,bSavePass,this.getCurUserType(),this.preloginCb.bind(this));	
			}		
		}
		return false;
	},
	preloginCb: function(b){
		if (this.getCurUserType()==typePlayer) {
					var strUsername = this.strUsername;
					var strPassword = this.strPassword;
					PlayerBean.getPlayerUserName(strUsername, strPassword, function(v){
							this.strUsername=v;
							this.dologinCb("not reg!!");
						}.bind(this)
					);					
					return;
		}
		this.dologinCb(b);
	},
	calTarget: function() {
				//modified by xcc, 用户可以指定loginTarget
				if (this.loginTarget==null){
					if ( $("$_oppoPageUrlForLogin")&&(UD.hostName == this.strUsername) ){
					  if (UD.hostPath =="") //如果是个性化域名
					     this.loginTarget = "http://"+DomainMap.getParentDomain(this.strUsername)+$("$_oppoPageUrlForLogin").value;					 
					  else 
					     this.loginTarget = $("$_oppoPageUrlForLogin").value;
					}
					else
						this.loginTarget=window.location;
				} 			
	},
	getCurUserType:function(){
		var  strUsername=this.objUsername.value;
		for(var i =0;i<neteasebloglogin_posts.length;i++){
			if (strUsername.endsWith(neteasebloglogin_posts[i]))
				return neteasebloglogin_types[i];
		}
		return -1;
	},
	getUserName:function(){
		var strUsername = this.objUsername.value;
		return neteaselogin_getBlogusername(strUsername);		
	},
	getFullUserName:function(userName){		
		for(var i =0;i<neteasebloglogin_blogsuffixs.length;i++){
			if (neteasebloglogin_blogsuffixs[i]!="" && userName.endsWith(neteasebloglogin_blogsuffixs[i]))
				return userName.replace(neteasebloglogin_blogsuffixs[i],neteasebloglogin_posts[i]);
		}
		return userName+"@163.com";
	},
	dologinCb: function(b){
		if(b!=null){
			this.calTarget();
			if (b=="not reg!!") {
				//urs 5ms can't 2 open
				var strEntry = "urs";
				if (this.getCurUserType()==type188) strEntry="188";
				if (this.getCurUserType()==typePlayer) strEntry="game";
				
				if(this.options.invitor != null && this.options.group != null){
					var url = "http://blog.163.com/passportIn.do?in_username="+this.strUsername+"&in_password="+this.strPassword +
						"&invitor=" + this.options.invitor + "&group=" + this.options.group;
					if(this.options.app != null && this.options.app>0)
						url += "&app=" + this.options.app;
					location.href= url + "&type="+this.getCurUserType() + "&target="+encodeURIComponent(this.loginTarget)+"&entry="+strEntry;
				}else{
					location.href="http://blog.163.com/passportIn.do?in_username="+this.strUsername+"&in_password="+this.strPassword + "&target="+encodeURIComponent(this.loginTarget)+"&type="+this.getCurUserType()+"&entry="+strEntry;
				}
			} else {
				Cookie.set("NETEASE_AUTH_USERNAME",this.strUsername,0,"/",".163.com");				
				location.href =  "http://blog.163.com/loginGate.do?username="+this.strUsername+"&target="+encodeURIComponent(this.loginTarget);
				
			}
		}else{
			//this.objUsername.value = "";
			this.objPassword.value = "";
			this.objUsername.disabled=false;
			this.objPassword.disabled=false;
			this.divNotice.innerHTML = "<span class='clr03'>用户名或密码不正确，请重新输入。</span>";
			$("in_username").focus();
		}
		
		return false;
	},
	
	pwd_js_string: function(s){
		return String(s).replace(/\\/g, "\\\\").replace(/'/g, "\\\'").replace(/"/g, "\\\"");
	},
	selectUserType: function(){					
		//填充用户名和密码
		this.objUsername.value ="";
		this.objPassword.value ="";
		var userNameInit = ckLoginInfo.name;		
		if(userNameInit){
			this.objUsername.value = this.getFullUserName(userNameInit);
			this.checkPasswordFocus();
			this.objSetCkCheck.checked = true;
			this.noticeAccount = "请点击登录按钮";
			this.noticeInit = "请点击登录按钮";
		}else{
			this.objSetCkCheck.checked = false;		
		}		
		
		//处理出错信息
		var urlStr = window.location.href;
		var i = urlStr.indexOf("err=");
		if(i != -1){
			var errStr = urlStr.charAt(i+4);
			if(errStr=="1" || errStr=="2" || errStr=="3"|| errStr=="4"){
				var n = parseInt(errStr);
				if (n>3)n=1;
				this.noticeInit = this.noticeAccount = "<span class='cr'>"+errInfo[n-1]+"</span>";
			}
		}
		this.checkUsername();	
		if ($("in_username")) try{Field.activate("in_username");}catch(e){};		
		return false;
	}
	
}

function neteaselogin_getBlogusername(username){
	return  username.replace("@163.com","").replace("@126.com","@126").replace("@yeah.net","@yeah").replace("@popo.163.com",".popo").replace("@188.com","@188").replace("@vip.163.com",".vip").replace("@game.163.com","");
}


//从cookie得到登录类型、用户名、密码
function getLoginCookie(){
	var a;
	var v = Cookie.get(ckLoginInfoKey);
	if(v){
		a = v.split("|");
		try{
			if (a.length>3){
				Cookie.clear(ckLoginInfoKey, ckPath);
				return ;
			}
		}catch(e){}
		var type = null;
		if(a[0])
			ckLoginInfo.type = parseInt(a[0]);
		if(ckLoginInfo.type == null || ckLoginInfo.type == undefined || ckLoginInfo.type<0 || ckLoginInfo.type>5){
			ckLoginInfo.type = null;
			//类型取不到，用户名和密码为空
			return;
		}
		
		if(a[1] != null && a[1] != undefined && a[1] != "null" && a[2] != null && a[2] != undefined){
			ckLoginInfo.name = a[1]; 
			//取密码，从第二个|开始			
			ckLoginInfo.pass = a[2];
		}
	}
}

//设置cookie登录类型(which=0)、用户名(which=1)、密码(which=2)
function setLoginCookie(which, value){
	getLoginCookie();
	if(which==0)
		ckLoginInfo.type = value;
	else if(which==1)
		ckLoginInfo.name = value;
	else if(which==2)
		ckLoginInfo.pass = value;
		
	Cookie.clear(ckLoginInfoKey, ckPath);
	//cookie value将以ascii编码传输，类似url encoding,服务器端需要decode
	Cookie.set(ckLoginInfoKey, ckLoginInfo.type + "|" + ckLoginInfo.name + "|" + ckLoginInfo.pass, 30, ckPath, ckDomain);			
}

//清除ckLoginInfoKey的cookie，同时也清除ckLoginInfo的name和pass，但保留type
function clearLoginCookie(){
	ckLoginInfo.name = null;
	ckLoginInfo.pass = null;
	Cookie.clear(ckLoginInfoKey, ckPath);	
	if(ckLoginInfo.type != null && ckLoginInfo.type != undefined && ckLoginInfo.type != "null")
		Cookie.set(ckLoginInfoKey, ckLoginInfo.type, 30, ckPath, ckDomain);			
}

var Cookie = {
	set : function(name, value, expirationInDays, path, domain) {
		var cookie = escape(name) + "=" + escape(value);
		if (expirationInDays) {
			var date = new Date();
			date.setDate(date.getDate() + expirationInDays);
			cookie += "; expires=" + date.toGMTString();
		} 

		if (path) {
			cookie += ";path=" + path;
		}
		if (domain) {
			cookie += ";domain=" + domain;
		}
		
		document.cookie = cookie;

		if (value && (expirationInDays == undefined || expirationInDays > 0) && !this.get(name)) {
			return false;
		}
	},

	clear : function(name, path) {
		this.set(name, "", -1, path, ckDomain);
	},
	
	get : function(name) {
		var pattern = "(^|;)\\s*" + escape(name) + "=([^;]+)";
		var m = document.cookie.match(pattern);
		if (m && m[2]) {			
			return unescape(m[2]);
		}else{ 
			return null;
		}
	}
}   

//快速登录
NetEase.Act.quicklogin_jst = new String('\
<div>\
   <form name="frmLogin"  id="frmLogin"  method="post">\
			<table border="0" cellpadding="0" cellspacing="0">\
				<tr class="row0"><td width="40">&nbsp;</td><td><div class="mgntxt clr02" id="notice_bar" style="display-left:0px;">请输入网易通行证用户名和密码登录</div></td></tr>\
				<tr><td class="fcb">用户名</td><td><div id="div_in_username"></div></td></tr>\
				<tr><td class="fcb">密　码</td><td><input type="password" tabindex="2" class="txt" name="in_password_new" id="in_password_new"/></td></tr>\
				<tr><td>&nbsp;</td><td><a href="http://reg.163.com/RecoverPasswd1.shtml" tabindex="4" target="_blank" id="getPass_add" class="a-pwd">忘记密码？</a><input name="setCookieCheck" tabindex="3" id="setCookieCheck" type="checkbox"/><label for="setCookieCheck">自动登录</label></td></tr>\
				<tr><td>&nbsp;</td><td><div class="btns"><a href="${regUrl}" tabindex="6" target="_blank" class="a-reg">注册通行证 --></a><input class="ok" tabindex="5" type="button" value="登　录" id="qLoginButt"/></div></td></tr>\
			</table>\
   </form>\
</div>');
var neteasebloglogin_blogsuffixs = ['','.popo','@126','@188','.vip','@yeah','@game'];
var neteasebloglogin_posts = ['@163.com','@popo.163.com','@126.com','@188.com','@vip.163.com','@yeah.net','@game.163.com'];
var neteasebloglogin_types=[type163,typePopo,type126,type188,typeVip,typeYeah,typePlayer];

function	getNameSuffix(type){
		for(var i =0;i<neteasebloglogin_types.length;i++){
			if (type==neteasebloglogin_types[i])
				return neteasebloglogin_blogsuffixs[i];
		}
		return -1;
};
function neteasebloglogin_getList(value,cb){	
		if(value==undefined||value==''||!cb) return;
		var arr = /([^@]*)(.*)/.exec(value),list=[];
		var pre = arr[1],post = arr[2];
		neteasebloglogin_posts.each(function(pt){
			if(pt.indexOf(post)!=-1){
				list.push(pre+pt);
			}
		});
		cb(list);
}
/**登录浮层*/
String.prototype.processUseCache=function(context,optFlags){
if(this.__template__==null)
this.__template__=TrimPath.parseTemplate(this,null);
if(this.__template__!=null)
return this.__template__.process(context,optFlags);
return this;
}
g_quickLoginCon_new = null;
var jsWindowManager_new = new NetEase.JSWindowManager({simpleDrag:true,useDragOpacity:true});
function showLoginDlg_New(serverName, loginTarget){
	if(g_quickLoginCon_new == null){
		g_quickLoginCon_new = new NetEase.Act.QuickLogin("qLoginDivNew", serverName, false, {err:false, jsWindowManager:jsWindowManager_new, loginTarget:loginTarget});
    }
	g_quickLoginCon_new.showWindow(loginTarget);
}
/**新版登录调用方法*/
function login163(serverName, loginTarget){
	showLoginDlg_New(serverName, loginTarget);
}
String.prototype.endsWith = function(str){return (this.match(str+"$")==str)}
function PlayerBean() { }
PlayerBean.getPlayerUserName = function(p0, p1, callback) {dwr.engine._execute('/dwr', 'PlayerBean', 'getPlayerUserName', p0, p1, callback);}
//function UserBean() { }
if (UserBean == null) var UserBean = {};
UserBean._path="/dwr";
UserBean.clearSession = function(callback) {dwr.engine._execute(UserBean._path, 'UserBean', 'clearSession', false, false, callback);}
UserBean.check = function(p0, p1, callback) {dwr.engine._execute(UserBean._path, 'UserBean', 'check', p0, p1, false, false, false, callback);}
UserBean.checkPassport = function(p0, p1, p2, callback) {dwr.engine._execute(UserBean._path, 'UserBean', 'checkPassport', p0, p1, p2, false, false, false, callback);}
UserBean.checkPassportVN = function(p0, p1, p2, p3, callback) {dwr.engine._execute(UserBean._path, 'UserBean', 'checkPassportVN', p0, p1, p2, p3, false, false, false, callback);}
UserBean.getProvinceAndCity = function(callback) {	dwr.engine._execute(UserBean._path, 'UserBean', 'getProvinceAndCity', false, false, callback);}  	          
