PageSourceSearch

https://www.coffee-inn.lt/Plugin/SiteMaps/assets/js/map_18.js

js coffee-inn.lt collected 2026-10-09 01:46:49 UTC 33,048 bytes, 1,008 lines download raw bytes

1var siteMaps = function () {
2
3
4    var data;
5    var gm;
6    var markerClusterer;
7
8
9    //markers = {};
10    var markers = [];
11    var groups = [];
12    markerList = [];
13    groupsList = [];
14    var mgr;
15    var allmarkers = [];
16    var itemicon = [];
17    var openwindow;
18    var grId;
19    var initZoom = 1;
20    var initMarkers = 0;
21    var ib = new InfoBox();
22    var countryZoomMax = 6;
23
24    function getMarkerIcon(markerColor) {
25        if ((typeof(markerColor) == "undefined") || (markerColor == null)) {
26            markerColor = "black";
27        }
28        if (!itemicon[markerColor]) {
29            itemicon[markerColor] = new google.maps.MarkerImage(ip.baseUrl + "Plugin/SiteMaps/assets/img/marker-icon-" + markerColor + ".png");
30        }
31        return itemicon[markerColor];
32    }
33
34    itemicon["black"] = getMarkerIcon("black");
35    itemicon["orange"] = getMarkerIcon("orange");
36    itemicon["black-mini"] = getMarkerIcon("black-mini");
37    itemicon["orange-mini"] = getMarkerIcon("orange-mini");
38
39    function getMapCenter() {
40        if (grId) {
41            fitMap(grId);
42        }
43    }
44
45    function extMapCenter(getGid) {
46        if (getGid && initZoom) {
47            fitMap(getGid);
48        }
49    }
50
51    function init(settings) {
52
53        var iden = settings.mapdata.iden;
54        gm = settings.mapdata.markersgm;
55        var options = {
56            zoom: parseInt(settings.mapdata.mapZoom),
57            center: new google.maps.LatLng(settings.mapdata.lat, settings.mapdata.lon),
58            mapTypeId: google.maps.MapTypeId.ROADMAP,
59            styles: styles,
60            mapTypeControl: false,
61            streetViewControl: false,
62            scrollwheel: false,
63            maxZoom: 16
64        };
65
66        map = new google.maps.Map(document.getElementById(settings.idSelector), options);
67        markerLocation = settings.markerLocation;
68        var elements = getMapElements(iden);
69        loadMarkerClusterer();
70        //getElements(elements);
71
72        var $mapBlockContainer = $(".map-block-container");
73
74        google.maps.event.addListenerOnce(map, 'idle', function () {
75
76            $mapBlockContainer.height($(window).height() - $mapBlockContainer.offset().top);
77            google.maps.event.trigger(map, "resize");
78        });
79
80        /*google.maps.event.addDomListener(window, 'load', function () {
81         loadMarkerClusterer();
82         });*/
83
84        google.maps.event.addDomListener(window, "resize", function () {
85            var center = map.getCenter();
86            google.maps.event.trigger(map, "resize");
87            map.setCenter(center);
88        });
89
90        if (settings.mapdata.showall == 1) {
91            mapResetToCountries();
92        }
93
94        var dom = document.getElementsByClassName("map-container");
95        for (var i = 0; i < dom.length; i++) {
96            dom[i].addEventListener('mousemove', function (e) {
97                e.stopPropagation();
98                e.stopImmediatePropagation();
99            }, false);
100            dom[i].addEventListener('touchmove', function (e) {
101                e.stopPropagation();
102                e.stopImmediatePropagation();
103            }, false);
104        }
105    }
106
107    function loadMarkerClusterer() {
108        "use strict";
109
110        var $mapBlockContainer = $(".map-block-container");
111        $mapBlockContainer.height($(window).height() - $mapBlockContainer.offset().top);
112
113        google.maps.event.trigger(map, "resize");
114
115        var boxText = document.createElement("div");
116        boxText.style.cssText = "color: #000;padding: 37px 23px; text-align: center;";
117
118        var infoboxOptions = {
119            content: boxText,
120            disableAutoPan: false,
121            maxWidth: 0,
122            pixelOffset: new google.maps.Size(-113, -310),
123            zIndex: null,
124            boxStyle: {
125                background: "url('" + ip.baseUrl + "Plugin/SiteMaps/assets/img/marker-info-bg.png') no-repeat",
126                opacity: 1,
127                width: "229px",
128                height: "240px"
129            },
130            closeBoxMargin: "20px 18px 0px 0px",
131            closeBoxURL: ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-info-close.png',
132            infoBoxClearance: new google.maps.Size(1, 1),
133            isHidden: false,
134            pane: "floatPane",
135            enableEventPropagation: false
136        };
137
138        var markers = [];
139        var iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black-mini.png';
140        var iconurlOrange = ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black-mini.png';
141        var size = new google.maps.Size(70, 96);
142
143        if(window.devicePixelRatio > 1.5){
144            iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected]';
145            iconurlOrange = ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected]';
146            size = new google.maps.Size(140, 177);
147        }
148
149        for (var i = 0; i < data.length; i++) {
150            var dataItem = data[i];
151            //var markerImage = new google.maps.Marker(ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black-mini.png', new google.maps.Size(70, 96));
152            var latLng = new google.maps.LatLng(dataItem.lat,
153                dataItem.lon);
154
155
156
157            var marker = new google.maps.Marker({
158                position: latLng,
159                icon: {
160                    url: iconurl,
161                    size: size,
162                    scaledSize: new google.maps.Size(70, 96),
163                    origin: new google.maps.Point(0, 0),
164                    anchor: new google.maps.Point(25, 96)
165                },
166                title: dataItem.address,
167                phone: dataItem.phone,
168                itemlat: dataItem.lat,
169                itemlon: dataItem.lon,
170                dayone: dataItem.dayone,
171                daytwo: dataItem.daytwo,
172                daythree: dataItem.daythree,
173                dayfour: dataItem.dayfour,
174                timeone: dataItem.timeone,
175                timetwo: dataItem.timetwo,
176                timethree: dataItem.timethree,
177                timefour: dataItem.timefour,
178                countryid: dataItem.countryid
179            });
180
181            google.maps.event.addListener(marker, "mouseover", (function (marker) {
182                return function () {
183                    marker.setIcon({
184                        url: iconurlOrange,
185                        size: size,
186                        scaledSize: new google.maps.Size(70, 96),
187                        origin: new google.maps.Point(0, 0),
188                        anchor: new google.maps.Point(25, 96)
189                    });
190                }
191            })(marker));
192
193            google.maps.event.addListener(marker, "mouseout", (function (marker) {
194                return function () {
195                    marker.setIcon({
196                        url: iconurl,
197                        size: size,
198                        scaledSize: new google.maps.Size(70, 96),
199                        origin: new google.maps.Point(0, 0),
200                        anchor: new google.maps.Point(25, 96)
201                    });
202                }
203            })(marker));
204
205            google.maps.event.addListener(marker, 'click', (function (marker) {
206                closeIW();
207                var timeContent = '';
208
209                var cols = 0;
210
211                if (typeof marker.dayone !== 'undefined' && typeof marker.timeone !== 'undefined' && marker.dayone && marker.timeone) {
212                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.dayone + '</div><div class="value">' + marker.timeone + '</div></div>';
213                    cols++;
214                }
215
216                if (typeof marker.daytwo !== 'undefined' && typeof marker.timetwo !== 'undefined' && marker.daytwo && marker.timetwo) {
217                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.daytwo + '</div><div class="value">' + marker.timetwo + '</div></div>';
218                    cols++;
219                }
220
221                if (typeof marker.daythree !== 'undefined' && typeof marker.timethree !== 'undefined' && marker.daythree && marker.timethree) {
222                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.daythree + '</div><div class="value">' + marker.timethree + '</div></div>';
223                    cols++;
224                }
225
226                if (typeof marker.dayfour !== 'undefined' && typeof marker.timefour !== 'undefined' && marker.dayfour && marker.timefour) {
227                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.dayfour + '</div><div class="value">' + marker.timefour + '</div></div>';
228                    cols++;
229                }
230
231                var cls = '';
232                switch (cols) {
233                    case 1:
234                        cls = ' one-col';
235                        break;
236                    case 2:
237                        cls = ' two-col';
238                        break;
239                    case 3:
240                        cls = ' three-col';
241                        break;
242                    case 4:
243                        cls = ' four-col';
244                        break;
245                }
246
247                return function () {
248                    marker.setIcon({
249                        url: iconurl,
250                        size: size,
251                        scaledSize: new google.maps.Size(70, 96),
252                        origin: new google.maps.Point(0, 0),
253                        anchor: new google.maps.Point(25, 96)
254                    });
255                    ib.setOptions(infoboxOptions);
256                    boxText.innerHTML = '<div class="infowindow-container"><div class="title">' + marker.title + '</div><div class="phone">' + marker.phone + '</div><div class="worktime' + cls + '">' + timeContent + '</div></div>';
257                    ib.open(map, marker);
258                }
259
260            })(marker));
261
262            markers.push(marker);
263        }
264
265
266
267        var iconBlackUrl = 'Plugin/SiteMaps/assets/img/[email protected]';
268
269         //if(window.devicePixelRatio > 1.5){
270              //iconBlackUrl = 'Plugin/SiteMaps/assets/img/[email protected]';
271         //}
272
273        var csizew = 70;
274        var csizeh = 96;
275
276
277        if(window.devicePixelRatio > 1.5){
278             csizew = 70;
279             csizeh = 95;
280        }
281
282        var markerCluster = new MarkerClusterer(map, markers, {
283            onClusterIconAdded: function (clusterDiv) {
284                "use strict";
285
286                $(clusterDiv).mouseover(function () {
287                    $(this).css('background-image', 'url(' + ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected])');
288                    $(this).css('background-size', 'cover');
289                }).mouseleave(function () {
290                    $(this).css('background-image', 'url(' + ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected])');
291                    $(this).css('background-size', 'cover');
292                });
293            },
294            gridSize: 65,
295            maxZoom: 16,
296            enableRetinaIcons: true,
297            styles: [{
298                url: ip.baseUrl + iconBlackUrl,
299                height: csizeh,
300                width: csizew,
301                anchor: [4, 53],
302                textColor: '#fff',
303                textSize: 12
304            }],
305
306        });
307    }
308
309    function moveMap(lat, lon, makezoom, zoomlevel) {
310        map.setCenter(new google.maps.LatLng(lat, lon));
311        if (makezoom) {
312            map.setZoom(zoomlevel);
313        }
314    }
315
316    function mapResetToCountries() {
317        showCountriesOnMap();
318    }
319
320    function mapResetToGroupByCountry(country) {
321        var group = getGroupFromCountry(country);
322        showGroupOnMap(group);
323    }
324
325    function fitMap(groupid) {
326
327        var markersBounce = [];
328        var bounceList = [];
329
330        $.each(data, function (index, item) {
331
332            if (item.cityid == groupid) {
333                var marker = {
334                    id: item.id,
335                    name: item.cityname,
336                    lat: item.lat,
337                    lon: item.lon,
338                    map: map
339                };
340                markersBounce.push(marker);
341                bounceList.push(item.id);
342            }
343        });
344
345        var bounds = new google.maps.LatLngBounds();
346        $.each(markersBounce, function (index, marker) {
347            var position = new google.maps.LatLng(marker.lat, marker.lon);
348            bounds.extend(position);
349        });
350
351        map.setZoom(12);
352        map.fitBounds(bounds);
353    }
354
355    function getMapElements(iden) {
356
357        var params = [];
358        params.push({
359            gid: iden
360        });
361
362        var postData = {
363            'sa': 'SiteMaps.getMapElements',
364            'securityToken': ip.securityToken,
365            'params': params,
366            'jsonrpc': '2.0'
367        };
368
369        $.ajax({
370            url: ip.baseUrl,
371            data: postData,
372            dataType: 'json',
373            type: 'POST',
374            async: false,
375            success: function (response) {
376                if (response && response.result) {
377                    data = response.result;
378                } else if (response && response.error && response.error.message) {
379                } else {
380                }
381            },
382            error: function (response) {
383            }
384        });
385        return data;
386    }
387
388    function getElements(itemsList) {
389
390        if (initMarkers == 0) {
391            var items = ( typeof itemsList !== 'undefined' ) ? itemsList : data;
392
393            if (gm) {
394
395                var uniqueGroups = [];
396
397                for (i = 0; i < data.length; i++) {
398
399                    if (uniqueGroups.indexOf(data[i].cityid) === -1) {
400                        uniqueGroups.push(data[i].cityid);
401                    }
402                }
403
404                for (i = 0; i < items.length; i++) {
405                    var item = items[i];
406                    if (groupsList.indexOf(item.cityid) !== -1) continue;
407                    var group = {
408                        id: item.cityid,
409                        name: item.cityname,
410                        lat: item.citylat,
411                        lon: item.citylon,
412                        map: map
413                    };
414
415                    groups.push(group);
416                    groupsList.push(item.cityid);
417                }
418
419                createMarkers();
420
421                initMarkers = 1;
422            }
423
424        } else {
425            //console.log('disabled gm');
426        }
427
428    }
429
430    function getCntMarkers(gid) {
431        var cnt = 0;
432        for (var i = 0; i < data.length; i++) {
433            if (data[i].cityid == gid) {
434                cnt += 1;
435            }
436        }
437        return cnt;
438    }
439
440    function getGroupsMarkers(groups) {
441        var groupsLayer = [];
442        for (var i = 0; i < groups.length; i++) {
443            var grItem = groups[i];
444
445            var cnt = getCntMarkers(grItem.id);
446
447            var iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black.png';
448            var size = new google.maps.Size(70, 96);
449
450            if(window.devicePixelRatio > 1.5){
451                iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected]';
452                size = new google.maps.Size(140, 190);
453            }
454
455            var groupOptions = {
456                position: new google.maps.LatLng(grItem.lat, grItem.lon),
457                title: grItem.name,
458                icon: iconurl,
459                size: size,
460                scaledSize: new google.maps.Size(70, 96),
461                grlat: grItem.lat,
462                grlon: grItem.lon,
463                grcid: grItem.id,
464                grcnt: cnt,
465                draggable: false,
466                labelContent: cnt,
467                labelAnchor: new google.maps.Point(-9, 70),
468                labelClass: "labels",
469                labelInBackground: true
470            };
471
472            var marker = new MarkerWithLabel(groupOptions);
473
474            google.maps.event.addListener(marker, "mouseover", (function (marker) {
475                return function () {
476                    marker.setIcon(itemicon["orange"]);
477                }
478            })(marker));
479
480            google.maps.event.addListener(marker, "mouseout", (function (marker) {
481                return function () {
482                    marker.setIcon(itemicon["black"]);
483                }
484            })(marker));
485
486
487            /*
488             google.maps.event.addDomListener(document.getElementById("filter-"+grItem.id),"click",function() {
489             marker.setIcon(itemicon["orange"]);
490             });
491             */
492            google.maps.event.addListener(marker, 'click', (function (marker) {
493                return function () {
494                    //moveMap(marker.grlat,marker.grlon, true, 15);
495                    marker.setIcon(itemicon["black"]);
496                    grId = marker.grcid;
497                    fitMap(marker.grcid);
498                }
499
500            })(marker));
501
502            groupsLayer.push(marker);
503
504        }
505        return groupsLayer;
506    }
507
508    function getCountryMarkersCount(country) {
509        var count = 0;
510
511        for (var i = 0; i < data.length; i++) {
512            if (data[i].countryid == country) {
513                count++;
514            }
515        }
516
517        return count;
518    }
519
520    function getCountryMarkersBounds(country) {
521        var latlngbounds = new google.maps.LatLngBounds();
522
523        for (var i = 0; i < data.length; i++) {
524            if (data[i].countryid == country) {
525                latlngbounds.extend(new google.maps.LatLng(data[i].lat, data[i].lon));
526            }
527        }
528
529        return latlngbounds;
530    }
531
532    function getGroupMarkersBounds(group) {
533        var latlngbounds = new google.maps.LatLngBounds();
534
535        for (var i = 0; i < data.length; i++) {
536            if (data[i].groupid == group) {
537                latlngbounds.extend(new google.maps.LatLng(data[i].lat, data[i].lon));
538            }
539        }
540
541        return latlngbounds;
542    }
543
544    function getAllMarkersBounds() {
545        var latlngbounds = new google.maps.LatLngBounds();
546
547        for (var i = 0; i < data.length; i++) {
548            latlngbounds.extend(new google.maps.LatLng(data[i].lat, data[i].lon));
549        }
550
551        return latlngbounds;
552    }
553
554    function getCountryIdList() {
555        var countries = [];
556
557        for (var i = 0; i < data.length; i++) {
558            countries.push(data[i].countryid);
559        }
560
561        return $.unique(countries);
562    }
563
564    function getGroupFromCountry(country) {
565        for (var i = 0; i < data.length; i++) {
566            if (data[i].countryid == country) {
567                return data[i].groupid;
568            }
569        }
570    }
571
572    function showGroupOnMap(group) {
573        var bounds = getGroupMarkersBounds(group);
574        map.fitBounds(bounds);
575
576        var zoom = map.getZoom() - 1;
577        if (zoom <= countryZoomMax) {
578            zoom = countryZoomMax + 1;
579        }
580
581        map.setZoom(zoom);
582    }
583
584    function showCountriesOnMap() {
585        var bounds = getAllMarkersBounds();
586        map.fitBounds(bounds);
587
588        var zoom = map.getZoom() - 1;
589        map.setZoom(zoom);
590    }
591
592    function getCountryGroupMarkers() {
593        var groupsLayer = [];
594
595        var countries = getCountryIdList();
596
597
598
599        var iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black.png';
600        var size = new google.maps.Size(70, 96);
601
602        if(window.devicePixelRatio > 1.5){
603            iconurl = ip.baseUrl + 'Plugin/SiteMaps/assets/img/[email protected]';
604            size = new google.maps.Size(140, 190);
605        }
606
607        for (var i = 0; i < countries.length; i++) {
608            var country = countries[i];
609
610            var markerCount = getCountryMarkersCount(country);
611            var markerBounds = getCountryMarkersBounds(country);
612
613            var groupOptions = {
614                position: markerBounds.getCenter(),
615                title: '',
616                icon: iconurl,
617                size: size,
618                scaledSize: new google.maps.Size(70, 96),
619                grlat: '',
620                grlon: '',
621                grcid: getGroupFromCountry(country),
622                grcnt: markerCount,
623                draggable: false,
624                labelContent: markerCount,
625                labelAnchor: new google.maps.Point(-15, 112),
626                labelClass: "labels",
627                labelInBackground: true
628            };
629
630            var marker = new MarkerWithLabel(groupOptions);
631            google.maps.event.addListener(marker, "mouseover", (function (marker) {
632                return function () {
633                    marker.setIcon(itemicon["orange"]);
634                }
635            })(marker));
636
637            google.maps.event.addListener(marker, "mouseout", (function (marker) {
638                return function () {
639                    marker.setIcon(itemicon["black"]);
640                }
641            })(marker));
642
643            google.maps.event.addListener(marker, 'click', (function (marker) {
644                return function () {
645                    marker.setIcon(itemicon["black"]);
646                    showGroupOnMap(marker.grcid);
647                }
648            })(marker));
649
650            groupsLayer.push(marker);
651        }
652
653        return groupsLayer;
654    }
655
656    function closeIW() {
657        if (ib) {
658            ib.close();
659        }
660    }
661
662    function getMarkers(groups) {
663        var markersLayer = [];
664
665
666
667        for (i = 0; i < data.length; i++) {
668            var item = data[i];
669
670            var boxText = document.createElement("div");
671            boxText.style.cssText = "color: #000;padding: 32px 23px; text-align: center;";
672
673            infoboxOptions = {
674                content: boxText,
675                disableAutoPan: false,
676                maxWidth: 0,
677                pixelOffset: new google.maps.Size(-175, -275),
678                zIndex: null,
679                boxStyle: {
680                    background: "url('" + ip.baseUrl + "Plugin/SiteMaps/assets/img/marker-info-bg.png') no-repeat",
681                    opacity: 1,
682                    width: "207px",
683                    height: "240px"
684                },
685                closeBoxMargin: "20px 4px 0px 0px",
686                closeBoxURL: ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-info-close.png',
687                infoBoxClearance: new google.maps.Size(1, 1),
688                isHidden: false,
689                pane: "floatPane",
690                enableEventPropagation: false
691            };
692
693            var markerOptions = {
694                position: new google.maps.LatLng(item.lat, item.lon),
695                title: item.address,
696                phone: item.phone,
697                icon: {
698                    url: ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black-mini-11.png',
699                    size: new google.maps.Size(70, 96),
700                    origin: new google.maps.Point(0, 0),
701                    anchor: new google.maps.Point(25, 96)
702                },
703                itemlat: item.lat,
704                itemlon: item.lon,
705                dayone: item.dayone,
706                daytwo: item.daytwo,
707                daythree: item.daythree,
708                dayfour: item.dayfour,
709                timeone: item.timeone,
710                timetwo: item.timetwo,
711                timethree: item.timethree,
712                timefour: item.timefour,
713                countryid: item.countryid
714            };
715
716            var marker = new google.maps.Marker(markerOptions);
717
718            google.maps.event.addListener(marker, "mouseover", (function (marker) {
719                return function () {
720                    marker.setIcon(itemicon["orange-mini"]);
721                }
722            })(marker));
723
724            google.maps.event.addListener(marker, "mouseout", (function (marker) {
725                return function () {
726                    marker.setIcon(itemicon["black-mini"]);
727                }
728            })(marker));
729
730            google.maps.event.addListener(marker, 'click', (function (marker) {
731                closeIW();
732                var timeContent = '';
733
734                var cols = 0;
735
736                if (typeof marker.dayone !== 'undefined' && typeof marker.timeone !== 'undefined' && marker.dayone && marker.timeone) {
737                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.dayone + '</div><div class="value">' + marker.timeone + '</div></div>';
738                    cols++;
739                }
740
741                if (typeof marker.daytwo !== 'undefined' && typeof marker.timetwo !== 'undefined' && marker.daytwo && marker.timetwo) {
742                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.daytwo + '</div><div class="value">' + marker.timetwo + '</div></div>';
743                    cols++;
744                }
745
746                if (typeof marker.daythree !== 'undefined' && typeof marker.timethree !== 'undefined' && marker.daythree && marker.timethree) {
747                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.daythree + '</div><div class="value">' + marker.timethree + '</div></div>';
748                    cols++;
749                }
750
751                if (typeof marker.dayfour !== 'undefined' && typeof marker.timefour !== 'undefined' && marker.dayfour && marker.timefour) {
752                    timeContent += '<div class="boxiv timeblock"><div class="title">' + marker.dayfour + '</div><div class="value">' + marker.timefour + '</div></div>';
753                    cols++;
754                }
755
756                var cls = '';
757                switch (cols) {
758                    case 1:
759                        cls = ' one-col';
760                        break;
761                    case 2:
762                        cls = ' two-col';
763                        break;
764                    case 3:
765                        cls = ' three-col';
766                        break;
767                    case 4:
768                        cls = ' four-col';
769                        break;
770                }
771
772                return function () {
773                    marker.setIcon({
774                            url: ip.baseUrl + 'Plugin/SiteMaps/assets/img/marker-icon-black-mini-12.png',
775                            size: new google.maps.Size(70, 96),
776                            origin: new google.maps.Point(0, 0),
777                            anchor: new google.maps.Point(25, 96)
778                        }
779                    );
780                    ib.setOptions(infoboxOptions);
781                    boxText.innerHTML = '<div class="infowindow-container"><div class="title">' + marker.title + '</div><div class="phone">' + marker.phone + '</div><div class="worktime' + cls + '">' + timeContent + '</div></div>';
782                    ib.open(map, marker);
783                }
784
785            })(marker));
786
787            markersLayer.push(marker);
788
789        }
790        return markersLayer;
791    }
792
793    function createMarkers() {
794        mgr = new MarkerManager(map);
795        google.maps.event.addListener(mgr, 'loaded', function () {
796            mgr.addMarkers(getCountryGroupMarkers(), 1, countryZoomMax);
797            mgr.addMarkers(getGroupsMarkers(groups), countryZoomMax + 1, 10);
798            mgr.addMarkers(getMarkers(groups), 11, 19);
799            mgr.refresh();
800        });
801    }
802
803    function removeFilterMarker(id) {
804        if (markers[id]) {
805            markers[id].setMap(null);
806            loc = markerList.indexOf(id);
807            if (loc > -1) markerList.splice(loc, 1);
808            delete markers[id];
809        }
810    }
811
812    var filter = {
813        followers: 0,
814        college: 0,
815        from: 0
816    };
817
818    var filterMap;
819
820    function reduceArray(a) {
821        r = a.shift().reduce(function (res, v) {
822            if (res.indexOf(v) === -1 && a.every(function (a) {
823                    return a.indexOf(v) !== -1;
824                })) res.push(v);
825            return res;
826        }, []);
827        return r;
828    }
829
830    function isInt(n) {
831        return n % 1 === 0;
832    }
833
834    function filterAct(filterType, value) {
835        var results = [];
836
837        if (isInt(value)) {
838            filter[filterType] = parseInt(value);
839        } else {
840            filter[filterType] = value;
841        }
842
843        for (k in filter) {
844            if (!filter.hasOwnProperty(k) && !( filter[k] !== 0 )) {
845                getElements();
846                return false;
847            } else if (filter[k] !== 0) {
848                results.push(filterMap[k](filter[k]));
849            } else {
850            }
851        }
852
853        if (filter[filterType] === 0) results.push(elements);
854
855        if (results.length === 1) {
856            results = results[0];
857        } else {
858            results = reduceArray(results);
859        }
860
861        getElements(results);
862
863    }
864
865    filterMap = {
866        cityid: function (value) {
867            return filterByString('cityid', value);
868        }
869    };
870
871    function filterByString(dataProperty, value) {
872        var element = [];
873
874        for (var i = 0; i < data.length; i++) {
875            var item = data[i];
876            if (item[dataProperty] == value) {
877                element.push(item);
878            } else {
879                removeFilterMarker(item.id);
880            }
881        }
882        return element;
883    }
884
885    function filterIntsLessThan(dataProperty, value) {
886        var element = [];
887
888        for (var i = 0; i < data.length; i++) {
889            var item = data[i];
890            if (item[dataProperty] > value) {
891                element.push(item)
892            } else {
893                removeFilterMarker(item.id);
894            }
895        }
896        return element;
897    }
898
899    function filterReset() {
900        filter = {
901            cityid: 0
902        }
903    }
904
905    return {
906        init: init,
907        moveMap: moveMap,
908        getElements: getElements,
909        filterAct: filterAct,
910        filterReset: filterReset,
911        extMapCenter: extMapCenter,
912        closeIW: closeIW,
913        showCountriesOnMap:showCountriesOnMap,
914        mapResetToCountries: mapResetToCountries,
915        mapResetToGroupByCountry: mapResetToGroupByCountry
916    };
917}();
918
919$(function () {
920    /*
921     $(".map-container").each(function (index) {
922     var $this = $(this);
923
924     var data = {};
925     data.lat = $this.data('lat');
926     data.lon = $this.data('lon');
927     data.iden = $this.data('mapiden');
928     data.mapType = $this.data('maptype');
929     data.mapWidth = $this.data('mapwidth');
930     data.mapHeight = $this.data('mapheight');
931     data.mapZoom = $this.data('mapzoom');
932     data.mapIcon = $this.data('mapicon');
933     data.mapZoomControl = $this.data('mapzoomcontrol');
934     data.mapScrollWheel = $this.data('mapscrollwheel');
935     data.markersgm = $this.data('markersgm');
936     data.showall = $this.data('showall');
937
938     var mapConfig = {
939     idSelector: 'map-container-' + data.iden,
940     mapdata: data,
941     markerLocation: ip.baseUrl + 'Plugin/SiteMaps/assets/img/item-icon-inactive.png'
942     };
943
944     $(".map-block-container").height($(window).height() - 214);
945     siteMaps.init(mapConfig);
946
947     });
948     */
949    //
950
951    function resetActivity(gid) {
952        $('.filter-group-' + gid).removeClass('filter-active');
953    }
954
955    $('.filter-button-act').on('click touchstart', function (e) {
956        var $this = $(this);
957
958        e.preventDefault();
959
960        if ($this.hasClass('filter-country')) {
961            var cityId = $this.attr('data-cid');
962            siteMaps.mapResetToGroupByCountry(cityId);
963            $this.addClass('filter-active').siblings().removeClass('filter-active');
964        } else {
965            var filter = $(this).data('filter');
966            var gid = $(this).data('gid');
967            var movelat = $(this).data('lat');
968            var movelon = $(this).data('lon');
969            //siteMaps.filterAct('cityid', filter);
970            //siteMaps.moveMap(movelat,movelon, false, 10);
971            siteMaps.extMapCenter(filter);
972            siteMaps.closeIW();
973            resetActivity(gid);
974            $this.addClass('filter-active');
975        }
976    });
977
978    $('.reset-btn').on('click touchstart', function (e) {
979        var $this = $(this);
980
981        e.preventDefault();
982
983        if ($this.hasClass('filter-country')) {
984            siteMaps.mapResetToCountries();
985            $this.addClass('filter-active').siblings().removeClass('filter-active');
986        } else {
987            // group
988            var gid = $(this).data('gid');
989            var movelat = $(this).data('lat');
990            var movelon = $(this).data('lon');
991            //siteMaps.filterReset();
992            //siteMaps.moveMap(movelat, movelon, true, 7);
993            siteMaps.showCountriesOnMap();
994            //siteMaps.getElements();
995            siteMaps.closeIW();
996            resetActivity(gid);
997            $this.addClass('filter-active');
998        }
999    });
1000
1001    /* 	For future use
1002     DropDown filter
1003     $('.select-class').on('change', function() {
1004     siteMaps.filterAct('filtername', value);
1005     });
1006     */
1007
1008});

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.