$(document).ready(function(){
/*---------------------Creating Map-----------------------------------*/
  var center_point = new google.maps.LatLng($('input[name="center_lat"]').val(),$('input[name="center_lng"]').val());
  var marker_point = new google.maps.LatLng($('input[name="lat"]').val(),$('input[name="lng"]').val());
  var zoom = parseInt($('input[name="zoom"]').val());

  var myOptions = {
    disableDefaultUI: true,
    navigationControl: true,
    navigationControlOptions: {
      style: google.maps.NavigationControlStyle.SMALL,
      position: google.maps.ControlPosition.RIGHT
    },
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    scrollwheel: false,
    center: center_point,
    zoom: zoom
  };

  var map = new google.maps.Map($('#search_mapa')[0], myOptions);
  var marker = new google.maps.Marker({
    position: marker_point,
    map: map,
    draggable: true
  });

  var controlDiv = getSearchControl();
  map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv);
  $('#search_loc',controlDiv).val($('input[name="search_text"]').val());

/*  map.setCenter(point);
  map.setZoom();*/


/*---------------------Functions-----------------------------------*/
  function updateFields(){
    //alert('Upadte fields');
    var point=marker.getPosition();
    $('input[name="lat"]').val(point.lat());
    $('input[name="lng"]').val(point.lng());
    $('input[name="zoom"]').val(map.getZoom());
    var center=map.getCenter();
    $('input[name="center_lat"]').val(center.lat());
    $('input[name="center_lng"]').val(center.lng());
    $('input[name="search_mapstat"]').val(1);
  }

  function nastavMapu(submit){
    var address=$("#search_loc").val();
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        var point=results[0].geometry.location;
        map.setCenter(point);
        $('#search_center')
        if (results[0].geometry.viewport){
          map.fitBounds(results[0].geometry.viewport);
        }
         marker.setPosition(point);
         updateFields(point);
         if (submit){
           $('#gps_search').submit();
         }
      } else {
         alert("Zadanú lokalitu sa nepodarilo nájsť.");
      }
    });
  }

  function getSearchControl() {
    var controlDiv = document.createElement('DIV');
    $(controlDiv).attr('id','controlMapSearch');
    $(controlDiv).append('<div>&nbsp;</div>');
    $(controlDiv).append('<input type="text" name="search_loc" id="search_loc" value="" />');
    $(controlDiv).append('<span id="search_setloc">Potvrdiť lokalitu</span>');
    $('div', controlDiv).css('opacity','0.4');
    controlDiv.index = 1;
    return controlDiv;
  }

/*-----------------------Events----------------------------------------------*/
  google.maps.event.addListener(marker, 'position_changed', function() {
    updateFields();
  })

  google.maps.event.addListener(map, 'bounds_changed', function() {
    updateFields();
  })

  google.maps.event.addListener(map, 'click', function(event) {
    marker.setPosition(event.latLng);
  })

  $('#search_loc',controlDiv).bind('keypress',function(event){
    if (event.keyCode == '13') {
//      alert('enter');
      nastavMapu(true);
      return false;
    } else {
      $('input[name="search_mapstat"]').val('0');
    };
  })

 $('#search_setloc',controlDiv).bind('click',function(){
    nastavMapu(true);
    return false;
  })

  $('input',controlDiv).bind('click',function(){$(this).val('');});

  $('input[name="search_submit"]').bind('click',function(){
//    alert($('input[name="search_mapstat"]').val());
    if ($('input[name="search_mapstat"]').val()=='0'){
      nastavMapu(true);
      return false;
    }
  })

})

