var detect = navigator.userAgent.toLowerCase();
var STYLE_FADE = 1;
var STYLE_COLORS = 2;
var STYLE_FADE_AND_COLORS = 3;
var availableLogos = [{"id":"0","title":"Logo1"}];

progBarImg = new Image();
progBarImg.src = "http://control.jobcluster.de/_imagepool/prog_bar_img.gif";
progBarImg.align = "absmiddle";

function createProgBar(){
	setMouseHandler(tipMouseHandler);
	opacity = 0.3;
	
	if(window.innerHeight){
		winW = window.innerWidth;
	  	winH = window.innerHeight;
	}else{
		winW = document.body.offsetWidth;
 		winH = document.body.offsetHeight;
	}
	var div1 = document.createElement('div');
	div1.style.position = 'absolute';
	div1.style.left = '0px';
	div1.style.top = '0px';
	div1.style.height = winH+"px";
	div1.style.width = winW+"px";
	div1.style.background = "#000000";
	div1.style.filter = 'alpha(opacity="'+(opacity*100)+'")';
	div1.style.opacity = opacity;
	div1.style.cursor = 'progress';
			
	var div2 = document.createElement('div');
	div2.style.paddingTop = '20px';
	div2.style.fontWeight = 'bold';
	div2.style.border = '1px solid black';
	div2.style.position = 'absolute';
	div2.style.left = (Math.round(winW/2)-100)+"px";
	div2.style.top = (Math.round(winH/2)-50)+"px";
	div2.style.height = '100px';
	div2.style.width = '200px';
	div2.style.background = '#FFFFFF';
	div2.style.textAlign = 'center';
	div2.style.verticalAlign = 'middle';
	div2.style.filter = 'alpha(opacity=100)';
	div2.style.opacity = '1';
	div2.style.cursor = 'progress';
		
	var text1 = document.createTextNode('Bitte warten');
	div2.appendChild(text1);
	div2.appendChild(document.createElement('br'));
	
	var text2 = document.createTextNode('Daten werden geladen ...');
	div2.appendChild(text2);	
	div2.appendChild(document.createElement('br'));
	div2.appendChild(document.createElement('br'));
	
	div2.appendChild(progBarImg);
	div2.appendChild(document.createElement('br'));
	div2.appendChild(document.createElement('br'));
	
	var div3 = document.createElement('div');
	div3.style.float = 'right';
	div3.style.bottom = '0px';
	div3.style.marginRight = '3px';
	div3.style.marginBottom = '3px';
	div3.style.fontSize = '9px';
	div3.style.fontWeight = 'normal';
	div3.style.width = '99%';
	div3.style.textAlign = 'right';
	div3.style.cursor = 'pointer';
	//div3.onclick = function(){document.body.removeChild(document.body.lastChild); document.body.removeChild(document.body.lastChild);};	
	//LM 2008-03-14: Explizit die beiden Elemente ansprechen.
	div3.onclick = function(){document.body.removeChild(div1); document.body.removeChild(div2);};
	
	var div3Text = document.createTextNode('Schließen ');
	div3.appendChild(div3Text);
	
	var span = document.createElement('span');
	var spanText = document.createTextNode(' [?]');
	span.appendChild(spanText);
	span.onmouseover = function(){showTip('tipProgBar');};	
	span.onmouseout= function(){ hideCurrentTip();};	
	
	div3.appendChild(span);		
	div2.appendChild(div3)
	
	var tipBox = document.createElement('div');
	tipBox.id = 'tipProgBar';	
	tipBox.style.width = '200px';
	tipBox.className = 'tip';
	
	var tipBoxText = document.createTextNode('Diese Lade-Animation wird angezeigt, wenn ein Vorgang voraussichtlich ein paar Minuten dauern kann. Ein Schließen beendet den Ladevorgang nicht.');
	tipBox.appendChild(tipBoxText);
	
	document.body.appendChild(tipBox);
	
	document.body.appendChild(div1);
	document.body.appendChild(div2);
}


function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

if (checkIt('konqueror')) browser='konqueror'
else if (checkIt('safari')) browser= "Safari"
else if (checkIt('omniweb')) browser="OmniWeb"
else if (checkIt('opera')) browser="Opera"
else if (checkIt('webtv')) browser= "WebTV"
else if (checkIt('icab')) browser= "iCab"
else if (checkIt('msie')) browser="ie"
else if (checkIt('firefox')) browser= "Firefox"
else browser = "unknown";

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function toggleMenu(idname, imgpath ){
	img = document.getElementById(idname+"img");
	if(document.getElementById(idname).style.display == "none"){
		if(browser == "ie"){
			document.getElementById(idname).style.display = "block";
		}else{
			document.getElementById(idname).style.display = "table-row";
		}
		img.src= imgpath+"minus.gif";
	}else{
		document.getElementById(idname).style.display = "none";
		img.src= imgpath+"plus.gif"
	}
}

function toggleLaufzeitField(laufzeit_name, begindatum_trid, begindatum_id,  vonbis_trid, von_id, bis_id)
{
	if(document.getElementsByName(laufzeit_name)[0].value == "befristet")
	{
		document.getElementById(begindatum_trid+"2").style.display = 'none';
		document.getElementById(begindatum_trid+"1").style.display = 'none';
		document.getElementById(begindatum_id).disabled = true;
		document.getElementById(von_id).disabled = false;
		document.getElementById(bis_id).disabled = false;
		if(browser == "ie")
		{
			document.getElementById(vonbis_trid+"2").style.display = "block";
			document.getElementById(vonbis_trid+"1").style.display = "block";
		}else{
			document.getElementById(vonbis_trid+"1").style.display = "table-row";
			document.getElementById(vonbis_trid+"2").style.display = "table-row";
		}
	}
	else if(document.getElementsByName(laufzeit_name)[0].value == "unbefristet" || document.getElementsByName(laufzeit_name)[0].value == "eingeschraenkt")
	{
		document.getElementById(vonbis_trid+"2").style.display = "none";
		document.getElementById(vonbis_trid+"1").style.display = "none";
		document.getElementById(begindatum_id).disabled = false;
		document.getElementById(von_id).disabled = true;
		document.getElementById(bis_id).disabled = true;
		if(browser == "ie")
		{
			document.getElementById(begindatum_trid+"2").style.display = "block";
			document.getElementById(begindatum_trid+"1").style.display = "block";
		}else{
			document.getElementById(begindatum_trid+"1").style.display = "table-row";
			document.getElementById(begindatum_trid+"2").style.display = "table-row";
		}
	}
	else
	{
		document.getElementById(begindatum_trid+"2").style.display = 'none';
		document.getElementById(begindatum_trid+"1").style.display = 'none';
		document.getElementById(vonbis_trid+"2").style.display = "none";
		document.getElementById(vonbis_trid+"1").style.display = "none";
		document.getElementById(begindatum_id).disabled = true;
		document.getElementById(von_id).disabled = true;
		document.getElementById(bis_id).disabled = true;
	}
}

function updateOrtFields(landfeldname, plzfeldname, einsatzort)
{
	document.getElementsByName(plzfeldname)[0].value = "";
	document.getElementsByName(einsatzort)[0].value = "";
	if(document.getElementsByName(landfeldname)[0].value == "77")
	{
		document.getElementsByName(plzfeldname)[0].maxLength = "5";
	}
	else
	{
		document.getElementsByName(plzfeldname)[0].maxLength = "15";
	}
}

function clearFields(field1, field2, field3)
{
	document.getElementsByName(field1)[0].value = "";
	document.getElementsByName(field2)[0].value = "";
	document.getElementsByName(field3)[0].value = "";
}

function openPopupWindow(scriptname, x, y, resize, scrollbars, toolbar)
{
	x = window.open(scriptname, "Popup", "width="+x+", height="+y+", top=50, left=100, menubar=no, location=no, status=no, toolbar="+toolbar+", scrollbars="+scrollbars+", resizeable="+resize+"");
	x.moveTo (Math.floor ((screen.width-600)/2), Math.floor ((screen.height-600)/2));
	x.focus();
	return x;
}

//
//Tabellen-Toggle-Funktionen
//

menuinhalt = new Array();
//menuinhaltwhat = getCookie("whatmenuinhalt");

function toggleTR(trid, imgpath)
{
	if(browser == "ie"){
		what = 'block';
	}else{
		what = 'table-row';
	}
	tr = document.getElementById(trid);
	img = document.getElementById(trid+"img");
	if (tr.style.display=="none")
	{
		if(browser == "ie"){
			what = 'block';
		}else{
			what = 'table-row';
		}
		imgname = imgpath+"minus.gif";
	}
	else
	{
		what = "none";
		imgname = imgpath+"plus.gif";
	}
	//img-alternate text mit img.name tauschen
	alternate_old = img.alt;
	img.alt = img.name;
	img.name = alternate_old;

	tr.style.display=what;
	img.src = imgname;
}

state = true;

function toggleAll(imgpath, tr_array)
{
	if(state==true)
	{
		if(browser == "ie"){
			what = 'block';
		}else{
			what = 'table-row';
		}
		imgname = imgpath+"minus.gif";
		state = false;
	}
	else
	{
		what = "none";
		imgname = imgpath+"plus.gif";
		state = true;
	}

	if(tr_array == null) tr_array = menuinhalt;
	
	for(var i=0; i < tr_array.length; ++i)
	{
		tr = document.getElementById(tr_array[i]);
		img = document.getElementById(tr_array[i]+"img");

		//img-alternate text mit img.name tauschen
		alternate_old = img.alt;
		img.alt = img.name;
		img.name = alternate_old;

		tr.style.display=what;
		img.src = imgname;
		//eval("window."+tr_array[i]+".style.display = \""+what+"\"")
	}
}

function menuinhalttoggle(first)
{
	if(!first)
	{
    	if (menuinhaltwhat == "none")
		{
			menuinhaltwhat = "block";
        }
		else
		{
			menuinhaltwhat = "none";
		}
	}
    if(menuinhaltwhat != "block" && menuinhaltwhat != "none")
		menuinhaltwhat = "block";

	setCookie("whatmenuinhalt", menuinhaltwhat, 365);

	for(var i=0; i < menuinhalt.length; ++i)
	{
		eval("window."+menuinhalt[i]+".style.display = \""+menuinhaltwhat+"\"")
    }
}

function resetDispoSearchFields()
{
	document.getElementById('nl_select').selectedIndex = 0;
	document.getElementById('br_select').selectedIndex = 0;
	document.getElementById('qu_select').selectedIndex = 0;
	document.getElementById('id').value = '';
	document.getElementById('dispoSearch').submit();
}

