// D-designz scroller script v1.1
//  created by Chris Beaven
//   please contact chris at d-designz.co.nz to request to use this

var d = document;

function DD_ScrollBar(objectId, paddingRight, paddingBottom, hideLessThan) {
	var el=d.getElementById?d.getElementById(objectId):d.all?d.all[objectId]:d.layers[objectId];
	if(!el.style) el.style=el;
	el.paddingRight = paddingRight;
	el.paddingBottom = paddingBottom;
	el.hideLessThan = hideLessThan
	if (hideLessThan) el.style.display = 'block';
	el.findPadding=function(initial){
		if (this.paddingRight!=-1) {
			this.currentPaddingX = (this.offsetLeft ? this.offsetLeft : this.style.left) - (initial ? 0 : ((typeof(window.pageYOffset)=='number') ? window.pageXOffset : (d.documentElement&&d.documentElement.scrollLeft) ? d.documentElement.scrollLeft : d.body.scrollLeft));
			if (this.paddingRight||this.paddingRight==0)
				this.currentPaddingX = (this.offsetWidth ? (d.body.offsetWidth - this.offsetWidth) : (window.innerWidth - (d.width ? d.width : this.clip.width))) - this.currentPaddingX;
		}
		if (this.paddingBottom!=-1) {
			var offset = initial ? 0 : ((typeof(window.pageYOffset)=='number') ? window.pageYOffset : (d.documentElement&&d.documentElement.scrollTop) ? d.documentElement.scrollTop : d.body.scrollTop)
			this.currentPaddingY = (this.offsetTop ? this.offsetTop : this.style.top) - offset;
/**/
			//var x = d.documentElement.scrollTop;
			//d.getElementById('leftbar').innerHTML = 'o: '+ offset;	
/**/
			var hideme = this.style.display!='none';
			if (!initial && this.hideLessThan && offset < this.hideLessThan) {
				if (hideme) this.style.display = 'none';
				return;
			} else {
				if (!hideme) {
					this.currentPaddingY = offset;
					this.style.top = offset + 'px';
					this.style.display = 'block';
					return;
				}
				if (this.paddingBottom||this.paddingBottom==0) {
					var elHeight = this.offsetHeight ? (d.body.offsetHeight - this.offsetHeight) : (window.innerHeight - (d.height ? d.height : this.clip.height));
					this.currentPaddingY = elHeight - this.currentPaddingY;
				}
				if (initial&&this.hideLessThan) this.style.display = 'none';
			}
		}
		return 1;
	}
	el.findPadding(1);
	el.targetPaddingX = (paddingRight||paddingRight==0) ? paddingRight : el.currentPaddingX;
	el.targetPaddingY = (paddingBottom||paddingBottom==0) ? paddingBottom : el.currentPaddingY;
	el.checkLocation=function(){
		if (!this.findPadding()) return;
		if (this.paddingRight!=-1) {
			var alignX = (this.paddingRight||this.paddingRight==0) ? -1 : 1;
			this.style.left = ((this.offsetLeft ? this.offsetLeft : this.style.left) + (this.targetPaddingX - this.currentPaddingX) * alignX) + 'px';
		}
		if (this.paddingBottom!=-1) {
			var alignY = (this.paddingBottom||this.paddingBottom==0) ? -1 : 1;
			var differenceY = this.targetPaddingY - this.currentPaddingY;
			var speed = (differenceY < 0) ? 7 : 20;  // fast : slow
			this.style.top = ((this.offsetTop ? this.offsetTop : this.style.top) + (differenceY / speed * alignY)) + 'px';
		}
	}
	DD_ScrollBarLoop(objectId);
}

var DD_ScrollBars = new Array();
var DD_ScrollBarRunning = false;
function DD_ScrollBarLoop(scrollBar) {
	// adding or removing scroll bar
	if(scrollBar) {
		var scrollBar = d.getElementById?d.getElementById(scrollBar):d.all?d.all[scrollBar]:d.layers[scrollBar];
		var found = false;
		for (var i=0,j=0;i<DD_ScrollBars.length;i++,j++) {
			if (!found && DD_ScrollBars[i]==scrollBar) {found=true;j++};
			// squash it up (pre-remove)
			DD_ScrollBars[i] = DD_ScrollBars[j];
		}
		if (found)
			// remove
			DD_ScrollBars.length --;
		else {
			// add
			DD_ScrollBars[DD_ScrollBars.length] = scrollBar;
			if (!DD_ScrollBarRunning) {
				DD_ScrollBarRunning = true;
				DD_ScrollBarLoop();
			}
		}
	}
	// normal loop
	else {
		for (var i=0;i<DD_ScrollBars.length;i++) {
			DD_ScrollBars[i].checkLocation();
		}
		if (DD_ScrollBars.length == 0)
			DD_ScrollBarRunning = false;
		else
			setTimeout('DD_ScrollBarLoop()', 10);
	}
}