PageSourceSearch

https://korshop.ru/bitrix/templates/profood_new/js/offers.js?156465218715472

js korshop.ru collected 2026-10-02 05:00:57 UTC 15,472 bytes, 389 lines download raw bytes

1var RSGoPro_OffersExt_timeout_id = 0;
2
3function RSGoPro_OffersExt_ChangeHTML($elementObj) {
4	var element_id = $elementObj.data('elementid');
5	if( RSGoPro_OFFERS[element_id] ) {
6		// get all selected values
7		var arrFullChosed = new Object();
8		$elementObj.find('.div_option.selected').each(function(index1){
9			var $optionObj = $(this);
10			var code = $optionObj.parents('.offer_prop').data('code');
11			var value = $optionObj.data('value');
12			arrFullChosed[code] = value;
13		});
14
15		// get offerID (key=ID)
16		var finedOfferID = 0;
17		var all_prop_true2 = true;
18		for(offerID in RSGoPro_OFFERS[element_id].OFFERS) {
19			all_prop_true2 = true;
20			for(pCode in arrFullChosed) {
21				if( arrFullChosed[pCode] != RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[pCode] ) {
22					all_prop_true2 = false;
23					break;
24				}
25			}
26			if(all_prop_true2) {
27				finedOfferID = offerID;
28				break;
29			}
30		}
31		
32		// article
33		if( $elementObj.find('.offer_article') ) {
34			if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].ARTICLE ) {
35				$elementObj.find('.offer_article').html( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].ARTICLE ).parent().css('visibility','visible');
36			} else if( $elementObj.find('.offer_article').data('prodarticle') ) {
37				$elementObj.find('.offer_article').html( $elementObj.find('.offer_article').data('prodarticle') ).parent().css('visibility','visible');
38			} else {
39				$elementObj.find('.offer_article').parent().css('visibility','hidden');
40			}
41		}
42		
43		// set price
44		if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].PRICES ) {
45			var PRICES = RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].PRICES;
46			for(var PRICE_CODE in PRICES) {
47				if( $elementObj.find('.price_pdv_'+PRICE_CODE) ) {
48					$elementObj.find('.price_pdv_'+PRICE_CODE).removeClass('new').html( PRICES[PRICE_CODE].PRINT_DISCOUNT_VALUE );
49					if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) {
50						$elementObj.find('.price_pdv_'+PRICE_CODE).addClass('new');
51					}
52				}
53				if( $elementObj.find('.price_pd_'+PRICE_CODE) ) {
54					if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) {
55						$elementObj.find('.price_pd_'+PRICE_CODE).html( PRICES[PRICE_CODE].PRINT_DISCOUNT );
56					} else {
57						$elementObj.find('.price_pd_'+PRICE_CODE).html( '' );
58					}
59				}
60				if( $elementObj.find('.price_pv_'+PRICE_CODE) ) {
61					if( parseInt(PRICES[PRICE_CODE].DISCOUNT_DIFF)>0 ) {
62						$elementObj.find('.price_pv_'+PRICE_CODE).html( PRICES[PRICE_CODE].PRINT_VALUE );
63					} else {
64						$elementObj.find('.price_pv_'+PRICE_CODE).html( '' );
65					}
66				}
67			}
68		}
69		
70		var SKUProps = RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].DISPLAY_PROPERTIES;
71		for(var SKUProp in SKUProps) {
72				$elementObj.find('.prop_num'+SKUProp).find('.val_prop_sku').html(SKUProps[SKUProp].DISPLAY_VALUE);
73		}
74
75		// set ratio
76		if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_RATIO && $elementObj.find('.js-quantity') ) {
77			$elementObj.find('.js-quantity').data('ratio',RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_RATIO);
78			$elementObj.find('.js-quantity').val( $elementObj.find('.js-quantity').data('ratio') );
79		}
80		if( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_NAME && $elementObj.find('.js-measurename') ) {
81			$elementObj.find('.js-measurename').html( RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CATALOG_MEASURE_NAME );
82		}
83		
84		// daysarticle & quickbuy
85		$elementObj.removeClass('qb da2');
86		$elementObj.find('.timers .timer').hide();
87		if( RSGoPro_OFFERS[element_id].ELEMENT.QUICKBUY || RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].QUICKBUY ) {
88			$elementObj.addClass('qb');
89			if( $elementObj.find('.timers .qb.js-timer_id'+element_id).length>0 ) {
90				$elementObj.find('.timers .qb.js-timer_id'+element_id).css('display','inline-block');
91			} else if ( $elementObj.find('.timers .qb.js-timer_id'+finedOfferID).length>0 ) {
92				$elementObj.find('.timers .qb.js-timer_id'+finedOfferID).css('display','inline-block');
93			}
94		}
95		if( RSGoPro_OFFERS[element_id].ELEMENT.DAYSARTICLE2 || RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].DAYSARTICLE2 ) {
96			$elementObj.removeClass('qb').addClass('da2');
97			if( $elementObj.find('.timers .da2.js-timer_id'+element_id).length>0 ) {
98				$elementObj.find('.timers .timer').hide();
99				$elementObj.find('.timers .da2.js-timer_id'+element_id).css('display','inline-block');
100			} else if ( $elementObj.find('.timers .da2.js-timer_id'+finedOfferID).length>0 ) {
101				$elementObj.find('.timers .timer').hide();
102				$elementObj.find('.timers .da2.js-timer_id'+finedOfferID).css('display','inline-block');
103			}
104		}
105		
106		
107		// change product id
108		$elementObj.find('.js-add2basketpid').val( finedOfferID );
109		if(RSGoPro_OFFERS[element_id].OFFERS[finedOfferID].CAN_BUY) {
110			$elementObj.find('.add2basketform').removeClass('cantbuy');
111		} else {
112			$elementObj.find('.add2basketform').addClass('cantbuy');
113		}
114		
115		// stores
116		if( $elementObj.find('.stores') && finedOfferID>0 && $elementObj.find('.stores').find('.popupstores') ) {
117			if( RSGoPro_STOCK[element_id] ) {
118				if( $elementObj.find('.stores').hasClass('gopro_20') ) {
119					// change stores
120					for(storeID in RSGoPro_STOCK[element_id].JS.SKU[finedOfferID]) {
121						var stores = RSGoPro_STOCK[element_id].JS.SKU[finedOfferID];
122						var quantity = stores[storeID];
123						if( RSGoPro_STOCK[element_id].USE_MIN_AMOUNT==true ) {
124							if( quantity < 1 ) {
125								$elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','#ff0000').html( RSGoPro_STOCK[element_id].MESSAGE_EMPTY );
126							} else if( quantity < RSGoPro_STOCK[element_id].MIN_AMOUNT ) {
127								$elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','').html( RSGoPro_STOCK[element_id].MESSAGE_LOW );
128							} else {
129								$elementObj.find('.stores').find('.store_'+storeID).find('.amount').css('color','#00cc00').html( RSGoPro_STOCK[element_id].MESSAGE_ISSET );
130							}
131						} else {
132							$elementObj.find('.stores').find('.store_'+storeID).find('.amount').html( quantity );
133						}
134						if( RSGoPro_STOCK[element_id].SHOW_EMPTY_STORE==false && quantity<1 ) {
135							$elementObj.find('.stores').find('.store_'+storeID).hide();
136						} else {
137							$elementObj.find('.stores').find('.store_'+storeID).show();
138						}
139					}
140				} else {
141					console.warn( 'OffersExt_ChangeHTML -> old stores template version' );
142					// change stores
143					$elementObj.find('.stores').find('.genamount').removeClass('cantopen');
144					$elementObj.find('.stores').find('.popupstores').find('.offerstore').hide();
145					if( $elementObj.find('.stores').find('.popupstores').find('.offer_'+finedOfferID).length>0 ) {
146						$elementObj.find('.stores').find('.popupstores').find('.offer_'+finedOfferID).show();
147					} else {
148						$elementObj.find('.stores').find('.genamount').addClass('cantopen');
149					}
150				}
151				// change general
152				if( RSGoPro_STOCK[element_id].QUANTITY[element_id] ) {
153					var quantity = parseInt( RSGoPro_STOCK[element_id].QUANTITY[finedOfferID] );
154					if( RSGoPro_STOCK[element_id].USE_MIN_AMOUNT==true ) {
155						if( quantity < 1 ) {
156							$elementObj.find('.stores').find('.genamount span').css('color','#ff0000').html( RSGoPro_STOCK[element_id].MESSAGE_EMPTY );
157						} else if( quantity < RSGoPro_STOCK[element_id].MIN_AMOUNT ) {
158							$elementObj.find('.stores').find('.genamount span').css('color','').html( RSGoPro_STOCK[element_id].MESSAGE_LOW );
159						} else {
160							$elementObj.find('.stores').find('.genamount span').css('color','#00cc00').html( RSGoPro_STOCK[element_id].MESSAGE_ISSET );
161						}
162					} else {
163						$elementObj.find('.stores').find('.genamount span').html( quantity );
164					}
165				}
166			} else {
167				console.warn( 'OffersExt_ChangeHTML -> store not found' );
168			}
169		}
170		
171		// set buttons "in basket" and "not in basket"
172		RSGoPro_SetInBasket();
173
174		// event
175		$(document).trigger('RSGoProOnOfferChange',[$elementObj]);
176		
177	}
178}
179
180function RSGoPro_OffersExt_PropChanged($optionObj)
181{
182	var element_id = $optionObj.parents('.js-element').data('elementid');
183	var CURRENT_PROP_CODE = $optionObj.parents('.offer_prop').data('code');
184	var value = $optionObj.data('value');
185	if( RSGoPro_OFFERS[element_id] && !$optionObj.hasClass('disabled') ) {
186		// change styles
187		$optionObj.parents('.offer_prop').removeClass('opened').addClass('closed');
188		$optionObj.parents('.offer_prop').find('.div_option').removeClass('selected');
189		$optionObj.addClass('selected');
190		
191		// set current value
192		if( $optionObj.parents('.offer_prop').hasClass('color') ) { // color 
193			$optionObj.parents('.offer_prop').find('.div_selected span').css({'backgroundImage':$optionObj.find('span').css('backgroundImage')});
194			$optionObj.parents('.offer_prop').find('.div_selected span').attr('title', $optionObj.data('value'));
195		} else {
196			$optionObj.parents('.offer_prop').find('.div_selected span').html(value);
197		}
198		
199		var next_index = 0;
200		var NEXT_PROP_CODE = '';
201		var PROP_CODE = '';
202		
203		// get current values
204		var arCurrentValues = new Object();
205		for(index in RSGoPro_OFFERS[element_id].SORT_PROPS) {
206			PROP_CODE = RSGoPro_OFFERS[element_id].SORT_PROPS[index];
207			arCurrentValues[PROP_CODE] = $optionObj.parents('.js-element').find('.prop_'+PROP_CODE).find('.div_option.selected').data('value');
208			// save next prop_code
209			if(PROP_CODE==CURRENT_PROP_CODE) {
210				var next_index = parseInt(index)+1;
211				if( RSGoPro_OFFERS[element_id].SORT_PROPS[next_index] )
212					NEXT_PROP_CODE = RSGoPro_OFFERS[element_id].SORT_PROPS[next_index];
213				else
214					NEXT_PROP_CODE = false;
215				break;
216			}
217		}
218
219		// get enabled values for next property
220		if(NEXT_PROP_CODE) {
221			var allPropTrue1 = true;
222			var arNextEnabledProps = new Array();
223			for(offerID in RSGoPro_OFFERS[element_id].OFFERS) {
224				allPropTrue1 = true;
225				for(pCode1 in arCurrentValues) {
226					if( arCurrentValues[pCode1] != RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[pCode1] ) {
227						allPropTrue1 = false;
228					}
229				}
230				if(allPropTrue1) {
231					arNextEnabledProps.push( RSGoPro_OFFERS[element_id].OFFERS[offerID].PROPERTIES[NEXT_PROP_CODE] );
232				}
233			}
234
235			// disable and enable values for NEXT_PROP_CODE
236			$optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option').each(function(i){
237				var $option = $(this);
238				var emptyInEnabled = true;
239				for(inden in arNextEnabledProps) {
240					if( $option.data('value') == arNextEnabledProps[inden] ) {
241						emptyInEnabled = false;
242						break;
243					}
244				}
245				$option.addClass('disabled');
246				if(!emptyInEnabled)
247					$option.removeClass('disabled');
248			});
249
250			// call itself
251			var nextOptionObj;
252			if(!$optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option.selected').hasClass('disabled')) {
253				nextOptionObj = $optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option.selected');
254			} else {
255				nextOptionObj = $optionObj.parents('.js-element').find('.prop_'+NEXT_PROP_CODE).find('.div_option:not(.disabled):first');
256			}
257			RSGoPro_OffersExt_PropChanged(nextOptionObj);
258		} else {
259			RSGoPro_OffersExt_ChangeHTML( $optionObj.parents('.js-element') );
260		}
261	}
262}
263
264$(document).ready(function(){
265	
266	// prop select -> click
267	$(document).on('click','.div_option',function(e){
268		e.stopPropagation();
269		clearTimeout( RSGoPro_OffersExt_timeout_id );
270		var $optionObj = $(this);
271		var url_begin = $optionObj.parents('.js-element').data('detail');
272		if(!$optionObj.hasClass('disabled')) {
273			var element_id = $optionObj.parents('.js-element').data('elementid');
274			if( element_id > 0 ) {
275				var propCode = $optionObj.parents('.offer_prop').data('code');
276				var value = $optionObj.data('value');
277				if( RSGoPro_OFFERS[element_id] ) {
278					RSGoPro_OffersExt_PropChanged($optionObj);
279				} else {
280					RSGoPro_Area2Darken( $optionObj.parents('.js-element'), 'animashka' );
281					var url = url_begin + '?AJAX_CALL=Y&action=get_element_json&element_id=' + element_id;
282					$.getJSON(url, {}, function(json){
283						RSGoPro_OFFERS[element_id] = json;
284						RSGoPro_OffersExt_PropChanged($optionObj);
285						RSGoPro_Area2Darken( $optionObj.parents('.js-element') );
286					}).fail(function(data){
287						console.warn( 'Get element JSON -> fail request' );
288						RSGoPro_Area2Darken( $optionObj.parents('.js-element') );
289					});
290				}
291			} else {
292				console.warn( 'Get element JSON -> element_id is empty' );
293			}
294		}
295		return false;
296	});
297	$(document).on('click','.div_selected',function(e){
298		$('.offer_prop.opened:not(.prop_'+ $(this).parents('.offer_prop').data('code')+')').removeClass('opened').addClass('closed');
299		if( $(this).parents('.offer_prop').hasClass('closed') ) { // was closed 
300			$(this).parents('.offer_prop').removeClass('closed').addClass('opened');
301		} else { // was opened
302			$(this).parents('.offer_prop').removeClass('opened').addClass('closed');
303		}
304		return false;
305	});
306	// close prop select by click outside
307	$(document).on('click',function(e){
308		if( $(e.target).parents('.offer_prop').length>0 && !$(e.target).parents('.offer_prop').hasClass('color') ) {
309
310		} else {
311			$('.offer_prop').removeClass('opened').addClass('closed');
312		}
313	});
314	
315	BX.addCustomEvent('onAjaxSuccess', function(data){
316		if (typeof data === "undefined") {
317			if($("#err_del_tk").length > 0) {
318				$('.bx_ordercart_order_pay_center').css('display','none');
319				$("#errGoods").html('');
320				$("#errGoods").append($("#err_del_tk").html());
321				$('.bg-modal-er-order').show();
322				$('#orderError').show();
323			}
324			if($("#err_del_order").length > 0) {
325				$('.bx_ordercart_order_pay_center').css('display','none');
326				$("#errGoods").html('');
327				$("#errGoods").append($("#err_del_order").html());
328				$('.bg-modal-er-order').show();
329				$('#orderError').show();
330			}
331			if($("#err_del_tk_false").length > 0) {
332				$('.bx_ordercart_order_pay_center').css('display','block');
333				$("#errGoods").html('');
334				$('.bg-modal-er-order').hide();
335				$('#orderError').hide();
336			}
337			if($("#order_form_div").length > 0){
338				$("input[name='ORDER_PROP_10']").mask("+7 (999) 999-99-99");
339				$("input[name='ORDER_PROP_16']").mask("+7 (999) 999-99-99");
340				$("input[name='ORDER_PROP_12']").mask("+7 (999) 999-99-99");
341			}
342		}
343	});
344	
345	if($("#err_del_tk").length > 0) {
346		$('.bx_ordercart_order_pay_center').css('display','none');
347		$("#errGoods").html('');
348		$("#errGoods").append($("#err_del_tk").html());
349		$('.bg-modal-er-order').show();
350		$('#orderError').show();
351	}
352	if($("#err_del_order").length > 0) {
353		$('.bx_ordercart_order_pay_center').css('display','none');
354		$("#errGoods").html('');
355		$("#errGoods").append($("#err_del_order").html());
356		$('.bg-modal-er-order').show();
357		$('#orderError').show();
358	}
359	if($("#err_del_tk_false").length > 0) {
360		$('.bx_ordercart_order_pay_center').css('display','block');
361		$("#errGoods").html('');
362		$('.bg-modal-er-order').hide();
363		$('#orderError').hide();
364	}
365	
366	$('#orderError').on('click', 'a', function(e){
367		if($(this).attr('href')=='#delivery'){
368			e.preventDefault();
369			$('.bg-modal-er-order').hide();
370			$('#orderError').hide();
371		}
372	});
373	
374	$('#orderErrorBoxberry').on('click', 'a', function(e){
375		if($(this).attr('href')=='#boxberry_set'){
376			e.preventDefault();
377			$('.bg-modal-er-order').hide();
378			$('#orderErrorBoxberry').hide();
379			$("label[for='ID_DELIVERY_ID_30']").find('a').trigger('click');
380		}
381	});
382	
383	$('body').on('click', '.bg-modal-er-order', function(e){
384		$('.bg-modal-er-order').hide();
385		$('#orderErrorBoxberry').hide();
386		$('#orderError').hide();
387	});
388
389});

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.