var Navigation = Class.create();
Navigation.prototype = {
	navTimer : 0,
	subnaviHover : 0,
	liNavStatus: 0,

  initialize: function() {
	/* 'navigation' ist die id des divs, in dem die navigations links liegen*/
	if ($('navigation') == undefined) { this.wrapper = $('navigation7'); } else { this.wrapper = $('navigation'); }
	this.addObservers();
  },

  addObservers: function() {
	  /*'.nav' ist die klasse der li-elemente, die fuer ein mouseover ueberwacht werden sollen*/
	  var subnaviElements = this.wrapper.select('div.subnavigation');
	  subnaviElements.invoke('removeClassName', 'cssonly');	  
	  subnaviElements.invoke('observe', 'mouseover', this.subnavOver.bind(this));
	  subnaviElements.invoke('observe', 'mouseout', this.subnavOut.bind(this));
	  
	  var naviElements = this.wrapper.select('li.nav');
	  naviElements.invoke('observe', 'mouseover', this.navOpen.bind(this));
	  naviElements.invoke('observe', 'mouseout', this.navClose.bind(this));
	  naviElements.invoke('observe', 'click', this.navClick.bind(this));
  },

subnavOver: function(event) {
	this.subnaviHover = 1;
},

subnavOut: function(event) {
	this.subnaviHover = 0;
},

  navOpen: function(event){
  
	  if(this.navTimer){
		clearTimeout(this.navTimer);
	  }
	  var eventElement = event.findElement();
	  //wenn noch nicht auf ein Navigations-Listenelement geklickt worden ist, dann oeffne subnavi
	  //if(this.liNavStatus == 0) {
  	  if ( eventElement != null && !eventElement.hasClassName('nav') ) {
		this.navTimer = setTimeout(function(){
			eventElement.up('li.nav').down('a').addClassName ('over');
			eventElement.up('li.nav').down('div.subnavigation').style.display = 'block';
			}, 500);
	  }
  	  //}
   	  //$(this).addClassName ('over');
  },

  navClose: function(event){
	  if(this.navTimer){
		clearTimeout(this.navTimer);
	  }
	  
	  var eventElement = event.findElement();
	  if ( eventElement != null && !eventElement.hasClassName('nav') ) {
	  setTimeout(function(){ 
	  		if(this.subnaviHover == 0) {
	  			eventElement.up('li.nav').down('a').removeClassName('over');
	  			eventElement.up('li.nav').down('div.subnavigation').style.display = 'none';
	  		} 
	  		}.bind(this), 100);
	  }
	  //$(this).removeClassName ('over');
  },
  
  navClick: function(event){
  	if(this.navTimer){
		clearTimeout(this.navTimer);
	}
	var clickEventElement = event.findElement();
	clickEventElement.up('li.nav').down('div.subnavigation').style.display = 'none';
  	this.liNavStatus = 1;
  	
  }  
  
};

Event.observe(window, 'load', function(){var nav = new Navigation();});
