//=========================================================// by dverdade.com.br// scroller ver/hoz
// allow vertical or horizontal scrolling// based on ypSimpleScroll.js//// ago/2005//=========================================================// coments: // support IE 5 and NS/Moz// Not work correctly://    position - win/2000
//    arrows - NS7/Mac
////========================================================
// last modification:
// for: iaclinteriores.com.br
// set/2005//========================================================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) {	with (this) {		// which way am I scrolling?		this.scrolldir = orientation;				// gather pieces		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);		this.lyrMarker			= getLyr("marker", 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.lyrThumbArrowUp = getLyr("thumbArrowUp", lyrScrollbar):this.lyrThumbArrowLeft = getLyr("thumbArrowLeft", lyrScrollbar);		scrolldir == "Vert"?this.lyrThumbArrowDn = getLyr("thumbArrowDn", lyrScrollbar):this.lyrThumbArrowRight = getLyr("thumbArrowRight", lyrScrollbar);		scrolldir == "Vert"?this.imgPath = "figs/vert/":this.imgPath = "figs/horiz/";				this.imgElevBack1 = ypImage(imgPath + "elevator1.gif");		this.imgElevBack2 = ypImage(imgPath + "elevator2.gif");		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");			this.imgMark = ypImage(imgPath + "marker.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");			this.imgMark = ypImage(imgPath + "marker.gif");		}				// calculate some values		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.thumbL = 50;		this.thumbMax = scrollbarL - thumbL;		this.scrollTop = this.lyrScrollbar.s.top;		this.scrollLeft = this.lyrScrollbar.s.left;		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		//dbg(lyrThumb);				if (this.docL > clipL) {			// hook events						//lyrFrame.onmousewheel   = function() { Scroller.wheelScroll() }			lyrThumb.onmousedown    = startDrag			lyrThumb.onmouseover    = function() { Scroller.toggleThumb(true) }			lyrThumb.onmouseout     = function() { Scroller.toggleThumb(false) }			lyrThumb.ondragstart	= function() { return false; }						if(scrolldir == "Vert"){				lyrElevUp.onmousedown = slideTo				lyrElevDn.onmousedown = slideTo				lyrElevUp.onmouseover = function() { Scroller.toggleElev(Scroller.lyrElevUp, 2) }				lyrElevUp.onmouseout = function() { Scroller.toggleElev(Scroller.lyrElevUp, 1) }				lyrElevDn.onmouseover = function() { Scroller.toggleElev(Scroller.lyrElevDn, 2) }				lyrElevDn.onmouseout = function() { Scroller.toggleElev(Scroller.lyrElevDn, 1) }				lyrScrollDn.onmouseover = function() { Scroller.toggleButton("Dn", 2); }				lyrScrollDn.onmousedown = function() { Scroller.toggleButton("Dn", 2); Scroller.startScroll('+'); Scroller.speed = 100; return false }				lyrScrollDn.onmouseup = function() { Scroller.toggleButton("Dn", 2); Scroller.endScroll(); }				lyrScrollDn.onmouseout = function() { Scroller.toggleButton("Dn", 1); }				lyrScrollUp.onmouseover = function() { Scroller.toggleButton("Up", 2); }				lyrScrollUp.onmousedown = function() { Scroller.toggleButton("Up", 2); Scroller.startScroll('-');Scroller.speed = 100; return false }				lyrScrollUp.onmouseup = function() { Scroller.toggleButton("Up", 2); Scroller.endScroll() }				lyrScrollUp.onmouseout = function() { Scroller.toggleButton("Up", 1);}			}else{				lyrElevLeft.onmousedown = slideTo				lyrElevRight.onmousedown = slideTo				lyrElevLeft.onmouseover = function() { Scroller.toggleElev(Scroller.lyrElevLeft, 2) }				lyrElevLeft.onmouseout = function() { Scroller.toggleElev(Scroller.lyrElevLeft, 1) }				lyrElevRight.onmouseover = function() { Scroller.toggleElev(Scroller.lyrElevRight, 2) }				lyrElevRight.onmouseout = function() { Scroller.toggleElev(Scroller.lyrElevRight, 1) }				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);}			}						// initialize some settings			scrolldir == "Vert"?lyrThumb.s.top = 0 : lyrThumb.s.left = 0;						// ns4 bullshit.			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';		}				// all done!		this.loaded = true			}				//alert(Scroller.clipL + "\n" + Scroller.scrollbarL + "\n" + Scroller.thumbL + "\n" + Scroller.thumbMax + "\n" + Scroller.scrollTop + "\n" + Scroller.scrollLeft);}Scroller.wheelScroll = function() {//	if (!e) e = window.event//		var dir = e.wheelDelta;		//		alert(dir);}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;	// constrain	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.positionThumbArrows = function(ny) {	this.scrolldir == "Vert"?this.lyrThumbArrowUp.s.top = ny - 6 :this.lyrThumbArrowLeft.s.left = ny - 5	this.scrolldir == "Vert"?this.lyrThumbArrowDn.s.top = ny + 51 : this.lyrThumbArrowRight.s.left = ny + 51}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}// slideTo gets called in the scope of lyrElevUp or lyrElevDn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.positionThumbArrows(ny * this.thumbMax / this.scrollL);		this.scrollTop = ny;	}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.positionThumbArrows(ny * this.thumbMax / this.scrollL);		this.scrollLeft = ny;	}}Scroller.toggleThumb = function(bOn) {	var img = this.getFirstImage(this.lyrThumb)	img.src = !bOn && !this.dragActive ? this.imgThumb1.src : this.imgThumb2.src	if (!bOn && !this.dragActive) this.toggleThumbArrows(false)	else {		Scroller.scrolldir == "Vert"?this.positionThumbArrows(parseInt(this.lyrThumb.s.top)) : this.positionThumbArrows(parseInt(this.lyrThumb.s.left));		this.toggleThumbArrows(true)	}}Scroller.toggleThumbArrows = function(bOn) {	Scroller.scrolldir == "Vert"?this.lyrThumbArrowUp.s.visibility = bOn ? "visible" : "hidden" : this.lyrThumbArrowLeft.s.visibility = bOn ? "visible" : "hidden"	Scroller.scrolldir == "Vert"?this.lyrThumbArrowDn.s.visibility = bOn ? "visible" : "hidden" : this.lyrThumbArrowRight.s.visibility = bOn ? "visible" : "hidden"}Scroller.toggleElev = function(lyr, iState) {	with (this) {		var img = eval("imgElevBack" + iState)		if (!dragActive && !ns4) lyr.s.backgroundImage = "url("+img.src+")"		lyr.onmousemove = iState == 2 ? moveMarker : null		if (iState == 1) lyrMarker.s.visibility = "hidden"	}}Scroller.moveMarker = function(e) {	with (Scroller) {			if (!lyrThumb.active) {			if (!e) e = window.event			var ey = scrolldir == "Vert"?e.layerY ? e.layerY : e.offsetY : e.layerX ? e.layerX : e.offsetX			if (isNaN(ey)) ey = 0			var ny = Math.round(ey / 2) * 2			ny += scrolldir == "Vert"?(this.s.top == "" ? 0 : parseInt(this.s.top)) : (this.s.left == "" ? 0 : parseInt(this.s.left))			ny -= 2			scrolldir == "Vert"?lyrMarker.s.top = ny:lyrMarker.s.left = ny			lyrMarker.s.visibility = "visible"		}	}}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];			//alert(sLyrId);		document.layers ? o.s = o : o.s = o.style		//alert(sLyrId);		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}function dbg(obj) {	var w = window.open("","","width=400,height=300,resizable");		w.document.open();		w.document.write("<textarea style='position:absolute; width:90%; height:90%;'>");		for (prop in obj) w.document.write(prop + " : " + obj[prop] + "\n");		w.document.write("<\/textarea>");		w.document.close();		w.focus();}