var BROWSER_FIREFOX = 'firefox';
var BROWSER_OPERA = 'opera';
var BROWSER_SAFARI = 'safari';
var BROWSER_MSIE = 'msie';
var BROWSER_MSIE_6 = 'msie 6.0';
var BROWSER_MSIE_7 = 'msie 7.0';
var BROWSER_MSIE_8 = 'msie 8.0';
var Mouse = new Object();
	Mouse.X = 0;
	Mouse.Y = 0;

function isObject(obj)
{
	return(obj instanceof Object)?true:false;
}

/*
 * el -> element.style.attribute
 * name -> z.b. px;
 */
function extractIntFromCSS(el, Name)
{
	var Int = 0;

	if(el.indexOf(Name) != -1)
		Int = parseInt(el.substring(0, el.indexOf(Name)));

	return Int;
}

function absTop(el)
{
	return (el.offsetParent) ? el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
}
function absLeft(el)
{
	return (el.offsetParent) ? el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
}

function getAbsMousePositionByEvent(evt)
{
	var Position = {X: 0, Y: 0};
	
	if(!evt) { // für den IE
		evt = window.event;
	}
	Position.X = evt.pageX || (evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
	Position.Y = evt.pageY || (evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop));
	
	return Position;
}

function GetScreenWidth()
{
	var ScreenWidth = 0;
	// Bildschirmbreite ermitteln
	if(self.innerWidth) // all except Explorer
		ScreenWidth = self.innerWidth;
	else if(document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
		ScreenWidth = document.documentElement.clientWidth;
	else if(document.body) // other Explorers
		ScreenWidth = document.body.clientWidth;
	
	return ScreenWidth;
}

function GetScreenHeight()
{
	var ScreenHeight = 0;
	// Bildschirmhöhe ermitteln
	if(self.innerHeight) // all except Explorer
		ScreenHeight = self.innerHeight;
	else if(document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
		ScreenHeight = document.documentElement.clientHeight;
	else if(document.body) // other Explorers
		ScreenHeight = document.body.clientHeight;
	
	return ScreenHeight;
}

function getCookie(Name)
{
	// Cookies holen
	var alleCookies = document.cookie;
	var cookieArr = alleCookies.split(';');
	var Value = '';

	for(var i=0;i<cookieArr.length;i++)
	{
		if(cookieArr[i].split("=")[0].search(Name) != -1)
			var Value = cookieArr[i].split("=")[1];
	}
	
	return Value;
}

function setCookie(Name,Value,Days)
{	
	if(Days)
	{
		var TimeStamp = new Date();
		var monat = TimeStamp.getTime()+(Days*24*60*60*1000);
			TimeStamp.setTime(monat);
		document.cookie = Name+'='+Value+'; expires='+TimeStamp.toGMTString()+'; path=/;domain=.locr.com';
	}
	else
	{
		document.cookie = Name+'='+Value+ '; path=/;domain=.locr.com';
	}
}

/**
 * Anmerkung 12.03.09:	Cookies werden scheinbar nicht ordnungsgemäss gelöscht
 * 					 	Alternativ bietet sich die Funktion setCookie an dort den Wert auf '' zu setzen.
 */
function deleteCookie(Name)
{
	var cook = Name+'=; expires=Thu, 01-Jan-70 00:00:01 GMT';
	document.cookie = cook;
}

function getAssociativeArray(ArrayString)
{
	var Array = ArrayString.split('||');
	AssociativeArray = new Object();

	for(i = 0; i < Array.length; i++)
	{
		loopArray = Array[i].split('=');
		AssociativeArray[loopArray[0]] = loopArray[1];
	}
	
	return AssociativeArray;
}

function SetMousePosition(e)
{
	if(!e) { // für den IE
		e = window.event;
	}
	Mouse.X = e.clientX;
	Mouse.Y = e.clientY;
}

/**
 * Cross-Browser Ereignis-Registrar von Scott Andrew
 * Quelle: http://www.mediaevent.de/javascript/event_listener.html
 * 
 * @param object	obj				Objekt an dem das Ereignis gebunden sein soll
 * @param string	eventType		Ereignis, auf welches reagiert werden soll (load, abort, blur, change, click, dblclick, error, focus, keydown, mousedown, mousemove, mouseout, mouseover, mouseup, resize, scroll, select, reset, submit, unload)
 * @param function	functionName	Funktionsname, der beim auslösen des Ereignisses aufgerufen werden soll
 * 
 * @return boolean
 */
function addEvent(obj, eventType, functionName)
{
	if (obj.addEventListener) { // Mozilla, Safari, Opera
		obj.addEventListener(eventType, functionName, false);
		return true;
	} else if (obj.attachEvent) { // MSIE
		return obj.attachEvent("on"+eventType, functionName);
	} else {
		return false;
	}
}
function removeEvent(obj, eventType, functionName)
{
	if (obj.removeEventListener) {
		obj.removeEventListener(eventType, functionName, false);
	} else if (obj.detachEvent) {
		obj.detachEvent("on"+eventType, functionName);
	}
}

/**
 * erkennt den aktuell benutzten Browser anhand der Eigenschaften, die der Browser kann
 */
function detectBrowser()
{
	/* Autor, Entwicklung 8/2002 Kristof Lipfert Duesseldorf							 */
	/* Version 2005-12-09																 */
	/* Referenz: http://www.lipfert-malik.de/webdesign/tutorial/bsp/browser_js_test.html */

	var x;
	if(document.ids) x = 'NC4'; else
	if(document.all && !document.getElementById) x = 'IE4'; else
	if(window.opera && !document.createElement) x = 'Opera5'; else
	if(window.opera && window.getComputedStyle)
	{
		if(document.designMode) x = 'Opera9'; else
		if(document.createRange) x = 'Opera8'; else
		if(window.navigate) x = 'Opera7.5'; else
		x = 'Opera7.2';
	} else
	if(window.opera && document.compatMode) x = 'Opera7'; else
	if(window.opera && document.releaseEvents) x = 'Opera6'; else
	if(document.contains && !window.opera) x = 'Konquerer3'; else
	if(window.pkcs11&&window.XML) x = 'Firefox15'; else
	if(window.getSelection && window.atob) x = 'NetscapeNavigator7'; else
	if(window.getSelection && !document.compatMode) x = 'NetscapeNavigator76'; else
	if(window.clipboardData && document.compatMode) x = window.XMLHttpRequest? 'IE7' : 'IE6'; else
	if(window.clipboardData)
	{
		x = 'IE5';
		if(!document.createDocumentFragment) x += '.5';
		if(document.doctype && !window.print) x += 'm';
	} else
	if(document.getElementById && !document.all) x = 'Opera4'; else
	if(document.images && !document.all) x = 'NetscapeNavigator73'; else
	if(document.clientWidth&&!window.RegExp) x = 'Konquerer2'; else
	x = '???';

	return x;
}

/**
 * Überprüft den aktuellen Browser
 */
function GetBrowser()
{
	var browser = navigator.userAgent;
	//if(window.console)console.log(browser);
	
	var agents = new Array();
		agents.push(BROWSER_FIREFOX);
		agents.push(BROWSER_MSIE_8);
		agents.push(BROWSER_MSIE_7);
		agents.push(BROWSER_MSIE_6);
		agents.push(BROWSER_MSIE);
		agents.push(BROWSER_OPERA);
		agents.push(BROWSER_SAFARI);
		
	for(var i in agents)
	{
		if(browser.toLowerCase().indexOf(agents[i]) >= 0)
			return agents[i];
	}
	
	return 0;
}//Eo GetBrowser

/**
*	Sucht einen Wert in einem Array.
* Liefert die Position im Array zurück oder -1
*  
* @param Array 					HayStack	->Das Array in dem Gesucht wird
* @param Number/String	Needle		->Der Suchwert
* 
* @return Index
* 
* @Todo:
* 
* Typ-Abfragen könnten noch verfeinert werden.
* 
*/
function inArray(HayStack,Needle)
{
	var Return = -1;
	
	for(var i = 0; i<HayStack.length;i++)
	{
		if(isNaN(Needle))
		{	
			//Überpürft Strings
			if(HayStack[i].match(Needle))
			{
				Return = i;
				break;
			}
		}
		else
		{	
			//Überprüft Number
			if(HayStack[i] == Needle)
			{
				Return = i;
				break;
			}
		}
	}
	
	return Return;
}

function isArray(obj)
{
	return(obj instanceof Array)?true:false;
}

function change(Id, Server)
{
	if(document.getElementById(Id).className.search('minimize') != -1)
	{
		document.getElementById(Id).className = document.getElementById(Id).className.replace(/minimize/, 'maximize');
	} else
	{
		document.getElementById(Id).className = document.getElementById(Id).className.replace(/maximize/, 'minimize');
	}
}

function toggle(Id) {
	if (document.getElementById(Id).style.display == 'block')
    {
    	document.getElementById(Id).style.display = 'none';
    	document.cookie = 'locrusersettings['+Id+'] = 1; expires = '+ cookie_time(30, 0);
    }
    else
    {
    	document.getElementById(Id).style.display = 'block';
    	document.cookie = 'locrusersettings['+Id+'] = 0; expires = '+ cookie_time(30, 0);
    }
}

function cookie_time(days, hours) {
	var now = new Date();
	var time = now.getTime();
	var future = time + (((days * 24) + hours) * 3600 * 1000);
	now.setTime(future);
	var expire = now.toUTCString();
	return expire; 
}

function hideSelectBoxes(ElementId)
{
	if(typeof(ElementId) == "undefined")
	{
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++)
		{
			selects[i].style.visibility = "hidden";
		}
	}
	else
		document.getElementById(ElementId).style.visibility = "hidden";
}

function showSelectBoxes(ElementId)
{
	if(typeof(ElementId) == "undefined")
	{
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++)
		{
			selects[i].style.visibility = "visible";
		}
	}
	else
		document.getElementById(ElementId).style.visibility = "visible";
}

