var mapload = false;
var skatIDglob = null;
var recordIDglob = null;

// ajaxove okno
function as4uMapShow(recordID, skatID){
  if(recordID == undefined){
    recordID = null;
  } else if(skatID > 0){
    recordIDglob = recordID;
    skatIDglob = skatID;
  }
  

  jQuery('div.stranka').css('display', 'none');

  document.getElementById('map_transparent').style.display = '';
  document.getElementById('map_view').style.display = '';
  as4uMapShowSize(3000, 2000);

  if(mapload == false){
    initOptions("as4u_map", recordID, "", afterSearch);

    jQuery('#as4u_map_controls').load('/redakce/ajax.php?akce=map&subakce=loadcontrols&htmlAjax=yes', function() {
      profiMapy.obecneZalozky('zalozky');
    });


  } else {
    if(recordID != null){
      HSLayers.Apps.MapPortal.Rincon.ShowObject.showObjectInMapById(recordID);
    }
  }

}

function afterSearch(){
  if(recordIDglob > 0 && skatIDglob > 0){
    for (var i = 0; i < 1000; i++) {
      if(jQuery('#c'+i).length > 0){
        var skatVal = jQuery('#c'+i).val().split("-");
        if(skatVal[1] == skatIDglob){
          jQuery('#c'+i).attr('checked', true);
          jQuery('#ul'+skatVal[0]).css('display', '');
          changeCategory(i, 's');
          break;
        }
      } else {
        break;
      }
    }
  }
}



function treeChange(idTree){
  if(document.getElementById('ul' + idTree).style.display == "none"){
    document.getElementById('ul' + idTree).style.display = "";
    document.getElementById('a' + idTree).innerHTML = '<img src="http://www.liberecky-kraj.cz/galerie/obrazky/image.php?img=119976&x=14&y=9" width="14px" height="9px" style="border:0; vertical-align:middle;" />';
  } else {
    document.getElementById('ul' + idTree).style.display = "none";
    document.getElementById('a' + idTree).innerHTML = '<img src="http://www.liberecky-kraj.cz/galerie/obrazky/image.php?img=119977&x=14&y=9" width="14px" height="9px" style="border:0; vertical-align:middle;" />';
  }
}

var oldVrstva = 0;
function changeLayer(vrstva){
  if(oldVrstva > 0){
    jQuery('#mapmenu_' + oldVrstva).css("font-weight", "normal");
  }
  jQuery('#mapmenu_' + vrstva).css("font-weight", "bold");

  HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleSkat([{layerName:"poi",skat:vrstva}], true);
  oldVrstva = vrstva;
}


function changeCategory(idCat, typ, subId){
  var icosrcLen, icosrcArr;
  if(typ == 'h'){
    if(document.getElementById('c' + idCat).checked == true){
      var toChangeArr = subId.split(",");
      for(var i=0;i<=toChangeArr.length;i++){
        if(document.getElementById('c' + toChangeArr[i])){
          document.getElementById('c' + toChangeArr[i]).checked = true;
          icosrcArr = document.getElementById('cimg' + toChangeArr[i]).src.split("/");
          icosrcLen = icosrcArr.length - 1;
          document.getElementById('cimg' + toChangeArr[i]).src = 'http://www.liberecky-kraj.cz/redakce/rs/liberecky_kraj/mapico/' + icosrcArr[icosrcLen];
        }
      }
    } else {
      var toChangeArr = subId.split(",");
      for(var i=0;i<=toChangeArr.length;i++){
        if(document.getElementById('c' + toChangeArr[i])){
          document.getElementById('c' + toChangeArr[i]).checked = false;
          icosrcArr = document.getElementById('cimg' + toChangeArr[i]).src.split("/");
          icosrcLen = icosrcArr.length - 1;
          document.getElementById('cimg' + toChangeArr[i]).src = 'http://www.liberecky-kraj.cz/redakce/rs/liberecky_kraj/mapico_na/' + icosrcArr[icosrcLen];
        }
      }
    }
  } else if (typ == 's'){
    if(document.getElementById('c' + idCat).checked == false){
      document.getElementById('c' + subId).checked = false;
    }
    if(document.getElementById('c' + idCat).checked == true){
      icosrcArr = document.getElementById('cimg' + idCat).src.split("/");
      icosrcLen = icosrcArr.length - 1;
      document.getElementById('cimg' + idCat).src = 'http://www.liberecky-kraj.cz/redakce/rs/liberecky_kraj/mapico/' + icosrcArr[icosrcLen];
    } else {
      icosrcArr = document.getElementById('cimg' + idCat).src.split("/");
      icosrcLen = icosrcArr.length - 1;
      document.getElementById('cimg' + idCat).src = 'http://www.liberecky-kraj.cz/redakce/rs/liberecky_kraj/mapico_na/' + icosrcArr[icosrcLen];
    }

  }

  var layerShow = "";
  var mezera = "";
  var hodnotaArr;
  for(var i=0;i<=1000;i++){
    if(document.getElementById('c' + i)){
      if(document.getElementById('c' + i).checked == true){
        hodnotaArr = document.getElementById('c' + i).value.split("-");
        if(hodnotaArr[1] > 0){
          layerShow += mezera + hodnotaArr[1];
          mezera = ",";
        }
      }
    } else {
      break;
    }
  }
  if(layerShow == ""){
    HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleSkat([{layerName:"poi",skat:"-1"}], true);
  } else {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleSkat([{layerName:"poi",skat:layerShow}], true);
  }


}




