var gInfo;
var gWrong;
var gWrong2;
var gWrong3;
var gCorrect;
var gWrong5;
/*
*/
function formValidator(field,prefix,postfix1,postfix2,postfix3,postfix4,postfix5,postfix6,postfix7,errorPostfix){
	//debugger;
	gInfo = document.getElementById(prefix + postfix1);
	gWrong = document.getElementById(prefix + postfix2);
	gWrong2 = document.getElementById(prefix + postfix3);
	if("" != postfix4)
		gWrong3 = document.getElementById(prefix + postfix4);
	if("" != postfix5)
		gWrong4 = document.getElementById(prefix + postfix5);		
		gWrong5 = document.getElementById(prefix + postfix6);
	gCorrect = document.getElementById(prefix + postfix7);
	error = document.getElementById("error." + errorPostfix);
	if(null != error)
		error.style.visibility = "hidden";
		 

	switch(field.name){
	  
		case "userName":
			checkUserName(field.value);
			break;
		case "email":
			checkEmail(field.value);
			break;			
		case "password":
			checkPassword(field.value);
			break;
		case "originalPassword":
			checkPassword(field.value);
			break;
		case "passwordAgain":
			checkPasswordAgain(field.value,postfix4);
			break;
		case "nickname":
			checkNickname(field.value);
			break;
		case "band":
			//debugger;
			checkBand(field.value);
			break;
		case "recommender":
			checkrecommender(field.value);
			break;
			
	}
}

function reMark(node1,node2,node3,node4,node5,node6,node7){
	//debugger;
	if(null != node1){
		node1.style.display = 'block';
		node1.style.visibility = "visible";
	}
	if(null != node2){
		node2.style.display  = "none";
		node2.style.visibility = "hidden";
	}
	if(null != node3){
		node3.style.display  = "none";
		node3.style.visibility = "hidden";
	}
	if(null != node4){
		node4.style.display  = "none";
		node4.style.visibility = "hidden";
	}
		
	if(null != node5){
		node5.style.display  = "none";
		node5.style.visibility = "hidden";
	}
	
	if(null != node6){
		node6.style.display  = "none";
		node6.style.visibility = "hidden";
	}
		if(null != node7){
		node7.style.display  = "none";
		node7.style.visibility = "hidden";
	}
}

function checkUserName(value){			

	 if(!userNameFormatValidator(value) || value.length < 6){

	  reMark(gWrong,gWrong5,gInfo,gWrong2,gWrong3,gWrong4,gCorrect);	
	  }
  else{
		JsService.getRegisterResult(value,receiveEmailResult);
	 }   
}

function checkEmail(value){		
	 
	  if(!emailValidator(value)){
		   reMark(gWrong,gInfo,gWrong2,gWrong3,gWrong4,gWrong5,gCorrect);
	        }
	   else if(!emailOfZju(value)){
		    reMark(gWrong4,gInfo,gWrong2,gWrong3,gWrong,goWrong5,gCorrect);
	       }   
}


/*
function checkEmailTest(value,info,wrong){
	if(!emailValidator(value)){
		reMark(wrong,info,gWrong2);
	}
	else{
		JsService.getRegisterResult(value,receiveEmailResult)
	}
}
*/

function checkrecommender(value){
	//debugger;
	if(!fieldBlankValidator(value) && 0 < value.length){
		if(!emailValidator(value)){
			reMark(gWrong,gInfo,gWrong2,gWrong3,gCorrect);
		}
		else{
			reMark(gCorrect,gInfo,gWrong2,gWrong3,gWrong);
		}
	}
	else{
		gWrong.style.display  = "none";
		gWrong.style.visibility = "hidden";
		gCorrect.style.display  = "none";
		gCorrect.style.visibility = "hidden";
	}
}

function checkPassword(value){
	if(!fieldFormatValidator(value) || !minLengthValidator(value,6))
		reMark(gWrong,gInfo,gWrong2,gWrong3,gCorrect,gWrong4,gWrong5);
	else
		reMark(gCorrect,gWrong,gWrong2,gWrong3,gInfo,gWrong4,gWrong5);
}

function checkPasswordAgain(value,tempValue){
	if(value != tempValue)
		reMark(gWrong,gInfo,gWrong2,gWrong3,gCorrect);
	else if(value == "")
		reMark(gInfo,gWrong,gWrong2,gWrong3,gCorrect);
	else
		reMark(gCorrect,gWrong,gWrong2,gWrong3,gInfo);
}

function checkNickname(value,info,wrong){
	//debugger;
	if(!fieldFormatValidator(value))
		reMark(gWrong,gInfo,gWrong2,gWrong3,gCorrect,gWrong4,gWrong5);
	else{
		JsService.isRegistedNickname(value,receiveNickname);
	}
}

function checkBand(value){
	if(0 == value)
		reMark(gWrong,gInfo,gWrong2,gWrong3,gCorrect);
	else
		reMark(gCorrect,gWrong,gWrong2,gWrong3,gInfo);
}

function receiveEmailResult(result){
	//debugger;
	
	switch(result){
		case 1:
			reMark(gWrong3,gInfo,gWrong2,gWrong,gWrong5,gCorrect);
			break;
		case 2:
			reMark(gWrong2,gInfo,gWrong,gWrong3,gWrong5,gCorrect);
			break;		
		case 0:
		case 3:
			reMark(gCorrect,gInfo,gWrong,gWrong2,gWrong3,gWrong5);
			break;
		default:
			reMark(gCorrect,gInfo,gWrong,gWrong2,gWrong3,gWrong5);
			break;
	}
}

function receiveNickname(result){
	//debugger;
	if(result)
		reMark(gWrong2,gInfo,gWrong,gWrong3,gCorrect,gWrong4,gWrong5);
	else
		reMark(gCorrect,gInfo,gWrong,gWrong2,gWrong3,gWrong4,gWrong5);
}

function loseFocus(node,className){
	node.className = className;
}

function getFocus(prefix,postfix1,postfix2,postfix3,postfix4,postfix5,postfix6,className){

	//debugger;
	var node1 = document.getElementById(prefix + postfix1);
	var node2 = document.getElementById(prefix + postfix2);
	var node3 = document.getElementById(prefix + postfix3);
	var node4 = document.getElementById(prefix + postfix4);
	var node5 = document.getElementById(prefix + postfix5);
	var node6 = document.getElementById(prefix + postfix6);
	if(null != node1){
		node1.className = className;
		node1.style.visibility = "visible";
		node1.style.display = "block";
	}
	if(null != node2)
		node2.style.display = 'none';
	if(null != node3)
		node3.style.display = 'none';
	if(null != node4)
		node4.style.display = 'none';
	if(null != node5)
		node5.style.display = 'none';
	if(null != node6)
		node6.style.display = 'none';
}

function emailOfZju(emailStr){
	if(emailStr.substring(emailStr.indexOf('@') + 1) == "st.zju.edu.cn"){
		return false;
	}	
	return true;
}
