PageSourceSearch

https://kuplu-nissan.ru/wp-content/themes/nissan/inc/ox_forms/data/auto_standard/js/script.js

js kuplu-nissan.ru collected 2026-10-06 00:18:22 UTC 11,598 bytes, 379 lines download raw bytes

1hjq(function(){
2	if(hjq('.new_select_mark').length)
3	var res = oxInitForm('form.ox_form.ox_auto_standard_b');
4	else
5	var res = oxInitForm('form.ox_form.ox_auto_standard');
6	////////////////////
7	
8	var mode = ox_form_data.mode ? ox_form_data.mode : 'single';
9	var compl = res.form.find('select[name="complectation"]');
10	if(hjq('.new-form').length)
11	var picture = res.form.find('.new-form__img.picture');
12	else
13	var picture = res.form.find('.info img.picture');
14	var colors = res.form.find('.info ul.colors');
15	
16	if (mode == 'single'){
17		var selected = ' selected '; 
18		ox_form_data.complectations.forEach(function(item){
19			compl.append('<option value="' + item.name + '"' + selected + '>' + item.name + '</option>');
20			selected = '';
21		});
22		
23		var mark = res.form.find('input[name="mark"]');
24		mark.addClass('res').val(ox_form_data.mark);
25		mark.siblings('span').text(ox_form_data.mark).css('display', 'block');
26		
27		var model = res.form.find('input[name="model"]');
28		model.addClass('res').val(ox_form_data.model);
29		model.siblings('span').text(ox_form_data.model).css('display', 'block');
30		
31		picture.attr('src', ox_form_data.image).attr('alt', ox_form_data.image_alt ? ox_form_data.image_alt : '');
32		
33		hjq('.ox_form_trigger').click(function(event){
34			compl.find('option').eq(this.dataset.index).prop('selected', true);
35			setCompl();
36			
37			var is_cash = this.dataset.buy_type == 'cash';
38			cb_cash.prop('checked', is_cash);
39			cb_credit.prop('checked', !is_cash);
40			cb_cash.closest('.radio_buttons').find('label').removeClass('active');
41			if (is_cash){
42				cb_cash.closest('label').addClass('active');
43				res.blocks.credit.oxHide(true);
44			}
45			else{
46				cb_credit.closest('label').addClass('active');
47				res.blocks.credit.oxShow();
48			}
49			
50			hjq('html, body').animate(
51				{ scrollTop: res.form.offset().top }, 500);
52			
53			return false;
54		});
55		
56		compl.change(setCompl);
57		
58		function setCompl(){
59			var cur_comp = ox_form_data.complectations[compl.prop('selectedIndex')];
60			if (cur_comp.image)
61				picture.attr('src', cur_comp.image).attr('alt', cur_comp.image_alt ? cur_comp.image_alt : '');
62			updateSlider(cur_comp.price);
63		}
64		setCompl();
65	}
66	else if (mode == 'select'){
67		var mark = res.form.find('select[name="mark"]');
68		mark.addClass('res').addClass('req').css('display', 'block');
69		
70		var model = res.form.find('select[name="model"]');
71		model.addClass('res').addClass('req').css('display', 'block');
72		
73		mark.change(setMark);
74		
75		var selected = '';
76		hjq.each(ox_form_data.cars, function(index, item){
77			mark.append('<option value="' + index + '"' + selected + '>' + index + '</option>');
78			selected = '';
79			
80		});
81		if(hjq('.new_select_mark').length){
82			hjq('.new_select_mark').find('option')[0].innerHTML = "Выберите марку автомобиля";
83		}
84		
85		function setMark(){
86			model.children().remove();
87			if(hjq('.new_select_mark').length){
88				if(hjq('.new_select_mark').val() == 'Выберите марку автомобиля')
89				model.append('<option selected>Выберите модель</option>');
90				if(document.body.clientWidth < 992){
91						hjq('.new_select_mark').change(function(){
92							if(hjq('.swipe_next_part').length){
93								if(hjq('.new_select_mark').val() !== 'Выберите марку автомобиля') {
94									hjq('.swipe_next_part').prop("disabled", false);
95								}	
96							}
97						})
98						
99				}
100			}
101			selected = ' selected ';
102			hjq.each(ox_form_data.cars[mark.val()], function(index, item){
103				model.append('<option value="' + index + '"' + selected + '>' + index + '</option>');
104				selected = '';
105			});
106			setModel();
107		}
108		
109		model.change(setModel);
110		
111		function setModel(){
112			compl.children().remove();
113			if(hjq('.new_select_mark').val() == 'Выберите марку автомобиля')
114			compl.append('<option selected>Выберите комплектацию</option>');
115			selected = '';
116			hjq.each(ox_form_data.cars[mark.val()][model.val()], function(index, item){
117				compl.append('<option value="' + item.name + '"' + selected + '>' + item.name + '</option>');
118				selected = '';
119			});
120			
121			setCompl();
122		}
123		
124		compl.change(setCompl);
125		
126		function setCompl(){
127			var cur = ox_form_data.cars[mark.val()][model.val()][compl.prop('selectedIndex')];
128			if (cur.image)
129				picture.attr('src', cur.image).attr('alt', cur.image_alt ? cur.image_alt : '');
130			updateSlider(cur.price);
131			
132		}
133		
134		setMark();
135	}
136	else if (mode == 'select_ajax'){
137		if (!ox_form_data.cars)
138			ox_form_data.cars = [];
139		if (!ox_form_data.init)
140			ox_form_data.init = {};
141		var initMark = !ox_form_data.init.mark;
142		var initModel = !ox_form_data.init.model;
143		var initCompl = !ox_form_data.init.complectation;
144		
145		var mark = res.form.find('select[name="mark"]');
146		mark.addClass('res').addClass('req').css('display', 'block');
147		
148		var model = res.form.find('select[name="model"]');
149		model.addClass('res').addClass('req').css('display', 'block');
150		
151		function init(arr, select, id){
152			var index = 0;
153			var result = false;
154			arr.forEach(function(item){
155				if (item.id == id){
156					select.prop('selectedIndex', index)
157					result = item;
158				}
159				index++;
160			});
161			return result;
162		}
163		
164		function getEl(arr, select){
165			if (!initMark && select == mark){
166				initMark = true;
167				return init(arr, select, ox_form_data.init.mark);
168			}
169			if (!initModel && select == model){
170				initModel = true;
171				return init(arr, select, ox_form_data.init.model);
172			}
173			if (!initCompl && select == compl){
174				initCompl = true;
175				return init(arr, select, ox_form_data.init.complectation);
176			}
177			var index = select.prop('selectedIndex');
178			if (index >= 0)
179				return arr[index];
180			return false;
181		}
182		
183		function selectChain(markId, modelId, complId){
184			initMark = false;
185			ox_form_data.init.mark = markId;
186			initModel = false;
187			ox_form_data.init.model = modelId;
188			initCompl = false;
189			ox_form_data.init.complectation = complId;
190			setMark();
191		}
192		
193		function ajax(query, select, arr){
194			if (arr.length){
195				select.children().remove();
196				arr.forEach(function(item){ select.append('<option>' + item.name + '</option>'); });
197				select.change();
198			}
199			else{
200				hjq.ajax({
201					method: 'GET',
202					url: ox_form_data.ajax_url,
203					data: query,
204					dataType: 'json',
205					success: function(data){
206						select.children().remove();
207						data.forEach(function(item){
208							arr.push(item);
209							select.append('<option>' + item.name + '</option>');
210						});
211						select.change();
212					}
213				});
214			}
215		}
216		
217		function setMark(){
218			var markEl = getEl(ox_form_data.cars, mark);
219			ajax({act: 'get_models', mark: markEl.id}, model, markEl.models);
220		}
221		
222		mark.change(setMark);
223		
224		function setModel(){
225			var markEl = getEl(ox_form_data.cars, mark);
226			var modelEl = getEl(markEl.models, model);
227			if (modelEl.colors.length){
228				colors.children().remove();
229				modelEl.colors.forEach(function(item){
230					var el = hjq('<li style="background: #' + item.hex + ';" title="' + item.name + '" data-src="' + item.src + '"></li>');
231					el.click(function(){ picture.attr('src', this.dataset.src); });
232					colors.append(el);
233				});
234				picture.attr('src', modelEl.colors[0].src);
235				picture.fadeIn();
236				colors.fadeIn();
237			}
238			else{
239				colors.fadeOut();
240				if (modelEl.image){
241					picture.attr('src', modelEl.image);
242					picture.fadeIn();
243				}
244				else
245					picture.fadeOut();
246			}
247			ajax({act: 'get_complectations', mark: markEl.id, model: modelEl.id}, compl, modelEl.complectations);
248		}
249		
250		model.change(setModel);
251		
252		compl.change(function(){
253			var markEl = getEl(ox_form_data.cars, mark);
254			var modelEl = getEl(markEl.models, model);
255			var complEl = getEl(modelEl.complectations, compl);
256			updateSlider(complEl.price);
257		});
258		
259		hjq('.ox_form_trigger').click(function(event){
260			selectChain(this.dataset.mark, this.dataset.model, this.dataset.complectation);
261			
262			var is_cash = this.dataset.buy_type == 'cash';
263			cb_cash.prop('checked', is_cash);
264			cb_credit.prop('checked', !is_cash);
265			cb_cash.closest('.radio_buttons').find('label').removeClass('active');
266			if (is_cash){
267				cb_cash.closest('label').addClass('active');
268				res.blocks.credit.oxHide(true);
269			}
270			else{
271				cb_credit.closest('label').addClass('active');
272				res.blocks.credit.oxShow();
273			}
274			
275			hjq('html, body').animate(
276				{ scrollTop: res.form.offset().top }, 500);
277			
278			return false;
279		});
280		
281		if (!ox_form_data.cars.length)
282			ajax({act: 'get_marks'}, mark, ox_form_data.cars);
283	}
284	
285	////////////////////
286	
287	var cb_cash = res.form.find('input[name="buy_type"][value="cash"]').first();
288	var cb_credit = res.form.find('input[name="buy_type"][value="credit"]').first();
289	
290	if (cb_credit.prop('checked'))
291		res.blocks.credit.oxShow();
292	
293	function updateSlider(price){
294		var format_price = price.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ');
295		var cprice = Math.round(price * 0.10);
296		
297		res.form.find('input[name="price"]').val(price);
298		res.form.find('.info span.price').text(format_price);
299		
300		var div = res.form.find('input[name="initial_payment"]').closest('.slider_cont');
301		div.data('max', price);
302		div.find('.slider_input').val(cprice.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 '));
303		div.find('.right').text(format_price + ' руб');
304		
305		var sc = div.find('div.slider');
306		//sc.slider('option', 'max', price);
307		//sc.slider('value', cprice);
308		sc.slider('option', { value: cprice, max: price });
309		div.find('input.res').val(cprice);
310	}
311	
312	////////////////////
313	
314	res.form.find('input[name="buy_type"]').change(function(){
315		if (cb_cash.prop('checked'))
316			res.blocks.credit.oxHide(true);
317		else
318			res.blocks.credit.oxShow();
319	});
320	
321	var tradein_inp = res.form.find('input[name="trade_in"]');
322	var util_inp = res.form.find('input[name="util"]');
323	
324	if (tradein_inp.prop('checked')){
325		res.blocks.tradein.setState(true, true);
326		util_inp.prop('checked', false);
327		res.blocks.util.setState(false, true);
328	}
329	else if (util_inp.prop('checked')){
330		res.blocks.util.setState(true, true);
331		tradein_inp.prop('checked', false)
332		res.blocks.tradein.setState(false, true);
333	}
334		
335	res.form.find('input[name="trade_in"]').change(function(){
336		util_inp.prop('checked', false);
337		res.blocks.util.setState(false, true);
338		res.blocks.tradein.setState(this.checked, true);
339	});
340	 
341	res.form.find('input[name="util"]').change(function(){
342		tradein_inp.prop('checked', false);
343		res.blocks.tradein.setState(false, true);
344		res.blocks.util.setState(this.checked, true);
345	});
346	
347	var util_old_car = res.form.find('select[name="util_old_car"]');
348	util_old_car.change(setUtilComp);
349	function setUtilComp(){
350		var comp = util_old_car.find('option').eq(util_old_car[0].selectedIndex).data('comp');
351		res.form.find('input[name="util_compensation"]').val(comp);
352		res.form.find('#util_compensation').text(comp.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ') + ' руб.');
353	}
354	setUtilComp();
355	
356	res.form.find('#gos_programm_text span').hide();
357	var gpv = res.form.find('input[name="gos_programm"]:checked');
358	if (gpv.length && gpv.val())
359		res.form.find('#gos_programm_text span#' + gpv.val()).show();
360	 
361	res.form.find('input[name="gos_programm"]').change(function(){
362		res.form.find('#gos_programm_text span').hide();
363		if (this.value)
364			res.form.find('#gos_programm_text span#' + this.value).show();
365	});
366	
367	res.form.submit(function(){
368		if (!res.blocks.personal.oxIsShow()){
369			res.blocks.base.oxHide(false);
370			res.blocks.personal.oxShow();
371			res.button.val('Отправить');
372		}
373		else
374			res.sendForm();
375		return false;
376	});
377	
378	res.form.slideDown();
379});

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.