function as4uMapShowSize(aaWidth, aaHeight){
  aaWidth = aaWidth * 1;
  aaHeight = aaHeight * 1;

  aaWidthOriginal = aaWidth;
  aaHeightOriginal = aaHeight;

  if(document.getElementById('map_transparent').style.display != 'none'){

  	if (window.innerHeight){
      wSizeH = window.innerHeight;
      wSizeW = window.innerWidth;
  	} else if (document.documentElement && document.documentElement.clientHeight){
  		wSizeH = document.documentElement.clientHeight;
  		wSizeW = document.documentElement.clientWidth;
  	} else if (document.body && document.body.clientHeight){
  		wSizeH = document.body.clientHeight;
  		wSizeW = document.body.clientWidth;
    }

    if(!jQuery.browser.msie){
      wSizeW = wSizeW - 20;
    }


    if(aaHeight > wSizeH){
      aaHeight = wSizeH - 40;
      aaWidth = aaWidth + 20;
    }

    if(aaWidth > wSizeW){
      aaWidth = wSizeW - 20;
    }




    if(wSizeH == 0){
    } else {
      document.getElementById('map_transparent').style.height = wSizeH + 'px';
      document.getElementById('map_transparent').style.width = wSizeW + 'px';

      ajaxSizeObH = (aaHeight * 1) + 20;
      ajaxSizeObW = (aaWidth * 1);

      document.getElementById('map_view').style.height = ajaxSizeObH + 'px';
      document.getElementById('map_view').style.width = ajaxSizeObW + 'px';
      document.getElementById('map_view_close').style.width = ajaxSizeObW + 'px';

      ajaxSizeH = ajaxSizeObH - 20;
      ajaxSizeW = ajaxSizeObW;
      
      document.getElementById('as4u_map_controls').style.height = ajaxSizeH + 'px';

      document.getElementById('as4u_map').style.height = ajaxSizeH + 'px';
      document.getElementById('as4u_map').style.width = (ajaxSizeW - 300) + 'px';

      posAjaxH = ((wSizeH - ajaxSizeObH) / 2);
      posAjaxW = ((wSizeW - ajaxSizeW) / 2);

      if (document.documentElement && document.documentElement.scrollTop) {
        winScroll = document.documentElement.scrollTop;
      } else if (document.body) {
        winScroll = document.body.scrollTop;
      } else {
        winScroll = 0;
      }

      document.getElementById('map_transparent').style.top = (winScroll) + 'px';

      document.getElementById('map_view').style.top = (winScroll + posAjaxH) + 'px';
      document.getElementById('map_view').style.left = (posAjaxW) + 'px';

      setTimeout('as4uMapShowSize(' + aaWidthOriginal + ', ' + aaHeightOriginal + ')', 100);

    }

  }
}

function as4uMapClose(){

  document.getElementById('map_transparent').style.display = 'none';
  document.getElementById('map_view').style.display = 'none';
  
  jQuery('div.stranka').css('display', '');

}





/***************************************************************************
 * Upozorneni :
 * Definice metody "MapAppLoader.onStartApplication" a zavolani metody
 * "MapAppLoader.load()" musi byt provedeno ihned na zacatku !
 **************************************************************************/

/***************************************************************************
 * Inicializace vstupni funkce pro spusteni aplikace. Tato funkce je
 * zavolana az po uplnem nacteni a inicializaci mapove knihovny
 **************************************************************************/
MapAppLoader.onStartApplication = function() {
    startApplication();
};

/***************************************************************************
 * Nahrati mapove knihovny se provede volanim metody "MapAppLoader.load()",
 * ktere lze predat objekt s parametry ovlivnujici chovani knihovny a
 * jednotlive dostupne funkce.
 *   Lze definovat nasledujici parametry :
 *     debug: true   - knihovna nahrava debug verze vsech skriptu, vhodne
 *                     pouze pro ladeni (nejsou minimalizovane, obsahuji
 *                     komentare a ladici informace)
 *                   - implicitni hodnota je false
 *
 *     uiLibrary: "" - definuje framework ktery je pouzity pro generovani UI
 *                   - prazdny retezec znamena "zadny", je pouzito pouze hole HTML
 *                   - dalsi moznosti je "ExtJS" (toto je implicitni hodnota)
 *
 *     proxy: ""     - URL adresa proxy skriptu na serveru ktery hostuje aplikaci, kvuli
 *                     zabezpeceni JavaScriptu, ktery nedovoluje nahravat data z jine domeny.
 *                     Kdykoliv mapova knihovna potrebuje nacitat data z jineho serveru,
 *                     vezme tuto URL, prida k ni pozadovane URL a pote z vysledne URL nacte data
 *                     Pro stranky infosumperk, na kterych integraci testujme, bude mit
 *                     nasledujici hodnotu :
 *                       proxy: "http://www.infosumperk.cz/mapy/proxy.php?url=",
 *
 *     scripts: []   - pole obsahujici scripty, ktere je nutne nahrat az po
 *                     nahrati knihovny. V tomto pripade obsahuje referenci na
 *                     soubor "mapportal.js", ktery obsahuje kod pro snadnejsi
 *                     integraci mapove funkcionality do aplikaci. V pripade
 *                     pozadavku na ladeni lze pouzit referenci na soubor
 *                     "mapportal-debug.js"
 **************************************************************************/
MapAppLoader.load({
    proxy: "http://" + location.hostname + "/mapy/proxy.php?url=",
    uiLibrary: "",
    scripts: [
        "http://apps.hfbiz.cz/glog/Glog/MapPortal/www/mapportal-core.js"
    ],
    styles: [
        "http://apps.hfbiz.cz/glog/Glog/MapPortal/www/mapportal.css"
    ],
    debug: false
});

