//<!-- generateWMSList-------------------------------------------------------->  
function generateWMSList() 
{
    var content = "";
    

    
    content += '<form onsubmit="return false;">';
    content += '<select id="selWms" style="width:250px;" onchange="javascript:$(\'txtInputWms\').value = this.options[this.selectedIndex].value;addUrl()">';           
    //define options in form
    len = 2;
    len = WMSList.length;
    for (var i = 0; i < len; i = i + 2 )
    {
      content += '<option value="';
      content += WMSList[i];
      content += '">';
      content += WMSList[i+1];
      content += '</option>';
    }
    content += '</select><br />';
    content += '<input id="txtInputWms" type="text" style="width:250px;" value=' + WMSList[0] + ' />';
    content += '<br/>';
    content += '<input type="submit" onclick="addUrl(); return false;" value="Načíst WMS" onsubmit="addUrl(); return false;" />';
	  content += '</form>';

	  content += '<h1 id="layerTitle" style="font-size:1.3em;">WMS Vrstvy</h1>';
	  content += '<input type="checkbox" id="autosync" > <a href="javascript:updateThumbs(null);">Synchronizovat náhledy s mapou</a></input> <br />';
	  content += '<a href="javascript:AddAll(null);">Přidat všechny vrstvy</a> <br />';
	  content += '<div id="status"></div>';
	  content += '<p style="font-size:.8em;"></p>';

	  content += '<div id="WMSnodeList" style=\" height : 730px; overflow : auto; \">   </div>';


    
	  return content;
}//generateWMSList




//<!-- getCap---------------------------------------------------------->        
function getCap(proxy,url){

//alert("getCap");

  try
  {
   OpenLayers.Util.getElement('WMSnodeList').innerHTML = "loading WMS Capabilities...";
   this.request = OpenLayers.Request.GET({
       url: proxy + url,
       //failure                
       failure: function(response) {
           OpenLayers.Util.getElement('WMSnodeList').innerHTML = "error loading WMS Capabilities on <br>" +
                                                                       "<a href='" + url + "' target='_newWin'>" + url + "<br>" +
                                                                        response.responseText;
       },
       //success                  
       success: function(response) {
           var XMLformat = new OpenLayers.Format.XML();

           //we need to remove schema so IE will not validate...
           var newXML = "<?xml version='1.0' encoding='UTF-8'?>";
           var index = response.responseText.indexOf('<WMT_MS_Capabilities');
           newXML = newXML + response.responseText.substring(index);
           OpenLayers.Util.getElement('WMSnodeList').innerHTML = "parsing XML";

           xml = XMLformat.read(newXML);
           var CAPformat = new OpenLayers.Format.WMSCapabilities();

           /*NULL CHYBA*/capabilities = CAPformat.read(xml);
           if (capabilities == null) {
               statusBox.innerText = "error loading capabilities document";
               return;
           }

           var wmsBounds

           if (capabilities.capability.layers[0].bbox[projection]) {
               wmsBounds = new OpenLayers.Bounds(capabilities.capability.layers[0].bbox[projection].left,
                                                                   capabilities.capability.layers[0].bbox[projection].bottom,
                                                                   capabilities.capability.layers[0].bbox[projection].right,
                                                                   capabilities.capability.layers[0].bbox[projection].top);
           }
           else {
               wmsBounds = new OpenLayers.Bounds(12.09, 47.74, 22.56, 51.05);

           }
           //zoom to bounds of WMS only if there are no layers
           if (singleWMS) {
               wmsBounds.transform(projEPSG4326, map.getProjectionObject());
               map.zoomToExtent(wmsBounds);
               //display WMS bounding box rectangle                                                                   
               var boxes = new OpenLayers.Layer.Boxes("WMS box");

               var box = new OpenLayers.Marker.Box(wmsBounds);
               box.events.register("click", box, function(e) {
                   this.setBorder("yellow");
               });
               boxes.addMarker(box);
               map.addLayer(boxes);
               singleWMS = false; //do not zoom again
           }
           else {

               //get bounds of the map
               wmsBounds = map.calculateBounds();
               wmsBounds.transform(projEPSG900913, projEPSG4326);
           }

           


           //display list of layers
           var outputList = "";
           var legendUrl = "";



           for (layer in capabilities.capability.layers) {

               if (capabilities.capability.layers[layer].title != null && capabilities.capability.layers[layer].name != null) {
                   //build image URL
                   getMapUrl = capabilities.capability.requests.GetMap.GET +
                                              "REQUEST=GetMap&SERVICE=wms&VERSION=1.1.1&SRS=" + projection + "&WIDTH=256&HEIGHT=160&FORMAT=" +
                                              capabilities.capability.requests.GetMap.formats[0] + "&BBOX=" +
                                              wmsBounds.left + "," + wmsBounds.bottom + "," + wmsBounds.right + "," + wmsBounds.top +
                                              "&LAYERS=" + capabilities.capability.layers[layer].name;



                   var legendUrl = null;
                   if (
                                       (capabilities.capability.layers[layer].styles) &&
                                       (capabilities.capability.layers[layer].styles[0]) &&
                                       (capabilities.capability.layers[layer].styles[0].legend) &&
                                       (capabilities.capability.layers[layer].styles[0].legend.href)) {
                       legendUrl = capabilities.capability.layers[layer].styles[0].legend.href;

                   }

                   outputList += capabilities.capability.layers[layer].title + "<br>" +
                                                     capabilities.capability.layers[layer].queryable + "<br>" +
                                                 "<a href=\"javascript:addLayerToMap('" + capabilities.capability.requests.GetMap.GET + "','" + capabilities.capability.layers[layer].name + "','" + capabilities.capability.layers[layer].title + "','" + legendUrl + "','" + capabilities.capability.layers[layer].queryable + "' );\" ><br>" +
                                                 "<img id='" + capabilities.capability.layers[layer].name + "' src='" + getMapUrl + "'> </a><br>";


                   if (legendUrl != null)
                       outputList += '<img  src=' + legendUrl + ' style="max-width:360px;" > </a><br>';

                   outputList += "<hr style=\"width:100;\"/>";
               }
           }

           OpenLayers.Util.getElement('WMSnodeList').innerHTML = "<b>" + capabilities.service.title + "</b><br>" + outputList;

       }

   });

  }
  catch (e) { alert("getCap: " + e.message); } 
              
}//getcap









