| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | // geo-location shim// Source: https://gist.github.com/366184// currentely only serves lat/long// depends on jQuery;(function(geolocation, $){  if (geolocation) return;    var cache;    geolocation = window.navigator.geolocation = {};  geolocation.getCurrentPosition = function(callback){        if (cache) callback(cache);        $.getScript('//www.google.com/jsapi',function(){            cache = {        coords : {          "latitude": google.loader.ClientLocation.latitude,           "longitude": google.loader.ClientLocation.longitude        }      };            callback(cache);    });      };    geolocation.watchPosition = geolocation.getCurrentPosition;})(navigator.geolocation, jQuery);;(function ($) {  Drupal.behaviors.geofieldGeolocation = {    attach: function (context, settings) {      // callback for getCurrentPosition      function updateLocation(position) {        // @TODO: calculate bounding box from accuracy value (accuracy is in meters)        $fields.find('.geofield_lat').val(position.coords.latitude);        $fields.find('.geofield_lon').val(position.coords.longitude);      }            // don't do anything if we're on field configuration      if (!$(context).find("#edit-instance").length) {        var $fields = $(context).find('.field-widget-geofield-geolocation');        // check that we have something to fill up        // on muti values check only that the first one is empty        if ($fields.find('.geofield_lat').val() == '' && $fields.find('.geofield_lon').val() == '') {          // very simple geolocation, no fallback support          if (navigator.geolocation) {        	          navigator.geolocation.getCurrentPosition(updateLocation);          }        }      }          }  };})(jQuery);
 |