PageSourceSearch

https://dunlin.ru/design/after_optim_page_speed_3/js/cdek/cdek.js?v=

js dunlin.ru collected 2026-10-05 00:05:54 UTC 7,933 bytes, 198 lines download raw bytes

1/**
2 * автокомплит
3 * подтягиваем список городов ajax`ом, данные jsonp в зависмости от введённых символов
4 */
5(function($) {
6	var $regionsSelect = $('#regions-select');
7	var $cdekCities = $('#cdek-cities-box');
8
9	var totalPrice = $('#total-price').val();
10	var $deliveries = $('.deliveries');
11	var $btnBox = $('.cart-btn-box');
12
13	var loaded = {'137': false, '136': false};
14
15	// Russian post
16	var $rissianPostPrice = $('[for=delivery_11] .price');
17
18	$regionsSelect
19		.on('change', '[name=cdekRegion]', function(){
20			$('.deliveries-blank').css('display', 'block');
21			$('.deliveries').css('display', 'none');
22
23			$regionsSelect.find('[name=cdekCity]').addClass('hidden');
24
25			$regionsSelect
26				.find('[name=cdekCity][data-region="' + $(this).find('option:selected').val() + '"]').removeClass('hidden')
27				.find('option').first().attr('selected', 'selected')
28
29			if($(this).find('option:selected').val() != '')
30				$cdekCities.removeClass('hidden')
31			else
32				$cdekCities.addClass('hidden')
33
34			$('[name=cdekCity]:not(.hidden)').change();
35
36			// Russian post
37			$rissianPostPrice.text('(' + this.options[this.selectedIndex].getAttribute('data-price') + ')');
38		})
39		.on('change', '[name=cdekCity]', function(){
40			var cityId = $(this).find('option:selected').val();
41
42			$btnBox.addClass('not-ready');
43
44			loaded['137'] = false;
45			loaded['136'] = false;
46			$deliveries.addClass('loading');
47
48            //Если выбран город
49            if(cityId)
50			{
51
52				$('.deliveries-blank').css('display', 'none');
53				$('.deliveries').css('display', 'block');
54
55                $('.deliveries').find('.selected').removeClass('selected');
56                $('.delivery-head').css('display', 'block'); //Если выбирают разные города сбрасываем скрытые доставки
57
58				if(cityId != 462){
59					$('[for = "delivery_9"]').css('display', 'none');
60				}
61
62                if(cityId == 44){ //Для москвы у нас своя доставка
63                    $('[for = "delivery_6"]').css('display', 'none');
64                    $('[for = "delivery_7"]').css('display', 'none');
65                }
66                if(cityId == 137){ //Для СПБ у нас своя доставка
67                    $('[for = "delivery_1"]').css('display', 'none');
68                    $('[for = "delivery_7"]').css('display', 'none');
69                }
70                if(cityId != 44 && cityId != 137){ //Если не МСК и не СПБ, скроем свои варианты
71                    $('[for = "delivery_1"]').css('display', 'none');
72                    $('[for = "delivery_6"]').css('display', 'none');
73                }
74
75				if(cityId == 462){ //Для кинешмы у нас своя доставка
76                    $('[for = "delivery_3"]').css('display', 'none');
77                    $('[for = "delivery_7"]').css('display', 'none');
78					$('[for = "delivery_8"]').css('display', 'none');
79					$('[for = "delivery_9"]').css('display', 'block');
80                }
81
82				$('#cdekCity').val(cityId)
83				$('#receiverCityId').val(cityId);
84
85				var formData = form2js('cart', '.', true);
86				formData['tariffId'] = 137;
87
88				$.ajax({
89					url : 'https://api.cdek.ru/calculator/calculate_price_by_jsonp.php',
90					jsonp : 'callback',
91					data : {
92						"json" : JSON.stringify(formData)
93					},
94					type : 'GET',
95					dataType : "jsonp",
96					success : function(data) {
97						console.log(data)
98						if(data.hasOwnProperty("result")) {
99							var deliveryPrice = parseInt(data.result.price) + (parseInt(data.result.price) + parseInt(totalPrice)) / 100 * 3;
100							$('.js-delivery-price-7').text('(' + deliveryPrice.toFixed() + ' руб)')
101
102							var description = 'Срок доставки: ' + data.result.deliveryPeriodMin + '-' + data.result.deliveryPeriodMax + ' дн. + срок изготовления.';
103
104							if(data.result.hasOwnProperty("cashOnDelivery"))
105								if(data.result.cashOnDelivery > 0)
106									description += '<br>Ограничение оплаты наличными, от ' + data.result.cashOnDelivery + ' руб.';
107
108							$('.js-delivery-description-7').html(description + ' <p>Быстрый способ доставки наших ковриков почти в любой регион России. Посылка доставляется к Вам курьером непосредственно в руки.</p>')
109						} else {
110							$('[for = "delivery_7"]').css('display', 'none');
111							$('.js-delivery-price-7').text('');
112
113							$('.js-delivery-description-7').html('');
114							for(var key in data["error"]) {
115								console.log(data["error"][key].text)
116								if(data["error"][key].text == 'Не задан город-получатель')
117									$('.js-delivery-description-7').append('Для расчета стоимости, выберете регион и город' + '<br>')
118							}
119							$('.js-delivery-description-7').find('br').last().remove();
120						}
121
122						loaded['137'] = true;
123						if(loaded['136'] == true)
124							$deliveries.removeClass('loading');
125					}
126				});
127
128				var formData = form2js('cart', '.', true);
129				formData['tariffId'] = 136;
130
131				$.ajax({
132					url : 'https://api.cdek.ru/calculator/calculate_price_by_jsonp.php',
133					jsonp : 'callback',
134					data : {
135						"json" : JSON.stringify(formData)
136					},
137					type : 'GET',
138					dataType : "jsonp",
139					success : function(data) {
140						console.log(data)
141						if(data.hasOwnProperty("result")) {
142							var deliveryPrice = parseInt(data.result.price) + (parseInt(data.result.price) + parseInt(totalPrice)) / 100 * 3;
143							$('.js-delivery-price-8').text('(' + deliveryPrice.toFixed() + ' руб)')
144
145							// 420
146							var description = 'Срок доставки: ' + data.result.deliveryPeriodMin + '-' + data.result.deliveryPeriodMax + ' дн. + срок изготовления.';
147
148							if(data.result.hasOwnProperty("cashOnDelivery"))
149								if(data.result.cashOnDelivery > 0)
150									description += '<br>Ограничение оплаты наличными, от ' + data.result.cashOnDelivery + ' руб.';
151
152							$('.js-delivery-description-8').html(description + ' <p>Быстрый способ доставки наших ковриков почти в любой регион России. Посылка доставляется на склад СДЭК в Вашем городе. Максимальный срок хранения отправления на пункте выдачи - 14 дней с момента прибытия.</p>')
153						} else {
154							$('[for = "delivery_8"]').css('display', 'none');
155							$('.js-delivery-price-8').text('');
156
157							$('.js-delivery-description-8').html('');
158							for(var key in data["error"]) {
159								console.log(data["error"][key].text)
160								if(data["error"][key].text == 'Не задан город-получатель')
161									$('.js-delivery-description-8').append('Для расчета стоимости, выберете регион и город' + '<br>')
162							}
163							$('.js-delivery-description-8').find('br').last().remove();
164						}
165
166						loaded['136'] = true;
167						if(loaded['137'] == true)
168							$deliveries.removeClass('loading');
169					}
170				});
171
172			}
173		});
174
175	$('[name=cdekCity]:not(.hidden)').change();
176
177	$("#cart").submit(function(){
178		if($('.deliveries label.selected').length < 1)
179		{
180			alert ('Выберите способ доставки');
181			return false;
182		}
183		else
184			$btnBox.addClass('loading');
185
186      //Отправка событий в Analytics и метрику
187      ga('send', 'event','button','order');
188     	ym(43781309,'reachGoal','orderNew');
189      ym(43781309,'reachGoal','orderNewFast');
190
191
192	});
193
194	$('.deliveries').delegate('.delivery-head','click',function(){
195
196		$btnBox.removeClass('not-ready');
197	});
198})(window.jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.