/**************************************************************\
          Scripts de comprobación genéricos.
          ==================================

   El objetivo de esta biblioteca es aunar las comprobaciones
de javascript para que sean mas sencillas de mantener en un
futuro. Por ejemplo la comprobacion del telefono que tenemos
puesto en la linea X de los formularios de guiademadrid.com

\**************************************************************/



/*
FUNCION es_email
================

Devuelve si el email introducido está bien formado o si no lo
está.

Actualmente soporta los nombres de dominio:
   - Dos letras (para no poner todos los posibles paises)
   - .com
   - .net
   - .org
   - .mil
   - .int
   - .edu
   - .biz
   - .info
   - .name
   - .gov

FUNCION es_email
=================



*/

function es_email(v){
   var t=/^(\w|\~)(\w|\~|\.|\-)*@(\w|\~)(\w|\~|\.|\-)*\.(([A-Za-z]{2})|([bB][iI][zZ])|([Ii][Nn][Ff][Oo])|([Cc][Oo][Mm])|([Nn][Ee][Tt])|([Oo][Rr][Gg])|([Mm][Ii][Ll])|([Ii][Nn][Tt])|([Ee][Dd][Uu])|([nN][aA][mM][eE])|[gG][oO][vV])$/
   return t.test(v);
}

/*

FUNCION es_moneda
=================

Devuelve verdad si la cadena pasada es del estilo moneda.
Está limitado a cantidades menores de 1000 millones

*/

function es_moneda(v){
   var t=/^\d{1,9}(\.(\d{1,2})?)?$/
   return t.test(v);
}

/*

FUNCION es_telefono
=================

Devuelve verdad si el telefono es aparentemente válido para España

*/

function es_telefono(v){
   var t=/^(6|9)\d{8}$/
   return t.test(v);
}


/*

FUNCION es_cp
=================

Devuelve verdad si el código postal es aparentemente válido para España

*/

function es_cp(v){
   var t=/^(([0-4]\d{4})|(5[0-2]\d{3}))$/
   return t.test(v);
}

/*

FUNCION es_letra
=================

Devuelve verdad si se ha pasado una letra diferente a la ñ

*/

function es_letra(v){
   var t=/^([A-Z]|[a-z])$/
   return t.test(v);
}

/*

FUNCION es_entero
=================

Devuelve verdad si se ha pasado un entero mayor que cero

*/

function es_entero(v){
   var t=/^[1-9]\d*$/
   return t.test(v);
}

/*

FUNCION es_dni
==============

Devuelve verdad si se ha pasado una cadena con forma de dni (nif) español

*/

function es_dni(dni){
   var forma_dni = /^\d{8}[a-zA-Z]$/
   var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';

   if(!forma_dni.test(dni)){
      return false;
   }

   var numero = dni.substring(0,8);
   var letra  = dni.substring(8);

   return (letra == letras[numero%23]);
}
