// ----------------------------------------------------------------------------- // 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 selectedLanguage = "english"; // Choose between "english", "danish", "dutch", "french", "spanish", "russian", "portuguese" language.english = new Array(); // 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"; language.english.date = " must contain a valid date (dd/mm/yyyy)"; //language.english.date = " must contain a valid date"; //language.english.date = " must contain a valid date (mm/dd/yyyy)"; // ----------------------------------------------------------------------------- // 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) // HTMLname = Name of the Field (Required) // min = the value must have at least [min] characters (Optional) // max = the value must have maximum [max] characters (Optional) // d = Document Object (Optional) /*---------------------------------------------------------------------------- define('field1','string','Apple'); Required define('field2','string','Peach',4); Required - minimum 4 characters define('field3','string','Cherry',null,8); Required - maximum 8 characters define('field4','string','Melon',4,8); Required - minimum 4 characters -maximum 8 characters define('field5','num','Banana'); Required - Must be a numeric define('field6','num','Grape',3); Required - Must be a numeric - minimum 3 digits define('field7','num','Carot',null,6); Required - Must be a numeric - maximum 6 digits define('field8','num','Sugar',4,6); Required - Must be a numeric - minimum 4 digits - maximum 6 digits define('field9','email','Fruit') Required - Valid e-mail define('field10','date','Date',1) Required - Valid Date define('field11','date','Date') Optional - Valid Date -----------------------------------------------------------------------------*/ 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&&i0){ errorObject = ""; for(i=0;i validateObject.max)){errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].require+language[selectedLanguage].min+validateObject.min+language[selectedLanguage].minmax+validateObject.max+language[selectedLanguage].chars+"\n"; } else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)){errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].require+language[selectedLanguage].min+validateObject.min+language[selectedLanguage].chars+"\n"; } else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)){errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].require+language[selectedLanguage].max+validateObject.max+language[selectedLanguage].chars+"\n"; } else if (!validateObject.min && !validateObject.max && validateObject.len <= 0){errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].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[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].email+"\n";} } else if(validateObject.type == "date"){ if(validateObject.min && validateObject.len <= 0) {errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].require+"\n"; } else if (validateObject.len > 0) if(!dateFormatOk(validateObject.val,"/")) {errors+=language[selectedLanguage].start+language[selectedLanguage].field+validateObject.HTMLname+language[selectedLanguage].date+"\n";} } } } // Used to set the state of the returnVal. If errors -> show error messages in chosen language if(errors){ alert(language[selectedLanguage].header.concat("\n"+errors)); errors = ""; returnVal = false; } else { returnVal = true; } } function isdate(pDay, pMonth, pYear){ int_day=parseInt(pDay,10); int_month=parseInt(pMonth,10); int_year=parseInt(pYear,10); int_year_size=pYear.length; //checking whole date format if(int_day>0 && int_day<32 && int_month>0 && int_month<13 && int_year_size>3) { if(int_month==2) { if(int_year%4==0 && (int_year%100!=0 || int_year%400==0)){return (int_day<=29)?true:false} else{return (int_day<=28)?true:false} } else { if((int_month<8 && int_month%2!=0) || (int_month>7 && int_month%2==0)) { if(int_day<=31) { return true } else { return false } } else { if (int_day<=30) { return true } else { return false } } } } else { return false } } function explodeArray(item,delimiter) { tempArray=new Array(1); var Count=0; var tempString=new String(item); while (tempString.indexOf(delimiter)>0) { tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter)); tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1); Count=Count+1 } tempArray[Count]=tempString; return tempArray; } function dateFormatOk(pCompoundDate, pDelimiter){ dateArray = explodeArray(pCompoundDate, pDelimiter); date_day = dateArray[0]; date_month = dateArray[1]; date_year = dateArray[2]; if(!(isNaN(date_day) || isNaN(date_month) || isNaN(date_year))) { return(isdate(date_day, date_month, date_year)); } else { return(false); }; }