function loadNeuigkeitVolleText(tagA,neuigkeitId)
{
	nodeDIV = Y.one('#neuigkeitVolleText_'+neuigkeitId);
	nodeDIVkurze = Y.one('#neuigkeitKurzeText_'+neuigkeitId);
	nodeDIV_content = trim(nodeDIV.getContent());
	if ( empty(nodeDIV_content) )
	{
		bearbeiter = 'posten_getNeuigkeit';
		mappe = 'posten';
		params = 'id='+neuigkeitId;
		insertAjaxLoader(Y.one(tagA));
		nodeDIVkurze.hide(true);
		fnComplete = function()
		{
			removeAjaxLoader();
			nodeDIV.setStyle('overflow','hidden');
			nodeDIV.setStyle('height','0px');
			nodeDIV.setContent(responseText);
			toggleNeuigkeitVolleText(tagA,neuigkeitId);
		}
		ajaxResponse(bearbeiter,mappe,params,fnComplete);
	}
	else
	{
		toggleNeuigkeitVolleText(tagA,neuigkeitId);
	}
}
function showNeuigkeitVolleText(tagA,neuigkeitId)
{
	nodeDIV = Y.one('#neuigkeitVolleText_'+neuigkeitId);
	nodeDIVkurze = Y.one('#neuigkeitKurzeText_'+neuigkeitId);
	nodeDIV_content = trim(nodeDIV.getContent());
	if ( empty(nodeDIV_content) )
	{
		bearbeiter = 'posten_getNeuigkeit';
		mappe = 'posten';
		params = 'id='+neuigkeitId;
		insertAjaxLoader(Y.one(tagA));
		nodeDIVkurze.hide(true);
		fnComplete = function()
		{
			removeAjaxLoader();
			nodeDIV.setStyle('overflow','hidden');
			nodeDIV.setStyle('height','0px');
			nodeDIV.setContent(responseText);
			toggleNeuigkeitVolleText(tagA,neuigkeitId);
		}
		ajaxResponse(bearbeiter,mappe,params,fnComplete);
	}
	else
	{
		toggleNeuigkeitVolleText(tagA,neuigkeitId);
	}
}
function toggleNeuigkeitVolleText(tagA,neuigkeitId)
{
	nodeA = Y.one(tagA);
	nodeDIV = Y.one('#neuigkeitVolleText_'+neuigkeitId);
	nodeDIVkurze = Y.one('#neuigkeitKurzeText_'+neuigkeitId);
	nodeDIV.setStyle('overflow','hidden');
	if ( nodeDIV.getStyle('height') != '0px' )
	{
		var anim = new Y.Anim({
			node: nodeDIV,
			to: { height: 0 },
			easing: Y.Easing.easeBoth
		});
	}
	else
	{
		nodeDIVkurze.hide(true);
		var anim = new Y.Anim({
			node: nodeDIV,
			to: { height: nodeDIV.get('scrollHeight') },
			easing: Y.Easing.easeIn
		});
	}
	nodeA_onclick = nodeA.getAttribute('onclick');
	nodeA.setAttribute('onclick','return false;');
	nodeA.addClass('gray');
	anim.on('end',function()
	{
		nodeA_content = nodeA.getContent();
		nodeA.setContent(nodeA.getAttribute('lang'));
		nodeA.setAttribute('lang',nodeA_content);
		nodeA.setAttribute('onclick',nodeA_onclick);
		nodeA.removeClass('gray');
		if ( nodeDIV.getStyle('height') == '0px' )
		{
			nodeDIVkurze.show(true);
		}
		windowoptions();
		scrollContent();
	});
	anim.run();
}
function ajax(bearbeiter,mappe,params,fnComplete)
{
	pattern = /^[0-9]+$/;
	if ( pattern.test(params) )
	{
		params = 'id='+params;
	}
	YUI().use('node', 'io-base', function(Y) {
		var uri = systemUrl + 'X=' + bearbeiter;
		var cfg = {
			method: 'POST',
			data: 'mappe=' + mappe +'&' + params
		}
		
		function complete(id, o, args) {
			if ( !empty(o.responseText) )
			{
				alert(o.responseText);
			}
			if ( !empty(fnComplete) )
			{
				fnComplete();
			}
		};
		Y.on('io:complete', complete, Y, ['lorem', 'ipsum']);
		
		var request = Y.io(uri,cfg);
	});
}

