var req;
img_line		= new Image(); 	img_line.src 		= "/js/images/line.gif";
img_minus		= new Image(); 	img_minus.src		= "/js/images/minus.gif";
img_minustop    = new Image(); 	img_minustop.src	= "/js/images/minustop.gif";
img_minusbottom	= new Image(); 	img_minusbottom.src	= "/js/images/minusbottom.gif";
img_plus		= new Image(); 	img_plus.src		= "/js/images/plus.gif";
img_plustop		= new Image(); 	img_plustop.src		= "/js/images/plustop.gif";
img_plusbottom	= new Image(); 	img_plusbottom.src	= "/js/images/plusbottom.gif";
img_join		= new Image(); 	img_join.src		= "/js/images/join.gif";
img_joinbottom	= new Image(); 	img_joinbottom.src	= "/js/images/joinbottom.gif";
recycle_empty	= new Image();	recycle_empty.src 	= "/js/images/recycle_empty.gif";
recycle_full	= new Image();	recycle_full.src 	= "/js/images/recycle_full.gif";
img_page_o 		= new Image();	img_page_o.src		= "/js/images/folderopen.gif";
img_page_p 		= new Image();	img_page_p.src		= "/js/images/page.gif";
img_page_f 		= new Image();	img_page_f.src		= "/js/images/folder.gif";
x		 		= new Image();	x.src				= "/js/images/x.gif";
img_page_o_h 	= new Image();	img_page_o_h.src	= "/js/images/folderopen_h.gif";
img_page_p_h 	= new Image();	img_page_p_h.src	= "/js/images/page_h.gif";
img_page_f_h 	= new Image();	img_page_f_h.src	= "/js/images/folder_h.gif";
bar             = new Image();  bar.src             ="/js/images/bar.gif";
bar_empty       = new Image();  bar_empty.src       ="/js/images/bar_empty.gif";
img_edit        = new Image();  img_edit.src        ="/js/images/ic_edit.gif";
img_del         = new Image();  img_del.src         ="/js/images/ic_del.gif";

var treeData=new Array();
var dbTable=null;
var dbDatatypes=null;
var command = "printElement";
var url="/lib/dynamic_tree.php";
var mode="TwoPanels";
var draggedId = null;
var dragParentID = null;
var dragHelper=null;
var mode=null;
var left_id;
var second_id;
var statusleft_id;
var statusright_id;
var statusall_id;
var PerPageCount;
var SavedSecond=null;
var filter_id;
var data_id;
var page_id;
var ImageSelector=null;
var UserID=null;
var oFCKeditor=null;

function dragDataEl(elem)
{
    if (!event) event=window.event;
    dragTreeEl(event);
}

function dragDataElStart(elem )
{
    if (!event) event=window.event;
    dragTreeElStart(event, elem);
}

function dragDataElEnd(elem)
{
    if (!event) event=window.event;
    dragTreeElEnd(event, elem);
}

function dragDataElOver()
{
    window.event.returnValue=false;
    window.event.cancelBubble = true;
}

function RestoreInterface()
{
    delButtons();
    document.getElementById(filter_id).style.display='inline';
    document.getElementById(statusleft_id).style.display='inline';
    document.getElementById(statusright_id).style.display='inline';
}

function ResponseProcess(data)
{
    
    switch(data['cmd'])
    {
        case "move_node_to_sub":
        case "move_node_to_doc":
        case "insert_node_before":
        case "insert_node_after":
            RestoreInterface()
            CommandQueue.pop(CommandQueue);
            ProcessUpData(data);
            printTree(left_id, data['req_type_id']);
            treeData[data["req_target_id"]]['expanded']=0;
            ChangeExpState(document.getElementById('line_'+data["req_target_id"]));
            updateLines(1);
            break;
        case "get_tree_level":
            RestoreInterface()
            ProcessUpData(data);
            CommandQueue.pop(CommandQueue);
            printTree(left_id, data['req_id']);
            printSecond(data["req_id"],data['data']);
            break;
            
        case "insert_new_node":
        case "remove_node":
        case "rename_node":
        case "showhide_node":
            RestoreInterface()
            ProcessUpData(data);
            CommandQueue.pop(CommandQueue);
            break;
        case "get_tree_data":
        case "get_tree_data_adm":
            RestoreInterface()
            printFilters(data['filters']);
            printSecond(data["req_id"], data['data']);
            CommandQueue.pop(CommandQueue);
            break;
        case "get_full_data":
            RestoreInterface()
            printFullData(data["req_id"], data['data']);
            CommandQueue.pop(CommandQueue);
            break;            
        case "edit_data":
            RestoreInterface()
            printFullForm(data["req_id"], data["req_target_id"], data['data']);
            CommandQueue.pop(CommandQueue);
            break;
        case "bad_mail":
              CommandQueue.pop(CommandQueue);
              alert("Уже существует пользователь с таким E-Mail!");
              break; 
        case "sendorder":
            if((typeof(x_win)!='undefined')&&(x_win!=null))
            {
                x_win.close();
                x_win=null;
            }
            Basket.splice(0, Basket.length);
            alert("Ваш заказ принят к исполнению. Номер заказа - "+data['procdata']+". Проверить состояние заказа можно в личном кабинете");
            CommandQueue.pop(CommandQueue);
            break;            
                                   
    }
    ProcessCommandQueue();
    var LeftPanel = document.getElementById('xmlTree');
    LeftPanel.style.cursor = "default";
    initIEFilter();
}

function initIEFilter()
{
    var bd=document.body.innerHTML;
    var re= /procIeFltr\(.*\)/
    var s=bd.search(re);
    if(s!=-1)
    {
        var bd1=bd.substring(s, bd.length);
        var ref=/\)/
        var e= bd1.search(ref);
        var cmd=bd1.substring(0, e)+");";
        eval(cmd);
     }
}


function delData(tree_id, tab_id)
{
    if (confirm('Элемент будет удален. Продолжить?'))
    {
        requestdata("remove_data_node", tree_id, tab_id, null, null, GetFilterParam());
        ProcessCommandQueue();
    };
}

function setFCK(id)
{
    oFCKeditor = new FCKeditor(id) ;
    oFCKeditor.BasePath = "/lib/editor/" ;
    oFCKeditor.Height = 600 ;
    oFCKeditor.ReplaceTextarea();
}

function printTree(parent, newid)
{
    if(newid==-1)
    {
        var id=1;
        var TreeParent=document.getElementById(parent);
        CreateTextRow(TreeParent,"1");
    }
    else
    {
        var TreeParent=document.getElementById('id_'+newid);
        var id=newid;
    }
    var DivElem=document.createElement("DIV");
    DivElem.id="iid_"+id;
    DivElem.style.display='none';
    TreeParent.appendChild(DivElem);
    if(treeData[id]['children_id']!=null)
    {
        var ord_id=treeData[id]['children_id'];
        while(ord_id!="null")
        {
            if(mode!=null)
            {
                CreateTextRow(DivElem, ord_id);
            }
            else
            {
                if(treeData[ord_id]['hidden']=='null')
                {
                    CreateTextRow(DivElem, ord_id);
                }
            }
            ord_id=treeData[ord_id]['order_id'];
        }
    }
    if(newid!=-1)
    {
        ChangeExpState(document.getElementById("line_"+id));
    }
}

