/******************************************************************************
* treeMenuCode.js                                                             *
*                                                                             *
* Copyright 1999 by Mike Hall.                                                *
* Web address: http://www.brainjar.com                                        *
*                                                                             *
*                                                                             *
******************************************************************************/

//----------------------------------------------------------------------------
// Define the TreeMenuItem object.
//----------------------------------------------------------------------------

// Global index variable.

var treeMenuIndex = 0;

// Constructor.

function TreeMenuItem(text, url, target, icon) {

  this.text = text;

  if (url)
    this.url = url;
  else
    this.url = "";
  if (target)
    this.target = target;
  else
    this.target = "";
  if (icon)
    this.icon = icon;
  else
    this.icon = "";

  this.submenu = null;
  this.index = treeMenuIndex++;
  this.makeSubmenu = TreeMenuMakeSubmenu;
}

// Methods.

function TreeMenuMakeSubmenu(menu) {

  this.submenu = menu;
}

//----------------------------------------------------------------------------
// Define the TreeMenu object.
//----------------------------------------------------------------------------

// Constructor.

function TreeMenu() {

  this.items = new Array();
  this.addItem = treeMenuAddItem;
}

// Methods.

function treeMenuAddItem(item) {

  this.items[this.items.length] = item;
}

//----------------------------------------------------------------------------
// Global variables used in drawing the menu.
//----------------------------------------------------------------------------

var treeMenuDocument;       // Handle to the menu frame document.
var treeMenuExpand;         // Array created from first cookie.
var treeMenuSelected;       // Index of selected menu item from other cookie.
var treeMenuLastItem;       // Flag indicating if we are on a menu's last item.
var treeMenuDepth;          // Keeps track the current menu level.
var levelSelected = -1;     // Level of selected item

//----------------------------------------------------------------------------
// This function finds the level (depth) of the selected item
//----------------------------------------------------------------------------

function findSelectedLevel(selected, menu, level) {
  var i;
  var sel = -1;

  for (i = 0; i < menu.items.length; i++) {
    if (menu.items[i].index == selected)
      sel = level;
    else if (menu.items[i].submenu)
      sel = findSelectedLevel(selected, menu.items[i].submenu, level+1);

    if (sel != -1)
      return sel;
  }

  return -1;
}


//----------------------------------------------------------------------------
// This function rewrites the menu document to display the menu.
//----------------------------------------------------------------------------

function treeMenuDisplay() {

  var i, cookie;

  // Check for cookies with the menu state data. If not found, or if the menu
  // state has not been set, initialize it.

  cookie = getCookie(treeMenuName);
  if (!cookie) {
    if (!treeMenuExpand) {
      treeMenuExpand = new Array();
      for (i = 0; i < treeMenuIndex; i++)
        treeMenuExpand[i] = 0;
      treeMenuSelected = -1;
    }
  }
  else {
    treeMenuExpand = cookie.split(",");
    cookie = getCookie(treeMenuName + "-selected");
    if (!cookie)
      treeMenuSelected = -1;
    else
      treeMenuSelected = cookie;
  }

  // Set up reference to the menu document.

  treeMenuDocument = window.frames[treeMenuFrame].document;

  // Set global variables used to draw the menu.

  treeMenuDepth = 0;


  // Draw the menu.
if (navigator.userAgent.lastIndexOf('Mac') != -1) { 
	
//  if (document.images)
  treeMenuDocument.open();
// alert ("Mac");	
	}
	else
    	{
	treeMenuDocument.open("text/html", "replace");
	}
  treeMenuDocument.writeln('<html><head>');
  treeMenuDocument.writeln('<title>' + treeMenuRoot + '</title>');
  treeMenuDocument.writeln('<style type="text/css">');
  treeMenuDocument.writeln('a {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-style: normal; font-weight: bold;}');

 treeMenuDocument.writeln('a:link, a:visited { text-decoration: none; color: #FFFFFF;}');
 treeMenuDocument.writeln('a:active {  text-decoration: none; color: #FFFFFF;}');
 treeMenuDocument.writeln('a:hover {  text-decoration: none; color: #FFFFFF;}');


  treeMenuDocument.writeln('p {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-style: normal; font-weight: bold; color: #000000;}');
  treeMenuDocument.writeln('a {text-decoration:none;}</style>');
  treeMenuDocument.writeln('</head>');
  treeMenuDocument.writeln('<body background="' + treeMenuBackground + '" bgcolor="' + treeMenuBgColor + '" text="' + treeMenuFgColor + '" link="' + treeMenuFgColor + '" alink="' + treeMenuFgColor + '" vlink="' + treeMenuFgColor + '">');
  treeMenuDocument.writeln('<table border=0 cellpadding=0 cellspacing=0>');
  treeMenuListItems(treeMenu);
  treeMenuDocument.write('<tr><td colspan="2" height="3"><img src="' + treeMenuImgDir + 'blackline.gif"></td></tr>');
  treeMenuDocument.writeln('</table>');
  treeMenuDocument.writeln('</body></html>');
  treeMenuDocument.close();
}

//----------------------------------------------------------------------------
// This function displays each item in the given menu or submenu.
//----------------------------------------------------------------------------

function treeMenuListItems(menu) {

  var i;

  for (i = 0; i < menu.items.length; i++) {
    if (i == menu.items.length - 1)
      treeMenuLastItem = true;
    else
      treeMenuLastItem = false;

    treeMenuDisplayItem(menu.items[i]);
  }
}



//----------------------------------------------------------------------------
// This displays a single menu or submenu item.
//----------------------------------------------------------------------------

