var navImgArr = new Array();
var noContent=false;

domGetAttributeClass = function(el) {
  return self.VBArray ? el.className : el.getAttribute("class");
}

domRemoveChildren = function(el) {
  while(el && el.firstChild) el.removeChild(el.firstChild);
}

domAddEventListener = function(el, eventType, handler) {
  if(el.addEventListener) {
    el.addEventListener(eventType, handler, true)
  } else if (el.attachEvent) {
    el.attachEvent( "on" + eventType, handler)
  } else {
    // nothing
  }
};

domGetParentElementByName = function(el, name) {
  while( el && el.nodeName.toLowerCase() != name.toLowerCase()) { 
    el = el.parentNode;
  };
  return el || null;
};

Menu = function(mainNavUl, subNavDiv) {
    var
      menu = this
    ;
    this.mainNavUl = mainNavUl;
    this.subNavDiv = subNavDiv;
    if (subNavDiv && !subNavDiv.hasChildNodes()){
      noContent=true;
    }
    this.focusItem = function(event) {
      event = event || self.event;
      if (event){
        var li = domGetParentElementByName(event.srcElement || event.target , "li");
      }
      if(li) {
        if(!domGetAttributeClass(li) || domGetAttributeClass(li).indexOf("active")==-1) {
          // image _on setzen
          image = li.firstChild.firstChild;
          if (image.id.lastIndexOf('_top')>0){
            imageName = image.id.substr(0,(image.id.lastIndexOf('_top')));
          }
          else {
            imageName = image.id;
          }
          server = image.src.substr(0,image.src.indexOf(navImgArr[imageName+'_off']));
          image.src = server+navImgArr[imageName+'_on']+'.file.gif';
        };
        clearTimeout(menu.lastTimeout)
        if (subNavDiv != ''){
          menu.lastTimeout = setTimeout(
            function(){menu.activateSubMenu(li)}, 600
          );
        };
      };
    };
    this.blurItem = function(event) {
      event = event || self.event;
      if (event){
        var li = domGetParentElementByName(event.srcElement || event.target , "li");
      }
      if(li) {
        if(!domGetAttributeClass(li) || domGetAttributeClass(li).indexOf("active")==-1) {
          // image _off setzen
          image = li.firstChild.firstChild;
          if (image.id.lastIndexOf('_top')>0){
            imageName = image.id.substr(0,(image.id.lastIndexOf('_top')));
          }
          else {
            imageName = image.id;
          }
          server = image.src.substr(0,image.src.indexOf(navImgArr[imageName+'_on']));
          image.src = server+navImgArr[imageName+'_off']+'.file.gif';
        };
        clearTimeout(menu.lastTimeout);
      };       
    };
    
    domAddEventListener(mainNavUl, "mouseover", this.focusItem);
    //domAddEventListener(mainNavUl, "focus", this.focusItem);
    domAddEventListener(mainNavUl, "mouseout", this.blurItem);
    //domAddEventListener(mainNavUl, "blur", this.blurItem);
    domAddEventListener(subNavDiv, "mouseover", this.focusItem);
    //domAddEventListener(subNavDiv, "focus", this.focusItem);
    domAddEventListener(subNavDiv, "mouseout", this.blurItem);
    //domAddEventListener(subNavDiv, "blur", this.blurItem);

    if (document.addEventListener){
      var oncl = document.createAttribute("onclick");
      oncl.nodeValue = 'menu.blurAll();';
      document.getElementsByTagName('body')[0].setAttributeNode(oncl);
      var onkp = document.createAttribute("onkeypress")
      onkp.nodeValue = 'menu.blurAll();';
      document.getElementsByTagName('body')[0].setAttributeNode(onkp);
    } else if (document.attachEvent) {
      domAddEventListener(document.getElementsByTagName('body')[0], "click", function(){menu.blurAll()});
    } else {
    // nothing
    }
};

Menu.prototype.blurAll = function() {
	if(this.subNavDiv.origContent || noContent){
      domRemoveChildren(this.subNavDiv);
      if (this.subNavDiv.origContent){
        this.subNavDiv.appendChild(this.subNavDiv.origContent.cloneNode(true));
      }
      this.subNavDiv.origContent = '';
    }
}
Menu.prototype.activateSubMenu = function(li) {
  var subMenu = li.getElementsByTagName("UL")[0];
  if(subMenu && !noContent) {
    this.subNavDiv.origContent = this.subNavDiv.origContent || this.subNavDiv.firstChild;
    domRemoveChildren(this.subNavDiv);
    this.subNavDiv.appendChild(subMenu.cloneNode(true));
  }
  else if (noContent){
    this.subNavDiv.origContent = '';
    domRemoveChildren(this.subNavDiv);
    this.subNavDiv.appendChild(subMenu.cloneNode(true));
  }
};

function toggleText(element,labelText){
  var theElement = document.getElementById(element);
  if (theElement.value == labelText){
    theElement.value = '';
  }
  else if (theElement.value == ''){
    theElement.value = labelText;
  }
}

