var usernameFlag = new Boolean(false);
var password1Flag = new Boolean(false);
var password2Flag = new Boolean(false);
var questionFlag = new Boolean(false);
var answerFlag = new Boolean(false);
var yearFlag = new Boolean(false);
var dateFlag = new Boolean(false);
var genderFlag = new Boolean(false);
var realnameFlag = new Boolean(false);
var emailFlag = new Boolean(false);

var affirmFlag = new Boolean(false);
var register_req;
function checkUsername(){
	var username = document.getElementById("name").value;
	var usernameDiv = document.getElementById("usernameDiv");
	usernameDiv.style.display='block';
	if(isEmpty(username)){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名没有输入，请输入用户名！';
		return;
	}
	if(username.length < 6){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名太短，长度为6～18';
		return;
	}
	if(username.length > 18){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名太长，长度为6～18';
		return;
	}
	if (checkSpace(username)){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名中不能含有空格，请您删除空格';
		return;
	}
	if (username.indexOf('__') != -1){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名不能包含连续"_"，请重新输入';
		return;
	}
	if(!username.match(/^\w*$/)){
		usernameFlag = false;
		usernameDiv.innerHTML='不能输入特殊字符，用户名只能由不区分大小写的字母、数字、下划线组成';
		return;
	}
	if(!username.match(/^[A-Za-z0-9]{1}\w*[A-Za-z0-9]{1}$/)){
		usernameFlag = false;
		usernameDiv.innerHTML='用户名只能以字母、数字开头除空格';
		return;
	}
	register_req = getXMLRequester();
	register_req.open('POST', "/check_username.shtml", true);
	register_req.onreadystatechange=username_msg;
	register_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	register_req.send("username=" + username);
}
function username_msg() {
	if (register_req.readyState == 4 && register_req.status == 200) {
		var response = register_req.responseText;
		if(response=="0"){
			var usernameDiv = document.getElementById("usernameDiv");
			usernameDiv.innerHTML='很遗憾，该帐号已经被注册，请您另选一个！';
			return;
		} else if(response=="1"){
			var usernameDiv = document.getElementById("usernameDiv");
			usernameDiv.innerHTML='恭喜，该用户名可以使用';
			usernameFlag = true;
			return;
		} else{
			var usernameDiv = document.getElementById("usernameDiv");
			usernameDiv.innerHTML='服务器繁忙，请您稍后再试！';
			return;
		}
	}
}

function checkPassword1(){
	var password1 = document.getElementById("password1").value;
	var password1Div = document.getElementById("password1Div");
	password1Div.style.display='block';
	password1Flag = false;
	if(isEmpty(password1)){
		password1Div.innerHTML='登录密码没有输入，请输入登录密码！';
		return;
	}
	if(password1.length < 6){
		password1Div.innerHTML='密码太短，长度为6～18位，字母区分大小写';
		return;
	}
	if(password1.length > 18){
		password1Div.innerHTML='密码太长，长度为6～18位，字母区分大小写';
		return;
	}
	password1Div.style.display='none';
	password1Flag = true;
}

function checkPassword2(){
	var password1 = document.getElementById("password1").value;
	var password2 = document.getElementById("password2").value;
	var password2Div = document.getElementById("password2Div");
	password2Div.style.display='block';
	password2Flag = false;
	if(isEmpty(password2)){
		password2Div.innerHTML='确认密码没有输入，请输入确认密码！';
		return;
	}
	if(password1 != password2){
		password2Div.innerHTML='您两次输入的登录密码不一致';
		return;
	}
	password2Div.style.display='none';
	password2Flag = true;
}

function checkQuestion(){
	var question = document.getElementById("question").value;
	var questionDiv = document.getElementById("questionDiv");
	questionDiv.style.display='block';
	questionFlag = false;
	if(isEmpty(question)){
		questionDiv.innerHTML='密码保护问题没有输入，请输入密码保护问题！';
		return;
	}
	if(question.length < 3){
		questionDiv.innerHTML='密码保护问题太短，长度为3～30位';
		return;
	}
	if(question.length > 30){
		questionDiv.innerHTML='密码保护问题太长，长度为3～30位';
		return;
	}
	questionDiv.style.display='none';
	questionFlag = true;
}