//default value of proxy server adress
var value = 'http://mapserver-slp.mendelu.cz/cgi-bin/mapserv?map=/var/local/slp/krtinyWMS.map&service=wms&request=GetCapabilities';
//<!-- addUrl---------------------------------------------------------->        
function addUrl() {
  try
  {
    
    var urlObj = OpenLayers.Util.getElement('txtInputWms');
    value = urlObj.value;
    getCap(proxy,value);

  }
  catch (e) { alert("addUrl: " + e.message); } 
}//addUrl






//<!-- updateThumbs---------------------------------------------------------->             
// define custom map event listeners
function updateThumbs(event) 
{
  try
  {
    var newExtent =  map.calculateBounds();
    
    //prepare square image
    bboxLeft = newExtent.left;
    bboxBottom = newExtent.bottom;
    bboxRight = newExtent.right;
    bboxTop = newExtent.top;
                              
    bboxWidth = bboxRight - bboxLeft;
    bboxHeight = bboxTop - bboxBottom;    
    
    toleranceRatio = 1.1;
    
    //require square image - check        
    if (bboxWidth*toleranceRatio < bboxHeight)
    {
      bboxTop = bboxBottom + bboxHeight/2 + bboxWidth/2;
      bboxBottom = bboxBottom + bboxHeight/2 - bboxWidth/2;
      bboxHeight = bboxTop - bboxBottom;                
    }
    
    if (bboxWidth/toleranceRatio > bboxHeight)
    {
      bboxRight = bboxLeft + bboxWidth/2 + bboxHeight/2;
      bboxLeft = bboxLeft + bboxWidth/2 - bboxHeight/2;
      bboxWidth = bboxRight - bboxLeft;
    }    
    
    newExtent.left = bboxLeft; 
    newExtent.right = bboxRight;
    newExtent.bottom = bboxBottom;
    newExtent.top = bboxTop;

    newExtent.transform( projEPSG900913,projEPSG4326);
                                                                    
     if ((capabilities) &&(newExtent)) {
            for ( layer in capabilities.capability.layers){
               imageElement = document.getElementById(capabilities.capability.layers[layer].name);
               if (imageElement){                                                                                                                                                                       
                 newImageUrl = capabilities.capability.requests.GetMap.GET + 
                             "REQUEST=GetMap&SERVICE=wms&VERSION=1.1.1&SRS="+projection+"&WIDTH=256&HEIGHT=256&FORMAT=" +
                             capabilities.capability.requests.GetMap.formats[0] + "&BBOX=" +
                             newExtent.left+"," + newExtent.bottom + ","+ newExtent.right+"," +newExtent.top + 
                             "&LAYERS=" + capabilities.capability.layers[layer].name;  
                imageElement.src =  newImageUrl;
                } //if imageElement
           }//for
       } //if capabilities and extent
        
  }
  catch (e) { alert("updateThumbs: " + e.message); } 
  
} //updateThumbs


