window.module = window.module || {};
window.module.lp = window.module.lp || {};
window.module.lp.form = window.module.lp.form || {};
window.module.lp.form.data = null;

jQuery(document).ready(function() {
  var formContainer = '#'+window.module.lp.form.data.formContainerId;
  var errorContainer = '#'+window.module.lp.form.data.errorContainerId;
  var errorLabelContainer = errorContainer + ' ul';
  var formSelector = formContainer + ' form';
  
  var positionErrors = function() {
    //get the position of the form container element
    var pos = jQuery(formContainer).offset();  
    var width = jQuery(formContainer).width();
    var docWidth = jQuery(document).width();
    
    var left =  (docWidth - (pos.left + width + 16)) < 280 ?
      pos.left - 296 :
      pos.left + width + 16;
  	
    jQuery(errorContainer).css({
      "left":left + "px", 
      "top":pos.top + "px",
      "width":"280px"
    });

    var e = document.getElementById(window.module.lp.form.data.formContainerId);
  };
  
  var initialize = function() {
    jQuery(formSelector).validate( {
      rules: window.module.lp.form.data.validationRules,
      messages: window.module.lp.form.data.validationMessages,
      errorContainer: errorContainer,
      errorLabelContainer: errorLabelContainer,
      wrapper: 'li',
      invalidHandler: function(form) {
        positionErrors();
      },
      submitHandler: function(form) {
        jQuery.ajax({
          url: window.module.lp.form.data.url,
          type: 'POST',
          data: jQuery(form).serialize(),
          debug:true,
          error: function() {
            alert(window.module.lp.form.data.errorMessage ||
              'We&#x27;re sorry the form could not be submitted because something went wrong. Please try again.');
          },
          success: function(data) {
            switch (window.module.lp.form.data.confirmAction) {
              case 'url':
                window.location.href = window.module.lp.form.data.confirmData;
                break;
              case 'message':
                alert(window.module.lp.form.data.confirmData);
                break;
            }
          },
          complete: function() {
            form.reset();
          }
        }); 
      }
    });
  };

  initialize();
});
