/*
 *  Atlas of water and health
 * 
 *  Atlas-all.js
 * 
 *  @application	 Atlas
 *  @author		 Tobias Frechen
 *  @date		 2. February, 2010
 *  @version	 1.0
 *  @licence	 Atlas-all.js is licensed under the terms of the Open Source LGPL 3.0 license.
 */
Ext.ns("Atlas");Atlas=Ext.extend(Ext.Panel,{constructor:function(a){Ext.apply(this,a);Atlas.superclass.constructor.call(this,Ext.apply({id:"content-panel",layout:"card",activeItem:0,plugins:[new Ext.ux.plugins.FitToParent()],border:false,renderTo:"content"},a));this.addEvents("load","initialized")},initialize:function(){this.on("load",function(a){this.initializeSubPanels(a)},this);this.loadGlobalData()},loadGlobalData:function(){var a=new Atlas.manager.GlobalDataManager();a.on("load",function(){this.fireEvent("load",a)},this);a.loadData()},initializeSubPanels:function(b){var a=new Atlas.Mapviewer({features:b.geometryStore.getFeatures()});this.addSubPanel(a.getLayout());var c=new Atlas.FactsheetViewer({features:b.geometryStore.getFeatures()});this.addSubPanel(c.getLayout());this.addSubPanel(new Ext.Panel({bodyStyle:"background-color: #DFE8F6",title:"Bonus map",border:false,layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"center"},items:[new Ext.Panel({width:300,border:false,contentEl:"bonusmap",autoShow:true,autoScroll:true,bodyStyle:"background-color: #DFE8F6;font-size:12px;"})]}));this.addSubPanel(new Ext.TabPanel({resizeTabs:true,minTabWidth:115,tabWidth:160,enableTabScroll:true,activeItem:0,defaults:{autoScroll:true},items:[new Ext.Panel({bodyStyle:"background-color: #DFE8F6",title:"Sources and explanation",border:false,layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"left"},items:[new Ext.Panel({width:800,frame:true,contentEl:"explanation",autoShow:true,autoScroll:true,border:false,bodyStyle:"background-color: #DFE8F6"})]}),new Ext.Panel({bodyStyle:"background-color: #DFE8F6",title:"Manual",border:false,layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"left"},items:[new Ext.Panel({width:800,frame:true,contentEl:"manual",autoShow:true,autoScroll:true,border:false,bodyStyle:"background-color: #DFE8F6"})]})]}));this.addSubPanel(new Ext.Panel({bodyStyle:"background-color: #DFE8F6",title:"Imprint",border:false,layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"left"},items:[new Ext.Panel({width:800,frame:true,contentEl:"imprint",autoShow:true,autoScroll:true,border:false,bodyStyle:"background-color: #DFE8F6"})]}));this.layout.setActiveItem(0);this.fireEvent("initialized")},addSubPanel:function(a){this.add(a)}});Ext.ns("Atlas.Navigator");Atlas.Navigator.initMenu=function(c){for(var a=0;a<c;a++){var b=Ext.get("menu_"+a);b.on("click",function(g,i,h){var f=Ext.query(".current")[0];f.className="";this.addClass("current");var d=Ext.getCmp("content-panel");var e=i.id;var j=e.substr(e.indexOf("_")+1,e.length-1);d.layout.setActiveItem(parseInt(j))})}};Ext.ns("Atlas.data");Atlas.data.Map=Ext.extend(Ext.util.Observable,{map:null,mapconfig:null,constructor:function(a){Ext.apply(this,a);Atlas.data.Map.superclass.constructor.call(this,a);this.map=new OpenLayers.Map("map",{projection:this.mapconfig.projection,displayProjection:this.mapconfig.displayProjection,maxExtent:this.mapconfig.bounds,maxResolution:this.mapconfig.resolution,restrictedExtent:this.mapconfig.bounds,numZoomLevels:5,controls:[new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()]});this.initializeLayers(this.features);this.addSelectionControls();this.addEvents("styleLoaded","styleChanged");this.on("styleLoaded",function(c,b){this.addClasses(c,b);this.fireEvent("styleChanged")},this)},initializeLayers:function(a){this.map.addLayer(this.createBackgroundLayer());this.map.addLayer(this.createVectorLayer(a))},createBackgroundLayer:function(){var a=new OpenLayers.Layer.TMS("tms","tms/",{type:"png",getURL:this.overlay_getTileURL});return a},createVectorLayer:function(b){var a=new OpenLayers.Layer.Vector("Map",{styleMap:this.getStyleMap(),isBaseLayer:false,rendererOptions:{zIndexing:true},layerType:"vector"});a.addFeatures(b);return a},getStyleMap:function(){this.mapconfig.defaultStyle.name="Countries";var a=new OpenLayers.StyleMap({"default":this.mapconfig.defaultStyle,select:this.mapconfig.selectStyle,highlight:this.mapconfig.highlightStyle});return a},getFeatures:function(){return this.getVectorLayer().features},addSelectionControls:function(){var b=this.getVectorLayer();var c=new OpenLayers.Control.SelectFeature(b,{hover:true,multiple:false,highlightOnly:true,renderIntent:"highlight"});this.map.addControl(c);c.activate();var a=new OpenLayers.Control.SelectFeature(b,{id:"selControl",multiple:false,onBeforeSelect:function(){this.unselectAll()}});this.map.addControl(a);a.activate()},getSelControl:function(){return this.map.getControl("selControl")},getMap:function(){return this.map},getBackgroundLayer:function(){return this.map.getLayersByName("tms")[0]},getVectorLayer:function(){return this.map.getLayersBy("layerType","vector")[0]},changeStyle:function(a){this.loadStyle(a)},addClasses:function(c,b){this.getVectorLayer().styleMap.styles["default"].rules.length=0;var d=[];Ext.each(c.classes,function(e){var f;var g;if(e.firstValue!=null&&e.secondValue!=null){if(e.name!=""){f=e.name}else{f=this.convertToFormatedString(e.firstValue,b.isFloat)+" - "+this.convertToFormatedString(e.secondValue,b.isFloat)}g=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN,property:"value",lowerBoundary:e.firstValue,upperBoundary:e.secondValue})}if(e.firstValue!=null&&e.secondValue==null){if(e.name!=""){f=e.name}else{f=">= "+this.convertToFormatedString(e.firstValue,b.isFloat)}g=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,property:"value",value:e.firstValue})}if(e.firstValue==null&&e.secondValue!=null){if(e.name!=""){f=e.name}else{f="<= "+this.convertToFormatedString(e.secondValue,b.isFloat)}g=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,property:"value",value:e.secondValue})}var h=new OpenLayers.Rule({name:f,filter:g,symbolizer:{fillColor:e.color}});d.push(h)},this);var a=new OpenLayers.Rule({name:"No data",filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:"value",value:-1}),symbolizer:{fillColor:"#999999"}});d.push(a);this.getVectorLayer().styleMap.styles["default"].addRules(d);this.getVectorLayer().redraw()},loadStyle:function(a){Ext.Ajax.request({scope:this,method:"GET",url:"php/getClasses.php",params:{id:a.aspectId},success:function(b,d){var c=Ext.decode(b.responseText);this.fireEvent("styleLoaded",c,a)}})},overlay_getTileURL:function(c){var b=this.map.getResolution();var a=Math.round((c.left-this.maxExtent.left)/(b*this.tileSize.w));var e=Math.round((c.bottom-this.maxExtent.bottom)/(b*this.tileSize.h));var d=this.map.getZoom();if(a>=0&&e>=0){return this.url+d+"/"+a+"/"+e+"."+this.type}else{return"http://www.maptiler.org/img/none.png"}},convertToFormatedString:function(c,a){var b=c.toString();if(a==1){return Ext.util.Format.number(c,"0,000.00")}else{return Ext.util.Format.number(c,"0,000")}}});Ext.ns("Atlas.data.store");Atlas.data.store.GeometryStore=Ext.extend(Ext.data.JsonStore,{features:[],countryRoot:null,constructor:function(a){Ext.apply(this,a);Atlas.data.store.GeometryStore.superclass.constructor.call(this,Ext.apply({proxy:new Ext.data.HttpProxy({url:"php/geometries.php",method:"POST"}),root:"geometries",fields:["fid","geom","country_id","country_name"]},a));this.addEvents("featureLoad");this.on("load",function(){this.data.each(function(e,b,f){var d=OpenLayers.Geometry.fromWKT(e.get("geom"));var c=new OpenLayers.Feature.Vector(d,{id:e.get("fid"),countryId:e.get("country_id"),countryName:e.get("country_name"),value:-1});this.features.push(c)},this);this.fireEvent("featureLoad")})},getFeatures:function(){var c=this.features;var d=[];for(var b=0;b<c.length;b++){var a=c[b].clone();d.push(a)}return d}});Ext.ns("Atlas.data.tree.loader");Atlas.data.tree.loader.ThematicLoader=Ext.extend(Ext.tree.TreeLoader,{constructor:function(a){Ext.apply(this,a);Atlas.data.tree.loader.ThematicLoader.superclass.constructor.call(this,Ext.apply({dataUrl:"php/thematicTree.php",createNode:function(b){return Atlas.data.tree.loader.ThematicLoader.prototype.createNode.call(this,b)}},a))}});Ext.ns("Atlas.data.tree.root");Atlas.data.tree.root.CountryRoot=Ext.extend(Ext.tree.TreeNode,{features:null,constructor:function(a){Ext.apply(this,a);Atlas.data.tree.root.CountryRoot.superclass.constructor.call(this,Ext.apply({text:"countryRoot",expanded:true},a));for(var b=0;b<this.features.length;b++){this.appendChild(new Ext.tree.TreeNode({text:this.features[b].data.countryName,id:this.features[b].data.countryId,leaf:true}))}}});Ext.ns("Atlas.data.tree.root");Atlas.data.tree.root.ThematicRoot=Ext.extend(Ext.tree.AsyncTreeNode,{constructor:function(a){Ext.apply(this,a);Atlas.data.tree.root.ThematicRoot.superclass.constructor.call(this,Ext.apply({text:"thematicRoot",expanded:true,loader:new Atlas.data.tree.loader.ThematicLoader()},a))}});Ext.ns("Atlas.manager");Atlas.manager.GlobalDataManager=Ext.extend(Ext.util.Observable,{geometryStore:null,map:null,constructor:function(a){Ext.apply(this,a);Atlas.manager.GlobalDataManager.superclass.constructor.call(this,a);this.addEvents("load","geometriesLoad")},loadData:function(){this.on("geometriesLoad",function(){this.fireEvent("load")},this);this.loadGeometries()},loadGeometries:function(){this.geometryStore=new Atlas.data.store.GeometryStore();this.geometryStore.on("featureLoad",function(){this.fireEvent("geometriesLoad")},this);this.geometryStore.load()}});Ext.ns("Atlas.panel");Atlas.panel.CountryPanel=Ext.extend(Ext.Panel,{map:null,mapPanel:null,countryTreePanel:null,factsheet:null,constructor:function(a){Ext.apply(this,a);Atlas.panel.CountryPanel.superclass.constructor.call(this,Ext.apply({items:[this.mapPanel=new Atlas.panel.Mappanel({title:"Map",region:"center",margins:"5 0 5 0",split:true,map:this.map.getMap()}),this.countryTreePanel=new Atlas.panel.CountryTreePanel({title:" Countries",region:"west",width:300,margins:"5 0 5 5",split:true,features:this.map.getFeatures(),listeners:{scope:this,click:function(c){if(c.leaf){var b=this.countryTreePanel.getFeatureBySelectedNode(c.id);this.map.getSelControl().select(b)}}}})]},a));this.addEvents("factsheetClick","factsheetCreated");this.map.getVectorLayer().events.on({scope:this,featureselected:function(b){var d=b.feature.attributes.countryId;var e=b.feature.attributes.countryName;var c=this.countryTreePanel.getNodeById(d);if(!c.isSelected()){c.select()}this.fireEvent("factsheetClick",d,e)}})},createFactsheet:function(a,b){this.factsheet=new Ext.Panel({title:b,id:"country"+a,closable:true,bodyStyle:"background-color: #DFE8F6",layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"center"}});this.getContent(a)},getContent:function(a){Ext.Ajax.request({scope:this,method:"GET",url:"php/getfact.php",params:{id:a},success:function(b,c){this.factsheet.add(new Ext.Panel({width:600,autoScroll:true,html:b.responseText}));this.fireEvent("factsheetCreated")}})},getFactsheet:function(){return this.factsheet}});Ext.ns("Atlas.panel");Atlas.panel.CountryTreePanel=Ext.extend(Ext.tree.TreePanel,{features:null,constructor:function(a){Ext.apply(this,a);Atlas.panel.CountryTreePanel.superclass.constructor.call(this,Ext.apply({rootVisible:false,animate:false,enableDD:false,autoScroll:true,root:new Atlas.data.tree.root.CountryRoot({features:this.features})},a))},getFeatureBySelectedNode:function(b){for(var a=0;a<this.features.length;a++){if(this.features[a].attributes.countryId==b){return this.features[a]}}return -1}});Ext.ns("Atlas.panel");Atlas.panel.HTMLPanel=Ext.extend(Ext.Panel,{constructor:function(a){Ext.apply(this,a);Atlas.panel.HTMLPanel.superclass.constructor.call(this,Ext.apply({html:this.html},a))}});Ext.ns("Atlas.panel");Atlas.panel.InformationPanel=Ext.extend(Ext.grid.GridPanel,{constructor:function(a){Ext.apply(this,a);Atlas.panel.InformationPanel.superclass.constructor.call(this,Ext.apply({columns:[new Ext.grid.RowNumberer({width:30}),{id:"name",header:"Name",width:200,sortable:true,dataIndex:"countryName"},{id:"value",header:"Value",align:"right",sortable:true,dataIndex:"value",renderer:function(c){if(c==-1){return"-"}else{var b=c.toString();if(b.indexOf(".")!=-1){return Ext.util.Format.number(c,"0,000.00")}else{return Ext.util.Format.number(c,"0,000")}}}}],autoExpandColumn:"value",stripeRows:true,sm:new GeoExt.grid.FeatureSelectionModel({selectControl:this.selControl,singleSelect:true})},a))},refreshView:function(b){var a=this.getView();a.refresh();if(b!=-1){a.getRow(b).scrollIntoView()}},createContextMenu:function(d,b,g){var h=new Ext.menu.Menu({});var f=function(){var i=b.geometry.getBounds();g.zoomToExtent(i);h.hide()};var e=function(){var j=b.geometry.getBounds();var i=j.getCenterLonLat();g.panTo(i);h.hide()};var a=new Ext.menu.Item({text:"Zoom to extent",handler:f,scope:this});var c=new Ext.menu.Item({text:"Move to country",handler:e,scope:this});h.addItem(a);h.addItem(c);h.showAt(d.getXY());d.stopEvent()}});Ext.ns("Atlas.panel");Atlas.panel.Mappanel=Ext.extend(GeoExt.MapPanel,{constructor:function(a){Ext.apply(this,a);Atlas.panel.Mappanel.superclass.constructor.call(this,Ext.apply({items:[{xtype:"gx_zoomslider",vertical:true,height:100,plugins:new GeoExt.ZoomSliderTip({template:"<div>Zoom Level: {zoom}</div>"})}],tbar:this.createToolbar},a))},createToolbar:function(){var b=new OpenLayers.Control.NavigationHistory();this.map.addControl(b);var a=new Ext.Toolbar({items:[new GeoExt.Action({map:this.map,control:new OpenLayers.Control.ZoomToMaxExtent(),iconCls:"zoomfull"}),new GeoExt.Action({map:this.map,control:new OpenLayers.Control.ZoomBox(),allowDepress:false,iconCls:"zoomin",toggleGroup:"navigation"}),new GeoExt.Action({map:this.map,control:new OpenLayers.Control.ZoomBox({out:true}),allowDepress:false,iconCls:"zoomout",toggleGroup:"navigation"}),"-",new GeoExt.Action({map:this.map,control:new OpenLayers.Control.Navigation(),pressed:true,allowDepress:false,iconCls:"pan",toggleGroup:"navigation"}),"-",new GeoExt.Action({map:this.map,control:b.previous,disabled:true,iconCls:"back"}),new GeoExt.Action({map:this.map,control:b.next,disabled:true,iconCls:"next"})]});return a}});Ext.ns("Atlas.panel");Atlas.panel.ThematicTreePanel=Ext.extend(Ext.tree.TreePanel,{constructor:function(a){Ext.apply(this,a);Atlas.panel.ThematicTreePanel.superclass.constructor.call(this,Ext.apply({rootVisible:false,animate:false,enableDD:false,autoScroll:true,root:new Atlas.data.tree.root.ThematicRoot()},a))}});Ext.ns("Atlas.panel");Atlas.panel.ThemePanel=Ext.extend(Ext.Panel,{constructor:function(a){Ext.apply(this,a);Atlas.panel.ThemePanel.superclass.constructor.call(this,Ext.apply({items:[new Atlas.panel.ThematicTreePanel({title:"Themes",region:"west",width:300,margins:"5 0 5 5",split:true,listeners:{scope:this,click:function(b){if(b.leaf){this.fireEvent("factsheetClick",b.attributes)}}}}),new Ext.Panel({region:"center",border:false,bodyStyle:"background-color: #DFE8F6"})]},a));this.addEvents("factsheetClick","factsheetCreated")},createFactsheet:function(b){var a=this.getStore();a.on("load",function(){this.createPanel(b,a)},this);a.on("exception",function(f,g,h,e,d,c){alert("exception")},this);a.load({params:{id:b.aspectId}})},createPanel:function(c,a){var b=(c.longname!="")?c.longname:c.text;this.factsheet=new Ext.Panel({title:b,id:"aspect"+c.aspectId,closable:true,bodyStyle:"background-color: #DFE8F6",layout:"hbox",layoutConfig:{padding:"5",align:"stretch",pack:"center"},items:[new Ext.grid.GridPanel({title:b,width:400,store:a,layout:"fit",columns:[{id:"countryName",header:"Country",width:100,sortable:true,dataIndex:"countryName"},{header:"Year",width:100,sortable:true,dataIndex:"year",hidden:true},{header:"["+c.unit+"]",width:100,sortable:true,dataIndex:"value",renderer:function(e){if(e==-1){return"-"}else{var d=e.toString();if(d.indexOf(".")!=-1){return Ext.util.Format.number(e,"0,000.00")}else{return Ext.util.Format.number(e,"0,000")}}}}],view:new Ext.grid.GroupingView({forceFit:true,showGroupName:false,groupTextTpl:'{[values.gvalue  == "" ? "Year: No information" : "Year: "+values.text]} ({[values.rs.length]} {[values.rs.length > 1 ? "Countries" : "Country"]})'})})]});this.fireEvent("factsheetCreated")},getStore:function(c){var a=new Ext.data.JsonReader({root:"data",fields:[{name:"countryName",type:"string"},{name:"countryId",type:"string"},{name:"year",type:"string"},{name:"value",type:"float",convert:function(f,e){if(f){return parseFloat(f)}else{return -1}}}]});var d=new Ext.data.HttpProxy({url:"php/tfactdata.php",method:"GET"});var b=new Ext.data.GroupingStore({reader:a,root:"data",fields:[{name:"countryName",type:"string"},{name:"countryId",type:"string"},{name:"year",type:"string"},{name:"value",type:"float",convert:function(f,e){if(f){return parseFloat(f)}else{return -1}}}],proxy:d,sortInfo:{field:"countryName",direction:"ASC"},groupField:"year"});return b},getFactsheet:function(){return this.factsheet}});Ext.ns("Atlas.panel");Atlas.panel.YearPanel=Ext.extend(Ext.Panel,{combobox:null,constructor:function(a){Ext.apply(this,a);Atlas.panel.YearPanel.superclass.constructor.call(this,Ext.apply({items:[new Ext.FormPanel({borders:false,labelWidth:80,bodyStyle:"padding: 5px 5px 5px 5px",items:[this.combobox=new Ext.form.ComboBox({fieldLabel:"Select year",id:"yearCombo",store:this.store,maxHeight:"100",anchor:"100%",typeAhead:true,editable:false,mode:"local",triggerAction:"all",emptyText:"No data",valueField:"year",displayField:"year",listeners:{scope:this,select:function(d,b,c){this.fireEvent("yearSelected",d,b,c)}}})]})]},a));this.addEvents("yearSelected")},checkStatus:function(a){if(a){this.expand();this.combobox.setValue(a)}else{this.collapse();this.combobox.setValue(null)}}});var MapviewerConfig={projection:new OpenLayers.Projection("EPSG:102014"),displayProjection:new OpenLayers.Projection("EPSG:4326"),bounds:new OpenLayers.Bounds(-5691816.07169,4165606.37193,6589920.83239,13419156.4805),resolution:21805.12544,defaultStyle:new OpenLayers.Style({fillColor:"#999999",fillOpacity:0.6,strokeColor:"#000000",strokeWidth:1,strokeOpacity:1,graphicZIndex:100}),highlightStyle:new OpenLayers.Style({strokeColor:"#FFFFFF",strokeWidth:1,strokeOpacity:1,graphicZIndex:200}),selectStyle:new OpenLayers.Style({strokeColor:"#FFFF00",strokeWidth:1,strokeOpacity:1,graphicZIndex:300})};Ext.ns("Atlas");Atlas.Mapviewer=Ext.extend(Ext.util.Observable,{map:null,dataManager:null,layoutManager:null,constructor:function(b){Ext.apply(this,b);Atlas.Mapviewer.superclass.constructor.call(this,b);var c=new Atlas.data.Map({features:this.features,mapconfig:MapviewerConfig});var a=new Atlas.mapviewer.manager.DataManager({map:c});this.layoutManager=new Atlas.mapviewer.manager.LayoutManager({map:c,dataManager:a})},getLayout:function(){return this.layoutManager.getPanel()}});Ext.ns("Atlas.mapviewer.data.store");Atlas.mapviewer.data.store.DataStore=Ext.extend(Ext.data.JsonStore,{constructor:function(a){Ext.apply(this,a);Atlas.mapviewer.data.store.DataStore.superclass.constructor.call(this,Ext.apply({proxy:new Ext.data.HttpProxy({url:"php/data.php",method:"GET"}),root:"data",fields:[{name:"countryId",type:"string"},{name:"year",type:"string"},{name:"value",type:"float",convert:function(c,b){if(c){return parseFloat(c)}else{return -1}}}]},a))},getYears:function(){var a=[];Ext.each(this.data.items,function(d){var c=d.get("year");if(c){var e=false;for(var b=0;b<a.length;b++){if(c==a[b]){e=true}}if(!e){a.push([c])}}});return a},getItemsByYear:function(a){if(a){return this.query("year",a)}else{return this.data}}});Ext.ns("Atlas.mapviewer.data.store");Atlas.mapviewer.data.store.FeatureStore=Ext.extend(GeoExt.data.FeatureStore,{constructor:function(a){Ext.apply(this,a);Atlas.mapviewer.data.store.FeatureStore.superclass.constructor.call(this,Ext.apply({reader:new GeoExt.data.FeatureReader({},[{name:"id",type:"string"},{name:"countryName",type:"string"},{name:"countryId",type:"string"},{name:"value",type:"float"}])},a))},updateAttributes:function(b){this.each(function(c){var e=c.get("countryId");var d=b.findIndexBy(function(h,g){return h.data.countryId==e});var f=(d!=-1)?b.itemAt(d).get("value"):null;c.data.value=f;c.data.feature.attributes.value=f},this);var a=this.getSortState();if(a){this.sort(a.field,a.direction)}}});Ext.ns("Atlas.mapviewer.data.store");Atlas.mapviewer.data.store.YearStore=Ext.extend(Ext.data.ArrayStore,{constructor:function(a){Ext.apply(this,a);Atlas.mapviewer.data.store.YearStore.superclass.constructor.call(this,Ext.apply({fields:[{name:"year"}]},a))},setYears:function(a){if(a.length>0){this.loadData(a)}else{this.removeAll()}}});Ext.ns("Atlas.mapviewer.manager");Atlas.mapviewer.manager.DataManager=Ext.extend(Ext.util.Observable,{dataStore:null,featureStore:null,yearStore:null,constructor:function(a){Ext.apply(this,a);Atlas.mapviewer.manager.DataManager.superclass.constructor.call(this,a);this.featureStore=new Atlas.mapviewer.data.store.FeatureStore({layer:this.map.getVectorLayer(),features:this.map.getVectorLayer().features});this.yearStore=new Atlas.mapviewer.data.store.YearStore();this.dataStore=new Atlas.mapviewer.data.store.DataStore({listeners:{scope:this,load:function(c,b,d){this.yearStore.setYears(c.getYears());this.fireEvent("yearsLoaded");this.updateFeatureStore(this.getLatestYear());this.fireEvent("featuresUpdated")}}})},getLatestYear:function(){if(this.yearStore.getCount()>0){return this.yearStore.getAt(0).get("year")}else{return null}},getFeatureStore:function(){return this.featureStore},getIndexOfSelectedFeature:function(a){return this.featureStore.indexOf(a)},getYearStore:function(){return this.yearStore},updateFeatureStore:function(b){var a=this.dataStore.getItemsByYear(b);this.featureStore.updateAttributes(a)},updateDataStore:function(a){this.dataStore.load({params:{id:a}})}});Ext.ns("Atlas.mapviewer.manager");Atlas.mapviewer.manager.LayoutManager=Ext.extend(Ext.util.Observable,{panel:null,map:null,dataManager:null,mapPanel:null,informationPanel:null,legendPanel:null,selectedNode:null,yearPanel:null,constructor:function(a){Ext.apply(this,a);Atlas.mapviewer.manager.LayoutManager.superclass.constructor.call(this,a);this.createLayout();this.dataManager.on("featuresUpdated",function(){this.map.changeStyle(this.selectedNode.attributes);var b=this.informationPanel.getSelectionModel().getSelected();this.informationPanel.refreshView(this.dataManager.getIndexOfSelectedFeature(b))},this);this.dataManager.on("yearsLoaded",function(){this.yearPanel.checkStatus(this.dataManager.getLatestYear())},this);this.map.on("styleChanged",function(){var c=this.map.getVectorLayer();var b=this.legendPanel.layerStore.getAt(1);this.legendPanel.removeLegend(b);if(this.selectedNode.attributes.longname!=""){b.set("title",this.selectedNode.attributes.longname+" ["+this.selectedNode.attributes.unit+"]")}else{b.set("title",this.selectedNode.attributes.text+" ["+this.selectedNode.attributes.unit+"]")}this.legendPanel.addLegend(b);this.legendPanel.doLayout();this.mapPanel.getEl().unmask()},this)},createLayout:function(){this.panel=new Ext.Panel({layout:"border",items:[this.mapPanel=new Atlas.panel.Mappanel({title:"Map",region:"center",margins:"5 0 5 0",split:true,map:this.map.getMap()}),this.informationPanel=new Atlas.panel.InformationPanel({id:"informationPanel",margins:"5 5 5 0",title:"Information",region:"east",width:350,split:true,store:this.dataManager.getFeatureStore(),selControl:this.map.getSelControl(),listeners:{scope:this,rowdblclick:function(c,g,f){var a=c.getSelectionModel().getSelected();var b=a.get("feature");var d=b.geometry.getBounds();this.map.getMap().zoomToExtent(d)},rowcontextmenu:function(c,f,d){c.getSelectionModel().selectRow(f);var a=c.getSelectionModel().getSelected();var b=a.get("feature");c.createContextMenu(d,b,this.map.getMap())}}}),new Ext.Panel({margins:"5 0 5 5",region:"west",split:true,width:250,layout:"border",items:[new Atlas.panel.ThematicTreePanel({title:"Layers",region:"center",split:true,listeners:{scope:this,click:function(a){if(a.leaf){this.selectedNode=a;this.mapPanel.getEl().mask("Loading...","x-mask-loading");this.dataManager.updateDataStore(a.attributes.aspectId);if(this.selectedNode.attributes.longname!=""){this.mapPanel.setTitle(a.attributes.longname)}else{this.mapPanel.setTitle(a.attributes.text)}this.informationPanel.getColumnModel().setColumnHeader(2,"["+a.attributes.unit+"]")}}}}),new Ext.Panel({region:"south",layout:"border",split:true,height:300,items:[this.yearPanel=new Atlas.panel.YearPanel({id:"yearPanel",borders:false,region:"north",collapseMode:"mini",animCollapse:false,collapsed:true,border:false,height:50,layout:"fit",split:true,store:this.dataManager.getYearStore(),listeners:{scope:this,yearSelected:function(c,a,b){this.dataManager.updateFeatureStore(a.get("year"));this.informationPanel.getView().refresh();this.map.getVectorLayer().redraw()}}}),this.legendPanel=new GeoExt.LegendPanel({title:"Legend",bodyStyle:"padding:5px",labelCls:"mylabel",split:true,map:this.map,region:"center",autoScroll:true})]})]})]})},getPanel:function(){return this.panel}});var FactsheetviewerConfig={projection:new OpenLayers.Projection("EPSG:102014"),displayProjection:new OpenLayers.Projection("EPSG:4326"),bounds:new OpenLayers.Bounds(-5691816.07169,4165606.37193,6589920.83239,13419156.4805),resolution:21805.12544,defaultStyle:new OpenLayers.Style({fillColor:"#999999",fillOpacity:0.6,strokeColor:"#000000",strokeWidth:1,strokeOpacity:1,graphicZIndex:100}),highlightStyle:new OpenLayers.Style({strokeColor:"#FFFFFF",strokeWidth:1,strokeOpacity:1,graphicZIndex:200}),selectStyle:new OpenLayers.Style({strokeColor:"#FFFF00",strokeWidth:1,strokeOpacity:1,graphicZIndex:300})};Ext.ns("Atlas");Atlas.FactsheetViewer=Ext.extend(Ext.util.Observable,{map:null,features:null,dataManager:null,layoutManager:null,constructor:function(a){Ext.apply(this,a);Atlas.FactsheetViewer.superclass.constructor.call(this,a);this.map=new Atlas.data.Map({features:this.features,mapconfig:FactsheetviewerConfig});this.layoutManager=new Atlas.factsheetviewer.manager.LayoutManager({map:this.map})},getLayout:function(){return this.layoutManager.getPanel()}});Ext.ns("Atlas.factsheetviewer.manager");Atlas.factsheetviewer.manager.LayoutManager=Ext.extend(Ext.util.Observable,{panel:null,map:null,countryPanel:null,themePanel:null,constructor:function(a){Ext.apply(this,a);Atlas.factsheetviewer.manager.LayoutManager.superclass.constructor.call(this,a);this.createLayout()},createLayout:function(){this.panel=new Ext.TabPanel({title:"factsheets",resizeTabs:true,minTabWidth:115,tabWidth:135,enableTabScroll:true,activeItem:0,defaults:{autoScroll:true},items:[this.countryPanel=new Atlas.panel.CountryPanel({title:"Select by country",layout:"border",map:this.map,listeners:{scope:this,factsheetClick:function(a,b){this.countryPanel.createFactsheet(a,b)},factsheetCreated:function(){this.addTab(this.countryPanel.getFactsheet())}}}),this.themePanel=new Atlas.panel.ThemePanel({title:"Select by theme",layout:"border",listeners:{scope:this,factsheetClick:function(a){this.themePanel.createFactsheet(a)},factsheetCreated:function(){this.addTab(this.themePanel.getFactsheet())}}})],plugins:new Ext.ux.TabCloseMenu()})},addTab:function(a){var b=this.panel.getComponent(a.getId());if(b){this.panel.setActiveTab(b)}else{this.panel.add(a);this.panel.setActiveTab(a)}},getPanel:function(){return this.panel}});
