/**
 * Funktion die ermittelt ob es sich bei der gedrückten Taste um die Entertaste handelt.
 */
function isEnterKey(evt)
{
	evt = (evt) ? evt : (window.event) ? window.event : "";
	var theKey ;
	if (evt)
	{
		theKey = (evt.which) ? evt.which : evt.keyCode ;
	}
	return (theKey == 13);
}

/**
 * Ermitteln des Suffixes.
 */
function getSuffix(){
	if (document.getElementById('searchfield').value!=''){
	  return '?search=' + document.getElementById('searchfield').value; 
	}else{
	  return '';
	}
}

function checkagb(){
	window.close();
	opener.document.getElementById('tikkleragb').checked=true;
}

/**
 * Erstellen eines neuen Eintrags.
 */
function makeNewEntry(url)
{
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/newEntry';
	
	var pars = "plz=" + encodeURIComponent(String.interpret($('entryplz').value));
	pars = pars + "&message=" + encodeURIComponent(String.interpret($('entrytext').value)) + "&ajax=1";
	document.getElementById('loadernew').style.display='';

	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showResponse
		}
	);
}

/**
 * Erstellen eines neuen Eintrags.
 */
function registerFBGuy(url, fb_id)
{
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/authorize';

	var pars = "fb_sig_user=" + fb_id;
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			encoding: 'UTF-8'
			//,
			//onComplete: window.location.reload()
		}
	);
}

function dooutput(originalRequest){
	alert(originalRequest.responseText);
}

/**
 * Erstellen eines neuen Eintrags.
 */
function makeNewAlert(url)
{
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/newAlert';
	
	var pars = "plz=" + encodeURIComponent(String.interpret($('alertplz').value));
	pars = pars + "&begriff=" + encodeURIComponent(String.interpret($('alertbegriff').value));
	pars = pars + "&sms=" + encodeURIComponent(String.interpret($('alerttypesms').checked));
	pars = pars + "&umkreis=" + encodeURIComponent(String.interpret($('alertumkreis').value)) + "&ajax=1";
	document.getElementById('loadernew').style.display='';
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showMargin 
		}
	);
}

/**
 * ändern der Benutzereinstellung.
 */
function changeUserSetting(url, key, value){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/changeUserSetting';
	
	var pars = "value=" + value;
	pars = pars + "&key=" + key + "&ajax=1"
	document.getElementById('loader').style.display='';
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showMargin
		}
	);
} 

/**
 * ändern des oberflächenstatus des rechten Marginalienbereichs. 
 */
function setMarginOpeningState(url, type, state){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/setMarginOpeningState';
	
	var pars = "type=" + type;
	pars = pars + "&state=" + state  + "&ajax=1";
	
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8'
		}
	);
}


/**
 * Blättern durch die eigenen Einträge.
 */
function myEntriesPaginate(url, page){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/myEntriesPaginate';
	
	var pars = "entriespage=" + page;
	pars = pars + "&ajax=1";
	
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showMargin
		}
	);
}

/**
 * Blättern durch die eigenen Einträge.
 */
function myMemEntriesPaginate(url, page){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/myMemEntriesPaginate';
	
	var pars = "mementriespage=" + page;
	pars = pars + "&ajax=1";
	
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showMargin
		}
	);
}

/**
 * überprüfen der Gültogkeit einer eingegebenen Posteingang.
 */
function validatePLZ(plz, evt){

	evt = (evt) ? evt : (window.event) ? window.event : "";
	var theKey ;
	if (evt)
	{
		theKey = (evt.which) ? evt.which : evt.keyCode ;
	}
		
	// Request nur ausführen wenn gedrückte Taste eine Zahl ist
	if (((theKey>=49)&&(theKey<=57))||
	    ((theKey>=96)&&(theKey<=105))){
		// Zusammensetzen der URL
		var url 	= 'http://' + plz + '/validatePLZ';
		var pars 	= 'plz=' + $('plzvalue').value + "&ajax=1";
		
		// Absenden des Eintrags
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: prepareUmkreis
			}
		);
	}
}

