/*
Openlayers Init Parken

@author  Matthias Woltering <woltering@traffgoroad.com>
@version $Id: openlayers_init_parken.js 376 2009-10-06 10:10:13Z wolt $

*/

/* globals: Layer */ 
var map,rlptile,rlpbeschriftung,truckparking,parkhouse,parkingarea,parkandride,passengerparking; 
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',
                  format:'image/png',
                  projection:'EPSG:31466'
                }
                ,{'buffer':0, transitionEffect: 'resize'}
                );
  
  /* Overlays: transparent: true */ 
  labelingtile = new OpenLayers.Layer.WMS(
                "labelingtile"
                ,urlArray
                //,"http://94.23.33.150/www/cgi-bin/mapserv?map=../map/labeling.map"
                ,{
                  layers:'labeling',
                  //layers:'bablabel,namedplaceslabel,junctionlabel,maske',
                  format:'image/png', 
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );    
                
  passengerparking = new OpenLayers.Layer.WMS(
                "passengerparking"
                ,urlArray
                //,urlMapserver+"map=../map/parking2009.map"
                ,{
                  //layers:'passengerparking,passengerparkingicon,maske',
                  layers:'passengerparking',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  passengerparking.setVisibility(true);
  
 
  parkhouse = new OpenLayers.Layer.WMS(
                "parkhouse"
                ,urlArray
                //,urlMapserver+"map=../map/parking2009.map"
                ,{
                  //layers:'navteqparkhouse,navteqparkhouseicon,maske',
                  layers:'parkhouse',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  parkhouse.setVisibility(false);
 
  parkingarea = new OpenLayers.Layer.WMS(
                "parkingarea"
                ,urlArray
                //,urlMapserver+"map=../map/parking2009.map"
                ,{
                  //layers:'navteqparkingarea,navteqparkingareaicon,maske',
                  layers:'parkingarea',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  parkingarea.setVisibility(false);
 
  parkandride = new OpenLayers.Layer.WMS(
                "parkandride"
                ,urlArray
                //,urlMapserver+"map=../map/parking2009.map"
                ,{
                  //layers:'navteqparkandride,navteqparkandrideicon,maske',
                  layers:'parkandride',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  parkandride.setVisibility(false); 
 
  truckparking = new OpenLayers.Layer.WMS(
                "truckparking"
                ,urlArray
                //,urlMapserver+"map=../map/parking2009.map"
                ,{
                  //layers:'truckparking,truckparkingicon,maske',
                  layers:'truckparking',
                  format:'image/png',
                  projection:'EPSG:31466',
                  transparent: true
                 }
                ,{'buffer':0}
                //,{'singleTile': true}
                );
  truckparking.setVisibility(true);  
 
  //truckparking = new EnhancedTextLayer( "truckparking", {location: "syncdata/parkplatz.txt"+"?"+Math.random()} );
  //truckparking.setVisibility(true);

 
  /* Add Layers */		
  map.addLayers([bgtile,labelingtile,parkhouse,parkingarea,parkandride,passengerparking,truckparking]);
  //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());


  /* setze Anfangsausschnitt */
  if(!map.getCenter()) map.zoomToMaxExtent();
  
  /* checkbuttons updaten */
  updateCheckButtons();

  OpenLayers.Popup.HEIGHT = 160;
  OpenLayers.Popup.WIDTH = 259;
  OpenLayers.Popup.COLOR = "#f8f8f8";
  OpenLayers.Popup.BORDER = "1px #386090 solid";
  OpenLayers.Popup.OPACITY = "1.0";      
  
  /* Eventhandler fuer Tooltips */
  var clickEventHandler = new OpenLayers.Handler.Click({ 'map': map }, {'click': function(e) { getAssetNode(e); } }); 
  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;
  }
}

/*#################################################################*/

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=""+h+":"+m+"";
}


//<input id=check_kllos type=checkbox name=\"check_klplos\"
function updateCheckButtons(){
    document.getElementById('check_truckparking').checked=truckparking.getVisibility();
    document.getElementById('check_parkhouse').checked=parkhouse.getVisibility();
    document.getElementById('check_parkingarea').checked=parkingarea.getVisibility();
    document.getElementById('check_parkandride').checked=parkandride.getVisibility();
    document.getElementById('check_passengerparking').checked=passengerparking.getVisibility();
    document.getElementById('check_beschriftung').checked=labelingtile.getVisibility(); 
}



