//=========================================================// Modificado para soportar IE5 y NS/Mozilla mejor. También se ha cambiado el csdigo para permitir scrollo vertical y horizontal// No se posiciona correctamente en Mozilla bajo Win2000.// Versión M - 21-02-2003-1//========================================================var flag_onclick = false;var Scroller = {	speed: 100,	aniLen: 1000,	minRes: 10,	ie4: navigator.appName == "Microsoft Internet Explorer" && !document.getElementById,	ns4: document.layers ? 1 : 0,	dom: document.getElementById ? 1 : 0,	mac: navigator.platform == "MacPPC",	mo5: navigator.userAgent.indexOf("Gecko") != -1,	dir:0,lastTime:0,aniTimer:0,dragActive:0,dragLastPos:0,dragStartOffset:0,	startPos:0,startTime:0,accel:0,endPos:0,dist:0}Scroller.init = function(id, orientation, ruta_simbolos){	with (this)	{		this.scrolldir = orientation;		this.lyrFrame = getLyr(id, document);		scrolldir == "Vert"?this.lyrScrollUp = getLyr("scrollUp", lyrFrame):this.lyrScrollLeft = getLyr("scrollLeft", lyrFrame);		scrolldir == "Vert"?this.lyrScrollDn = getLyr("scrollDn", lyrFrame):this.lyrScrollRight = getLyr("scrollRight", lyrFrame);		this.lyrContainer = getLyr("container", lyrFrame);		this.lyrContent = getLyr("content", lyrContainer);		this.lyrScrollbar = getLyr("scrollbar", lyrFrame);		this.lyrThumb = getLyr("thumb", lyrScrollbar);		scrolldir == "Vert"?this.lyrElevUp = getLyr("elevUp", lyrScrollbar):this.lyrElevLeft = getLyr("elevLeft", lyrScrollbar);		scrolldir == "Vert"?this.lyrElevDn = getLyr("elevDn", lyrScrollbar):this.lyrElevRight = getLyr("elevRight", lyrScrollbar);		scrolldir == "Vert"?this.imgPath = ruta_simbolos:this.imgPath = ruta_simbolos;		this.imgThumb1 = ypImage(imgPath + "thumb1.gif");		this.imgThumb2 = ypImage(imgPath + "thumb2.gif");				if(scrolldir == "Vert")		{			this.imgUp1 = ypImage(imgPath + "scrollUp1.gif");			this.imgUp2 = ypImage(imgPath + "scrollUp2.gif");			this.imgDn1 = ypImage(imgPath + "scrollDn1.gif");			this.imgDn2 = ypImage(imgPath + "scrollDn2.gif");		}		else		{			this.imgLeft1 = ypImage(imgPath + "scrollLeft1.gif");			this.imgLeft2 = ypImage(imgPath + "scrollLeft2.gif");			this.imgRight1 = ypImage(imgPath + "scrollRight1.gif");			this.imgRight2 = ypImage(imgPath + "scrollRight2.gif");		}				// calcula algunos valores		this.clipL = scrolldir == "Vert"?ns4?this.lyrContainer.clip.height:this.lyrContainer.offsetHeight:ns4?this.lyrContainer.clip.width:this.lyrContainer.offsetWidth;		this.scrollbarL = scrolldir == "Vert"?ns4?this.lyrScrollbar.clip.height:this.lyrScrollbar.offsetHeight : ns4?this.lyrScrollbar.clip.width:this.lyrScrollbar.offsetWidth;		this.thumbL = scrolldir == "Vert"? ns4?this.lyrThumb.clip.height:this.lyrThumb.offsetHeight : ns4?this.lyrThumb.clip.width:this.lyrThumb.offsetWidth;		this.thumbMax = scrollbarL - thumbL;		this.scrollTop = this.lyrScrollbar.s.top;		this.scrollLeft = this.lyrScrollbar.s.left;//		this.scrollTop = this.lyrScrollbar.s.top;//		this.scrollLeft = this.lyrScrollbar.s.left;		this.scrollTop = "";		this.scrollLeft = "";		this.docL	= scrolldir == "Vert"?Math.max(ns4 ? lyrContent.document.height : lyrContent.offsetHeight, clipL):Math.max(ns4 ? lyrContent.document.width : lyrContent.offsetWidth, clipL)		this.scrollL = docL - clipL				if (this.docL > clipL)		{					lyrThumb.onmousedown = startDrag			lyrThumb.onmouseover = function() { Scroller.toggleThumb(true) }			lyrThumb.onmouseout  = function() { Scroller.toggleThumb(false) }			lyrThumb.ondragstart = function() { return false; }						if(scrolldir == "Vert")			{				lyrScrollDn.onmouseover = function() { Scroller.toggleButton("Dn", 2); Scroller.startScroll('+'); Scroller.speed = 50; return false }				lyrScrollDn.onmousedown = function() { Scroller.toggleButton("Dn", 2); Scroller.startScroll('+'); if (flag_onclick) { Scroller.speed = 100; flag_onclick = false; } else { flag_onclick=true; Scroller.speed = 300; };  return false }				lyrScrollDn.onmouseup = function() { Scroller.toggleButton("Dn", 2);  }				lyrScrollDn.onmouseout = function() { Scroller.toggleButton("Dn", 1); Scroller.endScroll(); }				lyrScrollUp.onmouseover = function() { Scroller.toggleButton("Up", 2); Scroller.startScroll('-'); Scroller.speed = 50; return false }				lyrScrollUp.onmousedown = function() { Scroller.toggleButton("Up", 2); Scroller.startScroll('-'); if (flag_onclick) { Scroller.speed = 100; flag_onclick = false; } else { flag_onclick=true; Scroller.speed = 300; }; return false }				lyrScrollUp.onmouseup = function() { Scroller.toggleButton("Up", 2);  }				lyrScrollUp.onmouseout = function() { Scroller.toggleButton("Up", 1); Scroller.endScroll()}			}			else			{//				lyrScrollRight.onmouseover = function() { Scroller.toggleButton("Right", 2); }//				lyrScrollRight.onmousedown = function() { Scroller.toggleButton("Right", 2); Scroller.startScroll('+'); Scroller.speed = 100; return false }//				lyrScrollRight.onmouseup = function() { Scroller.toggleButton("Right", 2); Scroller.endScroll(); }//				lyrScrollRight.onmouseout = function() { Scroller.toggleButton("Right", 1); }//				lyrScrollLeft.onmouseover = function() { Scroller.toggleButton("Left", 2); }//				lyrScrollLeft.onmousedown = function() { Scroller.toggleButton("Left", 2); Scroller.startScroll('-');Scroller.speed = 100; return false }//				lyrScrollLeft.onmouseup = function() { Scroller.toggleButton("Left", 2); Scroller.endScroll() }//				lyrScrollLeft.onmouseout = function() { Scroller.toggleButton("Left", 1);}				lyrScrollRight.onmouseover = function() { Scroller.toggleButton("Right", 2); Scroller.startScroll('+'); Scroller.speed = 50; return false }				lyrScrollRight.onmousedown = function() { Scroller.toggleButton("Right", 2); Scroller.startScroll('+'); if (flag_onclick) { Scroller.speed = 100; flag_onclick = false; } else { flag_onclick=true; Scroller.speed = 300; };  return false }				lyrScrollRight.onmouseup = function() { Scroller.toggleButton("Right", 2);  }				lyrScrollRight.onmouseout = function() { Scroller.toggleButton("Right", 1); Scroller.endScroll(); }				lyrScrollLeft.onmouseover = function() { Scroller.toggleButton("Left", 2); Scroller.startScroll('-'); Scroller.speed = 50; return false }				lyrScrollLeft.onmousedown = function() { Scroller.toggleButton("Left", 2); Scroller.startScroll('-'); if (flag_onclick) { Scroller.speed = 100; flag_onclick = false; } else { flag_onclick=true; Scroller.speed = 300; }; return false }				lyrScrollLeft.onmouseup = function() { Scroller.toggleButton("Left", 2);  }				lyrScrollLeft.onmouseout = function() { Scroller.toggleButton("Left", 1); Scroller.endScroll()}			}						// inicializa algunos parametros			scrolldir == "Vert"?lyrThumb.s.top = 0 : lyrThumb.s.left = 0;						// ns4			if (document.layers) { 				lyrThumb.captureEvents(Event.MOUSEDOWN)								if(scrolldir == "Vert"){					lyrElevDn.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE)					lyrElevUp.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE)					lyrScrollUp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)					lyrScrollDn.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)				}else{					lyrElevRight.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE)					lyrElevLeft.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE)					lyrScrollLeft.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)					lyrScrollRight.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)				}			}		} 		else 		{			this.lyrScrollbar.s.visibility = 'hidden';			this.scrolldir == "Vert"? this.lyrScrollUp.s.visibility = this.lyrScrollDn.s.visibility = 'hidden': this.lyrScrollLeft.s.visibility = this.lyrScrollRight.s.visibility = 'hidden';		}		this.loaded = true	}}Scroller.startScroll = function(dir){	if (this.aniTimer) window.clearTimeout(this.aniTimer)	this.dir = dir	this.lastTime = (new Date()).getTime() - this.minRes	this.startPos = Scroller.scrolldir == "Vert"?this.scrollTop : this.scrollLeft;	this.aniTimer = window.setTimeout("Scroller.scroll()", this.minRes)}Scroller.scroll = function() {	this.aniTimer = window.setTimeout("Scroller.scroll()", this.minRes)	var now	= (new Date()).getTime()	var elapsed = now - this.lastTime		var ny = Scroller.scrolldir == "Vert"?eval(this.scrollTop + this.dir + (elapsed * this.speed / 1000)):eval(this.scrollLeft + this.dir + (elapsed * this.speed / 1000));	this.lastTime = now	if (ny > this.scrollL && this.dir == "+" || ny < 0 && this.dir == "-") {		this.endScroll()		this.jumpTo(this.dir == "+" ? this.scrollL : 0)	}	else this.jumpTo(ny)}Scroller.endScroll = function(){	if (this.aniTimer) this.aniTimer = window.clearTimeout(this.aniTimer)}Scroller.startDrag = function(e){	if (!e) e = window.event	with (Scroller) {		if (aniTimer) window.clearTimeout(aniTimer)		var ey = scrolldir == "Vert"?e.pageY ? e.pageY : e.y:e.pageX ? e.pageX : e.x;		dragLastPos = ey		dragStartOffset = scrolldir == "Vert"?ey - parseInt(lyrThumb.s.top):ey - parseInt(lyrThumb.s.left);		dragActive = true		if (ns4) window.document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)		window.document.onmousemove = doDrag		window.document.onmouseup = stopDrag	}	return false}Scroller.doDrag = function(e){	if (!e) e = window.event	var s  = Scroller	var ey = s.scrolldir == "Vert"?(e.pageY ? e.pageY : e.y):(e.pageX ? e.pageX : e.x);	var dy = ey - s.dragLastPos	var ny = s.scrolldir == "Vert"?parseInt(Scroller.lyrThumb.s.top) + dy : parseInt(Scroller.lyrThumb.s.left) + dy; 	if (ny >= s.thumbMax) s.dragLastPos = s.thumbMax + s.dragStartOffset	else if (ny < 0) s.dragLastPos = s.dragStartOffset	else s.dragLastPos = ey	ny = Math.min(Math.max(ny, 0), s.thumbMax)	s.jumpTo(ny * s.scrollL / s.thumbMax)	return false;}Scroller.stopDrag = function(){	Scroller.dragActive = false	Scroller.toggleThumb(false)	if (Scroller.ns4) window.document.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP)	window.document.onmousemove = null	window.document.onmouseup   = null} Scroller.slideTo = function(e){	if (!e) e = window.event	var ey = Scroller.scrolldir == "Vert"?e.offsetY ? e.offsetY : e.layerY : e.offsetX ? e.offsetX : e.layerX;	if (typeof ey == "undefined") ey = 0;		var ny = Scroller.scrolldir == "Vert"?(this.id == "elevDn") ? ey - Scroller.thumbL : ey : (this.id == "elevRight") ? ey - Scroller.thumbL : ey;	ny += Scroller.scrolldir == "Vert"?this.s.top == "" ? 0 : parseInt(this.s.top) : this.s.left == "" ? 0 : parseInt(this.s.left);	ny *= Scroller.scrollL / Scroller.thumbMax;	ny = Math.min(ny, Scroller.scrollL);	with (Scroller)	{		if (aniTimer) aniTimer = window.clearInterval(aniTimer)		startTime = (new Date()).getTime()		startPos = scrolldir == "Vert"? scrollTop : scrollLeft;		endPos = ny		dist = endPos - startPos		accel = dist / 1000 / 1000				aniTimer = window.setInterval("Scroller.slide()", 10)	}}Scroller.slide = function(){	with (this)	{		var now = (new Date()).getTime()		var elapsed = now - startTime		if (elapsed > 1000) endScroll()		else		{			var t = 1000 - elapsed			var ny = endPos - t * t * accel			jumpTo(ny)		}	}}Scroller.jumpTo = function(ny){	var thumbPos = ny * this.thumbMax / this.scrollL ;			if(this.scrolldir == "Vert")	{		this.lyrElevUp[document.layers ? "clip" : "style"].height = thumbPos;		this.lyrElevDn[document.layers ? "clip" : "style"].height = this.scrollbarL - thumbPos + 1;		this.lyrElevDn.s.top = thumbPos ;		this.lyrThumb.s.top = thumbPos ;		this.lyrContent.s.top = -ny ;		this.scrollTop = ny ;//		this.lyrThumb.s.left = Math.round(30 - ny * (30/this.scrollL));		this.lyrThumb.s.left = 0;	}	else	{		this.lyrElevLeft[document.layers ? "clip" : "style"].width = thumbPos;		this.lyrElevRight[document.layers ? "clip" : "style"].width = this.scrollbarL - thumbPos + 1;		this.lyrElevRight.s.left = thumbPos;		this.lyrThumb.s.left = thumbPos;		this.lyrContent.s.left = -ny;		this.scrollLeft = ny;	}}Scroller.toggleThumb = function(bOn){	var img = this.getFirstImage(this.lyrThumb)	img.src = !bOn && !this.dragActive ? this.imgThumb1.src : this.imgThumb2.src}Scroller.toggleElev = function(lyr, iState){	with (this)	{		var img = eval("imgElevBack" + iState)		if (!dragActive && !ns4) lyr.s.backgroundImage = "url("+img.src+")"	}}Scroller.toggleButton = function(suffix, iState){	var lyr = eval("Scroller.lyrScroll" + suffix)	var img = this.getFirstImage(lyr)	img.src = Scroller.imgPath+"scroll"+suffix+iState+".gif"}Scroller.getLyr = function(sLyrId, oNestRef){	var o;	if(document.getElementById) o = document.getElementById(sLyrId);	else if (document.all) o = oNestRef.all[sLyrId];	else if (document.layers) o = oNestRef.layers[sLyrId];	document.layers ? o.s = o : o.s = o.style	return o}Scroller.getFirstImage = function(lyr){	return document.layers ? lyr.document.images[0] : document.all ? lyr.all.tags("IMG")[0] : lyr.getElementsByTagName("IMG")[0]}function ypImage(s){	var oImg  = new Image()	oImg.src = s	return oImg}