function handleHttpResponse() { 
	 /* Make sure that the transaction has finished. The XMLHttpRequest object
	has a property called readyState with several states:
	0: Uninitialized
	1: Loading
	2: Loaded
	3: Interactive
	4: Finished */
	var type = document.getElementById('ajaxtype').value;
	var field = document.getElementById('ajaxfield').value;
	var baseClass = document.getElementById('ajaxclass_'+field).value;
	var formtype = document.getElementById('ajaxformtype_'+field).value;	
	if (http.readyState == 4) { 
		// XML-Daten extrahieren
		var xmldoc = http.responseXML;
		var root_node = xmldoc.getElementsByTagName('root')[0];	
		var resultCode = root_node.getElementsByTagName('resultCode')[0].firstChild.data;
		try {
			var newData = root_node.getElementsByTagName('newData')[0].firstChild.data;
		} catch(err) {
			var newData = '';
		}
		newData = ajaxRecieve(newData);				
		
		// Mozilla
		if(navigator.appName.indexOf("Netscape") != -1) {
			newData = newData.replace(/\r\n/g, '<br>\n');
		} 
		// IE
		else if(navigator.appName.indexOf("Explorer") != -1) {
			newData = newData.replace(/\r\n/g, '<br>');
		}
		// andere Browser
		else {
			newData = newData.replace(/\r\n/g, '<br>');
		}		

		// Sonderelemte wieder zu IDs umformen
		newData = commentParseToIDs(newData);			
		
		/*
		alert('PHP-Antwort: '+newData);
		alert(newData.length);
		alert(newData.charCodeAt(1));
		*/
		
		var div = document.getElementById(type+field);
		var content;

		if (resultCode == '1') {
			if(formtype=='switch') {
				content = newData;
			} else {
				content = '<div id="'+type+field+'Div" class="'+baseClass+'Edit" onmouseover="changeClass(this, \''+baseClass+'Hover\')" onmouseout="changeClass(this, \''+baseClass+'Edit\')" onclick="AjaxInput(\''+type+'\', \''+field+'\', \''+formtype+'\', \''+baseClass+'\')">'+newData+'</div>';
			}
		// Fehlerfall
		} else {
			if(formtype=='switch') {
				content = newData;
			} else {
				content = '<div id="'+type+field+'Div" class="'+baseClass+'Edit" onmouseover="changeClass(this, \''+baseClass+'Hover\')" onmouseout="changeClass(this, \''+baseClass+'Edit\')" onclick="AjaxInput(\''+type+'\', \''+field+'\', \''+formtype+'\', \''+baseClass+'\')">'+newData+'</div>';
			}
		}
		div.innerHTML = content;
	}
}

// ******************************** GEO ************************************

function handleHttpGeoSearchResponse() { 
	 /* Make sure that the transaction has finished. The XMLHttpRequest object
	has a property called readyState with several states:
	0: Uninitialized
	1: Loading
	2: Loaded
	3: Interactive
	4: Finished */
	var div = document.getElementById('geosearchresult');
	var type = document.getElementById('ajaxgeotype').value;	
	if (http.readyState == 4) { 
		var htmlcode = "";
		htmlcode += '<table style="margin:10px 0 0 -20px; padding:0px;">';
		htmlcode += '<tr><td class="bold">Ort</td><td class="bold">Land</td><td></td></tr>';
		// XML-Daten extrahieren
		var xmldoc = http.responseXML;
		var root_node = xmldoc.getElementsByTagName('geonames')[0];		
		var count = root_node.getElementsByTagName('totalResultsCount')[0].firstChild.data;
			
		if(type=='areacode') {
			var codes = root_node.getElementsByTagName('code');		
			for (var j=0; j<codes.length; j++) {
				var code = root_node.getElementsByTagName('code')[j];
				var town = code.getElementsByTagName('name')[0].firstChild.data;
				var countryCode = code.getElementsByTagName('countryCode')[0].firstChild.data;
				var lat = code.getElementsByTagName('lat')[0].firstChild.data;
				var lng = code.getElementsByTagName('lng')[0].firstChild.data;
				
				htmlcode += '<tr><td><a href="javascript:setMarker('+lat+', '+lng+', 13);">'+town+'</a></td><td>'+countryCode+'</td><td></td></tr>';
			}	
		} else if(type=="location") {
			var geoname = root_node.getElementsByTagName('geoname');
			for (var j=0; j<geoname.length; j++) {
				var geoname = root_node.getElementsByTagName('geoname')[j];
				var town = geoname.getElementsByTagName('name')[0].firstChild.data;
				var countryCode = geoname.getElementsByTagName('countryName')[0].firstChild.data;
				var lat = geoname.getElementsByTagName('lat')[0].firstChild.data;
				var lng = geoname.getElementsByTagName('lng')[0].firstChild.data;
				
				htmlcode += '<tr><td><a href="javascript:setMarker('+lat+', '+lng+', 13);">'+town+'</a></td><td>'+countryCode+'</td><td></td></tr>';
			}
		}
		
		htmlcode += '</table>';
		div.innerHTML = htmlcode;
	}
}

