$().ready(function()
{
	menu.el.margin = 20;
	menu.init();
	
});

var menu = (function()
{
	return{
		el :	{
					type :		"li",
					margin :	0,
					classCur:	"current",
					current:	false,
					currentPos:	0,
					currentWidth:0
				},
		diapo :	{
					parent :	"parent",
					masque :	"#ss_menu",
					widthMasque:0,
					type :		"ul",
					width:		0,
					play:		false,
					playR:		true,
					playL:		false,
					sens:		"right",
					obj:		{},
					deplace :	10
				},
		init :	function()
		{
			var o = menu;
			o.diapo.parent = $(o.diapo.masque).parent();
			o.diapo.obj = $(o.diapo.masque+ " " + o.diapo.type);
			__info("initialisation du menu");
			chercheTailleG();
			//__info("largeur du Diapo : " + o.diapo.width);
			$("#ss_menu ul").width(o.diapo.width+"px");
			makeDiapo();
		}
	};
	function chercheTailleG()
	{
		var o = menu;
		$(o.diapo.masque+" "+o.diapo.type+" "+o.el.type).each(function()
		{
			o.diapo.width += $(this).outerWidth();
	 	});
	 	o.diapo.width += ($(o.diapo.masque+" "+o.diapo.type+" "+o.el.type).length*o.el.margin)+20;// + 20 pour ne pas avoir de soucis lorsque les typos sont en bold)
	 	o.diapo.widthMasque = $(o.diapo.masque).width();
	}
	function makeDiapo()
	{
		var o = menu;
		
		if( o.diapo.widthMasque > (o.diapo.width+50))
			return false;
		__log("masque width : "+$(o.diapo.masque).width() +" diapo width : "+ o.diapo.width);
		$(o.diapo.masque).before("<a class='fleche_gch'></a><a class='fleche_drt'></a>");
		
		/* verifBordure
		 * ------------------------------
		 * vérifie si on a atteint les bords du masque
		 * évite d'aller trop loin et permet de cacher les fleches inutiles
		 * ------------------------------
		 */
		verifBordure();
		
		var flecheGch = o.diapo.parent.find(".fleche_gch");
		var flecheDrt = o.diapo.parent.find(".fleche_drt");
		
		flecheDrt.mousedown(function()
		{
			goDiapo("right");
		}).mouseup(function()
		{
			stopDiapo();
		}).mouseleave(function()
		{
			stopDiapo();
		});
		flecheGch.mousedown(function()
		{
			goDiapo("left");
		}).mouseup(function()
		{
			stopDiapo();
		}).mouseleave(function()
		{
			stopDiapo();
		});
		/* VerifCurrent
		 * ------------------------------
		 * place le lien courant en visu
		 * ------------------------------
		 */
		verifCurrent();
	}
	function verifCurrent()
	{
		var o = menu;
		var current = o.diapo.obj.find("."+o.el.classCur);
		if(!current.length)
			return false;
		
		o.el.current = true;
		o.el.currentWidth = current.width();
		var posCur = current.position();
		o.el.currentPos = Math.round(posCur.left);
		//__log(o.el.currentPos);
		o.diapo.sens = "right";
		o.diapo.play = true;
		o.diapo.deplace = 50;
		animationDiapo();
	}
	function verifBordure()
	{
		var o = menu;
		var diapoPos = o.diapo.obj.position();
		var flecheGch = o.diapo.parent.find(".fleche_gch");
		var flecheDrt = o.diapo.parent.find(".fleche_drt");
		var typeDisplayL = "none";
		var typeDisplayR = "none";

		if(diapoPos.left >= 0)
		{
			typeDisplayL = "none";
			o.diapo.playL = false;
		}
		else
		{
			typeDisplayL = "block";
			o.diapo.playL = true;
		}
		flecheGch.css("display",typeDisplayL);
		if(diapoPos.left <= -(o.diapo.width - o.diapo.widthMasque))
		{
			typeDisplayR = "none";
			o.diapo.playR = false;
		}
		else
		{
			typeDisplayR = "block";
			o.diapo.playR = true;
		}
		flecheDrt.css("display",typeDisplayR);
		
		if(o.el.current && Math.abs(diapoPos.left) >= Math.round(o.el.currentPos-(o.diapo.widthMasque/2)+(o.el.currentWidth/2)-o.el.margin))
		{
			o.diapo.play = false;
			o.el.current = false;
			o.diapo.deplace = 10;
		}
	}
	function goDiapo(pSens)
	{
		var o = menu;
		o.diapo.sens = pSens;
		if(o.diapo.play == false)
			o.diapo.play = true;
		animationDiapo();
	}
	function stopDiapo()
	{
		var o = menu;
		if(o.diapo.play == true)
			o.diapo.play = false;
		//animationDiapo();
		o.diapo.obj.stop();
	}
	function animationDiapo()
	{
		var o = menu;
		
		verifBordure();
		
		if(o.diapo.sens == "right" && !o.diapo.playR)
			o.diapo.play = false;
		if(o.diapo.sens == "left" && !o.diapo.playL)
			o.diapo.play = false;
		if(o.diapo.play == false)
		{
			stopDiapo();
			return false;
		}
		
		//__log(o.diapo.play);
		
		var longueur = 0;
		var diapoPos = o.diapo.obj.position();
		
		if(o.diapo.sens == "right")
			longueur = Math.round(diapoPos.left-o.diapo.deplace);
		else
			longueur = Math.round(diapoPos.left+o.diapo.deplace);
		
		//__log(longueur);
		///Math.abs(diapoPos.left)

		o.diapo.obj.animate({left:longueur+"px"},10,function()
		{
			animationDiapo();
		});
		
	}
})();

