var g = {
	map: '',
	manager: '',
	loaded_markers: '',
	loaded_stats: '',
	stichworte: '',
	start_zoom_level: 6,
	min_zoom: 5,
	zoom_level_for_place_found: 16,
	move_pix: 150,
	zoom_bar_step_px: 5.27,
	limit_zoom_level_summary: 9,
	search_string: '',
	searched_position: '',
	tab_liste: $H({}),
	drag: '',
	krankheit_hash: $H({}),
	symptom_filter: ''
};

GMap2.prototype.move_up = function(){ loading(); this.panBy(new GSize(0,g.move_pix)); };
GMap2.prototype.move_down = function(){ loading(); this.panBy(new GSize(0,g.move_pix * -1)); };
GMap2.prototype.move_left = function(){ loading(); this.panBy(new GSize(g.move_pix,0)); };
GMap2.prototype.move_right = function(){ loading(); this.panBy(new GSize(g.move_pix * -1,0)); };

var $LOG = function(string){
	var debug = $('debug');
	var inhalt = debug.innerHTML;
	debug.innerHTML = inhalt + "<br>" + string;
}

function map_load() {
	if (GBrowserIsCompatible()) {
		create_map('map');
		load_markers(g.map.getZoom());
		loading();
		
		Event.observe($('zoomer'), 'mouseup', on_mouseup_zoomer);
		
		setBackgroundCopyright();
		
	} else {
		report("Ihr Browser ist nicht kompatibel. Bitte benutzen Sie die aktuellste Version vom Internet Explorer oder vom Mozilla Firefox.");
	}
}

function setBackgroundCopyright(){
	$($('map').childNodes[1]).setStyle({backgroundColor: '#FFFFFF'});
}

function on_mouseup_zoomer(){
	var left = $('zoomer').getStyle('left').sub('px', '');
	var zoom;
	
	if(left == 87){
		zoom = 17;
	} else {
		zoom = left / g.zoom_bar_step_px;
		zoom = Math.floor(zoom); // nur die Stelle vor dem Komma
	}
	
	g.map.setZoom(zoom);
}
    
function add_position(){
	// wir suchen jetzt die geographische Lage von dem gesuchten String
	var geo = new GClientGeocoder();
	var string = $('address').value;
    geo.getLatLng($('address').value, function(point){
		handle_search_result(point, 'speichern');
    });
}

function place_not_found(){
	report("Die Adresse wurde nicht gefunden!");
}

function on_add_position(transport){
	// HTML-Response posten wir in das DIV
	if(!transport.getResponseHeader('Content-type').strip().match(/text\/javascript/i)){
		var data = transport.responseText;
		report(data);
	} else {
		// mit einer JavaScript-Response machen nichts weiteres. Diese wird von der prototype spŠter evaluiert!
	}
}

// -----------------------------------------------------------------------------
// die GMap erzeugen
// -----------------------------------------------------------------------------
function create_map(div_id, lat_lng){
	g.map = new GMap2($(div_id));
	
	// Himmelsrichtungen und Zoom-Level-Bar anzeigen
   	g.map.addControl(new myControl());
	
   	// Map, Satellite und Hybrid-Buttons anzeigen
	//g.map.addControl(new GMapTypeControl());
	
	// mit dem Scroll-Rad zoomen
	g.map.enableScrollWheelZoom();
   	
   	// falls wir keine Position haben, dann nehmen wir die Mitte Deutschlands als Startpunkt
   	if(!lat_lng){
   		lat_lng = new GLatLng(50.974401, 10.325228);
   	}
   	
   	g.map.setCenter(lat_lng, g.start_zoom_level);
   	var left = $('zoomer').getStyle('left');
   	g.drag = new GDraggableObject($('zoomer'), {left: left, container: $('zoomer_area') });
	update_zoombar(g.map.getZoom());
	g.map.savePosition();
	
   	GEvent.addListener(g.map, "zoomend", function(oldZoom, newZoom){ update_zoombar(newZoom); });
   	GEvent.addListener(g.map, "moveend", function(){ load_markers(g.map.getZoom()) });
   	GEvent.addListener(g.map, "infowindowclose", show_controls);
 
   	g.manager = new MarkerManager(g.map);
}

function hide_controls(){
	$('zoombar').hide();
	$('zoomer').hide();
	$('direction_control').hide();
}

