// Valformularios version 1.1 * Abril 2002

//partes de los mensajes de error en la validacion de caracteres
msgalfanumerico = " debe tar encadarmáu namái por lletras y/ou númberos";
msgalfabetico = " debe estar formado sólo por letras";
msgalfanumericob = " debe tar encadarmáu por lletras,espacios y númberos";
msgalfabetico = " debe tar encadarmáu namái por lletras";
msgnumerico = " debe tar encadarmáu por una cantidá afayadiza";
msgentero = " debe tar encadarmáu namái por númberos enteros";
msgemail = " debe ser una siña de correyu lletrónicu afayadiza";
msgnombre = " debe ser un nome afayadizu";
msgtelefono = " debe ser un númberu de teléfonu afayadizu";
msgfecha = " debe ser una data DD.MM.AAAA";

//constantes de letras validas
letrasmayusculas="ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ";
letrasminusculas="abcdefghijklmnopqrstuvwxyzáéíóúñü";
//constante de caracteres invalidos para un email
letrasnoemail=" ,;/:<>*|&$!#()[]{}'" ;

//constante de espacios
espacios=" \t\n\r";

//funcion que comprueba si una cadena tiene espacios vacios
function esespacio(c)
{
   return ( espacios.indexOf( c ) != -1);
}

//funcion que comprueba si el parametro "s" que le pasamos esta vacio

function esvacio(s)
{   return ((s == null) || (s.length == 0))
}

//funcion que comprueba si el caracter q pasamos en "c" es una letra
function esletra(c)
{

    return( ( letrasmayusculas.indexOf( c ) != -1 ) ||
           ( letrasminusculas.indexOf( c ) != -1 ) )
}

//funcion que verifica que el dato es una fecha
function esfecha(c) {
if (c.length<10){
return false;
}
var dd=c.substring(0,2);
var mm=c.substring(3,5);
// (inicio,final+1) contando desde cero
var aa=c.substring(6,10);
if (dd <"01" || dd >"31") return false;
if (mm <"01" || mm >"12") return false;
if (aa <"2002") return false;
if ( (mm =="11" || mm =="04" || mm =="06" || mm =="09" || mm =="02") && dd >"30") return false;
if ( mm =="02" && dd >"29" ) return false;
return true;
}

//funcion que comprueba si el caracter q le pasamos en "c" es un digito
function esnumero(c)
{
 return ((c >= "0") && (c <= "9"))
}

//funcion que comprueba si la cadena que pasamos como parametro "s"
//contiene numeros o letras

function esalfanumerico(s)
{
var i=0;

for (i=0;i<s.length;i++)
 {
  var c=s.charAt(i);
  // si no es letra o numero o contiene espacios no es campo valido
  if ( !(esletra(c) || esnumero(c)) || (esespacio(c)) ) return false;
 }
 return true;
}

function esalfanumericob(s)
{
var i=0;

for (i=0;i<s.length;i++)
 {
  var c=s.charAt(i);
  // si no es letra o numero no es campo valido
  if ( !(esletra(c) || esnumero(c) || esespacio(c)) ) return false;
 }
 return true;
}


//funcion que comprueba si la cadena q pasamos "s" contiene  solamente
//letras
function esalfabetico(s)
{
var i = 0;
for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (!esletra(c))
        return false;
    }
    return true;
}

//funcion q comprueba si la cadena q pasamos "s" es un numero real o no 
//(con y sin signo)
function esnumerico(s)
{
	var i=0;
	var c;
	var haypunto=0;
	//recorremos la cadena inversamente hasta el 2º caracter  de la
	//cadena con el fin de comprobar despues el primer digito en busca 
	//de signo
	for (i=s.length-1; i>0 ;i-- )
	{
		c= s.charAt(i);
		//solo valen numeros o puntos
		if (!(c == "." || (esnumero(c) ))) 
			{
			return false;}
		if (c==".") 
		{haypunto++;}
	}
	//comprobar q solo se introduce un punto decimal
	if (haypunto>1)
	{return false;}
	
	//comprobar el signo del primer caracter de la cadena
	c=s.charAt(0);
	

	if (!(c=="+" || c=="-" || esnumero(c) ) )

	{return false;}
	else
	{	//asegurar q con el signo tiene q seguirle un numero
		if (!esnumero(c) && !esnumero(s.charAt(1)))
			{return false;}
	else
		{return true;}
	}
}

//funcion q comprueba si un numero es real (sin decimales) con y sin signo
function esentero(s)
{
	var i=0;
	var c;
	for (i=s.length-1; i>0 ;i-- )
	{
		c= s.charAt(i);
		//solo valen numeros
		if (!(esnumero(c))) 
			{return false;}
	}
	c=s.charAt(0);
	if (!(c=="+" || c=="-" || esnumero(c) ) )
		{return false;}
	else
	{	//asegurar q despues del signo tiene q seguirle un numero
		if (!esnumero(c) && !esnumero(s.charAt(1)))
			{return false;}
		else
			{return true;}
	}
}

