// This file is generated, do not edit!

OpenLayers.Lang["de"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehandelte Anfragerückmeldung ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Grundkarte",'sameProjection':"Die Übersichtskarte funktioniert nur, wenn sie dieselbe Projektion wie die Hauptkarte verwendet",'readNotImplemented':"Lesen nicht implementiert.",'writeNotImplemented':"Schreiben nicht implementiert.",'noFID':"Ein Feature, für das keine FID existiert, kann nicht aktualisiert werden.",'errorLoadingGML':"Fehler beim Laden der GML-Datei ${url}",'browserNotSupported':"Ihr Browser unterstützt keine Vektordarstellung. Aktuell unterstützte Renderer:\n${renderers}",'componentShouldBe':"addFeatures: Komponente sollte vom Typ ${geomType} sein",'getFeatureError':"getFeatureFromEvent wurde vom einem Layer ohne Render aufgerufen. Dies bedeutet normalerweise, das ein Layer vernichtet wurde, aber nicht seine Handler, die auf ihn verweisen.",'commitSuccess':"WFS-Transaktion: Erfolgreich ${response}",'commitFailed':"WFS-Transaktion: Fehlgeschlagen ${response}",'googleWarning':"Der Google-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der Google-Maps-Bibliothek nicht eingebunden wurde oder keinen gültigen API-Schlüssel für Ihre URL enthält.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden des Google-Layers",'getLayerWarning':"Der ${layerType}-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der \'${layerLib}\'-Bibliothek nicht eingebunden wurde.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden von Layern",'scale':"Maßstab = 1 : ${scaleDenom}",'layerAlreadyAdded':"Sie versuchen den Layer „${layerName}“ zur Karte hinzu zufügen, er wurde aber bereits hinzugefügt",'methodDeprecated':"Die Methode ist veraltet und wird in 3.0 entfernt. Bitte verwende stattdessen ${newMethod}.",'boundsAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'lonlatAddError':"Beide Werte (lon und lat) müssen der add-Funktion übergeben werden.",'pixelAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'unsupportedGeometryType':"Nicht unterstützter Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fehlgeschlagen: Element mit Id ${elemId} möglicherweise falsch platziert.",'filterEvaluateNotImplemented':"„evaluate“ ist für diesen Filter-Typ nicht implementiert."});OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>click here</a>",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>click here</a>",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':'','filterEvaluateNotImplemented':"evaluate is not implemented for this filter type."};OpenLayers.Lang["fr"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Requête non gérée, retournant ${statusText}",'permalink':"Permalien",'overlays':"Calques",'baseLayer':"Calque de base",'sameProjection':"La carte de situation ne fonctionne que lorsque sa projection est la même que celle de la carte principale",'readNotImplemented':"Lecture non implémentée.",'writeNotImplemented':"Ecriture non implémentée.",'noFID':"Impossible de mettre à jour un objet sans identifiant (fid).",'errorLoadingGML':"Erreur au chargement du fichier GML ${url}",'browserNotSupported':"Votre navigateur ne supporte pas le rendu vectoriel. Les renderers actuellement supportés sont : \n${renderers}",'componentShouldBe':"addFeatures : le composant devrait être de type ${geomType}",'getFeatureError':"getFeatureFromEvent a été appelé sur un calque sans renderer. Cela signifie généralement que vous avez détruit cette couche, mais que vous avez conservé un handler qui lui était associé.",'minZoomLevelError':"La propriété minZoomLevel doit seulement être utilisée pour des couches FixedZoomLevels-descendent. Le fait que cette couche WFS vérifie la présence de minZoomLevel est une relique du passé. Nous ne pouvons toutefois la supprimer sans casser des applications qui pourraient en dépendre. C\'est pourquoi nous la déprécions -- la vérification du minZoomLevel sera supprimée en version 3.0. A la place, merci d\'utiliser les paramètres de résolutions min/max tel que décrit sur : http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS : SUCCES ${response}",'commitFailed':"Transaction WFS : ECHEC ${response}",'googleWarning':"La couche Google n\'a pas été en mesure de se charger correctement.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela est possiblement causé par la non-inclusion de la librairie Google Maps, ou alors parce que la clé de l\'API ne correspond pas à votre site.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'getLayerWarning':"La couche ${layerType} n\'est pas en mesure de se charger correctement.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela est possiblement causé par la non-inclusion de la librairie ${layerLib}.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'scale':"Echelle ~ 1 : ${scaleDenom}",'layerAlreadyAdded':"Vous avez essayé d\'ajouter à la carte le calque : ${layerName}, mais il est déjà présent",'reprojectDeprecated':"Vous utilisez l\'option \'reproject\' sur la couche ${layerName}. Cette option est dépréciée : Son usage permettait d\'afficher des données au dessus de couches raster commerciales.Cette fonctionalité est maintenant supportée en utilisant le support de la projection Mercator Sphérique. Plus d\'information est disponible sur http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Cette méthode est dépréciée, et sera supprimée à la version 3.0. Merci d\'utiliser ${newMethod} à la place.",'boundsAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'lonlatAddError':"Vous devez passer les deux valeurs lon et lat à la fonction add.",'pixelAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'unsupportedGeometryType':"Type de géométrie non supporté : ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition a échoué: l\'élément d\'id ${elemId} pourrait être mal positionné.",'filterEvaluateNotImplemented':"évaluer n\'a pas encore été implémenté pour ce type de filtre."});OpenLayers.Lang.it={'unhandledRequest':"Codice di ritorno della richiesta ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Livello base",'sameProjection':"La mini mappa funziona solamente se ha la stessa proiezione della mappa principale",'readNotImplemented':"Lettura non implementata.",'writeNotImplemented':"Scrittura non implementata.",'noFID':"Impossibile aggiornare un elemento grafico che non abbia il FID.",'errorLoadingGML':"Errore nel caricamento del file GML ${url}",'browserNotSupported':"Il tuo browser non supporta il rendering vettoriale. I renderizzatore attualemnte supportati sono:\n${renderers}",'componentShouldBe':"addFeatures : il componente dovrebbe essere di tipo ${geomType}",'getFeatureError':"getFeatureFromEvent chiamata su di un livello senza renderizzatore. Ciò significa che "+"il livello è stato cancellato, ma non i gestori associati ad esso.",'minZoomLevelError':"La proprietà minZoomLevel è da utilizzare solamente "+"con livelli che abbiano FixedZoomLevels. Il fatto che "+"questo livello wfs controlli la proprietà minZoomLevel è "+"un retaggio del passato. Non possiamo comunque rimuoverla "+"senza rompere le vecchie applicazioni che dipendono su di essa."+"Quindi siamo costretti a deprecarla -- minZoomLevel "+"e sarà rimossa dalla vesione 3.0. Si prega di utilizzare i "+"settaggi di risoluzione min/max come descritto qui: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transazione WFS: SUCCESS ${response}",'commitFailed':"Transazione WFS: FAILED ${response}",'googleWarning':"Il livello Google non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria Google Maps "+"non è stata inclusa nella pagina, oppure non contiene la "+"corretta API key per il tuo sito.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>clicca qui</a>",'getLayerWarning':"Il livello ${layerType} non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria ${layerLib} "+"non è stata inclusa nella pagina.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>clicca qui</a>",'scale':"Scala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Stai cercando di aggiungere il livello: ${layerName} alla mappa, ma tale livello è già stato aggiunto.",'reprojectDeprecated':"Stai utilizzando l'opzione 'reproject' sul livello ${layerName}. "+"Questa opzione è deprecata: il suo utilizzo è stato introdotto per"+"supportare il disegno dei dati sopra mappe commerciali, ma tale "+"funzionalità dovrebbe essere ottenuta tramite l'utilizzo della proiezione "+"Spherical Mercator. Per maggiori informazioni consultare qui "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Questo metodo è stato deprecato e sarà rimosso dalla versione 3.0. "+"Si prega di utilizzare il metodo ${newMethod} in alternativa.",'boundsAddError':"Devi specificare i valori di x e y alla funzione add.",'lonlatAddError':"Devi specificare i valori di lon e lat alla funzione add.",'pixelAddError':"Devi specificare i valori di x e y alla funzione add.",'unsupportedGeometryType':"Tipo di geometria non supportata: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallita: l'elemento con id ${elemId} è posizionato in modo errato.",'end':''};OpenLayers.Util.extend(OpenLayers.Lang.de,{'mf.layertree.opacity':'Opazität','mf.layertree.remove':'Ausblenden','mf.layertree.zoomToExtent':'Zoom object zoomen','mf.print.mapTitle':'Titel','mf.print.comment':'Bemerkung','mf.print.loadingConfig':'Laden der Konfiguration...','mf.print.serverDown':' Der Druck-Systemdienst funktioniert nicht','mf.print.unableToPrint':"Unable to print",'mf.print.generatingPDF':"Generierung des PDFs...",'mf.print.dpi':'DPI','mf.print.scale':'Massstab','mf.print.rotation':'Rotation','mf.print.print':'Drücken','mf.print.resetPos':'Reset Pos.','mf.print.layout':'Layout','mf.print.addPage':'Seite hinzufügen','mf.print.remove':'Seite entfernen','mf.print.clearAll':'Alles löschen','mf.print.pdfReady':'Das PDF-Dokument kann heruntergeladen werden.','mf.print.noPage':'Keine Seite ausgewählt, bitte auf "'+this['mf.print.addPage']+'"-'+'Button klicken um eine Seite zu hinzufügen.','mf.print.print-tooltip':'Generate a PDF with at least the extent shown on the map','mf.error':'Fehler','mf.warning':'Warnung','mf.information':'Information','mf.recenter.x':'X','mf.recenter.y':'Y','mf.recenter.submit':'Recenter','mf.recenter.missingCoords':'Some coordinates are missing.','mf.recenter.outOfRangeCoords':'Submitted coordinates (${myX}, ${myY}) are not in the map area<br />'+'and must be within following ranges:<br/>'+'${coordX} between ${minCoordX} and ${maxCoordX},<br />'+'${coordY} between ${minCoordY} and ${maxCoordY}','mf.recenter.ws.error':'Ein Fehler ist bei Zugang zum Webdienst vorgekommen:','mf.recenter.ws.service':'Ausgewählter Webdienst'});OpenLayers.Util.extend(OpenLayers.Lang.en,{'mf.layertree.opacity':'Opacity','mf.layertree.remove':'Remove','mf.layertree.zoomToExtent':'Zoom to extent','mf.print.mapTitle':'Title','mf.print.comment':'Comments','mf.print.loadingConfig':'Loading the configuration...','mf.print.serverDown':'The print service is not working','mf.print.unableToPrint':"Unable to print",'mf.print.generatingPDF':"Generating PDF...",'mf.print.dpi':'DPI','mf.print.scale':'Scale','mf.print.rotation':'Rotation','mf.print.print':'Print','mf.print.resetPos':'Reset Pos.','mf.print.layout':'Layout','mf.print.addPage':'Add page','mf.print.remove':'Remove page','mf.print.clearAll':'Clear all','mf.print.pdfReady':'Your PDF document is ready.','mf.print.noPage':'No page selected, click on the "Add page" button to add one.','mf.print.print-tooltip':'Generate a PDF with at least the extent shown on the map','mf.error':'Error','mf.warning':'Warning','mf.information':'Information','mf.recenter.x':'X','mf.recenter.y':'Y','mf.recenter.submit':'Recenter','mf.recenter.missingCoords':'Some coordinates are missing.','mf.recenter.outOfRangeCoords':'Submitted coordinates (${myX}, ${myY}) are not in the map area<br />'+'and must be within following ranges:<br/>'+'${coordX} between ${minCoordX} and ${maxCoordX},<br />'+'${coordY} between ${minCoordY} and ${maxCoordY}','mf.recenter.ws.error':'An error occured when accessing the distant webservice:','mf.recenter.ws.service':'Selected service'});OpenLayers.Util.extend(OpenLayers.Lang.fr,{'scale':"Echelle = 1 : ${scaleDenom}",'mf.layertree.opacity':'Opacité','mf.layertree.remove':'Supprimer','mf.layertree.zoomToExtent':'Zoom sur l\'emprise','mf.print.mapTitle':'Titre','mf.print.comment':'Commentaires','mf.print.unableToPrint':"Impossible d'imprimer",'mf.print.generatingPDF':"Génération du PDF...",'mf.print.dpi':'Résolution','mf.print.scale':'Échelle','mf.print.rotation':'Rotation','mf.print.print':'Imprimer','mf.print.resetPos':'Réinit. pos.','mf.print.layout':'Format','mf.print.addPage':'Ajouter page','mf.print.remove':'Enlever page','mf.print.clearAll':'Supprimer toutes','mf.print.pdfReady':'Votre document PDF est prêt.','mf.print.noPage':'Pas de page sélectionnée, appuyez sur le bouton "Ajouter page" pour en créer une.','mf.print.print-tooltip':'Générer un PDF contenant au moins l\'étendue de la présente carte','mf.error':'Erreur','mf.warning':'Attention','mf.information':'Information','mf.recenter.x':'X','mf.recenter.y':'Y','mf.recenter.submit':'Recentrer','mf.recenter.missingCoords':'Les coordonnées sont incomplètes.','mf.recenter.outOfRangeCoords':'Les coordonnées fournies (${myX}, ${myY}) sont en dehors de la carte.<br />'+'Elles doivent être comprises dans les limites suivantes :<br/>'+'${coordX} entre ${minCoordX} et ${maxCoordX},<br />'+'${coordY} entre ${minCoordY} et ${maxCoordY}','mf.recenter.ws.error':'Une erreur est survenue lors de l\'accès au webservice distant:','mf.recenter.ws.service':'Service sélectionné'});OpenLayers.Util.extend(OpenLayers.Lang.it,{'mf.layertree.opacity':'Opacity','mf.layertree.remove':'Remove','mf.layertree.zoomToExtent':'Zoom to extent','mf.print.mapTitle':'Titolo','mf.print.comment':'Commento','mf.print.loadingConfig':'Caricamento in corso','mf.print.serverDown':'Server non disponibile','mf.print.unableToPrint':'Errore stampa','mf.print.generatingPDF':'Creare PDF','mf.print.dpi':'Risoluzione (dpi)','mf.print.scale':'Scala','mf.print.rotation':'Rotazione','mf.print.print':'Stampa','mf.print.resetPos':'Reinizializzare','mf.print.layout':'Layout di pagina','mf.print.addPage':'Add page','mf.print.remove':'Remove page','mf.print.clearAll':'Clear all','mf.print.pdfReady':'Your PDF document is ready.','mf.print.noPage':'No page selected, click on the "Add page" button to add one.','mf.print.print-tooltip':'Generate a PDF with at least the extent shown on the map','mf.error':'Errore','mf.warning':'Attenzione','mf.information':'Informazioni','mf.recenter.x':'X','mf.recenter.y':'Y','mf.recenter.submit':'Recenter','mf.recenter.missingCoords':'Some coordinates are missing.','mf.recenter.outOfRangeCoords':'Submitted coordinates (${myX}, ${myY}) are not in the map area<br />'+'and must be within following ranges:<br/>'+'${coordX} between ${minCoordX} and ${maxCoordX},<br />'+'${coordY} between ${minCoordY} and ${maxCoordY}','mf.recenter.ws.error':'An error occured when accessing the distant webservice:','mf.recenter.ws.service':'Selected service'});mapfish.Protocol.MapFish=OpenLayers.Class(OpenLayers.Protocol.HTTP,{initialize:function(options){options=options||{};if(!options.format){options.format=new OpenLayers.Format.GeoJSON();}
OpenLayers.Protocol.HTTP.prototype.initialize.call(this,options);},"create":function(features,options){options=options||{};options.headers=OpenLayers.Util.extend(options.headers,{"Content-Type":"plain/text"});return OpenLayers.Protocol.HTTP.prototype.create.call(this,features,options);},handleCreate:function(resp,options){this.handleCreateUpdate(resp,options);},"read":function(options){options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);if(options){this.filterAdapter(options);}
return OpenLayers.Protocol.HTTP.prototype.read.call(this,options);},handleRead:function(resp,options){var request=resp.priv;if(options.callback){var code=request.status;if(code==200){resp.features=this.parseFeatures(request);resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.features=null;resp.code=OpenLayers.Protocol.Response.FAILURE;}
options.callback.call(options.scope,resp);}},_filterToParams:function(filter,params){var className=filter.CLASS_NAME;var str=className.substring(className.indexOf('.')+1,className.lastIndexOf('.'));if(str!="Filter"){return false;}
var filterType=className.substring(className.lastIndexOf('.')+1);switch(filterType){case"Spatial":if(filter.type!=OpenLayers.Filter.Spatial.BBOX){OpenLayers.Console.error('Unsupported spatial filter type '+
filter.type);return false;}
if(params["box"]){OpenLayers.Console.error('Filter contains multiple '+'Spatial BBOX entries');return false;}
params["box"]=filter.value.toBBOX();break;case"Comparison":if(params[filter.property]){OpenLayers.Console.error('Filter contains multiple Comparison '+'filters for the same property '+filter.property);return false;}
params[filter.property]=filter.value;break;case"Logical":if(filter.type!=OpenLayers.Filter.Logical.AND){OpenLayers.Console.error('Unsupported logical filter type '+
filter.type);return false;}
if(filter.filters.length==0){OpenLayers.Console.error('Empty logical AND filter');return false;}
for(var i=0;i<filter.filters.length;i++){var f=filter.filters[i];if(!this._filterToParams(f,params))
return false;}
break;default:OpenLayers.Console.warn("Unknown filter type "+filterType);return false;break;}
return true;},filterAdapter:function(options){if(!options||!options.filter||!options.filter.CLASS_NAME){return;}
var params={};if(this._filterToParams(options.filter,params)){options.params=OpenLayers.Util.extend(options.params,params);}
delete options.filter;},"update":function(features,options){options=options||{};var url=options.url||features.url||this.options.url+'/'+features.fid;options.url=url;options.headers=OpenLayers.Util.extend(options.headers,{"Content-Type":"plain/text"});return OpenLayers.Protocol.HTTP.prototype.update.call(this,features,options);},handleUpdate:function(resp,options){this.handleCreateUpdate(resp,options);},handleCreateUpdate:function(resp,options){var request=resp.priv;if(options.callback){var code=request.status;if(code==201){resp.features=this.parseFeatures(request);resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.features=null;resp.code=OpenLayers.Protocol.Response.FAILURE;}
options.callback.call(options.scope,resp);}},"delete":function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+'/'+feature.fid;options.url=url;return OpenLayers.Protocol.HTTP.prototype["delete"].call(this,feature,options);},handleDelete:function(resp,options){var request=resp.priv;if(options.callback){var code=request.status;if(code==204){resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.code=OpenLayers.Protocol.Response.FAILURE;}
options.callback.call(options.scope,resp);}},CLASS_NAME:"mapfish.Protocol.MapFish"});Ext.namespace('mapfish.widgets','mapfish.widgets.data');mapfish.widgets.data.FeatureReader=function(meta,recordType){meta=meta||{};mapfish.widgets.data.FeatureReader.superclass.constructor.call(this,meta,recordType||meta.fields);};Ext.extend(mapfish.widgets.data.FeatureReader,Ext.data.DataReader,{totalRecords:null,read:function(response){return this.readRecords(response.features);},readRecords:function(features){var records=[];if(features){var recordType=this.recordType,fields=recordType.prototype.fields;var i,lenI,j,lenJ,feature,values,field,v;for(i=0,lenI=features.length;i<lenI;i++){feature=features[i];values={};if(feature.attributes){for(j=0,lenJ=fields.length;j<lenJ;j++){field=fields.items[j];v=feature.attributes[field.mapping||field.name]||field.defaultValue;v=field.convert(v);values[field.name]=v;}}
values.feature=feature;values.state=feature.state;values.fid=feature.fid;records[records.length]=new recordType(values,feature.id);}}
return{records:records,totalRecords:this.totalRecords!=null?this.totalRecords:records.length};}});Ext.namespace('mapfish.widgets','mapfish.widgets.data');mapfish.widgets.data.FeatureStoreMediator=function(config){Ext.apply(this,config);if(!this.store){OpenLayers.Console.error("store is missing in the config");}
if(!(this.store.reader instanceof mapfish.widgets.data.FeatureReader)){OpenLayers.Console.error("store does not use a FeatureReader");}};mapfish.widgets.data.FeatureStoreMediator.prototype={store:null,append:true,filter:null,addFeatures:function(features,config){if(!Ext.isArray(features)){features=[features];}
config=OpenLayers.Util.applyDefaults(config,{append:this.append,filter:this.filter});var toAdd=features;if(config.filter){toAdd=[];var feature;for(var i=0,len=features.length;i<len;i++){feature=features[i];if(config.filter(feature)){toAdd.push(feature);}}}
if(!config.append){this.store.removeAll();}
this.store.loadData(toAdd,true);},removeFeatures:function(features){if(!features){this.store.removeAll();}else{if(!Ext.isArray(features)){features=[features];}
for(var i=0,len=features.length;i<len;i++){var feature=features[i];var r=this.store.getById(feature.id);if(r!==undefined){this.store.remove(r);}}}}};OpenLayers.Util.extend(OpenLayers.Lang.de,{'Mountainbikeland':'','Flyerland':'Flyer-Land','Themen offnen':'Themen öffnen','Themen schliessen':'Grössere Karte','Drucken':'','Druckfeld schliessen':'','Search':'Suchen...','mf.print.print':'Drucken','Tram':'Tram / Bus','Berghuette':'SAC- / Berghütte','Route unmarkieren':'Markierung entfernen','Geo search...':'Suche Ort, PLZ, ...','loadingText':'Laden...','Keine':'','Please wait...':'Bitte warten...','You selected too many layers':'Achtung: Die maximale Anzahl von Themen, die durch die Webkarte gleichzeitig dargestellt werden kann, ist überschritten.<br><br>Bitte schliessen Sie dieses Fenster und deaktivieren Sie nicht mehr benötigte Themen.<br><br>Wir danken für das Verständnis.','no_slowup':'Querformat','no_slowup_portrait':'Hochformat','logout':'Abmelden','myblockmesure':'Route in Zahlen','myblockprofil':'Höhenprofil','myblocklist':'Liste der Routen','enlargeprofile':'Vergrössern und Drucken','printprofile':'Drucken','profilepopuptitle':'Höhenprofil','length':'Länge','lengthp':'Länge: ','totalup':'Aufstieg','totalupp':'Aufstieg: ','totaldown':'Abstieg','totaldownp':'Abstieg: ','walkingtime':'Wanderzeit','walkingtimep':'Wanderzeit: ','Zeichnen':'Zeichnen','Automatisch zentrieren':'Automatisch zentrieren','Letzte Punkt löschen':'Letzter Punkt löschen','Zeichnen beenden / speichern':'Zeichnen beenden / speichern','Route löschen':'Route löschen','Do you really want to delete current track ?':'Möchten Sie die ausgewählte Route wirklich löschen?','Löschen':'Löschen','failed deleting track':'Die Route kann nicht gelöscht werden','Try to relog':'Bitte melden Sie sich erneut an bevor Sie die Route löschen','Abbrechen':'Abbrechen','Weiter zeichnen':'Weiter zeichnen','Track Name':'Name der Route','GPS-Track importieren':'GPS-Track importieren','Upload':'Upload','Loading track':'Track wird geladen','Loading track failed':'Ein Fehler ist aufgetreten beim Laden des Tracks.','GPS-Track exportieren':'GPS-Track exportieren','Please select a track to export':'Bitte einen Track zum exportieren auswählen','An Freund senden':'An Freund senden','friend email':'An (E-Mail)','friend name':'An (Name)','your email':'Ihr E-Mail','your name':'Ihr Name','message title':'Betreff','message text':'Nachricht','I accept conditions':'Ich akzeptiere die Bedingungen','Senden':'Senden','message sent successfully':'Die Nachricht wurde erfolgreich gesendet','failed sending message':'Die Nachricht kann nicht gesendet werden','Hide track':'Route ausblenden','no track available':'Kein Track vorhanden','Loading...':'Laden...','track has been added to your tracks list':'Die Route wurde Ihrer Liste hinzugefügt','failed displaying track':'Die Route kann nicht dargestellt werden','track does not exist':'Route existiert nicht','Would you like to record track?':'Möchten Sie die Route speichern?','Speichern':'Speichern','failed saving track':'Die Route kann nicht gespeichert werden','Please try again':'Bitte melden Sie sich erneut an und versuchen Sie es nochmals.','Failed reading GPX file':'Bitte verwenden Sie ausschlieslich das GPX-Format.','time_h':' h ','time_m':' min','help':'Anleitung','safari macos chart print alert':'Drucken mit Safari: klicken Sie auf dem Höhenprofil \nmit der rechten Maustaste und wählen Sie "Print Chart".',"Trackname must be shorter than {0} characters":"Der Name darf nicht länger als {0} Zeichen sein.",'Route snapping':'Magnetische Wege',"your session expired, please log again":"Die Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",'myloginname':'E-Mail-Adresse','myloginpass':'Passwort','enter your email address':'Geben Sie Ihre E-mail-Addresse ein','enter your password':'Geben Sie Ihr Passwort ein',"Signin":"Anmelden","aboutmych":"Zeichnen mit der SchweizMobilCard, <br />wie geht das?",'aboutmychurl':'http://www.schweizmobilcard.ch/anleitung',"forgotpass":"Passwort vergessen","mylogintitle":"MySchweizMobil Login",'forgotpassurl':'http://www.schweizmobilcard.ch/konto','myloginwindowtitle':'SchweizMobilCard'});OpenLayers.Util.extend(OpenLayers.Lang.en,{'Veloland':'Cycling in Switzerland','Wanderland':'Hiking in Switzerland','Mountainbikeland':'Mountainbiking in Switzerland','Skatingland':'Skating in Switzerland','Kanuland':'Canoeing in Switzerland','Routen':'Routes','National':'National','Regional':'Regional','Lokal':'Local','Etappen':'Sections','Lokale Angebote':'Local offers','Mietvelo':'Cycle rental','Veloservice':'Cycle service','Wanderwegnetz':'Hiking-trail network','Mietbike':'Bike rental','Bikeservice':'Bike service','Rafting':'','Kanuclub':'Canoeing club','Buchbare Angebote':'Bookable offers','Bahn - Bus - Schiff':'Rail, bus, boat','Haltestellen':'Public-transport stops','Bahn':'Train','Bus':'Bus','Tram':'Tram / Bus','Schiff':'Boat','Seilbahn':'Aerial cableway','Standseilbahn':'Funicular railway','Empfehlungen':'Recommendations','Orte':'Places','Übernachten':'Accommodation','Hotel':'','Bed & Breakfast':'','Jugendherberge':'Youth hostel','Backpacker / Herberge':'Backpackers / Hostel ','Gruppenunterkunft':'Group accommodation','Übernachten im Stroh':'Sleeping in straw','Bauernhof mit Zimmer':'Farm accommodation','Ferienwohnung':'Vacation apartment','Campingplatz':'Camping site','Berghuette':'SAC / Mountain hut','Sehenswürdigkeiten':'Places of interest','Natur':'Nature','Kultur':'Culture','Erlebnisse':'Experiences','Einkaufen':'Shopping','Flyerland':'Flyer-Land','Themen offnen':'Open topics','Themen schliessen':'Enlarged map','Drucken':'Print','Druckfeld schliessen':'Close print','Search':'Search...','Koordinaten (m): ':'Coordinates (m): ','Geo search...':'Search place, postcode, ...','loadingText':'Loading...','SchweizMobil':'SwitzerlandMobility','Veloland Schweiz':'Cycling in Switzerland','Wanderland Schweiz':'Hiking in Switzerland','Mountainbikeland Schweiz':'Mountainbiking in Switzerland','Skatingland Schweiz':'Skating in Switzerland','Kanuland Schweiz':'Canoeing in Switzerland','Route unmarkieren':'Remove marking','Route markieren':'Mark route','Keine':'','Please wait...':'Please wait...','You selected too many layers':'Please note: the maximum number of subjects that can be shown simultaneously on the web map has been exceeded. <br><br> Please close this window and deactivate subjects no longer required.<br><br>Thank you for your cooperation.','no_slowup':'Landscape','no_slowup_portrait':'Portrait','logout':'Logout','myblockmesure':'Routes in numbers','myblockprofil':'Height profile','myblocklist':'List of routes','enlargeprofile':'Enlarge and print','printprofile':'Print','profilepopuptitle':'Height profile','length':'Distance','lengthp':'Distance: ','totalup':'Ascent','totalupp':'Ascent: ','totaldown':'Descent','totaldownp':'Descent: ','walkingtime':'Hiking time','walkingtimep':'Hiking time: ','Zeichnen':'Draw a route','Automatisch zentrieren':'Automatic centering','Letzte Punkt löschen':'Delete last point','Zeichnen beenden / speichern':'Finalize / Save','Route löschen':'Delete route','Do you really want to delete current track ?':'Do you really want to delete current route?','Löschen':'Delete','failed deleting track':'Route cannot be deleted','Try to relog':'Please login again before deleting route','Abbrechen':'Cancel','Weiter zeichnen':'Continue drawing','Track Name':'Route name','GPS-Track importieren':'Import GPS track','Upload':'Upload','Loading track':'Loading track','Loading track failed':'An error occurred while loading the track.','GPS-Track exportieren':'Export GPS track','Please select a track to export':'Please select a route to export','An Freund senden':'Send route to a friend','friend email':'Your friend\'s email','friend name':'Your friend\'s name','your email':'Your email','your name':'Your name','message title':'Message title','message text':'Message text','I accept conditions':'I accept the conditions','Senden':'Send','message sent successfully':'Message sent successfully','failed sending message':'Message cannot be sent','Hide track':'Hide route','no track available':'No track available','Loading...':'Loading...','track has been added to your tracks list':'Route has been added to your routes list','failed displaying track':'Route cannot be displayed','track does not exist':'Route does not exist','Would you like to record track?':'Would you like to save the route?','Speichern':'Save','failed saving track':'Route cannot be saved','Please try again':'Please login again and retry.','Failed reading GPX file':"Please make sure to upload a GPX file.",'time_h':' h ','time_m':' min','help':'Instructions','safari macos chart print alert':'To print the chart with Safari, \nyou need to right-click on the chart and select "Print Chart".',"Trackname must be shorter than {0} characters":"Trackname must be shorter than {0} characters.",'Route snapping':'Magnetic routes',"your session expired, please log again":"Your session has expired, please login again.",'myloginname':'Email address','myloginpass':'Password','enter your email address':'Enter your email address','enter your password':'Enter your password',"mylogintitle":"MySchweizMobil Login","forgotpass":"Password reminder","Signin":"Login","aboutmych":"How to draw with the SwitzerlandMobilityCard",'aboutmychurl':'http://www.schweizmobilcard.ch/anleitung','forgotpassurl':'http://www.schweizmobilcard.ch/konto','myloginwindowtitle':'SwitzerlandMobilityCard'});OpenLayers.Util.extend(OpenLayers.Lang.fr,{'Veloland':'La Suisse à vélo','Wanderland':'La Suisse à pied','Mountainbikeland':'La Suisse à VTT','Skatingland':'La Suisse en rollers','Kanuland':'La Suisse en canoë','Routen':'Itinéraires','National':'National','Regional':'Régional','Lokal':'Local','Etappen':'Etapes','Lokale Angebote':'Offres locales','Mietvelo':'Vélo de location','Veloservice':'Service vélo','Wanderwegnetz':'Réseau de sentiers pédestres','Mietbike':'VTT de location','Bikeservice':'Service VTT','Rafting':'Tour de rafting','Kanuclub':'Club de canoë','Buchbare Angebote':'Offres à réserver','Bahn - Bus - Schiff':'Trains, bus, bateaux','Haltestellen':'Arrêts','Bahn':'Train','Bus':'Bus','Tram':'Tram / Bus','Schiff':'Bateau','Seilbahn':'Téléphérique','Standseilbahn':'Funiculaire','Empfehlungen':'Recommandations','Orte':'Lieux','Übernachten':'Hébergements','Hotel':'Hôtel','Bed & Breakfast':'','Jugendherberge':'Auberge de jeunesse','Backpacker / Herberge':'Backpacker / auberge','Gruppenunterkunft':'Logement de groupes','Übernachten im Stroh':'Aventure sur la paille','Bauernhof mit Zimmer':'Ferme avec chambre','Ferienwohnung':'Appartement de vacances','Campingplatz':'Camping','Berghuette':'Cabane (du CAS)','Sehenswürdigkeiten':'Curiosités','Natur':'Nature','Kultur':'Culture','Erlebnisse':'Découvertes','Einkaufen':'Achats','Flyerland':'La Suisse en Flyer','Themen offnen':'Ouvrir les thèmes','Themen schliessen':'Carte plus grande','Drucken':'Imprimer','Druckfeld schliessen':'Fermer la fenêtre','Koordinaten (m): ':'Coordonnées (m): ','Search':'Recherche...','Geo search...':'Recherche lieu, NPA, ...','loadingText':'Chargement...','SchweizMobil':'SuisseMobile','Veloland Schweiz':'La Suisse à vélo','Wanderland Schweiz':'La Suisse à pied','Mountainbikeland Schweiz':'La Suisse à VTT','Skatingland Schweiz':'La Suisse en rollers','Kanuland Schweiz':'La Suisse en canoë','Route unmarkieren':'Effacer le tracé','Route markieren':'Tracer l\'itinéraire','Keine':'','Please wait...':'Veuillez patienter...','You selected too many layers':'Attention: le nombre maximum de thèmes pouvant être affichés simultanément sur la carte Web est dépassé. <br><br>Veuillez fermer cette fenêtre et désactiver les thèmes dont vous n\'avez plus besoin. <br><br> Nous vous remercions de votre compréhension','no_slowup':'Paysage','no_slowup_portrait':'Portrait','logout':'Déconnexion','myblockmesure':'Le parcours en chiffres','myblockprofil':'Profil en long','myblocklist':'Liste des parcours','enlargeprofile':'Agrandir et imprimer','printprofile':'Imprimer','profilepopuptitle':'Profil en long','length':'Distance','lengthp':'Distance: ','totalup':'Montée','totalupp':'Montée : ','totaldown':'Descente','totaldownp':'Descente : ','walkingtime':'Temps de marche','walkingtimep':'Temps de marche : ','Zeichnen':'Dessiner un parcours','Automatisch zentrieren':'Centrer automatiquement','Letzte Punkt löschen':'Effacer le dernier point','Zeichnen beenden / speichern':'Terminer / sauver le parcours','Route löschen':'Supprimer le parcours','Do you really want to delete current track ?':'Êtes-vous sûr de vouloir supprimer ce parcours ?','Löschen':'Supprimer','failed deleting track':'Impossible de supprimer le parcours','Try to relog':'Essayez de vous reconnecter avant de supprimer le parcours','Abbrechen':'Annuler','Weiter zeichnen':'Continuer le dessin','Track Name':'Nom du parcours','GPS-Track importieren':'Importer un tracé GPS','Upload':'Envoyer','Loading track':'Chargement du tracé GPS','Loading track failed':'Une erreur s\'est produite lors du transfert du tracé.','GPS-Track exportieren':'Exporter le parcours pour GPS','Please select a track to export':'Veuillez sélectionner un parcours à exporter','An Freund senden':'Envoyer à un ami','friend email':'Son adresse e-mail','friend name':'Son nom','your email':'Votre e-mail','your name':'Votre nom','message title':'Titre','message text':'Message','I accept conditions':'J\'accepte les conditions','Senden':'Envoyer','message sent successfully':'Message envoyé avec succès','failed sending message':'L\'envoi du message a échoué','Hide track':'Cacher le parcours','no track available':'Aucun parcours disponible','Loading...':'Chargement...','track has been added to your tracks list':'Le parcours a été ajouté à votre liste','failed displaying track':'Impossible d\'afficher le parcours','track does not exist':'Le parcours n\'existe pas','Would you like to record track?':'Souhaitez-vous enregistrer le parcours ?','Speichern':'Enregistrer','failed saving track':'Impossible d\'enregistrer le parcours','Please try again':'Vérifiez que vous êtes bien connecté et recommencez.','Failed reading GPX file':'Veuillez SVP n\'utiliser que le format GPX.','time_h':' h ','time_m':' min','help':'Mode d\'emploi','safari macos chart print alert':'Imprimer avec Safari: cliquez sur le profil en long \navec le bouton droit de la souris et choisissez "Print Chart".',"Trackname must be shorter than {0} characters":"Le nom du parcours doit comporter moins de {0} caractères.",'Route snapping':'Suivre les routes',"your session expired, please log again":'La session est expirée. Veuillez SVP vous connecter à nouveau.','myloginname':'Adresse e-mail','myloginpass':'Mot de passe','enter your email address':'Indiquez votre adresse e-mail','enter your password':'Indiquez votre mot de passe',"aboutmych":"Dessiner avec la CarteSuisseMobile,<br />comment ça marche?","forgotpass":"Mot de passe oublié","mylogintitle":"MySchweizMobil Login","Signin":"Connexion",'aboutmychurl':'http://www.cartesuissemobile.ch/modemploi','forgotpassurl':'http://www.cartesuissemobile.ch/compte','myloginwindowtitle':'CarteSuisseMobile'});OpenLayers.Util.extend(OpenLayers.Lang.it,{'Veloland':'La Svizzera in bici','Wanderland':'La Svizzera a piedi','Mountainbikeland':'La Svizzera in mountain bike','Skatingland':'La Svizzera in skating','Kanuland':'La Svizzera in canoa','Routen':'Percorsi','National':'Nazionale','Regional':'Regionale','Lokal':'Locale','Etappen':'Tappe','Lokale Angebote':'Offerte locali ','Mietvelo':'Bici a noleggio','Veloservice':'Assistenza bici','Wanderwegnetz':'Rete di sentieri escursionistici','Mietbike':'MTB a noleggio','Bikeservice':'Assistenza MTB','Rafting':'','Kanuclub':'Club canoisti','Buchbare Angebote':'Offerte prenotabili','Bahn - Bus - Schiff':'Treno, bus, battello','Haltestellen':'Fermata','Bahn':'Treno','Bus':'','Tram':'Tram / Bus','Schiff':'Battello','Seilbahn':'Funivia','Standseilbahn':'Funicolare','Empfehlungen':'Consigli','Orte':'Località','Übernachten':'Alloggio','Hotel':'Albergo','Bed & Breakfast':'','Jugendherberge':'Ostello per la gioventù','Backpacker / Herberge':'Backpacker/ ostello','Gruppenunterkunft':'Alloggio per comitive','Übernachten im Stroh':'Dormire sulla paglia','Bauernhof mit Zimmer':'Fattoria con camera','Ferienwohnung':'Appartamento di vacanza','Campingplatz':'Campeggio','Berghuette':'Capanna CAS / Rifugio','Sehenswürdigkeiten':'Curiosità','Natur':'Natura','Kultur':'Cultura','Erlebnisse':'Attrattive','Einkaufen':'Acquisti','Flyerland':'La Svizzera con Flyer','Themen offnen':'Aprire i temi','Themen schliessen':'Mappa più grande','Drucken':'Stampa','Druckfeld schliessen':'Chiudere stampa','Search':'Ricerca...','Koordinaten (m): ':'Coordinate (m): ','Geo search...':'Ricerca località, NPA, ...','loadingText':'Caricamento...','SchweizMobil':'SvizzeraMobile','Veloland Schweiz':'La Svizzera in bici','Wanderland Schweiz':'La Svizzera a piedi','Mountainbikeland Schweiz':'La Svizzera in mountain bike','Skatingland Schweiz':'La Svizzera in skating','Kanuland Schweiz':'La Svizzera in canoa','Route unmarkieren':'Rimuovere marcatura','Route markieren':'Marcare il percorso','Keine':'','Please wait...':'Vi preghiamo di attendere...','You selected too many layers':'Attenzione: è stato superato il numero massimo di temi visualizzabili contemporaneamente sulla cartina Web. <br><br>Si prega di chiudere le finestre e disattivare i temi non necessari.<br><br>Grazie per la collaborazione.','no_slowup':'Orizzontale','no_slowup_portrait':'Verticale','logout':'Logout','myblockmesure':'L\'itinerario in cifre','myblockprofil':'Profilo altimetrico','myblocklist':'Lista itinerari','enlargeprofile':'Ingrandire e stampare','printprofile':'Stampa','profilepopuptitle':'Profilo altimetrico','length':'Lunghezza','lengthp':'Lunghezza: ','totalup':'Salita','totalupp':'Salita: ','totaldown':'Discesa','totaldownp':'Discesa: ','walkingtime':'Tempo si marcia','walkingtimep':'Tempo si marcia: ','Zeichnen':'Disegnare itinerario','Automatisch zentrieren':'Centrare automaticamente','Letzte Punkt löschen':'Cancellare l\'ultimo punto','Zeichnen beenden / speichern':'Terminare disegno / Salvare','Route löschen':'Cancella itinerario','Do you really want to delete current track ?':'Desiderate cancellare veramente l\'itinerario?','Löschen':'Cancellare','failed deleting track':'L\'itinerario non può essere cancellato','Try to relog':'Registratevi di nuovo prima di cancellare l\'itinerario','Abbrechen':'Interrompi','Weiter zeichnen':'Continua disegno','Track Name':'Nome dell\'itinerario','GPS-Track importieren':'Importare traccia GPS','Upload':'Invia','Loading track':'Caricamento dell\'itinerario','Loading track failed':'Si è verificato un errore durante il caricamento dell\'itinerario.','GPS-Track exportieren':'Esportare traccia GPS','Please select a track to export':'Si prega di scegliere l\'itinerario da esportare','An Freund senden':'Invia a un amico','friend email':'A (e-mail)','friend name':'A (nome)','your email':'Il vostro e-mail','your name':'Il vostro nome','message title':'Oggetto','message text':'Messaggio','I accept conditions':'Accetto le condizioni','Senden':'Invia','message sent successfully':'Il messaggio è stato inviato con successo','failed sending message':'L\'invio del messaggio non è riuscito','Hide track':'Nascondere itinerario','no track available':'Nessun itinerario disponibile','Loading...':'Caricamento...','track has been added to your tracks list':'L\'itinerario è stato aggiunto alla vostra lista','failed displaying track':'L\'itinerario non può venire visualizzato','track does not exist':'L\'itinerario non esiste','Would you like to record track?':'Desiderate memorizzare l\'itinerario?','Speichern':'Salva','failed saving track':'L\'itinerario non può venire memorizzato','Please try again':'Registratevi di nuovo e provate un\'altra volta.','Failed reading GPX file':'Si prega di utilizzare esclusivamente il formato GPX.','time_h':' h ','time_m':' min','help':'Istruzioni','safari macos chart print alert':'Per stampare con Safari: cliccare sul profilo altimetrico \ncon il tasto destro del mouse e selezionare "Print Chart".',"Trackname must be shorter than {0} characters":"Il nome dell'itinerario non deve superare i {0} caratteri.",'Route snapping':'Tragitti magnetici',"your session expired, please log again":'La sessione è scaduta. Si prega di registrarsi nuovamente.','myloginname':'Indirizzo e-mail','myloginpass':'Password','enter your email address':'Inserite il vostro indirizzo e-mail','enter your password':'Inserite la vostra password',"mylogintitle":"MySchweizMobil Login","forgotpass":"Password dimenticata","aboutmych":"Disegnare con la CartaSvizzeraMobile,<br />come funziona?",'aboutmychurl':'http://www.schweizmobilcard.ch/anleitung',"Signin":"Login",'forgotpassurl':'http://www.schweizmobilcard.ch/konto','myloginwindowtitle':'CartaSvizzeraMobile'});Proj4js={defaultDatum:'WGS84',transform:function(source,dest,point){if(!source.readyToUse||!dest.readyToUse){this.reportError("Proj4js initialization for "+source.srsCode+" not yet complete");return point;}
if((source.srsProjNumber=="900913"&&dest.datumCode!="WGS84")||(dest.srsProjNumber=="900913"&&source.datumCode!="WGS84")){var wgs84=Proj4js.WGS84;this.transform(source,wgs84,point);source=wgs84;}
if(source.projName=="longlat"){point.x*=Proj4js.common.D2R;point.y*=Proj4js.common.D2R;}else{if(source.to_meter){point.x*=source.to_meter;point.y*=source.to_meter;}
source.inverse(point);}
if(source.from_greenwich){point.x+=source.from_greenwich;}
point=this.datum_transform(source.datum,dest.datum,point);if(dest.from_greenwich){point.x-=dest.from_greenwich;}
if(dest.projName=="longlat"){point.x*=Proj4js.common.R2D;point.y*=Proj4js.common.R2D;}else{dest.forward(point);if(dest.to_meter){point.x/=dest.to_meter;point.y/=dest.to_meter;}}
return point;},datum_transform:function(source,dest,point){if(source.compare_datums(dest)){return point;}
if(source.datum_type==Proj4js.common.PJD_NODATUM||dest.datum_type==Proj4js.common.PJD_NODATUM){return point;}
if(source.datum_type==Proj4js.common.PJD_GRIDSHIFT)
{alert("ERROR: Grid shift transformations are not implemented yet.");}
if(dest.datum_type==Proj4js.common.PJD_GRIDSHIFT)
{alert("ERROR: Grid shift transformations are not implemented yet.");}
if(source.es!=dest.es||source.a!=dest.a||source.datum_type==Proj4js.common.PJD_3PARAM||source.datum_type==Proj4js.common.PJD_7PARAM||dest.datum_type==Proj4js.common.PJD_3PARAM||dest.datum_type==Proj4js.common.PJD_7PARAM)
{source.geodetic_to_geocentric(point);if(source.datum_type==Proj4js.common.PJD_3PARAM||source.datum_type==Proj4js.common.PJD_7PARAM){source.geocentric_to_wgs84(point);}
if(dest.datum_type==Proj4js.common.PJD_3PARAM||dest.datum_type==Proj4js.common.PJD_7PARAM){dest.geocentric_from_wgs84(point);}
dest.geocentric_to_geodetic(point);}
if(dest.datum_type==Proj4js.common.PJD_GRIDSHIFT)
{alert("ERROR: Grid shift transformations are not implemented yet.");}
return point;},reportError:function(msg){},extend:function(destination,source){destination=destination||{};if(source){for(var property in source){var value=source[property];if(value!==undefined){destination[property]=value;}}}
return destination;},Class:function(){var Class=function(){this.initialize.apply(this,arguments);};var extended={};var parent;for(var i=0;i<arguments.length;++i){if(typeof arguments[i]=="function"){parent=arguments[i].prototype;}else{parent=arguments[i];}
Proj4js.extend(extended,parent);}
Class.prototype=extended;return Class;},bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},scriptName:"proj4js-combined.js",defsLookupService:'http://spatialreference.org/ref',libPath:null,getScriptLocation:function(){if(this.libPath)return this.libPath;var scriptName=this.scriptName;var scriptNameLen=scriptName.length;var scripts=document.getElementsByTagName('script');for(var i=0;i<scripts.length;i++){var src=scripts[i].getAttribute('src');if(src){var index=src.lastIndexOf(scriptName);if((index>-1)&&(index+scriptNameLen==src.length)){this.libPath=src.slice(0,-scriptNameLen);break;}}}
return this.libPath||"";},loadScript:function(url,onload,onfail,loadCheck){var script=document.createElement('script');script.defer=false;script.type="text/javascript";script.id=url;script.src=url;script.onload=onload;script.onerror=onfail;script.loadCheck=loadCheck;if(/MSIE/.test(navigator.userAgent)){script.onreadystatechange=this.checkReadyState;}
document.getElementsByTagName('head')[0].appendChild(script);},checkReadyState:function(){if(this.readyState=='loaded'){if(!this.loadCheck()){this.onerror();}else{this.onload();}}}};Proj4js.Proj=Proj4js.Class({readyToUse:false,title:null,projName:null,units:null,datum:null,initialize:function(srsCode){this.srsCodeInput=srsCode;if(srsCode.indexOf('urn:')==0){var urn=srsCode.split(':');if((urn[1]=='ogc'||urn[1]=='x-ogc')&&(urn[2]=='def')&&(urn[3]=='crs')&&urn.length==7){srsCode=urn[4]+':'+urn[6];}}else if(srsCode.indexOf('http://')==0){var url=srsCode.split('#');if(url[0].match(/epsg.org/)){srsCode='EPSG:'+url[1];}else if(url[0].match(/RIG.xml/)){srsCode='IGNF:'+url[1];}}
this.srsCode=srsCode.toUpperCase();if(this.srsCode.indexOf("EPSG")==0){this.srsCode=this.srsCode;this.srsAuth='epsg';this.srsProjNumber=this.srsCode.substring(5);}else if(this.srsCode.indexOf("IGNF")==0){this.srsCode=this.srsCode;this.srsAuth='IGNF';this.srsProjNumber=this.srsCode.substring(5);}else if(this.srsCode.indexOf("CRS")==0){this.srsCode=this.srsCode;this.srsAuth='CRS';this.srsProjNumber=this.srsCode.substring(4);}else{this.srsAuth='';this.srsProjNumber=this.srsCode;}
this.loadProjDefinition();},loadProjDefinition:function(){if(Proj4js.defs[this.srsCode]){this.defsLoaded();return;}
var url=Proj4js.getScriptLocation()+'defs/'+this.srsAuth.toUpperCase()+this.srsProjNumber+'.js';Proj4js.loadScript(url,Proj4js.bind(this.defsLoaded,this),Proj4js.bind(this.loadFromService,this),Proj4js.bind(this.checkDefsLoaded,this));},loadFromService:function(){var url=Proj4js.defsLookupService+'/'+this.srsAuth+'/'+this.srsProjNumber+'/proj4js/';Proj4js.loadScript(url,Proj4js.bind(this.defsLoaded,this),Proj4js.bind(this.defsFailed,this),Proj4js.bind(this.checkDefsLoaded,this));},defsLoaded:function(){this.parseDefs();this.loadProjCode(this.projName);},checkDefsLoaded:function(){if(Proj4js.defs[this.srsCode]){return true;}else{return false;}},defsFailed:function(){Proj4js.reportError('failed to load projection definition for: '+this.srsCode);Proj4js.defs[this.srsCode]=Proj4js.defs['WGS84'];this.defsLoaded();},loadProjCode:function(projName){if(Proj4js.Proj[projName]){this.initTransforms();return;}
var url=Proj4js.getScriptLocation()+'projCode/'+projName+'.js';Proj4js.loadScript(url,Proj4js.bind(this.loadProjCodeSuccess,this,projName),Proj4js.bind(this.loadProjCodeFailure,this,projName),Proj4js.bind(this.checkCodeLoaded,this,projName));},loadProjCodeSuccess:function(projName){if(Proj4js.Proj[projName].dependsOn){this.loadProjCode(Proj4js.Proj[projName].dependsOn);}else{this.initTransforms();}},loadProjCodeFailure:function(projName){Proj4js.reportError("failed to find projection file for: "+projName);},checkCodeLoaded:function(projName){if(Proj4js.Proj[projName]){return true;}else{return false;}},initTransforms:function(){Proj4js.extend(this,Proj4js.Proj[this.projName]);this.init();this.readyToUse=true;},parseDefs:function(){this.defData=Proj4js.defs[this.srsCode];var paramName,paramVal;if(!this.defData){return;}
var paramArray=this.defData.split("+");for(var prop=0;prop<paramArray.length;prop++){var property=paramArray[prop].split("=");paramName=property[0].toLowerCase();paramVal=property[1];switch(paramName.replace(/\s/gi,"")){case"":break;case"title":this.title=paramVal;break;case"proj":this.projName=paramVal.replace(/\s/gi,"");break;case"units":this.units=paramVal.replace(/\s/gi,"");break;case"datum":this.datumCode=paramVal.replace(/\s/gi,"");break;case"nadgrids":this.nagrids=paramVal.replace(/\s/gi,"");break;case"ellps":this.ellps=paramVal.replace(/\s/gi,"");break;case"a":this.a=parseFloat(paramVal);break;case"b":this.b=parseFloat(paramVal);break;case"rf":this.rf=parseFloat(paramVal);break;case"lat_0":this.lat0=paramVal*Proj4js.common.D2R;break;case"lat_1":this.lat1=paramVal*Proj4js.common.D2R;break;case"lat_2":this.lat2=paramVal*Proj4js.common.D2R;break;case"lat_ts":this.lat_ts=paramVal*Proj4js.common.D2R;break;case"lon_0":this.long0=paramVal*Proj4js.common.D2R;break;case"alpha":this.alpha=parseFloat(paramVal)*Proj4js.common.D2R;break;case"lonc":this.longc=paramVal*Proj4js.common.D2R;break;case"x_0":this.x0=parseFloat(paramVal);break;case"y_0":this.y0=parseFloat(paramVal);break;case"k_0":this.k0=parseFloat(paramVal);break;case"k":this.k0=parseFloat(paramVal);break;case"r_a":this.R_A=true;break;case"zone":this.zone=parseInt(paramVal);break;case"south":this.utmSouth=true;break;case"towgs84":this.datum_params=paramVal.split(",");break;case"to_meter":this.to_meter=parseFloat(paramVal);break;case"from_greenwich":this.from_greenwich=paramVal*Proj4js.common.D2R;break;case"pm":paramVal=paramVal.replace(/\s/gi,"");this.from_greenwich=Proj4js.PrimeMeridian[paramVal]?Proj4js.PrimeMeridian[paramVal]:parseFloat(paramVal);this.from_greenwich*=Proj4js.common.D2R;break;case"no_defs":break;default:}}
this.deriveConstants();},deriveConstants:function(){if(this.nagrids=='@null')this.datumCode='none';if(this.datumCode&&this.datumCode!='none'){var datumDef=Proj4js.Datum[this.datumCode];if(datumDef){this.datum_params=datumDef.towgs84.split(',');this.ellps=datumDef.ellipse;this.datumName=datumDef.datumName?datumDef.datumName:this.datumCode;}}
if(!this.a){var ellipse=Proj4js.Ellipsoid[this.ellps]?Proj4js.Ellipsoid[this.ellps]:Proj4js.Ellipsoid['WGS84'];Proj4js.extend(this,ellipse);}
if(this.rf&&!this.b)this.b=(1.0-1.0/this.rf)*this.a;if(Math.abs(this.a-this.b)<Proj4js.common.EPSLN){this.sphere=true;this.b=this.a;}
this.a2=this.a*this.a;this.b2=this.b*this.b;this.es=(this.a2-this.b2)/this.a2;this.e=Math.sqrt(this.es);if(this.R_A){this.a*=1.-this.es*(Proj4js.common.SIXTH+this.es*(Proj4js.common.RA4+this.es*Proj4js.common.RA6));this.a2=this.a*this.a;this.b2=this.b*this.b;this.es=0.;}
this.ep2=(this.a2-this.b2)/this.b2;if(!this.k0)this.k0=1.0;this.datum=new Proj4js.datum(this);}});Proj4js.Proj.longlat={init:function(){},forward:function(pt){return pt;},inverse:function(pt){return pt;}};Proj4js.defs={'WGS84':"+title=long/lat:WGS84 +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees",'EPSG:4326':"+title=long/lat:WGS84 +proj=longlat +a=6378137.0 +b=6356752.31424518 +ellps=WGS84 +datum=WGS84 +units=degrees",'EPSG:4269':"+title=long/lat:NAD83 +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees",'EPSG:3785':"+title= Google Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"};Proj4js.defs['GOOGLE']=Proj4js.defs['EPSG:3785'];Proj4js.defs['EPSG:900913']=Proj4js.defs['EPSG:3785'];Proj4js.defs['EPSG:102113']=Proj4js.defs['EPSG:3785'];Proj4js.common={PI:3.141592653589793238,HALF_PI:1.570796326794896619,TWO_PI:6.283185307179586477,FORTPI:0.78539816339744833,R2D:57.29577951308232088,D2R:0.01745329251994329577,SEC_TO_RAD:4.84813681109535993589914102357e-6,EPSLN:1.0e-10,MAX_ITER:20,COS_67P5:0.38268343236508977,AD_C:1.0026000,PJD_UNKNOWN:0,PJD_3PARAM:1,PJD_7PARAM:2,PJD_GRIDSHIFT:3,PJD_WGS84:4,PJD_NODATUM:5,SRS_WGS84_SEMIMAJOR:6378137.0,SIXTH:.1666666666666666667,RA4:.04722222222222222222,RA6:.02215608465608465608,RV4:.06944444444444444444,RV6:.04243827160493827160,msfnz:function(eccent,sinphi,cosphi){var con=eccent*sinphi;return cosphi/(Math.sqrt(1.0-con*con));},tsfnz:function(eccent,phi,sinphi){var con=eccent*sinphi;var com=.5*eccent;con=Math.pow(((1.0-con)/(1.0+con)),com);return(Math.tan(.5*(this.HALF_PI-phi))/con);},phi2z:function(eccent,ts){var eccnth=.5*eccent;var con,dphi;var phi=this.HALF_PI-2*Math.atan(ts);for(i=0;i<=15;i++){con=eccent*Math.sin(phi);dphi=this.HALF_PI-2*Math.atan(ts*(Math.pow(((1.0-con)/(1.0+con)),eccnth)))-phi;phi+=dphi;if(Math.abs(dphi)<=.0000000001)return phi;}
alert("phi2z has NoConvergence");return(-9999);},qsfnz:function(eccent,sinphi,cosphi){var con;if(eccent>1.0e-7){con=eccent*sinphi;return((1.0-eccent*eccent)*(sinphi/(1.0-con*con)-(.5/eccent)*Math.log((1.0-con)/(1.0+con))));}else{return(2.0*sinphi);}},asinz:function(x){if(Math.abs(x)>1.0){x=(x>1.0)?1.0:-1.0;}
return Math.asin(x);},e0fn:function(x){return(1.0-0.25*x*(1.0+x/16.0*(3.0+1.25*x)));},e1fn:function(x){return(0.375*x*(1.0+0.25*x*(1.0+0.46875*x)));},e2fn:function(x){return(0.05859375*x*x*(1.0+0.75*x));},e3fn:function(x){return(x*x*x*(35.0/3072.0));},mlfn:function(e0,e1,e2,e3,phi){return(e0*phi-e1*Math.sin(2.0*phi)+e2*Math.sin(4.0*phi)-e3*Math.sin(6.0*phi));},srat:function(esinp,exp){return(Math.pow((1.0-esinp)/(1.0+esinp),exp));},sign:function(x){if(x<0.0)return(-1);else return(1);},adjust_lon:function(x){x=(Math.abs(x)<this.PI)?x:(x-(this.sign(x)*this.TWO_PI));return x;},adjust_lat:function(x){x=(Math.abs(x)<this.HALF_PI)?x:(x-(this.sign(x)*this.PI));return x;},latiso:function(eccent,phi,sinphi)
{if(Math.abs(phi)>this.HALF_PI)return+Number.NaN;if(phi==this.HALF_PI)return Number.POSITIVE_INFINITY;if(phi==-1.0*this.HALF_PI)return-1.0*Number.POSITIVE_INFINITY;var con=eccent*sinphi;return Math.log(Math.tan((this.HALF_PI+phi)/2.0))+eccent*Math.log((1.0-con)/(1.0+con))/2.0;},fL:function(x,L){return 2.0*Math.atan(x*Math.exp(L))-this.HALF_PI;},invlatiso:function(eccent,ts){var phi=this.fL(1.0,ts);var Iphi=0.0;var con=0.0;do{Iphi=phi;con=eccent*Math.sin(Iphi);phi=this.fL(Math.exp(eccent*Math.log((1.0+con)/(1.0-con))/2.0),ts)}while(Math.abs(phi-Iphi)>1.0e-12);return phi;},sinh:function(x)
{var r=Math.exp(x);r=(r-1.0/r)/2.0;return r;},cosh:function(x)
{var r=Math.exp(x);r=(r+1.0/r)/2.0;return r;},tanh:function(x)
{var r=Math.exp(x);r=(r-1.0/r)/(r+1.0/r);return r;},asinh:function(x)
{var s=(x>=0?1.0:-1.0);return s*(Math.log(Math.abs(x)+Math.sqrt(x*x+1.0)));},acosh:function(x)
{return 2.0*Math.log(Math.sqrt((x+1.0)/2.0)+Math.sqrt((x-1.0)/2.0));},atanh:function(x)
{return Math.log((x-1.0)/(x+1.0))/2.0;},gN:function(a,e,sinphi)
{var temp=e*sinphi;return a/Math.sqrt(1.0-temp*temp);}};Proj4js.datum=Proj4js.Class({initialize:function(proj){this.datum_type=Proj4js.common.PJD_WGS84;if(proj.datumCode&&proj.datumCode=='none'){this.datum_type=Proj4js.common.PJD_NODATUM;}
if(proj&&proj.datum_params){for(var i=0;i<proj.datum_params.length;i++){proj.datum_params[i]=parseFloat(proj.datum_params[i]);}
if(proj.datum_params[0]!=0||proj.datum_params[1]!=0||proj.datum_params[2]!=0){this.datum_type=Proj4js.common.PJD_3PARAM;}
if(proj.datum_params.length>3){if(proj.datum_params[3]!=0||proj.datum_params[4]!=0||proj.datum_params[5]!=0||proj.datum_params[6]!=0){this.datum_type=Proj4js.common.PJD_7PARAM;proj.datum_params[3]*=Proj4js.common.SEC_TO_RAD;proj.datum_params[4]*=Proj4js.common.SEC_TO_RAD;proj.datum_params[5]*=Proj4js.common.SEC_TO_RAD;proj.datum_params[6]=(proj.datum_params[6]/1000000.0)+1.0;}}}
if(proj){this.a=proj.a;this.b=proj.b;this.es=proj.es;this.ep2=proj.ep2;this.datum_params=proj.datum_params;}},compare_datums:function(dest){if(this.datum_type!=dest.datum_type){return false;}else if(this.a!=dest.a||Math.abs(this.es-dest.es)>0.000000000050){return false;}else if(this.datum_type==Proj4js.common.PJD_3PARAM){return(this.datum_params[0]==dest.datum_params[0]&&this.datum_params[1]==dest.datum_params[1]&&this.datum_params[2]==dest.datum_params[2]);}else if(this.datum_type==Proj4js.common.PJD_7PARAM){return(this.datum_params[0]==dest.datum_params[0]&&this.datum_params[1]==dest.datum_params[1]&&this.datum_params[2]==dest.datum_params[2]&&this.datum_params[3]==dest.datum_params[3]&&this.datum_params[4]==dest.datum_params[4]&&this.datum_params[5]==dest.datum_params[5]&&this.datum_params[6]==dest.datum_params[6]);}else if(this.datum_type==Proj4js.common.PJD_GRIDSHIFT){return strcmp(pj_param(this.params,"snadgrids").s,pj_param(dest.params,"snadgrids").s)==0;}else{return true;}},geodetic_to_geocentric:function(p){var Longitude=p.x;var Latitude=p.y;var Height=p.z?p.z:0;var X;var Y;var Z;var Error_Code=0;var Rn;var Sin_Lat;var Sin2_Lat;var Cos_Lat;if(Latitude<-Proj4js.common.HALF_PI&&Latitude>-1.001*Proj4js.common.HALF_PI){Latitude=-Proj4js.common.HALF_PI;}else if(Latitude>Proj4js.common.HALF_PI&&Latitude<1.001*Proj4js.common.HALF_PI){Latitude=Proj4js.common.HALF_PI;}else if((Latitude<-Proj4js.common.HALF_PI)||(Latitude>Proj4js.common.HALF_PI)){Proj4js.reportError('geocent:lat out of range:'+Latitude);return null;}
if(Longitude>Proj4js.common.PI)Longitude-=(2*Proj4js.common.PI);Sin_Lat=Math.sin(Latitude);Cos_Lat=Math.cos(Latitude);Sin2_Lat=Sin_Lat*Sin_Lat;Rn=this.a/(Math.sqrt(1.0e0-this.es*Sin2_Lat));X=(Rn+Height)*Cos_Lat*Math.cos(Longitude);Y=(Rn+Height)*Cos_Lat*Math.sin(Longitude);Z=((Rn*(1-this.es))+Height)*Sin_Lat;p.x=X;p.y=Y;p.z=Z;return Error_Code;},geocentric_to_geodetic:function(p){var genau=1.E-12;var genau2=(genau*genau);var maxiter=30;var P;var RR;var CT;var ST;var RX;var RK;var RN;var CPHI0;var SPHI0;var CPHI;var SPHI;var SDPHI;var At_Pole;var iter;var X=p.x;var Y=p.y;var Z=p.z?p.z:0.0;var Longitude;var Latitude;var Height;At_Pole=false;P=Math.sqrt(X*X+Y*Y);RR=Math.sqrt(X*X+Y*Y+Z*Z);if(P/this.a<genau){At_Pole=true;Longitude=0.0;if(RR/this.a<genau){Latitude=Proj4js.common.HALF_PI;Height=-this.b;return;}}else{Longitude=Math.atan2(Y,X);}
CT=Z/RR;ST=P/RR;RX=1.0/Math.sqrt(1.0-this.es*(2.0-this.es)*ST*ST);CPHI0=ST*(1.0-this.es)*RX;SPHI0=CT*RX;iter=0;do
{iter++;RN=this.a/Math.sqrt(1.0-this.es*SPHI0*SPHI0);Height=P*CPHI0+Z*SPHI0-RN*(1.0-this.es*SPHI0*SPHI0);RK=this.es*RN/(RN+Height);RX=1.0/Math.sqrt(1.0-RK*(2.0-RK)*ST*ST);CPHI=ST*(1.0-RK)*RX;SPHI=CT*RX;SDPHI=SPHI*CPHI0-CPHI*SPHI0;CPHI0=CPHI;SPHI0=SPHI;}
while(SDPHI*SDPHI>genau2&&iter<maxiter);Latitude=Math.atan(SPHI/Math.abs(CPHI));p.x=Longitude;p.y=Latitude;p.z=Height;return p;},geocentric_to_geodetic_noniter:function(p){var X=p.x;var Y=p.y;var Z=p.z?p.z:0;var Longitude;var Latitude;var Height;var W;var W2;var T0;var T1;var S0;var S1;var Sin_B0;var Sin3_B0;var Cos_B0;var Sin_p1;var Cos_p1;var Rn;var Sum;var At_Pole;X=parseFloat(X);Y=parseFloat(Y);Z=parseFloat(Z);At_Pole=false;if(X!=0.0)
{Longitude=Math.atan2(Y,X);}
else
{if(Y>0)
{Longitude=Proj4js.common.HALF_PI;}
else if(Y<0)
{Longitude=-Proj4js.common.HALF_PI;}
else
{At_Pole=true;Longitude=0.0;if(Z>0.0)
{Latitude=Proj4js.common.HALF_PI;}
else if(Z<0.0)
{Latitude=-Proj4js.common.HALF_PI;}
else
{Latitude=Proj4js.common.HALF_PI;Height=-this.b;return;}}}
W2=X*X+Y*Y;W=Math.sqrt(W2);T0=Z*Proj4js.common.AD_C;S0=Math.sqrt(T0*T0+W2);Sin_B0=T0/S0;Cos_B0=W/S0;Sin3_B0=Sin_B0*Sin_B0*Sin_B0;T1=Z+this.b*this.ep2*Sin3_B0;Sum=W-this.a*this.es*Cos_B0*Cos_B0*Cos_B0;S1=Math.sqrt(T1*T1+Sum*Sum);Sin_p1=T1/S1;Cos_p1=Sum/S1;Rn=this.a/Math.sqrt(1.0-this.es*Sin_p1*Sin_p1);if(Cos_p1>=Proj4js.common.COS_67P5)
{Height=W/Cos_p1-Rn;}
else if(Cos_p1<=-Proj4js.common.COS_67P5)
{Height=W/-Cos_p1-Rn;}
else
{Height=Z/Sin_p1+Rn*(this.es-1.0);}
if(At_Pole==false)
{Latitude=Math.atan(Sin_p1/Cos_p1);}
p.x=Longitude;p.y=Latitude;p.z=Height;return p;},geocentric_to_wgs84:function(p){if(this.datum_type==Proj4js.common.PJD_3PARAM)
{p.x+=this.datum_params[0];p.y+=this.datum_params[1];p.z+=this.datum_params[2];}
else if(this.datum_type==Proj4js.common.PJD_7PARAM)
{var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_out=M_BF*(p.x-Rz_BF*p.y+Ry_BF*p.z)+Dx_BF;var y_out=M_BF*(Rz_BF*p.x+p.y-Rx_BF*p.z)+Dy_BF;var z_out=M_BF*(-Ry_BF*p.x+Rx_BF*p.y+p.z)+Dz_BF;p.x=x_out;p.y=y_out;p.z=z_out;}},geocentric_from_wgs84:function(p){if(this.datum_type==Proj4js.common.PJD_3PARAM)
{p.x-=this.datum_params[0];p.y-=this.datum_params[1];p.z-=this.datum_params[2];}
else if(this.datum_type==Proj4js.common.PJD_7PARAM)
{var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_tmp=(p.x-Dx_BF)/M_BF;var y_tmp=(p.y-Dy_BF)/M_BF;var z_tmp=(p.z-Dz_BF)/M_BF;p.x=x_tmp+Rz_BF*y_tmp-Ry_BF*z_tmp;p.y=-Rz_BF*x_tmp+y_tmp+Rx_BF*z_tmp;p.z=Ry_BF*x_tmp-Rx_BF*y_tmp+z_tmp;}}});Proj4js.Point=Proj4js.Class({initialize:function(x,y,z){if(typeof x=='object'){this.x=x[0];this.y=x[1];this.z=x[2]||0.0;}else if(typeof x=='string'){var coords=x.split(',');this.x=parseFloat(coords[0]);this.y=parseFloat(coords[1]);this.z=parseFloat(coords[2])||0.0;}else{this.x=x;this.y=y;this.z=z||0.0;}},clone:function(){return new Proj4js.Point(this.x,this.y,this.z);},toString:function(){return("x="+this.x+",y="+this.y);},toShortString:function(){return(this.x+", "+this.y);}});Proj4js.PrimeMeridian={"greenwich":0.0,"lisbon":-9.131906111111,"paris":2.337229166667,"bogota":-74.080916666667,"madrid":-3.687938888889,"rome":12.452333333333,"bern":7.439583333333,"jakarta":106.807719444444,"ferro":-17.666666666667,"brussels":4.367975,"stockholm":18.058277777778,"athens":23.7163375,"oslo":10.722916666667};Proj4js.Ellipsoid={"MERIT":{a:6378137.0,rf:298.257,ellipseName:"MERIT 1983"},"SGS85":{a:6378136.0,rf:298.257,ellipseName:"Soviet Geodetic System 85"},"GRS80":{a:6378137.0,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},"IAU76":{a:6378140.0,rf:298.257,ellipseName:"IAU 1976"},"airy":{a:6377563.396,b:6356256.910,ellipseName:"Airy 1830"},"APL4.":{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},"NWL9D":{a:6378145.0,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},"mod_airy":{a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"},"andrae":{a:6377104.43,rf:300.0,ellipseName:"Andrae 1876 (Den., Iclnd.)"},"aust_SA":{a:6378160.0,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},"GRS67":{a:6378160.0,rf:298.2471674270,ellipseName:"GRS 67(IUGG 1967)"},"bessel":{a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"},"bess_nam":{a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},"clrk66":{a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"},"clrk80":{a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."},"CPM":{a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},"delmbr":{a:6376428.0,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},"engelis":{a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"},"evrst30":{a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"},"evrst48":{a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"},"evrst56":{a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"},"evrst69":{a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"},"evrstSS":{a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},"fschr60":{a:6378166.0,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},"fschr60m":{a:6378155.0,rf:298.3,ellipseName:"Fischer 1960"},"fschr68":{a:6378150.0,rf:298.3,ellipseName:"Fischer 1968"},"helmert":{a:6378200.0,rf:298.3,ellipseName:"Helmert 1906"},"hough":{a:6378270.0,rf:297.0,ellipseName:"Hough"},"intl":{a:6378388.0,rf:297.0,ellipseName:"International 1909 (Hayford)"},"kaula":{a:6378163.0,rf:298.24,ellipseName:"Kaula 1961"},"lerch":{a:6378139.0,rf:298.257,ellipseName:"Lerch 1979"},"mprts":{a:6397300.0,rf:191.0,ellipseName:"Maupertius 1738"},"new_intl":{a:6378157.5,b:6356772.2,ellipseName:"New International 1967"},"plessis":{a:6376523.0,rf:6355863.0,ellipseName:"Plessis 1817 (France)"},"krass":{a:6378245.0,rf:298.3,ellipseName:"Krassovsky, 1942"},"SEasia":{a:6378155.0,b:6356773.3205,ellipseName:"Southeast Asia"},"walbeck":{a:6376896.0,b:6355834.8467,ellipseName:"Walbeck"},"WGS60":{a:6378165.0,rf:298.3,ellipseName:"WGS 60"},"WGS66":{a:6378145.0,rf:298.25,ellipseName:"WGS 66"},"WGS72":{a:6378135.0,rf:298.26,ellipseName:"WGS 72"},"WGS84":{a:6378137.0,rf:298.257223563,ellipseName:"WGS 84"},"sphere":{a:6370997.0,b:6370997.0,ellipseName:"Normal Sphere (r=6370997)"}};Proj4js.Datum={"WGS84":{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},"GGRS87":{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},"NAD83":{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},"NAD27":{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},"potsdam":{towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},"carthage":{towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},"hermannskogel":{towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"},"ire65":{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},"nzgd49":{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},"OSGB36":{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"}};Proj4js.WGS84=new Proj4js.Proj('WGS84');Proj4js.Datum['OSB36']=Proj4js.Datum['OSGB36'];Proj4js.Proj.aea={init:function(){if(Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN){Proj4js.reportError("aeaInitEqualLatitudes");return;}
this.temp=this.b/this.a;this.es=1.0-Math.pow(this.temp,2);this.e3=Math.sqrt(this.es);this.sin_po=Math.sin(this.lat1);this.cos_po=Math.cos(this.lat1);this.t1=this.sin_po;this.con=this.sin_po;this.ms1=Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po);this.qs1=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po);this.sin_po=Math.sin(this.lat2);this.cos_po=Math.cos(this.lat2);this.t2=this.sin_po;this.ms2=Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po);this.qs2=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po);this.sin_po=Math.sin(this.lat0);this.cos_po=Math.cos(this.lat0);this.t3=this.sin_po;this.qs0=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po);if(Math.abs(this.lat1-this.lat2)>Proj4js.common.EPSLN){this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1);}else{this.ns0=this.con;}
this.c=this.ms1*this.ms1+this.ns0*this.qs1;this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0;},forward:function(p){var lon=p.x;var lat=p.y;this.sin_phi=Math.sin(lat);this.cos_phi=Math.cos(lat);var qs=Proj4js.common.qsfnz(this.e3,this.sin_phi,this.cos_phi);var rh1=this.a*Math.sqrt(this.c-this.ns0*qs)/this.ns0;var theta=this.ns0*Proj4js.common.adjust_lon(lon-this.long0);var x=rh1*Math.sin(theta)+this.x0;var y=this.rh-rh1*Math.cos(theta)+this.y0;p.x=x;p.y=y;return p;},inverse:function(p){var rh1,qs,con,theta,lon,lat;p.x-=this.x0;p.y=this.rh-p.y+this.y0;if(this.ns0>=0){rh1=Math.sqrt(p.x*p.x+p.y*p.y);con=1.0;}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1.0;}
theta=0.0;if(rh1!=0.0){theta=Math.atan2(con*p.x,con*p.y);}
con=rh1*this.ns0/this.a;qs=(this.c-con*con)/this.ns0;if(this.e3>=1e-10){con=1-.5*(1.0-this.es)*Math.log((1.0-this.e3)/(1.0+this.e3))/this.e3;if(Math.abs(Math.abs(con)-Math.abs(qs))>.0000000001){lat=this.phi1z(this.e3,qs);}else{if(qs>=0){lat=.5*PI;}else{lat=-.5*PI;}}}else{lat=this.phi1z(e3,qs);}
lon=Proj4js.common.adjust_lon(theta/this.ns0+this.long0);p.x=lon;p.y=lat;return p;},phi1z:function(eccent,qs){var con,com,dphi;var phi=Proj4js.common.asinz(.5*qs);if(eccent<Proj4js.common.EPSLN)return phi;var eccnts=eccent*eccent;for(var i=1;i<=25;i++){sinphi=Math.sin(phi);cosphi=Math.cos(phi);con=eccent*sinphi;com=1.0-con*con;dphi=.5*com*com/cosphi*(qs/(1.0-eccnts)-sinphi/com+.5/eccent*Math.log((1.0-con)/(1.0+con)));phi=phi+dphi;if(Math.abs(dphi)<=1e-7)return phi;}
Proj4js.reportError("aea:phi1z:Convergence error");return null;}};Proj4js.Proj.sterea={dependsOn:'gauss',init:function(){Proj4js.Proj['gauss'].init.apply(this);if(!this.rc){Proj4js.reportError("sterea:init:E_ERROR_0");return;}
this.sinc0=Math.sin(this.phic0);this.cosc0=Math.cos(this.phic0);this.R2=2.0*this.rc;if(!this.title)this.title="Oblique Stereographic Alternative";},forward:function(p){p.x=Proj4js.common.adjust_lon(p.x-this.long0);Proj4js.Proj['gauss'].forward.apply(this,[p]);sinc=Math.sin(p.y);cosc=Math.cos(p.y);cosl=Math.cos(p.x);k=this.k0*this.R2/(1.0+this.sinc0*sinc+this.cosc0*cosc*cosl);p.x=k*cosc*Math.sin(p.x);p.y=k*(this.cosc0*sinc-this.sinc0*cosc*cosl);p.x=this.a*p.x+this.x0;p.y=this.a*p.y+this.y0;return p;},inverse:function(p){var lon,lat;p.x=(p.x-this.x0)/this.a;p.y=(p.y-this.y0)/this.a;p.x/=this.k0;p.y/=this.k0;if((rho=Math.sqrt(p.x*p.x+p.y*p.y))){c=2.0*Math.atan2(rho,this.R2);sinc=Math.sin(c);cosc=Math.cos(c);lat=Math.asin(cosc*this.sinc0+p.y*sinc*this.cosc0/rho);lon=Math.atan2(p.x*sinc,rho*this.cosc0*cosc-p.y*this.sinc0*sinc);}else{lat=this.phic0;lon=0.;}
p.x=lon;p.y=lat;Proj4js.Proj['gauss'].inverse.apply(this,[p]);p.x=Proj4js.common.adjust_lon(p.x+this.long0);return p;}};function phi4z(eccent,e0,e1,e2,e3,a,b,c,phi){var sinphi,sin2ph,tanph,ml,mlp,con1,con2,con3,dphi,i;phi=a;for(i=1;i<=15;i++){sinphi=Math.sin(phi);tanphi=Math.tan(phi);c=tanphi*Math.sqrt(1.0-eccent*sinphi*sinphi);sin2ph=Math.sin(2.0*phi);ml=e0*phi-e1*sin2ph+e2*Math.sin(4.0*phi)-e3*Math.sin(6.0*phi);mlp=e0-2.0*e1*Math.cos(2.0*phi)+4.0*e2*Math.cos(4.0*phi)-6.0*e3*Math.cos(6.0*phi);con1=2.0*ml+c*(ml*ml+b)-2.0*a*(c*ml+1.0);con2=eccent*sin2ph*(ml*ml+b-2.0*a*ml)/(2.0*c);con3=2.0*(a-ml)*(c*mlp-2.0/sin2ph)-2.0*mlp;dphi=con1/(con2+con3);phi+=dphi;if(Math.abs(dphi)<=.0000000001)return(phi);}
Proj4js.reportError("phi4z: No convergence");return null;}
function e4fn(x){var con,com;con=1.0+x;com=1.0-x;return(Math.sqrt((Math.pow(con,con))*(Math.pow(com,com))));}
Proj4js.Proj.poly={init:function(){var temp;if(this.lat0=0)this.lat0=90;this.temp=this.b/this.a;this.es=1.0-Math.pow(this.temp,2);this.e=Math.sqrt(this.es);this.e0=Proj4js.common.e0fn(this.es);this.e1=Proj4js.common.e1fn(this.es);this.e2=Proj4js.common.e2fn(this.es);this.e3=Proj4js.common.e3fn(this.es);this.ml0=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0);},forward:function(p){var sinphi,cosphi;var al;var c;var con,ml;var ms;var x,y;var lon=p.x;var lat=p.y;con=Proj4js.common.adjust_lon(lon-this.long0);if(Math.abs(lat)<=.0000001){x=this.x0+this.a*con;y=this.y0-this.a*this.ml0;}else{sinphi=Math.sin(lat);cosphi=Math.cos(lat);ml=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,lat);ms=Proj4js.common.msfnz(this.e,sinphi,cosphi);con=sinphi;x=this.x0+this.a*ms*Math.sin(con)/sinphi;y=this.y0+this.a*(ml-this.ml0+ms*(1.0-Math.cos(con))/sinphi);}
p.x=x;p.y=y;return p;},inverse:function(p){var sin_phi,cos_phi;var al;var b;var c;var con,ml;var iflg;var lon,lat;p.x-=this.x0;p.y-=this.y0;al=this.ml0+p.y/this.a;iflg=0;if(Math.abs(al)<=.0000001){lon=p.x/this.a+this.long0;lat=0.0;}else{b=al*al+(p.x/this.a)*(p.x/this.a);iflg=phi4z(this.es,this.e0,this.e1,this.e2,this.e3,this.al,b,c,lat);if(iflg!=1)return(iflg);lon=Proj4js.common.adjust_lon((Proj4js.common.asinz(p.x*c/this.a)/Math.sin(lat))+this.long0);}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.equi={init:function(){if(!this.x0)this.x0=0;if(!this.y0)this.y0=0;if(!this.lat0)this.lat0=0;if(!this.long0)this.long0=0;},forward:function(p){var lon=p.x;var lat=p.y;var dlon=Proj4js.common.adjust_lon(lon-this.long0);var x=this.x0+this.a*dlon*Math.cos(this.lat0);var y=this.y0+this.a*lat;this.t1=x;this.t2=Math.cos(this.lat0);p.x=x;p.y=y;return p;},inverse:function(p){p.x-=this.x0;p.y-=this.y0;var lat=p.y/this.a;if(Math.abs(lat)>Proj4js.common.HALF_PI){Proj4js.reportError("equi:Inv:DataError");}
var lon=Proj4js.common.adjust_lon(this.long0+p.x/(this.a*Math.cos(this.lat0)));p.x=lon;p.y=lat;}};Proj4js.Proj.merc={init:function(){if(this.lat_ts){if(this.sphere){this.k0=Math.cos(this.lat_ts);}else{this.k0=Proj4js.common.msfnz(this.es,Math.sin(this.lat_ts),Math.cos(this.lat_ts));}}},forward:function(p){var lon=p.x;var lat=p.y;if(lat*Proj4js.common.R2D>90.0&&lat*Proj4js.common.R2D<-90.0&&lon*Proj4js.common.R2D>180.0&&lon*Proj4js.common.R2D<-180.0){Proj4js.reportError("merc:forward: llInputOutOfRange: "+lon+" : "+lat);return null;}
var x,y;if(Math.abs(Math.abs(lat)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN){Proj4js.reportError("merc:forward: ll2mAtPoles");return null;}else{if(this.sphere){x=this.x0+this.a*this.k0*Proj4js.common.adjust_lon(lon-this.long0);y=this.y0+this.a*this.k0*Math.log(Math.tan(Proj4js.common.FORTPI+0.5*lat));}else{var sinphi=Math.sin(lat);var ts=Proj4js.common.tsfnz(this.e,lat,sinphi);x=this.x0+this.a*this.k0*Proj4js.common.adjust_lon(lon-this.long0);y=this.y0-this.a*this.k0*Math.log(ts);}
p.x=x;p.y=y;return p;}},inverse:function(p){var x=p.x-this.x0;var y=p.y-this.y0;var lon,lat;if(this.sphere){lat=Proj4js.common.HALF_PI-2.0*Math.atan(Math.exp(-y/this.a*this.k0));}else{var ts=Math.exp(-y/(this.a*this.k0));lat=Proj4js.common.phi2z(this.e,ts);if(lat==-9999){Proj4js.reportError("merc:inverse: lat = -9999");return null;}}
lon=Proj4js.common.adjust_lon(this.long0+x/(this.a*this.k0));p.x=lon;p.y=lat;return p;}};Proj4js.Proj.utm={dependsOn:'tmerc',init:function(){if(!this.zone){Proj4js.reportError("utm:init: zone must be specified for UTM");return;}
this.lat0=0.0;this.long0=((6*Math.abs(this.zone))-183)*Proj4js.common.D2R;this.x0=500000.0;this.y0=this.utmSouth?10000000.0:0.0;this.k0=0.9996;Proj4js.Proj['tmerc'].init.apply(this);this.forward=Proj4js.Proj['tmerc'].forward;this.inverse=Proj4js.Proj['tmerc'].inverse;}};Proj4js.Proj.eqdc={init:function(){if(!this.mode)this.mode=0;this.temp=this.b/this.a;this.es=1.0-Math.pow(this.temp,2);this.e=Math.sqrt(this.es);this.e0=Proj4js.common.e0fn(this.es);this.e1=Proj4js.common.e1fn(this.es);this.e2=Proj4js.common.e2fn(this.es);this.e3=Proj4js.common.e3fn(this.es);this.sinphi=Math.sin(this.lat1);this.cosphi=Math.cos(this.lat1);this.ms1=Proj4js.common.msfnz(this.e,this.sinphi,this.cosphi);this.ml1=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat1);if(this.mode!=0){if(Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN){Proj4js.reportError("eqdc:Init:EqualLatitudes");}
this.sinphi=Math.sin(this.lat2);this.cosphi=Math.cos(this.lat2);this.ms2=Proj4js.common.msfnz(this.e,this.sinphi,this.cosphi);this.ml2=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat2);if(Math.abs(this.lat1-this.lat2)>=Proj4js.common.EPSLN){this.ns=(this.ms1-this.ms2)/(this.ml2-this.ml1);}else{this.ns=this.sinphi;}}else{this.ns=this.sinphi;}
this.g=this.ml1+this.ms1/this.ns;this.ml0=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0);this.rh=this.a*(this.g-this.ml0);},forward:function(p){var lon=p.x;var lat=p.y;var ml=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,lat);var rh1=this.a*(this.g-ml);var theta=this.ns*Proj4js.common.adjust_lon(lon-this.long0);var x=this.x0+rh1*Math.sin(theta);var y=this.y0+this.rh-rh1*Math.cos(theta);p.x=x;p.y=y;return p;},inverse:function(p){p.x-=this.x0;p.y=this.rh-p.y+this.y0;var con,rh1;if(this.ns>=0){var rh1=Math.sqrt(p.x*p.x+p.y*p.y);var con=1.0;}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1.0;}
var theta=0.0;if(rh1!=0.0)theta=Math.atan2(con*p.x,con*p.y);var ml=this.g-rh1/this.a;var lat=this.phi3z(this.ml,this.e0,this.e1,this.e2,this.e3);var lon=Proj4js.common.adjust_lon(this.long0+theta/this.ns);p.x=lon;p.y=lat;return p;},phi3z:function(ml,e0,e1,e2,e3){var phi;var dphi;phi=ml;for(var i=0;i<15;i++){dphi=(ml+e1*Math.sin(2.0*phi)-e2*Math.sin(4.0*phi)+e3*Math.sin(6.0*phi))/e0-phi;phi+=dphi;if(Math.abs(dphi)<=.0000000001){return phi;}}
Proj4js.reportError("PHI3Z-CONV:Latitude failed to converge after 15 iterations");return null;}};Proj4js.Proj.tmerc={init:function(){this.e0=Proj4js.common.e0fn(this.es);this.e1=Proj4js.common.e1fn(this.es);this.e2=Proj4js.common.e2fn(this.es);this.e3=Proj4js.common.e3fn(this.es);this.ml0=this.a*Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0);},forward:function(p){var lon=p.x;var lat=p.y;var delta_lon=Proj4js.common.adjust_lon(lon-this.long0);var con;var x,y;var sin_phi=Math.sin(lat);var cos_phi=Math.cos(lat);if(this.sphere){var b=cos_phi*Math.sin(delta_lon);if((Math.abs(Math.abs(b)-1.0))<.0000000001){Proj4js.reportError("tmerc:forward: Point projects into infinity");return(93);}else{x=.5*this.a*this.k0*Math.log((1.0+b)/(1.0-b));con=Math.acos(cos_phi*Math.cos(delta_lon)/Math.sqrt(1.0-b*b));if(lat<0)con=-con;y=this.a*this.k0*(con-this.lat0);}}else{var al=cos_phi*delta_lon;var als=Math.pow(al,2);var c=this.ep2*Math.pow(cos_phi,2);var tq=Math.tan(lat);var t=Math.pow(tq,2);con=1.0-this.es*Math.pow(sin_phi,2);var n=this.a/Math.sqrt(con);var ml=this.a*Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,lat);x=this.k0*n*al*(1.0+als/6.0*(1.0-t+c+als/20.0*(5.0-18.0*t+Math.pow(t,2)+72.0*c-58.0*this.ep2)))+this.x0;y=this.k0*(ml-this.ml0+n*tq*(als*(0.5+als/24.0*(5.0-t+9.0*c+4.0*Math.pow(c,2)+als/30.0*(61.0-58.0*t+Math.pow(t,2)+600.0*c-330.0*this.ep2)))))+this.y0;}
p.x=x;p.y=y;return p;},inverse:function(p){var con,phi;var delta_phi;var i;var max_iter=6;var lat,lon;if(this.sphere){var f=Math.exp(p.x/(this.a*this.k0));var g=.5*(f-1/f);var temp=this.lat0+p.y/(this.a*this.k0);var h=Math.cos(temp);con=Math.sqrt((1.0-h*h)/(1.0+g*g));lat=Proj4js.common.asinz(con);if(temp<0)
lat=-lat;if((g==0)&&(h==0)){lon=this.long0;}else{lon=Proj4js.common.adjust_lon(Math.atan2(g,h)+this.long0);}}else{var x=p.x-this.x0;var y=p.y-this.y0;con=(this.ml0+y/this.k0)/this.a;phi=con;for(i=0;true;i++){delta_phi=((con+this.e1*Math.sin(2.0*phi)-this.e2*Math.sin(4.0*phi)+this.e3*Math.sin(6.0*phi))/this.e0)-phi;phi+=delta_phi;if(Math.abs(delta_phi)<=Proj4js.common.EPSLN)break;if(i>=max_iter){Proj4js.reportError("tmerc:inverse: Latitude failed to converge");return(95);}}
if(Math.abs(phi)<Proj4js.common.HALF_PI){var sin_phi=Math.sin(phi);var cos_phi=Math.cos(phi);var tan_phi=Math.tan(phi);var c=this.ep2*Math.pow(cos_phi,2);var cs=Math.pow(c,2);var t=Math.pow(tan_phi,2);var ts=Math.pow(t,2);con=1.0-this.es*Math.pow(sin_phi,2);var n=this.a/Math.sqrt(con);var r=n*(1.0-this.es)/con;var d=x/(n*this.k0);var ds=Math.pow(d,2);lat=phi-(n*tan_phi*ds/r)*(0.5-ds/24.0*(5.0+3.0*t+10.0*c-4.0*cs-9.0*this.ep2-ds/30.0*(61.0+90.0*t+298.0*c+45.0*ts-252.0*this.ep2-3.0*cs)));lon=Proj4js.common.adjust_lon(this.long0+(d*(1.0-ds/6.0*(1.0+2.0*t+c-ds/20.0*(5.0-2.0*c+28.0*t-3.0*cs+8.0*this.ep2+24.0*ts)))/cos_phi));}else{lat=Proj4js.common.HALF_PI*Proj4js.common.sign(y);lon=this.long0;}}
p.x=lon;p.y=lat;return p;}};Proj4js.defs["GOOGLE"]="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";Proj4js.defs["EPSG:900913"]=Proj4js.defs["GOOGLE"];Proj4js.Proj.gstmerc={init:function(){var temp=this.b/this.a;this.e=Math.sqrt(1.0-temp*temp);this.lc=this.long0;this.rs=Math.sqrt(1.0+this.e*this.e*Math.pow(Math.cos(this.lat0),4.0)/(1.0-this.e*this.e));var sinz=Math.sin(this.lat0);var pc=Math.asin(sinz/this.rs);var sinzpc=Math.sin(pc);this.cp=Proj4js.common.latiso(0.0,pc,sinzpc)-this.rs*Proj4js.common.latiso(this.e,this.lat0,sinz);this.n2=this.k0*this.a*Math.sqrt(1.0-this.e*this.e)/(1.0-this.e*this.e*sinz*sinz);this.xs=this.x0;this.ys=this.y0-this.n2*pc;if(!this.title)this.title="Gauss Schreiber transverse mercator";},forward:function(p){var lon=p.x;var lat=p.y;var L=this.rs*(lon-this.lc);var Ls=this.cp+(this.rs*Proj4js.common.latiso(this.e,lat,Math.sin(lat)));var lat1=Math.asin(Math.sin(L)/Proj4js.common.cosh(Ls));var Ls1=Proj4js.common.latiso(0.0,lat1,Math.sin(lat1));p.x=this.xs+(this.n2*Ls1);p.y=this.ys+(this.n2*Math.atan(Proj4js.common.sinh(Ls)/Math.cos(L)));return p;},inverse:function(p){var x=p.x;var y=p.y;var L=Math.atan(Proj4js.common.sinh((x-this.xs)/this.n2)/Math.cos((y-this.ys)/this.n2));var lat1=Math.asin(Math.sin((y-this.ys)/this.n2)/Proj4js.common.cosh((x-this.xs)/this.n2));var LC=Proj4js.common.latiso(0.0,lat1,Math.sin(lat1));p.x=this.lc+L/this.rs;p.y=Proj4js.common.invlatiso(this.e,(LC-this.cp)/this.rs);return p;}};Proj4js.Proj.ortho={init:function(def){;this.sin_p14=Math.sin(this.lat0);this.cos_p14=Math.cos(this.lat0);},forward:function(p){var sinphi,cosphi;var dlon;var coslon;var ksp;var g;var lon=p.x;var lat=p.y;dlon=Proj4js.common.adjust_lon(lon-this.long0);sinphi=Math.sin(lat);cosphi=Math.cos(lat);coslon=Math.cos(dlon);g=this.sin_p14*sinphi+this.cos_p14*cosphi*coslon;ksp=1.0;if((g>0)||(Math.abs(g)<=Proj4js.common.EPSLN)){var x=this.a*ksp*cosphi*Math.sin(dlon);var y=this.y0+this.a*ksp*(this.cos_p14*sinphi-this.sin_p14*cosphi*coslon);}else{Proj4js.reportError("orthoFwdPointError");}
p.x=x;p.y=y;return p;},inverse:function(p){var rh;var z;var sinz,cosz;var temp;var con;var lon,lat;p.x-=this.x0;p.y-=this.y0;rh=Math.sqrt(p.x*p.x+p.y*p.y);if(rh>this.a+.0000001){Proj4js.reportError("orthoInvDataError");}
z=Proj4js.common.asinz(rh/this.a);sinz=Math.sin(z);cosi=Math.cos(z);lon=this.long0;if(Math.abs(rh)<=Proj4js.common.EPSLN){lat=this.lat0;}
lat=Proj4js.common.asinz(cosz*this.sin_p14+(y*sinz*this.cos_p14)/rh);con=Math.abs(lat0)-Proj4js.common.HALF_PI;if(Math.abs(con)<=Proj4js.common.EPSLN){if(this.lat0>=0){lon=Proj4js.common.adjust_lon(this.long0+Math.atan2(p.x,-p.y));}else{lon=Proj4js.common.adjust_lon(this.long0-Math.atan2(-p.x,p.y));}}
con=cosz-this.sin_p14*Math.sin(lat);if((Math.abs(con)>=Proj4js.common.EPSLN)||(Math.abs(x)>=Proj4js.common.EPSLN)){lon=Proj4js.common.adjust_lon(this.long0+Math.atan2((p.x*sinz*this.cos_p14),(con*rh)));}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.somerc={init:function(){var phy0=this.lat0;this.lambda0=this.long0;var sinPhy0=Math.sin(phy0);var semiMajorAxis=this.a;var invF=this.rf;var flattening=1/invF;var e2=2*flattening-Math.pow(flattening,2);var e=this.e=Math.sqrt(e2);this.R=semiMajorAxis*Math.sqrt(1-e2)/(1-e2*Math.pow(sinPhy0,2.0));this.alpha=Math.sqrt(1+e2/(1-e2)*Math.pow(Math.cos(phy0),4.0));this.b0=Math.asin(sinPhy0/this.alpha);this.K=Math.log(Math.tan(Math.PI/4.0+this.b0/2.0))
-this.alpha*Math.log(Math.tan(Math.PI/4.0+phy0/2.0))
+this.alpha*e/2*Math.log((1+e*sinPhy0)/(1-e*sinPhy0));},forward:function(p){var Sa1=Math.log(Math.tan(Math.PI/4.0-p.y/2.0));var Sa2=this.e/2.0*Math.log((1+this.e*Math.sin(p.y))/(1-this.e*Math.sin(p.y)));var S=-this.alpha*(Sa1+Sa2)+this.K;var b=2.0*(Math.atan(Math.exp(S))-Math.PI/4.0);var I=this.alpha*(p.x-this.lambda0);var rotI=Math.atan(Math.sin(I)/(Math.sin(this.b0)*Math.tan(b)+
Math.cos(this.b0)*Math.cos(I)));var rotB=Math.asin(Math.cos(this.b0)*Math.sin(b)-
Math.sin(this.b0)*Math.cos(b)*Math.cos(I));p.y=this.R/2.0*Math.log((1+Math.sin(rotB))/(1-Math.sin(rotB)))
+this.y0;p.x=this.R*rotI+this.x0;return p;},inverse:function(p){var Y=p.x-this.x0;var X=p.y-this.y0;var rotI=Y/this.R;var rotB=2*(Math.atan(Math.exp(X/this.R))-Math.PI/4.0);var b=Math.asin(Math.cos(this.b0)*Math.sin(rotB)
+Math.sin(this.b0)*Math.cos(rotB)*Math.cos(rotI));var I=Math.atan(Math.sin(rotI)/(Math.cos(this.b0)*Math.cos(rotI)-Math.sin(this.b0)*Math.tan(rotB)));var lambda=this.lambda0+I/this.alpha;var S=0.0;var phy=b;var prevPhy=-1000.0;var iteration=0;while(Math.abs(phy-prevPhy)>0.0000001)
{if(++iteration>20)
{Proj4js.reportError("omercFwdInfinity");return;}
S=1.0/this.alpha*(Math.log(Math.tan(Math.PI/4.0+b/2.0))-this.K)
+this.e*Math.log(Math.tan(Math.PI/4.0
+Math.asin(this.e*Math.sin(phy))/2.0));prevPhy=phy;phy=2.0*Math.atan(Math.exp(S))-Math.PI/2.0;}
p.x=lambda;p.y=phy;return p;}};Proj4js.Proj.stere={ssfn_:function(phit,sinphi,eccen){sinphi*=eccen;return(Math.tan(.5*(Proj4js.common.HALF_PI+phit))*Math.pow((1.-sinphi)/(1.+sinphi),.5*eccen));},TOL:1.e-8,NITER:8,CONV:1.e-10,S_POLE:0,N_POLE:1,OBLIQ:2,EQUIT:3,init:function(){this.phits=this.lat_ts?this.lat_ts:Proj4js.common.HALF_PI;var t=Math.abs(this.lat0);if((Math.abs(t)-Proj4js.common.HALF_PI)<Proj4js.common.EPSLN){this.mode=this.lat0<0.?this.S_POLE:this.N_POLE;}else{this.mode=t>Proj4js.common.EPSLN?this.OBLIQ:this.EQUIT;}
this.phits=Math.abs(this.phits);if(this.es){var X;switch(this.mode){case this.N_POLE:case this.S_POLE:if(Math.abs(this.phits-Proj4js.common.HALF_PI)<Proj4js.common.EPSLN){this.akm1=2.*this.k0/Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e));}else{t=Math.sin(this.phits);this.akm1=Math.cos(this.phits)/Proj4js.common.tsfnz(this.e,this.phits,t);t*=this.e;this.akm1/=Math.sqrt(1.-t*t);}
break;case this.EQUIT:this.akm1=2.*this.k0;break;case this.OBLIQ:t=Math.sin(this.lat0);X=2.*Math.atan(this.ssfn_(this.lat0,t,this.e))-Proj4js.common.HALF_PI;t*=this.e;this.akm1=2.*this.k0*Math.cos(this.lat0)/Math.sqrt(1.-t*t);this.sinX1=Math.sin(X);this.cosX1=Math.cos(X);break;}}else{switch(this.mode){case this.OBLIQ:this.sinph0=Math.sin(this.lat0);this.cosph0=Math.cos(this.lat0);case this.EQUIT:this.akm1=2.*this.k0;break;case this.S_POLE:case this.N_POLE:this.akm1=Math.abs(this.phits-Proj4js.common.HALF_PI)>=Proj4js.common.EPSLN?Math.cos(this.phits)/Math.tan(Proj4js.common.FORTPI-.5*this.phits):2.*this.k0;break;}}},forward:function(p){var lon=p.x;lon=Proj4js.common.adjust_lon(lon-this.long0);var lat=p.y;var x,y;if(this.sphere){var sinphi,cosphi,coslam,sinlam;sinphi=Math.sin(lat);cosphi=Math.cos(lat);coslam=Math.cos(lon);sinlam=Math.sin(lon);switch(this.mode){case this.EQUIT:y=1.+cosphi*coslam;if(y<=Proj4js.common.EPSLN){F_ERROR;}
y=this.akm1/y;x=y*cosphi*sinlam;y*=sinphi;break;case this.OBLIQ:y=1.+this.sinph0*sinphi+this.cosph0*cosphi*coslam;if(y<=Proj4js.common.EPSLN){F_ERROR;}
y=this.akm1/y;x=y*cosphi*sinlam;y*=this.cosph0*sinphi-this.sinph0*cosphi*coslam;break;case this.N_POLE:coslam=-coslam;lat=-lat;case this.S_POLE:if(Math.abs(lat-Proj4js.common.HALF_PI)<this.TOL){F_ERROR;}
y=this.akm1*Math.tan(Proj4js.common.FORTPI+.5*lat);x=sinlam*y;y*=coslam;break;}}else{coslam=Math.cos(lon);sinlam=Math.sin(lon);sinphi=Math.sin(lat);if(this.mode==this.OBLIQ||this.mode==this.EQUIT){X=2.*Math.atan(this.ssfn_(lat,sinphi,this.e));sinX=Math.sin(X-Proj4js.common.HALF_PI);cosX=Math.cos(X);}
switch(this.mode){case this.OBLIQ:A=this.akm1/(this.cosX1*(1.+this.sinX1*sinX+this.cosX1*cosX*coslam));y=A*(this.cosX1*sinX-this.sinX1*cosX*coslam);x=A*cosX;break;case this.EQUIT:A=2.*this.akm1/(1.+cosX*coslam);y=A*sinX;x=A*cosX;break;case this.S_POLE:lat=-lat;coslam=-coslam;sinphi=-sinphi;case this.N_POLE:x=this.akm1*Proj4js.common.tsfnz(this.e,lat,sinphi);y=-x*coslam;break;}
x=x*sinlam;}
p.x=x*this.a+this.x0;p.y=y*this.a+this.y0;return p;},inverse:function(p){var x=(p.x-this.x0)/this.a;var y=(p.y-this.y0)/this.a;var lon,lat;var cosphi,sinphi,tp=0.0,phi_l=0.0,rho,halfe=0.0,pi2=0.0;var i;if(this.sphere){var c,rh,sinc,cosc;rh=Math.sqrt(x*x+y*y);c=2.*Math.atan(rh/this.akm1);sinc=Math.sin(c);cosc=Math.cos(c);lon=0.;switch(this.mode){case this.EQUIT:if(Math.abs(rh)<=Proj4js.common.EPSLN){lat=0.;}else{lat=Math.asin(y*sinc/rh);}
if(cosc!=0.||x!=0.)lon=Math.atan2(x*sinc,cosc*rh);break;case this.OBLIQ:if(Math.abs(rh)<=Proj4js.common.EPSLN){lat=this.phi0;}else{lat=Math.asin(cosc*sinph0+y*sinc*cosph0/rh);}
c=cosc-sinph0*Math.sin(lat);if(c!=0.||x!=0.){lon=Math.atan2(x*sinc*cosph0,c*rh);}
break;case this.N_POLE:y=-y;case this.S_POLE:if(Math.abs(rh)<=Proj4js.common.EPSLN){lat=this.phi0;}else{lat=Math.asin(this.mode==this.S_POLE?-cosc:cosc);}
lon=(x==0.&&y==0.)?0.:Math.atan2(x,y);break;}}else{rho=Math.sqrt(x*x+y*y);switch(this.mode){case this.OBLIQ:case this.EQUIT:tp=2.*Math.atan2(rho*this.cosX1,this.akm1);cosphi=Math.cos(tp);sinphi=Math.sin(tp);if(rho==0.0){phi_l=Math.asin(cosphi*this.sinX1);}else{phi_l=Math.asin(cosphi*this.sinX1+(y*sinphi*this.cosX1/rho));}
tp=Math.tan(.5*(Proj4js.common.HALF_PI+phi_l));x*=sinphi;y=rho*this.cosX1*cosphi-y*this.sinX1*sinphi;pi2=Proj4js.common.HALF_PI;halfe=.5*this.e;break;case this.N_POLE:y=-y;case this.S_POLE:tp=-rho/this.akm1;phi_l=Proj4js.common.HALF_PI-2.*Math.atan(tp);pi2=-Proj4js.common.HALF_PI;halfe=-.5*this.e;break;}
for(i=this.NITER;i--;phi_l=lat){sinphi=this.e*Math.sin(phi_l);lat=2.*Math.atan(tp*Math.pow((1.+sinphi)/(1.-sinphi),halfe))-pi2;if(Math.abs(phi_l-lat)<this.CONV){if(this.mode==this.S_POLE)lat=-lat;lon=(x==0.&&y==0.)?0.:Math.atan2(x,y);p.x=Proj4js.common.adjust_lon(lon+this.long0);p.y=lat;return p;}}}}};Proj4js.Proj.nzmg={iterations:1,init:function(){this.A=new Array();this.A[1]=+0.6399175073;this.A[2]=-0.1358797613;this.A[3]=+0.063294409;this.A[4]=-0.02526853;this.A[5]=+0.0117879;this.A[6]=-0.0055161;this.A[7]=+0.0026906;this.A[8]=-0.001333;this.A[9]=+0.00067;this.A[10]=-0.00034;this.B_re=new Array();this.B_im=new Array();this.B_re[1]=+0.7557853228;this.B_im[1]=0.0;this.B_re[2]=+0.249204646;this.B_im[2]=+0.003371507;this.B_re[3]=-0.001541739;this.B_im[3]=+0.041058560;this.B_re[4]=-0.10162907;this.B_im[4]=+0.01727609;this.B_re[5]=-0.26623489;this.B_im[5]=-0.36249218;this.B_re[6]=-0.6870983;this.B_im[6]=-1.1651967;this.C_re=new Array();this.C_im=new Array();this.C_re[1]=+1.3231270439;this.C_im[1]=0.0;this.C_re[2]=-0.577245789;this.C_im[2]=-0.007809598;this.C_re[3]=+0.508307513;this.C_im[3]=-0.112208952;this.C_re[4]=-0.15094762;this.C_im[4]=+0.18200602;this.C_re[5]=+1.01418179;this.C_im[5]=+1.64497696;this.C_re[6]=+1.9660549;this.C_im[6]=+2.5127645;this.D=new Array();this.D[1]=+1.5627014243;this.D[2]=+0.5185406398;this.D[3]=-0.03333098;this.D[4]=-0.1052906;this.D[5]=-0.0368594;this.D[6]=+0.007317;this.D[7]=+0.01220;this.D[8]=+0.00394;this.D[9]=-0.0013;},forward:function(p){var lon=p.x;var lat=p.y;var delta_lat=lat-this.lat0;var delta_lon=lon-this.long0;var d_phi=delta_lat/Proj4js.common.SEC_TO_RAD*1E-5;var d_lambda=delta_lon;var d_phi_n=1;var d_psi=0;for(n=1;n<=10;n++){d_phi_n=d_phi_n*d_phi;d_psi=d_psi+this.A[n]*d_phi_n;}
var th_re=d_psi;var th_im=d_lambda;var th_n_re=1;var th_n_im=0;var th_n_re1;var th_n_im1;var z_re=0;var z_im=0;for(n=1;n<=6;n++){th_n_re1=th_n_re*th_re-th_n_im*th_im;th_n_im1=th_n_im*th_re+th_n_re*th_im;th_n_re=th_n_re1;th_n_im=th_n_im1;z_re=z_re+this.B_re[n]*th_n_re-this.B_im[n]*th_n_im;z_im=z_im+this.B_im[n]*th_n_re+this.B_re[n]*th_n_im;}
x=(z_im*this.a)+this.x0;y=(z_re*this.a)+this.y0;p.x=x;p.y=y;return p;},inverse:function(p){var x=p.x;var y=p.y;var delta_x=x-this.x0;var delta_y=y-this.y0;var z_re=delta_y/this.a;var z_im=delta_x/this.a;var z_n_re=1;var z_n_im=0;var z_n_re1;var z_n_im1;var th_re=0;var th_im=0;for(n=1;n<=6;n++){z_n_re1=z_n_re*z_re-z_n_im*z_im;z_n_im1=z_n_im*z_re+z_n_re*z_im;z_n_re=z_n_re1;z_n_im=z_n_im1;th_re=th_re+this.C_re[n]*z_n_re-this.C_im[n]*z_n_im;th_im=th_im+this.C_im[n]*z_n_re+this.C_re[n]*z_n_im;}
for(i=0;i<this.iterations;i++){var th_n_re=th_re;var th_n_im=th_im;var th_n_re1;var th_n_im1;var num_re=z_re;var num_im=z_im;for(n=2;n<=6;n++){th_n_re1=th_n_re*th_re-th_n_im*th_im;th_n_im1=th_n_im*th_re+th_n_re*th_im;th_n_re=th_n_re1;th_n_im=th_n_im1;num_re=num_re+(n-1)*(this.B_re[n]*th_n_re-this.B_im[n]*th_n_im);num_im=num_im+(n-1)*(this.B_im[n]*th_n_re+this.B_re[n]*th_n_im);}
th_n_re=1;th_n_im=0;var den_re=this.B_re[1];var den_im=this.B_im[1];for(n=2;n<=6;n++){th_n_re1=th_n_re*th_re-th_n_im*th_im;th_n_im1=th_n_im*th_re+th_n_re*th_im;th_n_re=th_n_re1;th_n_im=th_n_im1;den_re=den_re+n*(this.B_re[n]*th_n_re-this.B_im[n]*th_n_im);den_im=den_im+n*(this.B_im[n]*th_n_re+this.B_re[n]*th_n_im);}
var den2=den_re*den_re+den_im*den_im;th_re=(num_re*den_re+num_im*den_im)/den2;th_im=(num_im*den_re-num_re*den_im)/den2;}
var d_psi=th_re;var d_lambda=th_im;var d_psi_n=1;var d_phi=0;for(n=1;n<=9;n++){d_psi_n=d_psi_n*d_psi;d_phi=d_phi+this.D[n]*d_psi_n;}
var lat=this.lat0+(d_phi*Proj4js.common.SEC_TO_RAD*1E5);var lon=this.long0+d_lambda;p.x=lon;p.y=lat;return p;}};Proj4js.Proj.mill={init:function(){},forward:function(p){var lon=p.x;var lat=p.y;var dlon=Proj4js.common.adjust_lon(lon-this.long0);var x=this.x0+this.a*dlon;var y=this.y0+this.a*Math.log(Math.tan((Proj4js.common.PI/4.0)+(lat/2.5)))*1.25;p.x=x;p.y=y;return p;},inverse:function(p){p.x-=this.x0;p.y-=this.y0;var lon=Proj4js.common.adjust_lon(this.long0+p.x/this.a);var lat=2.5*(Math.atan(Math.exp(0.8*p.y/this.a))-Proj4js.common.PI/4.0);p.x=lon;p.y=lat;return p;}};Proj4js.Proj.sinu={init:function(){this.R=6370997.0;},forward:function(p){var x,y,delta_lon;var lon=p.x;var lat=p.y;delta_lon=Proj4js.common.adjust_lon(lon-this.long0);x=this.R*delta_lon*Math.cos(lat)+this.x0;y=this.R*lat+this.y0;p.x=x;p.y=y;return p;},inverse:function(p){var lat,temp,lon;p.x-=this.x0;p.y-=this.y0;lat=p.y/this.R;if(Math.abs(lat)>Proj4js.common.HALF_PI){Proj4js.reportError("sinu:Inv:DataError");}
temp=Math.abs(lat)-Proj4js.common.HALF_PI;if(Math.abs(temp)>Proj4js.common.EPSLN){temp=this.long0+p.x/(this.R*Math.cos(lat));lon=Proj4js.common.adjust_lon(temp);}else{lon=this.long0;}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.vandg={init:function(){this.R=6370997.0;},forward:function(p){var lon=p.x;var lat=p.y;var dlon=Proj4js.common.adjust_lon(lon-this.long0);var x,y;if(Math.abs(lat)<=Proj4js.common.EPSLN){x=this.x0+this.R*dlon;y=this.y0;}
var theta=Proj4js.common.asinz(2.0*Math.abs(lat/Proj4js.common.PI));if((Math.abs(dlon)<=Proj4js.common.EPSLN)||(Math.abs(Math.abs(lat)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN)){x=this.x0;if(lat>=0){y=this.y0+Proj4js.common.PI*this.R*Math.tan(.5*theta);}else{y=this.y0+Proj4js.common.PI*this.R*-Math.tan(.5*theta);}}
var al=.5*Math.abs((Proj4js.common.PI/dlon)-(dlon/Proj4js.common.PI));var asq=al*al;var sinth=Math.sin(theta);var costh=Math.cos(theta);var g=costh/(sinth+costh-1.0);var gsq=g*g;var m=g*(2.0/sinth-1.0);var msq=m*m;var con=Proj4js.common.PI*this.R*(al*(g-msq)+Math.sqrt(asq*(g-msq)*(g-msq)-(msq+asq)*(gsq-msq)))/(msq+asq);if(dlon<0){con=-con;}
x=this.x0+con;con=Math.abs(con/(Proj4js.common.PI*this.R));if(lat>=0){y=this.y0+Proj4js.common.PI*this.R*Math.sqrt(1.0-con*con-2.0*al*con);}else{y=this.y0-Proj4js.common.PI*this.R*Math.sqrt(1.0-con*con-2.0*al*con);}
p.x=x;p.y=y;return p;},inverse:function(p){var dlon;var xx,yy,xys,c1,c2,c3;var al,asq;var a1;var m1;var con;var th1;var d;p.x-=this.x0;p.y-=this.y0;con=Proj4js.common.PI*this.R;xx=p.x/con;yy=p.y/con;xys=xx*xx+yy*yy;c1=-Math.abs(yy)*(1.0+xys);c2=c1-2.0*yy*yy+xx*xx;c3=-2.0*c1+1.0+2.0*yy*yy+xys*xys;d=yy*yy/c3+(2.0*c2*c2*c2/c3/c3/c3-9.0*c1*c2/c3/c3)/27.0;a1=(c1-c2*c2/3.0/c3)/c3;m1=2.0*Math.sqrt(-a1/3.0);con=((3.0*d)/a1)/m1;if(Math.abs(con)>1.0){if(con>=0.0){con=1.0;}else{con=-1.0;}}
th1=Math.acos(con)/3.0;if(p.y>=0){lat=(-m1*Math.cos(th1+Proj4js.common.PI/3.0)-c2/3.0/c3)*Proj4js.common.PI;}else{lat=-(-m1*Math.cos(th1+PI/3.0)-c2/3.0/c3)*Proj4js.common.PI;}
if(Math.abs(xx)<Proj4js.common.EPSLN){lon=this.long0;}
lon=Proj4js.common.adjust_lon(this.long0+Proj4js.common.PI*(xys-1.0+Math.sqrt(1.0+2.0*(xx*xx-yy*yy)+xys*xys))/2.0/xx);p.x=lon;p.y=lat;return p;}};Proj4js.Proj.eqc={init:function(){if(!this.x0)this.x0=0;if(!this.y0)this.y0=0;if(!this.lat0)this.lat0=0;if(!this.long0)this.long0=0;if(!this.lat_ts)this.lat_ts=0;if(!this.title)this.title="Equidistant Cylindrical (Plate Carre)";this.rc=Math.cos(this.lat_ts);},forward:function(p){var lon=p.x;var lat=p.y;var dlon=Proj4js.common.adjust_lon(lon-this.long0);var dlat=Proj4js.common.adjust_lat(lat-this.lat0);p.x=this.x0+(this.a*dlon*this.rc);p.y=this.y0+(this.a*dlat);return p;},inverse:function(p){var x=p.x;var y=p.y;p.x=Proj4js.common.adjust_lon(this.long0+((x-this.x0)/(this.a*this.rc)));p.y=Proj4js.common.adjust_lat(this.lat0+((y-this.y0)/(this.a)));return p;}};Proj4js.Proj.gauss={init:function(){sphi=Math.sin(this.lat0);cphi=Math.cos(this.lat0);cphi*=cphi;this.rc=Math.sqrt(1.0-this.es)/(1.0-this.es*sphi*sphi);this.C=Math.sqrt(1.0+this.es*cphi*cphi/(1.0-this.es));this.phic0=Math.asin(sphi/this.C);this.ratexp=0.5*this.C*this.e;this.K=Math.tan(0.5*this.phic0+Proj4js.common.FORTPI)/(Math.pow(Math.tan(0.5*this.lat0+Proj4js.common.FORTPI),this.C)*Proj4js.common.srat(this.e*sphi,this.ratexp));},forward:function(p){var lon=p.x;var lat=p.y;p.y=2.0*Math.atan(this.K*Math.pow(Math.tan(0.5*lat+Proj4js.common.FORTPI),this.C)*Proj4js.common.srat(this.e*Math.sin(lat),this.ratexp))-Proj4js.common.HALF_PI;p.x=this.C*lon;return p;},inverse:function(p){var DEL_TOL=1e-14;var lon=p.x/this.C;var lat=p.y;num=Math.pow(Math.tan(0.5*lat+Proj4js.common.FORTPI)/this.K,1./this.C);for(var i=Proj4js.common.MAX_ITER;i>0;--i){lat=2.0*Math.atan(num*Proj4js.common.srat(this.e*Math.sin(p.y),-0.5*this.e))-Proj4js.common.HALF_PI;if(Math.abs(lat-p.y)<DEL_TOL)break;p.y=lat;}
if(!i){Proj4js.reportError("gauss:inverse:convergence failed");return null;}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.omerc={init:function(){if(!this.mode)this.mode=0;if(!this.lon1){this.lon1=0;this.mode=1;}
if(!this.lon2)this.lon2=0;if(!this.lat2)this.lat2=0;var temp=this.b/this.a;var es=1.0-Math.pow(temp,2);var e=Math.sqrt(es);this.sin_p20=Math.sin(this.lat0);this.cos_p20=Math.cos(this.lat0);this.con=1.0-this.es*this.sin_p20*this.sin_p20;this.com=Math.sqrt(1.0-es);this.bl=Math.sqrt(1.0+this.es*Math.pow(this.cos_p20,4.0)/(1.0-es));this.al=this.a*this.bl*this.k0*this.com/this.con;if(Math.abs(this.lat0)<Proj4js.common.EPSLN){this.ts=1.0;this.d=1.0;this.el=1.0;}else{this.ts=Proj4js.common.tsfnz(this.e,this.lat0,this.sin_p20);this.con=Math.sqrt(this.con);this.d=this.bl*this.com/(this.cos_p20*this.con);if((this.d*this.d-1.0)>0.0){if(this.lat0>=0.0){this.f=this.d+Math.sqrt(this.d*this.d-1.0);}else{this.f=this.d-Math.sqrt(this.d*this.d-1.0);}}else{this.f=this.d;}
this.el=this.f*Math.pow(this.ts,this.bl);}
if(this.mode!=0){this.g=.5*(this.f-1.0/this.f);this.gama=Proj4js.common.asinz(Math.sin(this.alpha)/this.d);this.longc=this.longc-Proj4js.common.asinz(this.g*Math.tan(this.gama))/this.bl;this.con=Math.abs(this.lat0);if((this.con>Proj4js.common.EPSLN)&&(Math.abs(this.con-Proj4js.common.HALF_PI)>Proj4js.common.EPSLN)){this.singam=Math.sin(this.gama);this.cosgam=Math.cos(this.gama);this.sinaz=Math.sin(this.alpha);this.cosaz=Math.cos(this.alpha);if(this.lat0>=0){this.u=(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1.0)/this.cosaz);}else{this.u=-(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1.0)/this.cosaz);}}else{Proj4js.reportError("omerc:Init:DataError");}}else{this.sinphi=Math.sin(this.at1);this.ts1=Proj4js.common.tsfnz(this.e,this.lat1,this.sinphi);this.sinphi=Math.sin(this.lat2);this.ts2=Proj4js.common.tsfnz(this.e,this.lat2,this.sinphi);this.h=Math.pow(this.ts1,this.bl);this.l=Math.pow(this.ts2,this.bl);this.f=this.el/this.h;this.g=.5*(this.f-1.0/this.f);this.j=(this.el*this.el-this.l*this.h)/(this.el*this.el+this.l*this.h);this.p=(this.l-this.h)/(this.l+this.h);this.dlon=this.lon1-this.lon2;if(this.dlon<-Proj4js.common.PI)this.lon2=this.lon2-2.0*Proj4js.common.PI;if(this.dlon>Proj4js.common.PI)this.lon2=this.lon2+2.0*Proj4js.common.PI;this.dlon=this.lon1-this.lon2;this.longc=.5*(this.lon1+this.lon2)-Math.atan(this.j*Math.tan(.5*this.bl*this.dlon)/this.p)/this.bl;this.dlon=Proj4js.common.adjust_lon(this.lon1-this.longc);this.gama=Math.atan(Math.sin(this.bl*this.dlon)/this.g);this.alpha=Proj4js.common.asinz(this.d*Math.sin(this.gama));if(Math.abs(this.lat1-this.lat2)<=Proj4js.common.EPSLN){Proj4js.reportError("omercInitDataError");}else{this.con=Math.abs(this.lat1);}
if((this.con<=Proj4js.common.EPSLN)||(Math.abs(this.con-HALF_PI)<=Proj4js.common.EPSLN)){Proj4js.reportError("omercInitDataError");}else{if(Math.abs(Math.abs(this.lat0)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN){Proj4js.reportError("omercInitDataError");}}
this.singam=Math.sin(this.gam);this.cosgam=Math.cos(this.gam);this.sinaz=Math.sin(this.alpha);this.cosaz=Math.cos(this.alpha);if(this.lat0>=0){this.u=(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1.0)/this.cosaz);}else{this.u=-(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1.0)/this.cosaz);}}},forward:function(p){var theta;var sin_phi,cos_phi;var b;var c,t,tq;var con,n,ml;var q,us,vl;var ul,vs;var s;var dlon;var ts1;var lon=p.x;var lat=p.y;sin_phi=Math.sin(lat);dlon=Proj4js.common.adjust_lon(lon-this.longc);vl=Math.sin(this.bl*dlon);if(Math.abs(Math.abs(lat)-Proj4js.common.HALF_PI)>Proj4js.common.EPSLN){ts1=Proj4js.common.tsfnz(this.e,lat,sin_phi);q=this.el/(Math.pow(ts1,this.bl));s=.5*(q-1.0/q);t=.5*(q+1.0/q);ul=(s*this.singam-vl*this.cosgam)/t;con=Math.cos(this.bl*dlon);if(Math.abs(con)<.0000001){us=this.al*this.bl*dlon;}else{us=this.al*Math.atan((s*this.cosgam+vl*this.singam)/con)/this.bl;if(con<0)us=us+Proj4js.common.PI*this.al/this.bl;}}else{if(lat>=0){ul=this.singam;}else{ul=-this.singam;}
us=this.al*lat/this.bl;}
if(Math.abs(Math.abs(ul)-1.0)<=Proj4js.common.EPSLN){Proj4js.reportError("omercFwdInfinity");}
vs=.5*this.al*Math.log((1.0-ul)/(1.0+ul))/this.bl;us=us-this.u;var x=this.x0+vs*this.cosaz+us*this.sinaz;var y=this.y0+us*this.cosaz-vs*this.sinaz;p.x=x;p.y=y;return p;},inverse:function(p){var delta_lon;var theta;var delta_theta;var sin_phi,cos_phi;var b;var c,t,tq;var con,n,ml;var vs,us,q,s,ts1;var vl,ul,bs;var dlon;var flag;p.x-=this.x0;p.y-=this.y0;flag=0;vs=p.x*this.cosaz-p.y*this.sinaz;us=p.y*this.cosaz+p.x*this.sinaz;us=us+this.u;q=Math.exp(-this.bl*vs/this.al);s=.5*(q-1.0/q);t=.5*(q+1.0/q);vl=Math.sin(this.bl*us/this.al);ul=(vl*this.cosgam+s*this.singam)/t;if(Math.abs(Math.abs(ul)-1.0)<=Proj4js.common.EPSLN)
{lon=this.longc;if(ul>=0.0){lat=Proj4js.common.HALF_PI;}else{lat=-Proj4js.common.HALF_PI;}}else{con=1.0/this.bl;ts1=Math.pow((this.el/Math.sqrt((1.0+ul)/(1.0-ul))),con);lat=Proj4js.common.phi2z(this.e,ts1);theta=this.longc-Math.atan2((s*this.cosgam-vl*this.singam),con)/this.bl;lon=Proj4js.common.adjust_lon(theta);}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.lcc={init:function(){if(!this.lat2){this.lat2=this.lat0;}
if(!this.k0)this.k0=1.0;if(Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN){Proj4js.reportError("lcc:init: Equal Latitudes");return;}
var temp=this.b/this.a;this.e=Math.sqrt(1.0-temp*temp);var sin1=Math.sin(this.lat1);var cos1=Math.cos(this.lat1);var ms1=Proj4js.common.msfnz(this.e,sin1,cos1);var ts1=Proj4js.common.tsfnz(this.e,this.lat1,sin1);var sin2=Math.sin(this.lat2);var cos2=Math.cos(this.lat2);var ms2=Proj4js.common.msfnz(this.e,sin2,cos2);var ts2=Proj4js.common.tsfnz(this.e,this.lat2,sin2);var ts0=Proj4js.common.tsfnz(this.e,this.lat0,Math.sin(this.lat0));if(Math.abs(this.lat1-this.lat2)>Proj4js.common.EPSLN){this.ns=Math.log(ms1/ms2)/Math.log(ts1/ts2);}else{this.ns=sin1;}
this.f0=ms1/(this.ns*Math.pow(ts1,this.ns));this.rh=this.a*this.f0*Math.pow(ts0,this.ns);if(!this.title)this.title="Lambert Conformal Conic";},forward:function(p){var lon=p.x;var lat=p.y;if(lat<=90.0&&lat>=-90.0&&lon<=180.0&&lon>=-180.0){}else{Proj4js.reportError("lcc:forward: llInputOutOfRange: "+lon+" : "+lat);return null;}
var con=Math.abs(Math.abs(lat)-Proj4js.common.HALF_PI);var ts,rh1;if(con>Proj4js.common.EPSLN){ts=Proj4js.common.tsfnz(this.e,lat,Math.sin(lat));rh1=this.a*this.f0*Math.pow(ts,this.ns);}else{con=lat*this.ns;if(con<=0){Proj4js.reportError("lcc:forward: No Projection");return null;}
rh1=0;}
var theta=this.ns*Proj4js.common.adjust_lon(lon-this.long0);p.x=this.k0*(rh1*Math.sin(theta))+this.x0;p.y=this.k0*(this.rh-rh1*Math.cos(theta))+this.y0;return p;},inverse:function(p){var rh1,con,ts;var lat,lon;x=(p.x-this.x0)/this.k0;y=(this.rh-(p.y-this.y0)/this.k0);if(this.ns>0){rh1=Math.sqrt(x*x+y*y);con=1.0;}else{rh1=-Math.sqrt(x*x+y*y);con=-1.0;}
var theta=0.0;if(rh1!=0){theta=Math.atan2((con*x),(con*y));}
if((rh1!=0)||(this.ns>0.0)){con=1.0/this.ns;ts=Math.pow((rh1/(this.a*this.f0)),con);lat=Proj4js.common.phi2z(this.e,ts);if(lat==-9999)return null;}else{lat=-Proj4js.common.HALF_PI;}
lon=Proj4js.common.adjust_lon(theta/this.ns+this.long0);p.x=lon;p.y=lat;return p;}};Proj4js.Proj.laea={init:function(){this.sin_lat_o=Math.sin(this.lat0);this.cos_lat_o=Math.cos(this.lat0);},forward:function(p){var lon=p.x;var lat=p.y;var delta_lon=Proj4js.common.adjust_lon(lon-this.long0);var sin_lat=Math.sin(lat);var cos_lat=Math.cos(lat);var sin_delta_lon=Math.sin(delta_lon);var cos_delta_lon=Math.cos(delta_lon);var g=this.sin_lat_o*sin_lat+this.cos_lat_o*cos_lat*cos_delta_lon;if(g==-1.0){Proj4js.reportError("laea:fwd:Point projects to a circle of radius "+2.0*R);return null;}
var ksp=this.a*Math.sqrt(2.0/(1.0+g));var x=ksp*cos_lat*sin_delta_lon+this.x0;var y=ksp*(this.cos_lat_o*sin_lat-this.sin_lat_o*cos_lat*cos_delta_lon)+this.y0;p.x=x;p.y=y;return p;},inverse:function(p){p.x-=this.x0;p.y-=this.y0;var Rh=Math.sqrt(p.x*p.x+p.y*p.y);var temp=Rh/(2.0*this.a);if(temp>1){Proj4js.reportError("laea:Inv:DataError");return null;}
var z=2.0*Proj4js.common.asinz(temp);var sin_z=Math.sin(z);var cos_z=Math.cos(z);var lon=this.long0;if(Math.abs(Rh)>Proj4js.common.EPSLN){var lat=Proj4js.common.asinz(this.sin_lat_o*cos_z+this.cos_lat_o*sin_z*p.y/Rh);var temp=Math.abs(this.lat0)-Proj4js.common.HALF_PI;if(Math.abs(temp)>Proj4js.common.EPSLN){temp=cos_z-this.sin_lat_o*Math.sin(lat);if(temp!=0.0)lon=Proj4js.common.adjust_lon(this.long0+Math.atan2(p.x*sin_z*this.cos_lat_o,temp*Rh));}else if(this.lat0<0.0){lon=Proj4js.common.adjust_lon(this.long0-Math.atan2(-p.x,p.y));}else{lon=Proj4js.common.adjust_lon(this.long0+Math.atan2(p.x,-p.y));}}else{lat=this.lat0;}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.aeqd={init:function(){this.sin_p12=Math.sin(this.lat0);this.cos_p12=Math.cos(this.lat0);},forward:function(p){var lon=p.x;var lat=p.y;var ksp;var sinphi=Math.sin(p.y);var cosphi=Math.cos(p.y);var dlon=Proj4js.common.adjust_lon(lon-this.long0);var coslon=Math.cos(dlon);var g=this.sin_p12*sinphi+this.cos_p12*cosphi*coslon;if(Math.abs(Math.abs(g)-1.0)<Proj4js.common.EPSLN){ksp=1.0;if(g<0.0){Proj4js.reportError("aeqd:Fwd:PointError");return;}}else{var z=Math.acos(g);ksp=z/Math.sin(z);}
p.x=this.x0+this.a*ksp*cosphi*Math.sin(dlon);p.y=this.y0+this.a*ksp*(this.cos_p12*sinphi-this.sin_p12*cosphi*coslon);return p;},inverse:function(p){p.x-=this.x0;p.y-=this.y0;var rh=Math.sqrt(p.x*p.x+p.y*p.y);if(rh>(2.0*Proj4js.common.HALF_PI*this.a)){Proj4js.reportError("aeqdInvDataError");return;}
var z=rh/this.a;var sinz=Math.sin(z);var cosz=Math.cos(z);var lon=this.long0;var lat;if(Math.abs(rh)<=Proj4js.common.EPSLN){lat=this.lat0;}else{lat=Proj4js.common.asinz(cosz*this.sin_p12+(p.y*sinz*this.cos_p12)/rh);var con=Math.abs(this.lat0)-Proj4js.common.HALF_PI;if(Math.abs(con)<=Proj4js.common.EPSLN){if(lat0>=0.0){lon=Proj4js.common.adjust_lon(this.long0+Math.atan2(p.x,-p.y));}else{lon=Proj4js.common.adjust_lon(this.long0-Math.atan2(-p.x,p.y));}}else{con=cosz-this.sin_p12*Math.sin(lat);if((Math.abs(con)<Proj4js.common.EPSLN)&&(Math.abs(p.x)<Proj4js.common.EPSLN)){}else{var temp=Math.atan2((p.x*sinz*this.cos_p12),(con*rh));lon=Proj4js.common.adjust_lon(this.long0+Math.atan2((p.x*sinz*this.cos_p12),(con*rh)));}}}
p.x=lon;p.y=lat;return p;}};Proj4js.Proj.moll={init:function(){},forward:function(p){var lon=p.x;var lat=p.y;var delta_lon=Proj4js.common.adjust_lon(lon-this.long0);var theta=lat;var con=Proj4js.common.PI*Math.sin(lat);for(var i=0;true;i++){var delta_theta=-(theta+Math.sin(theta)-con)/(1.0+Math.cos(theta));theta+=delta_theta;if(Math.abs(delta_theta)<Proj4js.common.EPSLN)break;if(i>=50){Proj4js.reportError("moll:Fwd:IterationError");}}
theta/=2.0;if(Proj4js.common.PI/2-Math.abs(lat)<Proj4js.common.EPSLN)delta_lon=0;var x=0.900316316158*this.a*delta_lon*Math.cos(theta)+this.x0;var y=1.4142135623731*this.a*Math.sin(theta)+this.y0;p.x=x;p.y=y;return p;},inverse:function(p){var theta;var arg;p.x-=this.x0;var arg=p.y/(1.4142135623731*this.a);if(Math.abs(arg)>0.999999999999)arg=0.999999999999;var theta=Math.asin(arg);var lon=Proj4js.common.adjust_lon(this.long0+(p.x/(0.900316316158*this.a*Math.cos(theta))));if(lon<(-Proj4js.common.PI))lon=-Proj4js.common.PI;if(lon>Proj4js.common.PI)lon=Proj4js.common.PI;arg=(2.0*theta+Math.sin(2.0*theta))/Proj4js.common.PI;if(Math.abs(arg)>1.0)arg=1.0;var lat=Math.asin(arg);p.x=lon;p.y=lat;return p;}};Proj4js.defs["EPSG:21781"]="+title=CH1903 / LV03 +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs";VelolandInteropParser=OpenLayers.Class(OpenLayers.Control,{center:null,scale:null,layers:[],hilight:[],land:null,app:null,currentInteropParam:null,showEtappe:false,opacitySliderValue:0,preventRecentering:false,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},getApp:function(){if(!this.app){this.app=this.land.substr(0,1).toUpperCase()
+this.land.substr(1,this.land.length)
+'land';}
return this.app;},addLayersFor:function(name){if(this.land=='velo'||this.land=='wander'||this.land=='skating'||this.land=='mtb'||this.land=='kanu'){this.layers.push(this.land+name+'national',this.land+name+'regional');if(this.land!='kanu'){this.layers.push(this.land+name+'local');}}else{this.layers.push('velo'+name+'national','velo'+name+'regional','velo'+name+'local','wander'+name+'national','wander'+name+'regional','wander'+name+'local','skating'+name+'national','skating'+name+'regional','skating'+name+'local','mtb'+name+'national','mtb'+name+'regional','mtb'+name+'local','kanu'+name+'national','kanu'+name+'regional');}},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);var args=OpenLayers.Util.getParameters();this.land=window.veloland.land;if(args.lon_i&&args.lat_i&&window.Proj4js){var nbdigits=(args.lon_i>9999999)?2:1;var lon=parseFloat(args.lon_i.substr(0,nbdigits)+'.'+args.lon_i.substr(nbdigits,args.lon_i.length-nbdigits));var lat=parseFloat(args.lat_i.substr(0,2)+'.'+args.lat_i.substr(2,args.lat_i.length-2));var source=new Proj4js.Proj('EPSG:4326');var dest=new Proj4js.Proj('EPSG:21781');var p=new Proj4js.Point(lon,lat);Proj4js.transform(source,dest,p);args.X=parseInt(p.x);args.Y=parseInt(p.y);}
if(args.X&&args.Y){this.center=new OpenLayers.LonLat(parseFloat(args.X),parseFloat(args.Y));if(args.scale){this.scale=args.scale;}
this.map.events.register('changebaselayer',this,this.setCenter);this.setCenter();if(!args.openMyCh&&!args.route){this.addLayersFor('route');}
this.currentInteropParam='xy';this.preventRecentering=true;}
if(args.route){if(this.land=='velo'||this.land=='wander'||this.land=='skating'||this.land=='mtb'||this.land=='kanu'){var routen=[this.getApp()+'RoutenNational',this.getApp()+'RoutenRegional'];if(this.land!='kanu'){routen.push(this.getApp()+'RoutenLokal');}
this.storeHilight(routen,args.route);}
this.addLayersFor('route');this.currentInteropParam='route';}
if(args.etappe){if(this.land=='velo'||this.land=='wander'||this.land=='skating'||this.land=='mtb'||this.land=='kanu'){var etappen=[this.getApp()+'EtappenNational',this.getApp()+'EtappenRegional'];if(this.land!='kanu'){etappen.push(this.getApp()+'EtappenLokal');}
this.storeHilight(etappen,args.etappe);}
this.addLayersFor('etappe');this.currentInteropParam='etappe';this.showEtappe=true;}
if(args.layer){args.layers=args.layer;}
if(args.layers){var layers=this.convertLayername(args.layers);layers=(layers instanceof Array)?layers:[layers];this.checkIfActiveEtappe(layers);this.layers=this.layers.concat(layers);this.currentInteropParam='layer';}
var luftbildOpacity=args.luftbild||0;if(args.karte){this.opacitySliderValue=100*luftbildOpacity;}else if(args.kartebw){this.opacitySliderValue=100*(2-luftbildOpacity);}
if(args.vkpt){var vkptlayers=['OffentlicherBahn','OffentlicherBus','OffentlicherTramBus','OffentlicherSchiff','OffentlicherSeilbahn','OffentlicherStandseilbahn'];this.layers=this.layers.concat(vkptlayers);this.storeHilight(vkptlayers,args.vkpt);this.addLayersFor('route');this.currentInteropParam='vkpt';}
if(args.uebernachten){var unlayers=['PointsHotel','PointsBedBreak','PointsJugen','PointsBackpacker','PointsGruppen','PointsUbernachten','PointsBauernhof','PointsFerien','PointsCamping','PointsBerghuette'];this.layers=this.layers.concat(unlayers);this.storeHilight(unlayers,args.uebernachten);this.addLayersFor('route');this.currentInteropParam='uebernachten';}
if(args.poi){if(args.category){var hilight=args.category;switch(args.category){case'natur':hilight='Natur';break;case'kultur':hilight='Kultur';break;case'erlebnisse':hilight='Erlebnisse';break;}
this.layers.push(hilight);}
if(args.poi=='all'){hilight=['Natur','Kultur','Erlebnisse'];this.layers=this.layers.concat(hilight);}
this.storeHilight(hilight,args.poi);this.addLayersFor('route');this.currentInteropParam='poi';}
if(args.einkaufen){hilight=['Migros'];this.layers=this.layers.concat(hilight);this.storeHilight(hilight,args.einkaufen);this.addLayersFor('route');this.currentInteropParam='einkaufen';}
if(args.ebikestation){hilight=['VelolandEbikestation'];this.layers=this.layers.concat(hilight);this.storeHilight(hilight,args.ebikestation);this.addLayersFor('route');}
if(args.trackId){veloland.tracks.trackId=args.trackId;}
if(args.openMyCh){veloland.layout.openMyChPanel=true;}
if(args.showLogin){veloland.layout.showLogin=true;}
for(var key in args){if(key!='mode'&&key!='lang'&&key!='route'&&key!='land'&&key!='X'&&key!='Y'&&key!='scale'&&key!='layer'&&key!='layers'&&key!='karte'&&key!='kartebw'&&key!='luftbild'&&key!='poi'&&key!='category'&&key!='vkpt'&&key!='p'&&key!='uebernachten'&&key!='etappe'&&key!='einkaufen'&&key!='ebikestation'&&key!='trackId'&&key!='lon_i'&&key!='lat_i'&&key!='openMyCh'&&key!='showLogin'){var val=args[key];var layer=hilight=key;var activateRoutes=false;switch(key){case'kanton':case'Kantone':hilight='Kantone';activateRoutes=true;break;case'gemeinde':case'Gemeinden':hilight='Gemeinden';activateRoutes=true;break;case'orte':case'Orte':hilight='Orte';activateRoutes=true;this.currentInteropParam=key;break;case'natur':case'Natur':hilight='Natur';activateRoutes=true;break;case'kultur':case'Kultur':hilight='Kultur';activateRoutes=true;break;case'erlebnisse':case'Erlebnisse':hilight='Erlebnisse';activateRoutes=true;break;case'slowup':case'Slowup':hilight='Slowup';activateRoutes=true;this.map.isSlowUp=true;break;case'club':hilight='KanulandClub';activateRoutes=true;break;case'servicestelle':layer=this.land+key;hilight=this.getApp()+'Service';activateRoutes=true;break;case'mietstation':layer=this.land+key;hilight=this.getApp()+'Miet';activateRoutes=true;break;case'lokaleangebote':activateRoutes=true;layer=this.land+key;hilight=this.getApp()+'LokaleAngebote';break;case'rafting':activateRoutes=true;layer=this.land+key;hilight=this.getApp()+'Rafting';break;}
if(activateRoutes){this.addLayersFor('route');}
this.layers.push(layer);this.storeHilight(hilight,val);}}
if(this.layers.length>0){this.map.events.register('addlayertree',this,this.configureLayersAndHilight);}},storeHilight:function(layers,val){if(!(layers instanceof Array)){layers=[layers];}
if(!isNaN(val)){this.hilight.push({layers:layers,ids:[val]});}else if(val instanceof Array){this.hilight.push({layers:layers,ids:val});}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister('changebaselayer',this,this.setCenter);var zoom=null;if(this.scale){var res=OpenLayers.Util.getResolutionFromScale(this.scale,this.map.baseLayer.units);zoom=this.map.getZoomForResolution(res);}
this.map.setCenter(this.center,zoom);}},configureLayersAndHilight:function(){var tree=veloland.layout.treeLayers;if(tree){this.map.events.unregister('addlayertree',this,this.configureLayersAndHilight);if(this.hilight.length>0){var params={},ids,layers,i,j,leni,lenj;for(i=0,leni=this.hilight.length;i<leni;i++){if(this.hilight[i].ids=='all')continue;ids=this.hilight[i].ids;ids=(ids instanceof Array)?ids.join(','):ids;layers=this.hilight[i].layers;layers=(layers instanceof Array)?layers:[layers];for(j=0,lenj=layers.length;j<lenj;j++){params[layers[j]]=ids;}}
if(params&&!this.preventRecentering){veloland.layertree.recenterOnObjectsFromMultipleLayers(params);}
for(var i=0,n=this.hilight.length;i<n;i++){veloland.layertree.highlightObjects(this.hilight[i].layers,this.hilight[i].ids);}}
if(this.showEtappe){this.unfoldTree(tree,this.land+'etappe');}
for(var i=0,n=this.layers.length;i<n;i++){var node=tree.nodeIdToNode[this.layers[i]];if(!node)continue;tree.setNodeChecked(node,true);}
if(this.currentInteropParam){var nodeId=null;switch(this.currentInteropParam){case'vkpt':nodeId='bahn';break;case'uebernachten':nodeId='ubernacht';break;case'einkaufen':nodeId='einkaufen';break;case'poi':nodeId='sehen';break;case'orte':nodeId='ortegrp';break;}
if(nodeId){this.unfoldTree(tree,nodeId);}}
if(this.opacitySliderValue){slider.setValue(this.opacitySliderValue);}}},unfoldTree:function(tree,nodeId){if(tree){var rootNode=tree.getRootNode();var secondNodeId=null;if(nodeId==this.land+'etappe'){secondNodeId=nodeId;nodeId=this.land;}
for(var i=0,n=rootNode.childNodes.length;i<n;i++){if(rootNode.childNodes[i].id==nodeId){if(!rootNode.childNodes[i].expanded){rootNode.childNodes[i].toggle();}
if(secondNodeId){var firstNode=rootNode.childNodes[i];for(var j=0,m=firstNode.childNodes.length;j<m;j++){if(firstNode.childNodes[j].id==secondNodeId){var secondNode=firstNode.childNodes[j];if(!secondNode.expanded){secondNode.toggle();}
if(!secondNode.attributes.checked){tree.setNodeChecked(secondNode,true);for(var k=0,l=secondNode.childNodes.length;k<l;k++){if(secondNode.childNodes[k].disabled){secondNode.childNodes[k].enable();}
if(!secondNode.childNodes[k].attributes.checked){tree.setNodeChecked(secondNode.childNodes[k],true);}}}
break;}}}
break;}}}},convertLayername:function(layer){if(layer instanceof Array){var result=[];for(var i=0,len=layer.length;i<len;i++){result.push(this.convertLayername(layer[i]));}
return result;}
switch(layer){case'VelolandRoutenNational':return'veloroutenational';case'VelolandRoutenRegional':return'velorouteregional';case'VelolandRoutenLokal':return'veloroutelocal';case'VelolandEtappenNational':return'veloetappenational';case'VelolandEtappenRegional':return'veloetapperegional';case'VelolandEtappenLokal':return'veloetappelocal';case'VelolandMiet':return'velomietstation';case'VelolandService':return'veloservicestelle';case'WanderlandRoutenNational':return'wanderroutenational';case'WanderlandRoutenRegional':return'wanderrouteregional';case'WanderlandRoutenLokal':return'wanderroutelocal';case'WanderlandEtappenNational':return'wanderetappenational';case'WanderlandEtappenRegional':return'wanderetapperegional';case'WanderlandEtappenLokal':return'wanderetappelocal';case'Wanderwegnetz':return'wanderwegnetz';case'MtblandRoutenNational':return'mtbroutenational';case'MtblandRoutenRegional':return'mtbrouteregional';case'MtblandRoutenLokal':return'mtbroutelocal';case'MtblandEtappenNational':return'mtbetappenational';case'MtblandEtappenRegional':return'mtbetapperegional';case'MtblandEtappenLokal':return'mtbetappelocal';case'MtblandMiet':return'mtbmietstation';case'MtblandService':return'mtbservicestelle';case'SkatinglandRoutenNational':return'skatingroutenational';case'SkatinglandRoutenRegional':return'skatingrouteregional';case'SkatinglandRoutenLokal':return'skatingroutelocal';case'SkatinglandEtappenNational':return'skatingetappenational';case'SkatinglandEtappenRegional':return'skatingetapperegional';case'SkatinglandEtappenLokal':return'skatingetappelocal';case'KanulandRoutenNational':return'kanuroutenational';case'KanulandRoutenRegional':return'kanurouteregional';case'KanulandRoutenLokal':return'kanuroutelocal';case'KanulandEtappenNational':return'kanuetappenational';case'KanulandEtappenRegional':return'kanuetapperegional';case'KanulandEtappenLokal':return'kanuetappelocal';case'KanulandClub':return'club';case'KanulandRafting':return'kanurafting';case'Orte':return'orte';}
return layer;},checkIfActiveEtappe:function(layers){var re=new RegExp('^(velo|wander|mtb|skating|kanu)etappe(.*)','g');for(var i=0,len=layers.length;i<len;i++){if(re.test(layers[i])){this.showEtappe=true;break;}}}});Ext.form.TriggerField.override({afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);var y;if(Ext.isIE&&!this.hideTrigger&&this.el.getY()!=(y=this.trigger.getY())){this.el.position();this.el.setY(y);}}});Ext.override(mapfish.widgets.print.BaseWidget,{createLayoutCombo:function(name){var hf=new Ext.form.Hidden({id:'printlayoutfield',name:name,value:this.config.layouts[0].name});var t1=OpenLayers.i18n(this.config.layouts[0].name);var t2=OpenLayers.i18n(this.config.layouts[1].name);Ext.get('printlandscape').dom.alt=t1;Ext.get('printlandscape').dom.title=t1;Ext.get('printportrait').dom.alt=t2;Ext.get('printportrait').dom.title=t2;var test=new Ext.Panel({id:'printlayoutswitcher',items:[hf]});return test;}});Ext.ns('Ext.ux.layout');Ext.ux.layout.HtmlLayout=Ext.extend(Ext.layout.ContainerLayout,{renderItem:function(c,position,target){if(c.renderTarget){target=Ext.DomQuery.selectNode(c.renderTarget,Ext.getDom(target));}else if(c.applyTarget){var el=Ext.DomQuery.selectNode(c.applyTarget,Ext.getDom(target));;if(!c.rendered){c.el=el;}
target=el.parentNode;}
Ext.ux.layout.HtmlLayout.superclass.renderItem.call(this,c,undefined,target);}});Ext.Container.LAYOUTS['ux.html']=Ext.ux.layout.HtmlLayout;window.veloland=function(){function doInit(){veloland.user.initUser();veloland.initLand();veloland.initLang();veloland.layertree.init();veloland.map.initMap();veloland.layout.init();veloland.tooltips.init();setLandLogoHilight();veloland.layout.hideLayers();veloland.tracks.init();}
return{config:{},urlParams:{},map:null,land:null,validLands:['velo','wander','mtb','skating','kanu','schweizmobil'],init:function(){var viewport=new Ext.Viewport({layout:'border',id:'viewport',items:[{region:'north',contentEl:'header',border:false,height:82,autoHeight:false,id:'toppanel'},{region:'center',layout:'border',id:'mainpanel',items:[{region:'west',contentEl:'treeLayers',border:false,autoScroll:true,width:273,id:'westpanel'},{region:'center',layout:'border',id:'eastpanel',items:[{id:'mappanelcontainer',region:'center',contentEl:'mapContainer',border:false},{region:'south',contentEl:'footer',border:false}]}]}],listeners:{afterlayout:function(cmp,layout){this.adjustLayout();},scope:this}});viewport.on('resize',function(cmp,w,h,rw,rh){this.adjustLayout();veloland.layout.handleMyChPanelSize();},this);this.urlParams=OpenLayers.Util.getParameters(location.search);doInit();},initLand:function(){if(typeof(selected_land)!='undefined'){this.land=selected_land;}else{this.land='velo';}},initLang:function(){OpenLayers.Lang.setCode(selected_lang);},adjustLayout:function(){var limit=835;switch(selected_lang){case'de':limit=795;break
case'fr':limit=775;break
case'it':limit=765;break
case'en':limit=730;break}
if(Ext.get('toolbar').getWidth()<limit){if(Ext.getCmp('toppanel').getSize().height!=115){Ext.get('header').setHeight(115)
Ext.getCmp('toppanel').setHeight(115);Ext.getCmp('viewport').doLayout();}}else{if(Ext.getCmp('toppanel').getSize().height!=82){Ext.get('header').setHeight(82)
Ext.getCmp('toppanel').setHeight(82);Ext.getCmp('viewport').doLayout();}}}};}();function setLandLogoHilight(){var landlist=['velo','wander','mtb','skating','kanu','schweizmobil'];var textlist=[OpenLayers.i18n('Veloland Schweiz'),OpenLayers.i18n('Wanderland Schweiz'),OpenLayers.i18n('Mountainbikeland Schweiz'),OpenLayers.i18n('Skatingland Schweiz'),OpenLayers.i18n('Kanuland Schweiz'),OpenLayers.i18n('SchweizMobil')];function logoover(ev,target){document.getElementById('landTxt').innerHTML=textlist[this.id];}
for(var i in landlist){if(typeof landlist[i]=='string'){var logotarget='Logo'+landlist[i]+'land';var targetid={id:i};var lt=Ext.get(logotarget);var ltt=document.getElementById(logotarget);lt.on('mouseover',logoover,targetid);lt.on('mouseout',function(){document.getElementById('landTxt').innerHTML='';});if(landlist[i]==window.veloland.land){ltt.className='actif';}else{ltt.className='inactif';lt.on('mouseover',function(){this.replaceClass('inactif','actif');});lt.on('mouseout',function(){this.replaceClass('actif','inactif');});}}}}
(function(){if(veloland===undefined){OpenLayers.Console.error('veloland.js must be loaded before config.js');return;}
veloland.config.tilecacheUrl='/tilecache';veloland.config.wmtsUrl=['http://wmts0.geo.admin.ch/','http://wmts1.geo.admin.ch/','http://wmts2.geo.admin.ch/','http://wmts3.geo.admin.ch/','http://wmts4.geo.admin.ch/'];veloland.config.mapserverUrl='/wms';veloland.config.maxExtent=[420000,30000,900000,350000];veloland.config.resolutions=[650,500,250,100,50,20,10,5,2.5,2,1];veloland.config.serverResolutions=[4000,3750,3500,3250,3000,2750,2500,2250,2000,1750,1500,1250,1000,750,650,500,250,100,50,20,10,5,2.5,2,1.5,1,0.5,0.25];veloland.config.scales=[6500000,5000000,2500000,1000000,500000,200000,100000,50000,25000,20000,10000];veloland.config.printUrl='/print/pdf';veloland.config.wsRecenterSwissnamesUrl='/swissnames_geocoding';veloland.config.absoluteUrl='http://map.schweizmobil.ch';veloland.config.signinUrl='signin';veloland.config.signinHttps=1;})();VelolandHandlerPoint=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:false,mouseDown:false,stoppedDown:null,lastDown:null,lastUp:null,persist:false,stopDown:false,stopUp:false,layerOptions:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});}
OpenLayers.Handler.prototype.initialize.apply(this,arguments);},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,arguments)){return false;}
var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);this.createFeature();return true;},createFeature:function(pixel){if(!pixel){pixel=new OpenLayers.Pixel(-50,-50);}
var lonlat=this.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();this.layer.addFeatures([this.point],{silent:true});},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){return false;}
this.cancel(true);if(this.layer.map!=null){this.destroyFeature();this.layer.destroy(false);}
this.layer=null;return true;},destroyFeature:function(){if(this.layer){this.layer.destroyFeatures();}
this.point=null;},destroyPersistedFeature:function(){var layer=this.layer;if(layer&&layer.features.length>1){this.layer.features[0].destroy();}},finalize:function(cancel,noNew){var key=cancel?"cancel":"done";this.drawing=false;this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback(key,[this.geometryClone()]);if(cancel||!this.persist){this.destroyFeature();}
if(!noNew){this.createFeature();}},cancel:function(noNew){this.finalize(true,noNew);},click:function(evt){OpenLayers.Event.stop(evt);return false;},dblclick:function(evt){OpenLayers.Event.stop(evt);return false;},modifyFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.point,false]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.point,this.style);},getGeometry:function(){var geometry=this.point&&this.point.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiPoint([geometry]);}
return geometry;},geometryClone:function(){var geom=this.getGeometry();return geom&&geom.clone();},mousedown:function(evt){this.mouseDown=true;this.lastDown=evt.xy;this.modifyFeature(evt.xy);this.stoppedDown=this.stopDown;return!this.stopDown;},mousemove:function(evt){if(!this.mouseDown||this.stoppedDown){this.modifyFeature(evt.xy);}
return true;},mouseup:function(evt){this.mouseDown=false;this.stoppedDown=this.stopDown;if(!this.checkModifiers(evt)){return true;}
if(this.lastUp&&this.lastUp.equals(evt.xy)){return true;}
if(this.lastDown&&this.lastDown.equals(evt.xy)){if(this.persist){this.destroyPersistedFeature();}
this.lastUp=evt.xy;this.finalize();return!this.stopUp;}else{return true;}},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.viewPortDiv)){this.stoppedDown=this.stopDown;this.mouseDown=false;}},CLASS_NAME:"OpenLayers.Handler.Point"});VelolandHandlerPath=OpenLayers.Class(VelolandHandlerPoint,{line:null,lastPoint:null,freehand:false,freehandToggle:'shiftKey',initialize:function(control,callbacks,options){VelolandHandlerPoint.prototype.initialize.apply(this,arguments);},createFeature:function(pixel){var dummy=false;if(!pixel){pixel=new OpenLayers.Pixel(-50,-50);dummy=true;}
var lonlat=this.control.map.getLonLatFromPixel(pixel);var p=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);p.dummy=dummy;this.point=new OpenLayers.Feature.Vector(p);this.lastPoint=this.point.clone();this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.lastPoint.geometry.clearBounds();this.layer.addFeatures([this.line,this.lastPoint,this.point],{silent:true});},destroyFeature:function(){VelolandHandlerPoint.prototype.destroyFeature.apply(this);this.lastPoint=null;this.line=null;},destroyPersistedFeature:function(){var layer=this.layer;if(layer&&layer.features.length>2){this.layer.features[0].destroy();}},removePoint:function(){if(this.point){this.layer.removeFeatures([this.point]);}},removeLastPoint:function(){var c=this.line.geometry.components;var empty;this.layer.removeFeatures([this.point,this.lastPoint]);if(c.length>2){var p=c.pop();if(p.snapped){while(c.length>2&&c.pop().snapped){}}
var geometry=c[c.length-1];geometry.isControl=true;this.lastPoint=new OpenLayers.Feature.Vector(geometry);this.point=this.lastPoint.clone();this.drawFeature();empty=false;}else{this.layer.removeFeatures([this.line]);this.createFeature();empty=true;}
this.callback("point",[this.lastPoint.geometry,this.getGeometry()]);this.callback("modify",[this.lastPoint.geometry,this.getSketch()]);return empty;},addPoint:function(pixel){this.layer.removeFeatures([this.point,this.lastPoint]);var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.lastPoint=this.point.clone();this.line.geometry.addComponent(this.lastPoint.geometry,this.line.geometry.components.length);this.callback("point",[this.lastPoint.geometry,this.getGeometry()]);this.callback("modify",[this.lastPoint.geometry,this.getSketch()]);this.drawFeature();},freehandMode:function(evt){return(this.freehandToggle&&evt[this.freehandToggle])?!this.freehand:this.freehand;},modifyFeature:function(pixel,drawing){var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.getSketch(),drawing]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.lastPoint,this.style);this.layer.drawFeature(this.point,this.style);},getSketch:function(){return this.line;},getGeometry:function(){var geometry=this.line&&this.line.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiLineString([geometry]);}
return geometry;},mousedown:function(evt){var stopDown=this.stopDown;if(this.freehandMode(evt)){stopDown=true;}
if(!this.lastDown||!this.lastDown.equals(evt.xy)){this.modifyFeature(evt.xy,!!this.lastUp);}
this.mouseDown=true;this.lastDown=evt.xy;this.stoppedDown=stopDown;return!stopDown;},mousemove:function(evt){if(this.stoppedDown&&this.freehandMode(evt)){if(this.persist){this.destroyPersistedFeature();}
this.addPoint(evt.xy);return false;}
if(!this.mouseDown||this.stoppedDown){this.modifyFeature(evt.xy,!!this.lastUp);}
return true;},mouseup:function(evt){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(evt.xy))){if(this.stoppedDown&&this.freehandMode(evt)){this.removePoint();this.finalize();}else{if(this.lastDown.equals(evt.xy)){if(this.lastUp==null&&this.persist){this.destroyPersistedFeature();}
this.addPoint(evt.xy);this.lastUp=evt.xy;}}}
this.stoppedDown=this.stopDown;this.mouseDown=false;return!this.stopUp;},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[0]);this.removePoint();this.layer.removeFeatures([this.lastPoint]);this.finalize();},dblclick:function(evt){if(!this.freehandMode(evt)){this.finishGeometry();}
return false;},CLASS_NAME:"OpenLayers.Handler.Path"});window.veloland.map=function(){if(window.veloland===undefined){OpenLayers.Console.error('veloland.js must be loaded before map.js');return;}
VelolandMap=OpenLayers.Class(OpenLayers.Map,{isSlowUp:false,initialize:function(div,options){this.EVENT_TYPES.push('addlayertree');OpenLayers.Map.prototype.initialize.apply(this,[div,options]);}});return{map:null,init:function(){},initMap:function(){Ext.BLANK_IMAGE_URL="mfbase/ext/resources/images/default/s.gif";OpenLayers.DOTS_PER_INCH=254;OpenLayers.ImgPath="images/ol/";OpenLayers.Util.onImageLoadError=function(){this.src=Ext.BLANK_IMAGE_URL;};OpenLayers.Tile.Image.useBlankTile=false;var options={projection:"EPSG:21781",units:"m",maxExtent:new OpenLayers.Bounds.fromArray(veloland.config.maxExtent),resolutions:veloland.config.resolutions};var overviewInit=new OpenLayers.Control.OverviewMap({layers:[veloland.layertree.getOlOverviewMapLayer()],size:new OpenLayers.Size(160,106),minRectSize:13,isSuitableOverview:function(){return true;},mapOptions:{units:options.units,projection:options.projection,maxExtent:options.maxExtent,scales:[28000000]}});options.controls=[new OpenLayers.Control.Navigation(),new OpenLayers.Control.PanZoomBar(),new OpenLayers.Control.ScaleLine(),new OpenLayers.Control.MousePosition({div:$('mousepos'),numDigits:0,prefix:OpenLayers.i18n('Koordinaten (m): '),suffix:' | Geodaten &copy; swisstopo (5704000138)'}),overviewInit,new VelolandInteropParser()];this.map=new VelolandMap('map',options);var map=this.map;map.moveTo=function(lonlat,zoom,options){if(zoom!=this.getZoom()){veloland.tooltips.hideTooltip();}
OpenLayers.Map.prototype.moveTo.call(this,lonlat,zoom,options);};map.addLayers([new OpenLayers.Layer("",{isBaseLayer:true}),veloland.layertree.getLayerKarte(),veloland.layertree.getLayerSwissOutline(),veloland.layertree.getLayerKanton(),veloland.layertree.getLayerGemeinde(),veloland.layertree.getLayerVeloland(),veloland.layertree.getLayerHighlight()]);overviewInit.maximizeControl();if(!map.getCenter()){map.zoomToMaxExtent();}},getLayerState:function(){var state={};for(var i=0,n=this.map.layers.length,layer;i<n;i++){layer=this.map.layers[i];if(layer.isBaseLayer){continue;}
if(layer.name=='karte'){if(layer.opacity){state.karte=layer.opacity;}}else if(layer.name=='kartebw'){if(layer.opacity){state.kartebw=layer.opacity;}}else if(layer.name=='luftbild'){if(layer.opacity){state.luftbild=layer.opacity;}}else if(layer.name=='veloland'&&layer.getVisibility()){if(layer.params.LAYERS.length!=layer._origLayers.length){state.layers=layer.params.LAYERS.join(',');}}}
return state;}};}();window.veloland.layertree=function(){if(window.veloland===undefined){OpenLayers.Console.error('veloland.js must be loaded before layertree.js');return;}
var mfModelLayers=[];var olOverviewMapLayer=null;var layerSwissOutline,layerKanton,layerGemeinde;var layerKarte;var layerKarteBw;var layerLuftbild;var layerHighlight;var markedRoutes=[];var layersTooltips=[];var mask;var recenteringLayers=[];return{init:function(){var velo={id:'velo',text:OpenLayers.i18n("Veloland"),expanded:false,checked:false,cls:"veloland-level0 theme-velo first-level0",children:[{id:'veloroute',text:veloland.layertree.addVelolandLayerLink('velo_routen')+OpenLayers.i18n("Routen"),cls:"veloland-level1 theme-velo",checked:true,expanded:true,radio:true,radioGrp:"routenetappenvelo",children:[{text:veloland.layertree.addVelolandLayerLink('velo_routen_national')+OpenLayers.i18n("National"),layerNames:["veloland:VelolandRoutenNational","highlight:VelolandRoutenNational_highlight"],cls:"veloland-level2 theme-velo",id:'veloroutenational',checked:false},{id:'velorouteregional',text:veloland.layertree.addVelolandLayerLink('velo_routen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:VelolandRoutenRegional","highlight:VelolandRoutenRegional_highlight"],cls:"veloland-level2 theme-velo",checked:false},{id:'veloroutelocal',text:veloland.layertree.addVelolandLayerLink('velo_routen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:VelolandRoutenLokal","highlight:VelolandRoutenLokal_highlight"],cls:"veloland-level2 theme-velo",checked:false}]},{text:veloland.layertree.addVelolandLayerLink('velo_etappen')+OpenLayers.i18n("Etappen"),id:'veloetappe',cls:"veloland-level1 theme-velo",checked:false,radio:true,radioGrp:"routenetappenvelo",children:[{text:veloland.layertree.addVelolandLayerLink('velo_etappen_national')+OpenLayers.i18n("National"),layerNames:["veloland:VelolandEtappenNational","highlight:VelolandEtappenNational_highlight"],cls:"veloland-level2 theme-velo",id:'veloetappenational',checked:false,disabled:true},{text:veloland.layertree.addVelolandLayerLink('velo_etappen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:VelolandEtappenRegional","highlight:VelolandEtappenRegional_highlight"],cls:"veloland-level2 theme-velo",checked:false,id:'veloetapperegional',disabled:true},{text:veloland.layertree.addVelolandLayerLink('velo_etappen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:VelolandEtappenLokal","highlight:VelolandEtappenLokal_highlight"],cls:"veloland-level2 theme-velo",checked:false,id:'veloetappelocal',disabled:true}]},{text:veloland.layertree.addVelolandLayerLink('velo_mietvelo')+OpenLayers.i18n("Mietvelo"),cls:"veloland-level1 theme-velo",layerNames:["veloland:VelolandMiet","highlight:VelolandMiet_highlight"],id:'velomietstation',checked:false},{text:veloland.layertree.addVelolandLayerLink('velo_ebikestation')+OpenLayers.i18n("Flyerland"),cls:"veloland-level1 theme-velo",layerNames:["veloland:VelolandEbikestation","highlight:VelolandEbikestation_highlight"],id:'VelolandEbikestation',checked:false},{text:veloland.layertree.addVelolandLayerLink('velo_service')+OpenLayers.i18n("Veloservice"),cls:"veloland-level1 theme-velo",id:'veloservicestelle',layerNames:["veloland:VelolandService","highlight:VelolandService_highlight"],checked:false}]};var wander={id:'wander',text:OpenLayers.i18n("Wanderland"),cls:"veloland-level0 theme-wander",expanded:false,checked:false,children:[{text:veloland.layertree.addVelolandLayerLink('wander_routen')+OpenLayers.i18n("Routen"),cls:"veloland-level1 theme-wander",checked:true,expanded:true,radio:true,radioGrp:"routenetappenwander",id:'wanderroute',children:[{text:veloland.layertree.addVelolandLayerLink('wander_routen_national')+OpenLayers.i18n("National"),layerNames:["veloland:WanderlandRoutenNational","highlight:WanderlandRoutenNational_highlight"],cls:"veloland-level2 theme-wander",id:'wanderroutenational',checked:false},{text:veloland.layertree.addVelolandLayerLink('wander_routen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:WanderlandRoutenRegional","highlight:WanderlandRoutenRegional_highlight"],cls:"veloland-level2 theme-wander",id:'wanderrouteregional',checked:false},{text:veloland.layertree.addVelolandLayerLink('wander_routen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:WanderlandRoutenLokal","highlight:WanderlandRoutenLokal_highlight"],cls:"veloland-level2 theme-wander",id:'wanderroutelocal',checked:false}]},{text:veloland.layertree.addVelolandLayerLink('wander_etappen')+OpenLayers.i18n("Etappen"),cls:"veloland-level1 theme-wander",checked:false,id:'wanderetappe',radio:true,radioGrp:"routenetappenwander",children:[{text:veloland.layertree.addVelolandLayerLink('wander_etappen_national')+OpenLayers.i18n("National"),layerNames:["veloland:WanderlandEtappenNational","highlight:WanderlandEtappenNational_highlight"],cls:"veloland-level2 theme-wander",checked:false,id:'wanderetappenational',disabled:true},{text:veloland.layertree.addVelolandLayerLink('wander_etappen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:WanderlandEtappenRegional","highlight:WanderlandEtappenRegional_highlight"],cls:"veloland-level2 theme-wander",checked:false,id:'wanderetapperegional',disabled:true},{text:veloland.layertree.addVelolandLayerLink('wander_etappen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:WanderlandEtappenLokal","highlight:WanderlandEtappenLokal_highlight"],cls:"veloland-level2 theme-wander",checked:false,id:'wanderetappelocal',disabled:true}]},{text:veloland.layertree.addVelolandLayerLink('wander_wanderwegnetz')+OpenLayers.i18n("Wanderwegnetz"),cls:"veloland-level1 theme-wander",layerName:"veloland:Wanderwegnetz",id:'wanderwegnetz',checked:false}]};var bike={id:'mtb',text:OpenLayers.i18n("Mountainbikeland"),cls:"veloland-level0 theme-mountainbike",expanded:false,checked:false,children:[{text:veloland.layertree.addVelolandLayerLink('bike_routen')+OpenLayers.i18n("Routen"),cls:"veloland-level1 theme-mountainbike",checked:true,expanded:true,radio:true,radioGrp:"routenetappenbike",id:'mtbroute',children:[{text:veloland.layertree.addVelolandLayerLink('bike_routen_national')+OpenLayers.i18n("National"),layerNames:["veloland:MtblandRoutenNational","highlight:MtblandRoutenNational_highlight"],cls:"veloland-level2 theme-mountainbike",id:'mtbroutenational',checked:false},{text:veloland.layertree.addVelolandLayerLink('bike_routen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:MtblandRoutenRegional","highlight:MtblandRoutenRegional_highlight"],cls:"veloland-level2 theme-mountainbike",id:'mtbrouteregional',checked:false},{text:veloland.layertree.addVelolandLayerLink('bike_routen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:MtblandRoutenLokal","highlight:MtblandRoutenLokal_highlight"],cls:"veloland-level2 theme-mountainbike",id:'mtbroutelocal',checked:false}]},{text:veloland.layertree.addVelolandLayerLink('bike_etappen')+OpenLayers.i18n("Etappen"),cls:"veloland-level1 theme-mountainbike",checked:false,radio:true,id:'mtbetappe',radioGrp:"routenetappenbike",children:[{text:veloland.layertree.addVelolandLayerLink('bike_etappen_national')+OpenLayers.i18n("National"),layerNames:["veloland:MtblandEtappenNational","highlight:MtblandEtappenNational_highlight"],cls:"veloland-level2 theme-mountainbike",checked:false,id:'mtbetappenational',disabled:true},{text:veloland.layertree.addVelolandLayerLink('bike_etappen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:MtblandEtappenRegional","highlight:MtblandEtappenRegional_highlight"],cls:"veloland-level2 theme-mountainbike",checked:false,id:'mtbetapperegional',disabled:true},{text:veloland.layertree.addVelolandLayerLink('bike_etappen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:MtblandEtappenLokal","highlight:MtblandEtappenLokal_highlight"],cls:"veloland-level2 theme-mountainbike",checked:false,id:'mtbetappelocal',disabled:true}]},{text:veloland.layertree.addVelolandLayerLink('bike_mietbike')+OpenLayers.i18n("Mietbike"),cls:"veloland-level1 theme-mountainbike",layerNames:["veloland:MtblandMiet","highlight:MtblandMiet_highlight"],id:'mtbmietstation',checked:false},{text:veloland.layertree.addVelolandLayerLink('bike_service')+OpenLayers.i18n("Bikeservice"),cls:"veloland-level1 theme-mountainbike",layerNames:["veloland:MtblandService","highlight:MtblandService_highlight"],id:'mtbservicestelle',checked:false}]};var skating={id:'skating',text:OpenLayers.i18n("Skatingland"),cls:"veloland-level0 theme-skating",expanded:false,checked:false,children:[{text:veloland.layertree.addVelolandLayerLink('skating_routen')+OpenLayers.i18n("Routen"),cls:"veloland-level1 theme-skating",checked:true,expanded:true,radio:true,radioGrp:"routenetappenskating",id:'skatingroute',children:[{text:veloland.layertree.addVelolandLayerLink('skating_routen_national')+OpenLayers.i18n("National"),layerNames:["veloland:SkatinglandRoutenNational","highlight:SkatinglandRoutenNational_highlight"],cls:"veloland-level2 theme-skating",id:'skatingroutenational',checked:false},{text:veloland.layertree.addVelolandLayerLink('skating_routen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:SkatinglandRoutenRegional","highlight:SkatinglandRoutenRegional_highlight"],cls:"veloland-level2 theme-skating",id:'skatingrouteregional',checked:false},{text:veloland.layertree.addVelolandLayerLink('skating_routen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:SkatinglandRoutenLokal","highlight:SkatinglandRoutenLokal_highlight"],cls:"veloland-level2 theme-skating",id:'skatingroutelocal',checked:false}]},{text:veloland.layertree.addVelolandLayerLink('skating_etappen')+OpenLayers.i18n("Etappen"),cls:"veloland-level1 theme-skating",checked:false,radio:true,id:'skatingetappe',radioGrp:"routenetappenskating",children:[{text:veloland.layertree.addVelolandLayerLink('skating_etappen_national')+OpenLayers.i18n("National"),layerNames:["veloland:SkatinglandEtappenNational","highlight:SkatinglandEtappenNational_highlight"],cls:"veloland-level2 theme-skating",checked:false,id:'skatingetappenational',disabled:true},{text:veloland.layertree.addVelolandLayerLink('skating_etappen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:SkatinglandEtappenRegional","highlight:SkatinglandEtappenRegional_highlight"],cls:"veloland-level2 theme-skating",checked:false,id:'skatingetapperegional',disabled:true},{text:veloland.layertree.addVelolandLayerLink('skating_etappen_lokal')+OpenLayers.i18n("Lokal"),layerNames:["veloland:SkatinglandEtappenLokal","highlight:SkatinglandEtappenLokal_highlight"],cls:"veloland-level2 theme-skating",checked:false,id:'skatingetappelocal',disabled:true}]}]};var kanu={id:'kanu',text:OpenLayers.i18n("Kanuland"),expanded:false,checked:false,cls:"veloland-level0 theme-kanu",children:[{text:veloland.layertree.addVelolandLayerLink('kanu_routen')+OpenLayers.i18n("Routen"),cls:"veloland-level1 theme-kanu",checked:true,expanded:true,radio:true,radioGrp:"routenetappenskanu",id:'kanuroute',children:[{text:veloland.layertree.addVelolandLayerLink('kanu_routen_national')+OpenLayers.i18n("National"),layerNames:["veloland:KanulandRoutenNational","highlight:KanulandRoutenNational_highlight"],cls:"veloland-level2 theme-kanu",id:'kanuroutenational',checked:false},{text:veloland.layertree.addVelolandLayerLink('kanu_routen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:KanulandRoutenRegional","highlight:KanulandRoutenRegional_highlight"],cls:"veloland-level2 theme-kanu",id:'kanurouteregional',checked:false}]},{text:veloland.layertree.addVelolandLayerLink('kanu_etappen')+OpenLayers.i18n("Etappen"),cls:"veloland-level1 theme-kanu",checked:false,radio:true,id:'kanuetappe',radioGrp:"routenetappenskanu",children:[{text:veloland.layertree.addVelolandLayerLink('kanu_etappen_national')+OpenLayers.i18n("National"),layerNames:["veloland:KanulandEtappenNational","highlight:KanulandEtappenNational_highlight"],cls:"veloland-level2 theme-kanu",checked:false,id:'kanuetappenational',disabled:true},{text:veloland.layertree.addVelolandLayerLink('kanu_etappen_regional')+OpenLayers.i18n("Regional"),layerNames:["veloland:KanulandEtappenRegional","highlight:KanulandEtappenRegional_highlight"],cls:"veloland-level2 theme-kanu",checked:false,id:'kanuetapperegional',disabled:true}]},{text:veloland.layertree.addVelolandLayerLink('kanu_rafting')+OpenLayers.i18n("Rafting"),cls:"veloland-level1 theme-kanu",id:'kanurafting',layerNames:["veloland:KanulandRafting","highlight:KanulandRafting_highlight"],checked:false},{text:veloland.layertree.addVelolandLayerLink('kanu_club')+OpenLayers.i18n("Kanuclub"),cls:"veloland-level1 theme-kanu",layerNames:["veloland:KanulandClub","highlight:KanulandClub_highlight"],id:'club',checked:false}]};var bahn={id:'bahn',text:OpenLayers.i18n("Bahn - Bus - Schiff"),expanded:false,checked:false,cls:"veloland-level0 theme-bahn",children:[{text:veloland.layertree.addVelolandLayerLink('bahn_haltestellen')+OpenLayers.i18n("Haltestellen"),expanded:false,cls:"veloland-level1 theme-bahn",checked:false,expanded:true,children:[{text:OpenLayers.i18n("Bahn"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherBahn","highlight:OffentlicherBahn_highlight"],id:'OffentlicherBahn',checked:false},{text:OpenLayers.i18n("Bus"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherBus","highlight:OffentlicherBus_highlight"],id:'OffentlicherBus',checked:false},{text:OpenLayers.i18n("Tram"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherTramBus","highlight:OffentlicherTramBus_highlight"],id:'OffentlicherTramBus',checked:false},{text:OpenLayers.i18n("Schiff"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherSchiff","highlight:OffentlicherSchiff_highlight"],id:'OffentlicherSchiff',checked:false},{text:OpenLayers.i18n("Seilbahn"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherSeilbahn","highlight:OffentlicherSeilbahn_highlight"],id:'OffentlicherSeilbahn',checked:false},{text:OpenLayers.i18n("Standseilbahn"),cls:"veloland-level2 theme-bahn",layerNames:["veloland:OffentlicherStandseilbahn","highlight:OffentlicherStandseilbahn_highlight"],id:'OffentlicherStandseilbahn',checked:false}]}]};var orte={id:'ortegrp',text:OpenLayers.i18n("Orte"),expanded:false,checked:false,cls:"veloland-level0 theme-orte",children:[{text:veloland.layertree.addVelolandLayerLink('orte')+OpenLayers.i18n("Orte"),cls:"veloland-level1 theme-orte",layerNames:['veloland:Orte','highlight:Orte_highlight'],id:'orte',checked:false}]};var ubernacht={id:'ubernacht',text:OpenLayers.i18n("Übernachten"),expanded:false,checked:false,autoExpandChild:true,cls:"veloland-level0 theme-ubernacht",children:[{text:veloland.layertree.addVelolandLayerLink('ubernacht')+OpenLayers.i18n("Übernachten"),cls:"veloland-level1 theme-ubernacht",checked:false,children:[{text:OpenLayers.i18n("Hotel"),icon:"images/hotel.gif",layerNames:["veloland:PointsHotel","highlight:PointsHotel_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsHotel',checked:false},{text:OpenLayers.i18n("Bed & Breakfast"),icon:"images/bed_breakfast.gif",layerNames:["veloland:PointsBedBreak","highlight:PointsBedBreak_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsBedBreak',checked:false},{text:OpenLayers.i18n("Jugendherberge"),icon:"images/jugendherberge.gif",layerNames:["veloland:PointsJugen","highlight:PointsJugen_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsJugen',checked:false},{text:OpenLayers.i18n("Backpacker / Herberge"),icon:"images/backpacker.gif",layerNames:["veloland:PointsBackpacker","highlight:PointsBackpacker_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsBackpacker',checked:false},{text:OpenLayers.i18n("Gruppenunterkunft"),icon:"images/gruppenunterkunft.gif",layerNames:["veloland:PointsGruppen","highlight:PointsGruppen_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsGruppen',checked:false},{text:OpenLayers.i18n("Übernachten im Stroh"),icon:"images/uebernachten_stroh.gif",layerNames:["veloland:PointsUbernachten","highlight:PointsUbernachten_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsUbernachten',checked:false},{text:OpenLayers.i18n("Bauernhof mit Zimmer"),icon:"images/bauernhof_zimmer.gif",layerNames:["veloland:PointsBauernhof","highlight:PointsBauernhof_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsBauernhof',checked:false},{text:OpenLayers.i18n("Ferienwohnung"),icon:"images/ferienwohnung.gif",layerNames:["veloland:PointsFerien","highlight:PointsFerien_highlight"],cls:"veloland-level2 theme-ubernacht ferienwohnung",id:'PointsFerien',checked:false},{text:OpenLayers.i18n("Berghuette"),icon:"images/berghuette.gif",layerNames:["veloland:PointsBerghuette","highlight:PointsBerghuette_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsBerghuette',checked:false},{text:OpenLayers.i18n("Campingplatz"),icon:"images/camping.gif",layerNames:["veloland:PointsCamping","highlight:PointsCamping_highlight"],cls:"veloland-level2 theme-ubernacht",id:'PointsCamping',checked:false}]}]};var einkaufen={id:'einkaufen',text:OpenLayers.i18n("Einkaufen"),expanded:false,checked:false,cls:"veloland-level0 theme-einkaufen",children:[{text:OpenLayers.i18n("Migros"),cls:"veloland-level1 theme-einkaufen",layerNames:['veloland:Migros','highlight:Migros_highlight'],id:'Migros',checked:false}]};var sehen={id:'sehen',text:OpenLayers.i18n("Sehenswürdigkeiten"),expanded:false,checked:false,cls:"veloland-level0 theme-sehen",children:[{id:'Natur',text:veloland.layertree.addVelolandLayerLink('sehen_natur')+OpenLayers.i18n("Natur"),cls:"veloland-level1 theme-sehen",layerNames:['veloland:Natur',"highlight:Natur_highlight"],checked:false},{id:'Kultur',text:veloland.layertree.addVelolandLayerLink('sehen_kultur')+OpenLayers.i18n("Kultur"),cls:"veloland-level1 theme-sehen",layerNames:['veloland:Kultur',"highlight:Kultur_highlight"],checked:false},{id:'Erlebnisse',text:veloland.layertree.addVelolandLayerLink('sehen_erlebnisse')+OpenLayers.i18n("Erlebnisse"),cls:"veloland-level1 theme-sehen",layerNames:['veloland:Erlebnisse',"highlight:Erlebnisse_highlight"],checked:false}]};var optional={id:'optional',text:'',expanded:false,checked:false,cls:"veloland-level0 theme-sehen",children:[{id:'slowup',text:'slowup',cls:"veloland-level1 theme-sehen",layerNames:['veloland:Slowup'],checked:false},{id:'kanton',text:'kanton',cls:"veloland-level1 theme-sehen",layerNames:['kantone','highlight:Kantone_highlight'],checked:false},{id:'gemeinde',text:'gemeinde',cls:"veloland-level1 theme-sehen",layerNames:['gemeinde','highlight:Gemeinden_highlight'],checked:false}]};if(window.veloland.land=='velo'){mfModelLayers=mfModelLayers.concat([velo,wander,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional]);velo.expanded=true;}else if(window.veloland.land=='wander'){mfModelLayers=mfModelLayers.concat([wander,velo,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional]);wander.expanded=true;}else if(window.veloland.land=='mtb'){mfModelLayers=mfModelLayers.concat([bike,wander,velo,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional]);bike.expanded=true;}else if(window.veloland.land=='skating'){mfModelLayers=mfModelLayers.concat([skating,wander,velo,bike,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional]);skating.expanded=true;}else if(window.veloland.land=='kanu'){mfModelLayers=mfModelLayers.concat([kanu,wander,velo,bike,skating,bahn,orte,ubernacht,einkaufen,sehen,optional]);kanu.expanded=true;}else{mfModelLayers=mfModelLayers.concat([wander,velo,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional]);}
olOverviewMapLayer=new OpenLayers.Layer.Image("overview","images/keymap.png",new OpenLayers.Bounds(485000,65000,835000,298000),new OpenLayers.Size(150,99));layerSwissOutline=new OpenLayers.Layer.WMTS({name:"karteout",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.gg25-land-flaeche.fill",style:"default",matrixSet:"21781",format:"image/png",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20090601'},formatSuffix:'png',zoomOffset:14,resolutions:veloland.config.serverResolutions.slice(0,17),serverResolutions:veloland.config.serverResolutions});layerKanton=new OpenLayers.Layer.WMTS({name:"kantone",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.gg25-kanton-flaeche.fill",style:"default",matrixSet:"21781",format:"image/png",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20090601'},formatSuffix:'png',zoomOffset:14,serverResolutions:veloland.config.serverResolutions});layerGemeinde=new OpenLayers.Layer.WMTS({name:"gemeinde",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.gg25-gemeinde-flaeche.fill",style:"default",matrixSet:"21781",format:"image/png",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20090601'},formatSuffix:'png',zoomOffset:14,serverResolutions:veloland.config.serverResolutions});layerKarte=new OpenLayers.Layer.WMTS({name:"karte",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.pixelkarte-farbe",opacity:0.75,style:"default",matrixSet:"21781",format:"image/jpeg",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20111027'},formatSuffix:'jpeg',zoomOffset:14,serverResolutions:veloland.config.serverResolutions});layerKarteBw=new OpenLayers.Layer.WMTS({name:"kartebw",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.pixelkarte-grau",opacity:0.75,style:"default",matrixSet:"21781",format:"image/jpeg",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20111027'},formatSuffix:'jpeg',zoomOffset:14,serverResolutions:veloland.config.serverResolutions});layerLuftbild=new OpenLayers.Layer.WMTS({name:"luftbild",url:veloland.config.wmtsUrl,layer:"ch.swisstopo.swissimage",style:"default",matrixSet:"21781",format:"image/jpeg",isBaseLayer:false,visibility:true,requestEncoding:"REST",dimensions:['TIME'],params:{'time':'20110914'},formatSuffix:'jpeg',zoomOffset:14,serverResolutions:veloland.config.serverResolutions});var el=Ext.get('treeLayersTrigger');el.addClass('theme-'+window.veloland.land);el.addListener('click',function(){var mainpanel=Ext.getCmp('mainpanel');var westpanel=Ext.getCmp('westpanel');var ltt=$('treeLayersTriggerTxt');if(westpanel.isVisible()){westpanel.hide();mainpanel.doLayout();veloland.map.map.updateSize();ltt.innerHTML=OpenLayers.i18n('Themen offnen');}else{westpanel.show();mainpanel.doLayout();ltt.innerHTML=OpenLayers.i18n('Themen schliessen');}});OpenLayers.Event.observe($('treeLayers'),'click',OpenLayers.Function.bindAsEventListener(veloland.tooltips.hideTooltip,this));},getModelLayers:function(){return mfModelLayers;},getLayerSwissOutline:function(){return layerSwissOutline;},getLayerKanton:function(){return layerKanton;},getLayerGemeinde:function(){return layerGemeinde;},getLayerKarte:function(){return layerKarte;},getLayerKarteBw:function(){return layerKarteBw;},getLayerLuftbild:function(){return layerLuftbild;},getLayerVeloland:function(url,gutter,visibility){if(!url){url=veloland.config.tilecacheUrl;}
if(!gutter){gutter=0;}
if(!visibility){visibility=false;}
var velo=['VelolandRoutenNational','VelolandRoutenRegional','VelolandRoutenLokal','VelolandEtappenNational','VelolandEtappenRegional','VelolandEtappenLokal','VelolandMiet','VelolandEbikestation','VelolandService'];var wander=['WanderlandRoutenNational','WanderlandRoutenRegional','WanderlandRoutenLokal','WanderlandEtappenNational','WanderlandEtappenRegional','WanderlandEtappenLokal','Wanderwegnetz'];var bike=['MtblandRoutenNational','MtblandRoutenRegional','MtblandRoutenLokal','MtblandEtappenNational','MtblandEtappenRegional','MtblandEtappenLokal','MtblandMiet','MtblandService'];var skating=['SkatinglandRoutenNational','SkatinglandRoutenRegional','SkatinglandRoutenLokal','SkatinglandEtappenNational','SkatinglandEtappenRegional','SkatinglandEtappenLokal'];var kanu=['KanulandRoutenNational','KanulandRoutenRegional','KanulandEtappenNational','KanulandEtappenRegional','KanulandRafting','KanulandClub'];var bahn=['OffentlicherBahn','OffentlicherBus','OffentlicherTramBus','OffentlicherSchiff','OffentlicherSeilbahn','OffentlicherStandseilbahn'];var orte=['Orte'];var ubernacht=['PointsHotel','PointsBedBreak','PointsJugen','PointsBackpacker','PointsGruppen','PointsUbernachten','PointsBauernhof','PointsFerien','PointsCamping','PointsBerghuette'];var einkaufen=['Migros'];var sehen=['Natur','Kultur','Erlebnisse'];var optional=['Slowup'];var layers=[];layersTooltips=[];if(window.veloland.land=='velo'){layers=layers.concat(kanu,skating,bike,wander,velo,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(velo,wander,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional);}else if(window.veloland.land=='wander'){layers=layers.concat(kanu,skating,bike,velo,wander,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(wander,velo,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional);}else if(window.veloland.land=='mtb'){layers=layers.concat(kanu,skating,wander,velo,bike,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(bike,wander,velo,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional);}else if(window.veloland.land=='skating'){layers=layers.concat(kanu,bike,wander,velo,skating,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(skating,wander,velo,bike,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional);}else if(window.veloland.land=='kanu'){layers=layers.concat(skating,bike,wander,velo,kanu,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(kanu,wander,velo,bike,skating,bahn,orte,ubernacht,einkaufen,sehen,optional);}else{layers=layers.concat(kanu,skating,bike,velo,wander,bahn,ubernacht,einkaufen,sehen,orte,optional);layersTooltips=layersTooltips.concat(wander,velo,bike,skating,kanu,bahn,orte,ubernacht,einkaufen,sehen,optional);}
return new OpenLayers.Layer.WMS("veloland",url,{format:'image/png',layers:layers},{isBaseLayer:false,visibility:visibility,buffer:0,gutter:gutter});},getLayersTooltips:function(){return layersTooltips;},getLayerHighlight:function(){if(layerHighlight==null){var velo=['VelolandRoutenLokal_highlight','VelolandEtappenLokal_highlight','VelolandRoutenRegional_highlight','VelolandEtappenRegional_highlight','VelolandEtappenNational_highlight','VelolandRoutenNational_highlight','VelolandService_highlight','VelolandEbikestation_highlight','VelolandMiet_highlight'];var wander=['WanderlandRoutenLokal_highlight','WanderlandEtappenLokal_highlight','WanderlandRoutenNational_highlight','WanderlandRoutenRegional_highlight','WanderlandEtappenNational_highlight','WanderlandEtappenRegional_highlight'];var bike=['MtblandRoutenLokal_highlight','MtblandEtappenLokal_highlight','MtblandRoutenNational_highlight','MtblandRoutenRegional_highlight','MtblandEtappenNational_highlight','MtblandEtappenRegional_highlight','MtblandMiet_highlight','MtblandService_highlight'];var skating=['SkatinglandRoutenLokal_highlight','SkatinglandEtappenLokal_highlight','SkatinglandRoutenNational_highlight','SkatinglandRoutenRegional_highlight','SkatinglandEtappenNational_highlight','SkatinglandEtappenRegional_highlight'];var kanu=['KanulandRoutenRegional_highlight','KanulandEtappenRegional_highlight','KanulandEtappenNational_highlight','KanulandRoutenNational_highlight','KanulandRafting_highlight','KanulandClub_highlight'];var bahn=['OffentlicherBahn_highlight','OffentlicherBus_highlight','OffentlicherTramBus_highlight','OffentlicherSchiff_highlight','OffentlicherSeilbahn_highlight','OffentlicherStandseilbahn_highlight'];var orte=['Orte_highlight'];var ubernacht=['PointsHotel_highlight','PointsBedBreak_highlight','PointsJugen_highlight','PointsBackpacker_highlight','PointsGruppen_highlight','PointsUbernachten_highlight','PointsBauernhof_highlight','PointsFerien_highlight','PointsCamping_highlight','PointsBerghuette_highlight'];var einkaufen=['Migros_highlight'];var sehen=['Natur_highlight','Kultur_highlight','Erlebnisse_highlight'];var optional=['Kantone_highlight','Gemeinden_highlight'];var layers=[];if(window.veloland.land=='velo'){layers=layers.concat(kanu,skating,bike,wander,velo,bahn,ubernacht,einkaufen,sehen,orte,optional);}else if(window.veloland.land=='wander'){layers=layers.concat(kanu,skating,bike,velo,wander,bahn,ubernacht,einkaufen,sehen,orte,optional);}else if(window.veloland.land=='mtb'){layers=layers.concat(kanu,skating,wander,velo,bike,bahn,ubernacht,einkaufen,sehen,orte,optional);}else if(window.veloland.land=='skating'){layers=layers.concat(kanu,bike,wander,velo,skating,bahn,ubernacht,einkaufen,sehen,orte,optional);}else if(window.veloland.land=='kanu'){layers=layers.concat(skating,bike,wander,velo,kanu,bahn,ubernacht,einkaufen,sehen,orte,optional);}else{layers=layers.concat(kanu,skating,bike,wander,velo,bahn,ubernacht,einkaufen,sehen,orte,optional);}
layerHighlight=new OpenLayers.Layer.WMS("highlight",veloland.config.mapserverUrl,{format:'image/png',layers:layers},{isBaseLayer:false,visibility:true,buffer:0,singleTile:true,ratio:2.0});this.updateLayerHighlight();}
return layerHighlight;},updateLayerHighlight:function(){for(param in layerHighlight.params){if(param.substr(0,6)=='LAYER_'){delete layerHighlight.params[param];}}
for(var i=0;i<markedRoutes.length;i++){ids='';for(var j=0;j<markedRoutes[i].ids.length;j++){if(ids!=''){ids+='|';}
ids+='^'+markedRoutes[i].ids[j]+'$';}
if(ids!=''){layerHighlight.params['LAYER_'+markedRoutes[i].layer.toUpperCase()]=ids;}}
layerHighlight.params['EXTRA_LINE']='OFF';},getOlOverviewMapLayer:function(){return olOverviewMapLayer;},addHighlightId:function(layer,id){var route=null;for(var i=0;i<markedRoutes.length;i++){if(markedRoutes[i].layer==layer){route=markedRoutes[i];}}
if(route==null){route={layer:layer,ids:[]};markedRoutes=markedRoutes.concat(route);}
var found=false;for(var i=0;i<route.ids.length;i++){if(route.ids[i]==id){found=true;route.ids.splice(i,1);break;}}
if(!found){route.ids=route.ids.concat(id);}
return found;},highlightObjects:function(layers,ids){if(!(layers instanceof Array)){layers=[layers];}
for(var j=0,k=layers.length;j<k;j++){for(var i=0,n=ids.length;i<n;i++){veloland.layertree.addHighlightId(layers[j],ids[i]);}}
veloland.map.map.removeLayer(veloland.layertree.getLayerHighlight());veloland.layertree.updateLayerHighlight();veloland.map.map.addLayer(veloland.layertree.getLayerHighlight());},showMask:function(){if(!mask){mask=new Ext.LoadMask(Ext.get('map'),{msg:OpenLayers.i18n("Please wait...")});}
mask.show();},hideMask:function(){if(mask){mask.hide();}},recenterOnObjects:function(layer,ids){this.showMask();recenteringLayers=[layer];OpenLayers.Request.GET({url:'query/bbox',params:{layers:layer,ids:ids},success:this.recenterOnBbox,scope:this});},recenterOnObjectsFromMultipleLayers:function(params){this.showMask();for(var layer in params){recenteringLayers.push(layer);}
OpenLayers.Request.GET({url:'query/bboxmultilayers',params:params,success:this.recenterOnBbox,scope:this});},recenterOnBbox:function(response){var f=new OpenLayers.Format.JSON();var bbox=f.read(response.responseText);var bounds=new OpenLayers.Bounds(bbox[0],bbox[1],bbox[2],bbox[3]);if(bounds.getWidth()&&bounds.getHeight()){veloland.map.map.zoomToExtent(bounds);}else{var center=bounds.getCenterLonLat();if(center.lat&&center.lon){var zoom=7;if(recenteringLayers.length&&(recenteringLayers.indexOf('vkpt')!=-1||recenteringLayers.indexOf('OffentlicherBahn')!=-1||recenteringLayers.indexOf('OffentlicherBus')!=-1||recenteringLayers.indexOf('OffentlicherTramBus')!=-1||recenteringLayers.indexOf('OffentlicherSchiff')!=-1||recenteringLayers.indexOf('OffentlicherSeilbahn')!=-1||recenteringLayers.indexOf('OffentlicherStandseilbahn')!=-1)){zoom=8;}
veloland.map.map.setCenter(center,zoom);}}
this.hideMask();},markRoute:function(layer,id){if(!veloland.layertree.addHighlightId(layer,id)){$('label_'+layer+'_'+id).innerHTML=OpenLayers.i18n('Route unmarkieren');}else{$('label_'+layer+'_'+id).innerHTML=OpenLayers.i18n('Route markieren');}
veloland.map.map.removeLayer(veloland.layertree.getLayerHighlight());veloland.layertree.updateLayerHighlight();veloland.map.map.addLayer(veloland.layertree.getLayerHighlight());},updateMarkedLabels:function(){for(var i=0;i<markedRoutes.length;i++){for(var j=0;j<markedRoutes[i].ids.length;j++){var id='label_'+markedRoutes[i].layer+'_'+markedRoutes[i].ids[j];if($(id)!=null){$(id).innerHTML=OpenLayers.i18n('Route unmarkieren');}}}},getMarkedRoutes:function(){return markedRoutes;},getPrintOverrides:function(){return{"veloland":{format:"image/png",customParams:{SKIPCACHE:String((new Date()).getTime())}},"highlight":{format:"image/png"},"karteout":{resolutions:veloland.config.serverResolutions,format:'image/png'},"kantone":{resolutions:veloland.config.serverResolutions},"gemeinde":{resolutions:veloland.config.serverResolutions},"karte":{resolutions:veloland.config.serverResolutions},"kartebw":{resolutions:veloland.config.serverResolutions},"luftbild":{resolutions:veloland.config.serverResolutions}};},addVelolandLayerLink:function(id){var layerlink='<div id="info_'+id+'" class="layerlink" onclick="veloland.layertree.openlink(this)"></div>';return layerlink;},openlink:function(el){var infos=this.getInfoId(el.id);var externalinfoUrl='http://www.'+infos.baseUrl+'.ch/'+OpenLayers.Lang.code+'/page.cfm/'+infos.pageId;var win=new Ext.Window({height:300,width:610,modal:true,title:'',html:'<iframe id="moreinfo" src="'+externalinfoUrl+'"></iframe>'});win.show();return win;},getInfoId:function(infoid){var infoIds={'info_wander_routen':'327673','info_wander_routen_national':'327674','info_wander_routen_regional':'327675','info_wander_routen_lokal':'338234','info_wander_etappen':'327096','info_wander_etappen_national':'329057','info_wander_etappen_regional':'329058','info_wander_etappen_lokal':'338234','info_wander_wanderwegnetz':'329059','info_wander_angebote':'327676','info_velo_routen':'327673','info_velo_routen_national':'327674','info_velo_routen_regional':'327675','info_velo_routen_lokal':'338234','info_velo_etappen':'327096','info_velo_etappen_national':'329057','info_velo_etappen_regional':'329058','info_velo_etappen_lokal':'338234','info_velo_angebote':'327676','info_velo_mietvelo':'329061','info_velo_service':'329062','info_velo_ebikestation':'340392','info_bike_routen':'327673','info_bike_routen_national':'327674','info_bike_routen_regional':'327675','info_bike_routen_lokal':'338234','info_bike_etappen':'327096','info_bike_etappen_national':'329057','info_bike_etappen_regional':'329058','info_bike_etappen_lokal':'338234','info_bike_angebote':'327676','info_bike_mietbike':'329061','info_bike_service':'329062','info_skating_routen':'327673','info_skating_routen_national':'327674','info_skating_routen_regional':'327675','info_skating_routen_lokal':'338234','info_skating_etappen':'327096','info_skating_etappen_national':'329057','info_skating_etappen_regional':'329058','info_skating_etappen_lokal':'338234','info_skating_angebote':'327676','info_kanu_routen':'327673','info_kanu_routen_national':'327674','info_kanu_routen_regional':'327675','info_kanu_etappen':'327096','info_kanu_etappen_national':'329057','info_kanu_etappen_regional':'329058','info_kanu_rafting':'327712','info_kanu_club':'329063','info_kanu_angebote':'329064','info_bahn_haltestellen':'329065','info_bahn_empfehlungen':'327688','info_orte':'327685','info_ubernacht':'329155','info_sehen_natur':'329156','info_sehen_kultur':'329157','info_sehen_erlebnisse':'339100'};var pageId='';if(typeof(infoIds[infoid])!='undefined'){pageId=infoIds[infoid];}
var unds=infoid.indexOf('_',6);var land=infoid.substring(5,unds>0?unds:infoid.length);var baseUrl='';switch(land){case'bike':baseUrl='mountainbikeland';break;case'bahn':case'orte':case'sehen':case'ubernacht':baseUrl='wanderland';break;default:baseUrl=land+'land';}
return{'pageId':pageId,'baseUrl':baseUrl};},getInternetExplorerVersion:function(){var rv=-1;if(navigator.appName=='Microsoft Internet Explorer'){var ua=navigator.userAgent;var re=new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");if(re.exec(ua)!=null)
rv=parseFloat(RegExp.$1);}
return rv;}};}();VelolandIframeWindow=Ext.extend(Ext.Window,{onRender:function(){this.bodyCfg={tag:'iframe',src:this.src,cls:this.bodyCls,style:{border:'0px none'}};VelolandIframeWindow.superclass.onRender.apply(this,arguments);}});window.veloland.user=function(){var currentUser=null;var initUser=function(){if(typeof(initParams.userInfo)!='undefined'&&initParams.userInfo.loggedin==true){currentUser={username:initParams.userInfo.username,name:initParams.userInfo.name,email:initParams.userInfo.email};}};var getUser=function(){return currentUser;};var resetUser=function(){currentUser=null;logout();};var getPermalink=function(){var params={};var map=veloland.map.map;var currentParams=OpenLayers.Util.getParameters();var allowedParams=['land','mode','route','etappe','slowup','Slowup','vkpt','uebernachten','poi','einkaufen','ebikestation','category','kanton','Kantone','gemeinde','Gemeinden','orte','Orte','natur','Natur','kultur','Kultur','erlebnisse','Erlebnisse','club','servicestelle','mietstation','lokaleangebote','rafting'];for(var currentParam in currentParams){if(allowedParams.indexOf(currentParam)!=-1){params[currentParam]=currentParams[currentParam];}}
OpenLayers.Util.extend(params,veloland.map.getLayerState());params.scale=map.getScale();var center=map.getCenter();params.X=center.lon;params.Y=center.lat;var trackId=veloland.tracks.getDisplayedTrackId();if(trackId){params.trackId=trackId;}
var queryStr=OpenLayers.Util.getParameterString(params);var url=window.location.href;if(url.indexOf('?')>-1){url=url.slice(0,url.indexOf('?'));}
if(queryStr){url=url+'?'+queryStr;}
return url;};var createLoginButton=function(){var button=new Ext.Button({text:OpenLayers.i18n('Signin'),cls:'myloginbutton',handler:showLoginWindow});return button;};var showLoginWindow=function(){var url=''
if(veloland.config.signinHttps==1){url='https://'+document.location.hostname+'/'}
url+=veloland.config.signinUrl;url+='?lang='+OpenLayers.Lang.getCode();if(typeof isDebugMode!='undefined'&&isDebugMode){url+='&mode=debug';}
url+='&from='+encodeURIComponent(getPermalink());var w=new VelolandIframeWindow({id:'loginIframeWindow',modal:true,width:300,height:300,title:OpenLayers.i18n('myloginwindowtitle'),src:url});w.show();};var createMyChPresentationButton=function(){var about=new Ext.Panel({html:OpenLayers.i18n('aboutmych'),cls:'aboutmybutton',listeners:{render:function(cmp){cmp.body.addClassOnOver('aboutmybuttonover');cmp.body.on('click',function(){window.open(OpenLayers.i18n('aboutmychurl'),'_blank');});},scope:this}});return about;};var createLogout=function(){return new Ext.Button({text:OpenLayers.i18n('logout'),id:'logoutbutton',cls:'mylogoutbutton',renderTarget:'div[id="mylogoutbutton"]',minWidth:120,listeners:{click:function(button,ev){logout();}}});};var createHelp=function(){return new Ext.Button({text:OpenLayers.i18n('help'),id:'helpbutton',cls:'myhelpbutton',renderTarget:'div[id="mylogouthelp"]',minWidth:50,listeners:{click:function(button,ev){window.open(OpenLayers.i18n('aboutmychurl'),'_blank');}}});};var logout=function(){Ext.Ajax.request({url:'user/logout',method:'GET',success:logoutCallback,failure:logoutCallback});};var logoutCallback=function(res){currentUser=null;veloland.layout.toggleMyChPanelContent('mylogin');veloland.tracks.resetDrawButton();veloland.tracks.resetListGrid();veloland.tracks.resetProfile();veloland.tracks.resetMeasure();};var clearForm=function(){var fields=['myusername','mypassword']
var f=Ext.getCmp('myloginform').getForm();for(var i=0;i<fields.length;i++){f.findField(fields[i]).reset();}}
var isLogged=function(){return(currentUser!=null&&currentUser.username);};var isLoggedOnServer=function(callback){var request=Ext.Ajax.request({url:'user/check',method:'GET',success:function(result){var jsonData=Ext.util.JSON.decode(result.responseText);if(typeof(jsonData.loggedin)!='undefined'&&jsonData.loggedin==true&&typeof(jsonData.username)!='undefined'&&jsonData.username!=''){currentUser={username:jsonData.username,name:jsonData.name,email:jsonData.email};}
if(typeof(jsonData.loggedin)!='undefined'&&jsonData.loggedin==false){currentUser=null;veloland.layout.resetMyChPanelAndTrigger();}
this(jsonData);},failure:function(result){currentUser=null;veloland.layout.resetMyChPanelAndTrigger();this({'loggedin':false});},scope:callback});};return{createLoginForm:function(){return createLoginForm();},createLoginButton:function(){return createLoginButton();},showLoginWindow:function(){return showLoginWindow();},createForgotPasswordButton:function(){return createForgotPasswordButton();},createMyChPresentationButton:function(){return createMyChPresentationButton();},createLogoutButton:function(){return createLogout();},createHelpButton:function(){return createHelp();},logout:function(){logout();},getUser:function(){return getUser();},isLogged:function(){return isLogged();},isLoggedOnServer:function(callback){return isLoggedOnServer(callback);},initUser:function(){initUser();},resetUser:function(){resetUser();}}}();function refreshOpacity(percent){var oldPercent=0;var luftbildLayers=veloland.map.map.getLayersByName('luftbild');var velolandLayers=veloland.map.map.getLayersByName('veloland');var highlightLayers=veloland.map.map.getLayersByName('highlight');var karteLayers=veloland.map.map.getLayersByName('karte');var kartebwLayers=veloland.map.map.getLayersByName('kartebw');if(luftbildLayers.length==1){var opacity=luftbildLayers[0].opacity;if(opacity==null){oldPercent=100;}else{oldPercent=opacity*100;}}
switch(percent){case 0:if(kartebwLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarteBw());}
if(!veloland.layertree.getLayerKarteBw().getVisibility()){veloland.layertree.getLayerKarteBw().setVisibility(true);}
if(luftbildLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerLuftbild());}
if(!veloland.layertree.getLayerLuftbild().getVisibility()){veloland.layertree.getLayerLuftbild().setVisibility(true);}
if(karteLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarte());}
if(!veloland.layertree.getLayerKarte().getVisibility()){veloland.layertree.getLayerKarte().setVisibility(true);}
veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarte(),1);veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarteBw(),2);veloland.map.map.setLayerIndex(veloland.layertree.getLayerLuftbild(),3);veloland.map.map.setLayerIndex(veloland.layertree.getLayerSwissOutline(),4);veloland.map.map.setLayerIndex(velolandLayers[0],5);veloland.map.map.setLayerIndex(highlightLayers[0],6);veloland.map.map.layers[1].setOpacity(0.75);veloland.map.map.layers[2].setOpacity(0);veloland.map.map.layers[3].setOpacity(0);break;case 100:if(karteLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarte());}
if(!veloland.layertree.getLayerKarte().getVisibility()){veloland.layertree.getLayerKarte().setVisibility(true);}
if(kartebwLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarteBw());}
if(!veloland.layertree.getLayerKarteBw().getVisibility()){veloland.layertree.getLayerKarteBw().setVisibility(true);}
if(luftbildLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerLuftbild());}
if(!veloland.layertree.getLayerLuftbild().getVisibility()){veloland.layertree.getLayerLuftbild().setVisibility(true);}
veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarte(),1);veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarteBw(),2);veloland.map.map.setLayerIndex(veloland.layertree.getLayerLuftbild(),3);veloland.map.map.setLayerIndex(veloland.layertree.getLayerSwissOutline(),4);veloland.map.map.setLayerIndex(velolandLayers[0],5);veloland.map.map.setLayerIndex(highlightLayers[0],6);veloland.map.map.layers[1].setOpacity(0);veloland.map.map.layers[2].setOpacity(0);veloland.map.map.layers[3].setOpacity(1);break;case 200:if(karteLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarte());}
if(!veloland.layertree.getLayerKarte().getVisibility()){veloland.layertree.getLayerKarte().setVisibility(true);}
if(luftbildLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerLuftbild());}
if(!veloland.layertree.getLayerLuftbild().getVisibility()){veloland.layertree.getLayerLuftbild().setVisibility(true);}
if(kartebwLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarteBw());}
if(!veloland.layertree.getLayerKarteBw().getVisibility()){veloland.layertree.getLayerKarteBw().setVisibility(true);}
veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarte(),1);veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarteBw(),2);veloland.map.map.setLayerIndex(veloland.layertree.getLayerLuftbild(),3);veloland.map.map.setLayerIndex(veloland.layertree.getLayerSwissOutline(),4);veloland.map.map.setLayerIndex(velolandLayers[0],5);veloland.map.map.setLayerIndex(highlightLayers[0],6);veloland.map.map.layers[1].setOpacity(0);veloland.map.map.layers[2].setOpacity(0.75);veloland.map.map.layers[3].setOpacity(0);break;default:if(percent<100){if(kartebwLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarteBw());}
if(!veloland.layertree.getLayerKarteBw().getVisibility()){veloland.layertree.getLayerKarteBw().setVisibility(true);}
if(karteLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarte());}
if(!veloland.layertree.getLayerKarte().getVisibility()){veloland.layertree.getLayerKarte().setVisibility(true);}
if(luftbildLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerLuftbild());}
if(!veloland.layertree.getLayerLuftbild().getVisibility()){veloland.layertree.getLayerLuftbild().setVisibility(true);}
veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarte(),1);veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarteBw(),2);veloland.map.map.setLayerIndex(veloland.layertree.getLayerLuftbild(),3);veloland.map.map.setLayerIndex(veloland.layertree.getLayerSwissOutline(),4);veloland.map.map.setLayerIndex(velolandLayers[0],5);veloland.map.map.setLayerIndex(highlightLayers[0],6);veloland.map.map.layers[1].setOpacity(0.75);veloland.map.map.layers[2].setOpacity(0);veloland.map.map.layers[3].setOpacity(percent/100);}else{if(karteLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarte());}
if(!veloland.layertree.getLayerKarte().getVisibility()){veloland.layertree.getLayerKarte().setVisibility(true);}
if(kartebwLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerKarteBw());}
if(!veloland.layertree.getLayerKarteBw().getVisibility()){veloland.layertree.getLayerKarteBw().setVisibility(true);}
if(luftbildLayers.length==0){veloland.map.map.addLayer(veloland.layertree.getLayerLuftbild());}
if(!veloland.layertree.getLayerLuftbild().getVisibility()){veloland.layertree.getLayerLuftbild().setVisibility(true);}
veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarte(),1);veloland.map.map.setLayerIndex(veloland.layertree.getLayerKarteBw(),2);veloland.map.map.setLayerIndex(veloland.layertree.getLayerLuftbild(),3);veloland.map.map.setLayerIndex(veloland.layertree.getLayerSwissOutline(),4);veloland.map.map.setLayerIndex(velolandLayers[0],5);veloland.map.map.setLayerIndex(highlightLayers[0],6);veloland.map.map.layers[1].setOpacity(0);veloland.map.map.layers[2].setOpacity(0.75);veloland.map.map.layers[3].setOpacity((200-percent)/100);}}}
function positionPrintContainer(){var mv=Ext.get('printContainer');var y=Ext.get('header').getBottom();var x=Ext.get('printTriggerContainer').getLeft();mv.moveTo(x,y);}
veloland.VelolandSimpleForm=Ext.extend(mapfish.widgets.print.SimpleForm,{fillComponent:function(){if(this.map.isSlowUp){this.config.layouts=[this.config.layouts[2],this.config.layouts[3]];}else{this.config.layouts=[this.config.layouts[0],this.config.layouts[1]];}
for(var i=0;i<this.config.layouts.length;i++){this.config.layouts[i].translatedname=OpenLayers.i18n(this.config.layouts[i].name)}
veloland.VelolandSimpleForm.superclass.fillComponent.call(this);},print:function(){var luftbildLayers=veloland.map.map.getLayersByName('luftbild');var karteLayers=veloland.map.map.getLayersByName('karte');var kartebwLayers=veloland.map.map.getLayersByName('kartebw');if(luftbildLayers.length>0&&luftbildLayers[0].opacity==0){this.overrides['luftbild']={visibility:false};}else{delete this.overrides['luftbild'];}
if(karteLayers.length>0&&karteLayers[0].opacity==0){this.overrides['karte']={visibility:false};}else{delete this.overrides['karte'];}
if(kartebwLayers.length>0&&kartebwLayers[0].opacity==0){this.overrides['kartebw']={visibility:false};}else{delete this.overrides['kartebw'];}
mapfish.widgets.print.BaseWidget.prototype.print.call(this);}});function setListenerOnPrintLayoutSwitch(){var i1=Ext.get('printlandscape');var i2=Ext.get('printportrait');i1.on('click',function(){i1.dom.src="images/print/ls.png";i2.dom.src="images/print/p.png";veloland.layout.printPanel.formPanel.getForm().findField('printlayoutfield').setValue(veloland.layout.printPanel.config.layouts[0].name);veloland.layout.printPanel.updateRectangle();});i2.on('click',function(){i1.dom.src="images/print/l.png";i2.dom.src="images/print/ps.png";veloland.layout.printPanel.formPanel.getForm().findField('printlayoutfield').setValue(veloland.layout.printPanel.config.layouts[1].name);veloland.layout.printPanel.updateRectangle();});}
window.veloland.layout=function(){if(window.veloland===undefined){OpenLayers.Console.error('veloland.js must be loaded before layout.js');return;}
var toolbar={};var initToolbar=function(){var s=new Ext.Slider({renderTo:'slider_new',width:160,value:0,increment:10,minValue:0,maxValue:200,bgImage:'slider_bg.gif',sliderImage:'slider_horiz.gif',listeners:{change:function(slider,slidervalue){refreshOpacity(slidervalue);}}});window.slider=s;};var initTreeLayers=function(){mapfish.widgets.LayerTreeEventModel.prototype.onRadioClick=function(e,node){if(!node.ui.onRadioChange){OpenLayers.Console.error("Invalid TreeNodeUI Class, no "+"onRadioChange is available");return;}
node.ui.onRadioChange(e);node.expand();};var tree=new mapfish.widgets.LayerTree({map:veloland.map.map,el:'treeLayers',model:veloland.layertree.getModelLayers(),singleExpand:true,maxNodes:32});tree.on('expandnode',function(e){if(e.attributes.autoExpandChild){e.expand(true);}});tree.on('toomanynodes',function(e){var win=new Ext.Window({height:126,width:400,modal:true,title:'',html:'<div class="messagePopupText">'+OpenLayers.i18n('You selected too many layers')+'</div>',cls:'messagePopup'});win.show();});tree.on('click',function(e){if(e.parentNode.id=='source'){e.toggle();}});tree.render();var skatingNode=tree.getNodeById('skating');tree.setNodeChecked(skatingNode,false,false);skatingNode.expand();var land=window.veloland.land;if(land!='skating'){skatingNode.collapse();if(land!='schweizmobil'){tree.getNodeById(land).expand();}}
return tree;};var resultTpl=new Ext.XTemplate('<tpl for=".">','<div class="x-combo-list-item">','<h3><span>{name}</span></h3>',' ({kanton}) - {gemname}','</div>','</tpl>');var resultTplCommune=new Ext.XTemplate('<tpl for=".">','<div class="x-combo-list-item">','<h3><span>{gemname}</span></h3>','</div>','</tpl>');var initSearchPanel=function(){var store=new Ext.data.JsonStore({proxy:new Ext.data.ScriptTagProxy({url:"http://api.geo.admin.ch/swisssearch/geocoding",method:'GET',callbackParam:'cb'}),baseParams:{lang:OpenLayers.Lang.getCode(),ref:'geoadmin'},root:'results',fields:['label','id','service','bbox','objectorig','rank']});var tpl=new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item {service}">','{label}','</div></tpl>');var searchConfig={renderTo:'searchContainer',store:store,tpl:tpl,hideTrigger:true,minChars:2,queryDelay:50,emptyText:OpenLayers.i18n('Geo search...'),loadingText:OpenLayers.i18n('loadingText'),displayField:'label',cls:'cbSearchCls',ctCls:'cbSearchContainerCls',width:179};var search=new Ext.form.ComboBox(searchConfig);search.on('beforequery',function(queryEvent){var query=queryEvent.query;var coord_re=/([\d\.']+)[\s,]+([\d\.']+)/;var match=query.match(coord_re);if(match){var left=parseFloat(match[1].replace("'",""));var right=parseFloat(match[2].replace("'",""));var position=new OpenLayers.LonLat(left>right?left:right,right<left?right:left);var valid=false;if(this.map.maxExtent.containsLonLat(position)){valid=true;}else{position=new OpenLayers.LonLat(left<right?left:right,right>left?right:left);position.transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());if(this.map.maxExtent.containsLonLat(position)){valid=true;}}
if(valid){this.map.setCenter(position,5);return false;}}
return true;},this.veloland);search.on('beforeselect',function(combo,record,index){record.data.label=record.data.label.replace('<b>','').replace('</b>','');});search.on('select',function(combo,record,index){var bbox=record.get('bbox');var service=record.get('service');if(bbox){if(service=='swissnames'){var objectorig=record.get('objectorig');if(objectorig=='LK500'){this.map.setCenter(OpenLayers.Bounds.fromArray(bbox).getCenterLonLat(),4);}else if(objectorig=='LK200'){this.map.setCenter(OpenLayers.Bounds.fromArray(bbox).getCenterLonLat(),5);}else if(objectorig=='LK100'){this.map.setCenter(OpenLayers.Bounds.fromArray(bbox).getCenterLonLat(),6);}else if(objectorig=='LK50'){this.map.setCenter(OpenLayers.Bounds.fromArray(bbox).getCenterLonLat(),7);}else if(objectorig=='LK25'){this.map.setCenter(OpenLayers.Bounds.fromArray(bbox).getCenterLonLat(),8);}else{this.map.zoomToExtent(OpenLayers.Bounds.fromArray(bbox));}}else{this.map.zoomToExtent(OpenLayers.Bounds.fromArray(bbox));}}},veloland.map);return search;};var initPrintPanel=function(treeLayers){var ct=new veloland.VelolandSimpleForm({renderTo:'printContainerIn',height:80,width:200,configUrl:veloland.config.printUrl+'/info.json',overrides:veloland.layertree.getPrintOverrides(),layerTree:treeLayers,map:veloland.map.map,columns:[],formConfig:{labelAlign:'top',defaults:{width:160,listWidth:160},items:[{xtype:'hidden',name:'lang'+OpenLayers.Lang.getCode(),value:true}]},serviceParams:{locale:'fr_CH'},wantResetButton:false})
return ct;};var initPrintPanelTrigger=function(){var el=Ext.get('printTriggerContainer');el.addListener('click',function(){var lt=document.getElementById('printContainer');var ltt=document.getElementById('printTriggerTxt');var lti=$('printTriggerImg');var base='treeLayersTriggerImg';if(lt.style.display=='none'){lt.style.display='block';veloland.layout.printPanel.on('render',setListenerOnPrintLayoutSwitch());veloland.layout.printPanel.enable();ltt.innerHTML=OpenLayers.i18n('Druckfeld schliessen');lti.className=base+'Minus';veloland.layout.printPanel.doLayout();}else{lt.style.display='none';veloland.layout.printPanel.disable();ltt.innerHTML=OpenLayers.i18n('Drucken');lti.className=base+'Plus';}
positionPrintContainer();});};var initLandColors=function(){Ext.getBody().addClass(veloland.land);Ext.getBody().addClass(selected_lang);};var myChTemplates=Array();var initMyChPanel=function(){Ext.QuickTips.init();var p=new Ext.Panel({renderTo:'mychContainerIn',width:220,items:[{id:'mylogin',border:false,hidden:true,defaults:{minWidth:220},items:[veloland.user.createLoginButton(),veloland.user.createMyChPresentationButton()]},{id:'mylogout',layout:'ux.html',html:setMyContent('mylogout'),border:false,hidden:true,items:[veloland.user.createLogoutButton(),veloland.user.createHelpButton()]},{id:'tracks4anonymous',defaults:{minWidth:220,cls:'tracks-tools'},items:[veloland.tracks.createHideButton()],border:false,hidden:true},{id:'tracks',defaults:{minWidth:220,cls:'tracks-tools'},items:[veloland.tracks.createDrawButton(),veloland.tracks.createSnapButton(),veloland.tracks.createCenterButton(),veloland.tracks.createRemoveLastButton(),veloland.tracks.createSaveButton(),veloland.tracks.createDropButton(),veloland.tracks.createExportButton(),veloland.tracks.createImportButton(),veloland.tracks.createSendButton()],border:false,hidden:true},{id:'myblockmesurecontainer',border:false,hidden:true,items:[{id:'myblockmesurecommandbar',html:setActiveBarContent({blocktitle:OpenLayers.i18n('myblockmesure')}),border:false,hidden:false,cls:'myblockcommandbar',listeners:{render:function(){this.el.on('click',toggleMyChSubPanel,this,{id:this.contentPanel});}},contentPanel:'myblockmesurecontent'},{id:'myblockmesurecontent',cls:'myblockmesurecontent',border:false,hidden:true,items:[veloland.tracks.createMesureForm()]}]},{id:'myblockprofilcontainer',border:false,hidden:true,cls:'mycontainer',items:[{id:'myblockprofilcommandbar',html:setActiveBarContent({blocktitle:OpenLayers.i18n('myblockprofil')}),border:false,hidden:false,cls:'myblockcommandbar',listeners:{render:function(){this.el.on('click',toggleMyChSubPanel,this,{id:this.contentPanel});}},contentPanel:'myblockprofilcontent'},{id:'myblockprofilcontent',border:false,hidden:true,items:[{id:'myblockprofilinnercontent',border:false,hidden:false},veloland.tracks.createEnlargeButton()]}]},{id:'myblocklistcontainer',border:false,hidden:false,cls:'myblock',items:[{id:'myblocklistcommandbar',html:setActiveBarContent({blocktitle:OpenLayers.i18n('myblocklist')},true),border:false,hidden:false,cls:'myblockcommandbar',listeners:{render:function(){this.el.on('click',toggleMyChSubPanel,this,{id:this.contentPanel});}},contentPanel:'myblocklistcontent'},{id:'myblocklistcontentcontainer',border:false,layout:'fit',items:[veloland.tracks.createListGrid({id:'myblocklistcontent',border:false,hidden:false})]}]}]});return p;};var toggleMyChSubPanel=function(ev,el,params){if(getSubTabPanel(this.contentPanel).hidden){enableSubTab(this.id);}else{disableSubTab(this.id);}};var enableSubTab=function(id){var pb=getSubTabPanel(id);var img=pb.el.query('img')[0];img.className='mychImgMinus';var pc=getSubTabPanel(pb.contentPanel);pc.setVisible(true);handleMyChPanelSize();};var disableSubTab=function(id){var pb=getSubTabPanel(id);var img=pb.el.query('img')[0];img.className='mychImgPlus';var pc=getSubTabPanel(pb.contentPanel);pc.setVisible(false);handleMyChPanelSize();};var getSubTabPanel=function(id){return veloland.layout.myChPanel.findById(id);};var setActiveBarContent=function(params,unfold){if(!myChTemplates['activebar']){var tpl=setMyContent('activebar');tpl.compile();myChTemplates['activebar']=tpl;}else{tpl=myChTemplates['activebar'];}
html=tpl.apply(params);if(unfold){html=html.replace('mychImgPlus','mychImgMinus');}
return html;}
var getMyContent=function(elid){var el=Ext.get('tpl'+elid);var html=el.dom.innerHTML;el.remove();return html;};var setMyContent=function(elid){return new Ext.XTemplate(getMyContent(elid));};var updateMyChPanelAndTrigger=function(){setMyChPanelState();toggleMyChPanelTriggerFoldedState();};var initMyChPanelTrigger=function(){var el=Ext.get('mychTriggerContainer');var attr={folded:'yes'}
el.set(attr);el.addListener('click',function(){updateMyChPanelAndTrigger();});setMyChPanelInitialState();};var setMyChPanelInitialState=function(){var logged=veloland.user.isLogged();if(logged){var displayedEl='mylogout';}else{var displayedEl='none';}
toggleMyChPanelContent(displayedEl);}
var setMyChPanelState=function(){var logged=veloland.user.isLogged();var folded=Ext.get('mychTriggerContainer').getAttributeNS(undefined,'folded');var displayedEl;if(logged){displayedEl=(folded=='yes')?'all':'mylogout';}else{if(folded=='yes'){displayedEl=(!veloland.tracks.trackId)?'mylogin':['mylogin','tracks4anonymous','myblockmesurecontainer','myblockprofilcontainer'];}else{displayedEl='none';}}
toggleMyChPanelContent(displayedEl);};var toggleMyChPanelTriggerFoldedState=function(open){var el=Ext.get('mychTriggerContainer');var base='treeLayersTriggerImg';var img=Ext.get('mychTriggerImg');if(open==null){open=(el.getAttributeNS(undefined,'folded')=='yes');}
if(open){var attr={folded:'no'}
img.removeClass(base+'Plus');img.addClass(base+'Minus');}else{var attr={folded:'yes'}
img.removeClass(base+'Minus');img.addClass(base+'Plus');}
el.set(attr);};var resetMyChPanelAndTrigger=function(){var el=Ext.get('mychTriggerContainer');var folded=el.getAttributeNS(undefined,'folded');if(folded=='yes'){var displayedEl='none';}else{var displayedEl='mylogin';}
toggleMyChPanelContent(displayedEl);};var toggleMyChPanelContent=function(displayedEl){var itemList=veloland.layout.myChPanel.items.items;switch(displayedEl){case'all':for(var i=0;i<itemList.length;i++){if(['mylogin','tracks4anonymous'].indexOf(itemList[i].id)!=-1){itemList[i].setVisible(false);}else{itemList[i].setVisible(true);}}
break;case'none':for(var i=0;i<itemList.length;i++){itemList[i].setVisible(false);}
break;default:var isArgumentScalar=(typeof(displayedEl)!='object');for(var i=0,len=itemList.length,showPanel;i<len;i++){showPanel=isArgumentScalar?(itemList[i].id==displayedEl):(displayedEl.indexOf(itemList[i].id)!=-1);if(showPanel){itemList[i].setVisible(true);}else{itemList[i].setVisible(false);}}}
handleMyChPanelSize();};var handleMyChPanelSize=function(){var h=Ext.getCmp('mappanelcontainer').getInnerHeight();if(veloland.layout.myChPanel.getInnerHeight()>h){if(Ext.isIE){Ext.get('mychContainer').applyStyles("overflow-y: auto; width: 236px; height: "+h+"px;");}else{Ext.get('mychContainer').applyStyles("overflow-y: auto; width: 236px; max-height: "+h+"px;");}
Ext.get('mychTriggerContainer').applyStyles("width: 236px;");}else{if(Ext.isIE){Ext.get('mychContainer').applyStyles("overflow-y: auto; width: 236px; height: auto;");}
Ext.get('mychContainer').applyStyles("width: 220px;max-height:none");Ext.get('mychTriggerContainer').applyStyles("width: 220px;");if(Ext.isIE){var myc=Ext.get('mychContainer');var mac=Ext.get('mapContainer');if(myc.getRight()<mac.getRight()){myc.dom.style.right="1px";myc.dom.style.right="0px";}}}};return{treeLayers:{},treeBackground:{},mapComponent:{},printPanel:{},myChPanel:{},openMyChPanel:false,showLogin:false,hideLayers:function(){var root=this.treeLayers.getRootNode();for(var i=0;i<root.childNodes.length;i++){if(root.childNodes[i].id=='optional'){root.childNodes[i].getUI().hide();}}},init:function(){this.toolbar=initToolbar();this.treeLayers=initTreeLayers();veloland.map.map.events.triggerEvent('addlayertree');this.printPanel=initPrintPanel(this.treeLayers);initPrintPanelTrigger();initLandColors();initSearchPanel();this.myChPanel=initMyChPanel();initMyChPanelTrigger();if(veloland.user.isLogged()){if(this.openMyChPanel){this.toggleMyChPanelContent('all');}}else{if(this.showLogin){veloland.user.showLoginWindow();}}},openlink:function(el){switch(el.id){case'legend':var pageId;if(veloland.map.map.isSlowUp){pageId=338485;}else{pageId=338484;}}
var land=veloland.land;switch(land){case'schweizmobil':baseUrl='schweizmobil';break;case'bike':case'mtb':baseUrl='mountainbikeland';break;case'bahn':case'orte':case'sehen':case'ubernacht':baseUrl='wanderland';break;default:baseUrl=land+'land';}
var externalinfoUrl='http://www.'+baseUrl+'.ch/'+OpenLayers.Lang.code+'/page.cfm/'+pageId;var win=new Ext.Window({height:600,width:610,modal:true,title:'',html:'<iframe id="moreinfo" src="'+externalinfoUrl+'"></iframe>'});win.show();return win;},setMyContent:function(elid){return setMyContent(elid);},toggleMyChPanelContent:function(displayedEl){toggleMyChPanelContent(displayedEl);toggleMyChPanelTriggerFoldedState(displayedEl!='none');},enableSubTab:function(id){enableSubTab(id);},disableSubTab:function(id){disableSubTab(id);},resetMyChPanelAndTrigger:function(){veloland.user.resetUser();resetMyChPanelAndTrigger();},redirectToLogin:function(){Ext.Msg.minWidth=150;Ext.Msg.alert(OpenLayers.i18n('error'),OpenLayers.i18n('your session expired, please log again'));resetMyChPanelAndTrigger();},handleMyChPanelSize:function(){handleMyChPanelSize();}};}();VelolandPopup=OpenLayers.Class(OpenLayers.Popup.FramedCloud,{setContentHTML:function(contentHTML){OpenLayers.Popup.FramedCloud.prototype.setContentHTML.apply(this,arguments);this.addCloseBox();},addCloseBox:function(){this.velolandCloseDiv=OpenLayers.Util.createDiv(this.id+"_close",null,new OpenLayers.Size(14,14));this.velolandCloseDiv.className="olVelolandPopupCloseBox";this.velolandCloseDiv.style.right="8px";this.velolandCloseDiv.style.top="5px";this.contentDiv.appendChild(this.velolandCloseDiv);var closePopup=function(e){this.hide();OpenLayers.Event.stop(e);};OpenLayers.Event.observe(this.velolandCloseDiv,"click",OpenLayers.Function.bindAsEventListener(closePopup,this));},destroy:function(){OpenLayers.Event.stopObservingElement(this.velolandCloseDiv);this.groupDiv.removeChild(this.velolandCloseDiv);OpenLayers.Popup.FramedCloud.prototype.destroy.apply(this,arguments);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.contentDiv,null,true);this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,scope:this});},onmousemove:function(evt){OpenLayers.Event.stop(evt,true);Ext.getBody().setStyle('cursor','auto');}});window.veloland.tooltips=function(){var popup=null;var popupContent=null;function displayPrint(){var printWindow=window.open('print.html','tooltipsPrint','width=500, height=400, toolbar=no, location=no,'
+'directories=no, status=no, menubar=no, scrollbars=yes,'
+'copyhistory=no, resizable=no');}
function displayPopup(response){if(response.features==null){if(popup!=null){popup.hide();}
return;}
popup=new VelolandPopup(null,this.popupLonLat,null,response.features,null,false);veloland.map.map.addPopup(popup,true);$('tooltip_body').style.height=(popup.size.h-64)+"px";veloland.layertree.updateMarkedLabels();OpenLayers.Event.observe(popup,'mousemove',OpenLayers.Function.bindAsEventListener(function(e){OpenLayers.Event.stop(e,true);},this));popupContent=response.features;}
function changePointer(response){if(response.features==null){Ext.getBody().setStyle('cursor','auto');Ext.get('map').setStyle('cursor','auto');return;}
Ext.getBody().setStyle('cursor','pointer');Ext.get('map').setStyle('cursor','pointer');}
var mf_protocol=new mapfish.Protocol.MapFish({url:"query",format:new OpenLayers.Format({read:function(data){return data;}})});var mf_protocol_test=new mapfish.Protocol.MapFish({url:"query",format:new OpenLayers.Format({read:function(data){return data;}})});var event_protocol=new mapfish.Protocol.TriggerEventDecorator({protocol:mf_protocol});var event_protocol_test=new mapfish.Protocol.TriggerEventDecorator({protocol:mf_protocol_test});var filter_protocol=new mapfish.Protocol.MergeFilterDecorator({protocol:event_protocol});filter_protocol.register({getFilter:function(){var velolandLayer=veloland.map.map.getLayersByName('veloland')[0];if(!velolandLayer.visibility){return{layers:''};}else{var layers=[],layer,layer2;var layersTooltips=veloland.layertree.getLayersTooltips();for(var i=0,len=layersTooltips.length;i<len;i++){layer=layersTooltips[i];for(var j=0,len2=velolandLayer.params.LAYERS.length;j<len2;j++){layer2=velolandLayer.params.LAYERS[j];if(layer==layer2){layers.push(layer);break;}}}
return{layers:layers,lang:selected_lang};}}});var filter_protocol_test=new mapfish.Protocol.MergeFilterDecorator({protocol:event_protocol_test});filter_protocol_test.register({getFilter:function(){var velolandLayer=veloland.map.map.getLayersByName('veloland')[0];if(!velolandLayer.visibility){return{layers:''};}else{return{layers:velolandLayer.params.LAYERS,test:true};}}});var searcher=new mapfish.Searcher.Map({mode:mapfish.Searcher.Map.CLICK,searchTolerance:10,protocol:filter_protocol,filter:function(){var tree=veloland.layout.treeLayers;var checked=false;tree.getRootNode().cascade(function(node){if(node.attributes.checked!=undefined&&(!node.attributes.radio&&node.attributes.checked)){checked=true;return false;}});return checked;}});var searcher_test=new mapfish.Searcher.Map({mode:mapfish.Searcher.Map.HOVER,searchTolerance:10,delay:50,protocol:filter_protocol_test,filter:function(){var tree=veloland.layout.treeLayers;var checked=false;tree.getRootNode().cascade(function(node){if(node.attributes.checked!=undefined&&(!node.attributes.radio&&node.attributes.checked)){checked=true;return false;}});return checked;}});event_protocol.events.on({crudfinished:displayPopup,scope:searcher});event_protocol_test.events.on({crudfinished:changePointer,scope:searcher_test});return{searcher:null,searcher_test:null,init:function(){veloland.map.map.addControl(searcher);searcher.activate();this.searcher=searcher;veloland.map.map.addControl(searcher_test);searcher_test.activate();this.searcher_test=searcher_test;},hideTooltip:function(){if(popup!=null){popup.hide();}},showPrint:function(){displayPrint();},getPrintContent:function(){return popupContent;}}}();function prepareForCff(form,id)
{var von=form['von'+id];var nach=form['nach'+id];var s=form['s'+id];var z=form['z'+id];s.value=von.value;z.value=nach.value;return true;}
function convertSpecialChars(str){str=str.replace(/[àáâ]/gi,"a");str=str.replace(/[ä]/gi,"ae");str=str.replace(/[èéêë]/gi,"e");str=str.replace(/[ìíîï]/gi,"i");str=str.replace(/[òóô]/gi,"o");str=str.replace(/[ö]/gi,"oe");str=str.replace(/[ùúû]/gi,"u");str=str.replace(/[ü]/gi,"ue");str=str.replace(/ç/gi,'c');return str;}
window.veloland.tracks=function(){var style={strokeColor:"red",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",pointRadius:4,graphicName:"square",fillColor:"red",fillOpacity:0.5,pointerEvents:"visiblePainted",cursor:"inherit"};var enableItems=function(list){for(var i=0,len=list.length;i<len;i++){Ext.getCmp(list[i]).enable();}};var enableEnlargeprofile=function(profilPanel){if(profilPanel.body.dom.innerHTML!=''){enableItems(['enlargeprofile']);}};var disableItems=function(list){for(var i=0,len=list.length;i<len;i++){Ext.getCmp(list[i]).disable();}};return{layer:null,control:null,grid:null,mediator:null,feature:null,trackId:null,init:function(){this.layer=new OpenLayers.Layer.Vector("Tracks",{style:style,visibility:false,alwaysInRange:true,displayInLayerSwitcher:false});veloland.map.map.addLayer(this.layer);this.control=new VelolandTrack({serviceUrl:'',layer:this.layer,style:style,onPointAdded:function(){enableItems(['removelast']);}});veloland.map.map.addControl(this.control);this.kbd=new OpenLayers.Control.KeyboardDefaults({button:Ext.getCmp('removelast'),scope:this,defaultKeyPress:function(evt){if(evt.keyCode===OpenLayers.Event.KEY_DELETE){if(!this.button.disabled){this.button.handler.call(this.scope);}}}});veloland.map.map.addControl(this.kbd);},createDrawButton:function(){return new Ext.Button({text:OpenLayers.i18n('Zeichnen'),enableToggle:true,id:'drawtrack',listeners:{toggle:function(button,pressed){if(pressed){this.control.activate();enableItems(['savetrack','autocenter','snapping']);disableItems(['droptrack','importtrack','exporttrack','sendtrack','enlargeprofile']);this.unselectTrack();this.grid.disable();this.control.clearMeasure();this.control.closePopup();Ext.getCmp('snapping').toggle(true);}else{this.control.deactivate();disableItems(['savetrack','autocenter','snapping','removelast']);enableItems(['importtrack']);enableEnlargeprofile(this.control.getProfilePanel());this.grid.enable();this.control.unsetProfile();this.resetMeasure();veloland.layout.disableSubTab('myblockmesurecommandbar');this.control.closePopup();}},disable:function(){this.setDisableStyle('drawtrack');},enable:function(){this.unsetDisableStyle('drawtrack');},scope:this}});},createSnapButton:function(){return new Ext.Button({text:OpenLayers.i18n('Route snapping'),enableToggle:true,id:'snapping',disabled:true,listeners:{toggle:function(btn,pressed){this.control.snapping=pressed;},disable:function(){this.setDisableStyle('snapping');},enable:function(){this.unsetDisableStyle('snapping');},scope:this},scope:this});},createCenterButton:function(){return new Ext.Button({text:OpenLayers.i18n('Automatisch zentrieren'),enableToggle:true,id:'autocenter',disabled:true,listeners:{toggle:function(btn,pressed){this.control.centerMap=pressed;},disable:function(){this.setDisableStyle('autocenter');},enable:function(){this.unsetDisableStyle('autocenter');},scope:this},scope:this});},createRemoveLastButton:function(){return new Ext.Button({text:OpenLayers.i18n('Letzte Punkt löschen'),id:'removelast',disabled:true,handler:function(){var snapping=this.control.snapping;this.control.snapping=false;var empty=this.control.handler.removeLastPoint();this.control.snapping=snapping;if(empty){disableItems(['removelast']);}},listeners:{disable:function(){this.setDisableStyle('removelast');},enable:function(){this.unsetDisableStyle('removelast');},scope:this},scope:this});},createSaveButton:function(){return new Ext.Button({text:OpenLayers.i18n('Zeichnen beenden / speichern'),enableToggle:false,id:'savetrack',disabled:true,handler:function(){this.control.onStopButtonClick();},listeners:{disable:function(){this.setDisableStyle('savetrack');},enable:function(){this.unsetDisableStyle('savetrack');},scope:this},scope:this});},createDropButton:function(){return new Ext.Button({text:OpenLayers.i18n('Route löschen'),id:'droptrack',disabled:true,handler:function(){var window=new Ext.Window({closable:false,modal:true,width:300,title:OpenLayers.i18n('Route löschen'),html:OpenLayers.i18n('Do you really want to delete current track ?'),buttonAlign:'center',buttons:[{text:OpenLayers.i18n('Löschen'),handler:function(){var sm=this.grid.getSelectionModel();if(sm.hasSelection()&&this.layer.features.length>0){var selectedCell=sm.getSelectedCell();var record=sm.grid.store.getAt(selectedCell[0]);this.feature=record.data.feature;disableItems(['droptrack','exporttrack','sendtrack']);Ext.Ajax.request({url:'track/delete/'+this.feature.fid,method:'DELETE',success:function(res){this.control.clearDrawing();this.layer.setVisibility(false);this.mediator.removeFeatures(this.feature);this.feature=null;this.control.unsetProfile();this.control.clearMeasure();},failure:function(res){Ext.Msg.alert(OpenLayers.i18n('failed deleting track'),OpenLayers.i18n('Try to relog'));this.feature=null;},scope:this});}
window.close();},scope:this},{text:OpenLayers.i18n('Abbrechen'),handler:function(){window.close();}}]});window.show();},listeners:{disable:function(){this.setDisableStyle('droptrack');},enable:function(){this.unsetDisableStyle('droptrack');},scope:this},scope:this});},createImportButton:function(){var emptyText=OpenLayers.i18n('Track Name');return new Ext.Button({text:OpenLayers.i18n('GPS-Track importieren'),enableToggle:false,id:'importtrack',handler:function(){this.unselectTrack();disableItems(['drawtrack','autocenter','removelast','savetrack']);this.grid.disable();var window=new Ext.Window({closable:false,modal:true,width:300,title:OpenLayers.i18n('GPS-Track importieren'),items:new Ext.form.FormPanel({fileUpload:true,id:'importtrackform',defaults:{anchor:'95%',hideLabel:true,xtype:'textfield',margins:'5 5 5 5'},items:[{id:'trackname',value:emptyText,listeners:{focus:function(f){if(f.getValue()==emptyText){f.setValue('');}},blur:function(f){if(!f.getValue()){f.setValue(emptyText);}}}},{inputType:'file',allowBlank:false,id:'trackfile'}],buttons:[{text:OpenLayers.i18n('Upload'),type:'submit',handler:function(){var form=Ext.getCmp('importtrackform').getForm();var values=form.getValues();var trackname=VelolandTrack.validateName(values.trackname,emptyText);form.setValues({'trackname':trackname});if(form.isValid()){form.submit({url:'track/importgps',waitMsg:OpenLayers.i18n('Loading track'),success:function(form,action){var geojson=new OpenLayers.Format.JSON().write(action.result.feature);var feature=new OpenLayers.Format.GeoJSON().read(geojson).shift();this.addTrackFeatureToList(feature);window.close();},failure:function(form,action){var msg=OpenLayers.i18n('Loading track failed');if(action.result.msg){msg+=' '+OpenLayers.i18n(action.result.msg);}
Ext.Msg.alert(OpenLayers.i18n('Loading track'),msg);},scope:this});}},scope:this},{text:OpenLayers.i18n('Abbrechen'),handler:function(){this.grid.enable();enableItems(['drawtrack']);window.close();},scope:this}]})});window.show();},listeners:{disable:function(){this.setDisableStyle('importtrack');},enable:function(){this.unsetDisableStyle('importtrack');},scope:this},scope:this});},createExportButton:function(){return new Ext.Button({text:OpenLayers.i18n('GPS-Track exportieren'),enableToggle:false,id:'exporttrack',disabled:true,handler:function(){var callback=function(response){if(!response.loggedin){veloland.layout.redirectToLogin();}else{if(this.layer.features.length<1){Ext.Msg.alert(OpenLayers.i18n('GPS-Track exportieren'),OpenLayers.i18n('Please select a track to export'));}else{var fid=this.layer.features[0].fid;window.location.href='track/exportgps/'+fid;}}};veloland.user.isLoggedOnServer(callback.createDelegate(this));},listeners:{disable:function(){this.setDisableStyle('exporttrack');},enable:function(){this.unsetDisableStyle('exporttrack');},scope:this},scope:this});},createSendButton:function(){return new Ext.Button({text:OpenLayers.i18n('An Freund senden'),enableToggle:false,id:'sendtrack',disabled:true,handler:function(){var window=new Ext.Window({closable:false,modal:true,width:400,title:OpenLayers.i18n('An Freund senden'),items:new Ext.form.FormPanel({id:'sendtrackform',defaults:{anchor:'95%',allowBlank:false,xtype:'textfield',labelSeparator:'',margins:'5 5 5 5'},items:[{id:'emailto',vtype:'email',fieldLabel:OpenLayers.i18n('friend email')},{id:'nameto',fieldLabel:OpenLayers.i18n('friend name')},{id:'emailfrom',vtype:'email',value:veloland.user.getUser().email,fieldLabel:OpenLayers.i18n('your email')},{id:'namefrom',value:veloland.user.getUser().name,fieldLabel:OpenLayers.i18n('your name')},{id:'title',fieldLabel:OpenLayers.i18n('message title')},{id:'text',xtype:'textarea',height:100,fieldLabel:OpenLayers.i18n('message text')}],buttons:[{text:OpenLayers.i18n('Senden'),id:'sendtrackbutton',handler:function(){var form=Ext.getCmp('sendtrackform').getForm();if(form.isValid()){var params={trackId:this.getDisplayedTrackId()};OpenLayers.Util.extend(params,veloland.map.getLayerState());form.submit({url:'track/send',params:params,success:function(form,action){Ext.Msg.alert(OpenLayers.i18n('An Freund senden'),OpenLayers.i18n('message sent successfully'));window.close();},failure:function(form,action){Ext.Msg.alert(OpenLayers.i18n('An Freund senden'),OpenLayers.i18n('failed sending message'));}});}},scope:this},{text:OpenLayers.i18n('Abbrechen'),handler:function(){window.close();}}]})});window.show();},listeners:{disable:function(){this.setDisableStyle('sendtrack');},enable:function(){this.unsetDisableStyle('sendtrack');},scope:this},scope:this});},createEnlargeButton:function(){return new Ext.Button({text:OpenLayers.i18n('enlargeprofile'),enableToggle:false,id:'enlargeprofile',cls:'profile-tools',minWidth:220,handler:function(){this.control.enlargeProfile();},listeners:{disable:function(){this.scope.setDisableStyle('enlargeprofile');},enable:function(){this.scope.unsetDisableStyle('enlargeprofile');}},scope:this,disabled:true});},createHideButton:function(){return new Ext.Button({text:OpenLayers.i18n('Hide track'),id:'hidetrack',enableToggle:false,handler:function(){this.trackId=null;this.layer.destroyFeatures();this.layer.setVisibility(false);this.resetProfile();this.resetMeasure();veloland.layout.disableSubTab('myblockprofilcommandbar');veloland.layout.disableSubTab('myblockmesurecommandbar');veloland.layout.toggleMyChPanelContent('mylogin');},scope:this});},createMesureForm:function(){return new Ext.FormPanel({id:'mymesureform',labelAlign:'top',cls:'mymesurecontainer',width:220,items:[{layout:'column',width:220,items:[{width:115,layout:'form',items:[{xtype:'textfield',fieldLabel:OpenLayers.i18n('length'),labelSeparator:'',name:'mylength',id:'mylength',readOnly:true,width:80},{xtype:'textfield',fieldLabel:OpenLayers.i18n('walkingtime'),labelSeparator:'',name:'mywalkingtime',id:'mywalkingtime',readOnly:true,itemCls:'mywalkingtime',width:80}]},{width:90,layout:'form',items:[{xtype:'textfield',fieldLabel:OpenLayers.i18n('totalup'),labelSeparator:'',name:'mytup',id:'mytup',readOnly:true,width:80},{xtype:'textfield',fieldLabel:OpenLayers.i18n('totaldown'),labelSeparator:'',name:'mytdown',id:'mytdown',readOnly:true,width:80}]}]}]});},createListGrid:function(config){config=Ext.apply({store:new Ext.data.Store({reader:new mapfish.widgets.data.FeatureReader({},[{name:'name',type:'string'},{name:'original_id',type:'string'}])}),columns:[{header:'Name',dataIndex:'name'}],viewConfig:{emptyText:OpenLayers.i18n('no track available'),autoFill:true},sm:new Ext.grid.CellSelectionModel({listeners:{beforecellselect:function(sm,rowIndex,colIndex){var selectedCell=sm.getSelectedCell();var view=sm.grid.getView();var rows=view.getRows(),row;for(var i=0,len=rows.length;i<len;i++){row=view.findRowIndex(rows[i]);view.removeRowClass(row,"x-grid3-row-selected");}
if(!selectedCell||selectedCell[0]!=rowIndex||this.layer.features.length==0){this.control.clearDrawing();this.layer.setVisibility(true);var record=sm.grid.store.getAt(rowIndex);this.layer.addFeatures([record.data.feature]);this.control.processProfile(record.data.fid);this.layer.map.zoomToExtent(this.layer.getDataExtent());view.addRowClass(rowIndex,"x-grid3-row-selected");enableItems(['droptrack','exporttrack','sendtrack']);this.control.updatePopup();}else{this.control.clearDrawing();this.layer.setVisibility(false);disableItems(['droptrack','exporttrack','sendtrack']);this.control.unsetProfile();this.control.clearMeasure();this.resetProfile();}},scope:this}}),loadMask:{msg:OpenLayers.i18n("Loading...")},hideHeaders:true,autoHeight:true,maxHeight:250},config||{});this.grid=new Ext.grid.GridPanel(config);this.mediator=new mapfish.widgets.data.FeatureStoreMediator({store:this.grid.getStore()});if(veloland.user.isLogged()){this.feedListGrid();}else if(this.trackId){veloland.tracks.showToAnonymous(this.trackId);}
return this.grid;},feedListGrid:function(){var protocol=new mapfish.Protocol.MapFish({url:'track'});protocol.read({callback:function(response){var resized=false;if(response.features){for(var i=0;i<response.features.length;i++){this.mediator.addFeatures(response.features[i]);}
this.grid.getStore().sort('name','ASC');resized=true;}
if(this.trackId){this.copyAndShow(this.trackId);this.trackId=null;resized=true;veloland.layout.toggleMyChPanelContent('all');}
if(resized){veloland.layout.handleMyChPanelSize();}},scope:this});},resetListGrid:function(){this.control.clearDrawing();this.layer.setVisibility(false);this.grid.getStore().removeAll();},addTrackFeatureToList:function(feature){this.mediator.addFeatures(feature);this.grid.enable();var store=this.grid.getStore();store.sort('name','ASC');var rowIndex=store.find('fid',feature.fid);this.grid.getSelectionModel().select(rowIndex,0);this.grid.focus();this.grid.getView().focusRow(rowIndex);enableItems(['drawtrack','exporttrack','importtrack','droptrack','sendtrack']);},addTrackToList:function(response){var parser=new OpenLayers.Format.GeoJSON();var feature=parser.read(response.responseText).shift();this.addTrackFeatureToList(feature);},unselectTrack:function(){this.control.clearDrawing();this.grid.getSelectionModel().clearSelections();var view=this.grid.getView(),rows=view.getRows(),row;for(var i=0,len=rows.length;i<len;i++){row=view.findRowIndex(rows[i]);view.removeRowClass(row,"x-grid3-row-selected");}
disableItems(['exporttrack','droptrack','sendtrack']);this.control.unsetProfile();},resetProfile:function(){this.control.closePopup();this.control.unsetProfile();},resetMeasure:function(){this.control.clearMeasure();},resetDrawButton:function(){Ext.getCmp('drawtrack').toggle(false);},chartClick:function(index,_row_,_value_,_category_,_series_,_id_,more){index=index-1;if(!this.control.curProfile){return;}
var point=this.control.curProfile.profile[index];if(!point){return;}
if(this.control.marker){if(this.control.marker.circle){this.control.marker.circle.destroy();}
if(this.control.marker.cross){this.control.marker.cross.destroy();}}
this.control.marker={'circle':null,'cross':null}
this.control.marker.circle=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point.easting,point.northing),{},this.control.styleMarker);this.control.marker.cross=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point.easting,point.northing),{},this.control.styleMarker2);this.layer.addFeatures([this.control.marker.circle,this.control.marker.cross]);},setDisableStyle:function(el){el=Ext.get(el);el.dom.style.backgroundColor='#e6e6e6';el.dom.style.color='gray';el.dom.style.cursor='default';el.addClass('x-item-disabled');},unsetDisableStyle:function(el){el=Ext.get(el);el.dom.style.backgroundColor='white';el.dom.style.color='black';el.dom.style.cursor='pointer';el.removeClass('x-item-disabled');},copyAndShow:function(id){var rowIndex=this.grid.getStore().find('original_id',id);if(rowIndex<0){Ext.Ajax.request({url:'track/copy/'+id,method:'GET',success:function(response){this.addTrackToList(response);Ext.Msg.alert(OpenLayers.i18n('Loading track'),OpenLayers.i18n('track has been added to your tracks list'));},failure:function(response){Ext.Msg.alert(OpenLayers.i18n('failed displaying track'),OpenLayers.i18n('track does not exist'));},scope:this});}else{this.grid.getSelectionModel().select(rowIndex,0);this.grid.focus();this.grid.getView().focusRow(rowIndex);}},showToAnonymous:function(id){Ext.Ajax.request({url:'track/show/'+id,method:'GET',success:function(response){var parser=new OpenLayers.Format.GeoJSON();var features=parser.read(response.responseText);this.layer.setVisibility(true);this.layer.addFeatures(features);this.control.map.zoomToExtent(this.layer.getDataExtent());this.control.processProfile(features.shift());veloland.layout.toggleMyChPanelContent(['mylogin','tracks4anonymous','myblockmesurecontainer','myblockprofilcontainer']);veloland.layout.enableSubTab('myblockprofilcommandbar');veloland.layout.enableSubTab('myblockmesurecommandbar');},failure:function(response){Ext.Msg.alert(OpenLayers.i18n('failed displaying track'),OpenLayers.i18n('track does not exist'));},scope:this});},getDisplayedTrackId:function(){var fid=null;if(this.layer&&this.layer.features.length>0){fid=this.layer.features[0].fid;}
return fid;}};}();VelolandTrack=OpenLayers.Class(OpenLayers.Control.DrawFeature,{serviceUrl:null,profileUrl:'track',popupConfig:null,centerMap:false,snapping:false,popup:null,curProfile:null,id:null,uuid:null,layer:null,panel:null,profilePanel:null,styleMarker:{strokeColor:"#ff0000",strokeOpacity:0.85,strokeWidth:3,strokeLinecap:"round",strokeDashstyle:"solid",pointRadius:12,pointerEvents:"visiblePainted",cursor:"inherit",fillOpacity:0},styleMarker2:{graphicOpacity:1,externalGraphic:'images/pointer_cross2.png',graphicWidth:61,graphicHeight:61},feature:null,hasPointDrawn:false,pointAddedGeometry:null,initialize:function(options){this.id=VelolandTrack.id++;VelolandTrack.repository[this.id]=this;if(!options){options={};}
if(!options.handlerOptions){options.handlerOptions={};}
if(!options.handlerOptions.freehandToggle){options.handlerOptions.freehandToggle=null;}
if(!options.handlerOptions.style){options.handlerOptions.style=options.style;}
if(!options.handlerOptions.layerOptions){options.handlerOptions.layerOptions={};}
if(!options.handlerOptions.layerOptions.style){options.handlerOptions.layerOptions.style=options.style;}
var layer=options.layer;delete options.layer;delete options.style;options.callbacks={'point':this.pointAdded};OpenLayers.Control.DrawFeature.prototype.initialize.call(this,layer,VelolandHandlerPath,options);this.wkt=new OpenLayers.Format.WKT();var prevCreateFeature=this.handler.createFeature;var self=this;this.handler.createFeature=function(){self.startDrawing();return prevCreateFeature.apply(this,arguments);};},activate:function(){this.hasPointDrawn=false;this.layer.setVisibility(true);OpenLayers.Control.DrawFeature.prototype.activate.call(this);veloland.tooltips.searcher.deactivate();veloland.tooltips.searcher_test.deactivate();},deactivate:function(){OpenLayers.Control.DrawFeature.prototype.deactivate.call(this);this.layer.setVisibility(false);this.closePopup();veloland.tooltips.searcher.activate();veloland.tooltips.searcher_test.activate();},clearDrawing:function(){this.layer.removeFeatures(this.layer.features);},closePopup:function(){if(this.popup){this.popup.close();this.popup=null;}},updatePopup:function(){if(this.popup&&!this.popup.hidden){this.enlargeProfile();}},startDrawing:function(){this.closePopup();this.layer.destroyFeatures();},onStopButtonClick:function(){if(!this.handler.line){return;}
var geometry=this.handler.line.geometry;var index=geometry.components.length-1;if(index==1){return;}
this.handler.finishGeometry();},stopDrawing:function(){var emptyText=OpenLayers.i18n('Track Name');var window=new Ext.Window({closable:false,modal:true,width:330,id:'tracksavewindow',items:new Ext.form.FormPanel({id:'savetrackform',defaults:{anchor:'95%',margins:'5 5 5 5'},items:[{html:OpenLayers.i18n('Would you like to record track?')},{xtype:'textfield',maxLength:40,maxLengthText:OpenLayers.i18n("Trackname must be shorter than {0} characters"),id:'trackname',value:emptyText,hideLabel:true,listeners:{focus:function(f){if(f.getValue()==emptyText){f.setValue('');}},blur:function(f){if(!f.getValue()){f.setValue(emptyText);}}}}],buttons:[{text:OpenLayers.i18n('Speichern'),type:'submit',handler:function(b){var feature=this.feature;var form=Ext.getCmp('savetrackform').getForm();if(!form.isValid()){return;}
var values=form.getValues();var trackname=VelolandTrack.validateName(values.trackname,emptyText);feature.attributes={name:trackname};feature.id=-1;var geojson=new OpenLayers.Format.GeoJSON();Ext.Ajax.request({url:'track/create',method:'POST',jsonData:geojson.write([feature]),success:function(response){this.finalizeDrawing();Ext.getCmp('drawtrack').toggle(false);veloland.tracks.addTrackToList(response);},failure:function(response){this.finalizeDrawing();Ext.Msg.alert(OpenLayers.i18n('failed saving track'),OpenLayers.i18n('Please try again'));},scope:this});},scope:this},{text:OpenLayers.i18n('Abbrechen'),type:'reset',handler:function(){this.clearDrawing();this.finalizeDrawing();Ext.getCmp('drawtrack').toggle(false);this.unsetProfile();this.clearMeasure();},scope:this},{text:OpenLayers.i18n('Weiter zeichnen'),handler:function(){this.restoreDrawing();this.processProfile(this.handler.line);window.close();},scope:this}],listeners:{afterlayout:function(cont,layout){cont.findById('trackname').focus(false,100);}}}),listeners:{show:function(cmp){if(this.profileTimer){clearTimeout(this.profileTimer);}},scope:this}});window.show();},finalizeDrawing:function(){this.feature=null;this.hasPointDrawn=false;Ext.getCmp('tracksavewindow').close();},restoreDrawing:function(){this.clearDrawing();var handler=this.handler;var feature=this.feature;var components=feature.geometry.components;var firstVertex=components[0];var lastVertex=components[components.length-1];handler.destroyFeature();handler.point=new OpenLayers.Feature.Vector(lastVertex.clone());handler.lastPoint=new OpenLayers.Feature.Vector(lastVertex);handler.line=this.feature;handler.line.geometry.addComponent(firstVertex.clone(),0);handler.point.geometry.clearBounds();handler.lastPoint.geometry.clearBounds();handler.layer.addFeatures([handler.line,handler.lastPoint,handler.point],{silent:true});this.feature=null;},pointAdded:function(geometry){if(!this.hasPointDrawn){this.hasPointDrawn=true;this.pointAddedGeometry=geometry;veloland.user.isLoggedOnServer(function(response){if(!response.loggedin){Ext.getCmp('drawtrack').toggle(false);veloland.layout.redirectToLogin();}else{veloland.tracks.control.pointAddedPart2();}
veloland.tracks.control.pointAddedGeometry=null;});}else{this.pointAddedPart2(geometry);}
this.last=geometry.dummy?null:geometry;this.onPointAdded&&this.onPointAdded();},snapTrack:function(target){if(this.snapping&&this.last&&!target.equals(this.last)){document.body.style.cursor="wait";Ext.Ajax.request({url:"routing",params:{res:veloland.map.map.getResolution(),bbox:veloland.map.map.getExtent().toBBOX(),source:Math.floor(this.last.x)+','+Math.floor(this.last.y),target:Math.floor(target.x)+','+Math.floor(target.y),layers:veloland.map.getLayerState().layers},method:'GET',success:function(result){document.body.style.cursor="default";var multiline=this.wkt.read(result.responseText);if(multiline){var ordered=[];for(var i=0,len=multiline.geometry.components.length;i<len;i++){var line=multiline.geometry.components[i].components;if(ordered.length>0&&!ordered[ordered.length-1].equals(line[0])){line.reverse();}
line.shift();for(var j=0,l=line.length;j<l;j++){line[j].snapped=true;}
ordered=ordered.concat(line);}
ordered.pop();ordered[0].snapped=false;var hline=this.handler.line.geometry;var last=hline.components.pop();hline.components=hline.components.concat(ordered);var last_geom=hline.components[hline.components.length-1];this.handler.layer.removeFeatures([this.handler.lastPoint]);this.handler.lastPoint=new OpenLayers.Feature.Vector(last_geom);hline.clearBounds();this.handler.drawFeature();var geom=this.handler.line;if(geom.geometry.components.length>2){this.processProfile(geom);}else{this.unsetProfile();}}},scope:this});}else{if(this.profileTimer){clearTimeout(this.profileTimer);}
var geom=this.handler.line;if(geom.geometry.components.length>2){this.profileTimer=setTimeout(function(){this.processProfile(geom);}.createDelegate(this),1000);}else{this.unsetProfile();}}},pointAddedPart2:function(geometry){geometry=geometry||this.pointAddedGeometry;if(!geometry){return;}
this.snapTrack(geometry);if(this.centerMap){this.map.panTo(new OpenLayers.LonLat(geometry.x,geometry.y));}},featureAdded:function(feature){var bounds=feature.geometry.getBounds();if(bounds.getWidth()>0&&bounds.getHeight()>0){this.feature=feature;this.stopDrawing();}},createGraph:function(uuid,width,height,full){var commonParams='uuid='+uuid;if(typeof(full)!='undefined'&&full!=''){commonParams+='&full=1';}else{full='';}
var profileXmlUrl=this.serviceUrl+this.profileUrl+'/profilexml?'+commonParams+'&width='+width+'&height='+height+'&unique_id='+uuid;profileXmlUrl=encodeURIComponent(profileXmlUrl);return'<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="'+this.id+full+'_chart" height="'+height+'" width="'+width+'">\n'+'  <param name="scale"             value="noscale">\n'+'  <param name="salign"            value="tl">\n'+'  <param name="bgcolor"           value="#FFFFFF">\n'+'  <param name="movie"             value="'+this.serviceUrl+'charts/charts.swf">\n'+'  <param name="Flashvars"         value="library_path='+this.serviceUrl+'charts/charts_library&xml_source='+profileXmlUrl+'&chart_id='+this.id+full+'_chart">\n'+'  <param name="menu"              value="true">\n'+'  <param name="allowScriptAccess" value="sameDomain">\n'+'  <param name="quality"           value="high">\n'+'  <param name="play"              value="true">\n'+'  <param name="devicefont"        value="false">\n'+'  <embed scale="noscale"\n'+'      allowscriptaccess = "sameDomain"\n'+'      bgcolor           = "#FFFFFF"\n'+'      devicefont        = "false"\n'+'      flashvars         = "library_path='+this.serviceUrl+'charts/charts_library&xml_source='+profileXmlUrl+'&chart_id='+this.id+full+'_chart"\n'+'      menu              = "true"\n'+'      name              = "'+this.id+full+'_chart"\n'+'      play              = "true"\n'+'      pluginspage       = "http://www.macromedia.com/go/getflashplayer"\n'+'      quality           = "high"\n'+'      salign            = "tl"\n'+'      src               = "'+this.serviceUrl+'charts/charts.swf"\n'+'      type              = "application/x-shockwave-flash"\n'+'      align             = "l"\n'+'      height            = "'+height+'"\n'+'      width             = "'+width+'"/>\n'+'</object>';},processProfile:function(track){var d=new Date;var username='anonymous';if(veloland.user.isLogged()){username=veloland.user.getUser().username;}
this.uuid=username+d.getTime().toString();if(typeof(track)=='number'){Ext.Ajax.request({url:this.profileUrl+'/info/'+track.toString()+'?uuid='+this.uuid,method:'GET',success:function(result){var profile=new OpenLayers.Format.JSON().read(result.responseText);this.drawProfile(profile);},scope:this});}else if(typeof(track)=='object'){track.attributes.uuid=this.uuid;var formatter=new OpenLayers.Format.GeoJSON();var featureGeoJSON=formatter.write(track);Ext.Ajax.request({url:this.profileUrl+'/info/',method:'POST',jsonData:featureGeoJSON,success:function(result){var profile=new OpenLayers.Format.JSON().read(result.responseText);this.drawProfile(profile);},scope:this});}else{return false;}},drawProfile:function(profile){if(typeof(profile)!='object'){return false;}
this.curProfile=profile;var form=Ext.getCmp('mymesureform').getForm();form.findField('mylength').setValue(this.formatLength(profile.length));form.findField('mywalkingtime').setValue(this.formatWalkingtime(profile.walking));form.findField('mytdown').setValue(profile.totaldown+' m');form.findField('mytup').setValue(profile.totalup+' m');var content=this.createGraph(this.uuid,220,150);this.getProfilePanel().body.update(content);veloland.layout.enableSubTab('myblockprofilcommandbar');veloland.layout.enableSubTab('myblockmesurecommandbar');if(veloland.tracks.layer.features.length>0){Ext.getCmp('enlargeprofile').enable();}},formatLength:function(length){var l=parseInt(length);if(l>1000){l=Math.round((length/1000)*100)/100;return l+' km';}else{return length+' m';}},formatWalkingtime:function(walkingtime){var hours=Math.floor(walkingtime/60);var minutes=Math.floor(walkingtime%60);var f='';if(hours>0){f+=hours+OpenLayers.i18n('time_h');}
if(minutes>0){f+=minutes+OpenLayers.i18n('time_m');}
return f;},unsetProfile:function(){this.getProfilePanel().body.update('');veloland.layout.disableSubTab('myblockprofilcommandbar');Ext.getCmp('enlargeprofile').disable();},clearMeasure:function(){var form=Ext.getCmp('mymesureform').getForm();for(var i=0;i<form.items.items.length;i++){form.items.items[i].setValue('');}},enlargeProfile:function(){this.closePopup();var config=Ext.apply({id:'profilepopup',title:'<span id="chartprint" style="float: right; padding-right: 10px;cursor:pointer;color:#00549F;">'+
OpenLayers.i18n('printprofile')+'</span>'+
OpenLayers.i18n('profilepopuptitle'),width:600,height:470,minWidth:450,minHeight:300,cls:'popupwindow',resizable:true,collapsible:true,constrain:true},this.popupConfig);this.popup=new Ext.Window(config);this.popup.on({resize:function(window){window.body.update(this.createGraph(this.uuid,window.getInnerWidth(),window.getInnerHeight(),'full'));Ext.get('chartprint').on("click",function(){if(Ext.isMac&&Ext.isSafari&&(navigator.userAgent.indexOf('AppleWebKit/5')>-1||navigator.userAgent.indexOf('Safari/5')>-1)){alert(OpenLayers.i18n('safari macos chart print alert'));}else{document[this.id+'full_chart'].Print();}},this);Ext.get('chartprint').addClassOnOver('x-btn-over');},close:function(){},scope:this});this.popup.show();this.popup.resizer.on("beforeresize",function(){this.popup.body.update("");},this);},getProfilePanel:function(){if(this.profilePanel==null){this.setProfilePanel();}
return this.profilePanel;},setProfilePanel:function(){this.profilePanel=Ext.getCmp('myblockprofilinnercontent');}});VelolandTrack.id=0;VelolandTrack.repository={};VelolandTrack.chartClick=function(col,row,value,category,series,chartId){var index=(col-1)/2;VelolandTrack.repository[chartId.replace('_chart','')].chartClick(index);};VelolandTrack.parseDigit=function(value){return(value<10)?('0'+value):value;};VelolandTrack.validateName=function(name,defaultName){if(!name||name==defaultName){var now=new Date();var month=VelolandTrack.parseDigit(now.getMonth()+1);var day=VelolandTrack.parseDigit(now.getDate());var hour=VelolandTrack.parseDigit(now.getHours());var minute=VelolandTrack.parseDigit(now.getMinutes());var second=VelolandTrack.parseDigit(now.getSeconds());name=now.getFullYear()+'-'+month+'-'+
day+'-'+hour+'-'+
minute+'-'+second;}
return name;};Ext.namespace('mapfish.widgets','mapfish.widgets.recenter');mapfish.widgets.recenter.Ws=function(config){Ext.apply(this,config);mapfish.widgets.recenter.Ws.superclass.constructor.call(this);};Ext.extend(mapfish.widgets.recenter.Ws,mapfish.widgets.recenter.Base,{wsRecenterstore:null,wsRecenterServicestore:null,wsRecenterCurrentService:null,errorMsg:OpenLayers.i18n('mf.recenter.ws.error'),currentWsRecenterCombo:null,addItems:function(){this.removeAll();this.initWsRecenterService();this.initWsRecenterServicestore();this.initWsRecenterstore();if(this.wsRecenterServices.length>1){var wsRecenterServices=new Ext.form.ComboBox({fieldLabel:OpenLayers.i18n('mf.recenter.ws.service'),name:'wsRecenterServices',value:'',displayField:'label',valueField:'id',store:this.wsRecenterServicestore,mode:'local',listeners:{select:function(combo,record,index){this.onWsRecenterServicesSelect(combo);},scope:this},triggerAction:'all',forceSelection:true,editable:false});wsRecenterServices.setValue(this.wsRecenterCurrentService.id);this.add(wsRecenterServices);}
var resultTpl=new Ext.XTemplate('<tpl for=".">','<div class="x-combo-list-item">','<h3><span>{name}</span></h3>','</div>','</tpl>');this.currentWsRecenterCombo={xtype:'combo',fieldLabel:OpenLayers.i18n(this.wsRecenterCurrentService.label),name:this.wsRecenterCurrentService.name||'wsRecenter',value:'',tpl:this.wsRecenterCurrentService.tpl||resultTpl,displayField:this.wsRecenterCurrentService.displayField||'name',mode:'remote',minChars:2,typeAhead:true,valueField:'id',store:this.wsRecenterstore,listeners:{select:function(combo,record,index){this.onWsRecenterSelect(combo);},specialkey:function(combo,event){if(event.getKey()==event.ENTER){this.onWsRecenterSelect(combo);}},scope:this},forceSelection:true,hideTrigger:true};this.add(this.currentWsRecenterCombo);if(this.scales){this.addScaleCombo('Ws');}},onWsRecenterServicesSelect:function(combo){this.setWsRecenterService(combo.value);},onWsRecenterSelect:function(combo){if(combo.value.length==0){return;}
var scaleField=this.wsRecenterCurrentService.scaleField||null;var url=this.wsRecenterCurrentService.url;url+=this.wsRecenterCurrentService.urlSuffixGeo+'?';url+=this.wsRecenterCurrentService.paramIdGeo+'='+combo.value;url+='&ref='+this.wsRecenterCurrentService.ref;url+=(scaleField)?'&scalefield='+(scaleField):'';OpenLayers.Request.GET({url:url,success:function(response){var values=this.getForm().getValues();var zoom;var f=new OpenLayers.Format.GeoJSON();var feature=f.read(response.responseText)[0];if(!feature){return;}
if(feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"&&!!feature.geometry.getBounds()){this.recenterOnBbox(feature.geometry.getBounds());}else if(feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"&&!!feature.geometry.x&&!!feature.geometry.y){if(this.scales&&values.scaleValue){resolution=OpenLayers.Util.getResolutionFromScale(values.scaleValue,this.map.units);zoom=this.map.getZoomForResolution(resolution);}
if(scaleField){var scale=this.formateScale(feature.attributes[scaleField]);zoom=this.getZoomByName(scale);}
this.recenterOnCoords(feature.geometry.x,feature.geometry.y,zoom);}},failure:function(response){var msg=this.errorMsg+"<br /><br />"+url+"<br /><br />";msg+=response.status+"<br />"+response.statusText;this.showError(msg);},scope:this});},initWsRecenterService:function(){for(var i=0,len=this.wsRecenterServices.length;i<len;i++){if(this.wsRecenterServices[i].isDefault){this.wsRecenterCurrentService=this.wsRecenterServices[i];}}},setWsRecenterService:function(serviceId){for(var i=0;i<this.wsRecenterServices.length;i++){if(this.wsRecenterServices[i].id==serviceId){this.wsRecenterCurrentService=this.wsRecenterServices[i];}}
if(this.currentWsRecenterCombo.view){this.currentWsRecenterCombo.view.tpl=this.wsRecenterCurrentService.tpl||resultTpl;this.currentWsRecenterCombo.view.refresh();}else{this.currentWsRecenterCombo.tpl=this.wsRecenterCurrentService.tpl||resultTpl;}
var url=this.wsRecenterCurrentService.url;url+=this.wsRecenterCurrentService.urlSuffixList+'?';url+=this.wsRecenterCurrentService.paramList;if(this.wsRecenterCurrentService.ref)
url+='&ref='+this.wsRecenterCurrentService.ref;if(this.wsRecenterCurrentService.scaleField)
url+='&scalefield='+this.wsRecenterCurrentService.scaleField;this.wsRecenterstore.proxy.conn.url=url
this.wsRecenterstore.load();var combo=this.currentWsRecenterCombo.getEl();var newLabel=OpenLayers.i18n(this.wsRecenterCurrentService.label);combo.up('.x-form-item').down('.x-form-item-label').update(newLabel);},initWsRecenterstore:function(){var ref=(this.wsRecenterCurrentService.ref)?'&ref='+
this.wsRecenterCurrentService.ref:'';var scaleField=(this.wsRecenterCurrentService.scaleField)?'&scalefield='+
this.wsRecenterCurrentService.scaleField:'';this.wsRecenterstore=new Ext.data.JsonStore({url:this.wsRecenterCurrentService.url
+this.wsRecenterCurrentService.urlSuffixList
+'?'+this.wsRecenterCurrentService.paramList
+ref
+scaleField,root:"results",id:"id",fields:this.wsRecenterCurrentService.listFields,listeners:{loadexception:function(proxy,options,response){if(response.status<200||response.status>=300){var msg=this.errorMsg+"<br /><br />";msg+=this.wsRecenterstore.proxy.conn.url+"<br /><br />"
msg+=response.status+"<br />"+response.statusText;this.showError(msg);}},scope:this}});},initWsRecenterServicestore:function(){var myData=[];for(var i=0;i<this.wsRecenterServices.length;i++){myData[i]=[this.wsRecenterServices[i].id,this.wsRecenterServices[i].label];}
this.wsRecenterServicestore=new Ext.data.SimpleStore({fields:['id','label'],data:myData});},wsDomain:function(){var str=this.wsRecenterUrl;var s=str.indexOf('//');var end=str.indexOf('/',s+2);var d=str.substring(s+2,end);return d;}});Ext.reg('wsrecenter',mapfish.widgets.recenter.Ws);mapfish.widgets.recenter.Ws.override({addItems:function(){this.removeAll();this.initWsRecenterService();this.initWsRecenterServicestore();this.initWsRecenterstore();if(this.wsRecenterServices.length>1){var wsRecenterServices=new Ext.form.ComboBox({fieldLabel:OpenLayers.i18n('mf.recenter.ws.service'),name:'wsRecenterServices',value:'',displayField:'label',valueField:'id',store:this.wsRecenterServicestore,mode:'local',listeners:{select:function(combo,record,index){this.onWsRecenterServicesSelect(combo);},scope:this},triggerAction:'all',forceSelection:true,editable:false});wsRecenterServices.setValue(this.wsRecenterCurrentService.id);this.add(wsRecenterServices);}
var resultTpl=new Ext.XTemplate('<tpl for=".">','<div class="x-combo-list-item">','<h3><span>{name}</span></h3>','</div>','</tpl>');this.currentWsRecenterCombo={xtype:'combo',name:this.wsRecenterCurrentService.name||'wsRecenter',hideLabel:true,value:OpenLayers.i18n('Search'),tpl:this.wsRecenterCurrentService.tpl||resultTpl,displayField:this.wsRecenterCurrentService.displayField||'name',mode:'remote',minChars:2,typeAhead:true,valueField:'id',store:this.wsRecenterstore,listeners:{select:function(combo,record,index){this.onWsRecenterSelect(combo);},specialkey:function(combo,event){if(event.getKey()==event.ENTER){this.onWsRecenterSelect(combo);}},focus:function(combo){if(combo.getValue()==OpenLayers.i18n('Search')){combo.setValue('');}},scope:this},forceSelection:true,hideTrigger:true};this.add(this.currentWsRecenterCombo);if(this.scales){this.addScaleCombo('Ws');}}});function getObj(objID)
{if(document.getElementById){return document.getElementById(objID);}
else if(document.all){return document.all[objID];}
else if(document.layers){return document.layers[objID];}}
function checkClick(e){e?evt=e:evt=event;CSE=evt.target?evt.target:evt.srcElement;if(getObj('fc'))
if(!isChild(CSE,getObj('fc'))){getObj('fc').style.display='none';getObj('fc').style.zIndex='1';}}
function isChild(s,d){while(s){if(s==d)
return true;s=s.parentNode;}
return false;}
function Left(obj)
{var curleft=0;if(obj.offsetParent)
{while(obj.offsetParent)
{curleft+=obj.offsetLeft
obj=obj.offsetParent;}}
else if(obj.x)
curleft+=obj.x;return curleft;}
function Top(obj)
{var curtop=0;if(obj.offsetParent)
{while(obj.offsetParent)
{curtop+=obj.offsetTop
obj=obj.offsetParent;}}
else if(obj.y)
curtop+=obj.y;return curtop;}
document.write('<table id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2>');document.write('<tr><td style="cursor:pointer;background-color:#003399; color:#FFF;" onclick="csubm()"><img alt="<<" src="images/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial; color:#FFF; background-color:#003399;"></td><td align="right" style="cursor:pointer; background-color:#003399; color:#FFF;" onclick="caddm()"><img alt=">>" src="images/arrowrightmonth.gif"></td></tr>');document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">S</td><td align=center style="background:#ABABAB;font:12px Arial">M</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">W</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">F</td><td align=center style="background:#ABABAB;font:12px Arial">S</td></tr>');for(var kk=1;kk<=6;kk++){document.write('<tr>');for(var tt=1;tt<=7;tt++){num=7*(kk-1)-(-tt);document.write('<td id="v'+num+'" style="width:18px;height:18px">&nbsp;</td>');}
document.write('</tr>');}
document.write('</table>');var now=new Date;var sccm=now.getMonth();var sccy=now.getFullYear();var ccm=now.getMonth();var ccy=now.getFullYear();var updobj;function lcs(ielem){updobj=ielem;$('fc').style.left=Left(ielem)+"px";$('fc').style.top=Top(ielem)-50+"px";$('fc').style.display='';$('fc').style.zIndex="2000";curdt=ielem.value;curdtarr=curdt.split('.');isdt=true;for(var k=0;k<curdtarr.length;k++){if(isNaN(curdtarr[k]))
isdt=false;}
if(isdt&(curdtarr.length==3)){ccm=curdtarr[1]-1;ccy=curdtarr[2];prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]);}}
function evtTgt(e)
{var el;if(e.target)el=e.target;else if(e.srcElement)el=e.srcElement;if(el.nodeType==3)el=el.parentNode;return el;}
function EvtObj(e){if(!e)e=window.event;return e;}
function cs_over(e){evtTgt(EvtObj(e)).style.background='#FFCC66';}
function cs_out(e){evtTgt(EvtObj(e)).style.background='#FFF';}
function cs_click(e){updobj.value=calvalarr[evtTgt(EvtObj(e)).id.substring(1,evtTgt(EvtObj(e)).id.length)];getObj('fc').style.display='none';getObj('fc').style.zIndex="1";}
var mn=new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');var mnn=new Array('31','28','31','30','31','30','31','31','30','31','30','31');var mnl=new Array('31','29','31','30','31','30','31','31','30','31','30','31');var calvalarr=new Array(42);function f_cps(obj){obj.style.background='#FFF';obj.style.font='10px Arial';obj.style.color='#333333';obj.style.textAlign='center';obj.style.textDecoration='none';obj.style.border='1px solid #333333';obj.style.cursor='pointer';}
function f_cpps(obj){obj.style.background='#FFF';obj.style.font='10px Arial';obj.style.color='#ABABAB';obj.style.textAlign='center';obj.style.textDecoration='line-through';obj.style.border='1px solid #333333';obj.style.cursor='default';}
function f_hds(obj){obj.style.background='red';obj.style.font='bold 10px Arial';obj.style.color='#333333';obj.style.textAlign='center';obj.style.border='1px solid #333333';obj.style.cursor='pointer';}
function prepcalendar(hd,cm,cy){now=new Date();sd=now.getDate();td=new Date();td.setDate(1);td.setFullYear(cy);td.setMonth(cm);cd=td.getDay();getObj('mns').innerHTML=mn[cm]+' '+cy;marr=((cy%4)==0)?mnl:mnn;for(var d=1;d<=42;d++){f_cps(getObj('v'+parseInt(d)));if((d>=(cd-(-1)))&&(d<=cd-(-marr[cm]))){dip=((d-cd<sd)&&(cm==sccm)&&(cy==sccy));htd=((hd!='')&&(d-cd==hd));if(dip)
f_cpps(getObj('v'+parseInt(d)));else if(htd)
f_hds(getObj('v'+parseInt(d)));else
f_cps(getObj('v'+parseInt(d)));getObj('v'+parseInt(d)).onclick=(dip)?null:cs_click;getObj('v'+parseInt(d)).innerHTML=d-cd;calvalarr[d]=''+(d-cd)+'.'+(cm-(-1))+'.'+cy;}
else{getObj('v'+d).innerHTML='&nbsp;';getObj('v'+parseInt(d)).onmouseover=null;getObj('v'+parseInt(d)).onmouseout=null;getObj('v'+parseInt(d)).style.cursor='default';}}}
prepcalendar('',ccm,ccy);function caddm(){marr=((ccy%4)==0)?mnl:mnn;ccm+=1;if(ccm>=12){ccm=0;ccy++;}
cdayf();prepcalendar('',ccm,ccy);}
function csubm(){marr=((ccy%4)==0)?mnl:mnn;ccm-=1;if(ccm<0){ccm=11;ccy--;}
cdayf();prepcalendar('',ccm,ccy);}
function cdayf(){if((ccy>sccy)|((ccy==sccy)&&(ccm>=sccm)))
return;else{ccy=sccy;ccm=sccm;}}
function getDateCff(){var maintenant=new Date();var jour=maintenant.getDate();var mois=(maintenant.getMonth()+1);if(jour.toString().length<2){jour="0"+jour;}
if(mois.toString().length<2){mois="0"+mois;}
var JourMoisAnnee=jour+'.'+mois+'.'+maintenant.getFullYear();return JourMoisAnnee;}
function jourPlus(date){var tabDate=date.split('.');if(tabDate.length==3){var datePlus=new Date(parseInt(tabDate[2],10),parseInt(tabDate[1],10)-1,parseInt(tabDate[0],10)+1,0,0,0);var jour=datePlus.getDate();var mois=(datePlus.getMonth()+1);if(jour.toString().length<2){jour="0"+jour;}
if(mois.toString().length<2){mois="0"+mois;}
return jour+'.'+mois+'.'+datePlus.getFullYear();}
else
{return'';}}
function jourMoin(date){var tabDate=date.split('.');if(tabDate.length==3){var dateMoin=new Date(parseInt(tabDate[2],10),parseInt(tabDate[1],10)-1,parseInt(tabDate[0],10)-1,0,0,0);var jour=dateMoin.getDate();var mois=(dateMoin.getMonth()+1);if(jour.toString().length<2){jour="0"+jour;}
if(mois.toString().length<2){mois="0"+mois;}
return jour+'.'+mois+'.'+dateMoin.getFullYear();}
else
{return'';}}
function getTimeCff(){var maintenant=new Date();var heure=maintenant.getHours();var min=maintenant.getMinutes();if(heure.toString().length<2){heure="0"+heure;}
if(min.toString().length<2){min="0"+min;}
return heure+":"+min;}
function invertNachVon(id){var von=$('von'+id).value;$('von'+id).value=$('nach'+id).value;$('nach'+id).value=von;}