function show_controls(){
	$('zoombar').show();
	$('zoomer').show();
	$('direction_control').show();
}

function display_marker(){

	// Eintraege aus der DB in Marker umwandeln
	var marker_list = [];
	var count = 0; // Anzahl aller geladenen Eintraege

	for(var i = 0; i < g.loaded_markers.length; i++) {
		marker_list.push(createMarker(g.loaded_markers[i]));
		count = count + g.loaded_markers[i].anzahl;
	}

	// Eintraege mit den gleichen geographischen Daten werden fŸr die "Sprechblase" zusammengefasst
	g.tab_liste.keys().each(function(key){
		if(g.tab_liste[key].anzahl > 1){// haben wir fŸr diese Position mehr als einen Eintrag?
			var infoTabs = [];// Array fŸr unsere Tabs
			
			// nun gehen wir die verschiedenen Eintraege dieser gleichen geographischen Position durch
			g.tab_liste[key].tab.keys().each(function(key_){
				var tab = g.tab_liste[key].tab[key_];
				
				// infoTab erzeugen und merken
				infoTabs.push(new GInfoWindowTab(Number(key_) + 1, tab.content));
			});
			
			// nun haben wir das Tab-Array fertig und werden es den einzelnen Markern zuordnen 
			g.tab_liste[key].tab.keys().each(function(key_){
				var marker = g.tab_liste[key].tab[key_].marker;
				GEvent.addListener(marker, "click", function() {
					hide_controls();
  					marker.openInfoWindowTabsHtml(infoTabs, { maxWidth: 500});
				});	
			});
			
		} else {// nur ein Eintrag, also wird es eine normale 'Sprechblase'
			var marker = g.tab_liste[key].tab[0].marker;
			var content = g.tab_liste[key].tab[0].content;
			GEvent.addListener(marker, "click", function() {
			    hide_controls();
			    marker.openInfoWindowHtml(content);
	  		});
		}
	});
	
	// Anzahl der Eintraege aktualisieren
	update_anzahl(count);
	
	// Tab-Liste zurŸcksetzen
	g.tab_liste = $H({});
	
	// Report-Layer ausblenden
	report_close();
	
	// die erzeugten Marker werden wir jetzt dem Marker-Manager uebergeben
	g.manager.addMarkers(marker_list, g.min_zoom);
	
	// Wurde zuvor vielleicht nach einem Ort gesucht?, dann mŸssen wir diesen natŸrlich auch hinzufuegen, falls er denn im Sichtbereich liegt
	if(g.searched_position){
		var b = g.map.getBounds();
		if(b.contains(g.searched_position.getPoint())){
			g.manager.addMarker(g.searched_position, g.min_zoom);
		}
	}
	
	g.manager.refresh();
}

function update_anzahl(count){
	var t;
	if(count == 1){
		t = 'Eintrag';
	} else {
		t = 'Eintr&auml;gen';
	}
	
	$('anzahl_eintraege').innerHTML = '<font style="color:#DB3233">' + count + '</font> ' + t;
}

function loading(){
	report('<img src="../../shared/pics/loading.gif" />', 'kein close-String');
}

function report(string, no_close_string){
	if(!no_close_string){
		//string = string + '<br><br><a style="font-size:12px;cursor:pointer;" onclick="report_close()">Meldung schlie&szlig;en</a>';
		string = string + '<br><br><input type="button" style="border: 0px solid #000000" value="Meldung schlie&szlig;en" onclick="report_close(1)" />';
	}
	var html = '<table width="572" cellpadding="0" cellspacing="0" border="0"><tr><td width="10"></td><td height="500" align="center">' + string + '</td><td width="10"></td></tr></table>';
	$('map_status_layer_text').innerHTML = html;
	$('map_status_layer').show(); 
	$('map_status_layer_text').show();
}

function report_close(force){
	if(force || $('map_status_layer_text').innerHTML.match(/<img/) || $('map_status_layer_text').innerHTML.match(/<IMG/)){
		$('map_status_layer').hide(); 
		$('map_status_layer_text').hide();
		$('map_status_layer_text').innerHTML = '';
	}
}

