/*
        zbiór funkcji do realizacji menu
        oraz innych funkcji javascriptu
*/
function set_menu(trigger,trigered)
{
// kojarzy element wyzwalajacy z pod menu (czyli obszar po najechaniu na ktory ma pojawiac sie element menu
// trigger - obszar wyzwalajacy
// trigered  - obszar ktory sie pojawi
// obydwie wartosc sa nazwami id elementow. Dla obydwoch elementow zapamietywane sa zdarzeania onmouseover, onmouseout jezeli
// sa zdefiniowane wczesniej.
        
        var t1=document.getElementById(trigger);
        var t2=document.getElementById(trigered);
        if (t1 && t2)
        {
            if (t1.onmouseover)                 // zapamietanie istniejacych zdarzej ompuseover, onmouseout
            {
                t1.prevonmouseover=t1.onmouseover;
            }
            if (t1.onmouseout)
            {
                t1.prevonmouseout=t1.onmouseout;
            }
             // zdefiniowane wlasnego zdarzenia ommouseover
            t1.onmouseover=function() {t2.style.visibility='visible'; if (this.prevonmouseover) this.prevonmouseover();}
            
            //zdefiniowane zdarzenia ommouseout - ukrycie pod menu po czasie 10ms.
            t1.onmouseout=function(e) {
                 e=e?e.relatedTarget:event.toElement
                 while(e){if(e==this)return;e=e.parentNode}
                 t2.triggersTimeout=setTimeout(function() {t2.style.visibility='hidden';},10); if (this.prevonmouseout) this.prevonmouseout();}

            if (t2.onmouseover)
            {
                t2.prevonmouseover=t2.onmouseover;      // zapamietania instejacego zdarzenia
            }
            // najechanie myszka na podmenu - anulowanie ukrycia pod menu, funkcja clearTimeout
            t2.onmouseover=function() {clearTimeout(this.triggersTimeout); if (this.prevonmouseover) this.prevonmouseover();}
            t2.onmouseout=ukryj;
        }
}
function set_menu(trigger,trigered)
{
// kojarzy element wyzwalajacy z pod menu (czyli obszar po najechaniu na ktory ma pojawiac sie element menu
// trigger - obszar wyzwalajacy
// trigered  - obszar ktory sie pojawi
// obydwie wartosc sa nazwami id elementow. Dla obydwoch elementow zapamietywane sa zdarzeania onmouseover, onmouseout jezeli
// sa zdefiniowane wczesniej.
        
        var t1=document.getElementById(trigger);
        var t2=document.getElementById(trigered);
        if (t1 && t2)
        {
            if (t1.onmouseover)                 // zapamietanie istniejacych zdarzej ompuseover, onmouseout
            {
                t1.prevonmouseover=t1.onmouseover;
            }
            if (t1.onmouseout)
            {
                t1.prevonmouseout=t1.onmouseout;
            }
             // zdefiniowane wlasnego zdarzenia ommouseover
            t1.onmouseover=function() {t2.style.visibility='visible'; if (this.prevonmouseover) this.prevonmouseover();}
            
            //zdefiniowane zdarzenia ommouseout - ukrycie pod menu po czasie 10ms.
            t1.onmouseout=function(e) {
                 e=e?e.relatedTarget:event.toElement
                 while(e){if(e==this)return;e=e.parentNode}
                 t2.triggersTimeout=setTimeout(function() {t2.style.visibility='hidden';},10); if (this.prevonmouseout) this.prevonmouseout();}

            if (t2.onmouseover)
            {
                t2.prevonmouseover=t2.onmouseover;      // zapamietania instejacego zdarzenia
            }
            // najechanie myszka na podmenu - anulowanie ukrycia pod menu, funkcja clearTimeout
            t2.onmouseover=function() {clearTimeout(this.triggersTimeout); if (this.prevonmouseover) this.prevonmouseover();}
            t2.onmouseout=ukryj;
        }
}

