function init() 

{

  cssjsmenu('navbar');

}



function elementContains(elmOuter, elmInner)

{

  while (elmInner && elmInner != elmOuter)

  {

    elmInner = elmInner.parentNode;

  }

  if (elmInner == elmOuter)

  {

    return true;

  }

  return false;

}



function getPageXY(elm)

{

  var point = { x: 0, y: 0 };

  while (elm)

  {

    point.x += elm.offsetLeft;

    point.y += elm.offsetTop;

    elm = elm.offsetParent;

  }

  return point;

}



function setPageXY(elm, x, y)

{

  var parentXY = {x: 0, y: 0 };



  if (elm.offsetParent)

  {

    parentXY = getPageXY(elm.offsetParent);

  }



  elm.style.left = (x - parentXY.x) + 'px';

  elm.style.top  = (y - parentXY.y) + 'px';

}



function cssjsmenu(menuid)

{

  var i;

  var j;

  var node;

  var child;

  var parent;



  // if the browser doesn't even support

  // document.getElementById, give up now.

  if (!document.getElementById)

  {

    return true;

  }



  // check for downlevel browsers

  // Opera 6, IE 5/Mac are not supported



  var version;

  var offset;



  offset = navigator.userAgent.indexOf('Opera');

  if (offset != -1)

  {

    version = parseInt('0' + navigator.userAgent.substr(offset + 6), 10);

    if (version < 7)

    {

      return true;

    }

  }



  offset = navigator.userAgent.indexOf('MSIE');

  if (offset != -1)

  {

    if (navigator.userAgent.indexOf('Mac') != -1)

    {

      return true;

    }

  }



  var menudiv = document.getElementById(menuid);



  // ul

  var ul = new Array();



  for (i = 0; i < menudiv.childNodes.length; i++)

  {

    node = menudiv.childNodes[i];

    if (node.nodeName.toUpperCase() == 'UL')

    {

      ul[ul.length] = node;

    }

  }



  // ul > li

  var ul_gt_li = new Array();



  for (i = 0; i < ul.length; i++)

  {

    node = ul[i];

    for (j = 0; j < node.childNodes.length; j++)

    {

      child = node.childNodes[j];

      if (child.nodeName.toUpperCase() == 'LI')

      {

        ul_gt_li[ul_gt_li.length] = child;

        child.style.display = 'inline';

        child.style.listStyle = 'none';

        child.style.position = 'static';

      }

    }

  }



  // ul > li > ul

  var ul_gt_li_gt_ul = new Array();



  for (i = 0; i < ul_gt_li.length; i++)

  {

    node = ul_gt_li[i];

    for (j = 0; j < node.childNodes.length; j++)

    {

      child = node.childNodes[j];

      if (child.nodeName.toUpperCase() == 'UL')

      {

        ul_gt_li_gt_ul[ul_gt_li_gt_ul.length] = child;

        child.style.position = 'absolute';

        child.style.left = '-13em';

        child.style.visibility = 'hidden';



        // attach hover to parent li

        parent = child.parentNode;

        parent.onmouseover = function (e)

        {

          var i;

          var child;

          var point;



          // stop the pure css hover effect

          this.style.paddingBottom = '0';



          for (i = 0; i < this.childNodes.length; i++)

          {

            child = this.childNodes[i];

            if (child.nodeName.toUpperCase() == 'UL')

            {

              point = getPageXY(this);

              setPageXY(child, point.x, point.y + this.offsetHeight);

              child.style.visibility = 'visible';

            }

          }

          return false;

        };

        parent.onmouseout = function (e)

        {

          var relatedTarget = null;

          if (e)

          {

            relatedTarget = e.relatedTarget;

            // work around Gecko Linux only bug where related target is null

            // when clicking on menu links or when right clicking and moving

            // into a context menu.

	    if (navigator.product == 'Gecko' && navigator.platform.indexOf('Linux') != -1 && !relatedTarget)

	    {

	      relatedTarget = e.originalTarget;

	    }

          }

          else if (window.event)

          {

            relatedTarget = window.event.toElement;

          }



          if (elementContains(this, relatedTarget))

          {

            return false;

          }



          var i;

          var child;

          for (i = 0; i < this.childNodes.length; i++)

          {

            child = this.childNodes[i];

            if (child.nodeName.toUpperCase() == 'UL')

            {

                child.style.visibility = 'hidden';

            }

          }



          return false;

        };

      }

    }

  }

  return true;

}