function setMarker(lat, lng, zoomlevel) {
	var point = new GLatLng(lat, lng);
	map.setCenter(point, zoomlevel, G_HYBRID_MAP);		
}

function AjaxGeoSearch(type) {
	document.getElementById('ajaxgeotype').value = type;
	input = document.getElementById(type);
	searchvalue = input.value;

	request = '/remoteservices/geoget.php';
	param = 'type='+type+'&param='+searchvalue;		

	//alert(request+'?'+param);
	http = getHTTPObject();
	http.onreadystatechange = handleHttpGeoSearchResponse;
	http.open("POST", request, true); 
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(param);
}

// ******************************** GEO ************************************
 
function getHTTPObject() { 
	var xmlhttp;
	var browser = navigator.appName;
	
	/* altes Verfahren
	if (!xmlhttp ) { 		
		if(browser == 'Microsoft Internet Explorer') {
		if (window.ActiveXObject){
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			try { xmlhttp = new XMLHttpRequest(); } 
			catch (e) { 
				xmlhttp = false; 
			} 
		}
	} 
	*/
	
	// neues Verfahren
	if (window.XMLHttpRequest){
		// If IE7, Mozilla, Safari, etc: Use native object
		var xmlhttp = new XMLHttpRequest();
	}
	else
	{
		if (window.ActiveXObject){		
		// …otherwise, use the ActiveX control for IE5.x and IE6
		var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlhttp;
}
 
// Alternativfelder switchen
function AjaxSwitch(type, field, fid, baseClass) {
	document.getElementById('ajaxformtype_'+field).value = 'switch';
	document.getElementById('ajaxclass_'+field).value = baseClass;
	document.getElementById('ajaxtype').value = type;
	document.getElementById('ajaxfield').value = field;
	div = document.getElementById(type+field);
	oldvalue = div.innerHTML;
	if(type=='photo') {
		if(field=='Orderable') {
			request = urls[type+field];
			param = 'fid='+fid+'&oldvalue='+ajaxSend(oldvalue);		
		}
		if(field=='Visibility') {
			request = urls[type+field];
			param = 'fid='+fid+'&oldvalue='+ajaxSend(oldvalue);		
		}
		if(field=='Medium') {
			request = urls[type+field];
			param = 'fid='+fid+'&oldvalue='+ajaxSend(oldvalue);		
		}
		if(field=='Watermark') {
			request = urls[type+field];
			param = 'fid='+fid+'&oldvalue='+ajaxSend(oldvalue);		
		}
		if(field=='Voteable') {
			request = urls[type+field];
			param = 'fid='+fid+'&oldvalue='+ajaxSend(oldvalue);		
		}
	}
	//alert(request+'?'+param);
	http = getHTTPObject();
	http.onreadystatechange = handleHttpResponse;
	http.open("POST", request, true); 
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(param);
}

var http = getHTTPObject(); // We create the HTTP Object 

// Sonnderelemte ersetzen
function commentParseToElements(oldval) {
	// Fotos
	fotoval = oldval.replace(/<(a|A) href="(.{0,23})\/foto\/(\d+?)\/([\w_-]{32})"><(img|IMG) src=".{0,23}\/foto\/thumb\/([\w_-]+?)\.jpg" border=("{0,1})0("{0,1})><\/(a|A)>/g, '[foto:$3_$4]');
	// <A class=highlight href="heise" border="0">fotouristen</A>
	linkval = fotoval.replace(/<(a|A) class=\"{0,1}highlight\"{0,1} href="(.+?)" target=\"{0,1}_blank\"{0,1} border="0">(.+?)<\/(a|A)>/g, '[link:$3|$2]');
	
	return linkval;
}


// Sonnderelemte wieder zu IDs umformen
function commentParseToIDs(oldval) {
	// Fotos
	fotoval = oldval.replace(/\[foto\:(\d+?)_([\w_-]{32})\]/g, '<a href="/foto/$1/$2"><img src="/foto/thumb/$1_$2.jpg" border="0"></a>');
	linkval = fotoval.replace(/\[link\:(.+?)\|(.+?)\]/g, "<a class='highlight' href='$2' target='_blank' border='0' />$1</a>");
	return linkval;
}


// Ajax-Editing
// formtype = 'input' or 'textarea'
function AjaxInput(type, field, formtype, baseClass) {	
	var content = new Object();
	document.getElementById('ajaxformtype_'+field).value = formtype;
	document.getElementById('ajaxclass_'+field).value = baseClass;
	div = document.getElementById(type+field);
	oldvalue = document.getElementById(type+field+"Div").innerHTML;
	document.getElementById('ajaxcancel_'+field).value = escape(oldvalue);
	
	/*
	alert('rohdaten: '+oldvalue);
	alert("Länge:"+oldvalue.length+" Pos0:"+oldvalue.charCodeAt(0)+" Pos1:"+oldvalue.charCodeAt(1)+" Pos2:"+oldvalue.charCodeAt(2)
			+" Pos3:"+oldvalue.charCodeAt(3)+" Pos4:"+oldvalue.charCodeAt(4)+" Pos5:"+oldvalue.charCodeAt(5)+" Pos6:"+oldvalue.charCodeAt(6));
	*/
	
	// br's kleinmachen
	val = oldvalue.replace(/<BR>/g, '<br>');
	
	// Sonderelemente ersetzen
	val = commentParseToElements(val);
	
	// Mozilla
	if(navigator.appName.indexOf("Netscape") != -1) {
		oldvalue = val.replace(/<br>/g, '');
	} 
	// IE
	else if(navigator.appName.indexOf("Explorer") != -1) {
		oldvalue = val.replace(/<br>/g, '\n');
	}
	// IE
	else if(navigator.appName.indexOf("Opera") != -1) {
		oldvalue = val.replace(/<br>\r\n/g, '\r\n');				// initial kommt "<BR> "
		oldvalue = oldvalue.replace(/<br>/g, '\r\n')				// danach "<br>"
	}
	// andere Browser
	else {
		oldvalue = val.replace(/<br>/g, '');
	}
	
	
	/*
	alert('Übergabe an textarea (nach Konvertierung): '+oldvalue);
	alert(oldvalue.length);
	alert(oldvalue.charCodeAt(1));
	*/

	prestyle = "";
	if(baseClass.substr(0,6)=='short_') prestyle='short_';
	else prestyle='';
	
	if(formtype=='input') {
		if(type.substr(0,6)=='answer') {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajax'+prestyle+'AnswerTitel" />';			
			html = content[field]+'<div class="ajaxBSAnswerTitle"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		} else if(type.substr(0,11)=='fotocomment') {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajaxFotoCommentTitel" />';			
			html = content[field]+'<div class="ajaxBSCommentTitle"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a> <a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div><div class="newline" />'; 
		} else if(type.substr(0,6)=='thread') {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajaxThreadTitel" />';
			html = content[field]+'<div class="ajaxButtonSpace"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		} else if(type.substr(0,5)=='photo') {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajaxPhotoTitel" />';
			html = content[field]+'<div class="ajaxBSPhotoTitle"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		} else if(type.substr(0,15)=='MArticlecomment') {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajaxMArticleTitel" />';
			html = content[field]+'<div class="ajaxButtonSpace"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		} else {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+xreplace(unescape(oldvalue), '"', '&quot;')+'" class="ajaxGeneral" />';
			html = content[field]+'<div class="ajaxButtonSpace"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		}
		
		
	} else if(formtype=='textarea') {
		
		if(type=='thread'){
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajaxThreadDesc">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea><br class="clearboth" />';
			html = content[field]+'<div class="ajaxButtonSpace" style="float:right;"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		
		} else if(type.substr(0,6)=='answer') {
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajax'+prestyle+'AnswerDesc">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea>';
			html = content[field]+'<div class="ajaxButtonSpace" style="float:right;"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
			
		} else if(type.substr(0,11)=='fotocomment') {
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajaxFotoCommentDesc">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea>';
			html = content[field] +	'<div style="clear:both; text-align:right; padding: 0 20px 0 0;"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a> <a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>';
		
		} else if(type.substr(0,11)=='photo') {
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajaxPhotoDesc">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea>';
			html = content[field] +	'<div style="clear:both; text-align:right; padding: 0 20px 0 0;"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a> <a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>';
		
		} else if(type.substr(0,15)=='MArticlecomment') {
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajaxMArticleCommentDesc">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea>';
			html = content[field] +	'<div style="clear:both; text-align:right; padding: 0 20px 0 0;"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a> <a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>';
		
		} else {
			content[field] = '<textarea id="'+type+field+'New" onkeydown="" class="ajaxGeneral">'+xreplace(unescape(oldvalue), '"', '&quot;')+'</textarea>';
			html = content[field]+'<div class="ajaxButtonSpace" align="right"><a class="admin" href="javascript:AjaxSave(\''+type+'\', \''+field+'\');">speichern</a><a class="highlight" href="javascript:AjaxCancel(\''+type+'\', \''+field+'\', \''+baseClass+'\');">abbrechen</a></div>'; 
		}
	}
	
	// div.form_content = html;
	div.innerHTML = html;
	NewFormfield = document.getElementById(type+field+'New');
	NewFormfield.focus();
}

function AjaxCancel(type, field, baseClass) {
	oldvalue_cancel = document.getElementById('ajaxcancel_'+field).value;
	value = unescape(oldvalue_cancel);
	div = document.getElementById(type+field);
	formtype = document.getElementById('ajaxformtype_'+field).value;
	var content = '<div id="'+type+field+'Div" class="'+baseClass+'Edit" onmouseover="changeClass(this, \''+baseClass+'Hover\');" onmouseout="changeClass(this, \''+baseClass+'Edit\');" onclick="AjaxInput(\''+type+'\', \''+field+'\', \''+formtype+'\', \''+baseClass+'\')">'+value+'</div>';
	div.innerHTML = content;
}

function AjaxSave(type, field) {	
	// Zu änderndes Feld setzen
	document.getElementById('ajaxtype').value = type;
	document.getElementById('ajaxfield').value = field;	
	var value = document.getElementById(type+field+'New').value;
	
	// Mozilla
	if(navigator.appName.indexOf("Netscape") != -1) {
		value = value.replace(/\n/g, '\r\n');
	} 

	/*
	alert('Übergabe an PHP: '+value);
	alert(value.length);
	alert(value.charCodeAt(1));
	*/
	// Answers in den Foren - Parameter werden dynamisch gesetzt
	if(type.substr(0,6)=='answer') {
		var aid = type.substr(6,20);
		if(field=='TitleAnswer') {
			request = urls[field];
			param = 'aid='+aid+'&title='+ajaxSend(value);
		} else if(field=='DescAnswer') {
			request = urls[field];
			param = 'aid='+aid+'&desc='+ajaxSend(value);
		}
	} else if(type.substr(0,11)=='fotocomment') {
		var cid = type.substr(11,20);
		if(field=='TitleFotoComment') {
			request = urls[field];
			param = 'cid='+cid+'&title='+ajaxSend(value);
		} else if(field=='DescFotoComment') {
			request = urls[field];
			param = 'cid='+cid+'&desc='+ajaxSend(value);
		}
	} else if(type.substr(0,2)=='hp') {
		var fieldid = type.substr(2,20);
		if(field=='FieldHP') {
			request = urls[field];
			param = 'fieldid='+fieldid+'&title='+ajaxSend(value);
		} 
	} else if(type.substr(0,15)=='MArticlecomment') {
		var cid = type.substr(15,20);
		if(field=='TitleMArticleComment') {
			request = urls[field];
			param = 'cid='+cid+'&title='+ajaxSend(value);
		} else if(field=='DescMArticleComment') {
			request = urls[field];
			param = 'cid='+cid+'&desc='+ajaxSend(value);
		}
	// Standartfelder - Parameter werden in Seite gesetzt
	} else {
		request = urls[field];
		param = parameter[field]+ajaxSend(value);
		//alert(request+'?'+param);
	}

	//alert(request+param);
	// für IE das Objekt jedesmal neu initialisieren :-(
	http = getHTTPObject();
	http.onreadystatechange = handleHttpResponse;
	http.open("POST", request, true); 
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(param);
}

// **************** Hidden ***************************

function handleHttpResponseHidden() { 
	 /* Make sure that the transaction has finished. The XMLHttpRequest object
	has a property called readyState with several states:
	0: Uninitialized
	1: Loading
	2: Loaded
	3: Interactive
	4: Finished

	Rückgabewerte:
	1|html-werte|daten-werte
	*/
	var type = document.getElementById('ajaxtype').value;
	var field = document.getElementById('ajaxfield').value;
	var formtype = document.getElementById('ajaxformtype_'+field).value;
	var editbutton = document.getElementById('ajaxeditbutton').value;
	var value = document.getElementById(type+field+'New').value;
	if (http.readyState == 4) { 
		// XML-Daten extrahieren
		var xmldoc = http.responseXML;
		// for debugging
		//alert(http.responseText);
		var root_node = xmldoc.getElementsByTagName('root')[0];	
		result = root_node.getElementsByTagName('resultCode')[0].firstChild.data;
		newval = root_node.getElementsByTagName('newData')[0].firstChild.data;
		newval = ajaxRecieve(newval);
		//alert(root_node.getElementsByTagName('newDataVal')[0].childNodes.length);
		if(root_node.getElementsByTagName('newDataVal')[0].childNodes.length>0) {
			newdataval = root_node.getElementsByTagName('newDataVal')[0].firstChild.data;
			newdataval = ajaxRecieve(newdataval);
		} else newdataval = "";
		
		div = document.getElementById(type+field);
		divHidden = document.getElementById(type+field+"DivHidden");
		if (result == '1') {
			content = '<span id="'+type+field+'Div" class="'+type+field+'">'+newval+'</span>';
			content+= '<span class="rechts" id="'+type+field+'EditButton">'+decode64(document.getElementById('ajaxeditbutton').value)+'</span>';
			content+= '<div id="'+type+field+'DivHidden" class="'+type+field+'Hidden">'+value+'</div>';
		// Fehlerfall
		} else {
			content = '<span id="'+type+field+'Div" class="'+type+field+'">'+newval+'</span>';
			content+= '<span id="'+type+field+'EditButton">'+decode64(document.getElementById('ajaxeditbutton').value)+'</span>';
			content+= '<div id="'+type+field+'DivHidden" class="'+type+field+'Hidden">'+value+'</div>';
		}
		div.innerHTML = content;
		document.getElementById(type+field+"DivHidden").innerHTML = newdataval;
	} 
}

function AjaxInputHidden(type, field, formtype) {
	content = new Object();
	document.getElementById('ajaxformtype_'+field).value = formtype;
	document.getElementById('ajaxeditbutton').value = encode64(document.getElementById(type+field+'EditButton').innerHTML);

	
	div = document.getElementById(type+field);
	oldvalue = encode64(escape(document.getElementById(type+field+"DivHidden").innerHTML));
	// oldvalue = encode64(oldvalue.replace(/<br>/g, ''));
	//oldvalue_cancel = encode64(document.getElementById(type+field+"Div").innerHTML);
	oldvalue_cancel = encode64(escape(document.getElementById(type+field+"Div").innerHTML));
	
	document.getElementById('ajaxcancelplain_'+field).value = oldvalue;
	document.getElementById('ajaxcancel_'+field).value = oldvalue_cancel;
	
	if(formtype=='input') {
		if(field=='MyTags') classname="ajaxMyFotoTags"
		else classname="ajaxFotoTags";
		// Leerzeichenbug IE umgehen
		if(oldvalue!='AA==')
			tags = xreplace(unescape(decode64(oldvalue)), '"', '&quot;');
		else
			tags = '';
		if(field=='ForeignTags') {
			var tagarray = tags.split(" ");
			request = urls[field];
			
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="" style="display:none" />';
			for(var i = 0; i < tagarray.length-1; i++) {
				content[field] += tagarray[i]+' <a href="javascript:AjaxDelHidden(\''+type+'\', \''+field+'\', \''+tagarray[i]+'\');" title="Tag \''+tagarray[i]+'\' löschen" title="Tag \''+tagarray[i]+'\' löschen"><img src="/img/ic_del.gif" border="0" /></a> ';
			}
		} else {
			content[field] = '<input id="'+type+field+'New" onkeydown="" value="'+tags+'" class="'+classname+'" />';
		}
	} else if(formtype=='textarea') {
		content[field] = '<textarea id="'+type+field+'New" onkeydown="" style="text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size:16px; font-weight: bold; padding:2px; width:100%; height: 100px; border:1px inset #e9e9ae; background-color:#ffffd3; margin: 0 0 5px 0;">'+xreplace(unescape(decode64(oldvalue)), '"', '&quot;')+'</textarea>';
	}
	if(field=='ForeignTags') {
		html = content[field] +	'<span class="rechts"><a class="highlight" href="javascript:AjaxCancelHidden(\''+type+'\', \''+field+'\');">abbrechen</a></span>';		
	} else {
		html = content[field] +	'<span class="rechts"><a class="admin" href="javascript:AjaxSaveHidden(\''+type+'\', \''+field+'\');">speichern</a> <a class="highlight" href="javascript:AjaxCancelHidden(\''+type+'\', \''+field+'\');">abbrechen</a></span>';
	}
	
	div.form_content = html;
	div.innerHTML = html;
}

function AjaxCancelHidden(type, field) {
	value = unescape(decode64(document.getElementById('ajaxcancel_'+field).value));
	value_plain = unescape(decode64(document.getElementById('ajaxcancelplain_'+field).value));
	div = document.getElementById(type+field);
	formtype = document.getElementById('ajaxformtype_'+field).value;
	content = '<span id="'+type+field+'Div" class="'+type+field+'">'+value+'</span>';
	content+= '<span class="rechts" id="'+type+field+'EditButton">'+decode64(document.getElementById('ajaxeditbutton').value)+'</span>';
	content+= '<div id="'+type+field+'DivHidden" class="'+type+field+'Hidden">'+value_plain+'</div>';
	div.innerHTML = content;
	//document.getElementById(type+field+'EditButton').innerHTML = decode64(document.getElementById('ajaxeditbutton').value);
}

function AjaxSaveHidden(type, field) {
	var sendRequest = 1;

	// Zu änderndes Feld setzen
	document.getElementById('ajaxtype').value = type;
	document.getElementById('ajaxfield').value = field;
	value = document.getElementById(type+field+'New').value;
	
	if(type=='photo' && field=='Tags' && trim(value.replace(/,/g, ""))=='') {
		sendRequest = 0;
		alert('Bitte gib mindestens ein Tag für dein Bild ein');
	}
	
	if(sendRequest==1) {
		request = urls[field]
		param = parameter[field] + ajaxSend(value);
	
		//alert(request + param);
		
		// für IE das Objekt jedesmal neu initialisieren :-(
		http = getHTTPObject();
		http.onreadystatechange = handleHttpResponseHidden;
		http.open("POST", request, true); 
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http.send(param);
	}
}

function AjaxDelHidden(type, field, value) {
	// Zu änderndes Feld setzen
	document.getElementById(type+field+'New').value = value;
	document.getElementById('ajaxtype').value = type;
	document.getElementById('ajaxfield').value = field;
	request = urls[field]
	param = parameter[field] + ajaxSend(value);

	// für IE das Objekt jedesmal neu initialisieren :-(
	http = getHTTPObject();
	http.onreadystatechange = handleHttpResponseHidden;
	http.open("POST", request, true); 
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(param);
}
function handleHttpResponsePure() { 
	 /* Make sure that the transaction has finished. The XMLHttpRequest object
	has a property called readyState with several states:
	0: Uninitialized
	1: Loading
	2: Loaded
	3: Interactive
	4: Finished

	Rückgabewerte:
	1|html-werte|daten-werte
	*/
	if (http.readyState == 4) { 
		// XML-Daten extrahieren
		var xmldoc = http.responseXML;
		var root_node = xmldoc.getElementsByTagName('root')[0];	
		var resultCode = root_node.getElementsByTagName('resultCode')[0].firstChild.data;
		var newData = root_node.getElementsByTagName('newData')[0].firstChild.data;
		
		newData = ajaxRecieve(newData);
		
		if (resultCode != '1') {
			alert('Fehler!');
		} 
	} 
}

function AjaxSavePure(url, parameters) {
	// für IE das Objekt jedesmal neu initialisieren :-(
	http = getHTTPObject();
	http.onreadystatechange = handleHttpResponsePure;
	http.open("POST", url, true); 
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(parameters);
	//alert(url+'?'+parameters);
}

function changeClass(obj, className) {
	obj.className=className;
}

function ajaxSend(string) {
	return encode64(escape(string));
}

function ajaxRecieve(string) {
	//newstring = xreplace(string, '+', '&quot;')
	return unescape(decode64(string));
	//return string.replace('\n',/<br>/g);
}

// *********************************************************************
// Drag & Drop
// *********************************************************************

	// <![CDATA[
	
		var box;
		var deltaX, deltaY;
		var client;
		var preDragX, preDraxY;
		preDragX = 0;
		preDragY = 0;
		createClient();
		
		function windowLoaded(evt) {
			// prevent IE text selection while dragging!!! Little-known trick!
			document.body.ondrag = function () { return false; };
			document.body.onselectstart = function () { return false; };
		}
		
		function createClient() {
			/*
			try {
				client = window.XMLHttpRequest ? new XMLHttpRequest() : 
									new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) { 
				alert("Sorry, your browser is not AJAX-enabled!"); 
			}
			*/
			client = getHTTPObject();
		}
		
		function setOpacity(node,val) {
			if (node.filters) {
				try {
					node.filters["alpha"].opacity = val*100;
				} catch (e) { }
			} else if (node.style.opacity) {
				node.style.opacity = val;
			}
		}
		
		function getX(node) {
			return parseInt(node.style.left);
		}
		
		function getY(node) {
			return parseInt(node.style.top);
		}
	
		function getWidth(node) {
			return parseInt(node.style.width);
		}
		
		function getHeight(node) {
			return parseInt(node.style.height);
		}
	
		function setX(node,x) {
			node.style.left = x + "px";
		}
	
		function setY(node,y) {
			node.style.top = y + "px";
		}
		
		function getLeft(l)
		{
		  if (l.offsetParent) return (l.offsetLeft + getLeft(l.offsetParent));
		  else return (l.offsetLeft);
		}
		
		function getTop(l)
		{
		  if (l.offsetParent) return (l.offsetTop + getTop(l.offsetParent));
		  else return (l.offsetTop);
		}
		
		// find out if ie runs in quirks mode
	    //
	    var docEl = (
	                 typeof document.compatMode != "undefined" && 
	                 document.compatMode        != "BackCompat"
	                )? "documentElement" : "body";
	                
	    
	
		function Evt(evt) {
			this.evt = evt ? evt : window.event; 
			this.source = evt.target ? evt.target : evt.srcElement;
			this.x = evt.pageX ? evt.pageX : evt.clientX;
			this.y = evt.pageY ? evt.pageY : evt.clientY;
		}
		
		Evt.prototype.toString = function () {
			return "Evt [ x = " + this.x + ", y = " + this.y + " ]";
		};
		
		Evt.prototype.consume = function () {
			if (this.evt.stopPropagation) {
				this.evt.stopPropagation();
				this.evt.preventDefault();
			} else if (this.evt.cancelBubble) {
				this.evt.cancelBubble = true;
				this.evt.returnValue  = false;
			}
		};
		
		Evt.addEventListener = function (target,type,func,bubbles) {
			if (document.addEventListener) {
				target.addEventListener(type,func,bubbles);
			} else if (document.attachEvent) {
				target.attachEvent("on"+type,func,bubbles);
			} else {
				target["on"+type] = func;
			}
		};
	
		Evt.removeEventListener = function (target,type,func,bubbles) {
			if (document.removeEventListener) {
				target.removeEventListener(type,func,bubbles);
			} else if (document.detachEvent) {
				target.detachEvent("on"+type,func,bubbles);
			} else {
				target["on"+type] = null;
			}
		};
		
		function dragPress(evt) {
			evt = new Evt(evt);
			box = evt.source;
			boxid = box.id;
			
			// Ablage einblenden, wenn nicht schon geschehen
			ablageActive();
			
			if(boxid.substr(0,6)=='fdrag_') {
				id = boxid.substr(6,20);
				box = document.getElementById('box_'+id);
			}
			
			if(boxid.substr(0,6)=='pdrag_') {
				id = boxid.substr(6,20);
				box = document.getElementById('poolbox_'+id);
			}
			
			// Tags
			if(boxid.substr(0,6)=='tdrag_') {
				id = boxid.substr(6,20);
				box = document.getElementById('tagbox_'+id);
			}
			
			// Meine Tags
			if(boxid.substr(0,7)=='mtdrag_') {
				id = boxid.substr(7,20);
				box = document.getElementById('mytagbox_'+id);
			}
			
			if(boxid.substr(0,6)=='udrag_') {
				id = boxid.substr(6,20);
				box = document.getElementById('userbox_'+id);
			}
			
			//Farbe der Ablage ändern
			//var ablage = document.getElementById('ablage');
			//ablage.style.background = '#5d5b5b';
			setOpacity(box,.7);
			if(preDragX==0 && preDragY==0) {
				preDragX = getX(box);
				preDragY = getY(box);
			}
			deltaX = evt.x - getX(box);
			deltaY = evt.y - getY(box);
			Evt.addEventListener(document,"mousemove",dragMove,false);
			Evt.addEventListener(document,"mouseup",dragRelease,false);
		}
		
		function dragMove(evt) {
			evt = new Evt(evt);
			setX(box,evt.x - deltaX);
			setY(box,evt.y - deltaY);
			evt.consume();
		}
		
		function ablageInactive() {
			$('ablagebox').style.display='block';
			$('bg_ablage').src='/img/bg_ablage2_faded.gif';
			$('ablagebox').style.color='#4e4e4e';
			$('clipboard_count').style.color='#563d22';
			$('ablage_link').style.color='#563d22';
			$('ablage_link').style.background='transparent url(/img/sidebar_arrow_faded.gif) no-repeat left center';
			$('ablage_link').innerHTML='zur Ablage';
			$('ablage_link').style.padding='0 0 1px 12px';
		}
		
		function ablageActive() {
			$('ablagebox').style.display='block';
			$('bg_ablage').src='/img/bg_ablage2.gif';
			$('ablagebox').style.color='';
			$('clipboard_count').style.color='';
			$('ablage_link').style.color='';
			$('ablage_link').style.background='none';
			$('ablage_link').innerHTML='(Ziehe Foto hier hin)';
			$('ablage_link').style.padding='0';
		}
		
		function ablageActivePermanent() {
			$('ablagebox').style.display='block';
			$('bg_ablage').src='/img/bg_ablage2.gif';
			$('ablagebox').style.color='';
			$('clipboard_count').style.color='';
			$('ablage_link').style.color='#FCAB54';
			$('ablage_link').style.background='transparent url(/img/sidebar_arrow.gif) no-repeat left center';			
			$('ablage_link').style.padding='0 0 1px 12px';
			$('ablage_link').className='highlight_ablage';
			$('ablage_link').innerHTML='zur Ablage';
		}
		
		function ablageHide() {
			$('ablagebox').style.display='none';
		}
		
		function dragRelease(evt) {
			evt = new Evt(evt);
			setOpacity(box,1);
			Evt.removeEventListener(document,"mousemove",dragMove,false);
			Evt.removeEventListener(document,"mouseup",dragRelease,false);
			if (droppedOnHotSpot(evt) ) {
				boxDropped(evt);
				ablageActivePermanent();				
			} else {
				resetPosition();
				if($('clipboard_count').innerHTML==0) {
					ablageHide();
				} else {
					ablageInactive();
				}
			}
			preDragX = 0;
			preDragY = 0;
		}
		
		function droppedOnHotSpot(evt) {
			//var hotspot = document.getElementById("hotspot");
			var hotspot = document.getElementById("ablagebox");
			var x = getX(hotspot) + getLeft(hotspot);
			var x = getLeft(hotspot);
			var y = getY(hotspot) + getTop(hotspot);
			var mouseX = evt.x;
			var mouseY = evt.y;

			// for ie add scroll position
	        //
	        if (document.all && !document.captureEvents) {
	            mouseX    += document[docEl].scrollLeft;
	            mouseY    += document[docEl].scrollTop;
	        }
			var width = getWidth(hotspot);
			var height = getHeight(hotspot);
			/*
			alert('evtx: '+mouseX+' x: '+x+'\n'+' evty: '+mouseY+' y: '+y+'\n'+' width: '+width+' height: '+height+'\n'+document[docEl].scrollTop+'\nDropped: '+(mouseX > x &&
				   mouseY > y &&
				   mouseX < x + width &&
				   mouseY < y + height));*/
			return mouseX > x &&
				   mouseY > y &&
				   mouseX < x + width &&
				   mouseY < y + height;
		}
						
		function boxDropped(evt) {
			//alert("/content/ajax_clipboard_add.php?fid="+box.id);
			client.onreadystatechange = callback;
			client.open("get","/content/ajax_clipboard_add.php?fid="+box.id,true);
			client.send(null);	
			resetPosition();
		}
		
		function resetPosition() {
			setX(box, preDragX);
			setY(box, preDragY);
			//var ablage = document.getElementById('ablage');
			//ablage.style.background = '#242323';
		}
		
		function callback() {
			if (client.readyState == 4) {
				if (client.status == 200) {
					changeHotspot();
					if(clipboard_action=='del') {
						hideImage()
					}
					createClient();
				} else {
					alert("There was a problem retrieving the response:\n" +
						client.statusText);
					createClient();
				}
			}
		}		
		
		function clipboardDel(id) {
			fid = id;
			client.onreadystatechange = callback;
			client.open("get","/content/ajax_clipboard_del.php?fid="+fid,true);
			client.send(null);
			//resetPosition();
		}
		
		function clipboardDelAll() {
			path = location.href;
			dirs = path.split("/");
			dirs = dirs.reverse();
			file_param = dirs[0];
			//file1 = file_param.substr(0,13);
			//file2 = file_param.substr(0,19);
			//if ( (file_param == 'ablage') ) {	
				location.href='/content/galerie/clipboard_delall_do.php';
			//} else {
			//	client.onreadystatechange = callback;
			//}
			client.open("get","/content/ajax_clipboard_delall.php",true);
			client.send(null);			
		}
		
		function clipboardCopy(fid) {
			client.onreadystatechange = callback;
			client.open("get","/content/ajax_clipboard_add.php?fid=box_"+fid,true);
			client.send(null);
			alert('Das Bild wurde in die Ablage gelegt.')
		}
		
		function changeHotspot() {
			div = document.getElementById('clipboard_count');
			if(div!=null) {
				var content = client.responseText;
				div.innerHTML = content;
			}
		}
		
		function hideImage() {
			div = document.getElementById('box_'+fid);
			div.innerHTML = '';
		}
		// ]]>
