var cb_fireplace;
var photo_mgr;
var video_mgr;
var media_loader;

function init_home_map()
{
	init_map();
	map.removeControl(small_ctrl);
	map.addControl(new GLargeMapControl());
	zoom_to_most_recent_marker('photo');
	init_media_markers(media_type);
	init_checkbox();
	
	// Events
	// Bestehenden Event von map.js loeschen
	GEvent.removeListener(ev_map_click);
	
	// Media-Marker neu laden nach Zoomveränderung	
	GEvent.addListener(map,"zoomend", function() {
		init_media_markers();
	});
	// Media-Marker neu laden nach Kartenverschiebung
	GEvent.addListener(map,"dragend", function() {
		init_media_markers();
	});
		
}

function init_checkbox()
{
	cb_fireplace 	= $('#cb_fireplace');
	//cb_photo_video	=	$('cb_photo_video');

	cb_fireplace.bind('click', function()
	{
		if(cb_fireplace.attr('checked') == true)
		{
			if(!fireplace_mgr)
			{
				if(map.getZoom() < 11)
				{
					map.setZoom(10);
				}
				load_mgr_markers();
			}
		}
		else
		{
			remove_mgr_markers();
		}
		
	})	
}


function init_media_markers()
{
	load_media_markers('photo');
	load_media_markers('video');
}

function load_media_markers(media_type)
{
	var media_type		=	media_type;
	media_loader		=	(!media_loader) ? new Loader('loader') : media_loader;
	var bounds			=	map.getBounds();
	var top_right		=	bounds.getNorthEast();
	var bottom_left		=	bounds.getSouthWest();
	var geot			=	top_right.lat();
	var geor			=	top_right.lng();
	var geob			=	bottom_left.lat();
	var geol			=	bottom_left.lng();
	var page_size		=	50;
	
	$.ajax({
	  	url: path + 'ws.php',
		dataType: 'html',
		data: 'mediaType=' + media_type + '&geot=' + geot + '&geor=' + geor + '&geob=' + geob + '&geol=' + geol + '&pageSize=' + page_size,
		beforeSend: media_loader.insert_loader(),
	  	success: function(responseText)
		{
			if(validate_content(responseText)) { setup_media_markers(responseText, media_type) } else { if(media_loader) { media_loader.remove_loader(); media_loader = false; } }
			//(!$('#loader_img')) ? media_loader.remove_loader() : '';
	  	}
	});
}


function setup_media_markers(json, media_type)
{
	switch (media_type)
	{
		case "photo":
			if(photo_mgr)
			{
				remove_media_markers(media_type);
				photo_mgr	=	null;
			}
			photo_mgr 	= 	new MarkerManager(map);
			ph_markers	=	json_2_markers(json, media_type, false, 'load');
			photo_mgr.addMarkers(ph_markers, 0);
			photo_mgr.refresh();
			break;
		case "video":
			if(video_mgr)
			{
				remove_media_markers(media_type);
				video_mgr	=	null;
			}
			video_mgr 	= 	new MarkerManager(map);
			vd_markers	=	json_2_markers(json, media_type, false, 'load');
			video_mgr.addMarkers(vd_markers, 0);
			video_mgr.refresh();
			break;
	}
	if(media_loader) { media_loader.remove_loader(); media_loader = false; }
}

function remove_media_markers(media_type)
{
	switch (media_type)
	{
		case "photo":
			if(photo_mgr)
			{
				photo_mgr.clearMarkers();
				photo_mgr	=	null;
			}
			break;
		case "video":
			if(video_mgr)
			{
				video_mgr.clearMarkers();
				video_mgr	=	null;
			}
			break;
	}
}

// Funktion aus map.js ueberschreiben
function remove_mgr_markers()
{
	fireplace_mgr.clearMarkers();
	fireplace_mgr	=	false;
}