function controlLaenderFields()
{
	current_selectedIndex 	= document.getElementsByName('land')[0].selectedIndex;
	current_land_id			= document.getElementsByName('land')[0].options[current_selectedIndex].value;
	//alert(current_land_id);

	// Wenn das aktuell ausgewählte Land = Deutschland (ID 77)
	if( current_land_id == 77 )
	{
		// Anderes Bundesland ausblenden
		document.getElementById("otherbdl_1").style.display = 'none';
		document.getElementById("otherbdl_2").style.display = 'none';

		// Anderes Land ausblenden
		document.getElementById("otherland_1").style.display	= 'none';
		document.getElementById("otherland_2").style.display	= 'none';

		// Bundesland einblenden
		if(browser == "ie"){
			document.getElementById("bdl_1").style.display	= 'block';
			document.getElementById("bdl_2").style.display	= 'block';
		}else{

			document.getElementById("bdl_2").style.display	= 'table-row';
			document.getElementById("bdl_1").style.display	= 'table-row';
		}



	}
	// Wenn 'Anderes Land' ausgewählt wurde
	else if( current_land_id == -1 )
	{
		// Bundesland ausblenden
		document.getElementById("bdl_1").style.display	= 'none';
		document.getElementById("bdl_2").style.display	= 'none';

		// Anderes Land einblenden
		if(browser == "ie"){
			document.getElementById("otherland_1").style.display	= 'block';
			document.getElementById("otherland_2").style.display	= 'block';
		}else{
			document.getElementById("otherland_2").style.display	= 'table-row';
			document.getElementById("otherland_1").style.display	= 'table-row';
		}

		// Anderes Bundesland einblenden
		if(browser == "ie"){
			document.getElementById("otherbdl_1").style.display	= 'block';
			document.getElementById("otherbdl_2").style.display	= 'block';
		}else{
			document.getElementById("otherbdl_2").style.display	= 'table-row';
			document.getElementById("otherbdl_1").style.display	= 'table-row';
		}
	}
	else if( current_land_id != -1 || current_land_id != 77 )
	{
		// Bundesland ausblenden
		document.getElementById("bdl_1").style.display	= 'none';
		document.getElementById("bdl_2").style.display	= 'none';

		// Anderes Land ausblenden
		document.getElementById("otherland_1").style.display	= 'none';
		document.getElementById("otherland_2").style.display	= 'none';

		// Anderes Bundesland einblenden
		if(browser == "ie"){
			document.getElementById("otherbdl_1").style.display	= 'block';
			document.getElementById("otherbdl_2").style.display	= 'block';
		}else{
			document.getElementById("otherbdl_2").style.display	= 'table-row';
			document.getElementById("otherbdl_1").style.display	= 'table-row';
		}
	}
}

function hideFields()
{
	current_land_id = document.getElementsByName("land")[0].value;
	controlLaenderFields(current_land_id);
}



function leereFeld(feld_name, text_to_kill)
{
	if(document.getElementsByName(feld_name)[0].value == text_to_kill){
		document.getElementsByName(feld_name)[0].value = '';
	}
}

function checkUncheckAll(theElement) {
	var theForm = theElement.form, z = 0;
	for(z=0; z<theForm.length;z++){
		if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
			theForm[z].checked = theElement.checked;
		}
	}
}

function checkUncheckAll2(selectAllElement, theElement)
{
	var getSelectAllElement = selectAllElement;
	var getElement = document.getElementsByName(theElement);
	if(getSelectAllElement.checked == true)
	{
		for(x=0; x<getElement.length; x++)
		{
			getElement[x].checked = true;
		}
	}else{
		for(x=0; x<getElement.length; x++)
		{
			getElement[x].checked = false;
		}
	}
}

function uncheckUnternehmen(unternehmenID)
{
	document.getElementById(unternehmenID).checked = false;
}

function disableinputfield(inputfieldname, checkboxname, generateinfotext)
{
	if(document.getElementsByName(checkboxname)[0].checked == true)
	{
		document.getElementsByName(inputfieldname)[0].readOnly = true;
		document.getElementsByName(inputfieldname)[0].value = generateinfotext;
		document.getElementsByName(inputfieldname)[0].style.background = "#C3C3C3";
	}
	else
	{
		document.getElementsByName(inputfieldname)[0].readOnly = false;

		inputfield = document.getElementsByName(inputfieldname)[0];
		if(inputfield.value == generateinfotext) inputfield.value = '';
		document.getElementsByName(inputfieldname)[0].style.background = "#FFFFFF";
		document.getElementsByName(inputfieldname)[0].style.backgroundImage = "url(_imagepool/textfade.gif)";
	}
}


function update_plz(niedlistename, plzgebietname)
{
	for(var i=0; i<niedliste.length; i++)
	{
		//alert(niedliste[i][0]);
		//alert(document.getElementsByName(niedlistename)[0].value);
		if(niedliste[i][0]==document.getElementsByName(niedlistename)[0].value)
		{
			if(niedliste[i][0] != '-1'){
				if(document.getElementsByName(plzgebietname)[0])
				{
					document.getElementsByName(plzgebietname)[0].value = niedliste[i][7];
				}
			}
		}
	}
}


function update_niederlassung(fieldname, firmafieldname, ansprechpartnerfieldname, kundefieldname, unternehmeninfofieldname, unternehmeninfospanid, niederlassunginfofieldname, niederlassunginfospanid, jobcodefieldname, jobcodecheckboxname, plzgebietname, validationtrid){

	var countniederlassung = document.getElementsByName(fieldname)[0].length;
	for(var i=0; i<countniederlassung; i++){
		document.getElementsByName(fieldname)[0].options[0]=null;
	}
	var openbrowser = false;
	var openkunde = false;
	var unternehmeninfodisabled = true;
	var unternehmeninfohide = false;
	var niederlassunginfodisabled = true;
	var niederlassunginfohide = true;
	var x = 0;
	for(var i=0; i<niedliste.length; i++)
	{
		if(niedliste[i][2]==document.getElementsByName(firmafieldname)[0].value)
		{
			if(niedliste[i][0] != -1)
			{
				if(niedliste[i+1][2] == document.getElementsByName(firmafieldname)[0].value)
				{
					openbrowser = true;
					unternehmeninfohide = true;
					niederlassunginfohide = false;
				}
				else
				{
					
					if(i-1 == -1 )
					{
						if(niedliste[i][5] == 'f')
						{
							openbrowser = true;
							unternehmeninfohide = true;
							niederlassunginfohide = false;
						}
					}
					else if(niedliste[i-1][2] != document.getElementsByName(firmafieldname)[0].value && niedliste[i][5] == 'f')
					{
						openbrowser = true;
						unternehmeninfohide = true;
						niederlassunginfohide = false;
					}
				}
			}
			
			if(niedliste[i][0] == preselected_subsi_id)
			{
				var NeuerEintrag = new Option(niedliste[i][1], niedliste[i][0], true, true);
			}
			else
			{
				var NeuerEintrag = new Option(niedliste[i][1], niedliste[i][0]);
			}

			document.getElementsByName(fieldname)[0].options[document.getElementsByName(fieldname)[0].length]=NeuerEintrag;
			if(x==0)
			{
				if(niedliste[i][3] == 't')
				{
					openkunde = true;
				}
				if(niedliste[i][4] == 't')
				{
					if(unternehmeninfohide == false)
					{
						unternehmeninfodisabled = false;
					}
					else
					{
						niederlassunginfodisabled = false
					}
				}
				

			}
			x++;
		}
	}

	if(openbrowser == true)
	{
		if(browser == "ie"){
			document.getElementById(fieldname+'1').style.display = "block";
			document.getElementById(fieldname+'2').style.display = "block";
		}else{
			document.getElementById(fieldname+'2').style.display = "table-row";
			document.getElementById(fieldname+'1').style.display = "table-row";
		}
	}else{
		document.getElementById(fieldname+'2').style.display = "none";
		document.getElementById(fieldname+'1').style.display = "none";
	}

	if(openkunde == true)
	{
		if(browser == "ie"){
			document.getElementById(kundefieldname+'1').style.display = "block";
			document.getElementById(kundefieldname+'2').style.display = "block";
		}else{
			document.getElementById(kundefieldname+'2').style.display = "table-row";
			document.getElementById(kundefieldname+'1').style.display = "table-row";
		}
	}
	else
	{
		document.getElementsByName(kundefieldname)[0].value = "";
		document.getElementById(kundefieldname+'2').style.display = "none";
		document.getElementById(kundefieldname+'1').style.display = "none";
	}

	if(unternehmeninfodisabled == false)
	{
		document.getElementsByName(unternehmeninfofieldname)[0].disabled = false;
		document.getElementsByName(unternehmeninfofieldname)[0].checked = true;
	}
	else
	{
		document.getElementsByName(unternehmeninfofieldname)[0].disabled = true;
		document.getElementsByName(unternehmeninfofieldname)[0].checked = false;
	}

	if(unternehmeninfohide == false)
	{
		document.getElementById(unternehmeninfospanid).style.display = "inline";
	}
	else
	{
		document.getElementById(unternehmeninfospanid).style.display = "none";
	}

	if(niederlassunginfodisabled == false)
	{
		document.getElementsByName(niederlassunginfofieldname)[0].disabled = false;
		document.getElementsByName(niederlassunginfofieldname)[0].checked = true;
	}
	else
	{
		document.getElementsByName(niederlassunginfofieldname)[0].disabled = true;
		document.getElementsByName(niederlassunginfofieldname)[0].checked = false;
	}

	if(niederlassunginfohide == false)
	{
		document.getElementById(niederlassunginfospanid).style.display = "inline";
	}
	else
	{
		document.getElementById(niederlassunginfospanid).style.display = "none";
	}

	/*if(document.getElementsByName(firmafieldname)[0].value == 68)
	{
		document.getElementsByName(jobcodecheckboxname)[0].checked = true;
		document.getElementsByName(jobcodecheckboxname)[0].disabled = true;
		disableinputfield(jobcodefieldname, jobcodecheckboxname, "- Wird automatisch erzeugt -");
	}
	else
	{
		document.getElementsByName(jobcodecheckboxname)[0].checked = false;
		document.getElementsByName(jobcodecheckboxname)[0].disabled = false;
		disableinputfield(jobcodefieldname, jobcodecheckboxname, "- Wird automatisch erzeugt -")
	}*/

	update_ansprechpartner(ansprechpartnerfieldname, fieldname,  kundefieldname, niederlassunginfofieldname, niederlassunginfospanid, jobcodecheckboxname, jobcodefieldname);

	update_standard_cluster_and_validation_date(fieldname, firmafieldname, validationtrid);
	
}


function update_standard_cluster_and_validation_date(niederlassungfieldname, firmafieldname, validationtrid)
{
	jQuery.getJSON
	(
		'?mode=appl&appl=jobportal&applmenu=jobadmanagement&jammenu=getcluster&nied_id='+document.getElementsByName(niederlassungfieldname)[0].value,
		function(resultObj)
		{
			//alert(resultObj.detail);
			if(resultObj.detail)
			{
				var countstandardcluster = document.getElementsByName('standard_cluster')[0].length;
				for(var i=0; i<countstandardcluster; i++)
				{
					document.getElementsByName('standard_cluster')[0].options[0]=null;
				}
				for(i=0; i<resultObj.detail.length; i++)
				{
					if(clusterid)
					{
						if(clusterid == resultObj.detail[i].id)
						{
							var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id, false, true);
						}
						else
						{
							var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id);
						}
					}
					else
					{
						var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id);
					}
					document.getElementsByName('standard_cluster')[0].options[document.getElementsByName('standard_cluster')[0].length]=NeuerEintrag;
				}
			}
			else if(resultObj.error)
			{
				alert(resultObj.error);
			}
			else
			{
				alert('Unknown Error.');
			}
		}
	);
	update_validation_date(niederlassungfieldname, validationtrid);
}


