var getFunctionsUrl = "http://"+document.domain+"/miejsca/szukaj/suggest/suggest.php?keyword=";
/* URL ktĂłry pokaĹĽe wyniki wyĹ›wietlane dla wybranej podpowiedzi */
var phpHelpUrl="";
/* sĹ‚owo kluczowe, dla ktĂłrego wywoĹ‚ujemy ĹĽÄ…danie HTTP*/
var httpRequestKeyword = "";
/* ostatnie sĹ‚owo kluczowe, dla ktĂłrego wysyĹ‚ano ĹĽÄ…danie*/
var userKeyword = "";
/* iloĹ›Ä‡ podpowiedzi pojawiajÄ…cych siÄ™ dla danego sĹ‚owa kluczowego*/
var suggestions = 0;
/* maksymalna liczba znakĂłw wyĹ›wietlanych w podpowiedzi*/
var suggestionMaxLength = 60;
/* flaga, ktĂłra wskazuje, czy uĹĽytkownik skorzystaĹ‚ ze strzaĹ‚ek w gĂłrÄ™ lub w dĂłĹ‚ podczas ostatniego zdarzenia keyup*/
var isKeyUpDownPressed = false;
/* ostatnia podpowiedĹş uĹĽyta do autouzupeĹ‚niania sĹ‚owa kluczowego*/
var autocompletedKeyword = "";
/* flaga, ktĂłra okreĹ›la, czy sÄ… wyniki dla obecnego sĹ‚owa kluczowego*/
var hasResults = false;
/* identyfikator uĹĽywany do odwoĹ‚ania procesu oceny (metoda Timeout)*/
var timeoutId = -1;
/* obecnie wybrana (myszÄ… lub strzaĹ‚kami) podpowiedĹş*/
var position = -1;
/* obiekt pamiÄ™ci podrÄ™cznej, zawierajÄ…cy podpowiedzi pobrane dla rĂłĹĽnych sĹ‚Ăłw kluczowych*/
var oCache = new Object();
/* minimalna i maksymalna pozycja widocznych podpowiedzi*/
var minVisiblePosition = 0;
var maxVisiblePosition = 9;
// wartoĹ›c true owoduje wyĹ›wietlenie szczegĂłĹ‚owego komunikatu o bĹ‚Ä™dzie
var debugMode = true;
/* obiekt XMLHttpRequest, stworzony do komunikowania siÄ™ z serwerem*/
var xmlHttpGetSuggestions = createXmlHttpRequestObject();
/* funkcja init obsĹ‚uguje zdarzenie onload*/
window.onload = init;

