
var ilangValidaciones = 0;	

function MM_swapImgRestore() {
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function MM_preloadImages() {
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function MM_findObj(n, d) { 
var p,i,x;
if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}


function MM_swapImage() { 
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function MM_setTextOfLayer(objName,x,newText) { 
if ((obj=MM_findObj(objName))!=null) with (obj)
if (navigator.appName=='Netscape') {document.write(unescape(newText)); document.close();}
else innerHTML = unescape(newText);
}


function MM_reloadPage(init) {
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}


function MM_showHideLayers() {
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}



function hojaestilos()
{
if(document.all)
document.write('<LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="../../bbvaex.css"><LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="../../explo.css">');
else
document.write('<LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="../../bbvanets.css"><LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="../../nets.css">');
}

function warnInvalid (theField, msg) {
alert(msg);
theField.focus();
theField.select();
return false;
}

function warnInvalid2 (theField, msg) {
alert(msg);
theField.focus();
return false;
}

function isWhitespace(s)
{
var whitespace = " \\t\\n\\r";
if (isEmpty(s)) return true;
for (var i=0; i < s.length; i++)
if (whitespace.indexOf(s.charAt(i)) == -1) return false;
return true;
}


function isEmpty(s) {
return ((s == null) || (s.length == 0));
}


function isDigit (c)
{
return ((c >= "0") && (c <= "9"));
}



function isInteger (s)
{
if (isEmpty(s.value)) return false;
for (var i = 0; i < s.value.length; i++)
if (!isDigit(s.value.charAt(i))) return false;
return true;
}




function isIntegerInRange (s, a, b)
{
if (isEmpty(s.value)) return false;
if (!isInteger(s)) return false;
var num = parseInt (s.value,10);
if((num >= a) && (num <= b)) return true;
return false;
}




function isFloat(s)
{
if (isEmpty(s.value))return false;
if (isNaN(parseFloat(s.value))) return false;
return true;
}

function isFloatMayorque(s,a)
{
if (isEmpty(s.value)) return false;
if (isNaN(parseFloat(s.value))) return false;
if(parseFloat(s.value)>a) return true;
return false;
}

function isFloatInRange(s,a,b)
{
if (isEmpty(s.value)) return false;
if (isNaN(parseFloat(s.value))) return false;
var num=parseFloat(s.value);
if((num >= a) && (num <= b)) return true;
return false;
}




function isYear (s)
{
if (isEmpty(s.value)) return false;
if (!isInteger(s)) return false;
return ((s.value.length == 4));
}



function isMonth (s)
{
if (isEmpty(s.value)) return false;
if (isIntegerInRange (s, 1, 12)) return true;
return false;
}


function longitudPasswod(s)
{
return (s.length>=4)
}


function isCodPostalOK(codProv, codPostal, ilang){
if (ilang) ilangValidaciones = ilang;
if (!isInteger(codPostal))
{
if (ilangValidaciones == 1) {
alert("ZIP code must be a number.");
} else {
alert("El CODIGO POSTAL debe ser un campo numérico.");
}
return false;
}

if ((codPostal.value.length >5 ) || (codPostal.value.length < 4)){
if (ilangValidaciones == 1) {
alert("ZIP code must have 4 or 5 digits");
} else {
alert("El CODIGO POSTAL debe tener 4 o 5 dígitos.");
}
return false;
}
var c0 ="", c1 ="", cp="";
var c0 = codPostal.value.charAt(0), c1 = codPostal.value.charAt(1);
if (codPostal.value.length==5)
{
if(codProv<10 && c0=="0") c0="";
}
else
c1="";
cp = c0 + c1;
if(codProv!=cp){
if (ilangValidaciones == 1) {
alert("ZIP code doesn't correspond with selected province");
} else {
alert("El CODIGO POSTAL no se corresponde con la provincia seleccionada.");
}
return false;
}
return true;
}


function isNif(nif){
if ((nif.charAt(0) == "X") || (nif.charAt(0) == "x")) nif = nif.substring(1);
var long_nif = nif.length;
var letra_nif = nif.substring(long_nif-1,long_nif);
var dni = nif.substring(0,long_nif-1);
if (dni.length > 8) return false;
for (var i = 0; i < dni.length; i++)
if (!isDigit(dni.charAt(i))) return false;
var cadena="TRWAGMYFPDXBNJZSQVHLCKE";
var letra=cadena.substring(dni%23,dni%23+1);
if(letra_nif.toUpperCase() != letra) return false;
return true;
}

function isEmails (emailStr) {
emailStr = quitaEspacios(emailStr);
var separador = ";";
if (emailStr.indexOf(",")>0) 	separador = ",";
i = emailStr.indexOf(separador);
while ( i > -1) {
emailTmp = emailStr.substring(0,i);
emailStr = emailStr.substring(i+1);
if (!isEmail(emailTmp)) return false;
i = emailStr.indexOf(separador);
}
return isEmail(emailStr);
}


function isEmail (emailStr, ilang) {
if (ilang) ilangValidaciones = ilang;
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) return false
var user=matchArray[1]
var domain=matchArray[2]
if (user.match(userPat)==null) {
if (ilangValidaciones == 1) {
	alert("The user name doesn't seem to be valid.");
}else {
	alert("El nombre de usuario no parece ser valido.")
}
return false
}
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
if (ilangValidaciones == 1) {
	alert("IP address not valid");
} else {
	alert("La direccion IP no es valida!")
}
return false
}
}
return true
}
var domainArray=domain.match(domainPat)
if (domainArray==null) {
if (ilangValidaciones == 1) {
	alert("Domain's name doesn't seem to be valid");
} else {
	alert("El nombre del dominio no parece ser valido.")
}
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) {
if (ilangValidaciones == 1) {
	alert("Email address have to finish in a three letters domain, or in a two letters country code");	
} else {
	alert("El email debe terminar en un dominio de tres letras, o en las dos letras distintivo del pais.")
}
return false
}
if (len<2) {
var errStr="Esta direccion no contiene un nombre de host valido!"
if (ilangValidaciones == 1) errStr = "This address doesn't contain a valid host name!";
alert(errStr)
return false
}
return true;
}