function update_standard_cluster(niederlassungfieldname){
	httpObj = createArthursAJAXRequestObject();
	httpObj.open('GET', '?mode=appl&appl=jobportal&applmenu=jobadmanagement&jammenu=getcluster&niedid='+document.getElementsByName(niederlassungfieldname)[0].value, true);
		httpObj.onreadystatechange = function(){
			if(httpObj.readyState == 4 ){
				if(httpObj.status == 200){
					resultObj = eval("(" + httpObj.responseText + ")");
					if(resultObj.detail){
						var countstandardcluster=document.getElementsByName('standard_cluster')[0].length;
						for(var i=0; i<countstandardcluster; i++){
							document.getElementsByName('standard_cluster')[0].options[0]=null;
						}
						for(i=0; i<resultObj.detail.length; i++) {
							if(clusterid){
								if(clusterid == resultObj.detail[i].id){
									var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id, false, true);
								}else{
									var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id);
								}
							}else{
								var NeuerEintrag=new Option(resultObj.detail[i].name, resultObj.detail[i].id);
							}
							document.getElementsByName('standard_cluster')[0].options[document.getElementsByName('standard_cluster')[0].length]=NeuerEintrag;
						}
					}else if(resultObj.error){
						alert(resultObj.error);
					}else{
						alert('Unknown Error.');
					}
				}else{
					alert(httpObj.status);
				}
			}
		};
		httpObj.send(null);
}


function update_ansprechpartner(fieldname, niederlassungfieldname, kundefieldname, niederlassunginfofieldname, niederlassunginfospanid, jobcodecheckboxname, jobcodefieldname)
{
	var openkunde = false;
	var niederlassunginfodisabled = true;
	var aplist = document.getElementsByName(fieldname)[0];

	var countansprechpartner=document.getElementsByName(fieldname)[0].length;

	for(var i=0; i<countansprechpartner; i++)
	{
		document.getElementsByName(fieldname)[0].options[0]=null;
	}

	for(i=0; i<liste.length; i++)
	{
		if(liste[i][2]==document.getElementsByName(niederlassungfieldname)[0].value)
		{
			var NeuerEintrag=new Option(liste[i][1], liste[i][0], liste[i][3]);
			aplist.options[aplist.options.length]=NeuerEintrag;
			if(liste[i][3])
			{
				aplist.options[aplist.options.length - 1].selected = true;
			}
		}
	}

	for(var i=0; i<niedliste.length; i++)
	{
		if(niedliste[i][0]==document.getElementsByName(niederlassungfieldname)[0].value)
		{
			if(niedliste[i][3] == 't')
			{
				openkunde = true;
			}
			if(niedliste[i][4] == 't')
			{
				if(document.getElementById(niederlassunginfospanid).style.display == "none")
				{
					unternehmeninfodisabled = false;
				}
				else
				{
					niederlassunginfodisabled = false
				}
			}

			if(niedliste[i][6] == 't')
			{
				if(getQueryParam('jammenu') == 'edits')
				{
					document.getElementsByName(jobcodecheckboxname)[0].checked = false;
					document.getElementsByName(jobcodecheckboxname)[0].disabled = false;
					disableinputfield(jobcodefieldname, jobcodecheckboxname, "- Wird automatisch erzeugt -")
				}
				else
				{
					document.getElementsByName(jobcodecheckboxname)[0].checked = 'checked';
					document.getElementsByName(jobcodecheckboxname)[0].disabled = false;
					disableinputfield(jobcodefieldname, jobcodecheckboxname, "- Wird automatisch erzeugt -");
				}
			}
			else
			{
				document.getElementsByName(jobcodecheckboxname)[0].checked = false;
				document.getElementsByName(jobcodecheckboxname)[0].disabled = false;
				disableinputfield(jobcodefieldname, jobcodecheckboxname, "- Wird automatisch erzeugt -")
			}
		}
	}

	if(niederlassunginfodisabled == false)
	{
		document.getElementsByName(niederlassunginfofieldname)[0].disabled = false;
		document.getElementsByName(niederlassunginfofieldname)[0].checked = true;
	}
	else
	{
		document.getElementsByName(niederlassunginfofieldname)[0].disabled = true;
		document.getElementsByName(niederlassunginfofieldname)[0].checked = false;
	}

	if(openkunde == true)
	{
		if(browser == "ie"){
			document.getElementById(kundefieldname+'1').style.display = "block";
			document.getElementById(kundefieldname+'2').style.display = "block";
		}else{
			document.getElementById(kundefieldname+'2').style.display = "table-row";
			document.getElementById(kundefieldname+'1').style.display = "table-row";
		}
	}
	else
	{
		document.getElementsByName(kundefieldname)[0].value = "";
		document.getElementById(kundefieldname+'2').style.display = "none";
		document.getElementById(kundefieldname+'1').style.display = "none";
	}
}

function showDiv(targetfeldname, sourceid, extraX, extraY)
{
	var getPosX = findPosX(document.getElementsByName(targetfeldname)[0]);
	var getPosY = findPosY(document.getElementsByName(targetfeldname)[0]);
	getPosX = getPosX+extraX;
	getPosY = getPosY+extraY;
	document.getElementById(sourceid).style.left = getPosX + 'px';
	document.getElementById(sourceid).style.top = getPosY + 'px';
	if(browser == 'ie')
	{
		document.getElementById(sourceid).style.display = 'block';
	}
	else
	{
		document.getElementById(sourceid).style.display = 'table-row';
	}
	if(browser=='ie')
	{
		document.getElementById(sourceid).style.width = '100%';
	}
}

function hideDiv(sourceid)
{
	document.getElementById(sourceid).style.display = 'none';
}


function showHelpDiv(targetfeldname, sourceid, extraX, extraY)
{
	var targetfeld = document.getElementsByName(targetfeldname)[0];
	var getPosX = findPosX(targetfeld);
	var getPosY = findPosY(targetfeld);

	getPosX = getPosX + targetfeld.offsetWidth + extraX;
	getPosY = getPosY + extraY;
	
	//beim Hinausragen aus Dokument hoeher platzieren
	
	document.getElementById(sourceid).style.left = getPosX + 'px';
	document.getElementById(sourceid).style.top = getPosY + 'px';
	if(browser == 'ie')
	{
		document.getElementById(sourceid).style.display = 'block';
		if((getPosY + document.getElementById(sourceid).offsetHeight) > document.body.offsetHeight)
		{
			document.getElementById(sourceid).style.top = (document.body.offsetHeight - document.getElementById(sourceid).offsetHeight) + 'px';
		}
	}
	else
	{
		document.getElementById(sourceid).style.display = 'table-row';
		if((getPosY + document.getElementById(sourceid).offsetHeight) > document.height)
		{
			document.getElementById(sourceid).style.top = (document.height - document.getElementById(sourceid).offsetHeight) + 'px';
		}
	}
	
	if(browser=='ie')
	{
		document.getElementById(sourceid).style.width = '100%';
	}
}

function insertText(sourceid, targetname, layerid)
{
	document.getElementsByName(targetname)[0].value = document.getElementById(sourceid).firstChild.nodeValue;
}

function update_laufzeit_text(laufzeitname, vertragfeldname, vertragtrid, laufzeitbegin, laufzeitvon, laufzeitbis)
{
	if(document.getElementsByName(laufzeitname)[0].value == 'befristet')
	{
		document.getElementsByName(laufzeitbegin)[0].disabled = true;
		document.getElementsByName(laufzeitbegin)[0].value = '';
		document.getElementsByName(laufzeitvon)[0].disabled = false;
		document.getElementsByName(laufzeitbis)[0].disabled = false;
		//document.getElementsByName(vertragfeldname)[0].readOnly = true;
		//document.getElementsByName(vertragfeldname)[0].style.background = "#C3C3C3";
		if((document.getElementsByName(laufzeitvon)[0].value == '' && document.getElementsByName(laufzeitbis)[0].value == '') || (document.getElementsByName(laufzeitvon)[0].value != '' && document.getElementsByName(laufzeitbis)[0].value == '') || (document.getElementsByName(laufzeitvon)[0].value == '' && document.getElementsByName(laufzeitbis)[0].value != ''))
		{
			//document.getElementById(vertragtrid+'1').style.display = 'none';
			//document.getElementById(vertragtrid+'2').style.display = 'none';
			//document.getElementsByName(vertragfeldname)[0].value = '';
		}
		else
		{
			if(browser == 'ie')
			{
				document.getElementById(vertragtrid+'1').style.display = 'block';
				document.getElementById(vertragtrid+'2').style.display = 'block';
			}
			else
			{
				document.getElementById(vertragtrid+'2').style.display = 'table-row';
				document.getElementById(vertragtrid+'1').style.display = 'table-row';
			}
			//document.getElementsByName(vertragfeldname)[0].value = 'Das Beschäftigungsverhältnis ist befristet auf den Zeitraum vom '+ document.getElementsByName(laufzeitvon)[0].value +' bis ' + document.getElementsByName(laufzeitbis)[0].value + '.';
		}
	}

	if(document.getElementsByName(laufzeitname)[0].value == 'unbefristet' || document.getElementsByName(laufzeitname)[0].value == 'eingeschraenkt')
	{
		document.getElementsByName(laufzeitbegin)[0].disabled = false;
		document.getElementsByName(laufzeitvon)[0].disabled = true;
		document.getElementsByName(laufzeitbis)[0].disabled = true;
		document.getElementsByName(laufzeitvon)[0].value = '';
		document.getElementsByName(laufzeitbis)[0].value = '';
		if(browser == 'ie')
		{
			document.getElementById(vertragtrid+'1').style.display = 'block';
			document.getElementById(vertragtrid+'2').style.display = 'block';
		}
		else
		{
			document.getElementById(vertragtrid+'2').style.display = 'table-row';
			document.getElementById(vertragtrid+'1').style.display = 'table-row';
		}
		if(document.getElementsByName(laufzeitbegin)[0].value == '' || document.getElementsByName(laufzeitname)[0].value == 'eingeschraenkt')
		{
			//document.getElementsByName(vertragfeldname)[0].value = 'Die Stelle ist ab sofort zu besetzen. ';
			//document.getElementsByName(vertragfeldname)[0].readOnly = false;
			//document.getElementsByName(vertragfeldname)[0].style.background = "#FFFFFF";
		}
		else
		{
			//document.getElementsByName(vertragfeldname)[0].value = 'Das Beschäftigungsverhältnis beginnt am ' + document.getElementsByName(laufzeitbegin)[0].value+'.';
			//document.getElementsByName(vertragfeldname)[0].readOnly = true;
			//document.getElementsByName(vertragfeldname)[0].style.background = "#C3C3C3";
		}
	}

	/*if(document.getElementsByName(laufzeitname)[0].value == '-1')
	{
		document.getElementById(vertragtrid+'1').style.display = 'none';
		document.getElementById(vertragtrid+'2').style.display = 'none';
		document.getElementsByName(vertragfeldname)[0].value = '';
	}*/
}

