var topIdPref='T';
var subIdPref='S';
var seqItems=1;

var timeMen=0;
var MenPop=new Array();

var CurrPart;
var listTop;

function hiddeMen(n, s)
{
        var obj;
        for(var i=MenPop.length-1; i>=n; i--)
        {
                setView(topIdPref+MenPop[i], 0);
                obj=getObj(subIdPref+MenPop[i]);

                if(isDOM && obj.className.substr(0, 7)=='Active_')
                        obj.className=obj.className.substr(7);
        }
        MenPop.length=n;
        
        if(s && isIE && isDOM && !n)
        {
                var s=document.getElementsByTagName('SELECT');
                for(var i=0; i<s.length; i++)
                        s[i].style.visibility='visible';
        }
}

function overMen(topId, emb, id, x, y)
{
        clearTimeout(timeMen);
        var childId=topIdPref+id;

        hiddeMen(emb);
        if(isDOM)
        {
                var obj=getObj(subIdPref+id);
                //obj.parentNode.children[1].className='Active_'+obj.className
                if(obj.className.substr(0, 7)!='Active_')
                        obj.className='Active_'+obj.className;

                if(emb)
                {
                        obj=getObj(subIdPref+topId);
                        if(obj.className.substr(0, 7)!='Active_')
                                obj.className='Active_'+obj.className;
                }
        }

        var subObj;
        if((MenPop[emb]==id) || !(subObj=getStyle(childId))) return;

        var p=new getPosObj(subIdPref+id);

        if(isIE && document.body.scrollWidth < (p.x+eval(x)+getObj(childId).offsetWidth))
                p.x-=(emb)? eval(x)*2 : p.x+eval(x)+getObj(childId).offsetWidth-document.body.scrollWidth;

        subObj.left=p.x+eval(x);
        subObj.top=p.y+eval(y);
        setView(childId, 1);

        if(isIE && isDOM && !MenPop.length)
        {
                var s=document.getElementsByTagName('SELECT');
                for(var i=0; i<s.length; i++)
                        s[i].style.visibility='hidden';
        }

        MenPop[emb]=id;
}

function clickMen(url, id)
{
        hiddeMen(0);

        window.location.href='index.php?lang='+CurrLang+'&id='+url;
        if(event)
        {
                event.cancelBubble=true;
                event.returnValue=false;
        }
        return false;
}

function outMen(id)
{
        clearTimeout(timeMen);
        timeMen=setTimeout('hiddeMen(0,0)', 1000);
         //(выше время жизни меню после отвода мыши)
        if(isDOM)
        {
                var obj=getObj(subIdPref+id);
                if(obj.className.substr(0, 7)=='Active_')
                        obj.className=obj.className.substr(7);
        }
}

function bindMenu(tp, arg, id, countSub)
{
        if(!arg.length) return;

        for(var i=0; i<arg.length; i++)
        {
                if(typeof(arg[i])!='object') continue;

                var itemId=++seqItems;
                bindMenu(tp, arg[i], itemId, countSub+1);
                arg[i]=new Array(itemId, arg[i].length);
        }

        var c=MenPop[tp].length;
        MenPop[tp][c]=arg;
        MenPop[tp][c].id=id;
        MenPop[tp][c].emb=countSub;
}

function creatMenu()
{
        var arg = creatMenu.arguments;
        var typeMenu = arg[arg.length-2];
        listTop = arg[arg.length-1];
        CurrPart = listTop[listTop.length-1];
        listTop.length-=1;
        arg.length-=2;

        MenPop[typeMenu]=new Array();

        for(var i=0; i<arg.length; i++)
        {
                if(typeof(arg[i])!='object') continue;

                var id=++seqItems;
                bindMenu(typeMenu, arg[i], seqItems, 1);

                arg[i]=new Array(id, arg[i].length);
        }

        document.write(tplMenuRoot[typeMenu](arg) );
        document.close();

        var str='';

        for(var i=0; i<MenPop[typeMenu].length; i++)
        {
                str+=tplMenuChild[typeMenu] (MenPop[typeMenu][i].id, MenPop[typeMenu][i].emb, MenPop[typeMenu][i]);
        }

        MenPop[typeMenu]=new Array();
        MenPop[typeMenu]=str;
}

function creatMenuChild(typeMenu)
{
        if(!MenPop[typeMenu]) return;
        document.write(MenPop[typeMenu]);
        document.close();
        delete(MenPop[typeMenu]);
}
