
Ext.onReady(function() {

   // private vars :
   var toolbar, viewport, vectorLayer;
   var button1 = false;
   var button2 = false;
   var button3 = false;
   var button4 = false;
   var button5 = false;


   //////////////////////////////////////////////
   //                   Map Initialisieren
   ///////////////////////////////////////////////////////


   var extent = new OpenLayers.Bounds(140000, 12000, 180000, 39000);
   var ovextent = new OpenLayers.Bounds(136000, 8000, 184000, 43000);


   map = new OpenLayers.Map({
      projection : "EPSG:21780",
      controls : [],
      numZoomLevels : 40,
      maxResolution : 'auto',
      maxExtent : extent,
      fractionalZoom : true,
      theme : null,
      scales : [ 200000, 175000, 150000, 125000, 100000, 80000, 60000, 40000, 30000, 20000, 18500, 15000, 10000, 8000, 4000, 2000, 1000, 500, 200, 100],
      units : "m"
   }
   );


   layerstore = new layerstore(map);
   kein = layerstore.getLayer('kein');
   map.addLayer(kein);

   luftbild2006 = layerstore.getLayer('luftbild2006');
   map.addLayer(luftbild2006);
   luftbild2009 = layerstore.getLayer('luftbild2009');
   map.addLayer(luftbild2009);
   dufour = layerstore.getLayer('dufour');
   map.addLayer(dufour);

   pk10_1943 = layerstore.getLayer('pk10_1943');
   map.addLayer(pk10_1943);

   pk10_1967 = layerstore.getLayer('pk10_1967');
   map.addLayer(pk10_1967);

   pixelkarte = layerstore.getLayer('pk10');
   map.addLayer(pixelkarte);

   reliefkarte = layerstore.getLayer('reliefkarte');
   map.addLayer(reliefkarte);

   gp = layerstore.getLayer('gp');
   map.addLayer(gp);

   pp = layerstore.getLayer('gs');
   map.addLayer(pp);

   up = layerstore.getLayer('up');
   map.addLayer(up);

   hk = layerstore.getLayer('hk');
   map.addLayer(hk);


   vectorLayer = layerstore.getLayer('skizze');
   map.addLayer(vectorLayer);


   ////////////////////////////////////////////////////////////////////////////////
   //                      Toolbar
   /////////////////////////////////////////////////////////////////////////////////////////////////////////

   Ext.QuickTips.init();



   // FeatureInfo

   mytoolbar = new llvtoolsbar(map, vectorLayer);
   mytoolbar.addItem ('zoom');
   mytoolbar.addItem ('fi');
   mytoolbar.addItem ('redline');
   mytoolbar.addItem ('pr');
   mytoolbar.addItem ('prpdf');
   mytoolbar.addItem ('scale');
   mytoolbar.addItem ('measure');
   mytoolbar.addItem ('mousepos');
   mytoolbar.addItem ('info');

   mytoolbar.featureinfo.addLayer("Übersichtsplan", "AV_Liegenschaften");
   mytoolbar.featureinfo.addLayer("Übersichtsplan", "AV_Gebaeudeadressen");
   mytoolbar.featureinfo.addLayer("Übersichtsplan", "UP_Bodenbedeckungflaechen");

   mytoolbar.featureinfo.addLayer("Übersichtsplan", "AV_Fixpunkte");
   mytoolbar.featureinfo.addLayer("Grundstücke", "RESF");
   mytoolbar.featureinfo.addLayer("Grundbuchplan", "RESF");
   mytoolbar.featureinfo.addLayer("Grundbuchplan", "HADR");
   mytoolbar.featureinfo.addLayer("UP-Höhenkurven", "AVBE_Hoehenkurven");

   mytoolbar.featureinfo.proxy = '/proxy.php?url=' ;
   nav = new OpenLayers.Control.Navigation( {
      mouseWheelOptions : {
         interval : 100
      }
   }
   );
   map.addControl(nav);
   nav.handlers.wheel.cumulative = true;
/*
   touch=  new OpenLayers.Control.TouchNavigation({
                dragPanOptions: {
                    enableKinetic: true
                }
            });

   map.addControl(touch);
*/

   //////////////////////////////////////////////////////////////////////

   var leg =  '<div id=legende style="padding-left: 5px">';
   leg += '<br><H2>Legende</H2><br><p class="text_normal" >Bodenbedeckungsarten</p>';
   leg += '<table width="330" border="0">';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#fecdcc">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende">&nbsp;Gebäude</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#dfdfdf">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;Strasse, Wege</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#f1f1f1">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;übrige befestigte Flächen</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#f1ffcd">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;Acker, Wiese, Weiden, ';
   leg += '    Gartenanlagen</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#ffffcc">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;Intensivkulturen wie Reben</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#a0ccff">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;Gewässer</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#aaf1a8">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;Wald</td>';
   leg += '  </tr>   ';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#cef1aa">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> übrige bestockte Flächen</td>';
   leg += '  </tr>';
   leg += '  <tr>';
   leg += '    <td width="44" bordercolor="#000000" style="border-style: solid; border-width: 1px" bgcolor="#D9D9B2">&nbsp;</td>';
   leg += '    <td width="274"; class="text_legende"> &nbsp;vegetationslose Flächen</td>';
   leg += '  </tr>';
   leg += '</table>';
   leg += '</div> ';





   viewport = new Ext.Viewport({
      layout : 'border',
      items : [new Ext.BoxComponent(
                      {region : 'north', el : 'north', height : 116}),
                      {region : 'west', id : 'west-panel', title : 'Menü', split : true, width : 280, minSize : 175, maxSize : 400,
                         collapsible : true, margins : '7 0 0 5',         layout : 'accordion',
                         layoutConfig : { animate : true },
                         items : [
                               {id  : 'suchaccordion', title : 'Suchen', defaults : { border : false, activeTab : 0},
                               items : [
                                  {defaults : {layout : 'fit'}, xtype : 'tabpanel', 
                                  items : [
                                           {title : 'Adresse', html : suchform_adr, listeners : {'activate' : function () { 
                                              if ( ! button1) { var buttonHandler1 = function(button, event) {showHausnummer();};
                                                buttonObject1 = new Ext.Button({ applyTo : 'suchbutton1', text : 'Anzeigen', handler : buttonHandler1});
                                                button1 = true;
                                                   }
                                                 }
                                               }
                                           }, 
                                           { title : 'Grundstück',
                                             html : suchform_grst ,
                                             listeners : { 'activate' : function () {
                                                if ( ! button2) {  var buttonHandler2 = function(button, event) {  showGrundstueck(); } ;
                                                buttonObject2 = new Ext.Button({ applyTo : 'suchbutton2', text : 'Anzeigen', handler : buttonHandler2});
                                                button2 = true;
                                                    }
                                                 }
                                                }
                                           },
                                           { title : 'Namen',
                                             html : suchform_poi ,
                                             listeners : { 'activate' : function () {
                                                  if ( ! button3) {
                                                      var buttonHandler3 = function(button, event) {     showPoi();};
                                                      buttonObject3 = new Ext.Button({ applyTo : 'suchbutton3', text : 'Anzeigen', handler : buttonHandler3 });
                                                      button3 = true;
                                                     }
                                                 }
                                             }

                                             }, 
                                             { title : 'Koordinate',
                                               html : suchform_koo ,
                                               listeners : { 'activate' : function () {
                                                       if ( ! button4) {
                                                       var buttonHandler4 = function(button, event) { showKoord(); } ;
                                                       buttonObject4 = new Ext.Button({ applyTo : 'suchbuttonkoo', text : 'Anzeigen', handler : buttonHandler4 });
                                                        button4 = true;
                                                       }
                                                     }
                                                }
                                             }
                                            ] // tabpanel-items
                                     }
                                    ] // tabpanel
                                    },
                                    {
                                        title : 'Themenauswahl',
                                        html : '<div id="tree"></div><div style="padding-left:5px;" id="comment" class="text_legende"><br>Beachten Sie:<br><br><ul style="margin-left: 12px;   list-style-position: outside; list-style-type: disc; "><li>Aktivieren Sie für das Thema Amtliche Vermessung jeweils nur einen Layer.</li><li>Nicht alle Layer sind in allen Zoomstufen sichtbar</li><li>Die Farben des &Uuml;bersichtsplan <span style="font-weight:bold; ">überdecken</span> evtl. das Orthophoto. Um beiden Layer zu sehen, schalten Sie den &Uuml;bersichtsplan opaque.</li><li>Sie k&ouml;nnen die Opazit&auml;t f&uuml;r jeden einzelnen Layer einstellen. Markieren Sie dazu den Layernamen und benutzen Sie die rechte Maustaste</li></ul></div>',
                                        border : false
                                    },
                                    {
                                            title : 'Übersichtskarte',
                                            html : '<div style="height: 20px; font-size: 14px; font-weight:bold; padding-top: 10px; padding-left: 60px;"><h2>Übersichtskarte</h2></div><div id="overview"> </div>',
                                            border : false
                                    },
                                    {
                                             title : 'Legende',
                                             html : leg,
                                             border : false
                                    }
                                 ] // west-items
                   },
                   {
                        region : "center",
                        id : "mappanel",
                        border : false,
                        margins : '7 7 0 0 ',
                        xtype : "gx_mappanel",
                        map : map,
                        tbar : mytoolbar.toolbarItems,
                        split : true
                   },
                   {
                        region : 'south',
                        id : 'statusBar',
                        border : false,
                        bodyStyle : 'text-align:left;padding:0px;',
                        height : 25,
                        margins : '7 0 0 0',
                        frame : true,
                        html : 'a status bar'
                   }
                ] // viewport  item
                }
                );

   //   Ende Vieport ////////////////////////

   // Layer Tree erstellen und rendern

   base = new GeoExt.tree.BaseLayerContainer({
      text : 'Hintergrund',
      leaf : false,
      expanded : true
   }
   );

   var over = new GeoExt.tree.LayerContainer({
      text : 'Amtliche Vermessung',
      leaf : false,
      expanded : true,
      loader : {
         filter : function(record) {
            var  isOK = false;
            if ( ! record.get("layer").isBaseLayer &&  (record.get("layer").name.indexOf("suchen") == - 1) && (record.get("layer").name.indexOf("skizze") == - 1) && (record.get("layer").name.indexOf("rahmen") == - 1) && (record.get("layer").name.indexOf("Handler") == - 1)) {
               isOK = true;
            }
            //               if ( ! (record.get("layer").name.indexOf("Handler") == - 1 )) { isOK = false}
            return isOK;
         }
      }
   }
   );



  var layerRoot = new Ext.tree.TreeNode({
       text: "Geodatenportal",
       expanded: true
       });
      layerRoot.appendChild(base);
      layerRoot.appendChild(over);



/*

 var layerTree = new Ext.tree.TreePanel({
      renderTo: document.getElementById('tree'),
      title: "Layerliste",
      leaf: false,
      root: layerRoot,
      enableDD: true,
      collapsible: true,
      height: 300,
      header: false,     
      expanded: true
      });


*/



  var  layerTree = new GeoExt.ux.tree.LayerTreeBuilder({
        renderTo: document.getElementById('tree'),
        autoScroll: true,
        header: false,
        title: "Layerliste",
        root: layerRoot,
        rootVisible: true,
        enableDD: true,
        collapsible: true,
        lines: false,
        border: false,
        // widget custom properties
        wmsLegendNodes: false,
        vectorLegendNodes: false
    });





   Ext.getCmp('suchaccordion').on('collapse', function( ) {
      sucheLayerClear();
   }
   );

   // Map initialisieren


   var ov = layerstore.getLayer('ovlayer'); 
   map.addControl(ov.ovmap);


   map.addControl(new OpenLayers.Control.ScaleLine());
   update_scaleform() ;
   setStatus('Status: ready');

   var mylayers = map.getLayersByName('Übersichtsplan');
   if (mylayers.length > 0 ) {
      var mylayer = mylayers[0];
      mylayer.setVisibility(true);
   }

   //      map.zoomToMaxExtent();
   update_scaleform();
});
// end of app

