var Nav =
{
  init: function()
  {
    var div = document.getElementById("nav");
    if(div)
    {
      // aktivni polozka
      var body = document.getElementsByTagName("body")[0];
      if(!body.className)
      {
        var liName = body.id;
      }
      else
      {
        var liName = body.className;
      }
      var liNumber = -1;
      switch(liName)
      {
        case "home": liNumber = 0; break;
        case "reseni": liNumber = 1; break;
        case "reference": liNumber = 2; break;
        case "partneri": liNumber = 3; break;
        case "novinky": liNumber = 4; break;
        case "kariera": liNumber = 5; break;
        case "onas": liNumber = 6; break;
        case "kontakty": liNumber = 7;
      }
      var pocitadlo = 0;
      
      var li = div.getElementsByTagName("li");
      for(var i = 0; i < li.length; i++)
      {
        Core.addEventListener(li[i], "mouseover", Nav.mouseover);
        Core.addEventListener(li[i], "mouseout", Nav.mouseout);
        
        if(li[i].firstChild.nodeType == 1)
        {
          Core.addEventListener(li[i].firstChild, "focus", Nav.focus);
          Core.addEventListener(li[i].firstChild, "blur", Nav.blur);
        }
        
        // polozky ktere nikam nevedou
        var link = li[i].getElementsByTagName("a")[0];
        if(link)
        {
          if(link.href.substring(link.href.length-1) == "#")
          {
            Core.addEventListener(link, "click", Nav.prevent);
          }
        }
        
        // polozky 1.urovne
        if(li[i].parentNode.parentNode.id == "nav")
        {
          if(liNumber == pocitadlo)
          {
            Core.addClass(li[i], "on");
          }
          pocitadlo++;
        }
        
        // polozky 2.urovne
        if(li[i].parentNode.parentNode.parentNode.parentNode.id == "nav")
        {
          Core.addClass(li[i].parentNode.parentNode, "arrow");
        }
      }
      
      // prvni polozky 3.urovne a dalsich (pro css)
      var ul = div.getElementsByTagName("ul");
      for(var i = 0; i < ul.length; i++)
      {
        if(ul[i].parentNode.id != "nav" && ul[i].parentNode.parentNode.parentNode.id != "nav")
        {
          var liTop = ul[i].getElementsByTagName("li")[0];
          Core.addClass(liTop, "liTop");
        }
      }
    }
  },
  
  mouseover: function()
  {
    Core.addClass(this, "hover");
  },
  
  mouseout: function()
  {
    Core.removeClass(this, "hover");
  },
  
  focus: function()
  {
    var li = this.parentNode;
    Core.addClass(li, "hover");
    
    while(li.parentNode.parentNode.id != "nav")
    {
      li = li.parentNode.parentNode;
      Core.addClass(li, "hover");
    }
  },
  
  blur: function()
  {
    var li = this.parentNode;
    Core.removeClass(li, "hover");
    
    while(li.parentNode.parentNode.id != "nav")
    {
      li = li.parentNode.parentNode;
      Core.removeClass(li, "hover");
    }
  },
  
  prevent: function(event)
  {
    Core.preventDefault(event);
  }
};

var Opacity = 
{
  init: function()
  {
    var element = Core.getElementsByClass("opacity")[0];
    if(element)
    {
      element.style.visibility = "visible";
      Opacity.frameRate = 25;
      Opacity.steps = 30;
      Opacity.end = 1.0;
      if(document.addEventListener)
      {
        element._opacity = 0.0;
        element._increment = 1.0 / Opacity.steps;
        Opacity.animate(element);
      }
      else if(document.attachEvent)
      {
        element._opacity = 0;
        element._increment = 100 / Opacity.steps;
        Opacity.end = Opacity.end * 100;
        Opacity.animateIe(element);
      }
    }
  },
  
  animate: function(element)
  {
    var newOpacity = element._opacity + element._increment;
    if(newOpacity > Opacity.end)
    {
      newOpacity = Opacity.end;
      Opacity.timer = null;
    }
    else
    {
      Opacity.timer = setTimeout(function()
        {
          Opacity.animate(element);
        }, 1000 / Opacity.frameRate);
    }
    element._opacity = newOpacity;
    element.style.opacity = newOpacity;
  },
  
  animateIe: function(element)
  {
    var newOpacity = element._opacity + element._increment;
    if(newOpacity > Opacity.end)
    {
      newOpacity = Opacity.end;
      Opacity.timer = null;
    }
    else
    {
      Opacity.timer = setTimeout(function()
        {
          Opacity.animateIe(element);
        }, 1000 / Opacity.frameRate);
    }
    element._opacity = newOpacity;
    element.style.filter = "alpha(opacity=" + newOpacity + ")";
  }
};