// adds all WMS layers to map
function AddAll() {
    if (capabilities) {

        for (layer in capabilities.capability.layers) {
            
            var legendUrl = null;
            if ((capabilities.capability.layers[layer].styles) &&
                (capabilities.capability.layers[layer].styles[0]) &&
                (capabilities.capability.layers[layer].styles[0].legend) &&
                (capabilities.capability.layers[layer].styles[0].legend.href)) {
                 legendUrl = capabilities.capability.layers[layer].styles[0].legend.href;
            }
                                   
            addLayerToMap(capabilities.capability.requests.GetMap.GET, capabilities.capability.layers[layer].name, capabilities.capability.layers[layer].title, legendUrl);
            
        } //for
    } //if capabi
}


//<!-- array of WMS server---database of WMS servers--------------------------> 
var WMSList = new Array (

//"adresa WMS severu",
//"nazev WMS severu",

"http://mapserver-slp.mendelu.cz/cgi-bin/mapserv?map=/var/local/slp/krtinyWMS.map&service=wms&request=GetCapabilities",
"ŠLP Křtiny",

"http://geoportal2.uhul.cz/cgi-bin/oprl.asp?SERVICE=WMS&request=GetCapabilities",
"OPRL",

"http://wms.cuzk.cz/wms.asp?service=WMS&request=GetCapabilities",
"Katastr",

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_biorez?service=wms&version=1.1.1&request=GetCapabilities",
"Biosférické rezervace UNESCO",

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_fytogeo?service=wms&version=1.1.1&request=GetCapabilities",
"Fytogeografické členění",

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_geocr?service=wms&version=1.1.1&request=GetCapabilities",
"Geologická mapa ČR",

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_geomorf?service=wms&version=1.1.1&request=GetCapabilities",
"Geomorfologická mapa ČR", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_hluk_pbol?service=wms&version=1.1.1&request=GetCapabilities",
"Hluková mapa Prahy, Brna, Ostravy a letiště Ruzyně", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_hluk_silnice?service=wms&version=1.1.1&request=GetCapabilities",
"Hluková mapa silnic", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_hluk_zeleznice?service=wms&version=1.1.1&request=GetCapabilities",
"Hluková mapa železnic", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_hust_zalid?service=wms&version=1.1.1&request=GetCapabilities",
"Hustota zalidnění", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_chlucr?service=wms&version=1.1.1&request=GetCapabilities",
"Chráněná ložisková území", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_chopav?service=wms&version=1.1.1&request=GetCapabilities",
"Chráněné oblasti přirozené akumulace vod", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_krajina?service=wms&version=1.1.1&request=GetCapabilities",
"Typologie české krajiny", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_natura?service=wms&version=1.1.1&request=GetCapabilities",
"NATURA 2000", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_obyv_byt?service=wms&version=1.1.1&request=GetCapabilities",
"Počet obyvatel na 1 byt", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_ppv?service=wms&version=1.1.1&request=GetCapabilities",
"Potenciální přirozená vegetace", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_prparky?service=wms&version=1.1.1&request=GetCapabilities",
"Přírodní parky", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_sez?service=wms&version=1.1.1&request=GetCapabilities",
"Kontaminovaná místa", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_uat_aktual?service=wms&version=1.1.1&request=GetCapabilities",
"Fragmentace krajiny dopravou, polygony UAT, aktuální", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_uses?service=wms&version=1.1.1&request=GetCapabilities",
"Územní systémy ekologické stability", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_zchu?service=wms&version=1.1.1&request=GetCapabilities",
"Zvláště chráněná území - NP, CHKO, NPR, NPP, PR, PP", 

"http://geoportal.cenia.cz/wmsconnector/com.esri.wms.Esrimap/cenia_zchu_zony?service=wms&version=1.1.1&request=GetCapabilities",
"Zonace NP a CHKO"

);
