/**
 * @category mines
 * @package admin
 * @copyright Copyright (c) 2006-2009 dm72.
 * @version $Id: rongshuxia.js 1001 2009-11-09 22:45 Renling Lin $
 */
function regTest(reg, content) {
	eval(reg);
	return reg.test(content);
}
//计算包含英文与汉字的字符串长度
function strLength(str) {
	var totalCount = 0;
	for ( var i = 0; i < str.length; i++) {
		var c = str.charCodeAt(i);
		if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
			totalCount++;
		} else {
			totalCount += 2;
		}
	}
	return totalCount;
}
function check_username(username) {
	if (username == "") {
		$("#username_blank_tip").css("display", "block");
		$("#username_format_tip").css("display", "none");
		return false;
	} else {
		$("#username_blank_tip").css("display", "none");
	}
	if (strLength(username) > 16 || strLength(username) < 4) {
		$("#username_format_tip").css("display", "block");
		return false;
	} else {
		$("#username_format_tip").css("display", "none");
	}
	if (/[^0-9a-zA-Z\u4E00-\u9FA5]/.test(username)) {
		$("#username_format_tip").css("display", "block");
		return false;
	} else {
		$("#username_format_tip").css("display", "none");
	}

	$.post(url_start + "/user/checkusername/", {
		field : "username",
		val : username
	}, function(re) {
		if (re == "true") {
			$("#username_exists_tip").css("display", "block");
			return false;
		} else {
			$("#username_exists_tip").css("display", "none");
		}
	});
	return true;
}
function check_password(password) {
	if (password == "") {
		$("#password_blank_tip").css("display", "block");
		$("#password_format_tip").css("display", "none");
		return false;
	} else {
		$("#password_blank_tip").css("display", "none");
	}
	if (!regTest(/^[\w\d]{6,16}$/, password)) {
		$("#password_format_tip").css("display", "block");
		return false;
	} else {
		$("#password_format_tip").css("display", "none");
	}
	return true;
}
function check_confirm(confirm_password) {
	if (confirm_password == "") {
		$("#confirm_password_blank_tip").css("display", "block");
		$("#confirm_password_format_tip").css("display", "none");
		return false;
	} else {
		$("#confirm_password_blank_tip").css("display", "none");
	}
	if (!regTest(/^[\w\d]{6,16}$/, confirm_password)) {
		$("#confirm_password_format_tip").css("display", "block");
		return false;
	} else {
		$("#confirm_password_format_tip").css("display", "none");
	}
	if (confirm_password != $("#password").val()) {
		$("#confirm_password_match_tip").css("display", "block");
		return false;
	} else {
		$("#confirm_password_match_tip").css("display", "none");
	}
	return true;
}
function check_email(email) {
	if (email == "") {
		$("#email_blank_tip").css("display", "block");
		$("#email_format_tip").css("display", "none");
		return false;
	} else {
		$("#email_blank_tip").css("display", "none");
	}
	if (!regTest(
			/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/,
			email)) {
		$("#email_format_tip").css("display", "block");
		return false;
	} else {
		$("#email_format_tip").css("display", "none");
	}
	$.post(url_start + "/user/checkemail/", {
		field : "email",
		val : email
	}, function(re) {
		if (re == "true") {
			$("#email_exists_tip").css("display", "block");
			return false;
		} else {
			$("#email_exists_tip").css("display", "none");
		}
	});
	return true;
}

function check_regmail(regmail) {
	if (regmail == "") {
		$("#email_blank_tip").css("display", "block");
		return false;
	} else {
		$("#email_blank_tip").css("display", "none");
	}
	if (!regTest(
			/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/,
			regmail)) {
		$("#email_format_tip").css("display", "block");
		return false;
	} else {
		$("#email_format_tip").css("display", "none");
	}
	$.post(url_start + "/user/checkemail2/", {
		field : "email",
		val : regmail
	}, function(re) {
		if (re == "true") {
			$("#email_exists_tip").css("display", "block");
			return false;
		} else {
			$("#email_exists_tip").css("display", "none");
		}
	});
	return true;
}

function check_code(checkcode) {
	if (checkcode == "") {
		$("#checkcode_blank_tip").css("display", "block");
		return false;
	} else {
		$("#checkcode_blank_tip").css("display", "none");
	}
	$.post(url_start + "/user/checkcodetip/", {
		code : checkcode
	}, function(re) {
		if (re == "false") {
			$("#checkcode_format_tip").css("display", "block");
			return false;
		} else {
			$("#checkcode_format_tip").css("display", "none");
		}
	});
	return true;
}

