
var fieldsMap = {
    firstName:       {label: "First name",      isRequired: true},
    lastName:        {label: "Last name",       isRequired: true},
    company:         {label: "Company",         isRequired: true},
    phone:           {label: "Phone",           isRequired: true},
    fax:             {label: "Fax",             isRequired: false},
    email:           {label: "Email",           isRequired: true},
    address1:        {label: "Address line 1",  isRequired: true},
    address2:        {label: "Address line 2",  isRequired: false},
    city:            {label: "City",            isRequired: true},
    state:           {label: "State/Province",  isRequired: true},
    zipCode:         {label: "Zip/postal code", isRequired: false},
    country:         {label: "Country",         isRequired: true},
    optin:           {label: "Opt in",          isRequired: false},
    referralCode:    {label: "Referral code",   isRequired: false},
    remoteIpAddress: {label: "IP address",      isRequired: false},
    referer:         {label: "Referer",         isRequired: false},
    appSignature:    {label: "App signature",   isRequired: false} // Used only by license page
};



function validate() {
    var formElements = document.mainForm.elements;
    var str = "";
    var headerLine = "", contentLine = "";
    for (var i = 0; i < formElements.length; i++) {
        var fld = formElements[i];
        var label = fld.getAttribute ("label");
        if (!label || label == "") continue;
        var tagName = fld.tagName ? fld.tagName.toLowerCase() : "";
        var value = "";
        switch (tagName) {
        case "input": {
            var fldType = fld.type.toLowerCase();
            value = fldType == "text"  || fldType == "hidden" ?
                fld.value.replace (/\"/g, "\"\"") :
                (fld.checked ? "1" : "0");
            value = value.trim();
            break;
        }

        case "select":
            value = fld.options[fld.selectedIndex].text;
            break;

        case "textarea":
            value = fld.value;
            if (value) value = value.replace (/"/g, "\"\""); // " Keep emacs happy
            break;
        }
        var isRequired = fld.getAttribute ("isRequired");
        if (value == "" && isRequired == "1") str += "\n    " + label;
        if (headerLine != "") headerLine += ",";
        headerLine += label;
        if (contentLine != "") contentLine += ",";
        contentLine += '"' + value + '"';
    }
    if (str != "") {
        alert ("Please provide values for the following fields:" + str);
        return false;
    }

    // Now build the message attachment.
    getZcFormElement (document.mainForm, "0-301-307").value = headerLine + "\n" + contentLine;

    
    return true;
}


// function  validate () {
//     var str = "";
//     var headerLine = "", contentLine = "";
//     for (var fldName in fieldsMap) {
//         var fld = document.mainForm.elements[fldName];
//         if (!fld) continue; // Avoid stupid errors
//         var tagName = fld.tagName ? fld.tagName.toLowerCase() : "";
//         var value = tagName == "input" ?
//             (fld.type.toLowerCase() == "text" ? fld.value.trim() : fld.checked) :
//             (tagName == "select" ? fld.options[fld.selectedIndex].text : "");
//         var desc = fieldsMap[fldName];
//         if (desc.isRequired && value == "") str += "\n    " + fieldsMap[fldName].label;
//         if (headerLine != "") headerLine += ",";
//         headerLine += fieldsMap[fldName].label;
//         if (contentLine != "") contentLine += ",";
//         contentLine += '"' + value + '"';
//     }
//     if (str != "") {
//         alert ("Please provide values for the following fields:" + str);
//         return false;
//     }

//     // Now build the message attachment.
//     getZcFormElement (document.mainForm, "0-301-307").value = headerLine + "\n" + contentLine;
//     return true;
// }

