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() {
  // try {
  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();
          }
        }); 
      }
    });
  };
  
  var getUrlParams = function() {
    var params = {}, hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i=0; i<hashes.length; i++) {
      hash = hashes[i].split('=');
      params[hash[0]] = hash[1];
    }
    return params;
  };
  
  var copyURLParamsToFields = function() {
    var params = getUrlParams();
    var form = jQuery('#'+window.module.lp.form.data.formContainerId+' form');
    var field;
    for (var param in params) {
      field = jQuery(form).find('input[name='+param+']')[0];
      if (typeof field !== 'undefined') {
        if (field.type === 'text' || field.type === 'hidden') {
          field.value = params[param];
        }
      }
    }
  };

  initialize();
  copyURLParamsToFields();
  // } catch(e) {
  // 
  // }
});
