2015-07-10 05:13:30 +00:00
|
|
|
/*global wc_geolocation_params */
|
2014-03-19 23:02:54 +00:00
|
|
|
jQuery( function( $ ) {
|
2015-06-17 15:56:06 +00:00
|
|
|
|
2015-06-22 13:55:15 +00:00
|
|
|
var this_page = window.location.toString();
|
2015-06-17 15:56:06 +00:00
|
|
|
|
2015-06-22 13:55:15 +00:00
|
|
|
var $append_hashes = function() {
|
|
|
|
if ( wc_geolocation_params.hash ) {
|
2015-07-10 05:13:30 +00:00
|
|
|
$( 'a[href^="' + wc_geolocation_params.home_url + '"]:not(a[href*="v="]), a[href^="/"]:not(a[href*="v="])' ).each( function() {
|
2017-12-11 13:31:54 +00:00
|
|
|
var $this = $( this ),
|
|
|
|
href = $this.attr( 'href' ),
|
|
|
|
href_parts = href.split( '#' );
|
|
|
|
|
|
|
|
href = href_parts[0];
|
2015-06-17 11:12:49 +00:00
|
|
|
|
|
|
|
if ( href.indexOf( '?' ) > 0 ) {
|
2017-12-11 13:31:54 +00:00
|
|
|
href = href + '&v=' + wc_geolocation_params.hash;
|
2015-06-17 11:12:49 +00:00
|
|
|
} else {
|
2017-12-11 13:31:54 +00:00
|
|
|
href = href + '?v=' + wc_geolocation_params.hash;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( typeof href_parts[1] !== 'undefined' && href_parts[1] !== null ) {
|
|
|
|
href = href + '#' + href_parts[1];
|
2015-06-17 11:12:49 +00:00
|
|
|
}
|
2017-12-11 13:31:54 +00:00
|
|
|
|
|
|
|
$this.attr( 'href', href );
|
2015-06-17 11:12:49 +00:00
|
|
|
});
|
|
|
|
}
|
2015-07-10 05:13:30 +00:00
|
|
|
};
|
2015-06-17 11:12:49 +00:00
|
|
|
|
2015-06-22 13:55:15 +00:00
|
|
|
var $geolocation_redirect = function( hash ) {
|
|
|
|
if ( this_page.indexOf( '?v=' ) > 0 || this_page.indexOf( '&v=' ) > 0 ) {
|
2015-07-10 05:13:30 +00:00
|
|
|
this_page = this_page.replace( /v=[^&]+/, 'v=' + hash );
|
2015-06-22 13:55:15 +00:00
|
|
|
} else if ( this_page.indexOf( '?' ) > 0 ) {
|
|
|
|
this_page = this_page + '&v=' + hash;
|
2015-06-17 15:56:06 +00:00
|
|
|
} else {
|
2015-06-22 13:55:15 +00:00
|
|
|
this_page = this_page + '?v=' + hash;
|
|
|
|
}
|
|
|
|
|
|
|
|
window.location = this_page;
|
2015-07-10 05:13:30 +00:00
|
|
|
};
|
2015-06-22 13:55:15 +00:00
|
|
|
|
|
|
|
var $geolocate_customer = {
|
2015-07-27 16:55:37 +00:00
|
|
|
url: wc_geolocation_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_customer_location' ),
|
2015-06-22 13:55:15 +00:00
|
|
|
type: 'GET',
|
|
|
|
success: function( response ) {
|
|
|
|
if ( response.success && response.data.hash && response.data.hash !== wc_geolocation_params.hash ) {
|
|
|
|
$geolocation_redirect( response.data.hash );
|
|
|
|
}
|
2015-06-17 11:12:49 +00:00
|
|
|
}
|
2015-06-22 13:55:15 +00:00
|
|
|
};
|
|
|
|
|
2015-11-04 03:51:54 +00:00
|
|
|
if ( '1' === wc_geolocation_params.is_available ) {
|
2015-06-22 13:55:15 +00:00
|
|
|
$.ajax( $geolocate_customer );
|
2015-06-17 11:12:49 +00:00
|
|
|
|
2015-09-01 15:49:03 +00:00
|
|
|
// Support form elements
|
2015-09-02 01:10:00 +00:00
|
|
|
$( 'form' ).each( function() {
|
2015-09-07 10:11:55 +00:00
|
|
|
var $this = $( this );
|
|
|
|
var method = $this.attr( 'method' );
|
2018-05-18 19:39:19 +00:00
|
|
|
var hasField = $this.find('input[name="v"]').length > 0;
|
2015-09-02 01:10:00 +00:00
|
|
|
|
2018-05-18 19:39:19 +00:00
|
|
|
if ( method && 'get' === method.toLowerCase() && !hasField ) {
|
2015-09-01 15:49:03 +00:00
|
|
|
$this.append( '<input type="hidden" name="v" value="' + wc_geolocation_params.hash + '" />' );
|
2015-09-01 12:17:59 +00:00
|
|
|
} else {
|
2015-09-01 15:49:03 +00:00
|
|
|
var href = $this.attr( 'action' );
|
|
|
|
if ( href ) {
|
|
|
|
if ( href.indexOf( '?' ) > 0 ) {
|
|
|
|
$this.attr( 'action', href + '&v=' + wc_geolocation_params.hash );
|
|
|
|
} else {
|
|
|
|
$this.attr( 'action', href + '?v=' + wc_geolocation_params.hash );
|
|
|
|
}
|
|
|
|
}
|
2015-09-01 12:17:59 +00:00
|
|
|
}
|
2015-09-01 15:49:03 +00:00
|
|
|
});
|
2015-09-07 15:58:05 +00:00
|
|
|
|
|
|
|
// Append hashes on load
|
|
|
|
$append_hashes();
|
2015-09-01 15:49:03 +00:00
|
|
|
}
|
2015-09-01 12:17:59 +00:00
|
|
|
|
2015-06-17 12:59:04 +00:00
|
|
|
$( document.body ).on( 'added_to_cart', function() {
|
2015-06-22 13:55:15 +00:00
|
|
|
$append_hashes();
|
2015-06-17 11:12:49 +00:00
|
|
|
});
|
|
|
|
|
2015-07-10 05:13:30 +00:00
|
|
|
});
|