var map;
var markers = [];

function panTo(marker) {
	map.setMapType(G_HYBRID_MAP);
	map.setCenter(marker.getPoint());
	map.setZoom(15);
	var dealers = document.getElementById('dealer_id');
	for (i = 0; i < dealers.options.length; i ++) {
		if (dealers.options[i].value == marker.code) {
			dealers.selectedIndex = i;
			break;
		}
	}
	loadDealer(marker.code);
}

function loadDealer(code) {
	$.get('/dealers/ajax/' + code, { }, _loadDealer);
}

function _loadDealer(d) {
	$('#dealership-results').html(d);
}

function loadDealers() {
	$.getJSON('/dealers/ajax', { }, _loadDealers);
}

function _loadDealers(data, t) {
	for (i = 0; i < data.length; i ++) {
		var marker = new GMarker(new GLatLng(data[i].Dealer.longtitude, data[i].Dealer.latitude));
		marker.code = data[i].Dealer.dealer_code;
		marker.panTo = function () { panTo(this); };
		map.addOverlay(marker);
		GEvent.addListener(marker, 'click', function () { panTo(this) });
		markers.push(marker);
	}
}

$(function() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById('map'));
		map.setCenter(new GLatLng(-29.228890, 25.136719), 5);
		map.enableScrollWheelZoom();
		map.addControl(new GSmallZoomControl());
	}
	loadDealers();
	$('#dealer_id').change(
		function() {
			var code = this.options[this.selectedIndex].value;
			for (i = 0; i < markers.length; i ++) {
				if (code == markers[i].code) {
					panTo(markers[i]);
				}
			}
		}
	);
});
