PageSourceSearch

https://americanproperties.net/wp-content/themes/wpresidence/js/google_js/mapfunctions.js?ver=1.0

js americanproperties.net collected 2026-09-29 11:36:41 UTC 98,102 bytes, 3,315 lines download raw bytes

1/*global $,oms,WpstateMarker,wpestate_start_filtering_ajax,control_vars,googlecode_regular_vars,wpestate_custom_search_start_filtering_ajax,ajaxcalls_vars,MarkerClusterer,map,google,OverlappingMarkerSpiderfier,gmarkers, Modernizr , InfoBox,google_map_submit_vars ,mapfunctions_vars, googlecode_home_vars,jQuery,googlecode_property_vars*/
2var pin_images=mapfunctions_vars.pin_images;
3var images = jQuery.parseJSON(pin_images);
4var ipad_time=0;
5var infobox_id=0;
6var shape = {
7        coord: [1, 1, 1, 38, 38, 59, 59 , 1],
8        type: 'poly'
9    };
10
11var mcOptions;
12var mcluster;
13var clusterStyles;
14var pin_hover_storage;
15var first_time_wpestate_show_inpage_ajax_half=0;
16var panorama;
17var infoBox_sh=null;
18
19var poi_type='';
20var placeCircle='';
21var initialGeop=0;
22var heading=0;
23var width_browser=null;
24var infobox_width=null;
25var wraper_height=null;
26var info_image=null;
27var vertical_pan=-190;
28var vertical_off=150;
29var curent_gview_lat = jQuery('#gmap_wrapper').attr('data-cur_lat');
30var curent_gview_long = jQuery('#gmap_wrapper').attr('data-cur_long');
31var bounds_list;
32var circleLayer='';
33
34
35function wpestate_agency_map_function(){
36    "use strict";
37    var curent_gview_lat    =   jQuery('#agency_map').attr('data-cur_lat');
38    var curent_gview_long   =   jQuery('#agency_map').attr('data-cur_long');
39
40
41
42    if(mapfunctions_vars.geolocation_type==1){
43
44
45        var mapOptions_intern = {
46            flat:false,
47            noClear:false,
48            zoom:  15,
49            scrollwheel: false,
50            draggable: true,
51            center: new google.maps.LatLng(curent_gview_lat,curent_gview_long ),
52            streetViewControl:false,
53            disableDefaultUI: true,
54            mapTypeId: mapfunctions_vars.type.toLowerCase(),
55            gestureHandling: 'cooperative'
56        };
57
58
59        var    map_agency= new google.maps.Map(document.getElementById('agency_map'), mapOptions_intern);
60        if(mapfunctions_vars.map_style !==''){
61           var styles = JSON.parse ( mapfunctions_vars.map_style );
62           map_agency.setOptions({styles: styles});
63        }
64
65        google.maps.visualRefresh = true;
66        google.maps.event.trigger(map_agency, 'resize');
67
68
69
70        var myLatLng = new google.maps.LatLng(curent_gview_lat, curent_gview_long);
71        var marker = new google.maps.Marker({
72            position: myLatLng,
73            map: map_agency,
74            icon: wpesate_custompin_agency(),
75            shape: shape,
76            title: 'we are here',
77            zIndex: 1,
78            infoWindowIndex : 0
79         });
80
81    }else{
82        wpresidence_agency_dev_map(curent_gview_lat,curent_gview_long,'agency_map');
83    }
84
85
86
87}
88
89
90
91function wpresidence_agency_dev_map(latitude,longitude,map_name){
92    "use strict";
93
94    var mapCenter = L.latLng(latitude, longitude );
95var    map =  L.map( map_name,{
96        center: mapCenter,
97        zoom:7,
98    });
99
100    var tileLayer =  wpresidence_open_stret_tile_details();
101    map.addLayer( tileLayer );
102
103
104    var markerCenter    =   L.latLng( latitude, longitude );
105    var markerImage     = {
106        iconUrl:  images['single_pin'],
107        iconSize: [44, 50],
108        iconAnchor: [20, 50],
109        popupAnchor: [1, -50]
110    };
111    var markerOptions = {
112        riseOnHover: true
113    };
114
115
116    markerOptions.icon  = L.icon( markerImage );
117    var propertyMarker      = L.marker( markerCenter, markerOptions );
118
119    propertyMarker.addTo( map );
120
121
122}
123
124
125
126
127
128
129function wpesate_custompin_agency(){
130    "use strict";
131    var image = {
132        url:  images['single_pin'],
133        size: new google.maps.Size(59, 59),
134        origin: new google.maps.Point(0,0),
135        anchor: new google.maps.Point(16,59 )
136    };
137
138    return image;
139}
140
141
142
143
144
145function wpestate_map_shortcode_function() {
146    "use strict";
147    var maps = {}; // Object to hold map instances
148    var markersArrays = {}; // Object to hold markers for each map
149    
150    jQuery('.googleMap_shortcode_class').each(function() {
151        var element         =   jQuery(this);
152        var elementParent   =   jQuery(this).parent();
153        var element         =   jQuery(this);
154        var elementId       =   element.attr('id');
155        var selected_id         = parseInt(element.attr('data-post_id'), 10);
156        var curent_gview_lat    = element.attr('data-cur_lat');
157        var curent_gview_long   = element.attr('data-cur_long');
158        var zoom                = '';
159        markersArrays[elementId]= [];
160        if (typeof googlecode_property_vars === 'undefined') {
161            zoom=5;
162            heading=0;
163            
164            if(jQuery('#modal_property_maps').length>0){
165                zoom    =   element.attr('data-prop-zoom');
166                heading =   0;
167            }else{
168                zoom    =   5;
169                heading =   0;
170            }
171        }else{
172            zoom    =   googlecode_property_vars.page_custom_zoom;
173            heading =   parseInt(googlecode_property_vars.camera_angle);
174        }
175
176        var i       = 1;
177        var id      = selected_id;
178        var lat     = curent_gview_lat;
179        var lng     = curent_gview_long;
180        var title   = decodeURIComponent(element.attr('data-title'));
181        var pin     = element.attr('data-pin');
182        var counter = 1;
183        var image   = decodeURIComponent(element.attr('data-thumb'));
184        var price   = decodeURIComponent(element.attr('data-price'));
185        var single_first_type   = decodeURIComponent(element.attr('data-single-first-type'));
186        var single_first_action = decodeURIComponent(element.attr('data-single-first-action'));
187        var link    = decodeURIComponent(element.attr('data-prop_url'));
188        var city    = '';
189        var area    = '';
190        var rooms   = decodeURIComponent(element.attr('data-rooms'));
191        var baths   = decodeURIComponent(element.attr('data-bathrooms'));
192        var size    = decodeURIComponent(element.attr('data-size'));
193        var single_first_type_name      = decodeURIComponent(element.attr('data-single-first-type'));
194        var single_first_action_name    = decodeURIComponent(element.attr('data-single-first-action'));
195        var agent_id        = '';
196        var county_state    = '';
197        var price_pin   = decodeURIComponent(element.attr('data-pin_price'));
198        var cleanprice  = decodeURIComponent(element.attr('data-clean_price'));
199
200
201        if (wp_estate_kind_of_map == 2) {
202            var mapCenter = L.latLng(curent_gview_lat, curent_gview_long);
203            maps[elementId] = L.map(element.attr('id'), {
204                center: mapCenter,
205                zoom: zoom
206            }).on('load', function(e) {
207                jQuery('#gmap-loading').remove();
208            });
209
210            wpresidence_leaflet_initialize_map_common(maps[elementId]);
211            wpestate_createMarker_sh_leaflet(price_pin, infoBox_sh, markersArrays[elementId] , maps[elementId], county_state, size, i,id, lat, lng, pin, title, counter, image, price, single_first_type, single_first_action, link, city, area, rooms, baths, cleanprice, single_first_type_name, single_first_action_name);
212
213        } else {
214            if (element.length > 0) {
215
216                var mapOptions_intern = {
217                    flat: false,
218                    noClear: false,
219                    zoom: parseInt(zoom, 10),
220                    scrollwheel: false,
221                    draggable: true,
222                    center: new google.maps.LatLng(curent_gview_lat, curent_gview_long),
223                    streetViewControl: false,
224                    disableDefaultUI: true,
225                    mapTypeId: mapfunctions_vars.type.toLowerCase(),
226                    gestureHandling: 'cooperative'
227                };
228       
229                maps[elementId] = new google.maps.Map(document.getElementById(elementId), mapOptions_intern);
230                google.maps.visualRefresh = true;
231                google.maps.event.trigger( maps[elementId], 'resize');
232
233                var infobox_width = 700;
234                var vertical_pan = -215;
235                var width_browser = jQuery(window).width();
236
237                if (width_browser < 900) {
238                    infobox_width = 500;
239                }
240                if (width_browser < 600) {
241                    infobox_width = 400;
242                }
243                if (width_browser < 400) {
244                    infobox_width = 200;
245                }
246                var boxText = document.createElement("div");
247
248                var myOptions = {
249                    content: boxText,
250                    disableAutoPan: true,
251                    maxWidth: infobox_width,
252                    boxClass: "mybox",
253                    zIndex: null,
254                    closeBoxMargin: "-13px 0px 0px 0px",
255                    closeBoxURL: "",
256                    infoBoxClearance: new google.maps.Size(1, 1),
257                    isHidden: false,
258                    pane: "floatPane",
259                    enableEventPropagation: true
260                };
261                var infoBox_sh = new InfoBox(myOptions);
262
263                if (mapfunctions_vars.map_style !== '') {
264                    var styles = JSON.parse(mapfunctions_vars.map_style);
265                    maps[elementId].setOptions({ styles: styles });
266                }
267
268                
269                wpestate_createMarker_sh(price_pin, infoBox_sh, markersArrays[elementId] ,  maps[elementId], 
270                    county_state, size,i, id, lat, lng, 
271                    pin, title, counter, image, price, 
272                    single_first_type, single_first_action, link, city, area, 
273                    rooms, baths, cleanprice, 
274                    single_first_type_name, single_first_action_name);
275
276                var viewPlace = new google.maps.LatLng(curent_gview_lat, curent_gview_long);
277                if (typeof (panorama_sh) === 'undefined') {
278                    var panorama_sh;
279                }
280                var panorama_sh =  maps[elementId].getStreetView();
281             
282                panorama_sh.setPosition(viewPlace);
283                panorama_sh.setPov({
284                    heading: heading,
285                    pitch: 0
286                });
287
288                elementParent.find('.slider_enable_street_sh').click(function() {
289                    var cur_lat     = element.attr('data-cur_lat');
290                    var cur_long    = element.attr('data-cur_long');
291                    var myLatLng    = new google.maps.LatLng(cur_lat, cur_long);
292
293                    panorama_sh.setPosition(myLatLng);
294                    panorama_sh.setVisible(true);
295                    elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').hide();
296                });
297
298                google.maps.event.addListener(panorama_sh, "closeclick", function() {
299             
300                    elementParent.find('.gmapzoomminus_sh, .gmapzoomplus_sh, .slider_enable_street_sh').show();
301                });
302                
303
304                if (mapfunctions_vars.hidden_map) {
305                    google.maps.event.trigger(markersArrays[elementId][0], 'click');
306                    setTimeout(function() {
307                        google.maps.event.trigger( maps[elementId], "resize");
308                        maps[elementId].setCenter(markersArrays[elementId][0].position);
309                    }, 300);
310                }
311                wpestate_initialize_poi( maps[elementId], 2,elementId);
312            }
313        }
314
315
316
317        elementParent.find('.gmapzoomplus_sh').click(function() {
318            var current = parseInt( maps[elementId].getZoom(), 10);
319            current++;
320            if (current > 20) {
321                current = 20;
322            }
323            maps[elementId].setZoom(current);
324        });
325    
326        elementParent.find('.gmapzoomminus_sh').click(function() {
327            var current = parseInt( maps[elementId].getZoom(), 10);
328            current--;
329            if (current < 0) {
330                current = 0;
331            }
332            maps[elementId].setZoom(current);
333        });
334        
335
336        if (wp_estate_kind_of_map == 2) {
337            setTimeout(function() {  maps[elementId].invalidateSize(); }, 1000);
338        } else {
339            setTimeout(function() { google.maps.event.trigger( maps[elementId], "resize"); }, 1000);
340        }
341
342        jQuery('.shtabmap, .shacctab,#overview_map').click(function(event) {
343            if (wp_estate_kind_of_map == 2) {
344                setTimeout(function() {  maps[elementId].invalidateSize(); }, 100);
345            } else {
346                setTimeout(function() { google.maps.event.trigger( maps[elementId], "resize"); }, 100);
347            }
348        });
349    });
350}
351
352
353
354
355
356/*
357*
358* Create marker openstreet
359*
360*/
361
362
363function wpestate_createMarker_sh_leaflet (pin_price,infoBox_sh,gmarkers_sh,map2,county_state, size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,city,area,rooms,baths,cleanprice,single_first_type_name, single_first_action_name ){
364    "use strict";
365    var infoboxWrapper = document.createElement( "div" );
366    infoboxWrapper.className = 'leafinfobox-wrapper';
367    var infobox = "";
368
369    var poss=0;
370    var infobox_class=" price_infobox ";
371
372
373
374
375
376
377    if( mapfunctions_vars.useprice === 'yes' ){
378        infobox_class =' openstreet_map_price_infobox ';
379    }
380
381
382    var info_image='';
383    if (image === '') {
384        info_image =  mapfunctions_vars.path + '/idxdefault.jpg';
385    } else {
386        info_image = image;
387    }
388
389    var category        = decodeURIComponent(single_first_type.replace(/-/g, ' '));
390    var action          = decodeURIComponent(single_first_action.replace(/-/g, ' '));
391    var category_name   = decodeURIComponent(single_first_type_name.replace(/-/g, ' '));
392    var action_name     = decodeURIComponent(single_first_action_name.replace(/-/g, ' '));
393
394    var in_type = mapfunctions_vars.in_text;
395    if (category === '' || action === '') {
396        in_type = " ";
397    }
398    in_type = " / ";
399    var  infoguest,inforooms;
400
401    var infobaths;
402    if(baths!='' && baths!=0 ){
403        infobaths ='<span id="infobath">'+baths+' '+mapfunctions_vars.ba+'</span>';
404    }else{
405        infobaths ='';
406    }
407
408
409    var inforooms;
410    if(rooms!='' && rooms!=0 ){
411        inforooms='<span id="inforoom">'+rooms+' '+mapfunctions_vars.bd+'</span>';
412    }else{
413        inforooms='';
414    }
415
416    var infosize;
417    if(size!=''){
418        infosize ='<span id="infosize">'+size+'</span>';
419    }else{
420        infosize='';
421    }
422
423    var title=  title.substr(0, 30);
424    if(title.length > 30){
425        title=title+"...";
426    }
427
428
429
430   infobox +=  wpestate_generate_infobox_leaflet(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms);
431
432    var  markerOptions = {
433        riseOnHover: true
434    };
435
436    var markerCenter    =   L.latLng( lat, lng );
437    var propertyMarker  =   '';
438
439    if( !mapfunctions_vars.hidden_map ){
440        propertyMarker = L.circle(markerCenter, {
441            color: '#0073e1',
442            fillColor: '#0073e1',
443            fillOpacity: 0.4,
444            strokeWeight: 0.2,
445            radius: 120
446
447
448        });
449
450    }else{
451
452        if( mapfunctions_vars.useprice === 'yes' ){
453            var price_pin_class= 'wpestate_marker openstreet_price_marker '+wpestate_makeSafeForCSS(single_first_type_name.trim() )+' '+wpestate_makeSafeForCSS(single_first_action_name.trim());
454
455            var pin_price_marker = '<div class="'+price_pin_class+'">';
456            if (typeof(price) !== 'undefined') {
457                if( mapfunctions_vars.use_price_pins_full_price==='no'){
458                    pin_price_marker +='<div class="interior_pin_price">'+pin_price+'</div>';
459                }else{
460                    pin_price_marker +='<div class="interior_pin_price">'+price+'</div>';
461                }
462            }
463            pin_price_marker += '</div>';
464
465
466
467            var myIcon = L.divIcon({
468                className:'someclass',
469                iconSize: new L.Point(0, 0),
470                html: pin_price_marker
471            });
472            propertyMarker  = L.marker( markerCenter, {icon: myIcon} );
473
474        }else{
475        var markerImage     = {
476                iconUrl: wprentals_custompin_leaflet(pin),
477                iconSize: [44, 50],
478                iconAnchor: [20, 50],
479                popupAnchor: [1, -50]
480            };
481            markerOptions.icon  = L.icon( markerImage );
482            propertyMarker      = L.marker( markerCenter, markerOptions );
483        }
484    }
485
486    propertyMarker.idul =   id;
487    propertyMarker.pin  =   pin;
488
489
490    propertyMarker.addTo( map2 );
491
492
493    gmarkers_sh.push(propertyMarker);
494
495    if (typeof (bounds_list) !== "undefined") {
496        bounds_list.extend(propertyMarker.getLatLng());
497    }else{
498        bounds_list = L.latLngBounds( propertyMarker.getLatLng(),propertyMarker.getLatLng() );
499    }
500
501    infoboxWrapper.innerHTML = infobox;
502    propertyMarker.bindPopup( infobox );
503
504
505    if( mapfunctions_vars.hidden_map ){
506        propertyMarker.fire('click').openPopup();
507    }
508
509}
510
511
512
513
514
515
516function wpestate_createMarker_sh (
517    pin_price,infoBox_sh,gmarkers_sh,map2,
518    county_state, size, i,id,lat,lng,
519    pin,title,counter,image,price,
520    single_first_type,single_first_action,link,city,area,
521    rooms,baths,cleanprice,
522    single_first_type_name, single_first_action_name ){
523    "use strict";
524
525
526  
527
528    var new_title   =   '';
529    var myLatLng    =   new google.maps.LatLng(lat,lng);
530    var poss=0;
531    var infobox_class=" price_infobox ";
532
533    if(mapfunctions_vars.useprice === 'yes' && mapfunctions_vars.hidden_map){
534
535
536        myLatLng        =   new google.maps.LatLng(lat,lng);
537        var Titlex          =   jQuery('<textarea />').html(title).text();
538
539        var infoWindowIndex =   999;
540        poss=11;
541
542        var price2=price;
543        var my_custom_curr_pos     =   parseFloat( wpestate_getCookie_map('my_custom_curr_pos'));
544        if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) {
545
546            var converted_price= wpestate_get_price_currency(cleanprice,cleanprice);
547            var testRE = price.match('</span>(.*)<span class=');
548            if (testRE !== null ){
549                price2=price.replace(testRE[1],converted_price);
550            }
551        }
552
553
554        marker= new WpstateMarker(
555            poss,
556            myLatLng,
557            map2,
558            Titlex,
559            counter,
560            image,
561            id,
562
563            price2,
564            pin_price,
565            single_first_type,
566            single_first_action,
567            link,
568            i,
569            rooms,
570            baths,
571            cleanprice,
572            size,
573            single_first_type_name,
574            single_first_action_name,
575            pin,
576            infoWindowIndex
577        );
578
579
580    }else{
581        infobox_class=" classic_info ";
582        var marker = new google.maps.Marker({
583               position: myLatLng,
584               map: map2,
585               icon: wpestate_custompin(pin),
586               shape: shape,
587               title: title,
588               zIndex: counter,
589               image:image,
590               idul:id,
591               price:price,
592               category:single_first_type,
593               action:single_first_action,
594               link:link,
595               city:city,
596               area:area,
597               infoWindowIndex : i,
598               rooms:rooms,
599               baths:baths,
600               cleanprice:cleanprice,
601               size:size,
602               county_state:county_state,
603               category_name:single_first_type_name,
604               action_name:single_first_action_name
605              });
606    }
607
608    gmarkers_sh.push(marker);
609
610    google.maps.event.addListener(marker, 'click', function() {
611
612            if(this.image===''){
613                info_image='<img src="' + mapfunctions_vars.path + '/idxdefault.jpg"  />';
614            }else{
615                info_image=this.image;
616            }
617
618            var category         =   decodeURIComponent ( this.category.replace(/-/g,' ') );
619            var action           =   decodeURIComponent ( this.action.replace(/-/g,' ') );
620          //  var category_name    =   decodeURIComponent ( this.category_name.replace(/-/g,' ') );
621          //  var action_name      =   decodeURIComponent ( this.action_name.replace(/-/g,' ') );
622            var in_type          =   mapfunctions_vars.in_text;
623            if(category==='' || action===''){
624                in_type=" ";
625            }
626
627           var infobaths;
628            if(this.baths!='' && this.baths!=0){
629                infobaths ='<span id="infobath">'+this.baths+' '+mapfunctions_vars.ba+'</span>';
630            }else{
631                infobaths ='';
632            }
633
634            var inforooms;
635            if(this.rooms!='' && this.rooms!=0){
636                inforooms='<span id="inforoom">'+this.rooms+' '+mapfunctions_vars.bd+'</span>';
637            }else{
638                inforooms='';
639            }
640
641            var infosize;
642            if(this.size!=''){
643                 infosize ='<span id="infosize">'+this.size;
644                 infosize =infosize+'</span>';
645            }else{
646                infosize='';
647            }
648
649
650            var title=  this.title.substr(0, 30);
651            if(this.title.length > 30){
652                title=title+"...";
653            }
654
655            infoBox_sh.setContent( wpestate_generate_infobox_sh(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms));
656            infoBox_sh.open(map2, this);
657            map2.setCenter(this.position);
658
659                // Add a click listener to the infocloser
660    google.maps.event.addListenerOnce(infoBox_sh, 'domready', function () {
661        document.getElementById('infocloser').addEventListener('click', function () {
662            infoBox_sh.close();
663        });
664    });
665
666
667
668
669            if (control_vars.show_adv_search_map_close === 'no') {
670                $('.search_wrapper').addClass('adv1_close');
671                wpestate_adv_search_click();
672            }
673
674             wpestate_close_adv_search();
675            });/////////////////////////////////// end event listener
676
677
678
679}
680
681
682
683/////////////////////////////////////////////////////////////////////////////////////////////////
684// change map
685/////////////////////////////////////////////////////////////////////////////////////////////////
686
687function  wpestate_change_map_type(map_type){
688    "use strict";
689    if(map_type==='map-view-roadmap'){
690         map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
691    }else if(map_type==='map-view-satellite'){
692         map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
693    }else if(map_type==='map-view-hybrid'){
694         map.setMapTypeId(google.maps.MapTypeId.HYBRID);
695    }else if(map_type==='map-view-terrain'){
696         map.setMapTypeId(google.maps.MapTypeId.TERRAIN);
697    }
698
699}
700
701/////////////////////////////////////////////////////////////////////////////////////////////////
702//  set markers... loading pins over map
703/////////////////////////////////////////////////////////////////////////////////////////////////
704
705function wpestate_setMarkers(map, locations, with_bound) {
706    "use strict";
707    var map_open;
708    var myLatLng;
709    var selected_id     =   parseInt( jQuery('#gmap_wrapper').attr('data-post_id') );
710    if( isNaN(selected_id) ){
711        selected_id     =   parseInt( jQuery('#googleMapSlider').attr('data-post_id'),10 );
712    }
713
714    var open_height     =   parseInt(mapfunctions_vars.open_height,10);
715    var closed_height   =   parseInt(mapfunctions_vars.closed_height,10);
716
717    width_browser       =   jQuery(window).width();
718
719    infobox_width=700;
720    vertical_pan=-215;
721    if (width_browser<900){
722      infobox_width=500;
723    }
724    if (width_browser<600){
725      infobox_width=400;
726    }
727    if (width_browser<400){
728      infobox_width=200;
729    }
730
731
732
733
734    bounds = new google.maps.LatLngBounds();
735
736    for (var i = 0; i < locations.length; i++) {
737        var beach                       =   locations[i];
738        var id                          =   beach[10];
739        var lat                         =   beach[1];
740        var lng                         =   beach[2];
741        var title                       =   decodeURIComponent ( beach[0] );
742        var pin                         =   beach[8];
743        var counter                     =   beach[3];
744        var image                       =   decodeURIComponent ( beach[4] );
745        var price                       =   decodeURIComponent ( beach[5] );
746        var single_first_type           =   decodeURIComponent ( beach[6] );
747        var single_first_action         =   decodeURIComponent ( beach[7] );
748        var link                        =   decodeURIComponent ( beach[9] );
749        var cleanprice                  =   beach[11];
750        var rooms                       =   beach[12];
751        var baths                       =   beach[13];
752        var size                        =   beach[14];
753        var single_first_type_name      =   decodeURIComponent ( beach[15] );
754        var single_first_action_name    =   decodeURIComponent ( beach[16] );
755        var pin_price                   =   decodeURIComponent ( beach[17] );
756
757
758        wpestate_createMarker ( pin_price,size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,rooms,baths,cleanprice,single_first_type_name, single_first_action_name);
759
760        // found the property
761        if(selected_id===id){
762            found_id=i;
763        }
764
765
766    }//end for
767
768
769    wpestate_map_cluster();
770    if( !jQuery('body').hasClass('single-estate_property') ){
771        oms = new OverlappingMarkerSpiderfier(map, {markersWontMove: true, markersWontHide: true,keepSpiderfied :true,legWeight:2});
772        wpestate_setOms(gmarkers);
773    }
774
775    if(with_bound===1){
776        if (!bounds.isEmpty()) {
777
778            wpestate_fit_bounds(bounds);
779        }else{
780            wpestate_fit_bounds_nolsit();
781        }
782    }
783
784    // pan to the latest pin for taxonmy and adv search
785    if(mapfunctions_vars.generated_pins!=='0'){
786        myLatLng  = new google.maps.LatLng(lat, lng);
787    }
788
789
790
791
792}// end wpestate_setMarkers
793
794
795/////////////////////////////////////////////////////////////////////////////////////////////////
796//  create marker
797/////////////////////////////////////////////////////////////////////////////////////////////////
798
799
800function   wpestate_createMarker ( pin_price,size, i,id,lat,lng,pin,title,counter,image,price,single_first_type,single_first_action,link,rooms,baths,cleanprice,single_first_type_name, single_first_action_name){
801
802    "use strict";
803    var myLatLng        =   new google.maps.LatLng(lat,lng);
804    var Titlex          =   jQuery('<textarea />').html(title).text();
805    var poss            =   0;
806    var infobox_class   =   " price_infobox ";
807    var boxText         =   document.createElement("div");
808
809    var myOptions = {
810        content: boxText,
811        disableAutoPan: true,
812        maxWidth: infobox_width,
813        boxClass:"mybox",
814        zIndex: null,
815        closeBoxMargin: "-13px 0px 0px 0px",
816        closeBoxURL: "",
817        infoBoxClearance: new google.maps.Size(1, 1),
818        isHidden: false,
819        pane: "floatPane",
820        enableEventPropagation: true
821    };
822    infoBox = new InfoBox(myOptions);
823
824
825
826    if(mapfunctions_vars.useprice === 'yes'){
827
828
829
830        var price2=price;
831        var my_custom_curr_pos     =   parseFloat( wpestate_getCookie_map('my_custom_curr_pos'));
832        if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) {
833            var converted_price= wpestate_get_price_currency(cleanprice,cleanprice);
834            var testRE = price.match('</span>(.*)<span class=');
835            if (testRE !== null ){
836                price2=price.replace(testRE[1],converted_price);
837            }
838        }
839
840
841	var myLatlng = new google.maps.LatLng(lat,lng);
842        marker= new WpstateMarker(
843            poss,
844            myLatlng,
845            map,
846            Titlex,
847            counter,
848            image,
849            id,
850
851            price2,
852            pin_price,
853            single_first_type,
854            single_first_action,
855            link,
856            i,
857            rooms,
858            baths,
859            cleanprice,
860            size,
861            single_first_type_name,
862            single_first_action_name,
863            pin,
864            i
865        );
866    }else{
867        infobox_class=" classic_info ";
868        var marker = new google.maps.Marker({
869            position:           myLatLng,
870            map:                map,
871            icon:               wpestate_custompin(pin),
872            shape:              shape,
873            title:              Titlex,
874            zIndex:             counter,
875            image:              image,
876            idul:               id,
877            price:              price,
878            category:           single_first_type,
879            action:             single_first_action,
880            link:               link,
881            infoWindowIndex :   i,
882            rooms:              rooms,
883            baths:              baths,
884            cleanprice:         cleanprice,
885            size:               size,
886            category_name:      single_first_type_name,
887            action_name:        single_first_action_name
888        });
889
890    }
891
892
893    gmarkers.push(marker);
894    bounds.extend(marker.getPosition());
895    google.maps.event.addListener(marker, 'click', function(event) {
896
897        //  wpestate_new_open_close_map(1);
898
899        if( typeof(is_map_shortcode) ==="undefined" ){
900            wpestate_map_callback( wpestate_new_open_close_map );
901            google.maps.event.trigger(map, 'resize');
902        }
903
904        if(this.image===''){
905            info_image='<img src="' + mapfunctions_vars.path + '/idxdefault.jpg" />';
906        }else{
907            info_image=this.image;
908        }
909
910        var category         =   decodeURIComponent ( this.category.replace(/-/g,' ') );
911        var action           =   decodeURIComponent ( this.action.replace(/-/g,' ') );
912        var category_name    =   decodeURIComponent ( this.category_name.replace(/-/g,' ') );
913        var action_name      =   decodeURIComponent ( this.action_name.replace(/-/g,' ') );
914        var in_type          =   mapfunctions_vars.in_text;
915        if(category==='' || action===''){
916            in_type=" ";
917        }
918
919        var infobaths;
920        if(this.baths!='' && this.baths!=0){
921            infobaths ='<span id="infobath">'+this.baths+' '+mapfunctions_vars.ba+'</span>';
922        }else{
923            infobaths ='';
924        }
925
926        var inforooms;
927        if(this.rooms!='' && this.rooms!=0){
928            inforooms='<span id="inforoom">'+this.rooms+' '+mapfunctions_vars.bd+'</span>';
929        }else{
930            inforooms='';
931        }
932
933        var infosize;
934        if(this.size!=''){
935            infosize ='<span id="infosize">'+this.size;
936
937            infosize =infosize+'</span>';
938        }else{
939            infosize='';
940        }
941
942
943        var title=  this.title.substr(0, 30);
944        if(this.title.length > 30){
945            title=title+"...";
946        }
947
948
949        infoBox.setContent( wpestate_generate_infobox(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms));
950        infoBox.open(map, this);
951        map.setCenter(this.position);
952
953            if (control_vars.show_adv_search_map_close === 'no') {
954                $('.search_wrapper').addClass('adv1_close');
955                wpestate_adv_search_click();
956            }
957
958            wpestate_close_adv_search();
959    });/////////////////////////////////// end event listener
960
961
962
963}
964
965function  wpestate_pan_to_last_pin(myLatLng){
966    "use strict";
967    map.setCenter(myLatLng);
968}
969
970
971function wpestate_generate_infobox(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){
972
973    var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:infoBox.close();\' ></span>';
974    infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>';
975    infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>';
976    infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>';
977    infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>';
978
979    return infobox;
980
981}
982
983function wpestate_generate_infobox_sh(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){
984
985    var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:infoBox_sh.close();\' ></span>';
986    infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>';
987    infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>';
988    infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>';
989    infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>';
990
991    return infobox;
992
993}
994
995
996function wpestate_generate_infobox_leaflet(infobox_class,title,link,info_image,price,cleanprice,infosize,infobaths,inforooms){
997    var title=  title.substr(0, 32);
998    if(title.length > 32){
999        title=title+"...";
1000    }
1001    var infobox= '<div class="info_details '+infobox_class+'"><span id="infocloser" onClick=\'javascript:jQuery(".leaflet-popup-close-button")[0].click();\' ></span>';
1002    infobox = infobox+ '<div class="infobox_wrapper_image"> <a href="'+link+'">'+info_image+'</a></div>';
1003    infobox = infobox+ '<div class="infobox_title"><a href="'+link+'" id="infobox_title">'+title+'</a></div>';
1004    infobox = infobox+ '<div class="prop_pricex">'+wpestate_get_price_currency(price,cleanprice)+'</div>';
1005    infobox = infobox+ '<div class="infobox_details">'+inforooms+' '+infobaths+' '+infosize+'</div></div>';
1006
1007    return infobox;
1008
1009}
1010
1011
1012/////////////////////////////////////////////////////////////////////////////////////////////////
1013//  map set search
1014/////////////////////////////////////////////////////////////////////////////////////////////////
1015function wpestate_setOms(gmarkers){
1016    "use strict";
1017    for (var i = 0; i < gmarkers.length; i++) {
1018        if(typeof oms !== 'undefined'){
1019           oms.addMarker(gmarkers[i]);
1020        }else{
1021
1022        }
1023    }
1024
1025}
1026
1027/////////////////////////////////////////////////////////////////////////////////////////////////
1028//  map set search
1029/////////////////////////////////////////////////////////////////////////////////////////////////
1030
1031function wpestate_set_google_search(map){
1032    "use strict";
1033    if( parseInt(mapbase_vars.wp_estate_kind_of_map) == 2 || jQuery('#google-default-search').length===0 ){
1034        return;
1035    }
1036
1037
1038    var input,searchBox,places,place;
1039
1040    input = (document.getElementById('google-default-search'));
1041    searchBox = new google.maps.places.SearchBox(input);
1042
1043
1044    google.maps.event.addListener(searchBox, 'places_changed', function() {
1045    places = searchBox.getPlaces();
1046
1047    if (places.length == 0) {
1048      return;
1049    }
1050
1051    var bounds = new google.maps.LatLngBounds();
1052    for (var i = 0; place = places[i]; i++) {
1053        var image = {
1054            url: place.icon,
1055            size: new google.maps.Size(71, 71),
1056            origin: new google.maps.Point(0, 0),
1057            anchor: new google.maps.Point(17, 34),
1058            scaledSize: new google.maps.Size(25, 25)
1059        };
1060
1061        // Create a marker for each place.
1062        var marker = new google.maps.Marker({
1063            map: map,
1064            icon: image,
1065            title: place.name,
1066            position: place.geometry.location
1067        });
1068
1069        gmarkers.push(marker);
1070        bounds.extend(place.geometry.location);
1071
1072    }
1073
1074    map.fitBounds(bounds);
1075    if (!bounds.isEmpty()) {
1076        wpestate_fit_bounds(bounds);
1077    }else{
1078        wpestate_fit_bounds_nolsit();
1079    }
1080    map.setZoom(15);
1081  });
1082
1083
1084    google.maps.event.addListener(map, 'bounds_changed', function() {
1085    var bounds = map.getBounds();
1086    searchBox.setBounds(bounds);
1087  });
1088
1089}
1090
1091function wpestate_fit_bounds_nolsit(){
1092    "use strict";
1093    map.setZoom(3);
1094}
1095
1096
1097
1098function wpestate_fit_bounds(bounds){
1099    "use strict";
1100    
1101    if(placeCircle!=''){
1102        map.fitBounds(placeCircle.getBounds());
1103    }else{
1104         map.fitBounds(bounds);
1105        google.maps.event.addListenerOnce(map, 'idle', function() {
1106            if( map.getZoom()>15 ) {
1107                map.setZoom(15);
1108            }
1109        });
1110    }
1111
1112
1113}
1114
1115
1116/////////////////////////////////////////////////////////////////////////////////////////////////
1117//  open close map
1118/////////////////////////////////////////////////////////////////////////////////////////////////
1119
1120function wpestate_new_open_close_map(type){
1121    "use strict";
1122    if( jQuery('#gmap_wrapper').hasClass('fullmap') ){
1123        return;
1124    }
1125
1126    if(mapfunctions_vars.open_close_status !== '1'){ // we can resize map
1127
1128        var current_height  =   jQuery('#googleMap').outerHeight();
1129        var closed_height   =   parseInt(mapfunctions_vars.closed_height,10);
1130        var open_height     =   parseInt(mapfunctions_vars.open_height,10);
1131        var googleMap_h     =   open_height;
1132        var gmapWrapper_h   =   open_height;
1133
1134        if( infoBox!== null){
1135            infoBox.close();
1136        }
1137
1138        if ( current_height === closed_height )  {
1139            googleMap_h = open_height;
1140            if (Modernizr.mq('only all and (max-width: 940px)')) {
1141               gmapWrapper_h = open_height;
1142            } else {
1143                jQuery('#gmap-menu').show();
1144                gmapWrapper_h = open_height;
1145            }
1146
1147            wpestate_new_show_advanced_search();
1148            vertical_off=0;
1149            jQuery('#openmap').empty().append('<i class="fas fa-angle-up"></i>'+mapfunctions_vars.close_map);
1150
1151        } else if(type===2) {
1152            jQuery('#gmap-menu').hide();
1153            jQuery('#advanced_search_map_form').hide();
1154            googleMap_h = gmapWrapper_h = closed_height;
1155
1156            // hide_advanced_search();
1157            wpestate_new_hide_advanced_search();
1158            vertical_off=150;
1159        }
1160        jQuery('#gmap_wrapper').css('height', gmapWrapper_h+'px');
1161        jQuery('#googleMap').css('height', googleMap_h+'px');
1162        jQuery('.tooltip').fadeOut("fast");
1163
1164        if(wp_estate_kind_of_map===1){
1165            setTimeout(function(){google.maps.event.trigger(map, "resize"); }, 300);
1166        }
1167    }
1168}
1169
1170
1171
1172
1173
1174/////////////////////////////////////////////////////////////////////////////////////////////////
1175//  build map cluter
1176/////////////////////////////////////////////////////////////////////////////////////////////////
1177function wpestate_map_cluster(){
1178    "use strict";
1179    
1180    if(mapfunctions_vars.user_cluster==='yes'){
1181        clusterStyles = [
1182            {
1183            textColor: '#ffffff',
1184            opt_textColor: '#ffffff',
1185            url: images['cloud_pin'],
1186            height: 72,
1187            width: 72,
1188            textSize:15,
1189
1190            }
1191        ];
1192        mcOptions = {gridSize: 50,
1193                    ignoreHidden:true,
1194                    maxZoom: parseInt( mapfunctions_vars.zoom_cluster,10),
1195                    styles: clusterStyles
1196                };
1197        mcluster = new MarkerClusterer(map, gmarkers, mcOptions);
1198        mcluster.setIgnoreHidden(true);
1199    }
1200
1201}
1202
1203
1204
1205/////////////////////////////////////////////////////////////////////////////////////////////////
1206/// zoom
1207/////////////////////////////////////////////////////////////////////////////////////////////////
1208
1209
1210if(  document.getElementById('gmapzoomplus') ){
1211    jQuery('#gmapzoomplus').on('click',function(){
1212        "use strict";
1213        var current= parseInt( map.getZoom(),10);
1214        current++;
1215        if(current>20){
1216            current=20;
1217        }
1218        map.setZoom(current);
1219    });
1220}
1221
1222
1223if(  document.getElementById('gmapzoomminus') ){
1224    jQuery('#gmapzoomminus').on('click',function(){
1225        "use strict";
1226        var current= parseInt( map.getZoom(),10);
1227        current--;
1228        if(current<0){
1229            current=0;
1230        }
1231        map.setZoom(current);
1232    });
1233}
1234
1235
1236
1237/////////////////////////////////////////////////////////////////////////////////////////////////
1238/// geolocation
1239/////////////////////////////////////////////////////////////////////////////////////////////////
1240
1241if(  document.getElementById('geolocation-button') ){
1242    jQuery('#geolocation-button').on('click',function(){
1243        "use strict";
1244        wpestate_myposition(map);
1245        wpestate_close_adv_search();
1246    });
1247}
1248
1249
1250if(  document.getElementById('mobile-geolocation-button') ){
1251    jQuery('#mobile-geolocation-button').on('click',function(){
1252        "use strict";
1253        wpestate_myposition(map);
1254        wpestate_close_adv_search();
1255    });
1256}
1257
1258
1259
1260
1261
1262function wpestate_myposition(map){
1263    "use strict";
1264    if(navigator.geolocation){
1265        var latLong;
1266        if (location.protocol === 'https:') {
1267            navigator.geolocation.getCurrentPosition(wpestate_showMyPosition_original,wpestate_errorCallback,{timeout:10000});
1268        }else{
1269            jQuery.getJSON("http://ipinfo.io", function(ipinfo){
1270                latLong = ipinfo.loc.split(",");
1271                wpestate_showMyPosition (latLong);
1272            });
1273        }
1274
1275    }else{
1276        alert(mapfunctions_vars.geo_no_brow);
1277    }
1278}
1279
1280
1281function wpestate_errorCallback(){
1282    "use strict";
1283    alert(mapfunctions_vars.geo_no_pos);
1284}
1285
1286
1287
1288
1289function wpestate_showMyPosition_original(pos){
1290    "use strict";
1291    if(wp_estate_kind_of_map===1){
1292        var shape = {
1293           coord: [1, 1, 1, 38, 38, 59, 59 , 1],
1294           type: 'poly'
1295        };
1296
1297        var MyPoint=  new google.maps.LatLng( pos.coords.latitude, pos.coords.longitude);
1298        map.setCenter(MyPoint);
1299
1300        var marker = new google.maps.Marker({
1301                 position: MyPoint,
1302                 map: map,
1303                 icon: wpestate_custompinchild(),
1304                 shape: shape,
1305                 title: '',
1306                 zIndex: 999999999,
1307                 image:'',
1308                 price:'',
1309                 category:'',
1310                 action:'',
1311                 link:'' ,
1312                 infoWindowIndex : 99 ,
1313                 radius: parseInt(mapfunctions_vars.geolocation_radius,10)+' '+mapfunctions_vars.geo_message
1314                });
1315
1316        var populationOptions = {
1317            strokeColor: '#67cfd8',
1318            strokeOpacity: 0.6,
1319            strokeWeight: 1,
1320            fillColor: '#67cfd8',
1321            fillOpacity: 0.2,
1322            map: map,
1323            center: MyPoint,
1324            radius: parseInt(mapfunctions_vars.geolocation_radius,10)
1325        };
1326
1327        var cityCircle = new google.maps.Circle(populationOptions);
1328
1329        var label = new Label({
1330            map: map
1331        });
1332        label.bindTo('position', marker);
1333        label.bindTo('text', marker, 'radius');
1334        label.bindTo('visible', marker);
1335        label.bindTo('clickable', marker);
1336        label.bindTo('zIndex', marker);
1337    }else{
1338
1339        var new_pos=[pos.coords.latitude, pos.coords.longitude];
1340        wprentals_draw_leaflet_circle(new_pos);
1341    }
1342
1343}
1344
1345
1346var geo_markers =   [];
1347var geo_circle  =   [];
1348var geo_label   =   [];
1349
1350function wpestate_showMyPosition(pos){
1351    "use strict";
1352
1353    if(wp_estate_kind_of_map===1){
1354        wpresidence_draw_google_circle(pos);
1355    }else if(wp_estate_kind_of_map===2){
1356       wprentals_draw_leaflet_circle(pos)
1357    }
1358
1359}
1360
1361
1362function wprentals_draw_leaflet_circle(pos){
1363
1364    L.circle( [pos[0],pos[1]], parseInt(mapfunctions_vars.geolocation_radius, 10)).addTo(map);
1365
1366    var markerImage = {
1367            iconUrl: wprentals_custompinchild_leaflet(),
1368            iconSize: [38, 59],
1369            iconAnchor: [20, 50],
1370            popupAnchor: [1, -50]
1371        };
1372    var  markerOptions = {
1373        riseOnHover: true
1374    };
1375
1376    var markerCenter    =   L.latLng( pos[0], pos[1] );
1377    markerOptions.icon = L.icon( markerImage );
1378    L.marker( markerCenter, markerOptions ).addTo( map );
1379
1380
1381    var wpresidence_leaflet_label = '<div class="wpresidence_leaflet_label">';
1382    wpresidence_leaflet_label+=parseInt(mapfunctions_vars.geolocation_radius, 10) + ' ' + mapfunctions_vars.geo_message
1383    wpresidence_leaflet_label += '</div>';
1384
1385    var myIcon = L.divIcon({
1386            className:'someclass',
1387            iconSize: new L.Point(0, 0),
1388            html: wpresidence_leaflet_label
1389        });
1390
1391    L.marker( markerCenter, {icon: myIcon} ).addTo( map );
1392
1393
1394    map.panTo(markerCenter);
1395    map.setZoom(10);
1396}
1397
1398
1399
1400
1401
1402
1403
1404function wpresidence_draw_google_circle(pos){
1405     "use strict";
1406    for (var i = 0; i < geo_markers.length; i++) {
1407        geo_markers[i].setMap(null);
1408        geo_circle[i].setMap(null);
1409        geo_label[i].setMap(null);
1410    }
1411
1412    geo_markers =   [];
1413    geo_circle  =   [];
1414    geo_label   =   [];
1415
1416
1417    var shape = {
1418        coord: [1, 1, 1, 38, 38, 59, 59 , 1],
1419        type: 'poly'
1420    };
1421
1422    // var MyPoint=  new google.maps.LatLng( pos.coords.latitude, pos.coords.longitude);
1423
1424    var MyPoint=  new google.maps.LatLng( pos[0], pos[1]);
1425    map.setCenter(MyPoint);
1426    map.setZoom(13);
1427    var marker = new google.maps.Marker({
1428            position: MyPoint,
1429            map: map,
1430            icon: wpestate_custompinchild(),
1431            shape: shape,
1432            title: '',
1433            zIndex: 999999999,
1434            image:'',
1435            price:'',
1436            category:'',
1437            action:'',
1438            link:'' ,
1439            infoWindowIndex : 99 ,
1440            radius: parseInt(mapfunctions_vars.geolocation_radius,10)+' '+mapfunctions_vars.geo_message
1441            });
1442    geo_markers.push(marker);
1443
1444
1445    var populationOptions = {
1446        strokeColor: '#67cfd8',
1447        strokeOpacity: 0.6,
1448        strokeWeight: 1,
1449        fillColor: '#67cfd8',
1450        fillOpacity: 0.2,
1451        map: map,
1452        center: MyPoint,
1453        radius: parseInt(mapfunctions_vars.geolocation_radius,10)
1454    };
1455
1456
1457
1458    var cityCircle = new google.maps.Circle(populationOptions);
1459    geo_circle.push(cityCircle);
1460
1461    var label = new Label({
1462        map: map
1463    });
1464
1465    label.bindTo('position', marker);
1466    label.bindTo('text', marker, 'radius');
1467    label.bindTo('visible', marker);
1468    label.bindTo('clickable', marker);
1469    label.bindTo('zIndex', marker);
1470    geo_label.push(cityCircle);
1471}
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481function wpestate_custompinchild(){
1482    "use strict";
1483
1484    var custom_img;
1485    var extension='';
1486    var ratio = jQuery(window).dense('devicePixelRatio');
1487
1488    if(ratio>1){
1489        extension='_2x';
1490    }
1491
1492
1493    if( typeof( images['userpin'] )=== 'undefined' ||  images['userpin']===''){
1494        custom_img= mapfunctions_vars.path+'/'+'userpin'+extension+'.png';
1495    }else{
1496        custom_img=images['userpin'];
1497        if(ratio>1){
1498            custom_img=wpestate_get_custom_retina_pin(custom_img);
1499        }
1500    }
1501
1502
1503
1504
1505    var   image;
1506    if(ratio>1){
1507        image = {
1508            url: custom_img,
1509            size: new google.maps.Size(88, 96),
1510            scaledSize   :  new google.maps.Size(44, 48),
1511            origin: new google.maps.Point(0,0),
1512            anchor: new google.maps.Point(16,59 )
1513        };
1514
1515    }else{
1516        image = {
1517            url: custom_img,
1518            size: new google.maps.Size(59, 59),
1519            origin: new google.maps.Point(0,0),
1520            anchor: new google.maps.Point(16,59 )
1521        };
1522    }
1523
1524
1525    return image;
1526
1527}
1528
1529
1530
1531
1532/////////////////////////////////////////////////////////////////////////////////////////////////
1533///
1534/////////////////////////////////////////////////////////////////////////////////////////////////
1535
1536if( document.getElementById('gmap') ){
1537    google.maps.event.addDomListener(document.getElementById('gmap'), 'mouseout', function () {
1538        google.maps.event.trigger(map, "resize");
1539    });
1540}
1541
1542
1543if(  document.getElementById('search_map_button') ){
1544    google.maps.event.addDomListener(document.getElementById('search_map_button'), 'click', function () {
1545        infoBox.close();
1546    });
1547}
1548
1549
1550
1551if(  document.getElementById('advanced_search_map_button') ){
1552    google.maps.event.addDomListener(document.getElementById('advanced_search_map_button'), 'click', function () {
1553       infoBox.close();
1554    });
1555}
1556
1557////////////////////////////////////////////////////////////////////////////////////////////////
1558/// navigate troguh pins
1559///////////////////////////////////////////////////////////////////////////////////////////////
1560
1561jQuery('#gmap-next').on( 'click', function(event) {
1562    "use strict";
1563    current_place++;
1564    external_action_ondemand=1;
1565    lealet_map_move_on_hover=1;
1566
1567    if (current_place>gmarkers.length){
1568        current_place=1;
1569    }
1570    while(gmarkers[current_place-1].visible===false){
1571        current_place++;
1572        if (current_place>gmarkers.length){
1573            current_place=1;
1574        }
1575    }
1576
1577    if( map.getZoom() <15 ){
1578        map.setZoom(15);
1579    }
1580
1581
1582
1583
1584    if(wp_estate_kind_of_map===1){
1585         google.maps.event.trigger(gmarkers[current_place-1], 'click');
1586    }else if(wp_estate_kind_of_map===2){
1587
1588        map.setView(gmarkers[current_place - 1].getLatLng());
1589        if (! gmarkers[current_place - 1]._icon) {
1590            gmarkers[current_place - 1].__parent.spiderfy();
1591        }
1592            lealet_map_move_on_hover=1;
1593
1594            map.setZoom(20);
1595
1596            if( (current_place - 1)==0 || (current_place - 1)==gmarkers.length ){
1597                setTimeout(function(){  gmarkers[current_place - 1].fire('click');  }, 1000);
1598            }else{
1599                gmarkers[current_place - 1].fire('click');
1600            }
1601
1602
1603        lealet_map_move_on_hover=1;
1604        wpestate_map_callback( wpestate_new_open_close_map );
1605    }
1606
1607});
1608
1609
1610jQuery('#gmap-prev').on( 'click', function(event) {
1611    "use strict";
1612    external_action_ondemand=1;
1613    lealet_map_move_on_hover=1;
1614    current_place--;
1615    if (current_place<1){
1616        current_place=gmarkers.length;
1617    }
1618    while(gmarkers[current_place-1].visible===false){
1619        current_place--;
1620        if (current_place>gmarkers.length){
1621            current_place=1;
1622        }
1623    }
1624    if( map.getZoom() <15 ){
1625        map.setZoom(15);
1626    }
1627
1628
1629    if(wp_estate_kind_of_map===1){
1630        google.maps.event.trigger(gmarkers[current_place-1], 'click');
1631    }else if(wp_estate_kind_of_map===2){
1632        map.setView(gmarkers[current_place - 1].getLatLng());
1633        if (! gmarkers[current_place - 1]._icon)  gmarkers[current_place - 1].__parent.spiderfy();
1634            lealet_map_move_on_hover=1;
1635
1636            map.setZoom(20);
1637
1638            if( (current_place - 1)==0 || (current_place )==gmarkers.length ){
1639                setTimeout(function(){  gmarkers[current_place - 1].fire('click');  }, 1000);
1640            }else{
1641                gmarkers[current_place - 1].fire('click');
1642            }
1643
1644        lealet_map_move_on_hover=1;
1645          wpestate_map_callback( wpestate_new_open_close_map );
1646    }
1647    current_place--;
1648});
1649
1650
1651
1652
1653
1654
1655
1656
1657///////////////////////////////////////////////////////////////////////////////////////////////////////////
1658/// filter pins
1659//////////////////////////////////////////////////////////////////////////////////////////////////////////
1660
1661jQuery('.advanced_action_div li').on( 'click', function(event) {
1662"use strict";
1663   var action = jQuery(this).val();
1664});
1665
1666
1667
1668
1669
1670if(  document.getElementById('gmap-menu') ){
1671    google.maps.event.addDomListener(document.getElementById('gmap-menu'), 'click', function (event) {
1672        "use strict";
1673        infoBox.close();
1674
1675        if (event.target.nodeName==='INPUT'){
1676            category=event.target.className;
1677
1678                if(event.target.name==="filter_action[]"){
1679                    if(actions.indexOf(category)!==-1){
1680                        actions.splice(actions.indexOf(category),1);
1681                    }else{
1682                        actions.push(category);
1683                    }
1684                }
1685
1686                if(event.target.name==="filter_type[]"){
1687                    if(categories.indexOf(category)!==-1){
1688                        categories.splice(categories.indexOf(category),1);
1689                    }else{
1690                        categories.push(category);
1691                    }
1692                }
1693
1694        show(actions,categories);
1695        }
1696
1697    });
1698}
1699
1700function wpestate_getCookieMap(cname) {
1701    "use strict";
1702    var name = cname + "=";
1703    var ca = document.cookie.split(';');
1704    for(var i=0; i<ca.length; i++) {
1705        var c = ca[i];
1706        while (c.charAt(0)==' ') c = c.substring(1);
1707        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
1708    }
1709    return "";
1710}
1711
1712
1713
1714function wpestate_get_custom_value_tab_search(slug){
1715    "use strict";
1716    var value='';
1717    var is_drop=0;
1718
1719
1720    if(slug === 'adv_categ' || slug === 'adv_actions' ||  slug === 'advanced_city' ||  slug === 'advanced_area'  ||  slug === 'county-state' ){
1721        
1722        if(jQuery('.tab-pane.active #'+slug).hasClass('wpestatemultiselectselectpicker') ){
1723            value = jQuery('.tab-pane.active #'+slug).val();
1724            if(value=='')value='all';
1725      
1726        }else{
1727            value = jQuery('.tab-pane.active #'+slug).attr('data-value');
1728        }
1729        
1730
1731
1732
1733
1734    } else if(slug === 'property_price' && mapfunctions_vars.slider_price==='yes'){
1735        value = jQuery('.tab-pane.active #price_low').val();
1736    }else if(slug === 'property-country'){
1737        value = jQuery('.tab-pane.active #advanced_country').attr('data-value');
1738    }else if(slug === 'property_status'){
1739
1740         if(jQuery('.tab-pane.active #adv_status').hasClass('wpestatemultiselectselectpicker') ){
1741            value = jQuery('.tab-pane.active #adv_status').val();
1742            if(value=='')value='all';           
1743        }else{
1744            value = jQuery('.tab-pane.active #adv_status').attr('data-value');          
1745        }
1746
1747
1748    }else if(slug === 'adv_location'){
1749
1750        
1751        value = jQuery('.tab-pane.active .adv_locations_search').val();
1752
1753      
1754        jQuery('.adv_locations_search').each(function() {
1755          
1756        });
1757
1758    }else{
1759
1760        if(slug!==''){
1761            if( jQuery('.tab-pane.active #'+slug).hasClass('filter_menu_trigger') ){
1762                value = jQuery('.tab-pane.active #'+slug).attr('data-value');
1763                is_drop=1;
1764            }else{
1765                value = jQuery('.tab-pane.active #'+slug).val() ;
1766            }
1767        }
1768    }
1769
1770    return value;
1771
1772}
1773
1774
1775function wpestate_get_custom_value(slug){
1776    "use strict";
1777    var value;
1778    var is_drop=0;
1779
1780    if(slug === 'adv_categ' || slug === 'adv_actions' ||  slug === 'advanced_city' ||  slug === 'advanced_area'  ||  slug === 'county-state'){
1781        value = jQuery('#'+slug).attr('data-value');
1782
1783        if(jQuery('#'+slug).hasClass('wpestatemultiselectselectpicker') ){
1784            value = jQuery('#'+slug).val();
1785            if(value=='')value='all';
1786  
1787        }else{
1788            value = jQuery('#'+slug).attr('data-value');
1789
1790        }
1791        
1792
1793
1794
1795    } else if(slug === 'property_price' && mapfunctions_vars.slider_price==='yes'){
1796        value = jQuery('#price_low').val();
1797    }else if(slug === 'property_status'){
1798        if(jQuery('#adv_status').hasClass('wpestatemultiselectselectpicker') ){
1799            value = jQuery('#adv_status').val();
1800            if(value=='')value='all';
1801       
1802        }else{
1803            value = jQuery('#adv_status').attr('data-value');
1804        }
1805    }else if(slug === 'property-country'){
1806        value = jQuery('#advanced_country').attr('data-value');
1807    }else if(slug === 'adv_location'){
1808
1809         value = jQuery('.adv_locations_search').val();
1810
1811     
1812    }else{
1813
1814        if( jQuery('#'+slug).hasClass('filter_menu_trigger') ){
1815            value = jQuery('#'+slug).attr('data-value');
1816            is_drop=1;
1817        }else{
1818            value = jQuery('#'+slug).val() ;
1819
1820        }
1821    }
1822
1823
1824    if (typeof(value)!=='undefined'&& is_drop===0){
1825      //  value=  value .replace(" ","-");
1826    }
1827
1828    return value;
1829
1830}
1831
1832
1833
1834
1835 function wpestate_show_pins() {
1836    "use strict";
1837
1838    jQuery("#results").show();
1839    jQuery("#results_wrapper").empty().append('<div class="preview_results_loading">'+mapfunctions_vars.loading_results+'</div>').show();
1840
1841    var action, category, city, area, rooms, baths, min_price, price_max, ajaxurl,postid,halfmap, all_checkers,newpage;
1842
1843    if(  typeof infoBox!=='undefined' && infoBox!== null ){
1844        infoBox.close();
1845    }
1846
1847    jQuery('#gmap-loading').show();
1848    //- removed &&  googlecode_regular_vars.is_adv_search!=='1'
1849
1850    if( typeof(googlecode_regular_vars)!='undefined' ) {
1851        if( (mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9') &&  mapfunctions_vars.is_half_map_list!=='1'   ){
1852            wpestate_show_pins_type2_tabs();
1853            return;
1854        }
1855
1856        if(mapfunctions_vars.adv_search_type==='2' && mapfunctions_vars.is_half_map_list!=='1' &&  mapfunctions_vars.is_adv_search!=='1' ){
1857            wpestate_show_pins_type2();
1858            return;
1859        }
1860    }else{
1861        if( (mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9')   ){
1862            wpestate_show_pins_type2_tabs();
1863            return;
1864        }
1865
1866        if(mapfunctions_vars.adv_search_type==='2' && mapfunctions_vars.is_half_map_list!=='1'  ){
1867            wpestate_show_pins_type2();
1868            return;
1869        }
1870    }
1871
1872
1873
1874    if(mapfunctions_vars.custom_search==='yes'){
1875       wpestate_show_pins_custom_search();
1876       return;
1877    }
1878
1879
1880
1881    action      =   jQuery('#adv_actions').attr('data-value');
1882    category    =   jQuery('#adv_categ').attr('data-value');
1883    city        =   jQuery('#advanced_city').attr('data-value');
1884    area        =   jQuery('#advanced_area').attr('data-value');
1885    rooms       =   parseFloat(jQuery('#adv_rooms').val(), 10);
1886    baths       =   parseFloat(jQuery('#adv_bath').val(), 10);
1887    min_price   =   parseFloat(jQuery('#price_low').val(), 10);
1888    price_max   =   parseFloat(jQuery('#price_max').val(), 10);
1889    postid      =   parseFloat(jQuery('#adv-search-1').attr('data-postid'), 10);
1890    ajaxurl     =   ajaxcalls_vars.admin_url + 'admin-ajax.php';
1891
1892
1893
1894    if ( parseInt(mapfunctions_vars.is_half)===1 ){
1895        if(first_time_wpestate_show_inpage_ajax_half===0){
1896            first_time_wpestate_show_inpage_ajax_half=1;
1897        }else{
1898            wpestate_show_inpage_ajax_half();
1899        }
1900
1901    }
1902
1903    all_checkers = '';
1904    jQuery('.search_wrapper .extended_search_check_wrapper  input[type="checkbox"]').each(function () {
1905        if (jQuery(this).is(":checked")) {
1906            all_checkers = all_checkers + "," + jQuery(this).attr("name-title");
1907        }
1908    });
1909
1910    halfmap     =   0;
1911    newpage     =   0;
1912    if( jQuery('#google_map_prop_list_sidebar').length ){
1913        halfmap    = 1;
1914    }
1915
1916    postid=1;
1917    if(  document.getElementById('search_wrapper') ){
1918        postid      =   parseInt(jQuery('#search_wrapper').attr('data-postid'), 10);
1919    }
1920
1921
1922    var geo_lat     =   '';
1923    var geo_long    =   '';
1924    var geo_rad     =   '';
1925
1926    if( jQuery("#geolocation_search").length > 0){
1927        geo_lat     =   jQuery('#geolocation_lat').val();
1928        geo_long    =   jQuery('#geolocation_long').val();
1929        geo_rad     =   jQuery('#geolocation_radius').val();
1930
1931    }
1932
1933    var nonce = jQuery('#wpestate_ajax_filtering').val();
1934    jQuery.ajax({
1935        type: 'POST',
1936        url: ajaxurl,
1937        dataType: 'json',
1938        data: {
1939            'action'            :   'wpestate_classic_ondemand_pin_load',
1940            'action_values'     :   action,
1941            'category_values'   :   category,
1942            'city'              :   city,
1943            'area'              :   area,
1944            'advanced_rooms'    :   rooms,
1945            'advanced_bath'     :   baths,
1946            'price_low'         :   min_price,
1947            'price_max'         :   price_max,
1948            'newpage'           :   newpage,
1949            'postid'            :   postid,
1950            'halfmap'           :   halfmap,
1951            'all_checkers'      :   all_checkers,
1952            'geo_lat'           :   geo_lat,
1953            'geo_long'          :   geo_long,
1954            'geo_rad'           :   geo_rad,
1955            'security'          :   nonce
1956        },
1957        success: function (data) {
1958            var no_results = parseInt(data.no_results);
1959
1960            if(no_results!==0){
1961                wpestate_load_on_demand_pins(data.markers,no_results,1);
1962            }else{
1963                wpestate_show_no_results();
1964            }
1965               jQuery('#gmap-loading').hide();
1966
1967        },
1968        error: function (errorThrown) {
1969
1970        }
1971    });//end ajax
1972
1973 }
1974
1975
1976
1977
1978
1979function wpestate_show_pins_type2(){
1980    "use strict";
1981    var action, category, location_search, ajaxurl,postid,halfmap, all_checkers,newpage;
1982    action      =   jQuery('#adv_actions').attr('data-value');
1983    category    =   jQuery('#adv_categ').attr('data-value');
1984    location_search    =   jQuery('#adv_location').val();
1985    postid      =   parseInt(jQuery('#adv-search-1').attr('data-postid'), 10);
1986    ajaxurl     =   ajaxcalls_vars.admin_url + 'admin-ajax.php';
1987
1988    halfmap     =   0;
1989    newpage     =   0;
1990
1991    if( jQuery('#google_map_prop_list_sidebar').length ){
1992        halfmap    = 1;
1993    }
1994
1995    postid=1;
1996
1997    if(  document.getElementById('search_wrapper') ){
1998        postid      =   parseInt(jQuery('#search_wrapper').attr('data-postid'), 10);
1999    }
2000    var nonce = jQuery('#wpestate_ajax_filtering').val();
2001    jQuery.ajax({
2002        type: 'POST',
2003        url: ajaxurl,
2004        dataType: 'json',
2005
2006        data: {
2007            'action'            :   'wpestate_classic_ondemand_pin_load_type2',
2008            'action_values'     :   action,
2009            'category_values'   :   category,
2010            'location'          :   location_search,
2011            'security'          :   nonce
2012        },
2013        success: function (data) {
2014            var no_results = parseInt(data.no_results);
2015
2016            if(no_results!==0){
2017                wpestate_load_on_demand_pins(data.markers,no_results,1);
2018            }else{
2019                wpestate_show_no_results();
2020            }
2021            jQuery('#gmap-loading').hide();
2022
2023        },
2024        error: function (errorThrown) {
2025        }
2026    });//end ajax
2027
2028
2029    if ( parseInt(mapfunctions_vars.is_half)===1 ){
2030        if(first_time_wpestate_show_inpage_ajax_half===0){
2031            first_time_wpestate_show_inpage_ajax_half=1;
2032        }else{
2033            wpestate_show_inpage_ajax_half();
2034        }
2035
2036    }
2037 }
2038
2039
2040
2041
2042
2043
2044function wpestate_show_pins_type2_tabs(){
2045    "use strict";
2046    var action, category, location_search, ajaxurl,postid,halfmap, all_checkers,newpage,picked_tax;
2047
2048    action              =   jQuery('.tab-pane.active #adv_actions').attr('data-value');
2049    if(typeof action === 'undefined'){
2050        action='';
2051    }
2052    category            =   jQuery('.tab-pane.active #adv_categ').attr('data-value');
2053    if(typeof category === 'undefined'){
2054        category='';
2055    }
2056    location_search     =   jQuery('.tab-pane.active #adv_location').val();
2057    picked_tax          =   jQuery('.tab-pane.active .picked_tax').val();
2058
2059
2060    postid      =   parseInt(jQuery('#adv-search-1').attr('data-postid'), 10);
2061    ajaxurl     =   ajaxcalls_vars.admin_url + 'admin-ajax.php';
2062    ajaxurl     =   ajaxcalls_vars.wpestate_ajax;
2063    halfmap     =   0;
2064    newpage     =   0;
2065
2066
2067    if( jQuery('#google_map_prop_list_sidebar').length ){
2068        halfmap    = 1;
2069    }
2070
2071    postid=1;
2072
2073    if(  document.getElementById('search_wrapper') ){
2074        postid      =   parseInt(jQuery('#search_wrapper').attr('data-postid'), 10);
2075    }
2076
2077    var term_id=jQuery('.tab-pane.active .term_id_class').val();
2078
2079    all_checkers = '';
2080    jQuery('.tab-pane.active .extended_search_check_wrapper input[type="checkbox"]').each(function () {
2081        if (jQuery(this).is(":checked")) {
2082            all_checkers = all_checkers + "," + jQuery(this).attr("name-title");
2083        }
2084    });
2085
2086    var nonce = jQuery('#wpestate_ajax_filtering').val();
2087
2088    jQuery.ajax({
2089        type: 'POST',
2090        url: ajaxurl,
2091        dataType: 'json',
2092
2093        data: {
2094            'action'            :   'wpestate_classic_ondemand_pin_load_type2_tabs',
2095            'action_values'     :   action,
2096            'category_values'   :   category,
2097            'location'          :   location_search,
2098            'picked_tax'        :   picked_tax,
2099            'all_checkers'      :   all_checkers,
2100            'security'          :   nonce
2101        },
2102        success: function (data) {
2103
2104            var no_results = parseInt(data.no_results);
2105
2106            if(no_results!==0){
2107                wpestate_load_on_demand_pins(data.markers,no_results,1);
2108            }else{
2109                wpestate_show_no_results();
2110            }
2111               jQuery('#gmap-loading').hide();
2112
2113        },
2114        error: function (errorThrown) {
2115
2116        }
2117    });//end ajax
2118
2119    if ( parseInt(mapfunctions_vars.is_half)===1 ){
2120        if(first_time_wpestate_show_inpage_ajax_half===0){
2121            first_time_wpestate_show_inpage_ajax_half=1;
2122        }else{
2123            wpestate_show_inpage_ajax_half();
2124        }
2125
2126    }
2127 }
2128
2129
2130function wpestate_show_pins_custom_search(){
2131    "use strict";
2132
2133
2134
2135    var ajaxurl,initial_array_last_item,array_last_item,how_holder,slug_holder,val_holder,position, inserted_val,temp_val,term_id,halfmap,newpage,postid,slider_min,slider_max;
2136    ajaxurl             =   ajaxcalls_vars.wpestate_ajax;;
2137    inserted_val        =   0;
2138    array_last_item     =   parseInt( mapfunctions_vars.fields_no,10);
2139    initial_array_last_item =array_last_item;
2140    val_holder          =   [];
2141    slug_holder         =   [];
2142    how_holder          =   [];
2143
2144    //slug_holder         =   mapfunctions_vars.slugs;
2145    slug_holder = JSON.parse(JSON.stringify(mapfunctions_vars.slugs));
2146
2147   // how_holder          =   mapfunctions_vars.hows;
2148   how_holder= JSON.parse(JSON.stringify(mapfunctions_vars.hows));
2149
2150
2151
2152    var term_counter=0;
2153
2154
2155
2156    if( mapfunctions_vars.slider_price ==='yes' ){
2157        slider_min = jQuery('#price_low').val();
2158        slider_max = jQuery('#price_max').val();
2159
2160    }   
2161    
2162    if(jQuery('.wpresidence-component3-min-price_input_class').length>0){
2163
2164        slider_min = jQuery('.wpresidence-component3-min-price_input_class').val();
2165        slider_max = jQuery('.wpresidence-component3-max-price_input_class').val();
2166    }
2167
2168
2169    var i;
2170    term_counter=parseInt( jQuery('.tab-pane.active').find('.term_counter').val(),10);
2171
2172
2173
2174
2175    if( (mapfunctions_vars.adv_search_type==='6' || mapfunctions_vars.adv_search_type==='7' ) ){ //&&  !jQuery('.halfsearch')[0]
2176        term_id=jQuery('.tab-pane.active .term_id_class').val();
2177
2178        if( mapfunctions_vars.slider_price ==='yes' ){
2179            slider_min = jQuery('#price_low_'+term_id).val();
2180            slider_max = jQuery('#price_max_'+term_id).val();
2181        }
2182
2183        if(jQuery('.tab-pane.active .wpresidence-component3-min-price_input_class').length>0){
2184            slider_min = jQuery('.tab-pane.active .wpresidence-component3-min-price_input_class').val();
2185            slider_max = jQuery('.tab-pane.active .wpresidence-component3-max-price_input_class').val();
2186        }
2187
2188        var start_counter = term_counter *mapfunctions_vars.fields_no;
2189        if(term_counter>0){
2190            array_last_item=(array_last_item*term_counter)+array_last_item;
2191
2192        }
2193
2194
2195        for ( i=start_counter; i<array_last_item;i++){
2196
2197
2198            if ( how_holder[i]=='date bigger' || how_holder[i]=='date smaller'){
2199                temp_val = wpestate_get_custom_value_tab_search (term_id+slug_holder[i]);
2200            }else{
2201                temp_val = wpestate_get_custom_value_tab_search (slug_holder[i]);
2202            }
2203
2204            if(typeof(temp_val)==='undefined'){
2205                temp_val='';
2206            }
2207
2208            val_holder.push(  temp_val );
2209
2210        }
2211
2212
2213
2214    }else{
2215        for (i=0; i<array_last_item;i++){
2216
2217            temp_val = wpestate_get_custom_value (slug_holder[i]);
2218            if(typeof(temp_val)==='undefined'){
2219                temp_val='';
2220            }
2221            val_holder.push(  temp_val );
2222        }
2223
2224    }
2225
2226
2227
2228
2229
2230    if( (mapfunctions_vars.adv_search_type==='6' || mapfunctions_vars.adv_search_type==='7' || mapfunctions_vars.adv_search_type==='8' || mapfunctions_vars.adv_search_type==='9' ) ){
2231        var tab_tax=jQuery('.adv_search_tab_item.active').attr('data-tax');
2232
2233
2234        if( jQuery('.halfsearch')[0] ){
2235            tab_tax=jQuery('.halfsearch').attr('data-tax');
2236        }
2237
2238
2239        if(tab_tax === 'property_category'){
2240            slug_holder[array_last_item]='adv_categ';
2241        }else if(tab_tax === 'property_action_category'){
2242            slug_holder[array_last_item]='adv_actions';
2243        }else if(tab_tax === 'property_city'){
2244            slug_holder[array_last_item]='advanced_city';
2245        }else if(tab_tax === 'property_area'){
2246            slug_holder[array_last_item]='advanced_area';
2247        }else if(tab_tax === 'property_county_state'){
2248            slug_holder[array_last_item]='county-state';
2249        }
2250
2251        how_holder[array_last_item]='like';
2252
2253
2254        val_holder[initial_array_last_item]=jQuery('.adv_search_tab_item.active').attr('data-term');
2255
2256
2257    }
2258
2259
2260    if ( parseInt(mapfunctions_vars.is_half)===1 ){
2261        if(first_time_wpestate_show_inpage_ajax_half===0){
2262          
2263            first_time_wpestate_show_inpage_ajax_half=1;
2264        }else{
2265       
2266            wpestate_show_inpage_ajax_half();
2267        }
2268
2269    }
2270    //was 2 times !
2271
2272    var   all_checkers = '';
2273
2274     if( mapfunctions_vars.adv_search_type==='6' ){
2275        jQuery('.tab-pane.active .extended_search_check_wrapper  input[type="checkbox"]').each(function () {
2276            if (jQuery(this).is(":checked")) {
2277                all_checkers = all_checkers + "," + jQuery(this).attr("name-title");
2278            }
2279        });
2280    }else{
2281
2282        jQuery('.search_wrapper .extended_search_check_wrapper  input[type="checkbox"]').each(function () {
2283            if (jQuery(this).is(":checked")) {
2284                all_checkers = all_checkers + "," + jQuery(this).attr("name-title");
2285            }
2286        });
2287    }
2288
2289
2290
2291
2292
2293    halfmap     =   0;
2294    newpage     =   0;
2295    if( jQuery('#google_map_prop_list_sidebar').length ){
2296        halfmap    = 1;
2297    }
2298
2299    postid=1;
2300    if(  document.getElementById('search_wrapper') ){
2301        postid      =   parseInt(jQuery('#search_wrapper').attr('data-postid'), 10);
2302    }
2303
2304    var filter_search_action10 ='';
2305    var adv_location10 ='';
2306
2307    if( mapfunctions_vars.adv_search_type==='10' ){
2308        filter_search_action10   = jQuery('#adv_actions').attr('data-value');
2309        adv_location10           = jQuery('#adv_location').val();
2310
2311    }
2312
2313
2314    var filter_search_action11  =   '';
2315    var filter_search_categ11   =   '';
2316    var keyword_search          =   '';
2317    keyword_search              = jQuery('#keyword').val();
2318    if( mapfunctions_vars.adv_search_type==='11' ){
2319        filter_search_action11      = jQuery('#adv_actions').attr('data-value');
2320        filter_search_categ11       = jQuery('#adv_categ').attr('data-value');
2321        keyword_search              = jQuery('#keyword_search').val();
2322    }
2323
2324
2325    var geo_lat     =   '';
2326    var geo_long    =   '';
2327    var geo_rad     =   '';
2328    var componentsbeds = '';
2329    var componentsbaths= '';
2330
2331    if( jQuery("#geolocation_search").length > 0){
2332        geo_lat     =   jQuery('#geolocation_lat').val();
2333        geo_long    =   jQuery('#geolocation_long').val();
2334        geo_rad     =   jQuery('#geolocation_radius').val();
2335
2336    }
2337    if (jQuery('.tab-pane.active .geolocation_search_item').length>0){
2338     
2339        geo_lat = jQuery('.tab-pane.active .geolocation_lat').val();
2340        geo_long = jQuery('.tab-pane.active .geolocation_long').val();
2341        geo_rad = jQuery('.tab-pane.active #geolocation_radius').val();
2342    }
2343
2344
2345    if (jQuery('.wpestate-beds-baths-popoup-component').length>0){
2346        componentsbeds = jQuery('.wpresidence-componentsbeds').val();
2347        componentsbaths = jQuery('.wpresidence-componentsbaths').val();
2348    }
2349
2350
2351    if (jQuery('.tab-pane.active .wpestate-beds-baths-popoup-component').length>0){
2352        componentsbeds = jQuery('.tab-pane.active .wpresidence-componentsbeds').val();
2353        componentsbaths = jQuery('.tab-pane.active .wpresidence-componentsbaths').val();
2354    }
2355
2356
2357
2358
2359    var nonce = jQuery('#wpestate_ajax_filtering').val();
2360    jQuery.ajax({
2361        type: 'POST',
2362        url: ajaxurl,
2363        dataType: 'json',
2364        data: {
2365            'action'                    :   'wpestate_custom_ondemand_pin_load',
2366            'search_type'               :   mapfunctions_vars.adv_search_type,
2367            'val_holder'                :   val_holder,
2368            'newpage'                   :   newpage,
2369            'postid'                    :   postid,
2370            'halfmap'                   :   halfmap,
2371            'slider_min'                :   slider_min,
2372            'slider_max'                :   slider_max,
2373            'all_checkers'              :   all_checkers,
2374            'filter_search_action10'    :   filter_search_action10,
2375            'adv_location10'            :   adv_location10,
2376            'filter_search_action11'    :   filter_search_action11,
2377            'filter_search_categ11'     :   filter_search_categ11,
2378            'keyword_search'            :   keyword_search,
2379            'geo_lat'                   :   geo_lat,
2380            'geo_long'                  :   geo_long,
2381            'geo_rad'                   :   geo_rad,
2382            'term_counter'              :   term_counter,
2383            'componentsbeds'            :   componentsbeds,
2384            'componentsbaths'           :   componentsbaths,
2385            'security'                  :   nonce
2386        },
2387        success: function (data) {
2388
2389
2390            var no_results = parseInt(data.no_results);
2391            if(no_results!==0){
2392                wpestate_load_on_demand_pins(data.markers,no_results,1);
2393            }else{
2394                wpestate_show_no_results();
2395                wpestate_start_placing_geo_marker();
2396            }
2397            jQuery('#gmap-loading').hide();
2398
2399        },
2400        error: function (errorThrown) {
2401
2402
2403        }
2404    });//end ajax
2405
2406
2407 }
2408
2409
2410
2411
2412function wpestate_empty_map(){
2413    "use strict";
2414    if (typeof gmarkers !== 'undefined') {
2415
2416        if(wp_estate_kind_of_map== 1 ){
2417            for (var i = 0; i < gmarkers.length; i++) {
2418                gmarkers[i].setVisible(false);
2419                gmarkers[i].setMap(null);
2420            }
2421            gmarkers = [];
2422
2423
2424            if( typeof (mcluster)!=='undefined'){
2425                mcluster.clearMarkers();
2426            }
2427        }  else if (wp_estate_kind_of_map==2){
2428            if(typeof map !='undefined'){
2429                if (mapfunctions_vars.user_cluster === 'yes') {
2430                    if(map.hasLayer(markers_cluster)){
2431                        map.removeLayer(markers_cluster);
2432                    }
2433                }else{
2434                    for (var i = 0; i < gmarkers.length; i++) {
2435                        map.removeLayer(gmarkers[i]);
2436                    }
2437                }
2438                gmarkers = [];
2439                markers_cluster=L.markerClusterGroup({
2440                    showCoverageOnHover: false,
2441                    iconCreateFunction: function(cluster) {
2442                        return L.divIcon({ html: '<div class="leaflet_cluster">' + cluster.getChildCount() + '</div>' });
2443                    },
2444                });
2445                map.addLayer(markers_cluster);
2446            }
2447        }
2448    }
2449}
2450
2451
2452var    use_geolocation_marker=0;
2453function wpestate_load_on_demand_pins(markers,no_results,show_results_bar){
2454    "use strict";
2455    jQuery('#gmap-noresult').hide();
2456
2457    wpestate_empty_map();
2458    if(  document.getElementById('googleMap') ){
2459        //wpestate_setMarkers(map, markers);
2460        bounds_list =undefined;
2461        wpresidence_map_general_set_markers(map, markers,1);
2462
2463        wpestate_preview_listings(markers);
2464
2465        //set map cluster
2466        wpresidence_map_general_cluster();
2467
2468        wpresidence_map_general_fit_to_bounds(1);
2469
2470    }else{
2471        wpestate_preview_listings(markers);
2472    }
2473 
2474    wpestate_start_placing_geo_marker();
2475}
2476
2477
2478
2479function wpestate_start_placing_geo_marker(){
2480
2481    if( initialGeop === 0){
2482        var place_lat = jQuery('#geolocation_lat').val();
2483        var place_lng = jQuery('#geolocation_long').val();
2484
2485        if(place_lat!=='' && place_lng!='' && typeof(place_lat)!=='undefined' && typeof(place_lng)!='undefined' ){
2486            initialGeop=1;
2487            wpestate_geolocation_marker(place_lat,place_lng);
2488        }
2489    }
2490}
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502function  wpestate_preview_listings(markers){
2503    "use strict";
2504    var i           =   0;
2505    var to_append   =   '';
2506    var image       =   '';
2507    var title       =   '';
2508    var link        =   '';
2509    var clean_price =   '';
2510    var price       =   '';
2511    for (i = 0; i < markers.length; i++) {
2512        image       =   decodeURIComponent(markers[i][18]);
2513        title       =   decodeURIComponent(markers[i][0]);
2514        link        =   decodeURIComponent(markers[i][9]);
2515        clean_price =   decodeURIComponent(markers[i][11]);
2516        price       =   wpestate_get_price_currency ( decodeURIComponent(markers[i][5]),clean_price );
2517
2518        to_append=to_append+'<div class="preview_listing_unit" data-href="'+link+'">'+image+' <h4>'+title+'</h4><div class="preview_details">'+price+'</div></div>';
2519
2520
2521    }
2522
2523    jQuery('#results_wrapper').empty();
2524    jQuery('#results_no').show().text( markers.length);
2525
2526    jQuery('#results_wrapper').append(to_append);
2527
2528    jQuery('.preview_listing_unit').on( 'click', function(event) {
2529        event.preventDefault();
2530        var new_link;
2531        new_link =  jQuery(this).attr('data-href');
2532        window.open (new_link,'_self',false);
2533    });
2534
2535
2536}
2537
2538
2539function wpestate_get_price_currency(price,clean_price){
2540    "use strict";
2541    var new_price ='';
2542
2543    var my_custom_curr_symbol  =   decodeURIComponent ( wpestate_getCookie_map('my_custom_curr_symbol') );
2544    var my_custom_curr_coef    =   parseFloat( wpestate_getCookie_map('my_custom_curr_coef'));
2545    var my_custom_curr_pos     =   parseFloat( wpestate_getCookie_map('my_custom_curr_pos'));
2546    var my_custom_curr_cur_post=   wpestate_getCookie_map('my_custom_curr_cur_post');
2547    var slider_counter = 0;
2548
2549
2550    if (!isNaN(my_custom_curr_pos) && my_custom_curr_pos !== -1) {
2551        var temp_price =Number(clean_price*my_custom_curr_coef).toFixed(2);
2552        if (my_custom_curr_cur_post === 'before') {
2553            new_price = my_custom_curr_symbol+' '+temp_price;
2554        } else {
2555            new_price = temp_price+' '+my_custom_curr_symbol;
2556        }
2557
2558    } else {
2559        new_price=price;
2560    }
2561
2562    return new_price;
2563}
2564
2565function wpestate_getCookie_map(cname) {
2566    "use strict";
2567    var name = cname + "=";
2568    var ca = document.cookie.split(';');
2569    for(var i=0; i<ca.length; i++) {
2570        var c = ca[i];
2571        while (c.charAt(0)==' ') c = c.substring(1);
2572        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
2573    }
2574    return "";
2575   }
2576
2577
2578
2579function wpestate_show_no_results(){
2580    "use strict";
2581    jQuery('#results_no').show().text('0');
2582
2583    jQuery("#results_wrapper").empty().append('<div class="preview_results_loading">'+mapfunctions_vars.half_no_results+'</div>').show();
2584    jQuery('#gmap-noresult').show();
2585    if(  document.getElementById('google_map_prop_list_wrapper') ){
2586        jQuery('#listing_ajax_container').empty().append('<p class=" no_results_title ">'+mapfunctions_vars.half_no_results+'</p>');
2587    }
2588}
2589
2590
2591
2592function wpestate_show_inpage_ajax_tip2(){
2593    "use strict";
2594    if( jQuery('#gmap-full').hasClass('spanselected')){
2595        jQuery('#gmap-full').trigger('click');
2596    }
2597
2598
2599    if(mapfunctions_vars.custom_search==='yes'){
2600        wpestate_custom_search_start_filtering_ajax(1);
2601    }else{
2602        wpestate_start_filtering_ajax(1);
2603    }
2604}
2605
2606
2607
2608function wpestate_show_inpage_ajax_half(){
2609    "use strict";
2610
2611    jQuery('.half-pagination').remove();
2612    if(mapfunctions_vars.custom_search==='yes'){
2613        wpestate_custom_search_start_filtering_ajax(1);
2614    }else{
2615        wpestate_start_filtering_ajax(1);
2616    }
2617}
2618
2619
2620function wpestate_enable_half_map_pin_action (){
2621    "use strict";
2622    
2623    jQuery('#google_map_prop_list_sidebar .listing_wrapper').each(function(event){
2624        var listing_id = jQuery(this).attr('data-listid');      
2625    
2626        jQuery(this).on('mouseenter', function () {
2627            wpestate_hover_action_pin(listing_id);
2628        })
2629
2630        jQuery(this).on('mouseleave', function () {
2631            wpestate_return_hover_action_pin(listing_id);
2632        })
2633    
2634    });
2635
2636
2637  
2638}
2639
2640
2641/////////////////////////////////////////////////////////////////////////////////////////////////
2642/// get pin image
2643/////////////////////////////////////////////////////////////////////////////////////////////////
2644function wpestate_convertToSlug(Text){
2645    "use strict";
2646    return Text
2647        .toLowerCase()
2648        .replace(/ /g,'-')
2649        .replace(/[^\w-]+/g,'')
2650        ;
2651}
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661function wpestate_custompin(image){
2662    "use strict";
2663
2664    if( !mapfunctions_vars.hidden_map ){
2665        image ={
2666            path: google.maps.SymbolPath.CIRCLE,
2667            scale: 60,
2668            fillColor: "#0073e1",
2669            fillOpacity: 0.4,
2670            strokeWeight: 0.2
2671        }
2672        return image;
2673    }
2674
2675
2676
2677
2678    var extension='';
2679    var ratio = jQuery(window).dense('devicePixelRatio');
2680    if(ratio>1){
2681        extension='_2x';
2682    }
2683    var custom_img;
2684
2685
2686
2687    if(mapfunctions_vars.use_single_image_pin==='no'){
2688        if(image!==''){
2689            if( typeof( images[image] )=== 'undefined' || images[image]===''){
2690                custom_img= mapfunctions_vars.path+'/'+image+extension+'.png';
2691            }else{
2692                custom_img=images[image];
2693
2694                if(ratio>1){
2695                    custom_img =wpestate_get_custom_retina_pin(custom_img);
2696                }
2697            }
2698        }else{
2699            custom_img= mapfunctions_vars.path+'/none.png';
2700        }
2701
2702        if(typeof (custom_img)=== 'undefined'){
2703            custom_img= mapfunctions_vars.path+'/none.png';
2704        }
2705    }else{
2706
2707        if(ratio>1){
2708            custom_img= wpestate_get_custom_retina_pin(  images['single_pin'] );
2709        }else{
2710            custom_img= images['single_pin'];
2711        }
2712    }
2713
2714
2715    if(ratio>1){
2716        image = {
2717            url: custom_img,
2718            size :  new google.maps.Size(118, 118),
2719            scaledSize   :  new google.maps.Size(44, 48),
2720            origin: new google.maps.Point(0,0),
2721            anchor: new google.maps.Point(16,49 ),
2722            optimized:false
2723        };
2724
2725    }else{
2726        image = {
2727            url: custom_img,
2728            size :  new google.maps.Size(59, 59),
2729            origin: new google.maps.Point(0,0),
2730            anchor: new google.maps.Point(16,49 )
2731        };
2732    }
2733    return image;
2734}
2735
2736
2737/////////////////////////////////////////////////////////////////////////////////////////////////
2738//// Circle label
2739/////////////////////////////////////////////////////////////////////////////////////////////////
2740
2741function Label(opt_options) {
2742    "use strict";
2743    // Initialization
2744    this.setValues(opt_options);
2745
2746
2747    // Label specific
2748    var span = this.span_ = document.createElement('span');
2749    span.style.cssText = 'position: relative; left: -50%; top: 8px; ' +
2750    'white-space: nowrap;  ' +
2751    'padding: 2px; background-color: white;opacity:0.7';
2752
2753
2754    var div = this.div_ = document.createElement('div');
2755    div.appendChild(span);
2756    div.style.cssText = 'position: absolute; display: none';
2757}
2758
2759
2760if (typeof google !== 'undefined') {
2761    Label.prototype = new google.maps.OverlayView;
2762}
2763
2764// Implement onAdd
2765Label.prototype.onAdd = function() {
2766    "use strict";
2767    var pane = this.getPanes().overlayImage;
2768    pane.appendChild(this.div_);
2769
2770
2771  // Ensures the label is redrawn if the text or position is changed.
2772    var me = this;
2773    this.listeners_ = [
2774        google.maps.event.addListener(this, 'position_changed', function() { me.draw(); }),
2775        google.maps.event.addListener(this, 'visible_changed', function() { me.draw(); }),
2776        google.maps.event.addListener(this, 'clickable_changed', function() { me.draw(); }),
2777        google.maps.event.addListener(this, 'text_changed', function() { me.draw(); }),
2778        google.maps.event.addListener(this, 'zindex_changed', function() { me.draw(); }),
2779        google.maps.event.addDomListener(this.div_, 'click', function() {
2780            if (me.get('clickable')) {
2781              google.maps.event.trigger(me, 'click');
2782            }
2783        })
2784    ];
2785};
2786
2787
2788// Implement onRemove
2789Label.prototype.onRemove = function() {
2790    "use strict";
2791    this.div_.parentNode.removeChild(this.div_);
2792
2793
2794    // Label is removed from the map, stop updating its position/text.
2795    for (var i = 0, I = this.listeners_.length; i < I; ++i) {
2796      google.maps.event.removeListener(this.listeners_[i]);
2797    }
2798};
2799
2800
2801// Implement draw
2802Label.prototype.draw = function() {
2803    "use strict";
2804    var projection = this.getProjection();
2805    var position = projection.fromLatLngToDivPixel(this.get('position'));
2806
2807
2808    var div = this.div_;
2809    div.style.left = position.x + 'px';
2810    div.style.top = position.y + 'px';
2811
2812
2813    var visible = this.get('visible');
2814    div.style.display = visible ? 'block' : 'none';
2815
2816
2817    var clickable = this.get('clickable');
2818    this.span_.style.cursor = clickable ? 'pointer' : '';
2819
2820
2821    var zIndex = this.get('zIndex');
2822    div.style.zIndex = zIndex;
2823
2824
2825    this.span_.innerHTML = this.get('text').toString();
2826};
2827
2828
2829
2830/////////////////////////////////////////////////////////////////////////////////////////////////
2831/// close advanced search
2832/////////////////////////////////////////////////////////////////////////////////////////////////
2833function wpestate_close_adv_search(){
2834    "use strict";
2835}
2836
2837//////////////////////////////////////////////////////////////////////
2838/// show advanced search
2839//////////////////////////////////////////////////////////////////////
2840
2841
2842function wpestate_new_show_advanced_search(){
2843    "use strict";
2844    jQuery("#search_wrapper").removeClass("hidden");
2845}
2846
2847function wpestate_new_hide_advanced_search(){
2848    "use strict";
2849    if( mapfunctions_vars.show_adv_search ==='no' ){
2850        jQuery("#search_wrapper").addClass("hidden");
2851    }
2852
2853}
2854function is_marker_in_cluster (marker, cluster) {
2855
2856    var length = cluster.length;
2857
2858    for(var j = 0; j < length; j++) {
2859       
2860        if ( cluster[j].idul == marker ) {
2861            return true;
2862        }
2863    }
2864    return false;
2865}
2866
2867
2868function wpestate_hover_action_pin(listing_id){
2869    "use strict";
2870    for (var i = 0; i < gmarkers.length; i++) {
2871        if ( parseInt( gmarkers[i].idul,10) === parseInt( listing_id,10) ){
2872            if(wp_estate_kind_of_map===1){
2873
2874                google.maps.event.trigger(gmarkers[i], 'click');
2875                if(mapfunctions_vars.useprice !== 'yes'){
2876                    pin_hover_storage=gmarkers[i].icon;
2877                    gmarkers[i].setIcon(wpestate_custompinhover());
2878                }else{
2879                    gmarkers[i].addHoverClass();
2880                }
2881
2882
2883
2884            }else if(wp_estate_kind_of_map===2){
2885                wpestate_hover_action_pin_leaflet(listing_id,i);
2886            }
2887
2888        }
2889    }
2890}
2891
2892
2893
2894
2895function wpestate_hover_action_pin_leaflet(listing_id,in_array_id){
2896    const marker = gmarkers[in_array_id];
2897    map.panTo(marker.getLatLng());
2898    markers_cluster.refreshClusters();
2899    lealet_map_move_on_hover = 1;
2900
2901    if (!marker._icon) {
2902        marker.__parent.spiderfy();
2903    }
2904
2905    marker.togglePopup();
2906
2907    if (mapfunctions_vars.useprice === 'yes') {
2908        L.DomUtil.addClass(marker._icon, 'openstreet_price_marker_on_click_parent');
2909    } else {
2910        marker.setIcon(wpestate_custompinhover());
2911    }
2912
2913    map.invalidateSize();  markers_cluster.refreshClusters();
2914}
2915//unspiderfy
2916
2917
2918
2919
2920function wpestate_return_hover_action_pin_leaflet(listing_id,in_array_id){
2921    const marker = gmarkers[in_array_id];
2922
2923    marker.togglePopup();
2924    lealet_map_move_on_hover = 0;
2925  
2926    if (!marker._icon) {
2927      marker.__parent.unspiderfy();
2928    }
2929  
2930    if (mapfunctions_vars.useprice !== 'yes') {
2931      const markerImage = {
2932        iconUrl: wprentals_custompin_leaflet(marker.pin),
2933        iconSize: [44, 50],
2934        iconAnchor: [20, 50],
2935        popupAnchor: [1, -50]
2936      };
2937      marker.setIcon(L.icon(markerImage));
2938    } else {
2939      L.DomUtil.removeClass(marker._icon, 'openstreet_price_marker_on_click_parent');
2940    }
2941  
2942    map.invalidateSize();
2943    markers_cluster.refreshClusters();
2944
2945}
2946
2947
2948
2949
2950
2951function wpestate_return_hover_action_pin(listing_id){
2952    
2953    "use strict";
2954    for (var i = 0; i < gmarkers.length; i++) {
2955        if ( parseInt( gmarkers[i].idul,10) === parseInt( listing_id,10) ){
2956
2957            if(wp_estate_kind_of_map===1){
2958                if (parseInt(gmarkers[i].idul, 10) === parseInt(listing_id, 10)) {
2959                    
2960                    infoBox.close();
2961                    if(mapfunctions_vars.useprice !== 'yes'){
2962                        gmarkers[i].setIcon(pin_hover_storage);
2963                    }else{
2964                       gmarkers[i].removeHoverClass();
2965                    }
2966                }
2967            }  else if(wp_estate_kind_of_map===2){
2968                wpestate_return_hover_action_pin_leaflet(listing_id,i);
2969               
2970            }
2971
2972
2973        }
2974    }
2975
2976}
2977
2978
2979function wpestate_custompinhover(){
2980    "use strict";
2981
2982    var custom_img,image;
2983    var extension='';
2984    var ratio = jQuery(window).dense('devicePixelRatio');
2985
2986    if(ratio>1){
2987        extension='_2x';
2988    }
2989    custom_img= mapfunctions_vars.path+'/hover'+extension+'.png';
2990
2991    if(wp_estate_kind_of_map===2){
2992       if(ratio>1){
2993
2994            var markerImage    = L.icon({
2995                iconUrl: custom_img,
2996                iconSize: [90, 90],
2997                iconAnchor: [40, 90],
2998                popupAnchor: [1, -90]
2999            });
3000       }else{
3001            var markerImage    = L.icon({
3002                iconUrl: custom_img,
3003                iconSize: [44, 50],
3004                iconAnchor: [20, 50],
3005                popupAnchor: [1, -50]
3006            });
3007        }
3008        return markerImage;
3009
3010    }
3011
3012
3013    if(ratio>1){
3014
3015        image = {
3016            url: custom_img,
3017            size :  new google.maps.Size(132, 144),
3018            scaledSize   :  new google.maps.Size(66, 72),
3019            origin: new google.maps.Point(0,0),
3020            anchor: new google.maps.Point(25,72 )
3021          };
3022
3023    }else{
3024        image = {
3025            url: custom_img,
3026            size: new google.maps.Size(90, 90),
3027            origin: new google.maps.Point(0,0),
3028            anchor: new google.maps.Point(25,72 )
3029        };
3030    }
3031
3032
3033    return image;
3034}
3035
3036
3037
3038
3039function wpestate_map_callback(callback){
3040    "use strict";
3041    callback(1);
3042}
3043
3044/*
3045*
3046* return google poi types for selected poi
3047*
3048*/
3049
3050 function wpestate_return_poi_values (poi_type){
3051    var  show_poi;
3052    switch(poi_type) {
3053            case 'transport':
3054                show_poi = ['bus_station', 'airport', 'train_station', 'subway_station'];
3055                break;
3056            case 'supermarkets':
3057                show_poi = ['grocery_or_supermarket', 'shopping_mall'];
3058                break;
3059            case 'schools':
3060                show_poi = ['school', 'university'];
3061                break;
3062            case 'restaurant':
3063                show_poi=['restaurant'];
3064                break;
3065            case 'pharma':
3066                show_poi = ['pharmacy'];
3067                break;
3068            case 'hospitals':
3069                show_poi = ['hospital'];
3070                break;
3071        }
3072    return show_poi;
3073};
3074
3075
3076/*
3077*
3078* add poi markers on the map
3079*
3080*/
3081
3082function wpestate_googlemap_display_poi (results, status,map_for_poi,poi_marker_array) {
3083    if ( google.maps.places.PlacesServiceStatus.OK == status  ) {
3084        for (var i = 0; i < results.length; i++) {
3085            poi_marker  =   wpestate_create_poi_marker(results[i],map_for_poi);
3086            poi_marker_array.push(poi_marker);
3087        }
3088    }
3089    return poi_marker_array;
3090};
3091
3092/*
3093*
3094* create the poi markers
3095*
3096*/
3097 
3098function wpestate_create_poi_marker (place,map_for_poi){
3099    var marker = new google.maps.Marker({
3100            map: map_for_poi,
3101            position: place.geometry.location,
3102            show_poi:poi_type,
3103            icon: mapfunctions_vars.path+'/poi/'+poi_type+'.png'
3104    });
3105
3106
3107    var boxText         =   document.createElement("div");
3108    var infobox_poi     =   new InfoBox({
3109                content: boxText,
3110                boxClass:"estate_poi_box",
3111                pixelOffset: new google.maps.Size(-30, -70),
3112                zIndex: null,
3113                maxWidth: 275,
3114                closeBoxMargin: "-13px 0px 0px 0px",
3115                closeBoxURL: "",
3116                infoBoxClearance: new google.maps.Size(1, 1),
3117                pane: "floatPane",
3118                enableEventPropagation: false
3119            });
3120
3121    google.maps.event.addListener(marker, 'mouseover', function(event) {
3122        infobox_poi.setContent(place.name);
3123        infobox_poi.open(map_for_poi, this);
3124    });
3125
3126    google.maps.event.addListener(marker, 'mouseout', function(event) {
3127        if( infobox_poi!== null){
3128            infobox_poi.close();
3129        }
3130    });
3131    return marker;
3132};
3133
3134
3135/*
3136*
3137* initialize poi values
3138*
3139*/
3140
3141function wpestate_initialize_poi ( map_for_poi,what,elementId){
3142    "use strict";
3143
3144    var poi_marker_array=[];
3145
3146    
3147
3148
3149    if( parseInt(mapbase_vars.wp_estate_kind_of_map) == 2 || typeof(google.maps.places)==='undefined'){
3150        return;
3151    }
3152    var poi_service         =   new google.maps.places.PlacesService( map_for_poi );
3153    var already_serviced    =   '';
3154    var show_poi            =   '';
3155    var map_bounds          =   map_for_poi.getBounds();
3156    var selector            =   '.google_poi';
3157    if(what==2){
3158        selector = '.google_poish';
3159    }
3160
3161
3162
3163    var elementWrapper = jQuery('#'+elementId).parent();
3164
3165    elementWrapper.find(selector).on( 'click', function(event) {
3166        event.stopPropagation();
3167        poi_type        =   jQuery(this).attr('data-value');
3168        var position    =   map_for_poi.getCenter();
3169        var show_poi    =   wpestate_return_poi_values(poi_type);
3170
3171
3172        if( jQuery(this).hasClass('poi_active')){
3173            wpestate_show_hide_poi(poi_type,'hide',poi_marker_array);
3174        }else{
3175
3176            already_serviced = wpestate_show_hide_poi(poi_type,'show', poi_marker_array);
3177            if(already_serviced===1){
3178
3179                var request = {
3180                    location:   position,
3181                    types:      show_poi,
3182                    bounds:     map_bounds,
3183                    radius:     2500,
3184                };
3185                poi_service.nearbySearch( request,function (results, status){
3186                    poi_marker_array=wpestate_googlemap_display_poi(results, status,map_for_poi, poi_marker_array);
3187                });
3188            }
3189        }
3190        jQuery(this).toggleClass('poi_active');
3191    });
3192
3193};
3194
3195
3196/*
3197*
3198*hide-show poi
3199*
3200*/
3201
3202
3203function wpestate_show_hide_poi (poi_type,showhide,poi_marker_array){
3204    var is_hiding=1;
3205
3206
3207        for (var i = 0; i < poi_marker_array.length; i++) {
3208            if (poi_marker_array[i].show_poi === poi_type){
3209                if(showhide==='hide'){
3210                    poi_marker_array[i].setVisible(false);
3211                }else{
3212                    poi_marker_array[i].setVisible(true);
3213                    is_hiding=0;
3214                }
3215            }
3216        }
3217 
3218    return is_hiding;
3219};
3220
3221
3222
3223
3224/*
3225*
3226*
3227*
3228*/
3229
3230function wpestate_geolocation_marker (place_lat, place_lng){
3231    "use strict";
3232  
3233    var place_radius;
3234    var read_radius =parseInt( jQuery('#geolocation_radius').val(),10 );
3235    
3236    if ( isNaN(read_radius) ){
3237        read_radius  = parseInt( mapfunctions_vars.geolocation_radius,10);
3238    }
3239    
3240    if(control_vars.geo_radius_measure==='miles'){
3241        place_radius =parseInt( read_radius*1609.34) ;
3242    }else{
3243        place_radius =parseInt( read_radius*1000 );
3244    }
3245    
3246    if( wp_estate_kind_of_map===1){
3247        var place_position=new google.maps.LatLng(place_lat, place_lng);
3248        map.setCenter(place_position);
3249
3250        if(placeCircle!=''){
3251            placeCircle.setMap(null);
3252            placeCircle='';
3253        }
3254
3255        /*var marker = new google.maps.Marker({
3256            map: map,
3257            position:  place_position,
3258            icon: mapfunctions_vars.path+'/poi/location.png'
3259        });
3260        */
3261
3262        var populationOptions = {
3263            strokeColor: '#67cfd8',
3264            strokeOpacity: 0.6,
3265            strokeWeight: 1,
3266            fillColor: '#1CA8DD',
3267            fillOpacity: 0.2,
3268            map: map,
3269            center: place_position,
3270            radius: parseInt(place_radius,10)
3271        };
3272        placeCircle = new google.maps.Circle(populationOptions);
3273        map.fitBounds(placeCircle.getBounds());
3274    }else{
3275        var markerCenter    =   L.latLng(place_lat, place_lng );
3276        map.panTo(markerCenter);
3277       
3278         var markerImage = {
3279                iconUrl:  mapfunctions_vars.path+'/poi/location.png',
3280                iconSize: [28, 38],
3281                iconAnchor: [10, 19],
3282                popupAnchor: [1, -18]
3283            };
3284        var  markerOptions = {
3285            riseOnHover: true
3286        };
3287       
3288        if(circleLayer!=='' && map.hasLayer(circleLayer)){
3289            map.removeLayer(circleLayer);
3290        }
3291        circleLayer=L.featureGroup();
3292        markerOptions.icon = L.icon( markerImage );
3293        L.marker( markerCenter, markerOptions ).addTo( map );
3294        placeCircle= L.circle( markerCenter, parseInt(place_radius,10) ).addTo(circleLayer);
3295
3296        map.addLayer(circleLayer);
3297        map.fitBounds(placeCircle.getBounds());
3298    }
3299
3300
3301
3302}
3303
3304
3305function wpestate_makeSafeForCSS(name) {
3306    return name.replace(/[^a-z0-9]/g, function(s) {
3307        var c = s.charCodeAt(0);
3308        if (c == 32) return '-';
3309        if (c >= 65 && c <= 90) return  s.toLowerCase();
3310        return  ('000' + c.toString(16)).slice(-4);
3311    });
3312}
3313
3314
3315

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.