//<!--

// Simple Menu 
// code by jab 

// ====================================================== SimpleMenu

function SimpleMenu()
{
  this.menuArr = [];
  this.currentMenu = null;
  this.rolloverArr = [];
  this.namePairs = [];
  this.forceArr = [];
  this.initSwitch = false;
  this.imgDirectory = "images/";
  this.timer = false;
    
  this.old_onload = null;
  if(window.onload != null){ this.old_onload = window.onload; };	
  MenuObj.prototype.app = this; // create proto reference
  RolloverObj.prototype.app = this; // create proto reference
};
SimpleMenu.prototype.init = SM_init;
SimpleMenu.prototype.createNavObjects = SM_createNavObjects;
SimpleMenu.prototype.getNamePair = SM_getNamePair;
SimpleMenu.prototype.getMenuByName = SM_getMenuByName;

SimpleMenu.prototype.menuOn  = SM_menuOn;
SimpleMenu.prototype.menuOff = SM_menuOff;


// ============================================= SM_init

function SM_init() {
  if(this.old_onload != null){ this.old_onload(); };    
  this.createNavObjects();
  this.initSwitch = 1;
};


// ============================================= SM_createNavObjects

function SM_createNavObjects() {

  // find name pairs
  for(i = 0; i < document.images.length; i++)
    {
      var imgObj = document.images[i];
      if (imgObj.name == ''){ continue; };  //skip
      if (imgObj.src.indexOf("_on") != -1){ continue; }; // skip 
      
      var link = findLinkByName(imgObj.name);
      if(link == null){ continue; } //skip
      var x = { name: imgObj.name,
                imgObj: imgObj, 
                link: link, 
                set: 0 };
      
      this.namePairs[this.namePairs.length] = x;

    };  

  // build menus
  var allDivs = document.getElementsByTagName('div');
  
  for(var i=0; i < allDivs.length; i++){
    var id = allDivs[i].id;
    if(id.toLowerCase().indexOf('menu') != -1) {
      var nP = this.getNamePair(id);
      if(!nP){ continue; };
      var menuDiv = allDivs[i];
      this.menuArr[this.menuArr.length] = new MenuObj(menuDiv, nP);
    };
  };
  

  // build rollovers
  for(var i=0; i < this.namePairs.length; i++) {
    var nP = this.namePairs[i];
    if(nP.set){ continue; };
    var x = new RolloverObj(nP.imgObj, nP.link);
    this.rolloverArr[this.rolloverArr.length] = x;
    nP.set = 1;
  }

  return;
};


// ============================================= SM_getNamePair

function SM_getNamePair(name) {
  for(var i=0; i < this.namePairs.length; i++) {
    if(this.namePairs[i].set){ continue };
    if(this.namePairs[i].name == name){ return this.namePairs[i] };
  };
  return false;
};


// ============================================= SM_getMenuByName

function SM_getMenuByName(name) {
  for(var i=0; i < this.menuArr.length; i++) {
    if(this.menuArr[i].name == name){ return this.menuArr[i] };
  };
  return false;
};


// ====================================================== SM_menuOn;

function SM_menuOn() {
  if(!this.app.initSwitch){ return; };
  document.images[this.name].src = document.images[this.name].src2.src;
  showMenu(this.name);
};

// ====================================================== SM_menuOff;

function SM_menuOff() {
  document.images[this.name].src = document.images[this.name].src1.src;
};


// ====================================================== hideMenu

function hideMenu(name)
{
  document.images[name].src = document.images[name].src1.src;
  var menu = SM.getMenuByName(name);
  if(!menu){ return; };
  menu.obj.style.visibility = "hidden";
};


// ====================================================== showMenu

function showMenu(name)
{
  document.images[name].src = document.images[name].src2.src; 
  var menu = SM.getMenuByName(name);
  if(!menu){ return; };
  menu.obj.style.visibility = "visible";
};





// ============================================= RolloverObj

function RolloverObj(image, link) {
  this.image = image;
  this.link  = link;
  this.link.app = this.app
  this.name = image.name;
  this.addOverState(image); // append src 2
  
  if(arguments.length == 3){ 
    this.menu = arguments[2]; 

    if(this.menu != this.name){
      this.addMouseEvents('sub', this.menu);
    } else {
      this.addMouseEvents('menu');
    };

  } else {
    this.addMouseEvents('roll');
  };

};
RolloverObj.prototype.addOverState   = RolloverObj_addOverState;
RolloverObj.prototype.addMouseEvents = RolloverObj_addMouseEvents;


