﻿/**********************
 * Hier stehen die Funktionen im Zusammenhang mit dem Bearbeiten von Personen.
 **********************/

 /**
  *  Die Funktion erzeugt ein Eingabefeld f�r das geforderte Feld im Informationsblock
  * Christians Kommentar
  **/

var IB_xxx_save = new Array();

function edit_IB_xxx(field) {
	IB_xxx_save[field] = byId('person_IB_' + field).innerHTML;
	
	var elem = document.createElement('input');
	elem.type = 'text';
	elem.id = 'person_IB_' + field + '_edit';
	elem.className = 'standardInput';
	//elem.value = replaceHTMLChars(trim(byId('person_IB_' + field).innerHTML));
	if(byId('person_IB_' + field).firstChild) elem.value = replaceHTMLChars(trim(byId('person_IB_' + field).firstChild.data));
		
	var children = byId('person_IB_' + field).parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1)	children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1))			children[i].style.display = 'inline';
	}
	
	if(byId('person_IB_' + field).firstChild) byId('person_IB_' + field).parentNode.replaceChild(elem, byId('person_IB_' + field));
	else {
		var parent = byId('person_IB_' + field).parentNode;
		parent.removeChild(byId('person_IB_' + field));
		parent.appendChild(elem);
	}
}

/**
*  Die Funktion speichert die �nderungen an dem geforderten Feld
**/

function save_IB_xxx(field) {
	if (byId('person_IB_' + field + '_edit').value == '' && field == 'name') alert('Bitte einen Namen eingeben.');
	else {
		
		//var string = encodeURIComponent(replaceSpecialChars(trim(byId('person_IB_' + field + '_edit').value))).replace('%0D%0','%0');
		//string = string.replace('%0D%0','%0');
		//alert(string);

		new Ajax.Request('PHP/person/existSaveInformationBlock.php', {
			method: 'get', 
			parameters: 'unique=' + new Date().getTime() + '&mode=' + field + '&value=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_IB_' + field + '_edit').value))) + '&docId=' + person_getActId(), 
			onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc('displaySummary_'+field,'changed',person_getActId());
			},
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
		});
	
		var elem = document.createElement('span');
		elem.id = 'person_IB_' + field;
		//elem.innerHTML = getBreak(replaceSpecialChars(trim(byId('person_IB_' + field + '_edit').value))).replace('\n','');
		elem.innerHTML = getBreak(replaceSpecialChars(trim(byId('person_IB_' + field + '_edit').value))).replace('<br/><br/>','<br/>');
		
		
		var children = byId('person_IB_' + field + '_edit').parentNode.childNodes;
		for(var i = 0; i < children.length; i++) {
			if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'inline';
			if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		}
		
		byId('person_IB_' + field + '_edit').parentNode.replaceChild(elem, byId('person_IB_' + field + '_edit'));
		
		if(field == 'name') byId('person_detailTitle').innerHTML = replaceSpecialChars(trim(byId('person_IB_' + field).innerHTML));
			
		if(person_selected.id) {
			var spans = person_selected.getElementsByTagName('span');
			for(var i = 0; i < spans.length; i++) {
				if(spans[i].className == field) {
					if(spans[i].innerHTML.indexOf('<span>, </span>') != -1) spans[i].innerHTML = replaceSpecialChars(trim(byId('person_IB_' + field).innerHTML)) + '<span>, </span>';
					else spans[i].innerHTML = replaceSpecialChars(trim(byId('person_IB_' + field).innerHTML));
				}
			}
		}
	}
}

/**
*  Die Funktion verwirft die �nderungen an dem geforderten Feld
**/

function redo_IB_xxx(field) {
	var elem = document.createElement('span');
	elem.id = 'person_IB_' + field;
	elem.innerHTML = IB_xxx_save[field];
	
	var children = byId('person_IB_' + field + '_edit').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1)	children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1))	children[i].style.display = 'none';
	}
	
	byId('person_IB_' + field + '_edit').parentNode.replaceChild(elem, byId('person_IB_' + field + '_edit'));
	//byId('person_IB_' + field).style.display = 'block';
	//byId('person_IB_' + field + '_edit').parentNode.removeChild(byId('person_IB_' + field + '_edit'));
}

/**
*  Die Funktion erzeugt ein Eingabefeld für das geforderte Feld im Informationsblock
**/

function edit_IB_shortBio() {
	IB_xxx_save['shortBio'] = byId('person_IB_shortBio').innerHTML;
	
	var elem = document.createElement('textarea');
	elem.id = 'person_IB_shortBio_edit';
	//alert("--"+document.getElementById("person_IB_shortBio").innerHTML+"--");
	elem.value = replaceHTMLChars(getLinefeed(trim(byId("person_IB_shortBio").innerHTML)));
	elem.rows = '6';
	
	var children = byId('person_IB_shortBio').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'none';		
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
	}
	byId('person_IB_shortBio').parentNode.replaceChild(elem, byId('person_IB_shortBio'));
}

var name_save = new Array();
/**
*  Die Funktion erzeugt die Eingabemöglichkeiten für die Namensbearbeitung
**/
function edit_name(elem) {
	name_save[elem.parentNode.id] = elem.parentNode.innerHTML;
	
	nameInput_new[elem.parentNode.id] = new Array();
	var tds1 = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	var tds2 = elem.parentNode.getElementsByTagName('tr')[1].getElementsByTagName('td');
	for(var i = 0; i < tds1.length; i++) {
		var array = new Array();
		array[0] = tds1[i].innerHTML;
		array[1] = tds2[i].lang;
		nameInput_new[elem.parentNode.id].push(array);
	}
	
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
	
	var tds = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	var name = '';
	for(var i = 0; i < tds.length; i++) name += tds[i].innerHTML + ' ';
		
	var input = document.createElement('input');
	input.type = 'text';
	input.className = 'standardInput';
	input.id = elem.parentNode.id + '_edit';
	input.value = replaceHTMLChars(trim(name));
	input.onkeyup = new Function("getNameTable(this)");

	var div = elem.parentNode.getElementsByTagName('div')[0];
	
	elem.parentNode.insertBefore(input, div);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[0];
	var nameType = document.createElement('td');
	nameType.className = 'entry';
	nameType.lang = tr.getElementsByTagName('td')[1].lang;
	
	var options = '<option value="common"';
	if(nameType.lang == 'common')		options += ' selected="selected"';	options += '>Gelaeufiger Name</option><option value="variant"';
	if(nameType.lang == 'variant')		options += ' selected="selected"';	options += '>Namensvariante</option><option value="pseudonym"';
	if(nameType.lang == 'pseudonym')	options += ' selected="selected"';	options += '>Pseudonym</option>';
	
	nameType.innerHTML = '<select id="' + elem.parentNode.id + '_nameType">' + options + '</select>';
	tr.replaceChild(nameType, tr.getElementsByTagName('td')[1]);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[1];
	var nameLang = document.createElement('td');
	nameLang.className = 'entry';
	nameLang.lang = tr.getElementsByTagName('td')[1].lang;
	
	var options = '<option value="de"';
	if(nameLang.lang == 'de') options += ' selected="selected"';	options += '>deutsche Schreibweise</option><option value="fr"';
	if(nameLang.lang == 'fr') options += ' selected="selected"';	options += '>franzoesische Schreibweise</option><option value="en"';
	if(nameLang.lang == 'en') options += ' selected="selected"';	options += '>englische Schreibweise</option><option value="it"';
	if(nameLang.lang == 'it') options += ' selected="selected"';	options += '>italienisch Schreibweise</option>';
		
	nameLang.innerHTML = '<select id="' + elem.parentNode.id + '_lang">' + options + '</select>';
	tr.replaceChild(nameLang, tr.getElementsByTagName('td')[1]);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[2];
	var nameCorr = document.createElement('td');
	nameCorr.className = 'entry';
	nameCorr.lang = tr.getElementsByTagName('td')[1].lang;
	
	var options = '<option value="correct"';
	if(nameCorr.lang == 'correct')		options += ' selected="selected"'; options += '>Schreibweise ist korrekt</option><option value="incorrect"';
	if(nameCorr.lang == 'incorrect')	options += ' selected="selected"'; options += '>Schreibweise ist nicht korrekt</option><option value="unknown"';
	if(nameCorr.lang == 'unknown')		options += ' selected="selected"'; options += '>Unbekannt</option>';
		
	nameCorr.innerHTML = '<select id="' + elem.parentNode.id + '_corr">' + options + '</select>';
	tr.replaceChild(nameCorr, tr.getElementsByTagName('td')[1]);

	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[3];
	var nameNote = document.createElement('td');
	nameNote.className = 'entry';
	nameNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_note">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(nameNote, tr.getElementsByTagName('td')[1]);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[4];
	var nameNote = document.createElement('td');
	nameNote.className = 'entry';
	nameNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_sources">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(nameNote, tr.getElementsByTagName('td')[1]);
}

