/****************************************************************************
****************************************************************************

	EVERYTHING HERE IS DEPRECATED -- YOU SHOULD BE USING {@link Map}
	
	This file will be deleted soon...

 ****************************************************************************
 ****************************************************************************/
var map;
var default_location = new Array();
default_location['lat'] = "-15.397";
default_location['lng'] = "10.644";
var locations = [];
var bounds = new GLatLngBounds();
var all;
var show_mine = false;
var current_marker_type = "circles";
var view;
var circlesInfo;
var isPlotPointsActive = true;
var markerManager;
var markerClusterer;
var UNCLUSTERED_MAX_SIZE = 200;

// @deprecated
function load_circles_info(circlesInfo) {
	this.circlesInfo = circlesInfo;
}

// @deprecated
function gmap_build(lat, lng, zoom, div_id, min_zoom, max_zoom, big_control_view) {
	gmap_init(lat, lng, zoom, div_id, min_zoom, max_zoom, big_control_view);
	update_map(0);
}

// @deprecated
function gmap_init(lat, lng, zoom, div_id, min_zoom, max_zoom, big_control_view) {
	map = new GMap2(document.getElementById(div_id));
	var mapControl;
	if (big_control_view == true) {
		mapControl = new GLargeMapControl3D();
	} else {
		mapControl = new GSmallMapControl();
	}
	map.addControl(mapControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10)));
	map.setCenter(new GLatLng(lat, lng), zoom);
	map.enableContinuousZoom();
	map.enableScrollWheelZoom();
	G_NORMAL_MAP.getMinimumResolution = function() {
		return min_zoom;
	};
	G_NORMAL_MAP.getMaximumResolution = function() {
		return max_zoom;
	};
}

// @deprecated
function gmap_move(lat, lng, zoom) {
	if(isPlotPointsActive) {
		map.setCenter(new GLatLng(lat, lng), zoom);
	}
}

// @deprecated
function plot_points(points, center, zoom, type) {
	if (isPlotPointsActive) {
		all = points;
		gmap_plot(points, map.getZoom(), type);
		if (zoom) {
			map.setZoom(map.getBoundsZoomLevel(bounds));
		}
		if (center) {
			map.setCenter(bounds.getCenter());
		}
	}
}

// @deprecated
function draw_marker(position, image, title, id, currentCity, size, size2) {
	var icon = new GIcon(G_DEFAULT_ICON);
	if (currentCity) {
		image='http://maps.google.com/mapfiles/ms/micons/man.png';
		icon.image = image;
		icon.shadow = 'http://maps.google.com/mapfiles/ms/micons/man.shadow.png';
		icon.iconSize = new GSize(32, 32);
		icon.shadowSize = new GSize(59, 32);
		icon.iconAnchor = new GPoint(16, 32);
	}else{
		if(image == undefined){
			image='http://labs.google.com/ridefinder/images/mm_20_red.png';
			}
		if(size == undefined){
			size='12';
			size2='20';
		}
		icon.image = image;
		icon.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
		icon.iconSize = new GSize(size, size2);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
	}

	var marker = new GMarker(position, {
		icon : icon
	});
	map.addOverlay(marker);

	GEvent.addListener(marker, 'mouseover', function() {
		var tooltip_text = "<div class='tooltip'><b>" + title + "</b></div>";
		this.overlay = new MapTooltip(this, tooltip_text);
		map.addOverlay(this.overlay);
	});

	GEvent.addListener(marker, 'mouseout', function() {
		map.buttonMode = false;
		map.removeOverlay(this.overlay);
	});

	GEvent.addListener(marker, 'click', function() {
		select_city(position, title, id);
	});
	bounds.extend(position);
}

// @deprecated
function create_visits_marker(position, visits, title, id, zoom) {
	var zoom_image = zoom;
	if (zoom < 2) {
		zoom_image = 2;
	} else if (zoom > 9) {
		zoom_image = 9;
	}
	
	var visits_image;
	if (visits <= 21) {
		visits_image = visits;
	} else if (visits >= 101) {
		visits_image = 101;
	} else {
		visits_image = visits - (visits % 10) + 1;
	}

	var imageSize = circlesInfo[zoom_image][visits_image]; 
	var marker = new VisitsMarker(position, visits, { 
		image: '/images/markers/'+zoom_image+'_'+visits_image+'.png',
		height: imageSize,
		width: imageSize,
		tooltipTitle: title
	});
	GEvent.addListener(marker, 'click', function() {
		select_city(position, title, id);
	});
	return marker;
}

// @deprecated
function gmap_plot(points, zoom, type) {
	map.clearOverlays();
	locations = points;
	bounds = new GLatLngBounds();
	var circleMarkers = [];
	for ( var x = 0; x < locations.length; x++) {
		var location = locations[x];
		var position = new GLatLng(location.latitude, location.longitude);
		if (type == "markers") {
			var image;
			if (location.private) {
				image = '/images/marker_private.png';
			} else {
				image = '/images/marker_public.png';
			}
			if (location.user != 'me' || current_marker_type == "markers" && view != 'explore') {
				draw_marker(position, image, location.title, location.id, location.current_city);
			}
		} else {
			if ((location.user == 'me' && show_mine) || location.user != 'me') {
				circleMarkers.push(create_visits_marker(position, location.visits, location.title, location.id, zoom));
			}
			bounds.extend(position);
		}
	}
	clearCircleMarkers();
	if (circleMarkers.length) {
		drawCircleMarkers(circleMarkers);
	}
}

// @deprecated
function clearCircleMarkers() {
	if (markerClusterer) {
		markerClusterer.clearMarkers();
	}
	if (markerManager) {
		markerManager.clearMarkers();
	}
}

// @deprecated
function drawCircleMarkers(circleMarkers) {
	
	/* Use either the marker manager or marker cluster based on the amount of markers */
	if (circleMarkers.length > UNCLUSTERED_MAX_SIZE) {
		/* Check if the marker cluster is already initialized */
		markerClusterer = new MarkerClusterer(map, circleMarkers, { 
			gridSize: 40, 
			maxZoom: 4, 
			styles: [ { url: '/images/cluster_small.png', height: 45, width: 45 },
			          { url: '/images/cluster_medium.png', height: 55, width: 55 },
			          { url: '/images/cluster_big.png', height: 65, width: 65 }
			          ]
		});
		
	} else {
		if (!markerManager) {
			markerManager = new MarkerManager(map);
		}
		markerManager.addMarkers(circleMarkers, 0);
		markerManager.refresh();
	}
}

// @deprecated
function draw_arc(lat1, lng1, lat2, lng2) {
	map.clearOverlays();
	var origin = new GLatLng(lat1, lng1, true);
	var destiny = new GLatLng(lat2, lng2, true);
	var originMarker = new GMarker(origin);
	var destinyMarker = new GMarker(destiny);
	var bounds = new GLatLngBounds();
	bounds.extend(originMarker.getPoint());
	bounds.extend(destinyMarker.getPoint());
	map.addOverlay(new GMarker(origin));
	map.addOverlay(new GMarker(destiny));
	map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setCenter(bounds.getCenter());
	var polyline = new GPolyline( [ new GLatLng(lat1, lng1),new GLatLng(lat2, lng2) ], "#ff0000", 2, 1, {geodesic : true});
	map.addOverlay(polyline);
}