function update_laufzeit_text_opener(laufzeitname, vertragfeldname, vertragtrid, laufzeitbegin, laufzeitvon, laufzeitbis)
{
	if(opener.document.getElementsByName(laufzeitname)[0].value == 'befristet')
	{
		opener.document.getElementsByName(laufzeitbegin)[0].disabled = true;
		opener.document.getElementsByName(laufzeitbegin)[0].value = '';
		opener.document.getElementsByName(laufzeitvon)[0].disabled = false;
		opener.document.getElementsByName(laufzeitbis)[0].disabled = false;
		//opener.document.getElementsByName(vertragfeldname)[0].readOnly = true;
		//opener.document.getElementsByName(vertragfeldname)[0].style.background = "#C3C3C3";
		if((opener.document.getElementsByName(laufzeitvon)[0].value == '' && opener.document.getElementsByName(laufzeitbis)[0].value == '') || (opener.document.getElementsByName(laufzeitvon)[0].value != '' && opener.document.getElementsByName(laufzeitbis)[0].value == '') || (opener.document.getElementsByName(laufzeitvon)[0].value == '' && opener.document.getElementsByName(laufzeitbis)[0].value != ''))
		{
			//opener.document.getElementById(vertragtrid+'1').style.display = 'none';
			//opener.document.getElementById(vertragtrid+'2').style.display = 'none';
			//opener.document.getElementsByName(vertragfeldname)[0].value = '';
		}
		else
		{
			if(browser == 'ie')
			{
				opener.document.getElementById(vertragtrid+'1').style.display = 'block';
				opener.document.getElementById(vertragtrid+'2').style.display = 'block';
			}
			else
			{
				opener.document.getElementById(vertragtrid+'2').style.display = 'table-row';
				opener.document.getElementById(vertragtrid+'1').style.display = 'table-row';
			}
			//opener.document.getElementsByName(vertragfeldname)[0].value = 'Das Beschäftigungsverhältnis ist befristet auf den Zeitraum vom '+ opener.document.getElementsByName(laufzeitvon)[0].value +' bis ' + opener.document.getElementsByName(laufzeitbis)[0].value + '.';
		}
	}

	if(opener.document.getElementsByName(laufzeitname)[0].value == 'unbefristet' || opener.document.getElementsByName(laufzeitname)[0].value == 'eingeschraenkt' )
	{
		opener.document.getElementsByName(laufzeitbegin)[0].disabled = false;
		opener.document.getElementsByName(laufzeitvon)[0].disabled = true;
		opener.document.getElementsByName(laufzeitbis)[0].disabled = true;
		opener.document.getElementsByName(laufzeitvon)[0].value = '';
		opener.document.getElementsByName(laufzeitbis)[0].value = '';
		if(browser == 'ie')
		{
			opener.document.getElementById(vertragtrid+'1').style.display = 'block';
			opener.document.getElementById(vertragtrid+'2').style.display = 'block';
		}
		else
		{
			opener.document.getElementById(vertragtrid+'2').style.display = 'table-row';
			opener.document.getElementById(vertragtrid+'1').style.display = 'table-row';
		}
		if(opener.document.getElementsByName(laufzeitbegin)[0].value == '' || opener.document.getElementsByName(laufzeitname)[0].value == 'eingeschraenkt')
		{
			if(opener.document.getElementsByName(laufzeitname)[0].value == 'eingeschraenkt'){
				//opener.document.getElementsByName(vertragfeldname)[0].value = 'Das Beschäftigungsverhältnis beginnt am ' + opener.document.getElementsByName(laufzeitbegin)[0].value +'.';
			}else{
				//opener.document.getElementsByName(vertragfeldname)[0].value = 'Die Stelle ist ab sofort zu besetzen. ';
			}
			//opener.document.getElementsByName(vertragfeldname)[0].readOnly = false;
			//opener.document.getElementsByName(vertragfeldname)[0].style.background = "#FFFFFF";
			//opener.document.getElementsByName(vertragfeldname)[0].style.backgroundImage = "url(_imagepool/textfade.gif)";
		}
		else
		{
			//opener.document.getElementsByName(vertragfeldname)[0].value = 'Das Beschäftigungsverhältnis beginnt am ' + opener.document.getElementsByName(laufzeitbegin)[0].value +'.';
			//opener.document.getElementsByName(vertragfeldname)[0].readOnly = true;
			//opener.document.getElementsByName(vertragfeldname)[0].style.background = "#C3C3C3";
		}
	}

	if(opener.document.getElementsByName(laufzeitname)[0].value == '-1')
	{
		//opener.document.getElementById(vertragtrid+'1').style.display = 'none';
		//opener.document.getElementById(vertragtrid+'2').style.display = 'none';
		//opener.document.getElementsByName(vertragfeldname)[0].value = '';
	}

}


//LM 2007-07-11: Wird momentan nicht benutzt.  Ist noch nicht international.
function changeGultigkeitsDatum(aktivierenName, deaktivierenName, wocheName)
{
	var splitAktivDatum = document.getElementsByName(aktivierenName)[0].value.split(".");
	var error = false;
	var getDay;
	var getMonth;
	var getYear;
	if(splitAktivDatum.length == 3)
	{
		if(splitAktivDatum[0].length == 1)
		{
			getDay = "0"+splitAktivDatum[0];
		}
		else if(splitAktivDatum[0].length == 2)
		{
			getDay = splitAktivDatum[0];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[1].length == 1)
		{
			getMonth = "0"+splitAktivDatum[1];
		}
		else if(splitAktivDatum[1].length == 2)
		{
			getMonth = splitAktivDatum[1];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[2].length == 2)
		{
			if(splitAktivDatum[2] > 25)
			{
				getYear = "20"+splitAktivDatum[2];
			}
			else
			{
				getYear = "19"+splitAktivDatum[2];
			}
		}
		else if(splitAktivDatum[2].length == 4)
		{
			getYear = splitAktivDatum[2];
		}
		else
		{
			error = true;
		}

	}else
	{
		error = true
	}
	if(error == false)
	{
		var datum = new Date(parseInt(splitAktivDatum[2], 10), parseInt(splitAktivDatum[1], 10)-1, parseInt(splitAktivDatum[0], 10), 0, 0, 0);
		if(datum)
		{
			var dateMilSec = datum.getTime();
			var wochen = (parseInt(document.getElementsByName(wocheName)[0].value, 10) * 7 * 24 * 60 * 60 * 1000) -1;
			var newDate = new Date(parseInt(dateMilSec, 10) + wochen);
			var newDay;
			var newMonth;
			if(parseInt(newDate.getDate(), 10) < 10)
			{
				newDay = '0'+newDate.getDate();
			}
			else
			{
				newDay = newDate.getDate();
			}
			if(parseInt(newDate.getMonth(), 10)+1 < 10)
			{
				newMonth = '0'+(parseInt(newDate.getMonth(), 10)+1);
			}
			else
			{
				newMonth = parseInt(newDate.getMonth(), 10)+1;
			}
			document.getElementsByName(deaktivierenName)[0].value = newDay+"."+newMonth+"."+newDate.getFullYear();
		}
		else
		{
			error = true;
		}
	}

	if(error == true)
	{
		document.getElementsByName(deaktivierenName)[0].value = "Error";
	}
}


//LM 2007-07-11: Wird momentan nicht benutzt. Ist noch nicht international.
function changeGultigkeitsDatumOpener(aktivierenName, deaktivierenName, wocheName)
{
	var splitAktivDatum = opener.document.getElementsByName(aktivierenName)[0].value.split(".");
	var error = false;
	var getDay;
	var getMonth;
	var getYear;
	if(splitAktivDatum.length == 3)
	{
		if(splitAktivDatum[0].length == 1)
		{
			getDay = "0"+splitAktivDatum[0];
		}
		else if(splitAktivDatum[0].length == 2)
		{
			getDay = splitAktivDatum[0];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[1].length == 1)
		{
			getMonth = "0"+splitAktivDatum[1];
		}
		else if(splitAktivDatum[1].length == 2)
		{
			getMonth = splitAktivDatum[1];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[2].length == 2)
		{
			if(splitAktivDatum[2] > 25)
			{
				getYear = "20"+splitAktivDatum[2];
			}
			else
			{
				getYear = "19"+splitAktivDatum[2];
			}
		}
		else if(splitAktivDatum[2].length == 4)
		{
			getYear = splitAktivDatum[2];
		}
		else
		{
			error = true;
		}

	}else
	{
		error = true
	}
	if(error == false)
	{
		var datum = new Date(parseInt(splitAktivDatum[2], 10), parseInt(splitAktivDatum[1], 10)-1, parseInt(splitAktivDatum[0], 10), 0, 0, 0);
		if(datum)
		{
			var dateMilSec = datum.getTime();
			var wochen = (parseInt(opener.document.getElementsByName(wocheName)[0].value, 10) * 7 * 24 * 60 * 60 * 1000) -1;
			var newDate = new Date(parseInt(dateMilSec, 10) + wochen);
			var newDay;
			var newMonth;
			if(newDate.getDate() < 10)
			{
				newDay = '0'+newDate.getDate();
			}
			else
			{
				newDay = newDate.getDate();
			}
			if(parseInt(newDate.getMonth(), 10)+1 < 10)
			{
				newMonth = '0'+(parseInt(newDate.getMonth(), 10)+1);
			}
			else
			{
				newMonth = parseInt(newDate.getMonth(), 10)+1;
			}
			opener.document.getElementsByName(deaktivierenName)[0].value = newDay+"."+newMonth+"."+newDate.getFullYear();
		}
		else
		{
			error = true;
		}
	}

	if(error == true)
	{
		opener.document.getElementsByName(deaktivierenName)[0].value = "Error";
	}
}

