(function() {
    var Event = YAHOO.util.Event,
        Dom   = YAHOO.util.Dom,
        lang  = YAHOO.lang,
        slider, 
        bg="slider-bg", 
        thumb="slider-thumb", 
        conteneur =  "slider_conteneur",
        contenu =  "slider_contenu",
        sizeContenu = 0;

    Event.onDOMReady(function() {
   	// The slider can move 0 pixels up
		var topConstraint = 0;
		// The slider can move 0 pixels down
		re = new RegExp('[^0-9]*', 'g');
	    var bottomConstraint = parseInt(Dom.getStyle(bg, 'width').replace(re, '') - 17); // 17 largeur du cursor
	    var scaleFactor = 100/bottomConstraint;
		
		oConteneur = document.getElementById(conteneur);
	
		if (oConteneur) {
		
			// ----------
			cBloc = YAHOO.util.Dom.getElementsByClassName('bloc', 'div', oConteneur);
			for (i=0; cBloc[i];i++) {
				sizeContenu += (cBloc[i].offsetWidth);
				
				margeLeft = Dom.getStyle(cBloc[i], 'margin-left').replace(re, '');
				if (!isNaN(margeLeft) && margeLeft > 0) {
					sizeContenu += parseInt(margeLeft);
				}
				
				margeRight = Dom.getStyle(cBloc[i], 'margin-right').replace(re, '');
				if (!isNaN(margeRight) && margeRight > 0) {
					sizeContenu += parseInt(margeRight);
				}
				
			}
			oConteneur = document.getElementById(conteneur);
			Dom.setStyle(conteneur, 'overflow', 'hidden');
			oConteneur.scrollLeft = 0;

			// Définition de la largeur du contenu
			Dom.setStyle(contenu, 'width', (sizeContenu)+ 'px');
			sizeConteneur = oConteneur.offsetWidth;
			if (sizeContenu <= sizeConteneur) {
				Dom.setStyle(bg, 'display', 'none');
				return;
			}
			// ----------
			tick = cBloc.length - Math.floor(oConteneur.offsetWidth / (sizeContenu / cBloc.length));			
	        slider = YAHOO.widget.Slider.getHorizSlider(bg, thumb, topConstraint, bottomConstraint, tick);
	
		
	        slider.subscribe("change", function(offsetFromStart) {
            	 // deplacement
	             pourcent = (Math.round(slider.getValue() * scaleFactor));
	             document.getElementById(conteneur).scrollLeft = ((sizeContenu - sizeConteneur) * pourcent / 100);;
	   	    });
	
	        slider.subscribe("slideStart", function() {
	                //YAHOO.log("slideStart fired", "warn");
	         });
	
	        slider.subscribe("slideEnd", function() {
	                //YAHOO.log("slideEnd fired", "warn");
	         });
	
	        // Listen for keystrokes on the form field that displays the
	        // control's value.  While not provided by default, having a
	        // form field with the slider is a good way to help keep your
	        // application accessible.
	        Event.on(textfield, "keydown", function(e) {	
	            /* set the value when the 'return' key is detected
	            if (Event.getCharCode(e) === 13) {
	                var v = parseFloat(this.value, 10);
	                v = (lang.isNumber(v)) ? v : 0;
	                slider.setValue(Math.round(v*scaleFactor));
	            }*/
	        });
		}
    });
})();