PageSourceSearch

https://cdn.nationaldirectory.com.au/templates/searchandgo/assets/js/listings.js

js nationaldirectory.com.au collected 2026-10-01 12:36:43 UTC 51,077 bytes, 1,537 lines download raw bytes

1(function ($) {
2    'use strict';
3    var listings = {};
4    eltd.modules.listings = listings;
5
6    listings.eltdOnDocumentReady = eltdOnDocumentReady;
7    listings.eltdOnWindowLoad = eltdOnWindowLoad;
8    listings.eltdOnWindowResize = eltdOnWindowResize;
9    listings.eltdOnWindowScroll = eltdOnWindowScroll;
10    listings.eltdMediaUpload = eltdMediaUpload;
11    listings.eltdRemoveMedia = eltdRemoveMedia;
12    listings.eltdUserRegister = eltdUserRegister;
13    listings.eltdInitUpdateProfile = eltdInitUpdateProfile;
14    listings.eltdAddListing = eltdAddListing;
15    listings.eltdEditListing = eltdEditListing;
16    listings.eltdAddToWhislist = eltdAddToWhislist;
17    listings.eltdInitAddressField = eltdInitAddressField;
18    listings.eltdListingFieldsHtml = eltdListingFieldsHtml;
19    listings.eltdListingPackageHtml = eltdListingPackageHtml;
20    listings.eltdSaveCheckBoxesValueFront = eltdSaveCheckBoxesValueFront;
21    listings.eltdInitCommentRating = eltdInitCommentRating;
22    listings.eltdListingAdvancedSearch = eltdListingAdvancedSearch;
23    listings.eltdListingAdvancedSearchFields = eltdListingAdvancedSearchFields;
24    listings.eltdListingSelect2Fields = eltdListingSelect2Fields;
25    listings.eltdDeleteMyListing = eltdDeleteMyListing;
26    listings.eltdInitListingEnquiryForm = eltdInitListingEnquiryForm;
27    listings.eltdListingArchiveTypeChange = eltdListingArchiveTypeChange;
28    listings.eltdListingArchiveLocationChange = eltdListingArchiveLocationChange;
29    listings.eltdListingArchiveSortChange = eltdListingArchiveSortChange;
30    listings.eltdListingArchiveKeyWordSearch = eltdListingArchiveKeyWordSearch;
31    listings.eltdInitListingGallery = eltdInitListingGallery;
32    listings.eltdInitListingCheckboxesStyle = eltdInitListingCheckboxesStyle;
33	listings.eltdListingArchiveLoadMore = eltdListingArchiveLoadMore;
34	listings.eltdInitSocialProfilesInput = eltdInitSocialProfilesInput;
35	listings.eltdBindTitles = eltdBindTitles;
36
37    $(document).ready(eltdOnDocumentReady);
38    $(window).load(eltdOnWindowLoad);
39    $(window).resize(eltdOnWindowResize);
40    $(window).scroll(eltdOnWindowScroll);
41
42    /*
43     All functions to be called on $(document).ready() should be in this function
44     */
45    function eltdOnDocumentReady() {
46        eltdMediaUpload();
47		eltdInitUpdateProfile();
48		eltdRemoveMedia();
49		eltdUserRegister();
50		eltdAddListing();
51		eltdEditListing();
52		eltdAddToWhislist();
53		eltdInitAddressField();
54        eltdListingFieldsHtml();
55        eltdListingPackageHtml();
56		eltdSaveCheckBoxesValueFront();
57		eltdInitCommentRating();
58        eltdListingAdvancedSearchFields();
59        eltdListingAdvancedSearch();
60        eltdListingSelect2Fields();
61		eltdDeleteMyListing();
62		eltdInitListingEnquiryForm();
63        eltdListingArchiveTypeChange();
64        eltdListingArchiveLocationChange();
65		eltdListingArchiveSortChange();
66        eltdListingArchiveKeyWordSearch();
67        eltdInitListingGallery();
68		eltdListingArchiveLoadMore();
69        eltdBindTitles();
70    }
71
72    /*
73     All functions to be called on $(window).load() should be in this function
74     */
75    function eltdOnWindowLoad() {
76    }
77
78    /*
79     All functions to be called on $(window).resize() should be in this function
80     */
81    function eltdOnWindowResize() {
82
83    }
84
85    /*
86     All functions to be called on $(window).scroll() should be in this function
87     */
88    function eltdOnWindowScroll() {
89
90    }
91
92    function eltdListingFieldsHtml(){
93
94        var dashboardHolder = $('.eltd-listing-dashboard-holder-outer');
95        if ( ! dashboardHolder.length ) {
96            return;
97        }
98        
99        var listingTypeSelectField = $('.eltd-listing-type-select-field');
100        var selectedListingType = $('.eltd-listing-type-select-field :selected');
101        var selectedListingTypeID = $('.eltd-listing-type-select-field :selected').val();
102		var thisListingHolder = $('.eltd-new-listing-type-fields');
103        
104        listingTypeSelectField.on('change', function(e) {
105
106            //get choosen type id
107            var choosenTypeID = $(this).val();
108            thisListingHolder.html('');
109            
110            //set type id value in hidden field(this is for saving in database)
111            $('#eltd-listing-type-value').val(choosenTypeID);
112            
113            e.preventDefault();
114            
115            var data = {
116                action: 'eltd_listing_get_listing_fields',
117                listingTypeId: choosenTypeID
118            };
119            $.ajax({
120                type: "POST",
121                url: ElatedAjaxUrl,
122                data: data,
123                success: function (response) {
124                    if (response === 'error') {
125                        //error handler
126                    }
127                    //loader if any should be hidden here
128                    thisListingHolder.append(response);
129                    //$('.eltd-upload-button').off('click');
130                    eltdMediaUpload();
131                    eltdInitAddressField();
132                    eltdInitListingCheckboxesStyle();
133                    eltdInitSocialProfilesInput();
134                    eltdSaveCheckBoxesValueFront();
135                    eltdListingSelect2Fields();
136                    eltdRemoveMedia();
137                }
138            });
139
140            return false;
141
142        });
143        
144        if(selectedListingTypeID !== ''){
145            
146            var listingID;
147            
148            if (typeof selectedListingType.data('listing-id') !== 'undefined' && selectedListingType.data('listing-id') !== false) {                    
149                listingID = selectedListingType.data('listing-id');
150            }
151            
152            var data = {
153                action: 'eltd_listing_get_listing_fields',
154                listingTypeId: selectedListingTypeID,
155                listingItemId: listingID
156            };
157            $.ajax({
158                type: "POST",
159                url: ElatedAjaxUrl,
160                data: data,
161                success: function (response) {
162                    if (response === 'error') {
163                        //error handler
164                    }
165                    //loader if any should be hidden here
166                    thisListingHolder.append(response);
167                    //$('.eltd-upload-button').off('click');
168                    eltdMediaUpload();
169                    eltdInitAddressField();
170                    eltdInitListingCheckboxesStyle();
171                    eltdSaveCheckBoxesValueFront();
172                    eltdListingSelect2Fields();
173                    eltdInitSocialProfilesInput();
174                    eltdRemoveMedia();
175                }
176            });
177
178        }
179
180    }
181    
182    function eltdListingPackageHtml(){
183        
184        var packageSelect = $('.eltd-listing-select-package');
185        var packageHolder = $('.eltd-new-listing-package-fields');
186		var packageContainer = $('.eltd-new-listing-package-fields .eltd-listing-package-fields-wrapper');
187        var currentUserID = packageSelect.data('user-id');
188        var addNewListingButton = $('.eltd-listing-submit-listing');
189		var updateListingButton = $('.eltd-listing-update-listing');
190        
191        packageSelect.on('change', function(){
192        
193            var packageID = $(this).val();
194            var ajaxData = {
195                action: 'eltd_listing_check_package_status',
196                packageID : packageID,
197                userID: currentUserID
198            };
199            
200            $.ajax({
201                type: 'POST',
202                data: ajaxData,
203                url: ElatedAjaxUrl,
204                success: function (data) {
205                    var response = $.parseJSON(data);
206                    var responseHtml =  response.html;
207                    var addingEnabled = response.enabled_adding_new_item;
208                    var responseFlag = response.packageFlag;
209
210                    if ( ! addingEnabled ) {
211                        
212                        addNewListingButton.attr("disabled", true);
213						updateListingButton.attr("disabled", true);
214                        
215                        var response = {
216                            status: 'error',
217                            message: response.enabled_adding_item_messsage
218                        };
219
220                        eltd.modules.common.eltdAjaxResponseMessageHtml(response);
221                        
222                        
223                    }else{
224                        
225                        addNewListingButton.attr("disabled", false);
226						updateListingButton.attr("disabled", false);
227                        
228                        //clear ajax response holder        
229                        var ajaxResponseHolder = $('.eltd-listing-ajax-response-holder');
230                        ajaxResponseHolder.empty();
231                        
232                    }
233
234                    packageContainer.waitForImages(function(){    
235                        if(responseHtml !== ''){
236                            packageHolder.addClass('show');
237                        }else{
238                            packageHolder.removeClass('show');
239                        }
240                        packageContainer.html(responseHtml); // Append the new content                       
241                    });
242                }
243            });
244            
245        });
246        
247        
248    }    
249
250    function eltdMediaUpload() {
251        var uploadButton = $('.eltd-upload-button');
252        if (uploadButton.length) {
253            uploadButton.each(function () {
254                var thisBtn = $(this);
255                thisBtn.on('click', function (e) {
256					e.preventDefault();
257
258                    var multiple = (thisBtn.data('multiple')) ? true : false;
259                    var title = thisBtn.data('frame-title');
260                    var text = thisBtn.data('frame-button-text');
261                    if (multiple) {
262                        eltdRenderMultipleMediaUploader(thisBtn);
263                    } else {
264                        eltdRenderSingleMediaUploader(thisBtn);
265                    }
266                });
267            });
268        }
269    }
270
271	function eltdRemoveMedia(){
272        var removeButton = $('.eltd-remove-button');
273        if(removeButton.length){
274            removeButton.each(function(){
275                var self = $(this),
276                    actionButtonsHolder = self.parents('.eltd-action-buttons'),
277                    mediaHolder = actionButtonsHolder.siblings('.eltd-media-holder'),
278                    inputHolder = actionButtonsHolder.siblings('.eltd-media-uploader-input'),
279                    mediaHolderInput = (mediaHolder.html()).trim();
280                if ( mediaHolderInput == '' ) {
281                    self.hide();
282                    actionButtonsHolder.addClass('one-button');
283                }
284                self.on( 'click', function(e){
285                    e.preventDefault();
286                    mediaHolder.html('');
287                    inputHolder.val('');
288                    self.hide();
289                    actionButtonsHolder.addClass('one-button');
290                });
291            });
292        }
293    }
294
295    function eltdRenderSingleMediaUploader(button) {
296
297        var singleUpload;
298        var holder = button.parent();
299        var input = holder.siblings('.eltd-media-uploader-input');
300        var imagesHolder = holder.siblings('.eltd-media-holder');
301        var removeButton = button.siblings('.eltd-remove-button');
302
303        var settings = {
304            title: button.data('frame-title'),
305            button: {
306                text: button.data('frame-button-text')
307            }
308        };
309		if(singleUpload){
310			singleUpload.open();
311			return;
312		}
313
314        //create the media frame
315        singleUpload = wp.media.frames.fileFrame = wp.media(settings);
316
317		singleUpload.on( 'select', function() {
318            var attachment = singleUpload.state().get('selection').first().toJSON();
319            input.val(attachment.id);
320			if(input.hasClass('eltd-media-thumbnail')){
321				input.val(attachment.id);
322			} else {
323				input.val(attachment.url);
324			}
325            imagesHolder.html('');
326			if(attachment.sizes.medium != undefined) {
327				imagesHolder.append('<img src="' + attachment.sizes.medium.url + '" alt="' + attachment.name + '"/>');
328			} else {
329				imagesHolder.append('<img src="' + attachment.sizes.full.url + '" alt="' + attachment.name + '"/>');
330			}
331            holder.removeClass('one-button');
332            removeButton.show();
333        });
334		singleUpload.open();
335
336    }
337
338    function eltdRenderMultipleMediaUploader(button) {
339
340		var multipleUpload;
341        var holder = button.parent();
342        var input = holder.next('.eltd-media-uploader-input');
343		var imagesHolder = holder.prev('.eltd-media-holder');
344        var removeButton = button.next('.eltd-remove-button');
345
346        if (multipleUpload ) {
347			multipleUpload.open();
348            return;
349        }
350        var selection = [];
351
352        if(input.val()){
353            var shortcode = wp.shortcode.next('gallery', '[gallery ids="' + input.val() + '"]'),
354                defaultPostId = wp.media.gallery.defaults.id,
355                attachments;
356
357            // Bail if we didn't match the shortcode or all of the content.
358            if (!shortcode)
359                return;
360
361            // Ignore the rest of the match object.
362            shortcode = shortcode.shortcode;
363            if (_.isUndefined(shortcode.get('id')) && !_.isUndefined(defaultPostId))
364                shortcode.set('id', defaultPostId);
365
366            attachments = wp.media.gallery.attachments(shortcode);
367            selection = new wp.media.model.Selection(attachments.models, {
368                props: attachments.props.toJSON(),
369                multiple: true
370            });
371
372            selection.gallery = attachments.gallery;
373        }
374
375        var settings = {
376            frame: "post",
377            state: "gallery-edit",
378            multiple: true,
379            selection:selection
380        };
381
382        //create the media frame
383        multipleUpload = wp.media.frames.multipleUpload = wp.media(settings);
384
385        multipleUpload.open();
386
387        multipleUpload.on("update", function(){
388
389            var lib = multipleUpload.states.get('gallery-edit').get('library');
390
391            // Need to get all the attachment ids, names, urls for gallery
392            var ids = lib.pluck('id');
393            var url = lib.pluck('url');
394            var names = lib.pluck('name');
395            var numOfImages = ids.length;
396
397            input.val(ids);
398			imagesHolder.html('');
399
400            for(var i=0;i<numOfImages;i++){
401                imagesHolder.append('<img src="'+lib.models[i].changed.sizes.medium.url+'" alt="'+names[i]+'"/>');
402            }
403            holder.removeClass('one-button');
404            removeButton.show();
405        });
406
407    }
408
409	/**
410	 * Initializes profile update
411	 */
412	function eltdInitUpdateProfile(){
413
414		$('#eltd-profile-form').on('submit',function(e) {
415			e.preventDefault();
416
417			var ajaxData = {
418				action: 'eltd_listing_update_user_profile',
419				nonce : eltdUpdateProfile.nonce,
420				post : $(this).serialize()
421			};
422
423			$.ajax({
424				type: 'POST',
425				data: ajaxData,
426				url: ElatedAjaxUrl,
427				success: function (data) {
428                    var response;
429                    response = JSON.parse(data);  
430                    
431                    // append ajax response html
432                    eltd.modules.common.eltdAjaxResponseMessageHtml(response);
433				}
434			});
435
436			return false;
437
438		});
439
440	}
441
442	/**
443	 * Initializes user register
444	 */
445	function eltdUserRegister(){
446
447		$('.eltd-register-form').on('submit',function(e) {
448			var nonceField = $(this).find('.eltd-register-button-holder input[type="hidden"]').first();
449			var nonce = nonceField.val();
450
451			e.preventDefault();
452			var ajaxData = {
453				action: 'search_and_go_elated_user_register',
454				security: nonce,
455				post : $(this).serialize()
456			};
457
458			$.ajax({
459				type: 'POST',
460				data: ajaxData,
461				url: ElatedAjaxUrl,
462				success: function (data) {
463                    var response;
464                    response = JSON.parse(data);
465                    // append ajax response html
466                    eltd.modules.common.eltdAjaxResponseMessageHtml(response);
467				}
468			});
469
470			return false;
471
472		});
473
474	}
475
476	function eltdAddListing(){
477        var multiSelect = $('.eltd-multiselect-field');
478        var select2Fields = $('.eltd-listing-select-field');
479		if(multiSelect.length){
480            multiSelect.select2({
481                templateSelection: function (data) {
482                    return $.trim(data.text);
483                }
484            });
485        }
486        if(select2Fields.length){
487            select2Fields.select2();
488        }
489        
490        
491
492        var tagSelect = $('.eltd-listings-tags');
493        if(tagSelect.length){
494            tagSelect.select2({
495                tags:true
496            });
497        }
498        var ajaxResponseHolder = $('.eltd-listing-ajax-response-holder');
499        
500        $('.eltd-new-listing-form').on('submit',function(e) {
501            
502            var form = $(this);
503			e.preventDefault();
504                        
505            //clear ajax response holder
506            ajaxResponseHolder.empty();
507
508			var post_array = form.serialize();
509            var results = form.serializeArray(); //this is used for paypal data transfer
510            
511			if(tinyMCE.activeEditor != null) {
512				if (tinyMCE.activeEditor.id === 'listing_content') {
513					var newParams = {post_content: tinyMCE.activeEditor.getContent()};
514					post_array = post_array + '&' + $.param(newParams);
515				}
516			} else {
517                var content = $('#listing_content').val();
518                var newParams = {post_content: content};
519                post_array = post_array + '&' + $.param(newParams);
520            }
521			var ajaxData = {
522				action: 'eltd_listing_add_listing',
523				security: form.find('#eltd-add-listing-security').val(),
524				post : post_array
525			};
526            
527			$.ajax({
528				type: 'POST',
529				data: ajaxData,
530				url: ElatedAjaxUrl,
531				success: function (data) {                  
532                    var response = $.parseJSON(data);
533                    
534                    // append ajax response html
535                    eltd.modules.common.eltdAjaxResponseMessageHtml(response);
536
537                    if ( response.redirect !== '' ) {
538                        setTimeout(function(){
539                            window.location.href = response.redirect;
540                        }, 500);
541                    }
542
543                    // trigger paypal request 
544                    form.after(response.data);                    
545
546                    setTimeout(function(){
547                        eltdListingSubmitPayPalForm();
548                    },800);
549
550				}
551			});
552
553			return false;
554
555		});
556
557	}
558
559	function eltdEditListing(){
560		var multiSelect = $('.eltd-multiselect-field');
561		if(multiSelect.length){
562			multiSelect.select2({
563				templateSelection: function (data) {
564					return $.trim(data.text);
565				}
566			});
567		}
568
569		var tagSelect = $('.eltd-listings-tags');
570		if(tagSelect.length){
571			tagSelect.select2({
572				tags:true
573			});
574		}
575
576		$('.eltd-edit-listing-form').on('submit',function(e) {
577			var form = $(this);
578			e.preventDefault();
579
580			var post_array = form.serialize();
581			if(tinyMCE.activeEditor != null) {
582				if (tinyMCE.activeEditor.id === 'listing_content') {
583					var newParams = {post_content: tinyMCE.activeEditor.getContent()};
584					post_array = post_array + '&' + $.param(newParams);
585				}
586			}
587			var ajaxData = {
588				action: 'eltd_listing_edit_listing',
589				security: form.find('#eltd-edit-listing-security').val(),
590				post : post_array
591			};
592
593			$.ajax({
594				type: 'POST',
595				data: ajaxData,
596				url: ElatedAjaxUrl,
597				success: function (data) {
598                    var response = $.parseJSON(data);
599                    // append ajax response html
600                    eltd.modules.common.eltdAjaxResponseMessageHtml(response);
601
602                    if ( response.redirect !== '' ) {
603                        setTimeout(function(){
604                            window.location.href = response.redirect;
605                        }, 500);
606                    }
607
608                    // trigger paypal request 
609                    form.after(response.data);                    
610
611                    setTimeout(function(){
612                        eltdListingSubmitPayPalForm();
613                    },800);
614                    
615				}
616			});
617
618			return false;
619
620		});
621
622	}
623
624	function eltdResponseSuccess(data) {
625		var response;
626
627		response = JSON.parse(data);
628		if(response.status === 'success') {
629
630			alert(response.message);
631			if(response.redirect != '') {
632				window.location.href = response.redirect;
633			}
634		} else {
635
636			alert(response.message);
637		}
638
639	}
640
641	function eltdAddToWhislist(){
642
643		$('.eltd-listing-whislist').on('click',function(e) {
644            e.preventDefault();
645			var listing = $(this),
646                listingID;
647
648			if(typeof listing.data('listing-id') !== 'undefined') {
649				listingID = listing.data('listing-id');
650			}
651
652			eltdWhishlistAdding(listing, listingID);
653
654		});
655
656	}
657    
658    function eltdWhishlistAdding(listing, listingID){
659        
660        var ajaxData = {
661				action: 'eltd_listing_add_listing_to_whislist',
662				listingID : listingID
663			};
664
665			$.ajax({
666				type: 'POST',
667				data: ajaxData,
668				url: ElatedAjaxUrl,
669				dataType: 'json',
670				success: function (data) {
671                    listing.attr('title',data.message);
672                    listing.find('.eltd-wishlist-title').html(data.message);
673                    if ( listing.hasClass('eltd-added-to-wishlist') ) {
674                        listing.removeClass('eltd-added-to-wishlist');
675                    } else {
676                        listing.addClass('eltd-added-to-wishlist');
677                    }
678				}
679			});
680
681		return false;
682        
683    }
684
685	function eltdInitAddressField() {
686		var addressInput = document.getElementById('eltd-input-address'),
687			map = document.getElementById('map'),
688			latitudeInput = $('.eltd-latitude-holder input'),
689			longitudeInput = $('.eltd-longitude-holder input');
690
691		if ( addressInput ) {
692			var lat = latitudeInput.val() !== '' ? parseFloat(latitudeInput.val()) : -33.8688,
693				lng = longitudeInput.val() !== '' ? parseFloat(longitudeInput.val()) : 151.2195;
694
695			//Init map
696			var map = new google.maps.Map(map, {
697				center: {lat: lat, lng: lng},
698				zoom: 12
699			});
700
701            //Set map style
702            map.setOptions({
703                styles: eltdMapsVars.global.mapStyle
704            });
705            
706			//Init marker
707			var marker = new google.maps.Marker({
708				map : map,
709				draggable: true,
710				position: {
711					lat: lat, lng: lng
712				}
713			});
714			//Init Places search
715			var autocomplete = new google.maps.places.Autocomplete(addressInput);
716
717			autocomplete.addListener('place_changed', function(){
718				var place = autocomplete.getPlace(),
719					location = place.geometry.location;
720
721				latitudeInput.val(location.lat());
722				longitudeInput.val(location.lng());
723				map.setCenter(location);
724				marker.setPosition(location);
725			});
726
727			marker.addListener('dragend', function(){
728				var position = this.getPosition();
729				latitudeInput.val(position.lat());
730				longitudeInput.val(position.lng());
731			});
732		}
733	}
734
735	function eltdSaveCheckBoxesValueFront(){
736		var checkboxes = $('.eltd-checkbox-field');
737
738		checkboxes.change(function(){
739			eltdDisableHiddenFront($(this));
740		});
741		checkboxes.each(function(){
742			eltdDisableHiddenFront($(this));
743		});
744		function eltdDisableHiddenFront(thisBox){
745			if(thisBox.is(':checked')){
746				thisBox.siblings('.eltd-checkbox-field-hidden').prop('disabled', true);
747			}else{
748				thisBox.siblings('.eltd-checkbox-field-hidden').prop('disabled', false);
749			}
750		}
751	}
752
753	function eltdInitCommentRating() {
754		var ratingInput = $('#eltd-rating'),
755			ratingValue = ratingInput.val(),
756			stars = $('.eltd-star-rating');
757
758		var addActive = function() {
759			for ( var i = 0; i < stars.length; i++ ) {
760				var star = stars[i];
761				if ( i < ratingValue ) {
762					$(star).addClass('active');
763				} else {
764					$(star).removeClass('active');
765				}
766			}
767		};
768
769		addActive();
770
771		stars.click(function(){
772			ratingInput.val( $(this).data('value')).trigger('change');
773		});
774
775		ratingInput.change(function(){
776			ratingValue = ratingInput.val();
777			addActive();
778		});
779
780	}
781
782    function eltdListingAdvancedSearchFields(){
783        
784        var typeSelect = $('.eltd-listing-adv-search-holder .eltd-listing-choose-type');
785        var fieldContainer = $('.eltd-listing-adv-search-holder .eltd-listing-advanced-fields');
786        var preloader = $('.eltd-listing-adv-search-holder .eltd-listing-adv-search-preloader');
787        var submitButton = $('.eltd-listing-adv-search-holder .eltd-listing-advanced-submit');
788        
789        typeSelect.on('change', function(){
790            
791            submitButton.removeClass('show');
792            preloader.show();
793            fieldContainer.empty();
794            
795            var typeID = $(this).val();
796            
797            var ajaxData = {
798                action: 'eltd_listing_advanced_search',
799                typeID : typeID
800            };            
801            
802            $.ajax({
803                type: 'POST',
804                data: ajaxData,
805                url: ElatedAjaxUrl,
806                success: function (data) {
807                    var response = $.parseJSON(data);
808                    var responseHtml =  response.html;
809                    
810                    fieldContainer.waitForImages(function(){    
811                        fieldContainer.html(responseHtml); // Append the new content                        
812                        eltdListingSelect2Fields();
813                    });
814                    
815                    if(responseHtml !== ''){
816                        submitButton.addClass('show');                        
817                    }else{
818                        submitButton.removeClass('show');
819                    }
820                    
821                    
822                }
823            });
824            
825            setTimeout(function(){
826                eltdGetAdvancedSearchAjaxResponse(typeID);
827                preloader.hide();
828            },300);
829            
830            
831        });
832        
833    }
834
835    function eltdListingAdvancedSearch(){
836        
837        var submitButton = $('.eltd-listing-adv-search-holder .eltd-listing-advanced-submit');
838        var typeSelect = $('.eltd-listing-adv-search-holder .eltd-listing-choose-type');
839        var preloader = $('.eltd-listing-adv-search-holder .eltd-listing-adv-search-preloader');
840        
841        submitButton.on('click', function(){
842            
843            preloader.show();
844            var typeID = $(this).val();            
845            setTimeout(function(){                
846                eltdGetAdvancedSearchAjaxResponse(typeID);
847                preloader.hide();
848            }, 300);
849           
850            
851        });
852        
853        
854    }
855    
856    function eltdGetAdvancedSearchAjaxResponse( listingTypeID ){
857        
858        var advFieldHolder = $('.eltd-listing-adv-search-holder .eltd-listing-advanced-fields');
859        var container = $('.eltd-listing-adv-search-holder .eltd-listing-articles-holder');
860        
861        
862        container.empty();
863        var searchParams = {};
864        
865        var typeID  = listingTypeID;
866        
867        searchParams['eltd_listing_item_type'] = typeID;
868
869        var fields = advFieldHolder.find('.eltd-advanced-search-item');
870        
871        if(fields.length){
872            
873            fields.each(function(){
874
875                var currentField = $(this).find('.eltd-advanced-search-input .eltd-advanced-input-field');
876                var currentFieldId = currentField.attr('id');
877                var currentFieldVal = currentField.val();
878                searchParams[currentFieldId] = currentFieldVal;
879
880            });            
881            
882            
883        }
884        
885        var ajaxData = {
886            action: 'eltd_listing_advanced_search_query',
887            typeID: typeID,
888            searchParams : searchParams
889        };
890
891        $.ajax({
892            type: 'POST',
893            data: ajaxData,
894            url: ElatedAjaxUrl,
895            success: function (data) {
896                var response = $.parseJSON(data);
897                var responseHtml =  response.html;
898
899                container.waitForImages(function(){    
900                    container.html(responseHtml); // Append the new content
901                    eltdListingSelect2Fields();
902                });
903            }
904        });
905        
906    }
907    
908    function eltdListingSelect2Fields(){
909        
910        var typeSelect = $('.eltd-listing-adv-search-holder .eltd-listing-choose-type').select2();
911        var advancedSelect = $('.eltd-listing-adv-search-holder .listing-type-advanced-search').select2();
912        
913        var holder = $('.eltd-advanced-search-holder');
914        var fieldsHolder = holder.find('.eltd-listing-archive-adv-search-holder');
915        
916        var archiveTypeSelect = fieldsHolder.find('.eltd-listing-archive-type').select2({
917			//minimumResultsForSearch: Infinity,
918            ajax: {
919                url: '/api_categoryautocomplete',
920                dataType: 'json',
921                delay: 250,
922                processResults: function (data) {
923                    return {
924                        results: data
925                    };
926                },
927                cache: true
928            }
929		});
930        var archiveCategorySelect = fieldsHolder.find('.eltd-listing-archive-category').select2({
931			minimumResultsForSearch: Infinity,
932			placeholder: ''
933		});
934        var archiveLocationSelect  = fieldsHolder.find('.eltd-listing-archive-location').select2({
935			//minimumResultsForSearch: Infinity,
936            ajax: {
937                url: '/api_cityautocomplete',
938                dataType: 'json',
939                delay: 250,
940                processResults: function (data) {
941                    return {
942                        results: data
943                    };
944                },
945                cache: true
946            }
947		});
948		var archiveSortSelect  = fieldsHolder.find('.eltd-listing-archive-sort').select2({
949			minimumResultsForSearch: Infinity,
950			placeholder: ''
951		});
952       
953        var dashboardSelectFields = $('.eltd-listing-dashboard-holder-outer .eltd-profile-input select');
954        if(dashboardSelectFields.length){
955
956            dashboardSelectFields.each(function(){
957
958               $(this).select2();
959
960            });
961            
962        }
963        var dashboardChooseType = $('.eltd-listing-dashboard-holder-outer .eltd-profile-input select.eltd-listing-type-select-field');
964        dashboardChooseType.select2({
965            minimumResultsForSearch: Infinity,
966            placeholder: ''
967        }); 
968        
969        var dashboardChoosePackage = $('.eltd-listing-dashboard-holder-outer .eltd-profile-input select.eltd-listing-select-package');
970        dashboardChoosePackage.select2({
971            minimumResultsForSearch: Infinity,
972            placeholder: ''
973        });
974    }    
975    
976    function eltdListingSubmitPayPalForm(){
977        
978        var payPalForm = $('#eltd-paypal-payment-form');
979        payPalForm.submit();
980        
981    }
982
983    function eltdDeleteMyListing() {
984        var delBtn = $('.eltd-delete-listing');
985        delBtn.click(function(e){
986            e.preventDefault();
987            var btn = $(this),
988                listingId = btn.data('listing-id'),
989                result = confirm('Are you sure you want to delete this listing item?');
990            if ( result ) {
991                var data = {
992                    action: 'eltd_listing_delete_listing',
993                    listingId: listingId
994                };
995                $.ajax({
996                    type: 'POST',
997                    data: data,
998                    url: ElatedAjaxUrl,
999                    success: function(data) {
1000                        btn.parents('.eltd-user-listing').fadeOut(300);
1001                    }
1002                });
1003            }
1004        });
1005    }
1006
1007	function eltdInitListingEnquiryForm() {
1008
1009		var enquiryForm = $('#eltd-listing-enquiry-form');
1010		enquiryForm.submit(function(e){
1011			e.preventDefault();
1012			var enquiryData = {
1013				name: enquiryForm.find('#enquiry-name').val(),
1014				email: enquiryForm.find('#enquiry-email').val(),
1015				phone: enquiryForm.find('#enquiry-phone').val(),
1016				message: enquiryForm.find('#enquiry-message').val(),
1017				itemId: enquiryForm.find('#enquiry-item-id').val(),
1018				nonce: enquiryForm.find('#eltd_nonce_listing_item_enquiry').val()
1019			};
1020
1021			var requestData = {
1022				action: 'search_and_go_elated_send_listing_item_enquiry',
1023				data: enquiryData
1024			};
1025
1026			
1027			$.ajax({
1028				type: 'POST',
1029				data: JSON.stringify(requestData),
1030				dataType: 'json',
1031				url: ElatedAjaxUrl,
1032				success: function( response ) {
1033					if ( response.success ) {
1034						enquiryForm.fadeOut(300);
1035						setTimeout(function(){
1036							enquiryForm.remove();
1037						}, 300);
1038			                        eltd.modules.common.eltdAjaxResponseMessageHtml({
1039							status: 'success',
1040							message: response.data
1041						});
1042					} else {
1043						eltd.modules.common.eltdAjaxResponseMessageHtml({
1044							status: 'error',
1045							message: response.data
1046						});
1047					}
1048				}
1049			});
1050
1051		});
1052
1053	}
1054    
1055    function eltdListingArchiveKeyWordSearch(){
1056        
1057        var holder = $('.eltd-advanced-search-holder');
1058		var emptyParam = '';
1059        var archiveKeywordFiels = holder.find('.eltd-listing-archive-keyword');
1060        var availableTags = eltdGlobalVars.vars.postTitles;
1061                
1062        archiveKeywordFiels.on('blur', function(){
1063            // search again
1064            var keywords = $(this).val();
1065            var location = $('.eltd-listing-archive-location').val();
1066            if (location == null) {
1067                location = 'all';
1068            }
1069            var category = $('.eltd-listing-archive-type').val();
1070            if (category == null) {
1071                category = 'all';
1072            }
1073            var url = "/search?keywords=" + encodeURI(keywords) + "&location=" + encodeURI(location) + "&category=" + encodeURI(category);
1074            // alert(url);
1075            window.location = url;
1076        });
1077
1078        archiveKeywordFiels.keypress(function (event) {
1079            if (event.which == 13) {
1080                // search again
1081                var keywords = $(this).val();
1082                var location = $('.eltd-listing-archive-location').val();
1083                if (location == null) {
1084                    location = 'all';
1085                }
1086                var category = $('.eltd-listing-archive-type').val();
1087                if (category == null) {
1088                    category = 'all';
1089                }
1090                var url = "/search?keywords=" + encodeURI(keywords) + "&location=" + encodeURI(location) + "&category=" + encodeURI(category);
1091                // alert(url);
1092                window.location = url;
1093            }
1094        });
1095    }
1096    
1097    function eltdListingArchiveTypeChange(){
1098       
1099        var holder = $('.eltd-advanced-search-holder');
1100        var typeSelect = holder.find('.eltd-listing-archive-type');
1101		var typeID;
1102        if (holder.length){
1103
1104			//this is when type id is selected in initial archive page load
1105			//amenities are loaded but ajax search call is not generated(second param is false)
1106			typeID = typeSelect.val();
1107			if(typeID !== '' && typeID !=='all'){
1108				eltdListingArchiveTypeAjaxResponse(typeID, false);
1109			}
1110
1111            typeSelect.on('change', function(){
1112                // search again
1113                var keywords = $('.eltd-listing-archive-keyword').val();
1114                var location = $('.eltd-listing-archive-location').val();
1115                if (location == null) {
1116                    location = 'all';
1117                }
1118                var category = $(this).val();
1119                if (category == null) {
1120                    category = 'all';
1121                }
1122                var url = "/search?keywords=" + encodeURI(keywords) + "&location=" + encodeURI(location) + "&category=" + encodeURI(category);
1123                // alert(url);
1124                window.location = url;
1125            });
1126            eltdInitListingCheckboxesStyle();
1127        }
1128       
1129   }
1130
1131	function eltdListingArchiveTypeAjaxResponse(typeID, ajaxCallFlag){
1132
1133		var holder = $('.eltd-advanced-search-holder');
1134		var amenitiesHolder = holder.find('.eltd-listing-archive-amenities-holder');
1135		var amenitiesTitle = holder.find('.eltd-listing-archive-amenities-title');
1136		var emptyParam = '';
1137
1138		holder.data('listing-next-page', 2);
1139
1140		var ajaxData = {
1141			action: 'search_and_go_elated_archive_adv_search_fields',
1142			typeID : typeID
1143		};
1144
1145		$.ajax({
1146			type: 'POST',
1147			data: ajaxData,
1148			url: ElatedAjaxUrl,
1149			success: function (data) {
1150				var response = $.parseJSON(data);
1151				var responseHtml =  response.html;
1152
1153				amenitiesHolder.waitForImages(function(){
1154					if (responseHtml !== '') {
1155						amenitiesTitle.fadeIn(300);
1156					} else {
1157						amenitiesTitle.fadeOut(100);
1158					}
1159					amenitiesHolder.empty();
1160					if ( responseHtml !== '' ) {
1161						amenitiesHolder.fadeIn(300);
1162					} else {
1163						amenitiesHolder.fadeOut(300);
1164					}
1165					amenitiesHolder.html(responseHtml); // Append the new content
1166
1167					// call ajax advanced search functionality
1168					if(ajaxCallFlag){
1169						eltdListingArchiveGetAjaxResponse(emptyParam);
1170					}
1171
1172					eltdListingSelect2Fields();
1173
1174					//call listener function for amenities
1175					eltdListingArchiveAmenitiesSearch();
1176
1177				});
1178
1179			}
1180		});
1181
1182	}
1183
1184    function eltdListingArchiveAmenitiesSearch(){
1185       
1186        var holder = $('.eltd-advanced-search-holder');
1187        var amenitiesHolder = holder.find('.eltd-listing-archive-amenities-holder');
1188        var fields = amenitiesHolder.find('.eltd-listing-archive-advanced-search-amenity');
1189        var emptyParam = '';
1190        if(fields.length){
1191           fields.each(function(){
1192               
1193                var currentField = $(this).find('.eltd-advanced-input-field');
1194                currentField.on('change', function(){
1195					holder.data('listing-next-page', 2);
1196
1197					//prevent filtering by amenities and tag/category at the same time
1198					holder.data('listing-tag','');
1199					holder.data('listing-category','');
1200
1201                    setTimeout(function(){
1202                        eltdListingArchiveGetAjaxResponse(emptyParam);
1203                    },300); 
1204                   
1205                });
1206
1207
1208           });            
1209
1210
1211        }
1212   }
1213
1214    function eltdListingArchiveLocationChange(){
1215
1216        var holder = $('.eltd-advanced-search-holder');
1217        var locationSelect = holder.find('.eltd-listing-archive-location');
1218		var emptyParam = '';
1219        locationSelect.on('change', function(){
1220            // search again
1221            var keywords = $('.eltd-listing-archive-keyword').val();
1222            var location = $(this).val();
1223            if (location == null) {
1224                location = 'all';
1225            }
1226            var category = $('.eltd-listing-archive-type').val();
1227            if (category == null) {
1228                category = 'all';
1229            }
1230            var url = "/search?keywords=" + encodeURI(keywords) + "&location=" + encodeURI(location) + "&category=" + encodeURI(category);
1231            // alert(url);
1232            window.location = url;
1233        });
1234       
1235   }
1236
1237	function eltdListingArchiveSortChange(){
1238
1239		var holder = $('.eltd-advanced-search-holder');
1240		var orderBySelect = holder.find('.eltd-listing-archive-sort');
1241		var emptyParam = '';
1242		orderBySelect.on('change', function(){
1243            // search again
1244            var keywords = $('.eltd-listing-archive-keyword').val();
1245            var location = $('.eltd-listing-archive-location').val();
1246            if (location == null) {
1247                location = 'all';
1248            }
1249            var category = $('.eltd-listing-archive-type').val();
1250            if (category == null) {
1251                category = 'all';
1252            }
1253            var order = $(this).val();
1254            var url = "/search?keywords=" + encodeURI(keywords) + "&location=" + encodeURI(location) + "&category=" + encodeURI(category) + "&order=" + order;
1255            // alert(url);
1256            window.location = url;
1257		});
1258
1259	}
1260
1261	function eltdListingArchiveLoadMore(){
1262		var holder = $('.eltd-advanced-search-holder');
1263		var button = $('.eltd-listing-archive-load-more');
1264
1265		button.on('click', function(e){
1266
1267			e.preventDefault();
1268			e.stopPropagation();
1269			var maxNumPages = holder.data('listing-max-num-pages');
1270			var nextPage = holder.data('listing-next-page');
1271			if(nextPage <= maxNumPages){
1272				eltdListingArchiveGetAjaxResponse(nextPage);
1273			}else{
1274				button.hide();
1275			}
1276
1277		});
1278
1279	}
1280
1281    function eltdListingArchiveGetAjaxResponse(nextPage){
1282
1283		var holder = $('.eltd-advanced-search-holder');
1284		var nextListingPage;
1285		var loadMoreFlag = false;
1286		var button = $('.eltd-listing-archive-load-more');
1287
1288		if(nextPage === '' || nextPage === 'undefined' ){
1289			nextListingPage = '';
1290		}
1291		else{
1292			nextListingPage = nextPage;
1293			loadMoreFlag = true;
1294		}
1295
1296        var searchParams = {};
1297
1298        var mapFlag;
1299        
1300        if( holder.hasClass('eltd-listing-list-without-map') ){
1301            mapFlag = false;
1302        }else{
1303            mapFlag = true;
1304        }
1305        
1306        var container = holder.find('.eltd-listing-list-items');
1307        
1308        var typeSelect = holder.find('.eltd-listing-archive-type');
1309        var locationSelect = holder.find('.eltd-listing-archive-location');
1310        var keywordField = holder.find('.eltd-listing-archive-keyword');
1311        
1312        var amenitiesHolder = holder.find('.eltd-listing-archive-amenities-holder');
1313        var fields = amenitiesHolder.find('.eltd-listing-archive-advanced-search-amenity');
1314       	var postCountHolder = $('.eltd-listing-archive-adv-search-count .eltd-number');
1315
1316        if(fields.length){
1317
1318            fields.each(function(){
1319
1320               var currentField = $(this).find('.eltd-advanced-input-field');
1321               var currentFieldId = currentField.attr('id');
1322
1323               var currentFieldVal = currentField.is(':checked');
1324               searchParams[currentFieldId] = currentFieldVal;
1325
1326            });
1327
1328       }
1329
1330		//order and order by values
1331		var sort = holder.find('.eltd-listing-archive-sort').val();
1332
1333		//take data params
1334        var postPerPage =  holder.data('listing-number-per-page');
1335		var listingCategoryId;
1336		if (typeof holder.data('listing-category') !== 'undefined' && holder.data('listing-category') !== false) {
1337			listingCategoryId = holder.data('listing-category');
1338		}
1339		var listingTagId;
1340		if (typeof holder.data('listing-tag') !== 'undefined' && holder.data('listing-tag') !== false) {
1341			listingTagId = holder.data('listing-tag');
1342		}
1343
1344
1345		var pageNumber;
1346		var ajaxData = {
1347            action: 'search_and_go_elated_archive_adv_search_query',
1348            locationID : locationSelect.val(),
1349            typeID : typeSelect.val(),
1350            searchParams : searchParams,
1351            searchKeyword : keywordField.val(),
1352            mapFlag: mapFlag,
1353			postPerPage: postPerPage,
1354			nextPage: nextListingPage,
1355			listingCategoryID : listingCategoryId,
1356			listingTagID : listingTagId,
1357			sort: sort,
1358			loadMoreFlag: loadMoreFlag
1359        };
1360
1361        $.ajax({
1362            type: 'GET',
1363            data: ajaxData,
1364            url: ElatedAjaxUrl,
1365            success: function (data) {
1366                var response = $.parseJSON(data);
1367                eltdListingChangeUrl( response.href );
1368                var responseHtml =  response.html;
1369                var mapData = response.mapData;
1370                var postCount = response.postCount;
1371				var maxNumPages = response.maxNumPages;
1372
1373				if(loadMoreFlag){
1374                    if (mapFlag) {
1375                        //Get all map data from map and append new data
1376                        var existingMarkers = eltdMultipleMapVars.multiple.addresses;
1377                        existingMarkers = existingMarkers.concat(mapData);
1378                        eltdMultipleMapVars.multiple.addresses = existingMarkers;
1379                        mapData = eltdMultipleMapVars.multiple.addresses;
1380                    }
1381
1382                    nextListingPage++;
1383					holder.data('listing-next-page', nextListingPage);
1384					pageNumber = nextListingPage;
1385				}else{
1386					if (mapFlag) {
1387						//Replace map data after each iteration
1388						eltdMultipleMapVars.multiple.addresses = mapData;
1389					}
1390					pageNumber = holder.data('listing-next-page');
1391				}
1392
1393				holder.data('listing-max-num-pages', maxNumPages);
1394                
1395                if(mapFlag === true){
1396                    eltd.modules.maps.eltdGoogleMaps.getDirectoryItemsAddresses({
1397                        addresses: mapData
1398                    });
1399                }
1400
1401                container.waitForImages(function(){
1402					if(loadMoreFlag){
1403						container.find('article').last().after(responseHtml); // Append the new content
1404					}else{
1405						container.html(responseHtml); // Append the new content
1406					}
1407                    postCountHolder.html(postCount);
1408                    eltdListingSelect2Fields();
1409                    eltd.modules.common.eltdInitHovers();
1410                    eltdBindTitles();
1411                });
1412				//show button
1413				if(pageNumber <= maxNumPages){
1414					button.show();
1415				}else{
1416					button.hide();
1417				}
1418            }
1419        });
1420
1421       eltdListingArchiveInitBack();
1422       
1423   }
1424
1425    function eltdListingChangeUrl( url ) {
1426
1427        var currentUrl = location.href;
1428        if (location.href.match(/\?.*/)) {
1429            currentUrl = location.href.replace(/\?.*/, '');;
1430        }
1431        window.history.pushState({page: currentUrl + url}, '', currentUrl + url);
1432
1433    }
1434
1435    function eltdListingArchiveInitBack() {
1436
1437        window.addEventListener("popstate", function(e) { // if a back or forward button is clicked
1438            location.reload();
1439        });
1440
1441    }
1442
1443    function eltdInitListingGallery() {
1444
1445        var listingGallery = $('.eltd-listing-gallery');
1446        if ( listingGallery.length ) {
1447            listingGallery.slick({
1448                speed: 800,
1449                easing:'easeOutQuint',
1450                nextArrow: '<span class="eltd-gallery-arrow left lnr lnr-chevron-left"></span>',
1451                prevArrow: '<span class="eltd-gallery-arrow right lnr lnr-chevron-right"></span>',
1452                variableWidth: true,
1453                slidesToShow: 2
1454            });
1455        }
1456
1457    }
1458
1459    function eltdInitListingCheckboxesStyle() {
1460
1461        var checkboxes = $('input[type="checkbox"]');
1462        checkboxes.each(function (){
1463            var self = $(this);
1464            if (self.prop('checked')) {
1465                self.parent('.eltd-label-holder').prev().children('.eltd-listing-checkbox-input, .eltd-listing-amenity-input').addClass('active');
1466            }
1467        });
1468        $(document).on('click', '.eltd-listing-checkbox-input, .eltd-listing-amenity-input', function (){
1469            var self = $(this);
1470            self.toggleClass('active');
1471            var checkbox = self.parent('.eltd-checkbox-holder').next().children('.eltd-checkbox-field, .eltd-advanced-input-field');
1472            checkbox.prop( 'checked', !checkbox.prop( 'checked' )).change();
1473        });
1474
1475    }
1476    function eltdInitSocialProfilesInput() {
1477
1478        var openers = $('.eltd-social-profiles-icon');
1479        if ( openers.length ) {
1480            openers.each(function(){
1481                var opener = $(this);
1482                opener.click(function(){
1483                    var id = opener.data('input');
1484                    if ( opener.hasClass('active') ) {
1485                        opener.removeClass('active');
1486                    } else {
1487                        opener.addClass('active');
1488                    }
1489                    //Find input holder with same class and display it
1490                    var input = $('.eltd-social-profiles-input.'+id);
1491                    if ( input.is(':visible') ) {
1492                        input.fadeOut(300);
1493                    } else {
1494                        input.fadeIn(300);
1495                    }
1496                });
1497            });
1498        }
1499
1500    }
1501
1502
1503    function eltdBindTitles() {
1504        var maps = $('.eltd-map-holder'),
1505            lists = $('.eltd-listing-list'); 
1506        if (maps.length && lists.length){
1507            maps.each(function(){
1508                var  listItems = lists.find('.eltd-listing-list-item');
1509
1510                listItems.each(function(){
1511                    var listItem = $(this);
1512                    listItem.mouseenter(function(){
1513                        var itemId = listItem.attr('id');
1514                        if ($('.eltd-map-marker-holder').length) {
1515                            $('.eltd-map-marker-holder').each(function(){
1516                                var markerHolder = $(this),
1517                                    markerId = markerHolder.attr('id');
1518                                    if (itemId == markerId) {
1519                                        markerHolder.addClass('active');
1520                                        setTimeout(function(){
1521                                        },300);
1522                                    } else {
1523                                        markerHolder.removeClass('active');
1524                                    }
1525                            });
1526                        }
1527                    });
1528                });
1529
1530                lists.mouseleave(function(){
1531                    $('.eltd-map-marker-holder').removeClass('active');
1532                });
1533            });
1534        }
1535    }
1536
1537}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.