//based on mininova.org search suggestions engine
//modified by Wirone
//added some code to get possible suggestions with polish letters
//query string can be a-z and 0-9 only - input onkeypress handle this with sprawdzZnak()

var keywordInput = document.getElementById('keyword');
var Podpowiedzi = document.getElementById('podpowiedzi');

var frazy = new Array();
var sugestie = new Array();
var wyraz;
var Zaznaczone = -1;

function wczytajFrazy()
   { // Wczytuje frazy które już szukano
   if (document.cookie.indexOf('pp-frazy=') != -1)
      { // sprawdza czy s±
      var temp = document.cookie.substring(document.cookie.indexOf('pp-frazy=')+9) + ';';
      var cookie = temp.substring(0, temp.indexOf(';'))

      frazy = cookie.split('|'); // umieszcza frazy w tablicy (globalny dostęp)
      }
      
   for (var i=0; i<frazy.length; i++)
       {
       frazy[i] = unescape(frazy[i]); // Unescape the cookie data
       }
 
   //cookiefrazy = frazy.concat(topfrazy); // ł±czy 2 tablice - frazy usera i najczę¶ciej szukane
   
   keywordInput.setAttribute('autocomplete', 'off');
   
   //przypisuje funkcje do eventów
   keywordInput.onblur = function() { if (keywordInput.value=='') keywordInput.value='Czego szukasz?'; setTimeout(ukryjSugestie, 250); };
   keywordInput.onfocus = function() { if (keywordInput.value=='Czego szukasz?') keywordInput.value=''; }
   
   keywordInput.onkeydown = function(ev) {
      try { klawiszDol(event.keyCode); }
      catch(e) { klawiszDol(ev.keyCode); }
      };

   keywordInput.onkeyup = function(ev) {
      try { klawiszGora(event.keyCode); }
      catch(e) { klawiszGora(ev.keyCode); }
      };

   keywordInput.onkeypress = function (idKlawisza)
      {
      var klawisz;
      if (window.event) klawisz = window.event.keyCode;
      else if (idKlawisza) klawisz = idKlawisza.which;

      if (klawisz>31)   //dopuszcza enter i strzałki
         {
         znak = String.fromCharCode(klawisz);
         return /[a-zęół¶±żĽćńA-ZĘÓŁ¦ˇŻ¬ĆŃ0-9 ]/.test(znak);
         }
      }
   }

function Zaznacz(aktualna)
   {
   for (var i=0; i<sugestie.length; i++)
       Podpowiedzi.getElementsByTagName('a')[i].className = '';

   if (aktualna != -1)
      {
      Podpowiedzi.getElementsByTagName('a')[aktualna].className = 'hovered';
      Zaznaczone = aktualna;
      }
   }

function klawiszDol(idKlawisza)
   {
   var klawisz;
   if (window.event) klawisz = window.event.keyCode;
   else if (idKlawisza) klawisz = idKlawisza.which;
	
   if (Podpowiedzi.style.display == 'block')
      {
      if (klawisz != 38 && klawisz != 40)
         Zaznaczone = -1;

      if (klawisz == 38 && Zaznaczone != -1)  // 38 - strzałka w górę
         {
         Zaznaczone--;
         Zaznacz(Zaznaczone);
         keywordInput.value = sugestie[Zaznaczone];
         }

      if (klawisz == 40 && Zaznaczone < sugestie.length-1)  // 40 - strzałka w dół
         {
         Zaznaczone++;
         Zaznacz(Zaznaczone);
         keywordInput.value = sugestie[Zaznaczone];
         }

      if (klawisz == 38 && Zaznaczone == -1)
         keywordInput.value = wyraz; // przywraca to co było wpisywane zanim wybrano sygestie

      }
   }


function klawiszGora(idKlawisza)
   {
   var klawisz;
   if (window.event) klawisz = window.event.keyCode;
   else if (idKlawisza) klawisz = idKlawisza.which;
      
   if (klawisz != 38 && klawisz != 40)
      wyraz = keywordInput.value; // zapisuje to co jest wpisane

   if (keywordInput.value != '' && klawisz != 13 && klawisz != 27 && klawisz != 38 && klawisz != 40)
      // 13  - enter, 27 - escape
      Zasugeruj();
   
   if ((keywordInput.value == '' || klawisz == 27) && Podpowiedzi.style.display == 'block')
      ukryjSugestie();
   }


function Zasugeruj()
   {
   sugestie = new Array(); // pusta tablica na sugestie

   for (var i=0; i<frazy.length && sugestie.length<10; i++)
       {
       if (frazy[i].indexOf(keywordInput.value.toLowerCase()) == 0)
          // sugestie zaczynaj±ce się na wpisan± frazę
          {
          if ((frazy[i]!='')&&(frazy[i]!='undefined'))  //wyklucza puste
             sugestie.push(unescape(frazy[i]));
          }
       }

   for (var i=0; i<frazy.length && sugestie.length<10; i++)
       {
       if (frazy[i].indexOf(keywordInput.value.toLowerCase()) > 0)
          // sugestie zawieraj±ce w sobie wpisan± frazę
          {
          if ((frazy[i]!='')&&(frazy[i]!='undefined'))  //wyklucza puste
             sugestie.push(unescape(frazy[i]));
          }
       }

   if (sugestie.length == 0)
      ukryjSugestie();
   else pokazSugestie();


   // tworzy linki
   Podpowiedzi.innerHTML = '';
   for (var i=0; i<sugestie.length; i++)
       {
       Podpowiedzi.innerHTML += '<a href="/szukaj/' + sugestie[i] + '/" style="width:' + (keywordInput.offsetWidth-2) + 'px;" onmouseover="Zaznacz(' + i + ')">' + sugestie[i] + '</a>';
       }

   }

function pokazSugestie()
   {
   Podpowiedzi.style.width = (keywordInput.offsetWidth) + 'px';
   Podpowiedzi.style.display = 'block';
   }


function ukryjSugestie()
   {
   Podpowiedzi.style.display = 'none';
   }
   
