/* 

 //-----------------------//
 // Sliding Vertical Menu //
 //-----------------------//
 
 by: Dominic Mercier
 for: Megavolt
 
 Works with mootools v.1.1
 
 Components needed: 
 
 	- Core
		* Core
		
	- Class
		* Class
		* Class.Extras
		
	- Native
		* Array
		* String
		* Function
		* Number
		* Element
		
	- Element
		* Element.Event
		* Element.Filters
		* Element.Selectors
		* Element.Dimensions
		
	- Window
		* Window.DomReady
		
	- Effects
		* Fx.Base
		* Fx.CSS
		* Fx.Styles
		* Fx.Transitions
		
	- Remote
		* Cookie

*/

SlideMenu = new Class({
	
    initialize: function(el, i){
		
		this.link = el.getElement('a');
		this.element = this.link.getNext();
		this.options = {_height: 0, _state: 1, _paddingTop: 0, _paddingBottom: 0};
		this.cookie = "menu"+i;
		
		if(this.link.href == document.location+"#") this.link.href = "javascript:;";
		
		if(this.element) {
			
			if(this.link.getChildren()) this.link.addClass('plus');
			(Cookie.get(this.cookie) == 1) ? this.link.addClass('clicked') : this.hide();
			this.link.onclick = this.toggle.bind(this);
		}
		
    },
	
	slideUp: function() {
		this.options._state = 0;
		this.getHeight();
		this.element.setStyles({height: this.options._height-this.options._paddingTop-this.options._paddingBottom, 
							    overflow: 'hidden'});
		
		var fx = new Fx.Styles( this.element, 
							   	{duration: 500, transition: Fx.Transitions.Expo.easeOut,
								onComplete: this.slideUpComplete.bind(this)	});
		fx.start({'height': 0, 'paddingTop': 0, 'paddingBottom': 0});
	},
	
	slideUpComplete: function() {
		this.element.setStyles({display: 'none'});
	},
	
	slideDown: function() {
		this.options._state = 1;
		this.element.setStyles({display: 'block'});
		
		var fx = new Fx.Styles( this.element, 
							   	{duration: 800, 
							  	transition: Fx.Transitions.Cubic.easeInOut, 
							   	onComplete: this.slideDownComplete.bind(this)	});
		fx.start({	'height': this.options._height-this.options._paddingTop-this.options._paddingBottom, 
				  	'paddingTop': this.options._paddingTop, 
					'paddingBottom': this.options._paddingBottom});
	},
	
	slideDownComplete: function() {
		this.element.setStyles({height: 'auto'});
	},
	
	hide: function() {
		this.options._state = 0;
		this.getHeight();
		this.element.setStyles({height:0, paddingTop: 0, paddingBottom: 0, overflow: 'hidden', display: 'none'});
	}, 
	
	getHeight: function() {
		this.options._height = this.element.getCoordinates().height;
		this.options._paddingTop = this.element.getStyle('padding-top').toInt();
		this.options._paddingBottom = this.element.getStyle('padding-bottom').toInt();
	},
	
	toggle: function() {
		if(this.options._state) {
			Cookie.set(this.cookie, 0, {duration: false, path: "/"});
			this.slideUp();
			this.link.removeClass('clicked');
		}else {
			Cookie.set(this.cookie, 1, {duration: false, path: "/"});
			this.slideDown();
			this.link.addClass('clicked');
		}
	}
	
});





var Menu = {
	
	start: function() {
		
		$$('#menu_items div.sm_item', '#menu_items div.menu').each(function(div, i){
			var itemtest = new SlideMenu(div, i);
		});
		
	}
	
}


//Changement d'image
function switchImage(imgSrc, obj) {
	var img = new Image();
	img.src = imgSrc;
	img.onload =
		function() {
			obj.src = img.src;
		};
}

//Preload des images
function simplePreload()
{
  var args = simplePreload.arguments;
  document.imageArray = new Array(args.length);
  for(var i=0; i<args.length; i++)
  {
    document.imageArray[i] = new Image;
    document.imageArray[i].src = args[i];
  }
}

