// ****************************************************************************
// Networks In Motion, Inc.
//
// Copyright (c) 2008 Networks In Motion, Inc.
// All rights reserved.  This file and associated materials are the
// trade secrets, confidential information, and copyrighted works of
// Networks In Motion, Inc.
//
// This intellectual property is for the internal use only by Networks
// In Motion, Inc.  This source code contains proprietary information
// of Networks In Motion, Inc., and shall not be used, copied by, or
// disclosed to, anyone other than a Networks In Motion, Inc.,
// certified employee that has written authorization to view or modify
// said source code.
// ****************************************************************************

var _master = new Array('HOME', 'COMPANY', 'PRODUCTS', 'NEWSROOM', 'PARTNERS', 'SUPPORT', 'DEVELOPERS');

// Home Menu
var _menu0 = new Array();

// Company Menu
var _menu1 = new Array(new NSubMenu('Investor Relations',  'company/investor.php'),
                       new NSubMenu('Literature',          'company/literature.php'),
                       new NSubMenu('Contact Information', 'company/contact.php'),
					   new NSubMenu('Careers',             'company/careers.php'));

// Products Menu
var _menu2 = new Array(new NSubMenu('Commercial Solutions',  'products/commercial_solutions.php'),
					   new NSubMenu('Partner Solutions',  'products/partner_solutions.php'),
                       new NSubMenu('Reference Platforms',      'products/personal_solutions.php'),
					   new NSubMenu('Telematics',      'products/telematics.php'),
                       new NSubMenu('Developer Solutions', 'products/developer_solutions.php'));

// Newsroom Menu
var _menu3 = new Array(new NSubMenu('Media Releases',  'newsroom/media_releases.php'), 
                       new NSubMenu('In The News',          'newsroom/newsclips.php'),
                       new NSubMenu('Multimedia',          'newsroom/multimedia.php'),
                       new NSubMenu('Events Calendar', 'newsroom/calendar.php'),
                       new NSubMenu('Awards',   'newsroom/awards.php'),
                      new NSubMenu('Corporate Blog',      'http://blog.networksinmotion.com'));

// Partners Menu
var _menu4 = new Array(new NSubMenu('', ''));


// Support Menu
var _menu5 = new Array(new NSubMenu('Frequently Asked Questions', 'developers/all.py/faqs'), 
                       new NSubMenu('Email Tech Support',         'developers/all.py/tech_support'),
                       new NSubMenu('User Account Management',    'dev_members/members.py/developer_account'));

// Developers Menu
var _menu6 = new Array(new NSubMenu('Developers Home',         'developers/all.py/index'), 
                       new NSubMenu('The NAVBuilder Solution', 'developers/all.py/navbuilder_solution'),
                       new NSubMenu('Application Development', 'developers/all.py/application_development'),
                       new NSubMenu('Developer Support',       'developers/all.py/dev_support'));

// Master
var _menu = new Array(_menu0, _menu1, _menu2, _menu3, _menu4, _menu5, _menu6);

// ----------------------------------------------------------------------------
// NSubMenu
// ----------------------------------------------------------------------------

function NSubMenu(text, url)
{
  this.text = text;
  this.url  = url;
}

// ----------------------------------------------------------------------------
// Window Handlers
// ----------------------------------------------------------------------------

document.onmousemove = function(event)
{
  var mouse = getMousePosition(event);
  
  var main_menu = document.getElementById('navigation');
  var content = document.getElementById('content');
  
  var pos = 0;
  var clear_menu = false;

  // Test Top
  pos = getPosition(main_menu);
  if (mouse.y < pos.top) {
    clear_menu = true;
  }  
  
  // Test Left
  if (mouse.x < pos.left) {
    clear_menu = true;
  }
  
  // Test Right
  if (mouse.x > pos.left + main_menu.offsetWidth) {
    clear_menu = true;
  }
  
  // Test Bottom
  pos = getPosition(content);
  if (mouse.y > pos.top - 2) {
    clear_menu = true;
  }

  if (clear_menu) {  
    resetMenus();
  } 
}

// ----------------------------------------------------------------------------
// Functions
// ----------------------------------------------------------------------------

function getMousePosition(event)
{
  var e = event || window.event;
  var mouse = new Object();
  if (e.pageX || e.pageY) {
    // this doesn't work on IE6!! (works on FF,Moz,Opera7)
    mouse.x = e.pageX;
    mouse.y = e.pageY;
  } else if (e.clientX || e.clientY) {
    // works on IE6,FF,Moz,Opera7
    mouse.x = e.clientX + document.body.scrollLeft;
    mouse.y = e.clientY + document.body.scrollTop;
  }
  return mouse;
}

function getPosition(obj)
{
  var curleft = curtop = 0;
  
  if (obj.offsetParent) {
    do {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
  }
  
  var result = new Object();
  result.left = curleft;
  result.top  = curtop;
  
  return result;
}

function onMouseOver(index)
{
  resetMenus();
  
  // Add SubMenu Items
  var ul = document.getElementById('sub_navigation');
  for (var i = 0; i < _menu[index].length; i++) {
    var li = document.createElement('li');
    if (i == _menu[index].length - 1) {
      li.className = 'last';
    }
    
    var a = document.createElement('a');
    a.href = _menu[index][i].url;
    a.innerHTML = _menu[index][i].text;
    li.appendChild(a);
    ul.appendChild(li);
  }
}

function onMouseOut(event)
{
  var e = event || window.event;
  var target = e.target || e.srcElement;
  var mouse = getMousePosition(event);
  var pos = getPosition(target);
    
  var ul = document.getElementById('sub_navigation');
  
  if (mouse.y >= pos.top) {
    if (target.id == 'HOME') {
      // Test Left
      if (mouse.x >= pos.left) {
        //target.className = 'Selected';
      } else {
        removeElements(ul);
      }
    } else if (target.id == 'DEVELOPERS') {
      // Test Right
      if (mouse.x <= pos.left + target.offsetWidth) {
        target.className = 'Selected';
      } else {
        removeElements(ul);
      }
    } else {
      target.className = 'Selected';
    }
  }
}

function removeElements(element)
{
  var o = element.firstChild;
  while (o) {
    var next = o.nextSibling;
    element.removeChild(o);
    o = next;
  }
}

function resetMenus()
{
  // Update class of Main Menu
  var main_menu = document.getElementById('navigation');
  var o = main_menu.firstChild;
  while (o) {
    var next = o.nextSibling;
    if (o.nodeName == 'LI') {
      o.firstChild.className = 'Normal';
    }
    o = next;
  }
  
  // Remove SubMenu Items
  var ul = document.getElementById('sub_navigation');
  removeElements(ul);
}