function gsEscapeHTML(s) {
  var div  = document.createElement("div");
  var text = document.createTextNode(s);
  div.appendChild(text);
  return div.innerHTML;
}

$.widget( "custom.catcomplete", $.ui.autocomplete, {
  _renderMenu: function( ul, items ) {
    var self = this, currentCategory = "";
    $.each( items, function( index, item ) {
      if (!item.cat)
      return;
      
      if ( item.cat != currentCategory ) {
        ul.append( "<li class='ui-autocomplete-category'>" + item.cat + "</li>" );
        currentCategory = item.cat;
      }
      
      $("<li></li>")
        .data("item.autocomplete", item)
        .append($("<a></a>").html(item.label))
        .appendTo(ul);
    });
  }
});

$(document).ready(function() {
  $( "#searchText" ).catcomplete({
    source: function( request, response ) {
      $.ajax({
        url: "/doSearch.json",
        type: "post",
        data: request,
        dataType: "json",
        success: function( data, status ) {
          if (data == null) {
            response( [] );
            return;
          }
          
          var termsEsc = $.map(data[0].cleanTerms, function(t, idx) {
            return $.ui.autocomplete.escapeRegex(t);
          }).join("|"); 
          
          var matcher = new RegExp(termsEsc , "i");
          
          response($.map(data, function(el) {
            var text = el.value;
            if (!text)
              return {};
            
            if (termsEsc && matcher.test(text)) {
              return {
                label: gsEscapeHTML(text).replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + termsEsc + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>" ),
                value: text,
                id: el.id,
                cat: el.cat
              };
            } else
              return {
                label: text, value: text, id: el.id, cat: el.cat
              };
          }) );
        },
        error: function() {
          response( [] );
        }
      });
    },
    minLength: 2,
    select: function( event, ui ) {
      if (ui.item) {
        if (ui.item.cat.substr(0,1) == 'K')
          window.location.href = '/cat/' + ui.item.id + '.html';
        else
          window.location.href = '/pro/' + ui.item.id + '.html';
      }
    }
  });
  
  window.setTimeout(function() {
    loadDelay = false;
  }, 250);
  
  $.ajax({
    url: "/getBasketInfo.json",
    type: "get",
    dataType: "json",
    success: function( data, status ) {
      if (data != null && data[0] && data[1]) {
        $('#_basketInfoQuantity').text(data[0].quantity);
        $('#_basketInfoAmount').text(data[1].amount);
      }
    }
  });
});

var navTimeout = null;
var activeNav = null;
var loadDelay = true;

function openLink(el,e) {
  var t;
  
  if (!e)
    var e = window.event;
  
  if (e.target)
    t = e.target;
  else if (e.srcElement)
    t = e.srcElement;
  else
    return;
  
  if (t.nodeType == 3) //Safari bug
    t = t.parentNode;
  
  if (t.nodeName == 'A')
    return;
  
  document.location.href = el.getElementsByTagName('a')[0].href;
}

function doShowNavAction(el, action) {
  if (activeNav != null) {
    if (activeNav == el)
      return;
    else {
      activeNav.getElementsByTagName('ul')[0].style.display='none';
    }
  }
  activeNav = el;

  el.getElementsByTagName('ul')[0].style.display='';
  return;
}

function doHideNavAction() {
  if (activeNav != null)
    activeNav.getElementsByTagName('ul')[0].style.display='none';
  
  activeNav = null;
}

function showNav(el) {
  if (loadDelay)
    return;
  
  el.style.backgroundColor='white';
  el.style.backgroundPosition='0 43px';
  el.firstChild.style.color='#666666';
  
  if (navTimeout != null)
    window.clearTimeout(navTimeout);
  
  navTimeout = window.setTimeout(function() {
    doShowNavAction(el);
  }, 200);
}

function hideNav(el) {
  el.style.backgroundColor='';
  el.style.backgroundPosition='0 0';
  el.firstChild.style.color='';
  
  if (navTimeout != null)
    window.clearTimeout(navTimeout);
  
  navTimeout = window.setTimeout(function() {
    doHideNavAction();
  }, 200);
}

function hideNavImmediate(ell) {
  var el = ell.parentNode;
  el.style.backgroundColor='';
  el.style.backgroundPosition='0 0';
  el.firstChild.style.color='';
  
  if (navTimeout != null)
    window.clearTimeout(navTimeout);
  
  doHideNavAction();
}

var gsPDActiveTab = 1;
function selectDetail(nr) {
  if (nr == gsPDActiveTab)
    return;
  
  $('#pdl'+ gsPDActiveTab).removeClass('a').addClass('i');
  $('#pd'+ gsPDActiveTab).hide(400);
    
  $('#pdl'+ nr).removeClass('i').addClass('a');
  $('#pd'+ nr).show(400);
  
  gsPDActiveTab = nr;
}


