var _dQueue = null;
var _interval = null;
var _wPrev = 0;
var _wH = 0;
var isNav4, isIE4;
var NS6=document.getElementById&&!document.all?1:0
var NS4=document.layers?1:0

isNav4 = is_nav4up;
isIE4 = is_ie4up;

if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isNav4 = (navigator.appName == "Netscape") ? true : false;
  isIE4 = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
}

function getTop(layer){
	if(NS4){
		return layer.top;
	}
	else{
//		return layer.offsetTop;
		if(NS6){
		return layer.offsetTop;
		}
		else{
			return layer.style.pixelTop;
		}
	}
}

function realstart() {
}

function Drift() {
  this.min = false; this.max = false;
  this.tOffset = -.069; this.bOffset = 0;
  this.lOffset = 0; this.interval = 200;
  this.startDrift = startDrift;
  return this;
}
var prefs;

function startDrift(layer) {
//	alert('ivar');
  if(_wH == 0) { if( (isNav4)||(NS6) ) _wH = window.innerHeight; else _wH = document.body.clientHeight; }
//	alert("_wH="+_wH);
  layer.tOffset = getTop(layer);
//	alert("layer.tOffset="+layer.tOffset);   // dit is undefiend in NS6
  if(!this.interval) {
    prefs = new Drift();
	prefs.temp = true;
    } else prefs = this;
  layer.min = prefs.min;
  layer.max = prefs.max;
  if(prefs.tOffset != -.069) layer.tOffset = prefs.tOffset; // offset from top of window
  layer.bOffset = prefs.bOffset; // offset from bottom of window
  layer.lOffset = prefs.lOffset; // for nested layers
  if(_dQueue == null) _dQueue = new Array();
  _dQueue[_dQueue.length] = layer;
  if(_interval == null)  _interval = setInterval("checkDrift()", prefs.interval);

  if(prefs.temp) prefs = null;
  //alert("l.tO="+layer.tOffset+" p.tO"+prefs.tOffset);
  return (_dQueue.length-1);
}

var str, i, dTop, bottom;
function getClipHeight(layer) {
  if(NS4) return layer.clip.height;
  return layer.offsetHeight;
}
var layer, dst, wOff;
function checkDrift() {
	if(typeof(document)=="unknown")return;
  if(isNav4) wOff = window.pageYOffset;
  else wOff = document.body.scrollTop;
// alert("wOff="+wOff);//
	for(i = 0; i < _dQueue.length; i++) {
		layer = _dQueue[i];
		if(!layer) continue;
		//  alert("wOff="+wOff+" _wPrev="+_wPrev+" wH="+ _wH+" lO="+ layer.lOffset+" tO="+layer.tOffset+" top="+getTop(layer)+" height="+getClipHeight(layer)+" bO="+layer.bOffset);
		if(wOff > _wPrev) {
			// alert("getClipHeight(layer)="+getClipHeight(layer));
			if(getClipHeight(layer)+layer.bOffset+layer.tOffset > _wH) {
				if(wOff+_wH-layer.bOffset > getTop(layer)+layer.lOffset+getClipHeight(layer))
					dst = wOff+_wH-layer.lOffset-getClipHeight(layer)-layer.bOffset;
			} else dst = wOff-layer.lOffset+layer.tOffset;
		} else if(wOff < _wPrev) {
			if(getClipHeight(layer)+layer.bOffset+layer.tOffset <= _wH)
				dst = wOff-layer.lOffset+layer.tOffset;
			else if(wOff < getTop(layer)+layer.lOffset-layer.tOffset)
				dst = wOff-layer.lOffset+layer.tOffset;
		} 

		if(layer.max) if(dst > layer.max) dst = layer.max;
		if(layer.min || layer.min == 0)
			if(dst < layer.min) dst = layer.min; 

		if(dst || dst == 0) {
			//alert("goto "+ layer.id + " "+ dst);
			if(NS4) layer.top = dst;
			else if (NS6) layer.style.top = dst + "px";
			else layer.style.pixelTop = dst;
		}
	}
	_wPrev = wOff;
}
function stopDrift(id) { _dQueue[id] = null; }