function dragTreeElStart(event, elem)
{
    if(dragHelper.style.display!='')
    {
        if(typeof(elem.isDataNode)!='undefined')
        {
            draggedId=elem.id.substr(4, elem.id.length);
            var drgSrc=elem;
            dragParentID=elem.parent_id;
        }
        else
        {
            draggedId=elem.id.substr(3, elem.id.length);
            var drgSrc=document.getElementById('treeel_'+draggedId);
            draggedType=null;
        }
        dragHelper.src=drgSrc.src;
    }
    dragHelper.style.display='';
}

function dragTreeElEnd(event, elem)
{
    dragHelper.style.display='none';
}

function checkRecursion(draggedId, id_to)
{
    var id=id_to;
    while(id!=1)
    {
        id=treeData[id]['parent_id'];
        if(id==draggedId) return false;
    }
    return true;
}

function GetFilterParam(arr)
{
    var arr=new Array();
    var fform=document.getElementById('filter_form');
    ExtractFormParam(fform, arr, "nouse");
    var tmp=new Array(); tmp['u_id']=UserID;
    arr.push(tmp);
    var tmp=new Array(); tmp['id']=data_id;
    arr.push(tmp);
    var tmp=new Array(); tmp['page_id']=page_id;
    arr.push(tmp);
    var tmp=new Array(); tmp['cmd']=mode;
    arr.push(tmp);
    var tmp=new Array(); tmp['ppcount']=PerPageCount;
    arr.push(tmp);
    return arr;
}

function dragTreeElDrop(event, elem)
{
    if (!event) event=window.event;
    if(dragHelper.style.display=='')
    {
        var id_to=elem.id.substr(3, elem.id.length);
        if(dragParentID!=null)
        {
            if(treeData[id_to]['node_type']!=treeData[dragParentID]['node_type'])
            {
                if(id_to==dragParentID)
                {
                    draggedId=null;
                    dragParentID=null;
                    dragHelper.style.display='none';
                    return;
                }
                alert("Нельзя перемещfть данные в ветку другого типа!");
                draggedId=null;
                dragParentID=null;
                dragHelper.style.display='none';
                return;
            }
            else
            {
                var arr=new Array();
                
                requestdata("move_data_node", dragParentID, draggedId, id_to, null, GetFilterParam());
                ProcessCommandQueue();
                
                draggedId=null;
                dragParentID=null;
                dragHelper.style.display='none';
                return;
            }
        }
        
      	if (window.event.ctrlKey)
       	{
       	    if(draggedId!=id_to)
       	    {
       	        ShowMenuMove(draggedId, id_to, event);
       	    }
            draggedId=null;
            dragHelper.style.display='none';
       	    return;
       	}

        if((id_to==treeData[draggedId]['parent_id'])||(id_to==draggedId)||(checkRecursion(draggedId, id_to)==false))
        {
            draggedId=null;
            dragHelper.style.display='none';
            return;
        }
        if(treeData[id_to]['children_id']=="null")
        {
            ChangeDraggedState(draggedId, id_to);
            requestdata("move_node_to_doc", draggedId, id_to, id_to); 
        }
        else
        {
            ChangeDraggedState(draggedId, id_to);
            if(document.getElementById('iid_'+id_to)!=null) document.getElementById('iid_'+id_to).parentNode.removeChild(document.getElementById('iid_'+id_to)); 
            delete treeData[id_to];
            requestdata("move_node_to_sub", draggedId, id_to, id_to);
        }
        draggedId=null;
        dragHelper.style.display='none';
        ProcessCommandQueue();
     }
}

function ChangeDraggedState(draggedId, id_to)
{
    document.getElementById('id_'+draggedId).parentNode.removeChild(document.getElementById('id_'+draggedId));
    if((treeData[treeData[draggedId]['parent_id']]['children_id']==draggedId)&&(treeData[draggedId]['order_id']=='null'))
    {
        document.getElementById('iid_'+treeData[draggedId]['parent_id']).parentNode.removeChild(document.getElementById('iid_'+treeData[draggedId]['parent_id']));
        treeData[treeData[draggedId]['parent_id']]['children_id']='null';
    }
    else
    {
        var bef=FindBefore(draggedId);
        if(bef!=null)
        {
            treeData[bef]['order_id']=treeData[draggedId]['order_id'];
        }
        else
        {
            treeData[treeData[draggedId]['parent_id']]['children_id']=treeData[draggedId]['order_id'];
        }
    }
    if(treeData[id_to]['children_id']!='null')
    {
        ClearTreeDataArr(id_to);
        if(treeData[draggedId]['children_id']!='null')
        {
            ClearTreeDataArr(draggedId);
            delete treeData[draggedId];
        }
        delete treeData[id_to]['expanded'];
        if(document.getElementById('iid_'+id_to)!=null) document.getElementById('iid_'+id_to).parentNode.removeChild(document.getElementById('iid_'+id_to));
    }
    else
    {
        if(treeData[draggedId]['children_id']!='null')
        {
            ClearTreeDataArr(draggedId);
        }
        delete treeData[draggedId];
        delete treeData[id_to];
    }
    if(typeof(treeData[draggedId])!='undefined')
    {
        exp_id=treeData[draggedId]['parent_id'];
        delete treeData[draggedId];
        if(typeof(treeData[exp_id])!='undefined') SetExpanded(exp_id, document.getElementById("line_"+exp_id));
    }
}

function FindBefore(id)
{
    ch_id=treeData[treeData[id]['parent_id']]['children_id'];
    if(ch_id!='null')
    {
        if(ch_id==id) return null;
        while(treeData[ch_id]['order_id']!=id)
        {
            ch_id=treeData[ch_id]['order_id'];
        }
        return ch_id;
    }
    else
    {
        return null;
    }
}

function ClearTreeDataA(id)
{
    if(typeof(treeData[id])=='undefined') return;
    do
    {
        if(treeData[id]['children_id']!='null') ClearTreeDataA(treeData[id]['children_id']);
        var tmp_id=treeData[id]['order_id'];
        delete treeData[id];  
        if(tmp_id=='null')
        {
            id='null';
        }
        else
        {
            id=tmp_id;
        }
        var id=tmp_id;
    }while(id!='null');
}

function ClearTreeDataArr(id)
{
    ClearTreeDataA(treeData[id]['children_id']);
}

function dragTreeEl(event)
{
    var mousePos = mouseCoords(event);
    dragHelper.style.left=mousePos.x+10;
    dragHelper.style.top=mousePos.y+10;
}

