			var latency = 0;
			var progress = 0;
			var destinationX = 0;
			var scrollStep = 16;
			var lastXScroll = 0;
			_scrollTo = function(){
				var l = getScrollLeft();
				progress+=scrollStep;
				if(	l<destinationX && scrollStep>0 ||
					l>destinationX && scrollStep<0
					){
					window.scroll(progress,0);
					if(l != getScrollLeft()) setTimeout(_scrollTo, latency);
				}
				
			}
			getScrollTop = function(){
				if(document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop;
				return document.body.scrollTop;
			}

			getScrollLeft = function(){
				if(document.documentElement && document.documentElement.scrollLeft) return document.documentElement.scrollLeft;
				return document.body.scrollLeft;
			}
			
			function scrollToId(event){
				var a = _.Events.generator(event);
				var h = window.location.href;
				var i = a.href.indexOf('#');
				var anchor = a.href.substr(i+1);
				var p = _.DOM.position(_._id(anchor));
				
				destinationX = p.x;	
				progress = getScrollLeft();
				if(	(progress > p.x && scrollStep>0) ||
					(progress < p.x && scrollStep<0)
					) scrollStep = scrollStep*-1;
				setTimeout(_scrollTo,latency);
			}
			_.onStartup(
					function(){
						var links = _._name('a');
						for(var i=0;  i<links.length; i++){
							var h = window.location.href;
							var l = h.length;
							var lnk = links[i];
							var link = lnk.href; 
							if( link.substring(0, l) == h && link.indexOf('#')!=-1 ){
								
								lnk.onclick = function(){return false};
								_.Accessibility.clickEvent(lnk, scrollToId);
								
								
							}
						}
					});
