$(document).ready(function(){

  if($("form#etrReg").length){

    // To init select input as a pretty dropdown list
    $("select").selectmenu({
      style     : "dropdown",
      menuWidth : "241"
    });

    // Bind form submission
    bindFormSubmit();
    
  }
});


// Inclusion of eTrigue script
var etrHead = document.getElementsByTagName("head")[0];
etrLoadScript("http://trk.etrigue.com/etrigueForm.js");

// eTrigue Function
function etrLoadScript(location){var script = document.createElement("script");script.src = location;script.type = "text/javascript";etrHead.appendChild(script);}

// This is the eTrigue checkData function adpated to our need
function checkData(retURL){
  try{
    var etrigueForm = new EtrigueForm(1010);
    etrigueForm.submitClassic("etrReg",function(dat){
      if(retURL){
        window.location = retURL;
      }
    });
  }
  catch(e){
    if(retURL){
      window.location = retURL;
    }
  }
}

function bindFormSubmit(){
  // Get boxError
  var $boxError =_SalesClic.$boxError;

  // Get submit button
  var $submitButton = $("form#etrReg").find('button[type="submit"]');
  $submitButton.unbind("click");
  $submitButton.click(function(e){
    // Prevent the automatic form submission
    e.preventDefault();

    var $form = $("form#etrReg");
    $.ajax({
      type        : "post",
      url         : "/wp-content/themes/Salesclicv2/partials/form_page/_inc-form-controller.php",
      data        : $form.serializeArray(),
      dataType    : "json",
      beforeSend  : function(){
        $form.nimbleLoader("show");
      },
      complete    : function(response){
        $form.nimbleLoader("hide");
      },
      success     : function(response){
        // Remove message box if exists
        $boxError.destroy();
        try{
          // Call eTrigue function to submit data
          checkData(response.ret_url);
        }catch(e){}
      },
      error   : function(xhr){
        try{
          $boxError.initBox();
          var errorJson = JSON.parse(xhr.responseText);
          for(var errorKey in errorJson){
            for(var fieldKey in errorJson[errorKey]){
              var fieldMsgErrorName = "error_msg["+errorKey+"]["+errorJson[errorKey][fieldKey]+"]";
              $boxError.addMessage($("input[name='"+fieldMsgErrorName+"']").val());
            }
          }
          $boxError.show($("span#box_message_marker"));
        }
        catch(e){}
      }
    });
  });
}