/**
*  Die Funktion verwirft die Änderungen dem Namneseintrag
**/

function redo_name(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) { redo_new_name(); return; }

	elemPar = elem.parentNode;
	elemPar.innerHTML = name_save[elem.parentNode.id];
	var children = elemPar.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}
}

/**
*  Die Funktion speichert den Namenseintrag
**/

function save_name(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) { save_new_name(); return; }

	var y = elem.parentNode.id;
	
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var name = '';
	for(var j = 0; j < nameInput_new[elem.parentNode.id].length; j++)
		name += '&nameVal_' + (j+1) + '=' + encodeURIComponent(replaceSpecialChars(trim(nameInput_new[elem.parentNode.id][j][0]))) + '&nameType_' + (j+1) + '=' + nameInput_new[elem.parentNode.id][j][1];
	
	new Ajax.Request('PHP/person/existSaveName.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&nameType=' + byId(elem.parentNode.id + '_nameType').value  + '&lang=' + byId(elem.parentNode.id + '_lang').value + '&corr=' + byId(elem.parentNode.id + '_corr').value + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + byId(elem.parentNode.id + '_sources').value + '&user=' + user.user + '&nameID=' + y + '&nameLength=' + nameInput_new[elem.parentNode.id].length + name + '&where=' + y + '&what=changed', 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1)alert(t.responseText);
			//update_revisionDesc(y,'changed',person_getActId(),xquery);
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});

	byId(elem.parentNode.id + '_nameType').parentNode.lang		= byId(elem.parentNode.id + '_nameType').value;
	byId(elem.parentNode.id + '_lang').parentNode.lang			= byId(elem.parentNode.id + '_lang').value;
	byId(elem.parentNode.id + '_corr').parentNode.lang			= byId(elem.parentNode.id + '_corr').value;

	elem.parentNode.removeChild(byId(elem.parentNode.id + '_edit'));
	
	byId(elem.parentNode.id + '_nameType').parentNode.innerHTML	= byId(elem.parentNode.id + '_nameType').options[byId(elem.parentNode.id + '_nameType').selectedIndex].innerHTML;
	byId(elem.parentNode.id + '_lang').parentNode.innerHTML		= byId(elem.parentNode.id + '_lang').options[byId(elem.parentNode.id + '_lang').selectedIndex].innerHTML;
	byId(elem.parentNode.id + '_corr').parentNode.innerHTML		= byId(elem.parentNode.id + '_corr').options[byId(elem.parentNode.id + '_corr').selectedIndex].innerHTML;

	byId(elem.parentNode.id + '_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value)));
	byId(elem.parentNode.id + '_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value)));
}

/**
 *  Die Funktion löscht einen Namenseintrag
 **/

function delete_name(elem) {
	
	var check = confirm('Moechten Sie den Namenseintrag wirklich loeschen?');
	if(check == false) return;
	
	var y = elem.parentNode.id;
	
	new Ajax.Request('PHP/person/existDeleteName.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&nameID=' + y, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'removed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});

	byId('person_nameData').removeChild(elem.parentNode);
	/*
	var divs = byId('person_nameData').childNodes;
	var nr = 1;
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].className.indexOf('nameComplete') != -1) {
			divs[i].id = 'person_name_' + nr;
			nr++;
			alert(divs[i].id);
		}
	}
	*/
}

/**
 *  Die Funktion erzeugt die Eingabem�glichkeit f�r einen neuen Namen
 **/

function newName() {
	nameInput_new['person_name_new'] = new Array();

	var name = byId('person_name_template').cloneNode(true);
	name.id = 'person_name_new';
	name.getElementsByTagName('input')[0].id = 'person_name_new_edit';
	
	var selects = name.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++) selects[i].id = selects[i].id.replace(/template/, 'new');
	
	name.getElementsByTagName('textarea')[0].id = name.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	name.getElementsByTagName('textarea')[1].id = name.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');

	name.style.display = 'block';
	
	byId('person_nameData').removeChild(byId('person_link_newName'));
	byId('person_nameData').appendChild(name);

	byId('person_name_new_edit').value = '';

	var children = name.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
*  Die Funktion bricht das Anlegen einer neuen Person ab
**/

function redo_new_name() {
	byId('person_name_new').parentNode.removeChild(byId('person_name_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newName';
	link.className = 'newEntry';
	link.onclick = newName;
	link.innerHTML = 'Name hinzufügen';
	link.style.display = 'inline';

	byId('person_nameData').appendChild(link);
}

/**
*  Die Funktion speichert einen neuen Namen
**/

function save_new_name() {
	/*
	var y = 1;
	for(var i = 0; i < byId('person_nameData').childNodes.length; i++) {
		if(byId('person_nameData').childNodes[i].id && byId('person_nameData').childNodes[i].id.toLowerCase().indexOf('person_name_new') != -1) break;
		if(byId('person_nameData').childNodes[i].id && byId('person_nameData').childNodes[i].id.toLowerCase().indexOf('person_name_') != -1) y++;		
	}
	*/
	var now = new Date();
	y = 'persName-'+now.getTime();	
		
	var children = byId('person_name_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = 'Änderung speichern';
			children[i].onclick.value = new Function('save_name(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = 'Änderung verwerfen';
			children[i].onclick.value = new Function('redo_name(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			children[i].innerHTML = byId('person_name_new_nameType').options[byId('person_name_new_nameType').selectedIndex].innerHTML;
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var name = '';
	for(var j = 0; j < nameInput_new['person_name_new'].length; j++)
		name += '&nameVal_' + (j+1) + '=' + encodeURIComponent(replaceSpecialChars(trim(nameInput_new['person_name_new'][j][0]))) + '&nameType_' + (j+1) + '=' + nameInput_new['person_name_new'][j][1];
			
	new Ajax.Request('PHP/person/existSaveName.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&nameType=' + byId('person_name_new_nameType').value  + '&lang=' + byId('person_name_new_lang').value + '&corr=' + byId('person_name_new_corr').value + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_name_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_name_new_sources').value))) + '&user=' + user.user + '&nameID=' + y + '&nameLength=' + nameInput_new['person_name_new'].length + name, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1)	alert(t.responseText); 
			//update_revisionDesc(y,'added',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});

	byId('person_name_new_nameType').parentNode.lang	= byId('person_name_new_nameType').value;
	byId('person_name_new_lang').parentNode.lang		= byId('person_name_new_lang').value;
	byId('person_name_new_corr').parentNode.lang		= byId('person_name_new_corr').value;

	byId('person_name_new').removeChild(byId('person_name_new_edit'));
	byId('person_name_new').id = y;
	byId('person_name_new_nameType').parentNode.innerHTML = byId('person_name_new_nameType').options[byId('person_name_new_nameType').selectedIndex].innerHTML;
	byId('person_name_new_lang').parentNode.innerHTML = byId('person_name_new_lang').options[byId('person_name_new_lang').selectedIndex].innerHTML;
	byId('person_name_new_corr').parentNode.innerHTML = byId('person_name_new_corr').options[byId('person_name_new_corr').selectedIndex].innerHTML;

	byId('person_name_new_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId('person_name_new_note').value)));
	byId('person_name_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_name_new_sources').value)));

	var link = document.createElement('span');
	link.id = 'person_link_newName';
	link.className = 'newEntry';
	link.onclick = newName;
	link.innerHTML = 'Name hinzufügen';
	link.style.display = 'inline';
	
	byId('person_nameData').appendChild(link);
}

var life_save = new Array();
/**
 *  Die Funktion erzeugt die Eingabem�glichkeiten f�r die Bearbietung eines Lebensdateneintrags
 **/
function edit_life(elem) {
	life_save[elem.parentNode.id] = elem.parentNode.innerHTML;
	
	lifeInput_new[elem.parentNode.id] = new Array();
	var tds = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	for(var i = 0; i < tds.length; i++) {
		if(tds[i].lang == 'place') { lifeInput_new[elem.parentNode.id]['place'] = tds[i].innerHTML; continue; }
		if(tds[i].lang.indexOf('__') != -1) {
			var date1 = tds[i].lang.substring(0, tds[i].lang.indexOf('__'));
			var date2 = tds[i].lang.substr(tds[i].lang.indexOf('__') + '__'.length);
			
			var offset1 = date1.substr(date1.indexOf(':') + ':'.length);
			date1 = date1.substring(0, date1.indexOf(':'));

			var offset2 = date2.substr(date2.indexOf(':') + ':'.length);
			date2 = date2.substring(0, date2.indexOf(':'));
			
			lifeInput_new[elem.parentNode.id]['date'] = date1;
			lifeInput_new[elem.parentNode.id]['offset'] = offset1;
			lifeInput_new[elem.parentNode.id]['date2'] = date2;
			lifeInput_new[elem.parentNode.id]['offset2'] = offset2;
		}
	}	
	
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
	
	var tds = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	var life = '';
	for(var i = 0; i < tds.length; i++) { if(tds[i].lang == 'place') life += 'in '; life += tds[i].innerHTML + ' '; }
		
	var input = document.createElement('input');
	input.type = 'text';
	input.className = 'standardInput';
	input.id = elem.parentNode.id + '_edit';
	input.value = replaceHTMLChars(trim(life));
	input.onkeyup = new Function("getLifeTable(this)");

	var div = elem.parentNode.getElementsByTagName('div')[0];
	elem.parentNode.insertBefore(input, div);	

	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[0];
	var lifeNote = document.createElement('td');
	lifeNote.className = 'entry';
	lifeNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_note">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(lifeNote, tr.getElementsByTagName('td')[1]);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[1];
	var lifeNote = document.createElement('td');
	lifeNote.className = 'entry';
	lifeNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_sources">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(lifeNote, tr.getElementsByTagName('td')[1]);
}

/**
*  Die Funktion verwirft die �nderungen des Lebensdateneintrags
**/

function redo_life(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) {
		if(elem.parentNode.id.indexOf('birth') != -1) redo_new_birth();
		else redo_new_death();
		return;
	}
	
	elemPar = elem.parentNode;
	elemPar.innerHTML = life_save[elem.parentNode.id];
	var children = elemPar.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}	
	
}

/**
*  Die Funktion speichert den Lebensdateneintrag
**/

function save_life(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) {
		if(elem.parentNode.id.indexOf('birth') != -1) save_new_birth();
		else save_new_death();
		return;
	}
	
	var y = elem.parentNode.id;
			
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var url = '';

	if(lifeInput_new[elem.parentNode.id]) {
		if(lifeInput_new[elem.parentNode.id]["value"])		url += '&value=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["value"])));
		if(lifeInput_new[elem.parentNode.id]["date"])		url += '&date=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["date"])));
		if(lifeInput_new[elem.parentNode.id]["offset"])		url += '&offset=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["offset"])));
		if(lifeInput_new[elem.parentNode.id]["date2"])		url += '&date2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["date2"])));
		if(lifeInput_new[elem.parentNode.id]["offset2"])	url += '&offset2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["offset2"])));
		if(lifeInput_new[elem.parentNode.id]["place"])		url += '&place=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new[elem.parentNode.id]["place"])));
	}	

	if(elem.parentNode.id.indexOf('birth') != -1) {
		new Ajax.Request('PHP/person/existSaveBirth.php', {
			method: 'get', 
			parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value))) + '&user=' + user.user + '&birthId=' + y + url, 
			onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc(y,'changed',person_getActId());
			},
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
		});
	}else {
		new Ajax.Request('PHP/person/existSaveDeath.php', {
			method: 'get', 
			parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value))) + '&user=' + user.user + '&deathId=' + y + url, 
			onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc(y,'changed',person_getActId());
			},
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
		});
	}

	//byId(elem.parentNode.id + '_reliability').parentNode.lang = byId(elem.parentNode.id + '_reliability').value;
	elem.parentNode.removeChild(byId(elem.parentNode.id + '_edit'));
	//byId(elem.parentNode.id + '_reliability').parentNode.innerHTML = byId(elem.parentNode.id + '_reliability').options[byId(elem.parentNode.id + '_reliability').selectedIndex].innerHTML;
	byId(elem.parentNode.id + '_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value)));
	byId(elem.parentNode.id + '_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value)));
}

/**
 *  Die Funktion l�scht einen Lebensdateneintrag
 **/

function delete_life(elem) {
	var check = confirm('Moechten Sie den Lebensdateneintrag wirklich loeschen?');
	if(check == false) return;
	
	var y = elem.parentNode.id;
	
	new Ajax.Request('PHP/person/existDeleteLife.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&lifeId=' + y + '&birthDeath=' + (elem.parentNode.id.indexOf('birth') != -1?'birth':'death'), 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'removed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});
	
	//var isBirth = (elem.parentNode.id.indexOf('birth_') != -1);
	byId('person_lifeData').removeChild(elem.parentNode);
	/*
	var divs = byId('person_lifeData').childNodes;
	var nr = 1;
	for(var i = 0; i < divs.length; i++) {
		if(isBirth && /birth_/.test(divs[i].id)) {
			divs[i].id = 'person_birth_' + nr;
			nr++;
		}
		
		if(!isBirth && /death_/.test(divs[i].id)) {
			divs[i].id = 'person_death_' + nr;
			nr++;
		}
	}
	*/
}

/**
*  Die Funktion erzeugt die Eingabem�glichkeit f�r einen neuen Geburtstag
**/

function newBirth() {
	lifeInput_new['person_birth_new'] = new Array();
	
	var birth = byId('person_birth_template').cloneNode(true);
	birth.id = 'person_birth_new';
	birth.getElementsByTagName('input')[0].id = 'person_birth_new_edit';
	
	var selects = birth.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++)	selects[i].id = selects[i].id.replace(/template/, 'new');
	
	birth.getElementsByTagName('textarea')[0].id = birth.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	birth.getElementsByTagName('textarea')[1].id = birth.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');
	birth.style.display = 'block';
	
	byId('person_lifeData').insertBefore(birth, byId('person_link_newBirth'));
	byId('person_lifeData').removeChild(byId('person_link_newBirth'));
	byId('person_birth_new_edit').value = '';

	var children = birth.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1))	children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
