PageSourceSearch

https://boisehunterhomes.com/wp-content/themes/wpresidence/js/google_js/mapfunctions.js?ver=5.3.0

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

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.