/***************************************************************************
 * Callback funkce, ktera je vyvolana po pridani uzlu trasy z mapy
 **************************************************************************/
function addNodeFromMap(node, type) {
    switch (type) {
        case 1:
            //HSLayers.Apps.Utility.getElement("fromText").value = node.x + " " + node.y;
            break;
        case 3:
            //HSLayers.Apps.Utility.getElement("toText").value = node.x + " " + node.y;
            break;
    }
};

/***************************************************************************
 * Callback funkce, ktera je vyvolana po zobrazeni kompletni mapy
 **************************************************************************/
function afterLoad() {
  mapload = true;
//    console.log("After load");
    jQuery('#as4u_map').css('background-image', '');
    HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleLayer("poi", true);
};

/***************************************************************************
 * Vymaze vyhledanou trasu v mape
 **************************************************************************/
function clearPath() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingClearPath();
};

/***************************************************************************
 * Vykresli a zvyrazni jednotlive useky trasy podle vyberu instrukce
 * v itinerari
 **************************************************************************/
function drawSelectedRouteInstruction() {
    var selectElement = HSLayers.Apps.Utility.getElement("itinerary");

    for (var i = 0; i < selectElement.length; i++) {
        var route = selectElement.options[i].value.split(",");
        var selected = selectElement.options[i].selected;
        var zoom = selected ? true : false;
        HSLayers.Apps.MapPortal.Rincon.ShowObject.routingDrawRouteFeatures(
            route, selected, zoom
        );
    }
};

/***************************************************************************
 * Vyhleda cerpaci stanice kolem vyhledane trasy
 * Varianta 1
 * - kompletne v rezii knihovny
 **************************************************************************/
function findGasStation1() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingFindObjectsNearOfRoute(200, null);
};

/***************************************************************************
 * Vyhleda cerpaci stanice kolem vyhledane trasy
 * Varianta 2
 * - objekty se vyhledaji pomoci primeho volani sluzby pres URL
 * - zobrazeni objektu v mape je pres knihovnu
 **************************************************************************/
function findGasStation2() {
    var param = HSLayers.Apps.MapPortal.Rincon.ShowObject.getRoutingModule().getCore().getParamForFindObjectsNearOfRoute(200, null);
    var url =
        'http://apps.hfbiz.cz/glog/Glog/entry.php?class=MapPortal.Rincon.RinconGeoSearchObjects&project=Rincon.Machovsky_Poi&' +
        'operation=buffer&';

    OpenLayers.Request.POST({
        url: url,
        data: param,
        success: function(request) {
            var json = new OpenLayers.Format.JSON();
            var objects = json.read(request.responseText);
            var objects = filterGasStation(objects.objects);
            showGasStationObjects(objects);
        }
    });
};

/***************************************************************************
 * Zde je mozne proves filtrovani nalezenych objektu (cerpacich stanic)
 **************************************************************************/
function filterGasStation(objects) {
    var filteredObjects = [];
    for (var i = 0; i < objects.length; i++) {
        /*
        if (someTest) {
            filteredObjects.push(objects[i]);
        }
        */
        filteredObjects.push(objects[i]);
    }
    return filteredObjects;
};

/***************************************************************************
 * Vyhleda trasu mezi zadanymi body.
 * Varianta 1
 * - kompletne v rezii knihovny
 **************************************************************************/
function findPath1() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingFindPath(
        [getFromText(), getToText()]
    );
};

/***************************************************************************
 * Vyhleda trasu mezi zadanymi body.
 * Varianta 2
 * - trasa se vyhleda pomoci primeho volani sluzby pres URL
 * - zobrazeni trasy v mape je pres knihovnu
 **************************************************************************/
function findPath2() {
    var routeType = getRouteType();
    var generateItinerary = getGenerateItinerary();
    var points =
        '"' + getFromText() + '",' +
        '"' + getToText() + '"';
    var url =
        'http://apps.hfbiz.cz/glog/Glog/entry.php?class=MapPortal.Routing.Routing&project=RinconRouting&' +
        'params={"operation":"findPath",' +
        '"routeType":"' + routeType + '",' +
        '"generateInfo":' + generateItinerary + ',' +
        '"points":[' + points + ']}';
    var routeData = HSLayers.Apps.Utility.loadURLSync(url);
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingShowRouteData(routeData);

};

/***************************************************************************
 * Vyhleda cyklotrasu podle nazvu (cisla)
 * Varianta 2
 * - trasa se vyhleda pomoci primeho volani sluzby pres URL
 * - zobrazeni trasy v mape je pres knihovnu
 **************************************************************************/
function findPathCyklo2() {
    var routeType = "bicycle_cyklo";
    var generateItinerary = getGenerateItinerary();
    var name = getCykloName();
    var url =
        'http://apps.hfbiz.cz/glog/Glog/entry.php?class=MapPortal.Routing.Routing&project=RinconRouting&' +
        'params={"operation":"findPathByName",' +
        '"routeType":"' + routeType + '",' +
        '"generateInfo":' + generateItinerary + ',' +
        '"type":30,' +
        '"name":"' + name + '"}';
    var routeData = HSLayers.Apps.Utility.loadURLSync(url);
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingShowRouteData(routeData);

};

/***************************************************************************
 * Callback funkce, ktera je vyvolana po vyhledani trasy
 **************************************************************************/