var responseText = null;
function ajaxResponse(bearbeiter,mappe,params,fnComplete)
{
	pattern = /^[0-9]+$/;
	if ( pattern.test(params) )
	{
		params = 'id='+params;
	}
	YUI().use('node', 'io-base', function(Y) {
		var uri = systemUrl + 'X=' + bearbeiter;
		var cfg = {
			method: 'POST',
			data: 'mappe=' + mappe +'&' + params
		}
		
		function complete(id, o, args) {
			if ( !empty(o.responseText) )
			{
				responseText = o.responseText;
			}
			if ( !empty(fnComplete) )
			{
				fnComplete();
			}
		};
		Y.on('io:complete', complete, Y, ['lorem', 'ipsum']);
		
		var request = Y.io(uri,cfg);
	});
}

var ajaxLoaderId;
var nodeBeforeAjaxLoaderId;
var ajaxLoaderImg = new Image();
ajaxLoaderImg.src = serviceUrl+'darstellungen/ajax-loader.gif';
function insertAjaxLoader(node,containerHtml)
{
	if ( !empty(ajaxLoaderId) )
	{
		Y.one('#'+ajaxLoaderId).remove();
	}
	if ( empty(containerHtml) )
	{
		containerHtml = '<div style="position:relative;float:right;"></div>';
	}
	nodeAjaxLoader = Y.one('body').create(containerHtml);
	nodeAjaxLoader.setContent('<img src="'+ajaxLoaderImg.src+'" style="position:absolute;margin-left:-45px;margin-top:25px;z-index:32000;">');
	ajaxLoaderId = nodeAjaxLoader.generateID();
	node.insert(nodeAjaxLoader,'append');
}
function removeAjaxLoader()
{
	if ( !empty(ajaxLoaderId) )
	{
		if ( Y.one('#'+ajaxLoaderId) != null )
		{
			Y.one('#'+ajaxLoaderId).remove();
		}
		ajaxLoaderId = '';	
	}
}

function throughText(id)
{
	document.getElementById(id).style.textDecoration = 'line-through';
}
function unThroughText(id)
{
	document.getElementById(id).style.textDecoration = '';
}

function addClass(obj,className)
{
	YAHOO.util.Dom.addClass(obj, className);
}
function removeClass(obj,className)
{
	YAHOO.util.Dom.removeClass(obj, className);
}
function clearnl(text)
{
	text = text.replace(/\n/g, '');
	text = text.replace(/\r/g, '');
	return text;
}
function getCalendar(calendarId)
{
	layerId = 'd_calendar_'+calendarId;
	params = 'calendarId='+calendarId;
	gewahlteTag = document.getElementById('i_tag_'+calendarId).value;
	params += '&gewahlteTag=' + gewahlteTag;
	gewahlteMonat = document.getElementById('i_monat_'+calendarId).value;
	params += '&gewahlteMonat=' + gewahlteMonat;
	gewahlteJahr = document.getElementById('i_jahr_'+calendarId).value;
	params += '&gewahlteJahr=' + gewahlteJahr;
	if ( document.getElementById(layerId).style.display != 'block' )
	{
		loadTo('datum_getCalendar',params,layerId,'noclose','','');
	}
	else
	{
		document.getElementById(layerId).style.display = 'none';
	}
}

function setDatumFromCalendar(calendarId,tag,monat,jahr)
{
	layerId = 'd_calendar_'+calendarId;
	document.getElementById('i_tag_'+calendarId).value = tag;
	document.getElementById('option_monat_'+calendarId+'_'+monat).selected = true;
	document.getElementById('i_jahr_'+calendarId).value = jahr;
	document.getElementById(layerId).style.display = 'none';
}

function updateCalendar(calendarId,datumTag)
{
	layerId = 'd_calendar_'+calendarId;
	params = 'calendarId='+calendarId;
	params += '&datumTag='+datumTag;
	loadTo('datum_getCalendar',params,layerId,'noclose','','');
}

