﻿var geocoder;
var geocoded = false;
var postcodeText = 'Enter postcode (UK)';
var onlyValidPostcode = false;

function searchInitialize() {
  geocoder = new google.maps.Geocoder();

}

function geocodeAddress() {

  if (geocoder) {

    var postcode = $("#SearchLocation").val();

    var RegularExpression = new RegExp("[a-zA-Z]{1,2}[0-9][0-9A-Za-z]? ?[0-9][a-zA-Z]{2}");

    if (!onlyValidPostcode || RegularExpression.test(postcode)) {
      geocoder.geocode({ 'address': postcode }, function (results, status) {

        if (status == google.maps.GeocoderStatus.OK) {


          var lat = results[0].geometry.location.lat();
          var lon = results[0].geometry.location.lng();

          setSearchValues(lat, lon);

          geocoded = true;
          $('#PropertySearchFrm').submit();
        } else {
          geocoded = false;

          var searchLocationInput = $("#SearchLocation");
          searchLocationInput.css("border", "1px solid red");
          searchLocationInput.val("Unable to find location");
        }
      });
    }
    else {
      var searchLocationInput = $("#SearchLocation");
      searchLocationInput.css("border", "1px solid red");
      searchLocationInput.val("Unable to find location");
    }
    
  }
}

function setSearchValues(lat, lon) {
  $("#Latitude").val(lat);
  $("#Longitude").val(lon);
}

$(document).ready(function () {

  searchInitialize();

  $('#PropertySearchFrm').submit(function () {

    if (!geocoded) {
      geocodeAddress();
      return false;
    }
    else {
      return true;
    }
  });
});

