var navDiv;
var pe, min_top;
function initNavigation() {
	$$("#navigation li a").each(function(a){
		Event.observe(a, "click", initScrollTo, true);
	});
	$$("a.top").each(function(a){
		Event.observe(a, "click", initScrollTo, true);
	});
}

var scroll_target, scroll_pe, last_clicked_a, js_scrolling=false;
function initScrollTo(event) {
	try {
		var el=Event.element(event);
		try {
			el.blur();
		} catch(er) {}
		
		if (el.tagName.toUpperCase()!="A") {
			el=el.up("a");
		}
		el.blur();
		if (!el.hasClassName("top")) {
			if (!el.hasClassName("_child_")) {
				$$("#navigation li.sel").invoke("removeClassName", "sel");
			}
			else {
				$$("#navigation li li.sel").invoke("removeClassName", "sel");
			}
			el.up("li").addClassName("sel");
		}
		var anchor_name = el.readAttribute("href").substr(1);
		var anchor_element = $$("[name="+anchor_name+"]").find(function(e){
			if (e.readAttribute("name")==anchor_name) return true;
			return false;
		});
		if (typeof anchor_element == "undefined") {
			anchor_element = $(anchor_name);
			if (typeof anchor_element == "undefined") {
				throw new Error("Anker nicht gefunden");
			}
		}
	}
	catch(e) { return; }
	
	//scroll_target = (Browser.name=="msie" && Browser.version < 8) ? Position.positionedOffset($(anchor_element))[1] : Position.cumulativeOffset($(anchor_element))[1];
	scroll_target = Position.cumulativeOffset($(anchor_element))[1];
	scroll_target += (Prototype.Browser.IE) ? 5 : 0;
	
	js_scrolling = true;
	var y_add = 0;
   scroll_pe = new PeriodicalExecuter(function(s_pe){
   	Position.prepare();
		var diff_y = scroll_target-Position.deltaY;
		var raw_add=diff_y*0.25;
		var my_y_add = Math.round(raw_add + y_add);
		y_add = raw_add - Math.round(my_y_add);
		
		if ( Math.abs(raw_add)<1) {
			window.scrollTo(Position.deltaX, scroll_target);
			js_scrolling=false;
			s_pe.stop();
			return;
		}
		window.scrollTo(Position.deltaX, Position.deltaY+my_y_add);
		
	}, 1/25);
	Event.element(event).blur();
	// vielleicht unnötig, da capture beim INIT aktiviert ist
	Event.stop(event);
}
function stopJSScroller(event) {
	if (js_scrolling) {
		js_scrolling=false;
		scroll_pe.stop();
	}
}

Event.observe(document, "dom:loaded", initNavigation);
Event.observe(document, "mousedown", stopJSScroller);
Event.observe(document, "keydown", stopJSScroller);
Event.observe(document, "DOMMouseScroll", stopJSScroller);



