/**
 * @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);
                }
        }
}




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

Date.prototype.date = function(format)
{
        for (var i = 0, c = '', returner = '', formats = new Object(); i < format.length; i++)
        {
                c = format.charAt(i);
        	if (c == '\\' && i + 1 < format.length) returner += format.charAt(++i);
		else if (typeof formats[c] != 'undefined') returner += formats[c];
		else
		{
			switch (c)
			{
				case 'a':
					formats[c] = this.getHours() < 12 ? 'przed południem' : 'po południu';
					break;
				case 'd':
					var day = this.getDate();
					formats[c] = (day < 10 ? '0' : '') + day;
					break;
				case 'D':
					var days = new Array('Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob');
					formats[c] = days[this.getDay()];
					break;
				case 'E':
					var month = new Array('stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'wrze¶nia', 'paĽdziernika', 'listopada', 'grudnia');
					formats[c] = month[this.getMonth()];
					break;
				case 'F':
					var month = new Array('Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień');
					formats[c] = month[this.getMonth()];
					break;
				case 'g':
					formats[c] = (this.getHours() - 1) % 12 + 1;
					break;
				case 'G':
					formats[c] = this.getHours();
					break;
				case 'h':
					var hour = (this.getHours() - 1) % 12 + 1;
					formats[c] = (hour < 10 ? '0' : '') + hour;
					break;
				case 'H':
					var hour = this.getHours();
					formats[c] = (hour < 10 ? '0' : '') + hour;
					break;
				case 'i':
					var minute = this.getMinutes();
					formats[c] = (minute < 10 ? '0' : '') + minute;
					break;
				case 'j':
					formats[c] = this.getDate();
					break;
				case 'l':
					var days = new Array('Niedziela', 'Poniedziałek', 'Wtorek', '¦roda', 'Czwartek', 'Pi±tek', 'Sobota');
					formats[c] = days[this.getDay()];
					break;
				case 'L':
					formats[c] = this.getFullYear() % 4 ? 0 : 1;
					break;
				case 'm':
					var month = this.getMonth() + 1;
					formats[c] = (month < 10 ? '0' : '') + month;
					break;
				case 'M':
					var month = new Array('Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sień', 'Wrz', 'Paź', 'Lis', 'Gru');
					formats[c] = month[this.getMonth()];
					break;
				case 'n':
					formats[c] = this.getMonth() + 1;
					break;
				case 'O':
					var O = -this.getTimezoneOffset() / 60;
					if (O < 0)
					{
						var sign = '-';
						O = -O;
					}
					else sign = '+';
					formats[c] = sign + (O < 10 ? '0' : '') + O + '00';
					break;
				case 'r':
					formats[c] = this.date('D, d M Y H:i:s O');
					break;
				case 's':
					var second = this.getSeconds();
					formats[c] = (second < 10 ? '0' : '') + second;
					break;
				case 'S':
					if (this.getDate().toString().search(/(^|[02-9])1$/) != -1) formats[c] = '-wszy';
					else if (this.getDate().toString().search(/(^|[02-9])2$/) != -1) formats[c] = '-gi';
					else if (this.getDate().toString().search(/(^|[02-9])3$/) != -1) formats[c] = '-ci';
					else if (this.getDate().toString().search(/(^|[02-9])[78]$/) != -1) formats[c] = '-my';
					else formats[c] = '-ty';
					break;
				case 't':
					var months = new Array(31, this.getFullYear() % 4 ? 28 : 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
					formats[c] = months[this.getMonth()];
					break;
				case 'U':
					formats[c] = Date.parse(this) / 1000;
					break;
				case 'w':
					formats[c] = this.getDay();
					break;
				case 'W':
					var day = this.getDay() - 1;
					if (day == -1) day = 6;
					formats[c] = Math.round((this.date('z') - day + 6) / 7);
					if (formats[c] == 0)
					{
						var date = new Date(this.getFullYear() - 1, 11, 31, 23, 59, 59);
						day = date.getDay() - 1;
						if (day == -1) day = 6;
						formats[c] = Math.round((date.date('z') - day + 6) / 7);
					}
					else
					{
						var date = new Date(this.getFullYear(), 11, 31, 23, 59, 59);
						day = date.getDay() - 1;
						if (day == -1) day = 6;
						if (day < 3 && this.date('z') >= date.date('z') - day) formats[c] = 1;
					}
					break;
				case 'Y':
					formats[c] = this.getFullYear();
					break;
				case 'y':
					formats[c] = this.getFullYear().toString().substring(2);
					break;
				case 'z':
					var months = new Array(31, this.getFullYear() % 4 ? 28 : 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
					formats[c] = this.getDate();
					for (var j = 0, month = this.getMonth(); j < month; j++) formats[c] += months[j];
					break;
				case 'Z':
					formats[c] = -this.getTimezoneOffset() * 60;
					break;
				default:
					formats[c] = c;
					break;
			}
			returner += formats[c];
		}
	}
	
	return returner;
}
