/**
 * 2007-2020 PrestaShop and Contributors
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * https://opensource.org/licenses/AFL-3.0
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * @author    PrestaShop SA <contact@prestashop.com>
 * @copyright 2007-2020 PrestaShop SA and Contributors
 * @license   https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
 * International Registered Trademark & Property of PrestaShop SA
 */

/**
 * This module exposes an extension point through `showModal` function.
 *
 * If you want to customize the way the modal window is displayed, you need to do:
 *
 * prestashop.blockcart = prestashop.blockcart || {};
 * prestashop.blockcart.showModal = function myOwnShowModal (modalHTML) {
 *   // your own code
 *   // please not that it is your responsibility to handle the modal "close" behavior
 * };
 *
 * Warning: your custom JavaScript needs to be included **before** this file.
 * The safest way to do so is to place your "override" inside the theme main JavaScript file.
 *
 */

$(document).ready(function () {
  //console.log('override js shopping cart ok');
  prestashop.blockcart = prestashop.blockcart || {};

  var showModal =
    prestashop.blockcart.showModal ||
    function (modal) {
      var $body = $('body');
      $body.append(modal);
      $body.one('click', '#blockcart-modal', function (event) {
        if (event.target.id === 'blockcart-modal') {
          $(event.target).remove();
        }
      });
    };

  prestashop.on('updateCart', function (event) {
    var refreshURL = $('.blockcart').data('refresh-url');
    var requestData = {};
    if (
      event &&
      event.reason &&
      typeof event.resp !== 'undefined' &&
      !event.resp.hasError
    ) {
      requestData = {
        id_customization: event.reason.idCustomization,
        id_product_attribute: event.reason.idProductAttribute,
        id_product: event.reason.idProduct,
        action: event.reason.linkAction,
      };
    }
    if (event && event.resp && event.resp.hasError) {
      prestashop.emit('showErrorNextToAddtoCartButton', {
        errorMessage: event.resp.errors.join('<br/>'),
      });
    }
    $.post(refreshURL, requestData)
      .then(function (resp) {
        if($(window).width() > 983){
          //console.log('passe bureau');
          var html = $('<div />').append($.parseHTML(resp.preview));
          $('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
        } else {
          //console.log('passe mobile');
          var html = $.parseHTML(resp.preview);
          mobileCart = "";
          html.map(function(data){
            if(data.id === "menu-shopBag"){
              mobileCart = data.innerHTML;
            }
          })
          $('#menu-shopBag').html(mobileCart);
          reset();
        }
        

        if (resp.modal) {
          showModal(resp.modal);
        }
      })
      .fail(function (resp) {
        prestashop.emit('handleError', {
          eventType: 'updateShoppingCart',
          resp: resp,
        });
      });
  });
});

/**
 * Fonction qui réinscrit les évènements des éléments du menu mobile après avoir été réécrit
 */
function reset() {
  $('#close-menu-shopBag').click(function () {
    $('#menu-shopBag').toggleClass('active');
  });

  var bsDefaults = {
      offset: false,

      overlay: true,

      width: '100%',
    },
    bsMain = $('.bs-offset-main'),
    bsOverlay = $('.bs-canvas-overlay');

  $('[data-toggle="canvas"][aria-expanded="false"]').on('click', function () {
    var canvas = $(this).data('target'),
      opts = $.extend({}, bsDefaults, $(canvas).data()),
      prop = $(canvas).hasClass('bs-canvas-right')
        ? 'margin-right'
        : 'margin-left';

    if (opts.width === '100%') opts.offset = false;

    $(canvas).css('width', opts.width);

    if (opts.offset && bsMain.length) bsMain.css(prop, opts.width);

    $(canvas + ' .bs-canvas-close').attr('aria-expanded', 'true');

    $('[data-toggle="canvas"][data-target="' + canvas + '"]').attr(
      'aria-expanded',
      'true'
    );

    if (opts.overlay && bsOverlay.length) bsOverlay.addClass('show');

    return false;
  });

  $('.bs-canvas-close, .bs-canvas-overlay').on('click', function () {
    var canvas, aria;

    $('#menu-mobile').removeClass('active');

    $('#menu-customer-signin').removeClass('active');

    $('#menu-search').removeClass('active');

    $('#menu-shopBag').removeClass('active');

    if ($(this).hasClass('bs-canvas-close')) {
      canvas = $(this).closest('.bs-canvas');

      aria = $(this).add(
        $('[data-toggle="canvas"][data-target="#' + canvas.attr('id') + '"]')
      );

      if (bsMain.length)
        bsMain.css(
          $(canvas).hasClass('bs-canvas-right')
            ? 'margin-right'
            : 'margin-left',
          ''
        );
    } else {
      canvas = $('.bs-canvas');

      aria = $('.bs-canvas-close, [data-toggle="canvas"]');

      if (bsMain.length)
        bsMain.css({
          'margin-left': '',

          'margin-right': '',
        });
    }

    canvas.css('width', '');

    aria.attr('aria-expanded', 'false');

    if (bsOverlay.length) bsOverlay.removeClass('show');

    return false;
  });
}
