var menuwidth='165px';var disappeardelay=1000;var hidemenu_onclick="yes";var ie4=document.all;var ns6=document.getElementById&&!document.all;if(ie4||ns6)document.write('<div id="dropmenudiv" style="visibility:hidden;position:absolute;z-index:100;width:'+menuwidth+';" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>');function getposOffset(what,offsettype){var totaloffset=(offsettype=="left")?what.offsetLeft:what.offsetTop;var parentEl=what.offsetParent;while(parentEl!=null){totaloffset=(offsettype=="left")?totaloffset+parentEl.offsetLeft:totaloffset+parentEl.offsetTop;parentEl=parentEl.offsetParent}return totaloffset};function showhide(obj,e,visible,hidden,menuwidth){if(ie4||ns6)dropmenuobj.style.left=dropmenuobj.style.top=-500;if(menuwidth!=""){dropmenuobj.widthobj=dropmenuobj.style;dropmenuobj.widthobj.width=menuwidth}if(e.type=="click"&&obj.visibility==hidden||e.type=="mouseover")obj.visibility=visible;else if(e.type=="click")obj.visibility=hidden}function iecompattest(){return(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body};function clearbrowseredge(obj,whichedge){var edgeoffset=0;if(whichedge=="rightedge"){var windowedge=ie4&&!window.opera?iecompattest().scrollLeft+iecompattest().clientWidth-15:window.pageXOffset+window.innerWidth-15;dropmenuobj.contentmeasure=dropmenuobj.offsetWidth;if(windowedge-dropmenuobj.x<dropmenuobj.contentmeasure)edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth}else{var topedge=ie4&&!window.opera?iecompattest().scrollTop:window.pageYOffset;var windowedge=ie4&&!window.opera?iecompattest().scrollTop+iecompattest().clientHeight-15:window.pageYOffset+window.innerHeight-18;dropmenuobj.contentmeasure=dropmenuobj.offsetHeight;if(windowedge-dropmenuobj.y<dropmenuobj.contentmeasure){edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight;if((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure)edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge}}return edgeoffset};function populatemenu(what){if(ie4||ns6)dropmenuobj.innerHTML=what.join("")};function dropdownmenu(obj,e,menucontents,menuwidth){if(window.event)event.cancelBubble=true;else if(e.stopPropagation)e.stopPropagation();clearhidemenu();dropmenuobj=document.getElementById?document.getElementById("dropmenudiv"):dropmenudiv;populatemenu(menucontents);if(ie4||ns6){showhide(dropmenuobj.style,e,"visible","hidden",menuwidth);dropmenuobj.x=getposOffset(obj,"left");dropmenuobj.y=getposOffset(obj,"top");dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj,"rightedge")+"px";dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj,"bottomedge")+obj.offsetHeight+"px"}return clickreturnvalue()};function clickreturnvalue(){if(ie4||ns6)return false;else return true};function contains_ns6(a,b){while(b.parentNode)if((b=b.parentNode)==a)return true;return false};function dynamichide(e){if(ie4&&!dropmenuobj.contains(e.toElement))delayhidemenu();else if(ns6&&e.currentTarget!=e.relatedTarget&&!contains_ns6(e.currentTarget,e.relatedTarget))delayhidemenu()};function hidemenu(e){if(typeof dropmenuobj!="undefined"){if(ie4||ns6)dropmenuobj.style.visibility="hidden"}};function delayhidemenu(){if(ie4||ns6)delayhide=setTimeout("hidemenu()",disappeardelay)};function clearhidemenu(){if(typeof delayhide!="undefined")clearTimeout(delayhide)};if(hidemenu_onclick=="yes")document.onclick=hidemenu;

        var maxLevel = 0;
        var lenElement = 184;
        var lenMenu =200;
        var dlt = 7;

        var items = new Array();

        var countItem = 0;
        var curlevel=0;
        var curKey = "";
        var curItem = "00";
        var oldLevel=0;
        var opened = false;

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function newItem(plevel,name,url,st,link_ajax){ 
            var mkey = dec_to_hex(countItem);  
            var level = parseInt(plevel);
            var status= parseInt(st);
            var parent="";
            var folder = false;
            var next = "";

            if (level==0){
            //keys[countItem] = mkey;  
            //    parent = "";
             if (curKey!="")
               items[curKey].next = mkey;   
            } else {
              if (level-items[curKey].level==1) {
                items[curKey].folder = true;
                dkey = items[curKey].key;
                mkey = mkey+"_"+dkey;
                parent = dkey;
                items[curKey].next = mkey;   
               } else {
                 if (level==items[curKey].level){
                    dkey = items[curKey].key;
                    dx = dkey.indexOf("_");
                    if (dx>-1) 
                      dkey = dkey.substring(dx+1); 
                    mkey = mkey+"_"+dkey;
                    parent = dkey;
                    items[curKey].next = mkey;   
               } else {
                 // сюда переход если слетаем с высокого уровня на низкий, отл более чем на 1
                 done=true;
                 jj = countItem;

                 for( var ArrVal in items ) {
                   numb = items[ArrVal].id;
                   if (numb==countItem)
                      break; //exit?
                   if (level==items[ArrVal].level)
                      fkey = items[ArrVal].key;
                 } 
                dkey = items[fkey].key;
                dx = dkey.indexOf("_");
                if (dx>-1) 
                  dkey = dkey.substring(dx+1); 
                parent = dkey;
                mkey = mkey+"_"+dkey;
                items[curKey].next = mkey;   
               }
            }
            }

            items[mkey] = new Object();
            items[mkey].id     = countItem++;
            items[mkey].key    = mkey;
            items[mkey].level  = level;
            items[mkey].status = 0; 
            items[mkey].name   = name;
            items[mkey].url    = url;
            items[mkey].parent = parent;
            items[mkey].folder = folder;
            items[mkey].next   = next;
            items[mkey].link_ajax=link_ajax;
            curKey = mkey;
            if(maxLevel<level) maxLevel=level;
        }
 
        function isFolder(index){ 
          return items[ index ].folder ;
        }

        function addTable(){
         return "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">";
        }
        
        function addEndTable()
        { return "</table>";}

        function addTr()
        { return "<tr>"}

        function addEndTr()
        { return "</tr>";}

        function addTd(w)
        { var retstr="<td "; 
           retstr += " width="+w+">";
         return retstr;}

        function addEndTd()
        { return "</td>";}

        function closeChild(x){
          for(var av in items){
            if (items[av].parent==x.key){
              items[av].status=0;
              if (items[av].folder)
                  closeChild(items[av]);
            } 
          }
        }

        function openChild(x){
          for(var av in items){
            if (items[av].parent==x.key){
              items[av].status=1;
            } 
          }
        }
        
        function podchinen(x,y){
          var rez=false;
          if (x.key.length>y.key.length){
            if (x.key.indexOf(y.key)>0)
               rez=true;
          }
         return rez;
        }

        function changeStatus(x){
          var zx="opened";
          //alert(x+' '+items[x]+' curItem:'+curItem+' name:'+items[curItem].name)
          var oldCurStatus = items[curItem].status;
          var oldStatus    = items[x].status;
          var opened       = false;
          var openedCurItem= false; 
          var podch        = podchinen(items[x],items[curItem]); // x - наследник curItem, т.е. даже если x=curItem, то он ему неподчинен

          if (items[items[curItem].next].status==1 && oldCurStatus==1)
            openedCurItem = true;

          if (x==curItem){
            if (openedCurItem)
              closeChild(items[curItem]);
            else
              openChild(items[curItem]);
          } else {
              if (items[items[x].next].status==1 && oldStatus==1)
                opened = true;
              if (openedCurItem && !podch){
                  tkey = items[curItem].parent;
                  closeChild(items[curItem]);
                  if (items[x].parent!=tkey){
                    while (tkey!=""){
                     tkey0 = items[tkey].parent;
                     closeChild(items[tkey]);
                     tkey = tkey0;
                    }
                  }
              }
              if (!opened)
                zx="closed";
              items[x].status=1;              
              if (opened){
                closeChild(items[x]);
              } else{
                openChild(items[x]);
              }
          }
          curKey  = items[x].key;
          curItem = x;
//          showAllStatus();
          drawTree();
        }

        function mess(x){ 
           alert(x);
        }

        function hex_to_dec(x){
          return parseInt(x,16); 
        }

        function dec_to_hex(x){
          rez=""+ Number(x).toString(16); 
          if (rez.length<2)
            rez="0"+rez;
          return rez;
        }

        function showAllStatus(){
          var str="key|name|level|status|next|parent\n";
          for( var av in items ) {
            str += items[av].key+"|"+items[av].name+"|"+items[av].level+"|"+items[av].status+"|"+items[av].next+"|"+items[av].parent+"\n";
          }         
         mess(str);
        }

        function loadTree(){
           var str="";
           var mstr="";
           var dx=0;
           var arrstr = new Array();

           o = document.getElementById('743'); 
           str = o.innerHTML;
           if (str.indexOf('~--')>0)
             m_symb = '~--'
           else
             m_symb = '~'

           arrstr = str.split(m_symb);
           str="";
           arrstr.pop();
           for( var i=0 ; i<=arrstr.length-1 ; i++){

              mstr = rtrim(arrstr[i]);
                 //alert('ops1 '+mstr)

              if (mstr.length>0){
                ma=mstr.split("|"); 
                newItem(ma[0],ma[1],ma[2],ma[3],ma[4]); 
              }
           }
           //for( var i=0 ; i<items.length ; i++){
           //  alert(items[i])
           //}
        }

        function drawTree(){
          var str= "";
          for( var av in items ) {
             obj = items[av];
              if(obj.status>0 || obj.level==0){
                 str += addTable()+addTr();
                 if (obj.level>0){
                   for(j=0;j<obj.level;j++){
                     str += addTd(dlt)+"&nbsp;"+addEndTd();
                   }
                 } 
              str += addTd(lenElement)
              str += "<a href=\"";
              fld=isFolder(av);
              if(fld){ 
                str += "#\" onClick=\"changeStatus('"+av+"');\""; 
              } else {
                str += obj.url+"\" onClick=\""+obj.link_ajax+"\"";
              }
              str += ">";
              if(fld || obj.level==0){
                str += "<b>";
                if(fld)
                 str+="<img border=0 src=\"/templates/eco/images/tri.gif\"/> ";
               str+=" "+obj.name+"</b></a>";}
              else
               str+= obj.name+"</a>";

              str += addEndTd()+addEndTr();
              str += addTr()+"<td bgcolor=\"#89a0af\" colspan=\""+(obj.level+1)+"\"><img width=\"196px\" height=\"1px\" src=\"/images/dot.gif\"/>"+addEndTd()+addEndTr()+addEndTable();
              } 
            }
         o=document.getElementById("place");
         o.innerHTML = str; 
         }
    