var passStatus = "差";
function passwordStrength(password) {
	var score = 0;
	if (password.length < 6 || password.length > 20) {
		return false;
	}
	score += password.length * 4;
	score += (checkRepetition(1, password).length - password.length) * 1;
	score += (checkRepetition(2, password).length - password.length) * 1;
	score += (checkRepetition(3, password).length - password.length) * 1;
	score += (checkRepetition(4, password).length - password.length) * 1;
	if (password.match(/(.*[0-9].*[0-9].*[0-9])/))
		score += 5;
	if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		score += 5;
	if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))
		score += 5;
	if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))
		score += 10;
	if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/)
			&& password.match(/([0-9])/))
		score += 10;
	if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/)
			&& password.match(/([a-zA-Z])/))
		score += 10;
	if (password.match(/^\w+$/) || password.match(/^\d+$/))
		score -= 10;
	score = parseInt(score);
	if (score < 0) {
		score = 0;
	}
	if (score < 35) {
		passStatus = "差";
	} else if (score < 70) {
		passStatus = "中";
	} else if (score < 100) {
		passStatus = "强";
		score = 100;
	}
	return score;
}
function checkRepetition(pLen, str) {
	res = ""
	for (i = 0; i < str.length; i++) {
		repeated = true;
		for (j = 0; j < pLen && (j + i + pLen) < str.length; j++) {
			repeated = repeated
					&& (str.charAt(j + i) == str.charAt(j + i + pLen));
		}
		if (j < pLen) {
			repeated = false;
		}
		if (repeated) {
			i += pLen - 1;
			repeated = false
		} else {
			res += str.charAt(i)
		}
	}
	return res
}
$( function() {
	$("#username").focus( function() {
		$("#username_format_tip").css("display", "block");
	});
	$("#username").blur( function() {
		var username = $(this).val();
		check_username(username);
	});
	$("#password").focus( function(){
		$("#password_format_tip").css("display", "block");
	});
	$("#password").blur( function() {
		var password = $(this).val();
		check_password(password);
		var score = passwordStrength(password);
		$("#password_length").val(score);
	});
	$("#confirm_password").focus( function(){
		$("#confirm_password_format_tip").css("display", "block");
	});
	$("#confirm_password").blur( function() {
		var confirm_password = $(this).val();
		check_confirm(confirm_password);
	});
	$("#regmail").focus( function(){
		$("#email_format_tip").css("display", "block");
	});
	$("#regmail").blur( function() {
		var email = $(this).val();
		check_regmail(email);
	});
	$("#email").blur( function() {
		var email = $(this).val();
		check_email(email);
	});
	$("#checkcode").blur( function() {
		var checkcode = $(this).val();
		check_code(checkcode);
	});
	$("#recode").click( function() {
		var src_url = $("#codeimg").attr("src") + "?" + Math.random();
		$("#codeimg").attr("src", src_url);
	});
	$("#resetPWForm").submit( function() {
		var can_submit = true;
		$("#accept_agreement").html('');
		check_password($("#password").val());
		check_confirm($("#confirm_password").val());
		$(".tip").each( function() {
			if ($(this).css("display") == "block") {
				can_submit = false;
				return false;
			}
		});
		if (!can_submit) {
			return false;
		}
	});
	$("#regForm").submit( function() {
		var can_submit = true;
		if (!$("#chkregisteragreement").attr("checked")) {
			$("#accept_agreement").html("<br>您还未仔细阅读并同意服务协议，请确认同意后注册。")
			can_submit = false;
		} else {
			$("#accept_agreement").html('');
			check_username($("#username").val());
			check_password($("#password").val());
			check_confirm($("#confirm_password").val());
			check_regmail($("#regmail").val());
			check_code($("#checkcode").val());
			$(".tip").each( function() {
				if ($(this).css("display") == "block") {
					can_submit = false;
					return false;
				}
			});
		}
		if (!can_submit) {
			return false;
		}
	});
	$("#getPWForm").submit( function() {
		var can_submit = true;
		check_email($("#email").val());
		check_code($("#checkcode").val());
		$(".tip").each( function() {
			if ($(this).css("display") == "block") {
				can_submit = false;
				return false;
			}
		});
		if (!can_submit) {
			return false;
		}
	});
	$("#resetpwForm").submit( function() {
		var can_submit = true;
		check_password($("#password").val());
		check_confirm($("#confirm_password").val());
		$(".tip").each( function() {
			if ($(this).css("display") == "block") {
				can_submit = false;
				return false;
			}
		});
		if (!can_submit) {
			return false;
		}
	});
	$("#password").keyup( function() {
		var password = $(this).val();
		passStatus = "差";
		var score = passwordStrength(password);
		if (score !== false) {
			$("#newpasswdstrong").css("width", score);
			$("#newpasswdstrongtitle").html(passStatus);
		}
	});
	var msg = "";
	$("#oldpassword").blur( function() {
		$.post(url_start + "/user/checkpw", {
			password : $("#oldpassword").val()
		}, function(re) {
			msg = "";
			if (re != "true") {
				msg += "<li>当前密码错误，请重新输入。</li>";
			} else {
				msg = "";
			}
		});
	});
	$("#modifypwForm").submit( function() {
		if ($("#oldpassword").val() == "") {
			msg += "<li>请输入当前密码。</li>";
		}
		if ($("#password").val() == "") {
			msg += "<li>请输入新密码。</li>";
		} else if (!regTest(/^[\w\d]{6,16}$/, $("#password").val())) {
			msg += "<li>密码由6-20个英文字母、数字或特殊字符组成。</li>";
		}
		if ($("#confirm_password").val() == "") {
			msg += "<li>请输入确认新密码。</li>";
		} else if ($("#password").val() != $("#confirm_password").val()) {
			msg += "<li>两次输入的新密码不一致。</li>";
		}
		if (msg != "") {
			$("#popbox_title").html("提示信息");
			msg = "<li><b>填写信息错误：</b></li>" + msg;
			$("#pop_msg_content").html(msg);
			msg = "";
			$(".popBoxContainer").css("display", "block");
		} else {
			$.post(url_start + "/user/pwpost", {
				oldpassword : $("#oldpassword").val(),
				password : $("#password").val(),
				confirm_password : $("#confirm_password").val()
			}, function(re) {
				msg = "";
				$("#popbox_title").html("提示信息");
				if (re == "true") {
					msg = "<li><b>恭喜您，已经成功修改密码。</b></li>";
				} else {
					msg = "<li><b>填写信息错误：</b></li><li>" + re + "</li>";
				}
				$("#pop_msg_content").html(msg);
				$(".popBoxContainer").css("display", "block");
				msg = "";
			});
		}
		return false;
	});
})