function checkAnswer(){
	var answer = document.getElementById("answer").value;
	var answerDiv = document.getElementById("answerDiv");
	answerDiv.style.display='block';
	answerFlag = false;
	if(isEmpty(answer)){
		answerDiv.innerHTML='密码保护答案没有输入，请输入密码保护答案！';
		return;
	}
	if(answer.length < 3){
		answerDiv.innerHTML='密码保护答案太短，长度为3～30位';
		return;
	}
	if(answer.length > 30){
		answerDiv.innerHTML='密码保护答案太长，长度为3～30位';
		return;
	}
	answerDiv.style.display='none';
	answerFlag = true;
}

function checkYear(){
	var year = document.getElementById("year").value;
	var birthdayDiv = document.getElementById("birthdayDiv");
	birthdayDiv.style.display='block';
	yearFlag = false;
	if(isEmpty(year)){
		birthdayDiv.innerHTML='出生年份没有输入，请输入出生年份！';
		return;
	}
	var nowYear = (new Date()).getYear();
	if(parseInt(year) != year || year < 1901 || year > nowYear){
		birthdayDiv.innerHTML='请您输入正确的年份';
		return;
	}
	birthdayDiv.style.display='none';
	yearFlag = true;
	checkDate();
}

function checkDate(){
	var year = document.getElementById("year").value;
	var month = document.getElementById("month").value;
	var day = document.getElementById("day").value;
	var birthdayDiv = document.getElementById("birthdayDiv");
	birthdayDiv.style.display='block';
	dateFlag = false;
	if(yearFlag == false){
		birthdayDiv.innerHTML='请您先输入正确的年份,再选择月份和日期';
		return;
	}
	var dayNum = getDaysInMonth(year, month);
	if(day > dayNum){
		birthdayDiv.innerHTML='日期无效！';
		return;
	}
	var inputDate = new Date();
	inputDate.setFullYear(year,month-1,day);
	var nowDate = new Date();
	nowDate.setFullYear(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate());
	if(inputDate.getTime() > nowDate.getTime()){
		birthdayDiv.innerHTML='日期无效！';
		return;
	}
	birthdayDiv.style.display='none';
	dateFlag = true;
}

function checkGender(){
	var male = document.getElementById("male");
	var female = document.getElementById("female");
	var genderDiv = document.getElementById("genderDiv");
	genderDiv.style.display='block';
	genderFlag = false;
	if(!male.checked && !female.checked){
		genderDiv.innerHTML='请选择性别！';
		return;
	}
	genderDiv.style.display='none';
	genderFlag = true;
}

function checkRealname(){
	var realname = document.getElementById("realname").value;
	var realnameDiv = document.getElementById("realnameDiv");
	realnameDiv.style.display='block';
	realnameFlag = false;
	if(isEmpty(realname)){
		realnameDiv.innerHTML='真实姓名没有输入，请输入真实姓名！';
		return;
	}
	if(realname.length < 2){
		realnameDiv.innerHTML='姓名太短，长度不低于2个、字符不超过20个字符';
		return;
	}
	if(realname.length > 20){
		realnameDiv.innerHTML='姓名太长，长度不低于2个、字符不超过20个字符';
		return;
	}
	if(!realname.match(/^[\u4E00-\u9FA0\s]+$|^[a-z_A-Z\-\s]+$/)){
		realnameDiv.innerHTML='请正确输入名字！';
		return;
	}
	realnameDiv.style.display='none';
	realnameFlag = true;
}

function checkEmail(){
	var email = document.getElementById("email").value;
	var emailDiv = document.getElementById("emailDiv");
	emailDiv.style.display='block';
	emailFlag = false;
	if(isEmpty(email)){
		emailDiv.innerHTML='邮箱地址没有输入，请输入邮箱地址！';
		return;
	}
	if(!email.match(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/)){
		emailDiv.innerHTML='邮箱地址无效，请正确输入！';
		return;
	}
	emailDiv.style.display='none';
	emailFlag = true;
}