var TabsNormal =
{
  init: function()
  {
    var tabs = document.getElementById("tabs");
    if(tabs && tabs.className == "normalTabs")
    {
      var currentTab = document.getElementsByTagName("body")[0].id;
      
      //nalezeni aktualniho tabu
      var li = tabs.getElementsByTagName("li");
      for(var i = 0; i < li.length; i++)
      {
        var href = li[i].getElementsByTagName("a")[0].href;
        var tmp = "";
        for(var j = href.length-2; j >= 0; j--)
        {
          if(href.charAt(j) != '/')
            tmp += href.charAt(j);
          else
            break;
        }
        //prevraceni retezce
        var hrefEnd = "";
        for(var j = tmp.length-1; j >= 0; j--)
        {
          hrefEnd += tmp.charAt(j);
        }
        
        if(hrefEnd == currentTab) //pokud se konec adresy shoduje s id v body...
        {
          Core.addClass(li[i], "on");
          
          if(li[i].parentNode.parentNode.getElementsByTagName("ul")[0] && li[i].parentNode.parentNode.id != "tabs")
          {
            TabsNormal.expand(li[i].parentNode.parentNode);
          }
          break;
        }
      }
      
      //akce pro rozbalovaci taby
      var list = tabs.getElementsByTagName("ul")[0];
      var li = list.childNodes;
      for(var i = 0; i < li.length; i++)
      {
        if(li[i].nodeType == 1)
        {
          if(li[i].getElementsByTagName("ul")[0])
          {
            Core.addEventListener(li[i], "click", TabsNormal.clickListener);
            var list2 = li[i].getElementsByTagName("ul")[0];
            Core.addEventListener(list2, "click", TabsNormal.stopPropagation);
          }
        }
      }
    }
  },
  
  clickListener: function(event)
  {
    if(Core.hasClass(this, "expand"))
    {
      TabsNormal.hide(this);
    }
    else
    {
      TabsNormal.hideAll(this);
      TabsNormal.expand(this);
    }
    Core.preventDefault(event);
  },
  
  expand: function(li)
  {
    Core.addClass(li, "expand");
  },
  
  hide: function(li)
  {
    Core.removeClass(li, "expand");
  },
  
  hideAll: function(li)
  {
    var list = li.parentNode;
    var childs = list.childNodes;
    for(var i = 0; i < childs.length; i++)
    {
      if(childs[i].nodeType == 1)
      {
        if(Core.hasClass(childs[i], "expand"))
        {
          TabsNormal.hide(childs[i]);
        } 
      }
    }
  },
  
  stopPropagation: function(event)
  {
    Core.stopPropagation(event);
  }
};

