$(function(){ $('#free-text-search-btn').on('click', function(e){ e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); clearAutoSearch(); reload(); }); $('.search-tag').on('click', function(e){ e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); $(this).hide(); var comboName = $(this).data('combo'); $('#'+comboName+' option:selected').removeAttr('selected'); $('#'+comboName+' option[value="viewall"]').attr('selected', 'selected'); buildAndSetHash(); redrawUI(); // Year trigger will essentially reset the UI so in the case where a part detail is visible on the screen // when this is called the screen will return to the non part specific view $('#year').trigger('change'); // Reset the ticker to display the latest parts reloadTicker(''); }); $('#free-text').on("focus", function(e){ e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); if($('#free-text').html() == "Enter Part Details (e.g. Ford Focus 2008 Petrol Engine)"){ // Clear the initial suggest message. $('#free-text').html(''); $('#free-text').removeClass('free-text-suggest'); } }); var add_suggest_func = function(e){ e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); if($('#free-text').html() == ""){ // Set the initial suggest message. $('#free-text').html("Enter Part Details (e.g. Ford Focus 2008 Petrol Engine)"); $('#free-text').addClass('free-text-suggest'); } }; $('#free-text').on("focusout", add_suggest_func); $('#free-text').on("change", add_suggest_func); $('#free-text').on("keydown", function(e) { resetTokenSpan(); }); $('#free-text').on("keydown", function(e){ // Stop the return from actually being rendered in the input if(e.keyCode == 13){ return false; } }); $('#free-text').on("keyup", function(e){ if($('#free-text').text().length > 80) { $('#free-text').html('' + $('#free-text').text().substring(0, 80) + ' '); try { setCursor($('#free-text span:last')); }catch(err){ console.error(err); } return true; } clearAutoSearch(); // If we detect a enter character then trigger a search. if(e.keyCode == 13){ reload(); return false; } else { //Trigger a search to happen after a short delay. var newTimeoutID = setTimeout(reload, 2000); $('#free-text').data('timeoutID', newTimeoutID); } return true; }); }); function clearAutoSearch(){ var currentTimeoutID = $('#free-text').data('timeoutID'); if(currentTimeoutID != undefined && currentTimeoutID != '') { clearTimeout(currentTimeoutID); } } function reload(){ var url = "https://www.carparts-uk.com/ops/inc/backGroundActivity.php"; var opsID = "opsId=" + encodeURIComponent("global"); var activityType = "activityType=" + encodeURIComponent("tokenSearch"); var free_text_val = $('#free-text').text(); // Blank out the free text if it is the default suggest string if(free_text_val == 'Enter Part Details (e.g. Ford Focus 2008 Petrol Engine)'){ free_text_val = ''; } if(free_text_val.length > 80) { free_text_val = free_text_val.substring(0, 80); } if ('localStorage' in window && window['localStorage'] !== null) { localStorage.setItem('free_text', free_text_val); } var val = encodeURIComponent(free_text_val); var free_text = "free_text=" + val; buildAndSetHash(); var fullURL = url + '?' + opsID + '&' + generateLocalStorageQueryStringJS()+ '&' + activityType + '&' + free_text; var checkTokensAjax = new ajaxObj(fullURL, ["free-text"], '', "postTokenSearch(); checkStatus(); showSearchLayer();", true); } function postTokenSearch(){ try{ setCursor($('#free-text span:last')); }catch(err){ console.error(err); } redrawUI(); } function resetTokenSpan(){ $('#free-text span').removeAttr('title'); $('#free-text span').removeClass('search-token').removeClass('search-token-matches').removeClass('search-token-zero'); } function setCursor(jqe){ var position = jqe.length ; if(position == 0){ return; } jqe[0].focus(); if (document.selection) { var sel = document.selection.createRange(); sel.moveStart('character', position); sel.select(); } else { var sel = window.getSelection(); try { sel.collapse(jqe[0].firstChild, position); }catch(e){ console.log(e); } } }