var map;
var currentMarkersArray = new Array();
var infoWindowsArray = new Array();
function initialize() {
  var myOptions = {
    zoom: 2,
    center: new google.maps.LatLng(41.244772343082076, -97.3828125),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

}

function searchStores() {
	$('#online_retailer').css({float: 'right'});
	$('#results_container').show();
	$('#results_details').show();
	$('#results_inner').hide();
	$('#results_loading').show();
	
	$('#search_heading').html($('#store_search').val());

	$.post('/_ajax/locator_results.php', { search: $('#store_search').val(), radius: $('#store_radius').val() }, function(data) {
		if (data.error == 1) {
			$('#map_canvas').hide();
			$('#results_loading').hide();
			$('#results_empty').show();
			alert(data.message);
		} else if(data.store_count > 0) {

			$('#map_canvas').show();
			if (typeof map != 'object')
				initialize();

			$('#results_empty').hide();
			$('#results_inner').html(data.contentHTML);
			$('#results_loading').hide();
			$('#results_inner').show();

			removeMarkers();
			setMarkers(map, data.markers);
			
		} else {
			$('#map_canvas').hide();
			$('#results_loading').hide();
			$('#results_empty').show();
		}

	}, "json");
}

var image = new google.maps.MarkerImage('http://code.google.com/apis/maps/documentation/javascript/examples/images/beachflag.png',
		new google.maps.Size(20, 32),
		new google.maps.Point(0,0),
		new google.maps.Point(0, 32));
var shadow = new google.maps.MarkerImage('http://code.google.com/apis/maps/documentation/javascript/examples/images/beachflag_shadow.png',
		new google.maps.Size(37, 32),
		new google.maps.Point(0,0),
		new google.maps.Point(0, 32));
var shape = {
		coord: [1, 1, 1, 20, 18, 20, 18 , 1],
		type: 'poly'
};

function setMarkers(map, locations) {

	var bounds = new google.maps.LatLngBounds();

  for (var i = 0; i < locations.length; i++) {
    var store = locations[i];
    var myLatLng = new google.maps.LatLng(store.latitude, store.longitude);
		bounds.extend(myLatLng);
    var marker = createMarker(map,myLatLng,store.html);
		currentMarkersArray.push(marker);
  }
	
	map.fitBounds(bounds);
	map.setCenter(bounds.getCenter());
}

var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });
    
function createMarker(map, latlng, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        shadow: shadow,
        icon: image,
        shape: shape,
        title: '',
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
			});
}
 

function removeMarkers() {
  if (currentMarkersArray) {
    for (i in currentMarkersArray) {
      currentMarkersArray[i].setMap(null);
    }
		currentMarkersArray.length = 0;
  }
}