/**
 * Merken eines Eintrags
 */
function memorizeEntry(url, entry){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/memorizeEntry';
	
	var pars = "entry=" + entry;
	pars = pars + "&ajax=1";
	
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8',
			onComplete: showMemorized
		}
	);
}

/**
 * Löschen eines Suchagenten
 */
function deleteAlert(url, alert){
	// Zusammensetzen der URL
	var url 	= 'http://' + url + '/deleteAlert';
	
	var pars = "alert=" + alert;
	pars = pars + "&ajax=1";
	
	// Absenden des Eintrags
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			encoding: 'UTF-8', 
			onComplete: showAlerts
		}
	);
}

function showAlerts(originalRequest){
		// Auslesen des Ergebnisses
		var response = originalRequest.responseText;
		
		$('targetalert').innerHTML = response;
}

/**
 * Ein- und Abschalten des Umkreis.
 */
function prepareUmkreis(originalRequest)
{
	try {
		// Auslesen des Ergebnisses
		var response = originalRequest.responseText;
		
		// Auswerten der JSON-Antwort.
		var jsonresponse =eval('(' + response + ')');
		loginCheck(jsonresponse);

		// Wenn kein Fehler aufgetreten ist
		if (jsonresponse.plzvalid=="true"){
			enableUmkreis();
		} else {
			disableUmkreis();
		}				
	}
	catch (e){
		//alert(e);
	}
}



/**
 * Aktivieren der Umkreisauswahl.
 */
function enableUmkreis(){
	$('first').innerHTML = '1km';
	$('umkreis').disabled = false;
	new Effect.Highlight('umkreis');
	//$('umkreis').focus();
}

/**
 * Deaktiveren der Umkreisauswahl.
 */
function disableUmkreis(){
	$('first').innerHTML = 'erst PLZ eingeben';
	$('first').selected = true;
	$('umkreis').disabled = true;
}


/**
 * Verarbeiten der Antwort.
 * Callback-Methode der Funktion "makeNewEntry".
 */
function showResponse(originalRequest)
{
	try {
		// Auslesen des Ergebnisses
		var response = originalRequest.responseText;
		
		// Auswerten der JSON-Antwort.
		var jsonresponse =eval('(' + response + ')');
		loginCheck(jsonresponse);

		$('msg-error').style.display = 'none';
		$('msg-success').style.display = 'none';
		document.getElementById('loadernew').style.display='none';

		// Wenn kein Fehler aufgetreten ist
		if (!jsonresponse.error){
			$('contentarea').innerHTML = jsonresponse.body;

			if (jsonresponse.myentriescount){
				$('myentriescount').innerHTML = jsonresponse.myentriescount + "&nbsp;";
			}
			jsonresponse.body.evalScripts();
			$('contentarea').innerHTML.evalScripts();

			/*if (highlight!=undefined){
				highlight();
			}*/

			if (jsonresponse.success!=undefined){
				// Darstellung der Fehlermeldung
				$('msg-success-title').innerHTML = jsonresponse.success.messageTitle
				$('msg-success-text').innerHTML = jsonresponse.success.messageText

				// Fehlerbereich highlighten					
				new Effect.Appear('msg-success');
				new Effect.Fade('msg-success', {delay:15, duration:5});
				$('entryplz').value = '';
				$('entrytext').value = '';
			}
			
			if (jsonresponse.margin){
				$('marginarea').innerHTML = jsonresponse.margin;
			}
		} else {
			$('msg-error').style.display = 'none';

			// Darstellung der Fehlermeldung
			$('msg-error-title').innerHTML = jsonresponse.error.messageTitle
			$('msg-error-text').innerHTML = jsonresponse.error.messageText

			// Fehlerbereich highlighten					
			new Effect.Appear('msg-error');
		}		
		addReflections();		
		initializeMap();
	}
	catch (e){
		//alert(e);
	}
}