//funcion q valida cadenas con letras y espacios.
//valida para campos de tipo nombre u otros
function esnombre(s)
{
var i = 0;
for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (!(esletra(c) || esespacio(c)))
        return false;
    }
    return true;
	
}


//funcion q valida numeros de telefonos validos

function estelefono(s)
{
	var i=0;
	var c;
	
	//comprueba q sean 9 digitos como minimo
	if (s.length<9)
		{return false;}
	
	for (i=s.length-1; i>0 ;i-- )
	{
		c= s.charAt(i);
		//solo valen numeros y espacios
		if (!(esnumero(c) || esespacio(c)) )
			{return false;}
	}
	c=s.charAt(0);
	if (!(c=="+" || esnumero(c) ) )
		{return false;}
	else
	{	//asegurar q despues del signo tiene q seguirle un numero
		
		if (!esnumero(c) && !esnumero(s.charAt(1)) )
			{return false;}
		else
			{return true;}
	}
}

//funcion q valida una direccion de email valida

function esemail(s)
{
	var i=0;
	var c;
	var arrob=0;
  for (i=0;i<s.length-1 ;i++ )
  {	c=s.charAt(i);
	//comprueba si hay caracteres no validos
	if (letrasnoemail.indexOf(c) != -1) return false;
	//contar el numero de arrobas
	if (c=="@") arrob++;
  }
  //si hay mas de una arroba salir de la funcion
  if (arrob>1) return false;

  //comprobar si hay @
  i=0;
  while (i<s.length && s.charAt(i) != "@") 
	{i++;}
	//si no hay @ sale de la funcion
	if (s.charAt(i)!="@") 
		{return false;}
	else
	{	//comprobar q no hay puntos juntos o junto a la @
		var j=0;		
		var prim;
		var seg;
		for (j=0;j<s.length ;j++ )
		{	prim= s.charAt(j);
			seg=s.charAt(j+1);
			if ((prim=="." || prim=="@") && (seg=="." || seg=="@"))
				{return false;}
		}
		var arr=i+1; //posicion de la @
		//se busca un punto
		while (i<s.length && s.charAt(i)!=".")
		{i++;}
		if (s.charAt(i) == ".")
		{
			var pto=i; //posicion del punto
			//comprobar q despues de la @ hay 2 letras
			if (eval(parseInt(pto)-parseInt(arr)) <2)
				{return false;}
			//si hay punto comprobamos q se ha escrito un 
			//dominio de 2 letras minimo
			if (!(esletra(s.charAt(s.length-1))) || !(esletra(s.charAt(s.length-2) ) ) )
				{return false;}
			else
				{return true;}
		}
		else
		{return false;}

	}

}

// Usada para que funcione el valevacio solamente
function esalgo(c) {
return true;
}

//funcion que comprueba que un campo del formulario cumpla con la 
//condicion que marca el parametro "funcion", "valevacio" es un 
//booleano q indica si el campo es requerido, descrip es el nombre
//del campo para indicar en el mensaje de error.
 
function validatodo(campo, funcion, valevacio, descrip)
{
 var msgerror= "Error nel apartáu " + descrip + ", " ;

// si el campo no es requerido y esta vacio, sale de la funcion.
if ((valevacio == true) && (esvacio(campo.value))) return true; 


// si el campo es requerido y esta vacio, muestra mensaje de error
 if ((valevacio == false) && (esvacio(campo.value))) 
	{avisavacio(campo,descrip);
	 return false;
	}

//prepara  el posible mensaje de error dependiendo del tipo de
//validacion q sea segun la funcion.

if (funcion == esalfabetico) msgerror += msgalfabetico;
if (funcion == esemail) msgerror += msgemail;
if (funcion == esnombre) msgerror += msgnombre;
if (funcion == esalfanumerico) msgerror += msgalfanumerico;
if (funcion == esalfanumericob) msgerror += msgalfanumericob;
if (funcion == esnumerico) msgerror += msgnumerico;
if (funcion == esentero) msgerror += msgentero;
if (funcion == estelefono) msgerror += msgtelefono;
if (funcion == esfecha) msgerror += msgfecha;


//llama a las funciones para validar

if (funcion(campo.value) == true) 
  {return true;}
else
  {return avisofallo(campo,msgerror);}

}

//Muestra un mensaje de error si el campo no cumple la condicion de la
//funcion indicando el error q le pasamos por el parametro "msgerror"

function avisofallo(cmp,s)
{
 cmp.focus();
 cmp.select();
 alert(s);
 return false;
}

//Muestra un mensaje de error si un campo esta vacio indicando 
//en el parametro "s" el nombre del campo

function avisavacio(campo,s)
{
campo.focus();
var cad;
cad = "L'apartáu " + s + " ta vacíu" ;
alert(cad);
return false;
}