// Second argument represensts the active state of an icon (bool)
function json_2_markers(json, media_type, active, action)
{
	switch(action)
	{	
		case "activate":
			active	=	true;
			break;
		case "deactivate":
			active	=	false;
			break;
		case "load":
			active	=	(active) ? active : false;
			break;
	}
	
	switch (media_type)
	{
		case "fireplace":
	
			layers		=	eval(json);
			var layer 	= 	layers[0];
			fp_markers		=	[];
			for( var j in layer['places'])
			{
				//document.getElementById('debug').innerHTML += j + ': ' + active + "<br/>";
				var place				=	layer['places'][j];
		
				var fs_lat				=	parseFloat(place['geo_lat']);
				var fs_lng				=	parseFloat(place['geo_lng']);
				var fp_posn 			= 	new GLatLng(parseFloat(place['geo_lat']), parseFloat(place['geo_lng']));
				var fs_ort 				= 	place['fs_ort'];
				var fs_detail 			= 	place['fs_detail'];
				var fkt_name 			= 	place['fkt_name'];
				var fp_title			=	'header=[Schweizer Familie Feuerstelle] body=[<strong>Ort:</strong> ' + fs_ort + ' - ' + fs_detail + '<br/><strong>Kanton:</strong> ' + fkt_name + ']';
				var fp_thumburl			=	place['thumbURL'];
				var fp_mainpageurl		=	place['mainPageURL'];
				var fst_uid				=	place['fst_uid'];
				var fs_direct_link		=	"http://www.schweizerfamilie.ch/unterwegs/feuerstellen/?uid=" + fst_uid + "&ort=" + fs_ort;
				
				// Marker-Objekt
				var fp_marker				= 	new GMarker(fp_posn, { title: fp_title, icon: get_custom_icon('fireplace', '', active) });
				fp_marker.posn			=	fp_posn;
				fp_marker.ort			=	fs_ort;
				fp_marker.detail		=	fs_detail;
				fp_marker.tooltip		=	fp_title;
				fp_marker.kanton		=	fkt_name;
				fp_marker.uid			=	place['fst_uid'];
				fp_marker.tooltip		=	fp_title;
				fp_marker.zoom_min		=	layer["zoom"][0];
				fp_marker.zoom_max		=	layer["zoom"][1];
				fp_marker.media_type	=	'fireplace';
				fp_marker.thumburl		=	fp_thumburl;
				fp_marker.mainpageurl	=	fp_mainpageurl;
				fp_marker.direct_link	=	fs_direct_link;
				
				click	=	GEvent.addListener(fp_marker, "click", function()
				{
					window.open(this.direct_link, "Feuerstelle " + this.ort + " - " + this.detail);
				});
		
				//fireplace_mgr.addMarker(fp_marker, fp_marker.zoom_min, fp_marker.zoom_max);
				fp_markers.push(fp_marker);
			}
			return fp_markers;
			break;
			
		default:
			
			var medias = eval(json);
			var md_markers	=	[];
			for( var j in medias)
			{
				//document.getElementById('debug').innerHTML += j + ': ' + active + "<br/>";
				var media				=	medias[j];
				
				var md_geoid			=	media['geo_id'];
				// Falls Feuerstellen eingeblendet und geo_id kleiner als 505, dann ist das photo auf eine Feuerstelle getaggt -> nicht als Foto anzeigen
				if(md_geoid > 505) // cb_fireplace.checked && 
				{
					var md_lat				=	parseFloat(media['lat']);
					var md_lng				=	parseFloat(media['lng']);
					var md_posn				=	new GLatLng(md_lat, md_lng);
					var md_title			=	media['title'];
					var md_descr			=	media['description'];
					var md_tags				=	media['tags'];
					var md_rate				=	media['rating'];
					var md_date				=	media['dateAdded'];
					var md_views			=	media['views'];
					var md_user				=	media['username'];
					var md_userurl			=	media['usernameURL'];
					var md_thumburl			=	media['thumbURL'];
					var md_mainpageurl		=	media['mainPageURL'];
					var md_uid				=	media['id'];
					var md_header			=	'header=[' + md_title +']';
					var md_body				=	'body=[<b>Von:</b> ' + md_user
					 							+ '<br/><b>Hinzugef&uuml;gt:</b> ' 
												+ md_date + '<br/><b>Angesehen:</b> ' 
												+ md_views + ' mal' + '<br/><br/><p><img src="' 
												+ md_thumburl + '" alt="Keine Vorschau von ' 
												+ md_title + ' vorhanden" /></p>]';
					var md_tooltip			=	md_header + " " + md_body;




					// Marker Objekt
					var md_marker			= 	new GMarker(md_posn, { title: md_tooltip, icon: get_custom_icon(media_type, '', active) });
					md_marker.posn			=	md_posn;
					md_marker.md_title		=	md_title;
					md_marker.descr			=	md_descr;
					md_marker.rate			=	md_rate;
					md_marker.date			=	md_date;
					md_marker.views			=	md_views;
					md_marker.user			=	md_user;
					md_marker.userurl		=	md_userurl;
					md_marker.thumburl		=	md_thumburl;
					md_marker.mainpageurl	=	md_mainpageurl;
					md_marker.tooltip		=	md_tooltip;
					md_marker.uid			=	md_uid;
					md_marker.zoom_min		=	0;
					md_marker.zoom_max		=	17;
					md_marker.media_type	=	media_type;

					// active wieder auf false setzen, sonst bleibt es für die restlichen marker auch true
					active	=	false;
					
					GEvent.addListener(md_marker, "click", function()
					{
						window.location.href = this.mainpageurl;
					});

					md_markers.push(md_marker);
					//photo_mgr.addMarker(md_marker);
				}
				
			}
			return md_markers;
			break;
		}
}


function zoom_to_most_recent_marker(media_type)
{
	var media_type		=	media_type;
	var page_size		=	1;
	
	$.ajax({
	  	url: path + 'ws.php',
		dataType: 'html',
		data: 'mediaType=' + media_type + '&pageSize=' + page_size,
	  	success: function(responseText)
		{
			if(validate_content(responseText))
			{
				var json	=	eval(responseText);
				json		=	json[0];
				var lat	=	(json['lat'] == null) ? 47.364873 : json['lat'];
				var lng	=	(json['lng'] == null) ? 8.536376 : json['lng'];
				map.setCenter(new GLatLng(lat, lng), 11);
			}
	  	}
	});
}

// Ueberschreiben der nicht benoetigten Funktionen aus map.js fuer die Home-Map

function create_media_marker(point, type)
{
	
}

function init_input_fields()
{

}

function set_input_field_value(latlng)
{

}

function get_input_field_value()
{

}

function init_radiobuttons()
{
	
}

function insert_georef_info(geo_tagged, marker_type, marker)
{
	
}