*  Die Funktion erzeugt die Eingabem�glichkeit f�r einen neuen Geburtstag
**/

function newDeath() {
	lifeInput_new['person_death_new'] = new Array();

	var death = byId('person_death_template').cloneNode(true);
	death.id = 'person_death_new';
	death.getElementsByTagName('input')[0].id = 'person_death_new_edit';
	
	var selects = death.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++)	selects[i].id = selects[i].id.replace(/template/, 'new');
	
	death.getElementsByTagName('textarea')[0].id = death.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	death.getElementsByTagName('textarea')[1].id = death.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');
	death.style.display = 'block';
	
	byId('person_lifeData').insertBefore(death, byId('person_link_newDeath'));
	byId('person_lifeData').removeChild(byId('person_link_newDeath'));
	byId('person_death_new_edit').value = '';

	var children = death.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
*  Die Funktion bricht das Anlegen einer neuen Geburtstags ab
**/

function redo_new_birth() {
	byId('person_birth_new').parentNode.removeChild(byId('person_birth_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newBirth';
	link.className = 'newEntry';
	link.onclick = newBirth;
	link.innerHTML = 'Geburtstag hinzufügen<br/><br/>';
	link.style.display = 'inline';
	
	var death_exists = false;
	var children = byId('person_lifeData').childNodes;
	for(var i=0; i<children.length; i++) { if(children[i].id.indexOf('death') != -1) death_exists = true; break; }
	
	if(death_exists)					byId('person_lifeData').insertBefore(link, byId(children[i].id));
	else if(byId('person_death_new'))	byId('person_lifeData').insertBefore(link, byId('person_death_new'));
	else 								byId('person_lifeData').insertBefore(link, byId('person_link_newDeath'));	
}

/**
*  Die Funktion bricht das Anlegen einer neuen Todestags ab
**/

function redo_new_death() {
	byId('person_death_new').parentNode.removeChild(byId('person_death_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newDeath';
	link.className = 'newEntry';
	link.onclick = newDeath;
	link.innerHTML = 'Todestag hinzufügen';
	link.style.display = 'inline';

	byId('person_lifeData').appendChild(link);
}

/**
*  Die Funktion speichert einen neuen Geburtstag
**/

function save_new_birth() {
	/*
	var y = 1;
	for(var i = 0; i < byId('person_lifeData').childNodes.length; i++) {
		if(byId('person_lifeData').childNodes[i].id.toLowerCase().indexOf('death') != -1) { y = i; break; }
	}
	*/
	var now = new Date();
	var y = 'birth-'+now.getTime();
	
	var children = byId('person_birth_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = '�nderung speichern';
			children[i].onclick.value = new Function('save_birth(this)');
			children[i].style.display = 'none';
		}		
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = '�nderung verwerfen';
			children[i].onclick.value = new Function('redo_birth(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			children[i].innerHTML = 'Geburtstag:';
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}
	
	var url = '';

	if(lifeInput_new["person_birth_new"]) {
		if(lifeInput_new["person_birth_new"]["value"])		url += '&value=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["value"])));
		if(lifeInput_new["person_birth_new"]["date"])		url += '&date=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["date"])));
		if(lifeInput_new["person_birth_new"]["offset"])		url += '&offset=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["offset"])));
		if(lifeInput_new["person_birth_new"]["date2"])		url += '&date2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["date2"])));
		if(lifeInput_new["person_birth_new"]["offset2"])	url += '&offset2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["offset2"])));
		if(lifeInput_new["person_birth_new"]["place"])		url += '&place=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_birth_new"]["place"])));
	}
	new Ajax.Request('PHP/person/existSaveBirth.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_birth_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_birth_new_sources').value))) + '&user=' + user.user + '&birthId=' + y + url, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'added',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText);  }
	});

	//byId('person_birth_new_reliability').parentNode.lang = byId('person_birth_new_reliability').value;

	byId('person_birth_new').removeChild(byId('person_birth_new_edit'));
	byId('person_birth_new').id = y;
	//byId('person_birth_new_reliability').parentNode.innerHTML = byId('person_birth_new_reliability').options[byId('person_birth_new_reliability').selectedIndex].innerHTML;
	byId('person_birth_new_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId('person_birth_new_note').value)));
	byId('person_birth_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_birth_new_sources').value)));

	var link = document.createElement('span');
	link.id = 'person_link_newBirth';
	link.className = 'newEntry';
	link.onclick = newBirth;
	link.innerHTML = 'Geburtstag hinzufügen<br/><br/>';
	link.style.display = 'inline';

	byId('person_lifeData').insertBefore(link, byId(y).nextSibling);
}

