var finalColorR = 255;
var finalColorG = 255;
var finalColorB = 255;

var startColorR = 210;
var startColorG = 0;
var startColorB = 0;

var curColorR = 210;
var curColorG = 0;
var curColorB = 0;

var steps = 30;
var curStep = 0;
var intHandle;
var linkIDg = "link1";

function mouseOverLink(event)
{
	if ( navigator.userAgent.indexOf("MSIE 5") > -1 ) return;
	var linkID = (event.srcElement) ? event.srcElement : event.currentTarget;
	linkID = linkID.id;
	document.getElementById(linkIDg).style.backgroundColor = "transparent";
	curColorR = startColorR;
	curColorG = startColorG;
	curColorB = startColorB;
	linkIDg = linkID;
	curStep = 0;
	clearInterval(intHandle);
	intHandle = setInterval(mouseoverInt, 10);

}

function mouseoverInt()
{
	var Rcol;
	var Bcol;
	var Gcol;
	Rcol = Math.round((finalColorR - curColorR)/steps);
	Bcol = Math.round((finalColorB - curColorB)/steps);
	Gcol = Math.round((finalColorG - curColorG)/steps);
	curColorR = curColorR + Rcol;
	curColorB = curColorB + Bcol;
	curColorG = curColorG + Gcol;
	Rcol = (curColorR < 16) ? ("0" + curColorR.toString(16)) : curColorR.toString(16);
	Gcol= (curColorG < 16) ? ("0" + curColorG.toString(16)) : curColorG.toString(16);
	Bcol = (curColorB < 16) ? ("0" + curColorB.toString(16)) : curColorB.toString(16);
	document.getElementById(linkIDg).style.backgroundColor="#" + Rcol + Gcol + Bcol;
	curStep++;
	if (curStep == steps) 
	{
		clearTimeout(intHandle);
	}
}

function mouseOutLink(event)
{
	if ( navigator.userAgent.indexOf("MSIE 5") > -1 ) return;
	var linkID = (event.srcElement) ? event.srcElement : event.currentTarget;
	linkID = linkID.id;
	linkIDg = linkID;
	clearTimeout(intHandle);
	curStep = 0;
	intHandle = setInterval(mouseoutInt, 10);

}

function mouseoutInt()
{
	var Rcol;
	var Bcol;
	var Gcol;
	Rcol = Math.round((curColorR - startColorR)/steps);
	Bcol = Math.round((curColorB - startColorB)/steps);
	Gcol = Math.round((curColorG - startColorG)/steps);
	curColorR = curColorR - Rcol;
	curColorB = curColorB - Bcol;
	curColorG = curColorG - Gcol;
	Rcol = (curColorR < 16) ? ("0" + curColorR.toString(16)) : curColorR.toString(16);
	Gcol= (curColorG < 16) ? ("0" + curColorG.toString(16)) : curColorG.toString(16);
	Bcol = (curColorB < 16) ? ("0" + curColorB.toString(16)) : curColorB.toString(16);
	document.getElementById(linkIDg).style.backgroundColor="#" + Rcol + Gcol + Bcol;
	curStep++;
	if (curStep == steps) 
	{
		clearTimeout(intHandle);
		document.getElementById(linkIDg).style.backgroundColor = "transparent";
	}

}

/******************************************************************/
/****************** Credits an John Resig *************************/
/***** http://ejohn.org/projects/flexible-javascript-events/ ******/
/******************************************************************/

function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
	return true;
  } 
  else
  {
    obj.addEventListener( type, fn, false );
	return true;
  }
  return false;
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}

/******************************************************************/
/********************* Credits ENDE *******************************/
/******************************************************************/

function addClass(obj, newClassName)
{
	if ( obj === null ) return;
	if ( obj.className === "" ) 
		return (obj.className = newClassName);
	else
		return (obj.className += " " +newClassName);
}
function removeClass(obj, classNameRemove)
{
	if ( obj === null ) return;
	if ( obj.className.indexOf(" ") === -1 )
	{
		obj.className = "";
	}
	else
	{
		var classes = obj.className.split(" ");
		var classReplaceString = "";
		for ( var i = 0; i < classes.length; i++ )
		{
			if ( classes[i].toLowerCase() === classNameRemove.toLowerCase() )
			{
				continue;
			}
			else
			{
				classReplaceString += classes[i] + " ";
			}
		}
		classReplaceString.substring(0,classReplaceString.length-1);
		obj.className = classReplaceString;
	}
}
function hasClass(obj, classNameCheck)
{
	if ( obj === null ) return false;
	if ( (obj.className == "undefined") || (typeof obj.className == "undefined") ) return false;
	if ( obj.className.indexOf(" ") === -1 ) return ( obj.className.toLowerCase() === classNameCheck.toLowerCase() );
	var classes = obj.className.split(" ");
	for ( var i = 0;i < classes.length; i++ )
	{
		if ( classes[i].toLowerCase() === classNameCheck.toLowerCase() ) return true;
	}
	return false;
}

