/** * package Sp One Step Checkout * * @version 1.0.2 * @author MagenTech http://www.magentech.com * @copyright (c) 2017 YouTech Company. All Rights Reserved. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ var stepCheckout = { _element: $('#spstepcheckout'), _step_one: $('#spsco_one', this._element), _step_two: $('#spsco_two', this._element), _step_three: $('#spsco_three', this._element), _step_review: $('#spsco_review', this._element), _element_valid: '#spstepcheckout #spsco_login_modal form, #spstepcheckout #spsco_form', _element_form: $('#spsco_form', this._element), _modal_login: $('#spsco_login_modal'), _btn_login: $('.btn-login', this._modal_login), _btn_logout: $('.btn-logout', this._element_form), _form_login: $('#spsco_login_form', this._modal_login), _initialized: false, _flag_offer: true, _flag_valid: false, _flag_click: 0, init: function() { var _self = this; prestashop.on('updatedDeliveryForm', function(event) { $('.delivery-option.selected .carrier-extra-content').show() }); _self._initialized = true; _self._flag_click = 0; _self._addValidAndLoad(); }, _addValidAndLoad: function() { var _self = this; if (typeof SPSCOVAR !== typeof undefined) { if (typeof $.formUtils !== typeof undefined && typeof $.validate !== typeof undefined) { $.validate({ form: _self._element_valid, validateHiddenInputs: true, language: messageValidate, onError: function() { _self._flag_valid = false; return false; }, onSuccess: function() { _self._flag_valid = true; return false; } }); } Address.launch(); _self._loginAndLogout(); Carrier.launch(); Payment.launch(); Review.launch(); $('input[data-validation*="isBirthDate"]', _self._step_one).datepicker({ dateFormat: SPSCOVAR.date_format_language, changeMonth: true, changeYear: true, showButtonPanel: true, yearRange: '-100:+0', isRTL: parseInt(prestashop.language.is_rtl) }); }else{ _self._editLink(); prestashop.on('updateCart', function (event) { var _edl = setTimeout(function() { _self._editLink(); }, 800); }); } }, _editLink : function () { var separator_param = '?'; if ($.strpos(prestashop.urls.current_url, '?')) { separator_param = '&'; } if ($('.cart-detailed-actions a').length) { $('.cart-detailed-actions a').attr('href', prestashop.urls.current_url + separator_param + 'checkout=1'); $('form#voucher').attr('action', prestashop.urls.current_url); var href_delete_voucher = $('a.price_discount_delete').attr('href'); if (typeof(href_delete_voucher) != 'undefined') { href_delete_voucher = href_delete_voucher.split('?'); $('a.price_discount_delete').attr('href', prestashop.urls.current_url + '?' + href_delete_voucher[1]); } } }, _loginAndLogout: function() { var _self = this; _self._btn_login.on('click', function(e) { _self._loginCustomer() }); _self._btn_logout.on('click', function(e) { window.location = $(e.currentTarget).data('link'); }); $('.txt-password', _self._modal_login).keypress(function(e) { var code = (e.keyCode ? e.keyCode : e.which); if (code == 13) _self._loginCustomer(); }); }, _loginCustomer: function() { var _self = this; var _email = $('.txt-email', _self._form_login).val(); var _pass = $('.txt-password', _self._form_login).val(); var login_success = false; var data = { is_ajax: true, action: 'loginCustomer', email: _email, password: _pass }; _self._flag_click++; if (_self._flag_click == 1 || _self._form_login.find('.has-success').length > 1) { _self._form_login.submit(); } if (_self._flag_valid) { $.ajax({ type: 'POST', url: prestashop.urls.pages.order + '?rand=' + new Date().getTime(), cache: false, dataType: 'json', data: data, beforeSend: function() { _self._btn_login.attr('disabled', 'true'); $('.loading_small', _self._modal_login).show(); $('.alert', _self._modal_login).empty().addClass('hidden'); }, success: function(json) { if (json.success) { $.totalStorageSP('id_address_delivery', null); $.totalStorageSP('id_address_invoice', null); if ($('#spsco_review_container', _self._element).length > 0) { window.parent.location.reload(); } else { if (parseInt($('.shopping_cart .ajax_cart_quantity', _self._element).text()) > 0) { window.parent.location = prestashop.urls.pages.order; } else { window.parent.location = prestashop.urls.base_url; } } login_success = true; } else { if (json.errors) { $('.alert', _self._modal_login).html(json.errors).removeClass('hidden'); } } }, complete: function() { if (!login_success) { stepCheckout._btn_login.removeAttr('disabled'); $('.loading_small', _self._modal_login).hide(); } } }); } }, _openCMS: function(params) { var _self = this; var param = $.extend({}, { id_cms: '' }, params); var data = { url_call: prestashop.urls.pages.order + '?rand=' + new Date().getTime(), is_ajax: true, dataType: 'json', action: 'loadCMS', id_cms: param.id_cms }; var _json = { data: data, beforeSend: function() { _self._loadingBig(true); }, success: function(json) { if (!$.isEmpty(json.content)) { _self._showModal({ title: json.title, content: json.content }); } }, complete: function() { _self._loadingBig(false); } }; $.makeRequest(_json); }, _loadingBig: function(show) { var _self = this; if (show) { _self._element.find('.spsco-loading-lg').show(); } else { _self._element.find('.spsco-loading-lg').hide(); } }, _showModal: function(params) { var _self = this; var option = $.extend({}, { name: 'modal', type: 'normal', title: '', title_icon: '', message: '', content: '', close: true, button_close: false, size: '', callback: '', callback_close: '' }, params); $('#spsco_modal').on('show.bs.modal', function(event) { var modal = $(this) modal.find('.modal-title').text(option.title); modal.find('.modal-body').html(option.content); }), $('#spsco_modal').modal('show'); }, _launchAddress: function() { } } var Fronted = { showModal: function(params) { var param = $.extend({}, { name: 'modal', type: 'normal', title: '', title_icon: '', message: '', content: '', close: true, button_close: false, size: '', callback: '', callback_close: '' }, params); $('#' + param.name).remove(); var windows_height = $(window).height(); var parent_content = ''; if (typeof param.content === 'object') { parent_content = param.content.parent(); } var $modal = $('
').attr({ id: param.name, 'class': 'modal fade', role: 'dialog' }); var $modal_dialog = $('
').attr({ 'class': 'modal-dialog ' + param.size }); var $modal_header = $('
').attr({ 'class': 'modal-header' }); var $modal_content = $('
').attr({ 'class': 'modal-content' }); var $modal_body = $('
').attr({ 'class': 'modal-body' }); var $modal_footer = $('
').attr({ 'class': 'modal-footer' }); var $modal_button_close = $('