var bounds = new GLatLngBounds();
var points = new Array();
var points_center = new Array();
var tooltips = new Array();
var markers = new Array();
var map;

function addMarker(lat, lng, tooltip, href, type, color, focus)
{

    if (typeof type == "undefined")
        type = "store";
    
    if (typeof color == "undefined")
    	color = "red";
    
    if (typeof focus == "undefined")
        focus = 2;

	var point = new GLatLng(lat, lng);
	
	var marker = { lat: lat, lng: lng, tooltip: tooltip, href: href, color: color };
	
	markers.push(marker);

    if (focus > 0)
    {
        bounds.extend(point);
    }
	points.push(point);
	
	var tempTooltip = { title: tooltip, link: href, type: type};
	tooltips.push(tempTooltip);
}

function setMarkers(map)
{
	var marker;
	var tooltip;

	for (var i = 0; i < points.length; i++)
	{
		var temp = markers[i];
		
		var options = {};
		
		if (temp.color == "yellow")
		{
			var icon = new GIcon(G_DEFAULT_ICON);
			icon.shadow = "http://chart.apis.google.com/chart?chst=d_map_pin_shadow";
			icon.image = "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=|FFCF00|000000";
			
			options.icon = icon;
		}
		
		marker = new GMarker(points[i], options);
		
		tooltip = new Tooltip(marker, tooltips[i], 4);

		marker.tooltip = tooltip;

		map.addOverlay(marker);
		map.addOverlay(tooltip);

		GEvent.addListener(marker, "mouseover", function() { this.tooltip.show(); });
		GEvent.addListener(marker, "mouseout", function() { this.tooltip.hide(); });
		GEvent.addListener(marker, "click", function() { this.tooltip.click(); });
	}
}

function toggleMap(link, map_div)
{  
	if ($(map_div).style.display == "none")
	{
		$(map_div).style.display = "block";
		$("toggle-map").innerHTML = "Karte ausblenden";
	}
	else
	{
		$(map_div).style.display = "none";
		$("toggle-map").innerHTML = "Karte einblenden";
	}
}

function initMap(div_id)
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById(div_id));

		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
		map.addControl(new GMapTypeControl());
		
		map.enableScrollWheelZoom();

		for (var i = 0; i < points_center.length; i++)
		{
			bounds.extend(points_center[i]);
		}

        var zoomlevel = map.getBoundsZoomLevel(bounds);

        if (zoomlevel > 16)
            zoomlevel = 17;

        zoomlevel--;

		map.setCenter(bounds.getCenter(), zoomlevel);

		setMarkers(map);
	}
}

function showMarker(id)
{
	var tempBounds = new GLatLngBounds();
	
	for (var i = 0; i < markers.length; i++)
	{
		if (markers[i].href == id)
		{
			tempBounds.extend(new GLatLng(markers[i].lat, markers[i].lng));
			
			map.setCenter(tempBounds.getCenter(), map.getBoundsZoomLevel(tempBounds));
			
			jQuery("HTML,BODY").animate({scrollTop: 0}, 1000);
		}
	}
}

jQuery(document).ready(function(e)
{
	jQuery("A[rel^=showmap]").each(function(i)
	{
		var store_id = jQuery(this).attr("rel");
		store_id = store_id.substr(8);
		store_id = parseInt(store_id.substr(0, store_id.length - 1));
		
		jQuery(this).bind("click", function(e)
		{
			showMarker(store_id);
		});
	});
});






