//used to calculate scrolling and height

var navTracer = {
	elements:[],
    scrollTop:0,
	timeout:null,
	loop: function(){
		var _oScrollElm = ((document.compatMode)? document.compatMode.indexOf('CSS1Compat') < 0 : true)? document.body : document.documentElement;
		if ( _oScrollElm )
		{
			var scrollTop = _oScrollElm.scrollTop;
			
			if(navTracer.scrollTop != scrollTop && navTracer.elements.length){
				navTracer.scrollTop = scrollTop;
				clearTimeout(navTracer.timeout);
				navTracer.timeout = setTimeout(navTracer.scroll,250);
			}
		}
	},
	scroll: function(){
		var _oScrollElm = ((document.compatMode)? document.compatMode.indexOf('CSS1Compat') < 0 : true)? document.body : document.documentElement;
		if(navTracer.elements.length){
			var elm, i = 0;
			for(i = 0; i < navTracer.elements.length; i++){
				elm = navTracer.elements[i];
				if(!elm || elm.offsetWidth==0) continue;
				if(!elm.orgTop){
					var oBox = bpc.getSize(elm);
					elm.orgTop = oBox.y;
					elm.orgLeft = oBox.x;
					elm.style.position = 'absolute';
				}
				if(elm.orgTop < navTracer.scrollTop)
					bpc.execute('<s:fxstyle b:top="'+((elm.orgLeft+_oScrollElm.scrollTop)-elm.orgTopind)+'px" b:motion="exp" />',elm);
				else
					bpc.execute('<s:fxstyle b:top="' + elm.orgTop + 'px" b:motion="exp" />',elm);
			}
		}
	},
	addElement: function(elm){
		var oldelm, i = 0;
		while(oldelm = navTracer.elements[i++]){
			if(oldelm==elm)return;
		}
		navTracer.elements[navTracer.elements.length] = elm;
	},
	removeElement: function(elm){
		for(var i = 0; i < navTracer.elements.length; i++){
			if(navTracer.elements[i]==elm) navTracer.elements.splice(i,1);
		}
	}
}

setInterval(navTracer.loop, 20);
