Ext.namespace("gxp");
gxp.util={_uniqueNames:{},getOGCExceptionText:function(a){var b;a&&a.exceptions?(b=[],Ext.each(a.exceptions,function(a){Ext.each(a.texts,function(a){b.push(a)})}),b=b.join("\n")):b="Unknown error (no exception report).";return b},dispatch:function(a,b,c){function d(){++f;f===g&&b.call(c,h)}function e(b){window.setTimeout(function(){a[b].apply(c,[d,h])})}for(var b=b||Ext.emptyFn,c=c||this,g=a.length,f=0,h={},i=0;i<g;++i)e(i)},uniqueName:function(a,b){var b=b||" ",c=RegExp(b+"[0-9]*$"),d=a.replace(c,
""),c=c.exec(a),c=void 0!==this._uniqueNames[d]?this._uniqueNames[d]:c instanceof Array?Number(c[0]):void 0,e=d;void 0!==c&&(c++,e+=b+c);this._uniqueNames[d]=c||0;return e},getAbsoluteUrl:function(a){var b;Ext.isIE6||Ext.isIE7||Ext.isIE8?(b=document.createElement("<a href='"+a+"'/>"),b.style.display="none",document.body.appendChild(b),b.href=b.href,document.body.removeChild(b)):(b=document.createElement("a"),b.href=a);return b.href},md5:function(){function a(a){return String.fromCharCode(a&255)+String.fromCharCode(a>>>
8&255)+String.fromCharCode(a>>>16&255)+String.fromCharCode(a>>>24&255)}function b(a){for(;0>a;)a+=4294967296;for(;4294967295<a;)a-=4294967296;return a}var c=[0,3614090360,3905402710,606105819,3250441966,4118548399,1200080426,2821735955,4249261313,1770035416,2336552879,4294925233,2304563134,1804603682,4254626195,2792965006,1236535329,4129170786,3225465664,643717713,3921069994,3593408605,38016083,3634488961,3889429448,568446438,3275163606,4107603335,1163531501,2850285829,4243563512,1735328473,2368359562,
4294588738,2272392833,1839030562,4259657740,2763975236,1272893353,4139469664,3200236656,681279174,3936430074,3572445317,76029189,3654602809,3873151461,530742520,3299628645,4096336452,1126891415,2878612391,4237533241,1700485571,2399980690,4293915773,2240044497,1873313359,4264355552,2734768916,1309151649,4149444226,3174756917,718787259,3951481745],d=[[function(a,b,c){return a&b|~a&c},[[0,7,1],[1,12,2],[2,17,3],[3,22,4],[4,7,5],[5,12,6],[6,17,7],[7,22,8],[8,7,9],[9,12,10],[10,17,11],[11,22,12],[12,7,
13],[13,12,14],[14,17,15],[15,22,16]]],[function(a,b,c){return a&c|b&~c},[[1,5,17],[6,9,18],[11,14,19],[0,20,20],[5,5,21],[10,9,22],[15,14,23],[4,20,24],[9,5,25],[14,9,26],[3,14,27],[8,20,28],[13,5,29],[2,9,30],[7,14,31],[12,20,32]]],[function(a,b,c){return a^b^c},[[5,4,33],[8,11,34],[11,16,35],[14,23,36],[1,4,37],[4,11,38],[7,16,39],[10,23,40],[13,4,41],[0,11,42],[3,16,43],[6,23,44],[9,4,45],[12,11,46],[15,16,47],[2,23,48]]],[function(a,b,c){return b^(a|~c)},[[0,6,49],[7,10,50],[14,15,51],[5,21,
52],[12,6,53],[3,10,54],[10,15,55],[1,21,56],[8,6,57],[15,10,58],[6,15,59],[13,21,60],[4,6,61],[11,10,62],[2,15,63],[9,21,64]]]];return function(e){var g,f,h,i,j,k,o,p,m,n,s;g=[1732584193,4023233417,2562383102,271733878];f=e.length;h=f&63;i=56>h?56-h:120-h;if(0<i){e+="\u0080";for(h=0;h<i-1;h++)e+="\x00"}e+=a(8*f);e+=a(0);f+=i+8;i=[0,1,2,3];j=[16];k=[4];for(n=0;n<f;n+=64){for(h=0,m=n;16>h;h++,m+=4)j[h]=e.charCodeAt(m)|e.charCodeAt(m+1)<<8|e.charCodeAt(m+2)<<16|e.charCodeAt(m+3)<<24;for(h=0;4>h;h++)k[h]=
g[h];for(h=0;4>h;h++){o=d[h][0];p=d[h][1];for(m=0;16>m;m++){s=j;var q=k,t=p[m],u=void 0,v=void 0,r=void 0,x=void 0,l=void 0,w=void 0,y=void 0,r=l=void 0,u=i[0],v=i[1],r=i[2],x=i[3],l=t[0],w=t[1],y=t[2],r=o(q[v],q[r],q[x]),l=q[u]+r+s[l]+c[y],l=b(l),l=l<<w|l>>>32-w,l=l+q[v];q[u]=b(l);s=i[0];i[0]=i[3];i[3]=i[2];i[2]=i[1];i[1]=s}}for(h=0;4>h;h++)g[h]+=k[h],g[h]=b(g[h])}h=a(g[0])+a(g[1])+a(g[2])+a(g[3]);g="";for(e=0;16>e;e++)f=h.charCodeAt(e),g+="0123456789abcdef".charAt(f>>4&15),g+="0123456789abcdef".charAt(f&
15);return g}}()};Ext.namespace("gxp.plugins");
gxp.plugins.LayerSource=Ext.extend(Ext.util.Observable,{store:null,lazy:!1,title:"",constructor:function(a){this.initialConfig=a;Ext.apply(this,a);this.addEvents("ready","failure");gxp.plugins.LayerSource.superclass.constructor.apply(this,arguments)},init:function(a){this.target=a;this.createStore()},getMapProjection:function(){var a=this.target.mapPanel.map.projection;return this.target.mapPanel.map.getProjectionObject()||a&&new OpenLayers.Projection(a)||new OpenLayers.Projection("EPSG:4326")},getProjection:function(a){var a=
a.getLayer(),b=this.getMapProjection();return(a.projection?a.projection instanceof OpenLayers.Projection?a.projection:new OpenLayers.Projection(a.projection):b).equals(b)?b:null},createStore:function(){this.fireEvent("ready",this)},createLayerRecord:function(){},getConfigForRecord:function(a){var b=a.getLayer();return{source:a.get("source"),name:a.get("name"),title:a.get("title"),visibility:b.getVisibility(),opacity:b.opacity||void 0,group:a.get("group"),fixed:a.get("fixed"),selected:a.get("selected")}},
getState:function(){return Ext.apply({},this.initialConfig)}});(function(){function a(a){var c=this.meta.format;if("string"===typeof a||a.nodeType){var a=c.read(a),d=c.read;c.read=function(){c.read=d;return a}}this.raw=a}Ext.intercept(GeoExt.data.WMSCapabilitiesReader.prototype,"readRecords",a);GeoExt.data.AttributeReader&&Ext.intercept(GeoExt.data.AttributeReader.prototype,"readRecords",a)})();Ext.namespace("gxp.plugins");
gxp.plugins.WMSSource=Ext.extend(gxp.plugins.LayerSource,{ptype:"gxp_wmssource",baseParams:null,format:null,describeLayerStore:null,describedLayers:null,schemaCache:null,ready:!1,requiredProperties:["title","bbox"],constructor:function(a){if(a&&!0===a.forceLazy)a.requiredProperties=[],delete a.forceLazy,window.setTimeout(function(){throw"Deprecated config option 'forceLazy: true' for layer source '"+a.id+"'. Use 'requiredProperties: []' instead.";},0);gxp.plugins.WMSSource.superclass.constructor.apply(this,
arguments);if(!this.format)this.format=new OpenLayers.Format.WMSCapabilities({keepData:!0})},init:function(a){gxp.plugins.WMSSource.superclass.init.apply(this,arguments);this.target.on("authorizationchange",this.onAuthorizationChange,this)},onAuthorizationChange:function(){this.store&&"/"===this.store.url.charAt(0)&&this.store.reload()},destroy:function(){this.target.un("authorizationchange",this.onAuthorizationChange,this);gxp.plugins.WMSSource.superclass.destroy.apply(this,arguments)},isLazy:function(){var a=
!0,b=this.target.initialConfig.map;if(b&&b.layers)for(var c,d=0,e=b.layers.length;d<e&&!(c=b.layers[d],c.source===this.id&&(a=this.layerConfigComplete(c),!1===a));++d);return a},layerConfigComplete:function(a){var b=!0;if(!Ext.isObject(a.capability))for(var c=this.requiredProperties,d=c.length-1;0<=d&&!(b=!!a[c[d]],!1===b);--d);return b},createStore:function(){var a=this.baseParams||{SERVICE:"WMS",REQUEST:"GetCapabilities"};if(this.version)a.VERSION=this.version;var b=this.isLazy();this.store=new GeoExt.data.WMSCapabilitiesStore({url:this.trimUrl(this.url,
a),baseParams:a,format:this.format,autoLoad:!b,layerParams:{exceptions:null},listeners:{load:function(){if(!this.store.reader.raw||!this.store.reader.raw.service)this.fireEvent("failure",this,"Invalid capabilities document.");else{if(!this.title)this.title=this.store.reader.raw.service.title;this.ready?this.lazy=!1:(this.ready=!0,this.fireEvent("ready",this))}delete this.format.data},exception:function(a,b,e,g,f,h){delete this.store;a="";"response"===b?"string"==typeof h?b=h:(b="Invalid response from server.",
(a=this.format&&this.format.data)&&a.parseError&&(b+="  "+a.parseError.reason+" - line: "+a.parseError.line),f=f.status,a=200<=f&&300>f?gxp.util.getOGCExceptionText(h&&h.arg&&h.arg.exceptionReport):"Status: "+f):(b="Trouble creating layer store from response.",a="Unable to handle response.");this.fireEvent("failure",this,b,a);delete this.format.data},scope:this}});if(b)this.lazy=!0,Ext.Ajax.request({method:"GET",url:this.url,params:{SERVICE:"WMS"},callback:function(a,b,e){a=e.status;200<=a&&403>a&&
e.responseText?(this.ready=!0,this.fireEvent("ready",this)):this.fireEvent("failure",this,"Layer source not available.","Unable to contact WMS service.")},scope:this})},trimUrl:function(a,b){var c=OpenLayers.Util.getParameters(a),b=OpenLayers.Util.upperCaseObject(b),d=0,e;for(e in c)++d,e.toUpperCase()in b&&(--d,delete c[e]);return a.split("?").shift()+(d?"?"+OpenLayers.Util.getParameterString(c):"")},createLazyLayerRecord:function(a){var a=Ext.apply({},a),b=a.srs||this.target.map.projection;a.srs=
{};a.srs[b]=!0;var c=a.bbox||this.target.map.maxExtent;a.bbox={};a.bbox[b]={bbox:c};c=this.store&&this.store instanceof GeoExt.data.WMSCapabilitiesStore?new this.store.recordType(a):new GeoExt.data.LayerRecord(a);c.setLayer(new OpenLayers.Layer.WMS(a.title||a.name,a.url||this.url,{layers:a.name,transparent:"transparent"in a?a.transparent:!0,format:a.format},{projection:b}));c.json=a;return c},createLayerRecord:function(a){var b,c,d=this.store.findExact("name",a.name);-1<d?c=this.store.getAt(d):Ext.isObject(a.capability)?
c=this.store.reader.readRecords({capability:{request:{getmap:{href:this.url}},layers:[a.capability]}}).records[0]:this.layerConfigComplete(a)&&(c=this.createLazyLayerRecord(a));if(c){b=c.getLayer();var e=this.getMapProjection(),d=this.getProjection(c),g=(d||e).getCode(),f=c.get("bbox"),h;if(f&&f[g])h=f[g].bbox;else if(g=c.get("llbbox"))e=OpenLayers.Bounds.fromArray(g).transform(new OpenLayers.Projection("EPSG:4326"),e),0<1/e.getHeight()&&0<1/e.getWidth()&&(h=e);e=Ext.applyIf({STYLES:a.styles,FORMAT:a.format,
TRANSPARENT:a.transparent},b.params);g=!1;"tiled"in a?g=!a.tiled:c.data.dimensions&&c.data.dimensions.time&&(g=!0);b=new OpenLayers.Layer.WMS(a.title||b.name,b.url,e,{attribution:b.attribution,maxExtent:h,restrictedExtent:h,singleTile:g,ratio:a.ratio||1,visibility:"visibility"in a?a.visibility:!0,opacity:"opacity"in a?a.opacity:1,buffer:"buffer"in a?a.buffer:1,projection:d,dimensions:c.data.dimensions,transitionEffect:g?"resize":null});h=Ext.applyIf({title:b.name,group:a.group,infoFormat:a.infoFormat,
source:a.source,properties:"gxp_wmslayerpanel",fixed:a.fixed,selected:"selected"in a?a.selected:!1,restUrl:this.restUrl,layer:b},c.data);var i=[{name:"source",type:"string"},{name:"group",type:"string"},{name:"properties",type:"string"},{name:"fixed",type:"boolean"},{name:"selected",type:"boolean"},{name:"restUrl",type:"string"},{name:"infoFormat",type:"string"}];c.fields.each(function(a){i.push(a)});b=new (GeoExt.data.LayerRecord.create(i))(h,b.id)}b.json=a;return b},getProjection:function(a){var b=
this.getMapProjection(),c=b,a=a.get("srs");if(!a[b.getCode()]){var c=null,d,e;for(e in a)if((d=new OpenLayers.Projection(e)).equals(b)){c=d;break}}return c},initDescribeLayerStore:function(){var a=this.store.reader.raw;this.lazy&&(a={capability:{request:{describelayer:{href:this.url}}},version:this.version||"1.1.1"});var b=a.capability.request.describelayer;if(b)a=a.version,1.1<parseFloat(a)&&(a="1.1.1"),a={SERVICE:"WMS",VERSION:a,REQUEST:"DescribeLayer"},this.describeLayerStore=new GeoExt.data.WMSDescribeLayerStore({url:this.trimUrl(b.href,
a),baseParams:a})},describeLayer:function(a,b,c){function d(a){window.setTimeout(function(){b.call(c,a)},0)}this.describeLayerStore||this.initDescribeLayerStore();if(this.describeLayerStore){if(!this.describedLayers)this.describedLayers={};var e=a.getLayer().params.LAYERS,a=function(){for(var a=Ext.isArray(arguments[1])?arguments[1]:arguments[0],d,f,k=a.length-1;0<=k;k--){d=a[k];f=d.get("layerName");if(f==e){this.describeLayerStore.un("load",arguments.callee,this);this.describedLayers[f]=!0;b.call(c,
d);return}"function"==typeof this.describedLayers[f]&&(d=this.describedLayers[f],this.describeLayerStore.un("load",d,this),d.apply(this,arguments))}delete g[e];b.call(c,!1)},g=this.describedLayers,f;if(g[e])if(-1==(f=this.describeLayerStore.findExact("layerName",e)))this.describeLayerStore.on("load",a,this);else d(this.describeLayerStore.getAt(f));else g[e]=a,this.describeLayerStore.load({params:{LAYERS:e},add:!0,callback:a,scope:this})}else d(!1)},fetchSchema:function(a,b,c,d){var e=this.schemaCache[b];
if(e)if(0==e.getCount())e.on("load",function(){c.call(d,e)},this,{single:!0});else c.call(d,e);else e=new GeoExt.data.AttributeStore({url:a,baseParams:{SERVICE:"WFS",VERSION:"1.1.0",REQUEST:"DescribeFeatureType",TYPENAME:b},autoLoad:!0,listeners:{load:function(){c.call(d,e)},scope:this}}),this.schemaCache[b]=e},getSchema:function(a,b,c){if(!this.schemaCache)this.schemaCache={};this.describeLayer(a,function(d){if(d&&"WFS"==d.get("owsType")){var e=d.get("typeName");this.fetchSchema(d.get("owsURL"),
e,b,c)}else d?b.call(c,!1):this.fetchSchema(this.url,a.get("name"),b,c)},this)},getWFSProtocol:function(a,b,c){this.getSchema(a,function(d){var e=!1;if(d){var g,f=/gml:((Multi)?(Point|Line|Polygon|Curve|Surface|Geometry)).*/;d.each(function(a){f.exec(a.get("type"))&&(g=a.get("name"))},this);e=new OpenLayers.Protocol.WFS({version:"1.1.0",srsName:a.getLayer().projection.getCode(),url:d.url,featureType:d.reader.raw.featureTypes[0].typeName,featureNS:d.reader.raw.targetNamespace,geometryName:g})}b.call(c,
e,d,a)},this)},getConfigForRecord:function(a){var b=gxp.plugins.WMSSource.superclass.getConfigForRecord.apply(this,arguments),c=a.getLayer(),d=c.params,e=b.name,g=this.store.reader.raw;if(g)for(var g=g.capability.layers,f=g.length-1;0<=f;--f)if(g[f].name===e){b.capability=Ext.apply({},g[f]);e={};e[c.projection.getCode()]=!0;b.capability.srs=e;break}if(!b.capability){if(c.maxExtent)b.bbox=c.maxExtent.toArray();b.srs=c.projection.getCode()}return Ext.apply(b,{format:d.FORMAT,styles:d.STYLES,transparent:d.TRANSPARENT})},
getState:function(){var a=gxp.plugins.WMSSource.superclass.getState.apply(this,arguments);return Ext.applyIf(a,{title:this.title})}});Ext.preg(gxp.plugins.WMSSource.prototype.ptype,gxp.plugins.WMSSource);Ext.namespace("gxp.plugins");
gxp.plugins.WMSCSource=Ext.extend(gxp.plugins.WMSSource,{ptype:"gxp_wmscsource",version:"1.1.1",constructor:function(a){a.baseParams={SERVICE:"WMS",REQUEST:"GetCapabilities",TILED:!0};if(!a.format)this.format=new OpenLayers.Format.WMSCapabilities({keepData:!0,profile:"WMSC"});gxp.plugins.WMSCSource.superclass.constructor.apply(this,arguments)},createLayerRecord:function(a){var b=gxp.plugins.WMSCSource.superclass.createLayerRecord.apply(this,arguments);if(b){var c;if(this.store.reader.raw)c=this.store.reader.raw.capability;
var d=c&&c.vendorSpecific?c.vendorSpecific.tileSets:a.capability&&a.capability.tileSets;c=b.get("layer");if(d)for(var e=this.getProjection(b)||this.getMapProjection(),g=0,f=d.length;g<f;g++){var h=d[g];if(h.layers===c.params.LAYERS){var i,j;for(j in h.srs){i=new OpenLayers.Projection(j);break}if(e.equals(i)){j=h.bbox[j].bbox;c.projection=i;c.addOptions({resolutions:h.resolutions,tileSize:new OpenLayers.Size(h.width,h.height),tileOrigin:new OpenLayers.LonLat(j[0],j[1])});break}}}else if(this.lazy&&
(i=a.tileSize,h=a.tileOrigin,c.addOptions({resolutions:a.resolutions,tileSize:i?new OpenLayers.Size(i[0],i[1]):void 0,tileOrigin:h?OpenLayers.LonLat.fromArray(h):void 0}),!h))c.tileOrigin=OpenLayers.LonLat.fromArray(this.target.map.maxExtent);c.params.TILED=!1!==a.cached&&!0;return b}},getConfigForRecord:function(a){var b=gxp.plugins.WMSCSource.superclass.getConfigForRecord.apply(this,arguments),c=b.name,d,e=a.getLayer();if(b.capability){d=this.store.reader.raw.capability;var g=d.vendorSpecific&&
d.vendorSpecific.tileSets;if(g)for(var f=g.length-1;0<=f;--f)if(d=g[f],d.layers===c&&d.srs[e.projection]){b.capability.tileSets=[d];break}}if(!b.capability.tileSets)c=e.options.tileSize,b.tileSize=[c.w,c.h],b.tileOrigin=e.options.tileOrigin,b.resolutions=e.options.resolutions;return Ext.applyIf(b,{cached:!!e.params.TILED})}});Ext.preg(gxp.plugins.WMSCSource.prototype.ptype,gxp.plugins.WMSCSource);Ext.namespace("gxp.plugins");
gxp.plugins.BingSource=Ext.extend(gxp.plugins.LayerSource,{ptype:"gxp_bingsource",title:"Bing Layers",roadTitle:"Bing Roads",aerialTitle:"Bing Aerial",labeledAerialTitle:"Bing Aerial With Labels",apiKey:"AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf",createStore:function(){var a=[new OpenLayers.Layer.Bing({key:this.apiKey,name:this.roadTitle,type:"Road",buffer:1,transitionEffect:"resize"}),new OpenLayers.Layer.Bing({key:this.apiKey,name:this.aerialTitle,type:"Aerial",buffer:1,transitionEffect:"resize"}),
new OpenLayers.Layer.Bing({key:this.apiKey,name:this.labeledAerialTitle,type:"AerialWithLabels",buffer:1,transitionEffect:"resize"})];this.store=new GeoExt.data.LayerStore({layers:a,fields:[{name:"source",type:"string"},{name:"name",type:"string",mapping:"type"},{name:"abstract",type:"string",mapping:"attribution"},{name:"group",type:"string",defaultValue:"background"},{name:"fixed",type:"boolean",defaultValue:!0},{name:"selected",type:"boolean"}]});this.store.each(function(a){a.set("group","background")});
this.fireEvent("ready",this)},createLayerRecord:function(a){var b,c=this.store.findExact("name",a.name);if(-1<c){b=this.store.getAt(c).copy(Ext.data.Record.id({}));c=b.getLayer().clone();a.title&&(c.setName(a.title),b.set("title",a.title));if("visibility"in a)c.visibility=a.visibility;b.set("selected",a.selected||!1);b.set("source",a.source);b.set("name",a.name);"group"in a&&b.set("group",a.group);b.data.layer=c;b.commit()}return b}});Ext.preg(gxp.plugins.BingSource.prototype.ptype,gxp.plugins.BingSource);
Ext.namespace("gxp.plugins");
gxp.plugins.GoogleSource=Ext.extend(gxp.plugins.LayerSource,{ptype:"gxp_googlesource",timeout:7E3,title:"Google Layers",roadmapAbstract:"Show street map",satelliteAbstract:"Show satellite imagery",hybridAbstract:"Show imagery with street names",terrainAbstract:"Show street map with terrain",constructor:function(a){this.config=a;gxp.plugins.GoogleSource.superclass.constructor.apply(this,arguments)},createStore:function(){gxp.plugins.GoogleSource.loader.onLoad({timeout:this.timeout,callback:this.syncCreateStore,
errback:function(){delete this.store;this.fireEvent("failure",this,"The Google Maps script failed to load within the provided timeout ("+this.timeout/1E3+" s).")},scope:this})},syncCreateStore:function(){var a={ROADMAP:{"abstract":this.roadmapAbstract,MAX_ZOOM_LEVEL:20},SATELLITE:{"abstract":this.satelliteAbstract},HYBRID:{"abstract":this.hybridAbstract},TERRAIN:{"abstract":this.terrainAbstract,MAX_ZOOM_LEVEL:15}},b=[],c,d;for(c in a)d=google.maps.MapTypeId[c],b.push(new OpenLayers.Layer.Google("Google "+
d.replace(/\w/,function(a){return a.toUpperCase()}),{type:d,typeName:c,MAX_ZOOM_LEVEL:a[c].MAX_ZOOM_LEVEL,maxExtent:new OpenLayers.Bounds(-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7),restrictedExtent:new OpenLayers.Bounds(-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7),projection:this.projection}));this.store=new GeoExt.data.LayerStore({layers:b,fields:[{name:"source",type:"string"},{name:"name",type:"string",mapping:"typeName"},{name:"abstract",type:"string"},{name:"group",
type:"string",defaultValue:"background"},{name:"fixed",type:"boolean",defaultValue:!0},{name:"selected",type:"boolean"}]});this.store.each(function(b){b.set("abstract",a[b.get("name")]["abstract"])});this.fireEvent("ready",this)},createLayerRecord:function(a){var b,c=function(b){return b.get("name")===a.name};if(-1==this.target.mapPanel.layers.findBy(c)){b=this.store.getAt(this.store.findBy(c)).clone();c=b.getLayer();a.title&&(c.setName(a.title),b.set("title",a.title));if("visibility"in a)c.visibility=
a.visibility;b.set("selected",a.selected||!1);b.set("source",a.source);b.set("name",a.name);"group"in a&&b.set("group",a.group);b.commit()}return b}});
gxp.plugins.GoogleSource.loader=new (Ext.extend(Ext.util.Observable,{ready:!(!window.google||!google.maps),loading:!1,constructor:function(){this.addEvents("ready","failure");return Ext.util.Observable.prototype.constructor.apply(this,arguments)},onScriptLoad:function(){var a=gxp.plugins.GoogleSource.loader;if(!a.ready)a.ready=!0,a.loading=!1,a.fireEvent("ready")},onLoad:function(a){if(this.ready)window.setTimeout(function(){a.callback.call(a.scope)},0);else if(this.loading)this.on({ready:a.callback,
failure:a.errback||Ext.emptyFn,scope:a.scope});else this.loadScript(a)},loadScript:function(a){function b(){document.getElementsByTagName("head")[0].appendChild(d)}var c={autoload:Ext.encode({modules:[{name:"maps",version:3.3,nocss:"true",callback:"gxp.plugins.GoogleSource.loader.onScriptLoad",other_params:"sensor=false"}]})},d=document.createElement("script");d.src="http://www.google.com/jsapi?"+Ext.urlEncode(c);var e=a.errback||Ext.emptyFn,c=a.timeout||gxp.plugins.GoogleSource.prototype.timeout;
window.setTimeout(function(){if(!gxp.plugins.GoogleSource.loader.ready)this.ready=this.loading=!1,document.getElementsByTagName("head")[0].removeChild(d),e.call(a.scope),this.fireEvent("failure"),this.purgeListeners()}.createDelegate(this),c);this.on({ready:a.callback,scope:a.scope});this.loading=!0;if(document.body)b();else Ext.onReady(b)}}));Ext.preg(gxp.plugins.GoogleSource.prototype.ptype,gxp.plugins.GoogleSource);Ext.namespace("gxp.plugins");
gxp.plugins.OLSource=Ext.extend(gxp.plugins.LayerSource,{ptype:"gxp_olsource",createLayerRecord:function(a){var b,c=window;b=a.type.split(".");for(var d=0,e=b.length;d<e&&!(c=c[b[d]],!c);++d);if(c&&c.prototype&&c.prototype.initialize){b=function(){c.prototype.initialize.apply(this,a.args)};b.prototype=c.prototype;b=new b;if("visibility"in a)b.visibility=a.visibility;b=new (GeoExt.data.LayerRecord.create([{name:"name",type:"string"},{name:"source",type:"string"},{name:"group",type:"string"},{name:"fixed",
type:"boolean"},{name:"selected",type:"boolean"},{name:"type",type:"string"},{name:"args"}]))({layer:b,title:b.name,name:a.name||b.name,source:a.source,group:a.group,fixed:"fixed"in a?a.fixed:!1,selected:"selected"in a?a.selected:!1,type:a.type,args:a.args,properties:"properties"in a?a.properties:void 0},b.id)}else throw Error("Cannot construct OpenLayers layer from given type: "+a.type);return b},getConfigForRecord:function(a){var b=gxp.plugins.OLSource.superclass.getConfigForRecord.apply(this,arguments);
a.getLayer();return Ext.apply(b,{type:a.get("type"),args:a.get("args")})}});Ext.preg(gxp.plugins.OLSource.prototype.ptype,gxp.plugins.OLSource);Ext.namespace("gxp.plugins");
gxp.plugins.StyleWriter=Ext.extend(Ext.util.Observable,{deletedStyles:null,constructor:function(a){this.initialConfig=a;Ext.apply(this,a);this.deletedStyles=[];gxp.plugins.StyleWriter.superclass.constructor.apply(this,arguments)},init:function(a){this.target=a;a.stylesStore.on({remove:function(a,c){var d=c.get("name");c.get("name")===d&&this.deletedStyles.push(d)},scope:this});a.on({beforesaved:this.write,scope:this})},write:function(a){a.stylesStore.commitChanges();a.fireEvent("saved",a,a.selectedStyle.get("name"))}});
Ext.namespace("gxp.plugins");
gxp.plugins.GeoServerStyleWriter=Ext.extend(gxp.plugins.StyleWriter,{baseUrl:"/geoserver/rest",constructor:function(a){this.initialConfig=a;Ext.apply(this,a);gxp.plugins.GeoServerStyleWriter.superclass.constructor.apply(this,arguments)},write:function(a){var a=a||{},b=[],c=this.target.stylesStore;c.each(function(a){(a.phantom||-1!==c.modified.indexOf(a))&&this.writeStyle(a,b)},this);var d=function(){this.deleteStyles();for(var b=this.target.stylesStore.getModifiedRecords(),c=b.length-1;0<=c;--c)b[c].phantom=
!1;b=this.target;b.stylesStore.commitChanges();a.success&&a.success.call(a.scope);b.fireEvent("saved",b,b.selectedStyle.get("name"))};0<b.length?gxp.util.dispatch(b,function(){this.assignStyles(a.defaultStyle,d)},this):this.assignStyles(a.defaultStyle,d)},writeStyle:function(a,b){var c=a.get("userStyle").name;b.push(function(b){Ext.Ajax.request({method:!0===a.phantom?"POST":"PUT",url:this.baseUrl+"/styles"+(!0===a.phantom?"":"/"+c+".xml"),headers:{"Content-Type":"application/vnd.ogc.sld+xml; charset=UTF-8"},
xmlData:this.target.createSLD({userStyles:[c]}),success:!0===a.phantom?function(){Ext.Ajax.request({method:"POST",url:this.baseUrl+"/layers/"+this.target.layerRecord.get("name")+"/styles.json",jsonData:{style:{name:c}},success:b,scope:this})}:b,scope:this})})},assignStyles:function(a,b){var c=[];this.target.stylesStore.each(function(b){!a&&!0===b.get("userStyle").isDefault&&(a=b.get("name"));b.get("name")!==a&&-1===this.deletedStyles.indexOf(b.id)&&c.push({name:b.get("name")})},this);Ext.Ajax.request({method:"PUT",
url:this.baseUrl+"/layers/"+this.target.layerRecord.get("name")+".json",jsonData:{layer:{defaultStyle:{name:a},styles:0<c.length?{style:c}:{},enabled:!0}},success:b,scope:this})},deleteStyles:function(){for(var a=0,b=this.deletedStyles.length;a<b;++a)Ext.Ajax.request({method:"DELETE",url:this.baseUrl+"/styles/"+this.deletedStyles[a]+"?purge=true"});this.deletedStyles=[]}});Ext.preg("gxp_geoserverstylewriter",gxp.plugins.GeoServerStyleWriter);Ext.namespace("gxp.plugins");
gxp.plugins.Tool=Ext.extend(Ext.util.Observable,{ptype:"gxp_tool",autoActivate:!0,actionTarget:"map.tbar",output:null,constructor:function(a){this.initialConfig=a||{};this.active=!1;Ext.apply(this,a);if(!this.id)this.id=Ext.id();this.output=[];this.addEvents("activate","deactivate");gxp.plugins.Tool.superclass.constructor.apply(this,arguments)},init:function(a){a.tools[this.id]=this;this.target=a;this.autoActivate&&this.activate();this.target.on("portalready",this.addActions,this)},activate:function(){if(!1===
this.active)return this.active=!0,this.fireEvent("activate",this),!0},deactivate:function(){if(!0===this.active)return this.active=!1,this.fireEvent("deactivate",this),!0},addActions:function(a){a=a||this.actions;if(!a||null===this.actionTarget)this.addOutput();else{var b=this.actionTarget instanceof Array?this.actionTarget:[this.actionTarget],a=a instanceof Array?a:[a],c,d,e,g,f,h=null;for(d=b.length-1;0<=d;--d){if(c=b[d]){if(c instanceof Object)h=c.index,c=c.target;c=c.split(".");f=c[0];c=1<c.length&&
c[1];f=f?"map"==f?this.target.mapPanel:Ext.getCmp(f)||this.target.portal[f]:this.target.portal;c&&(f=(e={tbar:"getTopToolbar",bbar:"getBottomToolbar",fbar:"getFooterToolbar"}[c])?f[e]():f[c])}for(e=0,g=a.length;e<g;++e){if(!(a[e]instanceof Ext.Action||a[e]instanceof Ext.Component)&&"string"!=typeof a[e]){if(e==this.defaultAction)a[e].pressed=!0;a[e]=new Ext.Action(a[e])}c=a[e];if(e==this.defaultAction&&c instanceof GeoExt.Action)c.isDisabled()?c.activateOnEnable=!0:c.control.activate();if(f){f instanceof
Ext.menu.Menu?c=Ext.apply(new Ext.menu.CheckItem(c),{text:c.initialConfig.menuText,group:c.initialConfig.toggleGroup,groupClass:null}):f instanceof Ext.Toolbar||(c=new Ext.Button(c));var i=null===h?f.add(c):f.insert(h,c);c=c instanceof Ext.Button?c:i;null!==h&&(h+=1);if(null!=this.outputAction&&e==this.outputAction){var j;c.on("click",function(){j?this.outputTarget?j.show():j.ownerCt.ownerCt.show():j=this.addOutput()},this)}}}f&&(f.isVisible()?f.doLayout():f instanceof Ext.menu.Menu||f.show())}return this.actions=
a}},addOutput:function(a){if(a||this.outputConfig){var a=a||{},b=this.outputTarget;b?(b="map"===b?this.target.mapPanel:Ext.getCmp(b)||this.target.portal[b],Ext.apply(a,this.outputConfig)):(b=this.outputConfig||{},b=(new Ext.Window(Ext.apply({hideBorders:!0,shadow:!1,closeAction:"hide",autoHeight:!b.height,layout:b.height?"fit":void 0,items:[{defaults:Ext.applyIf({autoHeight:!b.height&&!(b.defaults&&b.defaults.height)},b.defaults)}]},b))).show().items.get(0));a=b.add(a);a instanceof Ext.Window?a.show():
b.doLayout();this.output.push(a);return a}},removeOutput:function(){for(var a,b=this.output.length-1;0<=b;--b)if(a=this.output[b],this.outputTarget)if(a.ownerCt){if(a.ownerCt.remove(a),a.ownerCt instanceof Ext.Window)a.ownerCt[a.ownerCt.closeAction]()}else a.remove();else a.findParentBy(function(a){return a instanceof Ext.Window}).close();this.output=[]},getState:function(){return Ext.apply({},this.initialConfig)}});Ext.preg(gxp.plugins.Tool.prototype.ptype,gxp.plugins.Tool);Ext.namespace("gxp.plugins");
gxp.plugins.WMSGetFeatureInfo=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_wmsgetfeatureinfo",outputTarget:"map",popupCache:null,infoActionTip:"Get Feature Info",popupTitle:"Feature Info",format:"html",addActions:function(){var a;this.popupCache={};var b=gxp.plugins.WMSGetFeatureInfo.superclass.addActions.call(this,[{tooltip:this.infoActionTip,iconCls:"gxp-icon-getfeatureinfo",toggleGroup:this.toggleGroup,enableToggle:!0,allowDepress:!0,toggleHandler:function(b,c){for(var d=0,h=a.length;d<h;d++)c?a[d].activate():
a[d].deactivate()}}]),c=this.actions[0].items[0];a=[];var d=function(){for(var b=this.target.mapPanel.layers.queryBy(function(a){return a.get("queryable")}),d=this.target.mapPanel.map,f,h=0,i=a.length;h<i;h++)f=a[h],f.deactivate(),f.destroy();a=[];b.each(function(b){var e=b.getLayer(),f=Ext.apply({},this.vendorParams),h;if(this.layerParams)for(var i=this.layerParams.length-1;0<=i;--i)h=this.layerParams[i].toUpperCase(),f[h]=e.params[h];var n=b.get("infoFormat");void 0===n&&(n="html"==this.format?
"text/html":"application/vnd.ogc.gml");e=new OpenLayers.Control.WMSGetFeatureInfo(Ext.applyIf({url:e.url,queryVisible:!0,layers:[e],infoFormat:n,vendorParams:f,eventListeners:{getfeatureinfo:function(a){var c=b.get("title")||b.get("name");if("text/html"==n){var d=a.text.match(/<body[^>]*>([\s\S]*)<\/body>/);d&&!d[1].match(/^\s*$/)&&this.displayPopup(a,c,d[1])}else"text/plain"==n?this.displayPopup(a,c,"<pre>"+a.text+"</pre>"):this.displayPopup(a,c)},scope:this}},this.controlOptions));d.addControl(e);
a.push(e);c.pressed&&e.activate()},this)};this.target.mapPanel.layers.on("update",d,this);this.target.mapPanel.layers.on("add",d,this);this.target.mapPanel.layers.on("remove",d,this);return b},displayPopup:function(a,b,c){var d,e=a.xy.x+"."+a.xy.y;e in this.popupCache?d=this.popupCache[e]:(d=this.addOutput({xtype:"gx_popup",title:this.popupTitle,layout:"accordion",location:a.xy,map:this.target.mapPanel,width:250,height:300,defaults:{layout:"fit",autoScroll:!0,autoWidth:!0,collapsible:!0},listeners:{close:function(a){return function(){delete this.popupCache[a]}}(e),
scope:this}}),this.popupCache[e]=d);a=a.features;e=[];if(!c&&a)for(var g=0,f=a.length;g<f;++g)c=a[g],e.push(Ext.apply({xtype:"propertygrid",title:c.fid?c.fid:b,source:c.attributes},this.itemConfig));else c&&e.push(Ext.apply({title:b,html:c},this.itemConfig));d.add(e);d.doLayout()}});Ext.preg(gxp.plugins.WMSGetFeatureInfo.prototype.ptype,gxp.plugins.WMSGetFeatureInfo);Ext.namespace("gxp.plugins");
gxp.plugins.WMSRasterStylesDialog={isRaster:null,init:function(a){Ext.apply(a,gxp.plugins.WMSRasterStylesDialog)},createRule:function(){var a=[new OpenLayers.Symbolizer[this.isRaster?"Raster":this.symbolType]];return new OpenLayers.Rule({symbolizers:a})},addRule:function(){var a=this.items.get(2).items.get(0);this.isRaster?(a.rules.push(this.createPseudoRule()),1==a.rules.length&&a.rules.push(this.createPseudoRule()),this.savePseudoRules()):(this.selectedStyle.get("userStyle").rules.push(this.createRule()),
a.update(),this.selectedStyle.store.afterEdit(this.selectedStyle));this.updateRuleRemoveButton()},removeRule:function(){if(this.isRaster){var a=this.items.get(2).items.get(0),b=this.selectedRule;a.unselect();a.rules.remove(b);1==a.rules.length&&a.rules.remove(a.rules[0]);this.savePseudoRules()}else gxp.WMSStylesDialog.prototype.removeRule.apply(this,arguments)},duplicateRule:function(){var a=this.items.get(2).items.get(0);if(this.isRaster)a.rules.push(this.createPseudoRule({quantity:this.selectedRule.name,
label:this.selectedRule.title,color:this.selectedRule.symbolizers[0].fillColor,opacity:this.selectedRule.symbolizers[0].fillOpacity})),this.savePseudoRules();else{var b=this.selectedRule.clone();b.name=gxp.util.uniqueName((b.title||b.name)+" (copy)");delete b.title;this.selectedStyle.get("userStyle").rules.push(b);a.update()}this.updateRuleRemoveButton()},editRule:function(){this.isRaster?this.editPseudoRule():gxp.WMSStylesDialog.prototype.editRule.apply(this,arguments)},editPseudoRule:function(){var a=
this,b=this.selectedRule,c=new Ext.Window({title:"Color Map Entry: "+b.name,width:340,autoHeight:!0,modal:!0,items:[{bodyStyle:"padding-top: 5px",border:!1,defaults:{autoHeight:!0,hideMode:"offsets"},items:[{xtype:"form",border:!1,labelAlign:"top",defaults:{border:!1},style:{padding:"0.3em 0 0 1em"},items:[{layout:"column",defaults:{border:!1,style:{"padding-right":"1em"}},items:[{layout:"form",width:70,items:[{xtype:"numberfield",anchor:"95%",value:b.name,allowBlank:!1,fieldLabel:"Quantity",validator:function(c){for(var d=
a.items.get(2).items.get(0).rules,f=d.length-1;0<=f;f--)if(b!==d[f]&&d[f].name==c)return"Quantity "+c+" is already defined";return!0},listeners:{valid:function(a){this.selectedRule.name=""+a.getValue();this.savePseudoRules()},scope:this}}]},{layout:"form",width:130,items:[{xtype:"textfield",fieldLabel:"Label",anchor:"95%",value:b.title,listeners:{valid:function(a){this.selectedRule.title=a.getValue();this.savePseudoRules()},scope:this}}]},{layout:"form",width:70,items:[new GeoExt.FeatureRenderer({symbolType:this.symbolType,
symbolizers:[b.symbolizers[0]],isFormField:!0,fieldLabel:"Appearance"})]}]}]},{xtype:"gxp_polygonsymbolizer",symbolizer:b.symbolizers[0],bodyStyle:{padding:"10px"},border:!1,labelWidth:70,defaults:{labelWidth:70},listeners:{change:function(a){var b=c.findByType(GeoExt.FeatureRenderer)[0];b.setSymbolizers([a],{draw:b.rendered});this.selectedRule.symbolizers[0]=a;this.savePseudoRules()},scope:this}}]}]}),d=c.findByType("gxp_strokesymbolizer")[0];d.ownerCt.remove(d);c.show()},savePseudoRules:function(){var a=
this.selectedStyle,b=this.items.get(2).items.get(0),a=a.get("userStyle"),b=b.rules;b.sort(function(a,b){var c=parseFloat(a.name),d=parseFloat(b.name);return c===d?0:c<d?-1:1});a=a.rules[0].symbolizers[0];a.colorMap=0<b.length?Array(b.length):void 0;for(var c,d=0,e=b.length;d<e;++d)c=b[d],a.colorMap[d]={quantity:parseFloat(c.name),label:c.title||void 0,color:c.symbolizers[0].fillColor||void 0,opacity:!1==c.symbolizers[0].fill?0:c.symbolizers[0].fillOpacity};this.afterRuleChange(this.selectedRule)},
createLegend:function(a,b){var c=OpenLayers.Symbolizer.Raster;c&&a[0]&&a[0].symbolizers[0]instanceof c?(this.getComponent("rulesfieldset").setTitle("Color Map Entries"),this.isRaster=!0,this.addRasterLegend(a,b)):(this.isRaster=!1,this.addVectorLegend(a))},addRasterLegend:function(a,b){for(var b=b||{},c=a[0].symbolizers[0].colorMap||[],d=[],e=0,g=c.length;e<g;e++)d.push(this.createPseudoRule(c[e]));this.selectedRule=null!=b.selectedRuleIndex?d[b.selectedRuleIndex]:null;return this.addVectorLegend(d,
{symbolType:"Polygon",enableDD:!1})},createPseudoRule:function(a){var b=-1;if(!a){var c=this.items.get(2);if(c.items){rules=c.items.get(0).rules;for(c=rules.length-1;0<=c;c--)b=Math.max(b,parseFloat(rules[c].name))}}a=Ext.applyIf(a||{},{quantity:++b,color:"#000000",opacity:1});return new OpenLayers.Rule({title:a.label,name:""+a.quantity,symbolizers:[new OpenLayers.Symbolizer.Polygon({fillColor:a.color,fillOpacity:a.opacity,stroke:!1,fill:0!==a.opacity})]})},updateRuleRemoveButton:function(){this.items.get(3).items.get(1).setDisabled(!this.selectedRule||
!1===this.isRaster&&1>=this.items.get(2).items.get(0).rules.length)}};Ext.preg("gxp_wmsrasterstylesdialog",gxp.plugins.WMSRasterStylesDialog);Ext.namespace("gxp.plugins");
gxp.plugins.ZoomToExtent=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_zoomtoextent",menuText:"Zoom To Max Extent",tooltip:"Zoom To Max Extent",extent:null,closest:!0,iconCls:"gxp-icon-zoomtoextent",closest:!0,constructor:function(a){gxp.plugins.ZoomToExtent.superclass.constructor.apply(this,arguments);if(this.extent instanceof Array)this.extent=OpenLayers.Bounds.fromArray(this.extent)},addActions:function(){return gxp.plugins.ZoomToExtent.superclass.addActions.apply(this,[{text:this.buttonText,menuText:this.menuText,
iconCls:this.iconCls,tooltip:this.tooltip,handler:function(){var a=this.target.mapPanel.map,b="function"==typeof this.extent?this.extent():this.extent;if(!b)for(var c,d=0,e=a.layers.length;d<e;++d)c=a.layers[d],c.getVisibility()&&(c=c.restrictedExtent||c.maxExtent,b?b.extend(c):c&&(b=c.clone()));b&&((d=a.restrictedExtent||a.maxExtent)&&(b=new OpenLayers.Bounds(Math.max(b.left,d.left),Math.max(b.bottom,d.bottom),Math.min(b.right,d.right),Math.min(b.top,d.top))),a.zoomToExtent(b,this.closest))},scope:this}])}});
Ext.preg(gxp.plugins.ZoomToExtent.prototype.ptype,gxp.plugins.ZoomToExtent);Ext.namespace("gxp.plugins");
gxp.plugins.NavigationHistory=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_navigationhistory",previousMenuText:"Zoom To Previous Extent",nextMenuText:"Zoom To Next Extent",previousTooltip:"Zoom To Previous Extent",nextTooltip:"Zoom To Next Extent",constructor:function(a){gxp.plugins.NavigationHistory.superclass.constructor.apply(this,arguments)},addActions:function(){var a=new OpenLayers.Control.NavigationHistory;this.target.mapPanel.map.addControl(a);a=[new GeoExt.Action({menuText:this.previousMenuText,
iconCls:"gxp-icon-zoom-previous",tooltip:this.previousTooltip,disabled:!0,control:a.previous}),new GeoExt.Action({menuText:this.nextMenuText,iconCls:"gxp-icon-zoom-next",tooltip:this.nextTooltip,disabled:!0,control:a.next})];return gxp.plugins.NavigationHistory.superclass.addActions.apply(this,[a])}});Ext.preg(gxp.plugins.NavigationHistory.prototype.ptype,gxp.plugins.NavigationHistory);Ext.namespace("gxp.plugins");
gxp.plugins.Zoom=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_zoom",zoomInMenuText:"Zoom In",zoomOutMenuText:"Zoom Out",zoomInTooltip:"Zoom In",zoomOutTooltip:"Zoom Out",constructor:function(a){gxp.plugins.Zoom.superclass.constructor.apply(this,arguments)},addActions:function(){return gxp.plugins.Zoom.superclass.addActions.apply(this,[[{menuText:this.zoomInMenuText,iconCls:"gxp-icon-zoom-in",tooltip:this.zoomInTooltip,handler:function(){this.target.mapPanel.map.zoomIn()},scope:this},{menuText:this.zoomOutMenuText,
iconCls:"gxp-icon-zoom-out",tooltip:this.zoomOutTooltip,handler:function(){this.target.mapPanel.map.zoomOut()},scope:this}]])}});Ext.preg(gxp.plugins.Zoom.prototype.ptype,gxp.plugins.Zoom);Ext.namespace("gxp");
gxp.NewSourceWindow=Ext.extend(Ext.Window,{title:"Add New Server...",cancelText:"Cancel",addServerText:"Add Server",invalidURLText:"Enter a valid URL to a WMS endpoint (e.g. http://example.com/geoserver/wms)",contactingServerText:"Contacting Server...",bodyStyle:"padding: 0px",width:300,closeAction:"hide",error:null,initComponent:function(){this.addEvents("server-added");this.urlTextField=new Ext.form.TextField({fieldLabel:"URL",allowBlank:!1,width:240,msgTarget:"under",validator:this.urlValidator.createDelegate(this)});
this.form=new Ext.form.FormPanel({items:[this.urlTextField],border:!1,labelWidth:30,bodyStyle:"padding: 5px",autoWidth:!0,autoHeight:!0});this.bbar=[new Ext.Button({text:this.cancelText,handler:function(){this.hide()},scope:this}),new Ext.Toolbar.Fill,new Ext.Button({text:this.addServerText,iconCls:"add",handler:function(){this.error=null;this.urlTextField.validate()&&this.fireEvent("server-added",this.urlTextField.getValue())},scope:this})];this.items=this.form;gxp.NewSourceWindow.superclass.initComponent.call(this);
this.form.on("render",function(){this.loadMask=new Ext.LoadMask(this.form.getEl(),{msg:this.contactingServerText})},this);this.on("hide",function(){this.error=null;this.urlTextField.validate();this.urlTextField.setValue("");this.loadMask.hide()},this);this.on("server-added",function(a){this.setLoading();this.addSource(a,function(){this.hide()},function(){this.setError(this.sourceLoadFailureMessage)},this)},this)},urlRegExp:/^(http(s)?:)?\/\/([\w%]+:[\w%]+@)?([^@\/:]+)(:\d+)?\//i,urlValidator:function(a){a=
this.urlRegExp.test(a)?!this.error||this.error:this.invalidURLText;this.error=null;return a},setLoading:function(){this.loadMask.show()},setError:function(a){this.loadMask.hide();this.error=a;this.urlTextField.validate()},addSource:function(){}});Ext.namespace("gxp.plugins");
gxp.plugins.AddLayers=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_addlayers",addActionMenuText:"Add layers",findActionMenuText:"Find layers",addActionTip:"Add layers",addServerText:"Add a New Server",addButtonText:"Add layers",untitledText:"Untitled",addLayerSourceErrorText:"Error getting WMS capabilities ({msg}).\nPlease check the url and try again.",availableLayersText:"Available Layers",expanderTemplateText:"<p><b>Abstract:</b> {abstract}</p>",panelTitleText:"Title",layerSelectionText:"View available data from:",
doneText:"Done",uploadText:"Upload Data",relativeUploadOnly:!0,startSourceId:null,selectedSource:null,constructor:function(a){this.addEvents("sourceselected");gxp.plugins.AddLayers.superclass.constructor.apply(this,arguments)},addActions:function(){var a={tooltip:this.addActionTip,text:this.addActionText,menuText:this.addActionMenuText,disabled:!0,iconCls:"gxp-icon-addlayers"},a=this.initialConfig.search?Ext.apply(a,{menu:new Ext.menu.Menu({items:[new Ext.menu.Item({iconCls:"gxp-icon-addlayers",text:this.addActionMenuText,
handler:this.showCapabilitiesGrid,scope:this}),new Ext.menu.Item({iconCls:"gxp-icon-addlayers",text:this.findActionMenuText,handler:this.showCatalogueSearch,scope:this})]})}):Ext.apply(a,{handler:this.showCapabilitiesGrid,scope:this}),b=gxp.plugins.AddLayers.superclass.addActions.apply(this,[a]);this.target.on("ready",function(){b[0].enable()});return b},showCatalogueSearch:function(){var a=this.initialConfig.search.selectedSource,b={},c;for(c in this.target.layerSources){var d=this.target.layerSources[c];
if(d instanceof gxp.plugins.CatalogueSource){var e={};e[c]=d;Ext.apply(b,e)}}a=gxp.plugins.AddLayers.superclass.addOutput.apply(this,[{sources:b,selectedSource:a,xtype:"gxp_cataloguesearchpanel",map:this.target.mapPanel.map,listeners:{addlayer:function(a,b,c){this.target.mapPanel.layers.add(this.target.layerSources[b].createLayerRecord(c))},scope:this}}]);(b=a.findParentByType("window"))&&b.center();return a},showCapabilitiesGrid:function(){this.capGrid||this.initCapGrid();this.capGrid.show()},initCapGrid:function(){function a(){for(var a=
k.getValue(),b=this.target.mapPanel.layers,c=this.target.layerSources[a],d=j.getSelectionModel().getSelections(),e,f=0,h=d.length;f<h;++f)(e=c.createLayerRecord({name:d[f].get("name"),source:a}))&&("background"===e.get("group")?b.insert(0,[e]):b.add([e]))}function b(){var a=k.store,b=k.valueField,c=a.findExact(b,k.getValue()),c=a.getAt(c),d=e.layerSources[c.get("id")];d?d.title!==c.get("title")&&(c.set("title",d.title),k.setValue(c.get(b))):a.remove(c)}var c,d=[],e=this.target,g;for(g in e.layerSources)c=
e.layerSources[g],c.store&&"gxp_cataloguesource"!==c.ptype&&d.push([g,c.title||g,c.url]);var f=new Ext.data.ArrayStore({fields:["id","title","url"],data:d});g=this.createExpander();var h=0;null!==this.startSourceId&&f.each(function(a){a.get("id")===this.startSourceId&&(h=f.indexOf(a))},this);c=this.target.layerSources[d[h][0]];var i=c.store;c.lazy&&i.load({callback:b});var j=new Ext.grid.GridPanel({store:i,autoScroll:!0,flex:1,autoExpandColumn:"title",plugins:[g],loadMask:!0,colModel:new Ext.grid.ColumnModel([g,
{id:"title",header:this.panelTitleText,dataIndex:"title",sortable:!0},{header:"Id",dataIndex:"name",width:150,sortable:!0}]),listeners:{rowdblclick:a,scope:this}}),k=new Ext.form.ComboBox({store:f,valueField:"id",displayField:"title",tpl:'<tpl for="."><div ext:qtip="{url}" class="x-combo-list-item">{title}</div></tpl>',triggerAction:"all",editable:!1,allowBlank:!1,forceSelection:!0,mode:"local",value:d[h][0],listeners:{select:function(a,c){var d=this.target.layerSources[c.get("id")];j.reconfigure(d.store,
j.getColumnModel());j.getView().focusRow(0);d.lazy&&d.store.load({callback:b});this.setSelectedSource(d)},scope:this}});c=null;if(this.target.proxy||1<d.length)c=[new Ext.Toolbar.TextItem({text:this.layerSelectionText}),k];this.target.proxy&&c.push("-",new Ext.Button({text:this.addServerText,iconCls:"gxp-icon-addserver",handler:function(){o.show()}}));var o=new gxp.NewSourceWindow({modal:!0,listeners:{"server-added":function(a){o.setLoading();this.target.addLayerSource({config:{url:a},callback:function(a){a=
new f.recordType({id:a,title:this.target.layerSources[a].title||this.untitledText});f.insert(0,[a]);k.onSelect(a,0);o.hide()},fallback:function(a,b){o.setError((new Ext.Template(this.addLayerSourceErrorText)).apply({msg:b}))},scope:this})},scope:this}});g={xtype:"container",region:"center",layout:"vbox",items:[j]};this.instructionsText&&g.items.push({xtype:"box",autoHeight:!0,autoEl:{tag:"p",cls:"x-form-item",style:"padding-left: 5px; padding-right: 5px"},html:this.instructionsText});var i=["->",
new Ext.Button({text:this.addButtonText,iconCls:"gxp-icon-addlayers",handler:a,scope:this}),new Ext.Button({text:this.doneText,handler:function(){this.capGrid.hide()},scope:this})],p=this.createUploadButton();p&&i.unshift(p);this.capGrid=new Ext.Window(Ext.apply({title:this.availableLayersText,closeAction:"hide",layout:"border",height:300,width:450,modal:!0,items:g,tbar:c,bbar:i,listeners:{hide:function(){j.getSelectionModel().clearSelections()},show:function(){null===this.selectedSource?this.setSelectedSource(this.target.layerSources[d[h][0]]):
this.setSelectedSource(this.selectedSource)},scope:this}},this.initialConfig.outputConfig))},setSelectedSource:function(a){this.selectedSource=a;this.fireEvent("sourceselected",this,a)},createUploadButton:function(){var a,b=this.initialConfig.upload,c;if(b){"boolean"===typeof b&&(b={});a=new Ext.Button({xtype:"button",text:this.uploadText,iconCls:"gxp-icon-filebrowse",hidden:!0,handler:function(){var a=new gxp.LayerUploadPanel(Ext.apply({url:c,width:350,border:!1,bodyStyle:"padding: 10px 10px 0 10px;",
frame:!0,labelWidth:65,defaults:{anchor:"95%",allowBlank:!1,msgTarget:"side"},listeners:{uploadcomplete:function(a,b){for(var c=b.layers,e={},g=0,p=c.length;g<p;++g)e[c[g].name]=!0;this.selectedSource.store.load({callback:function(){var a=this.capGrid.items.get(0),b=a.getSelectionModel();b.clearSelections();var c=[],d=0;this.selectedSource.store.each(function(a,b){a.get("name")in e&&(d=b,c.push(a))});b.selectRecords(c);window.setTimeout(function(){a.getView().focusRow(d)},100)},scope:this});d.close()},
scope:this}},b)),d=new Ext.Window({title:this.uploadText,modal:!0,resizable:!1,items:[a]});d.show()},scope:this});var d={},e=function(a,b,c){a in d?window.setTimeout(function(){b.call(c,d[a])},0):Ext.Ajax.request({url:a,disableCaching:!1,callback:function(e,j,k){e=k.status;d[a]=e;b.call(c,e)}})};this.on({sourceselected:function(b,d){a.hide();if(this.isEligibleForUpload(d)){var h=d.url.split("/");h.pop();h.push("rest");c=h.join("/");this.target.isAuthorized()&&e(c+"/upload",function(b){a.setVisible(405===
b)},this)}},scope:this})}return a},isEligibleForUpload:function(a){return a.url&&(this.relativeUploadOnly?"/"===a.url.charAt(0):!0)&&-1===(this.nonUploadSources||[]).indexOf(a.id)},createExpander:function(){return new Ext.grid.RowExpander({tpl:new Ext.Template(this.expanderTemplateText)})}});Ext.preg(gxp.plugins.AddLayers.prototype.ptype,gxp.plugins.AddLayers);Ext.namespace("gxp.plugins");
gxp.plugins.RemoveLayer=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_removelayer",removeMenuText:"Remove layer",removeActionTip:"Remove layer",addActions:function(){var a,b=gxp.plugins.RemoveLayer.superclass.addActions.apply(this,[{menuText:this.removeMenuText,iconCls:"gxp-icon-removelayers",disabled:!0,tooltip:this.removeActionTip,handler:function(){var b=a;b&&this.target.mapPanel.layers.remove(b)},scope:this}]),c=b[0];this.target.on("layerselectionchange",function(b){a=b;c.setDisabled(1>=this.target.mapPanel.layers.getCount()||
!b)},this);var d=function(b){c.setDisabled(!a||1>=b.getCount())};this.target.mapPanel.layers.on({add:d,remove:d});return b}});Ext.preg(gxp.plugins.RemoveLayer.prototype.ptype,gxp.plugins.RemoveLayer);Ext.namespace("gxp.plugins");
gxp.plugins.LayerTree=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_layertree",rootNodeText:"Layers",overlayNodeText:"Overlays",baseNodeText:"Base Layers",groups:null,defaultGroup:"default",treeNodeUI:null,constructor:function(a){gxp.plugins.LayerTree.superclass.constructor.apply(this,arguments);if(!this.groups)this.groups={"default":this.overlayNodeText,background:{title:this.baseNodeText,exclusive:!0}};if(!this.treeNodeUI)this.treeNodeUI=Ext.extend(GeoExt.tree.LayerNodeUI,new GeoExt.tree.TreeNodeUIEventMixin)},
addOutput:function(a){a=Ext.apply(this.createOutputConfig(),a||{});return gxp.plugins.LayerTree.superclass.addOutput.call(this,a)},createOutputConfig:function(){var a=new Ext.tree.TreeNode({text:this.rootNodeText,expanded:!0,isTarget:!1,allowDrop:!1}),b=this.defaultGroup,c=this,d,e;for(e in this.groups)d="string"==typeof this.groups[e]?{title:this.groups[e]}:this.groups[e],a.appendChild(new GeoExt.tree.LayerContainer(Ext.apply({text:d.title,iconCls:"gxp-folder",expanded:!0,group:e==this.defaultGroup?
void 0:e,loader:new GeoExt.tree.LayerLoader({baseAttrs:d.exclusive?{checkedGroup:e}:void 0,store:this.target.mapPanel.layers,filter:function(a){return function(c){return(c.get("group")||b)==a&&!0==c.getLayer().displayInLayerSwitcher}}(e),createNode:function(a){c.configureLayerNode(this,a);return GeoExt.tree.LayerLoader.prototype.createNode.apply(this,arguments)}}),singleClickExpand:!0,allowDrag:!1,listeners:{append:function(a,b){b.expand()}}},d)));return{xtype:"treepanel",root:a,rootVisible:!1,border:!1,
enableDD:!0,selModel:new Ext.tree.DefaultSelectionModel({listeners:{beforeselect:this.handleBeforeSelect,scope:this}}),listeners:{contextmenu:this.handleTreeContextMenu,beforemovenode:this.handleBeforeMoveNode,scope:this},contextMenu:new Ext.menu.Menu({items:[]})}},configureLayerNode:function(a,b){b.uiProvider=this.treeNodeUI;var c=b.layer,d=b.layerStore;if(c&&d){var e=d.getAt(d.findBy(function(a){return a.getLayer()===c}));if(e){b.qtip=e.get("name");if(!e.get("queryable"))b.iconCls="gxp-tree-rasterlayer-icon";
if(e.get("fixed"))b.allowDrag=!1;b.listeners={rendernode:function(a){e===this.target.selectedLayer&&a.select();this.target.on("layerselectionchange",function(b){!this.selectionChanging&&b===e&&a.select()},this)},scope:this}}}},handleBeforeSelect:function(a,b){var c=!0,d=b&&b.layer,e;if(d)c=b.layerStore,e=c.getAt(c.findBy(function(a){return a.getLayer()===d}));this.selectionChanging=!0;c=this.target.selectLayer(e);this.selectionChanging=!1;return c},handleTreeContextMenu:function(a,b){if(a&&a.layer){a.select();
var c=a.getOwnerTree();if(c.getSelectionModel().getSelectedNode()===a)c=c.contextMenu,c.contextNode=a,0<c.items.getCount()&&c.showAt(b.getXY())}},handleBeforeMoveNode:function(a,b,c,d){if(c!==d)a=d.loader.store,c=a.findBy(function(a){return a.getLayer()===b.layer}),a.getAt(c).set("group",d.attributes.group)}});Ext.preg(gxp.plugins.LayerTree.prototype.ptype,gxp.plugins.LayerTree);Ext.namespace("gxp.plugins");
gxp.plugins.ZoomToLayerExtent=Ext.extend(gxp.plugins.ZoomToExtent,{ptype:"gxp_zoomtolayerextent",menuText:"Zoom to layer extent",tooltip:"Zoom to layer extent",iconCls:"gxp-icon-zoom-to",destroy:function(){this.selectedRecord=null;gxp.plugins.ZoomToLayerExtent.superclass.destroy.apply(this,arguments)},extent:function(){var a=this.selectedRecord.getLayer(),b=a instanceof OpenLayers.Layer.Vector&&a.getDataExtent();return a.restrictedExtent||b||a.maxExtent||map.maxExtent},addActions:function(){var a=
gxp.plugins.ZoomToLayerExtent.superclass.addActions.apply(this,arguments);a[0].disable();this.target.on("layerselectionchange",function(b){this.selectedRecord=b;a[0].setDisabled(!b||!b.get("layer"))},this);return a}});Ext.preg(gxp.plugins.ZoomToLayerExtent.prototype.ptype,gxp.plugins.ZoomToLayerExtent);Ext.namespace("gxp.plugins");
gxp.plugins.LayerProperties=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_layerproperties",menuText:"Layer Properties",toolTip:"Layer Properties",constructor:function(a){gxp.plugins.LayerProperties.superclass.constructor.apply(this,arguments);if(!this.outputConfig)this.outputConfig={width:265,autoHeight:!0}},addActions:function(){var a=gxp.plugins.LayerProperties.superclass.addActions.apply(this,[{menuText:this.menuText,iconCls:"gxp-icon-layerproperties",disabled:!0,tooltip:this.toolTip,handler:function(){this.removeOutput();
this.addOutput()},scope:this}]),b=a[0];this.target.on("layerselectionchange",function(a){b.setDisabled(!a||!a.get("properties"))},this);return a},addOutput:function(a){var a=a||{},b=this.target.selectedLayer;this.outputConfig.title=(this.initialConfig.outputConfig||{}).title||this.menuText+": "+b.get("title");var c=b.get("properties")||"gxp_layerpanel",d=this.layerPanelConfig;d&&d[c]&&Ext.apply(a,d[c]);return gxp.plugins.LayerProperties.superclass.addOutput.call(this,Ext.apply({xtype:c,authorized:this.target.isAuthorized(),
layerRecord:b,source:this.target.getSource(b),defaults:{style:"padding: 10px",autoHeight:this.outputConfig.autoHeight},listeners:{added:function(a){if(!this.outputTarget)a.on("afterrender",function(){a.ownerCt.ownerCt.center()},this,{single:!0})},scope:this}},a))}});Ext.preg(gxp.plugins.LayerProperties.prototype.ptype,gxp.plugins.LayerProperties);Ext.namespace("gxp");
gxp.WMSStylesDialog=Ext.extend(Ext.Container,{addStyleText:"Add",addStyleTip:"Add a new style",chooseStyleText:"Choose style",deleteStyleText:"Remove",deleteStyleTip:"Delete the selected style",editStyleText:"Edit",editStyleTip:"Edit the selected style",duplicateStyleText:"Duplicate",duplicateStyleTip:"Duplicate the selected style",addRuleText:"Add",addRuleTip:"Add a new rule",newRuleText:"New Rule",deleteRuleText:"Remove",deleteRuleTip:"Delete the selected rule",editRuleText:"Edit",editRuleTip:"Edit the selected rule",
duplicateRuleText:"Duplicate",duplicateRuleTip:"Duplicate the selected rule",cancelText:"Cancel",saveText:"Save",styleWindowTitle:"User Style: {0}",ruleWindowTitle:"Style Rule: {0}",stylesFieldsetTitle:"Styles",rulesFieldsetTitle:"Rules",layerRecord:null,layerDescription:null,symbolType:null,stylesStore:null,selectedStyle:null,selectedRule:null,editable:!0,modified:!1,initComponent:function(){this.addEvents("ready","modified","styleselected","beforesaved","saved");Ext.applyIf(this,{layout:"form",
disabled:!0,items:[{xtype:"fieldset",title:this.stylesFieldsetTitle,labelWidth:85,style:"margin-bottom: 0;"},{xtype:"toolbar",style:"border-width: 0 1px 1px 1px; margin-bottom: 10px;",items:[{xtype:"button",iconCls:"add",text:this.addStyleText,tooltip:this.addStyleTip,handler:this.addStyle,scope:this},{xtype:"button",iconCls:"delete",text:this.deleteStyleText,tooltip:this.deleteStyleTip,handler:function(){this.stylesStore.remove(this.selectedStyle)},scope:this},{xtype:"button",iconCls:"edit",text:this.editStyleText,
tooltip:this.editStyleTip,handler:function(){this.editStyle()},scope:this},{xtype:"button",iconCls:"duplicate",text:this.duplicateStyleText,tooltip:this.duplicateStyleTip,handler:function(){var a=this.selectedStyle,b=a.get("userStyle").clone();b.isDefault=!1;b.name=this.newStyleName();var c=this.stylesStore;c.add(new c.recordType({name:b.name,title:b.title,"abstract":b.description,userStyle:b}));this.editStyle(a)},scope:this}]}]});this.createStylesStore();this.on({beforesaved:function(){this._saving=
!0},saved:function(){delete this._saving},render:function(){gxp.util.dispatch([this.getStyles],function(){this.enable()},this)},scope:this});gxp.WMSStylesDialog.superclass.initComponent.apply(this,arguments)},addStyle:function(){if(this._ready){var a=this.selectedStyle,b=this.stylesStore,c=new OpenLayers.Style(null,{name:this.newStyleName(),rules:[this.createRule()]});b.add(new b.recordType({name:c.name,userStyle:c}));this.editStyle(a)}else this.on("ready",this.addStyle,this)},editStyle:function(a){var b=
this.selectedStyle.get("userStyle"),c=new Ext.Window(Ext.apply({bbar:["->",{text:this.cancelText,iconCls:"cancel",handler:function(){c.propertiesDialog.userStyle=b;c.close();if(a)this._cancelling=!0,this.stylesStore.remove(this.selectedStyle),this.changeStyle(a,{updateCombo:!0,markModified:!0}),delete this._cancelling},scope:this},{text:this.saveText,iconCls:"save",handler:function(){c.close()}}]},{title:String.format(this.styleWindowTitle,b.title||b.name),bodyBorder:!1,autoHeight:!0,width:300,modal:!0,
items:{border:!1,items:{xtype:"gxp_stylepropertiesdialog",ref:"../propertiesDialog",userStyle:b.clone(),nameEditable:!1,style:"padding: 10px;"}},listeners:{close:function(){this.selectedStyle.set("userStyle",c.propertiesDialog.userStyle)},scope:this}}));c.show()},createSLD:function(a){var a=a||{},b={version:"1.0.0",namedLayers:{}},c=this.layerRecord.get("name");b.namedLayers[c]={name:c,userStyles:[]};this.stylesStore.each(function(d){(!a.userStyles||-1!==a.userStyles.indexOf(d.get("name")))&&b.namedLayers[c].userStyles.push(d.get("userStyle"))});
return(new OpenLayers.Format.SLD({multipleSymbolizers:!0})).write(b)},saveStyles:function(a){!0===this.modified&&this.fireEvent("beforesaved",this,a)},updateStyleRemoveButton:function(){var a=this.selectedStyle&&this.selectedStyle.get("userStyle");this.items.get(1).items.get(1).setDisabled(!a||1>=this.stylesStore.getCount()||!0===a.isDefault)},updateRuleRemoveButton:function(){this.items.get(3).items.get(1).setDisabled(!this.selectedRule)},createRule:function(){return new OpenLayers.Rule({symbolizers:[new OpenLayers.Symbolizer[this.symbolType]]})},
addRulesFieldSet:function(){var a=new Ext.form.FieldSet({itemId:"rulesfieldset",title:this.rulesFieldsetTitle,autoScroll:!0,style:"margin-bottom: 0;",hideMode:"offsets",hidden:!0}),b=new Ext.Toolbar({style:"border-width: 0 1px 1px 1px;",hidden:!0,items:[{xtype:"button",iconCls:"add",text:this.addRuleText,tooltip:this.addRuleTip,handler:this.addRule,scope:this},{xtype:"button",iconCls:"delete",text:this.deleteRuleText,tooltip:this.deleteRuleTip,handler:this.removeRule,scope:this,disabled:!0},{xtype:"button",
iconCls:"edit",text:this.editRuleText,toolitp:this.editRuleTip,handler:function(){this.layerDescription?this.editRule():this.describeLayer(this.editRule)},scope:this,disabled:!0},{xtype:"button",iconCls:"duplicate",text:this.duplicateRuleText,tip:this.duplicateRuleTip,handler:this.duplicateRule,scope:this,disabled:!0}]});this.add(a,b);this.doLayout();return a},addRule:function(){var a=this.items.get(2).items.get(0);this.selectedStyle.get("userStyle").rules.push(this.createRule());a.update();this.selectedStyle.store.afterEdit(this.selectedStyle);
this.updateRuleRemoveButton()},removeRule:function(){this.selectedStyle.get("userStyle").rules.remove(this.selectedRule);this.afterRuleChange()},duplicateRule:function(){var a=this.items.get(2).items.get(0),b=this.selectedRule.clone();this.selectedStyle.get("userStyle").rules.push(b);a.update();this.selectedStyle.store.afterEdit(this.selectedStyle);this.updateRuleRemoveButton()},editRule:function(){var a=this.selectedRule,b=a.clone(),c=new Ext.Window({title:String.format(this.ruleWindowTitle,a.title||
a.name||this.newRuleText),width:340,autoHeight:!0,modal:!0,items:[{xtype:"gxp_rulepanel",ref:"rulePanel",symbolType:this.symbolType,rule:a,attributes:new GeoExt.data.AttributeStore({url:this.layerDescription.owsURL,baseParams:{SERVICE:this.layerDescription.owsType,REQUEST:"DescribeFeatureType",TYPENAME:this.layerDescription.typeName},method:"GET",disableCaching:!1}),border:!1,defaults:{autoHeight:!0,hideMode:"offsets"},listeners:{change:this.saveRule,tabchange:function(){c.syncShadow()},scope:this}}],
bbar:["->",{text:this.cancelText,iconCls:"cancel",handler:function(){this.saveRule(c.rulePanel,b);c.close()},scope:this},{text:this.saveText,iconCls:"save",handler:function(){c.close()}}]});c.show()},saveRule:function(a,b){var c=this.selectedStyle;this.items.get(2).items.get(0);var c=c.get("userStyle"),d=c.rules.indexOf(this.selectedRule);c.rules[d]=b;this.afterRuleChange(b)},afterRuleChange:function(a){this.items.get(2).items.get(0);this.selectedRule=a;this.selectedStyle.store.afterEdit(this.selectedStyle)},
setRulesFieldSetVisible:function(a){this.items.get(3).setVisible(a&&this.editable);this.items.get(2).setVisible(a);this.doLayout()},parseSLD:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=(new OpenLayers.Format.XML).read(a.responseText);var a=this.layerRecord.getLayer().params,c=this.initialConfig.styleName||a.STYLES;if(c)this.selectedStyle=this.stylesStore.getAt(this.stylesStore.findExact("name",c));var d=new OpenLayers.Format.SLD({multipleSymbolizers:!0});try{var e=d.read(b).namedLayers[a.LAYERS].userStyles,
g;if(a.SLD_BODY)g=d.read(a.SLD_BODY).namedLayers[a.LAYERS].userStyles,Array.prototype.push.apply(e,g);this.stylesStore.removeAll();this.selectedStyle=null;for(var f,h,i,b=0,j=e.length;b<j;++b)if(f=e[b],i=this.stylesStore.findExact("name",f.name),-1!==i&&this.stylesStore.removeAt(i),h=new this.stylesStore.recordType({name:f.name,title:f.title,"abstract":f.description,userStyle:f}),h.phantom=!1,this.stylesStore.add(h),!this.selectedStyle&&(c===f.name||!c&&!0===f.isDefault))this.selectedStyle=h;this.addRulesFieldSet();
this.createLegend(this.selectedStyle.get("userStyle").rules);this.stylesStoreReady();a.SLD_BODY&&this.markModified()}catch(k){this.setupNonEditable()}},createLegend:function(a){var b=OpenLayers.Symbolizer.Raster;if(b&&a[0]&&a[0].symbolizers[0]instanceof b)throw"Raster symbolizers are not supported.";this.addVectorLegend(a)},setupNonEditable:function(){this.editable=!1;this.items.get(1).hide();(this.getComponent("rulesfieldset")||this.addRulesFieldSet()).add(this.createLegendImage());this.doLayout();
this.items.get(3).hide();this.stylesStoreReady()},stylesStoreReady:function(){this.stylesStore.commitChanges();this.stylesStore.on({load:function(){this.addStylesCombo();this.updateStyleRemoveButton()},add:function(a,b,c){this.updateStyleRemoveButton();b=this.items.get(0).items.get(0);this.markModified();b.fireEvent("select",b,a.getAt(c),c);b.setValue(this.selectedStyle.get("name"))},remove:function(a,b,c){if(!this._cancelling)this._removing=!0,b=Math.min(c,a.getCount()-1),this.updateStyleRemoveButton(),
c=this.items.get(0).items.get(0),this.markModified(),c.fireEvent("select",c,a.getAt(b),b),c.setValue(this.selectedStyle.get("name")),delete this._removing},update:function(a,b){var c=b.get("userStyle");Ext.apply(b.data,{name:c.name,title:c.title||c.name,"abstract":c.description});this.changeStyle(b,{updateCombo:!0,markModified:!0})},scope:this});this.stylesStore.fireEvent("load",this.stylesStore,this.stylesStore.getRange());this._ready=!0;this.fireEvent("ready")},markModified:function(){if(!1===this.modified)this.modified=
!0;this._saving||this.fireEvent("modified",this,this.selectedStyle.get("name"))},createStylesStore:function(){var a=this.layerRecord.get("styles");this.stylesStore=new Ext.data.JsonStore({data:{styles:a},idProperty:"name",root:"styles",fields:["name","title","abstract","legend","userStyle"],listeners:{add:function(a,c){for(var d,e=c.length-1;0<=e;--e)d=c[e],a.suspendEvents(),d.get("title")||d.set("title",d.get("name")),a.resumeEvents()}}})},getStyles:function(a){var b=this.layerRecord.getLayer();
if(!0===this.editable){var c=b.params.VERSION;1.1<parseFloat(c)&&(c="1.1.1");Ext.Ajax.request({url:b.url,params:{SERVICE:"WMS",VERSION:c,REQUEST:"GetStyles",LAYERS:""+b.params.LAYERS},method:"GET",disableCaching:!1,success:this.parseSLD,failure:this.setupNonEditable,callback:a,scope:this})}else this.setupNonEditable()},describeLayer:function(a){if(this.layerDescription)window.setTimeout(function(){a.call(this)},0);else{var b=this.layerRecord.getLayer(),c=b.params.VERSION;1.1<parseFloat(c)&&(c="1.1.1");
Ext.Ajax.request({url:b.url,params:{SERVICE:"WMS",VERSION:c,REQUEST:"DescribeLayer",LAYERS:""+b.params.LAYERS},method:"GET",disableCaching:!1,success:function(a){this.layerDescription=(new OpenLayers.Format.WMSDescribeLayer).read(a.responseXML&&a.responseXML.documentElement?a.responseXML:a.responseText)[0]},callback:a,scope:this})}},addStylesCombo:function(){var a=this.stylesStore,a=new Ext.form.ComboBox(Ext.apply({fieldLabel:this.chooseStyleText,store:a,editable:!1,displayField:"title",valueField:"name",
value:this.selectedStyle?this.selectedStyle.get("title"):this.layerRecord.getLayer().params.STYLES||"default",disabled:!a.getCount(),mode:"local",typeAhead:!0,triggerAction:"all",forceSelection:!0,anchor:"100%",listeners:{select:function(a,c){this.changeStyle(c);!c.phantom&&!this._removing&&this.fireEvent("styleselected",this,c.get("name"))},scope:this}},this.initialConfig.stylesComboOptions));this.items.get(0).add(a);this.doLayout()},createLegendImage:function(){var a=new GeoExt.WMSLegend({showTitle:!1,
layerRecord:this.layerRecord,autoScroll:!0,defaults:{listeners:{render:function(b){b.getEl().on({load:function(c,d){d.getAttribute("src")!=b.defaultImgSrc&&(this.setRulesFieldSetVisible(!0),250<b.getEl().getHeight()&&a.setHeight(250))},error:function(){this.setRulesFieldSetVisible(!1)},scope:this})},scope:this}}});return a},changeStyle:function(a,b){var b=b||{},c=this.items.get(2).items.get(0);this.selectedStyle=a;this.updateStyleRemoveButton();a.get("name");if(!0===this.editable){var d=a.get("userStyle"),
e=c.rules.indexOf(this.selectedRule);c.ownerCt.remove(c);this.createLegend(d.rules,{selectedRuleIndex:e})}!0===b.updateCombo&&(this.items.get(0).items.get(0).setValue(d.name),!0===b.markModified&&this.markModified())},addVectorLegend:function(a,b){b=Ext.applyIf(b||{},{enableDD:!0});this.symbolType=b.symbolType;if(!this.symbolType){var c=["Point","Line","Polygon"];highest=0;for(var d=a[0].symbolizers,e,g=d.length-1;0<=g;g--)e=d[g].CLASS_NAME.split(".").pop(),highest=Math.max(highest,c.indexOf(e));
this.symbolType=c[highest]}var f=this.items.get(2).add({xtype:"gx_vectorlegend",showTitle:!1,height:10<a.length?250:void 0,autoScroll:10<a.length,rules:a,symbolType:this.symbolType,selectOnClick:!0,enableDD:b.enableDD,listeners:{ruleselected:function(a,b){this.selectedRule=b;var c=this.items.get(3).items;this.updateRuleRemoveButton();c.get(2).enable();c.get(3).enable()},ruleunselected:function(){this.selectedRule=null;var a=this.items.get(3).items;a.get(1).disable();a.get(2).disable();a.get(3).disable()},
rulemoved:function(){this.markModified()},afterlayout:function(){null!==this.selectedRule&&null===f.selectedRule&&-1!==f.rules.indexOf(this.selectedRule)&&f.selectRuleEntry(this.selectedRule)},scope:this}});this.setRulesFieldSetVisible(!0);return f},newStyleName:function(){var a=this.layerRecord.get("name");return a.split(":").pop()+"_"+gxp.util.md5(a+new Date+Math.random()).substr(0,8)}});
gxp.WMSStylesDialog.createGeoServerStylerConfig=function(a,b){var c=a.getLayer();b||(b=a.get("restUrl"));b||(b=c.url.split("?").shift().replace(/\/(wms|ows)\/?$/,"/rest"));return{xtype:"gxp_wmsstylesdialog",layerRecord:a,plugins:[{ptype:"gxp_geoserverstylewriter",baseUrl:b}],listeners:{styleselected:function(a,b){c.mergeNewParams({styles:b})},modified:function(a){a.saveStyles()},saved:function(a,b){c.mergeNewParams({_olSalt:Math.random(),styles:b})},scope:this}}};
OpenLayers.Renderer.defaultSymbolizer={fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,graphicName:"square",fontColor:"#000000",fontSize:10,haloColor:"#FFFFFF",haloOpacity:1,haloRadius:1};Ext.reg("gxp_wmsstylesdialog",gxp.WMSStylesDialog);
OpenLayers.Format&&OpenLayers.Format.SLD&&OpenLayers.Format.SLD.v1&&function(){OpenLayers.Format.SLD.v1.prototype.readers.sld.VendorOption=function(a,b){if(!b.vendorOptions)b.vendorOptions=[];b.vendorOptions.push({name:a.getAttribute("name"),value:this.getChildValue(a)})};OpenLayers.Format.SLD.v1.prototype.writers.sld.VendorOption=function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},value:a.value})};OpenLayers.Format.SLD.v1.prototype.readers.sld.Priority=function(a,
b){b.priority=this.readOgcExpression(a)};OpenLayers.Format.SLD.v1.prototype.writers.sld.Priority=function(a){var b=this.createElementNSPlus("sld:Priority");this.writeNode("ogc:Literal",a,b);return b};var a=OpenLayers.Format.SLD.v1.prototype.writers.sld,b;b=a.TextSymbolizer;a.TextSymbolizer=function(a){return function(b){var c=a.apply(this,arguments);(b.externalGraphic||b.graphicName)&&this.writeNode("Graphic",b,c);"priority"in b&&this.writeNode("Priority",b.priority,c);return c}}(b);for(var c=["PointSymbolizer",
"LineSymbolizer","PolygonSymbolizer","TextSymbolizer"],d,e=0,g=c.length;e<g;++e)d=c[e],b=a[d],a[d]=function(a){return function(b){var c=a.apply(this,arguments),d=b.vendorOptions;if(d)for(var e=0,g=d.length;e<g;++e)this.writeNode("VendorOption",d[e],c);return c}}(b)}();Ext.namespace("gxp.plugins");
gxp.plugins.Styler=Ext.extend(gxp.plugins.Tool,{ptype:"gxp_styler",menuText:"Edit Styles",tooltip:"Manage layer styles",sameOriginStyling:!0,rasterStyling:!1,requireDescribeLayer:!0,constructor:function(a){gxp.plugins.Styler.superclass.constructor.apply(this,arguments);if(!this.outputConfig)this.outputConfig={autoHeight:!0,width:265};Ext.applyIf(this.outputConfig,{closeAction:"close"})},init:function(a){gxp.plugins.Styler.superclass.init.apply(this,arguments);this.target.on("authorizationchange",
this.enableOrDisable,this)},destroy:function(){this.target.un("authorizationchange",this.enableOrDisable,this);gxp.plugins.Styler.superclass.destroy.apply(this,arguments)},enableOrDisable:function(){this.target&&null!==this.target.selectedLayer&&this.handleLayerChange(this.target.selectedLayer)},addActions:function(){var a=gxp.plugins.Styler.superclass.addActions.apply(this,[{menuText:this.menuText,iconCls:"gxp-icon-palette",disabled:!0,tooltip:this.tooltip,handler:function(){this.addOutput()},scope:this}]);
this.launchAction=a[0];this.target.on({layerselectionchange:this.handleLayerChange,scope:this});return a},handleLayerChange:function(a){this.launchAction.disable();if(a&&a.get("styles")){var b=this.target.getSource(a);b instanceof gxp.plugins.WMSSource&&b.describeLayer(a,function(b){this.checkIfStyleable(a,b)},this)}},checkIfStyleable:function(a,b){if(b){var c=["WFS"];!0===this.rasterStyling&&c.push("WCS")}if(b?-1!==c.indexOf(b.get("owsType")):!this.requireDescribeLayer){var c=!1,c=this.target.layerSources[a.get("source")],
d;d=(d=a.get("restUrl"))?d+"/styles":c.url.split("?").shift().replace(/\/(wms|ows)\/?$/,"/rest/styles");(c=this.sameOriginStyling?"/"===d.charAt(0):!0)&&this.target.isAuthorized()&&this.enableActionIfAvailable(d)}},enableActionIfAvailable:function(a){Ext.Ajax.request({method:"PUT",url:a,callback:function(a,c,d){this.launchAction.setDisabled(405!==d.status)},scope:this})},addOutput:function(a){var a=a||{},b=this.target.selectedLayer;this.outputConfig.title=(this.initialConfig.outputConfig||{}).title||
this.menuText+": "+b.get("title");Ext.apply(a,gxp.WMSStylesDialog.createGeoServerStylerConfig(b));!0===this.rasterStyling&&a.plugins.push({ptype:"gxp_wmsrasterstylesdialog"});Ext.applyIf(a,{style:"padding: 10px"});var c=gxp.plugins.Styler.superclass.addOutput.call(this,a);c.stylesStore.on("load",function(){this.outputTarget||c.ownerCt.ownerCt.center()})}});Ext.preg(gxp.plugins.Styler.prototype.ptype,gxp.plugins.Styler);Ext.namespace("gxp");
gxp.WMSLayerPanel=Ext.extend(Ext.TabPanel,{layerRecord:null,source:null,styling:!0,sameOriginStyling:!0,rasterStyling:!1,transparent:null,editableStyles:!1,activeTab:0,border:!1,imageFormats:/png|gif|jpe?g/i,aboutText:"About",titleText:"Title",nameText:"Name",descriptionText:"Description",displayText:"Display",opacityText:"Opacity",formatText:"Format",infoFormatText:"Info format",infoFormatEmptyText:"Select a format",transparentText:"Transparent",cacheText:"Cache",cacheFieldText:"Use cached version",
stylesText:"Styles",initComponent:function(){this.addEvents("change");this.items=[this.createAboutPanel(),this.createDisplayPanel()];null!=this.layerRecord.get("layer").params.TILED&&this.items.push(this.createCachePanel());if(this.styling&&gxp.WMSStylesDialog&&this.layerRecord.get("styles")){var a=this.layerRecord.get("restUrl");a||(a=(this.source||this.layerRecord.get("layer")).url.split("?").shift().replace(/\/(wms|ows)\/?$/,"/rest"));this.editableStyles=this.sameOriginStyling?"/"===a.charAt(0):
!0;this.items.push(this.createStylesPanel(a))}gxp.WMSLayerPanel.superclass.initComponent.call(this)},createCachePanel:function(){return{title:this.cacheText,layout:"form",style:"padding: 10px",items:[{xtype:"checkbox",fieldLabel:this.cacheFieldText,checked:!0===this.layerRecord.get("layer").params.TILED,listeners:{check:function(a,b){this.layerRecord.get("layer").mergeNewParams({TILED:b});this.fireEvent("change")},scope:this}}]}},createStylesPanel:function(a){var b=gxp.WMSStylesDialog.createGeoServerStylerConfig(this.layerRecord,
a);!0===this.rasterStyling&&b.plugins.push({ptype:"gxp_wmsrasterstylesdialog"});return Ext.apply(b,{title:this.stylesText,style:"padding: 10px",editable:!1,listeners:Ext.apply(b.listeners,{beforerender:{fn:function(b){var d=!this.editableStyles;if(!d)"boolean"==typeof this.authorized?(b.editable=this.authorized,b.ownerCt.doLayout()):Ext.Ajax.request({method:"PUT",url:a+"/styles",callback:function(a,d,f){b.editable=405==f.status;b.ownerCt.doLayout()}});return d},scope:this,single:!0}})})},createAboutPanel:function(){return{title:this.aboutText,
style:{padding:"10px"},defaults:{border:!1},items:[{layout:"form",labelWidth:70,items:[{xtype:"textfield",fieldLabel:this.titleText,anchor:"99%",value:this.layerRecord.get("title"),listeners:{change:function(a){this.layerRecord.set("title",a.getValue());this.layerRecord.commit();this.fireEvent("change")},scope:this}},{xtype:"textfield",fieldLabel:this.nameText,anchor:"99%",value:this.layerRecord.get("name"),readOnly:!0}]},{layout:"form",labelAlign:"top",items:[{xtype:"textarea",fieldLabel:this.descriptionText,
grow:!0,growMax:150,anchor:"99%",value:this.layerRecord.get("abstract"),readOnly:!0}]}]}},createDisplayPanel:function(){var a=this.layerRecord,b=a.getLayer(),c=b.opacity;null==c&&(c=1);var d=[],e=b.params.FORMAT.toLowerCase();Ext.each(a.get("formats"),function(a){this.imageFormats.test(a)&&d.push(a.toLowerCase())},this);-1===d.indexOf(e)&&d.push(e);var g=b.params.TRANSPARENT,g="true"===g||!0===g;return{title:this.displayText,style:{padding:"10px"},layout:"form",labelWidth:70,items:[{xtype:"slider",
name:"opacity",fieldLabel:this.opacityText,value:100*c,values:[100*c],anchor:"99%",isFormField:!0,listeners:{change:function(a,c){b.setOpacity(c/100);this.fireEvent("change")},scope:this}},{xtype:"combo",fieldLabel:this.formatText,store:d,value:e,mode:"local",triggerAction:"all",editable:!1,anchor:"99%",listeners:{select:function(a){a=a.getValue();b.mergeNewParams({format:a});if("image/jpeg"==a)this.transparent=Ext.getCmp("transparent").getValue(),Ext.getCmp("transparent").setValue(!1);else if(null!==
this.transparent)Ext.getCmp("transparent").setValue(this.transparent),this.transparent=null;Ext.getCmp("transparent").setDisabled("image/jpeg"==a);this.fireEvent("change")},scope:this}},{xtype:"combo",fieldLabel:this.infoFormatText,emptyText:this.infoFormatEmptyText,store:a.get("infoFormats"),value:a.get("infoFormat"),hidden:void 0===a.get("infoFormats"),mode:"local",triggerAction:"all",editable:!1,anchor:"99%",listeners:{select:function(b){b=b.getValue();a.set("infoFormat",b);this.fireEvent("change")}},
scope:this},{xtype:"checkbox",id:"transparent",fieldLabel:this.transparentText,checked:g,listeners:{check:function(a,c){b.mergeNewParams({transparent:c?"true":"false"});this.fireEvent("change")},scope:this}}]}}});Ext.reg("gxp_wmslayerpanel",gxp.WMSLayerPanel);Ext.namespace("gxp");
gxp.RulePanel=Ext.extend(Ext.TabPanel,{fonts:void 0,symbolType:"Point",rule:null,attributes:null,nestedFilters:!0,minScaleDenominatorLimit:1.577757414193268E9*Math.pow(0.5,19)*OpenLayers.DOTS_PER_INCH/256,maxScaleDenominatorLimit:1.577757414193268E9*OpenLayers.DOTS_PER_INCH/256,scaleLevels:20,scaleSliderTemplate:"{scaleType} Scale 1:{scale}",modifyScaleTipContext:Ext.emptyFn,labelFeaturesText:"Label Features",labelsText:"Labels",basicText:"Basic",advancedText:"Advanced",limitByScaleText:"Limit by scale",
limitByConditionText:"Limit by condition",symbolText:"Symbol",nameText:"Name",initComponent:function(){Ext.applyIf(this,{plain:!0,border:!1});if(this.rule){if(!this.initialConfig.symbolType)this.symbolType=this.getSymbolTypeFromRule(this.rule)||this.symbolType}else this.rule=new OpenLayers.Rule({name:this.uniqueRuleName()});this.activeTab=0;this.textSymbolizer=new gxp.TextSymbolizer({symbolizer:this.getTextSymbolizer(),attributes:this.attributes,fonts:this.fonts,listeners:{change:function(){this.fireEvent("change",
this,this.rule)},scope:this}});this.scaleLimitPanel=new gxp.ScaleLimitPanel({maxScaleDenominator:this.rule.maxScaleDenominator||void 0,limitMaxScaleDenominator:!!this.rule.maxScaleDenominator,maxScaleDenominatorLimit:this.maxScaleDenominatorLimit,minScaleDenominator:this.rule.minScaleDenominator||void 0,limitMinScaleDenominator:!!this.rule.minScaleDenominator,minScaleDenominatorLimit:this.minScaleDenominatorLimit,scaleLevels:this.scaleLevels,scaleSliderTemplate:this.scaleSliderTemplate,modifyScaleTipContext:this.modifyScaleTipContext,
listeners:{change:function(a,b,c){this.rule.minScaleDenominator=b;this.rule.maxScaleDenominator=c;this.fireEvent("change",this,this.rule)},scope:this}});this.filterBuilder=new gxp.FilterBuilder({allowGroups:this.nestedFilters,filter:this.rule&&this.rule.filter&&this.rule.filter.clone(),attributes:this.attributes,listeners:{change:function(a){this.rule.filter=a.getFilter();this.fireEvent("change",this,this.rule)},scope:this}});this.items=[{title:this.labelsText,autoScroll:!0,bodyStyle:{padding:"10px"},
items:[{xtype:"fieldset",title:this.labelFeaturesText,autoHeight:!0,checkboxToggle:!0,collapsed:!this.hasTextSymbolizer(),items:[this.textSymbolizer],listeners:{collapse:function(){OpenLayers.Util.removeItem(this.rule.symbolizers,this.getTextSymbolizer());this.fireEvent("change",this,this.rule)},expand:function(){this.setTextSymbolizer(this.textSymbolizer.symbolizer);this.fireEvent("change",this,this.rule)},scope:this}}]}];if(this.getSymbolTypeFromRule(this.rule)||this.symbolType)this.items=[{title:this.basicText,
autoScroll:!0,items:[this.createHeaderPanel(),this.createSymbolizerPanel()]},this.items[0],{title:this.advancedText,defaults:{style:{margin:"7px"}},autoScroll:!0,items:[{xtype:"fieldset",title:this.limitByScaleText,checkboxToggle:!0,collapsed:!(this.rule&&(this.rule.minScaleDenominator||this.rule.maxScaleDenominator)),autoHeight:!0,items:[this.scaleLimitPanel],listeners:{collapse:function(){delete this.rule.minScaleDenominator;delete this.rule.maxScaleDenominator;this.fireEvent("change",this,this.rule)},
expand:function(){var a=this.getActiveTab();this.activeTab=null;this.setActiveTab(a);a=!1;if(this.scaleLimitPanel.limitMinScaleDenominator)this.rule.minScaleDenominator=this.scaleLimitPanel.minScaleDenominator,a=!0;if(this.scaleLimitPanel.limitMaxScaleDenominator)this.rule.maxScaleDenominator=this.scaleLimitPanel.maxScaleDenominator,a=!0;a&&this.fireEvent("change",this,this.rule)},scope:this}},{xtype:"fieldset",title:this.limitByConditionText,checkboxToggle:!0,collapsed:!(this.rule&&this.rule.filter),
autoHeight:!0,items:[this.filterBuilder],listeners:{collapse:function(){delete this.rule.filter;this.fireEvent("change",this,this.rule)},expand:function(){this.rule.filter=this.filterBuilder.getFilter();this.fireEvent("change",this,this.rule)},scope:this}}]}];this.items[0].autoHeight=!0;this.addEvents("change");this.on({tabchange:function(a,b){b.doLayout()},scope:this});gxp.RulePanel.superclass.initComponent.call(this)},hasTextSymbolizer:function(){for(var a,b,c=0,d=this.rule.symbolizers.length;c<
d;++c)if(a=this.rule.symbolizers[c],a instanceof OpenLayers.Symbolizer.Text){b=a;break}return b},getTextSymbolizer:function(){var a=this.hasTextSymbolizer();a||(a=new OpenLayers.Symbolizer.Text);return a},setTextSymbolizer:function(a){for(var b,c=0,d=this.rule.symbolizers.length;c<d;++c)if(candidate=this.rule.symbolizers[c],this.rule.symbolizers[c]instanceof OpenLayers.Symbolizer.Text){this.rule.symbolizers[c]=a;b=!0;break}b||this.rule.symbolizers.push(a)},uniqueRuleName:function(){return OpenLayers.Util.createUniqueID("rule_")},
createHeaderPanel:function(){this.symbolizerSwatch=new GeoExt.FeatureRenderer({symbolType:this.symbolType,isFormField:!0,fieldLabel:this.symbolText});return{xtype:"form",border:!1,labelAlign:"top",defaults:{border:!1},style:{padding:"0.3em 0 0 1em"},items:[{layout:"column",defaults:{border:!1,style:{"padding-right":"1em"}},items:[{layout:"form",width:150,items:[{xtype:"textfield",fieldLabel:this.nameText,anchor:"95%",value:this.rule&&(this.rule.title||this.rule.name||""),listeners:{change:function(a,
b){this.rule.title=b;this.fireEvent("change",this,this.rule)},scope:this}}]},{layout:"form",width:70,items:[this.symbolizerSwatch]}]}]}},createSymbolizerPanel:function(){var a,b,c=OpenLayers.Symbolizer[this.symbolType],d=!1;if(c){for(var e=0,g=this.rule.symbolizers.length;e<g;++e)if(a=this.rule.symbolizers[e],a instanceof c){d=!0;b=a;break}b||(b=new c({fill:!1,stroke:!1}))}else throw Error("Appropriate symbolizer type not included in build: "+this.symbolType);this.symbolizerSwatch.setSymbolizers([b],
{draw:this.symbolizerSwatch.rendered});a={xtype:"gxp_"+this.symbolType.toLowerCase()+"symbolizer",symbolizer:b,bodyStyle:{padding:"10px"},border:!1,labelWidth:70,defaults:{labelWidth:70},listeners:{change:function(a){this.symbolizerSwatch.setSymbolizers([a],{draw:this.symbolizerSwatch.rendered});d||(this.rule.symbolizers.push(a),d=!0);this.fireEvent("change",this,this.rule)},scope:this}};if("Point"===this.symbolType&&this.pointGraphics)a.pointGraphics=this.pointGraphics;return a},getSymbolTypeFromRule:function(a){for(var b,
c,d=0,e=a.symbolizers.length;d<e;++d)if(b=a.symbolizers[d],!(b instanceof OpenLayers.Symbolizer.Text)){c=b.CLASS_NAME.split(".").pop();break}return c}});Ext.reg("gxp_rulepanel",gxp.RulePanel);Ext.namespace("gxp");
gxp.ScaleLimitPanel=Ext.extend(Ext.Panel,{maxScaleDenominatorLimit:1.577757414193268E9*OpenLayers.DOTS_PER_INCH/256,limitMaxScaleDenominator:!0,maxScaleDenominator:void 0,minScaleDenominatorLimit:1.577757414193268E9*Math.pow(0.5,19)*OpenLayers.DOTS_PER_INCH/256,limitMinScaleDenominator:!0,minScaleDenominator:void 0,scaleLevels:20,scaleSliderTemplate:"{scaleType} Scale 1:{scale}",modifyScaleTipContext:Ext.emptyFn,scaleFactor:null,changing:!1,border:!1,maxScaleLimitText:"Max scale limit",minScaleLimitText:"Min scale limit",
initComponent:function(){this.layout="column";this.defaults={border:!1,bodyStyle:"margin: 0 5px;"};this.bodyStyle={padding:"5px"};this.scaleSliderTemplate=new Ext.Template(this.scaleSliderTemplate);Ext.applyIf(this,{minScaleDenominator:this.minScaleDenominatorLimit,maxScaleDenominator:this.maxScaleDenominatorLimit});this.scaleFactor=Math.pow(this.maxScaleDenominatorLimit/this.minScaleDenominatorLimit,1/(this.scaleLevels-1));this.scaleSlider=new Ext.Slider({vertical:!0,height:100,values:[0,100],listeners:{changecomplete:function(a){this.updateScaleValues(a)},
render:function(a){a.thumbs[0].el.setVisible(this.limitMaxScaleDenominator);a.thumbs[1].el.setVisible(this.limitMinScaleDenominator);a.setDisabled(!this.limitMinScaleDenominator&&!this.limitMaxScaleDenominator)},scope:this},plugins:[new gxp.slider.Tip({getText:function(a){var b=a.slider.thumbs.indexOf(a),a={scale:""+this.sliderValuesToScale([a.value])[0],zoom:(a.value*(this.scaleLevels/100)).toFixed(1),type:0===b?"Max":"Min",scaleType:0===b?"Min":"Max"};this.modifyScaleTipContext(this,a);return this.scaleSliderTemplate.apply(a)}.createDelegate(this)})]});
this.maxScaleDenominatorInput=new Ext.form.NumberField({allowNegative:!1,width:100,fieldLabel:"1",value:Math.round(this.maxScaleDenominator),disabled:!this.limitMaxScaleDenominator,validator:function(a){return!this.limitMinScaleDenominator||a>this.minScaleDenominator}.createDelegate(this),listeners:{valid:function(a){var a=Number(a.getValue()),b=Math.round(this.maxScaleDenominatorLimit);if(a<b&&a>this.minScaleDenominator)this.maxScaleDenominator=a,this.updateSliderValues()},change:function(a){var b=
Number(a.getValue()),c=Math.round(this.maxScaleDenominatorLimit);b>c?a.setValue(c):b<this.minScaleDenominator?a.setValue(this.minScaleDenominator):(this.maxScaleDenominator=b,this.updateSliderValues())},scope:this}});this.minScaleDenominatorInput=new Ext.form.NumberField({allowNegative:!1,width:100,fieldLabel:"1",value:Math.round(this.minScaleDenominator),disabled:!this.limitMinScaleDenominator,validator:function(a){return!this.limitMaxScaleDenominator||a<this.maxScaleDenominator}.createDelegate(this),
listeners:{valid:function(a){var a=Number(a.getValue()),b=Math.round(this.minScaleDenominatorLimit);if(a>b&&a<this.maxScaleDenominator)this.minScaleDenominator=a,this.updateSliderValues()},change:function(a){var b=Number(a.getValue()),c=Math.round(this.minScaleDenominatorLimit);b<c?a.setValue(c):b>this.maxScaleDenominator?a.setValue(this.maxScaleDenominator):(this.minScaleDenominator=b,this.updateSliderValues())},scope:this}});this.items=[this.scaleSlider,{xtype:"panel",layout:"form",defaults:{border:!1},
items:[{labelWidth:90,layout:"form",width:150,items:[{xtype:"checkbox",checked:!!this.limitMinScaleDenominator,fieldLabel:this.maxScaleLimitText,listeners:{check:function(a,b){this.limitMinScaleDenominator=b;var c=this.scaleSlider;c.setValue(1,100);c.thumbs[1].el.setVisible(b);this.minScaleDenominatorInput.setDisabled(!b);this.updateScaleValues(c);c.setDisabled(!this.limitMinScaleDenominator&&!this.limitMaxScaleDenominator)},scope:this}}]},{labelWidth:10,layout:"form",items:[this.minScaleDenominatorInput]},
{labelWidth:90,layout:"form",items:[{xtype:"checkbox",checked:!!this.limitMaxScaleDenominator,fieldLabel:this.minScaleLimitText,listeners:{check:function(a,b){this.limitMaxScaleDenominator=b;var c=this.scaleSlider;c.setValue(0,0);c.thumbs[0].el.setVisible(b);this.maxScaleDenominatorInput.setDisabled(!b);this.updateScaleValues(c);c.setDisabled(!this.limitMinScaleDenominator&&!this.limitMaxScaleDenominator)},scope:this}}]},{labelWidth:10,layout:"form",items:[this.maxScaleDenominatorInput]}]}];this.addEvents("change");
gxp.ScaleLimitPanel.superclass.initComponent.call(this)},updateScaleValues:function(a){if(!this.changing){var b=a.getValues(),c=!1;!this.limitMaxScaleDenominator&&0<b[0]&&(b[0]=0,c=!0);!this.limitMinScaleDenominator&&100>b[1]&&(b[1]=100,c=!0);c?(a.setValue(0,b[0]),a.setValue(1,b[1])):(b=this.sliderValuesToScale(b),a=b[0],b=b[1],this.changing=!0,this.minScaleDenominatorInput.setValue(b),this.maxScaleDenominatorInput.setValue(a),this.changing=!1,this.fireEvent("change",this,this.limitMinScaleDenominator?
b:void 0,this.limitMaxScaleDenominator?a:void 0))}},updateSliderValues:function(){if(!this.changing){var a=this.minScaleDenominator,b=this.maxScaleDenominator,c=this.scaleToSliderValues([b,a]);this.changing=!0;this.scaleSlider.setValue(0,c[0]);this.scaleSlider.setValue(1,c[1]);this.changing=!1;this.fireEvent("change",this,this.limitMinScaleDenominator?a:void 0,this.limitMaxScaleDenominator?b:void 0)}},sliderValuesToScale:function(a){var b=100/(this.scaleLevels-1);return[Math.round(Math.pow(this.scaleFactor,
(100-a[0])/b)*this.minScaleDenominatorLimit),Math.round(Math.pow(this.scaleFactor,(100-a[1])/b)*this.minScaleDenominatorLimit)]},scaleToSliderValues:function(a){var b=100/(this.scaleLevels-1);return[100-b*Math.log(a[0]/this.minScaleDenominatorLimit)/Math.log(this.scaleFactor),100-b*Math.log(a[1]/this.minScaleDenominatorLimit)/Math.log(this.scaleFactor)]}});Ext.reg("gxp_scalelimitpanel",gxp.ScaleLimitPanel);Ext.namespace("gxp.slider");
gxp.slider.Tip=Ext.extend(Ext.slider.Tip,{hover:!0,dragging:!1,init:function(a){if(this.hover)a.on("render",this.registerThumbListeners,this);this.slider=a;gxp.slider.Tip.superclass.init.apply(this,arguments)},registerThumbListeners:function(){for(var a=0,b=this.slider.thumbs.length;a<b;++a)this.slider.thumbs[a].el.on({mouseover:this.createHoverListener(a),mouseout:function(){this.dragging||this.hide.apply(this,arguments)},scope:this})},createHoverListener:function(a){return function(){this.onSlide(this.slider,
{},this.slider.thumbs[a]);this.dragging=!1}.createDelegate(this)},onSlide:function(a,b,c){this.dragging=!0;gxp.slider.Tip.superclass.onSlide.apply(this,arguments)}});Ext.namespace("gxp");
gxp.TextSymbolizer=Ext.extend(Ext.Panel,{fonts:void 0,symbolizer:null,defaultSymbolizer:null,attributes:null,colorManager:null,haloCache:null,border:!1,layout:"form",labelValuesText:"Label values",haloText:"Halo",sizeText:"Size",initComponent:function(){if(!this.symbolizer)this.symbolizer={};Ext.applyIf(this.symbolizer,this.defaultSymbolizer);this.haloCache={};var a={xtype:"combo",fieldLabel:this.labelValuesText,store:this.attributes,editable:!1,triggerAction:"all",allowBlank:!1,displayField:"name",
valueField:"name",value:this.symbolizer.label&&this.symbolizer.label.replace(/^\${(.*)}$/,"$1"),listeners:{select:function(a,c){this.symbolizer.label="${"+c.get("name")+"}";this.fireEvent("change",this.symbolizer)},scope:this},width:120};this.attributesComboConfig=this.attributesComboConfig||{};Ext.applyIf(this.attributesComboConfig,a);this.labelWidth=80;this.items=[this.attributesComboConfig,{cls:"x-html-editor-tb",style:"background: transparent; border: none; padding: 0 0em 0.5em;",xtype:"toolbar",
items:[{xtype:"gxp_fontcombo",fonts:this.fonts||void 0,width:110,value:this.symbolizer.fontFamily,listeners:{select:function(a,c){this.symbolizer.fontFamily=c.get("field1");this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"tbtext",text:this.sizeText+": "},{xtype:"numberfield",allowNegative:!1,emptyText:OpenLayers.Renderer.defaultSymbolizer.fontSize,value:this.symbolizer.fontSize,width:30,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.fontSize:this.symbolizer.fontSize=
c;this.fireEvent("change",this.symbolizer)},scope:this}},{enableToggle:!0,cls:"x-btn-icon",iconCls:"x-edit-bold",pressed:"bold"===this.symbolizer.fontWeight,listeners:{toggle:function(a,c){this.symbolizer.fontWeight=c?"bold":"normal";this.fireEvent("change",this.symbolizer)},scope:this}},{enableToggle:!0,cls:"x-btn-icon",iconCls:"x-edit-italic",pressed:"italic"===this.symbolizer.fontStyle,listeners:{toggle:function(a,c){this.symbolizer.fontStyle=c?"italic":"normal";this.fireEvent("change",this.symbolizer)},
scope:this}}]},{xtype:"gxp_fillsymbolizer",symbolizer:this.symbolizer,defaultColor:OpenLayers.Renderer.defaultSymbolizer.fontColor,checkboxToggle:!1,autoHeight:!0,width:213,labelWidth:70,plugins:this.colorManager&&[new this.colorManager],listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"fieldset",title:this.haloText,checkboxToggle:!0,collapsed:!(this.symbolizer.haloRadius||this.symbolizer.haloColor||this.symbolizer.haloOpacity),autoHeight:!0,labelWidth:50,
items:[{xtype:"numberfield",fieldLabel:this.sizeText,anchor:"89%",allowNegative:!1,emptyText:OpenLayers.Renderer.defaultSymbolizer.haloRadius,value:this.symbolizer.haloRadius,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.haloRadius:this.symbolizer.haloRadius=c;this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_fillsymbolizer",symbolizer:{fillColor:"haloColor"in this.symbolizer?this.symbolizer.haloColor:OpenLayers.Renderer.defaultSymbolizer.haloColor,
fillOpacity:"haloOpacity"in this.symbolizer?this.symbolizer.haloOpacity:OpenLayers.Renderer.defaultSymbolizer.haloOpacity},defaultColor:OpenLayers.Renderer.defaultSymbolizer.haloColor,checkboxToggle:!1,width:190,labelWidth:60,plugins:this.colorManager&&[new this.colorManager],listeners:{change:function(a){this.symbolizer.haloColor=a.fillColor;this.symbolizer.haloOpacity=a.fillOpacity;this.fireEvent("change",this.symbolizer)},scope:this}}],listeners:{collapse:function(){this.haloCache={haloRadius:this.symbolizer.haloRadius,
haloColor:this.symbolizer.haloColor,haloOpacity:this.symbolizer.haloOpacity};delete this.symbolizer.haloRadius;delete this.symbolizer.haloColor;delete this.symbolizer.haloOpacity;this.fireEvent("change",this.symbolizer)},expand:function(){Ext.apply(this.symbolizer,this.haloCache);this.doLayout();this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.TextSymbolizer.superclass.initComponent.call(this)}});Ext.reg("gxp_textsymbolizer",gxp.TextSymbolizer);Ext.namespace("gxp");
gxp.FillSymbolizer=Ext.extend(Ext.FormPanel,{symbolizer:null,colorManager:null,checkboxToggle:!0,defaultColor:null,border:!1,fillText:"Fill",colorText:"Color",opacityText:"Opacity",initComponent:function(){if(!this.symbolizer)this.symbolizer={};var a;this.colorManager&&(a=[new this.colorManager]);this.items=[{xtype:"fieldset",title:this.fillText,autoHeight:!0,checkboxToggle:this.checkboxToggle,collapsed:!0===this.checkboxToggle&&!1===this.symbolizer.fill,hideMode:"offsets",defaults:{width:100},items:[{xtype:"gxp_colorfield",
fieldLabel:this.colorText,name:"color",emptyText:OpenLayers.Renderer.defaultSymbolizer.fillColor,value:this.symbolizer.fillColor,defaultBackground:this.defaultColor||OpenLayers.Renderer.defaultSymbolizer.fillColor,plugins:a,listeners:{valid:function(a){var a=a.getValue(),c=this.symbolizer.fillColor!=a;this.symbolizer.fillColor=a;c&&this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"slider",fieldLabel:this.opacityText,name:"opacity",values:[100*("fillOpacity"in this.symbolizer?this.symbolizer.fillOpacity:
OpenLayers.Renderer.defaultSymbolizer.fillOpacity)],isFormField:!0,listeners:{changecomplete:function(a,c){this.symbolizer.fillOpacity=c/100;this.fireEvent("change",this.symbolizer)},scope:this},plugins:[new GeoExt.SliderTip({getText:function(a){return a.value+"%"}})]}],listeners:{collapse:function(){if(!1!==this.symbolizer.fill)this.symbolizer.fill=!1,this.fireEvent("change",this.symbolizer)},expand:function(){this.symbolizer.fill=!0;this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");
gxp.FillSymbolizer.superclass.initComponent.call(this)}});Ext.reg("gxp_fillsymbolizer",gxp.FillSymbolizer);Ext.namespace("gxp.form");
gxp.form.ColorField=Ext.extend(Ext.form.TextField,{cssColors:{aqua:"#00FFFF",black:"#000000",blue:"#0000FF",fuchsia:"#FF00FF",gray:"#808080",green:"#008000",lime:"#00FF00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#FF0000",silver:"#C0C0C0",teal:"#008080",white:"#FFFFFF",yellow:"#FFFF00"},defaultBackground:"#ffffff",initComponent:function(){if(this.value)this.value=this.hexToColor(this.value);gxp.form.ColorField.superclass.initComponent.call(this);this.on({render:this.colorField,
valid:this.colorField,scope:this})},isDark:function(a){var b=!1;if(a)var b=parseInt(a.substring(1,3),16)/255,c=parseInt(a.substring(3,5),16)/255,a=parseInt(a.substring(5,7),16)/255,b=0.5>0.299*b+0.587*c+0.144*a;return b},colorField:function(){var a=this.colorToHex(this.getValue())||this.defaultBackground;this.getEl().setStyle({background:a,color:this.isDark(a)?"#ffffff":"#000000"})},getHexValue:function(){return this.colorToHex(gxp.form.ColorField.superclass.getValue.apply(this,arguments))},getValue:function(){var a=
this.getHexValue(),b=this.initialConfig.value;a===this.hexToColor(b)&&(a=b);return a},setValue:function(a){gxp.form.ColorField.superclass.setValue.apply(this,[this.hexToColor(a)])},colorToHex:function(a){return!a?a:a.match(/^#[0-9a-f]{6}$/i)?a:this.cssColors[a.toLowerCase()]||null},hexToColor:function(a){if(!a)return a;for(var b in this.cssColors)if(this.cssColors[b]==a.toUpperCase()){a=b;break}return a}});Ext.reg("gxp_colorfield",gxp.form.ColorField);Ext.namespace("gxp.form");
gxp.form.FontComboBox=Ext.extend(Ext.form.ComboBox,{fonts:"Serif,SansSerif,Arial,Courier New,Tahoma,Times New Roman,Verdana".split(","),defaultFont:"Serif",allowBlank:!1,mode:"local",triggerAction:"all",editable:!1,initComponent:function(){var a=this.fonts||gxp.form.FontComboBox.prototype.fonts,b=this.defaultFont;-1===a.indexOf(this.defaultFont)&&(b=a[0]);a={displayField:"field1",valueField:"field1",store:a,value:b,tpl:new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item"><span style="font-family: {field1};">{field1}</span></div></tpl>')};
Ext.applyIf(this,a);gxp.form.FontComboBox.superclass.initComponent.call(this)}});Ext.reg("gxp_fontcombo",gxp.form.FontComboBox);Ext.namespace("gxp");
gxp.PolygonSymbolizer=Ext.extend(Ext.Panel,{symbolizer:null,initComponent:function(){this.items=[{xtype:"gxp_fillsymbolizer",symbolizer:this.symbolizer,listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_strokesymbolizer",symbolizer:this.symbolizer,listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.PolygonSymbolizer.superclass.initComponent.call(this)}});Ext.reg("gxp_polygonsymbolizer",gxp.PolygonSymbolizer);
Ext.namespace("gxp");
gxp.StrokeSymbolizer=Ext.extend(Ext.FormPanel,{solidStrokeName:"solid",dashStrokeName:"dash",dotStrokeName:"dot",titleText:"Stroke",styleText:"Style",colorText:"Color",widthText:"Width",opacityText:"Opacity",symbolizer:null,colorManager:null,checkboxToggle:!0,defaultColor:null,dashStyles:null,border:!1,initComponent:function(){this.dashStyles=this.dashStyles||[["solid",this.solidStrokeName],["4 4",this.dashStrokeName],["2 4",this.dotStrokeName]];if(!this.symbolizer)this.symbolizer={};var a;this.colorManager&&
(a=[new this.colorManager]);this.items=[{xtype:"fieldset",title:this.titleText,autoHeight:!0,checkboxToggle:this.checkboxToggle,collapsed:!0===this.checkboxToggle&&!1===this.symbolizer.stroke,hideMode:"offsets",defaults:{width:100},items:[{xtype:"combo",name:"style",fieldLabel:this.styleText,store:new Ext.data.SimpleStore({data:this.dashStyles,fields:["value","display"]}),displayField:"display",valueField:"value",value:this.getDashArray(this.symbolizer.strokeDashstyle)||OpenLayers.Renderer.defaultSymbolizer.strokeDashstyle,
mode:"local",allowBlank:!0,triggerAction:"all",editable:!1,listeners:{select:function(a,c){this.symbolizer.strokeDashstyle=c.get("value");this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_colorfield",name:"color",fieldLabel:this.colorText,emptyText:OpenLayers.Renderer.defaultSymbolizer.strokeColor,value:this.symbolizer.strokeColor,defaultBackground:this.defaultColor||OpenLayers.Renderer.defaultSymbolizer.strokeColor,plugins:a,listeners:{valid:function(a){var a=a.getValue(),c=this.symbolizer.strokeColor!=
a;this.symbolizer.strokeColor=a;c&&this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"numberfield",name:"width",fieldLabel:this.widthText,allowNegative:!1,emptyText:OpenLayers.Renderer.defaultSymbolizer.strokeWidth,value:this.symbolizer.strokeWidth,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.strokeWidth:this.symbolizer.strokeWidth=c;this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"slider",name:"opacity",fieldLabel:this.opacityText,values:[100*
("strokeOpacity"in this.symbolizer?this.symbolizer.strokeOpacity:OpenLayers.Renderer.defaultSymbolizer.strokeOpacity)],isFormField:!0,listeners:{changecomplete:function(a,c){this.symbolizer.strokeOpacity=c/100;this.fireEvent("change",this.symbolizer)},scope:this},plugins:[new GeoExt.SliderTip({getText:function(a){return a.value+"%"}})]}],listeners:{collapse:function(){if(!1!==this.symbolizer.stroke)this.symbolizer.stroke=!1,this.fireEvent("change",this.symbolizer)},expand:function(){this.symbolizer.stroke=
!0;this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.StrokeSymbolizer.superclass.initComponent.call(this)},getDashArray:function(a){var b;a&&(a=a.split(/\s+/),a=a[0]/a[1],isNaN(a)||(b=1<=a?"4 4":"2 4"));return b}});Ext.reg("gxp_strokesymbolizer",gxp.StrokeSymbolizer);Ext.namespace("gxp");
gxp.LineSymbolizer=Ext.extend(Ext.Panel,{symbolizer:null,initComponent:function(){this.items=[{xtype:"gxp_strokesymbolizer",symbolizer:this.symbolizer,listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.LineSymbolizer.superclass.initComponent.call(this)}});Ext.reg("gxp_linesymbolizer",gxp.LineSymbolizer);Ext.namespace("gxp");
gxp.PointSymbolizer=Ext.extend(Ext.Panel,{symbolizer:null,graphicCircleText:"circle",graphicSquareText:"square",graphicTriangleText:"triangle",graphicStarText:"star",graphicCrossText:"cross",graphicXText:"x",graphicExternalText:"external",urlText:"URL",opacityText:"opacity",symbolText:"Symbol",sizeText:"Size",rotationText:"Rotation",pointGraphics:null,colorManager:null,external:null,layout:"form",initComponent:function(){if(!this.symbolizer)this.symbolizer={};if(!this.pointGraphics)this.pointGraphics=
[{display:this.graphicCircleText,value:"circle",mark:!0},{display:this.graphicSquareText,value:"square",mark:!0},{display:this.graphicTriangleText,value:"triangle",mark:!0},{display:this.graphicStarText,value:"star",mark:!0},{display:this.graphicCrossText,value:"cross",mark:!0},{display:this.graphicXText,value:"x",mark:!0},{display:this.graphicExternalText}];this.external=!!this.symbolizer.externalGraphic;this.markPanel=new Ext.Panel({border:!1,collapsed:this.external,layout:"form",items:[{xtype:"gxp_fillsymbolizer",
symbolizer:this.symbolizer,labelWidth:this.labelWidth,labelAlign:this.labelAlign,colorManager:this.colorManager,listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_strokesymbolizer",symbolizer:this.symbolizer,labelWidth:this.labelWidth,labelAlign:this.labelAlign,colorManager:this.colorManager,listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}}]});this.urlField=new Ext.form.TextField({name:"url",fieldLabel:this.urlText,value:this.symbolizer.externalGraphic,
hidden:!0,listeners:{change:function(a,b){this.symbolizer.externalGraphic=b;this.fireEvent("change",this.symbolizer)},scope:this},width:100});this.graphicPanel=new Ext.Panel({border:!1,collapsed:!this.external,layout:"form",items:[this.urlField,{xtype:"slider",name:"opacity",fieldLabel:this.opacityText,value:[null==this.symbolizer.graphicOpacity?100:100*this.symbolizer.graphicOpacity],isFormField:!0,listeners:{changecomplete:function(a,b){this.symbolizer.graphicOpacity=b/100;this.fireEvent("change",
this.symbolizer)},scope:this},plugins:[new GeoExt.SliderTip({getText:function(a){return a.value+"%"}})],width:100}]});this.items=[{xtype:"combo",name:"mark",fieldLabel:this.symbolText,store:new Ext.data.JsonStore({data:{root:this.pointGraphics},root:"root",fields:["value","display","preview",{name:"mark",type:"boolean"}]}),value:this.external?0:this.symbolizer.graphicName,displayField:"display",valueField:"value",tpl:new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item gx-pointsymbolizer-mark-item"><tpl if="preview"><img src="{preview}" alt="{display}"/></tpl><span>{display}</span></div></tpl>'),
mode:"local",allowBlank:!1,triggerAction:"all",editable:!1,listeners:{select:function(a,b){var c=b.get("mark"),d=b.get("value");if(c){if(this.external)this.external=!1,delete this.symbolizer.externalGraphic,this.updateGraphicDisplay();this.symbolizer.graphicName=d}else if(d?(this.urlField.hide(),this.urlField.getEl().up(".x-form-item").setDisplayed(!1),this.symbolizer.externalGraphic=d):(this.urlField.show(),this.urlField.getEl().up(".x-form-item").setDisplayed(!0)),!this.external)this.external=!0,
this.updateGraphicDisplay();this.fireEvent("change",this.symbolizer)},scope:this},width:100},{xtype:"textfield",name:"size",fieldLabel:this.sizeText,value:this.symbolizer.pointRadius&&2*this.symbolizer.pointRadius,listeners:{change:function(a,b){this.symbolizer.pointRadius=b/2;this.fireEvent("change",this.symbolizer)},scope:this},width:100},{xtype:"textfield",name:"rotation",fieldLabel:this.rotationText,value:this.symbolizer.rotation,listeners:{change:function(a,b){this.symbolizer.rotation=b;this.fireEvent("change",
this.symbolizer)},scope:this},width:100},this.markPanel,this.graphicPanel];this.addEvents("change");gxp.PointSymbolizer.superclass.initComponent.call(this)},updateGraphicDisplay:function(){this.external?(this.markPanel.collapse(),this.graphicPanel.expand()):(this.graphicPanel.collapse(),this.markPanel.expand())}});Ext.reg("gxp_pointsymbolizer",gxp.PointSymbolizer);Ext.namespace("gxp");
gxp.FilterBuilder=Ext.extend(Ext.Container,{builderTypeNames:["any","all","none","not all"],allowedBuilderTypes:null,allowBlank:!1,preComboText:"Match",postComboText:"of the following:",cls:"gxp-filterbuilder",builderType:null,childFilterContainer:null,customizeFilterOnInit:!0,addConditionText:"add condition",addGroupText:"add group",removeConditionText:"remove condition",allowGroups:!0,initComponent:function(){Ext.applyIf(this,{defaultBuilderType:gxp.FilterBuilder.ANY_OF});if(this.customizeFilterOnInit)this.filter=
this.customizeFilter(this.filter);this.builderType=this.getBuilderType();this.items=[{xtype:"container",layout:"form",defaults:{anchor:"100%"},hideLabels:!0,items:[{xtype:"compositefield",style:"padding-left: 2px",items:[{xtype:"label",style:"padding-top: 0.3em",text:this.preComboText},this.createBuilderTypeCombo(),{xtype:"label",style:"padding-top: 0.3em",text:this.postComboText}]},this.createChildFiltersPanel(),{xtype:"toolbar",items:this.createToolBar()}]}];this.addEvents("change");gxp.FilterBuilder.superclass.initComponent.call(this)},
createToolBar:function(){var a=[{text:this.addConditionText,iconCls:"add",handler:function(){this.addCondition()},scope:this}];this.allowGroups&&a.push({text:this.addGroupText,iconCls:"add",handler:function(){this.addCondition(!0)},scope:this});return a},getFilter:function(){var a;this.filter&&(a=this.filter.clone(),a instanceof OpenLayers.Filter.Logical&&(a=this.cleanFilter(a)));return a},cleanFilter:function(a){if(a instanceof OpenLayers.Filter.Logical)if(a.type!==OpenLayers.Filter.Logical.NOT&&
1===a.filters.length)a=this.cleanFilter(a.filters[0]);else for(var b,c=0,d=a.filters.length;c<d;++c)if(b=a.filters[c],b instanceof OpenLayers.Filter.Logical)if(b=this.cleanFilter(b))a.filters[c]=b;else{a=b;break}else{if(!b||null===b.type||null===b.property||null===b[a.type===OpenLayers.Filter.Comparison.BETWEEN?"lowerBoundary":"value"]){a=!1;break}}else if(!a||null===a.type||null===a.property||null===a[a.type===OpenLayers.Filter.Comparison.BETWEEN?"lowerBoundary":"value"])a=!1;return a},customizeFilter:function(a){if(a){var a=
this.cleanFilter(a),b,c,d;switch(a.type){case OpenLayers.Filter.Logical.AND:case OpenLayers.Filter.Logical.OR:if(!a.filters||0===a.filters.length)a.filters=[this.createDefaultFilter()];else for(c=0,d=a.filters.length;c<d;++c)b=a.filters[c],b instanceof OpenLayers.Filter.Logical&&(a.filters[c]=this.customizeFilter(b));a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR,filters:[a]});break;case OpenLayers.Filter.Logical.NOT:if(!a.filters||0===a.filters.length)a.filters=[new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR,
filters:[this.createDefaultFilter()]})];else if(b=a.filters[0],b instanceof OpenLayers.Filter.Logical)if(b.type!==OpenLayers.Filter.Logical.NOT){var e;for(c=0,d=b.filters.length;c<d;++c)e=b.filters[c],e instanceof OpenLayers.Filter.Logical&&(b.filters[c]=this.customizeFilter(e))}else a=b.filters&&0<b.filters.length?this.customizeFilter(b.filters[0]):this.wrapFilter(this.createDefaultFilter());else a.filters=[new OpenLayers.Filter.Logical({type:this.defaultBuilderType===gxp.FilterBuilder.NOT_ALL_OF?
OpenLayers.Filter.Logical.AND:OpenLayers.Filter.Logical.OR,filters:[b]})];break;default:a=this.wrapFilter(a)}}else a=this.wrapFilter(this.createDefaultFilter());return a},createDefaultFilter:function(){return new OpenLayers.Filter.Comparison},wrapFilter:function(a){return new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR,filters:[new OpenLayers.Filter.Logical({type:this.defaultBuilderType===gxp.FilterBuilder.ALL_OF?OpenLayers.Filter.Logical.AND:OpenLayers.Filter.Logical.OR,filters:[a]})]})},
addCondition:function(a){var b,c;a?(c="gxp_filterbuilder",b=this.wrapFilter(this.createDefaultFilter())):(c="gxp_filterfield",b=this.createDefaultFilter());this.childFilterContainer.add(this.newRow({xtype:c,filter:b,columnWidth:1,attributes:this.attributes,allowBlank:a?void 0:this.allowBlank,customizeFilterOnInit:a&&!1,listeners:{change:function(){this.fireEvent("change",this)},scope:this}}));this.filter.filters[0].filters.push(b);this.childFilterContainer.doLayout()},removeCondition:function(a,b){var c=
this.filter.filters[0].filters;1<c.length&&(c.remove(b),this.childFilterContainer.remove(a,!0));this.fireEvent("change",this)},createBuilderTypeCombo:function(){for(var a=this.allowedBuilderTypes||[gxp.FilterBuilder.ANY_OF,gxp.FilterBuilder.ALL_OF,gxp.FilterBuilder.NONE_OF],b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=[d,this.builderTypeNames[d]];return{xtype:"combo",store:new Ext.data.SimpleStore({data:c,fields:["value","name"]}),value:this.builderType,displayField:"name",valueField:"value",triggerAction:"all",
mode:"local",listeners:{select:function(a,b){this.changeBuilderType(b.get("value"));this.fireEvent("change",this)},scope:this},width:60}},changeBuilderType:function(a){if(a!==this.builderType){this.builderType=a;var b=this.filter.filters[0];switch(a){case gxp.FilterBuilder.ANY_OF:this.filter.type=OpenLayers.Filter.Logical.OR;b.type=OpenLayers.Filter.Logical.OR;break;case gxp.FilterBuilder.ALL_OF:this.filter.type=OpenLayers.Filter.Logical.OR;b.type=OpenLayers.Filter.Logical.AND;break;case gxp.FilterBuilder.NONE_OF:this.filter.type=
OpenLayers.Filter.Logical.NOT;b.type=OpenLayers.Filter.Logical.OR;break;case gxp.FilterBuilder.NOT_ALL_OF:this.filter.type=OpenLayers.Filter.Logical.NOT,b.type=OpenLayers.Filter.Logical.AND}}},createChildFiltersPanel:function(){this.childFilterContainer=new Ext.Container;for(var a=this.filter.filters[0].filters,b,c=0,d=a.length;c<d;++c){b=a[c];var e={xtype:"gxp_filterfield",allowBlank:this.allowBlank,columnWidth:1,filter:b,attributes:this.attributes,listeners:{change:function(){this.fireEvent("change",
this)},scope:this}};this.childFilterContainer.add(this.newRow(Ext.applyIf(b instanceof OpenLayers.Filter.Logical?{xtype:"gxp_filterbuilder"}:{xtype:"container",layout:"form",hideLabels:!0,items:e},e)))}return this.childFilterContainer},newRow:function(a){var b=new Ext.Container({layout:"column",items:[{xtype:"container",width:28,height:26,style:"padding-left: 2px",items:{xtype:"button",tooltip:this.removeConditionText,iconCls:"delete",handler:function(){this.removeCondition(b,a.filter)},scope:this}},
a]});return b},getBuilderType:function(){var a=this.defaultBuilderType;if(this.filter){var b=this.filter.filters[0];if(this.filter.type===OpenLayers.Filter.Logical.NOT)switch(b.type){case OpenLayers.Filter.Logical.OR:a=gxp.FilterBuilder.NONE_OF;break;case OpenLayers.Filter.Logical.AND:a=gxp.FilterBuilder.NOT_ALL_OF}else switch(b.type){case OpenLayers.Filter.Logical.OR:a=gxp.FilterBuilder.ANY_OF;break;case OpenLayers.Filter.Logical.AND:a=gxp.FilterBuilder.ALL_OF}}return a}});
gxp.FilterBuilder.ANY_OF=0;gxp.FilterBuilder.ALL_OF=1;gxp.FilterBuilder.NONE_OF=2;gxp.FilterBuilder.NOT_ALL_OF=3;Ext.reg("gxp_filterbuilder",gxp.FilterBuilder);Ext.namespace("gxp.form");
gxp.form.FilterField=Ext.extend(Ext.form.CompositeField,{lowerBoundaryTip:"lower boundary",upperBoundaryTip:"upper boundary",filter:null,attributes:null,attributesComboConfig:null,initComponent:function(){if(!this.filter)this.filter=this.createDefaultFilter();var a="remote",b=new GeoExt.data.AttributeStore;if(this.attributes)0!=this.attributes.getCount()?(a="local",this.attributes.each(function(a){/gml:((Multi)?(Point|Line|Polygon|Curve|Surface|Geometry)).*/.exec(a.get("type"))||b.add([a])})):b=this.attributes;
a={xtype:"combo",store:b,editable:"local"==a,typeAhead:!0,forceSelection:!0,mode:a,triggerAction:"all",allowBlank:this.allowBlank,displayField:"name",valueField:"name",value:this.filter.property,listeners:{select:function(a,b){this.items.get(1).enable();this.filter.property=b.get("name");this.fireEvent("change",this.filter,this)},blur:function(a){var b=a.store.findExact("name",a.getValue());-1!=b?a.fireEvent("select",a,a.store.getAt(b)):null!=a.startValue&&a.setValue(a.startValue)},scope:this},width:120};
this.attributesComboConfig=this.attributesComboConfig||{};Ext.applyIf(this.attributesComboConfig,a);this.items=this.createFilterItems();this.addEvents("change");gxp.form.FilterField.superclass.initComponent.call(this)},validateValue:function(){return this.filter.type===OpenLayers.Filter.Comparison.BETWEEN?null!==this.filter.property&&null!==this.filter.upperBoundary&&null!==this.filter.lowerBoundary:null!==this.filter.property&&null!==this.filter.value&&null!==this.filter.type},createDefaultFilter:function(){return new OpenLayers.Filter.Comparison},
createFilterItems:function(){var a=this.filter.type===OpenLayers.Filter.Comparison.BETWEEN;return[this.attributesComboConfig,Ext.applyIf({xtype:"gxp_comparisoncombo",disabled:null==this.filter.property,allowBlank:this.allowBlank,value:this.filter.type,listeners:{select:function(a,c){this.items.get(2).enable();this.items.get(3).enable();this.items.get(4).enable();this.setFilterType(c.get("value"));this.fireEvent("change",this.filter,this)},scope:this}},this.comparisonComboConfig),{xtype:"textfield",
disabled:null==this.filter.type,hidden:a,value:this.filter.value,width:50,grow:!0,growMin:50,anchor:"100%",allowBlank:this.allowBlank,listeners:{change:function(a,c){this.filter.value=c;this.fireEvent("change",this.filter,this)},scope:this}},{xtype:"textfield",disabled:null==this.filter.type,hidden:!a,value:this.filter.lowerBoundary,tooltip:this.lowerBoundaryTip,grow:!0,growMin:30,anchor:"100%",allowBlank:this.allowBlank,listeners:{change:function(a,c){this.filter.lowerBoundary=c;this.fireEvent("change",
this.filter,this)},render:function(a){Ext.QuickTips.register({target:a.getEl(),text:this.lowerBoundaryTip})},autosize:function(a,c){a.setWidth(c);a.ownerCt.doLayout()},scope:this}},{xtype:"textfield",disabled:null==this.filter.type,hidden:!a,grow:!0,growMin:30,value:this.filter.upperBoundary,allowBlank:this.allowBlank,listeners:{change:function(a,c){this.filter.upperBoundary=c;this.fireEvent("change",this.filter,this)},render:function(a){Ext.QuickTips.register({target:a.getEl(),text:this.upperBoundaryTip})},
scope:this}}]},setFilterType:function(a){this.filter.type=a;a===OpenLayers.Filter.Comparison.BETWEEN?(this.items.get(2).hide(),this.items.get(3).show(),this.items.get(4).show()):(this.items.get(2).show(),this.items.get(3).hide(),this.items.get(4).hide());this.doLayout()}});Ext.reg("gxp_filterfield",gxp.form.FilterField);Ext.namespace("gxp.form");
gxp.form.ComparisonComboBox=Ext.extend(Ext.form.ComboBox,{allowedTypes:[[OpenLayers.Filter.Comparison.EQUAL_TO,"="],[OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<>"],[OpenLayers.Filter.Comparison.LESS_THAN,"<"],[OpenLayers.Filter.Comparison.GREATER_THAN,">"],[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,"<="],[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,">="],[OpenLayers.Filter.Comparison.LIKE,"like"],[OpenLayers.Filter.Comparison.BETWEEN,"between"]],allowBlank:!1,mode:"local",typeAhead:!0,
forceSelection:!0,triggerAction:"all",width:50,editable:!0,initComponent:function(){var a={displayField:"name",valueField:"value",store:new Ext.data.SimpleStore({data:this.allowedTypes,fields:["value","name"]}),value:void 0===this.value?this.allowedTypes[0][0]:this.value,listeners:{blur:function(){var a=this.store.findExact("value",this.getValue());-1!=a?this.fireEvent("select",this,this.store.getAt(a)):null!=this.startValue&&this.setValue(this.startValue)}}};Ext.applyIf(this,a);gxp.form.ComparisonComboBox.superclass.initComponent.call(this)}});
Ext.reg("gxp_comparisoncombo",gxp.form.ComparisonComboBox);Ext.namespace("gxp");
gxp.StylePropertiesDialog=Ext.extend(Ext.Container,{titleText:"General",nameFieldText:"Name",titleFieldText:"Title",abstractFieldText:"Abstract",userStyle:null,initComponent:function(){Ext.applyIf(this,{layout:"form",items:[{xtype:"fieldset",title:this.titleText,labelWidth:75,defaults:{xtype:"textfield",anchor:"100%",listeners:{change:function(a,b){this.userStyle[a.name]=b;this.fireEvent("change",this,this.userStyle)},scope:this}},items:[{xtype:this.initialConfig.nameEditable?"textfield":"displayfield",
fieldLabel:this.nameFieldText,name:"name",value:this.userStyle.name,maskRe:/[A-Za-z0-9_]/},{fieldLabel:this.titleFieldText,name:"title",value:this.userStyle.title},{xtype:"textarea",fieldLabel:this.abstractFieldText,name:"description",value:this.userStyle.description}]}]});this.addEvents("change");gxp.StylePropertiesDialog.superclass.initComponent.apply(this,arguments)}});Ext.reg("gxp_stylepropertiesdialog",gxp.StylePropertiesDialog);Ext.namespace("gxp");
gxp.GoogleEarthPanel=Ext.extend(Ext.Panel,{HORIZONTAL_FIELD_OF_VIEW:30*Math.PI/180,map:null,mapPanel:null,layers:null,earth:null,projection:null,layerCache:null,initComponent:function(){this.addEvents("beforeadd","pluginfailure","pluginready");gxp.GoogleEarthPanel.superclass.initComponent.call(this);var a=this.mapPanel;a&&!(a instanceof GeoExt.MapPanel)&&(a=Ext.getCmp(a));if(!a)throw Error("Could not get map panel from config: "+this.mapPanel);this.map=a.map;this.layers=a.layers;this.projection=new OpenLayers.Projection("EPSG:4326");
this.on("render",this.onRenderEvent,this);this.on("show",this.onShowEvent,this);this.on("hide",function(){null!=this.earth&&this.updateMap();this.body.dom.innerHTML="";this.earth=null},this)},onEarthReady:function(a){this.earth=a;void 0===this.flyToSpeed?this.earth.getOptions().setFlyToSpeed(this.earth.SPEED_TELEPORT):null!==this.flyToSpeed&&this.earth.getOptions().setFlyToSpeed(this.flyToSpeed);this.resetCamera();this.setExtent(this.map.getExtent());this.earth.getNavigationControl().setVisibility(this.earth.VISIBILITY_SHOW);
a=this.earth.getNavigationControl().getScreenXY();a.setXUnits(this.earth.UNITS_PIXELS);a.setYUnits(this.earth.UNITS_INSET_PIXELS);this.earth.getWindow().setVisibility(!0);this.layers.each(function(a){this.addLayer(a)},this);this.layers.on("remove",this.updateLayers,this);this.layers.on("update",this.updateLayers,this);this.layers.on("add",this.updateLayers,this);this.on("beforedestroy",function(){this.layers.un("remove",this.updateLayers,this);this.layers.un("update",this.updateLayers,this);this.layers.un("add",
this.updateLayers,this)},this);this.fireEvent("pluginready",this.earth)},onRenderEvent:function(){var a=this.ownerCt&&this.ownerCt.layout instanceof Ext.layout.CardLayout;if(!this.hidden&&!a)this.onShowEvent()},onShowEvent:function(){if(this.rendered)this.layerCache={},google.earth.createInstance(this.body.dom,this.onEarthReady.createDelegate(this),function(a){this.fireEvent("pluginfailure",this,a)}.createDelegate(this))},updateLayers:function(){if(this.earth){for(var a=this.earth.getFeatures(),b=
a.getFirstChild();null!=b;)a.removeChild(b),b=a.getFirstChild();this.layers.each(function(a){this.addLayer(a)},this)}},addLayer:function(a,b){var c=a.getLayer(),d=c&&c.url;if(this.earth&&c instanceof OpenLayers.Layer.WMS&&"string"==typeof d&&!1!==this.fireEvent("beforeadd",a)){var e=c.id;if(this.layerCache[e])d=this.layerCache[e];else{var g=this.earth.createLink("kl_"+e),d=d.replace(/\?.*/,""),f=c.params;g.setHref(d+("/kml?mode=refresh&layers="+f.LAYERS+"&styles="+f.STYLES));d=this.earth.createNetworkLink("nl_"+
e);d.setName(e);d.set(g,!1,!1);this.layerCache[e]=d}d.setVisibility(c.getVisibility());void 0!==b&&b<this.earth.getFeatures().getChildNodes().getLength()?this.earth.getFeatures().insertBefore(this.earth.getFeatures().getChildNodes().item(b)):this.earth.getFeatures().appendChild(d)}},setExtent:function(a){var a=a.transform(this.map.getProjectionObject(),this.projection),b=a.getCenterLonLat(),a=this.getExtentWidth(a)/(2*Math.tan(this.HORIZONTAL_FIELD_OF_VIEW)),c=this.earth.getView().copyAsLookAt(this.earth.ALTITUDE_RELATIVE_TO_GROUND);
c.setLatitude(b.lat);c.setLongitude(b.lon);c.setRange(a);this.earth.getView().setAbstractView(c)},resetCamera:function(){var a=this.earth.getView().copyAsCamera(this.earth.ALTITUDE_RELATIVE_TO_GROUND);a.setRoll(0);a.setHeading(0);a.setTilt(0);this.earth.getView().setAbstractView(a)},getExtent:function(){var a=this.earth.getView().getViewportGlobeBounds();return new OpenLayers.Bounds(a.getWest(),a.getSouth(),a.getEast(),a.getNorth())},updateMap:function(){var a=this.earth.getView().copyAsLookAt(this.earth.ALTITUDE_RELATIVE_TO_GROUND),
b=this.reprojectToMap(new OpenLayers.LonLat(a.getLongitude(),a.getLatitude()));this.map.zoomToExtent(this.reprojectToMap(this.getExtent()),!0);this.map.setCenter(b);var a=2*a.getRange()*Math.tan(this.HORIZONTAL_FIELD_OF_VIEW),c=this.map.getResolutionForZoom(this.map.getZoom()+1),d=this.map.getExtent(),b=new OpenLayers.Bounds(b.lon-this.map.getSize().w/2*c,b.lat+this.map.getSize().h/2*c,b.lon+this.map.getSize().w/2*c,b.lat-this.map.getSize().h/2*c),d=Math.abs(this.getExtentWidth(d)-a);Math.abs(this.getExtentWidth(b)-
a)<d&&this.map.zoomTo(this.map.getZoom()+1)},getExtentWidth:function(a){var b=a.getCenterLonLat(),c=new OpenLayers.LonLat(a.left,b.lat),a=new OpenLayers.LonLat(a.right,b.lat);return 1E3*OpenLayers.Util.distVincenty(c,a)},reprojectToGE:function(a){return a.clone().transform(this.map.getProjectionObject(),this.projection)},reprojectToMap:function(a){return a.clone().transform(this.projection,this.map.getProjectionObject())}});Ext.reg("gxp_googleearthpanel",gxp.GoogleEarthPanel);Ext.namespace("gxp");
gxp.Viewer=Ext.extend(Ext.util.Observable,{defaultToolType:"gxp_tool",tools:null,selectedLayer:null,constructor:function(a){this.addEvents("ready","portalready","beforelayerselectionchange","layerselectionchange","featureedit","authorizationchange");Ext.apply(this,{layerSources:{},portalItems:[]});this.createLayerRecordQueue=[];(a.loadConfig||this.loadConfig).call(this,a,this.applyConfig);gxp.Viewer.superclass.constructor.apply(this,arguments)},selectLayer:function(a){var a=a||null,b=!1;if(!1!==this.fireEvent("beforelayerselectionchange",
a))b=!0,this.selectedLayer&&this.selectedLayer.set("selected",!1),(this.selectedLayer=a)&&this.selectedLayer.set("selected",!0),this.fireEvent("layerselectionchange",a);return b},loadConfig:function(a){this.applyConfig(a)},applyConfig:function(a){this.initialConfig=Ext.apply({},a);Ext.apply(this,this.initialConfig);this.load()},load:function(){if(this.proxy)OpenLayers.ProxyHost=this.proxy;this.initMapPanel();this.initTools();var a=[],b;for(b in this.sources)a.push(this.createSourceLoader(b));a.push(function(a){Ext.onReady(function(){this.initPortal();
a()},this)});gxp.util.dispatch(a,this.activate,this)},createSourceLoader:function(a){return function(b){var c=this.sources[a];c.projection=this.initialConfig.map.projection;this.addLayerSource({id:a,config:c,callback:b,fallback:function(){b()},scope:this})}},addLayerSource:function(a){var b=a.id||Ext.id(null,"gxp-source-"),c,d=a.config;d.id=b;try{c=Ext.ComponentMgr.createPlugin(d,this.defaultSourceType)}catch(e){throw Error("Could not create new source plugin with ptype: "+a.config.ptype);}c.on({ready:{fn:function(){(a.callback||
Ext.emptyFn).call(a.scope||this,b)},scope:this,single:!0},failure:{fn:function(){var c=a.fallback||Ext.emptyFn;delete this.layerSources[b];c.apply(a.scope||this,arguments)},scope:this,single:!0}});this.layerSources[b]=c;c.init(this);return c},initMapPanel:function(){var a=Ext.apply({},this.initialConfig.map),b={};if(this.initialConfig.map)for(var c="theme,controls,resolutions,projection,units,maxExtent,restrictedExtent,maxResolution,numZoomLevels,panMethod".split(","),d,e=c.length-1;0<=e;--e)d=c[e],
d in a&&(b[d]=a[d],delete a[d]);this.mapPanel=Ext.ComponentMgr.create(Ext.applyIf({xtype:a.xtype||"gx_mappanel",map:Ext.applyIf({theme:b.theme||null,controls:b.controls||[new OpenLayers.Control.Navigation({zoomWheelOptions:{interval:250}}),new OpenLayers.Control.PanPanel,new OpenLayers.Control.ZoomPanel,new OpenLayers.Control.Attribution],maxExtent:b.maxExtent&&OpenLayers.Bounds.fromArray(b.maxExtent),restrictedExtent:b.restrictedExtent&&OpenLayers.Bounds.fromArray(b.restrictedExtent),numZoomLevels:b.numZoomLevels||
20},b),center:a.center&&new OpenLayers.LonLat(a.center[0],a.center[1]),resolutions:a.resolutions,forceInitialExtent:!0,layers:null,items:this.mapItems,plugins:this.mapPlugins,tbar:a.tbar||new Ext.Toolbar({hidden:!0,listeners:{show:function(){this.mapPanel.map.updateSize()},scope:this}})},a));this.mapPanel.layers.on({add:function(a,b){for(var c,d=b.length-1;0<=d;d--)c=b[d],!0===c.get("selected")&&this.selectLayer(c)},remove:function(a,b){!0===b.get("selected")&&this.selectLayer()},scope:this})},initTools:function(){this.tools=
{};if(this.initialConfig.tools&&0<this.initialConfig.tools.length)for(var a,b=0,c=this.initialConfig.tools.length;b<c;b++){try{a=Ext.ComponentMgr.createPlugin(this.initialConfig.tools[b],this.defaultToolType)}catch(d){throw Error("Could not create tool plugin with ptype: "+this.initialConfig.tools[b].ptype);}a.init(this)}},initPortal:function(){var a=this.portalConfig||{};if(0===this.portalItems.length)this.mapPanel.region="center",this.portalItems.push(this.mapPanel);this.portal=Ext.ComponentMgr.create(Ext.applyIf(a,
{layout:"fit",hideBorders:!0,items:{layout:"border",deferredRender:!1,items:this.portalItems}}),a.renderTo?"panel":"viewport");this.fireEvent("portalready")},activate:function(){Ext.QuickTips.init();this.addLayers();this.checkLayerRecordQueue();this.fireEvent("ready")},addLayers:function(){var a=this.initialConfig.map;if(a&&a.layers){for(var b,c,d=[],e=[],g=0;g<a.layers.length;++g)if(b=a.layers[g],c=this.layerSources[b.source])(b=c.createLayerRecord(b))&&("background"===b.get("group")?d.push(b):e.push(b));
d.sort(function(a,b){return a.getLayer().visibility<b.getLayer().visibility});a=this.mapPanel;d=d.concat(e);d.length&&a.layers.add(d)}},getLayerRecordFromMap:function(a){var b=null;this.mapPanel&&this.mapPanel.layers.each(function(c){if(c.get("source")==a.source&&c.get("name")==a.name)return b=c,!1});return b},createLayerRecord:function(a,b,c){this.createLayerRecordQueue.push({config:a,callback:b,scope:c});this.checkLayerRecordQueue()},checkLayerRecordQueue:function(){for(var a,b,c,d,e=[],g=0,f=this.createLayerRecordQueue.length;g<
f;++g)d=!1,a=this.createLayerRecordQueue[g],b=a.config.source,b in this.layerSources&&(b=this.layerSources[b],(c=b.createLayerRecord(a.config))?(function(a,b){window.setTimeout(function(){a.callback.call(a.scope,b)},0)}(a,c),d=!0):b.lazy&&b.store.load({callback:this.checkLayerRecordQueue,scope:this})),d||e.push(a);this.createLayerRecordQueue=e},getSource:function(a){return a&&this.layerSources[a.get("source")]},getState:function(){var a=Ext.apply({},this.initialConfig),b=this.mapPanel.map.getCenter();
Ext.apply(a.map,{center:[b.lon,b.lat],zoom:this.mapPanel.map.zoom,layers:[]});var c={};this.mapPanel.layers.each(function(b){if(b.getLayer().displayInLayerSwitcher){var d=b.get("source"),e=this.layerSources[d];if(!e)throw Error("Could not find source for layer '"+b.get("name")+"'");a.map.layers.push(e.getConfigForRecord(b));c[d]||(c[d]=e.getState())}},this);Ext.apply(this.sources,c);if(a.portalItems)if(a.portalConfig&&a.portalConfig.items&&a.portalConfig.items.length)for(var b=a.portalItems,d=0,e=
b.length;d<e;d++){var g=b[d];-1==a.portalConfig.items.indexOf(g)&&a.portalConfig.items.push(g)}else if(a.portalItems&&a.portalItems.length)!a.portalConfig&&(a.portalConfig={}),a.portalConfig.items=a.portalItems;a.tools=[];Ext.iterate(this.tools,function(b,c){a.tools.push(c.getState())});return a},isAuthorized:function(a){return!this.authorizedRoles||-1!==this.authorizedRoles.indexOf(a||"ROLE_ADMINISTRATOR")},setAuthorizedRoles:function(a){this.authorizedRoles=a;this.fireEvent("authorizationchange")},
isAuthenticated:function(){return!this.authorizedRoles||0<this.authorizedRoles.length},destroy:function(){this.mapPanel.destroy();this.portal&&this.portal.destroy()}});(function(){OpenLayers.DOTS_PER_INCH=25.4/0.28})();Ext.namespace("gxp");
gxp.EmbedMapDialog=Ext.extend(Ext.Container,{url:null,url:null,publishMessage:"Your map is ready to be published to the web! Simply copy the following HTML to embed the map in your website:",heightLabel:"Height",widthLabel:"Width",mapSizeLabel:"Map Size",miniSizeLabel:"Mini",smallSizeLabel:"Small",premiumSizeLabel:"Premium",largeSizeLabel:"Large",snippetArea:null,heightField:null,widthField:null,initComponent:function(){Ext.apply(this,this.getConfig());gxp.EmbedMapDialog.superclass.initComponent.call(this)},
getIframeHTML:function(){return this.snippetArea.getValue()},updateSnippet:function(){this.snippetArea.setValue('<iframe style="border: none;" height="'+this.heightField.getValue()+'" width="'+this.widthField.getValue()+'" src="'+gxp.util.getAbsoluteUrl(this.url)+'"></iframe>');!0===this.snippetArea.isVisible()&&this.snippetArea.focus(!0,100)},getConfig:function(){this.snippetArea=new Ext.form.TextArea({height:70,selectOnFocus:!0,readOnly:!0});var a={change:this.updateSnippet,specialkey:function(a,
c){c.getKey()==c.ENTER&&this.updateSnippet()},scope:this};this.heightField=new Ext.form.NumberField({width:50,value:400,listeners:a});this.widthField=new Ext.form.NumberField({width:50,value:600,listeners:a});return{border:!1,defaults:{border:!1,cls:"gxp-export-section",xtype:"container",layout:"fit"},items:[{items:[new Ext.Container({layout:"column",defaults:{border:!1,xtype:"box"},items:[{autoEl:{cls:"gxp-field-label",html:this.mapSizeLabel}},new Ext.form.ComboBox({editable:!1,width:75,store:new Ext.data.SimpleStore({fields:["name",
"height","width"],data:[[this.miniSizeLabel,100,100],[this.smallSizeLabel,200,300],[this.largeSizeLabel,400,600],[this.premiumSizeLabel,600,800]]}),triggerAction:"all",displayField:"name",value:this.largeSizeLabel,mode:"local",listeners:{select:function(a,c){this.widthField.setValue(c.get("width"));this.heightField.setValue(c.get("height"));this.updateSnippet()},scope:this}}),{autoEl:{cls:"gxp-field-label",html:this.heightLabel}},this.heightField,{autoEl:{cls:"gxp-field-label",html:this.widthLabel}},
this.widthField]})]},{xtype:"box",autoEl:{tag:"p",html:this.publishMessage}},{items:[this.snippetArea]}],listeners:{afterrender:this.updateSnippet,scope:this}}}});Ext.reg("gxp_embedmapdialog",gxp.EmbedMapDialog);Ext.namespace("gxp.menu");
gxp.menu.LayerMenu=Ext.extend(Ext.menu.Menu,{layerText:"Layer",layers:null,initComponent:function(){gxp.menu.LayerMenu.superclass.initComponent.apply(this,arguments);this.layers.on("add",this.onLayerAdd,this);this.onLayerAdd()},onRender:function(a,b){gxp.menu.LayerMenu.superclass.onRender.apply(this,arguments)},beforeDestroy:function(){this.layers&&this.layers.on&&this.layers.un("add",this.onLayerAdd,this);delete this.layers;gxp.menu.LayerMenu.superclass.beforeDestroy.apply(this,arguments)},onLayerAdd:function(){this.removeAll();
this.add({iconCls:"gxp-layer-visibility",text:this.layerText,canActivate:!1},"-");this.layers.each(function(a){if(a.getLayer().displayInLayerSwitcher){var b=new Ext.menu.CheckItem({text:a.get("title"),checked:a.getLayer().getVisibility(),group:a.get("group"),listeners:{checkchange:function(b,d){a.getLayer().setVisibility(d)}}});2<this.items.getCount()?this.insert(2,b):this.add(b)}},this)}});Ext.reg("gxp_layermenu",gxp.menu.LayerMenu);
GeoExt.Lang.add("es",{"gxp.menu.LayerMenu.prototype":{layerText:"Capa"},"gxp.plugins.AddLayers.prototype":{addActionMenuText:"A\u00f1adir Capas",addActionTip:"A\u00f1adir Capas",addServerText:"A\u00f1adir servidor",addButtonText:"A\u00f1adir Capas",untitledText:"Sin T\u00edtulo",addLayerSourceErrorText:"Error obteniendo capabilities de WMS ({msg}).\nPor favor, compruebe la URL y vuelva a intentarlo.",availableLayersText:"Capas disponibles",expanderTemplateText:"<p><b>Resumen:</b> {abstract}</p>",
panelTitleText:"T\u00edtulo",layerSelectionText:"Ver datos disponibles de:",doneText:"Hecho",uploadText:"Subir Datos"},"gxp.plugins.BingSource.prototype":{title:"Capas Bing",roadTitle:"Bing Carreteras",aerialTitle:"Bing Foto A\u00e9rea",labeledAerialTitle:"Bing H\u00edbrido"},"gxp.plugins.FeatureEditor.prototype":{createFeatureActionTip:"Crear nuevo elemento",editFeatureActionTip:"Editar elemento existente"},"gxp.plugins.FeatureGrid.prototype":{displayFeatureText:"Mostrar en el mapa",firstPageTip:"Primera p\u00e1gina",
previousPageTip:"P\u00e1gina anterior",zoomPageExtentTip:"Zoom a la extensi\u00f3n de la p\u00e1gina",nextPageTip:"P\u00e1gina siguiente",nextPageTip:"\u00daltima p\u00e1gina",totalMsg:"Total: {0} records"},"gxp.plugins.GoogleEarth.prototype":{apiKeyPrompt:"Please enter the Google API key for ",menuText:"Vista 3D",tooltip:"Vista 3D"},"gxp.plugins.GoogleSource.prototype":{title:"Capas Google",roadmapAbstract:"Mostrar Callejero",satelliteAbstract:"Mostrar im\u00e1genes a\u00e9reas",hybridAbstract:"Mostrar im\u00e1genes con nombres de calle",
terrainAbstract:"Mostrar callejero con terreno"},"gxp.plugins.LayerProperties.prototype":{menuText:"Propiedades de la capa",toolTip:"Propiedades de la capa"},"gxp.plugins.LayerTree.prototype":{rootNodeText:"Capas",overlayNodeText:"Capas superpuestas",baseNodeText:"Capa base"},"gxp.plugins.Legend.prototype":{menuText:"Leyenda",tooltip:"Leyenda"},"gxp.plugins.LoadingIndicator.prototype":{loadingMapMessage:"Loading Map..."},"gxp.plugins.MapBoxSource.prototype":{title:"MapBox Layers",blueMarbleTopoBathyJanTitle:"Blue Marble Topography & Bathymetry (January)",
blueMarbleTopoBathyJulTitle:"Blue Marble Topography & Bathymetry (July)",blueMarbleTopoJanTitle:"Blue Marble Topography (January)",blueMarbleTopoJulTitle:"Blue Marble Topography (July)",controlRoomTitle:"Control Room",geographyClassTitle:"Geography Class",naturalEarthHypsoTitle:"Natural Earth Hypsometric",naturalEarthHypsoBathyTitle:"Natural Earth Hypsometric & Bathymetry",naturalEarth1Title:"Natural Earth I",naturalEarth2Title:"Natural Earth II",worldDarkTitle:"World Dark",worldLightTitle:"World Light",
worldPrintTitle:"World Print"},"gxp.plugins.Measure.prototype":{lengthMenuText:"Longitud",areaMenuText:"\u00c1rea",lengthTooltip:"Medir Longitud",areaTooltip:"Medir \u00c1rea",measureTooltip:"Medir"},"gxp.plugins.Navigation.prototype":{menuText:"Desplazar mapa",tooltip:"Desplazar mapa"},"gxp.plugins.NavigationHistory.prototype":{previousMenuText:"Vista anterior",nextMenuText:"Vista siguiente",previousTooltip:"Vista anterior",nextTooltip:"Vista siguiente"},"gxp.plugins.OSMSource.prototype":{title:"Capas OpenStreetMap",
mapnikAttribution:"Datos CC-By-SA de <a href='http://openstreetmap.org/'>OpenStreetMap</a>",osmarenderAttribution:"Datos CC-By-SA de <a href='http://openstreetmap.org/'>OpenStreetMap</a>"},"gxp.plugins.Print.prototype":{menuText:"Imprimir mapa",tooltip:"Imprimir mapa",previewText:"Vista previa",notAllNotPrintableText:"No se pueden imprimir todas las capas",nonePrintableText:"No se puede imprimir ninguna de las capas del mapa"},"gxp.plugins.MapQuestSource.prototype":{title:"Capas MapQuest",osmAttribution:"Teselas cortes\u00eda de <a href='http://open.mapquest.co.uk/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png' border='0'>",
osmTitle:"MapQuest OpenStreetMap",naipAttribution:"Teselas cortes\u00eda de <a href='http://open.mapquest.co.uk/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png' border='0'>",naipTitle:"MapQuest Im\u00e1genes"},"gxp.plugins.QueryForm.prototype":{queryActionText:"Consultar",queryMenuText:"Consultar capa",queryActionTip:"Consultar la capa seleccionada",queryByLocationText:"Consultar por localizaci\u00f3n",currentTextText:"Extensi\u00f3n actual",queryByAttributesText:"Consultar por atributos",
queryMsg:"Consultando...",cancelButtonText:"Cancelar",noFeaturesTitle:"Sin coincidencias",noFeaturesMessage:"Su consulta no produjo resultados."},"gxp.plugins.RemoveLayer.prototype":{removeMenuText:"Eliminar Capa",removeActionTip:"Eliminar Capa"},"gxp.plugins.Styler.prototype":{menuText:"Editar estilos",tooltip:"Gestionar estilos de capa"},"gxp.plugins.WMSGetFeatureInfo.prototype":{infoActionTip:"Consultar elementos",popupTitle:"Informaci\u00f3n de elementos"},"gxp.plugins.Zoom.prototype":{zoomInMenuText:"Acercar",
zoomOutMenuText:"Alejar",zoomInTooltip:"Acercar",zoomOutTooltip:"Alejar"},"gxp.plugins.ZoomToExtent.prototype":{menuText:"Ver extensi\u00f3n total",tooltip:"Ver extensi\u00f3n total"},"gxp.plugins.ZoomToDataExtent.prototype":{menuText:"Ver toda la capa",tooltip:"Ver toda la capa"},"gxp.plugins.ZoomToLayerExtent.prototype":{menuText:"Ver toda la la capa",tooltip:"Ver toda la capa"},"gxp.plugins.ZoomToSelectedFeatures.prototype":{menuText:"Ver los elementos seleccionados",tooltip:"Ver los elementos seleccionados"},
"gxp.FeatureEditPopup.prototype":{closeMsgTitle:"\u00bfDesea guardar los cambios?",closeMsg:"Los cambios en este elemento no se han guardado. \u00bfDesea guardar los cambios?",deleteMsgTitle:"\u00bfDesea borrar el elemento?",deleteMsg:"\u00bfEst\u00e1 seguro de querer borrar este elemento?",editButtonText:"Editar",editButtonTooltip:"Hacer editable este elemento",deleteButtonText:"Borrar",deleteButtonTooltip:"Borrar este elemento",cancelButtonText:"Cancelar",cancelButtonTooltip:"Dejar de editar, descartar cambios",
saveButtonText:"Guardar",saveButtonTooltip:"Guardar cambios"},"gxp.FillSymbolizer.prototype":{fillText:"Relleno",colorText:"Color",opacityText:"Opacidad"},"gxp.FilterBuilder.prototype":{builderTypeNames:["cualquiera de","todas","ninguna de","no todas"],preComboText:"Cumplir",postComboText:"las condiciones siguientes:",addConditionText:"a\u00f1adir condici\u00f3n",addGroupText:"a\u00f1adir grupo",removeConditionText:"eliminar condici\u00f3n"},"gxp.grid.CapabilitiesGrid.prototype":{nameHeaderText:"Nombre",
titleHeaderText:"T\u00edtulo",queryableHeaderText:"Consultable",layerSelectionLabel:"Ver datos disponibles de:",layerAdditionLabel:"o a\u00f1adir otro servidor.",expanderTemplateText:"<p><b>Resumen:</b> {abstract}</p>"},"gxp.PointSymbolizer.prototype":{graphicCircleText:"c\u00edrculo",graphicSquareText:"cuadrado",graphicTriangleText:"tri\u00e1ngulo",graphicStarText:"estrella",graphicCrossText:"cruz",graphicXText:"x",graphicExternalText:"externo",urlText:"URL",opacityText:"opacidad",symbolText:"S\u00edmbolo",
sizeText:"Tama\u00f1o",rotationText:"Giro"},"gxp.QueryPanel.prototype":{queryByLocationText:"Consultar por localizaci\u00f3n",currentTextText:"Extensi\u00f3n actual",queryByAttributesText:"Consultar por atributo",layerText:"Capa"},"gxp.RulePanel.prototype":{scaleSliderTemplate:"{scaleType} Escala 1:{scale}",labelFeaturesText:"Etiquetado de elementos",labelsText:"Etiquetas",basicText:"B\u00e1sico",advancedText:"Advanzado",limitByScaleText:"Limitar por escala",limitByConditionText:"Limitar por condici\u00f3n",
symbolText:"S\u00edmbolo",nameText:"Nombre"},"gxp.ScaleLimitPanel.prototype":{scaleSliderTemplate:"{scaleType} Escala 1:{scale}",minScaleLimitText:"Escala m\u00ednima",maxScaleLimitText:"Escala m\u00e1xima"},"gxp.StrokeSymbolizer.prototype":{solidStrokeName:"continuo",dashStrokeName:"guiones",dotStrokeName:"puntos",titleText:"Trazo",styleText:"Estilo",colorText:"Color",widthText:"Ancho",opacityText:"Opacidad"},"gxp.StylePropertiesDialog.prototype":{titleText:"General",nameFieldText:"Nombre",titleFieldText:"T\u00edtulo",
abstractFieldText:"Resumen"},"gxp.TextSymbolizer.prototype":{labelValuesText:"Etiquetado",haloText:"Halo",sizeText:"Tama\u00f1o"},"gxp.WMSLayerPanel.prototype":{aboutText:"Acerca de",titleText:"T\u00edtulo",nameText:"Nombre",descriptionText:"Descripci\u00f3n",displayText:"Mostrar",opacityText:"Opacidad",formatText:"Formato",transparentText:"Transparente",cacheText:"Cach\u00e9",cacheFieldText:"Usar la versi\u00f3n en cach\u00e9",stylesText:"Estilos",infoFormatText:"Info format",infoFormatEmptyText:"Select a format"},
"gxp.EmbedMapDialog.prototype":{publishMessage:"\u00a1Ya puede publicar su mapa en otras webs! Simplemente copie el siguiente c\u00f3digo HTML en el lugar donde desee incrustarlo:",heightLabel:"Alto",widthLabel:"Ancho",mapSizeLabel:"Tama\u00f1o",miniSizeLabel:"M\u00ednimo",smallSizeLabel:"Peque\u00f1o",premiumSizeLabel:"Premium",largeSizeLabel:"Grande"},"gxp.WMSStylesDialog.prototype":{addStyleText:"A\u00f1adir",addStyleTip:"A\u00f1adir un estilo",chooseStyleText:"Escoger estilo",deleteStyleText:"Quitar",
deleteStyleTip:"Borrar el estilo seleccionado",editStyleText:"Cambiar",editStyleTip:"Editar el estilo seleccionado",duplicateStyleText:"Clonar",duplicateStyleTip:"Duplicar el estilo seleccionado",addRuleText:"A\u00f1adir",addRuleTip:"A\u00f1adir una regla",newRuleText:"Nueva regla",deleteRuleText:"Quitar",deleteRuleTip:"Borrar la regla seleccionada",editRuleText:"Cambiar",editRuleTip:"Editar la regla seleccionada",duplicateRuleText:"Duplicar",duplicateRuleTip:"Duplicar la regla seleccionada",cancelText:"Cancelar",
saveText:"Guardar",styleWindowTitle:"Estilo: {0}",ruleWindowTitle:"Regla: {0}",stylesFieldsetTitle:"Estilos",rulesFieldsetTitle:"Reglas"},"gxp.LayerUploadPanel.prototype":{titleLabel:"T\u00edtulo",titleEmptyText:"T\u00edtulo de la capa",abstractLabel:"Descripci\u00f3n",abstractEmptyText:"Descripci\u00f3n de la capa",fileLabel:"Datos",fieldEmptyText:"Navegue por los datos...",uploadText:"Subir",waitMsgText:"Suba sus datos data...",invalidFileExtensionText:"El fichero debe tener alguna de estas extensiones: ",
optionsText:"Opciones",workspaceLabel:"Espacio de trabajo",workspaceEmptyText:"Espacio de trabajo por defecto",dataStoreLabel:"Almac\u00e9n de datos",dataStoreEmptyText:"Almac\u00e9n de datos por defecto"},"gxp.NewSourceWindow.prototype":{title:"A\u00f1adir Servidor...",cancelText:"Cancelar",addServerText:"A\u00f1adir Servidor",invalidURLText:"Enter a valid URL to a WMS endpoint (e.g. http://example.com/geoserver/wms)",contactingServerText:"Conectando con el Servidor..."},"gxp.ScaleOverlay.prototype":{zoomLevelText:"Escala"}});
GeoExt.Lang.add("fr",{"gxp.plugins.AddLayers.prototype":{addActionMenuText:"Ajouter des calques",addActionTip:"Ajouter des calques",addServerText:"Ajouter un nouveau serveur",untitledText:"Sans titre",addLayerSourceErrorText:"Impossible d'obtenir les capacit\u00e9s WMS ({msg}).\nVeuillez v\u00e9rifier l'URL et essayez \u00e0 nouveau.",availableLayersText:"Couches disponibles",doneText:"Termin\u00e9",uploadText:"T\u00e9l\u00e9charger des donn\u00e9es"},"gxp.plugins.BingSource.prototype":{title:"Calques Bing",
roadTitle:"Bing routes",aerialTitle:"Bing images a\u00e9riennes",labeledAerialTitle:"Bing images a\u00e9riennes avec \u00e9tiquettes"},"gxp.plugins.FeatureEditor.prototype":{createFeatureActionTip:"Cr\u00e9er un nouvel objet",editFeatureActionTip:"Modifier un objet existant"},"gxp.plugins.FeatureGrid.prototype":{displayFeatureText:"Afficher sur la carte",firstPageTip:"Premi\u00e8re page",previousPageTip:"Page pr\u00e9c\u00e9dente",zoomPageExtentTip:"Zoom sur la page",nextPageTip:"Page suivante",nextPageTip:"Derni\u00e8re page",
totalMsg:"Total : {0} entr\u00e9es"},"gxp.plugins.GoogleEarth.prototype":{apiKeyPrompt:"Veuillez indiquer la clef Google API pour ",menuText:"Passer \u00e0 la visionneuse 3D",tooltip:"Passer \u00e0 la visionneuse 3D"},"gxp.plugins.GoogleSource.prototype":{title:"Calques Google",roadmapAbstract:"Carte routi\u00e8re",satelliteAbstract:"Images satellite",hybridAbstract:"Images avec routes",terrainAbstract:"Carte routi\u00e8re avec le terrain"},"gxp.plugins.LayerProperties.prototype":{menuText:"Propri\u00e9t\u00e9s de la couche",
toolTip:"Propri\u00e9t\u00e9s de la couche"},"gxp.plugins.LayerTree.prototype":{rootNodeText:"Layers",overlayNodeText:"Surimpressions",baseNodeText:"Couches"},"gxp.plugins.Legend.prototype":{menuText:"L\u00e9gende",tooltip:"L\u00e9gende"},"gxp.plugins.Measure.prototype":{lengthMenuText:"Longueur",areaMenuText:"Surface",lengthTooltip:"Mesure de longueur",areaTooltip:"Mesure de surface",measureTooltip:"Mesure"},"gxp.plugins.Navigation.prototype":{menuText:"Panner la carte",tooltip:"Panner la carte"},
"gxp.plugins.NavigationHistory.prototype":{previousMenuText:"Position pr\u00e9c\u00e9dente",nextMenuText:"Position suivante",previousTooltip:"Position pr\u00e9c\u00e9dente",nextTooltip:"Position suivante"},"gxp.plugins.LoadingIndicator.prototype":{loadingMapMessage:"Chargement de la carte..."},"gxp.plugins.MapBoxSource.prototype":{title:"MapBox Layers",blueMarbleTopoBathyJanTitle:"Blue Marble Topography & Bathymetry (January)",blueMarbleTopoBathyJulTitle:"Blue Marble Topography & Bathymetry (July)",
blueMarbleTopoJanTitle:"Blue Marble Topography (January)",blueMarbleTopoJulTitle:"Blue Marble Topography (July)",controlRoomTitle:"Control Room",geographyClassTitle:"Geography Class",naturalEarthHypsoTitle:"Natural Earth Hypsometric",naturalEarthHypsoBathyTitle:"Natural Earth Hypsometric & Bathymetry",naturalEarth1Title:"Natural Earth I",naturalEarth2Title:"Natural Earth II",worldDarkTitle:"World Dark",worldLightTitle:"World Light",worldPrintTitle:"World Print"},"gxp.plugins.OSMSource.prototype":{title:"Calques OpenStreetMap",
mapnikAttribution:"Donn\u00e9es CC-By-SA par <a href='http://openstreetmap.org/'>OpenStreetMap</a>",osmarenderAttribution:"Donn\u00e9es CC-By-SA par <a href='http://openstreetmap.org/'>OpenStreetMap</a>"},"gxp.plugins.Print.prototype":{menuText:"Imprimer la carte",tooltip:"Imprimer la carte",previewText:"Aper\u00e7u avant impression",notAllNotPrintableText:"Non, toutes les couches peuvent \u00eatre imprim\u00e9es",nonePrintableText:"Aucune de vos couches ne peut \u00eatre imprim\u00e9e"},"gxp.plugins.MapQuestSource.prototype":{title:"MapQuest Layers",
osmAttribution:"Avec la permission de tuiles <a href='http://open.mapquest.co.uk/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png' border='0'>",osmTitle:"MapQuest OpenStreetMap",naipAttribution:"Avec la permission de tuiles <a href='http://open.mapquest.co.uk/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png' border='0'>",naipTitle:"MapQuest Imagery"},"gxp.plugins.QueryForm.prototype":{queryActionText:"Interrogation",
queryMenuText:"Couche de requ\u00eates",queryActionTip:"Interroger la couche s\u00e9lectionn\u00e9e",queryByLocationText:"Interroger par lieu",currentTextText:"\u00c9tendue actuelle",queryByAttributesText:"Requ\u00eate par attributs"},"gxp.plugins.RemoveLayer.prototype":{removeMenuText:"Enlever la couche",removeActionTip:"Enlever la couche"},"gxp.plugins.WMSGetFeatureInfo.prototype":{infoActionTip:"Get Feature Info",popupTitle:"Info sur l'objet"},"gxp.plugins.Zoom.prototype":{zoomInMenuText:"Zoom avant",
zoomOutMenuText:"Zoom arri\u00e8re",zoomInTooltip:"Zoom avant",zoomOutTooltip:"Zoom arri\u00e8re"},"gxp.plugins.ZoomToExtent.prototype":{menuText:"Zoomer sur la carte max",tooltip:"Zoomer sur la carte max"},"gxp.plugins.ZoomToDataExtent.prototype":{menuText:"Zoomer sur la couche",tooltip:"Zoomer sur la couche"},"gxp.plugins.ZoomToLayerExtent.prototype":{menuText:"Zoomer sur la couche",tooltip:"Zoomer sur la couche"},"gxp.plugins.ZoomToSelectedFeatures.prototype":{menuText:"Zoomer sur les objets s\u00e9lectionn\u00e9s",
tooltip:"Zoomer sur les objets s\u00e9lectionn\u00e9s"},"gxp.FeatureEditPopup.prototype":{closeMsgTitle:"Enregistrer les modifications ?",closeMsg:"Cet objet a des modifications non enregistr\u00e9es. Voulez-vous enregistrer vos modifications ?",deleteMsgTitle:"Supprimer l'objet ?",deleteMsg:"Etes-vous s\u00fbr de vouloir supprimer cet objet ?",editButtonText:"Modifier",editButtonTooltip:"Modifier cet objet",deleteButtonText:"Supprimer",deleteButtonTooltip:"Supprimer cet objet",cancelButtonText:"Annuler",
cancelButtonTooltip:"Arr\u00eater de modifier, annuler les modifications",saveButtonText:"Enregistrer",saveButtonTooltip:"Enregistrer les modifications"},"gxp.FillSymbolizer.prototype":{fillText:"Remplir",colorText:"Couleur",opacityText:"Opacit\u00e9"},"gxp.FilterBuilder.prototype":{builderTypeNames:["Tout","tous","aucun","pas tout"],preComboText:"Match",postComboText:"de ce qui suit:",addConditionText:"Ajouter la condition",addGroupText:"Ajouter un groupe",removeConditionText:"Supprimer la condition"},
"gxp.grid.CapabilitiesGrid.prototype":{nameHeaderText:"Nom",titleHeaderText:"Titre",queryableHeaderText:"Interrogeable",layerSelectionLabel:"Voir les donn\u00e9es disponibles \u00e0 partir de :",layerAdditionLabel:"ou ajouter un nouveau serveur.",expanderTemplateText:"<p><b>R\u00e9sum\u00e9:</b> {abstract}</p>"},"gxp.PointSymbolizer.prototype":{graphicCircleText:"Cercle",graphicSquareText:"Carr\u00e9",graphicTriangleText:"Triangle",graphicStarText:"\u00c9toile",graphicCrossText:"Croix",graphicXText:"x",
graphicExternalText:"Externe",urlText:"URL",opacityText:"Opacit\u00e9",symbolText:"Symbole",sizeText:"Taille",rotationText:"Rotation"},"gxp.QueryPanel.prototype":{queryByLocationText:"Interrogation selon le lieu",currentTextText:"Mesure actuelle",queryByAttributesText:"Requ\u00eate par attributs",layerText:"Calque"},"gxp.RulePanel.prototype":{scaleSliderTemplate:"{scaleType} \u00e9chelle 1:{scale}",labelFeaturesText:"Label Caract\u00e9ristiques",advancedText:"Avanc\u00e9",limitByScaleText:"Limiter par l'\u00e9chelle",
limitByConditionText:"Limiter par condition",symbolText:"Symbole",nameText:"Nom"},"gxp.ScaleLimitPanel.prototype":{scaleSliderTemplate:"{scaleType} \u00e9chelle 1:{scale}",maxScaleLimitText:"\u00c9chelle maximale"},"gxp.TextSymbolizer.prototype":{labelValuesText:"Label valeurs",haloText:"Halo",sizeText:"Taille"},"gxp.WMSLayerPanel.prototype":{aboutText:"A propos",titleText:"Titre",nameText:"Nom",descriptionText:"Description",displayText:"Affichage",opacityText:"Opacit\u00e9",formatText:"Format",transparentText:"Transparent",
cacheText:"Cache",cacheFieldText:"Utiliser la version mise en cache",infoFormatText:"Info format",infoFormatEmptyText:"Choisissez un format"},"gxp.EmbedMapDialog.prototype":{publishMessage:"Votre carte est pr\u00eate \u00e0 \u00eatre publi\u00e9e sur le web. Il suffit de copier le code HTML suivant pour int\u00e9grer la carte dans votre site Web :",heightLabel:"Hauteur",widthLabel:"Largeur",mapSizeLabel:"Taille de la carte",miniSizeLabel:"Mini",smallSizeLabel:"Petit",premiumSizeLabel:"Premium",largeSizeLabel:"Large"},
"gxp.LayerUploadPanel.prototype":{titleLabel:"Titre",titleEmptyText:"Titre de la couche",abstractLabel:"Description",abstractEmptyText:"Description couche",fileLabel:"Donn\u00e9es",fieldEmptyText:"Parcourir pour ...",uploadText:"Upload",waitMsgText:"Transfert de vos donn\u00e9es ...",invalidFileExtensionText:"L'extension du fichier doit \u00eatre : ",optionsText:"Options",workspaceLabel:"Espace de travail",workspaceEmptyText:"Espace de travail par d\u00e9faut",dataStoreLabel:"Magasin de donn\u00e9es",
dataStoreEmptyText:"Magasin de donn\u00e9es par d\u00e9faut"},"gxp.NewSourceWindow.prototype":{title:"Ajouter un nouveau serveur...",cancelText:"Annuler",addServerText:"Ajouter un serveur",invalidURLText:"Indiquez l'URL valide d'un serveur WMS (e.g. http://example.com/geoserver/wms)",contactingServerText:"Interrogation du serveur..."},"gxp.ScaleOverlay.prototype":{zoomLevelText:"Niveau de zoom"}});