/**
*  Die Funktion speichert einen neuen Todestag
**/

function save_new_death() {
	/*
	var y = 1;
	for(var i = 0; i < byId('person_lifeData').childNodes.length; i++) {
		if(byId('person_lifeData').childNodes[i].id.toLowerCase().indexOf('death_') != -1 && byId('person_lifeData').childNodes[i].id.toLowerCase().indexOf('person_death_new') == -1) {
			y++;
		}
	}
	*/
	var now = new Date();
	var y = 'death-'+now.getTime();
	
	var children = byId('person_death_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = 'Änderung speichern';
			children[i].onclick.value = new Function('save_birth(this)');
			children[i].style.display = 'none';
		}		
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = 'Änderung verwerfen';
			children[i].onclick.value = new Function('redo_birth(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			children[i].innerHTML = 'Todestag:';
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var url = '';

	if(lifeInput_new["person_death_new"]) {
		if(lifeInput_new["person_death_new"]["value"])		url += '&value=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["value"])));	
		if(lifeInput_new["person_death_new"]["date"])		url += '&date=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["date"])));	
		if(lifeInput_new["person_death_new"]["offset"])		url += '&offset=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["offset"])));	
		if(lifeInput_new["person_death_new"]["date2"])		url += '&date2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["date2"])));		
		if(lifeInput_new["person_death_new"]["offset2"])	url += '&offset2=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["offset2"])));
		if(lifeInput_new["person_death_new"]["place"])		url += '&place=' + encodeURIComponent(replaceSpecialChars(trim(lifeInput_new["person_death_new"]["place"])));
	}
	
	new Ajax.Request('PHP/person/existSaveDeath.php', {
		method: 'get', 		
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_death_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_death_new_sources').value))) + '&user=' + user.user + '&deathId=' + y + url, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'added',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});

	//byId('person_death_new_reliability').parentNode.lang = byId('person_death_new_reliability').value;

	byId('person_death_new').removeChild(byId('person_death_new_edit'));
	byId('person_death_new').id = y;
	//byId('person_death_new_reliability').parentNode.innerHTML = byId('person_death_new_reliability').options[byId('person_death_new_reliability').selectedIndex].innerHTML;
	byId('person_death_new_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId('person_death_new_note').value)));
	byId('person_death_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_death_new_sources').value)));


	var link = document.createElement('span');
	link.id = 'person_link_newDeath';
	link.className = 'newEntry';
	link.onclick = newDeath;
	link.innerHTML = 'Todestag hinzufügen';
	link.style.display = 'inline';

	byId('person_lifeData').appendChild(link);
}



var work_save = new Array();

/**
*  Die Funktion erzeugt die Eingabem�glichkeiten f�r die Bearbietung eines Arbeitseintrages
**/
function edit_work(elem) {
	work_save[elem.parentNode.id] = elem.parentNode.innerHTML;
	
	workInput_new[elem.parentNode.id] = new Array();
	var tds = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	for(var i = 0; i < tds.length; i++)	workInput_new[elem.parentNode.id][0] = tds[i].innerHTML;

	
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}

	var tds = elem.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td');
	var work = '';
	for(var i = 0; i < tds.length; i++) work += tds[i].innerHTML + ' ';
		
	var input = document.createElement('input');
	input.type = 'text';
	input.className = 'standardInput';
	input.id = elem.parentNode.id + '_edit';
	input.value = replaceHTMLChars(trim(work));
	input.onkeyup = new Function("getWorkTable(this)");

	var div = elem.parentNode.getElementsByTagName('div')[0];	
	elem.parentNode.insertBefore(input, div);
	
	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[0];
	var workNote = document.createElement('td');
	workNote.className = 'entry';
	workNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_note">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(workNote, tr.getElementsByTagName('td')[1]);

	var tr = elem.parentNode.getElementsByTagName('div')[1].getElementsByTagName('tr')[1];
	var workNote = document.createElement('td');
	workNote.className = 'entry';
	workNote.innerHTML = '<textarea id="' + elem.parentNode.id + '_sources">' + replaceHTMLChars(getLinefeed(trim(tr.getElementsByTagName('td')[1].innerHTML))) + '</textarea>';
	tr.replaceChild(workNote, tr.getElementsByTagName('td')[1]);
}

