try
{
    document.execCommand("BackgroundImageCache",false,true)
}
catch(e){}

// This installs a function with the name "contains" in the prototype of the node-object if if this is not predefined
if (window.Node && Node.prototype && !Node.prototype.contains)
{
	Node.prototype.contains = function (arg)
	{
		if (this == arg)
		{
			return true;
		}
		else
		{
			try
			{
				return !!(this.compareDocumentPosition(arg) & 16);
			}
			catch(e)
			{
				return false;
			}
		}
	}
}


/* This provides a function with a cross-browser event registration */
function addEvent(obj, evType, fn, useCapture)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.attachEvent)
	{
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
	else
	{
		alert("Handler could not be attached");
	}
}


/* Navigationsfuntionen START */

/* Standard Flyout-Navigation START */
function navi_doShow_home(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,1,'#FBBC31',document.getElementById('vdhtml_home'))
}

function navi_doHide_home(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,-1,'#F89828',document.getElementById('vdhtml_home'));
}

function navi_doShow_sonst(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,1,'#F28E56',document.getElementById('vdhtml_dhtml'))
}

function navi_doHide_sonst(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,-1,'#EE6B23',document.getElementById('vdhtml_dhtml'));
}

function navi_doShow_reg(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,1,'#FBBC31',document.getElementById('vdhtml_reg'))
}

function navi_doHide_reg(elm,id,lvl,pos,hi,e)
{
	doNavigation(elm,id,lvl,pos,hi,e,-1,'#F89828',document.getElementById('vdhtml_reg'));
}

function doNavigation(elm,id,lvl,pos,hi,e,dir,color,navi)
{
	e = e || window.event;
	var reltargetElement; 
	if (dir > 0)
	{
		reltargetElement = e.relatedTarget || e.fromElement || false;
	}
	else if (dir < 0)
	{
		reltargetElement = e.relatedTarget || e.toElement || false;
	}
	if (reltargetElement == false || !elm.contains(reltargetElement))
	{
			if (isAnimated(navi,elm,id,lvl)) doManageAnimation(elm,dir); // Steuerung der Animation
			if (dir == 1)
			{
				if (document.getElementById(id)) document.getElementById(id).style.display = 'block'; // blendet die Sub-Navi ein
				if (!(hi == 1 && lvl == 2 && pos != 'last')) // Navi-Highlight (nur dann, wenn der Punkt nicht aktiviert ist)
				{
					if (lvl == 2 && pos == 1)
					{
						elm.getElementsByTagName('a')[0].style.backgroundPosition = "top right";
					}
					else if (lvl == 2 && pos == 'last')
					{
						elm.getElementsByTagName('a')[0].style.backgroundPosition = "top right";
					}
					else
					{
						elm.getElementsByTagName('a')[0].style.backgroundColor = color;
					}
				}
			}
			else if (dir == -1)
			{
				if (document.getElementById(id)) document.getElementById(id).style.display = 'none'; // blendet die Sub-Navi aus
				if (!(hi == 1 && lvl == 2 && pos != 'last')) // Navi-Lowlight (nur dann, wenn der Punkt nicht aktiviert ist)
				{
					if (lvl == 2 && pos == 1)
					{
						elm.getElementsByTagName('a')[0].style.backgroundPosition = "top left";
					}
					else if (lvl == 2 && pos == 'last')
					{
						elm.getElementsByTagName('a')[0].style.backgroundPosition = "bottom right";
					}
					else
					{
						elm.getElementsByTagName('a')[0].style.backgroundColor = color;
					}
				}
			}
	}
}
/* Standard Flyout-Navigation ENDE */



/* Animation Functions START */
function isAnimated(navi,elm,id,lvl)
{
	if (lvl == 2 && elm.getElementsByTagName('a').length >= 2 && (!document.getElementById(id) || !document.getElementById(id).contains(elm.getElementsByTagName('a')[1])))
	{
		if (navi.animationIsInitialized != true) initAnimation(navi,elm);
		if (elm.initialized != true) initPane(navi,elm);
		return true;
	}
	else
	{
		return false;
	}
}

function initPane(navi,elm)
{
	elm.initialized = true;
	elm.expHeight = 0;
	elm.navi = navi;
	elm.animation = 0;
}

