//SCRIPT with several functions used for validation purposes and other form purposes// Array to hold error messagesvar errors = new Array();// Function to add an error message to the arrayfunction addError(msg){    if ( (msg != null) && (msg.length > 0) )        errors.push(msg);}// Function to validate whether all form fields are filled// Parameter notRequired contains an array of fieldnames not to be checked// Parameter identifier contains initial characters of the fields to be checked// Returns the names of the fields that failed the verification, separated by commas.function validate(myForm, notRequired, identifier){                   var strCompulsory = '';                                  for (var i=0;i< myForm.elements.length;i++)        { // for all of the elements on the form..            // except those excluded            var exclude = false;            if (notRequired != null)              for (var j=0; j < notRequired.length; j++)                if (myForm.elements[i].name == notRequired[j])                    exclude = true;                                if ( ((myForm.elements[i].name.indexOf(identifier) == 0) || (identifier == null)) &&                 (!exclude) )             { // if the element's name starts with the identifier or no identifier is required..                if (myForm.elements[i].type == 'select-one' || myForm.elements[i].type == 'select-multiple')                 {                    // if it's a list element(for Nav)..                    if (!myForm.elements[i].options[myForm.elements[i].selectedIndex].value)                    {                        // and if the element is empty give a warning                        strCompulsory = strCompulsory + ' ' + myForm.elements[i].name + ',';                    }                }                else                    if (!myForm.elements[i].value)                     {                        strCompulsory = strCompulsory + ' ' + myForm.elements[i].name + ',';                    }                           }         }        return strCompulsory;    } // Function to assess whether a specified string has a predefined HTTP URL format.// Returns true ou false.    function isSite(siteURL) {           var siteok=/^(http:\/\/)?[A-Za-z0-9-_]+\.([a-zA-Z]{2,3}|[0-9]{1,3})[A-Za-z0-9-_%&\?\/.=]+$/;                return checkRegEx(siteURL, siteok);}// Function to assess whether a specified string has a predefined e-mail format.// Returns true ou false.function isEmail(mailAddress) {           var mailok=/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;               return checkRegEx(mailAddress, mailok);}// Function to assess whether a specified string has a predefined date format: dd-mm-yyyy.// Returns true ou false.function isDateFormat(dateStr) {           var dateok=/^\d{2}(\/|\-)\d{2}(\/|\-)\d{4}$/;        return checkRegEx(dateStr, dateok);}// Function to assess whether a specified date is correct and actual (after 1900). Date must be in the right format// Returns true ou false.function isDate(day,month,year) {               if (year > 1900)    {                 switch(month)         {                    case '1':                    case '3':                    case '5':                    case '7':                    case '8':                    case '01':                    case '03':                    case '05':                    case '07':                    case '08':                    case '10':                    case '12':                                                if (day <= 31) return true;                        else return false;                        break;                    case '4':                    case '6':                    case '9':                    case '04':                    case '06':                    case '09':                    case '11':                        if (day <= 30) return true;                        else return false;                        break;                    case '2':                    case '02':                        if (isLeapYear(year))                           {                            if (day <= 29) return true;                            else return false;                        }                        else                        {                            if (day <= 28) return true;                            else return false;                        }                        break;                    default: return false;         }             }   else return false;}// Function to assess whether a specified date is in the future. Date must be in the right format// Returns true ou false.function isFutureDate(day,month,year) {              var thisDate=new Date()    thisDate.setFullYear(year,month-1,day)    var today = new Date()    if (today >= thisDate)        return false;    else        return true;}function isLeapYear(year){        if (year%400 == 0) return true;        else if ( (year%4 == 0) && (year%100 != 0) ) return true;        else return false;}// Function to assess whether a specified string matches a given regular expression// Returns true ou false.function checkRegEx(str, regextrue) {              var reg = regextrue; // valid        if (reg.test(str)) // if syntax is valid            return true;        else return false; // if syntax is not valid}// Function to generate a password, all capitals, with a specific size, and a specific prefixfunction genPassword(size, prefix){   var chars = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Z','0','1','2','3','4','5','6','7','8','9');   var passSize = size;   var pass = prefix;   for (var i = 0; i < passSize; i++)   {                var pos = Math.floor(Math.random()* chars.length);                pass = pass + chars[pos];   }   return pass;} // Function to determine whether a form has at least one field filled out     // exceptions made to hidden fields and reset/submit buttons    // Returns true ou false.  function atLeast(myForm)    {        var foundOne = false;                              for (var i=0;i< myForm.elements.length;i++)        { // for all of the elements on the form..                                if (myForm.elements[i].type == 'select-one' || myForm.elements[i].type == 'select-multiple')                 {                    // if it's a list element(for Nav)..                    if (myForm.elements[i].options[myForm.elements[i].selectedIndex].value)                    {                        // and if the element is not empty found one                                               foundOne = true;                    }                }                else                {                    if  ( (myForm.elements[i].type != 'hidden') &&                        (myForm.elements[i].type != 'reset') &&                        (myForm.elements[i].type != 'submit') )                    {                        if (myForm.elements[i].value)                         {                                                                               foundOne = true;                        }                                                                  }                }        }               return foundOne;    }