//LM 2007-07-11: Wird momentan nicht benutzt. Ist noch nicht international.
function changeVerlangerungDatum(aktivierenName, deaktivierenName, wocheName, oldDate)
{
	var splitAktivDatum = oldDate.split(".");
	var error = false;
	var getDay;
	var getMonth;
	var getYear;
	if(splitAktivDatum.length == 3)
	{
		if(splitAktivDatum[0].length == 1)
		{
			getDay = "0"+splitAktivDatum[0];
		}
		else if(splitAktivDatum[0].length == 2)
		{
			getDay = splitAktivDatum[0];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[1].length == 1)
		{
			getMonth = "0"+splitAktivDatum[1];
		}
		else if(splitAktivDatum[1].length == 2)
		{
			getMonth = splitAktivDatum[1];
		}
		else
		{
			error = true;
		}

		if(splitAktivDatum[2].length == 2)
		{
			if(splitAktivDatum[2] > 25)
			{
				getYear = "20"+splitAktivDatum[2];
			}
			else
			{
				getYear = "19"+splitAktivDatum[2];
			}
		}
		else if(splitAktivDatum[2].length == 4)
		{
			getYear = splitAktivDatum[2];
		}
		else
		{
			error = true;
		}

	}else
	{
		error = true
	}
	if(error == false)
	{
		var datum = new Date(parseInt(splitAktivDatum[2], 10), parseInt(splitAktivDatum[1], 10)-1, parseInt(splitAktivDatum[0], 10), 0, 0, 0);
		if(datum)
		{
			var dateMilSec = datum.getTime();
			if(document.getElementsByName(wocheName)[0].value != '-1')
			{
				var wochen = (parseInt(document.getElementsByName(wocheName)[0].value, 10) * 7 * 24 * 60 * 60 * 1000);
				var newDate = new Date(parseInt(dateMilSec, 10) + wochen);
				var newDay;
				var newMonth;
				if(newDate.getDate() < 10)
				{
					newDay = '0'+newDate.getDate();
				}
				else
				{
					newDay = newDate.getDate();
				}
				if(parseInt(newDate.getMonth(), 10)+1 < 10)
				{
					newMonth = '0'+(parseInt(newDate.getMonth(), 10)+1);
				}
				else
				{
					newMonth = parse(newDate.getMonth())+1;
				}
				document.getElementsByName(deaktivierenName)[0].value = newDay+"."+newMonth+"."+newDate.getFullYear();
			}
			else
			{
				document.getElementsByName(deaktivierenName)[0].value = oldDate;
			}
		}
		else
		{
			error = true;
		}
	}

	if(error == true)
	{
		document.getElementsByName(deaktivierenName)[0].value = "Error";
	}
}



function updateNiedFromUnt(elm_untDD, elm_nlDD, selection)
{

	// get unt-list and nl-list option elements
	var nlDD = document.getElementsByName(elm_nlDD)[0];
	var untDD = document.getElementsByName(elm_untDD)[0];
	// get selected firm
	if(untDD.selectedIndex == -1){
		var untid = untDD.options[0].value;
	}else{
		var untid = untDD.options[untDD.selectedIndex].value;
	}
	// empty old nl-list
	while(nlDD.options.length > 0){
		nlDD.options[nlDD.options.length-1] = null;
	}
	// fill new nl-list
	for(i = 0; i < niedListe.length; i++){
		if(niedListe[i][0] == untid){
			// hide nl-list option, if empty
			if(niedListe[i][1] == -2){
				document.getElementById(elm_nlDD+'Id1').style.display = 'none';
				document.getElementById(elm_nlDD+'Id2').style.display = 'none';
				return;
			}
			
			nlDD.options[nlDD.options.length] = new Option(niedListe[i][2], niedListe[i][1], false);
			nlDD.options[nlDD.length-1].selected = (selection == niedListe[i][1]);
			//alert(selection + ' = ' + niedListe[i][1] + '?: ' + (selection == niedListe[i][1]));
			//alert('Element ist selektiert: ' + nlDD.options[nlDD.options.length-1].selected);
		}
	}
	// show nl-list option
	document.getElementById(elm_nlDD+'Id1').style.display = '';
	document.getElementById(elm_nlDD+'Id2').style.display = '';
}

function updateNiedFromUnt2(elm_untDD, elm_nlDD, niedName, selection)
{
	var countNied = document.getElementsByName(niedName)[0].length;
	for(var i=0; i<countNied; i++){
		document.getElementsByName(niedName)[0].options[0]=null;
	}
    var countNied = 0;
	for(var i=0; i<niedListe.length; i++)
	{
		if(document.getElementsByName(elm_untDD)[0].value == niedListe[i][0])
		{ 
			var NeuerEintrag=new Option(niedListe[i][2], niedListe[i][1]);
			document.getElementsByName(niedName)[0].options[document.getElementsByName(niedName)[0].length]=NeuerEintrag;
			countNied++;
		}
	}
	if(countNied > 1)
	{
		document.getElementById(elm_nlDD+1).style.display = '';
		document.getElementById(elm_nlDD+2).style.display = '';
	}
	else
	{
		document.getElementById(elm_nlDD+1).style.display = 'none';
		document.getElementById(elm_nlDD+2).style.display = 'none';
	}
}


function showFieldsFromSelectedOption(optionName)
{
	var optElm = document.getElementsByName(optionName)[0];
	// hide all group fields elements
	for(i = 0; i < optElm.options.length; i++)
	{
		document.getElementById(optElm.options[i].value + '1').style.display = 'none';
		document.getElementById(optElm.options[i].value + '2').style.display = 'none';
	}
	// get group name
	if(optElm.selectedIndex == -1){
		var fieldGroupName = optElm.options[0].value;
	}else{
		var fieldGroupName = optElm.options[optElm.selectedIndex].value;
	}
	// show selected group elements
	document.getElementById(fieldGroupName+'1').style.display = '';
	document.getElementById(fieldGroupName+'2').style.display = '';
}

function clearField(fieldname)
{
	document.getElementsByName(fieldname)[0].value = "";
}


function createArthursAJAXRequestObject()
{
	var ro;
	ro = false;
	if(browser == 'ie')
	{	
		if( window.ActiveXObject )
        {
        for( var i = 5; i; i-- )
            {
                try
                {
                    // loading of a newer version of msxml dll (msxml3 - msxml5) failed
                    // use fallback solution
                    // old style msxml version independent, deprecated
                    if( i == 2 )
                    {
                        ro = new ActiveXObject( "Microsoft.XMLHTTP" );
                    }
                    // try to use the latest msxml dll
                    else
                    {
                        ro = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                    }
                    break;
                }
                catch( excNotLoadable )
                {
                    ro = false;
                }
            }
        }
	}else{
		ro = new XMLHttpRequest();
		ro.overrideMimeType('text/xml');
	}
	return ro;
}


var switch_locale_req_object;
var switch_locale_locale;
var switch_locale_flag;
function switch_locale(locale)
{
	switch_locale_locale = locale;
	flag_img = document.getElementById('flag_' + locale);
	switch_locale_flag = flag_img.src;
	flag_img.src = '_imagepool/ajax_loader.gif';
	switch_locale_req_object = createArthursAJAXRequestObject();
	switch_locale_req_object.open('GET', 'http://control.jobcluster.de/system/switch_locale.php?loc=' + locale, true);
	switch_locale_req_object.onreadystatechange = switch_locale_response;
	switch_locale_req_object.send(null);
}


function switch_locale_response()
{
	if(switch_locale_req_object.readyState == 4 && switch_locale_req_object.status == 200)
	{
		document.getElementById('flag_' + switch_locale_locale).src = switch_locale_flag;	
	}
}


function isInList(list, value)
{
	for(n = 0; n < list.length; ++n)
	{
		if(list[n].value == value) return true;
	}
	return false;
}

function moveListItems(sourcelistid, targetlistid, copy, unique_in_targetlist)
{
	var sourcelist = document.getElementById(sourcelistid);
	if (targetlistid) var targetlist = document.getElementById(targetlistid);
	
	if(copy)
	{
		for(var i = 0; i < sourcelist.length; i++)
		{
			if(sourcelist.options[i].selected)
			{
				if(unique_in_targetlist)
				{
					if(!isInList(targetlist, sourcelist.options[i].value))
					{
						entry = new Option(sourcelist.options[i].text, sourcelist.options[i].value, false, false);
						if(targetlistid) targetlist.options[targetlist.length] = entry;
					}
				}
				else
				{
					entry = new Option(sourcelist.options[i].text, sourcelist.options[i].value, false, false);
					if(targetlistid) targetlist.options[targetlist.length] = entry;
				}
			}
		}
	}
	else
	{
		for(var i = sourcelist.length - 1; i >= 0; i--)
		{
			if(sourcelist.options[i].selected)
			{
				entry = new Option(sourcelist.options[i].text, sourcelist.options[i].value, false, false);

				if(targetlistid) targetlist.options[targetlist.length] = entry;

				sourcelist.options[i] = null;
			}
		}
	}		
}


function saveListToHidden(listid, hiddenid, delimiter, only_selected_items)
{
	var list = document.getElementById(listid);
	var hidden = document.getElementById(hiddenid);
	if(!delimiter) delimiter = ';';
	hidden.value = '';
	
	for(var i = 0; i < list.length; i++)
	{
		if(only_selected_items)
		{
			if(list.options[i].selected) hidden.value += list.options[i].value + delimiter;
		}
		else
		{
			hidden.value += list.options[i].value + delimiter;
		}
	}
	
	hidden.value = hidden.value.substr(0, hidden.value.length - 1);
}



function verlCheckAll(){
	getCheckAll = document.getElementsByName('selectAll')[0];
	getAllAsArray = document.getElementsByName('chkStellenanzeige[]');
	for(i=0; i < getAllAsArray.length; i++){
		if(getCheckAll.checked == true){
			getAllAsArray[i].checked = true;
		}else{
			getAllAsArray[i].checked = false;
		}
	}
}



var currentTip;
var mouseFunc;


function showTip(id)
{
	currentTip = document.getElementById(id);
}

function setMouseHandler(func)
{
	mouseFunc = func;
}

function hideCurrentTip()
{
	if(currentTip)
	{
		currentTip.style.display = 'none';
		currentTip = null;
	}		
}


function mouse(e)
{		
	if(mouseFunc) mouseFunc(e);
}


function tipMouseHandler(e)
{
	if(currentTip)
	{
		x = document.all ? window.event.x : e.pageX;
    	y = document.all ? window.event.y : e.pageY;
    	
    	docWidth = (window.document.width || window.document.body.clientWidth);
    	docHeight = (window.document.height || window.document.body.clientHeight);
    	
    	currentTip.style.top = 15 + y + 'px';
    	currentTip.style.left = 10 + x + 'px';
    	currentTip.style.display = 'block';
    	
    	if(x + currentTip.offsetWidth > docWidth)
    	{
			currentTip.style.left = (docWidth - currentTip.offsetWidth - 5) + 'px';
    	}
    	
    	if(y + currentTip.offsetHeight > docHeight)
    	{
			currentTip.style.top = (y - currentTip.offsetHeight - 5) + 'px';
    	}
	}
}


function makeAjaxDetails(sAjaxDetailURL)
{
	$('img[id^=toggle]').click
	(
		function()
		{
			if($(this).data('nextState') == 'open' || $(this).data('nextState') == undefined)
			{
				iElementId = $(this).attr('id').substr(6);
				if($('#detailContent'+iElementId).html() == '')
				{
					$('#ajaxLoading'+iElementId).html('<img src="_imagepool/ajax_loader.gif" />');
					$.getJSON
					(
						sAjaxDetailURL+iElementId,
						function(oData)
						{
							$('#detailContent'+oData.iElementId).html(oData.sHtml);
							$('#ajaxLoading'+oData.iElementId).html('');
							$('#toggle'+oData.iElementId).attr('src', '_imagepool/minus.gif');
							$('#detailContent'+oData.iElementId).slideDown();
						}
					);
				}
				else
				{
					$(this).attr('src', '_imagepool/minus.gif');
					$('#detailContent'+iElementId).slideDown();
				}
				$(this).data('nextState', 'closed');
			}
			else
			{
				iElementId = $(this).attr('id').substr(6);
				$(this).attr('src', '_imagepool/plus.gif');
				$('#detailContent'+iElementId).slideUp();
				$(this).data('nextState', 'open');
			}
		}
	);

	$('#toggleAll').click
	(
		function()
		{
			$(this).data('nextState', $(this).data('nextState') == 'open' ? 'closed' : 'open');

			$('img[id^=toggle]').each
			(
				function()
				{
					$(this).data('nextState', $('#toggleAll').data('nextState'));
					$(this).click();
				}
			);
		}
	)
}