function myControl() {}
myControl.prototype = new GControl();
myControl.prototype.initialize = function(map) {
  var container = document.createElement("div");

  var zoom_directions_control = document.createElement("div");
  zoom_directions_control.id = 'direction_control';
  zoom_directions_control.style.position = 'absolute';
  zoom_directions_control.style.left = '8px';
  zoom_directions_control.style.top = '8px';
  container.appendChild(zoom_directions_control);
  var html = '<div style="position:absolute; top:0px; left:0px;"><img src="../../shared/pics/karte/directions.gif" usemap="#controlMap" /></div>';
  html += '<div id="zoombar"><img src="../../shared/pics/karte/zoom.gif" usemap="#zoomMap" /></div>';
  html += '<div id="zoomer_area"><div id="zoomer"><img src="../../shared/pics/karte/zoomer.gif" /></div></div>';
  html += '<map name="controlMap">';
  html += '  <area shape="rect" coords="18,0,36,17" href="javascript:g.map.move_up()" alt="^" title="oben">';
  html += '  <area shape="rect" coords="36,18,55,36" href="javascript:g.map.move_right()" alt=">" title="rechts">';
  html += '  <area shape="rect" coords="18,36,37,54" href="javascript:g.map.move_down()" alt="v" title="unten">';
  html += '  <area shape="rect" coords="0,18,17,35" href="javascript:g.map.move_left()" alt="<" title="links">';
  html += '  <area shape="rect" coords="18,18,35,35" href="javascript:g.map.returnToSavedPosition()" alt="*" title="zur&uuml;ck zur letzten Position">';
  html += '</map>';
  html += '<map name="zoomMap">';
  html += '  <area shape="rect" coords="35,5,45,12" href="javascript:g.map.zoomOut()" alt="-" title="verkleinern">';
  html += '  <area shape="rect" coords="142,5,152,12" href="javascript:g.map.zoomIn()" alt="+" title="vergr&ouml;&szlig;ern">';
  html += '</map>';
  zoom_directions_control.innerHTML = html;
  
  map.getContainer().appendChild(container);
  
  return container;
}

function update_zoombar(zoomLevel) {
	var left = zoomLevel * g.zoom_bar_step_px;
	$('zoomer').setStyle({ left: left + 'px'});
	g.drag.left = left;
}

