/* Jeee JavaScript */
/////////////////////////////////////////////////////////////////////////////
var Acordeon = {
    menu: null,
    definitionLists: null,
    init : function() {
        Acordeon.menu = document.getElementById("menu") ;
        Acordeon.definitionLists = Acordeon.menu.getElementsByTagName("dl");
        // <dt><a>..</a></dt>
        for (var i=0; i<Acordeon.definitionLists.length ; i++) {
            Acordeon.hide(Acordeon.definitionLists[i]);
            var definitionTerms = Acordeon.definitionLists[i].getElementsByTagName("dt");
            for (var j=0; j<definitionTerms.length ; j++) {
                Core.addEventListener(definitionTerms[j],"click",Acordeon.clickListener);
            }
        }
        Acordeon.show(Acordeon.definitionLists[Acordeon.definitionLists.length-1]);
        // <a hrer=""> 
        var linksList=Acordeon.menu.getElementsByTagName("a");
        for (var i=0; i<linksList.length ; i++) {
            if ( linksList[i].parentNode.parentNode.nodeName == "dd" || linksList[i].parentNode.nodeName == "DD" ) {
                Core.addEventListener(linksList[i],"focus",Acordeon.focusListener);
                Core.addEventListener(linksList[i],"blur",Acordeon.blurListener);
            }
        }
        // <form> <input ...>
        var linksList=Acordeon.menu.getElementsByTagName("input");
        for (var i=0; i<linksList.length ; i++) {
            Core.addEventListener(linksList[i],"focus",Acordeon.focusListener);
            Core.addEventListener(linksList[i],"blur",Acordeon.blurListener);
        }
        /*if (location.hash.length>1) {
            var activeFold = document.getElementById(location.hash.substr(1));
            if (activeFold) {
                Acordeon.show(activeFold);
            }
        }*/
    },
    show : function(fold) {
        Core.removeClass(fold,"hide");
        Core.addClass(fold,"show");
    },
    hide : function(fold) {
        Core.removeClass(fold,"show");
        Core.addClass(fold,"hide");
    },
    closeAll: function(list) {
        for (var i=0; i<list.length ; i++) {
            Acordeon.hide(list[i]);
        }
    },
    clickListener: function(event) {
        var fold = this.parentNode;               
        if ( Core.hasClass(fold,"show") ) {
            Acordeon.hide(fold);
        } else {
            Acordeon.show(fold);
        }
        Core.stopPropagation(event);
        Core.preventDefault(event);
    },
    findDL: function(linkA) {
        referenceDL=linkA.parentNode;
        while ( ! ( referenceDL.nodeName == "DL" || referenceDL.nodeName == "dl" ) ) {
            referenceDL=referenceDL.parentNode;
        }
        return referenceDL;
    },
    focusListener: function(event) {
        var fold = Acordeon.findDL(this);
        Acordeon.show(fold);
        Core.stopPropagation(event);
    },
    blurListener: function(event) {
        var fold = Acordeon.findDL(this);
        Acordeon.hide(fold);
        Core.stopPropagation(event);
    },
}

/////////////////////////////////////////////////////////////////////////////
var JujuTitle = {
    linkElement: null,
    titlePram: null,
    titleLinks: [],
    init: function() {
        var links = document.getElementsByTagName("a") ;
        for (var i=0; i<links.length ; i++) {
            linkTitle = links[i].title;
            if (linkTitle && linkTitle.length>0) {
                //links[i].onmouseover= JujuTitle.ukaz;
                //links[i].onmouseout = JujuTitle.neukazuj;
                Core.addEventListener(links[i],"mouseover",JujuTitle.showListener)
                Core.addEventListener(links[i],"focus",JujuTitle.showListener)
                Core.addEventListener(links[i],"mouseout",JujuTitle.hideListener)
                Core.addEventListener(links[i],"blur",JujuTitle.hideListener)
                JujuTitle.titleLinks[JujuTitle.titleLinks.length]=links[i];
            }
        }
    },
    showTitle: function(link) {
        JujuTitle.hideTitle(link);
        var juju = document.createElement("span");
        juju.className="jujutitle";
        var jujuText = document.createTextNode(link.title);
        juju.appendChild(jujuText);
        link.appendChild(juju);
        link._spanRef=juju;
        link.title="";
    },
    animateTitle: function(spanRef) {
       var trans = parseFloat(spanRef.style.opacity) 
       var reference = spanRef;
       if ( trans <= 0.99 ) { 
          trans += 0.01;
          spanRef.style.opacity = trans.toString();
          setTimeout(function(){ JujuTitle.animateTitle(reference)},10);
       }
      //alert(spanRef.style.opacity);
    },
    hideTitle: function(link) {
        if (link._spanRef) {
            link.title = link._spanRef.childNodes[0].nodeValue;
            link.removeChild(link._spanRef);
            link._spanRef=null;
        }
    },
    showListener: function(event) {
        Core.preventDefault(event);
        var link = this;
        this._timer = setTimeout(function(){
            JujuTitle.showTitle(link);
            link._spanRef.style.opacity = "0";
            JujuTitle.animateTitle(link._spanRef);
        },500);
    },
    hideListener: function(event) {
        clearTimeout(this._timer);
        JujuTitle.hideTitle(this);
    }
}

Core.start(Acordeon);
Core.start(JujuTitle);
