// funcion que encapsula cómo se muestra un error al usuario
function muestraError(texto) {
	//document.location.href = "MsgError.asp?ErrNextPage=" + escape("back") + "&ErrDesc=" + escape(texto);
	alert(texto);
} 
 
// funcion que comprueba si el campo es entero positivo
function esNumero(campo) {
    var inLen = campo.length;
        
    for (var i=0; i < inLen; i++) {
        var ch = campo.substring(i, i + 1);
        if ((ch < "0") || ("9" < ch)) {
            return false;
        }
    }
    return true;
}

//funcion que comprueba que el campo es una fecha valida
// El formato que entiende es el de El Corte Inglés (DDMMYYYY).
function esFecha(campo){
	if (campo.length == 0)
		return true;

	if (campo.length != 8)
		return false;

    var valido = true;

    var dia = campo.substring(0, 2);
    var mes = campo.substring (2, 4);
    var annio = campo.substring (4, 8);
    
    if (!esNumero(dia) || !esNumero(mes) || !esNumero(annio)) {
        return false;
    } else if ((annio < 0) || (mes < 1) || (mes > 12) || (dia < 1)) {
        return false;
    } else if (((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12)) && (dia > 31)) {
        return false;
    } else if (((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) && (dia > 30)) {
        return false;
    } else if ((mes == 2) && (esBisiesto(annio)) && (dia > 29)) {
        return false;
    } else if ((mes == 2) && (!esBisiesto(annio)) && (dia > 28)) {
        return false;
    } else {
    	return true;
    }
}

//funcion que comprueba que el campo es una fecha valida (sólo mes y año)
// El formato que entiende es el de El Corte Inglés (MMYYYY).
function esFechaCorta(campo){
	if (campo.length == 0)
		return true;

	if (campo.length != 6)
		return false;

    var valido = true;

    var mes = campo.substring(0, 2);
    var annio = campo.substring (2, 6);
    
    if (!esNumero(mes) || !esNumero(annio)) {
        return false;
    } else if ((annio < 0) || (mes < 1) || (mes > 12)) {
        return false;
    } else {
    	return true;
    }
}

//	funcion que calcula si un año es bisiesto
function esBisiesto (annio) {
    var bisiesto = false;
    if ((annio % 400) == 0) {
        bisiesto = true;
    } else if ((annio % 100) == 0) {
        bisiesto = false;
    } else if ((annio % 4) == 0) {
        bisiesto = true;
    } else {
        bisiesto =false;
    }
    return bisiesto;
}

// Función que valida la letra del NIF
// El formato que entiende es 99999999A
// Se debe indicar en el parseInt que trabajamos en base 10,
// porque si no cuando el NIF empieza por 0 lo toma como octal
function esNIF(nif) {
  var numero = nif.substring(0, nif.length - 1);
  var letra = nif.charAt(nif.length - 1);
  letra = letra.toUpperCase();
  var tabla = "TRWAGMYFPDXBNJZSQVHLCKEF";
  if ((nif.lenght < 2) || !esNumero(numero)) return false
  if (letra == tabla.charAt(parseInt(numero, 10)%23)) return true;
  return false;
}

// Función que dada una fecha de nacimiento y una edad límite,
// comprueba si en el día de hoy se supera esa edad.
function esMenorEdad(fecha, edad) {
  var fechaHoy = new Date();
  var dia = fecha.substring(0, 2);
  var mes = fecha.substring(2, 4);
  var ano = fecha.substring(4, 8);
  if ((fechaHoy.getFullYear() - ano) > edad) return true;
  if ((fechaHoy.getFullYear() - ano) < edad) return false;
  if ((fechaHoy.getMonth() + 1) > mes) return true;
  if ((fechaHoy.getMonth() + 1) < mes) return false;
  if (fechaHoy.getDate() >= dia) return true;
  return false;
}

// Función que dada una fecha de nacimiento y una edad límite,
// comprueba si en el día de hoy se supera esa edad.
function esEdadSuperada(fecha, edad) {
  var fechaHoy = new Date();
  var dia = fecha.substring(0, 2);
  var mes = fecha.substring(2, 4);
  var ano = fecha.substring(4, 8);
  if ((fechaHoy.getFullYear() - ano) < edad) return true;
  if ((fechaHoy.getFullYear() - ano) > edad) return false;
  if ((fechaHoy.getMonth() + 1) < mes) return true;
  if ((fechaHoy.getMonth() + 1) > mes) return false;
  if (fechaHoy.getDate() <= dia) return true;
  return false;
}

// Función que devuelve un String sin espacios a los lados
function trim(valor) {
  var ret = valor;
  while (ret.charAt(0) == ' ') ret = ret.substring(1);
  while (ret.charAt(ret.length - 1) == ' ') ret = ret.substring(0, ret.length - 1);
  return ret;
}

// Función que comprueba que el campo email contiene una @,
// que hay algo antes de ella y un punto después en la dirección
function esEmail(email) {
  var indiceArroba = email.lastIndexOf("@");
  var indicePunto = email.lastIndexOf(".");
  if ((indiceArroba > 0) && (indicePunto > indiceArroba)) {
    return true;
  } else {
    return false;
  }
}

// Devuelve el número de checkboxes con name=nombreCheckbox en el formulario frm.
function numSeleccionados(frm, nombreCheckbox) {
    var campos = frm.elements;
    var numSeleccionados = 0;
    for (var i = 0; i < campos.length; i++) {
        if (campos[i].name == nombreCheckbox && campos[i].checked) {
            numSeleccionados++;
        }
    }
    
    return numSeleccionados;
}

//función que valida el campo Email//Se utiliza en :// - Ampliación de autorizados// - Cambio de Domicilio// - Cambio de Banco// - Modificación de las condiciones de Crédito
function validar_mail(cadena){	cadenaV = cadena.value;	if(cadenaV.length==0)		return true;	var indice;	indice = cadenaV.search("@");	if ( indice == (-1)){				alert("O endereço de e-mail não é válido.");		cadena.focus();		return false;	}		var longitud = cadenaV.length;	delnumber = cadenaV.indexOf('@',0);	if ( delnumber == -1){		alert("O endereço de e-mail não é válido.");		cadena.focus();		return false;	}	domain = cadenaV.substring(delnumber +1);	if( domain.charAt(0) == '.' || domain.charAt(0) == '@'){		alert("O endereço de e-mail não é válido.");		cadena.focus();		return false;	}	lastdom = cadenaV.lastIndexOf('.');	if ( lastdom == -1 || lastdom == longitud -1 ){		alert("O endereço de e-mail não é válido.");		cadena.focus();		return false;	}	return true;}
//función que valida el campo Teléfono//Se utiliza en :// - Cambio de Domicilio
function chequea_tlf(campo){		  		  switch (isNaN(campo.value)){   case true:			  alert ("Por favor introduza um valor numérico no campo Telefone.");	  campo.focus();	  return false;	  }  var cadtmp;  cadtmp = campo.value + "";  switch (cadtmp.length < 9){		   case true:
		alert ("Por favor introduza um número de 9 dígitos no campo Telefone.");		campo.focus();		return false;			  }	  var cadtmp2;  cadtmp2 = cadtmp.substring(0,1);  switch (cadtmp2){   case '9':  case '2':	  break;   default:
	 alert ("O primeiro dígito do campo Telefone deve ser  9 ou 2.");	 campo.focus();	 return false;			 }	/*	    
  var cadtmp3;  cadtmp3 = cadtmp.substring(0,2);  switch (cadtmp3){   case '90':  	  alert ("Os primeiros dígitos do campo Telefone no deven ser 90.");	  campo.focus();	  return false;			  }
	*/      return true;		}
