/**
 * @author zhangyi
 */

/**
 * 通行证、密码框、登录按钮、验证码、是否自动登录、登录错误显示信息、验证码、刷新验证码、出现cookie调用的函数、成功后调用的函数、成功后跳转的href
 */
var loginModel = GD.create();
loginModel.prototype = {
	info : {
		msg_1 : "::潇湘会员初次可直接登录",
		msg_2 : "::请输入您的密码",
		msg_3 : "::原潇湘书院用户可直接登录",
		msg_4 : "::通行证的格式不正确,请重新输入",
		msg_5 : "::正在提交数据，请稍候...",
		msg_6 : "::服务器繁忙,请稍候重试！",
		msg_7 : "&nbsp;&nbsp;",
		msg_8 : "::请输入验证码,4位数字",
		msg_9 : "::请输入正确的验证码,4位数字『非全角数字』",
		msg_10: "通行证非法,请检查！",
		msg_11: "密码非法,请检查！",
		msg_12: "验证码非法,请检查！",
		msg_13: "请输入正确的验证码,4位数字"
	},
	setInfo : function(msg) {
		if(this.loginInfo.size() > 0) this.loginInfo.html(msg).removeClass("login_error").removeClass("login_btn_disabled");
	},
	initialize : function() {
		var me = this;
		//初始化的参数
		this.setOptions();
		this.init();		
		if(GD.CK("NV") === "1") me.setImg();
	},
	setOptions : function() {
		/**
		 * 通告证、密码、登录按钮、验证码输入框、自动登录框、验证码的图片、换验证码、验证码的父容器
		 */
		this.userPt = $("#userPt");
		this.pwd = $("#pwd");
		this.toLogin = $("#toLogin");
		this.ipt_verify = $("#ipt_verify");
		this.loginInfo = $("#loginInfo");
		this.auto_login = $("#auto_login");
		this.validImage = $("#validImage");
		this.changeValid = $("#changeValid");
		this.validParent = this.ipt_verify.parent();
	},
	setImg : function() {
		var imgURL = "/do/passport/imageVerifyCode.do?paramName=LOGIN&kk="+(new Date).getTime(),me = this;
		setTimeout(function() {
			me.validImage.get(0).src = imgURL;
			/*if(me.ipt_verify.val() != "") {
				me.ipt_verify.trigger("focus");
			}*/
		},10);
	},
	init : function() {
		var me = this;
		/**
		 * 更改验证码
		 */
		me.validImage.click(function() {me.setImg();});
		me.changeValid.click(function() {me.setImg();});
		/**
		 * 通行证事件 密码事件
		 */
		this.setEvent(me.userPt,me.info.msg_1);
		this.setEvent(me.pwd,me.info.msg_2);
		this.setEvent(me.ipt_verify,me.info.msg_8);
		
		me.toLogin.click(function() {me.Valid()});
	},
	Valid : function() {
		var me = this;
		if(GD.trim(me.userPt.val()) === "") {
			if(loginModel.$alert) alert(me.info.msg_10);
			me.userPt.trigger("focus");
			return true;
		}
		if(me.pwd.val() === "") {
			if(loginModel.$alert) alert(me.info.msg_11);
			me.pwd.trigger("focus");
			return true;
		}
		if(me.toLogin.hasClass("login_btn_disabled")) return true;
		/*me.userPt.get(0).blur();
		me.pwd.get(0).blur();
		me.ipt_verify.get(0).blur();*/
		me.toLogin.trigger("focus");
		
		var show = this.validParent.is(":visible");
		if(show) {
			var val = me.ipt_verify.val();
			if(val == "") {
				if(loginModel.$alert) alert(me.info.msg_12);
				me.setInfo(me.info.msg_8);
				me.ipt_verify.get(0).focus();
				return false;
			} else if(!/\d{4}/.test(val)){
				if(loginModel.$alert) alert(me.info.msg_13);
				me.setInfo(me.info.msg_9);
				me.ipt_verify.get(0).focus();
				return false;
			}
		}
		
		var param = {
			"pPort" : GD.trim(me.userPt.val()),
			"pWord" : me.pwd.val(),
			"uct" : (me.auto_login.get(0).checked)?1:0
		};
		if(show) {param["verify"] = parseInt(val,10);}
		
		me.setInfo(me.info.msg_5);
		me.toLogin.addClass("login_btn_disabled").attr("disabled",true);
		
		//正在登录
		me.$loading();
		
		Ajax("/do/passport/login.do",param,function(json) {
			me.toLogin.removeClass("login_btn_disabled").attr("disabled",false);
			var code = json["code"];
			if(code == "0") {
				//登录成功调用
				me.$success();
			} else {
				if(code == '10010') {
					var tmpInfo = json["obj"];
					var str = escape(tmpInfo["SPassport"]) + "~" + escape(tmpInfo["SNickname"]) + "~" + escape(tmpInfo["SEmail"]); 
					GD.Cookie.set(new GD.Cookie("UAC",str,"","/",".9917.com"),"",true);
					//top.location.href = "http://www.9917.com/register/regadd.html";
					top.location.href = "http://www.9917.com/register/regadd.html" + (top.location.host == "kd.9917.com"?"?gid=1":"");
				} else {
					//登录失败
					me.$fail();
				
					if(GD.CK("NV") === "1") {
						me.setImg();
						if(!me.validParent.is(":visible")) {
							me.validParent.show();
						}
						//显示验证码
						me.$showValid();
					}
					//var msg = json["msg"] || errorInfo.ajaxErr;
					var msg = "通行证或密码错误，请重新输入";
					me.loginInfo.html(msg.uniLeft(36,"...")).addClass("login_error");
					if(loginModel.$alert) alert(msg);
				}
			}
		},function() {
			//登录失败
			me.$fail();
			
			me.toLogin.removeClass("login_btn_disabled").attr("disabled",false);
			alert("服务繁忙，请稍候重试。");
		});
	},
	setEvent : function(obj,msg) {
		var me = this;
		obj.focus(function() {
			if(this.value === "") {me.setInfo(msg)}
		}).keyup(function() {
			if(this.value == "") me.setInfo(msg);
			else me.setInfo(me.info.msg_7);
		}).pressEnter(function() {
			me.Valid();
		});
	},
	$showValid : function() {},
	$success : function() {
		var historyURL = location.href.match(/service=(.*)/); 
		if(!historyURL) {
			var U = GD.userIdentity();
			top.document.location.href = GD.getUserHome(U[0]) + "/my";
		} else {
			historyURL&&historyURL[1] ? document.location.href = historyURL[1] : history.back();
		}
	},
	$loading : function(){},
	$fail : function(){}
}

//单例模式
loginModel.getInstance = function(_type) {
	//_type = _type || true;
	loginModel.$alert = _type?true:false;
	if(!loginModel._default) {
		loginModel._default = new loginModel();
	}
	return loginModel._default;
}
