﻿
function gel(a){
	return document.getElementById?document.getElementById(a):null;
}
function gelstn(a){
	return document.getElementsByTagName?document.getElementsByTagName(a):new Array();
}
function geln(a){
	return document.getElementsByName?document.getElementsByName(a):new Array();
}
function $(a){
	document.write(a);
}
function setfocus(a){

	gel(a).className = "focus";
	gel(a).innerHTML = msg[a];
}
function setblur(a){
	gel(a).className = "blur";
}
function fIsNumber (sV,sR) {
	var sTmp;
	if(sV.length==0){ return (false);}
	for (var i=0; i < sV.length; i++){
		sTmp= sV.substring (i, i+1);
		if (sR.indexOf (sTmp, 0)==-1) {return (false);}
	}
	return (true);
}

// 提示信息
var msg = new Array();
msg['info1'] = "请以字母开头，长度为5-20个字符。由英文字母（不区分大小写）、数字（0-9）、下划线、连字符号组成。";
//msg['info2'] = "请点击左边的按钮检测您的用户名是否已经被其他人注册过了。";
msg['info2'] = "";
msg['info3'] = "密码长度6-20位，字母请区分大小写，请使用字母加数字的组合。";
msg['info4'] = "请再输入一遍您上面输入的密码。";
msg['info5'] = "请认真填写您的生日，找回密码需要确认您的生日。";
msg['info6'] = "请选择您所在的地区，可以让你找到更多的同城朋友。";
msg['info7'] = "请选择密码提示问题，当密码被遗忘或丢失时，用于找回密码。";
msg['info8'] = "请填写上面问题的答案，答案的长度不能超过18个字符！";
msg['info9'] = "请输入一个您的电子邮件地址，如果没有，可以不用填写。";
msg['info10'] = "请输入右边的数字，如果看不清楚，请重新刷新认证码。";
msg['info12'] = "不可更改，请认真填写。遗忘密码时，可通过此邮箱取回。";

// 通过状态
var reg_1 = 0;//用户名
//var reg_2 = 0;//密码
var reg_3 = 0;//确认密码
var reg_4 = 0;//密码提示问题
//var reg_5 = 0;//密码提示答案
//var reg_6 = 0;//生日
var reg_7 = 0;//验证码
var reg_8 = 0;//服务条款
var reg_12 = 0;//Email

var msg_username = "";
var msg_password = "";
var msg_password2 = "";
var msg_year = "";
var msg_month = "";
var msg_day = "";
var msg_question = "";
var msg_answer = "";
var msg_authnum = "";
var msg_email = "";

var message = "";