function ValidarNumero(numero)
{
return (isInteger(numero) && (numero.value.length == 9))
}


function isFicheroImagen (st)
{
if (st.value.length==0) return true;
for (var i = 0; i <st.value.length; i++)
{
if (st.value.charAt(i) == ".")
{
var ext = st.value.substring(i+1,st.value.length);
var ext = ext.toUpperCase();
return (ext =="GIF" || ext=="JPG" || ext=="JPEG");
}
}
return false;
}


function quitaEspacios(s){
var aux ="";
for (var i=0; i < s.length; i++)
{
var c = s.charAt(i);
if (c != " ") aux += c;
}
return aux;
}



function imprimir(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) { 
var newURL='', verStr=navigator.appVersion, app=navigator.appName, version = parseFloat(verStr);
if (app.indexOf('Netscape') != -1)
{
if (version >= NSvers)
{
if (NSpass>0) newURL=(NSpass==1)?URL:altURL;
}else
{
if (NSnoPass>0) newURL=(NSnoPass==1)?URL:altURL;
}
}else if (app.indexOf('Microsoft') != -1)
{
if (version >= IEvers || verStr.indexOf(IEvers) != -1)
{
if (IEpass>0) newURL=(IEpass==1)?URL:altURL;
}else
{
if (IEnoPass>0) newURL=(IEnoPass==1)?URL:altURL;
}
}else if (OBpass>0) newURL=(OBpass==1)?URL:altURL;

if (newURL)
alert('Tu explorador no permite la imprimir autom&aacute;ticamente, pulsa el boton imprimir de tu explorador');
else
window.print();
Window.close();
}



function isDecimalComa(s)
{
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (c==".") return false;
}
data = s.split(",");
if (data.length > 2) return false;
parteEntera = data[0];
if (isEmpty(parteEntera)) return false;
for (i = 0; i < parteEntera.length; i++)
{
var c = parteEntera.charAt(i);
if (!isDigit(c)) return false;
}
if (data.length > 1)
{
parteDecimal = data[1];
if(parteDecimal.length > 2) 
return false;
if (isEmpty(parteDecimal)) return false;
for (i = 0; i < parteDecimal.length; i++)
{
var c = parteDecimal.charAt(i);
if (!isDigit(c)) return false;
}
}
return true;
}



