    var cmenu;
    
    function crv(mass, padd)
    {
        var s = '';                
        var i, k = new Array();
                        
        for (i in mass) k[mass[i]['self']['order']] = mass[i];
        k.sort(function sortnum(a, b) {return a['self']['order'] - b['self']['order']; });        
        
        for (i=0; i < k.length; i++)
            if ((k[i]) && (k[i] != 'indexOf')) 
                s += '<div id="m'+k[i]['self']['id']+'" style="padding-top:15px;" class="imenusitem page-item1">'+
                        '<img  src="./img/edit12.gif" style="width:12px; height:12px; cursor:pointer; padding: 0 0px 0px 5px; margin: -2px 0px 0px 0px;" onclick="elpos = $(this).offset(); openEditLink('+k[i]['self']['id']+');" alt="Редактировать пункт меню" align="left">'+
                        '<img  src="./img/delete12.png" class="png" style="width:12px; height:12px; cursor:pointer; padding: 0 3px 0px 5px; margin: -2px 0px 0px 0px;" onclick="if (confirm(\'Удалить данный пункт меню?\')) delLink('+k[i]['self']['id']+');" alt="Удалить пункт меню" align="left">'+                        
                        '<a class="tomno-ser_menu" style="position:relative; top:-4px; left: '+(padd)+'px;" href="?pageid='+k[i]['self']['block_id']+'&'+(k[i]['self']['params'] ? k[i]['self']['params'] : '')+'">'+ k[i]['self']['name'] +'</a>'+                        
                      '</div>'+crv(k[i]['nodes'],padd+15);
        return s;
    }
    
    function imenusuccess(data)
    {
        
        if (!data) alert('Ошибка выполнения ajax запроса. Пожалуйста обновите страницу.');
    }

    function imenuchange(obj)
    {
        var ser = $.SortSerialize('imenus');
        $.iMax.Mreq('move', {'o': $.iMax.serializePHP(ser.o['imenus']), 'parent': cmenuid}, imenusuccess);              
    }
    
    function createMenu(domid, mass)
    {
        var hm = '<div id="imenus" class="imenussort">'+crv(mass, 5)+'</div>';
        
        if (! (cmenuid == -1))
            hm += '<br/>'+
                    '<img onclick="addLink($(\'#addmenu\').attr(\'value\'), 0, cmenuid)"'+
                    'src="/img/navigate_plus.png" class="png" style="cursor:pointer; position:relative; top: 5px; padding: 0px 0px 0px 5px" />'+
                    '&nbsp;&nbsp;'+
                    '<input id="addmenu" type="text" value="Новый пункт меню" style="position:relative; top:2px;"/><br/><br/>'

        $('#'+domid).html(hm);
        
        $.iMax.addItemSort('imenus');
        $('.imenussort').Sortable(
                                    {                
                                        accept :        'imenusitem',
                                        activeclass:    'linkactiv',
                                        hoverclass :    'itemhover',	        
                                        opacity: 		0.8,
	                                    revert:			false,
	                                    tolerance:	    'pointer',
	                                    onStop: 		imenuchange    
                                    }
	                             );
    }    

//----------------------------------

    function SuccessrAL(data)
    {
        
        if (data)
        {
            //LoadMenu(cmenu, cmenuid);            
        }
        else
            alert('Ошибка добавления меню. Обновите страницу и попробуйте снова.');   
    } 

    function raddLink(name)
    {
        $.iMax.Mreq('addlink', {'name': name, 'block_id': 0, 'parent': 0}, SuccessrAL);
        
    }
//--------------------------------

//----------------------------------

    function SuccessAL(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка добавления пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function addLink(name, block_id, parent)
    {
        $.iMax.Mreq('addlink', {'name': name, 'block_id': block_id, 'parent': parent}, SuccessAL);
        
    }
//--------------------------------
    
//----------------------------------

    function SuccessDL(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка удаления пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function delLink(id)
    {
        $.iMax.Mreq('dellink', {'id': id}, SuccessDL);
        
    }
    
    //--------------------------------
    
    function SuccessEL(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка редактирования пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function renameLink(pars)
    {
        $.iMax.Mreq('renamelink', pars, SuccessEL);
        
    }
    
    //--------------------------------
    
    function SuccessEL(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка редактирования пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function editLink(node)
    {
        $.iMax.Mreq('editlink', {'node': $.iMax.serializePHP(node)}, SuccessEL);
        
    }
    
    //----------------------------------

    function SuccessMU(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка передвижения пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function moveUp(id)
    {
        $.iMax.Mreq('moveup', {'id': id, 'parent': cmenuid}, SuccessMU);
        
    }
    
    //--------------------------------
    
    //----------------------------------

    function SuccessMD(data)
    {
        
        if (data)
        {
            LoadMenu(cmenu, cmenuid);
        }
        else
            alert('Ошибка передвижения пункта меню. Обновите страницу и попробуйте снова.');   
    } 

    function moveDown(id)
    {
        $.iMax.Mreq('movedown', {'id': id, 'parent': cmenuid}, SuccessMD);
        
    }
    
    //--------------------------------
    
    //--------------------------------
    
    function SuccessOEL(data)
    {
        
        if (data)
        {
            eval('var blocks = '+data+';');           
                
            linkPanel(oelid, blocks, elpos.left+14, elpos.top+14);
        }
        else
            alert('Ошибка загрузки списка блоков. Обновите страницу и попробуйте снова.');   
    }
    
    function openEditLink(id)
    {
        $.iMax.EPreq('loadblocks', {}, SuccessOEL);
        
        oelid = id;
    }

    //--------------------------------
    
    function SuccessLM(data)
    {
        
        if (data)
        {
            eval('imenu = '+data+';');
            createMenu(cmenu, imenu);
        }
        else
            alert('Ошибка загрузки меню. Обновите страницу и попробуйте снова.');   
    }

    function LoadMenu(domid, menuid)
    {
        cmenu = domid;
        cmenuid = menuid;
        $.iMax.Mreq('loadmenu', {'id': menuid}, SuccessLM);
        
    }
//______________________________