// setup code
var menu_line_sep='#';
var menu_lnk_sep='|';
// html in front of menu
var menu_b='<table width="180" border="0" cellspacing="0" cellpadding="0" class="leftmenu_table">';
// html at the end of menu
var menu_e='</table>\n';
// html in front of menu item
var s_beg='<tr><td height="25" id="mcell" class="leftmenu_bg" onmouseover="chg_style(this,1)" onmouseout="chg_style(this,0)">&nbsp;&nbsp;';
// menu item style
var itemstyle='leftmenu_txt';
// style for levels
var levels_style=new Array('<span>','<span style="color:#a0c0ff">','<span style="color:#b0d0ff">','<span style="color:#b0d0ff">','<span style="color:#b0d0ff">');
// html after menu item
var s_end='</td></tr>'
// ident html in front of menu item
var identator_b='&nbsp;&nbsp;';
// ident html after menu item
var identator_e='';
// width in char
var m_width=28;
// symbol for expanding menu
var submenu_sign='&nbsp;&rsaquo;&rsaquo;';

// menu code
var menuarr=new Array();

//-------------------------------------------------------------------------
function show_menu()
{
 var menu_loc=document.getElementById('menu_loc');

 draw_menu();
}

//-------------------------------------------------------------------------
function parse_str_2_arr(ms)
{
 var job; // 0-read menu item, 1-read link
 var n,cnt;
 var c,s,l;
 var lnk;
 var lvl;

 job=0;cnt=0;lvl=0;
 s='';l='';
 for(n=0;n<ms.length;n++)
    {
     c=ms.charAt(n);
     if(job==0) s+=c; // get menu item
     if(job==1) l+=c; // get link
     if(c==menu_line_sep)
       {
       	for(lvl=0;(s.charAt(lvl)==' ') && (lvl<s.length);lvl++); // shvati koji je level menu-a
        lvl=lvl>10 ? 10 : lvl; // ako se zbuni pa odleti 'ko zna gdje, da se ipak ogranici
        s=s.substr(0,s.length-1);
        l=l.substr(0,l.length-1);
        menuarr.push(new Array(cnt++,s,l,lvl,lvl==0 ? 1 : 0)); // array(no, item, link, item level, is item opened)
        s='';l='';
        job=0;
       }
      else if(c==menu_lnk_sep)
       {
        job=1;
        continue;
       }
    }
}

//-------------------------------------------------------------------------
function draw_menu()
{
 var n,m;
 var s,rs,sep_b,sep_e,lnk_b,lnk_e,lb,le,clck,subm_sign;
 var menu_loc=document.getElementById('menu_loc');
 var openeditems;

 openeditems=get_opened_menu_items();
 rs='';
 lnk_e="</a>"; // a href ending, vidi dolje (sluzi ili kao zavrsetak od <a ili kao oznaka da je to submeni
 for(n=0;n<menuarr.length;n++)
    {
     m= n==menuarr.length-1 ? menuarr.length-1 : n+1; // check if we're not on the last element of an array
     m= menuarr[m][3]>menuarr[n][3] ? 1 : 0; // if this element has subelements, put event procedure call in link
     clck=m>0 ? 'onClick="menu_click('+menuarr[n][0]+')"' : ''; // onclick event

     // paramstr u slijedecoj liniji - varijabla iz index.php
     lnk_b='<a href="'+
       ((menuarr[n][2]=='' || menuarr[n][2].charAt(menuarr[n][2].length-1)=='/') ? menuarr[n][2]+'#' : menuarr[n][2]+'?'+paramstr+'&m='+openeditems)+
       '" class="'+itemstyle+'">'; // a href beginning (a ako nema linka vrati '#' da bi bio kao neki link, a ako je na kraju linka '/' - onda ne dodaj parametre)
//     lnk_b='<a href="'+ ((menuarr[n][2]=='') ? '#' : menuarr[n][2])+'?'+      (menuarr[n][2].charAt(menuarr[n][2].length-1)=='/' ? "+" : "-")     +'&m='+openeditems+'" class="'+itemstyle+'">'; // a href beginning (a ako nema linka vrati '#' da bi bio kao neki link)
     lb= m==0 ? lnk_b : '';le= m==0 ? lnk_e : ''; // ako nije submenu onda je link
     subm_sign= m==0 ? '' : submenu_sign;
     for(m=menuarr[n][3],sep_b='',sep_e=''; m>0 ;m--,sep_b+=identator_b,sep_e+=identator_e); // ident if submenu

     s=s_beg+sep_b+'<span '+clck+' title="'+trim(menuarr[n][1])+'" class="'+itemstyle+' ">'+lb+
       '<font class="'+
       itemstyle+'"> '+levels_style[menuarr[n][3]]+
       menuarr[n][1].substr(0,m_width)+subm_sign+
       '</span>'+
       '</font>'+
       le+sep_e+'</span>'+s_end;
     rs+=menuarr[n][4]>0 ? s : '';
    }

 menu_loc.innerHTML=menu_b+rs+menu_e;
}

//-------------------------------------------------------------------------
function menu_click(item)
{
 var n,i,m;

 i=item<menuarr.length ? item : menuarr.length;
 i++; // // don't open item that is clicked on, it is already visible but jump to submenu and set it open
 if(menuarr[i][4]==0) // uklj
   {
    for(n=i;n<menuarr.length;n++)
       {
       	m=menuarr[i][3];
        if(menuarr[n][3]==m) menuarr[n][4]=1; // uklj
        if(menuarr[n+1][3]<m) break;
       }
   }
  else if(menuarr[i][4]==1) // isklj
   {
    for(n=i;n<menuarr.length;n++)
       {
       	m=menuarr[i][3];
        if(menuarr[n][3]>=m) menuarr[n][4]=0; // isklj
        if(menuarr[n+1][3]<m) break;
       }
   }

 draw_menu();
}

//-------------------------------------------------------------------------
function d2h(d) {return d.toString(16);}

//-------------------------------------------------------------------------
function h2d(h) {return parseInt(h,16);}

//-------------------------------------------------------------------------
// takes array element "item_opened" as it is a bit string, and converts it to hex
function get_opened_menu_items()
{
 var n,r,rr;
 var bi,bp; // byte index, bit position
 var na=new Array(16);

 for(n=0;n<na.length;n++) na[n]=0; // initialize
 for(n=0;n<menuarr.length;n++)
   {
    bi=Math.floor(n/8);
    bp=7-(n % 8);
    na[bi]=na[bi] | (Math.pow(2,bp*menuarr[n][4])*menuarr[n][4]);
   }
 for(n=0,r='';n<Math.ceil(menuarr.length/8);n++)
   {
    rr='0'+d2h(na[n]);
    r+=rr.substr(rr.length-2,2);
   }

 return(r);
}

// takes array element "item_opened" as it is a bit string, and converts it to hex
function set_opened_menu_items(opened)
{
 var n,bi,bp;

 opened=opened+''; // else it reports an error that 'opened' is not a string
 if(opened.length>1)
   {
    for(n=0;n<menuarr.length && (n<=opened.length*4);n++) // *4 length of string is length of half bytes
      {
       bi=Math.floor(n/8);
       bp=7-(n % 8);
       menuarr[n][4]=(h2d(opened.substr(bi*2,2)) & Math.pow(2,bp))>0 ? 1 : 0;
      }
   }
}

//-------------------------------------------------------------------------
function chg_style(obj,st)
{

 if(st==1)
   obj.className = 'leftmenu_bg_lit';
  else
   obj.className = 'leftmenu_bg';

}