function findRouteCallback(route) {
    var selectElement = HSLayers.Apps.Utility.getElement("itinerary");
/*
    while (selectElement.length > 0) {
        selectElement.options[0] = null;
    }
    if (route) {
        if (route.info) {
            if (route.info.itinerary) {
                for (var i = 0; i < route.info.itinerary.length; i++) {
                    var item = route.info.itinerary[i];
                    selectElement.options[selectElement.length] = new Option(
                        item.instruction + ", " + item.length + "m, " + item.name,
                        item.road
                    );
                }
            }
        }
        if (HSLayers.Apps.Utility.getElement("chkboxFindGasStation").checked) {
            findGasStation2();
        }
    }
*/
};

/***************************************************************************
 * Vrati nazev vyhledavane cyklotrasy
 **************************************************************************/
function getCykloName() {
    return HSLayers.Apps.Utility.getElement("cykloName").value;
};

/***************************************************************************
 * Vrati zadane startovni misto
 **************************************************************************/
function getFromText() {
    return HSLayers.Apps.Utility.getElement("fromText").value;
};


/***************************************************************************
 * Vrati jestli se ma generovat ininerar
 **************************************************************************/
function getGenerateItinerary() {
    return HSLayers.Apps.Utility.getElement("chkboxGenerateItinerary").checked;
};

/***************************************************************************
 * Vrati zadane cilove misto
 **************************************************************************/
function getToText() {
    return HSLayers.Apps.Utility.getElement("toText").value;
};

/***************************************************************************
 * Vrati typ vyhledavane trasy
 **************************************************************************/
function getRouteType() {
    return HSLayers.Apps.Utility.getElement("routeType").value;
};

/***************************************************************************
 * Callback funkce, ktera je vyvolana pri pozadavku na zobrzeni informaci
 * (bublina) o vyhledanem objektu. Identifikaci objektu lze provest pomoci
 * atributu "dataObject.objectId", ktery odpovida polozce "recordId" z
 * tabulky "zaznamy"
 *
 * Funkce ma nasledujici parametry :
 * - dataObject - informace o objektu, pro ktery se maji zobrazit informace
 *
 * Funkce vrati retezec (HTML kod), ktery bude zobrazen v "bubline".
 * Jestlize funkce vrati prazdny retezec, bude vygenerovana implicitni informace
 * o objektu podle jeho typu.
 * Jestlize funkce vrati retezec "_NO_", nebude bublina zobrazena.
 *
 * "Napojeni" teto funkce na mapovou knihovnu se provadi ve funkci
 *  initialize().
 **************************************************************************/
function getPopupContent(dataObject) {
    var content = "";
    if (dataObject != null) {
        if (dataObject.objectId != "") {
            content = '<div id="mapbuble" style="width: 300px; height: 180px; overflow: auto;">Načítám data...</div>';
            loadData2Buble(dataObject.objectId);
        }
    }
    return content;
};

function loadData2Buble(recordID){
  if(document.getElementById('mapbuble')){
    jQuery('#mapbuble').load('/redakce/ajax.php?akce=map&subakce=mapbuble&htmlAjax=yes&dr='+recordID);
  } else {
    setTimeout(function(){loadData2Buble(recordID)}, 50);
  }
}



/***************************************************************************
 * Po nacteni dokumentu je nutne zavolat metodu "MapAppLoader.afterDocLoaded"
 **************************************************************************/
function onLoad() {
    MapAppLoader.afterDocLoaded();
};

/***************************************************************************
 * Nastaveni jestli se ma generovat itinerar pro vyhledanou trasu
 **************************************************************************/
function setGenerateItinerary() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingSetGenerateItinerary(
        getGenerateItinerary()
    );
};

/***************************************************************************
 * Nastaveni typu vyhledavane trasy
 **************************************************************************/
function setRouteType() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.routingSetRouteType(
        getRouteType()
    );
};

/***************************************************************************
 * Nastavi zoom level v mape
 **************************************************************************/
function setZoom() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.zoomTo(
        HSLayers.Apps.Utility.getElement("zoom").value
    );
};

/***************************************************************************
 * Zobrazi vrstvu s cerpacimi stanicemi
 **************************************************************************/
function showGasStationLayer() {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleLayer(
        "poi_gas_station", true
    );
};

/***************************************************************************
 * Zobrazi cerpacimi stanice
 **************************************************************************/
function showGasStationObjects(objects) {
    HSLayers.Apps.MapPortal.Rincon.ShowObject.clearLocations();
    var gasStations = [];
    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];
        var gasStation = {
            x: obj.x,
            y: obj.y,
            name: obj.name,
            info: obj.info
        };
        gasStations.push(gasStation);
    }
    HSLayers.Apps.MapPortal.Rincon.ShowObject.addLocations(gasStations, false, true);
};

/***************************************************************************
 * Funkce provede inicializaci parametru mapove knihovny, a nasledne provede
 * zobrazeni mapoveho okna a vyhledani pozadovaneho objektu.
 **************************************************************************/
function startApplication() {

}

