function sei_get_layer_list (node, regularstring)
{
    var layerlist="";

    if (node.id>"")
    {
    	if (regularstring>"")
    	{
    		lastpos=regularstring.indexOf("*");
				if (node.id.substr(0,lastpos)==regularstring.substr(0,lastpos))
					layerlist+=node.id;
    	}
	    else
				layerlist=node.id;
    }

    if (node.hasChildNodes())
    {
			for (var counter = 0; counter < node.childNodes.length; counter++)
			{
				newlayerlist=sei_get_layer_list(node.childNodes[counter], regularstring);
				if (newlayerlist>"")
				{
					if (layerlist>"")
						layerlist += ",";

					layerlist += newlayerlist;
				}
			}
    }

   	return layerlist;
}

function sei_layer_process_regular(regularstring, dofunc, htmltagname)
{
	if (htmltagname>"")
	{
		elementarray=document.getElementsByTagName(htmltagname);

		lastpos=regularstring.indexOf("*");

		layerlist=new Array();
		layercount=0;

		for (currlayer in elementarray)
		{
			if (document.getElementsByTagName(htmltagname)[currlayer].id>"")
			{
				checklayer=document.getElementsByTagName(htmltagname)[currlayer].id;

				if (checklayer.substr(0,lastpos)==regularstring.substr(0,lastpos))
				{
					layerlist[layercount]=checklayer;
					layercount++;
				}
			}
		}
	}
	else
	{
		layerlist = sei_get_layer_list(document.documentElement,regularstring);

		if (layerlist>"")
			layerlist=layerlist.split(",");
	}

	if (layerlist.length>0)
	{
		for (layerid in layerlist)
			eval(dofunc.split("<#layerid#>").join(layerlist[layerid]));
	}
}

