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.