	//specify speed of scroll (greater=faster)
	var speed=1;
	var speedBarra=20;    
	
	var ie=document.all;
	var nn6=document.getElementById&&!document.all;
	
	var isdrag=false;
	var x,y;
	var dobj;
	var yPos=0;


	var crossobj;

	var interval=null;
	
	var miArr = [];
	var indexClick=0;
	
	iens6=document.all||document.getElementById
	ns4=document.layers

	function inicialitzar(vel, velBarra, sepHorBarra, alturaBarra, DivGeneral, DivContainer, DivContent, up, down, velClick, scrollvar, dragmevar, barraScrollvar, scrollBarravar)
	{		
		limitScrollSuperior = parseInt(document.getElementById(up).height);
		//Límit --> 
		bottomMax = document.getElementById(DivContainer).style.height.substring(0,document.getElementById(DivContainer).style.height.length-2) - (document.getElementById(dragmevar).height) - (parseInt(document.getElementById(down).height));
	
	
		var inicia = [vel, velClick, velBarra, DivGeneral, DivContainer, DivContent, up, down, scrollvar, dragmevar, barraScrollvar, scrollBarravar, limitScrollSuperior, bottomMax];
		miArr.push(inicia);
		
		
		//Inicialitzacions de les barres, scrolls...
		document.getElementById(inicia[11]).style.left = parseInt(document.getElementById(inicia[4]).style.width) + sepHorBarra;
		document.getElementById(inicia[8]).style.left = parseInt(document.getElementById(inicia[4]).style.width) + sepHorBarra;
		document.getElementById(inicia[6]).style.left = parseInt(document.getElementById(inicia[4]).style.width) + sepHorBarra;
		document.getElementById(inicia[7]).style.left = parseInt(document.getElementById(inicia[4]).style.width) + sepHorBarra;
		document.getElementById(inicia[7]).style.top = parseInt(document.getElementById(inicia[4]).style.height) - parseInt(document.getElementById(inicia[7]).height);
		document.getElementById(inicia[9]).style.top=limitScrollSuperior+"px";
		
		//Explicació dels casos de "alturaBarra" al html
		if (alturaBarra == 1)
			document.getElementById(inicia[10]).height = parseInt(document.getElementById(inicia[4]).style.height);
		if (alturaBarra > 1)
			document.getElementById(inicia[10]).height = alturaBarra;
		
		//Si es fa click a la pagina, cridem a la funció selectmouse
		document.onmousedown=selectmouse;
		document.onmouseup=new Function("isdrag=false;clearTimeout(interval);");
	}
	
	
	function selectmouse(e) /* Fem un click amb el mouse (on sigui). Funció principal, d'aqui anirem a una o altre funció, depenent d'on fem el click. */
	{
		//alert(e.page.y);
		var fobj       = nn6 ? e.target : event.srcElement;
		var topelement = nn6 ? "HTML" : "BODY";

		//alert(topelement);
		//Amb això mirem a quin scroll de la pantalla hem apretat (per si hi han varios)
		for (i=0;i<miArr.length;i++)
		{
			if(fobj.className == miArr[i][6] || fobj.className == miArr[i][7] || fobj.className == miArr[i][9] || fobj.className == miArr[i][10])
			{
				//alert(fobj.className);
				indexClick = i;
			}
		}
		
		/*
		speed = vel;					//0
		VEL_CLICK_DOWN = velClick		//1
		speedBarra = velBarra;			//2
		idDivGeneral = DivGeneral;		//3
		idDivContainer = DivContainer;	//4
		idDivContent = DivContent;		//5
		idClickUp = up;					//6
		idClickDown = down;				//7
		scroll = scrollvar;				//8
		dragme = dragmevar;				//9
		barraScroll = barraScrollvar;	//10
		scrollBarra = scrollBarravar;	//11
		limitScrollSuperior;			//12
		bottomMax;						//13
		miArr[indexClick][]
		*/
		
		if (fobj.className==miArr[indexClick][9]) /* Fem click al objecte de class="dragme" (dragme) */
		{
			//alert("A");
			isdrag = true;
			dobj = fobj;
			tx = parseInt(dobj.style.left+0);
			ty = parseInt(dobj.style.top+0);
			x = nn6 ? e.clientX : event.clientX;
			y = nn6 ? e.clientY : event.clientY;
			document.onmousemove=movemouse;
			return false;
		}
		if ((fobj.className==miArr[indexClick][7]) || (fobj.className==miArr[indexClick][6])) /* Fem click al div de class=... (ClickDown - ClickUp) */
		{
			//alert("tx: "+tx+" - ty: "+ty+" - x: "+x+" - y: "+y);
			if (fobj.className==miArr[indexClick][6])
			{
				interval=setInterval(function(){click(-miArr[indexClick][0])},miArr[indexClick][1]);
				//click(-miArr[indexClick][0]);
			}
			else
			{
				interval=setInterval(function(){click(miArr[indexClick][0])},miArr[indexClick][1]);
				//click(miArr[indexClick][0]);
			}
			
			return false;
		}
		if (fobj.className==miArr[indexClick][10]) /* Fem click al objecte de class="barraScroll" (a la barra) */
		{
			// Mirem la altura on fem el click, per saber si hem de pujar o baixar
			var clickAltura = nn6 ? e.clientY : event.clientY;
			
			// A la altura del click, li restem la altura absoluta del div general, per a saber la altura relativa (del click) al div general.
			clickAltura = clickAltura - parseInt(document.getElementById(miArr[indexClick][3]).style.top);

			if (clickAltura<parseInt(document.getElementById(miArr[indexClick][9]).style.top))
			{
				//interval=setInterval(function(){click(-speedBarra)},VEL_CLICK_DOWN);
				click(-miArr[indexClick][2]);
			}
			else
			{
				//interval=setInterval(function(){click(speedBarra)},VEL_CLICK_DOWN);
				click(miArr[indexClick][2]);
			}
		}
	}
	
	
	function movemouse(e) /* Es mou la rata, ho cridem al fer click a dragme */
	{
		//alert("J");
		if (isdrag)
		{
			//dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
			yPos = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
			//alert(yPos);
			//alert("yPos: "+yPos+" - bottomMax: "+bottomMax);
			if ((yPos <= miArr[indexClick][13])&&(yPos >= miArr[indexClick][12]))
			{
				dobj.style.top  = yPos;
				moveY(-yPos);
				//document.getElementById("pos").innerHTML = yPos;
			}
        
			return false;
		}
	}
		/*
		speed = vel;					//0
		VEL_CLICK_DOWN = velClick		//1
		speedBarra = velBarra;			//2
		idDivGeneral = DivGeneral;		//3
		idDivContainer = DivContainer;	//4
		idDivContent = DivContent;		//5
		idClickUp = up;					//6
		idClickDown = down;				//7
		scroll = scrollvar;				//8
		dragme = dragmevar;				//9
		barraScroll = barraScrollvar;	//10
		scrollBarra = scrollBarravar;	//11
		limitScrollSuperior;			//12
		bottomMax;						//13
		miArr[indexClick][]
		*/
	function click(dir)
	{		
		//alert(miArr[indexClick][9]);
		yPos = parseInt(document.getElementById(miArr[indexClick][9]).style.top) + dir;

		if ((yPos>miArr[indexClick][13]) && (parseInt(document.getElementById(miArr[indexClick][9]).style.top)<miArr[indexClick][13]))
			yPos = bottomMax;
			
		if ((yPos<miArr[indexClick][12]) && (parseInt(document.getElementById(miArr[indexClick][9]).style.top)>miArr[indexClick][12]))
			yPos = miArr[indexClick][12];
		
		//alert(yPos);
		if ((yPos <= miArr[indexClick][13])&&(yPos >= miArr[indexClick][12]))
		{
			//alert(yPos);
			//dobj.style.top  += 1;
			document.getElementById(miArr[indexClick][9]).style.top = yPos+"px";
			
			moveY(-yPos);
			//document.getElementById("pos").innerHTML = yPos;
		}
	}


	
	
	function moveY(y) /*Funció que fa moure el text */
	{    
		//A causa del botó per pujar scroll...
		y=y+miArr[indexClick][12];
		
		//alert(y)
		y = y * (document.getElementById(miArr[indexClick][5]).offsetHeight-(document.getElementById(miArr[indexClick][4]).style.height.substring(0,document.getElementById(miArr[indexClick][4]).style.height.length-2))) / (document.getElementById(miArr[indexClick][4]).style.height.substring(0,document.getElementById(miArr[indexClick][4]).style.height.length-2) - document.getElementById(miArr[indexClick][9]).height );


		crossobj=document.getElementById(miArr[indexClick][5])


		//alert((document.getElementById(idDivContainer).style.height.substring(0,document.getElementById(idDivContainer).style.height.length-2) - document.getElementById('scroller').height));
		if (iens6&&parseInt(crossobj.style.top)<=0)
			crossobj.style.top=y+"px";
		else if (ns4&&crossobj.top<=0)
			crossobj.top = y;
	}

	
