var cart = { _link_catalog : _link_catalog_pizza + 'pizza.html', _initCountButton : function (_button) { _button.click(function() { var $button = $(this); var oldValue = $button.parent().find("input").val(); var newVal = 0; if ($button.hasClass('inc')) { newVal = parseFloat(oldValue) + 1; // AJAX save would go here } else { // Don't allow decrementing below zero if (oldValue >= 1) { newVal = parseFloat(oldValue) - 1; // AJAX save would go here } } var input = $button.parent().find("input") input.val(newVal); if (input.hasClass('input_dobavka') || input.hasClass('countModify')){ input.keyup(); } if (input.hasClass('countCartPizza')){ input.keyup(); } }) }, _initPopup : function () { $('.popup').css({ 'top': $(document).scrollTop() + 60,//$(window).height()/2 - $('.popup').height()/2 }); $('.overlay').click(function(){ $('.popup_preorder').remove(); return false; }); $(".popup div.count").each(function(){ if ($('.countButton', this).length){ } else { $(this).append('
'); cart._initCountButton($('.inc', this)); cart._initCountButton($('.dec', this)); var val = $("input", this).val(); if (!val){ $("input", this).val(0); } } }) }, /** * Форма модифицированного заказа */ _initModifyButton: function (name) { var _this = this; $('#lastTab').unbind('click'); $('#lastTab').click(function () { var _this_href = this, _pizzaName = name || $(this).attr('rel'), _pizzaData = JSON.parse($(this)[0].dataset.pizzaselected); $.get(cart._link_catalog, { action: 'pizzaCartModify', ajax: 1, pizza_name: _pizzaName, type: _pizzaData.selectedPizzaType, size: _pizzaData.selectedPizzaSize, rand: Math.random() }, function (data) { $('.popup_preorder').remove(); $('body').append(data); _this._initPopup(); _this._initModifyButton(); _this._initOrderButton(); _this._popupModifyHandler(); }); return false; }) $(".popup div.count").each(function(){ if ($('.countButton', this).length){ } else { $(this).append(''); cart._initCountButton($('.inc', this)); cart._initCountButton($('.dec', this)); var val = $("input", this).val(); if (!val){ $("input", this).val(0); } } }) }, /** * Кнопка заказа пиццы */ _initOrderButton : function () { var _this = this; $('.orderPizzaButton, #firstTab').unbind('click'); $('.orderPizzaButton, #firstTab').click(function () { var _this_href = this, _pizzaData = JSON.parse($(this)[0].dataset.pizzaselected); $.get(cart._link_catalog, { action: 'pizzaCart', ajax: 1, pizza_name: _pizzaData.name, type: _pizzaData.selectedPizzaType, size: _pizzaData.selectedPizzaSize, rand: Math.random() }, function (data) { $('.popup_preorder').remove(); $('body').append(data); _this._initPopup(); _this._initPizzaSelector(); _this._popupQuickHandler(); _this._initModifyButton(); _this._initOrderButton(); }); return false; }) $(".content div.count").each(function(){ if ($('.countButton', this).length){ } else { $(this).append(''); cart._initCountButton($('.inc', this)); cart._initCountButton($('.dec', this)); var val = $("input", this).val(); if (!val){ $("input", this).val(0); } } }) }, _popupModifyHandler : function (order_id) { { // вычисление цены var _this = this; var _calcPriceModify = function () { console.log('_calcPriceModify'); var _selOption = $('select[name=article] option:selected'), _count = parseInt($('#countModify').val()) > 0 ? parseInt($('#countModify').val()) : 1, _price = parseFloat(_selOption.attr('rel')), _priceTakeaway = parseFloat(_selOption.data('price-takeaway')); console.log(_selOption.attr('rel')); var _itog = _price * _count, _itogTakeaway = _priceTakeaway * _count; $('.input_dobavka').each(function () { var _val = parseInt($(this).val()); if (_val > 0 && _val < 100) { //_price += parseFloat($(this).attr('rel')) * _val; //_priceTakeaway += parseFloat($(this).attr('rel')) * _val; _itog += parseFloat($(this).attr('rel')) * _val; _itogTakeaway += parseFloat($(this).attr('rel')) * _val; } }); //var _itog = _price * _count, // _itogTakeaway = _priceTakeaway * _count; $('#price_result').html(priceBYN(_itog)); $('#price_result_takeaway').html(priceBYN(_itogTakeaway)); } $('select[name=article]').change(_calcPriceModify); $('.input_dobavka, #countModify').keyup(_calcPriceModify); _calcPriceModify(); } { // отправка формы $('#modifyOrderBtn').click(function () { var _orderData = {}; _orderData.article = $('input[name=article]').val() + '-' + $('select[name=article]').val(); _orderData.comment = $('#comment_modify').val(); _orderData.dobavki = []; _orderData.count = parseInt($('#countModify').val()); _orderData.order_id = order_id; $('.input_dobavka').each(function () { var _val = parseInt($(this).val()); if (_val > 0 && _val < 100) { _orderData.dobavki.push({ id: $(this).attr('id'), count: _val }); } }); _this._sendOrder(_orderData, 'modifyPizza'); return false; }); } }, _popupQuickHandler : function() { var _this = this; $('#quickOrderBtn').click(function () { var _orderData = []; $('.pizza_num').each(function () { var _value = parseInt($(this).val()); if (_value > 0) { _orderData.push({ id : $(this).attr('rel'), count : _value }); } }); _this._sendOrder(_orderData, 'pizza'); return false; }); }, _sendOrder : function(orderData, type) { var _this = this; $.post(_link_cart, {order_data: orderData, type: type, rand: Math.random()}, function (data) { $('.popup_preorder .popup').animate({ left: $('#basket_placeholder').offset().left + $('#basket_placeholder').width(), top: $('#basket_placeholder').offset().top, width: 0, height: 0, opacity: 0 }, 500, function () { $('.popup_preorder').fadeOut(); }); _this._reloadCart(); }); }, _reloadCart : function () { var _this = this; $.get(_link_cart, {ajax: 1, action: 'GetCart', url: location.href, rand: Math.random()}, function (data) { var _is_hidden = $('.basketOuter').is('.basketHidden'); $('.basket_placeholder').html(data); if ($.isMobile) { console.log( $('.bs-empty-col', data ).html() === undefined ); if ( $('.bs-empty-col', data ).html() === undefined ) { $('.basket-top--mobile .bs-empty-col').hide(); $('.basket-top--mobile .bs-price-col').html( $('.bs-price-col', data ) ).show(); $('.basket-top--mobile .openClose').show(); } else { $('.basket-top--mobile .bs-empty-col').show(); $('.basket-top--mobile .openClose').hide(); $('.basket-top--mobile .bs-price-col').hide(); } } if (false == _is_hidden && 0 == $('.basketEmpty').length) { $('.basketOuter').removeClass('basketHidden'); } _this._initCartPanel(); }); }, _setHeightShadowCart : function () { $('.itemsLeftShadow').height($('.basket').height() - 50); }, _initPizzaSelector : function () { window.bootPizzaSelector(); }, _initCartPanel : function () { var _this = this, _timer = null; _this._setHeightShadowCart(); $('.openClose').unbind('click').click(function () { $('#basket_placeholder, body').toggleClass('basketFull'); _this._setHeightShadowCart(); return false; }); $('.countCartPizza').unbind('keyup').keyup(function () { var __this = this; clearTimeout(_timer); _timer = setTimeout(function () { var _val = parseInt($(__this).val()), _parents = $(__this).parents('.item'); if (_val > 0 && _val < 100) { _parents.addClass('ajax'); $.post(_link_cart, {ajax: 1, action: 'UpdatePizza', url: location.href, count: _val, id: $(__this).attr('rel'), rand: Math.random()}, function (data) { $('.basket_placeholder').html(data); $('.basketOuter').removeClass('basketHidden'); if ($.isMobile) { if ( $('.bs-empty-col', data ).html() === undefined ) { $('.basket-top--mobile .bs-empty-col').hide(); $('.basket-top--mobile .bs-price-col').html( $('.bs-price-col', data ) ).show(); $('.basket-top--mobile .openClose').show(); } else { $('.basket-top--mobile .bs-empty-col').show(); $('.basket-top--mobile .openClose').hide(); $('.basket-top--mobile .bs-price-col').hide(); $('body').toggleClass('basketFull'); $('#basket_placeholder').toggleClass('basketFull'); } } _this._initCartPanel(); }); } }, 1000); }); $('.basketOuter .del').unbind('click').click(function () { var _parents = $(this).parents('.item'); _parents.addClass('ajax'); $.post(_link_cart, {ajax: 1, action: 'RemovePizza', url: location.href, id: $(this).attr('rel'), rand: Math.random()}, function (data) { _parents.fadeOut(function () { var _is_hidden = $('.basketOuter').is('.basketHidden'); $('.basket_placeholder').html(data); if (false == _is_hidden && 0 == $('.basketEmpty').length) { $('.basketOuter').removeClass('basketHidden'); } if ($.isMobile) { if ( $('.bs-empty-col', data ).html() === undefined ) { $('.basket-top--mobile .bs-empty-col').hide(); $('.basket-top--mobile .bs-price-col').html( $('.bs-price-col', data ) ).show(); $('.basket-top--mobile .openClose').show(); } else { $('.basket-top--mobile .bs-empty-col').show(); $('.basket-top--mobile .openClose').hide(); $('.basket-top--mobile .bs-price-col').hide(); $('body').toggleClass('basketFull'); $('#basket_placeholder').toggleClass('basketFull'); } } _this._initCartPanel(); if ( $('#mapBlock').length ) { posMap(); } }); }); return false; }); /* возможность изменить модифицированную пиццу */ $('.basketOuter .title a').unbind('click').click(function () { var _order_id = $(this).attr('data-id'); if ($(this).attr('rel')) { // модифицированные продукты $.get(cart._link_catalog, {action: 'productsCartModify', order_id: _order_id, ajax: 1, product_name: $(this).attr('rel'), rand: Math.random()}, function (data) { $('.popup_preorder').remove(); $('body').append(data); _this._initPopup(); _this._popupQuickHandler(); _this._popupOrderModifyProductHandler(_order_id); _this._initOrderButton(); }); } else { // пиццы $.get(cart._link_catalog, {action: 'pizzaCartModify', order_id: _order_id, ajax: 1, pizza_name: $(this).html(), rand: Math.random()}, function (data) { $('.popup_preorder').remove(); $('body').append(data); _this._initPopup(); _this._initModifyButton(); _this._popupModifyHandler(_order_id); _this._initOrderButton(); }); } return false; }) $(".basket div.count").each(function(){ if ($('.countButton', this).length){ } else { $(this).append(''); cart._initCountButton($('.inc', this)); cart._initCountButton($('.dec', this)); var val = $("input", this).val(); if (!val){ $("input", this).val(0); } } }); this._setOrderPageData(); }, _setOrderPageData: function () { $('.remove_me').remove(); $('input[name=take_order_varians][value=1]').next().before(' – ' + $('#itogo_delivery').text() + ''); $('input[name=take_order_varians][value=2]').next().before(' – ' + $('#itogo_takeaway').text() + ''); if (!$('input[name=take_order_varians]:checked').length) { $('input[name=take_order_varians]:first').attr('checked', true); } if ( $('input[name=take_order_varians]:checked').val() == 2 ) { $('#mapBlock').hide(); $('#minOrderSum').val( '0' ); $('.row_payment_type input:radio:first').removeClass('disabled').prop('disabled', false); } $('#basket_sum_all .price_byn').html( $('#itogo_delivery').text() ); $('#basket_sum_all .price_byn_out').html( $('#itogo_takeaway').text() + ' (навынос)'); $('input[name=take_order_varians]:checked').click(); }, _initOrderCatalogButton: function () { var _this = this; $('.orderProductsButton').unbind('click').click(function () { var _count = $('.products_count', $(this).parents('.item:first')).val(); if (_count > 0 && _count < 100) { _this._sendOrder({id: $(this).attr('rel'), count: _count}, 'product'); $(this).fadeOut(200).fadeIn(200); } else { alert('Введите корректное количество'); } return false; }) }, /** * Заказ модифицированного продукта (все кроме пиццы) */ _initOrderModifyProductButton : function () { var _this = this; $('.orderProductsDobavkiButton').unbind('click'); $('.orderProductsDobavkiButton').click(function () { var _this_href = this, _productID = $(this).attr('rel'), _count_modify = $('.products_count', $(this).parents('.item:first')).val(); $('.products_count', $(this).parents('.item:first')).val(1); $.get(cart._link_catalog, {action: 'productsCartModify', ajax: 1, product_name: _productID, rand: Math.random(), count:_count_modify}, function (data) { $('.popup_preorder').remove(); $('body').append(data); _this._initPopup(); _this._popupQuickHandler(); _this._popupOrderModifyProductHandler(); _this._initOrderButton(); }); return false; }) }, _popupOrderModifyProductHandler : function (order_id) { { // вычисление цены var _this = this; var _calcPriceModify = function () { var _count = parseInt($('#countModify').val()) > 0 ? parseInt($('#countModify').val()) : 1, _price = parseFloat($('#price_product').val()); $('.input_dobavka').each(function () { var _val = parseFloat($(this).val()); if (_val > 0 && _val < 100) { _price += parseFloat($(this).attr('rel')) * _val; } }); $('#price_result').html(priceBYN(_price * _count)); } $('select[name=article]').change(_calcPriceModify); $('.input_dobavka, #countModify').keyup(_calcPriceModify); _calcPriceModify(); } { // отправка формы $('#modifyOrderBtn').click(function () { var _orderData = {}; _orderData.article = $('input[name=article]').val(); _orderData.comment = $('#comment_modify').val(); _orderData.dobavki = []; _orderData.count = parseInt($('#countModify').val()); _orderData.order_id = order_id; $('.input_dobavka').each(function () { var _val = parseInt($(this).val()); if (_val > 0 && _val < 100) { _orderData.dobavki.push({ id: $(this).attr('id'), count: _val }); } }); _this._sendOrder(_orderData, 'modifyPizza'); return false; }); } }, _initProductsGroupSelect: function() { var _this; $('select[name=group_propduct_select]').unbind('change').change(function ( event ) { event.preventDefault(); var __this = this; $.get(null, {action: 'getProductCard', ajax: 1, product_id: $(this).val(), rand: Math.random()}, function (data) { $(__this).parents('.item').html($('.item', data).html()); cart.init(); }); }) }, _posTotalBar: function() { var $bar = $('#basket_sum_all'); var $gotop = $bar.find('.js-gotop'); var body = $('html, body'); if (!$('.pageTitle').length > 0) return false; var target = $('.pageTitle').offset().top; //body.scrollTop(0); $bar.stick_in_parent(); $gotop.on('click', function(event) { event.preventDefault(); body.stop().animate({scrollTop:target}, 500, 'swing', function() { $bar.removeClass('js-is-sticky'); }); }); }, init : function () { this._initOrderButton(); this._initOrderCatalogButton(); this._initOrderModifyProductButton(); this._initCartPanel(); this._initProductsGroupSelect(); if ($.isDesktop) this._posTotalBar(); if ($.isMobile) { this._reloadCart(); } } } $(function () { function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } var $minPhrase = $('.minPhrase'); $minPhrase.hide(); cart.init(); if ( $('#mapBlock').length && $('#order_form select[name="city"]').length ) { ymaps.ready(map_init); } else { if ( !$('#order_form select[name="city"]').length ) { $('#mapBlock').hide(); } } function map_init() { var cities = [ { "name": "Минск", "map_file": "minsk.json", "latitude": 27.576223, "longitude": 53.890364, "minPrice_z1": "25", "minPrice_z2": "15", "deliveryLink": "https://www.pizzatempo.by/terms/#map" }, { "name": "Могилев", "map_file": "mogilev.json", "latitude": 30.2815376, "longitude": 53.883542, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://mogilev.pizzatempo.by/terms/#mapDeliveryMogilev" }, { "name": "Молодечно", "map_file": "molodechno.json", "latitude": 26.7844843, "longitude": 54.3113576, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://molodechno.pizzatempo.by/terms/#mapDeliveryMolodechno" }, { "name": "Островец", "map_file": "ostrovec.json", "latitude": 25.958338, "longitude": 54.615366, "minPrice_z1": "25", "minPrice_z2": "12", "deliveryLink": "https://ostrovec.pizzatempo.by/terms/#mapDeliveryOstrovec" }, { "name": "Гродно", "map_file": "grodno.json", "latitude": 23.827738, "longitude": 53.675854, "minPrice_z1": "25", "minPrice_z2": "12", "deliveryLink": "https://grodno.pizzatempo.by/terms/#mapDeliveryGrodno" }, { "name": "Гродно-Васильки", "map_file": "grodno.vasilki.json", "latitude": 23.827738, "longitude": 53.675854, "minPrice_z1": "12", "minPrice_z2": "25", "deliveryLink": "https://grodno.vasilki.by/terms/#mapDeliveryMozyr" }, { "name": "Минск-Васильки", "map_file": "minsk.vasilki.json", "latitude": 27.576223, "longitude": 53.890364, "minPrice_z1": "25", "minPrice_z2": "13", "deliveryLink": "https://minsk.vasilki.by/terms/#mapDeliveryMinskVasilki" }, { "name": "Могилев-Васильки", "map_file": "mogilev.vasilki.json", "latitude": 30.2815376, "longitude": 53.883542, "minPrice_z1": "25", "minPrice_z2": "12", "deliveryLink": "https://mogilev.vasilki.by/terms/#mapDeliveryMogilevVasilki" }, { "name": "Мозырь", "map_file": "mozyr.pizzatempo.json", "latitude": 29.267301, "longitude": 52.049019, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://mozyr.vasilki.by/terms/#mapDeliveryMozyr" }, { "name": "Мозырь-Васильки", "map_file": "mozyr.vasilki.json", "latitude": 29.267301, "longitude": 52.049019, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://mozyr.vasilki.by/terms/#mapDeliveryMozyr" }, { "name": "Гомель-Васильки", "map_file": "gomel.vasilki.json", "latitude": 31.014820, "longitude": 52.421200, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://gomel.vasilki.by/terms/#mapDeliveryGomelVasilki" }, { "name": "Гомель", "map_file": "gomel.pizzatempo.json", "latitude": 31.014820, "longitude": 52.421200, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://gomel.pizzatempo.json/terms/#mapDeliveryGomel" }, { "name": "Солигорск-Васильки", "map_file": "soligorsk.vasilki.json", "latitude": 27.52695, "longitude": 52.78851, "minPrice_z1": "15", "minPrice_z2": "15", "deliveryLink": "https://soligorsk.vasilki.by/terms/#mapDeliverySoligorskVasilki" }, { "name": "Солигорск", "map_file": "soligorsk.pizzatempo.json", "latitude": 27.52695, "longitude": 52.78851, "minPrice_z1": "12", "minPrice_z2": "12", "deliveryLink": "https://soligorsk.vasilki.by/terms/#mapDeliverySoligorsk" } ]; var _cookieCity = getCookie('city'); var cityData = {}; // console.log('+++', _cookieCity); cities.forEach(function(item, i, arr) { if ( arr[i].name == _cookieCity ) { cityData = arr[i]; } }); if ( !cityData ) { cityData = { "name": "Минск", "map_file": "minsk.json", "latitude": 27.576223, "longitude": 53.890364, "minPrice_z1": "25", "minPrice_z2": "15", "deliveryLink": "https://www.pizzatempo.by/terms/#map" } } $('#minOrderSum').val(cityData.minPrice_z2); var firstGeoObject; var wto; $('#zoneDeliveryLink').attr( "href", cityData.deliveryLink ); myMap = new ymaps.Map('map', { center: [cityData.latitude, cityData.longitude], //53.902496, 27.561481 zoom: 10, controls: ['zoomControl', 'fullscreenControl'] }), deliveryPoint = new ymaps.GeoObject({ geometry: {type: 'Point'}, properties: {iconCaption: 'Адрес'} }, { preset: 'islands#blackDotIconWithCaption', draggable: false, iconCaptionMaxWidth: '215' }); myMap.geoObjects.add(deliveryPoint); $.ajax({ url: _root + 'download_files/zones/'+cityData.map_file, dataType: 'json', success: onZonesLoad }); posMap(); function onZonesLoad(json) { // Добавляем зоны на карту. deliveryZones = ymaps.geoQuery(json).addToMap(myMap); // Задаём цвет и контент балунов полигонов. deliveryZones.each(function (obj) { var color = obj.properties.get('fill'); if ( color == "#ed4543" ){ minPrice = cityData.minPrice_z1; } else { minPrice = cityData.minPrice_z2; } obj.options.set({fillColor: color, fillOpacity: 0.4, openBalloonOnClick: false }); obj.properties.set('balloonContent', obj.properties.get('description')); obj.properties.set('balloonContentHeader', 'Доставка осуществляется при сумме заказа от: ' + minPrice + ' р.') }); function highlightResult(obj) { $('.row_payment_type input:radio:first').removeClass('disabled').prop('disabled', false); var coords = obj.geometry.getCoordinates(), // Находим полигон, в который входят переданные координаты. polygon = deliveryZones.searchContaining(coords).get(0); // Сохраняем координаты переданного объекта. if (polygon) { deliveryPoint.options.set('visible', true); // Уменьшаем прозрачность всех полигонов, кроме того, в который входят переданные координаты. deliveryZones.setOptions('fillOpacity', 0.1); polygon.options.set('fillOpacity', 0.6); // Перемещаем метку с подписью в переданные координаты и перекрашиваем её в цвет полигона. deliveryPoint.geometry.setCoordinates(coords); deliveryPoint.options.set('iconColor', polygon.options.get('fillColor')); myMap.setCenter( coords, 12 ); myMap.panTo( coords, {checkZoomRange:true} ); setData(obj); } else { deliveryPoint.options.set('visible', true); // Если переданные координаты не попадают в полигон, то задаём стандартную прозрачность полигонов. deliveryZones.setOptions('fillOpacity', 0.4); // Перемещаем метку по переданным координатам. deliveryPoint.geometry.setCoordinates(coords); // Задаём контент балуна и метки. deliveryPoint.properties.set({ iconCaption: 'Доставка не доступна', balloonContent: '', balloonContentHeader: '' }); // Перекрашиваем метку в чёрный цвет. deliveryPoint.options.set('iconColor', 'black'); myMap.setCenter( coords, 12 ); myMap.panTo( coords, {checkZoomRange:true} ); $('#minOrderSum').val( '0' ); $('#order_btn').addClass('disabled').prop('disabled', true); $minPhrase.fadeIn().html('К сожалению, мы не осуществляем доставку по указанному адресу. Уточните, пожалуйста, возможность доставки по Вашему адресу по телефону 7773.'); //myMap.setBounds( myMap.geoObjects.getBounds(), {checkZoomRange:true, adjustZoomOnTypeChange:true}).then(function(){ if(myMap.getZoom() > 15) myMap.setZoom(15);} ); } function setData(obj){ var address = [obj.getThoroughfare(), obj.getPremiseNumber(), obj.getPremise()].join(' '); if (address.trim() === '') { address = obj.getAddressLine(); } if ( polygon.properties.get('fill') == "#ed4543" ){ minPrice = cityData.minPrice_z1; } else { minPrice = cityData.minPrice_z2; } deliveryPoint.properties.set({ iconCaption: address, balloonContent: '', balloonContentHeader: '' //balloonContent: address, //balloonContentHeader: 'Минимальная сумма заказа: ' + minPrice + ' р.' }); $('#minOrderSum').val( minPrice ); $minPhrase.fadeIn().html('Доставка по указанному адресу осуществляется при сумме заказа от ' + minPrice + ' руб.'); $('#order_form #order_btn').removeClass('disabled').prop('disabled', false); //myMap.setBounds( myMap.geoObjects.getBounds(), {checkZoomRange:true, adjustZoomOnTypeChange:true}).then(function(){ if(myMap.getZoom() > 15) myMap.setZoom(15);} ); } } function changeStreetHouse() { _city = $('select[name="city"]').val(); _street = $('input[name="street"]').val(); _house = $('input[name="house"]').val(); if ( _house != '' && _street != '' && $('input[name=take_order_varians]:checked').val() != 2 ) { clearTimeout(wto); wto = setTimeout(function() { ymaps.geocode( 'Беларусь, ' + _city + ' ' + _street + ', ' + _house, { results: 1 }).then(function (res) { // Выбираем первый результат геокодирования. var firstGeoObject = res.geoObjects.get(0), coords = firstGeoObject.geometry.getCoordinates(), bounds = firstGeoObject.properties.get('boundedBy'), //street = firstGeoObject.getAddressLine(), street = firstGeoObject.properties.get('text'), thoroughfare = firstGeoObject.getThoroughfare(), building = firstGeoObject.getPremiseNumber(), precision = firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.precision'); if ( (!street && !building) || 'other' == precision) { console.log('Адрес не найден'); deliveryZones.setOptions('fillOpacity', 0.4); deliveryPoint.options.set('visible', false); $('#minOrderSum').val( cityData.minPrice_z1 ); $('.row_payment_type input:radio:first').addClass('disabled').prop('disabled', true); $('#order_form #order_btn').removeClass('disabled').prop('disabled', false); $minPhrase.fadeIn().html('Указанный адрес не определен. Попробуйте изменить критерий поиска или свяжитесь, пожалуйста, со специалистами call-центра по телефону 7773 для определения адреса доставки.'); } else { console.log ( street ); // console.log ( firstGeoObject.getThoroughfare() ); console.log ( firstGeoObject.properties.get('metaDataProperty.GeocoderMetaData.precision') ) // Добавляем первый найденный геообъект на карту. //myMap.geoObjects.add(firstGeoObject); // Масштабируем карту на область видимости геообъекта. //myMap.setBounds(bounds, { // Проверяем наличие тайлов на данном масштабе. // checkZoomRange: true //}); highlightResult( firstGeoObject ); /* var myPlacemark = new ymaps.Placemark(coords, { iconContent: firstGeoObject.properties.get('name'), balloonContent: street + ', ' + building }, { preset: 'islands#redStretchyIcon' }); */ } }); }, 600); } } $('select[name="user_address"]').on('change', function (e) { if ( $(this).val() != -1 ) { changeStreetHouse(); } else { $('#minOrderSum').val( '0' ); myMap.setCenter( [cityData.latitude, cityData.longitude], 10 ); deliveryZones.setOptions('fillOpacity', 0.4); deliveryPoint.options.set('visible', false); } }); $('select[name="city"], input[name="house"], input[name="street"]' ).on('input', function (e) { changeStreetHouse(); }); $('input[name="take_order_varians"]').on( 'click', function () { if ( $(this).val() == 2 ) { myMap.setCenter( [cityData.latitude, cityData.longitude], 10 ); deliveryZones.setOptions('fillOpacity', 0.4); deliveryPoint.options.set('visible', false); $('#mapBlock').hide(); $('.row_payment_type input:radio:first').removeClass('disabled').prop('disabled', false); } else { changeStreetHouse(); $('#mapBlock').show(); posMap(); } }); changeStreetHouse(); } } if ($('select[name=user_address]').length) { $('select[name=user_address]').change(function () { if ($(this).val() == -1) { $('select[name=city], input[name=street], input[name=house], input[name=room], input[name=porch], input[name=floor]') .val('') .removeClass('disabled error') .removeAttr('disabled'); } else { var _obj = unserialize($(this).val()); $('select[name=city]').val(_obj['city']); $('input[name=street]').val(_obj['street']); if ( _obj['street'] ){ $('.row_street .error').hide(); } $('input[name=house]').val(_obj['house']); if ( _obj['house'] ){ $('.row_house .error').hide(); } $('input[name=room]').val(_obj['room']); if ( _obj['room'] ){ $('.row_room .error').hide(); } $('input[name=porch]').val(_obj['porch']); if ( _obj['porch'] ){ $('.row_porch .error').hide(); } $('input[name=floor]').val(_obj['floor']); $('select[name=city], input[name=street], input[name=house], input[name=room], input[name=porch], input[name=floor]') .addClass('disabled') .attr('disabled', 'disabled'); } }); $('select[name=user_address]').change(); } $('#order_form form').on('submit', function () { _minOrderSumFromAddr = $('#minOrderSum').val(); _currentOrderSum = $('#order_form .checkout-price.s_o .price_byn').data('price'); if ( _currentOrderSum < _minOrderSumFromAddr ) { $('select[name=city], input[name=street], input[name=house], input[name=room], input[name=porch], input[name=floor]').removeAttr('disabled'); $.alert('Доставка по указанному адресу осуществляется при сумме заказа от ' + _minOrderSumFromAddr + 'руб. Для осуществления доставки дополните, пожалуйста, заказ на сумму ' + Math.round10( _minOrderSumFromAddr - _currentOrderSum, -2 ) + ' руб. , или воспользуйтесь самовывозом.', 'Ошибка'); return false; } else { $('select[name=city], input[name=street], input[name=house], input[name=room], input[name=porch], input[name=floor]').removeAttr('disabled'); return true; } }) $('#go_to_order').click(function (event) { event.preventDefault(); // var _cloned = $(this).clone().appendTo('body'); var _link = $(this).attr('href'); // if ($(this).parents('.basketHidden').length) { // _cloned.wrap(''); // } // _cloned.css({ // top: $(this).offset().top, // left: $(this).offset().left // }); // $(this).hide(); // $('body').css('overflow-x', 'hidden'); // $('span', _cloned).animate({ // right: -400 // }, 1500, function () { // document.location.href = _link; // }); // _cloned.fadeOut(); // setTimeout(function(){document.location.href = _link;},1500); return false; }); $('.move_to_cart a').click(function () { $.post(_link_cart, {action: 'reorder', ajax: 1, id: $(this).attr('rel'), rand: Math.random()}, function (data) { cart._reloadCart(); //alert(data); }); return false; }); setInterval(function () { // cart._reloadCart(); }, 30 * 1000); // раз в 30 секунд перегружаем корзину function decimalAdjust(type, value, exp) { // Если степень не определена, либо равна нулю... if (typeof exp === 'undefined' || +exp === 0) { return Math[type](value); } value = +value; exp = +exp; // Если значение не является числом, либо степень не является целым числом... if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { return NaN; } // Сдвиг разрядов value = value.toString().split('e'); value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); // Обратный сдвиг value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); } // Десятичное округление к ближайшему if (!Math.round10) { Math.round10 = function(value, exp) { return decimalAdjust('round', value, exp); }; } }); function posMap() { if ($.isDesktop) { // var y = $('#order_form .row_city .select').position().top; // $('#mapBlock').css('top', y); } }