function createMarker(data) {
	var latlng = new GLatLng(data.lat, data.lng);
	
	var icon = new GIcon(data.lat, data.lng);
	icon.image = '../../shared/pics/trans.gif';
	
	var anzahl = data.anzahl;
	var opts, marker;
	
	if(g.map.getZoom() < g.limit_zoom_level_summary){
		
		var file, offset;
		
		if(anzahl < 10){
			file = 'saeule1.png';
			icon.iconSize = new GSize(29, 19); // Gršsse des Bildes
			icon.iconAnchor = new GPoint(10, 14); // Position fŸr die eigentliche Koordinate, relativ zur oberen linken Ecke
			icon.infoWindowAnchor = new GPoint(15, 5); // Position fŸr die Sprechblase, relativ zur oberen linken Ecke
			offset = new GSize(-10, -14); // negierter iconAnchor
			
		} else if(anzahl >= 10 && anzahl < 100){
			file = 'saeule2.png';
			icon.iconSize = new GSize(35, 37); // Gršsse des Bildes
			icon.iconAnchor = new GPoint(10, 32); // Position fŸr die eigentliche Koordinate, relativ zur oberen linken Ecke
			icon.infoWindowAnchor = new GPoint(14, 4); // Position fŸr die Sprechblase, relativ zur oberen linken Ecke
			offset = new GSize(-10, -32); // negierter iconAnchor
			
		} else if(anzahl >= 100 && anzahl < 1000){
			file = 'saeule3.png';
			icon.iconSize = new GSize(36, 48); // Gršsse des Bildes
			icon.iconAnchor = new GPoint(10, 42); // Position fŸr die eigentliche Koordinate, relativ zur oberen linken Ecke
			icon.infoWindowAnchor = new GPoint(13, 4); // Position fŸr die Sprechblase, relativ zur oberen linken Ecke
			offset = new GSize(-10, -42); // negierter iconAnchor
			
		} else {
			file = 'saeule4.png';
			icon.iconSize = new GSize(56, 37);// Gršsse des Bildes
			icon.iconAnchor = new GPoint(10, 50);// Position fŸr die eigentliche Koordinate, relativ zur oberen linken Ecke
			icon.infoWindowAnchor = new GPoint(25, 7);// Position fŸr die Sprechblase, relativ zur oberen linken Ecke
			offset = new GSize(-10, -50);// negierter iconAnchor
		}
		
		opts = {
			icon: icon,
			clickable: false,
			draggable: false,
			labelText: '<img src="../../shared/pics/karte/' + file + '" width="' + icon.iconSize.width + '" height="' + icon.iconSize.height + '" />',
			labelOffset: offset
		};
		
		marker = new LabeledMarker(latlng, opts);
	
	} else {
		icon.iconSize = new GSize(1, 1);// Gršsse des Bildes
		icon.iconAnchor = new GPoint(0, 0);// Position fŸr die eigentliche Koordinate, relativ zur oberen linken Ecke
		icon.infoWindowAnchor = new GPoint(0, 0);// Position fŸr die Sprechblase, relativ zur oberen linken Ecke
		offset = new GSize(0, 0);// negierter iconAnchor
			
		var html = '';
		if(data.krankheiten.husten){
			html += '<div style="position:absolute; top:-10px; left:-3px;"><img src="../../shared/pics/karte/detail/gruen.gif" /></div>';
		}
		if(data.krankheiten.fieber){
			html += '<div style="position:absolute; top:-6px; left:4px;"><img src="../../shared/pics/karte/detail/rosa.gif" /></div>';
		}
		if(data.krankheiten.kopfschmerzen){
			html += '<div style="position:absolute; top:1px; left:4px;"><img src="../../shared/pics/karte/detail/tuerkis.gif" /></div>';
		}
		if(data.krankheiten.gliederschmerzen){
			html += '<div style="position:absolute; top:5px; left:-3px;"><img src="../../shared/pics/karte/detail/rot.gif" /></div>';
		}
		if(data.krankheiten.bauchschmerzen){
			html += '<div style="position:absolute; top:1px; left:-10px;"><img src="../../shared/pics/karte/detail/blau.gif" /></div>';
		}
		if(data.krankheiten.schnupfen){
			html += '<div style="position:absolute; top:-6px; left:-10px;"><img src="../../shared/pics/karte/detail/gelb.gif" /></div>';
		}
		
		var geschlecht_anzeige;
		if(data.geschlecht == 'm'){
			geschlecht_anzeige = 'm&auml;nnlich';
		} else {
			geschlecht_anzeige = 'weiblich';
		}
		
		var content_data = new Array();
		content_data.push('Strasse:');
		content_data.push(data.strasse_ohne_hausnummer);
		content_data.push('Stadt:');
		content_data.push(data.stadt);
		content_data.push('Alter:');
		content_data.push(data.age);
		content_data.push('Geschlecht:');
		content_data.push(geschlecht_anzeige);
		content_data.push('krank seit:');
		content_data.push(data.start);
		content_data.push('Symptome:');
		content_data.push(data.symptome);
		
		var width = 200;
		var key = data.lng + '#' + data.lat;
		if(g.tab_liste[key] && g.tab_liste[key].anzahl > 1){
			width = 100 * (g.tab_liste[key].anzahl + 1);
		}
		
		var content = '<div class="detail_content" style="width:' + width + 'px;"><table cellpadding="0" cellspacing="0" border="0" width="200" class="detail_content">';
		
		for(var i = 0; i < content_data.length; i+=2){
			content += '<tr><td align="right" valign="top" width="70"><strong>' + content_data[i] + '</strong></td><td width="5"></td><td width="125" align="left">' + content_data[i+1] + '</td></tr>';
			content += '<tr><td colspan="3" width="200" height="2"><div style="width:200px; height:2px; overflow:hidden">&nbsp;</div></td></tr>';
		}
		content += '<tr><td colspan="3" width="200" height="3"><div style="width:200px; height:3px; overflow:hidden">&nbsp;</div></td></tr>';
		content += '<tr><td align="right" width="70"></td><td width="5"></td><td align="left" width="125"><a onclick="report_spam(' + data.id + ')" style="cursor:pointer"><span id="report_spam_link"><u>fragw&uuml;rdigen Eintrag melden</u></span></a></td></tr>';
		content += '</table></div>';
		
		var paras;
		
		if(g.tab_liste[key] && g.tab_liste[key].anzahl >= 1){
			var x,y;
			paras = g.tab_liste[key];
			x = paras.anzahl * 4;
			y = paras.anzahl * 4;
			
			paras.anzahl = paras.anzahl + 1;
			
			//icon.iconAnchor = new GPoint(icon.iconAnchor.x + x, icon.iconAnchor.y +y);
			offset = new GSize(offset.width + x, offset.height + y);
		} else {
			paras = {'anzahl': 1, 'tab': $H({}) };
		}
		
		opts = {
			icon: icon,
			clickable: true,
			draggable: false,
			labelText: html,
			labelOffset: offset
		};
		
		marker = new LabeledMarker(latlng, opts);
		var anzahl = paras.anzahl - 1;
		paras.tab[anzahl] = {'content': content, 'marker': marker};
		g.tab_liste[key] = paras;
	}
	
	return marker;
}

