// 当窗口载入完成后实例化一个RegisterModule对象
var registerModule;
Event.observe(window,'load',function(){
	//checkOs();
	registerModule = new RegisterModule();
	registerModule.onInit();
});

var RegisterModule = Class.create({
	
	initialize : function(){
		
		this.usernameMinLenght = 4;		// 用户名字的最小长度 4
		this.usernameMaxLen = 30;		// 用户名字的最大长度 30
		this.pwdMinLen = 6;				// 密码的最小长度 6
		this.pwdMaxLen = 30;			// 密码的最大长度 30
	},
	// 检查email
	checkEmail : function(textId){
		/** ^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$ **/
		var mailPattern = /^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig;
		var textValue = $F(textId);
		var valid = textValue.match(mailPattern);
		$(textId + "Msg").update("checking...");
		
		//1. 先查是否为空
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("电子邮件不能为空！");
			return false;
		}
		//2. 再查格式是否正确
		else if(!valid){
			//console.log("" + !mailPattern.test($F(textId)));
			$(textId + "Msg").update("电子邮件格式不对！");
			return false;
		}
		//3. 最后查是否存在
		else{
			var url = constants.url() + "/user/checkEmailAddress.action";
			var params = {emailAddress : textValue};
			var b = false;
			var callBack = function(response){
				var text = response.responseText;
				if(text == "error"){
					$(textId + "Msg").style.color = "green";
					$(textId + "Msg").update("电子邮件可用！");
					b = true;
				}else{
					$(textId + "Msg").style.color = "red";
					$(textId + "Msg").update("电子邮件已经存在！");
				}
			};
			this.registerAsynRequest(url,textId + "Msg",params,callBack);
			return b;
		}
		return true;
	},
	checkCardPassword:function()
	{
		var textIdArray = new Array();
		
		textIdArray[0] = "cardPasswdFirst";
		textIdArray[1] = "cardPasswdSecond";
		textIdArray[2] = "cardPasswdThird";
		textIdArray[3] = "cardPasswdForth";
		 		
		for(i = 0; i<textIdArray.length; i+=1)
		{
			var text = $F(textIdArray[i]);	
			if( (i > 0 && (!text || text.length != 4)) )
			{
				$("cardPasswdMsg").update("长度不对。");
				return false;
			}
		}
		
		$("cardPasswdMsg").update("");
		return true;
	},
	
	// 检查密码输入
	checkPassword : function(textId){
		var text = $F(textId);
		
		//1. 先查是否为空
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("密码不为空");
			return false;
		}
		//2. 再查长短是否适合
		else if(text.length < this.pwdMinLen || 
				text.length > this.pwdMaxLen)
		{
			$(textId + "Msg").update("密码应大于" + this.pwdMinLen + ",小于 " + this.pwdMaxLen);
			return false;
		}
		$(textId + "Msg").update("");
		return true;
	},
	// 检查确认密码
	checkConfirmPassword : function(textId,first){
		var firstPwdValue = $F(first);
		//1. 先查是否为空
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("确认密码不为空");
			return false;
		}
		//2. 再查两次密码是否一致
		else if(firstPwdValue != $F(textId)){
			$(textId + "Msg").update("两次密码不一致");
			return false;
		}
		$(textId + "Msg").update("");
		return true;
	},
	// 检查昵称
	checkNickName : function(textId){
		var text = $F(textId);
		var tt = text.replace(/[^\x00-\xff]/g,"**");
		
		$(textId + "Msg").innerHTML = "checking...";
		//1. 先查是否为空
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("用户名不能为空！");
			return false;
		}
		//2. 再查长短是否适合
		else if(
			tt.length < this.usernameMinLenght || 
			tt.length > this.usernameMaxLen
		){
			$(textId + "Msg").update("用户名应大于 " + this.usernameMinLenght + ",小于 " + this.usernameMaxLen);
			return false;
		}
		//3. 最后查是否存在
		else{
			var b = false;
			var url = constants.url() + "/user/checkUsername.action";
			var params = {nickName : text};
			var callBack = function(response){
				var error = response.responseText;
				if(error == "error"){
					$(textId + "Msg").style.color = "green";
					$(textId + "Msg").update("昵称可用！");
					b = true;
				}else{
					$(textId + "Msg").style.color = "red";
					$(textId + "Msg").update("昵称已经存在！");
				}
			};
			this.registerAsynRequest(url,textId + "Msg",params,callBack);
			return b;
		}
		return true;
	},
	// 检查验证码
	checkValidateCode : function(textId){
		//1. 先查是否为空
		var b = false;
		var text = $F(textId);
        // alert("text : "+text)
		var params = {validateCode : text};
		var url = constants.url() + "/user/checkImageCode.action";
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("验证码不为空");
			 return false;
		}
		var callBack = function(response){
			var error = response.responseText;
			if(error == "error"){
				$(textId + "Msg").style.color = "green";
				$(textId + "Msg").update("验证码正确！");
				 b = true;
			}else{
				$(textId + "Msg").style.color = "red";
				$(textId + "Msg").update("验证码不正确！");
				 b = false;
			}
		};
		this.registerAsynRequest(url,textId + "Msg",params,callBack);
		return b;
	},
	// 检查真实姓名
	checkRealName : function(textId){
		//1. 先查是否为空
		if(this.isEmpty(textId)){
			$(textId + "Msg").update("真实姓名不为空");
			return false;
		}
		//$("registerFormMsg").update("");
		$(textId + "Msg").update("");
		return true;
	},
	// 检查多选框
	checkAgreement : function(textId){
		if(!$(textId).checked){
			alert("注册前请先阅读并同意服务条款！\n");
			return false;
		}
		return true;
	},
	// 判断文本框是否为空
	isEmpty : function(textId){
		if($F(textId).strip() == ""){
			return true;
		}
		return false;
	},
	// 清除提示消息
	clearMsg : function(){
		$("emailAddressMsg").update();
		$("passwordMsg").update();
		$("confirmPasswordMsg").update();
		$("usernameMsg").update();
		//$("registerFormMsg").update();
		this.updateRegisterFormMsg();
	},
	// 得到Cookie
	getCookie : function(cookieName){
		var allcookies = document.cookie;
		cookieName = (cookieName == undefined ? "CODE_ID" : cookieName);
		var pos = allcookies.indexOf(cookieName + "=");
		
		if (pos != -1) {
		    var start = pos + (cookieName.length + 1);		
		    var end = allcookies.indexOf(";", start);  		
		    if (end == -1) end = allcookies.length;
		    var value = allcookies.substring(start, end);  
		    value = decodeURIComponent(value);             
		
		    return value;
		}		
	}, 
	//检查注册类型
	onInit : function(){
		var type = $("type").value;
		if(type == "sale")
		{
		//	$("cardPasswdRegion").style.display = "";
			$("cardPasswordTips").style.display = "";
		}
		else
		{
		//	$("cardPasswdRegion").style.display = "none";
			$("cardPasswordTips").style.display = "none";
		}
	},
	//清除表单的提示信息
	updateRegisterFormMsg : function(msg){
		if(!msg){
			$("registerFormMsg").className = "registerFormMsgClose";
			$("registerFormMsg").update();
		}else{
			$("registerFormMsg").className = "registerFormMsgOpen";
			$("registerFormMsg").update(msg);
		}
	},
	// form 提交
	submit : function(formId){
		var flag = true;
		if($F("type") == "sale")
		{
			flag &= this.checkCardPassword("cardPasswdFirst", 2);
			flag &= this.checkCardPassword("cardPasswdSecond", 4);
			flag &= this.checkCardPassword("cardPasswdThird", 4);
			flag &= this.checkCardPassword("cardPasswdForth", 4);
		}
		flag &= this.checkEmail("emailAddress");
		flag &= this.checkPassword("password");
		flag &= this.checkConfirmPassword("confirmPassword","password");
		flag &= this.checkNickName("username");
		flag &= this.checkAgreement("agreement");
		var users = document.getElementsByName("selectRole");
		var sele;
		for (i = 0; i < users.length; i++) {
			if (users[i].checked)
			sele = users[i].value;
		}
		if(sele == '1'){
			flag &= this.checkRealName("realName");
		}else{
			flag &= this.checkValidateCode("validateCode");
    	}
		if(Boolean(flag)){
			this.clearMsg();
			//$(formId).request();
			return true;
		}else{
			return false;
		}
	},
		// 不同人群注册
	selectType : function(registerType){
		var type = registerType.value; 
		if(type == 1){ // 中小学
			$("validateCodeTr").style.display = "none";
			$("name").style.display = "";
			$("registerFormMsg").style.display = "none";
		}else if(type == 2){ // 老师
		}else if(type == 3){ // 成人
			$("validateCodeTr").style.display = "";
			$("name").style.display = "none";
		}
	},
	// 异步请求
	registerAsynRequest : function(url,containerId,params,callBack){
		new Ajax.Updater(containerId, url, {
			asynchronous : false,
			parameters :  params,
			onComplete : callBack
		});
	}
});




function cardPasswdFirst_onKeyUp()
{
	var text = $("cardPasswdFirst").value;
		
	if(text && text.length >= 2)
	{
		$("cardPasswdSecond").focus();
	}
}

function cardPasswdSecond_onKeyUp()
{
	var text = $("cardPasswdSecond").value;
		
	if(text && text.length >= 4)
	{
		$("cardPasswdThird").focus();
	}
}

function cardPasswdThird_onKeyUp()
{
	var text = $("cardPasswdThird").value;
		
	if(text && text.length >= 4)
	{
		$("cardPasswdForth").focus();
	}
}

function cardPasswdForth_onKeyUp()
{
	var text = $("cardPasswdForth").value;
	if(text && text.length >= 4)
	{
		$("cardPasswdForth").value = text.substring(0, 4);
	}
}
