var errorPass = "form_error_widget pass";
var errorFail = "form_error_widget fail";
var errorHide = "hide form_error pass hide";
var xhr;
var xhr1;


function validate(divID,name){
	var outerDiv = document.getElementById(divID);
	var innerDiv = outerDiv.getElementsByTagName('div');
        
	for ( var j = 0; j < innerDiv.length;j++){
	        
		if ( validateInput(name)) {
			innerDiv[j].className = errorPass;
		}else {
			if ( innerDiv[j].className == errorPass){
				innerDiv[j].className = errorFail;
			}
			
			if ( innerDiv[j].className == errorHide){
				innerDiv[j].className = errorFail;
			}
		}
	}
 }
 
 
 //return true if an input field length is valid, otherwise return false.
 function validateInput(name){
        var strValue = document.getElementById(name).value;
 	var length = strValue.length;
        if ( length == 0)
        	return;

 	if (length < 250){ 
 		if( name == "E-mail"){ // validate email length if email length is less than 250
 			return validateEmail();
 		} else { 
 			if ( length <= 64 ) { // validate user name if username length is less than 64
 			         
 				if( name == "propID_username"){
 					return true;
 				} else {
 				     
 					 if ( name == "password1" || name == "password2" ){ // validate password if password length is between 6 and 32
 						if ( isNaN(length) || length<6||length>32){
 						        if(name == "password2"){
 						        	return validatePassword();
 							} else {
 								return false;
 							}
 						} else {
 						       if(name == "password2"){
 						                return validatePassword();
 							} else {
 							       return true;
 							}
 						}
 					} else {
 						 if ( length <= 32){ // validate rest of fields whether they  have less than 32 characters or not.
 						 	return true;
 						 } else {
 						 	return false;
 						}
 					} 
 					
 				} 
 			
 			} else {
 				return false;
 			}  
 		} 
 		
 	} else{
 		return false;
 	}
 }
 
 

  // validate new password and re-enter password.
 function validatePassword(){
        
 	var pass1 = document.getElementById('password1').value;
 	var pass2 = document.getElementById('password2').value;
 	var length = pass2.length;
         if(pass1.substring(0,length) == pass2 && pass1==pass2){
        	document.getElementById('passwordError').className = errorHide;
           	return true;
         } else {
         	//document.getElementById('passwordError').className = "errors";
 			return false;
 		}
 }
 
 
//Submit registration form if age verification check box has selected and visitor id has entered correctly.
function submitRegistration(){ 
		if (document.main.propID_firstname.value.length<1)
		{
			var outerDiv = document.getElementById('registerfirstname');
			showErrorMessage(outerDiv);
			document.main.propID_firstname.focus();
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\"> Please enter your first name.</font>";
			//return false;
		}else if(document.main.propID_lastname.value.length<1)
		{
			var outerDiv = document.getElementById('registerlastname');
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\"> Please enter your last name.</font>";
			showErrorMessage(outerDiv);
			document.main.propID_lastname.focus();
			//return false;
		}else if(document.main.propID_pass1.value.length<6)
		{ 
			var outerDiv = document.getElementById('registerpassword1');
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\"> Please enter your password, Six-characters minimum.</font>";
			showErrorMessage(outerDiv);
			document.main.propID_pass1.focus();
			//return false;
		}else if(document.main.propID_pass2.value.length<6)
		{
			var outerDiv = document.getElementById('registerpassword2');
			showErrorMessage(outerDiv);
			document.main.propID_pass2.focus();
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\">Please re-enter your password.</font>";
			//return false;
		}else if(document.main.propID_pass1.value.length != document.main.propID_pass2.value.length)
		{
			var outerDiv = document.getElementById('registerpassword2');
			showErrorMessage(outerDiv);
			document.main.propID_pass2.focus();
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\">Please re-enter your password.</font>";
			//return false;
		}
		else if (document.main.propID_username.value.length<1)
		{
			var outerDiv = document.getElementById('registerusername');
			showErrorMessage(outerDiv);
			document.main.propID_firstname.focus();
			 document.getElementById('errorMessage').innerHTML = "<font color = \"red\"> Please enter a username for your profile.</font>";
			//return false;
		}else if(!validateEmail()) {
			var outerDiv = document.getElementById('registeremail');
			showErrorMessage(outerDiv);
			document.getElementById('errorMessage').innerHTML = "<font color = \"red\">Please Enter a valid E-mail Address. </font>";
			document.main.propID_email.focus();

		}else {
		     if(document.getElementById('ageConfirm').checked){
			//document.main.submit();
			validateCaptcha();	
		     } else {
			document.getElementById('errorMessage').innerHTML = "<font color = red> Please confirm by selecting Check Box if you are 13 years old or older. </font>" ;
		    }
		}
}

function showErrorMessage(outerDiv){
	var innerDiv = outerDiv.getElementsByTagName('div');
	for ( var j = 0; j < innerDiv.length;j++){
		innerDiv[j].className = errorFail;
	}
}

// validate image text box
function validateCaptcha(){
	//alert('validateCaptcha Called...');
	showResp(document.getElementById('idCaptchaEntry').value,document.getElementById('idCaptchaType').value);
}

// no local var
function showResp(captchaEntry, captchaType) {
	//alert('showResp:'+captchaType);
	xhr = createXHR();
	xhr.onreadystatechange=processSuggestions;
	xhr.open("GET","/portal/mynasacaptchaAction.jsp?captchaEntry=" + captchaEntry+"&captchaType="+captchaType ,true);// call jsp
	xhr.send(null); 
}


function processSuggestions() {
	if (xhr.readyState == 4) {
		if (xhr.status == 200) {
			var data = xhr.responseText;
			//alert(data); 
			if(data==1){ // success
				//alert('success');
				document.main.submit();
			} else if (data==0) { // failure
				//alert('Not Matched');
				//reshowImage();
				window.location.href = "http://mynasa.nasa.gov/portal/site/mynasa/template.REGISTER/"+"?propID_username="+document.main.propID_username.value+"&propID_lastname="+document.main.propID_lastname.value + "&propID_firstname="+document.main.propID_firstname.value+ "&propID_email="+document.main.propID_email.value+"&captchError=fail";
			 } else {
			 	//alert("Bad Resp")
				document.getElementById('errorMessage').innerHTML = "<font color = \"red\">Captcha system administration bad response. </font>";
				document.getElementById('imageResp').className = errorFail;
			}
		} else { 
			//alert('fail');
			document.getElementById('imageResp').className = errorFail;
			document.getElementById('errorMessage').innerHTML = "<font color = \"red\">Please enter letters from the text box. </font>";
		}
	}
}

function reshowImage(){
	window.location.reload(true);
	alert("test");
	xhr1 = createXHR();
	xhr1.onreadystatechange=changeImage;
	xhr1.open("GET","/portal/mynasacaptchaAction.jsp?captchaType=image",true);
	xhr1.send(null);
}


function changeImage(){

if (xhr1.readyState == 4) {
    if (xhr1.status == 200) {
     //alert(xhr1.responseText);
     document.getElementById("verImage").src = xhr1.responseText;
  }
}    
}

function createXHR() {
var xhr;
try {
	xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
	try {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
		xhr = false;
	}
}

if (!xhr && typeof XMLHttpRequest != 'undefined') {
	  xhr = new XMLHttpRequest();
}
return xhr;
}    


// email validation 
function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}

function validateEmail(){
	emailID = document.getElementById('E-mail').value;
	return echeck(emailID)
 }



