var thelastofor = 'zeroorders';
var datajso = {"type":"FeatureCollection","metadata":{"name":"Ростов-на-Дону – для доставки","creator":"Yandex Map Constructor"},"features":[{"type":"Feature","id":0,"geometry":{"type":"Polygon","coordinates":[[[39.549167707618935,47.225804126101316],[39.558653613835425,47.21767871819853],[39.585645379829025,47.20569172429896],[39.60775686045875,47.19216186141886],[39.606452981633005,47.15372975732574],[39.61644404759124,47.09237389893102],[39.635018182397125,47.079281763878406],[39.747814620117,47.0705704772688],[39.81304594335916,47.09777328134764],[39.87278410253887,47.1254307589003],[39.877075636962665,47.1311713882308],[39.866260970214626,47.204806962158564],[39.86239858923318,47.23123917748557],[39.935097182372814,47.28724681390628],[39.93213602362039,47.29311583629893],[39.92565580664035,47.30067744124441],[39.924196684936256,47.30485191522438],[39.923939192870755,47.31549094497678],[39.91622515974389,47.31651241196848],[39.91344639120446,47.31664374199411],[39.9126631861721,47.31737334726706],[39.90973421392783,47.31727120313906],[39.81307812986706,47.331686152411535],[39.74283092465945,47.332532375300914],[39.74038475003786,47.328097499363935],[39.72703807797976,47.32497535539569],[39.686350926805204,47.31578989144247],[39.660279855180455,47.31772335472899],[39.65837012236186,47.31847483255422],[39.65448628370828,47.319073088765364],[39.620411500383106,47.309609627846285],[39.59414730970923,47.29092577979373],[39.58573590223852,47.284676885971436],[39.576552018571526,47.27579867557223],[39.574663743425035,47.27059955391404],[39.575007066178955,47.25990761027246],[39.570906474845415,47.25172199229118],[39.56515581871751,47.24894597407172],[39.55764563347579,47.24935508069146],[39.54987795616866,47.24774785782356],[39.54678805138352,47.24473783572569],[39.54417021538493,47.237285098811796],[39.54457133019266,47.23497805399777],[39.53882067406472,47.236527208925146],[39.53242628777324,47.231294974432856],[39.549167707618935,47.225804126101316]]]},"properties":{"description":"27.delivery","fill":"#1bad03","fill-opacity":0.2,"stroke":"#1bad03","stroke-width":"2","stroke-opacity":0.9}}]};
var default_delivery_module = '27.delivery';
var center_map_module = [47.222109, 39.718813];
var script2 = document.createElement('script');
script2.src = '/sc-modules/yamaps-calculate/connector/script_modal.js?v=31137a6ca0fdf4654b41b0dcd78ec1f673';
script2.async = true;
script2.onload = function() {//console.log('Второй скрипт успешно загружен.');
};
script2.onerror = function() {//console.error('Ошибка загрузки второго скрипта.');
};
document.body.appendChild(script2);
function makeDeliveryTimeRequired11() {
var dd = $(document).find('.wa-desired-date-wrapper');
var parent = dd.closest('.wa-plugin-fields-wrapper');
var label = parent.find('.wa-label');
var new_label = 'Желаемое время доставки';
label.html(new_label);
parent.find('#wahtmlcontrol_details_custom_desired_delivery_interval').prop('required', true).addClass('wa-select');
}
function validateFields11(){
var dd = $(document).find('.wa-desired-date-wrapper');
var parent = dd.closest('.wa-plugin-fields-wrapper');
var date_inp = dd.find('#wahtmlcontrol_details_custom_desired_delivery_date_str');
var time_select = dd.find('select[name="details[custom][desired_delivery.interval]"]');
var date_val = date_inp.val() || false;
var time_val = time_select.val() || false;
//var buttonsubmit = document.querySelector('.js-submit-order-button');
parent.find('.wa-error-text').remove();
date_inp.removeClass('wa-error');
time_select.removeClass('wa-error');
if(!date_val || date_val == ''){
date_inp.addClass('wa-error');
date_inp.after('
Обязательное поле
');
//if (buttonsubmit) buttonsubmit.classList.add('d-none');
}
else if(!time_val || time_val == ''){
time_select.addClass('wa-error');
time_select.after('Обязательное поле
');
//if (buttonsubmit) buttonsubmit.classList.add('d-none');
} else {
//if (buttonsubmit) buttonsubmit.classList.remove('d-none');
}
}
function validateFields2(){
var dd = $(document).find('.wa-desired-date-wrapper');
var parent = dd.closest('.wa-plugin-fields-wrapper');
var date_inp = dd.find('#wahtmlcontrol_details_custom_desired_delivery_date_str');
var time_select = dd.find('select[name="details[custom][desired_delivery.interval]"]');
var date_val = date_inp.val() || false;
var time_val = time_select.val() || false;
var buttonsubmit = document.querySelector('.js-submit-order-button');
parent.find('.wa-error-text').remove();
date_inp.removeClass('wa-error');
time_select.removeClass('wa-error');
if(!date_val || date_val == ''){
if (buttonsubmit) buttonsubmit.classList.add('d-none');
}
else if(!time_val || time_val == ''){
if (buttonsubmit) buttonsubmit.classList.add('d-none');
} else {
if (buttonsubmit) buttonsubmit.classList.remove('d-none');
}
}
$(document).on('focus', '#wahtmlcontrol_details_custom_desired_delivery_date_str', function() {
//$(this).removeClass('wa-error');
//$(this).closest('.wa-field-wrapper').find('.wa-error-text').remove();
});
$(document).on('focus', '#wahtmlcontrol_details_custom_desired_delivery_interval', function() {
//$(this).removeClass('wa-error');
// $(this).closest('.wa-field-wrapper').find('.wa-error-text').remove();
});
$(document).on('wa_order_form_ready', function (e) {
//makeDeliveryTimeRequired();
});
$(document).on('wa_order_form_changed', function (e) {
//makeDeliveryTimeRequired();
});
$(document).on('wa_order_form_region_changed', function () {
//makeDeliveryTimeRequired();
});
$(document).on('wa_order_form_details_changed', function () {
// makeDeliveryTimeRequired();
});
$(document).on('click', '.js-submit-order-button', function () {
//validateFields();
});
//const intervalId = setInterval(validateFields2, 700);
// эмулируем смену адреса для надежного просчета стоимости доставки
let isDeliveryCoastFixed = false;
function fixDeliveryCoast() {
console.log('Start check delivery');
if (isDeliveryCoastFixed) return;
console.log('Trying to fix delivery coast...');
const input = document.querySelector('input[name="details[shipping_address][street]"]');
if (input && input.offsetParent !== null) {
input.focus();
const clickEvent = new MouseEvent('click', {
bubbles: true,
view: window
});
input.dispatchEvent(clickEvent);
input.dispatchEvent(new Event('focus', { bubbles: true }));
setTimeout(function() {
input.blur();
input.dispatchEvent(new Event('blur', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
console.log('Delivery coast fixed successfully!');
isDeliveryCoastFixed = true;
}, 300);
} else {
console.log('Input not available yet');
}
}
// Запускаем в несколько этапов
setTimeout(fixDeliveryCoast, 7000); // Первая попытка
setTimeout(fixDeliveryCoast, 9000); // Вторая попытка
setTimeout(fixDeliveryCoast, 12000); // Третья попытка
setTimeout(fixDeliveryCoast, 15000); // Финальная попытка
// Фикс стоимости доставки после ввода адреса
(function() {
const ADDRESS_INPUT_SELECTOR = 'input[name="details[shipping_address][street]"]';
const COOLDOWN_TIME = 4000;
const FIX_DELAY = 300;
const SUCCESS_DELAY = 3000;
let successTimer = null;
let lastTriggerTime = 0;
function fixDelivery2Cost() {
try {
console.log('Trying to fix delivery cost...');
const input = document.querySelector(ADDRESS_INPUT_SELECTOR);
if (input && window.getComputedStyle(input).display !== 'none') {
input.focus();
const clickEvent = new MouseEvent('click', { bubbles: true, view: window });
input.dispatchEvent(clickEvent);
input.dispatchEvent(new Event('focus', { bubbles: true }));
setTimeout(() => {
input.blur();
input.dispatchEvent(new Event('blur', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
console.log('Delivery cost fixed successfully!');
}, FIX_DELAY);
} else {
console.log('Input not available or hidden');
}
} catch (error) {
console.error('Error fixing delivery cost:', error);
}
}
function successInputAddress() {
console.log('Success: 3 seconds after address input blur');
fixDelivery2Cost();
}
document.addEventListener('focus', (e) => {
if (e.target.matches(ADDRESS_INPUT_SELECTOR)) {
clearTimeout(successTimer);
console.log('Address input focused');
}
}, true);
document.addEventListener('blur', (e) => {
if (e.target.matches(ADDRESS_INPUT_SELECTOR)) {
clearTimeout(successTimer);
const currentTime = Date.now();
if (currentTime - lastTriggerTime >= COOLDOWN_TIME) {
successTimer = setTimeout(() => {
lastTriggerTime = Date.now();
successInputAddress();
}, SUCCESS_DELAY);
console.log('Address input blurred - timer started');
} else {
console.log('Address input blurred - cooldown active, skipping');
}
}
}, true);
})();