/**
 * Este codigo fuente es propiedad de quatredevirtual S.L.
 * No se autoriza el uso, reproducción, modificación y/o distribución sin autorización
 * explícita y por escrito de la empresa.
 **/
// VARIABLES DE FUNCIONAMIENTO
//indica si se está haciendo scroll
var loop = 0;
//paso en píxels cuando se hace scroll
var step = 0;
//número de pasadas, usado para acelerar el scroll
var passes = 0;
//indica si se está haciendo scroll con la scrollbar
var scrolling = false;
//máxima altura que tendrá el TD que contiene el div
var maxHeight = 150;
//factor de multiplicadión de la scrollbar y el div, inicializado a 1, pero hay que llamar a setFactor en onLoad
var factor = -1;
//id de la scrollbar
var scrollbarId = "_miScBar";
//id del div que hay que mover
var targetDivId;
// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0
var lastY;
// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;
document.onmouseup = disableScrolling;

function drawScrollDownBtn(btnImgOn, btnImgOff, targetDiv){
  document.write('<a href="#" onMousedown="beginScrollDown(' + "'" + targetDiv + "'" +');" onMouseOut="stopLoop();document.getElementById(\'scbarBtnDown\').src=\'' + btnImgOff + '\';" onMouseup="stopLoop();" onMouseOver="document.getElementById(\'scbarBtnDown\').src=\'' + btnImgOn + '\'">');
  document.write('<img id="scbarBtnDown" src="' + btnImgOff + '" border="0">');
  document.write("</a>");
	targetDivId = targetDiv;
}
function drawScrollUpBtn(btnImgOn, btnImgOff, targetDiv){
  document.write('<a href="#" onMousedown="beginScrollUp(' + "'" + targetDiv + "'" +');" onMouseOut="stopLoop();document.getElementById(\'scbarBtnUp\').src=\'' + btnImgOff + '\';" onMouseup="stopLoop();" onMouseOver="document.getElementById(\'scbarBtnUp\').src=\'' + btnImgOn + '\';">');
  document.write('<img id="scbarBtnUp" src="' + btnImgOff + '" border="0">');
  document.write("</a>");
	targetDivId = targetDiv;
}

function drawScrollBar(scrollImage, targetDiv, height){
	var scbar = '<div onselectstart="return false" id="' + scrollbarId + '" style="position:relative;border:0px solid;top:0px;width:10px;height:10px;background-image:url(' + scrollImage + ')" onMouseDown="beginScrollBar();" onMouseUp="scrolling=false;"></div>';
	maxHeight = height;
	document.write(scbar);
	targetDivId = targetDiv;
}

/**
 * Arranca el scroll por botón hacia arriba
 */
function beginScrollUp(targetName){
  var target = document.getElementById(targetName);
  if(target == null) return false;
	step = -1;
	loop = 1;
	//esto en opera target.scrollTo(0, 100);
	target.scrollTop = target.scrollTop + step;
	setTimeout("doLoop('" + targetName + "');",100);
}
/**
 * Arranca el scroll por botón hacia abajo
 */
function beginScrollDown(targetName){
  var target = document.getElementById(targetName);
  if(target == null) return false;
  step = 1;
	loop = 1;
	//esto en opera target.scrollTo(0, 100);
	target.scrollTop = target.scrollTop + step;
	setTimeout("doLoop('" + targetName + "');",100);
}
/**
 * Da una vuelta más del scroll de botón que se esté haciendo
 */
function doLoop(targetName){
  var target = document.getElementById(targetName);
  if(target == null) return false;
  if(loop == 1){
	passes++;
	if(passes = 1000){
	  step = 1.05 * step;
	  passes = 0;
	}
  target.scrollTop = target.scrollTop + step;
	//mover también la barra del scroll
	document.getElementById(scrollbarId).style.top = (target.scrollTop / getFactor()) + "px";
	setTimeout("doLoop('" + targetName + "');",30);
  }
}
/**
 * Para el scroll de botón que se esté haciendo
 */
function stopLoop(){
  loop = 0;
  passes = 0;
}
/**
 * Inicia el scroll mediante la barra
 */
function beginScrollBar(){
  var target = document.getElementById(scrollbarId);
  lastY = tempY;
  scrolling = true;
}
/**
 * Para el scroll que se estaba haciendo mediante la barra
 */
function disableScrolling(){
  scrolling = false;
}

/**
 * Mueve la scrollbar la mover el mouse
 */
function doScrollBar(){
  if (scrolling){
    var target = document.getElementById(scrollbarId);
	  //calcular el movimiento
    var diff = tempY - lastY;
	  lastY = tempY;
		var divPos = parseInt(target.style.top+0);
		var divHeight = parseInt(target.style.height+0);
		//comprobar que la nueva posición estará dentro del rango
		if(divPos + diff >= 0 && (divPos + diff + divHeight)< maxHeight){
			target.style.top = (divPos + diff) + "px";
			document.getElementById(targetDivId).scrollTop = (divPos + diff) * getFactor();
		}else{
			if(divPos > maxHeight){
				target.style.top = maxHeight + "px";
			}else if (divPos < 0){
				target.style.top = "0px";
			}
		}
  }
}

/**
 * Da el valor correcto al factor
 */
 function getFactor(){
	 if(factor <= 0){
		 var targetDiv = document.getElementById(targetDivId);
		 var divHeight = parseInt(targetDiv.style.height+0);
		 var divScrollHeight = targetDiv.scrollHeight;
	   factor = (divScrollHeight - divHeight) / (maxHeight - 10) ;
	 }
	 return factor;
 }

// Main function to retrieve mouse x-y pos.s
function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  if(scrolling){
    doScrollBar();
  }
  return true
}