/**
 * @author julien
 */
RiderZoneMenu={
	_current:null,
	_pointer:null,
	_leftPos:null,
	_width:217,
	init:function() {
		//alert("init RiderZoneMenu");
		//console.log("init");
		this._fixHauteurs();
		$$(".page")[0].observe("mousemove",this._observeMouseMove.bind(this));
		if ($$(".block-leftnav-custom")[0]) {			
			this._leftPos=$$(".block-leftnav-custom")[0].positionedOffset()[0];
			$$(".block-leftnav-custom h2 a").each(function(h2,index) {
				h2.observe("mouseover",this.affichedelay.bind(this,index));
				h2.observe("mouseout",this.cachedelay.bind(this,index));
			}.bind(this));
		}
	},
	_observeMouseMove:function(event) {
		this._pointer=Event.pointer(event);
	},
	affichedelay:function(index) {
		afficheBind=this.affiche.bind(this,index);
		afficheBind.delay(0.1);
	},
	cachedelay:function(index) {
		cacheBind=this.cache.bind(this,index);
		cacheBind.delay(0.1);
	},
	
	affiche:function(index) {
		//console.log("affiche"+index);
		var _cible=$$(".block-leftnav-custom h2 a")[index];
		if (this._pointer.y>_cible.cumulativeOffset()[1]&&this._pointer.y<(_cible.cumulativeOffset()[1]+_cible.getHeight())&&this._pointer.x>_cible.cumulativeOffset()[0]&&this._pointer.x<_cible.cumulativeOffset()[0]+_cible.getWidth()) {
			
			if ($$(".block-left-masques")[0].down(".souscat",index)) {
				
				if (this._current) {
					//console.log("cache old");
					this.cacheProceed(this._current-1);
				}
				new Effect.Move($$(".block-left-masques")[0].down(".souscat",index),{x:this._width,y:0,mode:'absolute',duration:0.2});
				
				this._current=index+1;
				
			}
			
		}
	},
	cache:function(index) {
		//console.log("cache"+index);
		var _proceed=true;
		if (this._current) {
			var _sousMenu=$$(".block-left-masques .souscat")[this._current-1];
			var _cible=$$(".block-leftnav-custom h2 a")[this._current-1];
			if (this._pointer.y>_cible.cumulativeOffset()[1]&&this._pointer.y<(_cible.cumulativeOffset()[1]+_sousMenu.getHeight())&&this._pointer.x>(_cible.cumulativeOffset()[0]+_cible.getWidth()-5)&&this._pointer.x<(_cible.cumulativeOffset()[0]+_cible.getWidth()+_sousMenu.getWidth())) {
				_proceed=false;
				_sousMenu.observe("mouseout",this.sousmenuMouseOut.bind(this,index));
			}
		}
		if (_proceed==true) {
			this.cacheProceed(index);
		}
	},
	sousmenuMouseOut:function(index) {
		var _cible=$$(".block-left-masques .souscat")[index];
		var _menu=$$(".block-leftnav-custom h2 a")[0]

		if (this._pointer.y>=(_cible.cumulativeOffset()[1]+5)&&this._pointer.y<=(_cible.cumulativeOffset()[1]+_cible.getHeight()-5)&&this._pointer.x>=_cible.cumulativeOffset()[0]&&this._pointer.x<=(_cible.cumulativeOffset()[0]+_cible.getWidth()-5)) {
		} else {
			_cible.stopObserving("mouseout");
			this.cacheProceed(index);
		}
	},
	cacheProceed:function(index) {
		if ($$(".block-left-masques")[0].down(".souscat",index)) {
			new Effect.Move($$(".block-left-masques")[0].down(".souscat",index),{x:0,y:0,mode:'absolute',duration:0.2});
		}
		this._current=null;
	},
	_fixHauteurs:function() {
		if ($$(".col-left")[0]) {
			var mainHeight=$$(".col-left")[0].getHeight();
			var heightRight=$$(".col-main")[0].getHeight();
			if (heightRight>mainHeight) mainHeight=heightRight;
			
			var viewPortDims=document.viewport.getDimensions();
			
			//block masques et ombres
			var blockmasques=$$(".block-left-masques")[0];
			blockmasques.down(".bgwhite").setStyle({'height':mainHeight+'px'});
			blockmasques.down(".shadow-middle").setStyle({'height':(mainHeight-400)+'px'});
			blockmasques.down(".shadow-bottom").setStyle({'marginTop':(mainHeight-400+250)+'px'});
			//blocks gauche en absolu
			var cumulativeHeight=0;
			$$(".col-left div.block").each(function(item) {
				//console.log(item);
				var layout = item.getDimensions();
				item.setStyle({"zIndex":1000,"position":"absolute","width":layout.width+"px","height":layout.height+"px","marginTop":cumulativeHeight+"px"});
				cumulativeHeight+=layout.height;
			})
			
			$$(".col-left")[0].setStyle({'height':mainHeight+'px'});
			//décalage sous menus
			var _rootOffset=$$(".block-left-masques")[0].getOffsetParent().positionedOffset();
			$$(".block-left-masques .souscat").each(function(item,index) {
				item.setStyle({"marginTop":index*42+"px"});
				var itemDims=item.getDimensions();
				if (_rootOffset[1]+itemDims.height>viewPortDims.height) {
					var _margin=viewPortDims.height-itemDims.height-_rootOffset[1];
					if (_margin<0) _margin=0;
					item.setStyle({"marginTop":_margin+"px"});
				}
				
			});
		}
	}
}
Event.observe(window, 'load', function() {
	RiderZoneMenu.init();
});