function treeMenuDisplayItem(item) {

  var cmd, expanded, i, img, alt, link, submenu;

  if (treeMenuExpand[item.index] == 1) {
    if (item.index == treeMenuSelected || treeMenuDepth < levelSelected)
      expanded = true;
    else {
      treeMenuExpand[item.index] = 0;
      expanded = false;
    }
  }
  else
    expanded = false;

  // Define the command used when an item is clicked. For older browsers, just
  // return true or false so links will be followed.

  if (item.submenu)
    submenu = true;
  else
    submenu = false;
  if (item.url != "")
    link = true;
  else
    link = false;
  cmd = "return parent.treeMenuClick(" + item.index + ", " + link + ", " + submenu + ");";


  // Start the table row.

  if(submenu)
    treeMenuDocument.write('<tr><td colspan="2" height="3"><img src="' + treeMenuImgDir + 'blackline.gif"></td></tr>');

  treeMenuDocument.write('<tr valign=top><td nowrap>');

  // Draw descending "menu_spacer" from upper levels

  for (i = 0; i < treeMenuDepth; i++) {
    if(treeMenuLastItem)
      treeMenuDocument.write('<img src="' + treeMenuImgDir + 'menuspace.gif" align=left border=0 vspace=11 hspace=4>');
    else
      treeMenuDocument.write('<img src="' + treeMenuImgDir + 'menuspace.gif" align=left border=0 vspace=11 hspace=4>');

  }

  // Write the start of the link tag so all of the following images and text
  // will be clickable.

  if (item.url != "")
    treeMenuDocument.write('<a href="' + item.url + '" target="' + item.target + '" onClick="' + cmd + '">');
  else
    treeMenuDocument.write('<a href="#" onClick="' + cmd + '">');

  // If the item is a submenu, draw an arrow_down or arrow_right icon. Otherwise
  // draw nothing.

  if (item.submenu) {
    if (expanded)
        img = "hoger.gif";
    else
      img = "hoger.gif";
  }
  else
    img = "";

  if (treeMenuAltText)
    alt = ' alt="' + item.text + '"';
  else
    alt = '';

  if(img != "")
    treeMenuDocument.write('<img src="' + treeMenuImgDir + img + '"' + alt + ' align=left border=0 vspace=0 hspace=0>');

  // Write the link text and finish the link and table row.

  if (item.index == treeMenuSelected)
   treeMenuDocument.write('&nbsp;<span style="background-color:' + treeMenuHiBg + ';color:' + treeMenuHiFg + ';">' + item.text + '</span>');
  else
    treeMenuDocument.write('&nbsp;' + item.text );

  if(submenu && expanded)
    treeMenuDocument.write('<img src="' + treeMenuImgDir + 'menuspace.gif" align=left border=0 vspace=0 hspace=0>');

  treeMenuDocument.write('</a>');
  treeMenuDocument.writeln('</td></tr>');

  // If the item is a submenu and it is expanded, make a recursive call to
  // draw its item list.

  if (item.submenu && expanded) {
    treeMenuDepth++;
    treeMenuListItems(item.submenu);
    treeMenuDepth--;
  }
}

//----------------------------------------------------------------------------
// This function handles a click on a menu item.
//----------------------------------------------------------------------------

function treeMenuClick(n, link, submenu) {

  var date, cookie;

//  debug = 'n='+n+',';
  levelSelected = findSelectedLevel(n,treeMenu,0);
//  debug = debug+'sel='+levelSelected;

  // Fix bug that occurs when the top-level page is reloaded.

  if (!treeMenuExpand)
    treeMenuDisplay();

  // If this is a submenu, toggle the expansion flag.

  if (submenu)
    treeMenuExpand[n] = 1 - treeMenuExpand[n];

  // Save the selected item index and update the cookies.

  treeMenuSelected = n;
  var date = new Date ();
  date.setTime (date.getTime() + (86400 * 1000 * treeMenuDays));
  cookie = treeMenuExpand.toString();
  setCookie(treeMenuName, cookie, date);
  setCookie(treeMenuName + "-selected", treeMenuSelected, date);

  // Set up redraw the menu frame.

  setTimeout("treeMenuDisplay()", 10);

  // Return the link flag.

  return link;
}

//----------------------------------------------------------------------------
// This function handles a click on the menu root.
//----------------------------------------------------------------------------

function treeMenuClickRoot() {

  // Clear the menu state.

  treeMenuExpand = null;
  treeMenuSelected = null;

  // Delete cookies.

  deleteCookie(treeMenuName);
  deleteCookie(treeMenuName + "-selected");

  // Set up redraw the menu frame.

  setTimeout("treeMenuDisplay()", 10);

  return false;
}

//----------------------------------------------------------------------------
// Set a cookie given a name, value and expiration date.
//----------------------------------------------------------------------------


function setCookie (name, value, expires) {}
function setCookie_org(name, value, expires) {

  document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
}

//----------------------------------------------------------------------------
// Returns the value of the named cookie.
//----------------------------------------------------------------------------

function getCookie(name) { return "";} 
function getCookie_org(name) {

  var search;

  search = name + "=";
  offset = document.cookie.indexOf(search) ;
  if (offset != -1) {
    offset += search.length;
    end = document.cookie.indexOf(";", offset);
    if (end == -1)
      end = document.cookie.length;
    return unescape(document.cookie.substring(offset, end));
  }
  else
    return "";
}

//----------------------------------------------------------------------------
// Delete the named cookie.
//----------------------------------------------------------------------------

function deleteCookie(name) {}
function deleteCookie_org(name) {

  var expdate = new Date();
  expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));
  setCookie(name, "", expdate);
}