function addToTheList(fromID, toID, fromHideID, toHideID)
{
	var getFromID = document.getElementById(fromID);
	var getToID = document.getElementById(toID);
	var getToHideID = document.getElementById(toHideID);
	var getFromHideID = document.getElementById(fromHideID);
	var selected_elements = new Array();
	var values = new Array();
	var x = 0;
	var n = 0;

	// Ausgewählte Elemente ermitteln.
	for(i = 0; i < getFromID.length; i++)
	{
		if(getFromID.options[i].selected)
		{
			selected_elements[x] = getFromID.options[i];
			x++;
		}
	}

	// Ausgewählte Optionsfelder in die Zielliste übernehmen.
	for(a = 0; a < selected_elements.length; a++)
	{
		//alert(getToHideID.length);

		// Objekt in die Zielliste verschieben.
		getToID.appendChild(selected_elements[a]);

		for(n = 0; n < getToHideID.length; n++)
		{
			if(getToHideID.options[n].value == selected_elements[a].value)
			{
				getToHideID.options[n].selected = true;
			}
		}
		for(n = 0; n < getFromHideID.length; n++)
		{
			if(getFromHideID.options[n].value == selected_elements[a].value)
			{
				getFromHideID.options[n].selected = false;
			}
		}
	}
	//sortAlphabetical(toID);
}



function addAllToTheList(fromID, toID, fromHideID, toHideID)
{
	var getFromID = document.getElementById(fromID);
	var getToID = document.getElementById(toID);
	var getToHideID = document.getElementById(toHideID);
	var getFromHideID = document.getElementById(fromHideID);
	var selected_elements = new Array();
	var values = new Array();
	var x = 0;
	var n = 0;

	// Ausgewählte Elemente ermitteln.
	for(i = 0; i < getFromID.length; i++)
	{
		selected_elements[x] = getFromID.options[i];
		x++;
	}

	// Ausgewählte Optionsfelder in die Zielliste übernehmen.
	for(a = 0; a < selected_elements.length; a++)
	{
		//alert(getToHideID.length);

		// Objekt in die Zielliste verschieben.
		getToID.appendChild(selected_elements[a]);

		for(n = 0; n < getToHideID.length; n++)
		{
			if(getToHideID.options[n].value == selected_elements[a].value)
			{
				getToHideID.options[n].selected = true;
			}
		}
		for(n = 0; n < getFromHideID.length; n++)
		{
			if(getFromHideID.options[n].value == selected_elements[a].value)
			{
				getFromHideID.options[n].selected = false;
			}
		}
	}
	//sortAlphabetical(toID);
}


function validateInput(sFormID, sValidationURL, callbackValidationSuccess, callbackValidationFailure, $inputsToDisable, callbackResponse)
{
	var data = $("#"+sFormID+" :input").serializeArray();

	if(callbackResponse == undefined)
	{
		callbackResponse = validationResponse;
	}

	if($inputsToDisable == undefined)
	{
		$inputsToDisable = $("#"+sFormID+" button, "+"#"+sFormID+" input[type='button'], "+"#"+sFormID+" input[type='submit']");
	}

	$inputsToDisable.attr('disabled', true);

	jQuery.ajax
	(
		{
			type:		"POST",
			url:		sValidationURL,
			data:		data,
			success:	function(data)
						{
							callbackResponse(eval('('+data+')'), sFormID, callbackValidationSuccess, callbackValidationFailure, $inputsToDisable);
						}
		}
	);

	disableInputs($inputsToDisable, STYLE_FADE);
}


function validationResponse(oJSON, sFormID, callbackValidationSuccess, callbackValidationFailure, $inputsToEnable)
{
	if(callbackValidationFailure == undefined)
	{
		callbackValidationFailure = function(){enableInputs($inputsToEnable, STYLE_FADE);}
	}

	if(oJSON.loggedOutWarning)
	{
		alert("Sie müssen für diese Funktion eingeloggt sein.");
		callbackValidationFailure(oJSON, sFormID, $inputsToEnable);
		return;
	}

	$.each
	(
		oJSON.fields,
		function(i, item)
		{
			inputEl = $("#"+sFormID+" [name='"+item.field+"']");
			label = $("label[for='"+item.field+"']");

			$("#error"+sFormID+item.field).remove();
			inputEl.parent().find("span.input_error").html("");
			if(item.error)
			{
								if(!inputEl.parent().find("span.input_error").append(item.error).parent().length)
				{
					inputEl.parent().append('<span class="formerror" id="error'+sFormID+item.field+'"><br />'+item.error+"</span>");
				}

				label.addClass("error")
				$("#error"+sFormID+item.field).hide().fadeIn(1000);
				inputEl.removeClass("formulartext").addClass("formulartexterror");
			}
			else
			{
				label.removeClass("error");
				inputEl.removeClass("formulartexterror").addClass("formulartext");
			}
		}
	);

	$("#"+sFormID).find(".form_errors").html("");
	$("#"+sFormID).find(".form_success_message").html("");
	if(oJSON.errorMessages)
	{
		$.each	(oJSON.errorMessages,
					function(i, item)
					{
						$("#"+sFormID).find(".form_errors").append(item+"<br />").hide().fadeIn(1000);
					}
				)
	}

	if(oJSON.successMessage)
	{
		$("#"+sFormID).find(".form_success_message").html(oJSON.successMessage).hide().fadeIn(1000);
	}

	if(oJSON.success)
	{
		callbackValidationSuccess(oJSON, sFormID, $inputsToEnable);
	}
	else
	{
		callbackValidationFailure(oJSON, sFormID, $inputsToEnable);
	}
}


function disableInputs($inputs, iStyle)
{
	iStyle = (iStyle || STYLE_FADE);
	
	$inputs.each
	(
		function()
		{
			if(!$(this).attr("disabled"))
			{
				if(iStyle & STYLE_FADE) $(this).fadeTo(250, 0.15);
				if(iStyle & STYLE_COLORS) $(this).addClass('disabled');
			}
			
			$(this).data("originalDisabled", $(this).attr("disabled"));
		}
	);

	$inputs.attr('disabled', true);
}


function enableInputs($inputs, iStyle)
{
	iStyle = (iStyle || STYLE_FADE);

	$inputs.each
	(
		function()
		{
			if($(this).attr("disabled"))
			{
				if(iStyle & STYLE_FADE) $(this).fadeTo(250, 1);
				if(iStyle & STYLE_COLORS) $(this).removeClass('disabled');
			}

			$(this).data("originalDisabled", $(this).attr("disabled"));
		}
	);

	$inputs.attr('disabled', false);
}


function restoreInputs($inputs, iStyle)
{
	var iStyle = (iStyle || STYLE_FADE);

	$inputs.each
	(
		function()
		{
			if($(this).attr("disabled") != $(this).data("originalDisabled"))
			{
				if($(this).data("originalDisabled"))
				{
					if(iStyle & STYLE_FADE) $(this).fadeTo(250, 0.15);
					if(iStyle & STYLE_COLORS) $(this).addClass('disabled');

					$(this).attr('disabled', true);
				}
				else
				{
					if(iStyle & STYLE_FADE)	$(this).fadeTo(250, 1);
					if(iStyle & STYLE_COLORS) $(this).removeClass('disabled');

					$(this).attr('disabled', false);
				}
			}
		}
	);
}


function populateSelect(mSelect, oItems, sValueProperty, sTitleProperty)
{
	if(typeof(mSelect) == 'string')
	{
		$select = $("#"+mSelect);
	}
	else
	{
		$select = $(mSelect);
	}

	sValueProperty = sValueProperty || 'id';
	sTitleProperty = sTitleProperty || 'title';

	var sOptions = '';
	$.each
	(
		oItems,
		function(i, item)
		{
			sOptions += '<option value="'+item[sValueProperty]+'"';

			if(item.selected === true || item.selected === "t")
			{
				sOptions += ' selected="selected"';
				bNothingPreselected = false;
			}

			sOptions += '>'+item[sTitleProperty]+'</option>';
		}
	);

	$select.html(sOptions);
}


function makeSelectOptionsHTML(oItems, sValueProperty, sTitleProperty)
{
	sValueProperty = sValueProperty || 'id';
	sTitleProperty = sTitleProperty || 'title';

	var sOptions = '';
	$.each
	(
		oItems,
		function(i, item)
		{
			sOptions += '<option value="'+item[sValueProperty]+'"';

			if(item.selected)
			{
				sOptions += ' selected="selected"';
			}

			sOptions += '>'+item[sTitleProperty]+'</option>';
		}
	);

	return sOptions;
}


function populateGroupedSelect(mSelect, oItems, sValueProperty, sTitleProperty)
{
	if(typeof(mSelect) == 'string')
	{
		$select = $("#"+mSelect);
	}
	else
	{
		$select = $(mSelect);
	}

	var sOptions = '';
	$.each
	(
		oItems,
		function(sGroupTitle, oGroupItems)
		{
			if(sGroupTitle) sOptions += '<optgroup label="'+sGroupTitle+'">';

			$.each
			(
				oGroupItems,
				function(i, oGroupItem)
				{
					sOptions += '<option value="'+oGroupItem[sValueProperty]+'"';
					if(oGroupItem.selected)
					{
						sOptions += ' selected="selected"';
					}

					sOptions += '>'+oGroupItem[sTitleProperty]+'</option>';
				}
			);
			if(sGroupTitle) sOptions += '</optgroup>';
		}
	);

	$select.html(sOptions);
}


function updateOccFields(sJSONURL, mFieldGroupSelect, mFieldSelect, iSelectedID)
{
	var $fieldGroupSelect = toJQuery(mFieldGroupSelect);
	var $fieldSelect = toJQuery(mFieldSelect);

	$fieldSelect.parent().append('<img id="occFieldLoadingImg" src="_imagepool/ajax_loader.gif" />');
	disableInputs($fieldSelect);
	$.getJSON
	(
		sJSONURL+"&group_id="+$fieldGroupSelect.val(),
		function(oResponse)
		{
			if(iSelectedID !== undefined)
			{
				$.each
				(
					oResponse,
					function(iIndex, aOccField)
					{
						aOccField.selected = (aOccField.id == iSelectedID);
					}
				);
			}

			populateSelect($fieldSelect, oResponse, "id", "title");
			$("#occFieldLoadingImg").remove();
			enableInputs($fieldSelect);
		}
	);
}


function toJQuery(mVal)
{
	if(typeof(mVal) == 'string')
	{
		return $("#"+mVal);
	}
	else
	{
		return $(mVal);
	}
}

function getRowByColumnValue(aArray, sColumnName, mValue)
{
	var iCnt = aArray.length;

	if(sColumnName == undefined) sColumnName = "id";

	for(i = 0; i < iCnt; ++i)
	{
		if(aArray[i][sColumnName] == mValue)
		{
			return aArray[i];
		}
	}

	return false;
}