function externalLinks()
{
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++)
	{
		var anchor = anchors[i];
		if(anchor.getAttribute("href"))
		{
			if (anchor.getAttribute("rel") == "external")
			{
				anchor.target = "_blank";
				
				// Leerzeichen einfügen
				anchor.appendChild(document.createTextNode(" "));
				
				// Icon einfügen
				var img = document.createElement('img');
					img.src = "/gfx/gif/transparent.gif";
					img.className = "external_link"
					img.alt = "";
				anchor.appendChild(img);
			}
			else if(anchor.getAttribute("rel") == "external_no_icon")
			{
				anchor.target = "_blank";
			}
		}
	}
}

function JS_Submenus()
{
	var menutitle = "menu1";
	var MenuTitle = document.getElementById(menutitle);
	if(MenuTitle)
	{
		var LocrContainer = document.getElementById("LOCR_CONTAINER");
		var ultags=MenuTitle.getElementsByTagName("ul");
		for (var t=0; t<ultags.length; t++)
		{
			var CurrentULTagParent = ultags[t].parentNode;
			if (CurrentULTagParent.parentNode.id == menutitle) //if this is a first level submenu
			{ 
				ultags[t].style.top=CurrentULTagParent.offsetHeight+"px"; //dynamically position first level submenus to be height of main menu item
				CurrentULTagParent.getElementsByTagName("a")[0].className = "mainfoldericon";
			}
			else //else if this is a sub level menu (ul)
			{ 
				ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px"; //position menu to the right of menu item that activated it
				CurrentULTagParent.getElementsByTagName("a")[0].className = "subfoldericon";
			}
			CurrentULTagParent.onmouseover=function()
			{
				hideSelectBoxes();
				this.getElementsByTagName("ul")[0].style.visibility = "visible";
				if(!document.getElementById("suchergebnisse_overlay"))
					LocrContainer.style.zIndex = "1001";
			}
			CurrentULTagParent.onmouseout=function()
			{
				showSelectBoxes();
				this.getElementsByTagName("ul")[0].style.visibility = "hidden";
				LocrContainer.style.zIndex = "";
			}
		}
	}
}

addEvent(window, "load", JS_Submenus);
addEvent(window, "load", externalLinks);

