// -----------------------------------------------------------------------------// Form Validation//// Copyright (C) 2002 Matt Goodall - [mattpg@dingoblue.net.au]// Distributed under the terms of the GNU Library General Public License// -----------------------------------------------------------------------------// -----------------------------------------------------------------------------// Initializing script  - setting global variables// -----------------------------------------------------------------------------var checkObjects                = new Array();         // Array containing the objects to validate.var errors                                = "";                         // Variable holding the error message.var returnVal                        = false;                 // General return value. The validated form will only be submitted if true.var language                        = new Array();         // Language independent error messages!var selectecLanguage        = "english";        // Choose between "english", "danish", "dutch", "french", "spanish", "russian", "portuguese"language.english                = new Array();language.danish                        = new Array();language.dutch                        = new Array();language.french                        = new Array();language.spanish                = new Array();language.russian                = new Array();language.portuguese                = new Array();language.swedish                = new Array();language.polish                        = new Array();language.brazport                = new Array(); // Brazilian Portuguese// Error messages in english:        language.english.header                = "The following error(s) occured:"        language.english.start                = "->";        language.english.field                = " Field ";        language.english.require        = " is required";        language.english.min                = " and must consist of at least ";        language.english.max                = " and must not contain more than ";        language.english.minmax                = " and no more than ";        language.english.chars                = " characters";        language.english.num                = " and must contain a number";        language.english.email                = " must contain a valid e-mail address";// Error messages in Danish:        language.danish.header                = "Der opstod f\370lgende fejl:";        language.danish.start                = "->";        language.danish.field                = " Feltet ";        language.danish.require                = " skal udfyldes";        language.danish.min                        = " og skal best\345 af mindst ";        language.danish.max                        = " og m\345 ikke best\345 af flere end ";        language.danish.minmax                = " og ikke flere " // English: " and no more than ";        language.danish.chars                = " tegn";        language.danish.num                        = " og m\345 kun best\345 af tal";        language.danish.email                = " skal indeholde en korrekt e-mail addresse";// Error messages in Dutch:        language.dutch.header                = "De volgende fout(en) zitten in het formulier:"        language.dutch.start                = "->";        language.dutch.field                = " Veld ";        language.dutch.require                = " is verplicht";        language.dutch.min                        = " en moet bestaan uit minstens";        language.dutch.max                        = " en moet bestaan uit meer dan";        language.dutch.minmax                = " en niet meer dan";        language.dutch.chars                = " karakters";        language.dutch.num                        = " en moet een nummer zijn";        language.dutch.email                = " moet een geldig e-mail adres zijn.";// Error messages in French:        language.french.header                = "L'erreur suivante s'est produite: "        language.french.start                = "->";        language.french.field                = " Le champs ";        language.french.require                = " est obligatoire";        language.french.min                        = " et doit contenir au moins ";        language.french.max                        = " et ne doit pas contenir plus de ";        language.french.minmax                = " et pas plus de ";        language.french.chars                = " caract\350res";        language.french.num                        = " et doit contenir un nombre ";        language.french.email                = " doit contenir une adresse e-mail valide";// Error messages in Spanish:        language.spanish.header                = "Se ha producido un error:"        language.spanish.start                = "->";        language.spanish.field                = " El campo ";        language.spanish.require        = " es obligatorio";        language.spanish.min                = " y debe contener al menos ";        language.spanish.max                = " y no debe contener m\341s de ";        language.spanish.minmax                = " y no m\341s de ";        language.spanish.chars                = " caracteres";        language.spanish.num                = " y debe contener un n\372mero";        language.spanish.email                = " debe contener una direcci\363n de e-mail v\341lida";// Error messages in russian:        language.russian.header                = " Âîçíèêëà Îøèáêà(è):"        language.russian.start                = "->";        language.russian.field                = " Ïîëå ";        language.russian.require        = " îáÿçàòåëüíî";        language.russian.min                = " è äîëæíî ñîäåðæàòü íå ìåíåå ";        language.russian.max                = " è íå äîëæíî ñîäåðæàòü áîëåå ";        language.russian.minmax                = " è íå áîëåå ";        language.russian.chars                = " çíàêîâ";        language.russian.num                = " è äîëæíî ñîäåðæàòü ÷èñëîâîå çíà÷åíèå";        language.russian.email                = " äîëæíî ñîäåðæàòü äåéñòâèòåëüíûé e-mail àäðåñ";// Error messages in portuguese:        language.portuguese.header        = "O(s) seguinte(s) erro(s) ocorreu(am):"        language.portuguese.start        = "->";        language.portuguese.field        = " Campo ";        language.portuguese.require        = " e' necessario";        language.portuguese.min                = " e deve conter pelo menos ";        language.portuguese.max                = " e nao deve conter mais de ";        language.portuguese.minmax        = " e nao mais que ";        language.portuguese.chars        = " caracteres";        language.portuguese.num                = " e deve conter numero";        language.portuguese.email        = " deve conter um e-mail valido";// Error messages in Swedish:        language.swedish.header                = "Fšljande fel uppstod:";        language.swedish.start                = "->";        language.swedish.field                = " FŠltet ";        language.swedish.require        = " mŒste fyllas i";        language.swedish.min                = " och skall bestŒ av minst ";        language.swedish.max                = " och skall inte bestŒ av fler Šn ";        language.swedish.minmax                = " och inte fler Šn ";        language.swedish.chars                = " tecken";        language.swedish.num                = " och mŒste innehŒlla ett nummer";        language.swedish.email                = " mŒste innehŒlla en korrekt epost adress";// Error messages in polish:        language.polish.header                = "Wyst¹pi³ nastêpuj¹cy b³¹d(b³êdy):"        language.polish.start                = "* ";        language.polish.field                = " Pole <";        language.polish.require                = "> jest wymagane";        language.polish.min                        = " i musi zawieraæ conajmniej ";        language.polish.max                        = " i nie mo¿e zawieraæ wiêcej ni¿ ";        language.polish.minmax                = " i nie wiêcej ni¿ ";        language.polish.chars                = " znaki";        language.polish.num                        = " i musi zawieraæ liczbê";        language.polish.email                = " musi zawieraæ prawid³owy adres e-mail";// Error messages in brazilian portuguese:        language.brazport.header        = "O(s) seguinte(s) erro(s) ocorreu(ram):"        language.brazport.start                = "->";        language.brazport.field                = " O campo ";        language.brazport.require        = " é obrigatório";        language.brazport.min                = " e deve ser composto de no mínimo por ";        language.brazport.max                = " e não deve conter mais de ";        language.brazport.minmax        = " e não mais de ";        language.brazport.chars                = " caracteres";        language.brazport.num                = " e deve conter um número";        language.brazport.email                = " deve conter um endereço de e-mail válido";// -----------------------------------------------------------------------------// define - Call this function in the beginning of the page. I.e. onLoad.//// n = name of the input field (Required)// type= string, num, email (Required)// min = the value must have at least [min] characters (Optional)// max = the value must have maximum [max] characters (Optional)// d = (Optional)// -----------------------------------------------------------------------------function define(n,type,HTMLname,min,max,d){        var p;        var i;        var 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=define(n,type,HTMLname,min,max,d.layers[i].document);                return x;        }        // Create Object. The name will be "V_something" where something is the "n" parameter above.        eval("V_"+n+" = new formResult(x,type,HTMLname,min,max);");        checkObjects[eval(checkObjects.length)] = eval("V_"+n);}// -----------------------------------------------------------------------------// formResult - Used internally to create the objects// -----------------------------------------------------------------------------function formResult(form,type,HTMLname,min,max){        this.form = form;        this.type = type;        this.HTMLname = HTMLname;        this.min  = min;        this.max  = max;}// -----------------------------------------------------------------------------// validate - Call this function onSubmit and return the "returnVal". (onSubmit="validate();return returnVal;")// -----------------------------------------------------------------------------function validate(){        if(checkObjects.length>0){                errorObject = "";                for(i=0;i<checkObjects.length;i++){                        validateObject                         = new Object();                        validateObject.form         = checkObjects[i].form;                        validateObject.HTMLname = checkObjects[i].HTMLname;                        validateObject.val                 = checkObjects[i].form.value;                        validateObject.len                 = checkObjects[i].form.value.length;                        validateObject.min                 = checkObjects[i].min;                        validateObject.max                 = checkObjects[i].max;                        validateObject.type         = checkObjects[i].type;                        //Debug alert line                        //alert("validateObject: "+validateObject+"\nvalidateObject.val: "+validateObject.val+"\nvalidateObject.len: "+validateObject.len+"\nvalidateObject.min,validateObject.max: "+validateObject.min+","+validateObject.max+"\nvalidateObject.type: "+validateObject.type);                        // Checking input. If "min" and/or "max" is defined the input has to be within the specific range                        if(validateObject.type == "num" || validateObject.type == "string"){                                if((validateObject.type == "num" && validateObject.len <= 0) || (validateObject.type == "num" && isNaN(validateObject.val))){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].num+"\n";                                } else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].min+validateObject.min+language[selectecLanguage].minmax+validateObject.max+language[selectecLanguage].chars+"\n";                                } else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].min+validateObject.min+language[selectecLanguage].chars+"\n";                                } else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+language[selectecLanguage].max+validateObject.max+language[selectecLanguage].chars+"\n";                                } else if (!validateObject.min && !validateObject.max && validateObject.len <= 0){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].require+"\n";                                }                        } else if(validateObject.type == "email"){                                // Checking existense of "@" and ".". The length of the input must be at least 5 characters. The "." must neither be preceding the "@" nor follow it.                                if((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") ||(validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.indexOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.indexOf("@")-1) == ".")){errors+=language[selectecLanguage].start+language[selectecLanguage].field+validateObject.HTMLname+language[selectecLanguage].email+"\n";}                        }                }        }        // Used to set the state of the returnVal. If errors -> show error messages in chosen language        if(errors){                alert(language[selectecLanguage].header.concat("\n"+errors));                errors = "";                returnVal = false;        } else {                returnVal = true;        }}