var dealer = false;
var dealers = {};
var map;
var markers = [];

$(function () {

  if (!document.getElementById("map")) return;

  var latlng = new google.maps.LatLng(63.939, 25.425);

  var mapOptions =
  {
    zoom: 4,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    // disableDefaultUI: true,
    // navigationControl: true,
    // mapTypeControl: false,
    // scaleControl: false
  };

  map = new google.maps.Map(document.getElementById("map"), mapOptions);

  google.maps.event.addListener(map, 'click', function (e) {
    // console.log(e.latLng);
    // console.log(map.getCenter());
  });

  $.each(dealers, function (key, data) {
    addMarker(data, key);
  });

  if (dealer) addMarker(dealer, false);

  $("#map_links").find("a").click(function (e) {
		e.preventDefault();
		
    var center = false;
    var zoom = false;

    var location = $(this).attr("rel");
    switch (location)
    {
      // Etelä-Suomi
      case "1.1":
      	center = new google.maps.LatLng(60.63461, 25.03223);
        zoom = 8;
      break;
      // Länsi-Suomi
      case "1.2":
      	center = new google.maps.LatLng(62.13900, 21.54406);
        zoom = 6;
      break;
      // Pohjois-Suomi
      case "1.3":
      	center = new google.maps.LatLng(65.53952, 26.55383);
        zoom = 6;
      break;
      // Itä-Suomi
      case "1.4":
      	center = new google.maps.LatLng(62.07733, 27.64148);
        zoom = 6;
      break;
    }

    $("#dealer_list h2").text( $(this).text() );
    $("#dealer_list p").show();
    $("#dealer_list p").not("[rel='"+ location +"']").hide();

    map.setCenter(center);
    map.setZoom(zoom);
  });

  $("#service_list").find("a").click(function (e) {
		e.preventDefault();
		removeMarkers();
		var service = $(this).attr("rel");
		$.each(dealers, function (key, data) {
			var services = data.services.split(", ");
			if (service == "all" || jQuery.inArray(service, services) != -1)
			{
				addMarker(data, key);
			}
		});
	});

	// SEO - VMP!
	if ($("#select_location").length)
		$("#map_links a[rel='"+ $("#select_location").text() +"']").trigger("click");
	
	if ($("#select_service").length)
		$("#service_list a[rel='"+ $("#select_service").text() +"']").trigger("click");
	

});


function addMarker (data, key)
{
  if (!data.coordinates || data.coordinates == '')
  {
    var gc = new google.maps.Geocoder();
    gc.geocode( {'address': data.address +" "+ data.city }, function (results, status) {
      if (status == google.maps.GeocoderStatus.OK)
      {
        data.latlng = results[0].geometry.location;
        createMarker(data, key);
      }
      // else console.log(status);
    });
  }
  else
  {
    var coords = data.coordinates.split(",");
    data.latlng = new google.maps.LatLng(coords[0], coords[1]);
    createMarker(data, key);
  }
}

function createMarker (data, key)
{

  var markerImage = new google.maps.MarkerImage(
    '/files/Vianor2006/2009-images/map-vianor-icon-bubble.png',
    new google.maps.Size(56, 69),
    new google.maps.Point(0, 0),
    new google.maps.Point(6, 69)
  );

  var markerImage2 = '/files/Vianor2006/2009-images/icon.png';

  var marker = new google.maps.Marker({
    map: map,
    position: data.latlng,
    title: (data.name ? data.name : ''),
    icon: (key ? markerImage2 : markerImage)
  });

  markers.push(marker);

  if (key)
  {
    var infowindow = new google.maps.InfoWindow({
      content:
        '<b><a href="/myyntipisteen_tiedot?myyntipiste='+ data.name +'">'+ data.name +'</a></b><br />'+
        data.address +'<br />'+
        data.zip +' '+ data.city +'<br />'+
        (data.open ? '<br />Aukioloajat:<br />'+ data.open +'<br />' : '') +
        '<a href="/myyntipisteen_tiedot?myyntipiste='+ data.name +'">Siirry myyntipisteen sivulle</a></b><br />'+
        ''
    });

    google.maps.event.addListener(marker, 'click', function () {
      infowindow.open(map, marker);
    });
  }
  else
  {
    map.setCenter(data.latlng);
    map.setZoom(14);
  }
}

function removeMarkers ()
{
  if (!markers.length) return;
  $.each(markers, function (i, marker) {
    marker.setMap(null);
  });
}

/*
function getParameterByName (name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}
*/
