/* -----------------------------------------------------------------
Version	1.1
Date de création modification 	18 Juin 2008
Auteur	Thierry
Améliorations possibles :
-------------------------------------------------------------------- */

	/* ************************************************* */
	// Reusable Septembre 2008
	function get3ItemStyle (klass, type) { 	
		// Non utilisée dans ce widget
		var res="";
		$each(document.styleSheets, function(style){
			var rules = style.rules || style.cssRules;
			$each(rules, function(rule){
				var klass0 = rule.selectorText;
				if (klass==klass0) {
					var sd = "rule.style." + type ;
					res = eval(sd) ;
				}
			});
		});
		return res;
	}

	function parseInt_(s) {
		if (s=="") return 0;
		var r = parseInt(s);
		if (isNaN(r)) return 0;
		return r ;
	}
	
	function eqxGetProperty(node,prop) {
		var a = node.getProperty(prop);
		if (!$defined(a)) {
			a="";
		}
		return a;
	}
	
	// End Reusable
	/* ************************************************* */

	var eqxMenuSlide3 = new Class({

		initialize: function(node){
			this.node = node;

			this.klass = node.getProperty("eqxClass");
			if (this.klass=="" || !$defined(this.klass)) {
				alert ("L'attribut eqxClass doit être renseigné pour les widgets eqxMenuSlide3 !");
				return ;
			}
			var klass = this.klass;
			var klass1 = this.klass+"-img1";
			var klass2 = this.klass+"-img2";
			var klassp = this.klass+"-par";
			var klassc = this.klass+"-cell";
			var klasst = this.klass+"-text";
			var klassn = this.klass+"-pos";
			var klassb = this.klass+"-btn";
			
			this.klassp = "." + klassp;
			
			this.hasText = node.getProperty("hasText");
			if (!$defined(this.hasText)) {
				this.hasText="false";
			}
			var hasText=this.hasText ;

			// Dévalidation du click droit
			$(node).addEvent('contextmenu', 
				function (evt) {
					new Event(evt).stop(); 							
					return false ;
				}
			);

			this.hasPosition = node.getProperty("hasPosition");
			if (!$defined(this.hasPosition)) {
				this.hasPosition="false";
			}
			var hasPosition=this.hasPosition ;

			var lwItem = -1 ;
			var lhItem = -1 ;
				
			var b1=$(node).getFirst();
			var ul=$(b1).getNext();
			var b2=$(ul).getNext();
			
			if (b1.getTag()!="button") {
				alert ("Un widget eqxMenuSlide3 doit commencer par une balise button !");
				return ;
			}
			if (ul.getTag()!="ul") {
				alert ("Un widget eqxMenuSlide3 doit contenir par une balise ul !");
				return ;
			}
			if (b2.getTag()!="button") {
				alert ("Un widget eqxMenuSlide3 doit finir par une balise button !");
				return ;
			}
			this.ul = ul;
			this.b1 = b1;
			this.b2 = b2;			

			var scroll = document.createElement("div"); 
			$(scroll).injectAfter(b1) ;
			$(ul).injectInside (scroll);
						
			$(ul).setStyle('margin','0px');
			$(ul).setStyle('padding','0px');
			this.scroll = scroll;

			var nb=0;
			$ES('li',node).each ( function (li) {
				nb++ ;
				
				$(li).setStyle('float','left');
				$(li).setStyle('clear','none');
				$(li).setStyle('display','inline');
				$(li).setStyle('margin','0px');
	
				var img1=$(li).getFirst();
				var img2=$(img1).getNext();
				var par=$(img2).getNext();

				// d1 et d2 sont les deux containers (gauche et droite)				
				var d1 = document.createElement("div"); 
				$(d1).injectInside(li) ;
				var d2 = document.createElement("div"); 
				$(d2).injectInside(li) ;
				$(d1).setStyle('display','inline');
				$(d2).setStyle('display','inline');
				$(d1).setStyle('float','left');
				$(d1).setStyle('clear','none');
				$(d2).setStyle('float','left');
				$(d2).setStyle('clear','none');


				// On commence par les deux textes
				var t1=null, t2=null ;	
				if (hasText=="true") {
					t1 = document.createElement("p"); 
					$(t1).injectInside(d1) ;
					$(t1).innerHTML=eqxGetProperty($(img1),"text");

					t2 = document.createElement("p"); 
					$(t2).injectInside(d2) ;
					$(t2).innerHTML=eqxGetProperty($(img2),"text") ;
				}

				// Puis on injecte image et texte
				$(img1).injectInside(d1) ;
				
				var tBody = document.createElement("table"); 
				tBody.cellPadding=0;
				tBody.cellSpacing=0;
				var row = tBody.insertRow(-1);
				var cell = row.insertCell(-1);
				
				$(par).injectInside(cell) ;
				$(tBody).injectInside(d1) ;
				$(cell).setStyle ('vertical-align','bottom');
				
				$(img2).injectInside(d2) ;
			
				$(img1).toggleClass(klass1);
				$(img2).toggleClass(klass2);
				$(par).toggleClass(klassp);
				$(cell).toggleClass(klassc);
				
				var lwItem1 = parseInt($(img1).getStyle("width")) ;
				var lwItem2 = parseInt($(img2).getStyle("width")) ;
				var lwItem3 = parseInt($(par).getStyle("width")) ;

				var q1 =	
					parseInt_ ($(img1).getStyle("padding-left")) +
					parseInt_ ($(img1).getStyle("padding-right")) ;
				var q2 =	
					parseInt_ ($(img2).getStyle("padding-left")) +
					parseInt_ ($(img2).getStyle("padding-right")) ;
				var q3 =	
					parseInt_ ($(par).getStyle("padding-left")) +
					parseInt_ ($(par).getStyle("padding-right")) ;

				var m1 =	
					parseInt_ ($(img1).getStyle("margin-left")) +
					parseInt_ ($(img1).getStyle("margin-right")) ;
				var m2 =	
					parseInt_ ($(img2).getStyle("margin-left")) +
					parseInt_ ($(img2).getStyle("margin-right")) ;
				var m3 =	
					parseInt_ ($(par).getStyle("margin-left")) +
					parseInt_ ($(par).getStyle("margin-right")) ;

				var margeSup=0 ; // Marge supplémentaire de dimension du UL

				var lwItem13_ = Math.max(lwItem1+m1+q1,lwItem3+m3+q3);
				var lwItem2_ = lwItem2+m2+q2 ;

				lwItem = lwItem13_+lwItem2_+margeSup ;

				if (nb==1) {
					$(ul).style.overflow="hidden";

					$(scroll).style.width = lwItem + "px";
					$(scroll).style.overflow="hidden";

					$(node).style.overflow="hidden";

				}
						
				var padText=4 ;
				if (hasText=="true") {
					if (false) {
						// Centré sur la zone de gauche
						$(t1).style.width=(lwItem13_-2*padText)+ "px" ;
					}
					else {
						// Centré sur l'image de gauche
						$(t1).style.width=(lwItem1-2*padText)+ "px" ;
					}
					$(t1).setStyle('margin-Left',padText + "px");
					$(t1).setStyle('margin-Right',padText + "px");
					$(t1).toggleClass(klasst);

					$(t2).style.width=(lwItem2_-2*padText)+ "px" ;
					$(t2).setStyle('margin-Left',padText + "px");
					$(t2).setStyle('margin-Right',padText + "px");
					$(t2).toggleClass(klasst);
				}

				if (nb==1) {
					var lhItem1 = parseInt($(img1).getStyle("height")) ;
					var lhItem2 = parseInt($(img2).getStyle("height")) ;
					var lhItem3 = parseInt($(par).getStyle("height")) ;
					lhItem = Math.max (lhItem1+lhItem3,lhItem2);
						
					if (hasText=="true") {
						var htt = $(t1).getStyle("height") ;
						if (htt.indexOf('px')==-1) {
							// alert ("Widget wMenuSlide3\nAttention ! la hauteur des textes doit être spécifiée en pixels ...") ;
						}

						var lt1 = parseInt($(t1).getStyle("height")) + parseInt($(t1).getStyle("margin-top")) + parseInt($(t1).getStyle("margin-bottom")) ;
						var lt2 = parseInt($(t2).getStyle("height")) + parseInt($(t2).getStyle("margin-top")) + parseInt($(t2).getStyle("margin-bottom")) ;
												
						lhItem += Math.max (lt1,lt2);
					}
					$(scroll).style.height = lhItem + "px";
				}
								
			});

			if (nb==0) {
				alert ("Un widget eqxMenuSlide3 doit contenir au moins 1 bloc !");
				return ;
			}
			this.nb=nb ;

			if (hasPosition=="true") {
				this.pp = document.createElement("p"); 
				$(this.pp).injectBefore(b1) ;
				$(this.pp).style.width=lwItem+ "px" ;
				$(this.pp).style.margin="0px" ;
				$(this.pp).toggleClass(klassn);
				this.updatePos (1);
			}
			
			var lwItemMax = lwItem * (nb-1);
			$(ul).style.width = (lwItem*nb + 50) + "px";
			$(ul).style.height = lhItem + "px";
			  
			// Les boutons
			$(b1).toggleClass(klassb);
			$(b2).toggleClass(klassb);
			this.buttonPosition = node.getProperty("buttonPosition");
			if (this.buttonPosition=="" || !$defined(this.buttonPosition)) {
				this.buttonPosition="inline";
			}
			$(b1).setStyle('float','left');
			$(b1).setStyle('clear','none');
			$(scroll).setStyle('float','left');
			$(b2).setStyle('float','left');				
			$(b2).setStyle('clear','none');
			if (this.buttonPosition=="inline") {
			}
			else if (this.buttonPosition=="under") {
				$(b1).setStyle('clear','left');
				$(scroll).setStyle('clear','both');
				$(b1).injectAfter(scroll) ;
				$(b2).injectAfter(b1) ;
			}
			else if (this.buttonPosition=="over") {
				$(b2).setStyle('clear','right');
				$(scroll).setStyle('clear','both');
				$(b2).injectBefore(scroll) ;
			}
			
			if (this.buttonPosition=="under" || this.buttonPosition=="over") {		
				// Saut de ligne forcé : uniquement pour IE 
				var hr = document.createElement("hr"); 
				$(hr).injectAfter(scroll) ;
				$(hr).style.visibility="hidden";
				$(hr).setStyle('clear','both');
				$(hr).setStyle('margin','0px');
				$(hr).setStyle('height','0px');
			}
			
			// Les évt
			this.m=0 ;
			
			$(b1).setStyle('cursor','pointer');
			$(b2).setStyle('cursor','pointer');
			$(b1).widget=this;
			$(b2).widget=this;
				
			$(b1).addEvent('click', 
				function () {
					if (this.widget.m>0) {
						this.widget.m-=lwItem ;
						if (this.widget.m<0) this.widget.m=0;
					}
					var i = Math.floor(1+this.widget.m/lwItem)  ;
					this.widget.updatePos(i);
					this.widget.updateBouton(i);
					new Fx.Scroll(scroll, {duration: 1000}).scrollTo (this.widget.m,0);
				}
			);
			$(b2).addEvent('click', 
				function () {
					if (this.widget.m<lwItemMax) {
						this.widget.m+= lwItem ;
						if (this.widget.m>lwItemMax) this.widget.m=lwItemMax;
					}
					var i = Math.floor(1+ this.widget.m/lwItem)  ;			
					this.widget.updatePos(i);
					this.widget.updateBouton(i);
					new Fx.Scroll(scroll, {duration: 1000}).scrollTo (this.widget.m,0);
				}
			);
			this.updateBouton (1);
			
		},
		updatePos  : function (i) {
			if (this.hasPosition=="true") {
				if (i<1) i=1 ;
				if ($(this.pp)) {
					$(this.pp).innerHTML = i + " / " + this.nb ; 
				}
			}
		},
		updateBouton  : function (i) {
			if (i<=1) $(this.b1).setStyle('visibility','hidden') ; else $(this.b1).setStyle('visibility','visible') ;
			if (i>=this.nb) $(this.b2).setStyle('visibility','hidden') ; else $(this.b2).setStyle('visibility','visible') ;
			/*
			if (i<=1) $(this.b1).disabled=true; else $(this.b1).disabled=false;
			if (i>=this.nb) $(this.b2).disabled=true; else $(this.b2).disabled=false;
			*/
		},
		hideTexte : function () {
			$$(this.klassp).each (function (h) {
				h.style.visibility="hidden" ;
			});			
		},
		showTexte : function () {
			$$(this.klassp).each (function (h)  {
				h.style.visibility="visible" ;
			});
		}

	
	});

	/*----------------------------------------------------------*/
	// Initialisation après fabrication du DOM
	window.addEvent('domready', function(){
		$ES('div').each ( function (h) {
			if (h.hasClass('eqxMenuSlide3')) {
				h.widget = new eqxMenuSlide3 (h) ;			
			}
		});
				
	});
		