function sei_href_link(parameters, url, keepparameter)
{
	if (typeof(keephttp)!="object" && typeof(keephttp)!="boolean")
		keepparameter=true;

	if (typeof(url)=="undefined")
		url=false;

	// Erkennen, ob eine volle URL übergeben wurde
	if (url!=false)
	{
		if (url.indexOf("://")>=0)
			urlcomplete = true;
		else
			urlcomplete = false;
	}
	else
		urlcomplete=false;

	// Prüfen, ob es eine URL zu einer Systemdatei ist
	if (urlcomplete==true)
	{
		if (typeof(HTTP_SYS)!="undefined")
		{
			if (url.substr(0,HTTP_SYS.length)==HTTP_SYS)
				urlsystem=true;
			else
				urlsystem=false;
		}
	}

	// Parameter-Array vorbereiten
	parameter_array = new Array();

	getparameter=""+document.location.search
	getparameter=getparameter.substr(1,getparameter.length);
	getarray=getparameter.split("&");

	getvalues=new Array();

	for (getid in getarray)
	{
		getparameter=getarray[getid].split("=");
		getvalues[getparameter[0]] = getparameter[1];
	}

	// Momentane Parameter laden (sofern wegen $keepparameter = true mitzuführen)
	if (urlcomplete==false && keepparameter==true)
	{
		for (parameterkey in getvalues)
			parameter_array[parameterkey] = getvalues[parameterkey];
	}

	// Durch sei_linkparameter_add bzw. sei_linkparameter_drop markierte Parameter ergänzen bzw. löschen
	if (urlcomplete==false || urlsystem==true)
	{
		if (typeof(sei_linkparameters_add)!="undefined")
		{
			for (parameterkey in sei_linkparameters_add)
			{
				if (sei_linkparameters_add[parameterkey]==false)
					parameter_array[parameterkey]=getvalues[parameterkey];
				else
					parameter_array[parameterkey]=sei_linkparameters_add[parameterkey];
			}
		}

		if (typeof(sei_linkparameters_drop)!="undefined")
		{
			for (parameterkey in sei_linkparameters_drop)
				parameter_array[parameterkey]=null;
		}
	}

	// Der Funktion übergebene Parameter laden/überschreiben
	setarray=parameters.split("&");

	for (getid in setarray)
	{
		setparameter=setarray[getid].split("=");
		if (setparameter[1]>"")
			parameter_array[setparameter[0]]=setparameter[1];
		else
			parameter_array[setparameter[0]]=null;
	}

	// Neue URL laden...
	if (url==false)
		createdurl=document.location.protocol+"//"+document.location.host+document.location.pathname;
	else
	{
		if (url.substr(0,1)=="/")
			createdurl=HTTP_APP+url.substr(1);
		else
			createdurl=url;
	}

	// ... Parameter dranpacken ...
	first = true;
	for (key in parameter_array)
	{
		if (parameter_array[key]!=null)
		{
			if (first==true)
				createdurl+="?"
			else
				createdurl+="&";

			createdurl+=key+"="+parameter_array[key];
			first = false;
		}
	}

	// ... und zurückgeben.
	return createdurl;
}

function sei_href_parameter_add(parameters, url)
{
	urlparts=url.split("?");

	oldparameters=urlparts[1];

	currparameter=new Array();

	if (oldparameters>"")
	{
		parameterparts=oldparameters.split("&");

		for(dummy in parameterparts)
		{
			currparameterarray=parameterparts[dummy].split("=");
			currparameter[currparameterarray[0]]=currparameterarray[1];
		}
	}

	newparameterparts=parameters.split("&");
	for(dummy in newparameterparts)
	{
		currparameterarray=newparameterparts[dummy].split("=");
		currparameter[currparameterarray[0]]=currparameterarray[1];
	}

	newlink=urlparts[0];
	parametercount=0;

	for(parameterkey in currparameter)
	{
		if (parametercount==0)
			newlink+="?";
		else
			newlink+="&";

		newlink+=parameterkey+"="+currparameter[parameterkey];

		parametercount++;
	}

	return newlink;
}

function sei_redirect(seturl)
{
	document.location=seturl;
}

function replaceall(textstring, oldstring, newstring)
{
	while(textstring.search(oldstring)!=-1)
		textstring=textstring.replace(oldstring,newstring);

	return (textstring);
}

function element_setting_setmultiple(elementkey, settingstring)
{
	settingarray=settingstring.split(";");

	for (settingvalue in settingarray)
	{
		currsetting=settingarray[settingvalue].split("=");

		if (currsetting[1]=="true")
			element_setting_set(elementkey, currsetting[0], true);
		else if (currsetting[1]=="false")
			element_setting_set(elementkey, currsetting[0], false);
		else if (currsetting[1]==Number(currsetting[1]))
			element_setting_set(elementkey, currsetting[0], Number(currsetting[1]));
		else
			element_setting_set(elementkey, currsetting[0], unescape(currsetting[1]));
	}
}

function element_setting_set(elementkey, settingkey, settingvalue)
{
	if (typeof(js_setting_cache)=='undefined')
	  js_setting_cache=new Array();

	if (typeof(js_setting_cache[elementkey])=='undefined')
	  js_setting_cache[elementkey]=new Array();

	js_setting_cache[elementkey][settingkey]=settingvalue;
}

function element_setting_get(elementkey, settingkey)
{
	if (typeof(js_setting_cache)=='undefined')
		return null;
	else if (typeof(js_setting_cache[elementkey])=='undefined')
		return null;
	else if (typeof(js_setting_cache[elementkey][settingkey])=='undefined')
		return null;
	else
		return js_setting_cache[elementkey][settingkey];
}

function element_setting_check(elementkey, settingkey)
{
	if (typeof(js_setting_cache)=='undefined')
		return false;
	else if (typeof(js_setting_cache[elementkey])=='undefined')
		return false;
	else if (typeof(js_setting_cache[elementkey][settingkey])=='undefined')
		return false;
	else
		return true;
}

function element_slice_setmultiple(elementkey, slicestring)
{
	slicearray=slicestring.split(";");

	for (slicevalue in slicearray)
	{
		currslice=slicearray[slicevalue].split("=");

		element_slice_set(elementkey, currslice[0], unescape(currslice[1]));
	}
}

function element_slice_set(elementkey, slicekey, slicevalue)
{
	if (typeof(js_slice_cache)=='undefined')
	  js_slice_cache=new Array();

	if (typeof(js_slice_cache[elementkey])=='undefined')
	  js_slice_cache[elementkey]=new Array();

	js_slice_cache[elementkey][slicekey]=slicevalue;
}

function element_slice_get(elementkey, slicekey)
{
	if (typeof(js_slice_cache)=='undefined')
		return null;
	else if (typeof(js_slice_cache[elementkey])=='undefined')
		return null;
	else if (typeof(js_slice_cache[elementkey][slicekey])=='undefined')
		return null;
	else
		return js_slice_cache[elementkey][slicekey];
}

function element_slice_check(elementkey, slicekey)
{
	if (typeof(js_slice_cache)=='undefined')
		return false;
	else if (typeof(js_slice_cache[elementkey])=='undefined')
		return false;
	else if (typeof(js_slice_cache[elementkey][slicekey])=='undefined')
		return false;
	else
		return true;
}
