Days Before We Ride
0
|| (jQuery('select[name="sort_by"]').val() == 'nearest'
|| jQuery('select[name="sort_by"]', $form).val() == 'farthest')
|| (jQuery(".snear", $form).val() != '' && jQuery(".snear", $form).val() != 'Near' && !jQuery('.geodir-location-search-type', $form).val() )
) {
var vNear = jQuery(".snear", $form).val();
/* OSM can't handle post code with no space so we test for it and add one if needed */
if(window.gdMaps === 'osm'){
var $near_val = vNear;
var $is_post_code = $near_val.match("^([A-Za-z][A-Ha-hJ-Yj-y]?[0-9][A-Za-z0-9]??[0-9][A-Za-z]{2}|[Gg][Ii][Rr] ?0[Aa]{2})$");
if($is_post_code){
$near_val = $near_val.replace(/.{3}$/,' $&');
jQuery(".snear", $form).val($near_val);
}
}
geodir_setsearch($form);
} else {
jQuery(".snear", $form).val('');
jQuery($form).trigger("submit");
}
});
// Clear near search GPS for core
if (!jQuery('input.geodir-location-search-type').length && jQuery('[name="snear"]').length){
jQuery('[name="snear"]').off('keyup');
jQuery('[name="snear"]').on('keyup', function($){
jQuery('.sgeo_lat').val('');
jQuery('.sgeo_lon').val('');
});
}
}
jQuery(document).ready(function() {
geodir_setup_submit_search();
//setup advanced search form on form ajax load
jQuery("body").on("geodir_setup_search_form", function($form){
geodir_setup_submit_search($form);
});
});
function geodir_setsearch($form) {
if ((dist > 0 || (jQuery('select[name="sort_by"]', $form).val() == 'nearest' || jQuery('select[name="sort_by"]', $form).val() == 'farthest')) && (jQuery(".snear", $form).val() == '' || jQuery(".snear", $form).val() == 'Near')) jQuery(".snear", $form).val(default_location);
geocodeAddress($form);
}
function updateSearchPosition(latLng, $form) {
if (window.gdMaps === 'google') {
jQuery('.sgeo_lat').val(latLng.lat());
jQuery('.sgeo_lon').val(latLng.lng());
} else if (window.gdMaps === 'osm') {
jQuery('.sgeo_lat').val(latLng.lat);
jQuery('.sgeo_lon').val(latLng.lon);
}
jQuery($form).trigger("submit"); // submit form after inserting the lat long positions
}
function geocodeAddress($form) {
// Call the geocode function
Sgeocoder = window.gdMaps == 'google' ? new google.maps.Geocoder() : null;
if (jQuery('.snear', $form).val() == '' || ( jQuery('.sgeo_lat').val() != '' && jQuery('.sgeo_lon').val() != '' ) || (jQuery('.snear', $form).val() && jQuery('.snear', $form).val().match("^In:"))) {
if (jQuery('.snear', $form).val() && jQuery('.snear', $form).val().match("^In:")) {
jQuery(".snear", $form).val('');
}
jQuery($form).trigger("submit");
} else {
var address = jQuery(".snear", $form).val();
if (address && address.trim() == 'Near') {
initialise2();
} else if(address && address.trim() == 'Near: My Location') {
jQuery($form).trigger("submit");
} else {
var search_address = address;
if (window.gdMaps === 'google') {
var geocodeQueryParams = {'address': search_address};
if (geodirIsZipCode(address)) {
if (typeof geocodeQueryParams['componentRestrictions'] != 'undefined') {
if (typeof geocodeQueryParams['componentRestrictions']['postalCode'] == 'undefined') {
geocodeQueryParams['componentRestrictions']['postalCode'] = address;
}
} else {
geocodeQueryParams['componentRestrictions'] = {'postalCode': address};
}
}
Sgeocoder.geocode(geocodeQueryParams,
function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
updateSearchPosition(results[0].geometry.location, $form);
} else {
alert("Search was not successful for the following reason :" + status);
}
});
} else if (window.gdMaps === 'osm') {
var osmCountryCodes = false;
geocodePositionOSM(false, search_address, osmCountryCodes, false,
function(geo) {
if (typeof geo !== 'undefined' && geo.lat && geo.lon) {
updateSearchPosition(geo, $form);
} else {
alert("Search was not successful for the requested address.");
}
});
} else {
jQuery($form).trigger("submit");
}
}
}
}
function geodirIsZipCode(string) {
if (/^\d+$/.test(string)) {
if (string.length > 3 && string.length < 7) {
return true;
}
}
return false;
}
function initialise2() {
if (!window.gdMaps) {
return;
}
if (window.gdMaps === 'google') {
var latlng = new google.maps.LatLng(56.494343, -4.205446);
var myOptions = {
zoom: 4,
mapTypeId: google.maps.MapTypeId.TERRAIN,
disableDefaultUI: true
}
} else if (window.gdMaps === 'osm') {
var latlng = new L.LatLng(56.494343, -4.205446);
var myOptions = {
zoom: 4,
mapTypeId: 'TERRAIN',
disableDefaultUI: true
}
}
try { prepareGeolocation(); } catch (e) {}
doGeolocation();
}
function doGeolocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(positionSuccess, positionError);
} else {
positionError(-1);
}
}
function positionError(err) {
var msg;
switch (err.code) {
case err.UNKNOWN_ERROR:
msg = "Unable to find your location";
break;
case err.PERMISSION_DENINED:
msg = "Permission denied in finding your location";
break;
case err.POSITION_UNAVAILABLE:
msg = "Your location is currently unknown";
break;
case err.BREAK:
msg = "Attempt to find location took too long";
break;
default:
msg = "Location detection not supported in browser";
}
jQuery('#info').html(msg);
}
function positionSuccess(position) {
var coords = position.coords || position.coordinate || position;
jQuery('.sgeo_lat').val(coords.latitude);
jQuery('.sgeo_lon').val(coords.longitude);
jQuery('.geodir-listing-search').trigger("submit");
}
/**
* On unload page do some cleaning so back button cache does not store these values.
*/
jQuery(window).on("beforeunload", function(e) {
if(jQuery('.sgeo_lat').length ){
jQuery('.sgeo_lat').val('');
jQuery('.sgeo_lon').val('');
}
});