/**
*  Die Funktion verwirft die �nderungen des Arbeitsdateneintrags
**/

function redo_work(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) {
		if(elem.parentNode.id.indexOf('occupation_') != -1) redo_new_occupation();
		else redo_new_placeSum();		
		return;
	}
	
	elemPar = elem.parentNode;
	elemPar.innerHTML = work_save[elem.parentNode.id];
	var children = elemPar.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}	
}

/**
*  Die Funktion speichert den Arbeitsdateneintrag
**/

function save_work(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) {
		if(elem.parentNode.id.indexOf('occupation') != -1) save_new_occupation();
		else save_new_placeSum();		
		return;
	}
	
	var y = elem.parentNode.id;
			
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var url = '';

	if(workInput_new[elem.parentNode.id][0]) url += '&val=' + encodeURIComponent(replaceSpecialChars(trim(workInput_new[elem.parentNode.id][0])));

	if(elem.parentNode.id.indexOf('placeName') != -1) {
		new Ajax.Request('PHP/person/existSavePlaceSum.php', {
			method: 'get', 
			parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value))) + '&user=' + user.user + '&workId=' + y + url, 
			onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc(y,'changed',person_getActId());
			},
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
		});
	}else {
		new Ajax.Request('PHP/person/existSaveOccupation.php', {
			method: 'get', 
			parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value))) + '&user=' + user.user + '&workId=' + y + url, 
			onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc(y,'changed',person_getActId());
			},
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
		});
	}

	//byId(elem.parentNode.id + '_reliability').parentNode.lang = byId(elem.parentNode.id + '_reliability').value;
	elem.parentNode.removeChild(byId(elem.parentNode.id + '_edit'));
	//byId(elem.parentNode.id + '_reliability').parentNode.innerHTML = byId(elem.parentNode.id + '_reliability').options[byId(elem.parentNode.id + '_reliability').selectedIndex].innerHTML;
	byId(elem.parentNode.id + '_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value)));
	byId(elem.parentNode.id + '_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value)));
}

/**
*  Die Funktion löscht einen Lebensdateneintrag
**/

function delete_work(elem) {
	
	var check = confirm('Möchten Sie den Arbeitsdateneintrag wirklich löschen?');
	if(check == false) return;
	
	var y = elem.parentNode.id;
	
	new Ajax.Request('PHP/person/existDeleteWork.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&workId=' + y + '&method=' + (elem.parentNode.id.indexOf('occupation') != -1?'occupation':'placeName'), 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'removed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});
	
	//var isOccupation = (elem.parentNode.id.indexOf('occupation_') != -1);
	byId('person_workData').removeChild(elem.parentNode);
	/*
	var divs = byId('person_workData').childNodes;
	var nr = 1;
	for(var i = 0; i < divs.length; i++) {
		if(isOccupation && /occupation_/.test(divs[i].id)) {
			divs[i].id = 'person_occupation_' + nr;
			nr++;
		}
		
		if(!isOccupation && /placeSum_/.test(divs[i].id)) {
			divs[i].id = 'person_placeSum_' + nr;
			nr++;
		}
	}
	*/
}

/**
 *  Die Funktion erzeugt die Eingabemoeglichkeit fuer einen neuen Beruf
 **/

function newOccupation() {
	workInput_new['person_occupation_new'] = new Array();
	
	var occupation = byId('person_occupation_template').cloneNode(true);
	occupation.id = 'person_occupation_new';
	occupation.getElementsByTagName('input')[0].id = 'person_occupation_new_edit';
	
	var selects = occupation.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++) selects[i].id = selects[i].id.replace(/template/, 'new');
	
	occupation.getElementsByTagName('textarea')[0].id = occupation.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	occupation.getElementsByTagName('textarea')[1].id = occupation.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');
	occupation.style.display = 'block';
	
	byId('person_workData').insertBefore(occupation, byId('person_link_newOccupation'));
	byId('person_workData').removeChild(byId('person_link_newOccupation'));
	byId('person_occupation_new_edit').value = '';

	var children = occupation.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
 *  Die Funktion erzeugt die Eingabem�glichkeit f�r einen neuen Wirkort
 **/

function newPlaceSum() {
	workInput_new['person_placeSum_new'] = new Array();

	var placeSum = byId('person_placeSum_template').cloneNode(true);
	placeSum.id = 'person_placeSum_new';
	placeSum.getElementsByTagName('input')[0].id = 'person_placeSum_new_edit';
	
	var selects = placeSum.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++) selects[i].id = selects[i].id.replace(/template/, 'new');
	
	placeSum.getElementsByTagName('textarea')[0].id = placeSum.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	placeSum.getElementsByTagName('textarea')[1].id = placeSum.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');
	placeSum.style.display = 'block';
	
	byId('person_workData').insertBefore(placeSum, byId('person_link_newPlaceSum'));
	byId('person_workData').removeChild(byId('person_link_newPlaceSum'));
	byId('person_placeSum_new_edit').value = '';

	var children = placeSum.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
*  Die Funktion bricht das Anlegen einer neuen Arbeitseintrages ab
**/

function redo_new_occupation() {
	byId('person_occupation_new').parentNode.removeChild(byId('person_occupation_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newOccupation';
	link.className = 'newEntry';
	link.onclick = newBirth;
	link.innerHTML = 'Beruf hinzufügen<br/><br/>';
	link.style.display = 'inline';
	
	var place_exists = false;
	var children = byId('person_workData').childNodes;
	for(var i=0; i<children.length; i++) { if(children[i].id.indexOf('place') != -1) place_exists = true; break; }

	if(place_exists)						byId('person_workData').insertBefore(link, byId(children[i].id));
	else if(byId('person_placeSum_new'))	byId('person_workData').insertBefore(link, byId('person_placeSum_new'));
	else									byId('person_workData').insertBefore(link, byId('person_link_newPlaceSum'));	
}

/**
*  Die Funktion bricht das Anlegen eines neuen Wirkortes ab
**/

function redo_new_placeSum() {
	byId('person_placeSum_new').parentNode.removeChild(byId('person_placeSum_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newPlaceSum';
	link.className = 'newEntry';
	link.onclick = newPlaceSum;
	link.innerHTML = 'Wirkort hinzufügen';
	link.style.display = 'inline';

	byId('person_workData').appendChild(link);
}

/**
*  Die Funktion speichert einen neuen Geburtstag
**/

function save_new_occupation() {
	/*
	var y = 1;
	for(var i = 0; i < byId('person_workData').childNodes.length; i++) {
		if(byId('person_workData').childNodes[i].id.toLowerCase().indexOf('person_occupation_') != -1 && byId('person_workData').childNodes[i].id.toLowerCase().indexOf('person_occupation_new') == -1) {
			y++;
		}
	}
	*/
	var now = new Date();
	var y = 'occupation-'+now.getTime();
	
	var children = byId('person_occupation_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = 'Aenderung speichern';
			children[i].onclick.value = new Function('save_work(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = 'Aenderung verwerfen';
			children[i].onclick.value = new Function('redo_work(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			children[i].innerHTML = 'Beruf:';
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}
	
	var url = '';

	if(workInput_new["person_occupation_new"]) url += '&val=' + encodeURIComponent(replaceSpecialChars(trim(workInput_new["person_occupation_new"][0])));
	
	new Ajax.Request('PHP/person/existSaveOccupation.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_occupation_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_occupation_new_sources').value))) + '&user=' + user.user + '&workId=' + y + url, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'added',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});
	
	//byId('person_occupation_new_reliability').parentNode.lang = byId('person_occupation_new_reliability').value;

	byId('person_occupation_new').removeChild(byId('person_occupation_new_edit'));
	byId('person_occupation_new').id = y;
	//byId('person_occupation_new_reliability').parentNode.innerHTML = byId('person_occupation_new_reliability').options[byId('person_occupation_new_reliability').selectedIndex].innerHTML;
	byId('person_occupation_new_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId('person_occupation_new_note').value)));
	byId('person_occupation_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_occupation_new_sources').value)));

	var link = document.createElement('span');
	link.id = 'person_link_newOccupation';
	link.className = 'newEntry';
	link.onclick = newOccupation;
	link.innerHTML = 'Beruf hinzufügen<br/><br/>';
	link.style.display = 'inline';

	byId('person_workData').insertBefore(link, byId(y).nextSibling);
}

/**
 *  Die Funktion speichert einen neuen Wirkort
 **/

function save_new_placeSum() {
	/*
	var y = 1;
	for(var i = 0; i < byId('person_workData').childNodes.length; i++) {
		if(byId('person_workData').childNodes[i].id.indexOf('person_placeSum_') != -1 && byId('person_workData').childNodes[i].id.indexOf('person_placeSum_new') == -1) {
			y++;
		}
	}
	*/
	var now = new Date();
	var y = 'placeName-'+now.getTime();
		
	var children = byId('person_placeSum_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = 'Änderung speichern';
			children[i].onclick.value = new Function('save_work(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = 'Änderung verwerfen';
			children[i].onclick.value = new Function('redo_work(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			children[i].innerHTML = 'Wirkort:';
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_life_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}

	var url = '';

	if(workInput_new["person_placeSum_new"]) url += '&val=' + encodeURIComponent(replaceSpecialChars(trim(workInput_new["person_placeSum_new"][0])));
	
	new Ajax.Request('PHP/person/existSavePlaceSum.php', {
		method: 'get',
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_placeSum_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_placeSum_new_sources').value))) + '&user=' + user.user + '&workId=' + y + url, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'changed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});

	//byId('person_placeSum_new_reliability').parentNode.lang = byId('person_placeSum_new_reliability').value;

	byId('person_placeSum_new').removeChild(byId('person_placeSum_new_edit'));
	byId('person_placeSum_new').id = y;
	//byId('person_placeSum_new_reliability').parentNode.innerHTML = byId('person_placeSum_new_reliability').options[byId('person_placeSum_new_reliability').selectedIndex].innerHTML;
	byId('person_placeSum_new_note').parentNode.innerHTML		= getBreak(replaceSpecialChars(trim(byId('person_placeSum_new_note').value)));
	byId('person_placeSum_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_placeSum_new_sources').value)));


	var link = document.createElement('span');
	link.id = 'person_link_newPlaceSum';
	link.className = 'newEntry';
	link.onclick = newPlaceSum;
	link.innerHTML = 'Wirkort hinzufügen';
	link.style.display = 'inline';

	byId('person_workData').appendChild(link);
}


