
// js to create hidden form elements to send all required attributes
// (id, type, quantity) of requested brochure/s
function requiredField(id, errorMsg) {
        this.id = id;
        this.errorMsg = errorMsg;
}
function requiredField_getId() {
    return this.id;
}
requiredField.prototype.getId = requiredField_getId;
function requiredField_getErrorMsg() {
    return this.errorMsg;
}
requiredField.prototype.getErrorMsg = requiredField_getErrorMsg;

function addHiddenField (form, fieldName, fieldValue) {
    var input = document.createElement('INPUT');
    input.type = "hidden";
    input.name = fieldName;
    input.value = fieldValue;
    input.setAttribute('type', "hidden");
    input.setAttribute('name', fieldName);
    input.setAttribute('value', fieldValue);
    form.appendChild(input);
}
function brochure(id, type, quantity, name) {
    this.id = id;
    this.type = type;
    this.quantity = quantity;
  this.name = name;
}
function brochure_getId() {
    return this.id;
}
brochure.prototype.getId = brochure_getId;
function brochure_getType() {
    return this.type;
}
brochure.prototype.getType = brochure_getType;
function brochure_getQuantity() {
    return this.quantity;
}
brochure.prototype.getQuantity = brochure_getQuantity;
function brochure_getName() {
  return this.name;
}
brochure.prototype.getName = brochure_getName;

var requiredFields = new Array(
    new requiredField("first_name", "First Name"),
    new requiredField("last_name", "Last Name"),
    new requiredField("Company_Name", "Company Name"),
    new requiredField("Email", "Email Address"),
    new requiredField("address", "Street Address"),
    new requiredField("City", "City"),
    new requiredField("zip", "Zip/Postal Code"),
    new requiredField("country", "Country"),
    new requiredField("contact_type", "Address you are providing")
);





function preProcess(frm) {

    var validator = jQuery(frm).validate({onsubmit: false})
    if ( !validator.form() ) {
          validator.focusInvalid();
          return false;
    }

    // check for strictly required fields, bail if they are not completed

    document.getElementById('submitbtn').disabled = 'disabled';

    var errorCount = 0;
    var errorMessage = "The following required fields are incomplete:\n";
    var requestForm = document.getElementById('requestForm');
    for(var i=0; i < requiredFields.length; i++) {
        if(eval("requestForm."+requiredFields[i].getId()+".value") == "") {
            //eval("requestForm."+requiredFields[i].getId()).className = "error";
            errorMessage = errorMessage+"\t"+requiredFields[i].getErrorMsg()+"\n";
            errorCount++;
        }
    }

    if (frm.Email.value && !Exed.checkMail(frm.Email.value) )  {
      errorMessage += "\tPlease provide a valid email address\n";
      errorCount++;
    }

    if(frm.Company_Size.value){
            //remove spaces
      while(frm.Company_Size.value.match(/[\s,.]/)) {
        frm.Company_Size.value = frm.Company_Size.value.replace(/[\s,.]/, '');
      }
        //check for invalid chars
        if(frm.Company_Size.value.match(/[^0-9,.]/)) {
            errorMessage += "\nApproximate size of your company can only contain numeric values.\n";
            errorCount++;
        }
            //keep the value below 2^31-1
            if(frm.Company_Size.value > 2147483647) {
                frm.Company_Size.value = 2147483647;
            }
    }

    if(frm.Number_of_employees.value){
            //remove spaces
      while(frm.Number_of_employees.value.match(/[\s,.]/)) {
        frm.Number_of_employees.value = frm.Number_of_employees.value.replace(/[\s,.]/, '');
      }
        //check for invalid chars
        if(frm.Number_of_employees.value.match(/[^0-9,.]/)) {
            errorMessage += "\nNumber of employees company-wide can only contain numeric values.\n";
            errorCount++;
        }
    }

    errorMessage = errorMessage+"\nPlease complete the form and click the submit button.";
    if(errorCount > 0) {
        alert(errorMessage);
        document.getElementById('submitbtn').disabled = ''
        return false;
    }

    // strictly required fields exist, create hidden variables for selected programs
    var brs = new Array();
    for(var i=0; i<frm.elements.length ; i++) {
            if(frm.elements[i].name.match(/^b_[0-9]*_[PG]/) != null && frm.elements[i].value.length > 0) {
                // Catch non-numeric quantity values and rewrite them as '1'
                if(frm.elements[i].value.match(/[^0-9]/)) {
                    frm.elements[i].value = '1';
                }
                tmp = frm.elements[i].name.split("_");
                var br = new brochure(tmp[1], tmp[2], frm.elements[i].value, frm.elements[i].id);
                brs.push(br);
            }
    }
    for(var i=1; i<=brs.length; i++) {
        addHiddenField(frm, "interest_id_"+i, brs[i-1].getId());
        addHiddenField(frm, "interest_type_"+i, brs[i-1].getType());
        addHiddenField(frm, "interest_quantity_"+i, brs[i-1].getQuantity());
        addHiddenField(frm, "interest_name_"+i, brs[i-1].getName());
    }

  //add the selected country name in case the request must be manually entered
    addHiddenField(frm, "country_name", frm.country.options[frm.country.selectedIndex].text);

  frm.submit()
  //submitlog(frm);
  //return false;
}

function submitlog(frm) {
     var url = "/cgi-bin/logrequest";
     jQuery.ajax({
                    type: "POST",
                    url: url,
                    data: jQuery(frm).serialize(),
                    success: function(){document.getElementById('requestForm').submit();}
                  });
}

