function validarDNI(valor) { var dni = /^([0-9]{8,8}[a-zA-Z])$/; if (! dni.test(valor)) return false; 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,T'.split(','); var pos = valor.substr(0,valor.length-1) % 23 var letra = valor.substr(valor.length-1,valor.length); if (letra.toUpperCase() == letras[pos]) return true; return false; } function validarNIE(valor) { var nie = /^([xyzXYZ][0-9]{7,7}[a-zA-Z])$/; if (! nie.test(valor)) return false; 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,T'.split(','); var inicial = valor.substr(0, 1).toUpperCase(); if (inicial == 'X') valor = '0' + valor.substr(1); if (inicial == 'Y') valor = '1' + valor.substr(1); if (inicial == 'Z') valor = '2' + valor.substr(1); var pos = valor.substr(0, valor.length-1) % 23; var letra = valor.substr(valor.length-1, 1); if (letra.toUpperCase() == letras[pos]) { return true; } return false; } function validarCIF(texto){ var pares = 0; var impares = 0; var suma; var ultima; var unumero; var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I"); var xxx; texto = texto.toUpperCase(); var regular = new RegExp(/^[ABCDEFGHJKLMNPRQSUVWabcdefghjklmnprqsuvw]\d\d\d\d\d\d\d[0-9,A-J]$/g); if (!regular.exec(texto)) return false; ultima = texto.substr(8,1); for (var cont = 1 ; cont < 7 ; cont ++){ xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0"; impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); pares += parseInt(texto.substr(cont,1)); } xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0"; impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1)); suma = (pares + impares).toString(); unumero = parseInt(suma.substr(suma.length - 1, 1)); unumero = (10 - unumero).toString(); if(unumero == 10) unumero = 0; if ((ultima == unumero) || (ultima == uletra[unumero])) return true; else return false; } function validarDOC(valor) { var dni = /^([0-9]{8,8}[a-zA-Z])$/; var cif = /^([ABCDEFGHJKLMNPQSabcdefghjklmnpqs][0-9]{7,7}[0-9A-J])$/; var nie = /^([xyzXYZ][0-9]{7,7}[a-zA-Z])$/; if(cif.test(valor)) return validarCIF(valor); else if(nie.test(valor)) return validarNIE(valor); else if(dni.test(valor)) return validarDNI(valor); return false; } function validarFecha(ano, mes, dia){ var d = new Date() d.setFullYear(ano,mes-1,dia); if((d.getMonth() != mes-1) || (d.getDate() != dia) || (d.getFullYear()<1900)) return false return true; } function validarTipoFichero (valor, formatos) { var formatoValido = false; if ((formatos == null) || (formatos == "")) formatos = "DOC|DOCX|PDF|RTF|TXT"; aFormatos = formatos.split("|"); var extension = valor.substr(valor.lastIndexOf(".")+1); extension = extension.toUpperCase(); var q = 0; while ((formatoValido == false) && (q < aFormatos.length)) { if (aFormatos[q] == extension) formatoValido = true; q++; } return formatoValido; } jQuery.validator.addMethod("TFN", function(phone_number, element) { phone_number = phone_number.replace(/\s+/g, ""); return this.optional(element) || phone_number.length > 8 && phone_number.match(/^[6789]{1}[0-9]{8}$/); }); jQuery.validator.addMethod("CP", function(value, element) { return this.optional(element) || /^[0-9]{5}$/.test(value) && (value > 1000 && value < 53000) ; }); jQuery.validator.addMethod("FECHA", function(value, element) { if ( (value != '') && (!/^\d{2}\/\d{2}\/\d{4}$/.test(value)) ) return false; var dia = parseInt(value.substring(0,2),10); var mes = parseInt(value.substring(3,5),10); var anio = parseInt(value.substring(6),10); return this.optional(element) || validarFecha(anio, mes, dia); }); jQuery.validator.addMethod("HORA", function(value, element) { if ( (value != '') && (!/^\d{2}\:\d{2}$/.test(value)) ) return false; var h = parseInt(value.substring(0,2),10); var m = parseInt(value.substring(3,5),10); if ( (h < 0) || (h > 23) ) return false; if ( (m < 0) || (m > 59) ) return false; return true; }); jQuery.validator.addMethod("DOC", function(value, element) { return this.optional(element) || validarDOC(value); }); jQuery.validator.addMethod("LOGIN", function(value, element) { return this.optional(element) || value.length >= 1 && value.match(/^[\S]+$/); }); jQuery.validator.addMethod("LOGINCA", function(login, element) { var esUnico = false; var IdCtrlAcceso = $(element).attr('LOGINCA'); if (IdCtrlAcceso == undefined) IdCtrlAcceso = ""; $.ajax({ async: false, url: 'xUniqueLoginCA.php', data:'Login='+login+"&IdCA="+IdCtrlAcceso, dataType: "json", success: function(data) { if (data == true) esUnico = true; } }); return esUnico; }); jQuery.validator.addMethod("LOGINZV", function(login, element) { var esUnico = false; var IdCtrlAcceso = $(element).attr('LOGINZV'); if (IdCtrlAcceso == undefined) IdCtrlAcceso = ""; $.ajax({ async: false, url: 'xUniqueLoginZV.php', data:'Login='+login+"&IdZV="+IdCtrlAcceso, dataType: "json", success: function(data) { if (data == true) esUnico = true; } }); return esUnico; }); jQuery.validator.addMethod("URL", function(value, element) { var IdOrganizador = $(element).attr('idorganizador'); var IdEvento = $(element).attr('idevento'); var formatoURL = /^([0-9a-zA-Z\-_])+$/; // la url puede estar compuesta por digitos, letras, y los caracteres "_" y "-" var esUnico = false; if (formatoURL.test(value)) { var qs = 'URL='+$("#URL").val(); if (IdEvento != undefined) qs += '&IdEvento='+IdEvento; if (IdOrganizador != undefined) qs += '&IdOrganizador='+IdOrganizador; $.ajax({ async: false, url: 'xUniqueURL.php', data: qs, dataType: "json", success: function(data) { if (data==true) esUnico=true; } }); } return esUnico; }); jQuery.validator.addMethod("CLAVE", function(clave, element) { return this.optional(element) || clave.length >= 6 && clave.match(/^[\S]+$/); }); jQuery.validator.addMethod("rselect", function(value, element) { var condition = $(element).attr('rselect'); if ($(condition).val() == '') return (value != ''); else return true; }); jQuery.validator.addMethod("rcheck", function(value, element) { var condition = $(element).attr('rcheck'); if ($(condition).is(':checked')) return (value != ''); else return true; }); jQuery.validator.addMethod("check", function(value, element) { if ( ($(element).attr('type') == 'checkbox') || ($(element).attr('type') == 'radio') ) { if ($(element).is(':checked')) return true; } return false; }); jQuery.validator.addMethod("FILE", function(value, element) { var formatos = null; if ($(element).attr('formatos') != "") var formatos = $(element).attr('formatos'); return this.optional(element) || validarTipoFichero(value,formatos); }); jQuery.validator.messages.required = "Este campo es obligatorio"; jQuery.validator.messages.rselect = "Este campo es obligatorio"; jQuery.validator.messages.rcheck = "Este campo es obligatorio"; jQuery.validator.messages.check = "Este campo es obligatorio"; jQuery.validator.messages.email = "Introduzca una dirección de correo válida"; jQuery.validator.messages.number = "Introduzca un número"; jQuery.validator.messages.digits = "Introduce números solamente"; jQuery.validator.messages.equalTo = "Los campos no coinciden"; jQuery.validator.messages.min = "La cantidad debe ser mayor o igual a {0}"; jQuery.validator.messages.max = "La cantidad debe ser menor o igual a {0}"; jQuery.validator.messages.minlength = "La longitud mínima es de {0}"; jQuery.validator.messages.maxlength = "La longitud máxima es de {0}"; jQuery.validator.messages.TFN = "Introduzca un teléfono válido"; jQuery.validator.messages.CP = "El código postal no es válido"; jQuery.validator.messages.DOC = "El documento de identidad no es válido"; jQuery.validator.messages.LOGIN = "Login no válido (no se permiten espacios)"; jQuery.validator.messages.LOGINCA = "Login ya existente. Escoja otro"; jQuery.validator.messages.LOGINZV = "Login ya existente. Escoja otro"; jQuery.validator.messages.CLAVE = "Al menos 6 caracteres imprimibles (dígitos, letras, signos...)"; jQuery.validator.messages.FECHA = "Introduce una fecha válida"; jQuery.validator.messages.HORA = "Introduce una hora válida"; jQuery.validator.messages.URL = "Dirección incorrecta o ya está en uso, por favor indique otra"; jQuery.validator.messages.FILE = "Tipo de fichero no válido"; jQuery.validator.defaults.errorClass = "error"; jQuery.validator.messages.errorAlert='Por favor, revise los campos resaltados'; jQuery.validator.messages.noLoginAlert='';