/* 
Funciones de validación

boolean isDate(fecha[,caracterSplit])		//devuelve si es fecha separada por "/" [o por otro caracter]
boolean isStrictlyNumeric(numero)			//devuelve si una cadena está compuesta estrictamente de números (ni puntos ni comas ni signos)
boolean isNumber(numero)					//devuelve si una cadena está compuesta de numéricos
boolean isChar(caracter)					//devuelve si una cadena está compuesta de alfanuméricos
boolean isString(cadena[,longitud])			//devuelve si la cadena no es vacia [y si cumple cierta longitud]
boolean isMail(mail)						//devuelve si es un email correcto
boolean isNIF(numero,letra)					//devuelve si es un NIF o TARJETA RESIDENCIA correcto
char getNIFChar(dni)						//devuelve la letra del NIF correspondiente al DNI
boolean isNick(nick)						//devuelve si una cadena puede ser NICK válido
int compareDates(d1,d2,s)					//devuelve -1 | 0 | 1 en función de si d1 es menor, igual o mayor que d2
*/

function isDate(x,s){
	s = s||"/";
	var fecha=new String(x);
	var datos=fecha.split(s);
    if(datos.length!=3)return false;
	var dia=datos[0],mes=datos[1],ano=datos[2];
	if(!isNumber(dia)||!isNumber(mes)||!isNumber(ano))return false;
	dia=parseInt(dia,10);
	mes=parseInt(mes,10);
	ano=parseInt(ano,10);
	if(ano<1900)return false;
	var dias=[31,28,31,30,31,30,31,31,30,31,30,31];
	if((mes<1)||(mes>12))return false;
	if(ano<0)return false;
	if(mes==2&&dia==29&&ano%4==0)if(ano%100!=0||(ano%100==0&&ano%400==0))return true;
	return (dia>0 && dia<=dias[mes-1]);
}
function isStrictlyNumeric(n){return (n.length>0&&!/\D/.test(n));}
function isNumber(n){return (n.search(/[^+-.,0-9]/)==-1)?true:false;}
function isChar(c){return (c.search(/[^AZaz]/)==-1)?true:false;}
function isString(s,l){return (s=="" || (l!=null && s.length>l))?false:true;}
function isMail(m){return (m.search(/[^A-Za-z0-9_.@-]/) == -1 && m.search(/[A-Za-z0-9_.-]+@{1}[A-Za-z0-9_.-]+\.{1}[A-Za-z0-9_.]/) != -1)?true:false;}
function isNIF(n,l){
	if(n.length==8&&l.length==1){
		if(n.charAt(0).toUpperCase()=="X")n="0"+n.substring(1);
		return (isNumber(n)&&l.toUpperCase()==getNIFChar(n))?true:false;
	}else return false;
}
function getNIFChar(dni){
	var letras=["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"],c=dni+"";
	while(c.substring(0,1)=="0" && c.length>1)c=c.substring(1,c.length);
	return letras[dni-(parseInt(c/23)*23)];
}
function isNick(n){return (n.search(/[^A-Za-z0-9_]/)==-1 && isString(n,12))?true:false;}
function compareDates(d1,d2,s){
	if(d1==d2)return 0;
	d1=new String(d1),d2=new String(d2);
	s = s||"/";
	var f1=d1.split(s);
	var f2=d2.split(s);
	if(f1[2]<f2[2] || (f1[2]==f2[2] && f1[1]<f2[1]) || (f1[2]==f2[2] && f1[1]==f2[1] && f1[0]<f2[0]))return -1;
	else return 1;
}
