var options, map, popup, markers, innerHTML, clickedX, clickedY, panelNext, panelPrevious, basiskarte_overlay, basiskarte, faehren, schnellbuslinien, stadt_regionalbuslinien, metrobuslinien, eilbuslinien, bushaltestellen, haltestellen_usar, szDivID, iState;

	function initLGV(){


	   var bounds = new OpenLayers.Bounds(
                3500000.5, 5878000.5,
                3647999.0, 6001999.5
            );

         if (document.location.protocol != "file:") {
	      theArgs = OpenLayers.Util.getArgs();
	 } else {
         theArgs = {};
         //theArgs.center = "0,0";
         theArgs.zoom = "0";
         /*theArgs.data = "textfile.txt";
         theArgs.controls = 'panzoom,mouse';
         theArgs.layers = 'openlayers';*/
	 }

      /*
       * FDF SETTINGS BEGIN
       */

         if (window.location.hostname == 'localhost'){

        	 OpenLayers.ProxyHost="proxy?url=";

         }else{
        	 OpenLayers.ProxyHost = "/cgi-bin/unknown_blind_proxy.cgi?url=";
         }
      /*
       * FDF SETTINGS END
       */
	 var safeArgs = {}

	 var DEFAULT_LAT = 0;
	 var DEFAULT_LON = 0;
	 var DEFAULT_ZOOM_LEVEL = 0;
	 DEFAULT_MARKER_STATUS = 0;
	 /*var DEFAULT_CONTROLS = ['panzoom','mouse'];
	 var DEFAULT_LAYERS = ['openlayers'];
	 var IDX_LAT = 0;
	 var IDX_LON = 1;*/

	 safeArgs.centerLon = theArgs.center ?
	 	parseFloat(theArgs.center[0]) : DEFAULT_LON;

	safeArgs.centerLat = theArgs.center ?
        	parseFloat(theArgs.center[1]) : DEFAULT_LAT;

	safeArgs.zoom = theArgs.zoom ? parseInt(theArgs.zoom) : DEFAULT_ZOOM_LEVEL;

	/*safeArgs.controls = theArgs.controls ?
        	theArgs.controls.split(",") : DEFAULT_CONTROLS;

	safeArgs.layers = theArgs.layers ?
        	theArgs.layers.split(",") : DEFAULT_LAYERS;

	safeArgs.data = theArgs.data; // TODO: Make this "safe".*/

	safeArgs.marker = theArgs.marker ? parseInt(theArgs.marker) : DEFAULT_MARKER_STATUS;

	//OpenLayers.ProxyHost="proxy?url=";
	//OpenLayers.ProxyHost = "/cgi-bin/unknown_blind_proxy.cgi?url=";

	    options = {
                maxExtent: bounds,
		restrictedExtent: bounds,
		projection: "EPSG:31467",
		units: "m",
		resolutions: [79.6,39.84,21.16,10.58,5.29,2.65,1.27],
		/* resolutions: [159.1,79.6,39.84,21.16,10.58,5.29,2.65,1.27],*/
		maxResolution:"auto",
		controls: []

            };


           map = new OpenLayers.Map("map",options);


            OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;




	    var urlArray = ["http://maps.hvv.de/hvv/services",
			"http://212.105.220.98/hvv/services"];

	    var tileCacheURLArray = ["http://maps.hvv.de/tilecache204/tilecache.py/",
	                 			"http://212.105.220.98/tilecache204/tilecache.py/"];

//	    var tileCacheURLArray = ["http://tgeoportal-hvv.de/tilecache/tilecache.py/",
//			"http://87.106.215.123/tilecache/tilecache.py/"];

	    /*var tileCacheURLArray1 = ["http://maps.hvv.de/tilecache204/tilecache.py/",
			"http://maps01.hvv.de/tilecache204/tilecache.py/", "http://maps02.hvv.de/tilecache204/tilecache.py/", "http://tgeoportal-hvv.de/tilecache/tilecache.py/"];*/
//
//	    var tileCacheURLArray1 = ["http://maps.hvv.de/tilecache204/tilecache.py/",
//			"http://212.105.220.98/tilecache204/tilecache.py/", "http://tgeoportal-hvv.de/tilecache/tilecache.py/"];

	    var tileCacheURLArray1 = ["http://maps.hvv.de/tilecache204/tilecache.py/",
	                  			"http://212.105.220.98/tilecache204/tilecache.py/", "http://maps01.hvv.de/tilecache204/tilecache.py/"];


	    /*var tileCacheURLArray1 = ["http://maps.hvv.de/tilecache204/tilecache.py/",
			"http://maps01.hvv.de/tilecache204/tilecache.py/", "http://maps02.hvv.de/tilecache204/tilecache.py/"];*/

	    basiskarte_overlay = new OpenLayers.Layer.WMS( "Hintergrundkarte",
                    "http://maps.hvv.de/hvv/services", {layers: 'hvv_overview', projection: 'EPSG:31467', maxExtent: bounds},
		    //{gutter: 2, singleTile: true, transitionEffect: 'resize'}
		    {gutter: 2, buffer: 1}
	    );

	    /*basiskarte = new OpenLayers.Layer.WMS( "Hintergrundkarte",
                    "http://tgeoportal-hvv.de:80/hvv/services", {layers: 'hvv_basiskarte', projection: 'EPSG:31467', maxExtent: bounds},
		    //{gutter: 2, singleTile: true, transitionEffect: 'resize'}
		    {gutter: 2}
	    );*/

	     basiskarte = new OpenLayers.Layer.WMS( "Hintergrundkarte",
                    tileCacheURLArray1, {layers: 'Hintergrundkarte_HVV_Neu', projection: 'EPSG:31467', maxExtent: bounds, format: 'image/jpeg'},
		    {buffer: 1}
	    );



	    basiskarte.displayInLayerSwitcher = false;

	    /*schnellbuslinien = new OpenLayers.Layer.WMS( "Schnellbuslinien",
                    urlArray, {layers: 'Schnellbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		    {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], buffer: 0}
	    );*/

	    schnellbuslinien = new OpenLayers.Layer.WMS( "Schnellbuslinien",
                    urlArray, {layers: 'Schnellbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		    {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], singleTile: true, buffer: 0}
	    );


	    /*stadt_regionalbuslinien = new OpenLayers.Layer.WMS( "Stadt- und Regionalbuslinien",
                    urlArray, {layers: 'Stadt_Regionalbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		    {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], buffer: 0}
	    );*/

	    stadt_regionalbuslinien = new OpenLayers.Layer.WMS( "Stadt- und Regionalbuslinien",
                    urlArray, {layers: 'Stadt_Regionalbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		    {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], singleTile: true, buffer: 0}
	    );

	   /* metrobuslinien = new OpenLayers.Layer.WMS( "Metrobuslinien",
                    urlArray, {layers: 'Metrobuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], buffer: 0}
	    );*/

	    metrobuslinien = new OpenLayers.Layer.WMS( "Metrobuslinien",
                    urlArray, {layers: 'Metrobuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], singleTile: true, buffer: 0}
	    );

	    /*eilbuslinien = new OpenLayers.Layer.WMS( "Eilbuslinien",
                    urlArray, {layers: 'Eilbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], buffer: 0}
	    );*/

	    eilbuslinien = new OpenLayers.Layer.WMS( "Eilbuslinien",
                    urlArray, {layers: 'Eilbuslinien', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], singleTile: true, buffer: 0}
	    );

	    /*faehren = new OpenLayers.Layer.WMS( "Fähren",
                    urlArray, {layers: 'Faehren', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29], buffer: 0}
	    );*/

	    faehren = new OpenLayers.Layer.WMS( "F&auml;hren",
                    urlArray, {layers: 'Faehren', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29], singleTile: true, buffer: 0}
	    );

	    /*bushaltestellen = new OpenLayers.Layer.WMS( "Bushaltestellen",
                    "http://maps.hvv.de/hvv/services", {layers: 'Haltestellen_20081212_gneu', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], buffer: 0, gutter: 10}
	    );*/

	    bushaltestellen = new OpenLayers.Layer.WMS( "Bushaltestellen",
                    urlArray, {layers: 'Haltestellen_20081212_gneu', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: true, resolutions: [10.58,5.29,2.65,1.27], singleTile: true, buffer: 0}
	    );

	    /*haltestellen_usar = new OpenLayers.Layer.WMS( "Haltestellen USAR",
                    "http://maps.hvv.de/hvv/services", {layers: 'Haltestellen_USAR_20081212_gneu', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: false, resolutions: [39.84,21.16,10.58], buffer: 0, gutter: 10}
	    );*/

	    haltestellen_usar = new OpenLayers.Layer.WMS( "Haltestellen USAR",
                    urlArray, {layers: 'Haltestellen_USAR_20081212_gneu', projection: 'EPSG:31467', transparent: "true", format: "image/gif", maxExtent: bounds},
		     {isBaseLayer: false, displayInLayerSwitcher: false, resolutions: [39.84,21.16,10.58], singleTile: true, buffer: 0}
	    );

            map.addLayers([basiskarte, schnellbuslinien, stadt_regionalbuslinien, metrobuslinien, eilbuslinien, faehren, bushaltestellen, haltestellen_usar]);

	    markers = new OpenLayers.Layer.Markers( "Suchergebnis" );



	   //center on parameter request with marker
	   if (safeArgs.centerLon == 0) {
		   map.zoomToExtent(bounds, 1);
           }
	   else if (safeArgs.zoom == 8) {
		   newCenter(safeArgs.centerLon, safeArgs.centerLat, 7, safeArgs.marker)
	   }
	   else {
		   newCenter(safeArgs.centerLon, safeArgs.centerLat, safeArgs.zoom, safeArgs.marker)
		   // Ausgrauen der Layer im Optionsfenster beim Start mit anderen Zoomstufen
		   checkResForOptions();
		   //map.setCenter(new OpenLayers.LonLat(safeArgs.centerLon, safeArgs.centerLat), safeArgs.zoom);
	   }

	    //map.addControl( new OpenLayers.Control.MouseToolbar() );
	    /*nav = new OpenLayers.Control.NavigationHistory({"previousOptions": {"title": "zur�ck"},"nextOptions": {"title": "vorw�rts"}});;
	    map.addControl(nav);
	    panelNext = new OpenLayers.Control.Panel(
                    {div: document.getElementById("panelNext")});
            panelNext.addControls([nav.next]);
	    map.addControl(panelNext);

	    panelPrevious = new OpenLayers.Control.Panel(
                    {div: document.getElementById("panelPrevious")});
            panelPrevious.addControls([nav.previous]);
	    map.addControl(panelPrevious);*/

	    var zoomPanbarControl = new OpenLayers.Control.PanZoomBar({"title": "Verschieben Sie den Ausschnitt oder wählen Sie eine Zoomstufe!"});
	    zoomPanbarControl.zoomWorldIcon = true;
	    map.addControl( zoomPanbarControl );
	    navWheel = new OpenLayers.Control.Navigation({'zoomWheelEnabled': true});
	    map.addControl( navWheel );


	  // map.addControl( new OpenLayers.Control.LayerSwitcher({title:"Passen Sie die Ansicht an!"/*, activeColor: 'red'*/}) );

	    var layerSwitcher = new OpenLayers.Control.newLayerSwitcher({title:"Passen Sie die Ansicht an!"});
            map.addControl(layerSwitcher);
            OpenLayers.Rico.Corner.round( layerSwitcher.div, {corners: "tl bl", bgColor: "transparent", color: "#E7ECF0", blend: false});
            OpenLayers.Rico.Corner.changeOpacity(layerSwitcher.layersDiv, 1.0);




	    map.addControl( new OpenLayers.Control.ScaleLine() );
	    //map.addControl( new OpenLayers.Control.MousePosition() );
	    //map.addControl( new OpenLayers.Control.KeyboardDefaults() );

	    var controlOptions = {mapOptions:	{maxExtent: bounds, restrictedExtent: bounds, projection: "EPSG:31467", units: "m", numZoomLevels: 1},
	            size: new OpenLayers.Size(150, 115),
	            title: "Übersichtskarte mit aktuellem Kartenausschnitt",
		    layers: [basiskarte_overlay]
	    };
	    var overview = new OpenLayers.Control.OverviewMap(controlOptions);
	   // map.addControl(overview);
	    //overview.maximizeControl();

	    schnellbuslinien.display(false);

	    // Ausgrauen der Layer im Optionsfenster beim �ndern der Zoomstufe
	    map.events.register('zoomend', map, function (e) {
		 checkResForOptions();
	    });

/*
	    map.events.register('click', map, function (e) {

	    var lonlat = map.getLonLatFromViewPortPx(e.xy);
	    var x = lonlat.lon;
	    var y = lonlat.lat;
	    alert("x="+x+" y="+y);
	    });
*/
	    /*
	    map.events.register('click', map, function (e) {
            //OpenLayers.Util.getElement('nodeList').innerHTML = "Die Informationen werden geladen... einen Augenblick bitte...";
	    clickedX = e.xy.x;
	    clickedY = e.xy.y;



	    var myResolution = map.getResolution();
	    if (myResolution == 159.1 || myResolution == 79.6) {
	    }
	    else if (myResolution == 39.84 || myResolution == 21.16 || bushaltestellen.getVisibility() != true) {
	    var url =  haltestellen_usar.getFullRequestString({
                            REQUEST: "GetFeatureInfo",
                            EXCEPTIONS: "application/vnd.ogc.se_xml",
                            BBOX: haltestellen_usar.map.getExtent().toBBOX(),
                            X: clickedX,
                            Y: clickedY,
                            INFO_FORMAT: 'text/html',
                            QUERY_LAYERS: haltestellen_usar.params.LAYERS,
                            WIDTH: haltestellen_usar.map.size.w,
                            HEIGHT: haltestellen_usar.map.size.h});
            //OpenLayers.loadURL(url, '', this, setHTML);
	    OpenLayers.loadURL(url, '', this, createPopup);
	    OpenLayers.Event.stop(e);
	     }
	     else {
	     var url =  bushaltestellen.getFullRequestString({
                            REQUEST: "GetFeatureInfo",
                            EXCEPTIONS: "application/vnd.ogc.se_xml",
                            BBOX: bushaltestellen.map.getExtent().toBBOX(),
                            X: clickedX,
                            Y: clickedY,
                            INFO_FORMAT: 'text/html',
                            QUERY_LAYERS: bushaltestellen.params.LAYERS,
                            WIDTH: bushaltestellen.map.size.w,
                            HEIGHT: bushaltestellen.map.size.h});
            //OpenLayers.loadURL(url, '', this, setHTML);
	    OpenLayers.loadURL(url, '', this, createPopup);
	    OpenLayers.Event.stop(e);
	     }

      });

		*/

	    function createPopup(response) {
	     // this refers to the event object
	     var ilonlat = map.getLonLatFromPixel(new OpenLayers.Pixel(clickedX, clickedY));
	     popup = new OpenLayers.Popup.FramedCloud(
                        "__popup",   	    // popup id
                        ilonlat,            // OpenLayers.LonLat object
                        new OpenLayers.Size(300,500),               // popup is autosized
                        response.responseText,      // html string
                        null,               // no anchor
                        true                // close button
	     );
	     map.addPopup(popup,true);
	     }


    /*function setHTML(response) {
        OpenLayers.Util.getElement('nodeList').innerHTML = response.responseText;
	innerHTML = response.responseText;

    }*/

   }

    function newCenter(xValue, yValue, zoomValue, setMarker) {
		   markers.clearMarkers();
		   map.setCenter(new OpenLayers.LonLat(xValue,yValue),zoomValue);
		   if (setMarker == 1) {
		   map.addLayer(markers);
		   var size = new OpenLayers.Size(40,40);
		   //var offset = new OpenLayers.Pixel(-size.w, -size.h);
		   var offset = new OpenLayers.Pixel(-(size.w/2), -(size.h/2));
		   var icon = new OpenLayers.Icon('http://maps.hvv.de/OpenLayers/img/kreismarker_rot.gif',size,offset);
		   markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(xValue,yValue),icon));
		   }
	}

	function destroy() {
            popup.destroy();
        }




