Advertisement
Guest User

srbnhtrtervd

a guest
Jul 17th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;(function ($, window, undefined) {
  2.     // DEFINED GLOBAL EVENTS THAT CAN BE HOOKED INTO THROUGHOUT ALL LOADED JS.
  3.     $(document).ready(function (e) {
  4.         $(document).trigger('core:load').delay(500).trigger('core:load:async');
  5.     });
  6.  
  7.     $(window).resize(function (e) {
  8.         $(document).trigger('core:resize', e)
  9.     });
  10.  
  11. })(jQuery, window);
  12.  
  13.  
  14. /**
  15.  * @package     AjaxForm
  16.  * @version     1.0
  17.  * @author     Trevor Wagner
  18.  */
  19. ;(function ($, window, undefined) {
  20.  
  21.     var AjaxForm = function () {
  22.  
  23.         this.form = {
  24.             el: null,
  25.             action: null,
  26.             confirm: false,
  27.             submit: null,
  28.             url: null
  29.         };
  30.         this.data = {formData: null};
  31.         this.flags = {
  32.             canSubmit: false,
  33.             haltSubmit: false
  34.         };
  35.         this.errors = {
  36.             errorContainer: null
  37.         }
  38.  
  39.         return this;
  40.     };
  41.  
  42.     AjaxForm.prototype.init = function (form, url) {
  43.         var self = this,
  44.                 errorContainer = $('[data-form-errors]');
  45.  
  46.         if (form.length > 0) {
  47.             self.form.el = form;
  48.             self.form.submit = form.find('button[type="submit"]');
  49.             self.form.action = form.data('action');
  50.             self.form.url = url;
  51.  
  52.             if (form.data('confirm') !== undefined) {
  53.                 self.form.confirm = form.data('confirm');
  54.             }
  55.         }
  56.  
  57.         if (errorContainer.length > 0) {
  58.             var formErrors = new FormErrors();
  59.             formErrors.init(errorContainer);
  60.  
  61.             self.errors.formErrors = formErrors
  62.         }
  63.  
  64.         $(document).trigger('core:form:before_submission', self);
  65.  
  66.         self.collectData();
  67.  
  68.         if (self.flags.haltSubmit) {
  69.  
  70.         } else {
  71.             self.makeRequest();
  72.         }
  73.     };
  74.  
  75.     AjaxForm.prototype.setObservers = function (inst, ajaxUrl) {
  76.         var self = this;
  77.         $(document).on('submit', '[data-ajax-form]', {inst: inst, ajaxUrl: ajaxUrl}, function (e) {
  78.             e.preventDefault();
  79.  
  80.             var form = $(this);
  81.             $(document).trigger('core:form_error:hide');
  82.             inst.init(form, ajaxUrl);
  83.         });
  84.     };
  85.  
  86.     AjaxForm.prototype.collectData = function () {
  87.         debugger;
  88.         this.data.formData = this.form.el.serialize();
  89.     };
  90.  
  91.     AjaxForm.prototype.confirmFormRequest = function () {
  92.         var self = this;
  93.         return this.form.confirm !== false ? confirm(self.form.confirm) : true;
  94.     };
  95.  
  96.     AjaxForm.prototype.makeRequest = function () {
  97.         var self = this;
  98.         $(document).trigger('core:overlay:show').trigger('core:message:clear');
  99.  
  100.         // Ajax POST call.
  101.         $.ajax({
  102.             method: 'POST',
  103.             action: self.form.action,
  104.             url: self.form.url,
  105.             data: self.data.formData,
  106.             success: function (resp) {
  107.  
  108.                 var data = $.parseJSON(resp);
  109.                 $(document).trigger('core:loader:hide');
  110.                 data.status ? self.formSuccess(data) : self.formError(data);
  111.             }
  112.         });
  113.     };
  114.  
  115.     AjaxForm.prototype.formSuccess = function (resp) {
  116.         var self = this;
  117.         $(document).trigger('core:overlay:hide');
  118.  
  119.         self.form.el.find('button[type="submit"]').removeAttr('disabled');
  120.  
  121.         $(document).trigger('core:ajaxform:success', {form: self.form, resp: resp});
  122.     };
  123.  
  124.     AjaxForm.prototype.formError = function (resp) {
  125.         var self = this;
  126.         $(document).trigger('core:overlay:hide');
  127.  
  128.         self.form.el.find('button[type="submit"]').removeAttr('disabled');
  129.  
  130.         $(document).trigger('core:form:error', {form: self.form, resp: resp})
  131.         $(document).trigger('core:form_error:show', {ajaxForm: self, msg: resp.message, klass: 'error'});
  132.     };
  133.  
  134.     $(document).on('core:load', function (e) {
  135.         var ajaxForm = new AjaxForm(core.ajaxUrl);
  136.         ajaxForm.setObservers(ajaxForm, core.ajaxUrl);
  137.     });
  138.  
  139.  
  140.     var FormErrors = function () {
  141.         this.data = {
  142.             container: null,
  143.         };
  144.  
  145.         return this;
  146.     };
  147.  
  148.     FormErrors.prototype.init = function (el) {
  149.         var self = this;
  150.  
  151.         if (el.length > 0) {
  152.             self.container = el;
  153.         }
  154.  
  155.         self.setObservers();
  156.     };
  157.  
  158.     FormErrors.prototype.setObservers = function () {
  159.         var self = this;
  160.  
  161.         $(document).on('core:form_error:show', function (e, data) {
  162.             self.show(data.msg, data.klass);
  163.         });
  164.  
  165.         $(document).on('core:form_error:hide', function (e, data) {
  166.             self.hide();
  167.         })
  168.     };
  169.  
  170.     FormErrors.prototype.hide = function () {
  171.         var self = this;
  172.  
  173.         self.container.html('');
  174.         self.container.removeClass();
  175.     };
  176.  
  177.     FormErrors.prototype.show = function (msg, klass) {
  178.         var self = this;
  179.  
  180.         self.container.addClass(klass);
  181.         self.container.html(msg);
  182.  
  183.     };
  184.  
  185. })(jQuery, window);
  186.  
  187.  
  188. /**
  189.  * @package     Overlay
  190.  * @version     1.0
  191.  * @author     Trevor Wagner
  192.  */
  193. ;(function ($, window, undefined) {
  194.  
  195.     var Overlay = function () {
  196.  
  197.         this.overlay = {
  198.             el: null
  199.         };
  200.  
  201.         return this;
  202.     };
  203.  
  204.     Overlay.prototype.init = function (el) {
  205.         if (el.length > 0) {
  206.             this.overlay.el = el;
  207.         }
  208.  
  209.         this.setObservers();
  210.     };
  211.  
  212.     Overlay.prototype.setObservers = function () {
  213.         $(document).on('core:overlay:show', this, function (e) {
  214.             e.data.show();
  215.         });
  216.  
  217.         $(document).on('core:overlay:hide', this, function (e) {
  218.             e.data.hide();
  219.         });
  220.     };
  221.  
  222.     Overlay.prototype.show = function () {
  223.         this.overlay.el.addClass('active').addClass('visible');
  224.     };
  225.  
  226.     Overlay.prototype.hide = function () {
  227.         setTimeout(function (overlay) {
  228.             overlay.removeClass('visible');
  229.             setTimeout(function (overlay) {
  230.                 overlay.removeClass('active')
  231.             }, 1000, overlay)
  232.         }, 1000, this.overlay.el)
  233.     };
  234.  
  235.     $(document).on('core:load', function (e) {
  236.         var overlay = new Overlay();
  237.         overlay.init($('[data-overlay]'));
  238.     })
  239.  
  240. })(jQuery, window);
  241.  
  242.  
  243. /**
  244.  * @package     Deposit Form
  245.  * @version     1.0
  246.  * @author     Trevor Wagner
  247.  */
  248. ;(function ($, window, undefined) {
  249.  
  250.     var DepositForm = function () {
  251.         this.data = {
  252.             parentForm: '',
  253.             ajaxForm: null,
  254.             errors: {
  255.                 container: null
  256.             }
  257.         };
  258.  
  259.         return this;
  260.     };
  261.  
  262.     DepositForm.prototype.init = function () {
  263.         var self = this,
  264.                 errorContainer = $('[data-form-errors]');
  265.  
  266.         if(errorContainer.length > 0){
  267.             self.data.parentForm = errorContainer.closest('[data-ajax-form]');
  268.         }
  269.  
  270.         //if (contractTrigger.length > 0) {
  271.         //    self.data.triggers.contractTrigger = contractTrigger;
  272.         //
  273.         //
  274.         //    if (errorContainer.length > 0) {
  275.         //        self.data.errors.container = errorContainer;
  276.         //    }
  277.         //}
  278.  
  279.         self.setObservers();
  280.     };
  281.  
  282.     DepositForm.prototype.setObservers = function () {
  283.         var self = this;
  284.  
  285.         //if (contractTrigger.length > 0) {
  286.         //    contractTrigger.click(function (e) {
  287.         //        e.preventDefault();
  288.         //    })
  289.         //}
  290.  
  291.         if (self.data.parentForm.length > 0) {
  292.             self.data.parentForm.find('input').on('change', function (e) {
  293.                 var field = $(e.target),
  294.                         parentEl = field.parent();
  295.  
  296.                 if (field.is(":invalid")) {
  297.                     parentEl.addClass('validation-error');
  298.                 } else {
  299.                     parentEl.removeClass('validation-error');
  300.                 }
  301.             })
  302.         }
  303.  
  304.         //$(document).on('core:popup:show', function (e, data) {
  305.         //    $.extend(self.data, data);
  306.         //
  307.         //    $.ajax({
  308.         //        dataType: 'JSON',
  309.         //        url: core.ajaxUrl,
  310.         //        data: {
  311.         //            action: 'initialize_contract_form',
  312.         //            nonce: self.data.parentForm.find('#deposit_form').val(),
  313.         //            exhibitor_id: core.currentPageID,
  314.         //            exhibitor_current_show_id: '34',
  315.         //            show_id: self.data.parentForm.find('[data-show-id]').val(),
  316.         //        },
  317.         //        method: 'POST',
  318.         //        success: function (response) {
  319.         //            self.initializeContract(response);
  320.         //        }
  321.         //    })
  322.         //});
  323.  
  324.         $(document).on('core:form:before_submission', function (e, data) {
  325.             debugger;
  326.             self.data.ajaxForm = data;
  327.             var formData = data.form;
  328.  
  329.             self.data.ajaxForm.flags.haltSubmit = true;
  330.  
  331.             formData.el.find('button[type="submit"]').attr('readonly', 'true');
  332.  
  333.             Stripe.setPublishableKey(core.stripePkKey);
  334.             Stripe.card.createToken({
  335.                 number: formData.el.find('#cardnumber').val(),
  336.                 cvc: formData.el.find('#cvv').val(),
  337.                 exp_month: formData.el.find('select[name="exp-month"]').val(),
  338.                 exp_year: formData.el.find('select[name="exp-year"]').val(),
  339.                 name: formData.el.find('input[name="cardholdername"]').val(),
  340.                 address_line1: formData.el.find('input[name="street"]').val(),
  341.                 address_line2: formData.el.find('input[name="address_2"]').val(),
  342.                 address_city: formData.el.find('input[name="city"]').val(),
  343.                 address_zip: formData.el.find('input[name="zip"]').val(),
  344.                 address_state: formData.el.find('input[name="state"]').val(),
  345.                 address_country: formData.el.find('select[name="country"]').val()
  346.             }, function (status, response) {
  347.                 self.handleStripeTokenization(status, response, self.data.ajaxForm)
  348.             });
  349.         });
  350.  
  351.         //$(document).on('core:ajaxform:success', function (e, data) {
  352.         //    var resp = data.resp;
  353.         //
  354.         //    if (resp.status && 'redirect' in resp) {
  355.         //        window.location.href = resp.redirect;
  356.         //    }
  357.         //})
  358.     };
  359.  
  360.     DepositForm.prototype.handleStripeTokenization = function (status, response, ajaxForm) {
  361.         var self = this,
  362.                 formEl = self.data.ajaxForm.form.el;
  363.  
  364.         formEl.find('button[type="submit"]').removeAttr("readonly");
  365.  
  366.         if (response.error) {
  367.             $(document).trigger('core:form_error:show', {
  368.                 ajaxForm: ajaxForm,
  369.                 msg: 'Stripe Error: ' + response.error.message,
  370.                 klass: 'error'
  371.             })
  372.         } else {
  373.             var token = response['id'],
  374.                     tokenField = formEl.find('input[data-stripe-tokenized-details]');
  375.  
  376.             if (tokenField.length > 0) {
  377.                 tokenField.val(token);
  378.             }
  379.  
  380.             self.data.ajaxForm.collectData();
  381.             self.data.ajaxForm.makeRequest();
  382.         }
  383.     };
  384.  
  385.     // DepositForm.prototype.initializeContract = function (response) {
  386.     //     var self = this;
  387.     //
  388.     //     if(response.data.alreadySigned){
  389.     //         self.data.popup.el.find('[data-destroy-btn]').show();
  390.     //     }
  391.     //
  392.     //     self.data.popup.el.find('.popup-content').html(response.data.content);
  393.     //
  394.     //     self.data.popup.el.find('iframe').load(function () {
  395.     //         if (!window.addEventListener) {
  396.     //             window.attachEvent('onmessage', function (e) {
  397.     //                 self.handleSignedDocument(e);
  398.     //             });
  399.     //         } else {
  400.     //             window.addEventListener('message', function (e) {
  401.     //                 self.handleSignedDocument(e);
  402.     //             }, false);
  403.     //         }
  404.     //     });
  405.     //
  406.     //     self.data.parentForm.find('[data-sign-contract]').hide()
  407.     //     self.data.parentForm.find('#signed').html('<i class="fa fa-fw fa-check"></i> Electronic Contract Signed').attr('readonly', 'true')
  408.     //     self.data.parentForm.find('[data-submit-btn]').removeAttr('disabled')
  409.     //     self.data.parentForm.find('[data-contract]').removeClass('hidden')
  410.     //
  411.     // };
  412.     //
  413.     // DepositForm.prototype.handleSignedDocument = function (e) {
  414.     //     var self = this;
  415.     //
  416.     //     if (e.origin == "https://secure.na1.echosign.com") {
  417.     //         self.data.parentForm.find('[data-contract-signed-flag]').val(1);
  418.     //         self.data.popup.el.find('[data-destroy-btn]').show();
  419.     //     }
  420.     // };
  421.     //
  422.    
  423.     $(document).on('ready', function (e) {
  424.         var dpf = new DepositForm();
  425.         dpf.init();
  426.     })
  427.  
  428. })(jQuery, window);
  429.  
  430.  
  431. /**
  432.  * @package     Expiration Fields
  433.  * @version     1.0
  434.  * @author     Trevor Wagner
  435.  */
  436. ;(function ($, window, undefined) {
  437.  
  438.     var ExpYear = function () {
  439.         this.expYearFields = {};
  440.  
  441.         return this;
  442.     };
  443.  
  444.     ExpYear.prototype.init = function () {
  445.         var self = this,
  446.                 expFields = $('select[data-exp-year]');
  447.  
  448.         if (expFields.length > 0) {
  449.             self.expYearFields = expFields;
  450.         }
  451.  
  452.         self.populateFields();
  453.     };
  454.  
  455.     ExpYear.prototype.populateFields = function () {
  456.         var self = this;
  457.  
  458.         if (self.expYearFields.length > 0) {
  459.             self.expYearFields.each(function () {
  460.                 var field = $(this),
  461.                         year = new Date().getFullYear(),
  462.                         options = '';
  463.  
  464.                 for (var i = 0; i < 12; i++) {
  465.                     options += "<option value='" + (i + year) + "' >" + (i + year) + "</option>";
  466.                 }
  467.  
  468.                 field.append(options);
  469.  
  470.                 field.trigger('change');
  471.             })
  472.         }
  473.     };
  474.  
  475.     $(document).on('ready', function (e) {
  476.         var exp = new ExpYear();
  477.         exp.init();
  478.     })
  479.  
  480. })(jQuery, window);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement