// Dev-Tool
function debug(msg){if(debug.arguments.length==2){msg="<textarea rows=10 cols=20 style='width:600px;height:360px'>"+msg.escapeHTML()+"</textarea>";}try{
if(typeof w=="undefined"||w.closed){w=window.open('','w','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=640,height=400');w.moveTo(screen.availWidth-640,0);}
w.document.write(msg+"<br>");}catch(e){try{$('debug_container').innerHTML+=msg+"<br>";}catch(e){var div=document.createElement('div');div.id='debug_container';div.innerHTML=msg+'<br />';
document.body.appendChild(div);}}}function trace(o){var out="";var nofunctions=(trace.arguments.length==2&&trace.arguments[1]);try{for(z in o){
try{if(o[z]!=""&&o[z]!=null)if(z=="innerHTML"||z=="outerHTML")out+=z+" = [..HTML-Code..]; <br>\n";if(typeof o[z]=="function"&&nofunctions)continue;else out+=z+" = "+o[z]+"; <br>";}
catch(e){out+="<i>Fehler in "+z+": "+e+"</i><br />\n";}}}catch(ee){out+="<b>Fatal Error in tracing: "+ee+"</b>";}debug(out);}
///////////

var navDiv;
var pe, min_top;
function initNavigation() {
	/*navDiv=$("navigation");
	navDiv.makePositioned();
	
	Position.prepare();
	var offsets = Position.cumulativeOffset(navDiv);
	min_top = offsets[1];
	
	pe=new PeriodicalExecuter(setNavigation, 1/25);*/
	
	$$("#navigation li a").each(function(a){
		Event.observe(a, "click", initScrollTo, true);
	});
	$$("a.top").each(function(a){
		Event.observe(a, "click", initScrollTo, true);
	});
}
//Event.observe(window, "load", initNavigation);

function setNavigation() {
	Position.prepare();
	var offsets = Position.cumulativeOffset(navDiv);
	
	var scroll_offset = Position.deltaY;
	var delta = scroll_offset-(offsets[1]-min_top);
	
	var new_y=Math.max(0, scroll_offset-(delta*0.7));
	//debug((scroll_offset-(delta*0.7)-min_top));
	navDiv.setStyle({top: Math.round(new_y)+"px"});	
}

var scroll_target, scroll_pe, js_scrolling=false;
function initScrollTo(event) {
	try {
		var el=Event.element(event).up("a");
		el.blur();
		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(window, "load", initNavigation);
Event.observe(document, "mousedown", stopJSScroller);
Event.observe(document, "keydown", stopJSScroller);
Event.observe(document, "DOMMouseScroll", stopJSScroller);