function checkValidateCode(){
	var validatecode = document.getElementById("validatecode").value;
	var validatecodeDiv = document.getElementById("validatecodeDiv");
	validatecodeDiv.style.display='block';
	validatecodeFlag = false;
	if(isEmpty(validatecode)){
		validatecodeDiv.innerHTML='验证码没有输入，请输入验证码！';
		return;
	}
	if(trim(validatecode).length != 2){
		validatecodeDiv.innerHTML='验证码错误，请重新输入！';
		return;
	}
	if(!validatecode.match(/^[\u4E00-\u9FA0]+$/)){
		validatecodeDiv.innerHTML='验证码错误，请重新输入！';
		return;
	}
	register_req = getXMLRequester();
	register_req.open('POST', "/check_validatecode.shtml", true);
	register_req.onreadystatechange=validatecode_msg;
	register_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	register_req.send("validatecode=" + trim(validatecode));
}

function validatecode_msg() {
	if (register_req.readyState == 4 && register_req.status == 200) {
		var response = register_req.responseText;
		var validatecodeDiv = document.getElementById("validatecodeDiv");
		validatecodeDiv.style.display='block';
		if(response=="ok"){
			validatecodeDiv.style.display='none';
			validatecodeFlag = true;
			return;
		} else {
			validatecodeDiv.innerHTML='验证码错误，请重新输入！';
			return;
		}
	}
}

function checkAffirm(){
	var affirm = document.getElementById("affirm");
	var affirmDiv = document.getElementById("affirmDiv");
	affirmDiv.style.display='block';
	affirmFlag = false;
	if(!affirm.checked){
		affirmDiv.innerHTML='请确认所填信息无误！';
		return;
	} else {
		affirmFlag = true;
		affirmDiv.style.display='none';
	}
}

function on_submit(){
	checkUsername();
	checkPassword1();
	checkPassword2();
	checkQuestion();
	checkAnswer();
	checkYear();
	checkDate();
	checkGender();
	checkRealname();
	checkEmail();
	checkAffirm();
	if(usernameFlag==true && password1Flag==true && password2Flag==true && questionFlag==true && answerFlag==true){
		if(yearFlag==true && dateFlag==true && genderFlag==true && realnameFlag==true && emailFlag==true && affirmFlag==true){
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

// 判断闰年
function isLeapYear(year){
	return (year % 4 == 0 && (year % 100 != 0) || (year % 400 == 0));
}

// 根据年份和月份，取得月的天数
function getDaysInMonth(year, month){
	var num = new Array(0,31,isLeapYear(year) ? 29 : 28,31,30,31,30,31,31,30,31,30,31);
	return num[month];
}

// 验证字符串是否为空
function isEmpty(str){
	if(str==null || str.length==0 || trim(str).length==0)
		return true;
	else 
		return false;
}
// 判断字符串中是否有空格，全角半角都可验证，有则返回true,无则返回false 
function checkSpace(checkstr) {
	if (checkstr.indexOf(' ') != -1 || checkstr.indexOf('　') != -1){
		return true;
	}
	return false;
}
//去左右空格函数
function trim(sstr){
	var astr=""; 
	var dstr=""; 
	var flag=0; 
	for (i=0; i<sstr.length; i++) {
		if ((sstr.charAt(i)!=' ')||(flag!=0))  {
			dstr+=sstr.charAt(i); 
			flag=1; 
		} 
	}
	flag=0; 
	for (i=dstr.length-1; i>=0; i--) {
		if ((dstr.charAt(i)!=' ')||(flag!=0)){
			astr+=dstr.charAt(i); 
			flag=1; 
		} 
	}
	dstr=""; 
	for (i=astr.length-1; i>=0; i--)
		dstr+=astr.charAt(i); 
	return dstr; 
}

function getXMLRequester(){
	var xmlhttp_request = false; 
	try{
		if( window.ActiveXObject ){
			for( var i = 5; i; i-- ){
				try{
					if( i == 2 ){
						xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
					} else {
						xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" ); 
						xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" );
					}
						break;
					} 
				catch(e){ 
					xmlhttp_request = false; }
			} 
		}else if( window.XMLHttpRequest ){
			xmlhttp_request = new XMLHttpRequest();
			if (xmlhttp_request.overrideMimeType){ 
				xmlhttp_request.overrideMimeType('text/xml');
			}
		} 
	} catch(e) { 
		xmlhttp_request = false; 
	} 
	return xmlhttp_request; 
}