var ukryjPodpowiedzi = false;
//tworzy instancjÄ™ obiektu XMLHttpRequest
function createXmlHttpRequestObject() 
{
  // przechowa odowĹ‚anie do obiektu XMLHttpRequest
  var xmlHttp;
  // powinno zadziaĹ‚aÄ‡ dla wszystkich przeglÄ…darem z wyjÄ…tkiem IE6 i starszych
  try
  {
    // prĂłbuje utworzyÄ‡ obiekt XMLHttpRequest
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // zakĹ‚adajÄ…c, ĹĽe IE6 lub starsza
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
      "MSXML2.XMLHTTP.5.0",
      "MSXML2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP",
      "Microsoft.XMLHTTP");
    // prĂłbuje wszystkie wartoĹ›ci progId, aĹĽ jedna zadziaĹ‚a
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // prĂłbuje stworzyÄ‡ obiekt XMLHttpRequest
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  // zwraca utworzony obiekt lub wyĹ›wietla komunikat o bĹ‚Ä™dzie
  if (!xmlHttp)
    alert("BĹ‚Ä…d podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}
/* funkcja inicjujÄ…ca stronÄ™*/
function init() 
{  
  // pobiera element kontrolujÄ…cy sĹ‚owo kluczowe podane na wejĹ›ciu
  var oKeyword = document.getElementById("keyword");    
  // zapobiega uruchomieniu domyĹ›lnego autouzupeĹ‚niania przeglÄ…darki
  oKeyword.setAttribute("autocomplete", "off");  
  // czyĹ›ci zawartoĹ›Ä‡ sĹ‚owa kluczowego i ustawia kursor w okienku tekstowym
  if( !ukryjPodpowiedzi )	//jezli pokazujemy wynik wyszukiwania nie chcemy zeby miało focus i zeby wyczyściło
  {
	  oKeyword.value = ""; //czysci slowo początkowe
	  oKeyword.focus();
  }
  // czas, po ktĂłrym sprawdza siÄ™, czy nastÄ…piĹ‚y zmiany w polu tekstowym
  setTimeout("checkForChanges()", 500);
} 
/* funkcja, ktĂłra dodaje sĹ‚owo kluczowe do tablicy wartoĹ›ci */
function addToCache(keyword, values)
{
  // twrzy nowy wpis w tablicy pamiÄ™ci podrÄ™cznej
  oCache[keyword] = new Array();
  // dodaje nowe wartoĹ›ci sĹ‚Ăłw kluczowych do pamiÄ™ci
  for(i=0; i<values.length; i++)
    oCache[keyword][i] = values[i];
  
  
}
/* funkcja, ktĂłra sprawdza, czy sĹ‚owo kluczowe jest juĹĽ w pamiÄ™ci lub prĂłbuje znaleĹşÄ‡ najdĹ‚uĹĽsze przedrostki z pamiÄ™ci do niego pasujÄ…ce. NastÄ™pnie dodaje je do pamiÄ™ci, jako odpowiadajÄ…ce wpisanemu sĹ‚owu kluczowemu */
function checkCache(keyword)
{
  // sprawdza, czy sĹ‚owo kluczowe jest juĹĽ w pamiÄ™ci
  if(oCache[keyword])
	  return true;

  // nie znaleziono wyrazenia w pamieci cache
  return false;
}

/* poczÄ…tkuje ĹĽÄ…danie HTTP, w celu pobrania podpowiedzi dla wpisanego sĹ‚owa kluczowego */
function getSuggestions(keyword) 
{  
  /* kontynuuje, jeĹ›li wpisano jakieĹ› znaki i ostatnio wciĹ›niÄ™tym klawiszem nie byĹ‚a jedna z pionowych strzaĹ‚ek*/
  if(keyword.length > 0 /*!= ""*/ && !isKeyUpDownPressed)
  {
    // sprawdza, czy sĹ‚owo jest w pamiÄ™ci
    isInCache = checkCache(keyword);
    // jeĹ›li jest...
    if(isInCache == true)          
    {   
      // pobiera wyniki z pamiÄ™ci
      httpRequestKeyword=keyword;
      userKeyword=keyword;     
      // wyĹ›wietla wyniki 
      displayResults(keyword, oCache[keyword]); 
    }
    // jeĹ›li go nie ma w pamiÄ™ci, wysyĹ‚a noĹĽe ĹĽÄ…danie HTTP
    else    
    {    
      if(xmlHttpGetSuggestions)
      { 
        try
        {
          /* jeĹ›li obiekt XMLHttpRequest nie jest zajÄ™ty obsĹ‚ugÄ… poprzedniego ĹĽÄ…dnia... */
          if (xmlHttpGetSuggestions.readyState == 4 || 
              xmlHttpGetSuggestions.readyState == 0) 
          {    
            httpRequestKeyword = keyword;
            userKeyword = keyword;
            xmlHttpGetSuggestions.open("GET", getFunctionsUrl + encode(keyword), true);
            xmlHttpGetSuggestions.onreadystatechange = handleGettingSuggestions; 
            xmlHttpGetSuggestions.send(null);
          }
          // jeĹ›li jest zajÄ™ty...
          else
          {
            // pobiera sĹ‚owo, ktĂłre wpisaĹ‚ uĹĽytkownik
            userKeyword = keyword;
            // czyĹ›ci poprzednio ustawione czasy
            if(timeoutId != -1)
              clearTimeout(timeoutId); 
            // ponawia prĂłbÄ™ po 0.5 sekundy     
            timeoutId = setTimeout("getSuggestions(userKeyword);", 500);
          }
        }
        catch(e)
        {
          displayError("Nie mogÄ™ poĹ‚Ä…czyÄ‡ siÄ™ z serwerem:\n" + e.toString());
        }
      }
    }    
  }
}
/* przeksztaĹ‚ca wszystkie obiekty potomne wÄ™zĹ‚a XML na tablicÄ™*/
function xmlToArray(resultsXml)
{
  // poczÄ…tkuje zmiennÄ… resultsArray
  var resultsArray= new Array();  
  // przeszukuje w pÄ™tli wszystkie wÄ™zĹ‚y XML, pobierajÄ…c ich zawartoĹ›Ä‡
  for(i=0;i<resultsXml.length;i++)
  {  
	  resultsArray[i] = new Array();
	  resultsArray[i]['nazwa']= resultsXml.item(i).firstChild.data+' <span class="mWKr">'+resultsXml.item(i).getAttribute("kraj")+'</span><span class="mWLok"> '+resultsXml.item(i).getAttribute("lokalizacja")+'</span><br/><span class="mWTagi">'+resultsXml.item(i).getAttribute("tagi")+"</span>";
	  resultsArray[i]['id'] = resultsXml.item(i).getAttribute("id");
	  resultsArray[i]['liczbaZdjec'] = resultsXml.item(i).getAttribute("liczbaZdjec"); 
	  resultsArray[i]['liczbaOdslon'] = resultsXml.item(i).getAttribute("liczbaOdslon"); 
  }
  // zwraca zawartoĹ›Ä‡ wÄ™zĹ‚a w postaci tablicy
  return resultsArray;
}
/*  obsĹ‚uguje odpowiedĹş serwera, zawierajÄ…cÄ… podpowiedzi dla ĹĽÄ…danego sĹ‚owa kluczowego */
function handleGettingSuggestions() 
{
  //po ukoĹ„czeniu procesu, decyduje co zrobiÄ‡ z otrzymanymi danymi
  if (xmlHttpGetSuggestions.readyState == 4) 
  {
    // tylko jeĹ›li status ĹĽÄ…dania HTTP jest "OK"
    if (xmlHttpGetSuggestions.status == 200) 
    { 
      try
      {
        // przetwarza odpowiedĹş serwera
        updateSuggestions();
      }
      catch(e)
      {
        // wyĹ›wietla komunikat o bĹ‚Ä™dzie
        displayError(e.toString()); 
      }  
    } 
    else
    {
      displayError("WystÄ…piĹ‚ problem podczas pobierania danych:\n" +
        xmlHttpGetSuggestions.statusText);
    }       
  }
}

	



/* funkcja przetwarzajÄ…ca odpowiedĹş serwera */
function updateSuggestions()
{
  // pobiera odpowiedĹş serwera
  var response = xmlHttpGetSuggestions.responseText;
  // bĹ‚Ä…d serwera?
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0
    || response.length == 0)
    throw(response.length == 0 ? "Void server response." : response);
  // pobiera element dokumentu
  response = xmlHttpGetSuggestions.responseXML.documentElement;
  // zakĹ‚ada nowÄ… tablicÄ™ z nazwami funkcji
  var nameArray = new Array();
  // sprawdza, czy sÄ… wyniki dla szukanego sĹ‚owa kluczowego
  if(response.childNodes.length)
  {
    /* pobieramy nowe nazwy funkcji z pliku XML w postaci tablicy */
    nameArray= xmlToArray(response.getElementsByTagName("name"));       
  }
  // sprawdza, czy sÄ… juĹĽ poszukiwane inne sĹ‚owa kluczowe 
  if(httpRequestKeyword == userKeyword)    
  {
    // wyĹ›wietla tablicÄ™ wynikĂłw
    displayResults(httpRequestKeyword, nameArray);
  }
  else
  {
    // dodaje wyniki do pamiÄ™ci
    // nie trzeba wyĹ›wietlaÄ‡ wynikĂłw, poniewaĹĽ sÄ… juĹĽ niepotrzebne
    addToCache(httpRequestKeyword, nameArray); 
  }
}

/* zapeĹ‚nia listÄ™ podpowiedziami*/
function displayResults(keyword, results_array) 
{  
	//test
	/*
	var key2 = keyword;
	var wyniki = '#';
	for(var t=0; t<results_array.length; t++)
		wyniki = ''.concat(wyniki).concat(';').concat(results_array[t]);
	document.getElementById('test').value = document.getElementById('test').value.concat(keyword).concat(':').concat(results_array.length).concat(' ').concat(wyniki).concat('\n');
	*/
   
  // jeĹ›li poszukiwane sĹ‚owo kluczowe nie znajduje siÄ™ w pamiÄ™ci, dodaje je do niej
  if(!oCache[keyword] && keyword)
    addToCache(keyword, results_array);
if( !ukryjPodpowiedzi )
{
  //rozpoczyna tworzenie tabeli HTML, w ktĂłrej umieĹ›cimy wyniki
  var div = "<table class='suggest'>";
  // jeĹ›li tablica wynikĂłw jest pusta, wyĹ›wietla komunikat
  if(results_array.length == 0)
  {
    // ustawia flagÄ™ braku wynikĂłw i zeruje licznik
    hasResults = false;
    suggestions = 0;
  }
  // wyĹ›wietla wyniki
  else
  {
    // przestawia indeks wyrĂłĹĽnionej podpowiedzi
    position = -1;
    // przestawia flagÄ™ okreĹ›lajÄ…cÄ…, czy wciĹ›niÄ™to ktĂłrÄ…Ĺ› ze strzaĹ‚ek
    isKeyUpDownPressed = false;
    /* ustawia flagÄ™ informujÄ…cÄ… o dopasowania funkcji do podanego sĹ‚owa kluczowego */
    hasResults = true;
    // pobiera z pamiÄ™ci liczbÄ™ wynikĂłw
   
 try{ 
	 //TUTAJ JEST JAKIĹš MAĹ�Y BUG czasem przy caĹ‚kowitym wymazaniu wyskakuje, ĹĽe oCache[keyword] nie moĹĽna bo keyword jest = ''
    suggestions = oCache[keyword].length;  
 }catch(e)
 {
	 suggestions = 0;
 }
    
  //mogÄ… byÄ‡ wyrazy pasujÄ…ce ale rodzielone np. WODOSPAD kamienczyka SZKLARSKA.....
    //zamienia na pojedyncze spacje
    var tempPyt = httpRequestKeyword;
    tempPyt = tempPyt.replace(/\s+/g, ' ');
    //usuwa na poczatku i na koncu spacje
    tempPyt = tempPyt.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    var tabPyt=tempPyt.split(" "); 
    
    // przeglÄ…da w pÄ™tli wyniki i tworzy ich listÄ™ w HTML
    for (var i=0; i<suggestions;/*oCache[keyword].length;*/ i++) 
    {  
    	// pobiera bieĹĽÄ…cÄ… nazwÄ™ funkcji
    	crtFunction = oCache[keyword][i];
    	crtFunction = oCache[keyword][i]['nazwa'];
    	var liczbaZdjec = oCache[keyword][i]['liczbaZdjec']; 
    	var liczbaOdslon = oCache[keyword][i]['liczbaOdslon'];  
    	var idMiejsca = oCache[keyword][i]['id']; 
      
    	// zaczyna tworzyÄ‡ rzÄ…d tabeli HTML, ktĂłry zawiera odnoĹ›nik do oficjalnej strony z pomocÄ… dotyczÄ…cÄ… szukanej funkcji
      	div += "<tr id='tr" + i + "'   onmouseover='handleOnMouseOver(this);' " +
        ">" + '<td onclick="wyszukaj(this);" id="td' + i + '" class="miniWyszukiwarkaPodpowiedz">';
      
  
      	var tempSug = crtFunction;

      
   
		for( var k=0; k<tabPyt.length; k++)
		{
			//problem bo "<span>" tez posiada litery i gdy ktos wpisze a to lipa
			//zastapimy wszystkie spany ciÄ…giem ktĂłry nikt raczej nie wpisze 
			tempSug = tempSug.replace( new RegExp('<br/><span class="mWTagi">',"gi"), '~#~#~' ); 
			tempSug = tempSug.replace( new RegExp('<span class="mWLok">',"gi"), '~#~~#~' ); 
			tempSug = tempSug.replace( new RegExp('<span class="mWKr">',"gi"), '~#~~~#~' ); 
			tempSug = tempSug.replace( new RegExp('</span>',"gi"), '~##~' );//jako koniec </span>
			
			// pogrubimay wszystko dopasowane poza tagami
			tempSug = tempSug.replace( new RegExp(tabPyt[k],"gi"), '<b>'+tabPyt[k]+'</b>' );   	
			
			//przywracamy style
			tempSug = tempSug.replace( new RegExp('~#~#~',"gi"), '<br/><span class="mWTagi">' ); 
			tempSug = tempSug.replace( new RegExp('~#~~#~',"gi"), '<span class="mWLok">' ); 
			tempSug = tempSug.replace( new RegExp('~#~~~#~',"gi"), '<span class="mWKr">' ); 
			tempSug = tempSug.replace( new RegExp('~##~',"gi"), '</span>' );
		}	   
		//tempSug = tempSug.replace( new RegExp(httpRequestKeyword,"gi"), '<b>'+httpRequestKeyword+'</b>' );   
		div += tempSug + "</td><td id='td_" + i + "' class='miniWyszukiwarkaPodpowiedzInfo'><div id='div" + i + "' class='miniWyszukiwarkaPodpowiedzInfo'><table cellpadding='0' cellspacing='0' class='miniWyszukiwarkaPodpowiedzInfo'><tr><td>" + liczbaZdjec + "</td><td style='width:20px;text-align:right;'>&nbsp;&nbsp;zdjęć</td></tr><tr><td>" + liczbaOdslon + "</td><td style='width:20px;text-align:right;padding-left:2px;'>odsłon</td></tr></table></div><div id='div_" + i + "' class='miniWyszukiwarkaPodpowiedzInfoPokazUkryte'><a class='miniWyszukiwarkaButtonPokaz' href='http://"+document.domain+"/miejsca?id="+idMiejsca+"&typeSearch=3'>pokaż</a></div></td></tr>";
    }//for
  }
  // koniec tabeli HTML
  div += "</table>";
  // pobiera obiekty oSuggest i oScroll
  var oSuggest = document.getElementById("suggest");  
  var oScroll = document.getElementById("scroll");
  // przewija na gĂłrÄ™ listy
  oScroll.scrollTop = 0;
  // aktualizuje i wyĹ›wietla listÄ™ podpowiedzi
  oSuggest.innerHTML = div; 
  if( suggestions > 0 )
	  oScroll.style.visibility = "visible";
  else
	  hideSuggestions();
  // jeĹ›li byĹ‚y jakieĹ› wyniki uzupeĹ‚niamy sĹ‚owo kluczowe do wartoĹ›ci pierwszej funkcji
  if(results_array.length > 0)
    autocompleteKeyword();      
  
}//if( !ukryjPodpowiedz)
}

/*return82
 * funckja obsĹ‚ugujÄ…ca wybranie czegoĹ› z listy
 */
function wyszukaj(oTr)
{
	//alert('szukam');
	//alert(oTr.innerHTML);
	updateKeywordValue(oTr);
	hideSuggestions();
	//wysyla formularz wyszukiwarki
	document.getElementById('typeSearch').value = 2;
	document.getElementById('formMiniWyszukiwarka').submit();
	
}




/* funkcja, ktĂłra okresowo sprawdza, czy wprowadzono zmiany w oknie tekstowym */
function checkForChanges()
{
  // pobiera obiekt sĹ‚owa kluczowego
  var keyword = document.getElementById("keyword").value;
  
  //usuwamy kilkukrotne spacje
  keyword = keyword.replace(/\s+/g, ' ');
  //usuwamy spacje z lewej Ltrim
  keyword = keyword.replace(/^\s+/,'');

  
  
  // sprawdza, czy sĹ‚owo kluczowe jest puste
  if(keyword == ""  || keyword == " ")
  {
    // ukrywa podpowiedzi
    hideSuggestions();
    // czyĹ›ci sĹ‚owo kluczowe
    userKeyword="";
    keyword = "";
    httpRequestKeyword="";
  }
  // ustawia licznik czasu dla nowego sprawdzenia
  setTimeout("checkForChanges()", 500);
  // sprawdza, czy wprowadzono zmiany 
  if((userKeyword != keyword) && (autocompletedKeyword != keyword) &&
    (!isKeyUpDownPressed))
    // aktualizuje podpowiedĹş
    getSuggestions(keyword);
}

/* funkcja obsĹ‚ugujÄ…ca wciĹ›niÄ™cie klawisza*/
function handleKeyUp(e) 
{
  // pobiera zdarzenie
  e = (!e) ? window.event : e;
  // pobiera adresata zdarzenia
  target = (!e.target) ? e.srcElement : e.target;
  if (target.nodeType == 3) 
    target = target.parentNode;
  // pobiera kod znaku naciĹ›niÄ™tego klawisza
  code = (e.charCode) ? e.charCode :
       ((e.keyCode) ? e.keyCode :
       ((e.which) ? e.which : 0));
  // sprawdza, czy zdarzenie byĹ‚o typu  keyup
  if (e.type == "keyup") 
  {    
    isKeyUpDownPressed =false; 
    // sprawdza, czy pojawiĹ‚ siÄ™ ktĂłryĹ› z waĹĽnych dla aplikacji znakĂłw
    if ((code < 13 && code != 8) || (code >=14 && code < 32) ||
      (code >= 33 && code <= 46 && code != 38 && code != 40) ||
      (code >= 112 && code <= 123)) 
    {
      // ignoruje pozostaĹ‚e znaki
    }
    else
    /* po wciĹ›niÄ™ciu klawisza Enter, przechodzi do strony pomocy PHP dla danej funkcji */
    if(code == 13)
    {
      // sprawdza, czy jakaĹ› funkcja jest wĹ‚aĹ›nie wybrana
      if(position>=0)
      {
    	/* return82 */
    	//oTr=document.getElementById("tr"+(position));
    	oTD = document.getElementById("td"+(position));
    	//updateKeywordValue(oTr);
    	wyszukaj(oTD);
    	
        //location.href = document.getElementById("a" + position).href;
      }        
    }        
    else
    // po naciĹ›niÄ™ciu strzaĹ‚ki w dĂłĹ‚ przechodzi do kolejnej podpowiedzi
      if(code == 40)
      {                   
        newTR=document.getElementById("tr"+(++position));
        newTD = document.getElementById("td"+(position));
        oldTR=document.getElementById("tr"+(--position));
        
        // usuwa stary wybĂłr
        if(position>=0 && position<suggestions-1)
        {
          oldTR.className = "";
          //ukrywamy przycisk pokaz
          document.getElementById("div" + position ).className = "miniWyszukiwarkaPodpowiedzInfo";
      	  document.getElementById("div_" + position ).className = "miniWyszukiwarkaPodpowiedzInfoPokazUkryte";
        }  
        // wybiera nowÄ… podpowiedĹş i aktualizuje sĹ‚owo kluczowe
        if(position < suggestions - 1)
        {
          newTR.className = "highlightrow";
          updateKeywordValue(newTD);
          position++;         
          //aktualizujemy przycisk pokaz
          document.getElementById("div" + position ).className = "miniWyszukiwarkaPodpowiedzInfoUkryte";
          document.getElementById("div_" + position ).className = "miniWyszukiwarkaPodpowiedzInfoPokaz";
        }     
        e.cancelBubble = true;
        e.returnValue = false;
        isKeyUpDownPressed = true;        
        // przewija podpowiedzi w dĂłĹ‚, jeĹ›li widoczne okno nie jest juĹĽ aktualne
        if(position > maxVisiblePosition)
        {   
          oScroll = document.getElementById("scroll");
          oScroll.scrollTop += 18;
          maxVisiblePosition += 1;
          minVisiblePosition += 1;
        }
      }
      else
      // naciĹ›niÄ™cie strzaĹ‚ki w gĂłÄ™ przenosi nas do poprzedniej podpowiedzi
      if(code == 38)
      {       
        newTR=document.getElementById("tr"+(--position));
        newTD = document.getElementById("td"+(position));
        oldTR=document.getElementById("tr"+(++position));
        
        // usuwa stare zaznaczenie
        if(position>=0 && position <= suggestions - 1)
        {       
          oldTR.className = "";
          //ukrywamy przycisk pokaz
          document.getElementById("div" + position ).className = "miniWyszukiwarkaPodpowiedzInfo";
      	  document.getElementById("div_" + position ).className = "miniWyszukiwarkaPodpowiedzInfoPokazUkryte";
        }
        // zaznacza nowÄ… podpowiedĹş i aktualizuje sĹ‚owo kluczowe
        if(position > 0)
        {
          newTR.className = "highlightrow";
          updateKeywordValue(newTD);
          position--;
          //aktualizujemy przycisk pokaz
          document.getElementById("div" + position ).className = "miniWyszukiwarkaPodpowiedzInfoUkryte";
          document.getElementById("div_" + position ).className = "miniWyszukiwarkaPodpowiedzInfoPokaz";
          // przewija okno w gĂłrÄ™, jeĹ›li dane w nim sÄ… juĹĽ nieaktualne
          if(position<minVisiblePosition)
          {
            oScroll = document.getElementById("scroll");
            oScroll.scrollTop -= 18;
            maxVisiblePosition -= 1;
            minVisiblePosition -= 1;
          }   
        }     
        else
          if(position == 0)
          {    position--;
          	//d.k przywracamy sĹ‚owo wpisane  w input
          	document.getElementById("keyword").value = userKeyword;
        	//alert('zero12');
          }
        e.cancelBubble = true;
        e.returnValue = false;
        isKeyUpDownPressed = true;  
      }     
  }
}

/*funkcja pobierająca jedną podopiwedz z tabeli i oczyszcajaca z tagów - zostawia sam tekst podpowiedzi */
function getTekstPodpowiedziFromSuggestBezTagow(oTr)
{
	var strWord = "";
	if( oTr )
	{	
		strWord = oTr.innerHTML.toString();
		strWord = strWord.replace( new RegExp('<span class="mWLok">',"gi"), '' );
		strWord = strWord.replace( new RegExp('<span class=mWLok>',"gi"), '' ); // IE
		strWord = strWord.replace( new RegExp('<span class="mWKr">',"gi"), '' );
		strWord = strWord.replace( new RegExp('<span class=mWKr>',"gi"), '' ); //IE
		strWord = strWord.replace( new RegExp('<span class="mWTagi">',"gi"), '' );
		strWord = strWord.replace( new RegExp('<span class=mWTagi>',"gi"), '' ); //IE
		strWord = strWord.replace( new RegExp("<br>","gi"), ' ' );
		strWord = strWord.replace( new RegExp('</span>',"gi"), '' );
		strWord = strWord.replace( new RegExp("<b>","gi"), '' );
		strWord = strWord.replace( new RegExp("</b>","gi"), '' );
	}
	return strWord;	
}



/* funkcja uzupeĹ‚niajÄ…ca sĹ‚owo kluczowe do waroĹ›ci wybranej podpowiedzi */
function updateKeywordValue(oTr)
{ //alert(oTr.innerHTML);
  
  
  // pobiera obiekt sĹ‚owa kluczowego
  var oKeyword = document.getElementById("keyword");

  var tekstPodpowiedziFromSuggestBezTagow = getTekstPodpowiedziFromSuggestBezTagow(oTr);
  oKeyword.value = tekstPodpowiedziFromSuggestBezTagow;
  
  
  autocompletedKeyword = tekstPodpowiedziFromSuggestBezTagow;
  
}
/* funkcja usuwajÄ…ca styl podpowiedzi */
function deselectAll()
{ 
  for(i=0; i<suggestions; i++)
  {
    var oCrtTr = document.getElementById("tr" + i);
    oCrtTr.className = "";    
    //ukrywamy przycisk pokaz
    document.getElementById("div" + i ).className = "miniWyszukiwarkaPodpowiedzInfo";
	document.getElementById("div_" + i ).className = "miniWyszukiwarkaPodpowiedzInfoPokazUkryte";
  }
}
/* funkcja obsĹ‚ugujÄ…ca pojawienie siÄ™ kursora myszy w obszarze podpowiedzi */
function handleOnMouseOver(oTr)
{
  deselectAll();  
  oTr.className = "highlightrow";  
  position = oTr.id.substring(2, oTr.id.length);
  document.getElementById("div" + position ).className = "miniWyszukiwarkaPodpowiedzInfoUkryte";
  document.getElementById("div_" + position ).className = "miniWyszukiwarkaPodpowiedzInfoPokaz";
  
  
}
/* funkcja obsĹ‚ugujÄ…ca wyjĹ›cie kursora myszy z obszaru podpowiedzi */
function handleOnMouseOut(oTr)
{
  //oTr.className = "";   
  //position = -1;
	//position2 bo nie wiem czy coś nie zamiesza w zmiennej poistion która może być wykorzystywana
	/*
	position2 = oTr.id.substring(2, oTr.id.length);
	document.getElementById("div" + position2 ).className = "miniWyszukiwarkaPodpowiedzInfo";
	document.getElementById("div_" + position2 ).className = "miniWyszukiwarkaPodpowiedzInfoPokazUkryte";
	*/
}

function handleFocus()
{
	//alert(document.activeElement.id);
	//funkcja ma 2 zadania
	//pokazanie ponownie podpowiedzi gdy pole odzyskało focus
	//odblokowanie pokazywania podpowiedzi (zablokowane żeby nie pkazywać podpowiedzi gdy pokazane są wyniki wyszukiwania)
	if( ukryjPodpowiedzi )
	{	
		ukryjPodpowiedzi = false;
	}
	if( document.getElementById("scroll").style.visibility == "hidden" )
	{	
		userKeyword = "";
	}
}

/* funkcja sterujÄ…ca Ĺ‚aĹ„cuchem */
function encode(uri) 
{
  if (encodeURIComponent) 
  {
    return encodeURIComponent(uri);
  }

  if (escape) 
  {
    return escape(uri);
  }
}
/* funkcja ukrywajÄ…ca warstwÄ™ z popdpowiedziami */
function hideSuggestions()
{
  var oScroll = document.getElementById("scroll");
  oScroll.style.visibility = "hidden";  
}

/*funkcja ktora sprawdza czy kliknieto poza obszar podpowiedzi i czy nie w pole input */
function klikPozaObszar()
{
	if( document.activeElement.id != 'keyword' )
		hideSuggestions();
}



/* funkcja, ktĂłra wybiera obszar w obiekcie tekstowym, przekazywanym jako jej parametr */
function selectRange(oText, start, length)
{  
  // sprawdz rodzaj przeglÄ…darki - IE czy FF
  if (oText.createTextRange) 
  {
    //IE
    var oRange = oText.createTextRange(); 
    oRange.moveStart("character", start); 
    oRange.moveEnd("character", length - oText.value.length); 
    oRange.select();
  }
  else 
    // FF
    if (oText.setSelectionRange) 
    {
      oText.setSelectionRange(start, length);
    } 
  oText.focus(); 
}
/* funkcja uzupeĹ‚niajÄ…ca wpisane sĹ‚owo kluczowe */
function autocompleteKeyword()
{
/*	
  //pobiera obikt sĹ‚owa kluczowego
  var oKeyword = document.getElementById("keyword");
  // zeruje pozycjÄ™ zaznaczonej podpowiedzi
  position=0;
  // usuwa zaznacznie ze wszystkich odpowiedzi
  deselectAll();
  // podĹ›wietla wybranÄ… podpowiedĹş
  document.getElementById("tr0").className="highlightrow";  
  // uzupeĹ‚nia sĹ‚owo kluczowe do podpowiedzi
  updateKeywordValue(document.getElementById("tr0"));  
  // stosuje odpowiedni styl 
  selectRange(oKeyword,httpRequestKeyword.length,oKeyword.value.length);  
  // ustawia uzupeĹ‚nione sĹ‚owo jako wartoĹ›Ä‡ sĹ‚owa kluczowego
  autocompletedKeyword=oKeyword.value;
 */
}
/* funkcja wyĹ›wietlajÄ…ca komunikat o bĹ‚Ä™dzie */
function displayError(message)
{
  // wyĹ›wietla komunikat bĹ‚Ä™du - bardziej szczegĂłĹ‚owy jeĹ›li debugMode ma wartoĹ›Ä‡ true
  alert("BĹ‚Ä…d podczas dostÄ™pu do serwera! " + (debugMode ? "\n" + message : ""));
}


function ustawTypeSearch(){
	//jeżeli pozycja >0 i tekst w polu input taki sam jak z pozycji wybranej oznacza ze ktos wybrał pozycje i dał enter(bez modyfikacji
	if( position > -1 )
	{
		if( document.getElementById("td"+(position)) )
		{	
			var tekstTD = document.getElementById("td"+(position));
			var tekst = getTekstPodpowiedziFromSuggestBezTagow(tekstTD);
			if( document.getElementById("keyword").value == tekst )			
				document.getElementById('typeSearch').value = 2;
		}
	}
	return true;
}


