var navMenu = { 

   openMenus : [],   // array for menu levels currently displayed
   pressedNav : [],  // array tracking which item is pressed at each level
   timer : null,     // timer for when to close menus

   // array of id values for submenus, which correspond to the link
   // sequence in the whole navigation sequence
   subMenus : ['compatDrop','','whatDrop','resourceDrop'],

   init : function() {

     if (!document.getElementById || !document.getElementsByTagName) { return; }
     var navHolder = document.getElementById('navBar');
     var navItems = navHolder.getElementsByTagName('a');
     var lists = navHolder.getElementsByTagName('ul');
     var global = document.getElementById('primaryNav');

     // disabling the visibility of the sub menus
     for (var i=0, allLists = lists.length; i<allLists; i++) {
         lists[i].style.visibility = 'hidden';
         if (global) {
         global.style.visibility = 'visible';
        }
     }
 for (var i=0, allNavItems = navItems.length; i<allNavItems; i++) {
         navItems[i].number = i;
         navMenu.addEvent(navItems[i],'mouseover', navMenu.display);
         navMenu.addEvent(navItems[i],'focus', navMenu.display);
         navMenu.addEvent(navItems[i],'mouseout', navMenu.setTimer);
         navMenu.addEvent(navItems[i],'blur', navMenu.setTimer);
     }

     navMenu.detectLocations();

   },

   display : function() {

     if (navMenu.timer) { clearTimeout(navMenu.timer); }
     var menuLvl, menuToShow, num = this.number;
     if (num <= 4) { menuLvl = 1; }
     if (num > 4) { menuLvl = 2; }
     if (navMenu.openMenus[menuLvl] && navMenu.openMenus[menuLvl] == navMenu.subMenus[num]) { return; }
     if (navMenu.openMenus[menuLvl]) { navMenu.closeAllMenus(menuLvl); }
     if (!navMenu.subMenus[num]) {}
     else {
        menuToShow = document.getElementById(navMenu.subMenus[num]).style;
        menuToShow.visibility = 'visible';
     }
     navMenu.openMenus[menuLvl] = navMenu.subMenus[num];
     if (this.className) { return; }
     this.className = 'over';
     if (navMenu.pressedNav[menuLvl]) { navMenu.pressedNav[menuLvl].className = ''; }
     navMenu.pressedNav[menuLvl] = this;

   },
    setTimer : function() {
       if (navMenu.timer) { clearTimeout(navMenu.timer); }
       navMenu.timer = setTimeout('navMenu.closeAllMenus(1)',500);
     },
     closeAllMenus : function(lvl) {
       for (var i=navMenu.openMenus.length - 1; i>=lvl; i--) {
          if (navMenu.openMenus[i]) {
              var menuToHide = document.getElementById(navMenu.openMenus[i]).style;
              menuToHide.visibility = 'hidden';
          }
          navMenu.openMenus[i] = null;
          if (navMenu.pressedNav[i]) {
              navMenu.pressedNav[i].className = '';
              navMenu.pressedNav[i] = null;
          }
       }
    }, 

  detectLocations : function() {

      // isolate the 'home' link, the first in the navigation bar
      var firstNavItem = document.getElementById('navBar').getElementsByTagName('a')[0];

      // there is no offset initially
      var offsetLeftValue = 0;

      // relatively position the 'home' link
      firstNavItem.style.position = 'relative';

      // determine the left edge offset for 'home'
      offsetLeftValue += firstNavItem.offsetLeft;

      // if the browser is Safari, we need to make adjustments to menu location
      if (browserDetect.browser == 'Safari') { var safari = true; }

      // adjust the left coordinate for the 'who we are' menu
      var sub1 = document.getElementById('compatDrop').style;
      sub1.left = (safari) ? offsetLeftValue + 5 + 'px' : offsetLeftValue + 0 + 'px';

      // adjust the left coordinate for the 'products' menu
      var sub2 = document.getElementById('whatDrop').style;
      sub2.left = (safari) ? offsetLeftValue + 272 + 'px' : offsetLeftValue + 267 + 'px';

      // adjust the left coordinate for the 'case studies' menu
      var sub3 = document.getElementById('resourceDrop').style;
      sub3.left = (safari) ? offsetLeftValue + 375 + 'px' : offsetLeftValue + 370 + 'px';

  },



  addEvent : function(obj, type, func) {
    if (obj.addEventListener) {obj.addEventListener(type, func, false);}
    else if (obj.attachEvent) {
      obj["e" + type + func] = func;
      obj[type + func] = function() {obj["e" + type + func] (window.event);}
      obj.attachEvent("on" + type, obj[type + func]);
    }
    else {obj["on" + type] = func;}
  }

}

var browserDetect = {
    init : function() {
        this.browser = this.searchString(this.dataBrowser);
    },
    searchString : function(data) {
        for (var i=0; i<data.length; i++) {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            if (dataString) {
               if (dataString.indexOf(data[i].subString) != -1) {
	              return data[i].identity;
	           }
            }
            else if (dataProp) { return data[i].identity; }
       }
       return "An unknown browser";
    },
    dataBrowser: [
    { string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/",
      identity: "OmniWeb" },
    { string: navigator.vendor, subString: "Apple", identity: "Safari" },
    { prop: window.opera, identity: "Opera" },
    { string: navigator.vendor, subString: "iCab", identity: "iCab" },
    { string: navigator.vendor, subString: "KDE", identity: "Konqueror" }
    ]
};

navMenu.addEvent(window,'load',navMenu.init);
navMenu.addEvent(window,'resize',navMenu.detectLocations);
browserDetect.init();