function show_map_new_position(){
	var ele = $('map_new_position_bg');
	if(ele.visible()){
		return
	}
	$('map_start_screen_layer').hide();
	close_map_suche();
	close_map_tellafriend();
	close_map_hilfe();
	$('neu_form').reset();
	new Effect.BlindDown(ele, 500);
	setTimeout("$('neu_form').strasse.focus()", 1000);
}

function close_map_new_position(){
	g.krankheit_hash.keys().each(function(key){
		onclick_krankheit($(key).parentNode);
		
		//var obj = $(key);
		//var s = obj.src;
		//s = $(obj).src.sub('_s.gif', '');
		//obj.oSrc = s + '.png';
		//obj.src = s + '.png';
		//obj.onmouseover = function(){ MM_swapImage(obj.id,'', s + '_a.png', 1)};
	});
	
	var ele = $('map_new_position_bg');
	if(!ele.visible()){
		return
	}
	new Effect.BlindUp(ele, 500);
}

function show_map_suche(){
	var ele = $('map_suche_bg');
	if(ele.visible()){
		return;
	}
	$('map_start_screen_layer').hide();
	close_map_new_position();
	close_map_tellafriend();
	close_map_hilfe();
	$('suche_nach').value = '';
	new Effect.BlindDown(ele, 500);
	setTimeout("$('suche_nach').focus()", 1000);
}

function close_map_suche(){
	var ele = $('map_suche_bg');
	if(!ele.visible()){
		return
	}
	new Effect.BlindUp(ele, 500);
}

function show_map_tellafriend(){
	var ele = $('map_tellafriend_bg');
	if(ele.visible()){
		return
	}
	$('map_start_screen_layer').hide();
	close_map_new_position();
	close_map_suche();
	close_map_hilfe();
	$('tellafriend_form').reset();
	new Effect.BlindDown(ele, 500);
	setTimeout("$('absender_name').focus()", 1000);
}

function close_map_tellafriend(){
	var ele = $('map_tellafriend_bg');
	if(!ele.visible()){
		return
	}
	new Effect.BlindUp(ele, 500);
	setTimeout("$('danke_tellafriend').hide(); $('formular_tellafriend').show();", 1000);
}

function show_map_hilfe(){
	var ele = $('map_hilfe_bg');
	if(ele.visible()){
		return
	}
	$('map_start_screen_layer').hide();
	close_map_suche();
	close_map_tellafriend();
	close_map_new_position();
	new Effect.BlindDown(ele, 500);
}

function close_map_hilfe(){
	var ele = $('map_hilfe_bg');
	if(!ele.visible()){
		return
	}
	new Effect.BlindUp(ele, 500);
}

function load_markers(z){
	if(!z && z != 0){
		z = g.map.getZoom();
	}
	loading();
	g.manager.clearMarkers();
	var paras;
	var map_bound = g.map.getBounds();
	var ne = map_bound.getNorthEast();
	var sw = map_bound.getSouthWest();
	var summary = z < g.limit_zoom_level_summary ? 1 : 0;

	paras = {
		summary: summary,
		lng_a: sw.lng(),
		lat_a: ne.lat(),
		lng_b: ne.lng(),
		lat_b: sw.lat()
	};
	
	if(g.symptom_filter){
		paras.symptom_filter = g.symptom_filter;
	}

	ajax_call('get_position', 'GET', paras, on_get_position, map_exception, map_failure );
}

