﻿

var formNames = ["username","password","password2","blogurl","vCode"];
var formState = {};

function initRegValidator(){
	var form = document.getElementById("regForm");
	var len = formNames.length,i;
		for(i=0;i<len;i++){
			initCheck(form,formNames[i]);
			formState[formNames[i]] = 1;
		}
		form[formNames[0]].focus();
		
	function initCheck(form,name,ev){
		var ev = ev || "onblur";
		var form = form;
		form[name][ev] = function(){
			if(window["check_"+name] && form[name]){
					doTip(name,window["check_"+name](form[name].value));
			}
		};
		form[name]["onfocus"] = function(){
			var dom = document.getElementById("error_"+name);
				if(dom.className == "errorCont"){
					dom.innerHTML = dom.title;
				}
		};
	}
	
	
}


function checkRegForm(form){
	var arr = formNames,len = arr.length,i;
	var errNum = [1,2,3,5,6];
	for(i = 0;i<len;i++){
		if(form[arr[i]].value.replace(/(^\s*)|(\s*$)/g, "") == ""){
			doTip(arr[i],{level:3,num:errNum[i].toString().concat('00')});
			form[arr[i]].focus();
			return false;
		}
	}
	for(i = 0;i<len;i++){
		if(formState[arr[i]] != 0){
			doTip(arr[i],{level:3,num:formState[arr[i]]});
			form[arr[i]].focus();
			return false;
		}
	}
	
	return true;
}


//result.level 1:成功 2:警告 3:错误
//result.num 消息id
function doTip(name,result){
	var level = result.level,num = result.num,className;
	var dom = document.getElementById("error_"+name);
		if(level == 1){
			className = "check_success";
		}
		if(level == 2){
			className = "check_war";
		}
		if(level == 3){
			className = "check_error";
		}
	dom.className = "errorCont "+ className;
	dom.innerHTML = errorMessages.getMessage(num);
	formState[name] = num;
}

var errorMessages = {
		0:"&nbsp;",//通过
		1:"&nbsp;",//未检测
		2:"正在检测...",
		//用户名
		100:"用户名不能为空",
		101:"用户名长度应为 2 - 16 位",
		102:"非法的用户名,请重新填写",
		103:"该用户名已经被他人申请了,请另填写一个",
		104:"用户名长度应为 2 - 16 位",

		//密码
		200:"密码不能为空",
		201:"密码长度应为 4 - 16 位",
		
		//确认密码
		300:"确认密码不能为空",
		301:"密码长度应为 4 - 16 位",
		302:"两次输入的密码不一致",
		
		//电子邮箱
		400:"电子邮箱不能为空",
		401:"电子邮箱填写不正确",
		
		//域名
		500:"个性域名不能为空",
		502:"非法的域名,域名不能有特殊字符",
		503:"该域名已被他人申请,请另外填写一个",
		504:"域名长度应为 3 - 16 位",
		
		//验证码
		600:"验证码不能为空",
		601:"验证码不正确",
		602:"验证码长度不正确",
		
		getMessage:function(num){
			return this[num] || "未定义错误类型:"+num;
		}
	};

function check_username(value,ajax){
	if(typeof ajax != "undefined"){
		if(ajax == -1){
			doTip("username",{level:3,num:102});
			return;
		}
		if(ajax == -2){
			doTip("username",{level:3,num:103});
			return;
		}
		if(ajax == -4 || ajax == -3){
			doTip("username",{level:3,num:104});
			return;
		}
		doTip("username",{level:1,num:0});
		return;
	}
	if(value == ""){
		return {level:3,num:100};
	}
	if(value.length > 16 || value.length < 2){
		return {level:3,num:101};
	}
	ajaxCheck("check_username","checkuser",value);
	return {level:1,num:2};
}
function check_password(value){
	if(value == ""){
		return {level:3,num:200};
	}
	if(value.length > 16 || value.length < 4){
		return {level:3,num:201};
	}
	return {level:1,num:0};
}
function check_password2(value){
	if(value == ""){
		return {level:3,num:300};
	}
	if(value.length > 16 || value.length < 4){
		return {level:3,num:301};
	}
	if(value != document.getElementById("regForm").password.value){
		return {level:3,num:302};
	}
	return {level:1,num:0};
}
function check_email(value,ajax){
	if(typeof ajax != "undefined"){
		if(ajax == 0){
			doTip("email",{level:3,num:401});
			return;
		}
		doTip("email",{level:1,num:0});
		return;
	}
	if(value == ""){
		return {level:3,num:400};
	}
	if(value.indexOf("@")==-1 || value.indexOf(".")==-1){
		return {level:3,num:401};
	}
	ajaxCheck("check_email","checkmail",value);
	return {level:1,num:2};
}
function check_blogurl(value,ajax){
	if(typeof ajax != "undefined"){
		if(ajax == -1){
			doTip("blogurl",{level:3,num:502});
			return;
		}
		if(ajax == -2){
			doTip("blogurl",{level:3,num:503});
			return;
		}
		if(ajax == -4 || ajax == -3){
			doTip("blogurl",{level:3,num:504});
			return;
		}
		doTip("blogurl",{level:1,num:0});
		return;
	}	
	if(value == ""){
		return {level:3,num:500};
	}
	ajaxCheck("check_blogurl","checkUrl",value);
	return {level:1,num:2};
}
function check_vCode(value,ajax){
	if(typeof ajax != "undefined"){
		if(ajax == 0){
			doTip("vCode",{level:3,num:601});
			return;
		}
		doTip("vCode",{level:1,num:0});
		return;
	}
	
	if(value == ""){
		return {level:3,num:600};
	}
	if(value.length != 4){
		return {level:3,num:602};
	}
	ajaxCheck("check_vCode","checkCaptcha",value);
	return {level:1,num:2};
}

function ajaxCheck(fn,type,value){
	var url = "/register?action=check&type="+type+"&value="+value;
	//alert(url);
	//var url = "http://127.0.0.1/reg.php";
	var num;
	$.ajax.request({
			url:url,
			oncomplete:function(data){
				num = Number(data.responseText);
				//alert(num);
				window[fn](value,num);
			}
		});
	
}