function isDecimalInRange(decimal,inferior,superior)
{
if (isDecimalComa(decimal))
{
var rango1 = parseFloat((inferior).replace(/\,/gi,"."));
var rango2 = parseFloat((superior).replace(/\,/gi,"."));
var valor = parseFloat((decimal).replace(/\,/gi,"."));
return (rango1<=valor && valor<=rango2)
}
else
return false;
}




var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/";


var vDateType = 3; 



var vYearType = 4; 
var vYearLength = 2; 
var err = 0; 
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
}
}
else {
isIE4 = true;
}
function DateFormat(vDateName, vDateValue, e, dateCheck, dateType, ilang) {
if (ilang) ilangValidaciones = ilang;
vDateType = dateType;

if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;


if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}

var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
}
}
if (whichCode == 8) 
return false;
else {


var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)

if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();

var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");	
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {

if (vDateValue.length >= 8  && dateCheck) {
if (vDateType == 1) 
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2) 
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3) 
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}


var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");	
} else {
alert("Formato incorrecto de fecha.");
}
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
}
}
}
else {

if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");	
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.value = "";
vDateName.focus();
return true;
}

if (vDateValue.length >= 8 && dateCheck) {


if (vDateType == 1) 
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) 
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) 
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");	
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.value = "";
vDateName.focus();
return true;
}
}

var vDateTypeTemp = vDateType;


vDateType = 1;

var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {

var mToday = new Date();

var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;


if (vDateTypeTemp == 1) 
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) 
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
if (!dateValid(vDateValueCheck)) {
if (ilangValidaciones == 1) {
alert("Date format is not correct");
} else {
alert("Formato incorrecto de fecha.");
}
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (vDateType == 1) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
}
}
if (vDateType == 2) {
if (vDateValue.length == 4) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 7) {
vDateName.value = vDateValue+strSeperator;
}
}
if (vDateType == 3) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
}
}
return true;
}
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {

if (ilangValidaciones == 1) {
alert("Date format is not correct");	
} else {
alert("Formato incorrecto de fecha.");
}
vDateName.focus();
vDateName.select();
}
}
return false;
}
else {


if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
}
}
}
}
function dateValid(objName) {
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;

var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";

strDate = objName;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
}
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
}
}

if (strYear.length == 2) {
strYear = '20' + strYear;
}
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
}
}
if (isNaN(intMonth)) {
err = 3;
return false;
}
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}

/*Función para validar una FECHA, teniendo en cuenta los años bisiestos. Devuelve un String que
indica el tipo de error en la fecha o "" si es correcta */
function validaFecha(fecha) {
if(fecha.length!=10)
return "Por favor, indique la fecha según el formato dd/mm/aaaa.";
else{
if(isDigit(fecha.substring(0,2)) && isDigit(fecha.substring(3,5)) && isDigit(fecha.substring(6,10))){
var dia = fecha.substring(0,2);
var mes = fecha.substring(3,5);
var anyo = fecha.substring(6,10);

if(dia<=0 || dia>31 || mes<=0 || mes>12) return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if(fecha.substring(2,3)!='/' || fecha.substring(5,6)!='/') return "Por favor, utilice la barra espaciadora / en la indicación de la fecha según el formato dd/mm/aaaa.";
if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia > 31 || dia < 1))
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && (dia > 30 || dia < 1))
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";

if(anyo%4==0){
if(anyo%400 == 0 && mes == 2 && dia > 29)
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if(anyo%100 != 0 && mes == 2 && dia > 28)
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
}
else if(mes == 2 && dia > 28){
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
}

}
else
return "Por favor, indique la fecha según el formato dd/mm/aaaa.";
}

return "";
}

