   //---------------------- macro expand start ----------------------
   nav_array  = new Array(); tab_array  = new Array(); root_array = new Array(); table_header = ""; table_start = ""; table_stop  = ""; table_footer = ""; var level = 1;
   function create_nav() {var output = table_header + table_start;for (var row = 0; row < pnav.length; row++){if (pnav[row] != ''){output += pnav[row];}} output += table_stop + table_footer; return output;}    
   function refresh_nav() { if (document.getElementById) {document.getElementById('mypnav').innerHTML =  create_nav();} else if (document.all) {document.all('mypnav').innerHTML =  create_nav();}}
   function insert_rows (at, howmany){size = pnav.length; for (var row = 1; row < (size-at+1); row++){pnav[size+howmany-row] = pnav[size-row];}}
   function update_nav (where, all) { var phold = pnav[where].split("<!--A-->");var chold = cnav[0].split("<!--A-->"); if (!chold[1]) pnav[where] = cnav[0]; else if (phold[1]) { if (!chold[2]) chold[2]=""; pnav[where] = chold[0] + phold[1] + chold[2];} else pnav[where] = cnav[0]; if (all){insert_rows(where+1, cnav.length-1); for (var row = 1; row < cnav.length; row++){pnav[where+row] = cnav[row];}} else { phold = pnav[where]; pnav = cnav; pnav[0] = phold;}}
   function process_nav (all) {var found = 0; var where = -1; var row = 0; while ((row < pnav.length) && (!found)) { if (pnav[row].indexOf(root) > -1) {found = 1; where = row;} row++; } if ((where >= 0) && (where < pnav.length)) update_nav (where, all);}
   function replaceAll(line,from,to) {var re = new RegExp (from, 'gi'); return (line.replace(re, to));}
   function process_multi_nav () { if (file_depth==0) return; var add=""; var hadd = replaceAll(ipath,"images/","");hadd = hadd.substring(1); nav_okay = true; cnav = in_cnav.split('\t'); pnav = cnav;for (count = root_array.length; count > 1; count--) { root = root_array[count-1]; if (nav_array[count-2] == null) { nav_okay = false; } else { add+="../"; root=add+root; if(ipath == "'images/") hold=nav_array[count-2]; else hold=replaceAll(nav_array[count-2],"'images/",ipath); hold = replaceAll(hold,"href='",("href='"+add+hadd)); pnav=hold.split('\t'); if (count > level) process_nav(1); else process_nav(0); cnav=pnav; }} if (nav_okay) refresh_nav();}
   //---------------------- macro expand end -----------------------
   //---------------------- macro tab start --------------------------
   var snav = "";
   function create_tab() {var output="";var tab; for (tab = 0; tab < pnav.length; tab++){if (pnav[tab] != ''){output +=pnav[tab];}} for (tab = 0; tab < snav.length; tab++){if (snav[tab] != ''){output +=snav[tab];}} return output;}    
   function refresh_tab() { if (document.getElementById) {document.getElementById('myptab').innerHTML =  create_tab();} else if (document.all) {document.all('myptab').innerHTML =  create_tab();} }
   function update_tab (where) { var phold = pnav[where].split("<!--A-->"); var chold = ctab.split("<!--A-->"); if (!chold[1]) pnav[where] = ctab;  else if (phold[1]) { if (!chold[2]) chold[2]="";  pnav[where] = chold[0] + phold[1] + chold[2]; }  else pnav[where] = ctab; snav[where-1]=stab;}
   function find_tab () {var found = 0; var where = -1; var row = 0; var path_root = root_array[1]; while ((row < pnav.length) && (!found)) { if (pnav[row].indexOf(path_root) > -1) {found = 1; where = row;}  row++; } return where;}
   function process_tab_nav () {  if (file_depth==0) return; if (!root_array[1]) return; var add="";  var hadd = replaceAll(ipath,"images/",""); hadd = hadd.substring(1); nav_okay = true; hold=replaceAll(tab_array[0],"'images/",ipath); tabsplit = hold.split('<!--S-->');pnav = tabsplit[0].split('\t'); var where = find_tab (); for (count = root_array.length; count > 1; count--) { root = root_array[count-1]; if (nav_array[count-2] == null) { nav_okay = false; } else { add+="../"; root=add+root; }} if (nav_okay) { tabsplit[0] = replaceAll(tabsplit[0],"href='",("href='"+add+hadd)); if (add.length >= 3) add = add.substring(3); if(ipath == "'images/") { ctab=replaceAll(ctab,"href='",("href='"+add)); } else { stab=replaceAll(stab,"'images/",ipath); ctab=replaceAll(ctab,"'images/",ipath); ctab=replaceAll(ctab,"href='",("href='"+add+hadd)); } pnav=tabsplit[0].split('\t'); snav = tabsplit[1].split('\t'); update_tab (where); refresh_tab(); }}
   //---------------------- macro tab end --------------------------
   //---------------------- macro path start ------------------------
   cpath  = new Array();
   function create_path() {var output="";for (var tab = 0; tab < cwhich.length; tab++){if (cwhich[tab] != ''){output +=cwhich[tab];}} return output;}    
   function refresh_path(){ if (document.getElementById) {document.getElementById('pathnav').innerHTML = create_path();} else if (document.all) {document.all('pathnav').innerHTML = create_path();} }
   function update_path (which, where) { var phold = pnav[where].split("<!--A-->"); var chold = cwhich[which].split("<!--A-->"); if (!chold[1]) pnav[where] = pnav[where]; else if (phold[1]) { if (!chold[2]) chold[2]=""; cwhich[which] = chold[0] + phold[1] + chold[2]; } else pnav[where] = pnav[where]; }
   function find_path (which) { var found = 0; var where = -1; var row = 0; var path_root = root_array[which]; while ((row < pnav.length) && (!found)) { if (pnav[row].indexOf(path_root) > -1) { found = 1; where = row;} row++; } return where;}
   function process_path_nav () { if (file_depth==0) return; if (tab_array[0]==null) return; var add=""; var hadd = replaceAll(ipath,"images/",""); hadd = hadd.substring(1); nav_okay = true; pnav = tab_array[0].split('\t'); var where; if (document.getElementById) {cwhich=document.getElementById('pathnav').innerHTML.split('\t');} else if (document.all) {cwhich=document.all('pathnav').innerHTML.split('\t');} else cwhich = null; if (cwhich){ for (count = root_array.length-1; count >= 0; count--) { root = root_array[count]; if (count == 0) { if (tab_array[count] == null) { nav_okay = false; } else { pnav = tab_array[count].split('\t'); where = find_path (count); if (where >= 0) update_path(count, where);} } else { if (tab_array[count-1] == null) { nav_okay = false; } else { pnav = tab_array[count-1].split('\t'); where = find_path (count); if (where >= 0) update_path(count, where);}}} if (nav_okay) { refresh_path();}}}
   //---------------------- macro path end --------------------------
   //---------------------- macro bottom start ----------------------
   cbtm  = new Array();var cbottom = "";
   function refresh_btm() {if (document.getElementById) {document.getElementById('btmnav').innerHTML =  cbottom;} else if (document.all) {document.all('btmnav').innerHTML =  cbottom;} }
   function process_btm_nav () { if (file_depth==0) return; if (cbtm[0]==null) return; var add=""; var hadd = replaceAll(ipath,"images/",""); hadd = hadd.substring(1); for (count = root_array.length; count > 1; count--) { add+="../"; hold = replaceAll(hold,"href='",("href='"+add+hadd)); } if (cbtm[0]) { cbottom=replaceAll(cbtm[0],"'images/",ipath);  cbottom=replaceAll(cbottom,"href='",("href='"+add+hadd));  refresh_btm(); }}
   //---------------------- macro bottom end -----------------------
   function find_agent(id){ return navigator.userAgent.toLowerCase().indexOf(id);};
   function process_macro_nav (){if ((find_agent("msie 5")!=-1) && (find_agent("mac")!=-1)) return;process_multi_nav();process_tab_nav();process_path_nav();process_btm_nav();}
   
