/* 
	Script para barra de Rolagem com scroll
	Testado no IE, no Firefox e no Opera
	Desenvolvido por Renato Herculano	
*/

//Variavels de controle do scroll, recomendável colocar na própria pagina onde for aplicar o scroll
var velocidade = 1 //define a velocidade
var container = 'overFlow' //define a ID container
var texto = 'texto' // define a ID que contem o texto que vai ter o scroll
var cursor = 'rolagem' // define a ID do cursor do seu scroll {o lugar onde vc clica e arrasta}
var barra = 'barraScroll' // define a ID onde a barra do seu scroll vai correr

//variaveis com valores padrão, não alterar
IE = (navigator.userAgent.indexOf("MSIE") > -1) ? true : false;	
var temp = ''
var y = 0
var maxTop = 0
var relacao = 0
var calcular = true;
var mouseup = false

//para retornar as coorenadas do mouse quando o navegador nao for o IE
if (!IE)
	window.captureEvents(Event.MOUSEMOVE);	

//função para calcular as relações
function calcula(){
	maxTop = (document.getElementById(texto).offsetHeight - document.getElementById(container).offsetHeight) * -1;
	tamanhoBarra = document.getElementById(barra).offsetHeight - document.getElementById(cursor).offsetHeight;
	relacao = maxTop/tamanhoBarra * -1
}

//função para descer o scroll
function desce(){
	if(y > maxTop){
		document.getElementById(texto).style.top = y + 'px'
		document.getElementById(cursor).style.top = (y/relacao * -1) + 'px'
		y -= velocidade
		temp = setTimeout("desce()", 1)
		mouseup = true
	}
}

//Função para subir o scroll
function sobe(){
	if(parseInt(document.getElementById(texto).style.top) < 0){
		document.getElementById(texto).style.top = y + 'px'
		document.getElementById(cursor).style.top = (y/relacao * -1) + 'px'
		y += velocidade
		temp = setTimeout("sobe()", 1)
		mouseup = true
	}
}
	
//função usada para anular eventos
function retornaNada(){return false}

//Função para arrastar o scroll
function arrasta(){
	document.onmousemove = function(e){			
		pY = (IE)?event.clientY + document.body.scrollTop : e.pageY;
		if(calcular){
			difY = pY - document.getElementById(cursor).offsetTop;
			calcular = false;				
		}
		
		y = ((pY - difY) * relacao * -1)
		if(y >= maxTop && y <= 0){
			document.getElementById(cursor).style.top = (pY - difY) + 'px';
			document.getElementById(texto).style.top = y + 'px';
		}
		mouseup = true
	}	

	document.onselectstart = retornaNada;
	
	document.onmouseup = function(){
		if(!mouseup)
			null
		else{
			document.onmousemove = document.onselectstart = null;
			calcular =  true;
			para();				
			y = parseInt(document.getElementById(texto).style.top)
			mouseup = false
		}
	}	
}


function para(){
	if(mouseup)
		clearTimeout(temp)
}

document.onmouseup = para;