// ============================================= RolloverObj_addOverState

function RolloverObj_addOverState(imgObj) {
  // create rollover image objects and append them as 
  // properties (src1,src2) to the original image
  srcExt = imgObj.src.substring(imgObj.src.length - 3);
  var tempImgSrcStart = imgObj.src.lastIndexOf("/") + 1;
  if(tempImgSrcStart == -1){ tempImgSrcStart = 0; };
  tempImgSrcEnd = imgObj.src.length - 4;
  
  var overSrc = this.app.imgDirectory;
  overSrc += imgObj.src.substring(tempImgSrcStart, tempImgSrcEnd);
  overSrc += "_on.";
  overSrc += srcExt;
  
  imgObj.src1     = new Image(); 
  imgObj.src1.src = imgObj.src;
  imgObj.src2     = new Image();
  imgObj.src2.src = overSrc;
  return;
};

// ============================================= RolloverObj_addMouseEvents

function RolloverObj_addMouseEvents(type) {

  if(type == "roll") {
    this.link.onmouseover = function() {
      if(!this.app.initSwitch){ return; };
      document.images[this.name].src = document.images[this.name].src2.src; 
    };
    
    this.link.onmouseout = function() {
      if(!this.app.initSwitch){ return; };
      document.images[this.name].src = document.images[this.name].src1.src; 
    };
    return true;
  };  

  if(type == "menu") {
    this.link.onmouseover = function() {
      if(!this.app.initSwitch){ return; };
      if(this.app.currentMenu){ hideMenu(this.app.currentMenu); };
      window.clearTimeout(this.app.timer);
      showMenu(this.name);
      this.app.currentMenu = this.name;
    };
    
    this.link.onmouseout = function() {
      if(!this.app.initSwitch){ return; };
      window.clearTimeout(this.app.timer);
      this.app.timer = window.setTimeout("hideMenu('" + this.name + "')", 800);
    };
    return true;
  };  


  if(type == "sub") {
    var menuName = arguments[1]

    this.link.onmouseover = function() {
      if(!this.app.initSwitch){ return; };
      document.images[this.name].src = document.images[this.name].src2.src; 
      window.clearTimeout(this.app.timer);
      showMenu(menuName);
    };
    
    this.link.onmouseout = function() {
      if(!this.app.initSwitch){ return; };
      document.images[this.name].src = document.images[this.name].src1.src; 
      window.clearTimeout(this.app.timer);
      this.app.timer = window.setTimeout("hideMenu('" + menuName + "')", 800);
    };
    return true;
  };  
  
  return false;
};


// ============================================= MenuObj

function MenuObj(divObj, namePair) {
  
  this.obj = divObj;
  this.name = this.obj.id;
  this.subArr = [];
  
  // build menu rollover
  var imgObj = namePair.imgObj;
  var link = namePair.link;
  var pos = findPos(imgObj);
  var x = new RolloverObj(imgObj, link, this.name);
  this.app.rolloverArr[this.app.rolloverArr.length] = x;
  namePair.set = 1;
  this.obj.style.left = pos[0];
  this.obj.style.top  = pos[1] + imgObj.height;  


  // build sub rollovers
  var menuLinks = this.obj.getElementsByTagName('a');
  for(var i = 0; i < menuLinks.length; i++) {
    if(menuLinks[i].name == ""){ continue; };
    var nP = this.app.getNamePair(menuLinks[i].name);
    if(!nP){ continue; };
    
    var imgObj = nP.imgObj;
    var link = nP.link;
    var x = new RolloverObj(imgObj, link, this.name);
    this.subArr[this.subArr.length] = x;
    this.app.rolloverArr[this.app.rolloverArr.length] = x;
    nP.set = 1;
  };
  
};


// ============================================= findLinkByName

function findLinkByName(name) {
  for(j=0; j < document.links.length; j++)
    {  
      if(document.links[j].name == name) {
        return document.links[j];
      };
    };
  return null;
};


// ====================================================== findPos

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft;
    curtop = obj.offsetTop;
    // if an obj has no offsetParent, this condition 
    // evaluates to null, ending the loop 
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    };
  };
  return [curleft,curtop];
};



var SM = new SimpleMenu();
window.onload = function(){ SM.init(); };
