

function drawJSMenu(containerId, hash, path) {
    // ----------- Константы ------------
    var commonClassName = "common";
    var parentClassName = "parent";
    var levelClassPrefix = "level_";
    // ----------- Переменные ------------
    var container = document.getElementById(containerId);
    var html = _class = mouseOverOut = id = "";
    var i;
    var idArray = []
    // ----------- Функции ------------
    // Рекурсивная функция для прохождения по многоуровневому
    // хэшу и формированию HTML-кода меню
    var cicleFunc = function(code, hash, level, parentId, parentOpened) {
        if (typeof level != "undefined" && level != 1)
		{
			if (parentOpened == 1)
			{
				code += "<span id='b" + parentId + "'>\n";
			}
			else
			{
				code += "<span id='b" + parentId + "' style='display:none;'>\n";
			}
		}		
		for (i in hash) {
            var randId = parseInt(Math.random() * 1e10).toString() + parseInt(Math.random() * 1e10);
            _class = ((typeof hash[i][3] != "undefined") ? parentClassName : commonClassName) + " " + levelClassPrefix + level;
            if (typeof hash[i][3] != "undefined") 
			{
                id = " id='a" + randId + "'";
                idArray.push(randId);
            } 
			else id = 0;
			
			var a_class = "a_level_" + level;
            if (level == 1) 
			{
				code += "<table cellpadding='0' cellspacing='0' border='0' style='padding: 0px; margin: 0px;'><tr><td valign='top'><img class='" + _class + "' src=\"src/dot.png\" border=\"0\" /></td>";
				code += "<td valign='top'><a" + (id ? id : "") + " href='" + path + hash[i][0] + "'>" + hash[i][1] + "</a></td></tr></table>\n";
			}
			else
			{
				code += "<div class='" + a_class + "'>&bull;";
				code += "<a" + (id ? id : "") + " href='" + path + hash[i][0] + "'>" + hash[i][1] + "</a><br />\n";
				code += "</div>";
			};
			
            if (typeof hash[i][3] != "undefined") code += cicleFunc(html, hash[i][3], level+1, randId, hash[i][2]);
        }
        if (typeof level != "undefined" && level != 1) code += "</span>\n";
        return code;
    }
    // ----------- Добавление HTML-кода меню на страницу ------------
    html = cicleFunc(html, hash, 1, 0);
    container.innerHTML = html;
    // ----------- Добавление обработчиков событий ------------
	//*
    for (i = 0; i < idArray.length; i++) {
        document.getElementById("a" + idArray[i]).onclick = function() {
            var absId = this.id.substring(1, this.id.length);
			var obj = document.getElementById("b" + absId).style;
			obj.display = (obj.display == "") ? "none" : "";
			return false;
        }
    }
	//*/
}
