var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü_-";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ_-";

function isDigit (c) //devuelve si un caracter es numero o no
{   return ((c >= "0") && (c <= "9"))
}

function isLetter (c) //busca en un arreglo de todas las letras si es una letra o no
{
    return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
            ( lowercaseLetters.indexOf( c ) != -1 ) )
}

function isemail( v ) 
{
	var reg  = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;
	return reg.test( v );
}

function isEmpty(s) //verifica si un string es nulo o vacio
{   return ((s == null) || (s.length == 0) || (s == ""))
}

function isAlphanumeric (s) //verifica que un string sea alfanumerico estricto y sin espacios en blanco
{   var i;

    if (isEmpty(s)) return false;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}

/* ===================================================================== */

function isblank(val)
{
	if(val==null) return true;
	for(var i=0;i<val.length;i++)
	{
		if
		(	
				(val.charAt(i) != ' ') 
			&& 	(val.charAt(i) != "\t") 
			&& 	(val.charAt(i) != "\n") 
			&& 	(val.charAt(i) != "\r")
		) return false;
	}
	return true;
}

/* ===================================================================== */
// Este solo funciona en IE

function numeros ()  { //verifica que solo ingresen al campo de texto numeros en el evento onKeypress

if ((event.keyCode < 48) ||(event.keyCode > 57)) event.returnValue = false;

}


function chequeaRequeridos(frm, CamposRequeridos, Descripcion) {
	var alertMsg = "_______________________________________________________________\n\n";
 		 alertMsg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
	 	 alertMsg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		 alertMsg += "_______________________________________________________________\n\n";
		 alertMsg += "Los siguientes campos deben rellenarse: \n\n";

	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < CamposRequeridos.length; i++){
		var obj = frm.elements[CamposRequeridos[i]];
		if (obj) {
			switch(obj.type) {
			case "select-one":
				if (obj.selectedIndex == 0 || obj.options[obj.selectedIndex].text == "" || obj.value == ""){
					alertMsg += " - " + Descripcion[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + Descripcion[i] + "\n";
				}
				break;
						
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + Descripcion[i] + "\n";
				}
				break;
				
			case "text":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + Descripcion[i] + "\n";				
					
				}
				break;
				
			case "password":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + Descripcion[i] + "\n";				
					
				}						
				break;
				
			default:
			}
			
			if (obj.type == undefined) {
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++)
					if (obj[j].checked) blnchecked = true;
				
				if (!blnchecked)
					alertMsg += " - " + Descripcion[i] + "\n";
			}
		}
	}

	if (alertMsg.length == l_Msg) {
		return true;
	} else {
		alert(alertMsg);
		return false;
	}
}

function longitud_login_password(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";

	var pass;
	pass = frm.password.value; 
	
	var confirmacion;
	confirmacion = frm.confirmacion.value;
	
	var login;
	login = frm.login.value;

	if (login.length < 6) {
		
		errorMsg += "\n Nombre de usuario \t- El nombre de usuario debe tener al menos 6 caracteres";
		frm.login.value =  "";
	
	} else {
		
		if (isAlphanumeric(login) == false){
			
			errorMsg += "\n Nombre de usuario \t- El nombre de usuario solo puede tener numeros y letras";
			frm.login.value =  "";
		}
	}
	
	if (pass.length < 6 ){
			
		errorMsg += "\n Contraseña \t- La contraseña debe tener al menos 6 caracteres";
 
 		} else {
			
			if (isAlphanumeric(pass) == false){
			
			errorMsg += "\n Contraseña \t\t- La contraseña solo puede tener numeros y letras";
			
			} else {
			
				if (confirmacion != pass) {
	
				errorMsg += "\n Confirmación \t- No coinciden la contraseña y la confirmación";
				frm.password.value = "";
				frm.confirmacion.value =  "";
				
				}
			}
			
		
	 }	
		
	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
	
}


function longitud_password(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";

	var pass;
	pass = frm.password.value; 
	
	var confirmacion;
	confirmacion = frm.confirmacion.value;
	
	if (pass.length < 6 ){
			
		errorMsg += "\n Contraseña \t- La contraseña debe tener al menos 6 caracteres";
 
 	} else {
			
			if (isAlphanumeric(pass) == false){
			
			errorMsg += "\n Contraseña \t\t- La contraseña solo puede tener numeros y letras";
			
			} else {
			
				if (confirmacion != pass) {
	
				errorMsg += "\n Confirmación \t- No coinciden la contraseña y la confirmación";
				frm.password.value = "";
				frm.confirmacion.value =  "";
				
				}
			}
			
		
	 }	
		
	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
	
}