function checkEmpty(elementId,schweineText)
{
	if ( document.getElementById(elementId) != undefined )
	{
		bedeutung = document.getElementById(elementId).value;
		if ( bedeutung != '' )
		{
			if ( trim(bedeutung) != '' )
			{
				return true;
			}
			else
			{
				if ( schweineText != undefined )
				{
					alert(schweineText);
				}
				return false;
			}
		}
		else
		{
			if ( schweineText != undefined )
			{
				alert(schweineText);
			}
			return false;
		}
	}
	else
	{
		alert('row ' + elementId + ' not found');
		return false;
	}
}

function checkEmptyTitel(elementId,schweineText)
{
	if ( elementId == undefined )
	{
		elementId = 'i_titel';
	}
	if ( schweineText == undefined )
	{
		schweineText = 'name is empty';
	}
	if ( document.getElementById(elementId) != undefined )
	{
		titel = document.getElementById(elementId).value;
		if ( titel != '' )
		{
			if ( trim(titel) != '' )
			{
				return true;
			}
			else
			{
				alert(schweineText);
				return false;
			}
		}
		else
		{
			alert(schweineText);
			return false;
		}
	}
	else
	{
		alert('row i_titel not found');
		return false;
	}
}
function formSubmit(formId,callbackFunc,resultLayerId)
{
	submitForm(formId,callbackFunc,resultLayerId);
	return false;
}
function submitForm(formId,callbackFunc,resultLayerId)
{
	YAHOO.util.Connect.setForm(document.getElementById(formId),true);
	window.setTimeout(function(){submitFormGo(formId,callbackFunc,resultLayerId);},15); // Special for Opera 10
	return false;
}
function submitFormGo(formId,callbackFunc,resultLayerId)
{
	var sUrl = document.getElementById(formId).action;
	request = YAHOO.util.Connect.asyncRequest
	(
		'POST',
		sUrl,
		{
			upload:function(obj)
			{
				if ( callbackFunc != '' )
				{
					eval(callbackFunc);
				}
				if ( resultLayerId != '' )
				{
					document.getElementById(resultLayerId).innerHTML = obj.responseText;
				}
			}
		}
	);
}
function loadTo(bearbeiter,params,layerId,noclose,display,callbackFunc,cancelCallback,e)
{
	if ( bearbeiter != undefined && bearbeiter != '' )
	{
		if ( params == undefined || params == '' )
		{
			params = '';
		}
		else
		{
			params = "&" + params;
		}
		if ( layerId == undefined || layerId == '' )
		{
			layerId = 'd_window';
		}
		if ( e != undefined )
		{
			document.getElementById(layerId).style.marginTop = YAHOO.util.Event.getPageY(e) + 10;
			document.getElementById(layerId).style.zIndex = 32256;
		}
		else
		{
			if ( layerId == 'd_window' )
			{
				document.getElementById(layerId).style.marginTop = 25;
			}
			else
			{
				document.getElementById(layerId).style.marginTop = 0;
			}
		}
		var sUrl = systemUrl + "X=" + bearbeiter + params + "&ajaxRequest=1";
		request = YAHOO.util.Connect.asyncRequest('GET', sUrl, {
			success:function(obj)
				{
					if ( noclose != 'noclose' )
					{
						cancelButton_onclick = 'document.getElementById(\''+layerId+'\').innerHTML=\'\';document.getElementById(\''+layerId+'\').style.display=\'none\';';
						if ( callbackFunc !='' && cancelCallback == 'cancelCallback' )
						{
							cancelButton_onclick += callbackFunc;
						}
						cancelButton = '<a href="javascript:void(0);" onClick="'+cancelButton_onclick+'" class="cancelButton">x</a>';
					}
					else
					{
						cancelButton = '';
					}
					document.getElementById(layerId).innerHTML = '<div style="max-width:800px;">' + cancelButton + obj.responseText + '</div>';
					if ( display != 'none' )
					{
						document.getElementById(layerId).style.display = "block";
					}
					//toogleEditorMode();
					if ( callbackFunc != undefined && callbackFunc != '' )
					{
						//alert(callbackFunc);
						eval(callbackFunc);
					}
				},
			failure:function(obj)
				{
					document.getElementById(layerId).innerHTML = "request '" + sUrl + "' is not complete";
					document.getElementById(layerId).style.display = "block";
				}
			});
	}
}

