/*************************************************************************************
*                                      Sliders                                       *
*   Page Title:   Sliders                                                            *
*   Page Version: 0.1                                                                *
*   Author:       Tyler Klein                                                        *
*   Date:         02/08/2008                                                         *
*************************************************************************************/

function showValue( v ){
	clear();
	echo( v );
}

var slideObj = null;
var slideUpdateFn = null;

function setup_slider( obj, updateFn, initialValue ){
	var o = MM_findObj( obj );
	o.setValue = function( v ){
		var minX = findPosX(this.parentNode);
		var maxX = minX + getObjectWidth( this.parentNode ) - getObjectWidth( this );
		var x = (maxX - minX) * v + minX;
		setPos( this, x, findPosY(this) );
	}
	o.onmousedown = function( e ){
		slideUpdateFn = updateFn;
		var o = getEvtTarget(e);
		slideObj = o;
		document.onmousemove = slider_move;
		document.onmouseup = function(e){
			document.onmousemove = null;
			document.onmouseup = null;
		}
	}
	o.setValue( initialValue );
}

function slider_move( evt ){
	var loc = getEvtClick(evt)

	var minX = findPosX(slideObj.parentNode);
	var maxX = minX + getObjectWidth( slideObj.parentNode ) - getObjectWidth( slideObj );

	if( loc.x < minX ) x = minX;
	else if( loc.x > maxX ) x = maxX;
	else x = loc.x;

	setPos( slideObj, x, findPosY(slideObj) );
	if( slideUpdateFn !== null ) slideUpdateFn( (x-minX) / (maxX - minX) );
	
	return false;
}