/*Función para validar una FECHA ACTUAL, teniendo en cuenta los años bisiestos. Devuelve un String
que	indica el tipo de error en la fecha o "" si es correcta */
function validaFechaActual(fecha)
{

if(fecha.length!=10)
return "Por favor, indique la fecha según el formato dd/mm/aaaa.";
else{
if(isDigit(fecha.substring(0,2)) && isDigit(fecha.substring(3,5)) && isDigit(fecha.substring(6,10))){
var dia = fecha.substring(0,2);
var mes = fecha.substring(3,5);
var anyo = fecha.substring(6,10);
var fecha_hoy = new Date();

if(dia<=0 || dia>31 || mes<=0 || mes>12)
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if(fecha.substring(2,3)!='/' || fecha.substring(5,6)!='/')
return "Por favor, utilice la barra espaciadora / en la indicación de la fecha según el formato dd/mm/aaaa.";
if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia > 31 || dia < 1))
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && (dia > 30 || dia < 1))
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";

if (anyo<fecha_hoy.getFullYear())
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo introduciendo una fecha posterior a la actual.";
else
{
if ( ((mes-1)<fecha_hoy.getMonth()) && (anyo==fecha_hoy.getFullYear()) )
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo introduciendo una fecha posterior a la actual.";
else
{
if ( (dia<fecha_hoy.getDate()) && ((mes-1)<=fecha_hoy.getMonth()) && (anyo==fecha_hoy.getFullYear()) )
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo introduciendo una fecha posterior a la actual.";
}
}


if(anyo%4==0){
if(anyo%400 == 0 && mes == 2 && dia > 29)
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
if(anyo%100 != 0 && mes == 2 && dia > 28)
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
}
else if(mes == 2 && dia > 28){
return "La fecha introducida no es válida. Por favor, inténtelo de nuevo siguiendo el formato siguiente:dd/mm/aaaa.";
}

}
else
return "Por favor, indique la fecha según el formato dd/mm/aaaa.";
}

return "";
}
/*Función para validar que el campo FECHA1 es anterior al campo FECHA2.*/
function validaFechaAnterior(fecha1,fecha2)
{
var aux1=fecha1.value;			
var aux2=fecha2.value;			
date1 = new Date();			
date2 = new Date();			
date1.setDate(aux1.substring(0,2));			
date1.setMonth((aux1.substring(3,5))-1);			
date1.setYear(aux1.substring(6,10));			
date2.setDate(aux2.substring(0,2));			
date2.setMonth((aux2.substring(3,5))-1);			
date2.setYear(aux2.substring(6,10));
if(date1.getTime()>date2.getTime())
return false;			
else			
return true;
}