function initAnimation(navi,elm)
{
	navi.animationIsInitialized = true;
	navi.numberOfAnimatedPanes = 0;
	navi.numberOfClosingPanes = 0;
	navi.ms = 16; // Intervalzeit
	navi.ppI = 6; // Pixel per Interval
	navi.dynPpI = 0; // Pixel per Interval dynamisch (die Summe der Pixel per Interval aller schliessenden Panes)
	navi.currentOpeningPane = null;
	navi.closingPaneCollection = [];
}

function doManageAnimation(elm,dir)
{
	if (Math.abs(elm.animation) < Math.abs(dir)) // eine Animation wird gestartet
	{
		elm.navi.numberOfAnimatedPanes += 1; // erhöht die Anzahl der gerade animierten Panes um 1

		// hier wird der NaviTimer gestartet
		if (elm.navi.numberOfAnimatedPanes == 1) elm.navi.intervalID = setInterval(function f(){naviTimer(elm)},elm.navi.ms);

		if (dir > 0) // es wird expandiert
		{
			elm.navi.currentOpeningPane = elm;
		}
		else if (dir < 0) // es wird geshrinkt
		{
			elm.navi.closingPaneCollection[elm.id] = elm;
			elm.navi.numberOfClosingPanes += 1;
		}
	}
	else if (Math.abs(elm.animation) > Math.abs(dir)) // eine Animation wird gestoppt
	{
		delete elm.navi.closingPaneCollection[elm.id];
		elm.navi.numberOfAnimatedPanes -= 1;  // verringert die Anzahl der gerade animierten Panes um 1
		if (elm.animation < 0) elm.navi.numberOfClosingPanes -= 1;
		if (elm.animation == 1)
		{
			elm.navi.currentOpeningPane = null;
		}
		// hier wird der NaviTimer beendet
		if (elm.navi.numberOfAnimatedPanes == 0) clearInterval(elm.navi.intervalID);
	}
	else // eine Animation wird umgekehrt
	{
		if (dir > 0)
		{
			elm.navi.numberOfClosingPanes -= 1;
			delete elm.navi.closingPaneCollection[elm.id];
			elm.navi.currentOpeningPane = elm;
		}
		else if (dir < 0)
		{
			elm.navi.numberOfClosingPanes += 1;
			elm.navi.currentOpeningPane = null;
			elm.navi.closingPaneCollection[elm.id] = elm;
		}
	}
	elm.animation = dir;
}

function naviTimer(elm)
{
	elm.navi.dynPpI = 0;
	for(i in elm.navi.closingPaneCollection)
	{
		elm.navi.dynPpI += doAnimatedCollapse(elm.navi.closingPaneCollection[i]);
	}
	
	if(elm.navi.currentOpeningPane) doAnimatedExpansion(elm.navi.currentOpeningPane);
}
/* Animation Functions ENDE */

function doAnimatedExpansion(elm)
{
	elm.expHeight += (elm.navi.dynPpI == 0) ? elm.navi.ppI : elm.navi.dynPpI;
	if(elm.expHeight >= 100)
	{
		elm.expHeight = 100;
		doManageAnimation(elm,0);
	}
 	elm.getElementsByTagName('a')[1].style.height = elm.expHeight + 'px';
}

function doAnimatedCollapse(elm)
{
	var tempPpI = Math.ceil(elm.navi.ppI / elm.navi.numberOfClosingPanes);
	elm.expHeight -= tempPpI // Pixel per Interval für dieses Interval
	if(elm.expHeight <= 0)
	{
		tempPpI = tempPpI + elm.expHeight; // tatsächliche Pixel per Interval nach Korrektur
		elm.expHeight = 0;
		doManageAnimation(elm,0);
	}
 	elm.getElementsByTagName('a')[1].style.height = elm.expHeight + 'px';
	return tempPpI; // Rückgabe wird in navi.dynPpI gespeichert.
}
/* Animation Functions ENDE */


/* Navigationsfuntionen ENDE */


function  init()
{
	autoload(false,'hover','lo','hi');
}


function autoload(autohover,identifier)
{
	var id = new RegExp("\\b"+identifier+"\\b")
	for (var i=0;i<document.getElementsByTagName('img').length; i++)
	{
		if (document.getElementsByTagName('img')[i].className.match(id))
		{
			for (var j=2;j<arguments.length;j++)
			{
				document.getElementsByTagName('img')[i][arguments[j]] = new Image();
				document.getElementsByTagName('img')[i][arguments[j]].src = document.getElementsByTagName('img')[i].src.replace(/_[^_]*\./,'_'+arguments[j] + '.');
				if (autohover == true && j == 2) document.getElementsByTagName('img')[i].setAttribute("onmouseout","this.src=this['" + arguments[j] + "'].src");
				if (autohover == true && j == 3) document.getElementsByTagName('img')[i].setAttribute("onmouseover","this.src=this['" + arguments[j] + "'].src");
			}
		}
	}
}


