var mainMenu = Class.create();
mainMenu.prototype = {
	initialize : function( elm ) {
		this.isMac = (navigator.platform.indexOf('Mac') != -1);

		this.timeout = null;
		this.elem = elm;
		this.direction = -1;
		this.startHeight = 1; // this.elem.style.height.replace('px', '');
		// alert(this.elem.style.height);
		this.position = 0;
		
		this.max = 315;
		this.speed = 2.5;
		this.startmt = this.elem.style.marginTop.replace('px', '');

		Event.observe(elm,'mouseover',this.activate.bindAsEventListener(this),true);
		Event.observe(elm,'mouseout',this.deactivate.bindAsEventListener(this),true);
	},
	slide : function()
	{
		this.position += ((this.speed * (this.max + 1 - this.position) / 8) * this.direction);
		if(this.position >= this.max || this.position <= 0)
		{
			if(this.timeout != null)
			{
				this.timeout.stop();
				this.timeout = null;
			}
		}
		
		this.position = Math.min(Math.max(0, this.position), this.max);
		
		var el = this.elem.getElementsByTagName('ul');
		if(el.length > 0)
		{
			var elms = Element.extend(el[0]).childElements();
			elms.each( this.disp.bind(this) );
			el[0].style.height = (this.startHeight + this.position)+'px';
		}		
	},
	disp : function( elm ) {
		// turn off nice incremental show functionality for Mac FF
		if(Browser.isMoz && this.isMac)
		{
			elm.style.display = (this.position == this.max)?'block':'none';
		}
		else
		{
			var off = elm.cumulativeOffset();
			elm.style.visibility = (this.position >= (off.top - 60))?'visible':'hidden';	
		}
	},
	activate : function( ev ) {
		this.direction = 1;
		if(this.position < this.max && this.timeout == null)
		{
			this.timeout = new PeriodicalExecuter( this.slide.bind(this), 0.01);
		}
	},
	deactivate : function( ev ) {
		this.direction = -1;    
		if(this.position > 0 && this.timeout == null)                             
		{
			this.timeout = new PeriodicalExecuter( this.slide.bind(this), 0.01);			
		}
	}
}

var mainMenuSetup = Class.create();
mainMenuSetup.prototype = {
	initialize : function( element ) {
		this.element = $(element);
		if(this.element)
		{
			this.mainMenuItems = {};
			this.menu = $A(this.element.getElementsByClassName('subMainMenu'));
			if(this.menu.length > 0)
			{
				for(i=0; i<this.menu.length; i++)
				{
					this.mainMenuItems['menu'+i] = new mainMenu( this.menu[i] );
				}
			}
			
		}
	}
}

function loadMainMenu()
{		
	var ddMenus = new mainMenuSetup( 'navigation' );
}

Event.observe(window,'load', loadMainMenu,false);