//
// Portions and modifications Copyright (C) 2008 Bryan J. Rentoul. 
// All rights reserved.
//
// Original author's license text...
// Copyright (C) 2005 Ilya S. Lyubinskiy. All rights reserved.
// Technical support: http://www.php-development.ru/
//
// YOU MAY NOT
// (1) Remove or modify this copyright notice.
// (2) Distribute this code, any part or any modified version of it.
//     Instead, you can link to the homepage of this code:
//     http://www.php-development.ru/javascripts/menu.php.
//
// YOU MAY
// (1) Use this code on your website.
// (2) Use this code as a part of another product provided that
//     its main use is not creating javascript menus.
//
// NO WARRANTY
// This code is provided "as is" without warranty of any kind, either
// expressed or implied, including, but not limited to, the implied warranties
// of merchantability and fitness for a particular purpose. You expressly
// acknowledge and agree that use of this code is at your own risk.

// If you find my script useful, you can support my site in the following ways:
// 1. Vote for the script at HotScripts.com (you can do it on my site)
// 2. Link to the homepage of this script or to the homepage of my site:
//    http://www.php-development.ru/javascripts/menu.php
//    http://www.php-development.ru/
//    You will get 50% commission on all orders made by your referrals.
//    More information can be found here:
//    http://www.php-development.ru/affiliates.php


/*
function logit(msg) {
	var m = document.getElementById('debugmsg');
	m.innerHTML = msg;
}
*/

// ----- DropDown Control ------------------------------------------------------

// ----- Show Aux -----

function at_show_aux(parent, child) {
  var p = document.getElementById(parent);
  var c = document.getElementById(child);

  p.className = "active";

  var top  = (c["at_position"] == "y") ? p.offsetHeight -1 : 0;
  var left = (c["at_position"] == "x") ? p.offsetWidth -1 : 0;

  var i = 0;
  for (; p; p = p.offsetParent) {
    if (i++ == 0) { // assume parent is absolute positioned and ignore it (p.style.position always returned "")
      left += p.offsetLeft;
      top  += p.offsetTop;
    }
  }

  c.style.position		= "absolute";
  c.style.top			= top +'px';
  c.style.left			= left+'px';
  c.style.visibility	= "visible";
}

// ----- Hide Aux -----

function at_hide_aux(parent, child) {
  document.getElementById(parent).className = "parent";;
  document.getElementById(child ).style.visibility = "hidden";
}

// ----- Show -----

function at_show_p() {
  c = document.getElementById(this["at_child" ]);
  at_show_aux(this.id, c.id);
  clearTimeout(c["at_timeout"]);
}

function at_show_c() {
  p = document.getElementById(this["at_parent"]);
  at_show_aux(p.id, this.id);
  clearTimeout(this["at_timeout"]);
}

// ----- Hide -----

function at_hide_p() {
  c = document.getElementById(this["at_child" ]);
  c["at_timeout"] = setTimeout("at_hide_aux('"+this.id+"', '"+c.id+"')", 100);
}

function at_hide_c() {
  p = document.getElementById(this["at_parent"]);
  this["at_timeout"] = setTimeout("at_hide_aux('"+p.id+"', '"+this.id+"')", 100);
}

// ----- Attach -----

function at_attach(parent, child, position) {
  p = document.getElementById(parent);
  c = document.getElementById(child);

  p["at_child"]    = c.id;
  c["at_parent"]   = p.id;
  c["at_position"] = position;

  p.onmouseover = at_show_p;
  p.onmouseout  = at_hide_p;
  c.onmouseover = at_show_c;
  c.onmouseout  = at_hide_c;
}

// ----- DropDown Menu ---------------------------------------------------------

// ----- Build Aux -----

function dhtmlmenu_build_aux(parent, child, position)
{
  if (!document.getElementById(parent)) return;
  document.getElementById(parent).className = 'parent';
  
  document.write('<div class="vert_menu" id="'+parent+'_child">');
  var n = 0;
  for (var i in child) {
    if (i == '-') {
      if (child[i] != '#') // inactive (usually parent) items
      	document.getElementById(parent).href = child[i];
      else
      	document.getElementById(parent).style.cursor = 'default';
      continue;
    }
    if (typeof child[i] == "object")  {
      if (child[i]['-'] == '#') // inactive (usually parent) items
        document.write('<div class="parent" id="'+parent+'_'+n+'">'+i+'</div>');
      else
        document.write('<a class="parent" id="'+parent+'_'+n+'">'+i+'</a>');
      dhtmlmenu_build_aux(parent+'_'+n, child[i], "x");
    } else {
      if (child[i] == '#') 
		  document.write('<div id="'+parent+'_'+n+'">'+i+'</div>');
	  else
		  document.write('<a id="'+parent+'_'+n+'" href="'+child[i]+'">'+i+'</a>');
	}
    n++;
  }
  document.write('</div>');
  at_attach(parent, parent+"_child", position);
}

// ----- Build -----

function dhtmlmenu_build(menu) {
  for (var i in menu) dhtmlmenu_build_aux(i, menu[i], "y");
}