function getQueryParam(sParamName, mReturnValueIfInexistent)
{
	if(mReturnValueIfInexistent == undefined) mReturnValueIfInexistent = false;

	var sQuery = window.location.search.substring(1);
	var sParams = sQuery.split("&");
	for (var i = 0; i< sParams.length; i++)
	{
		var aPair = sParams[i].split("=");
		if (aPair[0] == sParamName)
		{
			return aPair[1];
		}
	}

	return mReturnValueIfInexistent;
}


function getDocHeight(doc)
{
	return Math.max
	(
		Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight),
		Math.max(doc.body.offsetHeight, doc.documentElement.offsetHeight),
		Math.max(doc.body.clientHeight, doc.documentElement.clientHeight)
	);
}


function getDocWidth(doc)
{
	return Math.max
	(
		Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth),
		Math.max(doc.body.offsetWidth, doc.documentElement.offsetWidth),
		Math.max(doc.body.clientWidth, doc.documentElement.clientWidth)
	);
}


function trim(str, chars)
{
	return ltrim(rtrim(str, chars), chars);
}


function ltrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}


function rtrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}


//function multiselectSimpleClick(sSelectID, sSelectAllIndex, iMaxItemNumber, mouseDownCallback)
//{
//	$select = $("#"+sSelectID);
//
//	iMaxItemNumber = iMaxItemNumber || Number.MAX_VALUE;
//
//	$select.children("option").mousedown
//	(
//		function()
//		{
//			if(mouseDownCallback != undefined)
//			{
//				mouseDownCallback($(this));
//			}
//
//			$(this).attr("selected", !$(this).attr("selected") && ($(this).parent().val() == undefined || ($(this).parent().val().length < iMaxItemNumber) || (sSelectAllIndex != undefined && $(this).attr("value") == sSelectAllIndex)));
//
//			if(sSelectAllIndex != undefined)
//			{
//				if($(this).attr("value") == sSelectAllIndex)
//				{
//					$(this).parent().children("option").attr("selected", $(this).attr("selected"));
//				}
//				else if($(this).parent().val() && $(this).parent().val().length == $(this).parent().children("option").length - 1)
//				{
//					$(this).parent().children("option[value='"+sSelectAllIndex+"']").attr("selected", true);
//				}
//			}
//
//			return false;
//		}
//	);
//
//	if(sSelectAllIndex != undefined && $.inArray(String(sSelectAllIndex), $select.val()) != -1)
//	{
//		$select.children("option").attr("selected", true);
//	}
//}


function multiselectSimpleClick(sSelectID, sSelectAllIndex, iMaxItemNumber, mouseDownCallback, overrideSelectableCallback)
{
	$select = $("#"+sSelectID);

	iMaxItemNumber = iMaxItemNumber || Number.MAX_VALUE;

// 	$select.mouseup
// 	(
// 		function()
// 		{
// 			$(this).data("mousedown", false);
// 		}
// 	);
//
// 	$select.children("option").mouseover
// 	(
// 			function()
// 			{
// 				if($(this).parent().data("mousedown"))
// 				{
// 					clickOption($(this), sSelectAllIndex, iMaxItemNumber, mouseDownCallback, overrideSelectableCallback);
// 				}
// 			}
// 	);

	$select.children("option").mousedown
	(
			function()
			{
				//$(this).parent().data("mousedown", true);
				clickOption($(this), sSelectAllIndex, iMaxItemNumber, mouseDownCallback, overrideSelectableCallback);
				return false;
			}
	);

	if(sSelectAllIndex != undefined && $.inArray(String(sSelectAllIndex), $select.val()) != -1)
	{
		$select.children("option").attr("selected", true);
	}
}


function clickOption($option, sSelectAllIndex, iMaxItemNumber, mouseDownCallback, overrideSelectableCallback)
{
	if(mouseDownCallback != undefined)
	{
		mouseDownCallback($option);
	}

	if(overrideSelectableCallback == undefined)
	{
		overrideSelectableCallback = function($option){return false;};
	}

	$option.attr("selected", !$option.attr("selected") && ($option.parent().val() == undefined || ($option.parent().val().length < iMaxItemNumber) || (sSelectAllIndex != undefined && $option.attr("value") == sSelectAllIndex) || overrideSelectableCallback($option)));

	if(sSelectAllIndex != undefined)
	{
		if($option.attr("value") == sSelectAllIndex)
		{
			$option.parent().children("option").attr("selected", $option.attr("selected"));
		}
		else if($option.parent().val() && $option.parent().val().length == $option.parent().children("option").length - 1)
		{
			$option.parent().children("option[value='"+sSelectAllIndex+"']").attr("selected", true);
		}
	}
}


function rand(min, max)
{
	if(min > max)
	{
		return -1;
	}

	if(min == max)
	{
		return min;
	}

	return min + parseInt(Math.random() * (max-min + 1));
}


$.fn.tooltip = function()
{
	fXOffset = 10;
	fYOffset = 20;

	$(this).mouseover
	(
		function(e)
		{
			if($(this).attr("title"))
			{
				$(this).data("title", $(this).attr("title"));
				$(this).attr("title", "");
				$("body").append("<p id='tooltip' style='max-width: 400px'>"+ $(this).data("title") +"</p>");
				$("#tooltip")
					.css("top", (e.pageY - fXOffset) + "px")
					.css("left", (e.pageX + fYOffset) + "px")
					.fadeIn("fast");
			}
		}
	);

	$(this).mouseout
	(
		function()
		{
			if($(this).data("title"))
			{
				$(this).attr("title", $(this).data("title"));
				$("#tooltip").remove();
			}
		}
	);

	$(this).mousemove
	(
		function(e)
		{
			$("#tooltip")
				.css("top",(e.pageY - fXOffset) + "px")
				.css("left",(e.pageX + fYOffset) + "px");
		}
	);
};


function validateInputV2(sFormID, sURL, oOptions)
{
	var success = false;
	var oDefaultOptions = {writeInputErrors: true, callbackSuccess: function(){}, callbackError: function(){}};
	
	oOptions = $.extend(oDefaultOptions, oOptions);
	
	$(".style_on_error").removeClass("error");
		
	if(oOptions.writeInputErrors) jQuery("p.error").remove();
	jQuery("label").removeClass("error");
	jQuery("#validationInfo")
		.removeClass("error")
		.html('Eingaben werden validiert ...');

		jQuery.ajax
		({
			type: "POST",
			url: sURL,
			//data: jQuery("#"+sFormID).find(":input").clone().attr("disabled", false).serializeArray(),
			data: jQuery("#"+sFormID).find(":input").cloneWithValue().attr("disabled", false).serializeArray(),
			//data: jQuery("#"+sFormID).find(":input").serializeArray(),
			async: false,
			dataType: "json",
			error: jQueryAjaxError,
			success: function(oJSON)
			{
				//alert(jQuery("#"+sFormID).find(":input").cloneWithValue().attr("disabled", false).serializeArray()[16].value);
				//alert(jQuery("#"+sFormID).find(":input").serializeArray()[16].value);
				if(!oJSON.success)
				{
					jQuery("#validationInfo").addClass("error").css("display", "none").html(oJSON.errorMessages.join("<br \/><br \/>")).stop(true, true).fadeIn(500);

					jQuery.each
					(
						oJSON.fields,
						function(i, oFieldData)
						{
							if(oFieldData.error)
							{
								$label = jQuery("label[for='"+oFieldData.field+"']");
								$label.addClass("error");
								
								if(oOptions.writeInputErrors)
								{
									$label.after('<p class="error" style="display: none;">'+oFieldData.error+'</p>');
								}
								
								$("#"+oFieldData.field+", :input[name='"+oFieldData.field+"[]']").closest(".input_main_parent").filter(".style_on_error").addClass("error").andSelf().find(".style_on_error").addClass("error");
							}
							
							jQuery("p.error").fadeIn(500);
						}
					);
					
					oOptions.callbackError(oJSON);
					success = false;
				}
				else
				{
					jQuery("#validationInfo")
						.removeClass("error")
						.css("display", "none")
						.html(oJSON.successMessage)
						.fadeIn(500);
					
					oOptions.callbackSuccess(oJSON);
					success = true;
				}
			}
		});

	return success;
}


function jQueryAjaxError (oXHR, sStatus, oException)
{
	switch(sStatus)
	{
		case 'parsererror':
			if(oXHR.responseText.search(/<jc:logged_out\s*\/>/) >= 0)
			{
				alert("Für diese Funktionalität müssen Sie eingeloggt sein.");
			}
			else
			{
				alert("Es ist eine ungültige Antwort vom System empfangen worden.");	
			}
			
			break;
		case 'timeout':
			alert("Zeit zur Verbindungsherstellung ist abgelaufen.");
			break;
		default:
			alert("Es ist ein Fehler aufgetreten.");
	}
}


$.fn.makeFixedFloating = function(sLeft, sTop)
{
    return this.each
	(
		function()
		{
	        var $el = $(this);

	        $el.css({ position: "fixed" });
	        
			if(sLeft)
			{
				if(sLeft == "center")
				{
					$el.show();
					$el.css("left", (($(window).width() - $el.width()) / 2) + "px");
				}
				else
				{
					$el.css("left", sLeft);
				}
			}
			
			if(sTop)
			{
				if(sTop == "center")
				{
					$el.css("top", (($(window).height() - $el.height()) / 2) + "px");
				}
				else
				{
					$el.css("top", sTop);
				}
			}
		}
	);
}


//Funktioniert bisher nur, wenn man direkt Eingabeelemente klont.
$.fn.cloneWithValue = function(bCopyEventHandlers)
{
	$cloned = $(this).clone(bCopyEventHandlers);
	//$elements = $(this).find("*").andSelf().filter("textarea, select");
	$elements = $(this).find("textarea, select").andSelf();
	//$clonedElements = $cloned.find("*").andSelf().filter("textarea, select");
	$clonedElements = $cloned.find("textarea, select").andSelf();
	
	//alert($elements.length + ", " + $clonedElements.length);
	
	
	var sNames;
	var sClonedNames;
	
	/*$(this).each
	(
		function()
		{
			sNames += $(this).attr("name") + "=" +$(this).val() + ", ";
		}
	);
	
	//alert(sNames);
	
	$cloned.each
	(
		function()
		{
			sClonedNames += $(this).attr("name") + "=" +$(this).val() + ", ";
		}
	);*/
	
	
	//alert(sClonedNames); return;
	$elements.each
	(
		function()
		{
			
			//sNames += $elements.eq($elements.index(this)).attr("name") + ", ";
			//sClonedNames += $clonedElements.eq($elements.index(this)).attr("name") + ", ";
						
			$clonedElements.eq($elements.index(this)).val($(this).val());
		}
	);
	
	//alert(sNames);
	//alert(sClonedNames);

	return $cloned;
}


$.fn.ajaxLoading = function()
{
	$(this).each
	(
		function()
		{
			oPos = $(this).position();
			
			$img = $('<img src="template/base/images/ajax_loading.gif" />');
			fLeft = oPos.left;// + ($(this).width() -  $img.width()) / 2;
			fTop = oPos.top;// + ($(this).height() -  $img.height()) / 2;
			
			$(this).parent().append($img.css("position", "absolute").css("left", fLeft+"px").css("top", oPos.fTop+"px"));
		}
	);
}