function initiateprint()
{
	if(window.print) window.print();
}
function writePrintSym()
{
	var h1tag = document.getElementsByTagName("h1")[0];
	var imgtag = document.createElement("img");
	var atag = document.createElement("a");
	imgtag.setAttribute("src", rootpath+"bilder/print.png");
	imgtag.setAttribute("height", "20");
	imgtag.setAttribute("width", "18");
	imgtag.setAttribute("alt", "Druckersymbol");
	imgtag.setAttribute("title", "Diese Seite drucken");
	imgtag.setAttribute("id", "printsymbol");
	
	atag.setAttribute("href", "#");
	atag.setAttribute("class", "dontprinturl");
	atag.appendChild(imgtag);
	
	document.getElementById("wrapperbox").insertBefore(atag, h1tag.nextSibling);
	
	addEvent(atag, "click", function() { initiateprint(); return false;});
	addEvent(atag, "keypress", function() { initiateprint(); return false;});
}
function initJSEvents()
{
	// Navigationslinks animieren
	var containElem = document.getElementById("navlist");
	if ( containElem == null ) return;
	for(var i = 0; i < containElem.childNodes.length; i++)
	{
		var childElem = containElem.childNodes[i];
		if ( (childElem.nodeType == 1) && (childElem.tagName.toLowerCase() == "li") )	// 1 == ELEMENT_NODE
			for(var j = 0; j < childElem.childNodes.length; j++)
				if ( (childElem.childNodes[j].nodeType == 1) && (childElem.childNodes[j].tagName.toLowerCase() == "a") )	// 1 == ELEMENT_NODE
				{
					addEvent(childElem.childNodes[j], "mouseover", mouseOverLink);
					addEvent(childElem.childNodes[j], "mouseout", mouseOutLink);
				}
	}
	
	//Scolling der Nav-Leiste aktivieren
	containElem = document.getElementById("scrollerleft");
	addEvent(containElem.firstChild, "mouseover", function() {initScrolling("l")});
	addEvent(containElem.firstChild, "mouseout", stopScrolling);
	addEvent(containElem.firstChild, "keydown", function() {initScrolling("l")});
	addEvent(containElem.firstChild, "keyup", stopScrolling);
	addEvent(containElem.firstChild, "click", function() { return false });
	containElem = document.getElementById("scrollerright");
	addEvent(containElem.firstChild, "mouseover", function() {initScrolling("r")});
	addEvent(containElem.firstChild, "mouseout", stopScrolling);	
	addEvent(containElem.firstChild, "keydown", function() {initScrolling("r")});
	addEvent(containElem.firstChild, "keyup", stopScrolling);
	addEvent(containElem.firstChild, "click", function() { return false });
}

//ToDo: Wenn der Link einen Anker hat #blub, dann werden die Links am Ende
//nicht wieder korrekt zusammengesetzt: #blub?nc
function checkForAdmin()
{
	var params = window.location.search.substring(1,window.location.search.length);
	var hostname = window.location.hostname;
	if ( hostname == "" ) return;
	if ( params == "" ) return;
	var pairs = params.split("&");
	for ( var i = 0; i < pairs.length; i++ )
		pairs[i] = pairs[i].split("=");
	//das Array liegt nun vor in der Form
	// pairs[index][0] = eigenschaft
	// pairs[index][1] = wert
	// oder pairs[index][0] = wert, falls es keine eigenschaft=wert-zuweisung war
	
	var isAdmin = false;
	for ( var i = 0; i < pairs.length; i++ )
	{
		if ( pairs[i][0] == "nc" )
		{
			//admin mode!
			isAdmin = true;
			break;
		}
	}
	if ( !isAdmin ) return;
	if ( !document.getElementsByTagName ) return;
	
	var linksEnum = document.getElementsByTagName("a");
	for ( var i = 0; i < linksEnum.length; i++ )
	{
		var destination = linksEnum[i].href;
		//bei javascriptlinks und externen links nichts machen
		if ( ( destination == "") || (destination == "#") || (destination.substr(0,11) == "javascript:") )
			continue;
		if ( destination.substr(7,hostname.length) != hostname )
			continue;
			
		//hat der Links bereits Parameter?
		if ( destination.indexOf("?") == -1 )
		{
			linksEnum[i].href += "?nc";
			continue;
		}
		// ja, hat er. diese nun aufteilen und nach "nc" suchen
		var linkParams = destination.substr(destination.indexOf("?")+1, destination.length).split("&");
		for ( var j = 0 ; j < linkParams.length; j++ )
		{
			if (linkParams[j].indexOf("#") > -1)
			{
				linkParams[j] = linkParams[j].substr(0,linkParams[j].indexOf("#"));
			}
			linkParams[j] = linkParams[j].split("=");
		}
		var alreadyFound = false;
		for ( var j = 0; j < linkParams.length; j++ )
		{
			if ( linkParams[j][0] == "nc" )
			{
				//"nc" gefunden, also nichts mehr einfügen
				alreadyFound = true;
				break;
			}
		}
		if ( alreadyFound )
			continue;
		linksEnum[i].href += "&nc";		
		
	}
}
//IE kanns mal wieder nicht...
if ( navigator.userAgent.indexOf("MSIE") == -1 ) {
	HTMLDocument.prototype.getElementsByClassName = function(className) {
		var elemNode;
		var resultarr = [];
		var startElement = document.getElementsByTagName("*");
		for(var i = 0; i < startElement.length; i++) {
			if (hasClass(startElement[i], className)) {
				resultarr.push(startElement[i]);
			}
		}
		return resultarr;
	}
}
addEvent(window, "load", initJSEvents);
addEvent(window, "load", writePrintSym);
addEvent(window, "load", checkForAdmin);