/**********************************************
*   call in <form> onsubmit
*   set up attributes as needed for each field.
*   Field is Required?
*   this.FieldName.required = true;
*   Validate Email?
*   this.EmailField.rule = 'email';
*
*   So the <form> tag might look like this:
*
*   <form method="post" action="/cgi-bin/formmail.pl" 
    onsubmit="
            this.FirstName.required = true;
            this.LastName.required = true;
            this.Email.rule = 'email';
            return validate_form(this,document.getElementById('error_msg'));">
*
*   To see the messages from validate_form, create a paragraph just like this:
*
*       <pre><p id="error_msg">&nbsp;</p></pre>
*
*   Yes, use <pre> and make sure <p> has id=error_msg.  It will be replaced with
*   messages from validate_form() when it is done.
*/
function validate_form(mform,pmsg)
{
    var msg = '';
    for (var i = 0; i < mform.length; i++)
    {
        var field = mform.elements[i];        
        // create label for field
        var fname = '';
        switch (field.name)
        {
            case 'svar[lname]' :
            case 'LastName' :
                fname = 'Last Name'
                break;
            case 'svar[fname]' :
            case 'FirstName' :
                fname = 'First Name'
                break;
            case 'svar[email]' :
                fname = 'Email';
                break;
            default :
                fname = field.name
                break;
        }

        if(field.required == true && field.value == '')
        {
            msg += fname + " is required.\n"; /* field.name */
            continue;
        }
        
        if(field.rule && field.rule != '')       
        {
            var pattern = '';
            switch (field.rule)
            {
                case 'email' :
                    pattern = /[A-Za-z0-9_.-]+[@]([A-Za-z0-9_]+[.])+[A-Za-z]{2,4}/;    
            }
            if(pattern.exec(field.value) == null)
            {
                msg += fname + ' is invalid.\n';
                continue;
            }
        }
    }
    
    if(msg)
    {
        var errP = document.createTextNode(msg);
        if(pmsg)
        {
            var pParent = pmsg.parentNode;
            pParent.replaceChild(errP,pmsg);        
        }
        return false;
    }
}