function sei_layer_show(layerid)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).style.display='';
	else if (layerid.indexOf("*")>=0)
		sei_layer_process_regular(layerid, "sei_layer_show('<#layerid#>')");
	else
		alert ("sei_layer_show: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_hide(layerid)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).style.display='none';
	else if (layerid.indexOf("*")>=0)
		sei_layer_process_regular(layerid, "sei_layer_hide('<#layerid#>')");
	else
		alert ("sei_layer_hide: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_write(layerid, content)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).innerHTML=content;
	else
		alert ("sei_layer_write: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_addcontent(layerid, content)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).innerHTML=document.getElementById(layerid).innerHTML+content;
	else
		alert ("sei_layer_addcontent: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_getcontent(layerid)
{
	if (document.getElementById(layerid))
		return document.getElementById(layerid).innerHTML;
	else
		alert ("sei_layer_getcontent: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_move(layerid, xpos, ypos)
{
	if (document.getElementById(layerid))
	{
		if (xpos!==false)
			document.getElementById(layerid).style.left=xpos+"px";

		if (ypos!==false)
			document.getElementById(layerid).style.top=ypos+"px";
	}
	else
		alert ("sei_layer_move: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_resize(layerid, w, h)
{
	if (typeof(w)=="undefined") w=false;
	if (typeof(h)=="undefined") h=false;

	if (document.getElementById(layerid))
	{
		if (w!==false)
		{
			if (w==Number(w))
				document.getElementById(layerid).style.width=w+"px";
			else
				document.getElementById(layerid).style.width=w;
		}

		if (h!==false)
		{
			if (h==Number(h))
				document.getElementById(layerid).style.height=h+"px";
			else
				document.getElementById(layerid).style.height=h;
		}
	}
	else
		alert ("sei_layer_resize: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_set_class(layerid, classkey)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).className=classkey;
}

function sei_layer_set_style(layerid, stylekey, stylevalue)
{
	if (document.getElementById(layerid))
	{
		if (stylekey!==false && stylevalue!==false)
		{
			switch(stylekey)
			{
				case "background":
					stylevalue="url("+stylevalue+")";
					stylekey="backgroundImage";
					break;
			}

			while (stylekey.indexOf("-")>=0)
			{
				pos=stylekey.indexOf("-");
				stylekey=stylekey.substr(0,pos)+stylekey.substr(pos+1,1).toUpperCase()+stylekey.substr(pos+2);
			}

//			document.getElementById(layerid).setAttribute(stylekey, stylevalue, false);
			eval("document.getElementById('"+layerid+"').style."+stylekey+"='"+stylevalue+"';");
		}
	}
	else
		alert ("sei_layer_set_style: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_set_title(layerid, layertitle)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).title=layertitle;
}

function sei_layer_get_style(layerid, stylekey)
{
	if (document.getElementById(layerid))
	{
		if (stylekey!==false)
		{
			switch(stylekey)
			{
				case "background":
					stylekey="backgroundImage";
					break;
			}

			if (stylekey.indexOf("-")>=0)
			{
				pos=stylekey.indexOf("-");
				stylekey=stylekey.substr(0,pos)+stylekey.substr(pos+1,1).toUpperCase()+stylekey.substr(pos+2);
			}

			eval("dummy = document.getElementById('"+layerid+"').style."+stylekey+";");

			return dummy;
		}
	}
	else
		alert ("sei_layer_get_style: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_del_style(layerid, stylekey)
{
	if (document.getElementById(layerid))
	{
		if (stylekey!==false)
		{
			switch(stylekey)
			{
				case "background":
					stylekey="backgroundImage";
					break;
			}

			if (stylekey.indexOf("-")>=0)
			{
				pos=stylekey.indexOf("-");
				stylekey=stylekey.substr(0,pos)+stylekey.substr(pos+1,1).toUpperCase()+stylekey.substr(pos+2);
			}
//			document.getElementById(layerid).removeAttribute(stylekey);
//			document.getElementById(layerid).setAttribute(stylekey, "");
			eval("document.getElementById('"+layerid+"').style."+stylekey+"='';");
		}
	}
	else
		alert ("sei_layer_del_style: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_transparency(layerid, alpha)
{
	alpha=Math.round(alpha);
	if (alpha<0) alpha=0;
	if (alpha>100) alpha=100;

	if (document.getElementById(layerid))
	{
		document.getElementById(layerid).style.filter="Alpha(opacity: "+alpha+")";
		document.getElementById(layerid).style.MozOpacity=(Number(alpha)/100);
		document.getElementById(layerid).style.opacity=(Number(alpha)/100);
	}
	else
		alert ("sei_layer_transparency: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_zindex(layerid, zvalue)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).style.zIndex=zvalue;
	else
		alert ("sei_layer_zindex: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_exists(layerid)
{
	if (document.getElementById(layerid)==null)
		return false;
	else
		return true;
}

function sei_layer_create(layerid, appendobject)
{
	var newlayer=document.createElement("div");

	newlayer.id=layerid;
	newlayer.style.display="none";

	if (typeof(appendobject)=="undefined")
	{
		newlayer.style.position="absolute";
		document.body.appendChild( newlayer );
		sei_layer_move(layerid, 0, 0);
	}
	else
		appendobject.appendChild( newlayer );
}

function sei_layer_destroy(layerid)
{
	if (document.getElementById(layerid))
		document.getElementById(layerid).parentNode.removeChild(document.getElementById(layerid));
	else
		alert ("sei_layer_destroy: Layer '"+layerid+"' nicht definiert");
}

function sei_layer_get_offset(layerid, offsettype, absolute)
{
	if (typeof(absolute)=="undefined")
		absolute = true;

// --- übergebenen offsettype um 'offset' erweitern, wenn nicht vorhanden -----

	if (offsettype.replace("offset","")==offsettype)
		offsettype="offset"+offsettype;

// --- immer korrekte gross / kleinschreibung erzwingen -----------------------

	offsettype=offsettype.substr(0,6).toLowerCase()+offsettype.substr(6,1).toUpperCase()+offsettype.substr(7).toLowerCase();

	if (document.getElementById(layerid))
	{
		currlayer = document.getElementById(layerid);

// --- Auf gültigen Offsettyp prüfen ------------------------------------------

		if (offsettype=="offsetLeft" || offsettype=="offsetTop" || offsettype=="offsetWidth" || offsettype=="offsetHeight")
		{
			if (absolute==true)
			{
				switch(offsettype)
				{
					case "offsetTop":
					case "offsetLeft":
						offsetreturn = 0;

						while(currlayer)
						{
							offsetreturn += currlayer[offsettype];
							currlayer = currlayer.offsetParent;
						}
						return offsetreturn;
						break;

					default:
						return currlayer[offsettype];
						break;
				}
			}
			else
				return currlayer[offsettype];
		}
		else
			alert ("Offsettyp '"+offsettype+"' unbekannt");
	}
	else
		alert ("sei_layer_get_offset: Layer '"+layerid+"' nicht definiert");
}

moveprocess=new Array();

function sei_layer_toggle(layer1, layer2, duration, fademode)
{
	if (typeof(duration)=="undefined")
		duration=0;

	if (typeof(fademode)=="undefined")
		fademode="scroll";

// --- Wenn duration = 0, Source-Layer aus- und Destination-Layer einblenden --

	if (duration==0)
	{
		sei_layer_hide(layer1);
		sei_layer_show(layer2);
	}
	else
	{
		dofade=true;

// --- Prüfen, ob die entsprechenden Layer sich noch im Fade Prozess befinden -

		if (typeof(moveprocess[layer1])=="undefined")
		{
			moveprocess[layer1]=true;
			moveprocess[layer2]=true;
		}
		else
		{
			if (moveprocess[layer1]==true || moveprocess[layer2]==true)
				dofade=false;
			else
			{
				moveprocess[layer1]=true;
				moveprocess[layer2]=true;
			}
		}

		if (dofade==true)
		{

// --- Destination-Layer kurz einblenden, um Grösse auslesen zu können --------

			document.getElementById(layer2).style.visibility='hidden';
			document.getElementById(layer2).style.display='';

			destwidth=document.getElementById(layer2)["offsetWidth"];
			destheight=document.getElementById(layer2)["offsetHeight"];

			document.getElementById(layer2).style.display='none';
			document.getElementById(layer2).style.visibility='visible';

// --- Benötigte Positions- und Grössenwerte des Source-Layers aulesen --------

			sourcetop=sei_layer_get_offset(layer1, "top");
			sourceleft=sei_layer_get_offset(layer1, "left");
			sourcewidth=sei_layer_get_offset(layer1, "width");
			sourceheight=sei_layer_get_offset(layer1, "height");

// --- Dummy erstellen, welcher anstelle des Originallayers die Höhe bestimmt -

			layerdummy=layer1+"_dummy";
			var newlayer=document.createElement("div");
			newlayer.id=layerdummy;
			newlayer.innerHTML="<img src='' width=1 height=1>";
			newlayer.visibility="hidden";

// --- Neuen Dummy in DOM einfügen --------------------------------------------

			document.getElementById(layer1).parentNode.insertBefore(newlayer, document.getElementById(layer1));

// --- Source- und Destination-Layer clonen -----------------------------------

			layer1cloneobject=document.getElementById(layer1).cloneNode(true);
			layer1cloneobject.id=layer1+"clone";
			layer1cloneobject.style.display="none";
			layer1cloneobject.style.position="absolute";
			document.body.appendChild(layer1cloneobject);
			layer1clone=layer1+"clone";

			layer2cloneobject=document.getElementById(layer2).cloneNode(true);
			layer2cloneobject.id=layer2+"clone";
			layer2cloneobject.style.display="none";
			layer2cloneobject.style.position="absolute";
			document.body.appendChild(layer2cloneobject);
			layer2clone=layer2+"clone";

// --- geclonte Layer positionieren über dem Source-Layer ---------------------

			sei_layer_set_style(layer1clone, "top", sourcetop);
			sei_layer_set_style(layer1clone, "left", sourceleft);
			sei_layer_set_style(layer1clone, "width", sourcewidth);
			sei_layer_set_style(layer1clone, "height", sourceheight);

			sei_layer_set_style(layer2clone, "top", sourcetop);
			sei_layer_set_style(layer2clone, "left", sourceleft);
			sei_layer_set_style(layer2clone, "width", destwidth);
			sei_layer_set_style(layer2clone, "height", destheight);

// --- Original Layer (Source+Destination) ausblenden -------------------------

			sei_layer_hide(layer1);
			sei_layer_hide(layer2);

// --- Anstelle des Source-Layers den Platzhalter in gleicher Grösse anzeigen -

			sei_layer_set_style(layerdummy, "height", sourceheight);

// --- Transparenz von der geclonten Layer einstellen -------------------------

			sei_layer_transparency(layer1clone,100);
			sei_layer_transparency(layer2clone,0);

// --- Geclonte Layer anzeigen ------------------------------------------------

			sei_layer_show(layer1clone);
			sei_layer_show(layer2clone);

// --- Überblenden der Layer beginnen -----------------------------------------

			currdate=new Date();
			window.setTimeout("sei_layer_toggle_action('"+layer1+"','"+layer2+"',"+sourceheight+","+sourcewidth+","+destheight+","+duration+",currdate.getTime(),'"+fademode+"')",10);
		}
	}
}

function sei_layer_toggle_action(layer1,layer2,sourceheight,sourcewidth,destheight,duration,starttime,fademode)
{
	layerdummy=layer1+"_dummy";

	layer1clone=layer1+"clone";
	layer2clone=layer2+"clone";

	currdate=new Date();
	currtime=currdate.getTime();

// --- Aktuellen Prozentualen Fortschritt berechnen ---------------------------

	currstep=(currtime-starttime)/duration;

// --- Bewegungsablauf optimieren (bremsende Bewegung) ------------------------

	currstep=Math.log((currstep*25))/Math.log(25);

	if (currstep>1) currstep=1;
	if (currstep<0) currstep=0;

// --- Aktuelle Höhe berechnen, Anhand des Zeitverlaufs des Überganges --------

	currheight=Math.round(sourceheight+((destheight-sourceheight)*currstep));

	if (destheight!=sourceheight)
	{

// --- Höhe des Platzhalters anpassen -----------------------------------------

		sei_layer_set_style(layerdummy, "height", currheight);

		if (fademode=="scroll")
		{
			if (destheight>sourceheight)
			{
				sei_layer_set_style(layer2clone, "clip", "rect("+(destheight-currheight)+"px, "+sourcewidth+"px, "+destheight+"px, 0px)");
				sei_layer_set_style(layer2clone, "top", sourcetop-destheight+currheight);
			}
			else
			{
				sei_layer_set_style(layer1clone, "clip", "rect("+(sourceheight-currheight)+"px, "+sourcewidth+"px, "+sourceheight+"px, 0px)");
				sei_layer_set_style(layer1clone, "top", sourcetop-sourceheight+currheight);
			}
		}
		else
		{
			if (destheight>sourceheight)
				sei_layer_set_style(layer2clone, "clip", "rect(0px, "+sourcewidth+"px, "+currheight+"px, 0px)");
			else
				sei_layer_set_style(layer1clone, "clip", "rect(0px, "+sourcewidth+"px, "+currheight+"px, 0px)");
		}
	}

// --- Transparenz der sich überblendenen Layer berechnen ---------------------

	sei_layer_transparency(layer2clone,(100*currstep));
	sei_layer_transparency(layer1clone,100-(100*currstep));

	if (currstep<1)
		window.setTimeout("sei_layer_toggle_action('"+layer1+"','"+layer2+"',"+sourceheight+","+sourcewidth+","+destheight+","+duration+","+starttime+",'"+fademode+"')",10);
	else
	{

// --- Endposition der Überblendung -------------------------------------------

		document.getElementById(layerdummy).style.display='none';
		document.getElementById(layer1).style.display='none';
		document.getElementById(layer2).style.display='';
		document.getElementById(layer1clone).style.display='none';
		document.getElementById(layer2clone).style.display='none';

// --- Geclonte Layer und Platzhalter wieder aus DOM entfernen ----------------

		window.setTimeout("document.getElementById('"+layerdummy+"').parentNode.removeChild(document.getElementById('"+layerdummy+"')); document.getElementById('"+layer1clone+"').parentNode.removeChild(document.getElementById('"+layer1clone+"')); document.getElementById('"+layer2clone+"').parentNode.removeChild(document.getElementById('"+layer2clone+"')); moveprocess['"+layer1+"']=false; moveprocess['"+layer2+"']=false;",10);
	}
}





function sei_layer_fadein(layerid, duration, fademode)
{
	sei_layer_fade(layerid, "fadein", duration, fademode);
}

function sei_layer_fadeout(layerid, duration, fademode)
{
	sei_layer_fade(layerid, "fadeout", duration, fademode);
}

function sei_layer_fade(layerid, direction, duration, fademode)
{
	if (typeof(direction)=="undefined")
		direction="fadein";

	if (typeof(duration)=="undefined")
		duration=500;

	if (typeof(fademode)=="undefined")
		fademode="scroll";

// --- Nichts tun beim Fadeout, wenn Layer schon unsichtbar -------------------

	if (direction=="fadeout" && document.getElementById(layerid).style.display=="none")
		return false;

// --- Nichts tun beim Fadein, wenn layer noch sichtbar -----------------------

	if (direction=="fadein" && document.getElementById(layerid).style.display=="")
		return false;

// --- Wenn duration = 0, dann entsprechenden Layer anzeigen / verstecken -----

	if (duration==0)
	{
		if (direction=="fadein")
			sei_layer_show(layerid);
		else
			sei_layer_hide(layerid);
	}
	else
	{
		dofade=true;

// --- Prüfen, ob der entsprechende Layer sich noch im Fade Prozess befindet --

		if (typeof(moveprocess[layerid])=="undefined")
			moveprocess[layerid]=true;
		else
		{
			if (moveprocess[layerid]==true)
				dofade=false;
			else
				moveprocess[layerid]=true;
		}

		if (dofade==true)
		{
			if (direction=="fadein")
			{

// --- Destination-Layer kurz einblenden, um Grösse auslesen zu können --------

				document.getElementById(layerid).style.visibility='hidden';
				document.getElementById(layerid).style.display='';

//			desttop = 0; currlayer = document.getElementById(layerid); while(currlayer) { desttop += currlayer["offsetTop"]; currlayer = currlayer.offsetParent; }
//			destleft = 0; currlayer = document.getElementById(layerid); while(currlayer) { destleft += currlayer["offsetLeft"]; currlayer = currlayer.offsetParent; }
				destwidth=document.getElementById(layerid)["offsetWidth"];
				destheight=document.getElementById(layerid)["offsetHeight"];

				document.getElementById(layerid).style.display='none';
				document.getElementById(layerid).style.visibility='visible';
			}
			else
			{
				desttop=sei_layer_get_offset(layerid, "top");
				destleft=sei_layer_get_offset(layerid, "left");
				destwidth=sei_layer_get_offset(layerid, "width");
				destheight=sei_layer_get_offset(layerid, "height");
			}

// --- Dummy erstellen, welcher anstelle des Originallayers die Höhe bestimmt -

			layerdummy=layerid+"_dummy";
			var newlayer=document.createElement("div");
			newlayer.id=layerdummy;
			newlayer.innerHTML="<img src='' width=1 height=1>";
			newlayer.visibility="hidden";

// --- Neuen Dummy in DOM einfügen --------------------------------------------

			document.getElementById(layerid).parentNode.insertBefore(newlayer, document.getElementById(layerid));

			if (direction=="fadein")
			{
				desttop=sei_layer_get_offset(layerdummy, "top");
				destleft=sei_layer_get_offset(layerdummy, "left");
			}

// --- Destination-Layer clonen -----------------------------------------------

			layeridcloneobject=document.getElementById(layerid).cloneNode(true);
			layeridcloneobject.id=layerid+"clone";
			layeridcloneobject.style.display="none";
			layeridcloneobject.style.position="absolute";
			document.body.appendChild(layeridcloneobject);
			layeridclone=layerid+"clone";

// --- geclonten Layer positionieren über dem Destination-Layer ---------------

			sei_layer_set_style(layeridclone, "top", desttop);
			sei_layer_set_style(layeridclone, "left", destleft);
			sei_layer_set_style(layeridclone, "width", destwidth);
			sei_layer_set_style(layeridclone, "height", destheight);

// --- Original Layer ausblenden ----------------------------------------------

			sei_layer_hide(layerid);

// --- Anstelle des Layers den Platzhalter anzeigen ---------------------------

			if (direction=="fadein")
			{
				sei_layer_set_style(layerdummy, "height", 0);
				sei_layer_transparency(layeridclone,0);
			}
			else
			{
				sei_layer_set_style(layerdummy, "height", destheight);
				sei_layer_transparency(layeridclone,100);
			}

// --- Geclonte Layer anzeigen ------------------------------------------------

			sei_layer_show(layeridclone);

// --- Überblenden der Layer beginnen -----------------------------------------

			currdate=new Date();
			window.setTimeout("sei_layer_fade_action('"+layerid+"',"+desttop+","+destwidth+","+destheight+","+duration+",currdate.getTime(),'"+direction+"','"+fademode+"')",10);
		}
	}
}

function sei_layer_fade_action(layerid,layertop,layerwidth,layerheight,duration,starttime,direction,fademode)
{
	layerdummy=layerid+"_dummy";

	layeridclone=layerid+"clone";

	currdate=new Date();
	currtime=currdate.getTime();

// --- Aktuellen Prozentualen Fortschritt berechnen ---------------------------

	currstep=(currtime-starttime)/duration;

// --- Bewegungsablauf optimieren (bremsende Bewegung) ------------------------

	currstep=Math.log((currstep*25))/Math.log(25);

	if (currstep>1) currstep=1;
	if (currstep<0) currstep=0;

// --- Aktuelle Höhe berechnen, Anhand des Zeitverlaufs des Überganges --------

	currheight=Math.round(layerheight*currstep);

// --- Höhe des Platzhalters anpassen -----------------------------------------

	if (direction=="fadein")
	{
		sei_layer_set_style(layerdummy, "height", currheight);

		if (fademode=="scroll")
		{
			sei_layer_set_style(layeridclone, "clip", "rect("+(layerheight-currheight)+"px, "+layerwidth+"px, "+layerheight+"px, 0px)");
			sei_layer_set_style(layeridclone, "top", layertop-layerheight+currheight);
		}
		else
			sei_layer_set_style(layeridclone, "clip", "rect(0px, "+layerwidth+"px, "+currheight+"px, 0px)");
	}
	else
	{
		sei_layer_set_style(layerdummy, "height", layerheight-currheight);

		if (fademode=="scroll")
		{
			sei_layer_set_style(layeridclone, "clip", "rect("+(currheight)+"px, "+layerwidth+"px, "+layerheight+"px, 0px)");
			sei_layer_set_style(layeridclone, "top", layertop-currheight);
		}
		else
			sei_layer_set_style(layeridclone, "clip", "rect(0px, "+layerwidth+"px, "+layerheight-currheight+"px, 0px)");
	}

// --- Transparenz der sich überblendenen Layer berechnen ---------------------
	if (direction=="fadein")
		sei_layer_transparency(layeridclone,(100*currstep));
	else
		sei_layer_transparency(layeridclone,100-(100*currstep));

	if (currstep<1)
		window.setTimeout("sei_layer_fade_action('"+layerid+"',"+layertop+","+layerwidth+","+layerheight+","+duration+","+starttime+",'"+direction+"','"+fademode+"')",10);
	else
	{

// --- Endposition der Überblendung -------------------------------------------

		if (direction=="fadein")
		{
			document.getElementById(layerdummy).style.display='none';
			document.getElementById(layerid).style.display='';
			document.getElementById(layeridclone).style.display='none';
		}
		else
		{
			document.getElementById(layerdummy).style.display='none';
			document.getElementById(layerid).style.display='none';
			document.getElementById(layeridclone).style.display='none';
		}

// --- Geclonte Layer und Platzhalter wieder aus DOM entfernen ----------------

		window.setTimeout("document.getElementById('"+layerdummy+"').parentNode.removeChild(document.getElementById('"+layerdummy+"')); document.getElementById('"+layeridclone+"').parentNode.removeChild(document.getElementById('"+layeridclone+"')); moveprocess['"+layerid+"']=false; moveprocess['"+layerid+"']=false;",10);
	}
}

function sei_alternatives_register(key,subkey,divid)
{
	if (typeof sei_alternatives != 'object')
		sei_alternatives = new Array();
	if (typeof sei_alternatives[key] != 'object')
		sei_alternatives[key] = new Array();

	sei_alternatives[key][subkey] = divid;
}

function sei_switch_alternative(key,subkey)
{
	// Wenn ein Objekt übergeben wurde (im Aufruf steht wahrscheinlich this) dessen Wert als Block-Key nehmen
	if (typeof subkey == 'object')
		subkey = subkey.value;

	if (typeof sei_alternatives[key] != 'undefined' && typeof sei_alternatives[key][subkey] != 'undefined')
	{
		for (i in sei_alternatives[key])
			if (i == subkey)
				document.getElementById(sei_alternatives[key][i]).style.display = 'block';
			else
				document.getElementById(sei_alternatives[key][i]).style.display = 'none';
	}
	else
		alert('There is no alternative block called "'+key+' -> '+subkey+'"');
}

function sei_optional_register(key,divid)
{
	if (typeof sei_optionals != 'object')
		sei_optionals = new Array();
	if (typeof sei_optionals[key] != 'object')
		sei_optionals[key] = new Array();

	sei_optionals[key].push(divid);
}

// sei_switch_optional
// ===================
// Mögliche Typen für state:
// - Objekt -> Der value-Wert des Objektes wird genommen
// - Nichts -> Die Sichtbarkeit wird umgeschaltet
// - Bool   -> true für sichtbar, false für unsichtbar

function sei_switch_optional(key,state)
{
	// Wenn ein Objekt übergeben wurde (im Aufruf steht wahrscheinlich this) dessen
	// checked-Wert als Zustand nehmen (für Bindung an Checkbox)
	if (typeof state == 'object')
		state = state.checked;

	if (typeof sei_optionals[key] != 'undefined')
	{
		for (i in sei_optionals[key])
		{
			// Ein nicht übergebenes "state" schaltet um
			if (typeof state == 'undefined')
				document.getElementById(sei_optionals[key][i]).style.display = ( (document.getElementById(sei_optionals[key][i]).style.display == 'none') ? 'block' : 'none' );
			else
			{
				if (state)
					document.getElementById(sei_optionals[key][i]).style.display = 'block';
				else
					document.getElementById(sei_optionals[key][i]).style.display = 'none';
			}
		}
	}
	else
		alert('There is no optional block called "'+key+'"');

}