//function initOptions(mapDivId, showObjectInMap, defaultControl, afterSearchFunc, zoomChangeFunc, getPopupContentFunc) {
function initOptions(mapDivId, showObjectInMap, defaultControl, afterSearchFunc) {
  /*if (!getPopupContentFunc) {
    getPopupContentFunc = getPopupContent;
  }*/
  HSLayers.Apps.MapPortal.Rincon.ShowObject.initOptions({

        afterLoad: afterLoad,
        
        afterSearch: afterSearchFunc,

        // zakladni URL pro volani funkcionality implementovane na serverove strane
        // !!! NEMENIT !!!
        baseUrl: "http://apps.hfbiz.cz/glog/glog",

        // id HTML elementu (DIV), do ktereho bude vygenerovane mapove okno
        containerId: mapDivId,

        // nastaveni viditelnosti nastrojove listy v mape
        controlPanelVisible: true,

        // nastroj, ktery je implicitne zapnuty :
        //   "info"                     - zapne nastroj info
        //   "" , nebo nezadana hodnota - zapne nastroj "navigation" (pohyb
        //                                v mape - pan, zoom)
        defaultControl: "",

        // cesta k obrazkum, ktere nahrava mapova knihovna
        // !!! NEMENIT !!!
        imgPath: "http://apps.hfbiz.cz/glog/JavaScript/hslayers/trunk/img/",

        // callback funkce, ktera se zavola pri zobrazeni informacni bubliny
        getPopupContent: getPopupContent,

        // nazev projektu na serveru, ktery obsahuje definici prislusnych dat
        // !!! NEMENIT !!!
        projectName: "Rincon.CeskyRaj",
        
        // povoli pouzivat modul Routing
        routing: true,

        // callback funkce pro modul Routing
        routingCallback: {
            addNode: addNodeFromMap,
            removeNode: function() {
                //console.log("remove node");
                //console.log(arguments);
            },
            findRoute: findRouteCallback,
            scope: null
        },

        // urcuje jestli budou zobrazeny vsechny objektu (POI) v mape, nebo
        // pouze pozadovany objekt (false - pouze pozadovany, true - vsechny
        // objekty)
        showObjectsInMap: true
    });

    // vyhledani objektu a zazoomovani na nej. Predava se ID pozadovaneho
    // objektu (takze v realne aplikaci se bude generovat). Jako parameter lze
    // zadat jednu z nasledujicich moznosti :
    // - jedno ID jako cislo
    // - jedno ID jako retezec
    // - vice ID oddelenych mezerou jako retezec
    // - null - neni vyhledano nic, pokud je zadany zoomLevel, provede se zoom
    //
    // Dalsi volitelny parametr je pole se seznamem SKATID pro jednotlive vrstvy s POI
    // a zoomLevel (platne jen pokud je parametr id=null)
    HSLayers.Apps.MapPortal.Rincon.ShowObject.showMap(
        showObjectInMap, [{layerName:"poi",skat:"-1"}], null
    );
};


// cesky raj

function sugestInit(id) {
  jQuery("#"+id).autocomplete('/redakce/ajax.php?akce=map&subakce=sugest&htmlAjax=yes', {
    width: 200,
		max: 100,
		matchSubset: false,
		scroll: true,
		scrollHeight: 300,
		selectFirst: false
	}).result(function(event, item) {
	   log(item[3]);
      if (item[3] == 'bod') {
        jQuery('#'+id+'JTSK').val(item[1]+'%20'+item[2]);
        wgs2jtsk(id+'JTSK');
      } else if (item[3] == 'adresa') {
        jQuery('#'+id+'JTSK').val('toGps');
      }
  });

/*
$('#search_adres').keyup(function(event) {
  if (event.keyCode == 13) {
    profiMapy.findAddress1();
  }
});
*/

}



function wgs2jtsk(inElm){
  
  jQuery.get('/redakce/ajax.php?akce=map&subakce=wgs2jtsk&htmlAjax=yes&wgs='+ jQuery('#'+inElm).val(),
    function(data){
      jQuery('#'+inElm).val(data);
	  }, "html");
}


/** ************************ ProfiMapy class  ********************
 *
 */

function ProfiMapy() {
  this.key = 'f0670683d61c232fdac9ddf13833bf48';
  this.multiSelectCount = 0;
  this.wayPointID = 0;
}


var profiMapy = new ProfiMapy();

//pridat prujezdni bod
ProfiMapy.prototype.addWaypoint = function() {

  $('#prujezdniBody').css('display', '');

  $('<div class="multiPointsCont">' +
      '<input type="text" value="" class="prujezdniBod pointInput" id="wayPointInput_' + this.wayPointID + '" onfocus="sugestInit(this.id)" />' +
      '<input type="hidden" id="wayPointInput_' + this.wayPointID + 'JTSK" />' +
    '</div>').appendTo($('#prujezdniBodyCont'));

  $('#prujezdniBodyCont > .multiPointsCont').each(function() {
    var el = $(this).children('a');
    if (el.length == 0) {
      $('<a href="javascript:void(0);" onclick="profiMapy.removeWaypoint(this);">X</a>').appendTo($(this));
    }
  });
  
  this.wayPointID ++ ;
};

ProfiMapy.prototype.removeWaypoint = function(link) {
  $(link.parentNode).detach();
  try {
    var wps = $('#prujezdniBodyCont > .multiPointsCont');
    if (wps.length == 0) {
      $('#prujezdniBody').css('display', 'none');
    }
  } catch(e) {}
};

ProfiMapy.prototype.setBackground = function(backgroundId) {

  HSLayers.Apps.MapPortal.Rincon.ShowObject.setBackgroundLayer(backgroundId);
  var backgoundLayerId = backgroundId;

};

ProfiMapy.prototype.setVisibleLayer = function(layerName, id) {
  
  HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleLayer(layerName,jQuery('#'+ layerName).is(':checked'));
  
  /*
  HSLayers.Apps.MapPortal.Rincon.ShowObject.setVisibleSkat(
      [{layerName:layerName,skat: id}],
      true
  );
  */
};

ProfiMapy.prototype.getRouteType = function() {
  return HSLayers.Apps.Utility.getElement("routeType").value;
};

