window.addEvent('domready', function() {

	var FadeMenue = new Class({
      initialize: function(element) {

		  this.elements = $$(element);
          this.hovermenue = null;
		  this.instances = new Array();
          this.init = true;
          
          var self = this;
          
          this.elements.each(function(el) {    
	
	         
              var menueid = el.get('rel');  
              var menue = $('fademenue_'+menueid);
              var hovermenue = el;

			  el.addEvent('mouseenter', function() {
				if(self.instances.indexOf(menue) == -1) 
				{	self.instances.empty();
				self.hovermenue = hovermenue;
			    self.render();
			    }
			  });
			  el.addEvent('mouseleave', function() {
				if(self.instances.indexOf(menue) == -1) 
				{
				  self.hovermenue = null;
			      self.render();
				}
			  });
              if($chk(menue)) {
                  menue.set('opacity', '0');
                  var coords = el.getCoordinates();
                  menue.setStyle('left', coords.left);                     
                  menue.setStyle('top', coords.top+coords.height); 
                  el.addEvent('mouseenter', function() {
                      if(self.instances.indexOf(menue) == -1) {
                          self.instances.empty();
                          self.instances.push(menue);
                          self.render();
                      }
                  });
                  el.addEvent('mouseleave', function(event) {
                      if(event.client.y < coords.top||event.client.x < coords.left)
                      {
                          self.instances.empty();
						  if($chk(self.hovermenue)) {
						  self.hovermenue.removeClass("fademenueover");
						  self.hovermenue = null;
						}
                          self.render();
                      }
                  });
                  menue.addEvent('mouseleave', function(event) {
                      if(event.client.y > coords.top+coords.height)
                      {
                          self.instances.empty();
						  if($chk(self.hovermenue)) {
						    self.hovermenue.removeClass("fademenueover");
						    self.hovermenue = null;
						  }
                          menue.fade('0');
                      }
					  
                  });
              }
          });
          
          this.collapsable();
          this.clickable();
      },
      render: function() {
          var self = this;
          this.elements.each(function(el) {
              var menueid = el.get('rel');  
              var menue = $('fademenue_'+menueid);
              if(self.instances.indexOf(menue) == -1)
              {
				  if($chk(menue))
                  menue.fade('0');   
              }
              else
              {
                  menue.set('opacity', '0');
                  menue.fade('1');
              }

			  if(el == self.hovermenue){
				if(!self.hovermenue.hasClass("fademenueover"))
					self.hovermenue.addClass("fademenueover");
			  }
			  else
				el.removeClass("fademenueover");
    
          });
          
          self.init = false;
      },
      collapsable: function() {
      
          this.celements = $$('.item');
          
      
          this.celements.each(function(el) {
          
              var next = el.getNext();
              if($chk(next) && next.get('class') == 'subitem')
              {
								var collapse = new Fx.Reveal(next, {
									duration: 200, 
									mode: 'vertical',
									transition: 'sine:in'
								});
								collapse.toggle();
								el.addEvent('click', function() {
									var span = el.getElement("span");
									if(span.hasClass("arrow_up")) {
										span.removeClass("arrow_up");
										span.addClass("arrow_down");
									}
									else {
										span.removeClass("arrow_down");
										span.addClass("arrow_up")
									}
									collapse.toggle();
                }); 
              }
			  var overlayfeature = true;
			
              if(Browser.Engine.trident && Browser.Engine.version <= 4)
				overlayfeature = false;
			  if(overlayfeature) {
							el.addEvent('mouseenter', function() { 
								el.addClass("itemover");
							});
							el.addEvent('mouseleave', function() { 
								el.removeClass("itemover");
							});
				}
          });
          

      },
      clickable: function() {
				this.celements.each(function(el) {
          	var href=el.get("href");
          	if(el.get("href") != null) {
          		el.addEvent("click", function() {
          			if(el.get("target") == "_blank")
          			window.open(href, "Aufkleber-Experten");
          			else
          			self.location.href=href;
          		});
          		el.setStyle("cursor", "pointer");
          	}
        });
      }
  });
  var fd = new FadeMenue('.fademenue');
    
});
