/* * 2007-2017 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (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: * http://opensource.org/licenses/afl-3.0.php * 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. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ //global variables var responsiveflag = false; $(document).ready(function(){ highdpiInit(); responsiveResize(); $(window).resize(responsiveResize); if (navigator.userAgent.match(/Android/i)) { var viewport = document.querySelector('meta[name="viewport"]'); viewport.setAttribute('content', 'initial-scale=1.0,maximum-scale=1.0,user-scalable=0,width=device-width,height=device-height'); window.scrollTo(0, 1); } if (typeof quickView !== 'undefined' && quickView) quick_view(); dropDown(); if (typeof page_name != 'undefined' && !in_array(page_name, ['index', 'product'])) { bindGrid(); $(document).on('change', '.selectProductSort', function(e){ if (typeof request != 'undefined' && request) var requestSortProducts = request; var splitData = $(this).val().split(':'); var url = ''; if (typeof requestSortProducts != 'undefined' && requestSortProducts) { url += requestSortProducts ; if (typeof splitData[0] !== 'undefined' && splitData[0]) { url += ( requestSortProducts.indexOf('?') < 0 ? '?' : '&') + 'orderby=' + splitData[0] + (splitData[1] ? '&orderway=' + splitData[1] : ''); if (typeof splitData[1] !== 'undefined' && splitData[1]) url += '&orderway=' + splitData[1]; } document.location.href = url; } }); $(document).on('change', 'select[name="n"]', function(){ $(this.form).submit(); }); $(document).on('change', 'select[name="currency_payment"]', function(){ setCurrency($(this).val()); }); } $(document).on('change', 'select[name="manufacturer_list"], select[name="supplier_list"]', function(){ if (this.value != '') location.href = this.value; }); $(document).on('click', '.back', function(e){ e.preventDefault(); history.back(); }); jQuery.curCSS = jQuery.css; if (!!$.prototype.cluetip) $('a.cluetip').cluetip({ local:true, cursor: 'pointer', dropShadow: false, dropShadowSteps: 0, showTitle: false, tracking: true, sticky: false, mouseOutClose: true, fx: { open: 'fadeIn', openSpeed: 'fast' } }).css('opacity', 0.8); if (typeof(FancyboxI18nClose) !== 'undefined' && typeof(FancyboxI18nNext) !== 'undefined' && typeof(FancyboxI18nPrev) !== 'undefined' && !!$.prototype.fancybox) $.extend($.fancybox.defaults.tpl, { closeBtn : '', next : '', prev : '' }); // change default overlay for fancybox $.extend(true, $.fancybox.helpers.overlay, {defaults : {css : {background: 'rgba(255, 255, 255, 0.95)'}}}); // Close Alert messages $(".alert.alert-danger").on('click', this, function(e){ if (e.offsetX >= 16 && e.offsetX <= 39 && e.offsetY >= 16 && e.offsetY <= 34) $(this).fadeOut(); }); $(document).on('click', '.open_rooms_extra_services_panel', function() { console.log('dasdasd'); var idProduct = $(this).data('id_product'); var idOrder = $(this).data('id_order'); var dateFrom = $(this).data('date_from'); var dateTo = $(this).data('date_to'); var action = $(this).data('action'); $.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: action, dataType: 'json', cache: false, data: { date_from: dateFrom, date_to: dateTo, id_product: idProduct, id_order: idOrder, method: 'getRoomTypeBookingDemands', ajax: true, token: static_token }, success: function(result) { if (result.extra_demands) { $('#rooms_extra_services').html(''); $('#rooms_extra_services').append(result.extra_demands); } $.fancybox({ href: "#rooms_extra_services", autoSize : true, autoScale : true, maxWidth : '100%', 'hideOnContentClick': false, afterClose: function() { if (result.reload) { // reload so that changes prices will reflect everywhere location.reload(); } }, }); }, }); }); }); function highdpiInit() { if (typeof highDPI === 'undefined') return; if(highDPI && $('.replace-2x').css('font-size') == "1px") { var els = $("img.replace-2x").get(); for(var i = 0; i < els.length; i++) { src = els[i].src; extension = src.substr( (src.lastIndexOf('.') +1) ); src = src.replace("." + extension, "2x." + extension); var img = new Image(); img.src = src; img.height != 0 ? els[i].src = src : els[i].src = els[i].src; } } } // Used to compensante Chrome/Safari bug (they don't care about scroll bar for width) function scrollCompensate() { 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); } function responsiveResize() { compensante = scrollCompensate(); if (($(window).width()+scrollCompensate()) <= 767 && responsiveflag == false) { accordion('enable'); accordionFooter('enable'); responsiveflag = true; } else if (($(window).width()+scrollCompensate()) >= 768) { accordion('disable'); accordionFooter('disable'); responsiveflag = false; // if (typeof bindUniform !=='undefined') // bindUniform(); } blockHover(); } function blockHover(status) { var screenLg = $('body').find('.container').width() == 1170; if ($('.product_list').is('.grid')) if (screenLg) $('.product_list .button-container').hide(); else $('.product_list .button-container').show(); $(document).off('mouseenter').on('mouseenter', '.product_list.grid li.ajax_block_product .product-container', function(e){ if (screenLg) { var pcHeight = $(this).parent().outerHeight(); var pcPHeight = $(this).parent().find('.button-container').outerHeight() + $(this).parent().find('.comments_note').outerHeight() + $(this).parent().find('.functional-buttons').outerHeight(); $(this).parent().addClass('hovered').css({'height':pcHeight + pcPHeight, 'margin-bottom':pcPHeight * (-1)}); $(this).find('.button-container').show(); } }); $(document).off('mouseleave').on('mouseleave', '.product_list.grid li.ajax_block_product .product-container', function(e){ if (screenLg) { $(this).parent().removeClass('hovered').css({'height':'auto', 'margin-bottom':'0'}); $(this).find('.button-container').hide(); } }); } function quick_view() { $(document).on('click', '.quick-view:visible, .quick-view-mobile:visible', function(e){ e.preventDefault(); var url = this.rel; var anchor = ''; if (url.indexOf('#') != -1) { anchor = url.substring(url.indexOf('#'), url.length); url = url.substring(0, url.indexOf('#')); } if (url.indexOf('?') != -1) url += '&'; else url += '?'; if (!!$.prototype.fancybox) $.fancybox({ 'padding': 0, 'width': 1087, 'height': 610, 'type': 'iframe', 'href': url + 'content_only=1' + anchor }); }); } function bindGrid() { var storage = false; if (typeof(getStorageAvailable) !== 'undefined') { storage = getStorageAvailable(); } if (!storage) { return; } var view = $.totalStorage('display'); if (!view && (typeof displayList != 'undefined') && displayList) view = 'list'; if (view && view != 'grid') display(view); else $('.display').find('li#grid').addClass('selected'); $(document).on('click', '#grid', function(e){ e.preventDefault(); display('grid'); }); $(document).on('click', '#list', function(e){ e.preventDefault(); display('list'); }); } function display(view) { if (view == 'list') { $('ul.product_list').removeClass('grid').addClass('list row'); $('.product_list > li').removeClass('col-xs-12 col-sm-6 col-md-4').addClass('col-xs-12'); $('.product_list > li').each(function(index, element) { var html = ''; html = '
'; html += '
' + $(element).find('.left-block').html() + '
'; html += '
'; html += '
'+ $(element).find('.product-flags').html() + '
'; html += '
'+ $(element).find('h5').html() + '
'; var rating = $(element).find('.comments_note').html(); // check : rating if (rating != null) { html += '
'+ rating + '
'; } html += '

'+ $(element).find('.product-desc').html() + '

'; var colorList = $(element).find('.color-list-container').html(); if (colorList != null) { html += '
'+ colorList +'
'; } var availability = $(element).find('.availability').html(); // check : catalog mode is enabled if (availability != null) { html += ''+ availability +''; } html += '
'; html += '
'; var price = $(element).find('.content_price').html(); // check : catalog mode is enabled if (price != null) { html += '
'+ price + '
'; } html += '
'+ $(element).find('.button-container').html() +'
'; html += '
' + $(element).find('.functional-buttons').html() + '
'; html += '
'; html += '
'; $(element).html(html); }); $('.display').find('li#list').addClass('selected'); $('.display').find('li#grid').removeAttr('class'); $.totalStorage('display', 'list'); } else { $('ul.product_list').removeClass('list').addClass('grid row'); $('.product_list > li').removeClass('col-xs-12').addClass('col-xs-12 col-sm-6 col-md-4'); $('.product_list > li').each(function(index, element) { var html = ''; html += '
'; html += '
' + $(element).find('.left-block').html() + '
'; html += '
'; html += '
'+ $(element).find('.product-flags').html() + '
'; html += '
'+ $(element).find('h5').html() + '
'; var rating = $(element).find('.comments_note').html(); // check : rating if (rating != null) { html += '
'+ rating + '
'; } html += '

'+ $(element).find('.product-desc').html() + '

'; var price = $(element).find('.content_price').html(); // check : catalog mode is enabled if (price != null) { html += '
'+ price + '
'; } html += '
'+ $(element).find('.button-container').html() +'
'; var colorList = $(element).find('.color-list-container').html(); if (colorList != null) { html += '
'+ colorList +'
'; } var availability = $(element).find('.availability').html(); // check : catalog mode is enabled if (availability != null) { html += ''+ availability +''; } html += '
'; html += '
' + $(element).find('.functional-buttons').html() + '
'; html += '
'; $(element).html(html); }); $('.display').find('li#grid').addClass('selected'); $('.display').find('li#list').removeAttr('class'); $.totalStorage('display', 'grid'); } } function dropDown() { elementClick = '#header .current, #footer .current'; elementSlide = 'ul.toogle_content'; activeClass = 'active'; $(elementClick).on('click', function(e){ e.stopPropagation(); var subUl = $(this).next(elementSlide); if(subUl.is(':hidden')) { subUl.slideDown(); $(this).addClass(activeClass); } else { subUl.slideUp(); $(this).removeClass(activeClass); } $(elementClick).not(this).next(elementSlide).slideUp(); $(elementClick).not(this).removeClass(activeClass); e.preventDefault(); }); $(elementSlide).on('click', function(e){ e.stopPropagation(); }); $(document).on('click', function(e){ e.stopPropagation(); var elementHide = $(elementClick).next(elementSlide); $(elementHide).slideUp(); $(elementClick).removeClass('active'); }); } function accordionFooter(status) { if(status == 'enable') { $('#footer .footer-block h4').on('click', function(e){ $(this).toggleClass('active').parent().find('.toggle-footer').stop().slideToggle('medium'); e.preventDefault(); }) $('#footer').addClass('accordion').find('.toggle-footer').slideUp('fast'); } else { $('.footer-block h4').removeClass('active').off().parent().find('.toggle-footer').removeAttr('style').slideDown('fast'); $('#footer').removeClass('accordion'); } } function accordion(status) { if(status == 'enable') { var accordion_selector = '#right_column .block .title_block, #left_column .block .title_block, #left_column #newsletter_block_left h4,' + '#left_column .shopping_cart > a:first-child, #right_column .shopping_cart > a:first-child'; $(accordion_selector).on('click', function(e){ $(this).toggleClass('active').parent().find('.block_content').stop().slideToggle('medium'); }); $('#right_column, #left_column').addClass('accordion').find('.block .block_content').slideUp('fast'); if (typeof(ajaxCart) !== 'undefined') ajaxCart.collapse(); } else { $('#right_column .block .title_block, #left_column .block .title_block, #left_column #newsletter_block_left h4').removeClass('active').off().parent().find('.block_content').removeAttr('style').slideDown('fast'); $('#left_column, #right_column').removeClass('accordion'); } } function bindUniform() { if (!!$.prototype.uniform) { $("select.form-control,input[type='radio'],input[type='checkbox']").not(".not_uniform").uniform(); } } /*Growl plulin implementation to show notifications on front office*/ function showSuccessMessage(msg) { $.growl.notice({ title: "", message:msg}); } function showErrorMessage(msg) { $.growl.error({ title: "", message:msg}); } function showNoticeMessage(msg) { $.growl.notice({ title: "", message:msg}); } // highlight dates of the selected date range function highlightSelectedDateRange(date, checkIn, checkOut) { if (checkIn || checkOut) { // Lets make the date in the required format var currentDate = date.getDate(); var currentMonth = date.getMonth()+1; if (currentMonth < 10) { currentMonth = '0' + currentMonth; } if (currentDate < 10) { currentDate = '0' + currentDate; } dmy = date.getFullYear() + "-" + currentMonth + "-" + currentDate; if (checkIn) { checkIn = checkIn.split("-"); checkIn = (checkIn[2]) + '-' + (checkIn[1]) + '-' + (checkIn[0]); } if (checkOut) { checkOut = checkOut.split("-"); checkOut = (checkOut[2]) + '-' + (checkOut[1]) + '-' + (checkOut[0]); } if (dmy == checkIn || dmy == checkOut) { return [true, 'selectedCheckedDate', '']; } else if ((checkIn && checkOut) && (dmy >= checkIn && dmy <= checkOut)) { return [true, 'in-select-date-range', '']; } } return [true, '']; }