// JavaScript Document
var isNav = (navigator.appName.indexOf("Netscape") != -1);
var isIE = (navigator.appName.indexOf("Microsoft") != -1);
var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera') != -1);
        
function validateForm(formObj) {    
    var htmlDsply = "true";
    var errMsgHeader = 'The following field(s) are required:\n\n';
    var errMsg = '';
    var errInptHeader = 'The following input type(s) are not supported.  Please contact the webmaster.\n\n'
    var errInpt = '';
    var emailBody = '';
    var jsText = 'Form Elements Identified:<br>';
    var lastRadio = '';
    var sameRadio;
    
    for(i=0; i<formObj.elements.length; i++) {
        sameRadio = false;
        if(formObj.elements[i].type != 'submit' && 
            formObj.elements[i].type != 'reset' && 
            formObj.elements[i].type != 'button' &&
            formObj.elements[i].type != 'hidden') {
            if (formObj.elements[i].type == 'radio') {
                sameRadio = sameRadioName(lastRadio, formObj.elements[i].name);
                lastRadio = formObj.elements[i].name;
            }
            if (!sameRadio) {
                //jsText += formObj.elements[i].name + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + formObj.elements[i].id + '<br/>';
                var field = formObj.elements[i];
                var fieldName = field.name;
                
                //alert(field.type);
                fieldName = trim(fieldName);
                
                //required fields
                if (fieldName.charAt(0) == '*') {
                    fieldName = trim(fieldName.substr(1));
                    var indent = false;
                    if (fieldName.substr(0,2) == '\\t') {
                        indent = true;
                        fieldName = trim(fieldName.substr(2));
                    }
                    //radio buttons
                    if (field.type == 'radio') {
                        var radioValue = getRadioValue(formObj.elements[field.name]);
                        if (radioValue == '' || radioValue == null) {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+radioValue+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+radioValue+'<br/>';
                        }
                    }
                    //checkboxes
                    else if (field.type == 'checkbox') {
                        var checkValue = "No";
                        if (field.checked == true) checkValue = "Yes";
                        if (checkValue == 'No') {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+checkValue+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+checkValue+'<br/>';
                        }
                    }
                    //textareas
                    else if (field.type == 'textarea') {
                        var value = trim(field.innerText);
                        if (value == '' || value == null) {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+value+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+value+'<br/>';
                        }
                    }                         
                    //text fields
                    else if (field.type == 'text'){
                        var value = field.value;
                        if (value == '' || value == null) {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+value+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+value+'<br/>';
                        }
                    }
                    //select one
                    else if (field.type == 'select-one') {
                        var value = field.value;
                        if (value == '' || value == null) {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+value+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+value+'<br/>';
                        }
                    }
                    //select multiple
                    else if (field.type == 'select-multiple') {
                        var value = getSelectionValue(field);
                        if (value == '' || value == null) {
                            errMsg += (fieldName.charAt(fieldName.length - 1) == ':' ? trim(fieldName.slice(0, (fieldName.length)-1)) : fieldName) + '\n';
                        }
                        else {
                            emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+value+'\n';
                            jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+value+'<br/>';
                        }
                    }
                    //unknown input type
                    else {
                        errInpt = field.type;
                    }
                }
                
                //non-required fields
                else {
                    var indent = false;
                    if (fieldName.substr(0,2) == '\\t') {
                        indent = true;
                        fieldName = trim(fieldName.substr(2));
                    }
                    
                    //radio buttons 
                    if (field.type == 'radio') {
                        emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+getRadioValue(formObj.elements[field.name])+'\n';
                        jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+getRadioValue(formObj.elements[field.name])+'<br/>';
                    }
                    //checkboxes
                    else if (field.type == 'checkbox') {
                        var checkValue = "No";
                        if (field.checked == true) checkValue = "Yes";
                        emailBody += (indent  ? '\t' + fieldName : fieldName) + '\t'+checkValue+'\n';
                        jsText += (indent  ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+checkValue+'<br/>';
                    }
                    //textarea
                    else if (field.type == 'textarea') {
                        var value = trim(field.innerText);
                        emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+field.value+'\n'; 
                        jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+value+'<br/>';                               
                    }
                    //text fields
                    else if (field.type == 'text'){
                        emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+field.value+'\n';
                        jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+field.value+'<br/>';
                    }
                    //select one
                    else if (field.type == 'select-one') {
                        emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+field.value+'\n';
                        jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+field.value+'<br/>';
                    }
                    //select multiple
                    else if (field.type == 'select-multiple') {
                        emailBody += (indent ? '\t' + fieldName : fieldName) + '\t'+getSelectionValue(field)+'\n';
                        jsText += (indent ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + fieldName : fieldName) + '&nbsp;&nbsp;&nbsp;&nbsp;'+getSelectionValue(field)+'<br/>';
                    }
                    //unknown input type
                    else {
                        errInpt = field.type;
                    }
                }
            }
        }
    }
    if (errInpt != '') {
        alert(errInptHeader + errInpt);
        return false;
    }
    
    if (errMsg != '') {
        alert(errMsgHeader + errMsg);
        return false;
    }
        
    formObj.bodyText.value = emailBody;
    return true;
    
}

function sameRadioName(lastRadio, thisRadio) {
    var rtn = false;
    if (thisRadio == lastRadio) {
        rtn = true;
    }
    return rtn;
}

function innerHtmlTestReset(divObj) {divObj.innerHTML = '';}

function trim(s) {
    rtn = "";
    if(s != null && s.length > 0) {
        rtn = s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
    }
    return rtn;
}


function checkEmailFormat(emailObj) {
    var EmailValue = emailObj.value;
    if (EmailValue != '') {
        // check email format
        if (EmailValue.indexOf('.') == -1 || EmailValue.indexOf('@') == -1) {
            alert('"' + EmailValue + '" is not a valid email address.  Please correct.');
            emailObj.select();
            emailObj.focus();
            return false;
        }
    }
}

function getRadioValue(radioObject) {   
    var value = null;
    
    for (var i=0; i<radioObject.length; i++) {
        if (radioObject[i].checked) {
            value = radioObject[i].value;
            break;
        }
    }
    return value;
  }

function getCheckBoxValue(radioObject) {
    var value = null;
    for (var i=0; i<radioObject.length; i++) {
        if (radioObject[i].checked) {
            value = radioObject[i].value;
            break;
        }
    }
    return value;
}

function getSelectionValue(selectObject) {
    var list = "";
    for (var i=0; i<selectObject.length; i++) {
        if (selectObject.options[i].selected) {
            if (list != "") {list += "; "}
            list += selectObject.options[i].text;
        }
    }
    return list;
}
