// version 1.2

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 getScrollBarWidth = function() {
  	var inner = document.createElement('p');
  	inner.style.width = "100%";
  	inner.style.height = "200px";

  	var outer = document.createElement('div');
  	outer.style.position = "absolute";
  	outer.style.top = "0px";
  	outer.style.left = "0px";
  	outer.style.visibility = "hidden";
  	outer.style.width = "200px";
  	outer.style.height = "150px";
  	outer.style.overflow = "hidden";
  	outer.appendChild (inner);

  	document.body.appendChild (outer);
  	var w1 = inner.offsetWidth;
  	outer.style.overflow = 'scroll';
  	var w2 = inner.offsetWidth;
  	if (w1 == w2) w2 = outer.clientWidth;

  	document.body.removeChild (outer);

  	return (w1 - w2);
  };
  
  var showSuccessModal = function(data) {
    jQuery.fancybox({
      // content:jQuery('#'+window.module.lp.form.data.confirmData).html(),
      href: data.url,
      hideOnOverlayClick: false,
      padding:0,
      type: 'iframe',
      width: data.size.width,
      height: data.size.height,

      onComplete: function() {
        if (data.size.height > jQuery('#fancybox-inner').height()) {
          var inner = jQuery('#fancybox-inner')[0];
          var outer = jQuery('#fancybox-outer')[0];
          var frame = jQuery('#fancybox-frame')[0];

          inner.style.width = (data.size.width + getScrollBarWidth()) + 'px';
          outer.style.width = (data.size.width + getScrollBarWidth()) + 'px';
        }
      }
    });
  };
  
  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) {
            if (data.protected_assets) {
              window.module.lp.form.responseData = {
                protectedAssets: data.protected_assets
              }
              
              // var pas = {};
              // 
              // for (var i=0,l=data.protected_assets.length;i<l;i++) {
              //   var asset = data.protected_assets[0];
              //   for (var key in asset) {
              //     pas[key] = asset[key];
              //   }
              // }
              // 
              // window.module.lp.form.responseData = {
              //   protectedAssets:pas
              // };
            }

            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;
              case 'modal':
                showSuccessModal(window.module.lp.form.data.confirmData);
                break;
              case 'post':
                jQuery(form).clone().appendTo(document.body).hide().attr("action", window.module.lp.form.data.confirmData).submit();
                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];
        }
      }
    }
  };

// jQuery.fancybox.showVars();
  initialize();
  copyURLParamsToFields();
});

