var prj = jQuery.noConflict();

prj(document).ready(function(){
	//常量设置
	var username_format_error = '用户名格式不正确！';
	var username_exitst_error = '用户名已经存在!';
	var nickname_length_error = "昵称长度不符合！";
	var nickname_format_error = "昵称必须使用英文或者中文！";
	var nickname_exitst_error = "昵称已经存在!";
	var password_length_error = '密码长度不符合！';
	var password_unsame_error = '两次密码输入不一致！';
	var moble_format_error = '手机号码格式不正确！';
	var truename_length_error = '真实姓名长度不符合';
	var agreement_must_seleced = "请查看并确定服务协议！";

	//全局变量
	var register_error = [];
	var register_message = [
		"reg_username", "nickname", "reg_password", "password2", "truename", "moble"
	];

	var defaultyear = 1980;
	var year = [1950, 2003];
	var month = [1, 13];
	var day = [1, 32];

	//注册处理
	prj.ajaxSetup({
		async: false
	});

	prj("#registerform").submit(function(){
		return checkRegister();
	});

	prj("#registerform :input[type=text], #registerform :input[type=password]").each(function(){
		prj(this).focus(function(){
			this.select();
		});
		prj(this).blur(function(){
			var inputid = prj(this).attr("id");
			eval("check" + inputid + "();");
			eval("var flag = register_error['" + inputid + "'];");
			if (typeof(flag) != 'undefined'){
				showRegisterError(inputid);
			} else {
				showRightMessage(inputid);
			}
		});
	});

	getProvince();
	showBirthday();

	//函数区
	function showRightMessage(ecode){
		prj("#" + ecode).next("span:first").each(function(){
			prj(this).attr("class", "rightmessage");
			prj(this).html('');
		});
	}

	function showRegisterError(ecode){
		prj("#" + ecode).next("span:first").each(function(){
			prj(this).attr("class", "errormessage");
			eval("var message = register_error['" + ecode + "']");
			prj(this).html(message);
		});
	}

	function checkRegister(){
		var agreement = prj("#agreement").attr("checked");
		if (agreement !== true){
			alert(agreement_must_seleced);
			return false;
		}
		var iserror = false;
		for (ecode in register_message){
			eval("check" + register_message[ecode] + "();");
			eval("var flag = register_error['" +  register_message[ecode] + "']");
			if (typeof(flag) != 'undefined'){
				showRegisterError(register_message[ecode]);
				iserror = true;
			} else {
				showRightMessage(register_message[ecode]);
			}
		}
		if (iserror === true){
			return false;
		}
		return true;
	}

	function checkreg_username(){
		var username = prj("#reg_username").val();
		
		var regm = /^[_a-zA-Z0-9\-\.]+(\.)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
		prj.get("/passport/usernameexists/?username=" + username, function(data){
			if (data == 'exists'){
				register_error['reg_username'] = username_exitst_error;
			} else {
				if (!regm.test(username)) {
					register_error['reg_username'] = username_format_error;
				} else {
					delete register_error['reg_username'];
				}
			}
		});
	}

	function checknickname(){
		var nickname = prj("#nickname").val();
		var regm = /^[a-zA-Z\u4e00-\u9fa5]+$/;
		prj.get("/passport/nicknameexists/?nickname=" + nickname, function(data){
			if (data == 'exists'){
				register_error['nickname'] = nickname_exitst_error;
			} else {
				if (nickname.length < 2 || nickname.length > 16) {
					register_error['nickname'] = nickname_length_error;
				} else if (!regm.test(nickname)) {
					register_error['nickname'] = nickname_format_error;
				} else {
					delete register_error['nickname'];
				}
			}
		});
	}

	function checkreg_password(){
		var password = prj("#reg_password").val();
		if (password.length < 6 || password.length > 16) {
			register_error['reg_password'] = password_length_error;
		} else {
			delete register_error['reg_password'];
		}
	}

	function checkpassword2(){
		var password = prj("#reg_password").val();
		var password2 = prj("#password2").val();
		if (password != password2 || password2 == '') {
			register_error['password2'] = password_unsame_error;
		} else {
			delete register_error['password2'];
		}
	}

	function checktruename(){
		var truename = prj("#truename").val();
		if (truename == ''){
			register_error['truename'] = truename_length_error;
		} else {
			delete register_error['truename'];
		}
	}

	function checkmoble(){
		var moble = prj("#moble").val();
		var regm = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
		if (!regm.test(moble)){
			register_error['moble'] = moble_format_error;
		} else {
			delete register_error['moble'];
		}
	}

	function getProvince(){
		prj.ajax({
			type: "GET",
			url: "/passport/getprovince",
			success: function(data){
				prj("#province").html(data);
			}
		});
	}

	function showBirthday(){
		var yearString = '';
		for(var y = year[0]; y < year[1]; y ++){
			if (y == defaultyear){
				yearString += '<option value="' + y + '" selected>' + y + '</option>';
			} else {
				yearString += '<option value="' + y + '">' + y + '</option>';
			}
		}
		prj("#birthyear").html(yearString);
		var monthString = '';
		for(var m = month[0]; m < month[1]; m ++){
			monthString += '<option value="' + m + '">' + m + '</option>';
		}
		prj("#birthmonth").html(monthString);
		var dayString = '';
		for(var d = day[0]; d < day[1];d ++){
			dayString += '<option value="' + d + '">' + d + '</option>';
		}
		prj("#birthday").html(dayString);
	}

});
