/**
 * @author Sławomir Kokłowski {@link http://www.kurshtml.boo.pl}
 * @copyright NIE usuwaj tego komentarza! (Do NOT remove this comment!)
 */

function Menu(id, style, otworz, wysun, czasRozwin, czasZwin, czasOtworz, czasZamknij, nieInicjalizuj)
{
    if (typeof czasRozwin == 'undefined' || czasRozwin < 0) czasRozwin = 25;
    if (typeof czasZwin == 'undefined' || czasZwin < 0) czasZwin = 25;
    if (typeof czasOtworz == 'undefined' || czasOtworz < 0) czasOtworz = 250;
    if (typeof czasZamknij == 'undefined' || czasZamknij < 0) czasZamknij = 500;
    
    if (style)
    {
	if (style.indexOf(':') < 0)
	{
	    document.getElementById(id).className += ' ' + style;
	}
	else
	{
	    style = style.replace(/(^\s+|(\s|;)+$)/g, '').split(/\s*;\s*/);
	    for (var i = 0; i < style.length; i++)
	    {
		style[i] = style[i].split(/\s*:\s*/);
		for (var j = 0, c, property = ''; j < style[i][0].length; j++)
		{
		    c = style[i][0].charAt(j);
		    property += c == '-' ? style[i][0].charAt(++j).toUpperCase() : c.toLowerCase();
		}
		eval('document.getElementById("' + id + '").style.' + property + ' = "' + style[i][1].replace(/"/g, '\\"') + '"');
	    }
	}
    }
    
    for (var i = 0; i < document.getElementById(id).getElementsByTagName('dt').length; i++)
    {
	var dd = new Array();
	var el = document.getElementById(id).getElementsByTagName('dt')[i].nextSibling;
	var nodeName;
	while (el && (nodeName = el.nodeName.toLowerCase()) != 'dt')
	{
	    if (nodeName == 'dd')
	    {
		el._dt = document.getElementById(id).getElementsByTagName('dt')[i];
		if (otworz)
		{
		    el.onmouseover = function()
		    {
			clearTimeout(this._dt._timoutID);
			this._dt._displayed = false;
			this._dt.onclick();
		    }
		    el.onmouseout = function()
		    {
			clearTimeout(this._dt._timoutID);
			var dt = this._dt;
			this._dt._timoutID = setTimeout(function () { dt._displayed = true; dt.onclick(); }, czasZamknij);
		    };
		}
		dd[dd.length] = el;
	    }
	    el = el.nextSibling;
	}
	document.getElementById(id).getElementsByTagName('dt')[i]._dd = dd;
	document.getElementById(id).getElementsByTagName('dt')[i]._timoutID = null;
	document.getElementById(id).getElementsByTagName('dt')[i]._displayed = false;
	document.getElementById(id).getElementsByTagName('dt')[i].onclick = function()
	{
	    clearTimeout(this._timoutID);
	    if (!this._displayed)
	    {
		var el = this.parentNode.getElementsByTagName('dt')[0];
		while (el)
		{
		    if (el.nodeName.toLowerCase() == 'dt' && el != this)
		    {
			el._displayed = false;
			if (czasZwin) display(el, 0);
			else display(el);
		    }
		    el = el.nextSibling;
		}
	    }
	    this._displayed = !this._displayed;
	    if (this._displayed && czasRozwin || !this._displayed && czasZwin) display(this, 0);
	    else display(this);
	};
	if (otworz)
	{
	    document.getElementById(id).getElementsByTagName('dt')[i].onmouseover = function()
	    {
		clearTimeout(this._timoutID);
		var dt = this;
		this._timoutID = setTimeout(function () { dt._displayed = false; dt.onclick(); }, czasOtworz);
	    };
	    document.getElementById(id).getElementsByTagName('dt')[i].onmouseout = function()
	    {
		clearTimeout(this._timoutID);
		var dt = this;
		this._timoutID = setTimeout(function () { dt._displayed = true; dt.onclick(); }, czasZamknij);
	    };
	}
    }
    
    start(document.getElementById(id).getElementsByTagName('dt')[0]);
    
    function start(dt)
    {
	var hide = true;
	var el = dt;
	while (el)
	{
	    var nodeName = el.nodeName.toLowerCase();
	    if (nodeName == 'dt')
	    {
		dt = el;
		hide = true;
	    }
	    if (nodeName == 'dt' || nodeName == 'dd')
	    {
		if (!nieInicjalizuj && el.getElementsByTagName('a').length && el.getElementsByTagName('a')[0].href && unescape(el.getElementsByTagName('a')[0].href) == unescape(window.location.href))
		{
		    el.className = (el.className ? el.className + ' ' : '') + 'active';
		    dt._displayed = true;
		    display(dt);
		    hide = false;
		    var el_parentNode = el.parentNode;
		    while (el_parentNode != document.getElementById(id))
		    {
			if (el_parentNode.nodeName.toLowerCase() == 'dd')
			{
			    var el_sibling = el_parentNode.previousSibling;
			    while (el_sibling)
			    {
				if (el_sibling.nodeName.toLowerCase() == 'dt')
				{
				    el_sibling._displayed = true;
				    display(el_sibling)
				    break;
				}
				el_sibling = el_sibling.previousSibling;
			    }
			}
			el_parentNode = el_parentNode.parentNode;
		    }
		}
	    }
	    if (nodeName == 'dd')
	    {
		if (hide) el.style.display = 'none';
		start(el.getElementsByTagName('dt')[0]);
	    }
	    el = el.nextSibling;
	}
    }
    
    function display(dt, i)
    {
	if (typeof i == 'undefined')
	{
	    for (var i = 0; i < dt._dd.length; i++)
	    {
		dt._dd[i].style.display = dt._displayed ? 'block' : 'none';
		if (!dt._displayed)
		{
		    for (var j = 0; j < dt._dd[i].getElementsByTagName('dt').length; j++)
		    {
			dt._dd[i].getElementsByTagName('dt')[j]._displayed = false;
			display(dt._dd[i].getElementsByTagName('dt')[j]);
		    }
		}
	    }
	}
	else if (i < dt._dd.length)
	{
	    var dir = wysun ? !dt._displayed : dt._displayed;
	    var n = dir ? i : dt._dd.length - 1 - i;
	    dt._dd[n].style.display = dt._displayed ? 'block' : 'none';
	    if (!dt._displayed)
	    {
		for (var j = 0; j < dt._dd[n].getElementsByTagName('dt').length; j++)
		{
		    dt._dd[n].getElementsByTagName('dt')[j]._displayed = false;
		    display(dt._dd[n].getElementsByTagName('dt')[j]);
		}
	    }
	    dt._timoutID = setTimeout(function() { display(dt, i + 1); }, dt._displayed ? czasRozwin : czasZwin);
	}
    }
}