function map_exception(requestObject, exception){
	report("Fehler bei " + requestObject.url + ":<br>" + exception);
}

function map_failure(requestObject){
	report("Fehler auf dem Server:<br>" + requestObject.statusText);
}

function on_get_position(transport){
	// HTML-Response posten wir in das DIV
	if(!transport.getResponseHeader('Content-type').strip().match(/text\/javascript/i)){
		var data = transport.responseText;
		report(data);
	} else {
		// mit einer JavaScript-Response machen nichts weiteres. Diese wird von der prototype spŠter evaluiert!
	}
}

function search_place(string){
	if(string == ''){
		report("Bitte geben Sie eine Adresse ein.");
		return;
	}
	
	string = 'Deutschland ' + string;
	g.search_string = string;
	
	var geo = new GClientGeocoder();
    geo.getLatLng(string, function(point){
		handle_search_result(point);
	});
}

function handle_search_result(point, save, paras){
	if(point){
		if(save){
	    	var lat;
	 		var lng;
	    		
	    	lat = point.lat();
	    	lng = point.lng();
		    paras['lat'] = lat;
		    paras['lng'] = lng;
		
			// die geographischen Daten werden wir nun in der Datenbank speichern
			ajax_call('add_position', 'GET', paras, on_add_position, map_exception, map_failure );
						
			loading();
    		g.map.setCenter(point, g.zoom_level_for_place_found);
		
		} else {
			close_map_suche();
		   	var icon = new GIcon();
			icon.image = '../../shared/pics/karte/flag.png';
			icon.iconSize = new GSize(41, 40);
			icon.iconAnchor = new GPoint(1, 40);
			icon.infoWindowAnchor = new GPoint(1, 1);

			loading();
    		g.map.setCenter(point, g.zoom_level_for_place_found);
			
			var marker = new GMarker(point, icon);
			g.searched_position = marker;
			load_markers();
		}
		
    	g.map.savePosition();
    } else {
    	place_not_found();
    }
}

function onclick_krankheit(obj){
	var img = obj.childNodes[0];
	var src;
	var swap;
	var t;
	
	t = img.src;
	if (/t\.gif$/i.test(t)){
		t = img.aktpngsrc;
	}

	if(t.match(/_a\.png/)){ // Auswahl
		src = '../../shared/pics/karte/neu/' + img.id + '_s.gif';
		swap = '../../shared/pics/karte/neu/' + img.id + '.png';
		
		g.krankheit_hash[img.id] = 1;
	
	} else { // Auswahl deaktivieren
		src = '../../shared/pics/karte/neu/' + img.id + '.png';
		swap = '../../shared/pics/karte/neu/' + img.id + '_a.png';
		
		g.krankheit_hash.remove(img.id);
	}
	
	if (/t\.gif$/i.test(img.src)){
		img.pngsrc = src;
	}
	
	img.src = src;
	img.oSrc = src;
	obj.onmouseover = function(){ MM_swapImage(img.id,'', swap, 1)};
}

function submit_neu_form(){
	var f = $('neu_form');
	var error = check_neu_form();
	
	if(error){
		report(error);
		return;
	}
	
	f.krankheit.value = g.krankheit_hash.keys();
	var paras = {};
	paras['krankheit'] = f.krankheit.value;
	paras['strasse'] = f.strasse.value;
	paras['stadt'] = f.stadt.value;
	paras['tage'] = f.tage.value;
	paras['age'] = f.age.value;
	paras['symptome'] = f.symptome.value;
	paras['geschlecht'] = getSelectedRadioValue(f.geschlecht);
	
	var string = 'Deutschland ' + paras['stadt'] + ' ' + paras['strasse'];
	var geo = new GClientGeocoder();
	geo.getLatLng(string, function(point){
		handle_search_result(point, 'speichern', paras);
    });
}