function password_coincide(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";

	var pass;
	pass = frm.passwd.value; 
	
	var confirmacion;
	confirmacion = frm.clave2.value;
	
	
			
	if (isAlphanumeric(pass) == false){
			
		errorMsg += "\n PASSWORD \t\t- El Password solo puede tener numeros y letras";
			
	} else {
			
		if (confirmacion != pass) {
	
		errorMsg += "\n PASSWORD \t- No coinciden el password y la confirmación";
		frm.passwd.value = "";
		frm.clave2.value =  "";
				
		}
	}

	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
	
}

function email_coincide(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";

	var email;
	email = frm.email.value; 
	
	var email2;
	email2 = frm.email2.value;
	

	if (email2 != email) {
	
		errorMsg += "\n Email \t- No coinciden el email y la confirmación";
		frm.email.value = "";
		frm.email2.value =  "";
				
	}

	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
	
}


function validaTerminos(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";
	
	
	//Verifica el email
			
	if (frm.terminos.checked != 1) {
	
	  errorMsg += "\n Términos \t- Debe aceptar los términos y condiciones";
	}
	
	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
}

function validaEmail(frm) {
	
	var errorMsg = "";
	var errorMsgLong = "";
	
	
	//Verifica el email
			
	if (frm.email.value != '') {
	var checkEmail = "@.";
	var checkStr = frm.email.value;
	var EmailValid = false;
	var EmailAt = false;
	var EmailPeriod = false;
	for (i = 0;  i < checkStr.length;  i++)
	{
	ch = checkStr.charAt(i);
	for (j = 0;  j < checkEmail.length;  j++)
	{
		if (ch == checkEmail.charAt(j) && ch == "@")
		EmailAt = true;
		if (ch == checkEmail.charAt(j) && ch == ".")
		EmailPeriod = true;
		if (EmailAt && EmailPeriod)
		break;
		if (j == checkEmail.length)
		break;
	}
	// if both the @ and . were in the string
		if (EmailAt && EmailPeriod)
		{
			EmailValid = true
			break;
		}
	}
	if (!EmailValid) {
	  errorMsg += "\n Email \t- Debe ingresar un email válido";
	}
	}
	
	if ((errorMsg != "") || (errorMsgLong != "")){
		msg = "_______________________________________________________________\n\n";
		msg += "El formulario no ha sido enviado debido a que se presentaron problemas.\n";
		msg += "Por favor corrija los problemas y vueva a enviar el formulario.\n";
		msg += "_______________________________________________________________\n\n";
		msg += "Los siguientes campos necesitan ser corregidos: \n";
		
		errorMsg += alert(msg + errorMsg + "\n" + errorMsgLong);
		return false;
	}

	return true;
}

function Validar (frm, fecha, deshabilitar) 
{
 
 if (chequeaRequeridos(frm, cmpReq, desc))
  {
    if (deshabilitar == null) frm.Submit.disabled = true;
    return true;
  }
  else
    return false;
}   

function ValidarEmail (frm, fecha, deshabilitar) 
{
	
  if (chequeaRequeridos(frm, cmpReq, desc) && validaEmail(frm))
  {
    if (deshabilitar == null) frm.Submit.disabled = true;
    return true;
  }
  else
    return false;
}  

function ValidarEmail_Terminos (frm, fecha, deshabilitar) 
{
  if (chequeaRequeridos(frm, cmpReq, desc) && validaEmail(frm) && email_coincide(frm) && validaTerminos(frm))
  {
    if (deshabilitar == null) frm.Submit.disabled = true;
    return true;
  }
  else
    return false;
} 

function crea_fecha_nac(frm) {



}

function ValidarEmailPasswordCoincide (frm, fecha, deshabilitar) 
{
	
  if (chequeaRequeridos(frm, cmpReq, desc) && validaEmail(frm) && email_coincide(frm) && password_coincide(frm))
  {
    if (deshabilitar == null) { 
		frm.Submit.disabled = true;
		frm.fecha_nac.value = frm.fecha_ano.value+'-'+frm.fecha_mes.value+'-'+frm.fecha_dia.value;
		
		if (frm.lista_tipo.checked) {
			frm.lista.value = "TRUE";
		} else {
			frm.lista.value = "FALSE";	
		}
    }
	return true;
  }
  else
    return false;
	
}   
