﻿var MenuItems = new Array();
var SelItm = -1;
var MenuId;
var ContentElement = "";
var M;
var IdPrntClick;
var Mini;
var NameSelItem;
var NameSelParent;


function MenuItemClick(id)
{
    IdPrntClick = id;
    var Itm = FindItem(id,MenuItems);
    if (Itm)
    {
               
               
      var gg ="";
        
      if (Itm.Childs.length > 0)
      {
      
        for (var i = 0;i < MenuItems.length; i++)
        {
            MenuItems[i].Showed = false;
            CloseChilds(MenuItems[i]);
        }
        
        if (SelItm == Itm.Id)
        {
            ShowItem(Itm,false);

            SelItm = -1;
        }
        else
        {
            SelectItem(Itm.Id);
            ShowItem(Itm, true );
        }
        
        RefreshMenu();
        AnimateShow(Itm);
       
        
        
      }
      else
      {
          var Parent = FindItem(Itm.Parrent , MenuItems);
          SelectItem(Itm.Id);
          NameSelItem = Itm.Name;
          NameSelParent = Parent.Name;
        
          $.ajax({type: "POST", url: Itm.Href, data: ({MyMenuSelectedItemId : Itm.Id ,
                     MyMenuSelectedItemName : Itm.Name , 
                     MyMenuParentItemName : Parent.Name ,
                     MyMenuParentItemId: Parent.Id }),
                    success: UpdateContent });
        
          RefreshMenu();
        
      }
       
    }
    
}

function SelectItem(id)
{
    SelItm = id;
    setCookie("MyMenuSelectedItemId1",id);
   
    
}

function AnimateShow(Itm)
{
    var child = document.getElementById("childs" + Itm.Id)
    var prnt = document.getElementById("TreeItem" + Itm.Id)
    child.setAttribute('style', 'display: none;');
    $("#" + child.id).slideDown(500,function (){});
    prnt.className = "ChooseItemParent1";
    Mini = prnt.offsetTop;
}


function OnMouseItemOver(itm)
{
     ShowPalka(itm.offsetTop,M,true)
}

function OnMouseItemOut(itm)
{
    ShowPalka(5000,M,false)
    if (SelItm > 0) 
    {
        var selitm = FindItem(SelItm , MenuItems);
        if (selitm.Childs.length == 0)
        {
            var sel = document.getElementById("TreeItem" + SelItm);
            ShowPalka(sel.offsetTop,M,true);
            sel.setAttribute('style', 'color:#ED1C24; border-left: medium solid black; background:#333333 url(mymenu/SeparatorParentChrome1.png) no-repeat;background-position:left bottom;');
        }
    }
}


function ShowPalka(maxy,el,visibility)
{

    for (var i = 0;i < el.children.length;i++)
    {
        var itm = el.children[i];
        var ParrentItm = itm.Parrent;
        if (itm.id && itm.offsetTop <= maxy)
        {
            if(itm.offsetTop > Mini)
            {
                if (itm.children.length > 0) 
                {
                    ShowPalka(maxy, el.children[i],visibility);
                }
                else
                {

                    if (visibility)
                    {
                        itm.setAttribute('style', 'border-left: medium solid black;');
                    }
                    else
                    {
                        itm.removeAttribute('style', 'border-left');
                    }
                }
            }
            if(itm.offsetTop == Mini)
            {
                if(visibility)
                    itm.className = "ChooseItemParent";
                else
                    itm.className = "ChooseItemParent1";    
            }
            if(itm.offsetTop == maxy)
            {
                
            }
        }
    }
}




function UpdateContent(html)
{
    var S = html.replace(" ", "").replace("\n","").replace("\r","");//.toLowerCase()
    var Loc = S.indexOf("id=\"" + ContentElement + "\"");
    var start = S.indexOf(">", Loc) + 1;
   
    if (Loc >= 0)
    {
        var DivCounter = 1;
        
        while(DivCounter > 0)
        {
            var Lc = S.indexOf("div", Loc + 1);
            if (Lc > 0)
            {
                if (S[Lc-1] == "/" && S[Lc-2]=="<") 
                {
                    DivCounter--;
                }
                else if (S[Lc-1]=="<")
                {
                    DivCounter++;
                }
                Loc = Lc + 1;
            }

            if (DivCounter > 1000 || Loc == -1) DivCounter = -100;
        }
        
        S = S.substr(start, Loc - start + 3);
        var Cn = document.getElementById(ContentElement);
        if (Cn) Cn.innerHTML = S;//$("#" + ContentElement).html(S);
    }
    
}

function InstalizeMenu(MenuId_,ContentElement_)
{
    ContentElement = ContentElement_;
    MenuId = MenuId_;
    M = document.getElementById(MenuId);
    if (!M) return false;
    var Items = trim(M.innerHTML).split("~");
    
    for (var i = 0;i < Items.length; i++)
    {
        if (trim(Items[i]) != "") CreateItem(Items[i]);
    }
      
    RefreshMenu();
    ShowedItemSelected();  
    
}