ProfiMapy.prototype.convertNumber = function(number, div, rnd) {
  var num = parseInt(number) / parseInt(div);
  if (rnd) {
    var rndCoef = '1';
    for (var j = 1; j <= rnd; j++) {
      rndCoef += '0';
    }
    num = Math.round(num*rndCoef)/rndCoef;
  }
  num = num + '';
  num = num.replace(".", ",");

  if (num > 999) {
    var parts = num.split(",");
    var fullPart;
    for (var i=3; i < parts[0].length; i += 3) {
      fullPart =  parts[0].substr(parts[0].length-i,3) + ' ' + fullPart;
    }
    num = fullPart + (parts[1] ?  ',' + parts[1] : '');
  }
  return num;
};

/** find route
 *
 */
ProfiMapy.prototype.findPath = function() {
    $('#routeButton').addClass('loading');
    $('#routeButton').attr('disabled','true');
    var routeType = this.getRouteType();
    var generateItinerary = this.getGenerateItinerary();
    //var generateItinerary = false;
    var fromGPS = jQuery('#routeFromJTSK').val();
    if (fromGPS == 'toGps') {
      fromGPS = this.getPointFromText('routeFrom'); 
    }
    var waypoints = this.getWaypoints();    
    var toGPS = jQuery('#routeToJTSK').val();
    if (toGPS == 'toGps') {
      toGPS = this.getPointFromText('routeTo'); 
    }
    


    //if (toGPS && fromGPS && waypoints !== false) {
    if (toGPS && fromGPS && waypoints !== false) {
      var points =
          '"' + fromGPS + '",' + waypoints +
          '"' + toGPS + '"';
      
      var url =
          'http://apps.hfbiz.cz/glog/Glog/entry.php?class=MapPortal.Routing.Routing&project=RinconRouting&' +
          'params={"operation":"findPath",' +
          '"routeType":"' + routeType + '",' +
          '"generateInfo":' + true + ',' + //ziskat info za kazdou cenu
          '"points":[' + points + ']}';
      var routeData = HSLayers.Apps.Utility.loadURLSync(url);

      //show route info
      var routeDataObject = jQuery.parseJSON(routeData);
      $('#routeInfo').html('<p>Délka trasy: ' + this.convertNumber(routeDataObject.info.length, '1000') + ' km </p>');

      if (generateItinerary) {

        //zobrazit profikovu plachtu
        try {
          //this.getSWF('profik').showSheet();
        } catch (e) {}

        $("#itineraryCont").css('display','');

        this.showItinerary(routeDataObject);
      } else {
        //this.hideItinerary();
        try {

        } catch(e) {}


      }

      HSLayers.Apps.MapPortal.Rincon.ShowObject.routingShowRouteData(routeData);


      // find gas stations at distance 200 meters from route
      //this.findGasStation(200);
/*
      //add point
      var pointsParam = [];

      //HSLayers.Apps.MapPortal.Rincon.DataStore.deleteObject($("objectid").value);
      var points = HSLayers.Apps.MapPortal.Rincon.ShowObject.addPoints(pointsParam);

      if (this.points) {
        //TODO smazani objektu (ikony)!
      } else {
          var fromCoords = fromGPS.split(' ');
          var toCoords = toGPS.split(' ');

          if (routeType == "bicycle") {
            pointsParam.push({
              coordX: fromCoords[0],
              coordY: fromCoords[1],
              iconUrl: "http://" + location.hostname + '/redakce/rs/cesky_raj/mapico/bycicle.png',
              iconWidth: 48,
              iconHeight: 48,
              popupContent: 'Start'
            });
          } else if (routeType == "pedestrian" || routeType == "pedestrian_turistic") {
            pointsParam.push({
              coordX: fromCoords[0],
              coordY: fromCoords[1],
              iconUrl: "http://" + location.hostname + '/redakce/rs/cesky_raj/mapico/walking.gif',
              iconWidth: 50,
              iconHeight: 39,
              popupContent: 'Start'
            });
          } else {
            pointsParam.push({
              coordX: fromCoords[0],
              coordY: fromCoords[1],
              iconUrl: "http://" + location.hostname + '/redakce/rs/cesky_raj/mapico/car1.png',
              iconWidth: 38,
              iconHeight: 50,
              popupContent: 'Start'
            });
          }

          pointsParam.push({
            coordX: toCoords[0],
            coordY: toCoords[1],
            iconUrl: "http://" + location.hostname + '/redakce/rs/cesky_raj/mapico/finish_flag.png',
            iconWidth: 41,
            iconHeight: 49,
            popupContent: 'Cíl'
          });

          //this.addPoint(pointsParam);
      }
*/
      //this.showPoint(fromCoords[0],fromCoords[1],'Start', 'Start');

    }
    $('#routeButton').removeClass('loading');
    $('#routeButton').removeAttr('disabled');
};

