/*Funcion que valida la direccion de email*/
function emailCorrecto(ind,emailStr) {
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½^ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  errorS=errorStrings[ind];
  return false
}
var user=matchArray[1]
var domain=matchArray[2]
if (user.match(userPat)==null) {
    errorS=errorStrings[ind+1];
    return false
}
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
   for (var i=1;i<=4;i++) {
     if (IPArray[i]>255) {
         errorS=errorStrings[ind+2];
         return false
     }
    }
    return true
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
        errorS=errorStrings[ind+3];
    return false
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>4) { 
   errorS=errorStrings[ind+4];
   return false;
}
if (len<2) {
   errorS=errorStrings[ind+5];
   return false
}
return true;
}

//funcion que valida si un password es correcto
function passwordCorrecto(pass){
	allowed =  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890._-';
	return isValid(pass,allowed);
}

//funcion que valida si un nombre es correcto
function nomCorrecto(ape){
	allowed =  'abcdefghijklmnï¿½opqrstuvwxyzï¿½ï¿½ï¿½ï¿½ï¿½ ABCDEFGHIJKLMNï¿½OPQRSTUVWXYZï¿½ï¿½ï¿½ï¿½ï¿½,-.';
	return isValid(ape,allowed);
}

//funcion que valida si una direccion es correcta
function dirCorrecto(ape){
	allowed =  'abcdefghijklmnï¿½opqrstuvwxyzï¿½ï¿½ï¿½ï¿½ï¿½ ABCDEFGHIJKLMNï¿½OPQRSTUVWXYZ\\:.,/ï¿½ï¿½0123456789-ï¿½ï¿½ï¿½ï¿½ï¿½-';
	return isValid(ape,allowed);
}

//funcion que valida un codigo postal, con su mascara
function validarCodigoP(form,codigo){
  var sProv=form.provincias[form.provincias.selectedIndex].value;
  var patronCod=codigosPostales[sProv];
  var patronJ="";
  for (pc=0;pc<patronCod.length;pc++){
    if (patronCod.charAt(pc)=='?') patronJ+="\\d{1}";
    else patronJ+=patronCod.charAt(pc);
  }
    var patronMask=new RegExp("^" + patronJ + "$")
    var maskArray=codigo.match(patronMask)
        if (maskArray==null) return false;
        else return true;
 }
//funcion que indica si un aï¿½o es bisiestos
function esBisiesto(anio){
   return (((anio % 4 == 0) && (anio % 100 != 0)) || (anio % 400 == 0));
}
//funcion que indica si el mes tiene 30 dias

function esEsosMeses(mes){
    return ((mes==11)||(mes==4)||(mes==6)||(mes==9));
}

//funcion que indica si una fecha es correcta
function fechaCorrecta(ano,mes,dia){
    if (dia>31) return false;
	else if (mes>12) return false;
    else if (dia>30&&esEsosMeses(mes)) return false;
    else if ((dia>29&&(mes==2))||(dia>28&&!esBisiesto(ano)&&(mes==2))) return false;
    return true;

}
//funcion que verifica si una fecha es correcta y si ademas es menor que el dia de hoy y mayor que hace 150 aï¿½os
function fechaNacCorrecta(fecha){
     var patronfecha=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/
     var fechaArray=fecha.match(patronfecha)
     if (fechaArray==null) return false;
     else {
        var ano=fechaArray[3];
        var mes=fechaArray[2];
        var dia=fechaArray[1];
        hoy=new Date();
		anoSistema=hoy.getYear();
		if (anoSistema<1900) anoSistema=1900+anoSistema;
        if (!fechaCorrecta(ano,mes,dia)) return false;
        if ((ano>anoSistema)||((anoSistema==ano)&&(mes>(hoy.getMonth()+1)))||((anoSistema==ano)&&(mes==(hoy.getMonth()+1))&&(dia>hoy.getDate()))) return false;
        if (ano<(anoSistema-150)) return false;
        }
     return true;
}

//funcion que verifica si una fecha es correcta y si ademas es menor que el dia de hoy y mayor que hace 150 aï¿½os
function fechaEntCorrecta(fecha){
     var patronfecha=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/
     var fechaArray=fecha.match(patronfecha)
     if (fechaArray==null) return false;
     else {
        var ano=fechaArray[3];
        var mes=fechaArray[2];
        var dia=fechaArray[1];
        hoy=new Date();
		anoSistema=hoy.getYear();
		if (anoSistema<1900) anoSistema=1900+anoSistema;
        if (!fechaCorrecta(ano,mes,dia)) return false;
      }
     return true;
}

