/**
* Mobilitaetsportal Rheinland-Pfalz
* 
* @version $Id: openlayers_init_reiseauskunft.js 384 2009-10-06 12:45:25Z wolt $
*
*/

/* globals: Layer */ 
var map,rlptile,rlpbeschriftung,railwaystation,busstop,airport; 
var popup;

function init(){
  // set map height
  FensterResize();
  
  // proxy host
  OpenLayers.ProxyHost = "/www/cgi-bin/proxy.cgi?url=";
  
  var options = {
                maxExtent: new OpenLayers.Bounds(2365887,5310674,2817545,5762332)
                ,maxResolution: "auto"
                ,scales: [1000000,500000,250000,100000,50000,25000,10000]
                ,units: 'm'
                ,projection: 'EPSG:31466'
                ,controls: []
                };

  map = new OpenLayers.Map('map', options);
  OpenLayers.IMAGE_RELOAD_ATTEMPTS = 10;
  OpenLayers.Util.onImageLoadErrorColor = "transparent";


  /* Base Layer */     
    
  bgtile = new OpenLayers.Layer.WMS(
                "bgtile"
                ,urlArray
                ,{
                  layers:'bg_travelinformation',
                  format:'image/png',
                  projection:'EPSG:31466'
                }
                ,{'buffer':0, transitionEffect: 'resize'}
                );
  
  /* Overlays: transparent: true */ 
  labelingtile = new OpenLayers.Layer.WMS(
                "labelingtile"
                ,urlArray
                ,{
                  layers:'labeling',
                  format:'image/png', 
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                );    
  labelingtile.setVisibility(true);
                
  railwaystation = new OpenLayers.Layer.WMS(
                "railwaystation"
                ,urlArray
                //,urlMapserver+"map=../map/railwaystation.map"
                ,{
                  //layers:'railwaystationsmall,railwaystationicon,maske',
                  layers:'railwaystation',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  railwaystation.setVisibility(true);
  
 
  airport = new OpenLayers.Layer.WMS(
                "airport"
                ,urlArray
                //,urlMapserver+"map=../map/airport.map"
                ,{
                  //layers:'airportsmall,airporticon,maske',
                  layers:'airport',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}                 
                //,{'singleTile': true}
                );
  airport.setVisibility(true);
 
 
  busstop = new OpenLayers.Layer.WMS(
                "busstop"
                ,urlArray
                //,urlMapserver+"map=../map/busstop.map"
                ,{
                  //layers:'busstopsmall,busstopicon,maske',
                  layers:'busstop',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}                 
                //,{'singleTile': true}
                );
  busstop.setVisibility(false);
  
  
 
  /* Add Layers */		
  map.addLayers([bgtile,labelingtile,busstop,railwaystation,airport]);
  //map.addLayers([bgtile]);

  /* Controls */			
  map.addControl(new OpenLayers.Control.PanZoomBar());
  map.addControl(new OpenLayers.Control.MouseDefaults());
  map.addControl(new OpenLayers.Control.Permalink('permalink'));
  //map.addControl(new OpenLayers.Control.MousePosition());
  //map.addControl(new OpenLayers.Control.Scale());

  /* Popup-style */
  OpenLayers.Popup.HEIGHT = 280;
  OpenLayers.Popup.WIDTH = 280;
  OpenLayers.Popup.COLOR = "#f8f8f8";
  OpenLayers.Popup.BORDER = "1px #386090 solid";
  OpenLayers.Popup.OPACITY = "1.0";

  /* setze Anfangsausschnitt */
  //map.setCenter(new OpenLayers.LonLat(2592821,5561988),1);
  if(!map.getCenter()) map.zoomToMaxExtent();
  
  
  
  // checkbuttons updaten
  updateCheckButtons();
    
  var clickEventHandler = new OpenLayers.Handler.Click({ 'map': map }, {'click': function(e) { getAssetNode(e); } }, { 'pixelTolerance': 3}); 
  clickEventHandler.activate();

}


/*#################################################################*/
/* popup with content from url */
/*#################################################################*/

function getAssetNode(e){
  // delete popup directly after click
  if (popup != null) {
    popup.destroy();
    popup = null;
  } else {

  // active layers
  var activeLayersString="";
  for(i=0; i < map.layers.length; i++) {
   if (map.layers[i].getVisibility() && !map.layers[i].isBaseLayer) {
     activeLayersString+=map.layers[i].name+",";
   }
  } 
  
  // distance
  var searchRadius;
  //searchRadius=map.getScale()+","+map.getResolution();
  searchRadius=10*map.getResolution();
  
  mouseLoc = map.getLonLatFromPixel(e.xy);
  var url;
  url = urlPoi+"latitude="+mouseLoc.lat+"&longitude="+mouseLoc.lon+"&activelayer="+activeLayersString+"&distance="+searchRadius;
  
  /* Precreate popup */
  popup = new OpenLayers.Popup.Anchored("Installation",
          mouseLoc,
          new OpenLayers.Size(259,160),
          "Inhalte werden geladen...",
          null,
          false);
        
  OpenLayers.Popup.HEIGHT = 160;
  OpenLayers.Popup.WIDTH = 259;
  OpenLayers.Popup.COLOR = "#f8f8f8";
  OpenLayers.Popup.BORDER = "1px #386090 solid";
  OpenLayers.Popup.OPACITY = "1.0";      
          
  map.addPopup(popup);
  
  /* Fill popup with response */
  OpenLayers.loadURL(url, '', this, setInnerHTML);
  }
} 

function setInnerHTML(response) {
  //if (response.responseText.indexOf('no results') == -1 && response.statusText != "Internal Server Error" ) {
  if (popup != null) {
    popup.setContentHTML(response.responseText);     
  }
} 

/*#################################################################*/



/* toggle visibility */
function toggleVisibility(layer, buttonname){
  if(document.getElementById(buttonname).checked==false){
    layer.setVisibility(false);
  } else {
    layer.setVisibility(true);
  }
}
function toggleIcon(layer, buttonname, element, iconon, iconoff){
  if(document.getElementById(buttonname).checked==false){
    document.getElementById(element).src=iconon;
  } else {
    document.getElementById(element).src=iconoff;
  }
}

/*#################################################################*/

/* Update Iconlayer */
/* usage:
updateIconLayer(baustellen, "Baustellen", "baustellen.txt") ;
TODO: funktioniert nicht! 
*/
function updateIconLayer(layer, layername, file){
  // update Textlayer : destroy -> create new
  isVisible = layer.getVisibility();
  layer.destroy();
  //layer = new OpenLayers.Layer.Text( layername , {location: file+"?"+Math.random()} );
  layer = new EnhancedTextLayer( layername , {location: file+"?"+Math.random()} );
  map.addLayers([layer]);
  //layer.setVisibility(isVisible);
}


function updateIconParkplatz(){
  isVisible = truckparking.getVisibility();
  truckparking.destroy();
  truckparking = new EnhancedTextLayer( "truckparking" , {location: "syncdata/parkplatz.txt"+"?"+Math.random()} );
  map.addLayers([truckparking]);
  truckparking.setVisibility(isVisible);
}


/* Update WMS Layer */
function updateLayer(layer){
    layer.mergeNewParams({'uniqueName': Math.random()});
}

function updateDate(){
  var element = document.getElementById("today_date");
  var today = new Date();
  var tage=new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");

  element.innerHTML=tage[today.getDay()]+", "+today.getDate()+"."+(today.getMonth()+1)+"."+today.getFullYear();
}

function leadingzero (number) {
    return (number < 10) ? '0' + number : number;
}

function updateTimestamp(elementid){
  var element = document.getElementById(elementid);
  var today = new Date();

  var h,m,s;
  h=leadingzero(today.getHours());
  m=leadingzero(today.getMinutes());
  s=leadingzero(today.getSeconds());

  //element.innerHTML="Verkehrslage: "+h+":"+m+":"+s;
  element.innerHTML=""+h+":"+m+"";
}


//<input id=check_kllos type=checkbox name=\"check_klplos\"
function updateCheckButtons(){
    document.getElementById('check_railwaystation').checked=railwaystation.getVisibility();
    document.getElementById('check_airport').checked=airport.getVisibility();
    document.getElementById('check_busstop').checked=busstop.getVisibility();
    document.getElementById('check_beschriftung').checked=labelingtile.getVisibility();
    
}


