/*
* Leaflet GeoJSON Selector v0.3.2 - 2015-12-03
*
* Copyright 2015 Stefano Cudini
* stefano.cudini@gmail.com
* http://labs.easyblog.it/
*
* Licensed under the MIT license.
*
* Demo:
* http://labs.easyblog.it/maps/leaflet-geojson-selector/
*
* Source:
* git@github.com:stefanocudini/leaflet-geojson-selector.git
*
*/
(function(){L.Control.GeoJSONSelector=L.Control.extend({includes:L.Mixin.Events,options:{collapsed:!1,position:"bottomleft",listLabel:"properties.name",listSortBy:null,listItemBuild:null,activeListFromLayer:!0,zoomToLayer:!1,multiple:!1,style:{color:"#00f",fillColor:"#08f",fillOpacity:.4,opacity:1,weight:1},activeClass:"active",activeStyle:{color:"#00f",fillColor:"#fc0",fillOpacity:.6,opacity:1,weight:1},selectClass:"selected",selectStyle:{color:"#00f",fillColor:"#f80",fillOpacity:.8,opacity:1,weight:1}},initialize:function(a,b){L.Util.setOptions(this,b||{});this.options.listSortBy=this.options.listSortBy||this.options.listLabel,this.options.listItemBuild&&(this._itemBuild=this.options.listItemBuild),this._layer=a},onAdd:function(a){var b=L.DomUtil.create("div","geojson-list");return this._baseName="geojson-list",this._map=a,this._container=b,this._id=this._baseName+L.stamp(this._container),this._list=L.DomUtil.create("ul","geojson-list-group",b),this._items=[],this._initToggle(),this._updateList(),L.DomEvent.on(b,"mouseover",function(b){a.scrollWheelZoom.disable()}).on(b,"mouseout",function(b){a.scrollWheelZoom.enable()}),a.whenReady(function(c){b.style.height=a.getSize().y+"px"}),b},onRemove:function(a){a.off("moveend",this._updateList,this)},reload:function(a){return this._layer=a,this._updateList(),this},_getPath:function(a,b){var c=b.split("."),d=c.pop(),e=c.length,f=c[0],g=1;if(e>0)for(;(a=a[f])&&e>g;)f=c[g++];return a?a[d]:void 0},_itemBuild:function(a){return this._getPath(a.feature,this.options.listLabel)||" "},_selectItem:function(a,b){for(var c=0;c";var e=document.createElement("div");return e.innerHTML=d,e.firstChild},_updateList:function(){var a=this,b=[],c=this.options.listSortBy;this._list.innerHTML="",this._layer.eachLayer(function(c){b.push(c),c.setStyle&&c.setStyle(a.options.style),a.options.activeListFromLayer&&c.on("click",L.DomEvent.stop).on("click",function(a){c.itemLabel.click()}).on("mouseover",function(b){c.setStyle&&c.setStyle(a.options.activeStyle),L.DomUtil.addClass(c.itemList,a.options.activeClass)}).on("mouseout",function(b){c.setStyle&&c.setStyle(a.options.style),L.DomUtil.removeClass(c.itemList,a.options.activeClass)})}),b.sort(function(b,d){var e=a._getPath(b.feature,c),f=a._getPath(d.feature,c);return f>e?-1:e>f?1:0});for(var d=0;d