var hoverMappings = new Array();

/* helper function */
function getEventTriggeringElement(eventMethodArg)
{
    if (eventMethodArg)
    {
        return eventMethodArg.target;
    }
    else if (event)
    {
        return event.srcElement;
    }
    throw "Could not find trigger element";
}

function registerMappings()
{
    for (var mapping in hoverMappings)
    {
        // mouse over event
        document.getElementById(mapping).onmouseover = function(e)
        {
            var elem = getEventTriggeringElement(e);
            
            elem.setAttribute("class", "activemainmenu"); //For Most Browsers
            elem.setAttribute("className", "activemainmenu"); //For IE; harmless to other browsers.
            
            var selectarray = hoverMappings[elem.id];
            
            for (var sel in selectarray)
            {
                var selelem = document.getElementById(selectarray[sel]);
                selelem.setAttribute("class", "activemenu"); //For Most Browsers
                selelem.setAttribute("className", "activemenu"); //For IE; harmless to other browsers.
            }
        }
        // mouse out event
        document.getElementById(mapping).onmouseout = function(e)
        {
            var elem = getEventTriggeringElement(e);
            
            elem.setAttribute("class", ""); //For Most Browsers
            elem.setAttribute("className", ""); //For IE; harmless to other browsers.
            
            var selectarray = hoverMappings[elem.id];
            
            for (var sel in selectarray)
            {
                var selelem = document.getElementById(selectarray[sel]);
                selelem.setAttribute("class", ""); //For Most Browsers
                selelem.setAttribute("className", ""); //For IE; harmless to other browsers.
            }
        }
    }
}

function findLinksFromElement(elem)
{
  var result = new Array();
  
  for (var i = 0; i < elem.children.length; i++)
  {
    if (elem.children[i].nodeName == "A")
    {
      result.push(elem.children[i]);
    }
    else if (elem.children[i].children.length > 0)
    {
      var resInner = findLinksFromElement(elem.children[i]);
      for (var j = 0; j < resInner.length; j++)
      {
        result.push(resInner[j]);
      }
    }
  }
  
  return result;
}

window.onload = function()
{
  if (document.getElementById("homecontent") != null)
  {
    return;
  }

  // find current page
  var url = document.location.href;
  //url = url.substring(url.lastIndexOf("/") + 1);
  
  var backAndForwardHtml = "<div class='paragraph'>";

  // find menu 1
  var rightmenucolumn = document.getElementById("rightmenucolumn");
  if (rightmenucolumn != null)
  {
    var foundLinks = findLinksFromElement(rightmenucolumn);
    
    // hack to add intro page for policy implications
    var topMenu = findLinksFromElement(document.getElementById("topnavigation"));
    if (topMenu[topMenu.length - 1].className == "active")
    {
      var path = [];
      path.href= url.substring(0, url.lastIndexOf("/") + 1) + "policy_implications.html";
      foundLinks.unshift(path);
    }
    if (topMenu[topMenu.length - 2].className == "active")
    {
      var path = [];
      path.href= url.substring(0, url.lastIndexOf("/") + 1) + "innovation_principles_and_cases.html";
      foundLinks.unshift(path);
    }
    
    var selectedIndex = -1;
    
    for (var i = 0; i < foundLinks.length; i++)
    {
      var link = foundLinks[i];
      if (link.href == url)
      {
        selectedIndex = i;
        break;
      }
    }
    
    if (selectedIndex != -1)
    {
      if (selectedIndex > 0)
      {
        backAndForwardHtml += "<a class='redreadmore' href='" + foundLinks[selectedIndex - 1].href + "'>&lt; Previous</a>";
      }
      if (selectedIndex < foundLinks.length - 1)
      {
        if (selectedIndex > 0)
        {
          backAndForwardHtml += " | ";
        }
        backAndForwardHtml += "<a class='redreadmore' href='" + foundLinks[selectedIndex + 1].href + "'>Next &gt;</a>";
      }
    }
  }
  
  // find menu 2
  var rightmenucolumn = document.getElementById("rightmenucolumn3");
  if (rightmenucolumn != null)
  {
    var foundLinks = findLinksFromElement(rightmenucolumn);
    
    var selectedIndex = -1;
    
    for (var i = 0; i < foundLinks.length; i++)
    {
      var link = foundLinks[i];
      if (link.href == url)
      {
        selectedIndex = i;
        break;
      }
    }
    
    if (selectedIndex != -1)
    {
      if (selectedIndex > 0)
      {
        backAndForwardHtml += "<a href='" + foundLinks[selectedIndex - 1].href + "'>&lt; Previous</a>";
      }
      if (selectedIndex < foundLinks.length - 1)
      {
        if (selectedIndex > 0)
        {
          backAndForwardHtml += " | "
        }
        backAndForwardHtml += "<a class='redreadmore' href='" + foundLinks[selectedIndex + 1].href + "'>Next &gt;</a>";
      }
    }
  }
  
  backAndForwardHtml += "<br /><br /><a class='redreadmore' href='full_report.pdf'>Download the full report</a>";
  
  // add HTML
  var pagecontent = document.getElementById("pagecontent");
  pagecontent.innerHTML += backAndForwardHtml + "</div>";
};