var bio_save = new Array();

/**
*  Die Funktion erzeugt die Eingabem�glichkeiten f�r einen Biographie-Eintrag
**/

function edit_bio(elem) {
	//person_bio_switchView('detailed');
	
	bio_save[elem.parentNode.id] = elem.parentNode.innerHTML;
	
	var input = document.createElement('input');
	input.type = 'text';
	input.className = 'halfInput';
	input.id = elem.parentNode.id + '_label';
	/*
	input.onkeyup = new Function("getBioTable(this)");
	*/
	var children = elem.parentNode.getElementsByTagName('span');
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		
		if(children[i].className && children[i].className.indexOf('label') != -1) {
			input.value = trim(children[i].innerHTML);
			children[i].parentNode.replaceChild(input, children[i]);
		}
 		if(i == children.length - 1) {
 			var content = replaceHTMLChars(getLinefeed(trim(children[i].getElementsByTagName('div')[0].innerHTML)));
 			children[i].innerHTML = '<textarea id="' + elem.parentNode.id + '_text" rows="5">' + content + '</textarea>';
 		}
	}
	var children = elem.parentNode.getElementsByTagName('div');
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		} 
	}	
	var children = elem.parentNode.getElementsByTagName('td');
	for(var i = 0; i < children.length; i++) {
		if(i == children.length - 5) children[i].innerHTML = '<textarea id="' + elem.parentNode.id + '_note" rows="3">' + replaceHTMLChars(getLinefeed(trim(children[i].innerHTML))) + '</textarea>';
		if(i == children.length - 3) children[i].innerHTML = '<textarea id="' + elem.parentNode.id + '_sources" rows="3">' + replaceHTMLChars(getLinefeed(trim(children[i].innerHTML))) + '</textarea>';
	}
}

/**
*  Die Funktion verwirft die �nderungen des Biographieeintrages
**/

function redo_bio(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) { redo_new_bio(); return; }
	
	elemPar = elem.parentNode;
	elemPar.innerHTML = bio_save[elem.parentNode.id];
	var children = elemPar.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_bio_detailedView').style.display == 'block') children[i].style.display = 'none';
			else children[i].style.display = 'block';
			children[i].className = 'detailed furtherInformations';
		}
	}
}

/**
*  Die Funktion speichert den Biographie-Eintrag
**/

function save_bio(elem) {
	if(elem.parentNode.id.indexOf('new') != -1) { save_new_bio(); return; }

	var y = elem.parentNode.id;
	
	var children = elem.parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_bio_detailedView').style.display == 'block') children[i].style.display = 'none';
			children[i].className = 'detailed furtherInformations';
		}
	}
	new Ajax.Request('PHP/person/existSaveBiography.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&user=' + user.user + '&bioId=' + y + '&bioLabel=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_label').value))) + '&bioText=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_text').value))) + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value))), 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'changed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});
	
	var span = document.createElement('span');
	span.className = 'label';
	span.innerHTML = replaceSpecialChars(trim(byId(elem.parentNode.id + '_label').value));
	span.style.display = 'block';
	elem.parentNode.replaceChild(span, byId(elem.parentNode.id + '_label'));
	
	var div = document.createElement('div');
	div.className = 'bioEntryText';
	div.innerHTML = getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_text').value)));
	div.style.display = 'block';
	byId(elem.parentNode.id + '_text').parentNode.replaceChild(div, byId(elem.parentNode.id + '_text'));
	
	//byId(elem.parentNode.id + '_text').parentNode.innerHTML = getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_text').value)));
	byId(elem.parentNode.id + '_note').parentNode.innerHTML = getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_note').value)));
	byId(elem.parentNode.id + '_sources').parentNode.innerHTML = getBreak(replaceSpecialChars(trim(byId(elem.parentNode.id + '_sources').value)));
}

/**
*  Die Funktion l�scht einen Biographieeintrag
**/

function delete_bio(elem) {
	
	var check = confirm('Möchten Sie den Biographie-Eintrag wirklich löschen?');
	if(check == false) return;
	
	var y = elem.parentNode.id;
	
	new Ajax.Request('PHP/person/existDeleteBiography.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&bioId=' + y, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc(y,'removed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});

	byId('person_bioData').removeChild(elem.parentNode);
	/*
	var divs = byId('person_bioData').childNodes;
	var nr = 1;
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].className.indexOf('bioEntry') != -1) {
			divs[i].id = 'person_bio_' + nr;
			nr++;
		}
	}
	*/
}

/**
*  Die Funktion erzeugt die Eingabem�glichkeit f�r einen neuen Biographie-Eintag
**/

function newBioEntry() {
	var bio = byId('person_bio_template').cloneNode(true);
	bio.id = 'person_bio_new';
	bio.getElementsByTagName('input')[0].id = 'person_bio_new_label';
	bio.getElementsByTagName('textarea')[0].id = bio.getElementsByTagName('textarea')[0].id.replace(/template/, 'new');
	bio.getElementsByTagName('textarea')[1].id = bio.getElementsByTagName('textarea')[1].id.replace(/template/, 'new');
	bio.getElementsByTagName('textarea')[2].id = bio.getElementsByTagName('textarea')[2].id.replace(/template/, 'new');
	bio.style.display = 'block';
	
	byId('person_bioData').removeChild(byId('person_link_newBioEntry'));
	byId('person_bioData').appendChild(bio);

	byId('person_bio_new_text').innerHTML = '';

	var children = bio.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1)) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			children[i].style.display = 'block';
			children[i].className = 'furtherInformations';
		}
	}
}