function check_neu_form(){
	var error = '';
	var f = $('neu_form');
	
	if(f.strasse.value == ''){
		error += "- Stra&szlig;e fehlt<br>";
	}
	
	if(f.stadt.value == ''){
		error += "- Stadt fehlt<br>";
	}
	
	if(f.tage.value < 0 || f.tage.value == ''){
		error += "- Anzahl der Tage fehlt <br>";
	} else if(f.tage.value > 56){
		error += '- Anzahl der Tage darf maximal 56 betragen';
	}
	
	if(f.age.value < 1){
		error += "- Alter fehlt <br>";
	}
	
	if(getSelectedRadio(f.geschlecht) < 0){
		error += "- Geschlecht fehlt <br>";
	}
	
	if(g.krankheit_hash.keys().length <= 0){
		error += "- Krankheit fehlt<br>"
	}
	
	if(error){
		error = '<u><strong>Folgende Fehler sind aufgetreten:</strong></u><br><br>' + error;
	}
	
	return error;
}

function submit_tellafriend_form(){
	var f = $('tellafriend_form');
	var error = check_tellafriend_form();
	
	if(error){
		report(error);
		return;
	}
	
	var paras = {};
	paras['absender_name'] = f.absender_name.value;
	paras['absender_email'] = f.absender_email.value;
	paras['empfaenger_email'] = f.empfaenger_email.value;
	paras['nachrichtentext'] = f.nachrichtentext.value;
	
	ajax_call('tellafriend', 'GET', paras, function(transport){return}, map_exception, map_failure ); 
}


function check_tellafriend_form(){
	var error = '';
	var f = $('tellafriend_form');
	
	if(f.absender_name.value == ''){
		error += "- Ihr Name fehlt<br>";
	}
	
	if(f.absender_email.value == ''){
		error += "- Ihre E-Mail fehlt<br>";
	} else if(!checkEmail(f.absender_email.value)){
		error += "- Ihre E-Mail ist ung&uuml;tig<br>";
	}
	
	if(f.empfaenger_email.value == ''){
		error += "- Empf&auml;nger E-Mail fehlt <br>";
	} else if(!checkEmail(f.empfaenger_email.value)){
		error += "- keine g&uuml;tige Empf&auml;nger E-Mail<br>";
	} else if(ArrayFromString(f.empfaenger_email.value).length > 5){
		error += "- maximale Anzahl der Empf&auml;nger &uuml;berschritten<br>";
	}
	
	if(f.nachrichtentext.value == ''){
		error += "- Nachrichtentext fehlt <br>";
	}
	
	if(error){
		error = '<u><strong>Folgende Fehler sind aufgetreten:</strong></u><br><br>' + error;
	}
	
	return error;
}

function getSelectedRadio(buttonGroup) {
	if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   
   // if we get to this point, no radio button is selected
   return -1;
}

function getSelectedRadioValue(buttonGroup) {
	var i = getSelectedRadio(buttonGroup);
	if (i == -1) {
      return "";
	} else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
	}
}

function add_filter_map(obj){
	g.symptom_filter = obj.childNodes[0].nodeValue;
	load_markers();
}

function remove_filter_map(obj){
	g.symptom_filter = '';
	load_markers();
}

function onmouseover_symptom(obj){
	$(obj).oColor = $(obj).getStyle('color');
	$(obj).setStyle({ 'color': '#DB3233'});
}

function onmouseout_symptom(obj){
	var oColor = $(obj).oColor;
	$(obj).setStyle({ color: oColor});
}

function onclick_symptom(obj){
	if(filter_is_selected(obj)){
		obj.id = obj.id.sub('_selected', '');
		remove_filter_map(obj);
	} else {
		obj.id = obj.id + '_selected';
		add_filter_map(obj);
		$(obj).setStyle({ textDecoration: 'underline'});
	}
}

function filter_is_selected(obj){
	return obj.id.match(/_selected$/);
}

function checkEmail(email){
	email = email.strip();
	if(email.endsWith(',')){
		return 0;
	}
	
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

	if(email.indexOf(',') < 0){
		return filter.test(email);
	} else {
		var array = ArrayFromString(email);
		
		var success = 1;
		array.each(function(e){
			if(!checkEmail(e)){
				success = 0;
			}
		});
		return success;
	}
}

function ArrayFromString(string){
	var array = new Array();
	var string_array = string.toArray();
	var temp = '';
	string_array.each(function(c){
		if(c == ','){
			array[array.length] = temp.strip();
			temp = '';			
		} else {
			temp += c;
		}
	});
	
	if(temp != ''){
		array[array.length] = temp.strip();
	}
	return array;
}

function report_spam(id){
	ajax_call('report_spam', 'GET', {id: id}, function(transport){return}, map_exception, map_failure );
}