/**
 * Verarbeiten der Antwort. Die rechte Marginalie wird neu 
 * gezeichnet.
 * Callback-Methode der Funktion "changeUserSettings".
 */
function showMargin(originalRequest)
{
	try {
		// Auslesen des Ergebnisses
		var response = originalRequest.responseText;
		
		// Auswerten der JSON-Antwort.
		var jsonresponse =eval('(' + response + ')');
		loginCheck(jsonresponse);

		$('settings-msg-error').style.display = 'none';
		$('settings-msg-success').style.display = 'none';
		
		// Wenn kein Fehler aufgetreten ist
		if (!jsonresponse.error){
			$('marginarea').innerHTML = jsonresponse.body;
			//jsonresponse.body.evalScripts();

			if (jsonresponse.success){
				// Darstellung der Erfolgsmeldung
				$('settings-msg-success-title').innerHTML = jsonresponse.success.messageTitle;
				$('settings-msg-success-text').innerHTML = jsonresponse.success.messageText;
			}

			// Fehlerbereich highlighten					
			//new Effect.Appear('settings-msg-success');
			//new Effect.Fade('settings-msg-success', {delay:15, duration:5});
		} else {
			$('settings-msg-error').style.display = 'none';

			// Darstellung der Fehlermeldung
			$('settings-msg-error-title').innerHTML = jsonresponse.error.messageTitle
			$('settings-msg-error-text').innerHTML = jsonresponse.error.messageText

			// Fehlerbereich highlighten					
			new Effect.Appear('settings-msg-error');
		}				
	}
	catch (e){
		//alert(e);
	}
	document.getElementById('loader').style.display='none';
}

/**
 * Verarbeiten der Antwort. Die der gemerkte Eintran und die Marginalie 
 * wird neu gezeichnet.
 * Callback-Methode der Funktion "memorizeEntry".
 */
function showMemorized(originalRequest)
{
	try {
		// Auslesen des Ergebnisses
		var response = originalRequest.responseText;
		
		// Auswerten der JSON-Antwort.
		var jsonresponse =eval('(' + response + ')');
		loginCheck(jsonresponse);
		
		$('marginarea').innerHTML = jsonresponse.margin;
		
		if ($(jsonresponse.target)){
			$(jsonresponse.target).innerHTML = jsonresponse.body;
		}
		
		new Effect.Highlight('watchlist');
	}
	catch (e){
		//alert(e);
	}
}

/**
 * Vorbereiten und absenden der Suche.
 */
function submitSearchContext(){
	if (document.getElementById('city').style.display == 'none'){
		if (document.getElementById('plzvalue').value!=''){
			locationstring = document.getElementById('plzvalue').value+
			'-'+document.getElementById('umkreis').options[document.getElementById('umkreis').selectedIndex].value 
			+ '/Seite-1-' + entriesperpage;
		}else{
			locationstring='/';
		}

		if (document.getElementById('searchfield2').value!=''){
			search = document.getElementById('searchfield2').value;
		}else{
			search = null;
		}
	}
	else{
		if (document.getElementById('stadt').options[document.getElementById('stadt').selectedIndex].value!=''){
			var stadt = document.getElementById('stadt').options[document.getElementById('stadt').selectedIndex].value + "/";
		}else{
			stadt = '';
		}

		if (document.getElementById('searchfield').value!=''){
			search = document.getElementById('searchfield').value;
		}else{
			search = null;
		}

		locationstring = stadt + 'Seite-1-' + entriesperpage;
	}
	if (search!=null){
		locationstring = locationstring + '?search=' + search
	}
	locationstring = 'http://' + servername + '/' + locationstring;

	document.location.href = locationstring;
} 

function loginCheck(jsonresponse){
	if (jsonresponse.notloggedin=="true"){
		locationstring = 'http://' + servername + '/logout';
		document.location.href = locationstring;
	}
}
  
