1(function($) { 2 'use strict'; 3 4 $.fn.rsjoomlamap = function(options) { 5 var base = this; 6 7 base.el = this; 8 9 base.init = function() { 10 base.options = $.extend({},$.fn.rsjoomlamap.defaultOptions, options); 11 12 // Initialize the Geocoder. 13 base.geocoder = new google.maps.Geocoder(); 14 15 // Initialize the Bounds. 16 base.latlngbounds = new google.maps.LatLngBounds(); 17 18 base.inputAddress = base.options.address.length ? $('#'+base.options.address) : false; 19 base.inputCoords = base.options.coordinates.length ? $('#'+base.options.coordinates) : false; 20 base.multiMarks = base.options.markers != null ? base.options.markers.length > 1 : false; 21 22 if (base.options.pinpointBtn) { 23 base.pinpointBtn = $('#'+base.options.pinpointBtn); 24 } 25 26 base.directionsDisplay = new google.maps.DirectionsRenderer({draggable: true}); 27 base.directionsService = new google.maps.DirectionsService(); 28 base.directionsBtn = $('#'+base.options.directionsBtn); 29 base.directionsFrom = $('#'+base.options.directionsFrom); 30 base.directionNoResults = base.options.directionNoResults; 31 32 // Radius search values 33 if (base.options.radiusSearch) { 34 base.radiusLocation = $('#'+base.options.radiusLocationId); 35 base.radiusValue = $('#'+base.options.radiusValueId); 36 base.radiusUnit = $('#'+base.options.radiusUnitId); 37 base.radiusLoader = $('#'+base.options.radiusLoaderId); 38 base.radiusBtn = $('#'+base.options.radiusBtnId); 39 40 base.circle = null; 41 base.markers = []; 42 base.cache = []; 43 } 44 45 base.initMap(); 46 47 if (base.options.radiusSearch) { 48 base.setRadiusPos(); 49 base.inputAddressOnKeyUp(); 50 base.bindRadiusSearch(); 51 } else { 52 base.initMarker(); 53 54 if (!base.options.markers) { 55 base.initPos(); 56 } else { 57 base.initPositions(); 58 } 59 60 base.setMarkerOnDragEnd(); 61 base.inputAddressOnKeyUp(); 62 base.inputCoordsOnChange(); 63 base.pinpoint(); 64 base.getDirections(); 65 base.panToCenter(); 66 } 67 } 68 69 // Initialize map. 70 base.initMap = function() { 71 base.map = new google.maps.Map(document.getElementById(base.el.prop('id')), { 72 zoom: base.options.zoom, 73 mapTypeId: base.options.mapType, 74 streetViewControl: base.options.streetViewControl, 75 scrollwheel: base.options.scrollwheel, 76 zoomControl: base.options.zoomControl, 77 styles: base.options.styles 78 }); 79 }; 80 81 // Initialize marker. 82 base.initMarker = function() { 83 if (!base.options.markerDisplay) 84 return; 85 86 if (base.options.markers) { 87 if (base.options.markers.length) { 88 $(base.options.markers).each(function(i, el) { 89 var themarker = 'marker' + i; 90 91 if (el.position) { 92 base.themarker = new google.maps.Marker({ 93 map: base.map, 94 title: el.title, 95 position : base.createLatLng(el.position), 96 draggable: false, 97 icon: typeof el.icon != 'undefined' ? el.icon : base.options.markerIcon 98 }); 99 100 if (el.content) { 101 var content = base.stripslashes(el.content); 102 var infowindow = new google.maps.InfoWindow(); 103 104 google.maps.event.addListener(base.themarker,'click', (function(themarker,content,infowindow) { 105 return function() { 106 infowindow.setContent(content); 107 infowindow.open(base.map,themarker); 108 }; 109 })(base.themarker,content,infowindow)); 110 111 google.maps.event.addListener(base.map, 'click', function() { 112 infowindow.close(); 113 });
114 } 115 116 if (base.multiMarks) { 117 base.latlngbounds.extend(base.themarker.getPosition()); 118 } 119 } else if (el.address) { 120 base.geocoder.geocode({'address': el.address}, function(results, status) { 121 if (status == google.maps.GeocoderStatus.OK) { 122 var lat = parseFloat(results[0].geometry.location.lat().toFixed(7)); 123 var lon = parseFloat(results[0].geometry.location.lng().toFixed(7)); 124 125 base.themarker = new google.maps.Marker({ 126 map: base.map, 127 title: el.title, 128 draggable: false, 129 icon: typeof el.icon != 'undefined' ? el.icon : base.options.markerIcon 130 }); 131 132 base.themarker.setPosition(new google.maps.LatLng(lat,lon)); 133 134 if (base.multiMarks) { 135 base.latlngbounds.extend(base.themarker.getPosition()); 136 } 137 138 if (el.content) { 139 var content = base.stripslashes(el.content); 140 var infowindow = new google.maps.InfoWindow(); 141 142 google.maps.event.addListener(base.themarker,'click', (function(themarker,content,infowindow) { 143 return function() { 144 infowindow.setContent(content); 145 infowindow.open(base.map,themarker); 146 }; 147 })(base.themarker,content,infowindow)); 148 149 google.maps.event.addListener(base.map, 'click', function() { 150 infowindow.close(); 151 }); 152 } 153 } 154 }); 155 } else { 156 base.themarker = null; 157 } 158 }); 159 } else { 160 base.map.setCenter(base.createLatLng(base.options.center)); 161 } 162 } else { 163 base.marker = new google.maps.Marker({ 164 map: base.map, 165 draggable: base.options.markerDraggable, 166 icon: base.options.markerIcon 167 }); 168 } 169 }; 170 171 base.initPositions = function() { 172 if (base.options.markers) { 173 if (base.multiMarks) { 174 setTimeout( function() { 175 if (base.latlngbounds.getCenter().lat().toString() != 0 && base.latlngbounds.getCenter().lng().toString() != -180) { 176 base.map.setCenter(base.latlngbounds.getCenter()); 177 base.map.fitBounds(base.latlngbounds); 178 } else { 179 base.map.setCenter(base.createLatLng(base.options.center)); 180 } 181 }, 2000); 182 } else { 183 $(base.options.markers).each(function(i, el) { 184 var themarker = 'marker' + i; 185 186 if (el.position) { 187 base.map.setCenter(base.createLatLng(el.position)); 188 base.themarker.setPosition(base.createLatLng(el.position)); 189 } else if (el.address) { 190 base.geocoder.geocode( {address: el.address}, function(results, status) { 191 if (status == google.maps.GeocoderStatus.OK) { 192 base.map.setCenter(results[0].geometry.location); 193 base.themarker.setPosition(results[0].geometry.location); 194 } 195 }); 196 } 197 }); 198 } 199 } 200 }; 201 202 // Initialize the map and marker position. 203 base.initPos = function() { 204 // 1st priority: the lat and lng options. 205 if ( parseFloat(base.options.lat) || parseFloat(base.options.lng) ) 206 { 207 base.setPos( new google.maps.LatLng(base.options.lat, base.options.lng) ); 208 } 209 // 2nd priority: the coordinates input value. 210 else if ( base.inputCoords.val() ) 211 { 212 base.setPos(base.createLatLng(base.inputCoords.val())); 213 } 214 // 3rd priority: the address input value. 215 else if ( base.inputAddress.val() ) 216 { 217 base.geocoder.geocode( {address: base.inputAddress.val()}, function(results, status) 218 { 219 if (status == google.maps.GeocoderStatus.OK) 220 { 221 base.setPos(results[0].geometry.location); 222 } 223 }); 224 } 225 // 4th priority: locations coordinates 226 else if (base.options.locationCoordonates) 227 { 228 base.setPos(base.createLatLng(base.options.locationCoordonates)); 229 } 230 // 5th priority: base.options.center 231 else if (base.options.center) 232 { 233 base.setPos(base.createLatLng(base.options.center)); 234 } 235 else { 236 base.setPos( new google.maps.LatLng(0,0) ); 237 } 238 }; 239 240 // Set the map and marker positon. 241 base.setPos = function(latLng) { 242 base.map.setCenter(latLng); 243 244 if (base.options.markerDisplay) { 245 base.marker.setPosition(latLng); 246 } 247 }; 248 249 // Create lat & lng from string 250 base.createLatLng = function(string) { 251 string = string.split(','); 252 return new google.maps.LatLng(string[0],string[1]); 253 }; 254 255 // Add a on drag end event to the marker. 256 base.setMarkerOnDragEnd = function() { 257 if (!base.options.markerDisplay) 258 return; 259 260 if (base.options.markers) 261 return; 262 263 google.maps.event.addListener(base.marker, 'dragend', function() { 264 base.geocoder.geocode({latLng: base.marker.getPosition()}, function(results, status) { 265 if (status == google.maps.GeocoderStatus.OK) {
266 base.inputCoords.val(base.marker.getPosition().toUrlValue()); 267 base.inputAddress.val(results[0].formatted_address); 268 269 if (typeof base.options.markerOnDragEnd != 'function') { 270 return; 271 } 272 273 // Call the user defined on drag event. 274 base.options.markerOnDragEnd(results[0]); 275 } else { 276 base.inputAddress.val(''); 277 } 278 }); 279 }); 280 }; 281 282 // Add a on key up event to the address input. 283 base.inputAddressOnKeyUp = function() { 284 var addressSelector = base.options.radiusSearch ? base.radiusLocation : base.inputAddress; 285 286 $(addressSelector).on('keyup', function() { 287 addressSelector.parent().find('.' + base.options.resultsWrapperClass).remove(); 288 289 if ($.trim(addressSelector.val())) { 290 base.geocoder.geocode( {address: addressSelector.val()}, function(results, status) { 291 if (status == google.maps.GeocoderStatus.OK) { 292 var results_wrapper = $('<div class="' + base.options.resultsWrapperClass + '"><ul class="' + base.options.resultsClass + '"></ul></div>'); 293 addressSelector.after(results_wrapper); 294 295 $(results).each(function(index, item) { 296 var li = $('<li>' + item.formatted_address + '</li>').click(function() { 297 if (base.options.radiusSearch) { 298 addressSelector.val(item.formatted_address); 299 base.map.setCenter(item.geometry.location); 300 } else { 301 addressSelector.val(item.formatted_address); 302 base.inputCoords.val( item.geometry.location.lat().toFixed(7) + ',' + item.geometry.location.lng().toFixed(7) ); 303 base.setPos(item.geometry.location); 304 } 305 306 results_wrapper.remove(); 307 });
308 309 results_wrapper.find('ul').append(li); 310 }); 311 312 $(document).click( function(event) { 313 if( $(event.target).parents().index(results_wrapper) == -1 ) { 314 results_wrapper.remove(); 315 } 316 }); 317 } 318 }); 319 } else { 320 if (!base.options.radiusSearch) { 321 base.inputCoords.val(''); 322 base.setPos( new google.maps.LatLng(0, 0) ); 323 } 324 } 325 }); 326 }; 327 328 // Add a pin-point trigger 329 base.pinpoint = function() { 330 var pinpoint = function() { 331 if ($.trim(base.inputAddress.val())) { 332 base.geocoder.geocode({address: base.inputAddress.val()}, function(results, status) { 333 if (status == google.maps.GeocoderStatus.OK) { 334 base.setPos(results[0].geometry.location); 335 base.inputCoords.val(results[0].geometry.location.lat().toFixed(7) + ',' + results[0].geometry.location.lng().toFixed(7) ); 336 } 337 }); 338 } 339 } 340 341 if (typeof base.pinpointBtn != 'undefined') { 342 base.pinpointBtn.on('click', pinpoint); 343 } 344 }; 345 346 // Add a on change event to the coordinates input. 347 base.inputCoordsOnChange = function() { 348 var inputCoordsOnChange = function() { 349 if (base.inputCoords.val() == '') { 350 return; 351 } 352 353 var coordinatesString = base.inputCoords.val(); 354 if (coordinatesString.indexOf(',') != -1) { 355 var coords = base.createLatLng(coordinatesString); 356 357 if (!isNaN(coords.lat()) && !isNaN(coords.lng())) 358 { 359 base.setPos(coords); 360 base.geocoder.geocode({latLng: base.marker.getPosition()}, function(results, status) { 361 if (status == google.maps.GeocoderStatus.OK) { 362 base.inputAddress.val(results[0].formatted_address); 363 } else { 364 base.inputAddress.val(''); 365 } 366 }); 367 } 368 } 369 } 370 371 $(base.inputCoords).on('input', inputCoordsOnChange); 372 }; 373 374 // Get directions button 375 base.getDirections = function() { 376 if (base.options.directionsPanel && base.directionsFrom && base.directionsBtn) { 377 var getDirections = function() { 378 base.directionsDisplay.setMap(base.map); 379 base.directionsDisplay.setPanel(document.getElementById(base.options.directionsPanel)); 380 381 var request = { 382 origin: base.directionsFrom.val(), 383 destination: base.createLatLng(base.options.locationCoordonates), 384 travelMode: google.maps.TravelMode.DRIVING 385 }; 386 387 base.directionsService.route(request, function(response, status) { 388 if (status == google.maps.DirectionsStatus.OK) { 389 $('#rsepro-map-directions-error').css('display','none'); 390 base.directionsDisplay.setDirections(response); 391 } else { 392 base.directionsDisplay.setMap(null); 393 $('#rsepro-map-directions-error').html(base.directionNoResults); 394 $('#rsepro-map-directions-error').css('display',''); 395 $('#rsepro-directions-panel').html(''); 396 } 397 }); 398 } 399 400 base.directionsBtn.on('click', getDirections); 401 } 402 }; 403 404 base.panToCenter = function() { 405 var panToCenter = function(position) { 406 var currentzoom = base.map.getZoom(); 407 if (currentzoom <= 2) { 408 base.map.panTo(position); 409 base.map.setZoom(5); 410 } 411 } 412 413 google.maps.event.addListener(base.map, 'click', function(e) { 414 panToCenter(e.latLng); 415 }); 416 }; 417 418 419 // Set the default position 420 base.setRadiusPos = function() { 421 var coords = { 422 initialLat : '', 423 initialLong : '' 424 }; 425 base.process('initial'); 426 427 if (navigator.geolocation && base.options.use_geolocation) { 428 navigator.geolocation.getCurrentPosition(function(position) { 429 coords.initialLat = position.coords.latitude; 430 coords.initialLong = position.coords.longitude; 431 base.process('initial', coords) 432 }, function() { 433 base.process('initial'); 434 }); 435 } 436 }; 437 438 // track the load of the map 439 base.track = 0; 440 441 base.process = function(type, coords) { 442 var use_geocoder = true; 443 if (typeof coords != 'undefined') { 444 use_geocoder = false; 445 } 446 447 if (use_geocoder) { 448 base.geocoder.geocode({'address': base.radiusLocation.val()}, function(results, status) { 449 if (status == google.maps.GeocoderStatus.OK) { 450 if (base.track == 0) { 451 base.map.setCenter(results[0].geometry.location); 452 var searchCenter = results[0].geometry.location; 453 base.processCircle(searchCenter); 454 if (typeof type != 'undefined' && type == 'initial') { 455 base.processCreateMarkers(results[0].geometry.location.lat(), results[0].geometry.location.lng()); 456 } 457 base.track++; 458 } 459 } 460 }); 461 } else { 462 var initialLocation = new google.maps.LatLng(coords.initialLat, coords.initialLong); 463 if (initialLocation) { 464 base.map.setCenter(initialLocation); 465 var searchCenter = initialLocation; 466 base.processCircle(searchCenter); 467 base.geocoder.geocode({'latLng': initialLocation}, function(results, status){ 468 if (status == google.maps.GeocoderStatus.OK) { 469 if (results[1]) { 470 base.radiusLocation.val(results[1].formatted_address); 471 if (typeof type != 'undefined' && type == 'initial') { 472 base.processCreateMarkers(coords.initialLat, coords.initialLong); 473 } 474 } 475 } 476 });
477 base.track++; 478 } 479 } 480 }; 481 482 base.processCircle = function (searchCenter) { 483 var unit_value = base.radiusUnit.val() == 'miles' ? 1609.34 : 1000; 484 var radiusValue = base.radiusValue.val() == '' ? 100 : base.radiusValue.val(); 485 var radius = parseInt(radiusValue, 10) * unit_value; 486 487 if (base.circle) { 488 base.circle.setMap(null); 489 } 490 491 base.circle = new google.maps.Circle({ 492 center: searchCenter, 493 radius: radius, 494 fillOpacity: 0.35, 495 fillColor: base.options.circleColor, 496 map: base.map 497 }); 498 499 var bounds = new google.maps.LatLngBounds(); 500 var foundMarkers = 0; 501 502 for (var i = 0; i < base.markers.length; i++) { 503 if (google.maps.geometry.spherical.computeDistanceBetween(base.markers[i].getPosition(), searchCenter) < radius) { 504 bounds.extend( base.markers[i].getPosition() ); 505 base.markers[i].setMap(base.map); 506 foundMarkers++; 507 } else { 508 base.markers[i].setMap(null); 509 } 510 } 511 512 if (foundMarkers > 0) {
513 if (bounds.getNorthEast().equals( bounds.getSouthWest())) { 514 var extendPoint1 = new google.maps.LatLng( bounds.getNorthEast().lat() + 0.001, bounds.getNorthEast().lng() + 0.001 ); 515 var extendPoint2 = new google.maps.LatLng( bounds.getNorthEast().lat() - 0.001, bounds.getNorthEast().lng() - 0.001 ); 516 bounds.extend(extendPoint1); 517 bounds.extend(extendPoint2); 518 } 519 520 base.map.fitBounds(bounds); 521 } else { 522 base.map.fitBounds(base.circle.getBounds()); 523 } 524 }; 525 526 base.processCreateMarkers = function (lat, lng) { 527 base.radiusLoader.css('display', ''); 528 var radiusValue = base.radiusValue.val() == '' ? 100 : base.radiusValue.val(); 529 var filters = $('.rsepro-filter-filters input').length ? '&' + $('.rsepro-filter-filters input').serialize() : ''; 530 var data = 'Itemid='+ parseInt($('#rsepro-itemid').text()) + filters + '&unit='+ base.radiusUnit.val() + '&radius=' + radiusValue + '&startpoint=' + lat + ',' + lng; 531 var rse_root = typeof rsepro_root != 'undefined' ? rsepro_root : ''; 532 533 $.ajax({ 534 type: 'post', 535 dataType: 'json', 536 url: rse_root + 'index.php?option=com_rseventspro&task=rseventspro.getajaxmap', 537 data: data, 538 success: function(json) { 539 540 if ($('#rsepro-map-results').length) { 541 $('#rsepro-map-results').empty().parent().hide(); 542 } 543 544 try { 545 json.length; 546 base.initInfoWindow(); 547 548 // Create the markers. 549 $(json).each(function(i, element) { 550 base.createMarker(element); 551 }); 552 } catch(e) {} 553 base.radiusLoader.css('display', 'none'); 554 } 555 }); 556 }; 557 558 // Create marker 559 base.createMarker = function(element) { 560 var marker = new google.maps.Marker({ 561 position: base.createLatLng(element.coords), 562 map: base.map, 563 icon: typeof element.marker != 'undefined' ? element.marker : base.options.markerIcon 564 }); 565 566 if ($('#rsepro-map-results').length) { 567 var $table = $('#rsepro-map-results'); 568 var $row = $('<tr>'); 569 570 // Image 571 var $image = $(element.image); 572 var $cell = $('<td>').addClass('center text-center').append($image); 573 $row.append($cell); 574 575 // Info 576 var $button = $('<button type="button" class="btn btn-primary btn-block"><i class="fa fa-map-marker"></i></button>').click(function(e){ 577 e.preventDefault(); 578 base.map.setCenter(base.createLatLng(element.coords)); 579 google.maps.event.trigger(marker, 'click'); 580 $('html, body').animate({ 581 scrollTop: $(base.el).offset().top 582 }, 1000); 583 }); 584 585 var $cell = $('<td>').append(element.info); 586 $cell.append($button); 587 588 $row.append($cell); 589 590 // Append row 591 $table.append($row); 592 593 $table.parent().show(); 594 } 595 596 google.maps.event.addListener(marker, 'click', function() { 597 base.infoWindow.setContent(base.stripslashes(element.content)); 598 base.infoWindow.open(base.map, marker); 599 }); 600 601 base.markers.push(marker); 602 }; 603 604 // Clear markers. 605 base.clearMarkers = function() { 606 for (var i = 0; i < base.markers.length; i++) { 607 base.markers[i].setMap(null); 608 } 609 610 base.markers = []; 611 }; 612 613 // Initialize the info window. 614 base.initInfoWindow = function() { 615 base.infoWindow = new google.maps.InfoWindow(); 616 }; 617 618 base.bindRadiusSearch = function() { 619 base.radiusBtn.on('click',function() { 620 var errors = false; 621 622 // Remove errors 623 base.radiusLocation.parents('.control-group').removeClass('error'); 624 base.radiusValue.parents('.control-group').removeClass('error'); 625 626 // Validate location 627 if (!$.trim( base.radiusLocation.val())) { 628 base.radiusLocation.parents('.control-group').addClass('error'); 629 errors = true; 630 } 631 632 // Validate radius 633 if ( !/^\d+$/.test( base.radiusValue.val() ) || parseInt( base.radiusValue.val(), 10 ) <= 0 ) { 634 base.radiusValue.parents('.control-group').addClass('error'); 635 errors = true; 636 } 637 638 // Stop the execution of the function if there are errors 639 if (errors) { 640 $('html,body').animate({scrollTop: $('#adminForm').offset().top}); 641 return; 642 } 643 644 base.radiusLoader.css('display',''); 645 base.clearMarkers(); 646 647 base.geocoder.geocode( {'address': base.radiusLocation.val()}, function(results, status) { 648 var radiusValue = base.radiusValue.val() == '' ? 100 : base.radiusValue.val(); 649 var filters = $('.rsepro-filter-filters input').length ? '&' + $('.rsepro-filter-filters input').serialize() : ''; 650 var data = 'Itemid='+ parseInt($('#rsepro-itemid').text()) + filters + '&unit='+ base.radiusUnit.val() + '&radius=' + radiu
650sValue; 651 652 if (status == google.maps.GeocoderStatus.OK) { 653 data = data + '&startpoint=' + results[0].geometry.location.lat() + ',' + results[0].geometry.location.lng(); 654 base.createAjaxRequest(data); 655 } else { 656 base.createAjaxRequest(data); 657 } 658 }); 659 }); 660 }; 661 662 base.createAjaxRequest = function (data) { 663 var rse_root = typeof rsepro_root != 'undefined' ? rsepro_root : ''; 664 $.ajax({ 665 type: 'post', 666 dataType: 'json', 667 url: rse_root + 'index.php?option=com_rseventspro&task=rseventspro.getajaxmap', 668 data: data, 669 success: function(json) { 670 if ($('#rsepro-map-results').length) { 671 $('#rsepro-map-results').empty().parent().hide(); 672 } 673 674 try { 675 json.length; 676 base.initInfoWindow(); 677 678 // Create the markers. 679 $(json).each(function(i, element) { 680 base.createMarker(element); 681 }); 682 } catch(e) {} 683 684 base.track = 0; 685 base.process(); 686 base.radiusLoader.css('display','none'); 687 } 688 }); 689 }; 690 691 base.setOptions = function (data) { 692 base.map.setOptions(data); 693 }; 694 695 base.stripslashes = function(str) { 696 return (str + '').replace(/\\(.?)/g, function (s, n1) { 697 switch (n1) { 698 case '\\': 699 return '\\'; 700 case '0': 701 return '\u0000'; 702 case '': 703 return ''; 704 default: 705 return n1; 706 } 707 }); 708 }; 709 710 if (typeof google != 'undefined') { 711 base.init(); 712 } 713 714 return base; 715 }; 716 717 // Set the default options 718 $.fn.rsjoomlamap.defaultOptions = { 719 address: '', 720 center: null, 721 lat: null, 722 lng: null, 723 coordinates: '', 724 pinpointBtn: null, 725 markers: null, 726 zoom: 5, 727 mapType: 'roadmap', 728 streetViewControl: false, 729 scrollwheel: false, 730 zoomControl: true, 731 inputAddress: null, 732 inputLat: null, 733 inputLng: null, 734 inputCoords: null, 735 directionsPanel: null, 736 directionsBtn: null, 737 directionsFrom: null, 738 directionNoResults: 'No directions were found.', 739 markerDisplay: true, 740 markerDraggable: false, 741 markerOnDragEnd: null, 742 markerIcon: '', 743 radiusSearch: 0, 744 use_geolocation: 0, 745 circleColor: '#ff8080', 746 radiusLocationId: 'rsepro-location', 747 radiusValueId: 'rsepro-radius', 748 radiusUnitId: 'rsepro-unit', 749 radiusLoaderId: 'rsepro-loader', 750 radiusBtnId: 'rsepro-radius-search', 751 resultsWrapperClass: 'rsepro-map-results-wrapper', 752 resultsClass: 'rsepro-map-results', 753 styles: [] 754 }; 755})(jQuery); 756 757if (typeof RSEProMap !== 'object') { 758 var RSEProMap = {}; 759} 760 761RSEProMap.initGoogleMaps = function() {};
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.