/* SfiTeaserContentImage START */

/*Fallback w/o animation START*/
function ct_01_expand(elm)
{
	elm.getElementsByTagName('div')[0].style.height = '196px';
	elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = '194px';
	elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = '188px';
	elm.getElementsByTagName('p')[0].style.visibility = 'visible';
}

function ct_01_shrink(elm)
{
	elm.getElementsByTagName('div')[0].style.height = '166px';
	elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = '164px';
	elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = '158px';
	elm.getElementsByTagName('p')[0].style.visibility = 'hidden';
}
/*Fallback w/o animation ENDE*/

function Over_status(elm,e)
{
	e = e || window.event;
	var fromElement = e.relatedTarget || e.fromElement || false;
	if (elm != null && !elm.contains(fromElement))
	{
		clearInterval(elm.shrinkID);
		elm.expandID = setInterval(function f(){ct_01_anim_expand(elm)},10);
	}
}

function Out_status(elm,e)
{
	e = e || window.event;
	var toElement = e.relatedTarget || e.toElement || false;
	if (elm != null && !elm.contains(toElement))
	{
		clearInterval(elm.expandID);
		elm.getElementsByTagName('p')[0].style.visibility = 'hidden';
		elm.shrinkID = setInterval(function f(){ct_01_anim_shrink(elm)},10);
	}
}

function ct_01_anim_expand(elm)
{
	var maxheight = 196;
	var newheight = parseInt(elm.getElementsByTagName('div')[0].style.height) + 4;

	if (newheight >= maxheight)
	{
	    elm.getElementsByTagName('div')[0].style.height = '196px';
	    elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = '194px';
	    elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = '188px';
	    elm.getElementsByTagName('p')[0].style.visibility = 'visible';
        clearInterval(elm.expandID);
	}
	else
	{
		elm.getElementsByTagName('div')[0].style.height = newheight + 'px';
		elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = newheight - 2 + 'px';
		elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = newheight - 8 + 'px';
	}
}

function ct_01_anim_shrink(elm)
{
	var minheight = 166;
	var newheight = parseInt(elm.getElementsByTagName('div')[0].style.height) - 4;

	if (newheight <= minheight)
	{
	    elm.getElementsByTagName('div')[0].style.height = '166px';
	    elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = '164px';
	    elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = '158px';
	    elm.getElementsByTagName('p')[0].style.visibility = 'hidden';
		clearInterval(elm.shrinkID);
	}
	else
	{
		elm.getElementsByTagName('div')[0].style.height = newheight + 'px';
		elm.getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.height = newheight - 2 + 'px';
		elm.getElementsByTagName('div')[0].getElementsByTagName('div')[1].style.height = newheight - 8 + 'px';
	}
}

/* SfiHiddenInsight START */

function doHighlight(elm, imgsrc)
{
	if (elm.timeoutid) clearTimeout(elm.timeoutid);
    elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 2].style.visibility = 'hidden';
    elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 1].style.visibility = 'visible';
}


function doShow(elm)
{
	elm.getElementsByTagName('div')[0].style.display = 'block';
	elm._show = true;
}


function doLowlight(elm, imgsrc)
{
    if (!elm._show)
    {
        //elm.getElementsByTagName('img')[elm.getElementsByTagName('img').length - 1].src = imgsrc;
        elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 1].style.visibility = 'hidden';
        elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 2].style.visibility = 'visible';
    }
	elm.timeoutid = setTimeout(function(){doHide(elm,imgsrc)},'1000');
}

function doHide(elm,imgsrc)
{
    if (elm._show)
    {
        //elm.getElementsByTagName('img')[elm.getElementsByTagName('img').length - 1].src = imgsrc;
        elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 1].style.visibility = 'hidden';
        elm.getElementsByTagName('div')[elm.getElementsByTagName('div').length - 2].style.visibility = 'visible';
    }
	elm.getElementsByTagName('div')[0].style.display = 'none';
    elm._show = false;
}

/* SfiHiddenInsight ENDE */

