// richiede la funzione getPageCoords
var HMAScrolls_intervals = Array();
var HMAScrolls_stop_timeouts = Array();
var HMAScrolls_xpositions = Array();
var HMAScrolls_rallentando = Array();
function scrolla(idObj) {
	var direz = 1;
	var bloccoSlide = document.getElementById(idObj);
	var w = parseInt(bloccoSlide.style.width, 10);
	if(HMAScrolls_xpositions[idObj] < w/2) direz = -1;
	var fattRallentamento = Math.ceil(Math.abs(HMAScrolls_xpositions[idObj] - w/2) / 4) * (-direz);
	if(HMAScrolls_rallentando[idObj]) {
		HMAScrolls_xpositions[idObj] += fattRallentamento;
	}
	var dist = Math.abs(HMAScrolls_xpositions[idObj] - w/2);
	if(dist > 50 || HMAScrolls_rallentando[idObj]) {
		var fattore = Math.ceil(dist / 20);
		var distanzaDalLimite = bloccoSlide.scrollLeft;
		if(direz > 0) distanzaDalLimite = bloccoSlide.scrollWidth - bloccoSlide.scrollLeft - w;
		if(distanzaDalLimite < 100) {
			var fattoreMax = Math.ceil(distanzaDalLimite / 10);
			if(fattore > fattoreMax) fattore = fattoreMax;
		}
		bloccoSlide.scrollLeft += fattore*direz;
		if(HMAScrolls_rallentando[idObj] && fattore < 2) {
			clearInterval(HMAScrolls_intervals[idObj]);
			HMAScrolls_intervals[idObj] = null;
		}
	}
}
function iniziaScroll(idObj) {
	if(!HMAScrolls_intervals[idObj]) HMAScrolls_intervals[idObj] = setInterval("scrolla('"+idObj+"')", 50);
	HMAScrolls_rallentando[idObj] = false;
	clearTimeout(HMAScrolls_stop_timeouts[idObj]);
	HMAScrolls_stop_timeouts[idObj] = null;
}
function fineScroll(idObj) {
	HMAScrolls_rallentando[idObj] = true;
	clearTimeout(HMAScrolls_stop_timeouts[idObj]);
	HMAScrolls_stop_timeouts[idObj] = null;
}
function initScroll(idObj) {
	var bloccoSlide = document.getElementById(idObj);
	if(bloccoSlide.scrollWidth < 5) return;
	HMAScrolls_rallentando[idObj] = false;
	bloccoSlide.onmousemove = function(e) {
		if(e) {
			if(e.layerX != undefined) {
				if(navigator.userAgent.indexOf("Safari")!=-1) {
					// SAFARI
					HMAScrolls_xpositions[idObj] = e.layerX;
				} else {
					// FIREFOX
					HMAScrolls_xpositions[idObj] = e.layerX - bloccoSlide.scrollLeft;
				}
			} else if(e.offsetX != undefined) {
				// OPERA
				var pageCoords = getPageCoords(bloccoSlide);
				HMAScrolls_xpositions[idObj] = e.clientX - pageCoords.x + window.pageXOffset;
			}
		} else {
			// EXPLORER
			var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
			var pageCoords = getPageCoords(bloccoSlide);
			HMAScrolls_xpositions[idObj] = event.clientX - pageCoords.x + iebody.scrollLeft;
		}
		
	}
	bloccoSlide.onmouseover = function() {
		iniziaScroll(idObj);
	}
	bloccoSlide.onmouseout = function() {
		HMAScrolls_stop_timeouts[idObj] = setTimeout("fineScroll('"+idObj+"')", 100);
	}
}