function ShowedItemSelected()
{
    SelItm = getCookie("MyMenuSelectedItemId1");

    if(SelItm != null && SelItm != -1)
    {
        var Itm = FindItem(SelItm,MenuItems);
        ShowItem(Itm, true );
        var Par = FindItem(Itm.Parrent,MenuItems);
        
        RefreshMenu();
        var sel = document.getElementById("TreeItem" + Itm.Id);
        var selPar = document.getElementById("TreeItem" + Par.Id);
        Mini = selPar.offsetTop;
        ShowPalka(sel.offsetTop,M,true);
      
        sel.setAttribute('style', 'color:#ED1C24; border-left: medium solid black; background:#333333 url(mymenu/SeparatorParentChrome1.png) no-repeat;background-position:left bottom;');
        selPar.className = "ChooseItemParent";
        
    }
}
function CreateItem(Source)
{
    var Params = Source.split(";");
    var Itm = new Object();
    
    //
    Itm.Name = Params[1];
    Itm.Href = Params[3];
    Itm.Id = trim(Params[2]);
    Itm.Parrent = trim(Params[0]);
    Itm.Childs = new Array();
    Itm.Showed = false;
    
    if (Itm.Parrent > -1)
    {
        var PItem = FindItem(Itm.Parrent,MenuItems);
        Itm.level = PItem.level + 1;
        if (PItem) PItem.Childs.push(Itm);
    }
    else
    {
        Itm.level = -1;
        MenuItems.push(Itm);
    }
   
}

function CreateContent(Itm)
{
    Itm.Content = "<div id=\"TreeItem" + Itm.Id + "\" "; 
    var PrntId = Itm.Parrent;
    //atributes

        Itm.Content += "onclick=\"MenuItemClick(" + Itm.Id + "); \"";
    if(PrntId != -1)
    {        
        Itm.Content += "onmouseover=\"OnMouseItemOver(this);\" onmouseout=\"OnMouseItemOut(this);\"";
    }
    if (Itm.Parrent <= -1) 
    {
        Itm.Content += " class=\"RootNode\" ";
    }
    else if (Itm.Childs.length > 0) 
    {
        Itm.Content += " class=\"SubNode\" ";
    }
    else
    {
        Itm.Content += " class=\"Node\" ";
    }
    
    Itm.Content += ">";
    
    //text
    for (var i = 0 ; i < Itm.level;i++)
    {
        Itm.Content += "&nbsp;";
    }
    
    Itm.Content += Itm.Name;
    Itm.Content += " </div>";
}



function CloseChilds(Itm)
{
    if (Itm.Childs.length > 0)
    {
        for (var i = 0;i < Itm.Childs.length; i++)
        {
            Itm.Childs[i].Showed = false;
            CloseChilds(Itm.Childs[i]);
        }
         
    }
}

function ShowItem(Itm,itemState)
{
    Itm.Showed = itemState;
    if (Itm.Parrent > -1)
    {
        var Par = FindItem(Itm.Parrent,MenuItems);
    
        if (Par) ShowItem(Par,true);
    }
    else
    {
        //Itm.setAttribute('align', 'center');
    }
}

function FindItem(id,arr)
{
    if (!arr) arr = MenuItems;
    for (var i = 0;i < arr.length; i++)
    {
        if (arr[i].Id == id) {return arr[i]};
        if (arr[i].Childs.length > 0)
        {
            var ret = FindItem(id,arr[i].Childs);
            if (ret) return ret;
        }
    }
    
    return null;
}

function fSetCookies(name, value)
{
    document.cookie = name + "=" + escape(value);
}

function RefreshMenu()
{
    if(SelItm != -1)
    {
        var SelIetm = FindItem(SelItm,MenuItems);
        var ParSelItm;
        if(SelIetm.Parrent != -1)
        {
            ParSelItm = FindItem(SelIetm.Parrent,MenuItems);
            NameSelItem = SelIetm.Name;
            NameSelParent = ParSelItm.Name;

        }
    }   
    var Content = "<input type=\"hidden\" name=\"MyMenuSelectedItemId\" id=\"MyMenuSelectedItemId\" value=\"" + SelItm + "\" /><input type=\"hidden\" name=\"MyMenuSelectedItemName\" id=\"MyMenuSelectedItemName\" value=\"" + NameSelItem + "\" /><input type=\"hidden\" name=\"MyMenuParentItemName\" id=\"MyMenuParentItemName\" value=\"" + NameSelParent + "\" />";
    for (var i = 0;i < MenuItems.length; i++)
    {
        RefreshChilds(MenuItems[i]);
        Content += MenuItems[i].Content;
    }
    //alert(Content);
    M.innerHTML = Content;
}

function RefreshChilds(Itm)
{
    CreateContent(Itm);
    if (Itm.Childs.length > 0 && Itm.Showed)
    {
        Itm.Content += "<div id=\"childs" + Itm.Id + "\">";
        for (var i = 0;i < Itm.Childs.length; i++)
        {
            RefreshChilds(Itm.Childs[i]);
            Itm.Content += Itm.Childs[i].Content;
        }
        Itm.Content += "</div>";
        
    }
}





















function trim(string)
{
    return string.replace(/(^\s+)|(\s+$)/g, "");
}



