	function scrollerObj(id,contentObjName,upLimit,downLimit,step,wait,beadObjName,beadLength){
			this.lock = false
			this.id = id;
			this.content = eval(contentObjName);
			this.upLimit = upLimit;
			this.downLimit = downLimit;
			this.step = step;
			this.wait = wait
			if(beadObjName){
				this.bead = eval(beadObjName);
				this.beadStart = this.bead.y
				this.beadLength = beadLength
			}
			else{this.bead = false}
	}
		
		function scrollYahoo(dir){
			if((((this.content.y>this.downLimit) && (dir=="down"))||((this.content.y<this.upLimit) && (dir=="up"))) && !this.lock){
				var charge = (dir=="up")?1:-1;
				this.content.moveBy(0,charge*this.step);
				
				// use line below to show the y position in infoWindowDiv, this is a method to measure the height of a content block
				//infoWin.write(this.content.y);
				if(this.bead){this.spotBead()}
				var cmd = this.id + ".scroller.scroll('" + dir +"')";
				setTimeout(cmd,this.wait);
			}
		}
		
		function startScrollX(dir){
			this.lock = false;
			this.scroll(dir);
		}
		
		function stopScrollX(){
			this.lock = true;
		}
		
		function spotBeadX(){
			var pct = this.content.y/this.downLimit;
			var beadPos = (this.beadLength * pct) + this.beadStart;
			this.bead.moveTo(this.bead.x,beadPos);
		}
		
		scrollerObj.prototype.scroll = scrollYahoo;
		scrollerObj.prototype.startScroll = startScrollX;
		scrollerObj.prototype.stopScroll = stopScrollX;
		scrollerObj.prototype.spotBead = spotBeadX;