/**
 *  Die Funktion bricht das Anlegen eines neuen Biographie-Eintrages ab
 **/

function redo_new_bio() {
	byId('person_bio_new').parentNode.removeChild(byId('person_bio_new'));

	var link = document.createElement('span');
	link.id = 'person_link_newBioEntry';
	link.className = 'newEntry';
	link.onclick = newBioEntry;
	link.innerHTML = 'Biographie-Eintrag hinzufügen';
	link.style.display = 'inline';

	byId('person_bioData').appendChild(link);
}

/**
 *  Die Funktion speichert einen neuen Biographie-Eintrag
 **/

function save_new_bio() {
	//var y = byId('person_bioData').childNodes.length;
	
	var now = new Date();
	var y = 'biography_entry-'+now.getTime();
	
	var children = byId('person_bio_new').childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && (children[i].className.indexOf('informationEdit') != -1 || children[i].className.indexOf('informationDelete') != -1))
			children[i].style.display = 'inline';
		if(children[i].className && children[i].className.indexOf('informationSave') != -1) {
			children[i].title = 'Änderung speichern';
			children[i].onclick.value = new Function('save_bio(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && children[i].className.indexOf('informationRedo') != -1) {
			children[i].title = 'Änderung verwerfen';
			children[i].onclick.value = new Function('redo_bio(this)');
			children[i].style.display = 'none';
		}
		if(children[i].className && (children[i].className.indexOf('furtherInformations') != -1)) {
			if(byId('person_link_bio_simpleView').style.display == 'none') children[i].style.display = 'none';
			children[i].className = 'detailed furtherInformations';
		}
	}
	new Ajax.Request('PHP/person/existSaveBiography.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime()+ '&docId=' + person_getActId() + '&user=' + user.user + '&bioId=' + y + '&bioLabel=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_bio_new_label').value))) + '&bioText=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_bio_new_text').value))) + '&note=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_bio_new_note').value))) + '&sources=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_bio_new_sources').value))), 
		onSuccess: function(t) {
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText); createSortable();
			//update_revisionDesc(y,'added',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});

	var span = document.createElement('span');
	span.className = 'label';
	span.innerHTML = replaceSpecialChars(trim(byId('person_bio_new_label').value));
	//span.style.display = 'block';
	byId('person_bio_new').replaceChild(span, byId('person_bio_new_label'));
	
	var td1 = document.createElement('td');
	td1.className = 'label';
	td1.innerHTML = 'Letzte Änderung:';
	var td2 = document.createElement('td');
	td2.className = 'entry';
	// es wird einfach das aktuelle Datum dazugeschrieben, damit da überhaupt etwas steht
	var monat = now.getMonth() + 1;
	td2.innerHTML = user.displayName + ' (' + user.institution + '), ' + now.getFullYear() + '-' + monat + '-' + now.getDate();
	
	var tr = document.createElement('tr');
	tr.appendChild(td1);
	tr.appendChild(td2);
	byId('person_bio_new_sources').parentNode.parentNode.parentNode.appendChild(tr);
	
	byId('person_bio_new_text').parentNode.innerHTML	= '<div class="bioEntryText">'+getBreak(replaceSpecialChars(trim(byId('person_bio_new_text').value)))+'</div>';
	byId('person_bio_new_note').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_bio_new_note').value)));
	byId('person_bio_new_sources').parentNode.innerHTML	= getBreak(replaceSpecialChars(trim(byId('person_bio_new_sources').value)));
	
	
	byId('person_bio_new').id = y;

	var link = document.createElement('span');
	link.id = 'person_link_newBioEntry';
	link.className = 'newEntry';
	link.onclick = newBioEntry;
	link.innerHTML = 'Biographie-Eintrag hinzufügen';
	link.style.display = 'inline';

	byId('person_bioData').appendChild(link);
}

/**
 *  Die Funktion erzeugt ein Eingabefeld f�r den editorischen Kommentar
 **/

var editorialComment_save = '';

function edit_editorialComment() {
	editorialComment_save = trim(byId('person_editorialComment').innerHTML);
	
	var data = trim(byId('person_editorialComment').innerHTML);
	
	var elem = document.createElement('textarea');
	elem.id = 'person_editorialComment_edit';
	elem.value = replaceHTMLChars(getLinefeed(trim(data)));
	elem.rows = '20';
	
	var children = byId('person_editorialComment').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';	
	}
	byId('person_editorialComment').parentNode.replaceChild(elem, byId('person_editorialComment'));
}

/**
*  Die Funktion speichert die Änderungen des editorischen Kommentars
**/

function save_editorialComment() {
	var data = byId('person_editorialComment_edit').value;

	var elem = document.createElement('span');
	elem.id = 'person_editorialComment';
	elem.innerHTML = getBreak(replaceSpecialChars(trim(data)));
	
	var children = byId('person_editorialComment_edit').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1)
			children[i].style.display = 'inline';
		
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1))
			children[i].style.display = 'none';
	}
	
	new Ajax.Request('PHP/person/existSaveEditorialComment.php', {
		method: 'get',
		parameters: 'unique=' + new Date().getTime() + '&value=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_editorialComment_edit').value))) + '&docId=' + person_getActId(), 
		onSuccess: function(t) {
				if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
				//update_revisionDesc('editorial_comment','changed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});

	byId('person_editorialComment_edit').parentNode.replaceChild(elem, byId('person_editorialComment_edit'));
}

/**
*  Die Funktion verwirft die Änderungen des editorischen Kommentars
**/

function redo_editorialComment() {
	var elem = document.createElement('span');
	elem.id = 'person_editorialComment';
	elem.innerHTML = editorialComment_save;
	
	var children = byId('person_editorialComment_edit').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
	}	
	byId('person_editorialComment_edit').parentNode.replaceChild(elem, byId('person_editorialComment_edit'));
}

/**
*  Die Funktion erzeugt ein Eingabefeld für den Kommentar
**/

var comment_save = '';

function edit_comment() {
	comment_save = trim(byId('person_comment').innerHTML);
	
	var data = trim(byId('person_comment').innerHTML);
	
	var elem = document.createElement('textarea');
	elem.id = 'person_comment_edit';
	elem.value = replaceHTMLChars(getLinefeed(trim(data)));
	elem.rows = '20';
	
	var children = byId('person_comment').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'none';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'inline';
		
	}
	
	byId('person_comment').parentNode.replaceChild(elem, byId('person_comment'));
}

/**
*  Die Funktion speichert die �nderungen des Kommentars
**/

function save_comment() {
	var data = byId('person_comment_edit').value;

	var elem = document.createElement('span');
	elem.id = 'person_comment';
	elem.innerHTML = getBreak(replaceSpecialChars(trim(data)));
	
	var children = byId('person_comment_edit').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1) children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1)) children[i].style.display = 'none';
	}
	
	new Ajax.Request('PHP/person/existSaveComment.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime() + '&value=' + encodeURIComponent(replaceSpecialChars(trim(byId('person_comment_edit').value))) + '&docId=' + person_getActId(), 
		onSuccess: function(t) { 
			if(t.responseText.indexOf('ERROR') != -1) alert(t.responseText);
			//update_revisionDesc('person_comment','changed',person_getActId());
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText) }
	});

	byId('person_comment_edit').parentNode.replaceChild(elem, byId('person_comment_edit'));
}

