/* ---  Set Interval TrackBar  ---
	Require prototype.js,
	scriptaculous.js (slider.js)
*/

var intervalBar = Class.create({
	slider : null,
	handles : null,
	displayValue : null,
	minValue : null,
	maxValue : null,
	minOutput : null,
	maxOutput : null,
	initialValue : null,
	gap : null,
	intervalBar : null,
	
	initialize: function(slider, minValue, maxValue, minOutput, maxOutput, gap, setMin, setMax){ //id du slider, valeur min, valeur max, id du input min, id du input max, ecart minimal entre les 2 valeurs en %, les valeurs initiales et maximales où placer les 2 curseurs
		this.slider = $(slider);
		this.displayValue = this.slider.childElements().last();		
		this.minValue = minValue;
		this.maxValue = maxValue;		
		this.minOutput = $(minOutput);
		this.maxOutput = $(maxOutput);
		this.handles = this.slider.select('.handle');		
		this.gap = Math.round((this.maxValue - this.minValue) * gap / 100); // gap% de distance minimale entre les deux curseurs 
		if (this.gap < 1) this.gap = 1;
		if(!isNaN(setMin) && !isNaN(setMax) && setMin < setMax && setMin >= minValue && setMax <= maxValue){
			this.initialValue = [setMin,setMax];			
			this.displayValue.childElements().first().innerHTML = setMin;
			this.displayValue.childElements().last().innerHTML = setMax;
		}
		else{
			this.initialValue = [minValue,maxValue];
			this.displayValue.childElements().first().innerHTML = this.minValue;
			this.displayValue.childElements().last().innerHTML = this.maxValue;
		}
		this.intervalBar = new Control.Slider(this.handles, this.slider, {
			range: $R(this.minValue, this.maxValue),
			sliderValue: this.initialValue,
			//restricted: true,
			onSlide: function(values){
				if((values.last() - values.first()) >= this.gap){
					this.displayValue.childElements().first().innerHTML = Math.round(values.first());
					this.displayValue.childElements().last().innerHTML = Math.round(values.last());				
					this.minOutput.value = Math.round(values.first());
					this.maxOutput.value = Math.round(values.last());
				}
				/*Restriction écart minimale entre les 2 curseurs*/
				if((values.last() - values.first()) <= this.gap){					
					this.intervalBar.setValue(values.last()-this.gap,0);
					this.intervalBar.setValue(values.first()+this.gap,1);
					this.displayValue.childElements().first().innerHTML = Math.round(values.last()-this.gap);
					this.displayValue.childElements().last().innerHTML = Math.round(values.first()+this.gap);				
					this.minOutput.value = Math.round(values.last()-this.gap);
					this.maxOutput.value = Math.round(values.first()+this.gap);
				}
			}.bindAsEventListener(this)
		});
	},
	putValues: function(values){
		alert(values);
	}
	
});