function ValidarDireccionMail(who) 
{
	//alert('mail: -'+who+'-')
	function isEmpty(who) {
		var testArr=who.split("");
		if(testArr.length==0)
			return true;
		var toggle=0;
		for(var i=0; i<testArr.length; i++) {
			if(testArr[i]==" ") {
				toggle=1;
				break;
			}
		}
		if(toggle)
			return true;
		return false;
	}

	function isValid(who) {
		var invalidChars=new Array("~","!","@","#","$","%","^","&","*","(",")","+","=","[","]",":",";",",","\"","'","|","{","}","\\","/","<",">","?");
		var testArr=who.split("");
		for(var i=0; i<testArr.length; i++) {
			for(var j=0; j<invalidChars.length; j++) {
				if(testArr[i]==invalidChars[j]) {
					return false;
				}
			}
		}
		return true;
	}

	function isfl(who) {
		var invalidChars=new Array("-","_",".");
		var testArr=who.split("");
		which=0;
		for(var i=0; i<2; i++) {
			for(var j=0; j<invalidChars.length; j++) {
				if(testArr[which]==invalidChars[j]) {
					return false;
				}
			}
			which=testArr.length-1;
		}
		return true;
	}

	function isDomain(who) {
		var invalidChars=new Array("-","_",".");
		var testArr=who.split("");
		if(testArr.length<2||testArr.length>4) {
			return false;
		}
		for(var i=0; i<testArr.length; i++) {
			for(var j=0; j<invalidChars.length; j++) {
				if(testArr[i]==invalidChars[j]) {
					return false;
				}
			}
		}
		return true;
	}


	var testArr=who.split("@");
	if(testArr.length<=1||testArr.length>2) {
		return false;
	}
	else {
		if(isValid(testArr[0])&&isfl(testArr[0])&&isValid(testArr[1])) {
			if(!isEmpty(testArr[testArr.length-1])&&!isEmpty(testArr[0])) {
				var testArr2=testArr[testArr.length-1].split(".");
				if(testArr2.length>=2) {
					var toggle=1;
					for(var i=0; i<testArr2.length; i++) {
						if(isEmpty(testArr2[i])||!isfl(testArr2[i])) {
							toggle=0;
							break;
						}
					}
					if(toggle&&isDomain(testArr2[testArr2.length-1]))
						return true;
					return false;
				}
				return false;
			}
		}
	}
}


function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function eliminaEspacios(cadena)
{
	// Funcion equivalente a trim en PHP
	var x=0, y=cadena.length-1;
	while(cadena.charAt(x)==" ") x++;	
	while(cadena.charAt(y)==" ") y--;	
	return cadena.substr(x, y-x+1);
}

function validaIngreso(valor)
{
	/* Funcion encargada de validar lo ingresado por el usuario. Se devuelve TRUE en caso de ser valido, FALSE en caso contrario */
	var reg=/(^[a-zA-Z0-9.@ ]{4,40}$)/;
	if(reg.test(valor)) return true;
	else return false;
}





function nuevoEvento(evento)
{
	// Obtengo el div donde se mostraran las advertencias y errores
	var divMensaje=document.getElementById("error99");

	/* Dependiendo de cual sea el evento que ejecuto esta funcion (ingreso o verificacion) se setean
	distintas variables */	
	if(evento=="ingreso")
	{
		var input=document.getElementById("ingreso");

		// Boton presionado
		var boton=document.getElementById("botonIngreso");

		// Valor ingresado por el usuario
		var valor=input.value;

		// Texto a colocar en el input mientras se esta cargando la respuesta del servidor
		var textoAccion="Ingresando...";
	}
	else
	{
		//var input=document.getElementById("verificacion");
		var input=document.getElementById("mimail");

		// Valor ingresado por el usuario en el campo EMAIL
		var valor=input.value;

		// Texto a colocar en el input mientras se esta cargando la respuesta del servidor
		var textoAccion="Comprobando...";
		divMensaje.innerHTML="<input type=hidden value=2 name=siono id=siono><img src=ajax-loader.gif>";
	}

	// Elimino espacios por delante y detras de lo ingresado por el usuario
	valor=eliminaEspacios(valor);

	// Si el ingreso es invalido coloco un mensaje de error en la capa correspondiente
	//if(!validaIngreso(valor)) 
	if ( !ValidarDireccionMail(valor) )
	{
		//alert('V')
		if (valor != "")
			divMensaje.innerHTML="<input type=hidden value=0 name=siono id=siono><img src=cross.png>";
		else
			divMensaje.innerHTML="<input type=hidden value=0 name=siono id=siono>";

	}
	else
	{
		//alert('F')
		// Deshabilito inputs y botones para evitar dobles ingresos
		//boton.disabled=true; 
		input.disabled=true;
		input.value=textoAccion;
		
		// Creo la conexion con el servidor y le envio la variable evento (que le indica si debe ingresar o verificar) y el dato a utilizar
		var ajax=nuevoAjax();
		ajax.open("POST", "comprobar_disponibilidad_de_emailform_proceso.php", true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(evento+"="+valor);

		//alert('Pasa')
		
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4)
			{
				// Habilito nuevamente botones e inputs
				input.value=valor;

				//boton.disabled=false; 
				input.disabled=false;

				// Muestro el mensaje enviado desde el servidor
				divMensaje.innerHTML=ajax.responseText;
			}
		}
	}






}
