//Class Menu
var cMenu = new Class({
	initialize: function(name){
		this.buttons = new Array();
		this.instance = name;
		this.submenus = new Array();
	},
	
	addButton: function(id, link){
		this.buttons[id] = (new cButton(id, link));
	},
	
	addSubMenu: function(id, options, links){
		this.submenus[id] = (new cSubMenu(id, options, links, this.instance));
	},
	
	show: function(id){
		this.submenus[id].show();
		
	},
	
	hide: function(id){
		this.submenus[id].hide();
	}
});


//Class SubMenu
var cSubMenu = new Class({
	initialize: function(id, options, links, instance){
		
		this.height = options[0];
		this.width = options[1];
		this.style = options[2];
		this.useEffects = options[3];
		
		this.generate(id, links);
		this.addEffects(id, instance);
		
		if(window.ie6)
			this.height = eval(this.height + 10);
	},
	
	generate: function(id, links){
		output = $(id).innerHTML + '<div class="full-'+this.style+'"><ul id="'+id+'-sub" class="conteneur-'+this.style+'">';
		for (i = 0; i < links.length ; i++){
			title = links[i++];
			output = output + '<li><a href="'+links[i]+'">' + title + '</a></li>';
		}
		$(id).innerHTML = output + '</ul></div>';
	},
	
	addEffects: function(id, instance){
		
		this.effect = new Fx.Styles(id+'-sub', {duration: 0, wait: false, transition: Fx.Transitions.Quad.easeIn});
	
		$(id+'-link').addEvent('mouseenter', function(){ eval(instance).show(id); });
		$(id).addEvent('mouseleave', function(){ eval(instance).hide(id); });
		
			this.addLinksEffects(id);
	},
	
	addLinksEffects: function(id){
		if(window.ie6 || !this.useEffects)
			return;
	
		var list = $$('#'+id+' li');
		
		list.each(function(element) {
			var fx = new Fx.Styles(element, {duration:200, wait:false});
		
			element.addEvent('mouseenter', function(){ fx.start({ 'margin-left': 5 }); });
			element.addEvent('mouseleave', function(){ fx.start({ 'margin-left': 0 }); });
		});
	},

	show: function(){
		this.effect.start({
			'height': [0, this.height],
			'width': [0, this.width]
		});
	},
	
	hide: function(){
		this.effect.start({
			'height': [this.height, 0],
			'width': [this.width, 0]
		});
	}
});


//Class Button
/*
id = The DIV id of the element to transform into a button
link = The link of the button, mandatory (but no point not declaring a button that point nowhere)
*/
var cButton = new Class({
	initialize: function(id, link){
		if (link != undefined)
				$(id).onclick = function(){ window.location.href = link };
	}
});