$(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.autopartstrader.co.uk/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);
}
}
}