1jQuery(document).ready(function($) { 2 3 var $resultWrapper, 4 resultWrapperUid, 5 loadBtnClass = '.load-more', 6 loadBtnVisible; 7 8 loadBtnVisible = $(loadBtnClass).is(':visible'); 9 10 function defineResultWrapper(resultWrapperUid) { 11 $resultWrapper = $('.news-list-view#news-container-' + resultWrapperUid); 12 } 13 14 function updateLoadBtn($loadBtn, $newLoadBtn) { 15 if ($newLoadBtn.length > 0) { 16 $loadBtn.attr('data-request-uri', $newLoadBtn.attr('data-request-uri')); 17 $loadBtn.attr('href', $newLoadBtn.attr('href')); 18 if (!loadBtnVisible) { 19 $loadBtn.fadeIn(); 20 loadBtnVisible = true; 21 } 22 } else if (loadBtnVisible) { 23 $loadBtn.fadeOut(); 24 loadBtnVisible = false; 25 } 26 } 27 28 function replaceResult($result, $newContent, append) { 29 $resultWrapper.animate({opacity: 0}, function () { 30 $resultWrapper.css('visibility', 'hidden'); 31 if (!append) { 32 $resultWrapper.contents().remove(); 33 } 34 $resultWrapper.append($newContent.contents()); 35 $resultWrapper.wrapInner('<div/>'); 36 $resultWrapper.css('visibility', 'visible'); 37 $resultWrapper.animate({ 38 opacity: 1 39 }); 40 updateLoadBtn( 41 $resultWrapper.parent('.news').find(loadBtnClass), 42 $result.find(loadBtnClass) 43 ); 44 }); 45 } 46 47 var ajaxCall = function (url, $target, append) { 48 49 append = (append === undefined || append === null) ? false : append; 50 51 // return if no result wrapper exists 52 if ($resultWrapper.length === 0) { 53 return; 54 } 55 $.ajax({ 56 async: 'true', 57 url: url, 58 type: 'POST', 59 dataType: 'html', 60 success: function (result) { 61 replaceResult($(result), $(result).find('.news-list-view'), append); 62 }, 63 error: function (error) {} 64 }); 65 }; 66 67 var activeClass = 'active'; 68 69 // handle click of category link 70 $(document).on('click', '.category-item', function (e) { 71 e.preventDefault(); 72 if ($(e.target).hasClass(activeClass)) { 73 return; 74 } 75 76 var $targetLink = $(e.target), 77 uri = $targetLink.attr('data-request-uri'); 78 79 resultWrapperUid = $targetLink.parents('ul.category-list').attr('data-listrecorduid'); 80 defineResultWrapper(resultWrapperUid); 81 82 $('.category-item').removeClass(activeClass); 83 $targetLink.addClass(activeClass); 84 85 ajaxCall(uri, $targetLink); 86 }); 87 88 $(document).on('click', loadBtnClass, function(e) { 89 e.preventDefault(); 90 91 resultWrapperUid = $(e.target).attr('data-listrecorduid'); 92 defineResultWrapper(resultWrapperUid); 93 94 ajaxCall($(e.target).attr('data-request-uri'), $(e.target), true); 95 }); 96}); 97 98var $vehicleResultWrapper, 99 vehicleAjaxType = 6763484623, 100 modelsCount = []; 101 102function replaceResults($html, callback) { 103 var $vehicleResultWrapper = $('#vehicleresults'); 104 105 if ($vehicleResultWrapper.length === 0) { 106 return; 107 } 108 109 $vehicleResultWrapper.fadeOut(function () { 110 $vehicleResultWrapper.empty(); 111 $vehicleResultWrapper.html($html.children()).promise().done(function(){ 112 typeof callback === 'function' && callback(); 113 $vehicleResultWrapper.fadeIn(); 114 }); 115 }); 116} 117 118function cleanUpUrlParams(params, orderby) { 119 // get params only (without '?') 120 params = (params.indexOf('?') > -1) ? params.split('?')[1] : params; 121 // remove params with no values 122 params = params.replace(/[^=&]+=(&|$)/g, '').replace(/&$/, ''); 123 // remove params with value 'all' 124 params = params.replace(/[^=&]+=all(&|$)/g, '').replace(/&$/, ''); 125 // remove 'type' parameter 126 params = params.replace(/type=[0-9]+(&|$)/g, ''); 127 // remove 'o' parameter 128 params = params.replace(/&o=[a-z]+(&|$)/g, ''); 129 // prepend '?' back again 130 131 if(orderby && orderby.length > 1) { 132 return (params === '') ? '?o=' + orderby : '?' + params + '&o=' + orderby; 133 } else { 134 return (params === '') ? '' : '?' + params; 135 } 136} 137 138function updateUrlState(data, title, url) { 139 if (url !== '') { 140 history.replaceState(data, title, url); 141 } else { 142 // no query string fallback 143 history.replaceState(data, title, window.location.href.split('?')[0]); 144 } 145} 146 147var vehicleDispatcher = { 148 request: function(requestUrl, resultUrl, data, callback) { 149 $.ajax({ 150 url: requestUrl, 151 type: 'POST', 152 dataType: 'json', 153 data: data, 154 success: function (result) { 155 replaceResults($(result), function () { 156 updateUrlState(data, null, resultUrl); 157 typeof callback === 'function' && callback(result); 158 }); 159 } 160 }); 161 }, 162 163 updateModelCount: function() { 164 var url = jQuery('.btn-vehicle-search').attr('href')+'?type='+vehicleAjaxType+'&c=1'; 165 166 jQuery.ajax({ 167 url: url, 168 type: 'POST', 169 dataType: 'json', 170 success: function (result) { 171 jQuery.each(result,function(key, value) { 172 }); 173 } 174 }); 175 }, 176 177 updatePageCount: function() { 178 var url = $('.btn-vehicle-search').attr('href'); 179 180 if (url != undefined) { 181 url = url + '?type=6763484623&c=1'; 182 183 jQuery.ajax({ 184 url: url, 185 type: 'POST', 186 dataType: 'json', 187 success: function (result) { 188 if(result && result.hasOwnProperty('all')) { 189 var $countBtn = jQuery('.btn-vehicle-search') 190 var countBtnTitle = $countBtn.attr('title'); 191 $countBtn.html('<span>'+result.all+'</span>'+' '+countBtnTitle); 192 } 193 if(result && result.hasOwnProperty('models')) { 194 modelsCount.regular = []; 195 for(var slugModel in result.models){ 196 if(result.models.hasOwnProperty(slugModel)) { 197 modelsCount.regular[slugModel] = result.models[slugModel]; 198 } 199 } 200 } 201 if(result && result.hasOwnProperty('modelsElectricity')) { 202 modelsCount.electricity = []; 203 for(var slugElectricity in result.modelsElectricity){ 204 if(result.modelsElectricity.hasOwnProperty(slugEle
204ctricity)) { 205 modelsCount.electricity[slugElectricity] = result.modelsElectricity[slugElectricity]; 206 } 207 } 208 } 209 if(result && result.hasOwnProperty('modelsHybdrid')) { 210 modelsCount.hybrid = []; 211 for(var slugHybrid in result.modelsHybdrid){ 212 if(result.modelsHybdrid.hasOwnProperty(slugHybrid)) { 213 modelsCount.hybrid[slugHybrid] = result.modelsHybdrid[slugHybrid]; 214 } 215 } 216 } 217 } 218 }); 219 } 220 }, 221}; 222 223function initializeVehicleCount($modelItems) { 224 if ($.isEmptyObject(modelsCount) === false) { 225 $modelItems.find('.model-count[data-model-slug]').each(function (index, element) { 226 var count = 0; 227 $(element).attr('data-model-slug').split(',').forEach(function (slug) { 228 if ($(element).attr('data-model-hybrid') === '1') { 229 if (modelsCount.hasOwnProperty('electricity') && modelsCount.electricity.hasOwnProperty(slug)) { 230 count += Number(modelsCount.electricity[slug]); 231 } else if (modelsCount.hasOwnProperty('hybrid') && modelsCount.hybrid.hasOwnProperty(slug)) { 232 count += Number(modelsCount.hybrid[slug]); 233 } 234 } else { 235 if (modelsCount.hasOwnProperty('regular') && modelsCount.regular.hasOwnProperty(slug)) { 236 count += Number(modelsCount.regular[slug]); 237 } 238 } 239 }); 240 if (count > 0) { 241 $(element).text(count); 242 } 243 }); 244 } 245} 246 247$(document).ready(function() { 248 vehicleDispatcher.updatePageCount(); 249}); 250
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.