var lastFoundPoint;
var bounds;
var map;


function init() {
  // create map object
  var mapDiv = document.getElementById("map");
  if (mapDiv) {
    map = new google.maps.Map2(mapDiv);
    baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(32, 32);
    baseIcon.shadowSize = new GSize(37, 28);
    baseIcon.iconAnchor = new GPoint(9, 28);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);

    // show zoomoptions
    map.addControl(new GLargeMapControl());
    map.enableScrollWheelZoom();

    setMapCenter();

    // set default maptype
    // G_NORMAL_MAP- the default view
    // G_SATELLITE_MAP - showing Google Earth satellite images
    // G_HYBRID_MAP - showing a mixture of normal and satellite views
    // G_DEFAULT_MAP_TYPES - an array of these three types, useful for iterative processing
    map.setMapType(G_NORMAL_MAP);
    // set markers on map
    placeMarkers();
  }

}

function hideSelect() {
  var elem = $('#frontform');
  elem.addClass('verborgen');
}

function showSelect() {
  var elem = $('#frontform');
  elem.removeClass('verborgen');
}


function placeMarkers() {
  map.clearOverlays();
  // Create a base icon for all of our markers that specifies the
  // shadow, icon dimensions, etc.


  baseIcon = new GIcon();
  baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
  baseIcon.iconSize = new GSize(38, 23);
  baseIcon.shadowSize = new GSize(57, 25);
  baseIcon.iconAnchor = new GPoint(9, 28);
  baseIcon.infoWindowAnchor = new GPoint(9, 2);
  baseIcon.infoShadowAnchor = new GPoint(18, 25);

  var markerUrl = createMarkerUrl();


  GDownloadUrl(markerUrl, function(data) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName("marker");



    for (var i = 0; i < markers.length; i++) {
      var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
      var type = markers[i].getAttribute("code");
      var markIcon = new GIcon(G_DEFAULT_ICON);



      if (type == 'traject_controle') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/trajectcontrole.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'mobiele_controle') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/mobielecontrole.png";
        markIcon.iconSize = new GSize(30, 38);

        markIcon.iconAnchor = new GPoint(-5, 5);
      }
      else if (type == 'flitspaal') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/flitspaal.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'roodensnelheid') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/roodensnelheid.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'roodlicht') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/roodlicht.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'gordels') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/gordels.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'alcohol') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/alcohol.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'helm') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/helm.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else if (type == 'mobielbellen') {
        markIcon.image = "/views/pagetypes/verkeerscontroles/images/mobielbellen.png";
        markIcon.iconSize = new GSize(30, 38);
      }
      else {
        markIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png";
        markIcon.iconSize = new GSize(38, 23);
      }

      markerOptions = { icon: markIcon };
      var marker = new GMarker(latlng, markerOptions);
      marker.bindInfoWindowHtml('<h4 class="iw">' + markers[i].getAttribute("naam") + '</h4><h5 class="iw">' + markers[i].getAttribute("thv") + '</h5><p class="iw">' + markers[i].getAttribute("bijzonderheden") + '</p>', { maxWidth: 250 });
      map.addOverlay(marker);
    }
  });
}

function setMapCenter() {
  // center map to the selected position
  switch (document.getElementById('provincie').value) {
    case 'NL':
      map.setCenter(new google.maps.LatLng(52.09127644127848, 5.614537048339844), 7);
      break;
    case 'NH':
      map.setCenter(new google.maps.LatLng(52.746269, 4.817505), 8);
      break;
    case 'ZH':
      map.setCenter(new google.maps.LatLng(52.146973, 4.663696), 9);
      break;
    case 'UT':
      map.setCenter(new google.maps.LatLng(52.1259013, 5.229492), 10);
      break;
    case 'OV':
      map.setCenter(new google.maps.LatLng(52.484453, 6.432495), 9);
      break;
    case 'DR':
      map.setCenter(new google.maps.LatLng(52.897306, 6.619263), 9);
      break;
    case 'GR':
      map.setCenter(new google.maps.LatLng(53.123702, 6.632996), 9);
      break;
    case 'NB':
      map.setCenter(new google.maps.LatLng(51.597548, 5.152588), 9);
      break;
    case 'ZE':
      map.setCenter(new google.maps.LatLng(51.488224, 3.966064), 9);
      break;
    case 'GE':
      map.setCenter(new google.maps.LatLng(52.101444, 5.828247), 9);
      break;
    case 'LI':
      map.setCenter(new google.maps.LatLng(51.406059, 5.712891), 8);
      break;
    case 'FR':
      map.setCenter(new google.maps.LatLng(53.145123, 5.72937), 9);
      break;
    case 'FL':
      map.setCenter(new google.maps.LatLng(52.511206, 5.570068), 9);
      break;
    default:
      map.setCenter(new google.maps.LatLng(52.09127644127848, 5.614537048339844), 7);
  }
}

function createMarkerUrl() {
  var box = document.getElementById('ip-lightbox');

  var markerUrl = "/aspx/get.aspx?xsl=/views/pagetypes/verkeerscontroles/xsl/markers&xdl=/views/pagetypes/verkeerscontroles/xdl/markers";
  try {
    if (document.getElementById('snelweg').checked) {
      markerUrl += "&snelweg=1";
    }
  }
  catch (Error) {
    markerUrl += "&snelweg=0";
  }
  try {
    if (document.getElementById('overige_wegen').checked) {
      markerUrl += "&overige_wegen=1";
    }
  }
  catch (Error) {
    markerUrl += "&overige_wegen=0";
  }
  try {
    if (document.getElementById('mobiel_input').checked) {
      markerUrl += "&mobiel=1";
    }
  }
  catch (Error) {
    markerUrl += "&mobiel=0";
  }
  try {
    if (document.getElementById('traject_input').checked) {
      markerUrl += "&traject=1";
    }
  }
  catch (Error) {
    markerUrl += "&traject=0";
  }
  try {
    if (document.getElementById('alcohol_input').checked) {
      markerUrl += "&alcohol=1";
    }
  }
  catch (Error) {
    markerUrl += "&alcohol=0";
  }
  try {
    if (document.getElementById('flits_input').checked) {
      markerUrl += "&flits=1";
    }
  }
  catch (Error) {
    markerUrl += "&flits=0";
  }
  try {
    if (document.getElementById('roodlicht_input').checked) {
      markerUrl += "&roodlicht=1";
    }
  }
  catch (Error) {
    markerUrl += "&roodlicht=0";
  }
  try {
    if (document.getElementById('gordels_input').checked) {
      markerUrl += "&gordels=1";
    }
  }
  catch (Error) {
    markerUrl += "&gordels=0";
  }
  try {
    if (document.getElementById('roodlicht_snelheid_input').checked) {
      markerUrl += "&roodlicht_snelheid=1";
    }
  }
  catch (Error) {
    markerUrl += "&roodlicht_snelheid=0";
  }
  try {
    if (document.getElementById('helm_input').checked) {
      markerUrl += "&helm=1";
    }
  }
  catch (Error) {
    markerUrl += "&helm=0";
  }
  try {
    if (document.getElementById('mobielbellen_input').checked) {
      markerUrl += "&mobielbellen=1";
    }
  }
  catch (Error) {
    markerUrl += "&mobielbellen=0";
  }

  markerUrl += "&datum=" + document.getElementById('datum').value;
  return markerUrl;
}
