/*
 * SilverCollectionCore
 * Copyright(c) 2008, SilverBiology, LLC (Michael Giddens).
 * Website: www.SilverBiology.com
 */


Ext.namespace('SilverCollection.plugins');SilverCollection.plugins.Distribution=function(config){Ext.apply(this,config,{text:Lang.Get('Core','general','distribution'),tooltip:Lang.Get('Core','general','distribution_tooltip'),iconCls:'icon_distribution',handler:function(){ds=this.ownerCt.store;if(ds.getCount()>0){SilverCollection.stats.log('Distribution');SilverCollection.mapIndex++;var win=SilverCollection.getDesktop().getWindow('map_'+SilverCollection.mapIndex);if(!win){var tmpDistribution=new SilverCollection.Distribution();tmpDistribution.createWindow(SilverCollection,'map_'+SilverCollection.mapIndex,ds.baseParams);}else{win.show();}}else{Ext.MessageBox.alert(Lang.Get('Core','general','error'),Lang.Get('Core','general','distribution_error'));}}});SilverCollection.plugins.Distribution.superclass.constructor.call(this,config);};Ext.extend(SilverCollection.plugins.Distribution,Ext.Toolbar.Button,{init:function(tb){tb.on('render',this.onInitView,this);},onInitView:function(tb){this.ownerCt=tb;tb.add('-',this);}});

