function navigacia(){
         var idecko;
         var triedaIdecka;
             if (this.id==undefined)
             {//vychodzie pre Vyhadzovace: CSS class tl1-ano; idecko-tl1; triedaIdecka-nie
              //vychodzie pre Strizniky:   CSS class tl2-ano; idecko-tl2; triedaIdecka-nie
             idecko = 'tl1';
             triedaIdecka = "nie";
             }
             else{//id stlaceneho tlacitka
             idecko = this.id;
             triedaIdecka = document.getElementById(idecko).className;
             }

/******************** B1 - prepinanie v paneloch **************************************/
//polia id tlacitok podla panelov
var drieky = new Array ('tl3','tl4','tl5','tl6');
var hlavy = new Array ('tl7','tl8','tl9');
var materialy = new Array ('tl10','tl11','tl12','tl13','tl14');
var upravy = new Array ('tl15','tl16','tl17','tl18','tl19','tl20');

/******************* PLATI LEN PRE VYHADZOVACE (ak tl1 ma triedu "ano" - stlacene) *********************/
if (document.getElementById('tl1').className=="ano"){
/***************** prepinace id "driek" *********************************************/
  if(idecko=='tl3'||idecko=='tl4'||idecko=='tl5'||idecko=='tl6')
  {//moze (ale nemusi) byt stlacene max. 1 tlacitko "tl4" az "tl6"
      for(i in drieky){//kontrola v cykle
        if(triedaIdecka=="ano")
        {//ak je stlacene, vypni ho
        document.getElementById(drieky[i]).className="nie";
        }
        else{//ak nie je zapnute, vypni cely panel (v cykle) a zapni kliknute tlacitko
          for(j in drieky){
          document.getElementById(drieky[j]).className="nie";
          }//koniec vnutorneho cyklu
        document.getElementById(idecko).className="ano";
        }
      }//koniec vonkajsieho cyklu
   }//koniec elseif drieku

/***************** prepinace id "hlava" *********************************************/
  else if(idecko=='tl7'||idecko=='tl8'||idecko=='tl9')
  {//moze (ale nemusi) byt stlacene max. 1 tlacitko "tl7" az "tl9"
      for(i in hlavy){//kontrola v cykle
        if(triedaIdecka=="ano")
        {//ak je stlacene, vypni ho
        document.getElementById(hlavy[i]).className="nie";
        }
        else{//ak nie je zapnute, vypni cely panel (v cykle) a zapni kliknute tlacitko
          for(j in hlavy){
          document.getElementById(hlavy[j]).className="nie";
          }//koniec vnutorneho cyklu
        document.getElementById(idecko).className="ano";
        }
      }//koniec vonkajsieho cyklu
   }//koniec elseif hlavy

/***************** prepinace id "material" *********************************************/
  else if(idecko=='tl10'||idecko=='tl11'||idecko=='tl12'||idecko=='tl13'||idecko=='tl14')
  {//moze (ale nemusi) byt stlacene max. 1 tlacitko "tl10" az "tl14"
      for(i in materialy){//kontrola v cykle
        if(triedaIdecka=="ano")
        {//ak je stlacene, vypni ho
        document.getElementById(materialy[i]).className="nie";
        }
        else{//ak nie je zapnute, vypni cely panel (v cykle) a zapni kliknute tlacitko
          for(j in materialy){
          document.getElementById(materialy[j]).className="nie";
          }//koniec vnutorneho cyklu
        document.getElementById(idecko).className="ano";
        }
      }//koniec vonkajsieho cyklu
   }//koniec elseif materialy

/***************** prepinace id "uprava" *********************************************/
  else if(idecko=='tl15'||idecko=='tl16'||idecko=='tl17'||idecko=='tl18'||idecko=='tl19'||idecko=='tl20')
  {//ostatne tlacitka "tl15" az "tl20"
      for(i in upravy){//kontrola v cykle
        if(triedaIdecka=="ano")
        {//ak je stlacene, vypni ho
        document.getElementById(upravy[i]).className="nie";
        }
        else{//ak nie je zapnute, vypni cely panel (v cykle) a zapni kliknute tlacitko
          for(j in upravy){
          document.getElementById(upravy[j]).className="nie";
          }//koniec vnutorneho cyklu
        document.getElementById(idecko).className="ano";
        }//koniec vnutorneho cyklu
      }//koniec vonkajsieho cyklu
}//koniec else upravy
}//koniec VELKEJ PODMIENKY IF - plati len pre vyhadzovace
else{//ak je stlacene tl2 - STRIZNIKY - vynuluj tlacitka tl3 az tl20
var tlxx;
for(x=3;x<=20;x++){
tlxx = 'tl' + x;
document.getElementById(tlxx).className="nie";
}
}//koniec VELKEJ PODMIENKY ELSE - pre STRIZNIKY

/************************* B2 - poloha prepinacov ***********************************/

//zachytavanie vsetkych stavov tlacitok (na zaciatku prazdne pole, postupne sa pridavaju prvky na koniec)
  var poleVsetkychId = new Array;
//pri dalsej aktivacii tlacitka odoberie prvy prvok, prida posledny,
//takze po cykle pre dvadsat tlacitok, pole obsahuje aktualny stav
        for(i=1;i<=20;i++){
        //stav i-teho tlacitka
        var trieda = document.getElementById('tl'+i).className;
        //pridavam na koniec novy prvok
        poleVsetkychId.push(trieda);
          if (poleVsetkychId.length>20){
              //odoberam prvy prvok
              poleVsetkychId.shift();
          }
        }
        //teraz obsahuje poleVsetkychId aktualny stav tlacitok "ano" a "nie"

/************************* B3 - zlozenie hladanej referencie ***********************************/

//pismeno V alebo S (poleVsetkychId[0] a [1])
var pismeno;
if (poleVsetkychId[0]=='ano'){
pismeno = 'V';
}
else {
pismeno = 'S';
}
//cislo1, moze byt 1 2 3 4  (poleVsetkychId[2] az [5])
var cislo1 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=1;//pociatona hodnota, cyklus ju zvysi na i=2, podobne koncovu na i=5
  while (i <= 4){
  i++;
    if (poleVsetkychId[i]=='ano'){//ak je stlacene urci doplnkove cislo1
    cislo1 = i-1;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo2, moze byt 1 2 3  (poleVsetkychId[6] az [8])
var cislo2 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=5;//pociatona hodnota, cyklus ju zvysi na i=6, podobne koncovu na i=8
  while (i <= 7){
  i++;
    if (poleVsetkychId[i]=='ano'){//ak je stlacene urci doplnkove cislo2
    cislo2 = i-5;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo3, moze byt 1 2 3 4 5 (poleVsetkychId[9] az [13])
var cislo3 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=8;//pociatona hodnota, cyklus ju zvysi na i=9, podobne koncovu na i=13
  while (i <= 12){
  i++;
    if (poleVsetkychId[i]=='ano'){//ak je stlacene urci doplnkove cislo3
    cislo3 = i-8;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo4, moze byt 1 2 3 4 5 6 (poleVsetkychId[14] az [19])
var cislo4 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=13;//pociatona hodnota, cyklus ju zvysi na i=14, podobne koncovu na i=19
  while (i <= 18){
  i++;
    if (poleVsetkychId[i]=='ano'){//ak je stlacene urci doplnkove cislo4
    cislo4 = i-13;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//hladanaReferencia v tvare String, napr. V1x2x
hladanaReferencia = pismeno + cislo1 + cislo2 + cislo3 + cislo4;

/******************** B6 - ROZSVECOVANIE suvisiacich tlacitok ************************/
/**************** vstupy do podfunkcii *************************************/
//1. pole konecnych referencii (konstantne)
var konecneRef = new Array('V1111','V1122','V1123','V1124','V1125','V1136','V1141','V1156',
                           'V1211',
                           'V1311',
                           'V2111','V2122','V2125',
                           'V3111','V3125',
                           'V4111','V4124'
                           );
//2. tlacitka podla panelov - 2D pole (konstantne)
var tlPanelov = new Array (drieky, hlavy, materialy, upravy);

//3. cisla referencie ako pole (len cisla z hladanej referencie, napr. 1,x,2,x)
var hladanePodCisla = new Array(cislo1,cislo2,cislo3,cislo4);

//4. ak hladana sa rovna existujucej
var a;
var hladanaRefExistuje = new Array;
for (a=0;a<=konecneRef.length-1;a++){
    if (hladanaReferencia==konecneRef[a]){
    hladanaRefExistuje.push(konecneRef[a]);
    }
}

//najprv. zhasni vsetky "mozno" z predchadzajucich volieb
//ak uz niektore tlacitka uz maju triedu "mozno" vynuluj ich (nastav na nestlacene)
zhasni("mozno");

// spustenie FUNKCIE E - pocet suvisiacich ref rozhoduje o korigovani hladaneho podcisla
//pole referencii, kt. suvisia s hladanym, napr. V1122, V1211
suvisiaceRef = suvisiace(hladanePodCisla,konecneRef);

/************************* pripady, kt. mozu nastat ************************************/
//mozu korigovat vstup hladanePodCisla a nanovo spustit funkciu suvisiace()
//mozu korigovat hladanu referenciu a suvisiace referencie

//1. ak je stlacene len "tl1" - volba Vxxxx - koriguje suvisiaceRef (su vsetky)
var u;
var podmienka ="";//vychodzia hodnota, aby premenna nebola undefined
    for(u=3;u<=20;u++){
        podmienka += "(document.getElementById(\"tl";
        podmienka += u;
        podmienka += "\").className==\"nie\")&&";
    }
    podmienka += "(document.getElementById(\"tl1\").className==\"ano\")";
if (eval(podmienka)){
           var r;//inkrement
           for (r=3;r<=20;r++){
           tlacxx = 'tl' + r;
           document.getElementById(tlacxx).className = "mozno";
           }//koniec cyklu, ktory nastavuje vsetky tl. na paneloch na mozno
           suvisiaceRef = konecneRef;//vsetky referencie pripadaju do uvahy
}//koniec if pre prazdne navigacne panely

//2. ak pole suvisiacich referencii obsahuje len jednu moznost, zmen ju na stlacene
else if ((suvisiaceRef.length==1)&&(document.getElementById('tl1').className=="ano"))
{//zmen vsetky tlacitka "mozno" na "ano" (lebo existuje len 1 moznost)
           mozneTlacitka = tl_mozno(hladanePodCisla,konecneRef,tlPanelov);
       var r;//inkrement
           for (r=0;r<=mozneTlacitka.length-1;r++){
           document.getElementById(mozneTlacitka[r]).className="ano";
           }
           hladanaReferencia = suvisiaceRef;//hladana je ta jedina suvisiaca
}//koniec if pre jedinu moznost

//0. ak vyber obsahuje vsetky styri tlacitka zodpovedajuce existujucej referencii
else if ((suvisiaceRef.length==0)&&(hladanaRefExistuje.length==1)&&(document.getElementById('tl1').className=="ano"))
{
     suvisiaceRef = hladanaReferencia;//pre vypis poctu najdenych vysledkov
}

//3. ak je pole suvisiacich referencii prazdne, nechaj stlacene len posledne tlacitko a ostatne znova vyrataj
else if ((suvisiaceRef.length==0)&&(document.getElementById('tl1').className=="ano"))
{//zmeni na 1 suvisiacu referenciu a pokracuje ako ked suvisiaceRef.length==1
       var g;
           var ttllxx;
           for (g=3;g<=20;g++){//najprv vynuluj vsetky tlacitka
           ttllxx = 'tl' + g;
           document.getElementById(ttllxx).className = "nie";
           }//koniec cyklu
           document.getElementById(idecko).className = "ano";//aktivne nechaj len posledne
           //potrebujem zistit novu hladanu ref, napr. Vx1xx a pod.(podla tohoto jedineho tlacitka)
           for (var i=0; i<= drieky.length - 1; i++){
               if (idecko==drieky[i]){
               var noveCislo = new Array (i+1,'X','X','X');
               }
               }
           for (var i=0; i<= hlavy.length - 1; i++){
               if (idecko==hlavy[i]){
               var noveCislo = new Array ('X',i+1,'X','X');
               }
               }
           for (var i=0; i<= materialy.length - 1; i++){
               if (idecko==materialy[i]){
               var noveCislo = new Array ('X','X',i+1,'X');
               }
               }
           for (var i=0; i<= upravy.length - 1; i++){
               if (idecko==upravy[i]){
               var noveCislo = new Array ('X','X','X',i+1);
               }
               }
           //vyrataj nanovo suvisiace referencie a rozhodni ako rozsvietit
           suvisiaceRef = suvisiace(noveCislo,konecneRef);
           mozneTlacitka = tl_mozno(noveCislo,konecneRef,tlPanelov);
                         if (suvisiaceRef.length==1){//ak je len 1 moznost
                         var r;//inkrement
                             for (r=0;r<=mozneTlacitka.length-1;r++){
                             document.getElementById(mozneTlacitka[r]).className="ano";
                             }
                             hladanaReferencia = suvisiaceRef;//hladana je ta jedina suvisiaca
                         }
                         else{//alebo ich je viac
                         var r;
                             for (r=0;r<=mozneTlacitka.length-1;r++){
                             document.getElementById(mozneTlacitka[r]).className="mozno";
                             }
                             hladanaReferencia = "V" + noveCislo.join("");
                         }
}//koniec else if

//5. ak je viac suvisiacich referencii
else {
/******************** rozsvecujem "mozno" ***********************/
// spustenie FUNKCIE H - vstupy do podmienok "rozsvecovania"
//pole tlacitiek, kt. maju mat triedu "mozno", napr. tl5, tl12
mozneTlacitka = tl_mozno(hladanePodCisla,konecneRef,tlPanelov);
       var r;//inkrement
           for (r=0;r<=mozneTlacitka.length-1;r++){
           document.getElementById(mozneTlacitka[r]).className="mozno";
           }
}
//kontrola - vstup do php formulara
kontrola1 = hladanaReferencia;
kontrola2 = suvisiaceRef;

/************************* vysledna poloha prepinacov ***********************************/

//zachytavanie vsetkych stavov tlacitok (na zaciatku prazdne pole, postupne sa pridavaju prvky na koniec)
  var poleVyslednychId = new Array;
//pri dalsej aktivacii tlacitka odoberie prvy prvok, prida posledny,
//takze po cykle pre dvadsat tlacitok, pole obsahuje aktualny stav
        for(i=1;i<=20;i++){
        //stav i-teho tlacitka
        var nazovTriedy = document.getElementById('tl'+i).className;
        //pridavam na koniec novy prvok
        poleVyslednychId.push(nazovTriedy);
          if (poleVyslednychId.length>20){
              //odoberam prvy prvok
              poleVyslednychId.shift();
          }
        }
        //teraz obsahuje poleVyslednychId vysledny stav tlacitok "ano" a "nie"

/************************* zlozenie vyslednej referencie ***********************************/

//pismeno V alebo S (poleVyslednychId[0] a [1])
var vysledPismeno;
if (poleVyslednychId[0]=='ano'){
vysledPismeno = 'V';
}
else {
vysledPismeno = 'S';
}
//cislo1, moze byt 1 2 3 4  (poleVyslednychId[2] az [5])
var vysledCislo1 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=1;//pociatona hodnota, cyklus ju zvysi na i=2, podobne koncovu na i=5
  while (i <= 4){
  i++;
    if (poleVyslednychId[i]=='ano'){//ak je stlacene urci doplnkove cislo1
    vysledCislo1 = i-1;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo2, moze byt 1 2 3  (poleVyslednychId[6] az [8])
var vysledCislo2 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=5;//pociatona hodnota, cyklus ju zvysi na i=6, podobne koncovu na i=8
  while (i <= 7){
  i++;
    if (poleVyslednychId[i]=='ano'){//ak je stlacene urci doplnkove cislo2
    vysledCislo2 = i-5;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo3, moze byt 1 2 3 4 5 (poleVyslednychId[9] az [13])
var vysledCislo3 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=8;//pociatona hodnota, cyklus ju zvysi na i=9, podobne koncovu na i=13
  while (i <= 12){
  i++;
    if (poleVyslednychId[i]=='ano'){//ak je stlacene urci doplnkove cislo3
    vysledCislo3 = i-8;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//cislo4, moze byt 1 2 3 4 5 6 (poleVyslednychId[14] az [19])
var vysledCislo4 = 'X';//vychodzia hodnota, ak ju nezmeni cyklus while
  i=13;//pociatona hodnota, cyklus ju zvysi na i=14, podobne koncovu na i=19
  while (i <= 18){
  i++;
    if (poleVyslednychId[i]=='ano'){//ak je stlacene urci doplnkove cislo4
    vysledCislo4 = i-13;//poradie stlaceneho tlacitka v paneli "driek"
    }//koniec if
  }//koniec while

//vysledna Referencia zobrazena v divoch z1, z2, z3, z4 a z5
document.getElementById("z1").innerHTML = vysledPismeno;
document.getElementById("z2").innerHTML = vysledCislo1;
document.getElementById("z3").innerHTML = vysledCislo2;
document.getElementById("z4").innerHTML = vysledCislo3;
document.getElementById("z5").innerHTML = vysledCislo4;

vysledR = vysledPismeno + vysledCislo1 + vysledCislo2 + vysledCislo3 + vysledCislo4;
}//koniec funkcie