/*Función para validar un CIF. NO VALIDA DNI/NIF (para ello, hay otra función) */
/*
VALIDACIÓN DE C.I.F.
1) Letra inicial 
Puede ser:
A, B, C, D, E, F, G, H, K, L, M, P, Q, S, X
X extranjeros, que en lugar del D.N.I. tienen el N.I.E. y el último dígito es una letra.
Los de la letra P (Ayuntamientos), el último dígito también es una letra.

2) Algoritmo de validación
- Quitar el primer carácter y el ultimo del CIF (la letra inicial y el carácter de control), de forma que quede una cadena de 7 dígitos.
- Sumar los dígitos de las posiciones pares. Esto da un resultado A
- Para cada uno de los dígitos de las posiciones impares, multiplicarlos por 2, sumar los dígitos del resultado y acumular esta suma (luego pongo un ejemplo). La suma acumulada da un resultado B.
- Sumar A y B. Esto da C.
- Tomar solo el dígito de las unidades de C y restárselo a 10. Esta resta da D.
- A partir de D ya se obtiene el carácter de control. Si ha de ser numérico,el carácter es directamente D. Si ha de ser letra, al 1 le corresponde la A, al 2 la B, etc.

3) Formato
[letraInicio][codigo][caracterControl] X XXXXXXX X
letraInicio: 1 caracter alfabético
codigo: 7 caracteres numéricos
caracterControl: 1 caracter alfanumérico
*/
function validaCIF(cif)
{
var valido = true;
var sumDigiti = 0;
var digitoi = "";
var sumaParImpar = 0;
var charControl;
var digitoControl;
var isLastDigitNumber =true;

if(cif.length!=9){

sms = "El cif debe tener nueve caracteres.";
valido = false;
}
else{
var letraInicio = cif.substring(0,1).toUpperCase();
if(letraInicio!="A" && letraInicio!="B" && letraInicio!="C" && letraInicio!="D" && letraInicio!="E" && letraInicio!="F" &&
letraInicio!="G" && letraInicio!="H" && letraInicio!="K" && letraInicio!="L" && letraInicio!="M" && letraInicio!="P" &&
letraInicio!="Q" && letraInicio!="S" && letraInicio!="X"){

valido = false;
}
else{ 
var letraFin = cif.substring(8,9).toUpperCase();
if(letraFin=="A" || letraFin=="B" || letraFin=="C" || letraFin=="D" || letraFin=="E" || letraFin=="F" ||
letraFin=="G" || letraFin=="H" || letraFin=="I" || letraFin=="J" )
{

isLastDigitNumber =false;
}
var codigo = cif.substring(1,8);
if(isNaN(codigo)){

valido = false;
}
else{
var digito1 = parseInt(codigo.substring(0,1),10);
var digito2 = parseInt(codigo.substring(1,2),10);
var digito3 = parseInt(codigo.substring(2,3),10);
var digito4 = parseInt(codigo.substring(3,4),10);
var digito5 = parseInt(codigo.substring(4,5),10);
var digito6 = parseInt(codigo.substring(5,6),10);
var digito7 = parseInt(codigo.substring(6),10);


var sumDigitp = digito2 + digito4 + digito6;


digitoi= "" + (digito1*2).toString();

for(var i=0;i<digitoi.length;i++){
sumDigiti += parseInt(digitoi.substring(i,i+1));
}

digitoi= "" + (digito3*2).toString();
for(var i=0;i<digitoi.length;i++){
sumDigiti += parseInt(digitoi.substring(i,i+1));
}

digitoi= "" + (digito5*2).toString();
for(var i=0;i<digitoi.length;i++){
sumDigiti += parseInt(digitoi.substring(i,i+1));
}

digitoi= "" + (digito7*2).toString();
for(var i=0;i<digitoi.length;i++){
sumDigiti += parseInt(digitoi.substring(i,i+1));
}

sumaParImpar = sumDigitp + sumDigiti;


var longitudSuma = (sumaParImpar.toString()).length;
charControlUnidades = (sumaParImpar.toString()).substring(longitudSuma-1);

charControl = 10 - charControlUnidades;


digitoControl = cif.substring(8).toUpperCase();


if(letraInicio=="X"){
isLastDigitNumber = false;
}
if(letraInicio=="P"){
isLastDigitNumber = false;
}
if(letraInicio=="S"){
isLastDigitNumber = false;
}
/* En princpio, por la info encontrada, si charControl vale 0 ó 10, el digitoControl debe ser 0. */
if(charControl==10){
charControl=0;
}
if(isLastDigitNumber)
{
if(charControl!=digitoControl){



valido = false;
}
else{

return true;
}
}
else{
if(charControl==0){
if(digitoControl!="J"){


valido = false;
}
}

if(charControl==1){
if(digitoControl!="A"){


return false;
}
}

if(charControl==2){
if(digitoControl!="B"){


return false;
}
}

if(charControl==3){
if(digitoControl!="C"){


return false;
}
}

if(charControl==4){
if(digitoControl!="D"){


return false;
}
}

if(charControl==5){
if(digitoControl!="E"){


return false;
}
}
if(charControl==6){
if(digitoControl!="F"){


return false;
}
}
if(charControl==7){
if(digitoControl!="G"){


return false;
}
}
if(charControl==8){
if(digitoControl!="H"){


return false;
}
}
if(charControl==9){
if(digitoControl!="I"){


return false;
}
}
}

}
} 
}
return valido;
}
function contieneEspacios(s){
for (var i=0; i < s.length; i++){
var c = s.charAt(i);
if (c == " ") return true;
}
return false;
}