var theControl, theSlider, controlOffsets;
var isSliderDrag = false;
var SliderX, SliderY, tSliderY;

var sliderLeftOffset = 20, sliderTopOffset = 85, sliderBottomOffset = 215;
function sliderMouseMove( e )
{
	if ( isSliderDrag )
	{
		if ( !e ) e = window.event;
		var tmpPos = tSliderY + e.clientY - SliderY;

		if ( tmpPos < sliderTopOffset + controlOffsets[1] ) tmpPos = sliderTopOffset + controlOffsets[1];
		if ( tmpPos > sliderBottomOffset + controlOffsets[1] ) tmpPos = sliderBottomOffset + controlOffsets[1];
		theSlider.style.top = parseInt( tmpPos ) + 'px';
		return false;
	}
}

function sliderMouseDown( e ) 
{

	if ( this.className == 'dragme' )
	{
		if ( !e ) e = window.event;

		isSliderDrag = true;
		tSliderY = parseInt( this.style.top + 0 );
		SliderX = e.clientX;
		SliderY = e.clientY;
		return false;
	}
}

var sc2perCoeff = 1000;

function scale2Percent( aSc )
{
	var tmp = 100 / Math.log ( ( minScale - maxScale + sc2perCoeff  ) / sc2perCoeff  ) * Math.log( ( aSc - maxScale + sc2perCoeff ) / sc2perCoeff );
	if ( tmp > 100 ) tmp = 100;
	if ( tmp < 0 ) tmp = 0;
	return tmp;
}

function percent2Slide( aPer )
{
	return controlOffsets[1] + sliderTopOffset + ( sliderBottomOffset - sliderTopOffset ) / 100 * aPer;
}

function percent2Scale( aPer )
{
	return Math.round( sc2perCoeff * Math.exp( 0.01 * aPer * Math.log ( ( minScale - maxScale + sc2perCoeff ) / sc2perCoeff ) ) + maxScale - sc2perCoeff );
}

function slide2Percent( aPos )
{
	var tmp = parseInt(( parseInt( aPos ) - sliderTopOffset - controlOffsets[1] )/ ( sliderBottomOffset - sliderTopOffset ) * 100 );
	if ( tmp > 100 ) tmp = 100;
	if ( tmp < 0 ) tmp = 0;
	return tmp;
}

function getSliderScale( )
{
	return percent2Scale( slide2Percent( parseInt( theSlider.style.top ) ) );
}

function setSlider( aScale )
{
	var tmpPos = Math.round( percent2Slide( scale2Percent( aScale ) ) );
	theSlider.style.top = parseInt( tmpPos ) + 'px';
}

function initSlider()
{
	theControl = window.document.getElementById( 'control' );
	theControl.onmousemove = sliderMouseMove;

	theSlider = window.document.getElementById( 'slider' );
	theSlider.onmousedown = sliderMouseDown;
	theSlider.onmousemove = sliderMouseMove;

	controlOffsets = getObjOffset( theControl );
	theSlider.style.left = parseInt( controlOffsets[0] + sliderLeftOffset + 0 ) + 'px';
	theSlider.style.top = parseInt( controlOffsets[1] + sliderTopOffset ) + 'px';

	theSlider.className = 'dragme';
}
