//
var user = {};
//
user.checkCardType = function(value){
	return true;
	/*
	if (value != "") {
		if ($('#sel-card-type').val() == "") {
			return false;
		}
	}
	return false;*/
};
//
user.validIdCard = function(value){
	var card_type = $('#sel-card-type').val();
	if (value != "") {
		//if (card_type != "") {
		if (card_type == 1) {
			return isIdentityCard(value);
		}
		else {
			return /^[a-zA-Z0-9\-]*$/.test(value);
		}
		//}
	}
};
//
//validate date,date format:yyyy-mm-dd
user.isBirthday = function(date){
	var reg = /^\d{4}-((0{0,1}[1-9]{1})|(1[0-2]{1}))-((0{0,1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;
	if (!reg.test(date)) {
		return false;
	}
	else {
		var arr_hd = date.split("-");
		var dateTmp;
		dateTmp = new Date(arr_hd[0], parseFloat(arr_hd[1]) - 1, parseFloat(arr_hd[2]));
		if (dateTmp.getFullYear() != parseFloat(arr_hd[0]) ||
		dateTmp.getMonth() != parseFloat(arr_hd[1]) - 1 ||
		dateTmp.getDate() != parseFloat(arr_hd[2])) {
		
			return false;
		}
	}
	return true;
};
//user module all message
user.messages = {
	login: {
		username: "请输入用户名",
		passsord: "请输入密码",
		invalid: "用户名或密码错误",
		help: "用户名用于账号的登录，可以使用英文、数字或中文，英文不区分大小写，字符长度为4到25个字符。",
		required: "请输入您的用户名",
		valid: "该用户名可以使用",
		//invalid: "用户名格式不正确",
		minlength: "用户名至少{0}个字符",
		existed: "用户名已被占用"
	},
	recovery_password: {
		required: {
			old_pwd: "请输入您的原密码",
			new_pwd: "请输入您的新密码",
			confirm_pwd: "请再次输入您的新密码"
		},
		invalid: {
			old_pwd: "您的原密码错误",
			minlength: "密码至少{0}位",
			euqalto: "您输入的两次密码不一致"
		}
	},
	username: {
		help: "用户名用于账号的登录，可以使用英文、数字或中文，英文不区分大小写，字符长度为4到25个字符。",
		required: "请输入您的用户名",
		valid: "该用户名可以使用",
		invalid: "用户名格式不正确",
		minlength: "用户名至少{0}个字符",
		existed: "用户名已被占用"
	},
	/*login: {
		help: "用户名用于账号的登录，可以使用英文、数字或中文，英文不区分大小写，字符长度为4到25个字符。",
		required: "请输入您的用户名",
		valid: "该用户名可以使用",
		invalid: "用户名格式不正确",
		minlength: "用户名至少{0}个字符",
		existed: "用户名已被占用"
	},*/
	password: {
		help: "安全密码包含6到25个字符，由大写字母、小写字母、数字和符号组成。",
		required: "请输入您的密码",
		minlength: "密码至少{0}个字符",
		equalToUsername: "密码不能与用户名相同"
	},
	confirm_password: {
		help: "请再次输入您的密码。",
		required: "请再次输入您的密码",
		equalTo: "您输入的两次密码不一致"
	},
        confirmmotdepasse: {
		help: "请再次输入您的密码。",
		required: "请再次输入您的密码",
		equalTo: "您输入的两次密码不一致"
	},

	email: {
		help: "认证邮箱作为您顺利找回密码的唯一凭证，输入后不可修改！请谨慎填写为真实有效的邮箱。",
		required: "请输入电子邮件地址",
		valid: "该邮件地址可以使用！",
		invalid: "请输入正确格式的电子邮件",
		existed: "该邮件地址已经存在"
	},
	gender: {
		required: "请选择您的性别"
	},
	num_identity: {
		help: "证件号码将作为领取奖品的重要凭证。",
		invalid: "请输入有效的证件号码",
		cardType: "请选择您的证件类型"
	},
	birthdate: {
		help: "填写生日便于参加我们更多的活动。",
		invalid: "请选择有效的出生日期"
	},
	captcha: {
		help: "不区分大小写。",
		required: "请输入验证码",
		invalid: "验证码输入错误"
	},
	region: {
		required: "请选择您所在的地区"
	},
	newsletter: {
		required: "您愿意收到摩登绅士网个性化Newsletter吗？"
	},
	name: {
		invalid: "有效姓名必须为字母或汉字开头，可由汉字、字母和数字组成",
		minlength: "姓名至少{0}个字符"
	},
	handphone_number: {
		invalid: "请输入有效的电话号码"
	},
	zip_code: {
		invalid: "请输入有效的邮政编码"
	}
};
//private method
(function($){
	function userLogin(){
		var form = $("#form-login");
		var text = form.find(".text");
		//empty all error message
		form.find(".error").text("");
		//first input on focus
		$(text[0]).focus();
		$.each(text, function(i, n){
			//submit for key down the enter
			$(n).keydown(function(e){
				if (e.keyCode == "13") {
					$("#btn-login-submit").click();
				}
			});
			//empty error message on current input
			$(n).focus(function(){
				$(this).next(".error").text("");
				//empty the login invalid message
				$(".msg-row .error").text("");
			});
		});
		//
		//submit
		$("#btn-login-submit").click(function(){
			var result = true;
			$(".msg-row .error").text("");
			if ($(text[0]).val() == "") {
				$(text[0]).next(".error").text(user.messages.login.username);
				result = false;
			}
			if ($(text[1]).val() == "") {
				$(text[1]).next(".error").text(user.messages.login.passsord);
				result = false;
			}
			if (!result) 
				return false;
			
			form.find(".btn-row").hide();
			$("<p></p>").appendTo(form).addClass("loading-row").text("提交中..");
                        user.validate();
		});
	}
	function pwdRecovery(){
		//add form fields validate rules
		var form = $("#form-recovery");
		try {
			form.validate({
				rules: {
					email: {
						required: true,
						email: true
					}
				}
			});
		} 
		catch (e) {
		}
		$('#txt-email').keydown(function(e){
			if (e.keyCode == "13") {
				form.find(".submit").click();
				return false;
			}
		});
		//
		//submit
		form.find(".submit").click(function(e){
			if (form.valid()) {
				//
				//test code
				//send email for ajax
				form.find(".btn-row").hide();
				form.find(".loading-row").remove();
				form.find(".btn-row").after("<p class='loading-row'>提交中...</p>");
				var result = user.sendEmail($("#txt-email").val());
				setTimeout(function(){
					form.find(".loading-row").remove();
					form.find(".btn-row").show();
					if (result) {
						$("#recovery-step1").hide();
						$("#recovery-step2").show().find("#user-email").text($("#txt-email").val());
					}
					else {
						alert("邮件发送失败，请重新尝试！");
						$('#txt-email').val("");
					}
				}, 500);
				//test code
				//
			}
		});
	}
	function pwdChange(){
		var form = $("#form-pwd-change");
		try {
			form.validate({
				rules: {
					old_pwd: "required",
					password: {
						required: true,
						minlength: 6
					},
					confirm_password: {
						required: true,
						equalTo: "#txt-pwd"
					}
				},
				messages: {
					old_pwd: user.messages.recovery_password.required.old_pwd,
					password: {
						required: user.messages.recovery_password.required.new_pwd,
						minlength: $.format(user.messages.recovery_password.invalid.minlength)
					},
					confirm_password: {
						required: user.messages.recovery_password.required.confirm_pwd,
						equalTo: user.messages.recovery_password.invalid.euqalto
					}
				}
			});
		} 
		catch (e) {
		}
		$("#txt-pwd").blur(function(){
			$("#txt-confirm-pwd").valid();
		});
		
		$.each(form.find(".text"), function(i, n){
			$(n).keydown(function(e){
				if (e.keyCode == "13") {
					form.find(".submit").click();
					return false;
				}
			});
		});
		
		form.find(".submit").click(function(){
			if (form.valid()) {
				//
				//test code
				//validate old password
				form.find(".btn-row").hide();
				form.find(".loading-row").remove();
				form.find(".btn-row").after("<p class='loading-row'>提交中...</p>");
				var result = user.validPassword($("#txt-old-pwd").val());
				setTimeout(function(){
					form.find(".loading-row").remove();
					form.find(".btn-row").show();
					if (result) {
						$("#step1").hide().next("#step2").show();
					}
					else {
						if ($("#txt-old-pwd").next().is(".error")) 
							$("#txt-old-pwd").next(".error").show().text(user.messages.recovery_password.invalid.old_pwd);
						else 
							$("#txt-old-pwd").after("<label class='error'></label>").next(".error").text(user.messages.recovery_password.invalid.old_pwd);
					}
				}, 500);
			}
		});
	}
	$(function(){
		//
		//login
		//login box
		$("#btnSignIn").click(function(){
			commonFn.winOpen($("#login-box"));
                        $("#login-box").css("filter","progid:DXImageTransform.Microsoft.BasicImage(grayscale=0)");
			$("#form-login .text").val("");
			$("#form-login .error").text("");
		});
		userLogin();
		
		//pwd revovery
		//show password recovery box
                
		$("#btn-login-recovery").click(function(){
			//reset the box
			$("#recovery-step2").hide();
			$("#recovery-step1").show();
			$("#form-recovery .error").text("");
			$('#txt-email').val("").focus();
			//open box
			//commonFn.winOpen($("#pwd-recovery"));
                        //$("#pwd-recovery").css("filter","progid:DXImageTransform.Microsoft.BasicImage(grayscale=0)");
		});
		//
		//pwdRecovery();  //modified by zengrong
		//close
		$("#form-recovery .confirm").click(function(){
			$.unblockUI();
		});
		
		//
		//password change
		//test button: please change the element id
		/*$("#chg-pwd").click(function(e){
			commonFn.stopDefault(e);
			$("#form-pwd-change #step1").show().next("#step2").hide();
			$("#form-pwd-change .text").val("");
			$("#form-pwd-change .text:first").focus();
			$("#form-pwd-change .error").text("");
			commonFn.winOpen($("#pwd-change"));
		});*/
		//pwdChange();
		
		//
		//register
		//set checkbox default
		var checkDefault = function(){
			var checkbox = $("input[name='send']");
			$(checkbox[0]).attr("checked", "checked");
			$(checkbox[1]).attr("checked", "");
		};
		checkDefault();
		$("input[name='newsletter']").attr("checked", "");
		$("input[name='gender']").attr("checked", "");
		//
		//visible or hidden the newsletter items for checkbox click
		$.each($("input[name='newsletter']"), function(i, n){
			$(n).click(function(){
				if ($(this).val() == "1") {
					$(".send-type").show();
				}
				else {
					$(".send-type").hide().next().hide();
					checkDefault();
				}
			});
		});
		$("#rad-weekly").click(function(){
			$(this).attr("checked") == true ? $("#newsletter dl").show() : $("#newsletter dl").hide();
		});
		//
		//visible or hidden the #not-necessary-i for legend click
		var setBirthSelect = function(form){
			//$("<span><span>").text(user.messages.birthdate.help).appendTo($(form + " input[name='birthdate']").parent()).addClass("birth-msg");
			var setSelectOptions = function(o, min, max){
				for (var i = min; i <= max; i++) {
					o.append("<option value=\"" + i + "\">" + i + "</option>");
				}
			};
	//		for (var i = (new Date).getFullYear(); i >= 1940; i--) {
	//			$(form + " #sel-year").append("<option value=\"" + i + "\">" + i + "</option>");
	//		}
	//		setSelectOptions($(form + " #sel-month"), 1, 12);
	//		setSelectOptions($(form + " #sel-day"), 1, 31);
		};
		//set birthday date
		setBirthSelect("#form-register");
		
		//
		//password
		if(!!document.getElementById("form-register")){
			try {
				$("#txt-password").passStrength({
					badPass: "弱",
					goodPass: "中",
					strongPass: "强"
				});
			} 
			catch (e) {
			}
		}
		
		//
		//form validation
		//validation add method for username
		try {
			$.validator.addMethod("username", function(value, element){
				return this.optional(element) || /^[a-zA-Z0-9\u4e00-\u9fa5]*$/.test(value);
			}, user.messages.username.invalid);
			//validation add method for existed
			$.validator.addMethod("existed", function(value, element, params){
				//
				//test code for ajax validate username or email
				return this.optional(element) || !user.validData($.trim(value), params);
			}, user.messages.username.existed);
			//validation add method for password
			$.validator.addMethod("unequal", function(value, element, params){
				return this.optional(element) || value != $.trim($(params).val());
			}, user.messages.password.equalToUsername);
			//validation add method for captcha
			$.validator.addMethod("equal", function(value, element, params){
				return this.optional(element) || user.validData($.trim(value), params);
			}, user.messages.captcha.invalid);
			//add method to validation name
			$.validator.addMethod("trueName", function(value, element){
				return this.optional(element) || /^[a-zA-Z\u4e00-\u9fa5][a-zA-Z0-9\u4e00-\u9fa5]*$/.test(value);
			}, user.messages.name.invalid);
			$.validator.addMethod("idcard", function(value, element){
				return this.optional(element) || user.validIdCard($.trim(value));
			}, user.messages.num_identity.invalid);
			$.validator.addMethod("cardType", function(value, element){
				return this.optional(element) || user.checkCardType($.trim(value));
			}, user.messages.num_identity.cardType);
			$.validator.addMethod("chinaPhone", function(value, element){
				return this.optional(element) || /^(\d{8}|\d{11})$/.test(value);
			}, user.messages.handphone_number.invalid);
			$.validator.addMethod("birthdate", function(value, element){
				return this.optional(element) || user.isBirthday(value);
			}, user.messages.birthdate.invalid);
			//
			$("#form-register").validate({
				rules: {
					login: {
						required: true,
						username: true,
						minlength: 4,
						existed: "username"
					},
					password: {
						required: true,
						minlength: 6,
						unequal: "#txt-username"
					},
					confirmmotdepasse: {
						required: true,
						equalTo: "#txt-password"
					},
					email: {
						required: true,
						email: true,
						existed: "email"
					},
					sex: "required",
					newsletter: "required",
					captcha: {
						required: true,
						equal: "captcha"
					},
					province_id: "required",
					city_id: "required",
					name: {
						trueName: true,
						minlength: 3
					},
					num_identity: {
						cardType: true,
						idcard: true
					},
					handphone_number: "chinaPhone",
					birthdate: "birthdate"
				},
				messages: {
					username: {
						required: user.messages.username.required,
						minlength: $.format(user.messages.username.minlength),
						existed: user.messages.username.existed
					},
					password: {
						required: user.messages.password.required,
						minlength: $.format(user.messages.password.minlength)
					},
					confirmmotdepasse: {
						required: user.messages.confirm_password.required,
						equalTo: user.messages.confirm_password.equalTo
					},
					email: {
						required: user.messages.email.required,
						existed: user.messages.email.existed
					},
					sex: user.messages.gender.required,
					newsletter: user.messages.newsletter.required,
					captcha: {
						required: user.messages.captcha.required
					},
					province_id: user.messages.region.required,
					city_id: user.messages.region.required,
					name: {
						minlength: $.format(user.messages.name.minlength)
					},
					birthdate: user.messages.birthdate.invalid
				}
			});
		} 
		catch (e) {
		}
		$("#txt-password").blur(function(){
			if(!!document.getElementById("txt-confirm-password")){
				if ($("#txt-confirm-password").valid()) 
					checkStyle("#txt-confirm-password");
			  }
		});
		//
		//show message
		var checkStyle = function(o){
			$("<label class='right'></label>").text(" ").css({
				"background-color": "transparent",
				"border": "0"
			}).appendTo($(o).parent()).fadeIn("fast");
		};
		var checkFields = function(form){
			$.each($(form + " .text"), function(i, n){
				$(n).keydown(function(e){
					if (e.keyCode == "13") {
						$(form + " .submit").click();
					}
				});
				$(n).focus(function(){
					var msg;
					if (user.messages[$(this).attr("name")]) 
						msg = user.messages[$(this).attr("name")].help;
					if (msg) {
						$(form + " label.input").remove();
						$(this).parent().find("label.right").remove();
						$("<label class='input'><span></span></label>").appendTo($(this).parent()).find("span").text(msg).parent().fadeIn("fast");
					}
				});
				$(n).blur(function(){
					$(form + " label.input").remove();
					$(this).parent().find("label.right").remove();
					if ($(n).valid()) {
						//search message
						var msg;
						if (user.messages[$(this).attr("name")]) 
							msg = user.messages[$(this).attr("name")].valid;
						//clear address check
						if ($(this).attr("name") == "address")
							return;
						
						$(this).parent().find("label.right").remove();
						if (msg) 
							$("<label class='right'></label>").appendTo($(this).parent()).text(msg).fadeIn("fast");
						else 
							checkStyle(this);
					}
				});
			});
		};
		checkFields("#form-register");
		
		var checkRadio = function(name){
			$.each($("input[name='" + name + "']"), function(i, n){
				$(n).click(function(){
					if ($(this).valid()) {
						$(this).parent().find("label.right").remove();
						checkStyle(n);
					}
				});
			});
		};
		checkRadio("sex");
		checkRadio("newsletter");
		
		$("#sel_province").change(function(){
			$(this).parent().find("label.right").remove();
			if ($(this).valid() && $("#sel_city").valid()) {
				checkStyle(this);
			}
		});
		$("#sel_city").change(function(){
			$(this).parent().find("label.right").remove();
			if ($(this).valid() && $("#sel_province").valid()) {
				checkStyle(this);
			}
		});
		$("#sel-card-type").change(function(){
			if ($(this).next().valid()) {
				checkStyle(this);
			}
			if ($(this).val() == "") {
				$(this).next().val("");
				$(this).parent().find("label.error").remove();
			}
		});
		var dateSelect = $(".date-row select")
		//clear value
		$("input[name='birthdate']").val("");
		$.each(dateSelect, function(i, n){
			$(n).change(function(){
				$(this).parent().find("label.right").remove();
				var y = $(dateSelect[0]).val();
				var m = $(dateSelect[1]).val();
				var d = $(dateSelect[2]).val();
				if (y == "" && m == "" && d == "") 
					$("input[name='birthdate']").val("");
				else 
					$("input[name='birthdate']").val(y + "-" + m + "-" + d);
				if ($("input[name='birthdate']").valid()) {
					checkStyle("input[name='birthdate']");
				}
			});
		});
		//
		//
		//register submit
		$("#form-register .submit").click(function(){
			if ($("#form-register").valid()) {
			      	$("#form-register").submit();
			}
		});
		
		//
		//vip info page
		try {
			$("#form-vip-info").validate({
				rules: {
					name: {
						trueName: true,
						minlength: 3
					},
					num_identity: {
						cardType: true,
						idcard: true
					},
					handphone_number: "chinaPhone",
					birthdate: "birthdate",
					zip_code: {
						minlength: 6,
						number: true
					}
				},
				messages: {
					name: {
						minlength: $.format(user.messages.name.minlength)
					},
					birthdate: user.messages.birthdate.invalid,
					zip_code: user.messages.zip_code.invalid
				}
			});
		} 
		catch (e) {
		}
		//add blur ,focus event
		checkFields("#form-vip-info");
		//birthday
		setBirthSelect("#form-vip-info");
		//
		//submit
		$("#form-vip-info .submit").click(function(){
			if ($("#form-vip-info").valid()) {
				//test code
				$("<span>提交中...</span>").appendTo($(this).parent()).css("color", "#666");
					alert("提交成功！");
					$(".btn-row span").remove();
			}
		});

		//
		//subscription box
		$("#sub-newsletter").click(function(e){
			commonFn.stopDefault(e);
			commonFn.winOpen($("#subscribe-box"));
                        $("#subscribe-box").css("filter","progid:DXImageTransform.Microsoft.BasicImage(grayscale=0)");
		});
		$("#chk-weekly").click(function(){
			$(this).attr("checked") == true ? $("#form-newsletter dl").slideDown() : $("#form-newsletter dl").slideUp();
		});
		$("#form-newsletter").validate({
			rules: {
				email: {
					required: true,
					email: true
				}
			}
		});
		//submit
		/*
		$("#form-newsletter .submit").click(function(){
			if ($("#form-newsletter").valid()) {
				//test code
				$("<span>提交中...</span>").appendTo($(this).parent()).css("color", "#666");
				setTimeout(function(){
					alert("提交成功！");
					$(".btn-row span").remove();
				}, 500);
			}
		});
		*/
	});
})(jQuery);