/**
*  Die Funktion verwirft die �nderungen des editorischen Kommentars
**/

function redo_comment() {
	var elem = document.createElement('span');
	elem.id = 'person_comment';
	elem.innerHTML = comment_save;
	
	var children = byId('person_comment_edit').parentNode.childNodes;
	for(var i = 0; i < children.length; i++) {
		if(children[i].className && children[i].className.indexOf('informationEdit') != -1)																																				children[i].style.display = 'inline';
		if(children[i].className && (children[i].className.indexOf('informationSave') != -1 || children[i].className.indexOf('informationRedo') != -1))			children[i].style.display = 'none';
	}	
	byId('person_comment_edit').parentNode.replaceChild(elem, byId('person_comment_edit'));
}

function person_getActId() {
	if(person_selected && person_selected.id) return person_selected.id.replace(/person_/, '');
	return person_selected;
}

/**
*  Diese Funktion erfragt beim Server einen Lock f�r die gew�hlte Person
**/

var lockRenewTimeout = null;

function editPerson() {
	new Ajax.Request('PHP/existRequestLock.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime() + '&docId=' + person_getActId() + '&user=' + user.user, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('FAILURE') == -1) {
				var spans = byId('fffi-person_details').getElementsByTagName('span');
				
				for(var i = 0; i < spans.length; i++) {
					if(spans[i].className == 'informationEdit' || spans[i].className == 'informationDelete' || spans[i].className == 'newEntry') spans[i].style.display = 'inline';
				}
				
				if(byId('person_nameData') && byId('person_nameData').style && byId('person_nameData').style.display == 'none')	byId('person_nameData').style.display = 'block';
				if(byId('person_lifeData') && byId('person_lifeData').style && byId('person_lifeData').style.display == 'none')	byId('person_lifeData').style.display = 'block';
				if(byId('person_workData') && byId('person_workData').style && byId('person_workData').style.display == 'none')	byId('person_workData').style.display = 'block';
				if(byId('person_bioData')  && byId('person_bioData').style  && byId('person_bioData').style.display  == 'none')	byId('person_bioData').style.display  = 'block';
				
				byId('person_editPerson').innerHTML = 'Bearbeitungsmodus verlassen';
				byId('person_editPerson').onclick = releasePerson;
				
				byId('person_bioData').style.cursor = 'move';
				byId('person_bioMenu_infoText').style.display = 'block';
				
				//person_life_switchView('detailed');
				
				lockRenewTimeout = setInterval('renewLock()', 30000);
				
				createSortable();
				
			}else alert('Ein anderer Benutzer bearbeitet diese Person, bitte versuchen Sie später noch einmal, die Person für Ihre Änderungen zu sperren.');
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});
	
	if(nobility.length == 0) {
		new Ajax.Request('names.txt', {
			method: 'get', 
			onSuccess: createNameTypeArray,
			onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
		});
	}
}

/**
 * Diese Funktion macht aus der Liste der Biographieeintr�ge ein "Sortable" damit man die Eintr�ge verschieben kann
 */

function createSortable() {
	Sortable.create("person_bioData", {
		onUpdate: function() {
			new Ajax.Request("PHP/person/existSaveBioSort.php", {
				method: "post",
				parameters: { data: serialize("person_bioData"), docId: person_getActId() }
			});
		},
		tag: 'div'
	});
}

/**
 * Hilfsfunktion f�r createSortable() die ein �hnliches Ergebnis wie Sortable.serialize rausgibt
 * mit der Form "id[]=...&id[]=...&id[]=... usw." Daraus wird dann sp�ter ein Array erstellt.
 * @return string result
 */

function serialize(id) {
	var children = byId(id).childNodes;
	var result='';
	for (i = 0; i < children.length; i++) {
		if (i > 0) result += '&';
		result += id+'[]='+children[i].id; 
	}
	return result;
}

/**
*  Diese Funktion verl�ngert den Lock f�r die gew�hlte Person
**/

function renewLock() {
	new Ajax.Request('PHP/existRenewLock.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime() + '&docId=' + person_getActId() + '&user=' + user.user, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('FAILURE') != -1) {
				alert(t.responseText);
//				alert('Beim Verlängern des Locks ist ein Fehler aufgetreten.');
			}
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});
}

/**
*  Diese Funktion l�scht den Lock f�r die gew�lte Person
**/

function releasePerson() {
	clearInterval(lockRenewTimeout);
	
	var spans = byId('fffi-person_details').getElementsByTagName('span');
	for(var i = 0; i < spans.length; i++) {
		if(spans[i].className && spans[i].className.indexOf('informationRedo') != -1 && spans[i].style.display.indexOf('inline') != -1)
			spans[i].onclick();
	}
	
	Sortable.destroy('person_bioData');
	byId('person_bioData').style.cursor = 'default';
	
	new Ajax.Request('PHP/existReleaseLock.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime() + '&docId=' + person_getActId() + '&user=' + user.user, 
		onSuccess: function(t) {
			if(t.responseText.indexOf('FAILURE') == -1) {
				var spans = byId('fffi-person_details').getElementsByTagName('span');
				for(var i = 0; i < spans.length; i++) {
					if(spans[i].className == 'informationEdit' || spans[i].className == 'informationDelete' || spans[i].className == 'newEntry') spans[i].style.display = 'none';
				}

				if(byId('person_nameData').innerHTML.indexOf('class="nameComplete') == -1)			byId('person_nameData').style.display = 'none';
				if(byId('person_lifeData').innerHTML.indexOf('class="lifeComplete') == -1)			byId('person_lifeData').style.display = 'none';
				if(byId('person_workData').innerHTML.indexOf('class="workComplete') == -1)			byId('person_workData').style.display = 'none';
				if(byId('person_bioData').innerHTML.indexOf('class="information bioEntry') == -1)	byId('person_bioData').style.display  = 'none';
				
				byId('person_bioMenu_infoText').style.display  = 'none';

				byId('person_editPerson').innerHTML = 'Personendaten bearbeiten';
				byId('person_editPerson').onclick = editPerson;
				
				byId('person_lifeDataLoading').style.display = 'block';
				requestsLifeDatesLoading = 3;
				
				new Ajax.Request('PHP/person/existRequestNames.php', {
					method: 'get', 
					parameters: 'unique=' + new Date().getTime() + '&id=' + person_getActId(), 
					onSuccess: getNamesSuccess,
					onFailure: getRequestsFailure
				});
			
				new Ajax.Request('PHP/person/existRequestBirthDeath.php', {
					method: 'get', 
					parameters: 'unique=' + new Date().getTime() + '&id=' + person_getActId(), 
					onSuccess: getBirthDeathSuccess,
					onFailure: getRequestsFailure
				});
			
				new Ajax.Request('PHP/person/existRequestOccupationPlaceSummary.php', {
					method: 'get', 
					parameters: 'unique=' + new Date().getTime() + '&id=' + person_getActId(), 
					onSuccess: getOccupationPlaceSummarySuccess,
					onFailure: getRequestsFailure
				});
				
				person_life_switchView('simple');
				person_bio_switchView('simple');
			}
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});
}

function deletePerson() {
	var check = confirm('Möchten Sie diese Person wirklich löschen? Sie kann nach dem Vorgang nur noch durch einen Administrator wiederhergestellt werden.');
	if(check == false) return;		
	
	new Ajax.Request('PHP/person/existDeletePerson.php', {
		method: 'get', 
		parameters: 'unique=' + new Date().getTime() + '&docId=' + person_getActId(), 
		onSuccess: function(t) {
			var id = person_getActId();
			alert(id);
			person_setSelected(byId('person_' + person_getActId()));
			byId('person_' + id).parentNode.removeChild(byId('person_' + id));
			person_closeDetails();
		},
		onFailure: function(t) { alert('Error ' + t.status + ' -- ' + t.statusText); }
	});
}