"use strict";
(function($) {
function SearchBox (form) {
let body = $( 'body' );
STMListings.SearchBox.form = form;
STMListings.SearchBox.listing = ( body.hasClass( 'stm-template-aircrafts' ) && ! body.hasClass( 'single-listings' ) );
STMListings.SearchBox.prototype.init();
}
SearchBox.prototype.init = function () {
var timer, self = this;
$( 'select:not(.hide)', STMListings.SearchBox.form ).select2().on(
'select2:selecting',
function ( event ) {
if ( timer ) {
clearTimeout( timer );
}
STMListings.SearchBox.form = $( event.target ).closest( 'form' );
timer = setTimeout( $.proxy( self.performAjax, self ), 300 );
}
);
$( document ).on(
'slidestop',
'.taxonomy_range_wrap .ui-slider-wrap',
function (event, ui) {
let min = ui.values.shift(),
max = ui.values.shift(),
$el = $( event.target ).closest( '.taxonomy_range_wrap' );
if ( timer ) {
clearTimeout( timer );
}
if ( min && max ) {
$( '.stm-min-value', $el ).val( min );
$( '.stm-max-value', $el ).val( max );
STMListings.SearchBox.form = $el.closest( 'form' );
timer = setTimeout( $.proxy( self.performAjax, self ), 300 );
}
}
);
};
SearchBox.prototype.fragments = function () {
return 'total' + ( ! STMListings.SearchBox.listing ? ',options' : '') + ( $( STMListings.SearchBox.form ).hasClass( 'stm-review-search-form' ) ? ',listings' : '' );
};
SearchBox.prototype.performAjax = function () {
let $_form = $( STMListings.SearchBox.form ),
noCascad = $_form.find( '.no-cascading' ),
stmUrl = $_form.attr( 'action' );
//start if enable UserFriendlyURLs
if ( stm_theme_config.enable_friendly_urls.length > 0 ) {
var formPath = '';
$_form.serializeArray().forEach(
function (val) {
let slug = val.name.replace( 'min_', '' ).replace( 'max_', '' );
if ( ! stm_cats_conf[slug] && val.value !== '' && val.name !== 'posttype') {
formPath += val.value + '/';
}
}
);
$_form.serializeArray().forEach(
function (val) {
let slug = val.name.replace( 'min_', '' ).replace( 'max_', '' );
if ( $_form.parents('.multilisting-search-tabs-wrap').length ) {
if ( stm_cats_conf[slug] && val.value !== '') {
formPath += formPath.indexOf( '?' ) < 0 ? '?' : '&';
formPath += val.name + '=' + val.value;
}
} else {
if ( ( stm_cats_conf[slug] || val.name === 'posttype' ) && val.value !== '') {
formPath += formPath.indexOf( '?' ) < 0 ? '?' : '&';
formPath += val.name + '=' + val.value;
}
}
}
);
if ( ! $_form.hasClass( 'stm-review-search-form' ) ) {
$_form.attr( 'data-action', stmUrl + formPath );
}
}
//end if enable UserFriendlyURLs
var fragments = ( ! $_form.closest( '.stm-vc-ajax-filter' ).hasClass( 'filter' )) ? '&fragments=' + STMListings.SearchBox.prototype.fragments() : '';
noCascad.val( noCascad.attr( 'data-val' ) );
$.ajax(
{
url: $_form.attr( 'action' ),
dataType: 'json',
context: this,
data: $_form.serialize() + '&ajax_action=listings-binding' + fragments + '&hide_empty=true&security=' + stm_security_nonce,
beforeSend: $.proxy( this.beforeAjax, STMListings.SearchBox.prototype ),
success: $.proxy( this.success, STMListings.SearchBox.prototype ),
complete: $.proxy( this.complete, STMListings.SearchBox.prototype )
}
);
//start if enable UserFriendlyURLs
if ( stm_theme_config.enable_friendly_urls.length > 0 && $_form[0].hasAttribute( 'data-action' ) && $_form.data( 'action' ) !== '' ) {
$_form.on(
'submit',
function (e) {
e.preventDefault();
window.location = $_form.attr( 'data-action' );
}
);
}
//end if enable UserFriendlyURLs
};
SearchBox.prototype.beforeAjax = function () {
let $body = $( 'body' ),
$_form = STMListings.SearchBox.form,
s_arrow = $( '.select2-container--default .select2-selection--single .select2-selection__arrow b', $_form );
if ( ! STMListings.SearchBox.listing || $( $_form ).closest( '.stm-vc-ajax-filter' ).hasClass( 'filter' )) {
$( 'select, button[type="submit"]', $_form ).prop( "disabled", true );
s_arrow.addClass( 'stm-preloader' );
}
if ( $body.hasClass( 'stm-template-aircrafts' ) ) {
s_arrow.addClass( 'stm-preloader' );
}
};
SearchBox.prototype.success = function (data) {
let $body = $( 'body' ),
$_form = STMListings.SearchBox.form;
if ( ! STMListings.SearchBox.listing || $( $_form ).closest( '.stm-vc-ajax-filter' ).hasClass( 'filter' )) {
/* Disable options */
if ( typeof data.options != 'undefined' ) {
$.each(
data.options,
function (key, options) {
$( 'select[name=' + key + '] > option', $_form ).each(
function () {
var slug = $( this ).val();
if (options.hasOwnProperty( slug )) {
$( this ).prop( 'disabled', options[slug].disabled );
}
}
);
}
);
}
$( 'select:not(.hide)', $_form ).select2( "destroy" ).select2();
if ( $body.hasClass( 'stm-template-motorcycle' ) ) {
$( '.stm_mc-found .number-found', $_form ).text( data.total );
}
} else if ( $body.hasClass( 'stm-template-aircrafts' ) ) {
$( '.select2-container--default .select2-selection--single .select2-selection__arrow b', $_form ).removeClass( 'stm-preloader' );
}
var total_result = data.total;
if ( typeof data.listings !== 'undefined' && data.listings.length && typeof listings_with_reviews !== 'undefined' ) {
var listings_with_reviews_parsed = JSON.parse( listings_with_reviews );
if ( listings_with_reviews_parsed ) {
var matched = listings_with_reviews_parsed.filter(
function (n) {
return data.listings.indexOf( n ) !== -1;
}
);
total_result = matched.length;
}
}
$( 'button[type="submit"] span', $_form ).text( total_result );
};
SearchBox.prototype.complete = function () {
let $_form = STMListings.SearchBox.form;
if ( ! STMListings.SearchBox.listing || $( $_form ).closest( '.stm-vc-ajax-filter' ).hasClass( 'filter' )) {
$( '.select2-container--default .select2-selection--single .select2-selection__arrow b', $_form ).removeClass( 'stm-preloader' );
$( 'select, button[type="submit"]', $_form ).prop( "disabled", false );
}
};
STMListings.SearchBox = SearchBox;
$.cookie.raw = true;
var Compare = STMListings.Compare = function () {
this.init();
this.setCount();
this.activateLinks();
this.bind();
};
Compare.prototype.init = function () {
// used in Remove All popup button
var removal_post_type = '';
var ids = {};
if ( typeof compare_init_object !== 'undefined' ) {
this.ids = compare_init_object;
}
};
Compare.prototype.setCount = function () {
let total_count = 0;
$.each(
this.ids,
function(key, val){
total_count += val.length;
}
);
$( '[data-contains=compare-count]' ).text( total_count );
if ($( '.stm-current-cars-in-compare' ).length > 0) {
$( '.stm-current-cars-in-compare' ).html( total_count );
}
};
Compare.prototype.manageCookieAjax = function (e) {
console.log( 'CompareCookieAjax' );
e.preventDefault();
var target = $( e.target ).closest( '[data-id]' );
var dataId = target.attr( 'data-id' );
var dataAction = target.attr( 'data-action' );
var post_type = target.attr( 'data-post-type' );
var _compare_this = this;
if (typeof dataAction === 'undefined') {
dataAction = 'add';
}
if (typeof dataId === 'undefined' || typeof post_type === 'undefined') {
return;
}
let single_compare = $( '.single-add-to-compare' );
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
data: '&post_id=' + dataId + '&post_action=' + dataAction + '&action=stm_ajax_add_to_compare&security=' + stm_security_nonce,
context: this,
beforeSend: () => {
target.addClass( 'disabled' );
single_compare.removeClass( [ 'success', 'danger', 'warning' ] );
},
success: function (data) {
single_compare.addClass( 'single-add-to-compare-visible' );
if (typeof data.response != 'undefined') {
$( '.stm-title', single_compare ).text( data.response );
}
if (typeof data.status != 'undefined') {
single_compare.addClass( data.status );
}
if (typeof data.length != 'undefined') {
$( '.stm-current-cars-in-compare' ).text( data.length );
}
setTimeout(
function () {
single_compare.removeClass( 'single-add-to-compare-visible' );
},
5000
);
if (data.status === 'danger') {
return;
}
if (dataAction == 'add') {
_compare_this.ids[post_type].push( dataId );
} else if (dataAction == 'remove') {
var index = _compare_this.ids[post_type].indexOf( dataId );
_compare_this.ids[post_type].splice( index, 1 );
}
target.hide().siblings( '[data-id]' ).show();
if (target.hasClass( 'stm_remove_after' )) {
window.location.reload();
}
},
complete: function () {
target.removeClass( 'disabled' );
_compare_this.setCount();
}
}
);
};
Compare.prototype.manageCookieLocal = function (e) {
console.log( 'CompareCookieLocal' );
e.preventDefault();
var $el = $( e.currentTarget );
var id = $el.data( 'id' ).toString();
var stm_car_title = $el.data( 'title' );
var post_type = $el.data( 'post-type' );
if ( typeof post_type == 'undefined' ) {
return;
}
let single_compare = $( '.single-add-to-compare' );
if ( this.ids[post_type].indexOf( id ) === -1 ) {
if (this.ids[post_type].length < 3) {
$.cookie( cc_prefix + post_type + '[' + id + ']', id, {expires: 7, path: '/'} );
this.ids[post_type].push( id );
$el.addClass( 'active' );
$( '.stm-listing-compare, .compare' ).attr( 'data-original-title', stm_i18n.remove_from_compare );
$( '.stm-listing-compare, .compare' ).tooltip( 'hide' );
// Added popup
$( '.single-add-to-compare .stm-title' ).text( stm_car_title + ' - ' + stm_added_to_compare_text );
$( '.single-add-to-compare' ).addClass( 'single-add-to-compare-visible' );
setTimeout(
function () {
$( '.single-add-to-compare' ).removeClass( 'single-add-to-compare-visible' );
},
5000
);
// Added popup
} else {
// Already added 3 popup
$( '.single-add-to-compare .stm-title' ).text( stm_already_added_to_compare_text );
$( '.single-add-to-compare' ).addClass( 'single-add-to-compare-visible' );
setTimeout(
function () {
$( '.single-add-to-compare' ).removeClass( 'single-add-to-compare-visible' );
$( '.single-add-to-compare' ).removeClass( 'overadded' );
$( '.compare-remove-all' ).remove();
},
5000
);
// Already added 3 popup
$( '.single-add-to-compare' ).addClass( 'overadded' );
$( '.compare-remove-all' ).remove();
$( '.single-add-to-compare .compare-fixed-link' ).before( '' + resetAllTxt + '' );
this.removal_post_type = post_type;
}
} else {
$.removeCookie( cc_prefix + post_type + '[' + id + ']', {path: '/'} );
$( '.stm-listing-compare, .compare' ).attr( 'data-original-title', stm_i18n.add_to_compare );
$( '.stm-listing-compare, .compare' ).tooltip( 'hide' );
this.ids[post_type].splice( this.ids[post_type].indexOf( id ), 1 );
$el.removeClass( 'active' );
//Deleted from compare text
$( '.stm-title', single_compare ).text( stm_car_title + ' ' + stm_removed_from_compare_text );
single_compare.addClass( 'single-add-to-compare-visible' );
setTimeout(
function () {
single_compare.removeClass( 'single-add-to-compare-visible' );
},
5000
);
//Deleted from compare text
$( '.single-add-to-compare' ).removeClass( 'overadded' );
$( '.compare-remove-all' ).remove();
}
this.setCount();
};
Compare.prototype.remove = function (e) {
e.preventDefault();
var $el = $( e.currentTarget );
var dataId = $el.attr( 'data-id' );
var dataAction = $el.attr( 'data-action' );
var post_type = $el.attr( 'data-post-type' );
var _compare_this = this;
if (typeof dataId === 'undefined' || typeof post_type === 'undefined') {
return;
}
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
data: '&post_id=' + dataId + '&post_action=' + dataAction + '&action=stm_ajax_add_to_compare&security=' + stm_security_nonce,
context: this,
beforeSend: function (data) {
$el.addClass( 'loading' );
if (parseFloat( $( '.stm-current-cars-in-compare' ).text() ) > 0) {
$( '.stm-current-cars-in-compare' ).text( parseFloat( $( '.stm-current-cars-in-compare:first' ).text() ) - 1 );
}
$( '.car-listing-row .compare-col-stm-' + dataId ).hide(
'slide',
{direction: 'left'},
function () {
$( '.car-listing-row .compare-col-stm-' + dataId ).remove();
$( '.car-listing-row' ).append( $( '.compare-empty-car-top' ).html() );
}
);
$( '.stm-compare-row .compare-col-stm-' + dataId ).hide(
'slide',
{direction: 'left'},
function () {
$( '.stm-compare-row .compare-col-stm-' + dataId ).remove();
$( '.stm-compare-row' ).append( $( '.compare-empty-car-bottom' ).html() );
}
);
$( '.row-compare-features .compare-col-stm-' + dataId ).hide(
'slide',
{direction: 'left'},
function () {
$( '.row-compare-features .compare-col-stm-' + dataId ).remove();
if ($( '.row-compare-features .col-md-3' ).length < 2) {
$( '.row-compare-features' ).slideUp();
}
}
);
$( '.add-compare-mobile' ).addClass( 'add-compare-mobile-show' );
// multilisting buttons decrease counter
if ( $( '.multilisting_compare_type_buttons .btn-primary' ).length > 0 ) {
var current_count = $( '.multilisting_compare_type_buttons .btn-primary span.badge' ).html();
if ( typeof current_count !== undefined && parseInt( current_count ) > 0 ) {
var result = parseInt( current_count ) - 1;
$( '.multilisting_compare_type_buttons .btn-primary span.badge' ).html( result );
}
}
},
success: function (data) {
if (dataAction == 'add') {
_compare_this.ids[post_type].push( dataId );
} else if (dataAction == 'remove') {
var index = _compare_this.ids[post_type].indexOf( dataId );
_compare_this.ids[post_type].splice( index, 1 );
}
},
complete: function () {
_compare_this.setCount();
}
}
);
};
Compare.prototype.removeAll = function (e) {
e.preventDefault();
var post_type = this.removal_post_type;
if ( typeof post_type !== 'undefined' && post_type.length > 0 ) {
$.each(
this.ids[post_type],
function (i, id) {
$.removeCookie( cc_prefix + post_type + '[' + id + ']', {path: '/'} );
}
);
this.ids[post_type] = [];
this.activateLinks();
this.setCount();
location.reload();
}
};
Compare.prototype.activateLinks = function (ctx) {
$.each(
this.ids,
function (post_type, value) {
if (value.length == 0) {
return;
}
$.each(
value,
function(index, post_id){
$( '[data-compare-id=' + post_id + ']', ctx ).each(
function () {
$( 'a', this ).eq( 0 ).show();
$( 'a', this ).eq( 1 ).hide();
}
);
var data_placement = $( this ).data( 'placement' );
if (typeof data_placement === undefined) {
var data_placement = 'auto';
}
$( '.stm-compare-directory-new, .stm-listing-compare, .stm-gallery-action-unit.compare', ctx )
.filter( '[data-id=' + post_id + ']' )
.addClass( 'active' )
.tooltip( 'destroy' )
.attr( 'title', stm_i18n.remove_from_compare )
.tooltip( {placement: data_placement} );
}
);
}
);
};
Compare.prototype.bind = function () {
$( document ).on( 'click', '.add-to-compare', $.proxy( this.manageCookieAjax, this ) );
$( document ).on( 'click', '.ev_add_compare_link, .stm-user-public-listing .stm-listing-compare, .image .stm-listing-compare, .listing-list-loop.stm-listing-directory-list-loop .stm-listing-compare, .stm-gallery-action-unit.compare, .stm-compare-directory-new', $.proxy( this.manageCookieLocal, this ) );
$( document ).on( 'click', '.remove-from-compare', $.proxy( this.remove, this ) );
$( document ).on( 'click', '.compare-remove-all', $.proxy( this.removeAll, this ) );
};
var Favorites = STMListings.Favorites = function () {
$( 'body.logged-in' ).on( 'click', '.stm-listing-favorite, .stm-listing-favorite-action', this.clickUser );
$( 'body.stm-user-not-logged-in' ).on( 'click', '.stm-listing-favorite, .stm-listing-favorite-action', this.clickGuest );
this.ids = $.cookie( 'stm_car_favourites' );
if (this.ids) {
this.ids = this.ids.split( ',' );
} else {
this.ids = [];
}
var _this = this;
if ($( 'body' ).hasClass( 'logged-in' )) {
$.getJSON(
ajaxurl,
{action: 'stm_ajax_get_favourites', security: stm_security_nonce},
function (data) {
_this.ids = data;
_this.activateLinks();
}
);
} else {
this.activateLinks();
}
};
Favorites.prototype.clickUser = function (e) {
e.preventDefault();
if ($(this).hasClass('disabled')) {
return false;
}
var $button = $( this );
$button.tooltip( 'hide' );
$button.toggleClass( 'active' );
var stm_car_add_to = $button.data( 'id' );
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
data: '&car_id=' + stm_car_add_to + '&action=stm_ajax_add_to_favourites&security=' + stm_security_nonce,
context: this,
beforeSend: function (data) {
$button.addClass( 'disabled' );
},
success: function (data) {
if (data.count) {
$( '.stm-my-favourites span' ).text( data.count );
}
$button.removeClass( 'disabled' );
updateTooltip( $button );
}
}
);
};
Favorites.prototype.clickGuest = function (e) {
e.preventDefault();
var $button = $( this );
$button.toggleClass( 'active' );
$button.tooltip( 'hide' );
var stm_cookies = $.cookie();
var stm_car_add_to = $button.data( 'id' );
var stm_car_favourites = [];
if (typeof (stm_cookies['stm_car_favourites']) !== 'undefined') {
stm_car_favourites = stm_cookies['stm_car_favourites'].split( ',' );
var index = stm_car_favourites.indexOf( stm_car_add_to.toString() );
if (index !== -1) {
stm_car_favourites.splice( index, 1 );
} else {
stm_car_favourites.push( stm_car_add_to.toString() );
}
stm_car_favourites = stm_car_favourites.join( ',' );
$.cookie( 'stm_car_favourites', stm_car_favourites, {expires: 7, path: '/'} );
} else {
$.cookie( 'stm_car_favourites', stm_car_add_to.toString(), {expires: 7, path: '/'} );
}
updateTooltip( $button );
};
function updateTooltip($button) {
if ($button.hasClass( 'active' )) {
$button.attr( 'data-original-title', stm_i18n.remove_from_favorites );
} else {
$button.attr( 'data-original-title', stm_i18n.add_to_favorites );
}
}
Favorites.prototype.activateLinks = function (ctx) {
$.each(
this.ids,
function (key, value) {
if ( ! value) {
return;
}
$( '.stm-listing-favorite, .stm-listing-favorite-action', ctx )
.filter( '[data-id=' + value + ']' )
.addClass( 'active' )
.tooltip( 'hide' )
.attr( 'title', stm_i18n.remove_from_favorites )
.tooltip( {placement: 'auto'} );
$( '.stm-listing-favorite.active' )
.tooltip( 'destroy' )
.tooltip();
$( '.stm-user-private-main' ).find( '.stm-listing-favorite.active' )
.tooltip( 'destroy' )
.tooltip()
.tooltip( {placement: 'auto'} );
}
);
};
var stm_single_filter_link = false;
var stmIsotope;
var $container = $( '.stm-isotope-sorting' );
$( document ).ready(
function () {
let $body = $( 'body' );
/*Terms and conditions rental*/
$( document ).on(
"click",
'.stm-template-car_rental .form-row.terms a',
function (event) {
event.preventDefault();
}
);
/*SHOW NOTIFICATION POPUP IF CAR NOT IN STOCK IN SELECTED OFFICE (STEP 1 RESERVATION)*/
if ( $body.hasClass( 'stm-template-rental-daypicker-page' ) ) {
$( 'select[name="pickup_location"]' ).on(
'change',
function () {
var locationId = $( this ).select2( "val" );
$.ajax(
{
url: ajaxurl,
type: "GET",
dataType: 'json',
context: this,
data: 'rental_office_id=' + locationId + '&action=stm_ajax_rental_check_car_in_current_office&security=' + stm_security_nonce,
success: function (data) {
$( "#select-vehicle-popup" ).attr( "href", $( "#select-vehicle-popup" ).attr( 'href' ).split( "?" )[0] + "?pickup_location=" + locationId );
if (data == 'EMPTY') {
$( '.choose-another-class' ).addClass( 'single-add-to-compare-visible' );
setTimeout(
function () {
$( '.choose-another-class' ).removeClass( 'single-add-to-compare-visible' );
},
5000
);
}
}
}
);
}
);
}
stm_ajax_filter_remove_hidden();
stm_ajax_add_test_drive();
stm_ajax_add_trade_offer();
clearFilter();
clearMagazineFilter();
stm_filter_links();
stm_favourites();
loadMoreDealerCars();
sortByListingType();
loadMoreDealerReviews();
//Isotope
stm_sort_listing_cars();
stm_modern_filter_isotope();
//Clear select value from listing badge
$body.on(
'click',
'#modern-filter-listing .stm-clear-listing-one-unit',
function () {
let selectToClear = $( this ).data( 'select' );
if ( typeof selectToClear !== "undefined" ) {
let $priceRange = $( '#stm-' + selectToClear + '-range' );
if ( selectToClear !== 'price' && $( 'select[name=' + selectToClear + ']' ).length > 0 ) {
$( 'select[name=' + selectToClear + ']' ).val( '' ).trigger( 'change' );
if ($priceRange.length > 0) {
$priceRange.slider( 'values', [stmOptionsObj.min, stmOptionsObj.max] );
$( "#stm_filter_min_" + selectToClear ).val( stmOptionsObj.min );
$( "#stm_filter_max_" + selectToClear ).val( stmOptionsObj.max );
}
} else {
if ($priceRange.length > 0) {
$priceRange.slider( 'values', [stmOptions.min, stmOptions.max] );
$( "#stm_filter_min_" + selectToClear ).val( stmOptions.min );
$( "#stm_filter_max_" + selectToClear ).val( stmOptions.max );
}
}
}
}
);
$body.on(
'click',
'.stm-clear-listing-one-unit-classic',
function () {
var selectToClear = $( this ).data( 'select' ); // ! data-select not defined in badges.php
var clearLinkArg = $( this ).data( 'url' );
if (typeof selectToClear != 'undefined') {
if (selectToClear.indexOf( '[' )) {
window.location = clearLinkArg;
return false;
}
if (selectToClear != 'price' && $( 'select[name=' + selectToClear + ']' ).length > 0) {
window.location = clearLinkArg;
} else {
var $priceRange = $( '#stm-price-range' );
if ($priceRange.length > 0) {
$priceRange.slider( 'values', [stmOptions.min, stmOptions.max] );
$( "#stm_filter_min_price" ).val( stmOptions.min );
$( "#stm_filter_max_price" ).val( stmOptions.max );
$( '.classic-filter-row form' ).trigger( 'submit' );
}
}
}
}
);
$body.on(
'click',
'#lmb-car-review',
function (e) {
e.preventDefault();
stm_load_cars_with_review();
}
);
}
);
function stm_ajax_filter_remove_hidden() {
let $filter = $( '.filter-listing.stm-vc-ajax-filter, .filter.stm-vc-ajax-filter, .multilisting-search-tabs-wrap' ),
$form = $( 'form', $filter );
$form.each(
function () {
new SearchBox( this );
}
);
}
function stm_favourites() {
window.stm_compare = new Compare();
}
function stm_ajax_add_test_drive() {
$( '#test-drive form' ).on(
"submit",
function (event) {
event.preventDefault();
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
context: this,
data: $( this ).serialize() + '&action=stm_ajax_add_test_drive&security=' + stm_security_nonce,
beforeSend: function () {
$( '.alert-modal' ).remove();
$( this ).closest( 'form' ).find( 'input' ).removeClass( 'form-error' );
$( this ).closest( 'form' ).find( '.stm-ajax-loader' ).addClass( 'loading' );
},
success: function (data) {
$( this ).closest( 'form' ).find( '.stm-ajax-loader' ).removeClass( 'loading' );
$( this ).closest('form').find('.modal-body').addClass('sended');
$( this ).closest( 'form' ).find( '.modal-body-message' ).append( '
' + data.response + '
' )
for (var key in data.errors) {
$( '#request-test-drive-form input[name="' + key + '"]' ).addClass( 'form-error' );
}
if (data.status === 'success') {
$( this ).closest( 'form' ).find( '.modal-body-fields' ).addClass( 'hidden' );
$( this ).closest( 'form' ).find( 'input' ).val( '' );
}
}
}
);
$( this ).closest( 'form' ).find( '.form-error' ).on(
'hover',
function () {
$( this ).removeClass( 'form-error' );
}
);
}
);
}
function stm_ajax_add_trade_offer() {
$( '#trade-offer form' ).on(
"submit",
function (event) {
event.preventDefault();
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
context: this,
data: $( this ).serialize() + '&action=stm_ajax_add_trade_offer&security=' + stm_security_nonce,
beforeSend: function () {
$( '.alert-modal' ).remove();
$( this ).closest( 'form' ).find( 'input' ).removeClass( 'form-error' );
$( this ).closest( 'form' ).find( '.stm-ajax-loader' ).addClass( 'loading' );
},
success: function (data) {
$( this ).closest( 'form' ).find( '.stm-ajax-loader' ).removeClass( 'loading' );
$( this ).closest( 'form' ).find( '.modal-body' ).append( '' + data.response + '
' )
for (var key in data.errors) {
$( '#request-trade-offer-form input[name="' + key + '"]' ).addClass( 'form-error' );
}
}
}
);
$( this ).closest( 'form' ).find( '.form-error' ).on(
'hover',
function () {
$( this ).removeClass( 'form-error' );
}
);
}
);
}
function clearFilter() {
$( '.reset-all' ).on(
'click',
function (e) {
e.preventDefault();
$( this ).closest( '.filter' ).find( 'select' ).trigger( 'reset' );
$( this ).closest( '.filter' ).find( 'select' ).find( 'option' ).each(
function () {
if ($( this ).attr( 'data-disabled' ) == 'disabled') {
$( this ).attr( 'disabled', 'disabled' )
}
}
)
if ($( '.filter-price' ).length > 0) {
$( '.stm-price-range' ).slider( 'values', [stmOptions.min, stmOptions.max] );
$( "#stm_filter_min_price" ).val( stmOptions.min );
$( "#stm_filter_max_price" ).val( stmOptions.max );
}
}
);
}
function clearMagazineFilter() {
$( '.c-r-remove-filter' ).on(
'click',
function(e){
e.preventDefault();
$( '.selected-filter' ).text( '' );
$( this ).removeClass( 'active' );
$( '#listing-with-review' ).find( 'select' ).trigger( 'reset' );
$( '#listing-with-review' ).find( 'select' ).find( 'option' ).each(
function(){
if ( $( this ).attr( 'data-disabled' ) == 'disabled') {
$( this ).attr( 'disabled','disabled' )
}
}
)
stm_load_cars_with_review( true );
}
);
}
function stm_sort_listing_cars() {
// init Isotope
if ($( '#modern-filter-listing .stm-isotope-sorting' ).length) {
if (typeof imagesLoaded == 'function') {
$( '.stm-isotope-sorting' ).imagesLoaded(
function () {
stmIsotope = $container.isotope(
{
itemSelector: '.stm-isotope-listing-item',
layoutMode: 'fitRows',
hiddenStyle: {
opacity: 0
},
visibleStyle: {
opacity: 1
},
transitionDuration: '0.5s',
getSortData: {
price: function (itemElem) {
var price = $( itemElem ).data( 'price' );
return parseFloat( price );
},
date: function (itemElem) {
var date = $( itemElem ).data( 'date' );
return parseFloat( date );
},
mileage: function (itemElem) {
var mileage = $( itemElem ).data( 'mileage' );
return parseFloat( mileage );
}
}
}
);
}
);
}
$( '#modern-filter-listing .stm-select-sorting select' ).select2().on(
'change',
function () {
stm_isotope_sort_function( $( this ).select2( 'val' ) );
}
)
}
}
function generateNumberFilter() {
/*Generate number field*/
var dataset = [];
$( '.stm-isotope-listing-item' ).each(
function () {
var $this = $( this );
var attributes = $this[0].attributes;
for (var prop in attributes) {
if (typeof attributes[prop].nodeName === 'undefined' || attributes[prop].nodeName == 'data-numeric-price') {
continue;
}
var attribute = attributes[prop].nodeName;
if ( ! attribute.includes( '-numeric-' )) {
continue;
}
if ( ! dataset.includes( attribute )) {
dataset.push( attribute );
}
}
}
);
dataset.forEach(
function (attribute) {
var attribute_name = attribute.replace( 'data-numeric-', '' );
var $filter = $( '.stm-accordion-single-unit.' + attribute_name );
if ( ! $filter.length) {
return true;
}
var $filter_wrapper = $filter.find( '.stm-accordion-content-wrapper' );
var filter_values = [];
$( '[' + attribute + ']' ).each(
function () {
var $this = $( this );
var value = $this.attr( attribute );
if ( ! filter_values.includes( value )) {
filter_values.push( value );
}
}
);
filter_values.sort().forEach(
function(value){
$filter_wrapper.append(
'' +
'' +
'
'
);
}
);
$( '.numeric-checkbox-js' ).uniform( {} );
$.uniform.update();
}
);
}
function stm_modern_filter_isotope() {
if ($( '#modern-filter-listing' ).length > 0) {
generateNumberFilter();
$( 'body' ).on(
'click',
'.modern-filter-badges ul li i',
function () {
var tab_reset = $( this ).data( 'select' );
if (tab_reset == 'price') {
$( '.stm-price-range' ).slider( 'values', [stmOptions.min, stmOptions.max] );
$( "#stm_filter_min_price" ).val( stmOptions.min );
$( "#stm_filter_max_price" ).val( stmOptions.max );
stmIso.isotope(
{
filter: function () {
var itemPrice = $( this ).data( 'price' );
return parseInt( itemPrice, 10 ) >= stmOptions.min && parseInt( itemPrice, 10 ) <= stmOptions.max;
}
}
);
/*price_string = 'Price: ' + stmOptions.min + ' - ' + stmOptions.max;
price_string += '';*/
price_string = '';
$( this ).closest( 'li' ).remove();
var badges_length = $( ".stm-filter-chosen-units-list li" ).length;
if (badges_length < 1) {
$( '.stm-filter-chosen-units-list' ).css( {height: 0} );
}
} else if (typeof stmOptionsObj[tab_reset] !== 'undefined') {
$( '.stm-' + tab_reset + '-range' ).slider( 'values', [stmOptionsObj[tab_reset].min, stmOptionsObj[tab_reset].max] );
$( "#stm_filter_min_" + tab_reset ).val( stmOptionsObj[tab_reset].min );
$( "#stm_filter_max_" + tab_reset ).val( stmOptionsObj[tab_reset].max );
stmIso.isotope(
{
filter: function () {
var itemPrice = $( this ).data( tab_reset );
return parseInt( itemPrice, 10 ) >= stmOptionsObj[tab_reset].min && parseInt( itemPrice, 10 ) <= stmOptionsObj[tab_reset].max;
}
}
);
dynamic_string[tab_reset] = '';
$( this ).closest( 'li' ).remove();
var badges_length = $( ".stm-filter-chosen-units-list li" ).length;
if (badges_length < 1) {
$( '.stm-filter-chosen-units-list' ).css( {height: 0} );
}
} else {
$( '#' + tab_reset + ' input[type=checkbox]' ).each(
function () {
if ($( this ).prop( 'checked' )) {
$( this ).trigger( 'click' );
}
}
)
}
/*Number of filtered*/
if (typeof stmIsotope != 'undefined') {
var stmIsoData = stmIsotope.data( 'isotope' );
if (typeof stmIsoData != 'undefined') {
if (typeof stmIsoData.filteredItems != 'undefined') {
$( '.stm-modern-filter-found-cars span' ).text( stmIsoData.filteredItems.length );
}
}
}
}
);
var stmSortClasses = '';
var main_string = '';
var price_string = '';
var dynamic_string = new Object();
var dynamic_string_html = '';
var string = '';
var stmIso = $( '.stm-isotope-sorting' );
var stmFilterGroups = {};
var stmPriceMaxSelected, stmPriceMinSelected = '';
var stmMilMaxSelected, stmMilMinSelected = '';
/*Checkbox clicked, filter*/
$( '#modern-filter-listing input[type=checkbox]' ).on(
'click',
function () {
var badges = {};
var badges_reset = {};
stmFilterGroups = {};
$( window ).trigger( 'scroll' );
var stmFirst = 0;
stmSortClasses = '';
var numberOfCats = 0;
$( '#modern-filter-listing input[type=checkbox]' ).each(
function () {
var stmChecked = $( this ).prop( 'checked' );
var stmCurrentClass = $( this ).attr( 'name' );
var stmBadgeValue = $( this ).data( 'name' );
var stmBadgeId = $( this ).closest( '.content' ).attr( 'id' );
var stmFilterCurrentGroup = $( this ).closest( '.collapse' ).attr( 'id' );
if (stmChecked) {
var tab = $( this ).closest( '.stm-accordion-single-unit' ).find( '.title h5' ).text();
if (typeof badges[tab] == 'undefined') {
badges[tab] = [];
}
if (typeof badges_reset[tab] == 'undefined') {
badges_reset[tab] = '';
}
badges[tab].push( stmBadgeValue );
badges_reset[tab] = stmBadgeId;
if (stmFirst == 0) {
stmSortClasses += '.' + stmCurrentClass;
} else {
stmSortClasses += '.' + stmCurrentClass;
}
stmFirst++;
if (typeof (stmFilterGroups[stmFilterCurrentGroup]) == 'undefined') {
stmFilterGroups[stmFilterCurrentGroup] = [];
}
stmFilterGroups[stmFilterCurrentGroup].push( stmCurrentClass );
}
if (stmSortClasses == '') {
stmSortClasses = '.all';
}
}
);
if ($( '.stm-isotope-sorting' ).length > 0 && stmSortClasses != '') {
var matches = [];
stmIso.isotope(
{
filter: function () {
matches = [];
var itemPrice = $( this ).data( 'price' );
var minPrice = $( '#stm_filter_min_price' ).val();
var maxPrice = $( '#stm_filter_max_price' ).val();
if (Object.keys( stmFilterGroups ).length > 0) {
for (var key in stmFilterGroups) {
if (stmFilterGroups.hasOwnProperty( key )) {
for (var k = 0; k < stmFilterGroups[key].length; k++) {
var match = false;
if ($( this ).hasClass( stmFilterGroups[key][k] )) {
matches[key] = true;
}
}
}
}
var final_match = false;
if (Object.keys( matches ).length == Object.keys( stmFilterGroups ).length) {
if (Object.keys( matches ).length > 0) {
for (var m_key in matches) {
if (matches.hasOwnProperty( m_key )) {
if (matches[m_key]) {
final_match = true;
} else {
final_match = false;
}
}
}
} else {
final_match = false;
}
}
if (final_match) {
if (typeof minPrice != 'undefined' && typeof maxPrice != 'undefined' && typeof itemPrice != 'undefined') {
return parseInt( itemPrice, 10 ) >= minPrice && parseInt( itemPrice, 10 ) <= maxPrice;
} else {
return ($( this ));
}
}
} else {
return ($( this ));
}
}
}
)
}
/*create badge*/
string = '';
for (var key in badges) {
if (badges.hasOwnProperty( key )) {
if (badges.hasOwnProperty( key )) {
string += '' + key + ': ' + badges[key].join( ', ' );
if (badges_reset.hasOwnProperty( key )) {
string += '';
}
string += '';
main_string = get_dynamic_badge_html( dynamic_string ) + price_string + string;
$( '.modern-filter-badges ul.stm-filter-chosen-units-list' ).html( main_string );
}
}
}
if ($.isEmptyObject( badges )) {
main_string = get_dynamic_badge_html( dynamic_string ) + price_string + string;
$( '.modern-filter-badges ul.stm-filter-chosen-units-list' ).html( main_string );
}
//var badges_length = Object.keys(badges).length;
var badges_length = $( ".stm-filter-chosen-units-list li" ).length;
if (badges_length > 0) {
var badgesWidth = 0;
var badgesMargin = 15;
var badgesRowWidth = $( '.stm-filter-chosen-units-list' ).outerWidth();
$( '.stm-filter-chosen-units-list li' ).each(
function () {
badgesWidth += $( this ).outerWidth();
}
);
// Add margins
badgesWidth += badgesMargin * (badges_length - 1);
var row_number = (badgesWidth / badgesRowWidth) + 1;
$( '.stm-filter-chosen-units-list' ).css(
{
height: (parseInt( row_number ) * 47) + 'px'
}
);
} else {
$( '.stm-filter-chosen-units-list' ).css(
{
height: 0
}
);
}
/*Number of filtered*/
if (typeof stmIsotope != 'undefined') {
var stmIsoData = stmIsotope.data( 'isotope' );
if (typeof stmIsoData != 'undefined') {
if (typeof stmIsoData.filteredItems != 'undefined') {
$( '.stm-modern-filter-found-cars span' ).text( stmIsoData.filteredItems.length );
}
}
}
stm_set_query_transients( stmPriceMinSelected, stmPriceMaxSelected );
}
);
$( ".stm-price-range" ).on(
'slide',
function (event, ui) {
var minPrice = ui.values[0];
var maxPrice = ui.values[1];
stmIso.isotope(
{
filter: function () {
var matches = [];
var itemPrice = $( this ).data( 'price' );
var itemMil = (typeof ($( this ).data( 'mileage' )) != 'undefined') ? $( this ).data( 'mileage' ) : 0;
if (Object.keys( stmFilterGroups ).length > 0) {
for (var key in stmFilterGroups) {
if (stmFilterGroups.hasOwnProperty( key )) {
for (var k = 0; k < stmFilterGroups[key].length; k++) {
var match = false;
if ($( this ).hasClass( stmFilterGroups[key][k] )) {
matches[key] = true;
}
}
}
}
var final_match = false;
if (Object.keys( matches ).length == Object.keys( stmFilterGroups ).length) {
if (Object.keys( matches ).length > 0) {
for (var m_key in matches) {
if (matches.hasOwnProperty( m_key )) {
if (matches[m_key]) {
final_match = true;
} else {
final_match = false;
}
}
}
} else {
final_match = false;
}
}
if (final_match) {
stmPriceMaxSelected = (typeof (maxPrice) == 'undefined') ? 0 : maxPrice;
stmPriceMinSelected = (typeof (minPrice) == 'undefined') ? 0 : minPrice;
if (stmMilMaxSelected !== '' && stmMilMinSelected !== '') {
return parseInt( itemPrice, 10 ) >= minPrice && parseInt( itemPrice, 10 ) <= maxPrice && parseInt( itemMil, 10 ) >= stmMilMinSelected && parseInt( itemMil, 10 ) <= stmMilMaxSelected;
} else {
return parseInt( itemPrice, 10 ) >= minPrice && parseInt( itemPrice, 10 ) <= maxPrice;
}
}
} else {
stmPriceMaxSelected = (typeof (maxPrice) == 'undefined') ? 0 : maxPrice;
stmPriceMinSelected = (typeof (minPrice) == 'undefined') ? 0 : minPrice;
if (stmMilMaxSelected !== '' && stmMilMinSelected !== '') {
return parseInt( itemPrice, 10 ) >= minPrice && parseInt( itemPrice, 10 ) <= maxPrice && parseInt( itemMil, 10 ) >= stmMilMinSelected && parseInt( itemMil, 10 ) <= stmMilMaxSelected;
} else {
return parseInt( itemPrice, 10 ) >= minPrice && parseInt( itemPrice, 10 ) <= maxPrice;
}
}
}
}
);
stm_set_query_transients( stmPriceMinSelected, stmPriceMaxSelected );
/*Number of filtered*/
if (typeof stmIsotope != 'undefined') {
var stmIsoData = stmIsotope.data( 'isotope' );
if (typeof stmIsoData != 'undefined') {
if (typeof stmIsoData.filteredItems != 'undefined') {
$( '.stm-modern-filter-found-cars span' ).text( stmIsoData.filteredItems.length );
}
}
}
price_string = 'Price: ' + minPrice + ' - ' + maxPrice;
price_string += '';
main_string = get_dynamic_badge_html( dynamic_string ) + price_string + string;
$( '.modern-filter-badges ul.stm-filter-chosen-units-list' ).html( main_string );
$( '.stm-filter-chosen-units-list' ).height( '47' );
}
);
$( ".stm-modern-dynamic-slider" ).each(
function () {
var sliderIdent = $( this ).data( "slider-name" );
$( ".stm-" + sliderIdent + "-range" ).on(
'slide',
function (event, ui) {
var minMileage = ui.values[0];
var maxMileage = ui.values[1];
stmIso.isotope(
{
filter: function () {
var matches = [];
var itemPrice = (typeof ($( this ).data( 'price' )) != 'undefined') ? $( this ).data( 'price' ) : 0;
var itemMileage = $( this ).data( sliderIdent );
if (Object.keys( stmFilterGroups ).length > 0) {
for (var key in stmFilterGroups) {
if (stmFilterGroups.hasOwnProperty( key )) {
for (var k = 0; k < stmFilterGroups[key].length; k++) {
var match = false;
if ($( this ).hasClass( stmFilterGroups[key][k] )) {
matches[key] = true;
}
}
}
}
var final_match = false;
if (Object.keys( matches ).length == Object.keys( stmFilterGroups ).length) {
if (Object.keys( matches ).length > 0) {
for (var m_key in matches) {
if (matches.hasOwnProperty( m_key )) {
if (matches[m_key]) {
final_match = true;
} else {
final_match = false;
}
}
}
} else {
final_match = false;
}
}
if (final_match) {
stmMilMaxSelected = maxMileage;
stmMilMinSelected = minMileage;
if (stmPriceMaxSelected !== '' && stmPriceMinSelected !== '') {
return parseInt( itemMileage, 10 ) >= minMileage && parseInt( itemMileage, 10 ) <= maxMileage && parseInt( itemPrice, 10 ) >= stmPriceMinSelected && parseInt( itemPrice, 10 ) <= stmPriceMaxSelected;
} else {
return parseInt( itemMileage, 10 ) >= minMileage && parseInt( itemMileage, 10 ) <= maxMileage;
}
}
} else {
stmMilMaxSelected = maxMileage;
stmMilMinSelected = minMileage;
if (stmPriceMaxSelected !== '' && stmPriceMinSelected !== '') {
return parseInt( itemMileage, 10 ) >= minMileage && parseInt( itemMileage, 10 ) <= maxMileage && parseInt( itemPrice, 10 ) >= stmPriceMinSelected && parseInt( itemPrice, 10 ) <= stmPriceMaxSelected;
} else {
return parseInt( itemMileage, 10 ) >= minMileage && parseInt( itemMileage, 10 ) <= maxMileage;
}
}
}
}
);
/*Number of filtered*/
if (typeof stmIsotope != 'undefined') {
var stmIsoData = stmIsotope.data( 'isotope' );
if (typeof stmIsoData != 'undefined') {
if (typeof stmIsoData.filteredItems != 'undefined') {
$( '.stm-modern-filter-found-cars span' ).text( stmIsoData.filteredItems.length );
}
}
}
dynamic_string_html = '' + sliderIdent + ': ' + minMileage + ' - ' + maxMileage;
dynamic_string_html += '';
dynamic_string[sliderIdent] = dynamic_string_html;
main_string = get_dynamic_badge_html( dynamic_string ) + price_string + string;
$( '.modern-filter-badges ul.stm-filter-chosen-units-list' ).html( main_string );
$( '.stm-filter-chosen-units-list' ).height( '47' );
}
);
}
);
// stm_remove_query_cookies();
}
// else if($('body.single').length == 0) {
// stm_remove_query_cookies();
// }
// set query cookie
function stm_set_query_transients(min, max) {
var cookieQueryObj = Object.assign( {}, stmFilterGroups );
if (typeof min !== 'undefined' && typeof max !== 'undefined') {
cookieQueryObj['min_price'] = [min];
cookieQueryObj['max_price'] = [max];
}
// delete query cookie
// $.cookie('stm_search_results_query_' + stm_site_blog_id, null, {expires: -1, path: '/'});
// set new query cookie
// $.cookie('stm_search_results_query_' + stm_site_blog_id, JSON.stringify(cookieQueryObj), {expires: 7, path: '/'});
// set cookie to come back to modern inventory page
// $.cookie('stm_modern_inventory_link_' + stm_site_blog_id, window.location.href, {expires: 7, path: '/'});
$.ajax(
{
type: 'post',
url: ajax_url,
data: {
action: 'stm_set_query_transients',
inventory_query: cookieQueryObj,
inventory_link: window.location.href,
}
}
);
}
// delete query and related cookies
// function stm_remove_query_cookies() {
// // also delete everywhere except on single listing page
// $.cookie('stm_search_results_query_' + stm_site_blog_id, null, {expires: -1, path: '/'});
// $.cookie('stm_modern_inventory_link_' + stm_site_blog_id, null, {expires: -1, path: '/'});
// }
}
function get_dynamic_badge_html(dynamic_string) {
var dynamic_string_html = '';
$.each(
dynamic_string,
function (key, event) {
dynamic_string_html += event;
}
);
return dynamic_string_html;
}
function stm_filter_links() {
$( 'body' ).on(
'click',
'.stm-single-filter-link',
function () {
stm_single_filter_link = true;
var stm_name = $( this ).data( 'slug' );
var stm_value = $( this ).data( 'value' );
if (typeof stm_name !== 'undefined' && typeof stm_value !== 'undefined') {
$( '.reset-all' ).trigger( 'click' );
$( '#stm-filter-links-input' ).attr( 'name', stm_name );
$( '#stm-filter-links-input' ).val( stm_value );
}
}
)
}
STMListings.save_user_settings = function () {
$( '#stm_user_settings_edit.stm_save_user_settings_ajax' ).on(
'submit',
function (e) {
var formData = new FormData();
/*Add image*/
formData.append( 'stm-avatar', $( 'input[name="stm-avatar"]' )[0].files[0] );
/*Add text fields*/
var formInputs = $( this ).serializeArray();
for (var key in formInputs) {
if (formInputs.hasOwnProperty( key )) {
formData.append( formInputs[key]['name'], formInputs[key]['value'] );
}
}
formData.append( 'action', 'stm_listings_ajax_save_user_data' );
e.preventDefault();
$.ajax(
{
type: "POST",
url: ajaxurl,
dataType: 'json',
context: this,
data: formData,
contentType: false,
processData: false,
beforeSend: function () {
$( '.stm-user-message' ).empty();
$( this ).find( '.stm-listing-loader' ).addClass( 'visible' );
},
success: STMListings.save_user_settings_success
}
);
}
)
};
STMListings.save_user_settings_success = function (data) {
$( this ).find( '.stm-listing-loader' ).removeClass( 'visible' );
$( '.stm-user-message' ).text( data.error_msg );
$( '.stm-image-avatar img, .stm-dropdown-user-small-avatar img' ).attr( 'src', data.new_avatar );
if (typeof data.new_avatar === 'undefined' || data.new_avatar === '') {
$( '.stm-image-avatar' ).removeClass( 'hide-empty' ).addClass( 'hide-photo' );
} else {
$( '.stm-image-avatar' ).addClass( 'hide-empty' ).removeClass( 'hide-photo' );
}
};
STMListings.stm_logout = function () {
$( 'body' ).on(
'click',
'.stm_logout a',
function (e) {
e.preventDefault();
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
context: this,
data: {
'action': 'stm_logout_user'
},
beforeSend: function () {
$( '.stm_add_car_form .stm-form-checking-user .stm-form-inner' ).addClass( 'activated' );
},
success: function (data) {
if (data.exit) {
$( '.stm-form-checking-user button[type="submit"]' ).removeClass( 'enabled' ).addClass( 'disabled' );
window.location.reload();
}
}
}
);
}
)
};
STMListings.stm_ajax_login = function () {
$( '.lOffer-account-unit' ).on(
'mouseout',
function () {
$( '.stm-login-form-unregistered' ).removeClass( 'working' );
}
);
$( '.stm-forgot-password a' ).on(
'click',
function (e) {
e.preventDefault();
var login_popup = $( this ).parents( '.stm-login-form-unregistered, .stm-login-form-mobile-unregistered' );
if ( login_popup.length ) {
$( '.stm-login-form-unregistered form, .stm-login-form-mobile-unregistered form' ).slideToggle();
$( '.stm-login-form-unregistered .stm_forgot_password_send input[type=text], .stm-login-form-mobile-unregistered .stm_forgot_password_send input[type=text]' ).trigger( 'focus' );
} else {
$( '.stm-login-form .stm_forgot_password_send' ).slideToggle();
$( '.stm-login-form .stm_forgot_password_send input[type=text]' ).trigger( 'focus' );
}
$( this ).toggleClass( 'active' );
}
);
$( '.stm-forgot-password-back' ).on(
'click',
function (e) {
e.preventDefault();
$( '.stm-login-form-unregistered form, .stm-login-form-mobile-unregistered form' ).slideToggle();
}
);
$( ".stm-login-form-mobile-unregistered form,.stm-login-form form:not(.stm_password_recovery), .stm-login-form-unregistered form" ).on(
'submit',
function (e) {
e.preventDefault();
if ( ! $( this ).hasClass( 'stm_forgot_password_send' )) {
$.ajax(
{
type: "POST",
url: ajaxurl,
dataType: 'json',
context: this,
data: $( this ).serialize() + '&action=stm_custom_login',
beforeSend: function () {
$( this ).find( 'input' ).removeClass( 'form-error' );
$( this ).find( '.stm-listing-loader' ).addClass( 'visible' );
$( '.stm-validation-message' ).empty();
if ($( this ).parent( '.lOffer-account-unit' ).length > 0) {
$( '.stm-login-form-unregistered' ).addClass( 'working' );
}
},
success: function (data) {
if ($( this ).parent( '.lOffer-account-unit' ).length > 0) {
$( '.stm-login-form-unregistered' ).addClass( 'working' );
}
if (data.user_html) {
$('.add-car-btns-wrap').remove();
var $user_html = $( data.user_html ).appendTo( '#stm_user_info' );
$( '.stm-not-disabled, .stm-not-enabled' ).slideUp(
'fast',
function () {
$( '#stm_user_info' ).slideDown( 'fast' );
}
);
$( "html, body" ).animate( {scrollTop: $( '.stm-form-checking-user' ).offset().top}, "slow" );
$( '.stm-add-a-car-login-overlay,.stm-add-a-car-login' ).toggleClass( 'visiblity' );
$( '.stm-form-checking-user button[type="submit"]' ).removeClass( 'disabled' ).addClass( 'enabled' );
}
if ( data.restricted && data.restricted ) {
$( '.btn-add-edit' ).remove();
}
// insert plans select
if ( data.plans_select && $( '#user_plans_select_wrap' ).length > 0 ) {
$( '#user_plans_select_wrap' ).html( data.plans_select );
$( '#user_plans_select_wrap select' ).select2(
{
dropdownParent: $( 'body' ),
}
);
}
$( this ).find( '.stm-listing-loader' ).removeClass( 'visible' );
for (var err in data.errors) {
$( this ).find( 'input[name=' + err + ']' ).addClass( 'form-error' );
}
if (data.message) {
var message = $( '' + data.message + '
' ).hide();
$( this ).find( '.stm-validation-message' ).append( message );
message.slideDown( 'fast' );
}
if (typeof (data.redirect_url) !== 'undefined') {
window.location = data.redirect_url;
}
}
}
);
} else {
/*Send passs*/
$.ajax(
{
type: "POST",
url: ajaxurl,
dataType: 'json',
context: this,
data: $( this ).serialize() + '&action=stm_restore_password&security=' + stm_security_nonce,
beforeSend: function () {
$( this ).find( 'input' ).removeClass( 'form-error' );
$( this ).find( '.stm-listing-loader' ).addClass( 'visible' );
$( '.stm-validation-message' ).empty();
},
success: function (data) {
$( this ).find( '.stm-listing-loader' ).removeClass( 'visible' );
if (data.message) {
var message = $( '' + data.message + '
' ).hide();
$( this ).find( '.stm-validation-message' ).append( message );
message.slideDown( 'fast' );
}
for (var err in data.errors) {
$( this ).find( 'input[name=' + err + ']' ).addClass( 'form-error' );
}
}
}
);
}
}
);
$( '.user_validated_field' ).on(
'hover',
function () {
$( this ).removeClass( 'form-error' );
}
);
$( 'input[name="stm_accept_terms"]' ).on(
'click',
function () {
if ($( this ).is( ':checked' )) {
$( '.stm-login-register-form .stm-register-form form input[type="submit"]' ).removeAttr( 'disabled' );
} else {
$( '.stm-login-register-form .stm-register-form form input[type="submit"]' ).attr( 'disabled', '1' );
}
}
);
};
function loadMoreDealerCars() {
$( 'body' ).on(
'click',
'.stm-load-more-dealer-cars a',
function (e) {
e.preventDefault();
if ($( this ).closest( '.stm-load-more-dealer-cars' ).hasClass( 'not-clickable' )) {
return false;
}
var offset = $( this ).attr( 'data-offset' );
var user_id = $( this ).data( 'user' );
var popular = $( this ).data( 'popular' );
var profile_page = $(this).data('profile');
var view_type = $( '#stm_user_dealer_view_type' ).val();
$.ajax(
{
url: ajaxurl,
data: {
action: 'stm_ajax_dealer_load_cars',
offset: offset,
user_id: user_id,
popular: popular,
view_type: view_type,
profile_page: profile_page,
security: stm_security_nonce
},
method: 'POST',
dataType: 'json',
context: this,
beforeSend: function () {
$( this ).closest( '.stm-load-more-dealer-cars' ).addClass( 'not-clickable' );
},
success: function (data) {
$( this ).closest( '.stm-load-more-dealer-cars' ).removeClass( 'not-clickable' );
if (data.html) {
$( this ).closest( '.tab-pane' ).find( '.car-listing-row' ).append( data.html );
$(this).closest('.stm-user-public-listing').find('.car-listing-row').append(data.html);
}
if (data.new_offset) {
$( this ).attr( 'data-offset', data.new_offset );
}
if (data.button == 'hide') {
$( this ).closest( '.stm-load-more-dealer-cars' ).slideUp();
$( this ).closest( '.tab-pane' ).find( '.row-no-border-last' ).removeClass( 'row-no-border-last' );
}
$( 'img.lazy' ).lazyload(
{
effect: "fadeIn",
failure_limit: Math.max( 'img'.length - 1, 0 )
}
);
}
}
);
}
)
}
function sortByListingType() {
$( 'body' ).on(
'change',
'.select-listing-type select',
function () {
const $select = $( this );
const listingType = $select.val();
const viewType = $( '#stm_dealer_view_type' ).val();
const listingsView = $( '#stm-dealer-view-type' ).val();
const userId = $select.data( 'user' );
const popular = listingsView === 'popular' ? 'yes' : 'no';
const userPublic = $select.data( 'user-public' );
const userPrivate = $select.data( 'user-private' );
const userFavourite = $select.data( 'user-favourite' );
$.ajax(
{
url: ajaxurl,
data: {
action: 'stm_ajax_dealer_load_listings_by_type',
listing_type: listingType,
user_id: userId,
popular: popular,
view_type: viewType,
user_public: userPublic,
user_private: userPrivate,
user_favourite: userFavourite,
security: stm_security_nonce
},
method: 'POST',
dataType: 'json',
beforeSend: function () {
$( '.select-listing-type select' ).prop( "disabled", true );
},
success: function (data) {
$( '.select-listing-type select' ).prop( "disabled", false );
if (data) {
const $target = userPublic || userPrivate ? $( '.archive-listing-page' ) :
userFavourite ? $( '.archive-listing-page .car-listing-row' ) :
$( '#' + listingsView ).find( '.car-listing-row' );
$target.html( data.html );
}
const $loadMoreButton = $( '#' + listingsView ).find( '.stm-load-more-dealer-cars' );
if (data.button === 'hide') {
$loadMoreButton.slideUp();
$( '#' + listingsView ).find( '.row-no-border-last' ).removeClass( 'row-no-border-last' );
} else if (data.button === 'show') {
$loadMoreButton.find( 'a' ).attr( 'data-offset', 6 );
$loadMoreButton.slideDown();
$( '#' + listingsView ).find( '.row-no-border-last' ).addClass( 'row-no-border-last' );
}
$( 'img.lazy' ).lazyload(
{
effect: "fadeIn",
failure_limit: Math.max( $( 'img' ).length - 1, 0 )
}
);
}
}
);
}
);
}
function loadMoreDealerReviews() {
$( 'body' ).on(
'click',
'.stm-load-more-dealer-reviews a',
function (e) {
e.preventDefault();
if ($( this ).closest( '.stm-load-more-dealer-reviews' ).hasClass( 'not-clickable' )) {
return false;
}
var offset = $( this ).attr( 'data-offset' );
var user_id = $( this ).data( 'user' );
$.ajax(
{
url: ajaxurl,
data: {
action: 'stm_ajax_dealer_load_reviews',
offset: offset,
user_id: user_id,
security: stm_security_nonce
},
method: 'POST',
dataType: 'json',
context: this,
beforeSend: function () {
$( this ).closest( '.stm-load-more-dealer-reviews' ).addClass( 'not-clickable' );
},
success: function (data) {
$( this ).closest( '.stm-load-more-dealer-reviews' ).removeClass( 'not-clickable' );
if (data.html) {
$( this ).closest( '.tab-pane' ).find( '#stm-dealer-reviews-units' ).append( data.html );
}
if (data.new_offset) {
$( this ).attr( 'data-offset', data.new_offset );
}
if (data.button == 'hide') {
$( this ).closest( '.stm-load-more-dealer-reviews' ).slideUp();
}
}
}
);
}
)
}
$( '#stm_submit_review .button' ).on(
'click',
function (e) {
e.preventDefault();
if ( ! $( this ).hasClass( 'disabled' )) {
$.ajax(
{
url: ajaxurl,
dataType: 'json',
context: this,
data: $( this ).closest( 'form' ).serialize() + '&action=stm_submit_review&security=' + stm_security_nonce,
beforeSend: function () {
$( this ).closest( 'form' ).find( '.stm-icon-load1' ).addClass( 'activated' );
$( '#write-review-message ' ).slideUp();
},
success: function (data) {
$( this ).closest( 'form' ).find( '.stm-icon-load1' ).removeClass( 'activated' );
if (data.message) {
$( '#write-review-message ' ).text( data.message ).slideDown();
}
if (data.updated) {
if (data.message) {
setTimeout(function () {
window.location.href = data.updated;
location.reload();
}, 1500);
} else {
window.location.href = data.updated;
location.reload();
}
}
}
}
);
}
}
)
$( '.stm-comment-dealer-wrapper .stm-bottom .stm-report-review a' ).on(
'click',
function (e) {
e.preventDefault();
if ( ! $( this ).hasClass( 'reported' )) {
var stmID = $( this ).data( 'id' );
$.ajax(
{
type: "POST",
url: ajaxurl,
dataType: 'json',
context: this,
data: {
'id': stmID,
'action': 'stm_report_review',
'security': stm_security_nonce
},
beforeSend: function () {
$( this ).addClass( 'reported' );
},
success: function (data) {
if (data.message) {
$( this ).text( data.message );
}
}
}
);
}
}
);
$( '.dealer-search-title select' ).on(
'change',
function () {
$( 'input[name="stm_sort_by"]' ).val( $( this ).val() );
$( "#stm_all_listing_tab" ).find( "form" ).trigger( 'submit' );
}
);
$( '#stm_all_listing_tab_without_tabs .reset-filter' ).on(
'click',
function (e) {
e.preventDefault();
$( this )
.closest( 'form' )
.find( 'select' )
.val( null )
.trigger( 'change' );
$( this )
.closest( 'form' )
.find( 'input' )
.val( '' );
return false;
}
);
$( '.stm-load-more-dealers' ).on(
'click',
function (e) {
e.preventDefault();
if ($( this ).hasClass( 'not-clickable' )) {
return false;
}
var offset = $( this ).attr( 'data-offset' );
$.ajax(
{
//url: ajaxurl,
url: stm_motors_current_ajax_url,
dataType: 'json',
context: this,
data: $( '.stm_dynamic_listing_dealer_filter form' ).serialize() + '&offset=' + offset + '&ajax_action=stm_load_dealers_list&security=' + stm_security_nonce,
beforeSend: function () {
$( this ).addClass( 'not-clickable' );
},
success: function (data) {
$( this ).removeClass( 'not-clickable' );
if (data.user_html) {
$( '.dealer-search-results table tbody' ).append( data.user_html );
}
if (data.new_offset) {
$( '.stm-load-more-dealers' ).attr( 'data-offset', data.new_offset );
}
if (data.remove && data.remove === 'hide') {
$( this ).remove();
}
}
}
);
}
);
$( 'body' ).on(
"click",
'.stm-show-number',
function () {
var parent = $( this ).parent();
var phone_owner_id = $( this ).attr( "data-id" );
var listing_id = $( this ).attr( "data-listing-id" );
if (typeof listing_id === 'undefined' || listing_id === false) {
listing_id = '0';
}
parent.find( ".stm-show-number" ).text( '' ).addClass( 'load_number' );
$.ajax(
{
url: ajaxurl,
type: "GET",
dataType: 'json',
context: this,
data: 'phone_owner_id=' + phone_owner_id + '&listing_id=' + listing_id + '&action=stm_ajax_get_seller_phone&security=' + stm_security_nonce,
success: function (data) {
parent.find( ".stm-show-number" ).hide();
parent.find( ".phone" ).html( '' + data + '' );
}
}
);
}
);
$( '.stm-btn-plan-trial, .stm-btn-plan-pause, .stm-btn-plan-cancel' ).on(
'click',
function() {
var subsId = $( this ).data( 'subsid' );
var userId = $( this ).data( 'userid' );
var status = $( this ).data( 'status' );
var msgblock = $( this ).data( 'msgblock' );
var btn = $( this );
btn.addClass( 'btn-load' );
$.ajax(
{
url: ajaxurl,
type: "POST",
dataType: 'json',
context: this,
data: 'subs_id=' + subsId + '&user_id=' + userId + '&subs_status=' + status + '&action=stm_ajax_subscriptio_change_status&security=' + stm_security_nonce,
success: function (data) {
btn.removeClass( 'btn-load' );
if (data.status == 'success') {
location.reload();
} else {
$( '.' + msgblock ).text( data.status );
}
}
}
);
}
);
})( jQuery );
function stm_loadMoreCars(that, category, taxonomy, offset, per_page, random_int = null ) {
var $ = jQuery;
$.ajax(
{
url: ajaxurl,
data: {
action: 'stm_ajax_load_more_cars',
category: category,
taxonomy: taxonomy,
offset: offset,
per_page: per_page,
security: stm_security_nonce,
random_int: random_int,
},
method: 'POST',
dataType: 'json',
beforeSend: function () {
$( that ).addClass( 'not-visible' );
$( that ).closest( '.dp-in' ).find( '.preloader' ).fadeIn( 600 );
},
success: function (data) {
$( that ).closest( '.dp-in' ).find( '.preloader' ).hide();
if (random_int != null) {
const appendTo = data['appendTo'] + '-' + random_int;
if (data['content'] && data['appendTo']) {
$( appendTo + ' .car-listing-row' ).append( data['content'] );
}
}
if (data['content'] && data['appendTo']) {
$( data['appendTo'] + ' .car-listing-row' ).append( data['content'] );
}
if (data['button']) {
$( that ).attr( 'onclick', data['button'] ).removeClass( 'not-visible' );
} else {
$( data['appendTo'] ).find( '.car-listing-actions' ).addClass( 'all-done' );
that.parent().text( '' );
}
}
}
);
}
function stm_load_cars_with_review(upd) {
var update = (upd) ? upd : false;
var $ = jQuery;
var $_form = $( '#listing-with-review' ).closest( 'form' );
var stmUrl = $_form.attr( 'action' );
$.ajax(
{
url: stmUrl,
dataType: 'json',
context: this,
data: $_form.serialize() + '&ajax_action=listings-binding',
beforeSend: function () {
if (typeof filterApp != 'undefined') {
filterApp.loadListings = true;
}
},
success: function (data) {
if (typeof data.offset != 'undefined') {
$( 'input[name="offset"]' ).val( data.offset );
$( '.load-more-btn-wrap' ).show();
} else {
$( 'input[name="offset"]' ).val( 0 );
$( '.load-more-btn-wrap' ).hide();
}
if (typeof data.posts != 'undefined') {
if ( ! update) {
for (var q = 0; q < data.posts.length; q++) {
filterApp.pushNewData( data.posts[q] );
}
} else {
filterApp.posts = data.posts;
setTimeout(
function () {
filterApp.loadListings = false;
},
300
);
}
}
}
}
);
return false;
}