	function getElementsByClassName(name) {
		var results = new Array;
		var elems = document.getElementsByTagName("*");
		for (var i = 0; i < elems.length; i++) {
			if (elems[i].className.indexOf(name) != -1) {
				results[results.length] = elems[i];
			}
		}
		return results;
	}

  function isIE()
  {
    return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
  }

  function getInterval()
  {
    return(5);
  }

  function getStep()
  {
    return(50);
  }

  function addClass(oElement, sClass)
  {
    if ((oElement) && (oElement.className) && (oElement.className.indexOf(sClass) < 0))
    {
      if ((oElement.className) && (oElement.className != ""))
      {
        oElement.className += " " + sClass;
      }
      else
      {
        oElement.className = sClass;
      }
    }
  }

  function removeClass(oElement, sClass)
  {
    if ((oElement) && (oElement.className) && (oElement.className.indexOf(sClass) >= 0))
    {
      oElement.className = oElement.className.replace(" " + sClass, "").replace(sClass, "");
    }
  }

  function findChildByClass(oElement, sClass)
  {
    if (oElement)
    {
      var oChild = oElement.firstChild;

      while ((oChild) && (oChild.nodeType != 1))
      {
         oChild = oChild.nextSibling;
      }

      if (oElement.className.indexOf(sClass) >= 0)
      {
        return(oElement);
      }
      else if (oChild)
      {
        while ((oChild) && (oChild.className.indexOf(sClass) < 0))
        {
          oChild = oChild.nextSibling;

          while ((oChild) && (oChild.nodeType != 1))
          {
             oChild = oChild.nextSibling;
          }
        }
  
        if (oChild)
        {
          return(oChild);
        }
      }
    }

    return(null);
  }

  function getElement(sID)
  {
    var oElement = document.getElementsByName(sID);
    
    if ((!oElement) || (!oElement.length))
    {
      oElement = document.getElementById(sID);
    }
      
    if ((oElement) && (oElement.length))
    {
      oElement = oElement[0];
    }

    return(oElement);
  }
  
  var divShow = null;
  var iShowTimer = 0;

  var divHide = null;
  var iHideTimer = 0;


  function slidePanel(e)
  {
    //Get the href that was clicked...
    var Link = null;
    var TargetPanelID = null;

    if (!e)
      e = window.event;

    if (e.target)
    {
      Link = e.target;
    }
    else if (e.srcElement)
    {
      Link = e.srcElement;
    }

    if ((Link.nodeType == 3) && (Link.parentNode)) //avoid a Safari bug 
      Link = Link.parentNode;

    if (Link)
    {
      //get the href of the current link
      TargetPanelID = Link.href;

      if ((TargetPanelID) && (TargetPanelID != "") && (TargetPanelID.indexOf("#") >= 0))
      {
        TargetPanelID = TargetPanelID.substr((TargetPanelID.indexOf("#") + 1));
      }
    }

    if ((divShow) && (divShow.id != TargetPanelID ))
    {
      divHide = divShow;

      removeClass(findChildByClass(divHide, "panelContent"), "activePanel");

      divShow = null;

      iHideTimer = window.setInterval(hideDiv, getInterval());
    }

    var divWrap = getElementsByClassName("subContentWrap")[0];

    addClass(divWrap, "overlay");

    if ((!divShow) || (divShow.id != TargetPanelID ))
    {
      divShow = getElement(TargetPanelID );

      if (divShow)
      {
        divShow.style.left = "-750px";

        iShowTimer = window.setInterval(showDiv, getInterval());
      }
    }

    return(false);
  }

  function showDiv()
  {
    if (divShow)
    {
        var Left = parseInt(divShow.style.left) + getStep();

      
        if (Left >= 0)
        {
          window.clearInterval(iShowTimer);

          addClass(findChildByClass(divShow, "panelContent"), "activePanel");

          Left = 0;
        }

        divShow.style.left = Left + "px";
      }
  }

  function hideDiv()
  {
    if (divHide)
    {
        var Left = parseInt(divHide.style.left) - getStep();
      
        if (Left <= -750)
        {
          window.clearInterval(iHideTimer);

          Left = -750;
        }

        divHide.style.left = Left + "px";
    }
  }
  
  function applySlidingPanelAttributes()
  {
    var Links = getElementsByClassName("panelLink");
  
    //loop through the array of links with class = "panelLink"
    if (Links)
    {
      for (var i=0; i < Links.length; i++) 
      {
        var Link = Links[i];

        if ((Link) && (Link.tagName) && (Link.tagName.toLowerCase() == "a") && (Link.href))
        {
          Link.onclick = slidePanel;
        }      
      }
    }
  }
  
  var prevOnLoad = window.onload;

  window.onload = applySlidingEffects;

  function applySlidingEffects()
  {
    if (prevOnLoad)
      prevOnLoad();

    var ulMenus = getElementsByClassName("slideoutMenu");

    if ((ulMenus) && (ulMenus.length))
    {
      for (i = 0; i < ulMenus.length; i++)
      {
        var ulMenu = ulMenus[i];

        if (ulMenu)
        {
          var iTargetHeight = ulMenu.clientHeight;
          ulMenu.style.height = "0px";
          ulMenu.style.display = "";

          if (!iTargetHeight) 
            iTargetHeight = parseInt(ulMenu.getAttribute("TargetHeight"));

          if (iTargetHeight) 
            ulMenu.setAttribute("TargetHeight", iTargetHeight)
        }
      }

      iShowTimer = window.setInterval(slideMenus, 10);
    }

    applySlidingPanelAttributes();
  }

  function slideMenus()
  {
    var bAllDone = true;
    var ulMenus = getElementsByClassName("slideoutMenu");

    if ((ulMenus) && (ulMenus.length))
    {
      for (i = 0; i < ulMenus.length; i++)
      {
        var ulMenu = ulMenus[i];

        if (ulMenu)
        {
          var iTargetHeight = parseInt(ulMenu.getAttribute("TargetHeight"));

          if (ulMenu)
          {
            var Height = parseInt(ulMenu.style.height.replace("px", "")) + 5;

            if (Height <= iTargetHeight)
            {
              ulMenu.style.height = Height + "px";
              bAllDone = false;  //All menus aren't yet to full height...

            }
            else
            {
              ulMenu.style.height = "";
            }
          }
        } 
      }
    }

    if (bAllDone)
    {
      window.clearInterval(iShowTimer);
      iShowTimer = null;
    }
  }