// 检测用户名
function check_user(x) {
	
	//gel("info2").className = "blur noback";
	//gel("info2").innerHTML = "";
	var form = gel("form");
	
	if(form.UserName.value == "") {
		message = "请输入用户名！";
		gel(x).innerHTML = message;
		gel(x).className = "true";
		return false;
	}
	if(form.UserName.value.length < 5 || form.UserName.value.length > 20) {
		message = "用户名长度为5-20个字符，请重新输入用户名";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	}
	if(fIsNumber(form.UserName.value.charAt(0), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") != 1){
		message = "用户名输入错误，请以字母开头";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	}
	if(fIsNumber(form.UserName.value, "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-") != 1){
		message = "用户名应该是数字、字母、下划线、连字符号，不允许出现汉字、空格、点等其他字符，请重新输入用户名！";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	}
    
    callServer(form.UserName);
    

	
}



	function callServer(obj) {
		var username = obj.value;
		if ((username == null) || (username == "")) return;
		var url = "../doajax/CheckUserName.aspx?UserName=" + escape(username);
		oXmlHttp.open("GET", url, true);
		oXmlHttp.onreadystatechange = updatePage;
		oXmlHttp.send(null);
		}
		
		function updatePage() {
		if (oXmlHttp.readyState == 4) {
			var response = oXmlHttp.responseText;
			var x="info1";
			if(response=="0")
			{
			message="您的用户名是否已经被其他人注册过了";
		      gel(x).innerHTML = message;
		     gel(x).className = "fall";
		    reg_1 =0;
		    
		    return false;
			
			}
			else
			
			{
			message = "用户名格式正确，当前用户名可以使用！";
	        gel(x).innerHTML = message;
	        gel(x).className = "true";
	        reg_1 = 1;
	        return true;
			}
			
			//getObject("CheckName").innerHTML = response;
		
		}
		}


// 检测密码
function checkpass1(x) {
	var form = gel("form");
	var password1 = form.passWord.value;
	var Condition1 = (password1.length < 6 || password1.length > 20);
	var Condition2 = (password1.indexOf("&") != -1 || password1.indexOf("%") != -1 || password1.indexOf("=") != -1 || password1.indexOf("+") != -1 || password1.indexOf("'") != -1);
	if(Condition1) {
		message = "密码长度为6-20位，请重新输入。谢谢！";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	} else if(Condition2) {
		message = "密码中不允许含有&,%,=,+,'字符，请重新输入密码！";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	} else {
		message = "密码格式正确，请继续！";
		gel(x).innerHTML = message;
		gel(x).className = "true";
		reg_3 = 1;
		return false;
	}
}

// 检测密码2
function checkpass2(x) {
	var form = gel("form");
	var password1 = form.passWord.value;
	var password2 = form.passWordConfirm.value;
	var Condition3 = (password2 == "");
	var Condition4 = (password2 != password1);
	if(Condition3) {
		gel(x).innerHTML = "确认密码不能为空，请重新输入！";
		gel(x).className = 'fall';
		return false;
	} else if(Condition4) {
		gel(x).innerHTML = "两次输入密码不相同，请重新输入确认密码！";
		gel(x).className = 'fall';
		return false;
	} else {
		gel(x).innerHTML = "确认密码正确，请继续！";
		gel(x).className = 'true';
		reg_4 = 1;
		return false;
	}
}

// 检测出生年月
function checkbirthday(x){
	var form = gel("form");
	if(form.txtYear.value == "-1" || form.txtMonth.value == "-1" || form.txtDay.value == "-1") {
		message = "出生日期选择错误，请重新选择！";
		gel(x).innerHTML = message;
		gel(x).className = "fall";
		return false;
	} else {
		gel(x).innerHTML = "出生日期选择正确，请继续！";
		gel(x).className = 'true';
		reg_6 = 1;
		return false;
	}
}

//检测密码提示问题
function checkpass5(x){
	var form = gel("form");
	gel(x).innerHTML = "密码提示问题输入正确，请继续！";
	gel(x).className = 'true';
	reg_7 = 1;
	return false;
}

//检测密码提示答案
function checkpass3(x){
	var form = gel("form");
	var Answer = form.Answer.value;
	var Condition10 = (Answer == "" || Answer.length > 18);
	var Condition11 = (Answer.indexOf("&") != -1 || Answer.indexOf("%") != -1);
	if(Condition10) {
		gel(x).innerHTML = "密码提示答案不能为空，并且长度不超过18个字符，请重新输入！";
		gel(x).className = 'fall';
		return false;
	} else if(Condition11) {
		gel(x).innerHTML = "密码提示答案中不允许含有'&'和'%'字符，请重新输入！";
		gel(x).className = 'fall';
		return false;
	} else {
		gel(x).innerHTML = "密码提示答案输入正确，请继续！";
		gel(x).className = 'true';
		reg_8 = 1;
		return false;
	}
}

//检测认证码
function check_tag(x) {
	var form = gel("form");
	if(form.txtVerify.value == "") {
		gel(x).innerHTML = "请输入验证码，如果验证码不清楚，请点击刷新重新获取验证码。";
		gel(x).className = 'fall';
		return false;
	} else if( form.txtVerify.value.length != 5) {
		gel(x).innerHTML = "验证码不正确，如果验证码不清楚，请点击刷新重新获取验证码。";
		gel(x).className = 'fall';
		return false;
	} else {
		gel(x).innerHTML = "验证码输入正确，请继续！ ";
		gel(x).className = 'true';
		reg_7 = 1;
		return false;
	}
}

//服务条款
function check_service(x) {
	var form = gel("form");
	if(form.service.checked == false) {
		gel(x).innerHTML = "你必须同意服务条款才能完成注册。";
		gel(x).className = 'fall';
	} else {
		gel(x).innerHTML = "";
		gel(x).className = 'none';
		reg_8 = 1;
	}
}
//检测表单数据完整性
function fCheck(){
	check_user('info1');
	checkpass1('info3');
	checkpass2('info4');
	checkpass5('info7');
	checkpass3('info8');
	checkemail('info12');
	
	if(reg_1 == 0){
		gel("info1").className = 'fall';
		return false;
	}else if(reg_3 == 0){
		gel("info3").className = 'fall';
		return false;
	
	}else if(reg_4 == 0){
		gel("info4").className = 'fall';
		return false;
	}else if(reg_7 == 0){
		gel("info7").className = 'fall';
		return false;
	}else if(reg_8 == 0){
		gel("info8").className = 'fall';
		return false;	
	}else if(reg_12 == 0){
		gel("info12").className = 'fall';
		return false;	
	}else {		
		return true;
	}
	
	
}


function processChech() {
	if (req.readyState == 4) {
		var content = gel("info2");
		if (req.status == 200) {
			content.innerHTML = req.responseText;
			if(req.responseText.indexOf("还没有被注册") != -1){
				content.className = "true";
			}else{
				content.className = "fall";
				gel("UserName").focus();
			}
		} else {
			content.innnerHTML = "用户名检查服务暂时不能使用，不过您可以继续申请！";
			content.className = "true";
		}
	}
}
function fGetCode() {
	var gNow = new Date();
	gel('imgCount').src="http://urs.56.com/GetImage.php?x="+gNow.getSeconds();
}

function emailValidate(emailStr) {

	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|mobi)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
		}
	}

	if (user.match(userPat)==null) {
		return false;
	}


	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
			}
		}
		return true;
	}

	// Domain is symbolic name.  Check if it's valid.
	 
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
		}
	}


	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}

	if (len<2) {
		return false;
	}

	return true;
}