SilverCollection.Distribution=Ext.extend(Ext.app.Module,{createWindow:function(Herbarium,id,params){this.filter=params;this.fusionmap_path="scripts/plugins/fusionmaps/";this.id=id;this.map_types=new Ext.CycleButton({showText:true,prependText:'Map Type: ',items:[{text:'Density Maps',id:'density',checked:true}],changeHandler:function(btn,item){}});var key_panel=new Ext.tree.TreePanel({title:Lang.Get('Core','distribution','key_title'),region:'west',split:true,width:275,rootVisible:false,lines:false,cls:'key_panel',autoScroll:true,useArrows:true,loader:new Ext.tree.TreeLoader({loadingMask:true,dataUrl:'server/species_distribution.php'}),tbar:[this.map_types],listeners:{'beforeLoad':function(node){Ext.apply(this.loader.baseParams,{map_type:node.attributes.map_type,map_value:node.attributes.map_value,map_state:node.attributes.map_state,map_id:id,api:'json'},params);if(node.attributes.map_type!='source'){SilverCollection.stats.log('Distribution/View/'+node.attributes.text);}},'click':this.mapDrilldown.createDelegate(this)}});var root=new Ext.tree.AsyncTreeNode({id:'source',map_type:'source'});key_panel.setRootNode(root);root.expand(false,false);var map_panel=new Ext.Panel({id:id+'_map_panel',autoScroll:true,html:Lang.Get('Core','distribution','select_map')});this.mapControl=null;if(typeof(GLargeMapControl)!='undefined'){this.mapControl=new GLargeMapControl();}
this.live_map_panel=new Ext.ux.GMapPanel({id:id+'_live_map_panel',autoScroll:true,zoomLevel:9,gmapType:'map',addControl:this.mapControl});this.card_panel=new Ext.Panel({layout:'card',activeItem:0,region:'center',defaults:{border:false},items:[map_panel,this.live_map_panel]});var desktop=Herbarium.getDesktop();var win=desktop.createWindow({id:id+'_panel',title:Lang.Get('Core','distribution','title'),width:750,height:490,defaults:{border:false},iconCls:'icon_distribution',shim:false,animCollapse:false,constrainHeader:true,layout:'border',items:[key_panel,this.card_panel]});win.maximize();win.show();this.map_body=map_panel.body;this.live_map_body=this.live_map_panel.body;this.map_list=new Array({id:"US",title:"USA (Counties)",swf:"FCMap_USA.swf",width:750,height:460},{id:"AL",title:"Alabama",swf:"FCMap_Alabama.swf",width:650,height:430},{id:"AK",title:"Alaska",swf:"FCMap_Alaska.swf",width:650,height:430},{id:"AZ",title:"Arizona",swf:"FCMap_Arizona.swf",width:650,height:430},{id:"AR",title:"Arkansas",swf:"FCMap_Arkansas.swf",width:650,height:430},{id:"CA",title:"California",swf:"FCMap_California.swf",width:650,height:430},{id:"CO",title:"Colorado",swf:"FCMap_Colorado.swf",width:650,height:430},{id:"CT",title:"Connecticut",swf:"FCMap_Connecticut.swf",width:650,height:430},{id:"DE",title:"Delaware",swf:"FCMap_Delaware.swf",width:650,height:430},{id:"FL",title:"Florida",swf:"FCMap_Florida.swf",width:650,height:430},{id:"GA",title:"Georgia",swf:"FCMap_Georgia.swf",width:650,height:430},{id:"HI",title:"Hawaii",swf:"FCMap_Hawaii.swf",width:430,height:430},{id:"ID",title:"Idaho",swf:"FCMap_Idaho.swf",width:650,height:430},{id:"IL",title:"Illinois",swf:"FCMap_Illinois.swf",width:650,height:430},{id:"IN",title:"Indiana",swf:"FCMap_Indiana.swf",width:650,height:430},{id:"IA",title:"Iowa",swf:"FCMap_Iowa.swf",width:650,height:430},{id:"KS",title:"Kansas",swf:"FCMap_Kansas.swf",width:650,height:430},{id:"KY",title:"Kentucky",swf:"FCMap_Kentucky.swf",width:650,height:430},{id:"LA",title:"Louisiana",swf:"FCMap_Louisiana.swf",width:650,height:430},{id:"ME",title:"Maine",swf:"FCMap_Maine.swf",width:650,height:430},{id:"MD",title:"Maryland",swf:"FCMap_Maryland.swf",width:650,height:500},{id:"MA",title:"Massachusetts",swf:"FCMap_Massachusetts.swf",width:650,height:450},{id:"MI",title:"Michigan",swf:"FCMap_Michigan.swf",width:650,height:430},{id:"MN",title:"Minnesota",swf:"FCMap_Minnesota.swf",width:650,height:430},{id:"MS",title:"Mississippi",swf:"FCMap_Mississippi.swf",width:650,height:430},{id:"MO",title:"Missouri",swf:"FCMap_Missouri.swf",width:650,height:430},{id:"MT",title:"Montana",swf:"FCMap_Montana.swf",width:650,height:430},{id:"NE",title:"Nebraska",swf:"FCMap_Nebraska.swf",width:650,height:430},{id:"NV",title:"Nevada",swf:"FCMap_Nevada.swf",width:650,height:430},{id:"NH",title:"New Hampshire",swf:"FCMap_NewHampshire.swf",width:650,height:430},{id:"NJ",title:"New Jersey",swf:"FCMap_NewJersey.swf",width:650,height:430},{id:"NM",title:"New Mexico",swf:"FCMap_NewMexico.swf",width:650,height:430},{id:"NY",title:"New York",swf:"FCMap_NewYork.swf",width:650,height:430},{id:"NC",title:"North Carolina",swf:"FCMap_NorthCarolina.swf",width:650,height:430},{id:"ND",title:"North Dakota",swf:"FCMap_NorthDakota.swf",width:650,height:430},{id:"OH",title:"Ohio",swf:"FCMap_Ohio.swf",width:650,height:430},{id:"OK",title:"Oklahoma",swf:"FCMap_Oklahoma.swf",width:650,height:400},{id:"OR",title:"Oregon",swf:"FCMap_Oregon.swf",width:650,height:430},{id:"PA",title:"Pennsylvania",swf:"FCMap_Pennsylvania.swf",width:650,height:430},{id:"RI",title:"Rhode Island",swf:"FCMap_RhodeIsland.swf",width:650,height:430},{id:"SC",title:"South Carolina",swf:"FCMap_SouthCarolina.swf",width:650,height:430},{id:"SD",title:"South Dakota",swf:"FCMap_SouthDakota.swf",width:650,height:430},{id:"TN",title:"Tennessee",swf:"FCMap_Tennessee.swf",width:650,height:430},{id:"TX",title:"Texas",swf:"FCMap_Texas.swf",width:700,height:560},{id:"UT",title:"Utah",swf:"FCMap_Utah.swf",width:650,height:430},{id:"VT",title:"Vermont",swf:"FCMap_Vermont.swf",width:650,height:430},{id:"VA",title:"Virginia",swf:"FCMap_Virginia.swf",width:740,height:380},{id:"WA",title:"Washington",swf:"FCMap_Washington.swf",width:650,height:430},{id:"WV",title:"West Virginia",swf:"FCMap_WestVirginia.swf",width:650,height:430},{id:"WI",title:"Wisconsin",swf:"FCMap_Wisconsin.swf",width:650,height:430},{id:"WY",title:"Wyoming",swf:"FCMap_Wyoming.swf",width:650,height:430});if(Config.Distribution&&Config.Distribution.custom_map_list){Ext.each(Config.Distribution.custom_map_list,function(item){this.map_list.push(item);},this);}},mapDrilldown:function(node){if(node.attributes.map_type=='county'){SilverCollection.stats.log('Distribution/Map/Google/County/'+node.attributes.text);this.googleMaps(node);}else{SilverCollection.stats.log('Distribution/Map/Density/'+node.attributes.text);for(i=0;i<this.map_list.length;i++){if(this.map_list[i].id==node.attributes.fusion_map){var map=new FusionMaps(this.fusionmap_path+this.map_list[i].swf,this.map_list[i].swf,this.map_list[i].width,this.map_list[i].height,"0","0");map.setDataURL(Config.URL+"server/species_distribution.php?"+Ext.urlEncode(this.filter).replace(/&/g,"%26").replace(/%/g,"%25")+"%26api=xml%26map_type="+node.attributes.map_type+"%26map_value="+node.attributes.map_value+"%26map_id="+this.id+"%26");map.render(this.map_body.dom);}}
this.card_panel.getLayout().setActiveItem(0);}},googleMaps:function(node){this.live_map_panel.gmap.addControl(new GMapTypeControl());this.live_map_panel.gmap.addMapType(G_PHYSICAL_MAP);var params={api:'gmaps_json',map_type:'county',map_id:node.attributes.map_id,map_state:node.attributes.map_state,map_value:node.attributes.map_value}
var dataUrl="server/species_distribution.php?"+Ext.urlEncode(params)+"&"+Ext.urlEncode(this.filter);function createMarkerDetails(tmpMarker,tpl){GEvent.addListener(tmpMarker,"click",function(){tmpMarker.openInfoWindowHtml(tpl);});}
GDownloadUrl(dataUrl,function(data,responseCode){var records=Ext.decode(data);this.live_map_panel.gmap.clearOverlays();if(records.length>0){for(var i=0;i<records.length;i++){var center=true;var point=new GLatLng(records[i].DecimalLatitude,records[i].DecimalLongitude);var tmpMarker=this.live_map_panel.addMarker(point,null,false,center);if(center)center=false;var tpl="<font size=1 face=verdana><b>Unique Identifier:</b> "+records[i].GlobalUniqueIdentifier+"<br><b>State:</b> "+records[i].StateProvince+"<br><b>County:</b> "+records[i].County+"<br><b>Family:</b> "+records[i].Family+"<br><b>Species:</b> "+records[i].Genus+" "+records[i].SpecificEpithet+"<br><b>Coordinates:</b> ("+records[i].DecimalLatitude+","+records[i].DecimalLongitude+")</font>";createMarkerDetails(tmpMarker,tpl);}}else{Ext.MessageBox.alert(Lang.Get('Core','general','error'),Lang.Get('Core','distribution','missing'));}}.createDelegate(this));this.card_panel.getLayout().setActiveItem(1);},virtualEarth:function(node){var map=new VEMap(this.live_map_body.id);map.LoadMap();map.SetPrintOptions(new VEPrintOptions(true));var l=new VEShapeLayer();map.ShowMessageBox=false;var veLayerSpec=new VEShapeSourceSpecification(VEDataType.GeoRSS,Config.URL+"server/species_distribution.php?api=georss&map_type="+node.attributes.map_type+"&map_state="+node.attributes.map_state+"&map_value="+node.attributes.map_value+"&"+Ext.urlEncode(this.filter),l);map.ImportShapeLayerData(veLayerSpec,function(layer){map.ShowMessageBox=true;});this.card_panel.getLayout().setActiveItem(1);}});