//funcion que valida si una razon social es correcta
function razonSocialCorrecto(nom,tempresa){
	if (nom==tempresa) return false;
	else{
		allowed =  'abcdefghijklmnï¿½opqrstuvwxyzï¿½ï¿½ï¿½ï¿½ï¿½ ABCDEFGHIJKLMNï¿½OPQRSTUVWXYZ\\:.,/ï¿½ï¿½0123456789-ï¿½ï¿½ï¿½ï¿½ï¿½-';
		return isValid(nom,allowed);
    }
}

function calcularNIF(dni) {
dni=dni.toUpperCase();
if (dni.length!=9) return false;
if (!/^(\d{8})(\w)$/.test(dni)) {
    //puede ser que sea un cif
	if (!/^(\w)(\d{7})((\d{1})|(\w{1}))$/.test(dni)) return false;
	else { //estamos ante un cif
		var ncif=dni.substring(1,8);
		var lcif=dni.substring(0,1);
		var fcif=dni.substring(8,9);
		if (lcif=='N') {return true;}//si empieza por N son americanos, se aceptan todos
		if (lcif=='X' || lcif=='Y' || lcif=='Z') {
			var ldni=dni.substring(8,9);
			if (/^(\d)$/.test(ldni)) return true;
			else {
				var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
				var numeroLargoDni=dni.substring(1,8);
				if (lcif=='Y') numeroLargoDni=eval(numeroLargoDni)+10000000;
				if (lcif=='Z') numeroLargoDni=eval(numeroLargoDni)+20000000;
				var numero = (numeroLargoDni)%23;
				return (letras.substring(numero,numero+1))==ldni;
			}
		}
		var suma=parseInt(ncif.substring(1,2))+parseInt(ncif.substring(3,4))+parseInt(ncif.substring(5,6));
		var sumainter=0;
		for (j=0;j<=6;j+=2){
		var inte=parseInt(ncif.substring(j,j+1))
		inte=2*inte;
		suma=suma+(inte%10)+(parseInt(inte/10));
		}
		var control = 10 - (suma % 10);
		var correcto = false;
		if (lcif=='P' || lcif=='S' || lcif=='Q' || lcif=='G') {
			correcto = fcif.charCodeAt(0) == 64 + control;
		}
	   	if (!correcto){
			  //Resto de tipos de CIF, Control tipo número
		     if (control == 10)  control = 0; 
		     correcto = parseInt(fcif) == control;
		     }
		   return correcto;
		}
    }
else { //estamos ante un dni
var ldni=dni.substring(8,9);
var ndni=dni.substring(0,8);
var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
var numero = ndni%23;
 if((letras.substring(numero,numero+1)!=ldni))  return false;
 else return true;
}
return true;
}

function esDNI(dni) {
dni=dni.toUpperCase();
if (!/^(\d{8})(\w)$/.test(dni)) {
    var lcif=dni.substring(0,1);
    if (lcif=='X' || lcif=='Y') {return true;}
    else {return false;}
}
else {return true;}
}

function telefonoCorrecto(tfno){
	if(tfno.length!=9) return false;
	if (!/^(9|6|8)\d{8}/.test(tfno)) return false;
	else return true;
}

//funcion que valida el formulario de los datos de facturacion
function validarEnvioBoletin(ind,form){
        if (form.nombrer.value=="") errorS=errorStrings[ind+0];
        else if (!nomCorrecto(form.nombrer.value)) errorS=errorStrings[ind+1];
        else if (form.emailr.value=="") errorS=errorStrings[ind+2];
        else if (!emailCorrecto(4,form.emailr.value)) errorS=errorStrings[ind+3];
        else if (form.emaild.value=="") errorS=errorStrings[ind+2];
        else if (!emailCorrecto(4,form.emaild.value)) errorS=errorStrings[ind+3];
        if (errorS=="") {
		form.submit();
	}
	else {alert(errorS);errorS="";}
}
function validarInfoBoletin(ind,form){
        if (form.nombre.value=="") errorS=errorStrings[ind+0];
        else if (!nomCorrecto(form.nombre.value)) errorS=errorStrings[ind+1];
        if (errorS=="") {
		form.submit();
	}
	else {alert(errorS);errorS="";}
}