function prufen(wem,bedeutung)
{
	if ( wem == 'email' )
	{
		var reg= /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if ( reg.test(bedeutung) )
		{
			return true;
		}
	}
	return false;
}
function selectMonat(calendarId,keyCode)
{
	numericalKeyCodes = new Array(48,49,50,51,52,53,54,55,56);
	for ( monatIndex = 1; monatIndex <= 9; monatIndex++ )
	{
		if ( numericalKeyCodes[monatIndex] == keyCode )
		{
			document.getElementById('option_monat_'+calendarId+'_'+monatIndex).selected = true;
		}
	}
}
function include(fn) {
    document.write('<' + 'script');
    document.write(' type="text/javascript"');
    document.write(' src="' + fn + '">');
    document.write('</' + 'script' + '>');
}

function toggleLayer(id)
{
	if ( document.getElementById(id).style.display != 'block' )
	{
		document.getElementById(id).style.display = 'block';
	}
	else
	{
		document.getElementById(id).style.display = 'none';
	}
}
function toggleCheckbox(id)
{
	checkboxToggle(id);
}
function checkboxToggle(id)
{
	if ( document.getElementById(id).checked == true && document.getElementById(id).type != 'radio' )
	{
		document.getElementById(id).checked = false;
	}
	else
	{
		document.getElementById(id).click();
	}
}

var tinyMCEmode = true;
function toggleEditorMode(forceActiviert,tinyMCEIndex) {
	if ( thisTinyMCEId != '' )
	{
		if ( tinyMCEIndex > 0 )
		{
			tinyMCEIdSelected = tinyMCEId[tinyMCEIndex];
		}
		else
		{
			tinyMCEIdSelected = tinyMCEId[0];	
		}
		try {
			if(tinyMCEmode&&!forceActiviert) {
			tinyMCE.execCommand('mceRemoveControl', false, tinyMCEIdSelected);
			tinyMCEmode = false;
			} else {
			initMCE(tinyMCEIdSelected);
			tinyMCEmode = true;
			}
		} catch(e) {
			//error handling
		}
	}
	else
	{
		tinyMCEmode = false;	
	}
	return tinyMCEmode;
}

var thisTinyMCEId = '';
tinyMCEId = new Array();
var tineMCE = '';
function initMCE(elementId,nichtAktiviert,disposition)
{
	domReady(function(){
		var msh = document.createElement('div');
		thisTinyMCEId = elementId;
		tinyMCEId.push(thisTinyMCEId);
		msh.className = "mceStatusHidden";
		if ( nichtAktiviert == 1 )
		{
			window.setTimeout(function(){tinyMCE.activeEditor.focus();toggleEditorMode('',tinyMCEId[tinyMCEId.length - 1]);},500);	
		}
		else
		{
		if ( disposition == 'small' )
		{
			var buttons = {
			theme_advanced_buttons1 : "save,|,bold,italic,underline,strikethrough,attribs,link,|,formatselect",
				theme_advanced_buttons2 : "justifyleft,justifycenter,justifyright,justifyfull,|,image,images,|,code",
				theme_advanced_buttons3 : "",
				theme_advanced_buttons4 : ""
				};
		}
		else
		{
			var buttons = {
			theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
				theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,images,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
				theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
				theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage"
				};
		}
		var general = {
			// General options
				mode : "exact",
				elements : elementId,
				theme : "advanced",
				plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,images"
		};
		var theme = {
			// Theme options
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_statusbar_location : "bottom",
				theme_advanced_resizing : true,
				theme_advanced_resize_horizontal : false,
				file_browser_callback: "imgLibManager.open",
				relative_urls : true
		};
		var skin = {
			// Skin options
				skin : "o2k7",
				skin_variant : "silver"
		};
		var links = {
			relative_urls : false,
			// Example content CSS (should be your site CSS)
				content_css : "/styleMCE.css,/media/tinyMCE.css",
				// Drop lists for link/image/media/template dialogs
				template_external_list_url : "js/template_list.js",
				external_link_list_url : "js/link_list.js",
				external_image_list_url : "js/image_list.js",
				media_external_list_url : "js/media_list.js"
		};
		var templateValues = {
			// Replace values for the template plugin
				template_replace_values : {
					username : "Some User",
					staffid : "991234"
				}
		};
		config = Y.merge(buttons, general, theme, skin, links, templateValues)
			tinyMCE.init(config);
			//imgLibManager.init({url: mediaUrl+'script/imglib/index.html'});
			/*
			tinyMCE.init
			({
				mode : "exact",
				elements : elementId,
				theme : "advanced",
				skin : "default",
				content_css : habitatUrl + "css.css",
				theme_advanced_resizing : true,
				theme_advanced_resize_horizontal : false,
				theme_advanced_resizing_min_height : 150,
				theme_advanced_toolbar_location : "top",
				theme_advanced_statusbar_location : "bottom",
				relative_urls : false,
				document_base_url : habitatUrl,
				plugins: "table,xhtmlxtras,images",
				theme_advanced_buttons1 : "bold,italic,underline,strikethrough,attribs,|,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist",
				theme_advanced_buttons2 : "undo,redo,|,image,images,|,link,|,formatselect,hr,|,sub,sup,|,charmap,|,code,removeformat",
				theme_advanced_buttons3 : "tablecontrols",
				language : "ru"
			});
			*/
			window.setTimeout(function(){if(0){tinyMCE.activeEditor.focus();}},500);
			
		}
	});
}