var Tabs =
{
  click: function(link)
  {
    //if(link.className != "tabLink") //pokud jde o zalozku
    //{
      var tab = link.parentNode;
      var tabType = tab.id;
    //}
    
    /*else if(link.className == "tabLink") //pokud jde o odkaz v textu smerujici na nejakou ze zalozek
    {
      var tab = document.getElementById(link.href.substring(link.href.length-4));
      var tabNumber = link.href.charAt(link.href.length-1);
    }*/
    
    
    //texty + nadpisy
    var refs = Core.getElementsByClass("ref");
    for(var i = 0; i < refs.length; i++)
    {
      refs[i].style.display = "none";
    }
    var refTitles = Core.getElementsByClass("refTitle");
    for(var i = 0; i < refTitles.length; i++)
    {
      refTitles[i].style.display = "none";
    }
    
    var currentRefs = Core.getElementsByClass("type" + tabType);
    for(var i = 0; i < currentRefs.length; i++)
    {
      currentRefs[i].style.display = "block"; 
    }
    
    /*//obrazky
    var tabpics = Core.getElementsByClass("tabpics")[0];
    var divs = tabpics.childNodes;
    for(var i = 0; i < divs.length; i++)
    {
      if(divs[i].nodeType == 1)
      {
        divs[i].style.display = "none";
      }
    }
    
    var currentPics = Core.getElementsByClass("tabpic" + tabNumber);
    for(var i = 0; i < currentPics.length; i++)
    {
      currentPics[i].style.display = "block";
    }*/
    
    //taby
    var tabs = document.getElementById("tabs");
    var li = tabs.getElementsByTagName("li");
    for(var i = 0; i < li.length; i++)
    {
      Core.removeClass(li[i], "on");
    }
    
    Core.addClass(tab, "on");
  }
};

var Search =
{
  init: function()
  {
    var searchButton = document.getElementById("searchButton");
    if(searchButton)
    {
      Core.addEventListener(searchButton, "mouseover", Search.mouseover);
      Core.addEventListener(searchButton, "mouseout", Search.mouseout); 
      Core.addEventListener(searchButton, "click", Search.click);
    }
  },
  
  mouseover: function()
  {
    Core.addClass(this, "hover");
  },
  
  mouseout: function()
  {
    Core.removeClass(this, "hover");
  },
  
  click: function(event)
  {
    var searchField = document.getElementById("searchField");
    var searchFieldValue = searchField.value;
    if(searchFieldValue == '')
      Core.preventDefault(event);
  }
};

var H3 =
{
  init: function()
  {
    var content = document.getElementById("content");
    
    if(content)
    {
      var firstH3 = content.getElementsByTagName("h3")[0];
      if(firstH3)
      {
        Core.addClass(firstH3, "first");
      }
    }
  }
};

var PicPopup =
{
  open: function(src, title)
  {
    var baseUrl = "/img.php?";
    var w = 300;
    var h = 300;
    var left = 0;
    var top = 0;
    var url = "" + baseUrl + "&src=" + src + "&title=" + title;
  
    var win = window.open(url, "win", "width=" + w + ", height=" + h + ", left=" + left + ",top=" + top + ", toolbar=no, location=no, status=yes, menubar=no, scrollbars=yes, resizable=yes");
    win.focus();
  },
  
  load: function()
  {
    var loader = document.getElementById("loader");
    loader.style.display = "none";
    
    var popupBox = document.getElementById("popupBox");
    var pic = popupBox.getElementsByTagName("img")[0];
    resizeTo(pic.scrollWidth+54, pic.scrollHeight+149);
    moveTo((window.screen.width - pic.width) / 2, (window.screen.height - pic.height) / 2);
  }
};

var ExpandLink =
{
  init: function()
  {
    var links = Core.getElementsByClass("expandLink");
    for(var i = 0; i < links.length; i++)
    {
      Core.addEventListener(links[i], "click", ExpandLink.click);
    }
  },
  
  click: function(event)
  {
    open(this.href);
    Core.preventDefault(event);
  }
};

var TechTable =
{
  init: function() 
  {
    var table = Core.getElementsByClass("techTable");
    for(var i = 0; i < table.length; i++)
    {
      var tr = table[i].getElementsByTagName("tr");
      for(var j = 0; j < tr.length; j++)
      {
        Core.addEventListener(tr[j], "mouseover", TechTable.mouseover);
        Core.addEventListener(tr[j], "mouseout", TechTable.mouseout);
      }
    }
  },
  
  mouseover: function()
  {
    Core.addClass(this, "hover");
  },
  
  mouseout: function()
  {
    Core.removeClass(this, "hover");
  }
}

Core.start(Nav);
Core.start(TabsNormal);
Core.start(Search);
Core.start(Opacity);
Core.start(H3);
Core.start(ExpandLink);
Core.start(TechTable);