//Anzeigen der Legende
function toggleBox(szDivID) // 1 visible, 0 hidden
{

  var iState;


    if(document.layers)	   //NN4+
    {
	    alert("Hallo1!");
       if(document.layers[szDivID].visibility == "show")
       {
	       iState = 0;
       }
       else if(document.layers[szDivID].visibility == undefined || document.layers[szDivID].visibility == "hide")
       {
	       iState = 1;
       }
       document.layers[szDivID].visibility = iState ? "show" : "hide";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        if (obj.style.visibility == "visible")
	{
		iState = 0;
	}
	else if (obj.style.visibility == "" || obj.style.visibility == "hidden")
	{
		iState = 1;
	}
	obj.style.visibility = iState ? "visible" : "hidden";
    }
    else if(document.all)	// IE 4
    {
        if (document.all[szDivID].style.visibility == "visible")
	{
		iState = 0;
	}
	else if (document.all[szDivID].style.visibility == "" || document.all[szDivID].style.visibility == "hidden")
	{
		iState = 1;
	}
  	document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}



function checkMap(layer, id) {

var inputObjekt = document.getElementById(id);

map.layers[layer].setVisibility(inputObjekt.checked);

return true; // continue event

}


function checkResForOptions() {
 var myResolution = map.getResolution();
 if (myResolution == 159.1 || myResolution == 79.6 || myResolution == 39.84 || myResolution == 21.16)
		{
			document.getElementById("input_Schnellbuslinien").disabled = "true";
			document.getElementById("input_Stadt_und_Regionalbuslinien").disabled = "true";
			document.getElementById("input_Metrobuslinien").disabled = "true";
			document.getElementById("input_Eilbuslinien").disabled = "true";
			document.getElementById("input_Faehren").disabled = "true";
			document.getElementById("input_Bushaltestellen").disabled = "true";
		}
  else
		{
			document.getElementById("input_Schnellbuslinien").removeAttribute("disabled");
			document.getElementById("input_Stadt_und_Regionalbuslinien").removeAttribute("disabled");
			document.getElementById("input_Metrobuslinien").removeAttribute("disabled");
			document.getElementById("input_Eilbuslinien").removeAttribute("disabled");
			document.getElementById("input_Faehren").removeAttribute("disabled");
			document.getElementById("input_Bushaltestellen").removeAttribute("disabled");
		}
}