function mouseCoords(event)
{
    if (!event) event=window.event;
	if(event.pageX || event.pageY){
		return {x:event.pageX, y:event.pageY};
	}
	return {
		x:event.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:event.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function CreateTextRow(parent, id)
{
    if(treeData[id]['hidden']!="null")
    {
        if(mode!='admin') return;
        if(UserID!="null") return;
    }
    var DivElem=document.createElement("DIV");
    DivElem.id="id_"+id;
    DivElem.className='divstr';
    if((BrowserDetect.browser=="Explorer") && (mode=='admin'))
    {
        if(UserID=="null")
        {
            DivElem.ondrag=function(event){dragTreeEl(event, this);};
            DivElem.ondragstart=function(event){dragTreeElStart(event,this);}; 
            DivElem.ondragend=function(event){dragTreeElEnd(event,this);}; 
            DivElem.ondragover=function(){window.event.returnValue=false;window.event.cancelBubble = true;};
            DivElem.ondrop=function(event){dragTreeElDrop(event,this);};
        }
    }
    parent.appendChild(DivElem);
    var Nobr=document.createElement("NOBR");
    DivElem.appendChild(Nobr);
    var ln=new Array();
    var level = GetEncloseLevel(id, ln);
    for(var i=0; i<level; i++)
    {
        var newElem=document.createElement("img");
        if(ln.pop()==1)
        {
            newElem.src=img_line.src;
        }
        else
        {
            newElem.src=x.src;
            newElem.className="imgem";
        }
        Nobr.appendChild(newElem);   
    }
    
    var newElemIm=document.createElement("img");
    newElemIm.id="line_"+id;
    if(treeData[id]['expanded']==undefined) treeData[id]['expanded']=0;

    newElemIm.onclick=function(){ChangeExpState(this);};
    Nobr.appendChild(newElemIm);
    var newElem=document.createElement("img");
    if(treeData[id]['children_id']!="null")
    {
        if(treeData[id]['hidden']!="null")
        {
           if(treeData[id]['expanded']==0)
           {
                newElem.src=img_page_f_h.src;
           }
           else
           {
                newElem.src=img_page_o_h.src;
           }
        }
        else
        {
           if(treeData[id]['expanded']==0)
           {
                newElem.src=img_page_f.src;
           }
           else
           {
                newElem.src=img_page_f_o.src;
           }
        }
    }
    else
    {
        if(treeData[id]['hidden']!="null")
        {
            newElem.src=img_page_p_h.src;
        }
        else
        {
            newElem.src=img_page_p.src;    
        }
    }
    newElem.id="treeel_"+id;
    newElem.pageid=0;
    newElem.pid=id;
    
    newElem.onclick=function(){getData(this);};
    Nobr.appendChild(newElem);
    
    var addText=document.createTextNode(treeData[id]['item_name']);
    var DivTxt=document.createElement("P");
    DivTxt.className='divtxt';
    DivTxt.id="txt_"+id;
    DivTxt.style.display="inline";
    DivTxt.appendChild(addText);
    DivTxt.pageid=0;
    DivTxt.pid=id;
    DivTxt.onclick=function(){ChangeExpState(document.getElementById(newElemIm.id));};;
//    DivTxt.onclick=function(){getData(this);};
    newElemIm.id
    Nobr.appendChild(DivTxt);
    SetExpanded(id, newElemIm);
    if((BrowserDetect.browser=="Explorer") && (mode=='admin')&&(UserID=="null"))
    {
        newElem=document.createElement("img");
        newElem.id="edt_"+id;
        newElem.src=img_edit.src
        newElem.onclick=function(event){return showmenu(event, this);};
        Nobr.appendChild(newElem);
        newElem=document.createElement("img");
        newElem.id="del_"+id;
        newElem.src=img_del.src;
        newElem.onclick=function(){if (confirm('Элемент будет удален. Продолжить?')) { removeNode(this); }};
        Nobr.appendChild(newElem);
    }
}

function getData(elem, isNew)
{
    if(document.body.style.cursor != "default") return;
    var el_id=elem.pid;
    document.getElementById(second_id).innerHTML = "";
    SavedSecond=null;
    document.getElementById('secondCaption').innerHTML = makeCaptionRow(el_id);
    data_id=elem.pid;
    var el_pid=elem.pageid;
    page_id=el_pid;
    var arr=new Array();
    var fform=document.getElementById('filter_form');
    if(fform!=null)
    {
        if(isNew!=null)
        {
            ExtractFormParam(fform, arr, "nouse");
            var tmp=new Array(); tmp['usefilter']="1";
            arr.push(tmp);
        }
    }
    var tmp=new Array(); tmp['id']=data_id;
    arr.push(tmp);
    var tmp=new Array(); tmp['u_id']=UserID;
    arr.push(tmp);
    document.getElementById(filter_id).innerHTML = "";
    
    if(mode=="admin")
    {
        requestdata("get_tree_data_adm", el_id, el_pid, PerPageCount, arr); ProcessCommandQueue();
    }
    else
    {
        requestdata("get_tree_data", el_id, el_pid, PerPageCount, arr); ProcessCommandQueue(); 
    }
}

function removeNode(elem)
{
    var id=elem.id.substr(4,elem.id.length);
    requestdata("remove_node", id); ProcessCommandQueue();
}

function SetExpanded(id, newElem)
{
      if(id=="1")
        {
            if(treeData[id]['expanded']==0)
            {
                newElem.src=img_plustop.src;
                SetFolderClosedImage(id);
            }
            else
            {
                newElem.src=img_minustop.src;
                SetFolderOpenImage(id);
            }
        }
        else
        {
            if(treeData[id]['children_id']=='null')
            {
                if(treeData[id]['order_id']=='null')
                {
                    newElem.src=img_joinbottom.src;
                }
                else
                {
                    newElem.src=img_join.src;
                }
                if(treeData[id]['hidden']=='null')
                {
                    newElem.nextSibling.src=img_page_p.src;
                }
                else
                {
                    newElem.nextSibling.src=img_page_p_h.src;
                }
            }
            else
            {
                if(treeData[id]['order_id']=='null')
                {
                    if(treeData[id]['expanded']==0)
                    {
                        newElem.src=img_plusbottom.src;
                        SetFolderClosedImage(id);
                    }
                    else
                    {
                        newElem.src=img_minusbottom.src;
                        SetFolderOpenImage(id);
                    }
                }
                else
                {
                    if(treeData[id]['expanded']==0)
                    {
                        newElem.src=img_plus.src;
                        SetFolderClosedImage(id);
                    }
                    else
                    {
                        newElem.src=img_minus.src;
                        SetFolderOpenImage(id);
                    }
                }    
            }
        }
}

function SetFolderOpenImage(id)
{
    if(treeData[id]['hidden']=='null')
    {
        document.getElementById("treeel_"+id).src=img_page_o.src;
    }
    else
    {
        document.getElementById("treeel_"+id).src=img_page_o_h.src;
    }
}

function SetFolderClosedImage(id)
{
    if(treeData[id]['hidden']=='null')
    {
        document.getElementById("treeel_"+id).src=img_page_f.src;
    }
    else
    {
        document.getElementById("treeel_"+id).src=img_page_f_h.src;
    }
}

function makeCaptionRow(id)
{
    SecondBack();
    var str="";
    var arr= new Array();
    while(id!='-1')
    {
        arr.push(treeData[id]['item_name']);
        id=treeData[id]['parent_id'];
    }
    while(arr.length!=0)
    {
        str+=arr.pop()+" / ";
    }
    return str;
}

function ChangeExpState(elem)
{
    if(document.body.style.cursor != "default") return;
    var sid=elem.id;
    var id=sid.substr(5, sid.length);
    document.getElementById('secondCaption').innerHTML = makeCaptionRow(id);
    treeData[id]['expanded']=treeData[id]['expanded']^1;
    if((treeData[id]['expanded']==0)&&(treeData[id]['children_id']!='null'))
    {
        if(document.getElementById('iid_'+id)!=null)
        {
            document.getElementById('iid_'+id).style.display='none';
            if(BrowserDetect.browser=="Opera") 
            {
                document.body.style += '';
            }
            SetExpanded(id, elem);
            document.getElementById(filter_id).innerHTML="";
            document.getElementById(statusleft_id).style.display="none";
            document.getElementById(statusright_id).style.display="none";
         }
    }
    else
    {
        if((treeData[id]['children_id']!='null')&&(typeof(treeData[treeData[id]['children_id']]))=='undefined')
        {
            treeData[id]['expanded']=0;
	        var arr=new Array();
	        var tmp=new Array();
	        tmp['page_id']=0;
	        arr.push(tmp);
            var tmp=new Array();
	        tmp['ppcount']=PerPageCount;
        	arr.push(tmp);
            
            requestdata("get_tree_level", id, UserID, mode, arr);
            ProcessCommandQueue();
        }
        else
        {
            if(document.getElementById('iid_'+id)!=null) document.getElementById('iid_'+id).style.display='block';
            document.getElementById(second_id).innerHTML="";
            SetExpanded(id, elem);
            getData(elem.nextSibling);
        }
    }    
}

function GetEncloseLevel(id, ln)
{
    var cnt=0;
    var prnt_id=treeData[id]['parent_id'];
    
    while(prnt_id!=-1)
    {
        if(prnt_id!=-1)
        {
            if((treeData[prnt_id]['order_id']!='null')&&(treeData[prnt_id]['children_id']!='null'))
            {
                ln.push(1);
            }
            else
            {
                ln.push(0);
            }
        }
        else
        {
            ln.push(0);
        }
        cnt++;
        prnt_id=treeData[prnt_id]['parent_id'];
    }
    return cnt;
}

function ProcessUpData(data)
{
    var UpdArr= new Array();
    if(data['procdata']!="") 
    {
        eval(data['procdata']);
        for(dta in procData['delete'])
        {
            if(treeData[procData['delete'][dta]])
            {
                if(document.getElementById('id_'+procData['delete'][dta])!=null)
                {
                    document.getElementById('id_'+procData['delete'][dta]).parentNode.removeChild(document.getElementById('id_'+procData['delete'][dta]));
                }
                delete treeData[procData['delete'][dta]];
            }
        }
        for(dta in procData['insert'])
        {
            if(treeData[dta]==undefined)
            {
                treeData[dta]=procData['insert'][dta];
            }
        }
        for(dta in procData['update'])
        {
            if(treeData[procData['update'][dta]]!=undefined)
            {
                var exp=treeData[procData['update'][dta]]['expanded'];
                treeData[procData['update'][dta]]=upData[procData['update'][dta]];
                treeData[procData['update'][dta]]['expanded']=exp;
                updateLines(treeData["1"]['children_id']);
             }
        }
        
        for(dta in procData['update'])
        {
            if(treeData[procData['update'][dta]]==undefined)
             {
                treeData[procData['update'][dta]]=upData[procData['update'][dta]];
                var newParent=treeData[procData['update'][dta]]['parent_id'];
                if(treeData[treeData[newParent]['children_id']]==undefined)
                {
                    treeData[newParent]['expanded']=0;
                    	var arr=new Array();
                    	var tmp=new Array();
	                    tmp['page_id']=0;
	                    arr.push(tmp);
                        var tmp=new Array();
	                    tmp['ppcount']=PerPageCount;
	                    arr.push(tmp);

                    requestdata("get_tree_level", newParent, UserID, mode, arr);
                }
                else
                {
                    var parentEl=document.getElementById("iid_"+newParent);
                    if(parentEl==null)
                    {
                            parentEl=document.getElementById("id_"+newParent);
                            var DivElem=document.createElement("DIV");
                            DivElem.id="iid_"+newParent;
                            treeData[newParent]['expanded']=0;
                            DivElem.style.display='none';
                            parentEl.appendChild(DivElem);
                            parentEl=DivElem;
                            CreateTextRow(parentEl, procData['update'][dta]);
                            ChangeExpState(document.getElementById("line_"+newParent));
                    }
                    else
                    {
                        CreateTextRow(parentEl, procData['update'][dta]);
                        var BeforeId=GetBeforeElement(data['procdata'], procData['update'][dta]);
                        UpdArr.push(BeforeId);
                    }
                }
             }
        }
        if(UpdArr.length!=0) UpdateElementShow(UpdArr, data['procdata']);
    }
}

function UpdateElementShow(UpdArr, data)
{
    for(dta in UpdArr)
    {
        SetExpanded(UpdArr[dta], document.getElementById("treeel_"+UpdArr[dta]).previousSibling);
    }
    if(treeData["1"]!=undefined) updateLines(treeData["1"]['children_id']);
}

function updateLines(_id)
{
    if(typeof(treeData[_id])=="undefined")
    {   
        return;
    }
    else if (typeof(treeData[_id]['expanded'])=="undefined")
    {
        return;
    }
    do
    {
        if(document.getElementById('id_'+_id)==null) return;
        var elem=document.getElementById('id_'+_id).firstChild.firstChild;
        var ln=new Array();
        var level = GetEncloseLevel(_id, ln);
        for(var i=0; i<level; i++)
        {
            if(ln.pop()==1)
            {
                elem.src=img_line.src;
            }
            else
            {
                elem.src=x.src;
            }
            var elem=elem.nextSibling;
        }
        SetExpanded(_id, elem);
        if(treeData[_id]['children_id']!='null')
        {
           updateLines(treeData[_id]['children_id']);
        }
        _id=treeData[_id]['order_id'];
    }while(_id!='null');
}

function GetBeforeElement(data, id)
{
    eval(data);
    for(dt in procData['update'])
    {
        if(upData[procData['update'][dt]]['order_id']==id) return procData['update'][dt];
    }
    return null;
}

function moveNode(id, target_id)
{
    var who=document.getElementById('id_'+id);
    var to=document.getElementById('iid_'+target_id);
    if(to==null)
    {
        var to=document.getElementById('id_'+target_id);
        var DivElem=document.createElement("DIV");
        DivElem.id="iid_"+target_id;
        to.appendChild(DivElem);
        to=DivElem;
    } 
    to.appendChild(who);
    updateLines(treeData["1"]['children_id']);
}

function getFullData(type, id)
{
    requestdata("get_full_data", type, id, mode); ProcessCommandQueue();
}

function editData(type, id)
{
    requestdata("edit_data", data_id, id); ProcessCommandQueue();
}

function printSecond(id, dta)
{
    document.getElementById(second_id).innerHTML=dta['data'];
    var status=document.getElementById(statusleft_id);
    if(status.childNodes.length!=0)
    {
       while(status.childNodes.length!=0)
       {
            status.removeChild(status.firstChild);
       }
    }
    if(dta['count']!=0)
    {
        var addText=document.createTextNode("Страница ");
        var BElem=document.createElement("B");
        var addText1=document.createTextNode(parseInt(dta['current'],10)+1);
        var addText2=document.createTextNode(" из ");
        var addText3=document.createTextNode(Math.ceil(parseInt(dta['count'], 10)/PerPageCount));
        var BElem1=document.createElement("B");
        status.appendChild(addText); BElem.appendChild(addText1); status.appendChild(BElem); status.appendChild(addText2); BElem1.appendChild(addText3); status.appendChild(BElem1)
    }

    var status=document.getElementById(statusright_id);
    if(status.childNodes.length!=0)
    {
       while(status.childNodes.length!=0)
       {
            status.removeChild(status.firstChild);
       }
    }
    if(dta['count']!=0)
    {
         var addText=document.createTextNode("Страницы ");
         status.appendChild(addText);
         var addText=document.createTextNode(" ");
         status.appendChild(addText);
         for(var i=0; i<Math.ceil(parseInt(dta['count'], 10)/PerPageCount); i++)
         {
            var DivElem=document.createElement("DIV");
            var BElem=document.createElement("B");
            var addText=document.createTextNode((i+1)+' ');
            BElem.appendChild(addText);
            DivElem.appendChild(BElem);
            DivElem.pageid=i;
            DivElem.pid=id;
            DivElem.onclick=function(){getData(this, "new");};
            DivElem.style.display='inline';
            DivElem.style.float='left';
            DivElem.style.cursor='pointer';
            status.appendChild(DivElem);
         }
    }
    
}

function addManager()
{
    var curId=ImageSelector.field.id;
    var imcnt=ImageSelector.imcount;
    var uform=document.getElementById('user_form');
    var arr=new Array();
    arr['val']=0; arr['cnt']=0;
    var realcnt=CountImages(uform, arr);
    if(((imcnt-realcnt['cnt'])>0)&&(document.getElementById(ImageSelector.field.id).value!=""))
    {
        if(realcnt['val']==0)  
        {
            newManager(curId, imcnt, realcnt['cnt']);        
        }
    }
}

function CountImages(elem, arr)
{
    for(var i=0; i<elem.length; i++)
    {
        if((typeof(elem[i].name)!='undefined')&&(elem[i].name.substr(0,5)=="imag_"))
        {
            if(elem[i].name.split("_").length==3)
            {
                arr['cnt']++;
                if(elem[i].value=="")
                {
                arr['val']++;
                }                
            }
        }
        if(elem[i].childNodes.length!=0)
        {
            CountImages(elem[i], arr);   
        }
    }
    return arr;
}

function newManager(data, count, rcnt)
{
    if(this.value!="")
    {
        newname=data.substring(5, data.length);
        tdata=newname.split('_');
        var workname="imag_"+tdata[0]+"_"+ (1+rcnt);
        
        var newElem=document.createElement("input");
        newElem.id=workname;
        newElem.name=workname;
        ImageSelector.imcount=count;
        document.body.appendChild(newElem);
        var buttNew=document.createElement("button");
        buttNew.onclick=function(){return ImageSelector.select(workname, count);};
        var buttNewText=document.createTextNode("Загрузить");
        buttNew.appendChild(buttNewText);

        var curNode=document.getElementById(data);
        curNode.parentNode.insertBefore(newElem, curNode);
        
        curNode.parentNode.insertBefore(newElem, curNode);
        curNode.parentNode.insertBefore(buttNew, curNode);
        var newBr=document.createElement("br");
        document.body.appendChild(newBr);
        curNode.parentNode.insertBefore(newBr, curNode);
    }    
}

function printFullForm(type, id, dta)
{
    SavedSecond=document.getElementById(second_id).innerHTML;
    SavedStatus=document.getElementById(statusall_id).innerHTML;

    document.getElementById(filter_id).style.display='none';
    document.getElementById(second_id).innerHTML=dta;

    var buttNew=document.createElement("button");
    buttNew.id="delbut1";
    buttNew.onclick=function(){SecondBack();};
    var buttNewText=document.createTextNode("Назад");
    buttNew.appendChild(buttNewText);
    buttNew.style.marginRight=20;
    document.getElementById(statusleft_id).style.display="none";
    document.getElementById(statusright_id).style.display="none";
    document.getElementById(statusall_id).appendChild(buttNew);

    var buttNew1=document.createElement("button");
    buttNew1.id="delbut2";
    buttNew1.onclick=function(){FormSave(id, type);};
    var buttNewText1=document.createTextNode("Сохранить");
    buttNew1.appendChild(buttNewText1);
    document.getElementById(statusall_id).appendChild(buttNew1);
    
    var tmp1=dta.split('<script type="text/javascript">');
    if(tmp1[1]!=null)
    {
        var tmp2=tmp1[1].split('</script>');
        eval(tmp2[0]);
    }
}

function FormSave(id, treeid)
{
    var uform=document.getElementById('user_form');

    var arr=new Array();
    var ret=ExtractFormParam(uform, arr, "use");
    if(ret==1) return;
    imCount=0;
    var tmp=new Array(); tmp['u_id']=UserID;
    arr.push(tmp);

    requestdata("save_data", data_id, id, null, arr, GetFilterParam()); ProcessCommandQueue(); 
}

function delButtons()
{
    if(document.getElementById("delbut2")!=null)
    {
        document.getElementById("delbut2").parentNode.removeChild(document.getElementById("delbut2"));
        document.getElementById("delbut1").parentNode.removeChild(document.getElementById("delbut1"));
    }
    if(document.getElementById(filter_id)!=null) document.getElementById(filter_id).style.display='inline';
    if(document.getElementById(statusleft_id)!=null) document.getElementById(statusleft_id).style.display='inline';
    if(document.getElementById(statusright_id)!=null) document.getElementById(statusright_id).style.display='inline';
    
}
 

function printFilters(filter)
{
    document.getElementById(filter_id).innerHTML=filter;
}

function clearFilter()
{
    var fform=document.getElementById('filter_form');
    clearFormParam(fform);
    filter_submit();
}

function clearFormParam(elem)
{
    if(elem!=null)
    {
        for(var i=0; i<elem.length; i++)
        {
            if((typeof(elem[i].name)!='undefined')&&(CheckType2(elem[i].name)==1))
            {
                switch(elem[i].name.substr(0,5))
                {
                    case "ctrl_":
                    case "cctrl":
                        elem[i].selectedIndex=0;
                        break;
                    case "chck_":
                        elem[i].checked=null;
                        break;
                    case "imag_":
                    case "text_":
                    case "btxt_":
                    case "ftxt_":
                    case "flot_":
                    case "intg_":
                        elem[i].value="";
                        break;
                }
            }
            if(elem[i].childNodes.length!=0)
            {
                clearFormParam(elem[i]);   
            }
        }
    }
}

function filter_submit()
{
    var fform=document.getElementById('filter_form');
    var arr=new Array();
    ExtractFormParam(fform, arr, "nouse");
    var tmp=new Array(); tmp['usefilter']="1";
    arr.push(tmp);
    var tmp=new Array(); tmp['id']=data_id;
    arr.push(tmp);
    var tmp=new Array(); tmp['u_id']=UserID;
    arr.push(tmp);

    if(mode=="admin")
    {    
        requestdata("get_tree_data_adm", data_id, 0, PerPageCount, arr); ProcessCommandQueue();
    }
    else
    {
        requestdata("get_tree_data", data_id, 0, PerPageCount, arr); ProcessCommandQueue();
    }
    
}

function ExtractFormParam(elem, arr, used)
{
    if(elem!=null)
    {
        var check=0;
        for(var i=0; i<elem.length; i++)
        {
            if(typeof(elem[i].name)!='undefined')
            {
                var el_name=CheckType(elem[i].name);
                if(el_name!=null)
                {
                    if(typeof(elem[i].fck)!='undefined')
                    {
                        var oEditor = FCKeditorAPI.__Instances[elem[i].name];
                        oEditor.UpdateLinkedField();
                    }
                    var value=elem[i].value;
                    if(used!="nouse")
                    {
                        switch(el_name)
                        {
                            case "phon_":
                                if(ProcessPhone(value)==false) return 1;
                                break;
                            case "mail_":
                                if(ProcessMail(value)==false) return 1;
                                break;
                            case "pswd_":
                                if(ProcessPassword(value,elem[i].name)==false) return 1;
                                break;
                            case "flot_":
                                if(ProcessFloat(value, elem[i])==false) return 1;
                                value=elem[i].value;
                                break;
                            case "intg_":
                                if(ProcessInt(value)==false) return 1;
                                break;
                            default:
                                break;                            
                        }
                    }
                    if(el_name=="chck_")
                    {
                        if(elem[i].checked==true)
                        {
                            var tmp=new Array();
                            tmp[elem[i].name]=value;
                            arr.push(tmp);
                        }
                    }
                    else
                    {
                        var tmp=new Array();
                        tmp[elem[i].name]=value;
                        arr.push(tmp);
                    }
                }
            }
            if(elem[i].childNodes.length!=0)
            {
                var ret=ExtractFormParam(elem[i], arr, used);   
                if(ret==1) return ret;
            }
        }
    }
    return check;
}

function CheckType(type)
{
    key=type.substr(0,5);
    if((key=="ctrl_")||(key=="mail_")||(key=="phon_")||(key=="pswd_")||(key=="chck_")||(key=="imag_")||(key=="text_")||(key=="btxt_")||(key=="ftxt_")||(key=="flot_")||(key=="date_")||(key=="intg_")||(key=="rdio_")||(key=="imgto"))
    {
        if(type.substr(type.length-4,4)=='_dbl') return null;
        return key;
    }    
    return null;
}

function CheckType2(type)
{
    key=type.substr(0,5);
    if((key=="cctrl")||(key=="mail_")||(key=="phon_")||(key=="pswd_")||(key=="ctrl_")||(key=="chck_")||(key=="imag_")||(key=="text_")||(key=="btxt_")||(key=="ftxt_")||(key=="flot_")||(key=="date_")||(key=="intg_")||(key=="rdio_")||(key=="imgto"))
    {
        return 1;
    }    
    return null;
}

function printFullData(id, dta)
{
    SavedSecond=document.getElementById(second_id).innerHTML;
    SavedStatus=document.getElementById(statusall_id).innerHTML;
    document.getElementById(filter_id).style.display='none';
    document.getElementById(second_id).innerHTML=dta;
    var buttNew=document.createElement("button");
    buttNew.onclick=function(){SecondBack();};
    var buttNewText=document.createTextNode("Назад");
    buttNew.appendChild(buttNewText);
    document.getElementById(statusleft_id).style.display="none";
    document.getElementById(statusright_id).style.display="none";
    document.getElementById(statusall_id).appendChild(buttNew);
}

function SecondBack()
{
    if(SavedSecond==null)
    {
        document.getElementById(second_id).innerHTML="";
    }
    else
    {
        document.getElementById(second_id).innerHTML=SavedSecond;
    }
    imCount=0;
    document.getElementById(statusleft_id).style.display="inline";
    document.getElementById(statusright_id).style.display="inline";
    document.getElementById(filter_id).style.display='inline';
    while(document.getElementById(statusall_id).childNodes.length!=2)
    {
        document.getElementById(statusall_id).removeChild(document.getElementById(statusall_id).lastChild);
    }
}

function newDoc()
{
    if(typeof(data_id)!='undefined')
    {
        if(treeData[data_id]['node_type']=='null')
        {
            alert('Для ветки не установлен тип данных!');
        }
        else
        {
            requestdata("edit_data", data_id, 'null'); ProcessCommandQueue();
        }
    }
    else
    {
        alert('Для размещения нового елемента нужно выбрать раздел!');
    }
}

function procIeFltr(a)
{
    var elem=document.getElementById(a[0]);
    document.getElementById(a[1]).name=a[elem.selectedIndex+1];
    if(elem.selectedIndex==0) document.getElementById(a[1]).value="";
    var cap=a[1].split("_");
}

function blockKey(event)
{
    if (!event) event=window.event;
    if(document.body.style.cursor == "default")
    {
        return true;
    }
    else
    {
        return false;
    }
}

function blockMouse(event)
{
    if (!event) event=window.event;
    
}

function init(table, datatypes, ev, isadm, leftid, secondid, statusleft, statusright, statusall, filter, ppcount, uId)
{
    if(isadm=='admin') document.getElementById('bNew').style.display='inline';
    UserID=uId;
    mode=isadm;
    left_id=leftid;
    second_id=secondid;
    statusleft_id=statusleft;
    statusright_id=statusright;
    statusall_id=statusall;
    filter_id=filter;
    PerPageCount=ppcount;
    BrowserDetect.init();
    manager = new ImageManager('/lib/imagemanager','en', UserID);

    ImageSelector =
    {
        update : function(params)
        {
            if(this.field && this.field.value != null)
            {
                this.field.value = params.f_file; //params.f_url
            }
        },
        select: function(textfieldID, imcount)
        {
            this.field = document.getElementById(textfieldID);
            this.imcount=imcount;
            manager.popManager(this);
        }
    };
    
    if((BrowserDetect.browser=="Explorer") && (mode=='admin'))
    {
        dragHelper=document.createElement("IMG");
        dragHelper.id="drghlpid";
        dragHelper.style.display='none';
        dragHelper.style.position='absolute';
        document.body.appendChild(dragHelper);
    }

    document.body.onselectstart = function(){return(false);};
    eval(ev);
    dbTable=table;
    dbDatatypes=datatypes;

	InitMenu();
	InitMenuMove();
	InitMenuSelectData();
	var arr=new Array();
	var tmp=new Array();
	tmp['page_id']=0;
	arr.push(tmp);
    var tmp=new Array();
	tmp['ppcount']=PerPageCount;
	arr.push(tmp);

    requestdata("get_tree_level", -1, UserID, mode, arr);
    ProcessCommandQueue();
}
function ShowMenuMove(draggedId, id_to, event)
{
    if (!event) event=window.event;
    
    document.getElementById('menumv').iid=draggedId;
	document.getElementById('menumv').id_to=id_to;
	
	var rightedge = document.body.clientWidth-event.clientX;
	var bottomedge = document.body.clientHeight-event.clientY;
	if (rightedge < document.getElementById('menumv').offsetWidth)
	{
	    document.getElementById('menumv').style.left = document.body.scrollLeft + event.clientX - document.getElementById('menumv').offsetWidth;
	}
	else
	{
	    document.getElementById('menumv').style.left = document.body.scrollLeft + event.clientX;
	}
	if (bottomedge < document.getElementById('menumv').offsetHeight)
	{
	    document.getElementById('menumv').style.top = document.body.scrollTop + event.clientY - document.getElementById('menumv').offsetHeight;
	}
	else
	{
	    document.getElementById('menumv').style.top = document.body.scrollTop + event.clientY;
	}
    document.getElementById('menumv').style.display = "";
	return false;
}

function showmenu(event, elem)
{
    if (!event) event=window.event;
	    var id=elem.id;
	    document.getElementById('menu').iid=curnodeID=id.substr(4,id.length);
	    var rightedge = document.body.clientWidth-event.clientX;
	    var bottomedge = document.body.clientHeight-event.clientY;
	    if (rightedge < document.getElementById('menu').offsetWidth)
	    {
	        document.getElementById('menu').style.left = document.body.scrollLeft + event.clientX - document.getElementById('menu').offsetWidth;
	    }
	    else
	    {
	        document.getElementById('menu').style.left = document.body.scrollLeft + event.clientX;
	    }
	    if (bottomedge < document.getElementById('menu').offsetHeight)
	    {
	        document.getElementById('menu').style.top = document.body.scrollTop + event.clientY - document.getElementById('menu').offsetHeight;
	    }
	    else
	    {
	        document.getElementById('menu').style.top = document.body.scrollTop + event.clientY;
	    }
	    document.getElementById('menu').style.display = "";
	return false;
}

function highlight(event) 
{
	if (!event) event=window.event;
	if(event.target==undefined)
	{
	    var srcElement=event.srcElement;
	}
	else
	{
	    var srcElement=event.target;
	}

	if (srcElement.className == "menuitems") 
	{
		srcElement.style.backgroundColor = "#CEE4F2";
	}
	return false;
}

function lowlight(event) 
{
    if (!event) event=window.event;
	if(event.target==undefined)
	{
	    var srcElement=event.srcElement;
	}
	else
	{
	    var srcElement=event.target;
	}

	if (srcElement.className == "menuitems") {
		srcElement.style.backgroundColor = "";
		window.status = "";
	}
}

function hidemenu(event, force)
{
    if (!event) event=window.event;
    if(BrowserDetect.browser!="Explorer")
    {
        var src=event.target; 
    }
    else
    {
        var src=event.srcElement;
    }
    if(force==false)
    {
        if((src.className.substr(0,4)=='menumv')||(src.className.substr(0,4)=='menu')||(src.id.substr(0,4)=='edt_')||(src.id=='new')) return;
    }
    
    document.getElementById('menu').style.display="none";
	document.getElementById('menusl').style.display="none";
    document.getElementById('menumv').style.display="none";

}


function InitMenuMove() 
{  
    var DivElem=document.createElement("DIV");
    DivElem.className="mu1"; DivElem.id='menumv'; 
    DivElem.onmouseover=function(event){return highlight(event);}; 
    DivElem.onclick=function(event){return jumpto(event);};    
    DivElem.onmouseout=function(event){return lowlight(event);}; 
    document.body.appendChild(DivElem);
    var NewElem=document.createElement("DIV");
    NewElem.className="menuitems"; NewElem.id='insbefore'; NewElem.action="insert_before"; 
    var addText=document.createTextNode('Вставить перед..');
    NewElem.appendChild(addText);
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("HR");
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("DIV");
    NewElem.className="menuitems"; NewElem.id='insafter'; NewElem.action="insert_after"; 
    var addText=document.createTextNode('Вставить после..');
    DivElem.onclick=function(event){return jumpto(event);};
    NewElem.appendChild(addText);
    DivElem.appendChild(NewElem);
    document.getElementById('menumv').className = "mu2";//osw
    document.body.onclick = function(event){return hidemenu(event, false);};
    document.getElementById('menumv').style.display='none';
}

function showMenuSelectData(event, id)
{
    if (!event) event=window.event;
	    var rightedge = document.body.clientWidth-event.clientX;
	    var bottomedge = document.body.clientHeight-event.clientY;
	    if (rightedge < document.getElementById('menusl').offsetWidth)
	    {
	        document.getElementById('menusl').style.left = document.body.scrollLeft + event.clientX - document.getElementById('menu').offsetWidth;
	    }
	    else
	    {
	        document.getElementById('menusl').style.left = document.body.scrollLeft + event.clientX;
	    }
	    if (bottomedge < document.getElementById('menusl').offsetHeight)
	    {
	        document.getElementById('menusl').style.top = document.body.scrollTop + event.clientY - document.getElementById('menu').offsetHeight;
	    }
	    else
	    {
	        document.getElementById('menusl').style.top = document.body.scrollTop + event.clientY;
	    }
	    document.getElementById('menusl').style.display = "";
	return false;
	
}

function InitMenuSelectData() 
{  
    var select=document.createElement("SELECT");
    select.id="selctmnu";
    select.className="menuselect";
    for(key in fieldtype)
    {
        var opt=document.createElement("OPTION");
        opt.className="menuselectopt";
        opt.value=key;
        addText=document.createTextNode(fieldtype[key]);
        opt.appendChild(addText);
        select.appendChild(opt);
    }
    var buttNew=document.createElement("button");
    buttNew.onclick=function(){insert_new_node(document.getElementById('menu').iid);};
    buttNew.className="butnew";
    var buttNewText=document.createTextNode("Новый документ");
    buttNew.appendChild(buttNewText);
    var buttCancel=document.createElement("button");
    buttCancel.className="butcncl";
    buttCancel.onclick=function(event){return hidemenu(event, false);};
    var buttCnclText=document.createTextNode("Отменить");
    buttCancel.appendChild(buttCnclText);
    var Nobr=document.createElement("NOBR");
    Nobr.appendChild(buttNew);    
    Nobr.appendChild(buttCancel);

    var addText=document.createTextNode('Выберите тип данных');
    var font=document.createElement("FONT");
    font.color="#3f73a9";
    font.appendChild(addText);
    var legend=document.createElement("LEGEND");
    legend.appendChild(font);
    var FieldsetElem=document.createElement("FIELDSET");
    FieldsetElem.appendChild(legend);
 
    if(BrowserDetect.browser=="Explorer") FieldsetElem.style.width=0;
    FieldsetElem.appendChild(select);
    var BR=document.createElement("BR");
    FieldsetElem.appendChild(BR);
    var txtInp=document.createElement("INPUT");
    txtInp.id='menunewtxt';
    txtInp.className='menutxt';
    FieldsetElem.appendChild(txtInp);
    
    FieldsetElem.appendChild(Nobr);

    var DivElem=document.createElement("DIV");
    DivElem.className="mu3"; DivElem.id='menusl';
    DivElem.appendChild(FieldsetElem);

    document.body.appendChild(DivElem);
    document.body.onclick = function(event){return hidemenu(event, false);};
    document.getElementById('menusl').style.display="none";
}

function insert_new_node(id)
{
    requestdata("insert_new_node", id, document.getElementById("selctmnu").value, document.getElementById('menunewtxt').value); ProcessCommandQueue();
}

function InitMenu() 
{  
    var DivElem=document.createElement("DIV");
    DivElem.className="mu1"; DivElem.id='menu'; 
    DivElem.onmouseover=function(event){return highlight(event);}; 
    DivElem.onclick=function(event){return jumpto(event);};    
    DivElem.onmouseout=function(event){return lowlight(event);}; 
    document.body.appendChild(DivElem);
    var NewElem=document.createElement("DIV");
    NewElem.className="menuitems"; NewElem.id='new'; NewElem.action="insert_new_node"; 
    var addText=document.createTextNode('Новый элемент..');
    NewElem.appendChild(addText);
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("HR");
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("DIV");
    NewElem.className="menuitems"; NewElem.id='rename'; NewElem.action="rename_node"; 
    var addText=document.createTextNode('Переименовать..');
    DivElem.onclick=function(event){return jumpto(event);};
    NewElem.appendChild(addText);
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("HR");
    DivElem.appendChild(NewElem);
    
    var NewElem=document.createElement("DIV");
    NewElem.className="menuitems"; NewElem.id='hide'; NewElem.action="showhide_node"; 
    var addText=document.createTextNode('Скрыть/Показать..');
    NewElem.appendChild(addText);
    DivElem.appendChild(NewElem);
    document.getElementById('menu').className = "mu2";//osw
    document.body.onclick = function(event){return hidemenu(event, false);};
    document.getElementById('menu').style.display='none';
}

function renameNode(id, event)
{
    hidemenu(event, true);
    var text=document.getElementById("txt_"+id);
    var textVal=text.firstChild.nodeValue;
    text.style.display='none';
    var edit=document.createElement("INPUT");
    edit.className="divfnt";
    edit.value=textVal;
    edit.id='editext';
    edit.refid=id;
    edit.onkeypress=function(event){return InputAccept(event);}; 
    text.parentNode.insertBefore(edit, text);
    document.body.onclick = hideInput;
}

function InputAccept(event)
{
    if (!event) event=window.event;
    if(event.keyCode==13)
    {
        var elem=document.getElementById('editext');
        var id=elem.refid;
        var value=elem.value;
        elem.parentNode.removeChild(elem)
        var text=document.getElementById("txt_"+id);
        text.firstChild.nodeValue=value;
        text.style.display='inline';
        document.body.onclick = function(event){return hidemenu(event, false);};;
        requestdata("rename_node", id, value);
        ProcessCommandQueue();
    }
}

function hideInput()
{
    if (!event) event=window.event;
   	if(event.target==undefined)
	{
	    var srcElement=event.srcElement;
	}
	else
	{
	    var srcElement=event.target;
	}
    if ((srcElement.className != "divfnt")&&(srcElement.className.substr(0,4)!='menu'))
    {
        var elem=document.getElementById('editext');
        elem.parentNode.removeChild(elem)
        var text=document.getElementById("txt_"+id);
        text.style.display='inline';
        document.body.onclick = function(event){return hidemenu(event, false);};
     }
}

function jumpto(event)
{
    if (!event) event=window.event;
   	if(event.target==undefined)
	{
	    var srcElement=event.srcElement;
	}
	else
	{
	    var srcElement=event.target;
	}

    if (srcElement.className == "menuitems") 
    {
        if(document.getElementById('menu').iid!= null)
        {
            switch(srcElement.action)
            {
                case "insert_new_node":
                    showMenuSelectData(event, document.getElementById('menu').iid);
                    break;
                 case "rename_node":
                    renameNode(document.getElementById('menu').iid, event);
                    break;
                 case "showhide_node":
                    showHideNode(document.getElementById('menu').iid, event);
                    break;
            }
        }
        if(document.getElementById('menumv').iid!= null)
        {
            var id_to=document.getElementById('menumv').id_to;
            var draggedId=document.getElementById('menumv').iid;
            var newParent=treeData[id_to]['parent_id'];
            switch(srcElement.action)
            {
                case "insert_before":
                    
                    ChangeDraggedState(draggedId, treeData[id_to]['parent_id']);
                    delete treeData[newParent];
                    requestdata("insert_node_before", draggedId, id_to, newParent);
                    hidemenu(event, true); 
                    break;
                case "insert_after":
                    ChangeDraggedState(draggedId, treeData[id_to]['parent_id']);
                    delete treeData[newParent];
                    requestdata("insert_node_after", draggedId, id_to, newParent);
                    hidemenu(event, true); 
                    break;
            }
            ProcessCommandQueue();
                   
        }
    }
}

function showHideNode(id, event)
{
    hidemenu(event, true);
    requestdata("showhide_node", id, treeData[id]['hidden']^1); ProcessCommandQueue();
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

function delImg(id)
{
    var perem="";
    if(id.checked==1)
    {
        if(document.getElementById(id.hiddenid).value!="")
        {
            document.getElementById(id.hiddenid).value = document.getElementById(id.hiddenid).value + ";" + id.key;
        }
        else
        {
            document.getElementById(id.hiddenid).value = id.key;
        }
    }
    else
    {
        tmp=document.getElementById(id.hiddenid).value.split(";");
        for(i=0;i<tmp.length;i++)
        {
            if(tmp[i]!=id.key)
            {
                perem = perem+tmp[i];
            }
        }
        document.getElementById(id.hiddenid).value = perem;
    }
}
