

var mousePos			= null;

var slider_interval		= null;
var	slider_object		= null;
var slider_speed		= 0;
var slider_stop			= true;

cds.onmouseover			= slider_start;
cds.onmouseout			= function () { slider_stop = true; };
cds.onmousedown			= function () { slider_stop = true; };

var counter				= 0;

function slider_start(ev) {
	if (dragObject != undefined && dragObject != null)
		return;

	if (slider_interval == null) {
		slider_object	= this;
		slider_interval	= setInterval('slider_mouseover()', 1000/30);
	}
	slider_stop			= false;
}

function slider_mouseover() {
	
//	log.innerHTML	= slider_object.name + ' / ' + counter++;
	objectPos		= slider_getPosition(slider_object);
	x				= mousePos.x - objectPos.x;
	y				= mousePos.y - objectPos.y;
	
	direction		= (x > slider_object.clientWidth / 2) ? 1 : -1;
	
	if (slider_object.scrollLeft == 0)
		slider_speed	= 0;
	if (slider_object.scrollLeft + slider_object.clientWidth == slider_object.scrollWidth)
		slider_speed	= 0;

	targetSpeed		= (2 * x - slider_object.clientWidth) * Math.pow(slider_object.scrollWidth / slider_object.clientWidth, 1/2);
	
	if (slider_stop)
		targetSpeed	= 0;

	slider_speed	+= (targetSpeed - slider_speed) / 1150;

	
	if (slider_speed * direction < 0)
		slider_speed /= 1.2;
	
	if (slider_stop) {
//		acceleration	= -1 * acceleration * slider_speed / 10;
		slider_speed	/= 1.5;
	}
	
//	mousecoor.innerHTML	= slider_object.scrollLeft + ", " + slider_object.clientWidth + " -- " + slider_speed + ' / ' + acceleration + ' --- ' + ((slider_stop) ? 'stop' : 'running');

	xdist				= x - (slider_object.clientWidth / 2);
	slider_object.scrollLeft	+= Math.round(xdist/20);

//	slider_object.scrollLeft += slider_speed;
	
	if (slider_stop && (Math.abs(slider_speed) < 0.001)) {
		clearInterval(slider_interval);
		slider_interval	= null;
		slider_stop		= true;
		slider_speed	= 0;
	}
	
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// Mouse coordination
////////////////////////////////////////////////////////////////////////////////////////////////////////

document.attachEvent('onmousemove', slider_mouseMove);

var mouseOffset 		= null;




function slider_mouseCoords(ev) {
	if(ev.pageX || ev.pageY) {
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function slider_getPosition(e) {
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;

	return {x:left, y:top};
}

function slider_mouseMove(ev) {
	ev			= ev || window.event;
	mousePos 	= slider_mouseCoords(ev);
}


