var $branches = new Array ();
var $map = null;
var $bounds = null;

Array.prototype.each = function($callback) {
	var $result = null;

	for (var $i = 0; $i < this.length; $i++) {
		$result = $callback.call(this[$i], $i);
		if ($result === false) {
			break;
		}
	}
}

function display_markers() {
	if (!$branches.length) {
		$map.setCenter(new GLatLng(56.95, 24.1), 6);
		return ;
	}

	var $marker_icon = new GIcon(G_DEFAULT_ICON);
	$marker_icon.image = baseUrl+'img/map_marker.png';

	$branches.each(
		function($i) {
			var $point = new GLatLng(this.latitude, this.longitude);
			$bounds.extend($point);

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

			var $me = this;

			GEvent.addListener(
				$marker,
				'click',
				function() {
					$map.setCenter( this.getLatLng() );
					$map.openInfoWindow(this.getLatLng(), $('<div class="address-container">' + $me.text + '</div>').get(0));
				}
			);
		}
	);

	var $zoom_level = $map.getBoundsZoomLevel($bounds, new GSize(535, 350));

	if ($zoom_level > 14) {
		$zoom_level = 14;
	}

	$map.setCenter($bounds.getCenter(), $zoom_level);
}

function change(data)
{
	$branches = new Array ();
	$bounds = new GLatLngBounds();
	$map.clearOverlays();

	$('#branch_info').load(mapXMLLink.replace('#CITY#', data));
}

function register_branch($id, $text, $latitude, $longitude) {
	if (!$latitude.length || !$longitude.length) {
		// don't register a branch without geographical position
		return ;
	}

	$latitude = parseFloat($latitude);
	$longitude = parseFloat($longitude);

	$branches.push(
		{
			id: $id,
			text: $text,
			latitude: $latitude,
			longitude: $longitude
		}
	);
}

function load() {
	var flashvars = {};
	flashvars.datasource = flashvarsDatasource;
	var params = {};
	params.wmode = 'opaque';
	var attributes = {};
	swfobject.embedSWF(baseUrl+"inc/map/map.swf", "newProduct", "520", "305", "9.0.28", baseUrl+"inc/map/expressInstall.swf", flashvars, params, attributes);

	if (!GBrowserIsCompatible()) {
		return ;
	}

	$bounds = new GLatLngBounds();

	$map = new GMap2(document.getElementById("map"));
	$map.setCenter(new GLatLng(56.95, 24.1), 6);
	$map.addControl(new GSmallMapControl());
	$map.addControl(new GMapTypeControl());
	$map.enableScrollWheelZoom();
	$map.setMapType(G_NORMAL_MAP);
	$map.checkResize();
}

$(document).ready(load);