/**********************************************************/
/*        Thematic maps slider                            */
/*        Requires: Yui librabries						  */
/*		  Wisdom 2008	                                  */
/**********************************************************/

YAHOO.bosatlas.initSlider  = function(id) {
	
	if(!Dom.get("sliderBg_" + id)) {
		return false;
	}
	
	var slider;
	var bg = "sliderBg_" + id; 
	var thumb = "sliderThumb_" + id; 
	var sliderValue = "sliderValue_" + id;
    var upLimit = 89;
    var downLimit = 0;
    var scaleFactor = 0.1;
    var keyIncrement = 10;
	var tickSize = 5;
	var resetValueButton = "resetSlider_" + id;

	var maxZoom = 3.0;		// maximum zoom level
	var minZoom = 0.5;		// minimum zoom level
	var maxSlider = 60.0;	// maximum slider level (hardcoded)
	var minSlider = -20.0;	// minimum slider level (hardcoded)
	
	slider = YAHOO.widget.Slider.getVertSlider(bg, 
					 thumb, upLimit, downLimit, tickSize);

	slider.getRealValue = function() {
		 return  -1 * ( Math.round(this.getValue())) - 20;
	}
	
	slider.subscribe("change", function(offsetFromStart) {

		//var valnode = Dom.get(valuearea);
		var fld = Dom.get(sliderValue);
		var actualValue = slider.getRealValue();
		fld.value = actualValue;
		
		// Update the title attribute on the background.  This helps assistive
		// technology to communicate the state change
		Dom.get(bg).title = "" ;

		// zoom
		var factor = (actualValue < 0.0) ? -(1.0 - minZoom) / minSlider : (maxZoom - 1.0) / maxSlider;
		YAHOO.bosatlas.SVG.SVGEl.zoom('to', 1.0 + (actualValue * factor));
	});

	// set an initial value
	slider.setValue(-15);

	// 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(sliderValue, "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;

			// convert the real value into a pixel offset
			slider.setValue(Math.round(v/scaleFactor));
		}
	});
	
	// set reset event on reset values button
	Event.on(resetValueButton, "click", function(e) {
		slider.setValue(-15, false); 
	});
}