function getObjectProps(obj, objName)
{
    var result = "";
    for (var i in obj) result += objName + "." + i + " = " + obj[i] + "<BR>\n";
    return result;
}
function addHandler(object, event, handler)
{
	if ( typeof object.addEventListener != 'undefined' )
	{
		object.addEventListener(event, handler, false);
	}
	else if ( typeof object.attachEvent != 'undefined' )
	{
		object.attachEvent('on' + event, handler);
	}
	else
	{
		throw "Incompatible browser";
	}
}
function domReady(f)
{
	if ( domReady.done )
	{
		return f();
	}
	if ( domReady.timer )
	{
		domReady.ready.push(f);
	}
	else
	{
		if ( window.addEventListener )
		{
			window.addEventListener('load',isDOMReady,false);
		}
		else if (window.attachEvent)
		{
			window.attachEvent('onload',isDOMReady);
		}
		domReady.ready=[f];
		domReady.timer=setInterval(isDOMReady,13);
	}
}
function isDOMReady()
{
	if ( domReady.done )
	{
		return false;
	}
	if ( document && document.getElementsByTagName && document.getElementById && document.body )
	{
		clearInterval(domReady.timer);
		domReady.timer=null;
		for (i=0;i<domReady.ready.length;i++) domReady.ready[i]();
		domReady.ready=null;
		domReady.done=true;
	}
}

// similar PHP functions

