function Mail_Validate(Value) { var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/; var check=/@[\w\-]+\./; var checkend=/\.[^@]{2,4}$/; if (Value == "") return(""); if(((Value.search(exclude) != -1)||(Value.search(check)) == -1)|| (Value.search(checkend) == -1)){ return("La structure de votre adresse électronique est erronée."); } } function Date_Validate(Value) { //fechas, formato dd/mm/aaaa var mes31 = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(19[0-9][0-9]|20[0-9][0-9])$/; var mes30 = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(19[0-9][0-9]|20[0-9][0-9])$/; var mes28 = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(19[0-9][0-9]|20[0-9][0-9])$/; var mes29 = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(1904|1908|1912|1916|1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020|2024|2028|2032|2036|2040|2044|2048|2052|2056|2060|2064|2068|2072)$/; if (!(mes29.test(Value) || mes31.test(Value) || mes28.test(Value) || mes30.test(Value))) { return (""); } else { return ""; } } function Visa_Validate(numero_tarjeta) { var cadena = numero_tarjeta.toString(); var longitud = cadena.length; var cifra = null; var cifra_cad=null; var suma=0; if (longitud!=16) return (false); for (var i=0; i < longitud; i+=2) { cifra = parseInt(cadena.charAt(i))*2; if (cifra > 9) { cifra_cad = cifra.toString(); cifra = parseInt(cifra_cad.charAt(0)) + parseInt(cifra_cad.charAt(1)); } suma+=cifra; } for (var i=1; i < longitud; i+=2) { suma += parseInt(cadena.charAt(i)); } if ((suma % 10) == 0) { return true; }else{ //Ahora comprobamos para Mastercard if( (cadena.length == 16) && (cadena.substring(0,2) == 51) || (cadena.substring(0,2) == 52) || (cadena.substring(0,2) == 53) || (cadena.substring(0,2) == 54) || (cadena.substring(0,2) == 55) ) { return (true); } return (false); } } function CP_Validate(Value) { //var cp = /^([1-4][0-9]|0[1-9]|5[0-2])[0-9][0-9][0-9]$/; //if (!cp.test(Value)) return ("Le code postal est erroné."); } function Field_Validate(Name_Form, Name, Field, ValueType, Min, Max, Required) { var CharCnt; var ErrorHeader; var Value; var fForm; var HTMLTipo fForm = eval("document." + Name_Form); if (Name!='') { ErrorHeader = "\n- " + Name + ": "; }else{ ErrorHeader = "\n- "; } HTMLTipo = eval("fForm." + Field + ".type"); if (!HTMLTipo) HTMLTipo = eval("fForm." + Field + "[0].type"); switch (HTMLTipo) { case "checkbox": return(""); case "radio": if (Required) { var OpCnt; var selected = false; for(OpCnt = 0; OpCnt < eval("fForm." + Field + ".length"); OpCnt++) { if (eval("fForm." + Field + "[" + OpCnt + "].checked")) selected = true; } if (!selected) return(ErrorHeader+ "Vous devez choisir l'une des options proposées."); } return(""); case "select-one": if (Required && eval("fForm." + Field + ".selectedIndex")==0 ) { return("Vous devez choisir l'une des options proposées."); } return(""); case "textarea": Value = Value_Trim("" + eval("fForm." + Field + ".value")); if (Required && Value == "") return(ErrorHeader + "Ce champ ne peut être vide."); return(""); case "text": case "hidden": Value = Value_Trim("" + eval("fForm." + Field + ".value")); if (Required && Value == "") return(ErrorHeader + "Ce champ ne peut être vide."); case "password": Value = Value_Trim("" + eval("fForm." + Field + ".value")); if (Required && Value == "") return(ErrorHeader + "Ce champ ne peut être vide."); if (!Required && Value == "") return(""); switch (ValueType.toLowerCase()) { case "alphabetic": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if ((Char < 'A' || Char > 'Z') && (Char < 'a' || Char > 'z') && (Char != 'á' && Char != 'é' && Char != 'í' && Char != 'ó' && Char != 'ú' && Char != 'Á' && Char != 'É' && Char != 'Í' && Char != 'Ó' && Char != 'Ú' && Char != 'è' && Char != 'ò' && Char != 'È' && Char != 'Ò' && Char != 'ü' && Char != 'ï' && Char != 'Ü' && Char != 'Ï' && Char != 'ñ' && Char != 'Ñ' && Char != 'à' && Char != 'À' && Char!=' ' && Char !='ç' && Char !='Ç' && Char !='-' && Char != "\'")) return(ErrorHeader + "Ce champ peut uniquement contenir des lettres."); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " lettre(s)."); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " lettre(s)."); } break; case "cp": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce numéro n'est pas valide."); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " chiffre(s)."); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " chiffre(s)."); } Error = CP_Validate(Value); if (Error) return(ErrorHeader + Error + "."); break; case "digit": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce numéro n'est pas valide."); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " chiffre(s)."); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " chiffre(s)."); } break; case "code": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce code secret n'est pas valide."); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " chiffre(s)."); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " chiffre(s)."); } break; case "e-mail": Error = Mail_Validate(Value); if (Error) return(ErrorHeader + Error + "."); if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " "); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " lettre(s)."); } break; case "integer": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce numéro n'est pas valide."); } if (parseFloat(Value) > Max || parseFloat(Value) < Min) return(ErrorHeader + "Ce champ n'est pas situé entre " + Min + " et " + Max + "."); break; case "string": if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "Ce champ n'a pas " + Min + " lettre(s)."); else return(ErrorHeader + "Ce champ n'a pas entre " + Min + " et " + Max + " lettre(s)."); } break; case "clave": if (Value.length > Max || Value.length < Min) { return(ErrorHeader + "Le mot de passe n'a pas entre " + Min + " et " + Max + " lettre(s)."); } break; case "telefono": if (Value.charAt(0)!='9') return(ErrorHeader + "Ce numéro de téléphone n'est pas valide."); for(CharCnt = 1; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce numéro de téléphone n'est pas valide."); } break; case "movil": if (Value.charAt(0)!='6') return(ErrorHeader + "Ce numéro de téléphone n'est pas valide."); for(CharCnt = 1; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "Ce numéro de téléphone n'est pas valide."); } break; case "fecha": Error=Date_Validate(Value); if (Error) return(ErrorHeader + Error + "."); if (Value.length > Max || Value.length < Min) { return(ErrorHeader + " " + Min + " et " + Max + " lettre(s)."); } break; case "visa": if (Value.length > Max || Value.length < Min) { return(ErrorHeader + "Le numéro de carte bancaire est invalide. "); }else{ if(!Visa_Validate(Value)) return(ErrorHeader + "Numéro de carte non valide. "); } break; default: return(ErrorHeader + "El tipo valor [" + ValueType + "] no está reconocido."); } return(""); } return(ErrorHeader + "El tipo de campo HTML no está reconocido."); } function Field_Validate_Ajax(Name, id, ValueType, Min, Max, Required) { var CharCnt; var ErrorHeader; var Value; var fForm; var HTMLTipo fForm = eval("document.getElementById('" + id + "').value"); ErrorHeader = "\n- " + Name + ": "; HTMLTipo = eval("document.getElementById('" + id + "').type"); if (!HTMLTipo) HTMLTipo = eval("document.getElementById('" + id + "')[0].type"); switch (HTMLTipo) { case "checkbox": return(""); /* case "radio": if (Required) { var OpCnt; var selected = false; for(OpCnt = 0; OpCnt < eval("document.getElementById('" + id + "').length"); OpCnt++) { if (eval("document.getElementById('" + id + "[" + OpCnt + "].checked")) selected = true; } if (!selected) return(ErrorHeader + "Ha d'escollir-se una de les opcions."); } return(""); case "select-one": if (Required && eval("fForm." + Field + ".selectedIndex") < 1) return(ErrorHeader + "El camp ha de tenir alguna opció seleccionada."); return(""); */ case "textarea": Value = Value_Trim("" + eval("document.getElementById('" + id + "').value")); if (Required && Value == "") return(ErrorHeader + "El camp no pot estar buit."); return(""); case "text": case "hidden": Value = Value_Trim("" + eval("document.getElementById('" + id + "').value")); if (Required && Value == "") return(ErrorHeader + "El camp no pot estar buit."); case "password": Value = Value_Trim("" + eval("document.getElementById('" + id + "').value")); if (Required && Value == "") return(ErrorHeader + "El camp no pot estar buit."); if (!Required && Value == "") return(""); switch (ValueType.toLowerCase()) { case "alphabetic": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if ((Char < 'A' || Char > 'Z') && (Char < 'a' || Char > 'z') && (Char != 'á' && Char != 'é' && Char != 'í' && Char != 'ó' && Char != 'ú' && Char != 'Á' && Char != 'É' && Char != 'Í' && Char != 'Ó' && Char != 'Ú' && Char != 'è' && Char != 'ò' && Char != 'È' && Char != 'Ò' && Char != 'ü' && Char != 'ï' && Char != 'Ü' && Char != 'Ï' && Char != 'ñ' && Char != 'Ñ' && Char != 'à' && Char != 'À' && Char!=' ' && Char !='ç' && Char !='Ç' && Char !='-' && Char != "\'")) return(ErrorHeader + "El camp no conté caracters alfabètics"); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " caracter/s."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " caracter/s."); } break; case "cp": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "El camp no té un número vàlid"); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " dígits."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " dígits."); } Error = CP_Validate(Value); if (Error) return(ErrorHeader + Error + "."); break; case "digit": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "El camp no té un número vàlid"); } if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " dígits."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " dígits."); } break; case "e-mail": Error = Mail_Validate(Value); if (Error) return(ErrorHeader + Error + "."); if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " caracter/s."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " caracter/s."); } break; case "integer": for(CharCnt = 0; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "El camp no té un número vàlid"); } if (parseFloat(Value) > Max || parseFloat(Value) < Min) return(ErrorHeader + "El camp no està entre " + Min + " i " + Max + "."); break; case "string": if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " caracter/s."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " caracter/s."); } break; case "clave": if (Value.length > Max || Value.length < Min) { return(ErrorHeader + "La contrasenya no té entre " + Min + " i " + Max + " caracters."); } break; case "telefono": if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " caracter/s."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " caracter/s."); } if (Value.charAt(0)!='9') return(ErrorHeader + "El camp no té un número de telèfon vàlid"); for(CharCnt = 1; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "El camp no té un número de telèfon vàlid"); } break; case "movil": if (Value.length > Max || Value.length < Min) { if (Min==Max) return(ErrorHeader + "El camp no té " + Min + " caracter/s."); else return(ErrorHeader + "El camp no té entre " + Min + " i " + Max + " caracter/s."); } if (Value.charAt(0)!='6') return(ErrorHeader + "El camp no té un número de telèfon vàlid"); for(CharCnt = 1; CharCnt < Value.length; CharCnt++) { Char = Value.charAt(CharCnt); if (Char < '0' || Char > '9') return(ErrorHeader + "El camp no té un número de mòbil vàlid"); } break; case "fecha": Error=Date_Validate(Value); if (Error) return(ErrorHeader + Error + "."); if (Value.length > Max || Value.length < Min) { return(ErrorHeader + "La data no té entre " + Min + " i " + Max + " caracters."); } break; default: return(ErrorHeader + "El tipus valor [" + ValueType + "] no està reconegut."); } return(""); } return(ErrorHeader + "El tipus de camp HTML no està reconegut."); } function Value_Trim(Value) { var Length; Length = Value.length; for(Cnt = 0; Cnt < Value.length && Value.charAt(Cnt) == " "; Cnt++); Value = Value.substr(Cnt); for(Cnt = Value.length - 1; Cnt >= 0 && Value.charAt(Cnt) == " "; Cnt--); Value = Value.substring(0, Cnt + 1); return(Value); } function checks(texto,apartat,max) { var alguno = false for(i=1;i<=(max-1);i++) { if (eval("document.forms[0].elements['"+texto+"_"+i+"'].checked")==true) { alguno = true } } if (eval("document.forms[0].elements['"+texto+"_"+max+"'].value")!="") { alguno = true } if (alguno!=true) { var errores=apartat } else { errores = "" } return errores }