$ = function (id) { 
	//gibt einen element Zurück oder null, falls element nicht gefunden wird
	return document.getElementById(id); 
	}
	
function stripScripts (txt) {
	var script = "";
	var html = txt.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function() {
			script += arguments[1] + "\n";
			return "";
		});
	return {"html":html, "script":script};
	}

function check_email(mail) {
	var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(mail);
	}

String.prototype.startsWith = function(str) {
	try { return (this.match("^"+str)==str); }
	catch (e) { return false; }
	}
String.prototype.trim = function()	{
	return(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
	}
String.prototype.endsWith = function(str) {
	return (this.match(str+"$")==str);
	}



var outImgHash = new Array();
var overImgHash = new Array();

function navi_preload()
{
var j=0;
for (x=0; x < document.images.length; x++){
		if(document.images[x].name.substr(0,4) == 'nav_'){
			var quelle = document.images[x].src;
			var quelle_active = quelle.replace(/(\.[^\.]+)$/, "_act$1");
			outImgHash[document.images[x].name] = new Image();
			outImgHash[document.images[x].name].src = quelle;
			overImgHash[document.images[x].name] = new Image();
			overImgHash[document.images[x].name].src = quelle_active;
		}
	}
}

function navi_act(bildname) {
	if(document.getElementsByName(bildname)[0]){
		if(overImgHash[bildname]){
			document.getElementsByName(bildname)[0].src = overImgHash[bildname].src;
		}
	}
	else{
		for (a=0; a < document.images.length; a++){
			if (document.images[a].name == bildname && (document.images[a].src.search(/_act\.[^\.]+$/) < 0)){
				var quelle = document.images[a].src;
				var quelle_active = quelle.substring(0,quelle.lastIndexOf(".")) + "_act" + quelle.substring(quelle.lastIndexOf("."),quelle.length);
				document.images[a].src =  quelle_active;
				break;
			}
		}
	}
}

function navi_normal(bildname) {
	if(document.getElementsByName(bildname)[0]){
		if(outImgHash[bildname]){
			document.getElementsByName(bildname)[0].src = outImgHash[bildname].src;
		}
	}
	else{
		for (b=0; b < document.images.length; b++){
			if (document.images[b].name == bildname){
				var quelle = document.images[b].src;
				var minus_act = quelle.lastIndexOf(".") - 4;
				var quelle_normal = quelle.substring(0,minus_act) + quelle.substring(quelle.lastIndexOf("."),quelle.length);
				document.images[b].src =  quelle_normal;
				break;
			}
		}
	}
}

function show(zoom_layer){
	zoom_layer.style.visibility = 'visible';
	var yOffset = window.pageYOffset || document.body.scrollTop;
	zoom_layer.style.top = yOffset;
	}


function change_visibility(layer, value){
	layer.style.visibility = value;
	}

function ChangeVisibilityByID(id) {
  layer = document.getElementById(id);
  if ( layer.style.visibility == 'visible' ) {
    layer.style.visibility = 'hidden';
  } else {
    layer.style.visibility = 'visible';
    open_layer = 1;
  }
  setTimeout("open_layer = 0", 100);
}

function remove_so_box (obj) {
	var parent = obj.parentNode;
	parent.removeChild(obj);
	}

function make_dd_box(obj) {
	obj.style.display = "block";
	obj.form = obj.parentNode.parentNode;
	obj.span = obj.getElementsByTagName("span")[0];
	obj.container = obj.getElementsByTagName("div")[0];
	obj.list = obj.getElementsByTagName("ul")[0];
	obj.kids = obj.list.getElementsByTagName("li");
	obj.selected = obj.span.firstChild.nodeValue;
	obj.container.style.display = "none";
	obj.highlightedBg = "#EFF3F7";
	obj.defaultBg = "#FFFFFF";
	obj.preselected = null;
	obj.interval = null;
	obj.spotted = false;
	obj.closed = true;
	obj.tabIndex = 0;
	obj.input = '';
	if (obj.addEventListener) {
		obj.span.addEventListener ("click", function(e){
			obj.focus();
			obj.toggle();
		}, false);
		obj.addEventListener ("mouseout", function(e){
   			var source = e.target;
   			var target = e.relatedTarget;
			obj.trackmouse(source, target);
   		}, false);
		obj.addEventListener ("mouseover", function(e){
			obj.spotted = true;
		}, false);
		obj.addEventListener ("keydown", function(e){
			obj.processkey(e);
			obj.delayedclear();
		}, false);
		obj.addEventListener ("blur", function(e){
			if (!obj.spotted && !obj.closed) {
				obj.toggle();
			}
		}, false);
	}
	else if (obj.attachEvent){
		obj.span.attachEvent ("onclick", function(e){
			obj.focus();
			obj.toggle();
		});
		obj.attachEvent ("onmouseout", function(e){
			var source = e.srcElement;
			var target = e.toElement;
			obj.trackmouse(source, target);
		});
		obj.attachEvent ("onmouseover", function(e){
			obj.spotted = true;
		});
		obj.attachEvent ("onkeydown", function(e){
			obj.processkey(e);
			obj.delayedclear();
		});
		obj.attachEvent ("onfocusout", function (e){
			if (!obj.spotted && !obj.closed) {
				obj.toggle();
			}
		});
	}
	obj.trackmouse = function(source, target) {
		if (source.nodeName == 'SPAN') {
			if (target == obj.container || target.parentNode.parentNode.parentNode == obj.container) {
				return;
			}else if (!obj.closed) {
				obj.spotted = false;
			}
			return;
		} else if (source.nodeName != 'DIV') {
			return;
		}
		while (target != source && target.nodeName != 'BODY') {
			target= target.parentNode;
			if (target == source) return;
		}
		obj.spotted = false;
	}
	obj.processkey = function(event) {
		if (event.keyCode == 27) {
			if (!obj.closed) {
				obj.toggle();
			} else {
				obj.clear();
			}
		} else if (event.keyCode == 13 && obj.preselected != null) {
			window.location.href = obj.preselected;
		} else {
			obj.input = obj.input + String.fromCharCode(event.keyCode);
			obj.preselect();
		}
	}
	obj.preselect = function() {
		var express = new RegExp('^' + obj.input, 'i');
		if (this.preselected) {this.preselected.style.background = obj.defaultBg;}
		for (var i = 0; i < obj.kids.length; i++) {
			if (obj.kids[i]) {
				if(express.exec(obj.kids[i].getElementsByTagName("a")[0].firstChild.nodeValue)) {
					this.preselected = obj.kids[i].getElementsByTagName("a")[0];
					this.span.firstChild.nodeValue = this.preselected.firstChild.nodeValue;
					obj.scroll(this.preselected, i);
					this.preselected.style.background = obj.highlightedBg;
					return;
				}
			}
		}
	}
	obj.clear = function() {
		obj.input = '';
		if(obj.closed){
			obj.span.firstChild.nodeValue = obj.selected;
		}
		if (this.preselected) {
			this.preselected.style.background = obj.defaultBg;
			this.preselected = null;
		}
	}
	obj.delayedclear = function() {
		if (obj.interval == null) {
			obj.interval = setInterval(obj.clear, 1500);
		} else {
			clearInterval(obj.interval);
			obj.interval = setInterval(obj.clear, 1500);
		}
	}
	obj.scroll = function(anchor, counter) {
		if (!anchor.offsetParent) {
			return;
		} else if (anchor.offsetTop == 0 && anchor.offsetParent.offsetTop == 0) {
			this.container.scrollTop = anchor.offsetParent.offsetTop;
		} else if (anchor.offsetTop > 0 && anchor.offsetParent.offsetTop > 0) {
			this.container.scrollTop = anchor.offsetTop;
		} else if (anchor.offsetTop == 0 && anchor.offsetParent.offsetTop > 0 && counter > 0) {
			this.container.scrollTop = anchor.offsetParent.offsetTop;
		} else {
			this.container.scrollTop = anchor.offsetTop;
		}
	}
	obj.toggle = function() {
		if (!this.closed) {
			this.container.style.display = "none";
			this.closed = true;
			obj.clear();
		}
		else {
			this.container.style.display = "block";
			this.closed = false;
			this.container.scrollTop = 0;
			var anchors = this.container.getElementsByTagName("a");
			for (var i = 0; i < anchors.length; i++) {
				if (anchors[i].getAttributeNode("class").nodeValue == "dd_item_anchor selected") {
					this.selected = anchors[i].firstChild.nodeValue;
					obj.scroll(anchors[i], i);
					return;
				}
			}
		}
	}
}

function close_generic_popup() {
	//layer_effect($("generic_popup_div"),"close");
	var popup = $("generic_popup_div");
	if ( popup != null ) {
		unset_shadow();
		popup.parentNode.removeChild( popup );
		}
	}

$each = function (list, fn) {
	//fürt function fn für jeder element von list
	if (! list instanceof Array) return;
	for (var i=0; i<list.length;i++) { fn(list[i]); }
	}

function set_shadow() {
	blackbox = document.createElement("div");
	blackbox.id = "blackbox";
	document.body.appendChild(blackbox);
	blackbox.onclick = function(){
		close_generic_popup();
		}
	}

function unset_shadow() {
	var blb = $("blackbox");
	if (typeof(blb)!="undefined") {
		document.body.removeChild(blb);
		}
	}


function loadScripts(id,scrCode) {
	var head  = document.getElementsByTagName("head").item(0);
	if ($("dynamic_script_"+id)!=undefined) {
		head.removeChild($("dynamic_script_"+id));
		}
	scrHandle = document.createElement("script");
	scrHandle.type = "text/javascript";
	scrHandle.id = "dynamic_script_"+id;
	scrHandle.text = scrCode;
	try { void(head.appendChild(scrHandle)); }
	catch (e) { alert(e) }
	}

function open_generic_popup_params (params, className) {
	var gpp = document.createElement("div");
	gpp.id = "generic_popup_div";
	gpp.style.zIndex = "900";
	if ( typeof(className) == "undefined" ) { gpp.className = "generic_popup_div"; } else { gpp.className = "generic_popup_div " + className; }
	gpp.innerHTML='<div class="header" id="gpp_dragger"><h1></h1><span onclick="close_generic_popup()">X</span></div><div class="content"><div id="generic_popup_div_content"></div></div>';
	gpp_request = new ajax_engine("gpp_request","/ajax/popup_params.html",
		function (res) {
			var r = stripScripts(res);
			$("generic_popup_div_content").innerHTML=r["html"];
			if (r["script"]!="") {
				loadScripts("generic_popup_div",r["script"]);
				}
			}
		,params);
	gpp_request.start();
	
	set_shadow();
	document.body.appendChild(gpp);
	try { new DragObject(gpp, $("gpp_dragger") ); }
	catch (e) {}
	//layer_effect(gpp,"open");
	}