function trim (str, charlist)
{
	var whitespace, l = 0, i = 0;
	str += '';
	if (!charlist)
	{
		whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
	}
	else
	{
		charlist += '';
		whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	}
	l = str.length;
	for (i = 0; i < l; i++)
	{
		if ( whitespace.indexOf(str.charAt(i) ) === -1)
		{
			str = str.substring(i);
			break;
		}
	}
	l = str.length;
	for (i = l - 1; i >= 0; i--)
	{
		if ( whitespace.indexOf(str.charAt(i) ) === -1 )
		{
			str = str.substring(0, i + 1);
			break;
		}
	}
	return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
function strtolower(str)
{
	return (str+'').toLowerCase();
}
function empty(mixed_var)
{
	var key;
	if ( mixed_var === "" || mixed_var === 0 || mixed_var === "0" || mixed_var === null || mixed_var === false || mixed_var === undefined )
	{
		return true;
	}
	if ( typeof mixed_var == 'object' )
	{
		for ( key in mixed_var )
		{
			return false;
		}
		return true;
	}
	return false;
}
function is_array(arr)
{
        return typeof arr === 'object' && typeof arr.length === 'number' && !(arr.propertyIsEnumerable('length')) && typeof arr.splice === 'function';
};
function ohneLeere(daten)
{
	datenOhneLeere = new Array();
	if ( is_array(daten) )
	{
		for ( i = 0; i < daten.length; i++ )
		{
			if ( !is_array(daten[i]) && trim(daten[i]) == '' ) continue;
			array_push(datenOhneLeere,daten[i]);
		}
	}
	return datenOhneLeere;
}
function array_push ( array ) {
    // Pushes elements onto the end of the array  
    // 
    // version: 810.114
    // discuss at: http://phpjs.org/functions/array_push
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: array_push(['kevin','van'], 'zonneveld');
    // *     returns 1: 3
    var i, argv = arguments, argc = argv.length;

    for (i=1; i < argc; i++){
        array[array.length++] = argv[i];
    }

    return array.length;
}
function explode( delimiter, string, limit )
{
	var emptyArray = { 0: '' };
	if ( arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined' )
	{
		return null;
	}
	if ( delimiter === '' || delimiter === false || delimiter === null )
	{
		return false;
	}
	if ( typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object' )
	{
		return emptyArray;
	}
	if ( delimiter === true )
	{
		delimiter = '1';
	}
	if (!limit)
	{
		return string.toString().split(delimiter.toString());
	}
	else
	{
		var splitted = string.toString().split(delimiter.toString());
		var partA = splitted.splice(0, limit - 1);
		var partB = splitted.join(delimiter.toString());
		partA.push(partB);
		return partA;
	}
}
function in_array(needle, haystack, argStrict)
{
	var found = false, key, strict = !!argStrict;
	for (key in haystack)
	{
		if ( (strict && haystack[key] === needle) || (!strict && haystack[key] == needle) )
		{
			found = true;
			break;
		}
	}
	return found;
}
function array_splice (arr, offst, lgth, replacement)
{
	var checkToUpIndices = function (arr, ct, key)
	{
		if (arr[ct] !== undefined)
		{
			var tmp = ct;
			ct += 1;
			if (ct === key)
			{
				ct += 1;
			}
			ct = checkToUpIndices(arr, ct, key);
			arr[ct] = arr[tmp];
			delete arr[tmp];
		}
		return ct;
	}
	if ( replacement && !(typeof replacement === 'object') )
	{
		replacement = [replacement];
	}
	if ( lgth === undefined )
	{
		lgth = offst >= 0 ? arr.length - offst : -offst;
	}
	else if ( lgth < 0 )
	{
		lgth = (offst >= 0 ? arr.length - offst : -offst)  + lgth;
	}
	if ( !(arr instanceof Array) )
	{
		var lgt = 0, ct = -1, rmvd = [], rmvdObj = {}, repl_ct=-1, int_ct=-1;
		var returnArr = true, rmvd_ct = 0, rmvd_lgth = 0, key = '';
		for (key in arr)
		{
			lgt += 1;
		}
		offst = (offst >= 0) ? offst : lgt + offst;
		for (key in arr)
		{
			ct += 1;
			if ( ct < offst )
			{
				if ( is_int(key) )
				{
					int_ct += 1;
					if (parseInt(key, 10) === int_ct)
					{
						continue;
					}
					checkToUpIndices(arr, int_ct, key);
					arr[int_ct] = arr[key];
					delete arr[key];
				}
				continue;
			}
			if ( returnArr && is_int(key) )
			{
				rmvd.push(arr[key]);
				rmvdObj[rmvd_ct++] = arr[key];
			}
			else
			{
				rmvdObj[key] = arr[key];
				returnArr    = false;
			}
			rmvd_lgth += 1;
			if ( replacement && replacement[++repl_ct] )
			{
				arr[key] = replacement[repl_ct]
			}
			else
			{
				delete arr[key];
			}
		}
		return returnArr ? rmvd : rmvdObj;
	}
	if (replacement)
	{
		replacement.unshift(offst, lgth);
		return Array.prototype.splice.apply(arr, replacement);
	}
	return arr.splice(offst, lgth);
}
function array_slice(arr, offst, lgth, preserve_keys)
{
	var key = '';
	if ( !(arr instanceof Array) || (preserve_keys && offst != 0))
	{
		var lgt =0, newAssoc = {};
		for (key in arr)
		{
			lgt += 1;
			newAssoc[key] = arr[key];
		}
		arr = newAssoc;
		offst = (offst < 0) ? lgt + offst : offst;
		lgth  = lgth == undefined ? lgt : (lgth < 0) ? lgt + lgth - offst : lgth;
		var assoc = {};
		var start = false, it=-1, arrlgth=0, no_pk_idx=0;
		for (key in arr)
		{
			++it;
			if ( arrlgth >= lgth )
			{
				break;
			}
			if ( it == offst )
			{
				start = true;
			}
			if ( !start )
			{
				continue;
			}
			++arrlgth;
			if ( is_int(key) && !preserve_keys )
			{
				assoc[no_pk_idx++] = arr[key];
			}
			else
			{
				assoc[key] = arr[key];
			}
		}
	return assoc;
	}
	if ( lgth === undefined )
	{
		return arr.slice(offst);    
	}
	else if ( lgth >= 0 )
	{
		return arr.slice(offst, offst + lgth);
	}
	else
	{
		return arr.slice(offst, lgth);
	}
}
function implode( glue, pieces )
{
    return ( ( pieces instanceof Array ) ? pieces.join ( glue ) : pieces );
}
function array_search( needle, haystack, argStrict )
{
	var strict = !!argStrict;
	var key = '';
	for (key in haystack)
	{
		if ( (strict && haystack[key] === needle) || (!strict && haystack[key] == needle) )
		{
			return key;
		}
	}
	return false;
}
function str_replace(search, replace, subject)
{
    var s = subject;
    var ra = r instanceof Array, sa = s instanceof Array;
    var f = [].concat(search);
    var r = [].concat(replace);
    var i = (s = [].concat(s)).length;
    var j = 0;
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    }
    return sa ? s : s[0];
}
function ceil(value) {
    // Returns the next highest integer value of the number  
    // 
    // version: 810.114
    // discuss at: http://phpjs.org/functions/ceil
    // +   original by: Onno Marsman
    // *     example 1: ceil(8723321.4);
    // *     returns 1: 8723322
    return Math.ceil(value);
}

var SelectedItem;
var SelectedX, SelectedY;
var aMouseX, aMouseY;

function Move(ClickedItem)
{
SelectedItem = ClickedItem;
SelectedX = SelectedItem.style.pixelLeft;
SelectedY = SelectedItem.style.pixelTop;
aMouseX = event.clientX;
aMouseY = event.clientY;
document.onmousemove = Drag;
document.onmouseup = Drop;
}
function Drag()
{
SelectedItem.style.left = SelectedX + (event.clientX - aMouseX);
SelectedItem.style.top = SelectedY + (event.clientY - aMouseY);
return false;
}
function Drop()
{
document.onmousemove = null;
document.onmouseup = null;
}
function popFenster(ev,fensterId,vorsagenId,offsetX)
{
	bearbeiter = 'vorsagen_getFenster';
	params = '&fensterId='+fensterId;
	params += '&vorsagenId='+vorsagenId;
	layerId = 'd_'+fensterId;
	var sUrl = systemUrl + "X=" + bearbeiter + params;
	request = YAHOO.util.Connect.asyncRequest('GET', sUrl, {
		success:function(obj)
			{
				document.getElementById(layerId).innerHTML = obj.responseText;
				show_bar(ev,fensterId,offsetX);
			},
		failure:function(obj)
			{
				document.getElementById(layerId).innerHTML = "request '" + sUrl + "' is not complete";
			}
		});
}
function show_bar(ev,windowId,offsetX) {
MouseX = ev.clientX + document.body.scrollLeft;
MouseY = ev.clientY + document.body.scrollTop;
obj = document.getElementById('d_'+windowId);
obj.style.top = MouseY + 7;
obj.style.left = MouseX - offsetX + 'px';
obj.style.visibility = "visible";
}
function hide_bar(windowId) {

document.getElementById('d_'+windowId).style.visibility="hidden"
}
function show_opac(real,windowId) {
 if (real==0) {
  document.getElementById('d_'+windowId).style.filter = "alpha(opacity=100)";
  document.getElementById('d_'+windowId).style.opacity = 1;
 }
 else {
  document.getElementById('d_'+windowId).style.filter = "alpha(opacity=95)";
  document.getElementById('d_'+windowId).style.opacity = 0.95;
 }
}