//return all waypoints - positions 
ProfiMapy.prototype.getWaypoints = function() {
  var waypoints = '';
  var toto = this;
  var findall = true;
  //var inputs = document.getElementsByClassName('prujezdniBod');
  
  //for(var id = 0; id < inputs.length; id++)  {
  $('.prujezdniBod').each(function(){ 
    //var input = $(inputs[id]);
    var input = $(this);    
    var text = input.val().replace(","," ");     
    //input.css('border','1px solid red');
    input.addClass('loading');
    input.attr('disabled','true');
    var id = input.attr('id');
    var jtsk = $('#'+id+'JTSK').val();
    
    
    if (input.attr('rel')) {
      waypoints = waypoints + '"' + input.attr('rel') + '", ';   
    } else {     
      if (text) {
        if (jtsk != 'toGps') {
          if (jtsk) {
            var souradnice = jtsk;
            input.attr("rel",souradnice); 
            input.keyup(function(){
              $(this).attr("rel",'');  
            });
            waypoints = waypoints + '"' + souradnice + '", ';            
          } else {
            alert('Průjezdní bod nenalezen');
          } 
        } else {
          var url = "http://apps.hfbiz.cz/glog/Glog/entry.php?class=Address.Search&key=" + toto.key + "&searchText=" + text;
          var resultString = HSLayers.Apps.Utility.loadURLSync(url);
          var result = eval("(" + resultString.trim() + ")");
          if (result.objectCount > 0) {
              var locations = [];
              var options = [];
              for (var i = 0; i < result.objects.length; i++) {
                var address = result.objects[i];
                var name = address.name;            
                var souradnice = (address.x && address.y) ? address.x + ' ' + address.y : "";            
                options[options.length] = {value:souradnice, name:name};   
              }
            if (result.objects.length > 1) {
              toto.generateSelect(input, 'multiPointsSelect', '', options, true);
              findall = false;
            } else {                 
              if (souradnice) {            
                waypoints = waypoints + '"' + souradnice + '", ';
                input.val(address.name);
                input.attr("rel",souradnice); 
                input.keyup(function(){
                  $(this).attr("rel",'');  
                });
              }
            }              
          } else {
            alert('Průjezdní bod nenalezen');
          }
        } 
      } 
    } 
    input.removeClass('loading'); 
    input.removeAttr('disabled');
  
  });
  
  if (findall) {
    return waypoints;
  } else {
    return findall;
  }        
}

//find from place 
//@param - inputName (string) / example 'routeFrom'  
//@return string gps (x y)  
ProfiMapy.prototype.getPointFromText = function(inputName) {
  
  $('#'+inputName).addClass('loading');
  var parts = HSLayers.Apps.Utility.getElement(inputName).value.split(",");
  var text = parts[0];
  
  try {
    text = text.replace("+", ' ');
    text = text.replace("-", ' ');
    text = text.replace("~", ' ');
  } catch(e) {}
   
  if(text != ""){  
    
    if ($('#'+inputName).attr('rel')) {
      $('#'+inputName).removeClass('loading');
      return $('#'+inputName).attr('rel');      
    }
    
    var url = "http://apps.hfbiz.cz/glog/Glog/entry.php?class=Address.Search&key=" + this.key + "&searchText=" + text;
    var resultString = HSLayers.Apps.Utility.loadURLSync(url);
    var result = eval("(" + resultString.trim() + ")");
    if (result.objectCount > 0) {
        var locations = [];        
        var options = [];
        for (var i = 0; i < result.objects.length; i++) {
          var address = result.objects[i];
          var name = address.name;
          var souradnice = address.x + ' ' + address.y; 
          options[options.length] = {value:souradnice, name:name};          
        }
      
      if (result.objects.length > 1) { 
        this.generateSelect(inputName, 'multiPointsSelect', inputName+'Cont', options, true);
        return false;
      }
        
      if (souradnice) {
        $('#'+inputName).removeClass('loading');
        $('#'+inputName).val(address.name);
        $('#'+inputName).attr("rel",souradnice); 
        $('#'+inputName).keyup(function(){
          $(this).attr("rel",'');  
        });
        return souradnice;
      }   
    } else {
      $('#'+inputName).addClass('wrongData');
      $('#'+inputName).keyup(function(){
          $(this).removeClass('wrongData');  
      });
      alert('Bod nenalezen');
    }
  }
  $('#'+inputName).removeClass('loading');
  return false; //'-642086 -1038076';
};

ProfiMapy.prototype.showItinerary = function (dataObject) {
    var moveWord = this.getRouteType() == "pedestrian" || this.getRouteType() == "pedestrian_turistic" ? 'Jděte ' : 'Jeďte ';
    var info = dataObject.info;
    var itinerary = info.itinerary;
    $('#itinerary').html('');

    $('#itinerary').css('display','');

    if (this.getGenerateItinerary() && itinerary.length > 0) {
        var distance = 0;

        this.addItineraryItem(0, distance + 'km <br />' + 'Start', "");

        for (var i = 0; i < itinerary.length; i++) {
            var item = itinerary[i];
            distance += item.length;
            this.addItineraryItem(
                i + 1,
                this.convertNumber(distance, '1000', 2) +
                'km<br />' + this.getInstruction(item.instruction) +
                '<br />' + moveWord + item.length + 'm. <br />' +
                this.getType(item.type, item.name),
                item.road
            );
        }

        this.addItineraryItem(itinerary.length, distance + 'km <br />' + 'Cíl', "");
    }
};

ProfiMapy.prototype.getGenerateItinerary = function() {
  return HSLayers.Apps.Utility.getElement("chkboxGenerateItinerary").checked;
};

ProfiMapy.prototype.addItineraryItem = function (id, html, gids) {
    var profiMapy = this;
    $('<div>').click(function() {
        $('.routeDetailActive').each(function() {
            $(this).removeClass('routeDetailActive');
            var gids = $(this).attr('gids').split(",");
            HSLayers.Apps.MapPortal.Rincon.ShowObject.routingDrawRouteFeatures(gids, false, false);
        });
        $(this).addClass('routeDetailActive');
        if ($(this).attr('gids')) {
            var gids = $(this).attr('gids').split(",");
            HSLayers.Apps.MapPortal.Rincon.ShowObject.routingDrawRouteFeatures(gids, true, true);
        }
      }).attr("gids", gids ).attr("id","routeItineraryPoint-" + id).html(html).appendTo($('#itinerary'));
}

