function AJAXInteraction(url, callback){
        var req = init();
        req.onreadystatechange = processRequest;

        function init(){
                if(window.XMLHttpRequest){
                        return new XMLHttpRequest();
		}
		else if(window.ActiveXObject){
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	function processRequest(){
		//readyState of 4 signifies request is complete
		if(req.readyState == 4){
			//status of 200 signifies successful HTTP call
			if(req.status == 200){
				if(callback) callback(req.responseXML);


/*
		var taken = req.responseXML.getElementsByTagName("alreadyTaken")[0].childNodes[0].nodeValue;

		if (taken.indexOf("true") > -1) {
			alert("already taken is true");
			return true;
		} else {
			alert("already taken is false");
			return false;
		}

*/


			}
			else{
				if(document.selectModel != null && document.selectModel.autoModel.length <= 0){ 
					/*if(document.selectModel.autoYear.value != "#"){
						openMenu('modelMessage');
					}*/
				}
				else if(document.selectModel != null){
					document.selectModel.submit();
					openMenu('loadingMsg');
				}
			}
		}
	}

	this.doGet=function(){
		req.open("GET", url, true);
		req.send(null);
	}
}

function hideSurveyConfirmField() {
	document.getElementById("displayEmailChangeMessage").style.display = "none";			
	document.getElementById("displayEmail2").style.display = "none";			
	document.svy.email2.value = "";
}

function hideConfirmField() {
	document.getElementById("displayEmailChangeMessage").style.display = "none";			
	document.getElementById("displayEmail2").style.display = "none";			
	document.svyForm.email2.value = "";

}

function checkSurveyEmailAvailability() {
	var email = document.getElementById("email");
	var oldEmail = document.getElementById("oldEmail");
	var isRecognized = document.getElementById("isRecognized");

	//clear email2. If this function is running, they've altered the first email field and
	//are not using the email that was automatically plugged in to email and email2. 
	if(email.value == oldEmail.value) {
		document.svy.email2.value = email.value;
	} else {
		document.svy.email2.value = "";
	}

	//if email is invalid, return false without checking for it in db
	if (!checkEmail('msginvalid')) {
		return false;
	}  else if(isRecognized.value.indexOf("true") > -1 && oldEmail.value != email.value){
		//if email is valid, check if user is registered and if new email was entered
		var url = "/survey/ValidationServlet?checkEmailAddress=true&email=" + email.value;
		var ajax = new AJAXInteraction(url, setSurveyAlreadyTaken);
		ajax.doGet();
	}
}

function checkEmailAvailability() {
	var email = document.getElementById("email");
	var oldEmail = document.getElementById("oldEmail");
	var isRecognized = document.getElementById("isRecognized");

	//clear email2. If this function is running, they've altered the first email field and
	//are not using the email that was automatically plugged in to email and email2. 
	if(email.value == oldEmail.value) {
		document.svyForm.email2.value = email.value;
	} else {
		document.svyForm.email2.value = "";
	}

	//if email is invalid, return false without checking for it in db
	if (!checkEmail('msginvalid')) {
		return false;
	}  else if(isRecognized.value.indexOf("true") > -1 && oldEmail.value != email.value){
		//if email is valid, check if user is registered and if new email was entered
		var url = "/survey/ValidationServlet?checkEmailAddress=true&email=" + email.value;
		var ajax = new AJAXInteraction(url, setAlreadyTaken);
		ajax.doGet();
	} 
}

function setSurveyAlreadyTaken(responseXML) {
	if(responseXML){
		var taken = responseXML.getElementsByTagName("alreadyTaken")[0].childNodes[0].nodeValue;
		var messageArea = document.getElementById("emailStatus");
		var message = "";
		var spanClass = "msginvalid";
		var imageClass = "invalid";

		//if it's already taken, set message
		if (taken.indexOf("true") > -1) {
			message = "Por favor, ingrese una direcci\u00F3n de correo electrónica nueva. Esta dirección ya existe en nuestro registro.";
			document.getElementById("displayEmail2").style.display = "none";			
			document.getElementById("displayEmailChangeMessage").style.display = "none";			
			document.svy.email2.value = "";
		} else {
			//document.svy.alreadyTaken.value = '';		
			document.getElementById("displayEmail2").style.display = "block";			
			document.getElementById("displayEmailChangeMessage").style.display = "block";			
		}
		if(message != ""){
			if(document.getElementById("emailStatusIcon") != null){
				var messageAreaIcon = document.getElementById("emailStatusIcon");
				messageAreaIcon.className = imageClass;
				messageAreaIcon.innerHTML = "&nbsp;";
				if(imageClass == "valid"){
					messageArea.innerHTML = "";
					messageArea.className = "";
				}else{
					messageArea.className = spanClass;
					messageArea.innerHTML = message + "<br><br>";
				}
			}else if(document.getElementById("emailStatusImage") != null){
				var messageAreaImage = document.getElementById("emailStatusImage");
				if(imageClass == "valid"){
					messageAreaImage.className = imageClass;
					messageAreaImage.innerHTML = "&nbsp;";
					messageArea.className = "";
					messageArea.innerHTML = "";
				}else{
					messageAreaImage.className = "";
					messageAreaImage.innerHTML = "";
					messageArea.className = imageClass;
					messageArea.innerHTML = "<span class='" + spanClass + "'>" + message + "</span><br><br>";
				}
			}else{
				messageArea.innerHTML="<span class=" + spanClass + ">" + message + "</span>"; 
				messageArea.className = imageClass;	
			}
		}
		if(imageClass == "invalid"){
				return false;
		}
		else{
			return true;
		}

	} 
}

function setAlreadyTaken(responseXML) {
	if(responseXML){
		var taken = responseXML.getElementsByTagName("alreadyTaken")[0].childNodes[0].nodeValue;
		var messageArea = document.getElementById("emailStatus");
		var message = "";
		var spanClass = "msginvalid";
		var imageClass = "invalid";

		//if it's already taken, set message
		if (taken.indexOf("true") > -1) {
			message = "Por favor, ingrese una direcci\u00F3n de correo electrónica nueva. Esta dirección ya existe en nuestro registro.";
			document.getElementById("displayEmail2").style.display = "none";			
			document.getElementById("displayEmailChangeMessage").style.display = "none";			
			document.svyForm.email2.value = "";
		} else {
			//document.svyForm.alreadyTaken.value = '';		
			document.getElementById("displayEmail2").style.display = "block";			
			document.getElementById("displayEmailChangeMessage").style.display = "block";			
		}
		if(message != ""){
			if(document.getElementById("emailStatusIcon") != null){
				var messageAreaIcon = document.getElementById("emailStatusIcon");
				messageAreaIcon.className = imageClass;
				messageAreaIcon.innerHTML = "&nbsp;";
				if(imageClass == "valid"){
					messageArea.innerHTML = "";
					messageArea.className = "";
				}else{
					messageArea.className = spanClass;
					messageArea.innerHTML = message + "<br><br>";
				}
			}else if(document.getElementById("emailStatusImage") != null){
				var messageAreaImage = document.getElementById("emailStatusImage");
				if(imageClass == "valid"){
					messageAreaImage.className = imageClass;
					messageAreaImage.innerHTML = "&nbsp;";
					messageArea.className = "";
					messageArea.innerHTML = "";
				}else{
					messageAreaImage.className = "";
					messageAreaImage.innerHTML = "";
					messageArea.className = imageClass;
					messageArea.innerHTML = "<span class='" + spanClass + "'>" + message + "</span><br><br>";
				}
			}else{
				messageArea.innerHTML="<span class=" + spanClass + ">" + message + "</span>"; 
				messageArea.className = imageClass;	
			}
		}
		if(imageClass == "invalid"){
				return false;
		}
		else{
			return true;
		}

	} 
}

function checkEmailAvailability2(){
	var isRecognized = document.getElementById("isRecognized");
	var email = document.getElementById("email");
	var email2 = document.getElementById("email2");
	var oldEmail = document.getElementById("oldEmail");

	if(isRecognized != null && oldEmail != null) {
		if (isRecognized.value.indexOf("true") > -1 && oldEmail.value !=  email.value) {

			if (email2.value == '') {
				return false;
			}

		}
	}
}

function checkEmail(classType){
	var email = document.getElementById("email");
	var messageArea = document.getElementById("emailStatus");
	var spanClass = classType;
	var imageClass = "invalid";
	var message = "";

	if(email.value == ""){
		message = "Por favor, ingrese una direcci&oacute;n email";
	}
	else if(email.value.indexOf("'") > -1){
		message = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo";
	}
	else if(email.value.search(/[\d\w]+@[\d\w-]+\.[\d\w]+/) < 0){
		message = "Direcci&oacute;n email incorrecta";
	}
	else{
		message = "&nbsp;";
		spanClass = "msgvalid";
		imageClass = "valid";
	}
	if(message != ""){
		if(document.getElementById("emailStatusIcon") != null){
			var messageAreaIcon = document.getElementById("emailStatusIcon");
			messageAreaIcon.className = imageClass;
			messageAreaIcon.innerHTML = "&nbsp;";
			if(imageClass == "valid"){
				messageArea.innerHTML = "";
				messageArea.className = "";
			}else{
				messageArea.className = spanClass;
				messageArea.innerHTML = message + "<br><br>";
			}
		}else if(document.getElementById("emailStatusImage") != null){
			var messageAreaImage = document.getElementById("emailStatusImage");
			if(imageClass == "valid"){
				messageAreaImage.className = imageClass;
				messageAreaImage.innerHTML = "&nbsp;";
				messageArea.className = "";
				messageArea.innerHTML = "";
			}else{
				messageAreaImage.className = "";
				messageAreaImage.innerHTML = "";
				messageArea.className = imageClass;
				messageArea.innerHTML = "<span class='" + spanClass + "'>" + message + "</span><br><br>";
			}
		}else{
			messageArea.innerHTML="<span class=" + spanClass + ">" + message + "</span>"; 
			messageArea.className = imageClass;	
		}
	}
	if(imageClass == "invalid"){
		return false;
	}
	else{
		return true;
	}
}

function checkEmailMatch(classType){
	var email = document.getElementById("email");
	var email2 = document.getElementById("email2");
	var messageArea = document.getElementById("email2Status");
	var spanClass = classType;
	var imageClass = "invalid";
	var message = "&nbsp;";

	if(email.value != "" && email2.value != ""){
		stripOutSpaces();
		if(email2.value.indexOf("'") > -1){
			message = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo";
		}
		else if(email2.value.toUpperCase() != email.value.toUpperCase()){
			message = "La direcci&oacute;n emails no es la misma"
		}
		else{
			spanClass = "msgvalid";
			imageClass = "valid";
		}
		if(document.getElementById("email2StatusIcon") != null){
			var messageAreaIcon = document.getElementById("email2StatusIcon");
			messageAreaIcon.className = imageClass;
			messageAreaIcon.innerHTML = "&nbsp;";
			if(imageClass == "valid"){
				messageArea.innerHTML = "";
				messageArea.className = "";
			}else{
				messageArea.className = spanClass;
				messageArea.innerHTML = message + "<br><br>";
			}
		}else if(document.getElementById("email2StatusImage") != null){
			var messageAreaImage = document.getElementById("email2StatusImage");
			if(imageClass == "valid"){
				messageAreaImage.className = imageClass;
				messageAreaImage.innerHTML = "&nbsp;";
				messageArea.className = "";
				messageArea.innerHTML = "";
			}else{
				messageAreaImage.className = "";
				messageAreaImage.innerHTML = "";
				messageArea.className = imageClass;
				messageArea.innerHTML = "<span class='" + spanClass + "'>" + message + "</span><br><br>";
			}
		}else{
			messageArea.innerHTML = "<span class=" + spanClass + ">" + message + "</span>";
			messageArea.className = imageClass;
		}
	}
	else{
 		if(email2.value.indexOf("'") > -1){
			if(document.getElementById("email2StatusIcon") != null){
				document.getElementById("email2StatusIcon").className = "invalid";
				document.getElementById("email2StatusIcon").innerHTML = "&nbsp;";
				messageArea.innerHTML = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo<br><br>";
				messageArea.className = "msginvalid";
			}else if(document.getElementById("email2StatusImage") != null){
				var messageAreaImage = document.getElementById("email2StatusImage");
				messageAreaImage.className = "";
				messageAreaImage.innerHTML = "";
				messageArea.className = "invalid";
				messageArea.innerHTML = "<span class=msginvalid>Pedimos disculpas, no se puede utilizar ap&oacute;strofo</span><br><br>";
			}else{
				messageArea.innerHTML = "<span class=msginvalid>Pedimos disculpas, no se puede utilizar ap&oacute;strofo</span>";
				messageArea.className = "invalid";
			}
		}
	}	
	if(imageClass == "invalid"){
		return false;
	}
	else{
		return true;
	}
}

function checkField(field, messageField, message,classType){
	var messageArea = document.getElementById(messageField);
	var icon = messageField + "Icon";
	var image = messageField + "Image";
	if(document.getElementById(field).value == ""){
		if(field == "email2"){
			if(document.getElementById("email").value != ""){
				if(document.getElementById(icon) != null){
					document.getElementById(icon).className = "invalid";
					document.getElementById(icon).innerHTML = "&nbsp;";
					messageArea.className = classType;
					messageArea.innerHTML = "Por favor, confirme la direcci&oacute;n email<br><br>";
				}else{
				var mess = "Por favor, confirme la direcci&oacute;n email";
					if(document.getElementById(image) != null){
						document.getElementById(image).className = "";
						document.getElementById(image).innerHTML = "";
						mess += "<br><br>";
					}
					messageArea.innerHTML = "<span class=" + classType + ">" + mess + "</span>";
					messageArea.className = "invalid";
				}
			}
			else{
				messageArea.innerHTML = "";
				messageArea.className = "";
				if(document.getElementById(icon) != null){
					document.getElementById(icon).innerHTML = "";
					document.getElementById(icon).className = "";
				}
				else if(document.getElementById(image) != null){
					document.getElementById(image).className = "";
					document.getElementById(image).innerHTML = "";
				}
			}
		}
		else if(field == "pass2"){
			if(document.getElementById("pass1").value != ""){
				if(document.getElementById(icon) != null){
					document.getElementById(icon).className = "invalid";
					document.getElementById(icon).innerHTML = "&nbsp;";
					messageArea.className = classType;
					messageArea.innerHTML = "Por favor, confirme su contrase&ntilde;a<br><br>"; 
				}
				else{
				var mess = "Por favor, confirme su contrase&ntilde;a";
					if(document.getElementById(image) != null){
						document.getElementById(image).className = "";
				  	document.getElementById(image).innerHTML = "";
						mess += "<br><br>";
					}
					messageArea.innerHTML = "<span class=" + classType + ">" + mess + "</span>";
					messageArea.className = "invalid";
				}
			}
		}
		else{
				if(document.getElementById(icon) != null){
					document.getElementById(icon).className = "invalid";
					document.getElementById(icon).innerHTML = "&nbsp;";
					messageArea.className = classType;
					messageArea.innerHTML = "Por favor, ingrese " + message + "<br><br>";
				}else{
					var mess = message;
					if(document.getElementById(image) != null){
						document.getElementById(image).className = "";
						document.getElementById(image).innerHTML = "";
						mess += "<br><br>";
					}
					messageArea.innerHTML = "<span class=" + classType + ">Por favor, ingrese " + mess + "</span>";
					messageArea.className = "invalid";
				}
		}
		return false;
	}
	else{
		if(document.getElementById(field).value.indexOf("'") > -1){
			if(document.getElementById(icon) != null){
				document.getElementById(icon).className = "invalid";
				document.getElementById(icon).innerHTML = "&nbsp;";
				messageArea.className = classType;
				messageArea.innerHTML = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo<br><br>";
			}else{
				var mess = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo";
				if(document.getElementById(image) != null){
					document.getElementById(image).className = "";
					document.getElementById(image).innerHTML = "";
					mess += "<br><br>";
				}
				messageArea.innerHTML = "<span class=" + classType + ">" + mess + "</span>";
				messageArea.className = "invalid";
			}
			return false;
		}
		else if(field == "email2"){
			return checkEmailMatch(classType);
		}
		else if(field == "pass1" && document.getElementById(field).value.length < 4){
			if(document.getElementById(icon) != null){
				document.getElementById(icon).className = "invalid";
				document.getElementById(icon).innerHTML = "&nbsp;";
				messageArea.className = classType;
				messageArea.innerHTML = "Debe tener por lo menos 4 caracteres<br><br>";
			}else{
				var mess = "Debe tener por lo menos 4 caracteres";
				if(document.getElementById(image) != null){
					document.getElementById(image).className = "";
					document.getElementById(image).innerHTML = "";
					mess += "<br><br>";
				}
				messageArea.innerHTML = "<span class=" + classType + ">" + mess + "</span>";
				messageArea.className = "invalid";
			}
			return false;
		}
		else if(field == "pass1" && document.getElementById(field).value.match(/^\*+$/)){
			if(document.getElementById(icon) != null){
				document.getElementById(icon).className = "invalid";
				document.getElementById(icon).innerHTML = "&nbsp;";
				messageArea.className = classType;
				messageArea.innerHTML = "La contrase&ntilde;a no puede tener asterisco<br><br>";
			}else{
				var mess = "La contrase&ntilde;a no puede tener asterisco";
				if(document.getElementById(image) != null){
					document.getElementById(image).className = "";
					document.getElementById(image).innerHTML = "";
					mess += "<br><br>";
				}
				messageArea.innerHTML = "<span class=" + classType + ">" + mess + "</span>";
				messageArea.className = "invalid";
			}
			return false;
		}
		else if(field == "pass2"){
			return checkPassMatch(classType);
		}
		else{
			if(document.getElementById(icon) != null){
				document.getElementById(icon).className = "valid";
				document.getElementById(icon).innerHTML = "&nbsp;";
				messageArea.className = "";
				messageArea.innerHTML = "";
			}else if(document.getElementById(image) != null){
				document.getElementById(image).className = "valid";
				document.getElementById(image).innerHTML = "&nbsp;";
				messageArea.innerHTML = "";
				messageArea.className = "";
			}else{
				messageArea.innerHTML = "<span class=msgvalid>&nbsp;</span>";
				messageArea.className = "valid";
			}
			return true;
		}
	}
}

function clearMessage(field){
	var messageArea = document.getElementById(field);
	if(messageArea.className != null && (messageArea.className == "invalid" || messageArea.className == "msginvalid" || messageArea.className == "rednote")){
		messageArea.innerHTML = "";
		messageArea.className = "";
	}
}

function checkEmailFields(classType){
	var emailAvailable = checkEmailAvailability2();
	var emailStat = checkEmail(classType);
	var emailStat2 = checkField('email2','email2Status','',classType);
	var emailMatch = checkEmailMatch(classType);

	//if(emailStat==false || emailStat2 == false || emailMatch == false){
	if(emailAvailable==false || emailStat==false || emailStat2 == false || emailMatch == false){
		if(document.getElementById("errorMessage") != null){
			var messageArea = document.getElementById("errorMessage");
			messageArea.innerHTML = "<span class=msginvalid>Por favor, corrija los errores que aparecen arriba</span>";
			messageArea.className = "invalid";
		}
		return false;
	}
	else{
		if(document.getElementById("errorMessage") != null){
			var messageArea = document.getElementById("errorMessage");
			messageArea.innerHTML = "";
			messageArea.className = "";
		}
		return true;
	}
}

function checkEmailFields(classType){
	var emailStat = checkEmail(classType);
	var emailStat2 = checkField('email2','email2Status','',classType);
	var emailMatch = checkEmailMatch(classType);

	if(emailStat==false || emailStat2 == false || emailMatch == false){
		if(document.getElementById("errorMessage") != null){
			var messageArea = document.getElementById("errorMessage");
			messageArea.innerHTML = "<span class=msginvalid>Por favor, corrija los errores que aparecen arriba</span>";
			messageArea.className = "invalid";
		}
		return false;
	}
	else{
		if(document.getElementById("errorMessage") != null){
			var messageArea = document.getElementById("errorMessage");
			messageArea.innerHTML = "";
			messageArea.className = "";
		}
		return true;
	}
}

function checkPassMatch(classType){
	var messageArea = document.getElementById("pass2Status");
	var message = "";
	var imageClass = "invalid";
	var spanClass = classType;
	var icon = "pass2StatusIcon";
	var image = "pass2StatusImage";
	
	if(document.getElementById("pass1").value != "" &&
     document.getElementById("pass2").value != ""){
		if(document.getElementById("pass2").value.indexOf("'") > -1){
			message = "Pedimos disculpas, no se puede utilizar ap&oacute;strofo";
			//messageArea.innerHTML = "<span class=msginvalid>Pedimos disculpas, no se puede utilizar ap&oacute;strofo.</span>";
		  //messageArea.className = "invalid";
		  //return false;
		}
	  else if(document.getElementById("pass1").value.toUpperCase() != document.getElementById("pass2").value.toUpperCase()){        
			message = "La contrase&ntilde;a no es correcta";
			//messageArea.innerHTML = "<span class=msginvalid>La contrase&ntilde;a no es correcta</span>";
			//messageArea.className = "invalid";
		  //return false;
		}
		else{
			message = "&nbsp;";
			imageClass = "valid";
			//messageArea.innerHTML = "<span class=msgvalid>&nbsp;</span>";
		  //messageArea.className = "valid";
		  //return true;
		}
		if(document.getElementById(icon) != null){
			document.getElementById(icon).className = imageClass;
			document.getElementById(icon).innerHTML = "&nbsp;";
			if(message != "" && message != "&nbsp;"){
				messageArea.className = spanClass;
				messageArea.innerHTML = message + "<br><br>";
			}
			else{
				messageArea.className = "";
				messageArea.innerHTML = "";
			}
		}
		else if(document.getElementById(image) != null){
			var messageAreaImage = document.getElementById(image);
			if(imageClass == "valid"){
				messageAreaImage.className = imageClass;
				messageAreaImage.innerHTML = "&nbsp;";
				spanClass = "";
				//alert("spanClass: " + spanClass);
			}else{
				messageAreaImage.className = "";
				messageAreaImage.innerHTML = "";
				messageArea.className = imageClass;
				messageArea.innerHTML = "<span class=" + spanClass + ">" + message + "</span><br><br>";
			}
		}
		else{
			messageArea.className = imageClass;
			messageArea.innerHTML = "<span class=" + spanClass + ">" + message + "</span>";
		}
	}
	if(spanClass == "invalid" || spanClass == "msginvalid"){
		return false;
	}
	else{
		return true;
	}
}

function stripOutSpaces(){
	var email = document.getElementById("email");
	var email2 = document.getElementById("email2");

	var newEmail = "";
	var newEmail2 = "";

	var splitEmail = email.value.split(" ");
	var splitEmail2 = email2.value.split(" ");

	for(i = 0; i < splitEmail.length; i++){
		if(splitEmail[i] != ""){
			newEmail += splitEmail[i];
		}
	}
	
	for(i = 0; i < splitEmail2.length; i++){
		if(splitEmail2[i] != ""){
			newEmail2 += splitEmail2[i];
		}
	}

	email.value = newEmail;
	email2.value = newEmail2;
}
