/*
Written by: Adam Crownoble (adam@bryan.edu)
Date: April 3 2006
License: LGPL (http://www.gnu.org/copyleft/lesser.html)
Dependencies: mootools (mootools.net)
*/

var DropDownMenu = new Class({

 initialize: function(menuElement) {

  this.menu = menuElement;
  this.id = menuElement.id;
  this.duration = 400;
  this.buttons = [];
	
  $A(this.menu.getElementsByTagName('li')).each(
   function(li) {
    if(li.parentNode == menuElement) { this.buttons.push($(li)); }
   }.bind(this)
  );
  
  this.submenus = $A(this.menu.getElementsByTagName('ul'));
  this.myimages = $A(this.menu.getElementsByTagName('img'));
  	  
  this.submenus.each(
   function(submenu) {
    submenu = $(submenu);
    submenu.setStyle('display','');
    submenu.originalHeight = submenu.offsetHeight;
    submenu.effect = new Fx.Style(submenu, 'height',{ duration: 300, transition:Fx.Transitions.sineOut });
    submenu.effect.set(0);
   }.bind(this)
  );

  this.buttons.each(
   function(button) {
    button.addEvent('mouseover',this.expand.bindAsEventListener(this));
    button.addEvent('mouseover',this.changeOn.bindAsEventListener(this));
    button.addEvent('mouseout', this.collapse.bindAsEventListener(this));
    button.addEvent('mouseout', this.changeOff.bindAsEventListener(this));
   }.bind(this)
  );

 },

 findButton: function(element) {
  var button = false;
  while(element.parentNode) {
   if(this.buttons.test(element)) { button = element; }
   element = element.parentNode;
  }
  return button;
 },

 findSubmenu: function(element) {
  var button = this.findButton(element);
  var submenu = button.getElementsByTagName('ul')[0];
  return submenu;
 },

 expand: function(event) {
  var submenu = this.findSubmenu(event.target || event.srcElement);
  if(submenu) {
   submenu.effect.clearTimer();
   submenu.effect.start(submenu.originalHeight);
   $$('.filterSelect').setOpacity(0);

   if($('contentContainer')) {	
   $A($('contentContainer').getElementsByTagName('select')).each(
	function(li) {
		this.buttons.push($(li)); 
		li.setOpacity(0);
		}.bind(this)
	);
  }

  }
 },

 collapse: function(event) {
  var submenu = this.findSubmenu(event.target || event.srcElement);
  if(submenu) {
   submenu.effect.clearTimer();
   submenu.effect.start(0);
   $$('.filterSelect').setOpacity(1);

if($('contentContainer')) {
  $A($('contentContainer').getElementsByTagName('select')).each(
	function(li) {
		this.buttons.push($(li)); 
		li.setOpacity(1);
		}.bind(this)
	);
}

  }
 },

 findImage: function(element) {
  var button = this.findButton(element);
  var azakep = button.getElementsByTagName('img')[0];
  return azakep;
 },
 
 changeOn: function(event) { 
 	var kepek = this.findImage(event.target || event.srcElement);
	if(kepek) {
		kepek.src = String(kepek.src).replace("_off","_on");
	}
	
 },
 
  changeOff: function(img) { 
	this.myimages.each(
	function(kepek) {
		kepek.src = String(kepek.src).replace("_on","_off");
		
	}.bind(this)
	);
	
 }
 	 

});

window.addEvent('domready', function(){
 	var menu = new DropDownMenu($('mainMenu'));
});