function checkemail(x) {
	var form = gel("form");
	if(!emailValidate(form.Email.value)) {
		gel(x).innerHTML = "请填写正确的电子邮件地址";
		gel(x).className = 'fall';
		reg_9 = 0;
		return false;
	} else {
	
	callServer1(form.Email);
	
	}
}


function callServer1(obj) {
		var email = obj.value;
		var url = "../doajax/CheckEmail.aspx?email=" + escape(email);
		oXmlHttp.open("GET", url, true);
		oXmlHttp.onreadystatechange = updatePage1;
		oXmlHttp.send(null);
		}
		
		function updatePage1() {
		if (oXmlHttp.readyState == 4) {
			var response = oXmlHttp.responseText;
			var x="info12";
			if(response=="0")
			{
			 gel(x).innerHTML = "您所输入的邮件地址已经被注册过，请更换另一个有效邮箱!";
		     gel(x).className = 'fall';
		     reg_12 = 0;	
		     return false;	   	
			}
			else
			{
		      gel(x).innerHTML = "电子邮件地址正确，请继续！";
		       gel(x).className = 'true';
		      reg_12 = 1;
		      return true;
			
			}
			
			
			
		
			
		}
		}
function checkOldValue() {
	
	if(b_username){
		gel("UserName").value = b_username;
		gel("info1").className = 'true';
		gel("info1").innerHTML = "用户名格式正确，请继续！";
		reg_1 = 1;
	}
	if(b_year && b_month && b_day ){
		gel("form").txtYear.value = b_year;
		gel("form").txtMonth.value = b_month;
		gel("form").txtDay.value = b_day;
		gel("info5").innerHTML = "出生日期选择正确，请继续！";
		gel("info5").className = 'true';
		reg_6 = 1;
	}
	if(b_question ) {
		gel("form").Question.value = b_question;
		gel("info7").innerHTML = "密码提示问题输入正确，请继续！";
		gel("info7").className = 'true';
		reg_4 = 1;
	}
	if(b_answer ) {
		gel("Answer").value = b_answer;
		gel("info8").className = 'true';
		gel("info8").innerHTML = "密码提示答案输入正确，请继续！";
		reg_5 = 1;
	}
	if(b_email ) {
		gel("Email").value = b_email;
		gel("info12").className = 'true';
		gel("info12").innerHTML = "电子邮件地址正确，请继续！";
		reg_9 = 1;
	}			

}

window.onload = function(){
	
	if(msg_authnum.length>1){
		gel("info10").innerHTML = msg_authnum;
		gel("info10").className = "fall";
		reg_7 = 0;
	}
	
	if(msg_username.length>1){
		gel("info1").className = "blur";
		gel("info1").innerHTML = msg['info1'];
		gel("info2").innerHTML = msg_username;
		gel("info2").className = "fall";
		reg_1 = 0;	
	}
	/*
	b_username = "test_xxx";
	b_year = "1982";
	b_month = "7";
	b_day = "23";
	b_email = "test_xxx@56.com";
	b_question = "您的启蒙老师叫什么";
	b_answer = "陈test"
	*/
	try{checkOldValue();}catch(e){}
}
////////////////////////////////////////////////////////////////////////////////////////////////