var RollMenu = new Class({
	Implements: [Events, Options],
	options : {},
	
	initialize : function(options) {
		this.initSize = null;
		this.initCategories = null;
		this.count = 0;
		if (!$chk($('global_menu')))
			return;
		this.setOptions(options);
		if ($chk($('button_people'))){
			$('button_people').addEvent('click', function(e){
				this.openPeople();
				e.stop();
			}.bindWithEvent(this));
		}
		if ($chk($('rollover_menu'))){
			this.initSize = $$('#rollover_menu div.height_calc')[0].getSize();
			this.initCategories = $('roll_menu_themes').get('html');
			$('rollover_menu').setStyle('display', 'none');
			$$('#rollover_menu li a.label').each(function(element, index){
				element.addEvent('click', function(e, el){
					this.openCategory(el);
					e.stop();
				}.bindWithEvent(this, [element]));
			}.bind(this));
			
			$$('#rollover_menu li span.auction').each(function(element, index){
				var a = element.getPrevious('a.label');
				element.addEvent('click', function(e, el){
					this.openCategory(el);
					e.stop();
				}.bindWithEvent(this, [a]));
			}.bind(this));
			
		}
		if ($chk($$('#rollover_menu a.close')[0]))
			$$('#rollover_menu a.close')[0].addEvent('click', function(e){
				this.closePeople();
				e.stop();
			}.bindWithEvent(this));
		
	},
	
	openPeople : function(){
		var button = $('button_people');
		var left = button.getFirst('span.left');
		var right = button.getFirst('span.right');
		/*left.setStyles({
			'background' : 'none'
		});
		right.setStyles({
			'background' : 'none'
		});*/

		if (this.initSize != null){
			button.removeEvents('click');
			button.addEvent('click', function(e){e.stop();});
			$('rollover_menu').setStyles({
				'height' : '0px',
				'overflow' : 'hidden',
				'display' : 'block'
			});
			var morph = new Fx.Morph($('rollover_menu'), {
				onComplete:function(){
					$('rollover_menu').setStyles({
						'overflow': 'auto',
						'height' : 'auto'
					});
					button.removeEvents('click');
					button.addEvent('click', function(e){
						this.closePeople();
						e.stop();
					}.bindWithEvent(this));
				}.bind(this)
			});
			morph.start({
				'height' : this.initSize.y.toString()+'px'
			});
		}
	},
	
	closePeople : function() {
		var button = $('button_people');
		button.removeEvents('click');
		button.addEvent('click', function(e){e.stop();});
		var height = $('rollover_menu').getSize().y; 
		$('rollover_menu').setStyles({
			'overflow' : 'hidden',
			'height' : height.toString()+"px"
		});
		
		var morphC = new Fx.Morph($('rollover_menu'), {
			onComplete:function(){
				this.resetMenu();
			}.bind(this)
		});
		morphC.start({
			'height' :'0px'
		});
	},
	
	openCategory : function(element) {
		var id = element.get('rel');
		if (!$chk($$('ul.theme_content_'+id)[0]))
			return;
		var html = $$('ul.theme_content_'+id)[0].get('html');
		var oldHeight = $$('#rollover_menu div.height_calc')[0].getSize().y;
		$('rollover_menu').setStyles({
			'height' : oldHeight.toString()+"px",
			'overflow' : 'hidden'
		});
		
		var morph = new Fx.Morph($('roll_menu_themes'), {
			onComplete: function(){
				$('roll_menu_themes').set('html', html);
				var back = new Element('a', {
					'html' : 'Retour aux thèmes',
					'class': 'back',
					'id' : 'rollover_menu_back',
					'events' : {
						'click' : function(e){
							this.backToThemes();
							e.stop();
						}.bindWithEvent(this)
					}
				}).inject($$('#rollover_menu div.height_calc div.top div.right a.close')[0], 'after');
				var title = new Element('h1', {
					'class' : 'white',
					'html' : element.get('html'),
					'id' : 'rollover_menu_title'
				}).inject($$('#rollover_menu div.height_calc div.top div.left')[0], 'top');
				var newHeight = $$('#rollover_menu div.height_calc')[0].getSize().y;
				var morphHeight = new Fx.Morph($('rollover_menu'), {
					onComplete: function(){
						var morphIn = new Fx.Morph($('roll_menu_themes'), {
							onComplete: function(){
								$('rollover_menu').setStyles({
									'height' : 'auto'
								});
							}
						});
						morphIn.start({
							'opacity' : 1
						});
					}
				})
				morphHeight.start({'height' : newHeight.toString()+"px"});
			}.bind(this)
		});
		morph.start({'opacity' : 0});
	},
	
	resetMenu : function(){
		$('rollover_menu').setStyle('display', 'none');
		$('roll_menu_themes').set('html', this.initCategories);
		var button = $('button_people');
		button.removeEvents('click');
		button.addEvent('click', function(e){
			this.openPeople();
			e.stop();
		}.bindWithEvent(this));
		$$('#rollover_menu li a.label').each(function(element, index){
			element.addEvent('click', function(e, el){
				this.openCategory(el);
				e.stop();
			}.bindWithEvent(this, [element]));
		}.bind(this));
		$$('#rollover_menu li span.auction').each(function(element, index){
			var a = element.getPrevious('a.label');
			element.addEvent('click', function(e, el){
				this.openCategory(el);
				e.stop();
			}.bindWithEvent(this, [a]));
		}.bind(this));
		return;
	},
	
	backToThemes : function(){
		var oldHeight = $$('#rollover_menu div.height_calc')[0].getSize().y;
		$('rollover_menu').setStyles({
			'height' : oldHeight.toString()+"px",
			'overflow' : 'hidden'
		});
		var morph = new Fx.Morph($('roll_menu_themes'), {
			onComplete: function(){
				$('rollover_menu_title').destroy();
				$('rollover_menu_back').destroy();
				$('roll_menu_themes').set('html', this.initCategories);
				$$('#rollover_menu li a.label').each(function(element, index){
					element.addEvent('click', function(e, el){
						this.openCategory(el);
						e.stop();
					}.bindWithEvent(this, [element]));
				}.bind(this));
				$$('#rollover_menu li span.auction').each(function(element, index){
					var a = element.getPrevious('a.label');
					element.addEvent('click', function(e, el){
						this.openCategory(el);
						e.stop();
					}.bindWithEvent(this, [a]));
				}.bind(this));
				var newHeight = $$('#rollover_menu div.height_calc')[0].getSize().y;
				var morphHeight = new Fx.Morph($('rollover_menu'), {
					onComplete: function(){
						var morphIn = new Fx.Morph($('roll_menu_themes'), {
							onComplete: function(){
								$('rollover_menu').setStyles({
									'height' : 'auto'
								});
							}
						});
						morphIn.start({
							'opacity' : 1
						});
					}
				})
				morphHeight.start({'height' : newHeight.toString()+"px"});
			}.bind(this)
		});
		morph.start({'opacity' : 0});
	}
});
window.addEvent('domready', function(){
	var menu = new RollMenu();
});