//return string instruction from ID
ProfiMapy.prototype.getInstruction = function(instructionID) {
  switch (instructionID) {
      case 0: str = OpenLayers.i18n("routingContinueStraight");
              break;
      case 1: str = OpenLayers.i18n("routingTurnSlightlyToTheRight");
              break;
      case 2: str = OpenLayers.i18n("routingTurnToTheRight");
              break;
      case 3: str = OpenLayers.i18n("routingTurnHardRight");
              break;
      case 4: str = OpenLayers.i18n("routingTurnAround");
              break;
      case 5: str = OpenLayers.i18n("routingTurnHardLeft");
              break;
      case 6: str = OpenLayers.i18n("routingTurnToTheLeft");
              break;
      case 7: str = OpenLayers.i18n("routingTurnSlightlyToTheLeft");
              break;
      case 8: str = OpenLayers.i18n("routingFrom");
              break;
      case 9: str = OpenLayers.i18n("routingTo");
              break;
      case 10: str = OpenLayers.i18n("routingTransitPoint");
              break;
  }
  return str;
};

ProfiMapy.prototype.getType = function(typeID, typeName) {
  var typeFrazes  =
    {
      1 : ['Dálnice'],
      2 : ['Rychlostní silnice R'],
      3 : ['Silnice I. třídy '],
      4 : ['Silnice II. třídy '],
      5 : ['Silnice III. třídy '],
      6 : ['Ulice '],
      7 : ['Sjezd, nájezd '],
      8 : ['Zpevněná cesta '],
      9 : ['Cesta pro chodce '],
      10: ['Cesta '],
      21: ['Turistická trasa '],
      22: ['Turistická trasa '],
      23: ['Turistická trasa '],
      24: ['Turistická trasa '],
      25: ['Naučná stezka '],
    };
  try {
    if (typeID.indexOf(';') != -1) {
      var retValues = '';
      var typeIDs = typeID.split(';');
      var typeNames = typeName.split(';');

      for (var i = 0; i < typeIDs.length;i++) {
        var name = typeName.indexOf(';') == -1 ? typeName : typeNames[i];
        if (typeFrazes[parseInt(typeIDs[i])]) {
          retValues += typeFrazes[parseInt(typeIDs[i])] + name + '<br />';
        }
      }
      return retValues;
    } else {
      if (typeFrazes[parseInt(typeID)]) {
        return typeFrazes[parseInt(typeID)] + typeName;
      }
    }
  } catch(e) {}
  return typeID +' '+ typeName;
};


/** Obecna inicializace zalozek
 *  - menu v ul seznamu -> pokud rel, prevede se na ajax volani, jinak prepinani obsahu
 *
 */
ProfiMapy.prototype.obecneZalozky = function(id,beforeZalozkyClick) {
  if (typeof id == "string") {
    var el = $('#'+id);
  } else {
    var el = $(id);
  }

  var toto = this;
  var obsahy = [];
  var zalozkyObsah = $('.obsahZalozek',el).eq(0);

  el.find('#'+$(zalozkyObsah).attr('id')+' > .zalozkaObsah').each(function(index, element) {

    obsahy.push($(element));
    if (index > 0) {
      $(element).css("display", "none");
    } else {
      $(element).addClass('aktivniZalozka');
    }
    //$(element).css("position", "absolute");
    $(element).css("top", "0");
    $(element).css("left", "0");
  });

  $('#'+el.attr('id')+' > .menuZalozek').find('a').each(function(index, element) {
    $(element).attr('href', 'javascript:;');
    if (index == 0) {
      $(element).addClass('aktivniLinkZalozky');
    }

    $(element).click(function(){
      if (typeof beforeZalozkyClick == "function") {
        if (!beforeZalozkyClick()) {
          return false;
        }
      }



      var aktivni = el.find('#'+$(zalozkyObsah).attr('id')+' > .aktivniZalozka').eq(0);
      if (aktivni) {
        var aktHeight = $(aktivni).height();

        $(aktivni).css('display', 'none');
        $(aktivni).removeClass('aktivniZalozka');
      }
      var aktivniLink = $('#'+el.attr('id')+' > .menuZalozek .aktivniLinkZalozky').eq(0);
      if (aktivniLink) {
        $(aktivniLink).removeClass('aktivniLinkZalozky');
      }
      if (obsahy[index]) {
        if (typeof aktHeight != "undefined") {
          obsahy[index].css('display', 'block');
          obsahy[index].css("height", 'auto');
          var finalheight = obsahy[index].height();
          obsahy[index].css("height", aktHeight);
          speedetimertime = 10;
          obsahy[index].css('overflow', 'hidden');
          obsahy[index].animate({
              height: finalheight
            },500,'',function() {
              obsahy[index].css("height", 'auto');
              speedetimertime = 500;
            });



        } else {
            obsahy[index].css('display', 'block');
          }
        obsahy[index].addClass('aktivniZalozka');
      }
      $(element).addClass('aktivniLinkZalozky');

      /*if ($(element).attr('rel')) {

        var url = $(element).attr('rel');

        toto.ajax( url + '&produktyID=' + $('#produktyID').val(), obsahy[index]);
        $(element).attr('rel', '');

      }*/
    });
  });

  //$('.skupinyNewLoadLink-init').removeClass('skupinyNewLoadLink-init').addClass('skupinyNewLoadLink');

}


//Smazat trasu
ProfiMapy.prototype.clearRoute = function() {

  $('#itinerary').html('');
  $('#itinerary').css('height','auto');
  $('#routeInfo').html('');
  $('#routeFrom').val('');
  $('#routeFrom').attr('rel','');
  $('#routeTo').val('');
  $('#routeTo').attr('rel','');
  HSLayers.Apps.MapPortal.Rincon.ShowObject.routingClearPath();
};


