  function processErrors(data) {
    var outputString = "";
    for (datapoint in data) {
       $("#" + datapoint + "_error").html(data[datapoint]);
    }
   $("#submitMessage").html("&nbsp;"); 
  }

  function displayProcessing() {
   $("#submitMessage").html("Submitting request"); 
  }

  function displayError() {
   $("#submitMessage").html("<br />There was an error submitting form.<br />Please try again or if you need immediate assistance<br />please call us directly at (800) 873-8193."); 
  }

  function updateStateField(countryValue, targetId) {
    var outputString = "";
    if(countries[countryValue]["states"]){
      $("#" + targetId).html("");
        $("#" + targetId).append("<option value=\"\">Select One</option>");
      for(state in countries[countryValue]["states"]){
        $("#" + targetId).append("<option value=\""+  state +"\">"+ countries[countryValue]["states"][state] +"</option>");
      $("#" + targetId + "Field").css("display","block");
      }
    } else {
      $("#" + targetId + "Field").css("display","none");
      $("#" + targetId).html("");
    }
    updatePhoneField(countryValue,"Phone")
  }

  function updatePhoneField(countryValue, targetId) {
    if(countryValue != "United States" && countryValue != "Canada") {
      $("#" + targetId).attr("value", "+" + countries[countryValue]["phone"]);
    } else if(countryValue == "Canada") {
      $("#" + targetId).attr("value",countries[countryValue]["phone"]);
    } else {
      $("#" + targetId).attr("value","");
    }
  }

  function change_visibility( target, controller){
    if( $(controller).attr("checked") ) {
       $('#' + target).css('display','block');
    } else { 
       $('#' + target).css('display','none');
       $('#Phone').attr('value','');
    }
  }

  function bindAjaxForm(formId,validatorFile,bindCountry) {
    $(formId).attr("action","/html/" + validatorFile)
    $(formId).ajaxForm({
      dataType:'json',
      method:'get',
      beforeSend: displayProcessing,
      success: processJson,
      error: displayError,
      timeout:15000
    }); 
    if(bindCountry != false) { 
      $("#country").bind("change", function() { updateStateField(this.value, "state"); })
    }
  }

  function initializeCallARepForm() {
    $("#country").attr("value","United States");
    bindAjaxForm('#callARepForm','validator_callarep_form.php');
  }

  function initializeLibraryForm() {
    $("#country").attr("value","United States");
    bindAjaxForm('#libraryForm','validator_library_form.php');
    change_visibility('free_trial_items',$("#fts"));
  }

  function initializeFreeTrialForm() {
    $("#country").attr("value","United States");
    bindAjaxForm('#freeTrialForm','validator_free_trial_form.php');
  }

  function initializeAcademicForm() {
    bindAjaxForm('#academicForm','validator_academic_form.php',false);
  }

  function initializeAcademicELAForm() {
    bindAjaxForm('#academicELAForm','validator_academic_ELA_form.php',false);
  }

  function initializeCodeAnalysisForm() {
    $("#country").attr("value","United States");
    bindAjaxForm('#freeTrialForm','validator_code_analysis_form.php');
  }

  function initializeJPCallARepForm() {
    $("#country").attr("value","日本");
    bindAjaxForm('#callARepForm','validator_callarep_form.php');
  }

  function initializeJPLibraryForm() {
    $("#country").attr("value","日本");
    bindAjaxForm('#libraryForm','validator_library_form.php');
    change_visibility('free_trial_items',$("#fts"));
  }

  function initializeJPFreeTrialForm() {
    $("#country").attr("value","日本");
    bindAjaxForm('#freeTrialForm','validator_free_trial_form.php');
  }

