var exp_mail = new RegExp('^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@([a-z0-9-]+\\.)+([a-z]{2,4})$', 'i');
var fr_koord = new RegExp('^\\((-?\\d{1,3})(\\.\\d{1,})?, (-?\\d{1,3})(\\.\\d{1,})?\\)$', '');

/**/

function ajax_request()
{
	try
	{
		return new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch(e) {}

	try
	{
		return new ActiveXObject('Microsoft.XMLHTTP');
	}
	catch(e) {}

	try
	{
		return new XMLHttpRequest();
	}
	catch(e) {}

	alert('XMLHttpRequest wird von Deinem Browser nicht unterstützt.');

	return false;
}

function ajax_empfangen(marker, request)
{
	if (request.readyState != 4)
		return;

	var daten = request.responseText;

	marker.openInfoWindowHtml(daten);
}

function markerOpenInfoWindowHtml(marker, html)
{
	var request = ajax_request();

	request.onreadystatechange = function() { ajax_empfangen(marker, request); }
	request.open('POST', './rpc.htm', true);
	request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	var str = 'user_data=' + html;

	request.send(str);
}

/**/

function kc(oc)
{
	return (oc < 0) ? (256 + oc) : oc;
}

function htmDecode(key, fr)
{
	var em = '';
	var kn = 0;
	var cn = 0;

	for (var i = 0; i < fr.length; i = (i + 3))
	{
		kn  = kc(key.charCodeAt(cn));
		cn  = cn++ % key.length;
		em += String.fromCharCode((Number(fr.substr(i, 3)) - kn) % 256);
	}

	return em;
}

/**/

function koordinaten(punkt)
{
	with (document)
		getElementById('form_point').value = punkt;
}

function showAddress(address)
{
	if (geo)
	{
		geo.getLatLng(address, function(point)
		{
			if (!point)
				alert(address + ' ' + erro['fehler_ort_suche']);
			else
			{
				map.removeOverlay(marker);
				marker = new GMarker(point, {draggable: true});
				map.addOverlay(marker);
				map.setCenter(point, 14);
				koordinaten(point);

				GEvent.addListener(marker, 'dragend', function()
				{
					var punkt = marker.getPoint();
					map.setCenter(punkt);
					koordinaten(punkt);
				});
			}
		});
	}
}

/**/

function eintrag(cap, len, lg)
{
	var senden = true;
	var output = '';

	with (document.forms['speichern'])
	{
		if (fr_koord.test(elements['form_point'].value) == false)
		{
			output += '- ' + erro['fehler_koord'] + '\t\n';
			elements['form_point'].className = 'inp_lese_err';
			senden = false;
		}
		else
			elements['form_point'].className = 'inp_lese';

		if (elements['form_plz'].value == '')
		{
			output += '- ' + erro['fehler_plz'] + '\n';
			elements['form_plz'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_plz'].className = 'inp';

		if (elements['form_ort'].value == '')
		{
			output += '- ' + erro['fehler_ort'] + '\n';
			elements['form_ort'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_ort'].className = 'inp';

		if (elements['form_email'].value == '')
		{
			output += '- ' + erro['fehler_email'] + '\n';
			elements['form_email'].className = 'inp_err';
			senden = false;
		}
		else if (exp_mail.test(elements['form_email'].value) == false)
		{
			output += '- ' + erro['fehler_email_err'] + '\n';
			elements['form_email'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_email'].className = 'inp';

		if (elements['form_passwd'].value.length < 6)
		{
			output += '- ' + erro['fehler_passwd'] + '\n';
			elements['form_passwd'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_passwd'].className = 'inp';

		if (cap === 1)
		{
			if (elements['confirm'].value.length != len)
			{
				output += '- ' + erro['fehler_captcha'] + '\n';
				elements['confirm'].className = 'inp_err';
				senden = false;
			}
			else
				elements['confirm'].className = 'inp';
		}

		if (elements['form_datenschutz'].checked == false)
		{
			output += '- ' + erro['fehler_datenschutz'] + '\n';
			senden = false;
		}

		if (senden !== true)
			alert(output);
		else
			action = './' + lg + '/eintragen.htm#f2';
	}

	return senden;
}

/**/

function aendern(lg)
{
	var senden = true;
	var output = '';

	with (document.forms['speichern'])
	{
		if (fr_koord.test(elements['form_point'].value) == false)
		{
			output += '- ' + erro['fehler_koord'] + '\t\n';
			elements['form_point'].className = 'inp_lese_err';
			senden = false;
		}
		else
			elements['form_point'].className = 'inp_lese';

		if (elements['form_plz'].value == '')
		{
			output += '- ' + erro['fehler_plz'] + '\n';
			elements['form_plz'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_plz'].className = 'inp';

		if (elements['form_ort'].value == '')
		{
			output += '- ' + erro['fehler_ort'] + '\n';
			elements['form_ort'].className = 'inp_err';
			senden = false;
		}
		else
			elements['form_ort'].className = 'inp';

		if (senden !== true)
			alert(output);
		else
			action = './' + lg + '/aendern.htm#f2';
	}

	return senden;
}

/**/

onload = function()
{
	load();
}

onunload = function()
{
	GUnload();
}