/***** SCROLL *****/
var sortir = false;
/* desplaçament que ha de tindre lo contingut respecte del punt 0 */
var comensament = 0;
/* volem controlar la velocitat de forma global per a q vaigue mes ràpid en l'scroll de la roda del mouse */
var desplasament = 3;
function scroll(direccio, idcont, idscroll, primeravegada) 
	{
	if (primeravegada)
		{
		sortir = false;
		primeravegada = false;
		}

	var cont = document.getElementById(idcont);
	var el = document.getElementById(idscroll);

	/* direccio horitzontal */
	if ((direccio=="esquerra")||(direccio=="dreta"))
		{
		mida_cont = cont.clientWidth;
		mida = el.clientWidth;
		var estil = el.style;
		var pos_act = estil.left.substr(0,estil.left.length-2);
		}
	/* direccio vertical */
	else
		{
		mida_cont = cont.clientHeight;
		mida = el.clientHeight;
		var estil = el.style;
		var pos_act = estil.top.substr(0,estil.top.length-2);
		}

	var offset = mida-mida_cont;
	pos_act = pos_act-comensament;

	if (offset>0)
		{
		switch (direccio) 
			{
		  case "esquerra":
				pos_act = pos_act*(-1);
	
				if ((pos_act+desplasament)>offset)
					{
					pos_act = offset;
					sortir = true;
					}
				else
					pos_act = pos_act+desplasament;
	
				pos_act = pos_act*(-1);
	
				el.style.left = pos_act+"px";
			  break;
	    case "dreta":
				if ((pos_act+desplasament)>0)
					{
					pos_act = 0;
					sortir = true;
					}
				else
					{
					pos_act = pos_act*1;
					pos_act = pos_act+desplasament;
					}
	
				el.style.left = pos_act+"px";
			  break;
			case "dalt":
      	pos_act = pos_act*(-1);
				if ((pos_act+desplasament)>offset)
					{
					pos_act = offset;
					sortir = true;
					}
				else
					pos_act = pos_act+desplasament;
				/*** aqui va el calcul de lscroller ***/
				var scroll = document.getElementById("scroll");
				var scroller = document.getElementById("scroller");
				var fletxa = document.getElementById("flexa_baix");
	
				var midascroll = scroll.clientHeight;
				var midafletxes = fletxa.clientHeight;
				var midascroller = scroller.clientHeight;
				var pd = pos_act;
				var d = midascroll-(midafletxes*2)-midascroller;
				var ds = Math.round(d*pd/offset)+midafletxes;
				scroller.style.top = ds+"px";
				/**************************************/

				pos_act = pos_act*(-1);
	
				pos_act = pos_act+comensament;
				el.style.top = pos_act+"px";
		    break;
			case "baix":
				if ((pos_act+desplasament)>0)
					{
					pos_act = 0;
					sortir = true;
					}
				else
					{
					pos_act = pos_act*1;
					pos_act = pos_act+desplasament;
					}
					/*** aqui va el calcul de lscroller ***/
					var scroll = document.getElementById("scroll");
					var scroller = document.getElementById("scroller");
					var fletxa = document.getElementById("flexa_baix");
		
					var midascroll = scroll.clientHeight;
					var midafletxes = fletxa.clientHeight;
					var midascroller = scroller.clientHeight;
					var pd = pos_act*(-1);
					var d = midascroll-(midafletxes*2)-midascroller;
					var ds = Math.round(d*pd/offset)+midafletxes;
					scroller.style.top = ds+"px";
					/**************************************/
		
					pos_act = pos_act+comensament;
					el.style.top = pos_act+"px";
				  break;
			}
		if (!sortir)
			var tiempo = window.setTimeout('scroll("'+direccio+'", "'+idcont+'", "'+idscroll+'")',10);
		}
	}
function sortirscroll() 
	{
	sortir = true;
	}
function iniscroller(scroller,event) 
	{
	var scroll = scroller.parentNode;
	var fletxa = document.getElementById("flexa_baix");

	scroller.midacont = scroll.clientHeight;
	scroller.midafletxa = fletxa.clientHeight;
	scroller.posini_y = scroller.offsetTop;
	scroller.moure = true;
	scroller.mouseini_y = event.clientY;
	scroller.mida = scroller.clientHeight;
	}
function fiscroller(scroller) 
	{
	scroller.moure = false;
	}
function scrollar(scroller,event,idcont, idcontingut) 
	{

	/* calcul parametres de relacio desplasament scroll (ds) en desplasament continguts (pd) */
	var d = scroller.midacont-(scroller.midafletxa*2)-scroller.mida;

	var cont = document.getElementById(idcont);
	var el = document.getElementById(idcontingut);

	var mida_cont = cont.clientHeight;
	var mida = el.clientHeight;
	var offset = mida-mida_cont;
	/*****************************************************************************************/

	if ((scroller.moure)&&(offset>0))
	{
		var pos_act = scroller.offsetTop;

		var ds = scroller.mouseini_y - event.clientY;

		// si vas cap a dalt
		if (ds >0)
		{
			ds = ds*(-1);
			// si no te passes de la mida que pots recorrer
			if (scroller.posini_y>scroller.midafletxa)
			{
				pos_act = pos_act+ds;
				// si te passes d'altura
				if (pos_act < scroller.midafletxa)
				{
					pos_act = scroller.midafletxa;
				}

				scroller.style.top = pos_act+"px";
				scroller.posini_y = pos_act;
				var ps = (pos_act-scroller.mida)*(-1);
				var pd = Math.round(ps*offset/d)+comensament;
				el.style.top = pd+"px";
			}
		}
		else
		{
			ds = ds*(-1);
			var tope = scroller.midacont-scroller.midafletxa-scroller.mida;
			if (scroller.posini_y<tope)
			{
				pos_act = pos_act+ds;
				if (pos_act > tope)
				{
					pos_act = tope;
				}

				scroller.style.top = pos_act+"px";
				scroller.posini_y = pos_act;
				var ps = (pos_act-scroller.mida)*(-1);
				var pd = Math.round(ps*offset/d)+comensament;
				el.style.top = pd+"px";
			}
		}
		scroller.mouseini_y = event.clientY;
	}
}
function scroll_roda(direccio, idcont,  idscroll) {
	desplasament = 30;
	if (direccio>0)
		var dir="baix";
	else
		var dir="dalt";

	scroll(dir,idcont,idscroll, '1');
	sortirscroll();
	desplasament = 1;
}
/**** PART PER A QUE FUNCIONE LA RODA DEL RATOLI EN EL FIREFOX ****/
/* com volem controlar-ho quan estessem damunt de les capes s'utilitzara sobre on mouse over ja que la funcio devent ho arrecull a tot arreu */
var damunt;
var idcont_fire;
var idscroll_fire;
function scroll_roda_fire(idcont, idscroll) {
	idcont_fire = idcont;
	idscroll_fire = idscroll;
	damunt = true;
}
function sortir_scroll_roda_fire() {
	damunt = false;
}
function wheel(event){
	if (damunt)
	{
		var delta = 0;
		if (!event) event = window.event;

		if (event.wheelDelta)
		{
			delta = event.wheelDelta/120;
			if (window.opera) delta = -delta;
		}
		else if (event.detail) 
			delta = -event.detail/3;

		if (delta)
			scroll_roda(delta,idcont_fire, idscroll_fire);
	}
}

/* Associació Event en la Funció que toca */
if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', wheel, false);

// esta sentencia es pq l'event onmousewheel no passa el validador
window.onmousewheel = document.onmousewheel = wheel;
/****** FI RATOLI FIREFOX ********/

/***** FI SCROLL *****/