function set_menucolor(id,colorIn,colorOut)
// dla wszyskich tagow td wewnatrz wskazanego elementu id ustawia kolor tla po najechaniu myszka i opuszczeniu
// funkcja zwalnia nas z obowiazku wpisywania dla kazdej komorki td menu tego typu zachowania
{
        var ii,k,i=document.getElementById(id);
        if(i)
        {
                ii=i.getElementsByTagName('td');
                for(k=0;k<ii.length;k++)
                {
                                ii[k].onmouseover=function() {if (this.style) this.style.backgroundColor=colorIn;}
                                ii[k].onmouseout=function()  {if (this.style) this.style.backgroundColor=colorOut;}
                }
        } 
}
function set_menupos(id,l,t)
// dla wskazanego elementu id ustawia jego pozycje left i top (pozycjonowanie absolute lub relative)
{
        var i=document.getElementById(id);
        if (i)
        {
                i.style.top=t;
                i.style.left=l;
        }
}
function set_submenupos(trriger,submenu)
// ustawia polozenia submenu na prawo od elementu wyzwaljacego
{
        var t=document.getElementById(trriger);
        var s=document.getElementById(submenu);
        if (t && s)
        {
                s.style.top=t.offsetTop-1;
                s.style.left=t.offsetLeft+t.offsetWidth;
        }
}
onload=function()
// zdefiniowanie akcji po zaladowaniu strony (to samo co wpisanie w tagu <body> atrybutu onload="", tylko tak jest przejrzysciej
{
        // ustawienie polozenia glownych menu
        set_menupos('divmenu1',0,37);
        set_menupos('divmenu2',112,37);
        set_menupos('divmenu3',224,37);
        set_menupos('divmenu4',336,37);
        set_menupos('divmenu5',448,37);
        set_menupos('divmenu6',560,37);
		set_menupos('divmenu7',672,37);

        // ustawienie kolorow menu po najechaniu myszka
        //set_menucolor('divmenu1','#C8C8C6','#ffffff');
		set_menucolor('divmenu1','#C8C8C6','#ffffff');
        set_menucolor('divmenu2','#C8C8C6','#ffffff');
        set_menucolor('divmenu3','#C8C8C6','#ffffff');
        set_menucolor('divmenu4','#C8C8C6','#ffffff');
        set_menucolor('divmenu5','#C8C8C6','#ffffff');
        set_menucolor('divmenu6','#C8C8C6','#ffffff');
		set_menucolor('divmenu7','#C8C8C6','#ffffff');
        for(i=1;i<8;i++) { set_menu('menu1trig'+i,'divmenu'+i); }
        for(i=1;i<6;i++) { set_menu('tdmenu'+i,'divsubmenu'+i); set_submenupos('tdmenu'+i,'divsubmenu'+i);}
        
        blure('area');  //zabieg kosmetyczny
        blure('a');  //zabieg kosmetyczny
}
function ukryj(e)
// ukrywa element, o ile zdarzenie onmouseout nie pochodzi elementu potomnego
// troche zamieszane, ogolnie chodzi o to aby ukryty zostal odpowiedni element po wywolaniu zdarzenia onMouseOver
// ze wzgledu na sposob obslugi zdarzen (tzw propagacje), nalezy sie upewnic czy rzadny to element wywoal zdajrzenie ( a nie jego element potomny)
{
        e=e?e.relatedTarget:event.toElement
        while(e){if(e==this)return;e=e.parentNode}
        this.style.visibility='hidden'
}
function blure(tag)
// funkcja wyszkuje wszyskie tagi o zadanej nazwie i wstawia do nich onfocus=this.blur()
// zmniejsza objetosc strony, zwalnia od pamietania wstawiania tego czegos, a efekt jest kosmetyczny
{
        var ii,k;
        ii=document.getElementsByTagName(tag);
        for(k=0;k<ii.length;k++)
        {
                ii[k].onfocus=function(){this.blur();}
        }
}