/* 
 * Spinbutton plugin for jQuery
 * http://www.softwareunity.com/jquery/JQuerySpinBtn/
 *
 * Adds bells and whistles to any ordinary textbox to
 * make it look and feel like a SpinButton Control.
 *
 * Copyright (c) 2006-2009 Software Unity Ltd
 * Dual licensed under the MIT and GPL licenses.
 * http://www.softwareunity.com/jquery/MIT-LICENSE.txt
 * http://www.softwareunity.com/jquery/GPL-LICENSE.txt
 *
 * Originally written by George Adamson, Software Unity (george.jquery@softwareunity.com) August 2006.
 * - Added min/max options
 * - Added step size option
 * - Added bigStep (page up/down) option
 *
 * Modifications made by Mark Gibson, (mgibson@designlinks.net) September 2006:
 * - Converted to jQuery plugin
 * - Allow limited or unlimited min/max values
 * - Allow custom class names, and add class to input element
 * - Removed global vars
 * - Reset (to original or through config) when invalid value entered
 * - Repeat whilst holding mouse button down (with initial pause, like keyboard repeat)
 * - Support mouse wheel in Firefox
 * - Fix double click in IE
 * - Refactored some code and renamed some vars
 *
 * Tested in IE6, Opera9, Firefox 1.5
 * v1.0  11 Aug 2006 - George Adamson	- First release
 * v1.1     Aug 2006 - George Adamson	- Minor enhancements
 * v1.2  27 Sep 2006 - Mark Gibson		- Major enhancements
 * v1.3a 28 Sep 2006 - George Adamson	- Minor enhancements
 */
$.fn.SpinButton = function(cfg){
	return this.each(function(){
		this.spinCfg = {
			//min: cfg && cfg.min ? Number(cfg.min) : null,
			//max: cfg && cfg.max ? Number(cfg.max) : null,
			min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null,	// Fixes bug with min:0
			max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
			step: cfg && cfg.step ? Number(cfg.step) : 1,
			page: cfg && cfg.page ? Number(cfg.page) : 10,
			upClass: cfg && cfg.upClass ? cfg.upClass : 'up',
			downClass: cfg && cfg.downClass ? cfg.downClass : 'down',
			reset: cfg && cfg.reset ? cfg.reset : this.value,
			delay: cfg && cfg.delay ? Number(cfg.delay) : 500,
			interval: cfg && cfg.interval ? Number(cfg.interval) : 100,
			_btn_width: 20,
			_btn_height: 12,
			_direction: null,
			_delay: null,
			_repeat: null
		};
		
		this.adjustValue = function(i){
			var v = (isNaN(this.value) ? this.spinCfg.reset : Number(this.value)) + Number(i);
			if (this.spinCfg.min !== null) v = Math.max(v, this.spinCfg.min);
			if (this.spinCfg.max !== null) v = Math.min(v, this.spinCfg.max);
			this.value = v;
		};
		
		$(this)
		.addClass(cfg && cfg.spinClass ? cfg.spinClass : 'spin-button')
		
		.mousemove(function(e){
			// Determine which button mouse is over, or not (spin direction):
			var x = e.pageX || e.x;
			var y = e.pageY || e.y;
			var $el = $(e.target) || $(e.srcElement);
					
			var direction = 
				(x > $el.offset().left + $el.attr("offsetWidth") - this.spinCfg._btn_width)
				? ((y < $el.offset().top + this.spinCfg._btn_height) ? 1 : -1) : 0;
			
			if (direction !== this.spinCfg._direction) {
				// Style up/down buttons:
				switch(direction){
					case 1: // Up arrow:
						$(this).removeClass(this.spinCfg.downClass).addClass(this.spinCfg.upClass);
						break;
					case -1: // Down arrow:
						$(this).removeClass(this.spinCfg.upClass).addClass(this.spinCfg.downClass);
						break;
					default: // Mouse is elsewhere in the textbox
						$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
				}
				
				// Set spin direction:
				this.spinCfg._direction = direction;
			}
		})
		
		.mouseout(function(){
			// Reset up/down buttons to their normal appearance when mouse moves away:
			$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
			this.spinCfg._direction = null;
		})
		
		.mousedown(function(e){
			if (this.spinCfg._direction != 0) {
				// Respond to click on one of the buttons:
				var self = this;
				var adjust = function() {
					self.adjustValue(self.spinCfg._direction * self.spinCfg.step);
				};
			
				adjust();
				
				// Initial delay before repeating adjustment
				self.spinCfg._delay = window.setTimeout(function() {
					adjust();
					// Repeat adjust at regular intervals
					self.spinCfg._repeat = window.setInterval(adjust, self.spinCfg.interval);
				}, self.spinCfg.delay);
			}
		})
		
		.mouseup(function(e){
			// Cancel repeating adjustment
			window.clearInterval(this.spinCfg._repeat);
			window.clearTimeout(this.spinCfg._delay);
		})
		
		.dblclick(function(e) {
			if ($.browser.msie)
				this.adjustValue(this.spinCfg._direction * this.spinCfg.step);
		})
		
		.keydown(function(e){
				
			//backspace, entf, links, rechts, shift, ctrl, ende, pos1 
			var aEditingKeys = [8,46,39,37,16,17,35,36];
			
			if(e.ctrlKey)
			{
				//mit ctrl sind auch c,v,x und z erlaubt
				aEditingKeys = aEditingKeys.concat([67,86,88,90]);
			}
			
			if((e.keyCode < 48 || e.keyCode > 57) && !aEditingKeys.contains(e.keyCode))
			{
				switch(e.keyCode)
				{
					case 38: this.adjustValue(this.spinCfg.step);  break; // Up
					case 40: this.adjustValue(-this.spinCfg.step); break; // Down
					case 33: this.adjustValue(this.spinCfg.page);  break; // PageUp
					case 34: this.adjustValue(-this.spinCfg.page); break; // PageDown
				}
				
				e.preventDefault();
			}
		})

		.bind("mousewheel", function(e){
			// Respond to mouse wheel in IE. (It returns up/dn motion in multiples of 120)
			if (e.wheelDelta >= 120)
				this.adjustValue(this.spinCfg.step);
			else if (e.wheelDelta <= -120)
				this.adjustValue(-this.spinCfg.step);
			
			e.preventDefault();
		})
		
		.change(function(e){
			this.adjustValue(0);
		});
		
		if (this.addEventListener) {
			// Respond to mouse wheel in Firefox
			this.addEventListener('DOMMouseScroll', function(e) {
				if (e.detail > 0)
					this.adjustValue(-this.spinCfg.step);
				else if (e.detail < 0)
					this.adjustValue(this.spinCfg.step);
				
				e.preventDefault();
			}, false);
		}
	});
	
	function coord(el,prop) {
		var c = el[prop], b = document.body;
		
		while ((el = el.offsetParent) && (el != b)) {
			if (!$.browser.msie || (el.currentStyle.position != 'relative'))
				c += el[prop];
		}
		
		return c;
	}
};


Array.prototype.contains = function (element)
{
    for (var i = 0; i < this.length; ++i) {
        if (this[i] == element) {
            return true;
        }
    }
    return false;
}

$.fn.restrictChars = function(aCharList, oSanitizeRegExp, bAllowEditingKeys)
{
	$(this).each
	(
		function()
		{
			$(this).bind
			(		
				"keydown",
				function(e)
				{
					var aAllowedKeys = [];
					var aExpandedCharList = [];
					//backspace, entf, links, rechts, shift, ctrl, ende, pos1
					if(bAllowEditingKeys) aAllowedKeys = aAllowedKeys.concat([8,46,39,37,16,17,35,36]);
					
					if(e.ctrlKey && bAllowEditingKeys)
					{
						//mit ctrl sind auch c,v,x und z erlaubt
						aAllowedKeys = aAllowedKeys.concat([67,86,88,90]);
					}

					for(var i = 0; i < aCharList.length; ++i)
					{
							switch(aCharList[i])
							{
								case "digits":
									aExpandedCharList = aExpandedCharList.concat([48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105]);
									break;
								case "alpha":
									aExpandedCharList = aExpandedCharList.concat([65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90]);
									break;
								case "german_chars":
									aExpandedCharList = aExpandedCharList.concat([192,59,222,219]);
									break;
								default:
									aExpandedCharList.push(aCharList[i]);
							}
					}
					
					aAllowedKeys = aAllowedKeys.concat(aExpandedCharList);
					
					if(!aAllowedKeys.contains(e.keyCode))
					{
						e.preventDefault();
					}
				}
			).bind
			(
				"keyup keypress blur",
				function()
				{
					sCleanedVal = $(this).val().replace(oSanitizeRegExp, '');
					if(sCleanedVal != $(this).val()) $(this).val(sCleanedVal);
				}
			);	
		}
	);
};


function removeTags(sText, aAllowedTags, bRemoveAttributes)
{
	sText = sText.replace
	(
		/(<\/?)([a-z1-6]+).*?>/gi,
		function(sMatch, sTagOpening, sTagName)
		{
			if(aAllowedTags == undefined || !aAllowedTags.contains(sTagName.toLowerCase()))
			{
				return '';
			}
			else
			{
				if(bRemoveAttributes)
				{
					return sTagOpening+sTagName+">";
				}
				else
				{
					return sMatch;
				}
			}
		}
	);

	return sText;
}


function substr_replace (sText, sReplace, iStart, iLength)
{
    if (iStart < 0)
	{
		iStart = iStart + sText.length;
    }

	iLength = iLength !== undefined ? iLength : sText.length;

	if (iLength < 0)
	{
		iLength = iLength + sText.length - iStart;
	}

	return sText.slice(0, iStart)+sReplace.substr(0, iLength)+sReplace.slice(iLength)+sText.slice(iStart+iLength);
}


function br2nl(sText)
{
	return sText.replace(/<br\s*(.*?)\/?>/gi, "\n", sText);
}


function toJSON(obj)
{
	switch(typeof obj)
	{
		case 'number':
		case 'boolean':
		case 'function':
			return obj;
			break;
		case 'string':
			return '"' + obj + '"';
			break;
		case 'object':
			var str;
			if (obj.constructor === Array || typeof obj.callee !== 'undefined')
			{     
			   str = '[';
			   var i, len = obj.length;
			   for (i = 0; i < len-1; i++) { str += toJSON(obj[i]) + ','; }
			   str += toJSON(obj[i]) + ']';
			}     
			else  
			{     
			   str = '{';
			   var key;
			   for (key in obj) { str += '"' + key + '":' + toJSON(obj[key]) + ','; }
			   str = str.replace(/\,$/, '') + '}';
			}
			return str;
			break;
		default:
			return 'UNKNOWN';
			break;
	}
	
};


function editHint(iID)
{
	$img = $("#hintImage"+iID);
	oImgPos = $img.position();
	
	$("#hintEdit"+iID).show().css({top: oImgPos.top+"px", left: oImgPos.left+"px"});
}
