var Filter_search_timelimit='300000'; var Filter_input_element = 'search-input-detailSearch'; var Filter_get_sklad_url = 'https://dr-car.ru/detailSearch/default/getSkladList'; var Filter_get_data_prefix_url = 'https://dr-car.ru/detailSearch/default/getProductList'; var Filter_text_for_loading=''; var Filter_block_to_load='main_load_block'; var Filter_search_phrase_echo='search_phrase_echo'; var Filter_products = []; var Filter_products_other = []; var Filter_total_count = 0; var Filter_global_time_start = 0; var Filter_criteria = 'price'; var Filter_criteria_updown = '<'; var Filter_shown_products = []; var Filter_last_update_parser = ''; var Filter_temp_flag1 = false; var Filter_temp_flag2 = false; var Filter_table_of_possiotion = []; var Filter_criteria_total_rows_per_articul=1; var Filter_criteria_top_price_value=0; var Filter_criteria_top_delivery_value=0; function Filter_before_search() { if (document.getElementById(Filter_block_to_load) == undefined) { $('#content_search').html('
' + '
' +'' +' ' +'
НомерПроизводительНаименованиеЦена Срок доставки (дней)Кол-во (на складе)СкладКол-во (в заказ)
Не нашли?
ЗАПРОСИТЬ НАЛИЧИЕ и ЦЕНУ
'); $("#Search-grid thead a").click(function(){ if($(this).hasClass('asc')){ $("#Search-grid thead a").removeClass('asc'); $("#Search-grid thead a").removeClass('desc'); $(this).addClass('desc'); Filter_aply_cort_criteria($(this).attr("name"),'<');} else{ $("#Search-grid thead a").removeClass('asc'); $("#Search-grid thead a").removeClass('desc'); $(this).addClass('asc'); Filter_aply_cort_criteria($(this).attr("name"),'>');} } ); } } function Filter_strat_show_proress() { document.getElementById('Filter_done_div').innerHTML = '
Подождите, идет поиск
'; } function Filter_create_element(data, i,set_rows_assign) { temp_element = document.createElement('tr'); Filter_temp_flag2 = !Filter_temp_flag2; if(set_rows_assign>0){ temp = document.createElement('td'); temp.setAttribute('rowspan', set_rows_assign); temp.setAttribute('product_id_main_row', data.brand.toUpperCase().replace(/([^A-Za-z0-9])/g, '')+data.articul); temp.innerHTML = data.articul+(data.garanty==1?" ":""); temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp);} temp = document.createElement('td'); temp.innerHTML = data.brand; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp_text = data.name; temp_text = temp_text.replace("/([\,\.\!\?\/\\])/g", "$1 "); temp.innerHTML = temp_text; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp.innerHTML = ''+data.price_echo+''; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp.innerHTML = data.dostavka; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp.innerHTML = data.kolichestvo; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp.innerHTML = data.store; temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;'); temp_element.appendChild(temp); temp = document.createElement('td'); temp.setAttribute('valign', 'middle'); temp.setAttribute('style', 'text-align: center;min-width: 80px;'); temp_indf = data.articul + '_' + i; temp_var = data.name; temp_var = temp_var.replace(/"/g, '"'); temp.innerHTML = '
'+ '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + //'' + '' + '
'; temp_element.appendChild(temp); return temp_element; } function Filter_check_is_good_time(data) { if (data == null) { Filter_total_count--; Filter_remake_table(); if (Filter_total_count > 0) return false; Filter_done_search(); return false; } if (Filter_global_time_start == data.time_start) { return true; } return false; } function Filter_start_search() { Filter_before_search(); Filter_strat_show_proress(); d = new Date(); Filter_global_time_start = d.getTime(); document.getElementById(Filter_input_element).value = document.getElementById(Filter_input_element).value.replace(/\-/g, '').replace(/\./g, '').toUpperCase(); document.getElementById(Filter_search_phrase_echo).innerHTML = document.getElementById(Filter_input_element).value; params = { time_start: Filter_global_time_start, search_phrase: (document.getElementById(Filter_input_element).value).toUpperCase() }; Filter_products = []; Filter_products_other = []; url = '/search?search_phrase=' + encodeURIComponent((document.getElementById(Filter_input_element).value).toUpperCase()); if (url != window.location) { //window.history.pushState(null, null, url); } $.getJSON(Filter_get_sklad_url, params, function (data) { if (!Filter_check_is_good_time(data)) return; // console.log(data); Filter_total_count = data.sklads_count; for (i = 0; i < data.sklads_count; i++) { params = { search_phrase: document.getElementById(Filter_input_element).value.toUpperCase(), search_sklad: data.sklads[i], time_start: Filter_global_time_start }; console.log(data); $.ajaxSetup({ timeout: Filter_search_timelimit, "error": function () { Filter_total_count--; if (Filter_last_update_parser != data.search_sklad && Filter_total_count > 0) return; Filter_remake_table(); Filter_done_search(); }}); $.getJSON(Filter_get_data_prefix_url, params, function (data) { Filter_upgrade_elements(data); }); } }); } function getProps(toObj, tcSplit) { if (!tcSplit) tcSplit = '\n'; var lcRet = ''; var lcTab = ' '; for (var i in toObj) // обращение к свойствам объекта по индексу lcRet += lcTab + i + " : " + toObj[i] + tcSplit; lcRet = '{' + tcSplit + lcRet + '}'; return lcRet; } function Filter_upgrade_elements(data) { if (!Filter_check_is_good_time(data)) return; Filter_last_update_parser = data.search_sklad; for (i = 0; i < data.products_count; i++) { element = data.products[i]; if (Filter_products[element.articul] == undefined) { Filter_products[element.articul] = { count: 1, elements: [element], criteria: 'general' } } else { flag = true; for (j = 0; j < Filter_products[element.articul].count; j++) { if (Filter_products[element.articul].elements[j].name == element.name && Filter_products[element.articul].elements[j].price == element.price && Filter_products[element.articul].elements[j].kolichestvo == element.kolichestvo && Filter_products[element.articul].elements[j].dostavka == element.dostavka && Filter_products[element.articul].elements[j].brand == element.brand) flag = false; } if (flag) { Filter_products[element.articul].elements[Filter_products[element.articul].count] = element; Filter_products[element.articul].count++; } } } for (i = 0; i < data.products_other_count; i++) { element = data.products_other[i]; if (Filter_products_other[element.articul] == undefined) { Filter_products_other[element.articul] = { count: 1, elements: [element], criteria: 'general' } } else { flag = true; for (j = 0; j < Filter_products_other[element.articul].count; j++) { if (Filter_products_other[element.articul].elements[j].name == element.name && Filter_products_other[element.articul].elements[j].price == element.price && Filter_products_other[element.articul].elements[j].kolichestvo == element.kolichestvo && Filter_products_other[element.articul].elements[j].dostavka == element.dostavka && Filter_products_other[element.articul].elements[j].brand == element.brand) flag = false; } if (flag) { Filter_products_other[element.articul].elements[Filter_products_other[element.articul].count] = element; Filter_products_other[element.articul].count++; } } } if (!Filter_check_is_good_time(data)) return; Filter_total_count--; if (Filter_last_update_parser != data.search_sklad && Filter_total_count > 0) return; Filter_remake_table(); Filter_done_search(); } function Filter_done_search() { if (Filter_total_count <= 0) { document.getElementById('Filter_done_div').innerHTML = '
Поиск закончен
'; total = 0; console.log(total); for (var articul in Filter_products) for (var j in Filter_products[articul].elements) total++; for (var articul in Filter_products_other) for (var j in Filter_products_other[articul].elements) total++; console.log(total); console.log($("#getPriceUrlId").attr("href")); if (total == 0) { Filter_search_more_find(); $.ajax({ type: "GET", url: $("#getPriceUrlId").attr("href"), dataType: "html", cache: false, success: function(html){ if(html.indexOf('') == -1){ //console.log(html); document.getElementById('content_search').innerHTML = html; grecaptcha.render("g-recaptcha"); } } }); } } } function Filter_shift_and_insert(mas, element, cur, total) { for (i = total; i > cur; i--) { mas[i] = mas[i - 1]; } mas[cur] = element; return mas; } function Filter_sort_criateria() { products = []; for (var articul in Filter_products) { Filter_criteria_search = Filter_criteria; if (Filter_products[articul].criteria != 'general') { Filter_criteria_search = Filter_products[articul].criteria; } total = 0; products[articul] = []; for (var j in Filter_products[articul].elements) { if (total == 0) { products[articul][total] = Filter_products[articul].elements[j]; total++; } else { for (var atribute in Filter_products[articul].elements[j]) { if (Filter_criteria_search == atribute) { old = total; for (i = 0; i < total; i++) { a = eval('Filter_products[articul].elements[j].' + atribute); b = eval('products[articul][i].' + atribute); if ((Filter_criteria_updown == '>' && a > b) || (Filter_criteria_updown == '<' && a < b)) { products[articul] = Filter_shift_and_insert(products[articul], Filter_products[articul].elements[j], i, total); total++; i = total; } } if (old == total) { products[articul][total] = Filter_products[articul].elements[j]; total++; } break; } } } } } return products; } function Filter_sort_criateria_other() { products = []; if (Filter_criteria != 'brand') { for (var articul in Filter_products_other) { Filter_criteria_search = Filter_criteria; if (Filter_products_other[articul].criteria != 'general') { Filter_criteria_search = Filter_products_other[articul].criteria; } total = 0; products[articul] = []; for (var j in Filter_products_other[articul].elements) { if (total == 0) { products[articul][total] = Filter_products_other[articul].elements[j]; total++; } else { for (var atribute in Filter_products_other[articul].elements[j]) { if (Filter_criteria_search == atribute) { old = total; for (i = 0; i < total; i++) { a = eval('Filter_products_other[articul].elements[j].' + atribute); b = eval('products[articul][i].' + atribute); if ((Filter_criteria_updown == '>' && a > b) || (Filter_criteria_updown == '<' && a < b)) { products[articul] = Filter_shift_and_insert(products[articul], Filter_products_other[articul].elements[j], i, total); total++; i = total; } } if (old == total) { products[articul][total] = Filter_products_other[articul].elements[j]; total++; } break; } } } } } } if (Filter_criteria == 'brand') { total_products = 0; temp_table = []; for (var articul_trash in Filter_products_other) { min = -1; for (var articul in Filter_products_other) { if (products[articul] == undefined && (min == -1 || (Filter_criteria_updown == '>' && Filter_products_other[articul].elements[0].brand > Filter_products_other[min].elements[0].brand) || (Filter_criteria_updown == '<' && Filter_products_other[articul].elements[0].brand < Filter_products_other[min].elements[0].brand))) { min = articul; } } products[min] = Filter_products_other[min].elements; temp_table[total_products] = min; total_products++; Filter_table_of_possiotion = temp_table; } } return products; } function Filter_remake_table() { products = Filter_sort_criateria(); document.getElementById(Filter_block_to_load).innerHTML = ''; elements = document.getElementById(Filter_block_to_load); elements2 = document.createElement('div'); elements2.setAttribute('class', 'Filter_group_items'); temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp.innerHTML = 'Искомый артикул'; temp2.appendChild(temp); elements.appendChild(temp1); flag = false; for (var articul in products) { temp_rows_count = 0; for (var j in products[articul]) { temp_rows_count++; } if (temp_rows_count == 0) continue; flag = true; artikul_element = Filter_make_new_articul_element(articul); temp_rows_count = 0; brands_full = []; for (var j in products[articul]) { temp_rows_count++; if (brands_full[$.trim(products[articul][j].brand.toUpperCase())] == undefined) { brands_full[$.trim(products[articul][j].brand.toUpperCase())] = {'items': [], count: 0}; } brands_full[$.trim(products[articul][j].brand.toUpperCase())].items[j] = products[articul][j]; brands_full[$.trim(products[articul][j].brand.toUpperCase())].count++; } for (var b1 in brands_full) { set_rows_assign = Filter_criteria_total_rows_per_articul; set_rows_assign_save = brands_full[b1].count; temp_rows_count = 0; flag_set_maximize_block = false; for (var j in brands_full[b1].items) { insert_element = Filter_create_element(products[articul][j], j, set_rows_assign); if ((temp_rows_count >= Filter_criteria_total_rows_per_articul) || ((Filter_criteria_top_price_value != 0 && Filter_criteria_top_price_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) || ((Filter_criteria_top_delivery_value != 0 && Filter_criteria_top_delivery_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) ) { flag_set_maximize_block = true; $(insert_element).prepend(''); insert_element.setAttribute('class', 'product' + b1.replace(/([^A-Za-z0-9])/g, '') + articul); //console.log(insert_element); //insert_element.setAttribute('style', 'display:none;'); } elements.appendChild(insert_element); set_rows_assign = 0; temp_rows_count++; } temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp_text = ''; if (flag_set_maximize_block) temp_text = 'Показать остальные ' + b1 + ' \\ '; temp.innerHTML = temp_text + 'Показать запчасти ' + b1 + ' с минимальным сроком поставки'; //temp2.appendChild(temp); if (temp_rows_count > 1) elements.appendChild(temp1); elements.appendChild(artikul_element); } continue; for (var j in products[articul]) { insert_element = Filter_create_element(products[articul][j], j, set_rows_assign); if ((temp_rows_count >= Filter_criteria_total_rows_per_articul) || ((Filter_criteria_top_price_value != 0 && Filter_criteria_top_price_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) || ((Filter_criteria_top_delivery_value != 0 && Filter_criteria_top_delivery_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) ) { flag_set_maximize_block = true; $(insert_element).prepend(''); insert_element.setAttribute('class', 'product' + articul); //console.log(insert_element); //insert_element.setAttribute('style', 'display:none;'); } elements.appendChild(insert_element); set_rows_assign = 0; temp_rows_count++; } temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp_text = ''; if (flag_set_maximize_block) temp_text = 'Показать остальные ' + products[articul][0].brand + ' \\ '; temp.innerHTML = temp_text + 'Показать запчасти ' + products[articul][j].brand + ' с минимальным сроком поставки'; //temp2.appendChild(temp); if (temp_rows_count > 1) elements.appendChild(temp1); elements.appendChild(artikul_element); } if (!flag) { if (Filter_total_count <= 0) { temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); //temp.setAttribute('class', 'Filter_detail_name'); temp.innerHTML = 'Товаров не найдено'; temp2.appendChild(temp); elements.appendChild(temp1); } } products = Filter_sort_criateria_other(); elements2 = document.createElement('div'); elements2.setAttribute('class', 'Filter_group_items'); temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp.innerHTML = 'Аналоги и замены других производителей'; temp2.appendChild(temp); elements.appendChild(temp1); flag = false; temp_i = 0; for (var articul in products) { if (Filter_criteria == 'brand') { articul = Filter_table_of_possiotion[temp_i]; temp_i++; } temp_rows_count = 0; for (var j in products[articul]) { temp_rows_count++; } if (temp_rows_count == 0) continue; flag = true; artikul_element = Filter_make_new_articul_element(articul); artikul_elements = document.createElement('div'); artikul_elements.setAttribute('class', 'Filter_items_articul_elements'); temp_rows_count = 0; brands_full = []; for (var j in products[articul]) { temp_rows_count++; if (brands_full[$.trim(products[articul][j].brand.toUpperCase())] == undefined) { brands_full[$.trim(products[articul][j].brand.toUpperCase())] = {'items': [], count: 0}; } brands_full[$.trim(products[articul][j].brand.toUpperCase())].items[j] = products[articul][j]; brands_full[$.trim(products[articul][j].brand.toUpperCase())].count++; } for (var b1 in brands_full) { set_rows_assign = Filter_criteria_total_rows_per_articul; set_rows_assign_save = brands_full[b1].count; temp_rows_count = 0; flag_set_maximize_block = false; for (var j in brands_full[b1].items) { insert_element = Filter_create_element(products[articul][j], j, set_rows_assign); if ((temp_rows_count >= Filter_criteria_total_rows_per_articul) || ((Filter_criteria_top_price_value != 0 && Filter_criteria_top_price_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) || ((Filter_criteria_top_delivery_value != 0 && Filter_criteria_top_delivery_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) ) { flag_set_maximize_block = true; $(insert_element).prepend(''); insert_element.setAttribute('class', 'product' + b1.replace(/([^A-Za-z0-9])/g, '') + articul); //insert_element.setAttribute('style', 'display:none;'); } elements.appendChild(insert_element); set_rows_assign = 0; temp_rows_count++; } temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp_text = ''; if (flag_set_maximize_block) temp_text = 'Показать остальные ' + b1 + ' \\ '; temp.innerHTML = temp_text + 'Показать запчасти ' + b1 + ' с минимальным сроком поставки'; //temp2.appendChild(temp); if (temp_rows_count > 1) elements.appendChild(temp1); } continue; set_rows_assign = Filter_criteria_total_rows_per_articul; set_rows_assign_save = temp_rows_count; temp_rows_count = 0; flag_set_maximize_block = false; for (var j in products[articul]) { insert_element = Filter_create_element(products[articul][j], j, set_rows_assign); if ((temp_rows_count >= Filter_criteria_total_rows_per_articul) || ((Filter_criteria_top_price_value != 0 && Filter_criteria_top_price_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) || ((Filter_criteria_top_delivery_value != 0 && Filter_criteria_top_delivery_value != '') && (parseInt(products[articul][j].price_echo, 10) > parseInt(Filter_criteria_top_price_value, 10))) ) { flag_set_maximize_block = true; $(insert_element).prepend(''); insert_element.setAttribute('class', 'product' + articul); //insert_element.setAttribute('style', 'display:none;'); } elements.appendChild(insert_element); set_rows_assign = 0; temp_rows_count++; } temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); temp.setAttribute('class', 'Filter_detail_name'); temp_text = ''; if (flag_set_maximize_block) temp_text = 'Показать остальные ' + products[articul][0].brand + ' \\ '; temp.innerHTML = temp_text + 'Показать запчасти ' + products[articul][j].brand + ' с минимальным сроком поставки'; //temp2.appendChild(temp); if (temp_rows_count > 1) elements.appendChild(temp1); } if (!flag) { if (Filter_total_count <= 0) { temp1 = document.createElement('tr'); temp2 = document.createElement('td'); temp2.setAttribute('colspan', '8'); temp1.appendChild(temp2); temp = document.createElement('center'); //temp.setAttribute('class', 'Filter_detail_name'); temp.innerHTML = 'Аналогов не найдено'; temp2.appendChild(temp); elements.appendChild(temp1); } } $('.Filter_show_hide_products').click(function () { $('.product' + $(this).attr('product_id')).show(); $('[product_id_main_row="' + $(this).attr('product_id') + '"]').attr('rowspan', $(this).attr('set_rows')); $(this).parent().find('span').remove(); $(this).remove(); }); $('.Filter_min_show_hide_products').click(function () { Filter_products[$(this).attr('product_id')].criteria = 'dostavka'; Filter_remake_table(); }); $('.Filter_min_other_show_hide_products').click(function () { Filter_products_other[$(this).attr('product_id')].criteria = 'dostavka'; Filter_remake_table(); }); } function Filter_make_new_articul_element(articul) { new_element = document.createElement('tr'); Filter_temp_flag1 = !Filter_temp_flag1; new_element.id = 'Filter_items_articul' + articul; return new_element; } function Filter_save_criteria_to_delete() { Filter_criteria_total_rows_per_articul = 1; Filter_criteria_top_price_value = document.getElementById('Filter_criteria_div_price').value; Filter_criteria_top_delivery_value = document.getElementById('Filter_criteria_div_delivery').value; Filter_remake_table(); } function Filter_set_sort() { Filter_criteria = document.getElementById('Filter_sort_by').value; Filter_remake_table(); } function Filter_set_sort_updown() { Filter_criteria_updown = document.getElementById('Filter_sort_by_updown').value; Filter_remake_table(); } function Filter_aply_cort_criteria(crit1, crit2) { Filter_criteria = crit1; Filter_criteria_updown = crit2; Filter_remake_table(); } $(document).ready(function () { $('#search-input-detailSearch ').keyup(function (e) { if ((e.which == 13)) { document.location = '/search?search_phrase=' + encodeURIComponent(document.getElementById(Filter_input_element).value); return false; } }); }); function Filter_clearForm() { $('#search-input-detailSearch').val(''); } function Filter_search_page(num) { $(document).ready(function () { document.getElementById(Filter_input_element).value = num; Filter_start_search(); }); } function Filter_start_search_location() { document.location = '/search?search_phrase=' + encodeURIComponent(document.getElementById(Filter_input_element).value); } function Filter_search_more_find() { $("#getPriceUrlId").attr("href", $("#getPriceUrlId").attr("href") + '?detail=' + document.getElementById(Filter_input_element).value); return true; }