var map = null;
var mgr = null;

function setupMap() {
	if (GBrowserIsCompatible()) {
		if (document.getElementById("map_canvas")) {
				
				map = new GMap2(document.getElementById("map_canvas"));
				map.setCenter(new GLatLng(35.671712, 139.763947), 15);
	
				var customUI = map.getDefaultUI();
				customUI.controls.menumaptypecontrol = true;
				map.setUI(customUI);
				
				mgr = new MarkerManager(map, {trackMarkers:true});
				
				redrawGMap();
				//$("#refreshMap").trigger('click');
		}
	}
}

$(document).ready(function() {
	$("#state").change(onSelectChange);
	$("#refreshMap").click(redrawGMap);
});

var html = '<div id="map_loader" style="position:relative;text-align:center;top: 120px"><img src="/images/ajax-loader.gif" /></div>';

$("#map_canvas").ajaxStart(function() {
	$(this).append(html);
});
$("#map_canvas").ajaxComplete(function() {
	$("#map_loader").remove();
});

function onSelectChange(){
	var type = $(this).attr('id');
	var lang = $(this).attr('class');
	var selected = $(this).find(":selected");
	if(selected.val() != 0){
		$.getJSON("/gmap/get",{ t: type, v: selected.val(), lang: lang },
			function(data){
				  var options = '';
				  $.each(data, function(i,item){
					 if(i==0){
						 var selected = 'selected="selected"';
					 }
					 options += '<option '+selected+' value="' + item.id + '">' + item.Translation[lang].name + '</option>';
	              });	        	  
	        	  $("#city option").remove();
	              $("#city").html(options);
			});
	}
}

function redrawGMap(){
	var markers = [];
	var citySelected = $("#city").find(":selected");
	var catSelected = $("#category").find(":selected");
	var lang = $("#state").attr('class');
	if(catSelected.val() != 0 && citySelected.val() != 0){
		$.getJSON("/gmap/get",{ t: 'getstores', city: citySelected.val(), cat:catSelected.val(), lang: lang },
			function(data){
				  var options = '';
				  $.each(data, function(i,item){
					  var marker = createMarker(item.gmap_lat,item.gmap_lng);
					  GEvent.addListener(marker, "click", function() {
						  marker.openExtInfoWindow( map,
								  "gmap_window",
								  '<a href="/'+lang+'/store/'+item.urlname+'">'+item.Translation[lang].name+'</a>',
								  {beakOffset: 1}
								  );
					  });
					  markers.push(marker);
	              });
				  
				  if(markers.length != 0){
					  map.closeExtInfoWindow();
					  mgr.clearMarkers();
					  mgr.addMarkers(markers, 0);
					  mgr.refresh();
					  map.panTo(markers[0].getLatLng(), 15)
				  }
			});
	}
}

function createMarker(lat, lng){
	var icon = new GIcon(G_DEFAULT_ICON);
	var posn = new GLatLng(lat, lng);
	var destMarker = new GMarker(posn, {
		icon : icon
	});
	return destMarker;
}