
window.onerror = null;  // jinak se chybe nekde odchyti a nezobrazi se v konzoli

var minimumMapResolution = 7;
var allowedBounds = new GLatLngBounds(new GLatLng(49.8 - (2.75 / 2.0), 15.5 - (8.75 / 2.0)), new GLatLng(49.8 + (2.75 / 2.0), 15.5 + (8.75 / 2.0)));

var mapa_ajax_response_url = "/MapSearch.aspx";

var pismena_markeru = ["A", "B", "C", "D", "E"];
var cesta_posty = "http://iop.ceskaposta.cz/AdvancedShowPostaDetail.action?psc=";

/// strankovani pres globaly
var pocet_vyhledanych = 5;
var offset_vyhledanych = 0;
var max_pocet_zobrazenych = 5;
var offset_zobrazenych = 0;

/// kolik pobocek se naslo pres ajax z nasi databaze
var pocet_nalezenych;

var zobrazena_mapa;
var zobrazena_tabulka;

var mapa;
var clusterer;

/// info jestli je zoom nastaven pevne uzivatelem, nastavuju na true, aby se na uvodni mape hned na neco nezazoomovalo
var zazoomovano = false; /// aby se hned nezobrazilo 3000 markeru //true; ///false;

var posledni_hledani_lat = "";
var posledni_hledani_lon = "";

/// zobrazene markery prislusejici k jine nez aktualni strane na mape
var zobrazene_markery = new Array();
/// markery, ktere je treba zobrazit najednou s pismenky
var zobrazene_markery_pismenka = new Array();

var marker_click_in_progress = false;

/// nikde se prakticky nepouzije
strankovani_vytvoreno = false;

/// nacteni API
//google.load("maps", "2.x", { "language": "cs" });
// presunuto do ascx kvuli clustereru

jQuery.noConflict();


var clusterGraphics =
    [{
        url: '/images/Maps/clusterer.png',
        height: 53,
        width: 53,
        opt_anchor: [0, 0],
        opt_textColor: '#FFF200'
    },
    {
        url: '/images/Maps/clusterer.png',
        height: 53,
        width: 53,
        opt_anchor: [0, 0],
        opt_textColor: '#FFF200'
    },
    {
        url: '/images/Maps/clusterer.png',
        height: 53,
        width: 53,
        opt_anchor: [0, 0],
        opt_textColor: '#FFF200'
}];

function initializeClusterer() {
    clusterer = new MarkerClusterer(mapa, [], { maxZoom: 14, gridSize: 60, styles: clusterGraphics });
}

// { log
function dbg_log() {
   	if (typeof console != "undefined") {
		//console.log.apply(console, arguments);   // nefunguje v IE
		if (typeof arguments[1] != "undefined") {
			console.log(arguments[0], arguments[1]);
		} else {
			console.log(arguments[0]);
		}
	}
}
dbg_log("start...");

var FunLogDepth = "";

function dbg_funbeg(f, a) {
	dbg_log(">" + FunLogDepth + f, arguments);
	FunLogDepth += "  ";
}
function dbg_funend() {
	FunLogDepth = FunLogDepth.substr(2);
}

// }

// { clust
useClusterer = true;

function checkBounds() {
    if (allowedBounds.contains(mapa.getCenter())) 
    {
        return;
    }

    var C = mapa.getCenter();
    var X = C.lng();
    var Y = C.lat();

    var AmaxX = allowedBounds.getNorthEast().lng();
    var AmaxY = allowedBounds.getNorthEast().lat();
    var AminX = allowedBounds.getSouthWest().lng();
    var AminY = allowedBounds.getSouthWest().lat();

    if (X < AminX) { X = AminX; }
    if (X > AmaxX) { X = AmaxX; }
    if (Y < AminY) { Y = AminY; }
    if (Y > AmaxY) { Y = AmaxY; }

    mapa.setCenter(new GLatLng(Y, X));
}

function mapa_addOverlay_proxy(v) {
	dbg_log(">" + FunLogDepth + "mapa_addOverlay_proxy ", "pismeno "+v.dbg_pismeno);
	if (useClusterer) {
	    clusterer.addMarkers([v]);
		//mapa.addOverlay(v); // kontrola dbg
	} else {
		mapa.addOverlay(v);
	}
}	

function mapa_clearOverlays_proxy(v) {
	dbg_funbeg("mapa_clearOverlays_proxy", arguments);

	if (useClusterer) {
	    clusterer.clearMarkers();
	}

	mapa.clearOverlays();
	
	//if (useClusterer) {
	//	clusterer.clearMarkers([v]);
    //} else {
	//	mapa.clearOverlays(v);
	//}
	dbg_funend();
}	
// } clust

// { aktualizace bodu i pri hledani
var processing_ajax = false;
// }

jQuery(document).ready(function() {

    /// {{{ evt document.ready
    dbg_funbeg("evt document.ready", arguments);
    if (jQuery("#mapa").length > 0) {

        jQuery("#mapa_vyhledavani_hlaseni").hide();
        jQuery("#mapa_vyhledavani_blok").removeClass('mapa_block_with_message');

        /// vytvor googlovskou mapu v elementu mapa, zobraz cr a pridej ovladani
        mapa = new google.maps.Map2(document.getElementById("mapa"));

        var mapTypes = mapa.getMapTypes();

        for (var i = 0; i < mapTypes.length; i++) {
            mapTypes[i].getMinimumResolution = function() { return minimumMapResolution; }
        }

        mapa_ukaz_cr();
        mapa.addControl(new GLargeMapControl());

        // { clust
        if (useClusterer) {
            initializeClusterer();
        }
        // } clust

        GEvent.addListener(mapa, "zoomend", function(oldZ, newZ) {
            dbg_funbeg("evt mapa.zoomed", arguments);
            marker_click_in_progress = false;
            dbg_funend();
        });

        GEvent.addListener(mapa, "move", function(oldZ, newZ) {
            checkBounds();
        });

        GEvent.addListener(mapa, "dragstart", function() {
            dbg_funbeg("evt mapa.dragstart", arguments);
            marker_click_in_progress = false;
            dbg_funend();
        });

        /// {{{ evt mapa.zoomed
        /// udalost zoomed je hned nasledovana udalosti movend, takze zbytek neni treba volat
        /*
        GEvent.addListener(mapa, "zoomend", function(oldZ, newZ) {
        dbg_funbeg("evt mapa.zoomed", arguments);
        if (zobrazena_mapa && !processing_ajax) {
        if (newZ >= 9) {
        zazoomovano = true;
		  
          zobrazene_markery = [];

          mapa_clearOverlays_proxy();
        mapa.closeExtInfoWindow();

          var lat = mapa.getCenter().lat();
        var lan = mapa.getCenter().lng();

          mapa_vyhledani(lat, lan);
        }
        else {
        mapa_clearOverlays_proxy();
        mapa.closeExtInfoWindow();

          jQuery("#mapa_vyhledavani_mapa_seznam").html("");
        jQuery(".mapa_vyhledavani_pocet_nalezenych").text("0");
        }
        }
        dbg_funend();
        });
        */
        /// }}} evt mapa.zoomed

        /// {{{ evt mapa.moveend
        GEvent.addListener(mapa, "moveend", function() {
            dbg_funbeg("evt mapa.moveend", arguments);

            //kdyz je nenulove, jedna se o detail pobocky
            if (jQuery("#mapa_pobocka_params").length == 0) {

                if (zobrazena_mapa && /*jQuery("#mapa_vyhledavani_text").val() == ""*/!processing_ajax) {
                    //if (zazoomovano) {  /// nevim k cemu to tu je, kazdopadne to pak blokuje nacitani novych bodu pri posouvani mapy po vyhledani

                    if (!marker_click_in_progress) {
                        zazoomovano = true; // aby mapa sama nezoomovala, kdyz ji posouvam

                        zobrazene_markery = [];

                        mapa_clearOverlays_proxy();
                        mapa.closeExtInfoWindow();

                        var lat = mapa.getCenter().lat();
                        var lan = mapa.getCenter().lng();

                        mapa_vyhledani(lat, lan, false);
                    }

                    /*
                    }
                    else {
                    mapa_clearOverlays_proxy();
                    mapa.closeExtInfoWindow();

          jQuery("#mapa_vyhledavani_mapa_seznam").html("");
                    jQuery(".mapa_vyhledavani_pocet_nalezenych").text("0");
                    }
                    */
                }
            }

            marker_click_in_progress = false;
            
            dbg_funend();
        });
        /// }}} evt mapa.moveend

        //mapa_ukaz_cr();

        /// rozliseni jestli je fce volana z prehledove mapy nebo z detailu jedne pobocky
        /// - mapa
        if (jQuery("#mapa_pobocka_params").length == 0) { // mapa nebo tabulka
            zobrazena_mapa = true;
            zobrazena_tabulka = false;

            //mapa_ukaz_cr();
        }
        /// - pobocka
        else { // detail pobočky
            zobrazena_mapa = true;

            var mapa_params = jQuery("#mapa_pobocka_params");

            var lat = mapa_params.find(".lat").text();
            var lon = mapa_params.find(".lon").text();
            var nazev = mapa_params.find(".nazev").text();
            var ulice = mapa_params.find(".ulice").text();
            var mesto = mapa_params.find(".mesto").text();
            var PSC = mapa_params.find(".PSC").text();
            var obrazek_url = mapa_params.find(".obrazek_url").text();
            var telefon = mapa_params.find(".telefon").text();
            var detail_url = undefined;
            var poznamka = mapa_params.find(".poznamka").text();
            var pismeno = undefined;
            pismeno = gup("marker");

            if (pismeno == "") {
                pismeno = "A";
            }
            mapa.setCenter(new google.maps.LatLng(lat, lon), 13);

            mapa_pridej_financni_centrum(1, pismeno, lat, lon, nazev, ulice, mesto, PSC, obrazek_url, telefon, detail_url, poznamka);
            display_markers();
        }

        /// {{{ evt mapa_vyhledavani_switch_mapa.click
        jQuery("#mapa_vyhledavani_switch_mapa").click(function() {
            zazoomovano = false;

            marker_click_in_progress = false;

            max_pocet_zobrazenych = 5;
            var odkaz_dalsi = jQuery("#mapa_vyhledavani_mapa_dalsi");
            var odkaz_predchozi = jQuery("#mapa_vyhledavani_mapa_predchozi");
            odkaz_dalsi.hide();
            odkaz_predchozi.hide();
            jQuery(this).removeClass("switch-map-off").addClass("switch-map-on");
            jQuery("#mapa_vyhledavani_switch_tabulka").removeClass("switch-tab-on").addClass("switch-tab-off");

            jQuery("#mapa_vyhledavani_box_mapa").show();
            jQuery("#mapa_vyhledavani_box_tabulka").hide();

            zobrazena_mapa = true;
            zobrazena_tabulka = false;
            zobrazene_markery = [];
            if (posledni_hledani_lat != "" && posledni_hledani_lon != "") {
                mapa_vyhledani()
            }
            else {
                mapa_ukaz_cr();

                jQuery("span.mapa_vyhledavani_pocet_nalezenych").text("0");
            }

            return false;
        });
        /// }}} evt mapa_vyhledavani_switch_mapa.click


        /*NOTE: preklik z mapy na tabulku*/
        /// {{{ evt mapa_vyhledavani_switch_tabulka.click
        jQuery("#mapa_vyhledavani_switch_tabulka").click(function() {
            jQuery("#mapa_vyhledavani_tabulka").hide();
            jQuery("#mapa_seznam_loading").show();
            max_pocet_zobrazenych = 15;

            pocet_vyhledanych = max_pocet_zobrazenych;

            //mapa_obnovit_strankovani();

            mapa.closeExtInfoWindow(); // zavřeme extinfowindow na mapě, které by mohlo být otevřené

            jQuery(this).removeClass("switch-tab-off").addClass("switch-tab-on");
            jQuery("#mapa_vyhledavani_switch_mapa").removeClass("switch-map-on").addClass("switch-map-off");

            jQuery("#mapa_vyhledavani_box_mapa").hide();
            jQuery("#mapa_vyhledavani_box_tabulka").show();
            zobrazena_mapa = false;
            zobrazena_tabulka = true;
            zobrazene_markery = [];
            if (posledni_hledani_lat != "" && posledni_hledani_lon != "") {
                mapa_get_objekty(posledni_hledani_lat, posledni_hledani_lon);
            }
            else {
                mapa_get_objekty();
            }

            return false;
        });
        /// }}} evt mapa_vyhledavani_switch_tabulka.click


        /// {{{ evt mapa_vyhledavani_text.keydown
        jQuery("#mapa_vyhledavani_text").keydown(function(e) { // odchycení enteru
            dbg_funbeg("evt mapa_vyhledavani_text.keydown", arguments);
            if (e.keyCode == 13) {
                zazoomovano = false;
                marker_click_in_progress = false;
                mapa.closeExtInfoWindow();

                reset_hodnot();
                mapa_vyhledani();
                mapa_obnovit_strankovani();
                dbg_funend();
                return false;
            }
            else {
                dbg_funend();
                return true;
            }
        });
        /// }}} evt mapa_vyhledavani_text.keydown


        /// {{{ evt mapa_vyhledavani_tlacitko.click
        jQuery("#mapa_vyhledavani_tlacitko").click(function() {
            dbg_funbeg("evt  mapa_vyhledavani_tlacitko.click", arguments);
            zazoomovano = false;
            marker_click_in_progress = false;
            mapa.closeExtInfoWindow();

            reset_hodnot();
            mapa_vyhledani();
            mapa_obnovit_strankovani();
            dbg_funend();
        });
        /// }}} evt mapa_vyhledavani_tlacitko.click

    }
    var searchText = jQuery("#mapa_vyhledavani_text");
    if (searchText.length) {          /// test jestli vubec existuje element pro vyhledavani
        if (searchText.val() != '') {   /// pokud je co vyhledavat tak to vyhledej
            if (searchText.attr('alt') != searchText.attr('value')) {
                reset_hodnot();
                mapa_vyhledani();
                mapa_obnovit_strankovani();
            }
        }
    }
    dbg_funend();
});
/// }}} evt document.ready


function reset_hodnot() {
    offset_vyhledanych = 0;
    offset_zobrazenych = 0;
    pocet_nalezenych = 0;
    posledni_hledani_lat = "";
    osledni_hledani_lon = "";
    zobrazene_markery = [];
    strankovani_vytvoreno = false;
}

function mapa_vyhledani(param_lat, param_lan, hide_map) {
    dbg_funbeg("mapa_vyhledani", arguments);

    jQuery("#mapa_initial_message").hide();

	/// zobraz info ze se nacita
    if (hide_map == undefined) hide_map = true;
    if (hide_map && zobrazena_mapa ) {
        jQuery("#mapa").hide();
        jQuery("#mapa_loading").show();
    }
    else {
        jQuery("#mapa_vyhledavani_tabulka").hide();
        jQuery("#mapa_seznam_loading").show();
    }
    offset_vyhledanych = 0;  ///???

    var select = jQuery("#mapa_vyhledavani_select");

	/// vetveni jakym zpusobem nacist znacky na mapu
	/// -kdyz zname souradnice:
    if (param_lat != undefined && param_lan != undefined) {
        mapa_get_objekty(param_lat, param_lan);

        jQuery("#mapa_vyhledavani_text").show(); // zobrazíme textbox search
    }
	/// -kdyz zname vyber pobocky z nabidky, tak nacti pobocky z jeho okoli
    else if (select.find("option").length > 0) {
        var coords = select.find("option:selected").val().split(",");

        var lat = coords[1];
        var lon = coords[0];

        mapa_get_objekty(lat, lon);

        select.empty().hide(); // odstraníme všechny options a skryjeme select
        jQuery("#mapa_vyhledavani_text").show(); // zobrazíme textbox search
    }
	/// - jinak hledame text
    else {

        if (mapa == undefined) return; ///???

        /// smazat overlaye aby tam netrcely do doby nez geocoder najde polohy
		//mapa_clearOverlays_proxy(); // vymazání markerů z mapy
		
        offset_zobrazenych = 0; // reset offestu
		
		/// nastaveni velikosti strany v zavislosti na rezimu zobrazeni
        if (zobrazena_tabulka) {
            max_pocet_zobrazenych = 15; // reset max. počtu zobrazených
        }
        else {
            max_pocet_zobrazenych = 5;
        }

		/// vyhledani dle adresy pomoci geocoderu
        var geocoder = new GClientGeocoder();
        geocoder.setBaseCountryCode('cz');

        var adresa = jQuery("#mapa_vyhledavani_text").val();

        jQuery("#mapa_vyhledavani_hlaseni").hide();
        jQuery("#mapa_vyhledavani_blok").removeClass('mapa_block_with_message');

		/// {{{ evt geocoder.getLocations
        geocoder.getLocations(
	    adresa,
	    function(point) {
			/// pokud se nic nenaslo, zobraz mapu (je bez marekeru)
            if (point.Placemark == undefined) {
	            //alert("Adresa nebyla nalezena");
	            jQuery("#mapa_vyhledavani_hlaseni_text").text(adresa);
	            jQuery("#mapa_vyhledavani_hlaseni").show();
	            jQuery("#mapa_vyhledavani_blok").addClass('mapa_block_with_message');
	           	            
	            if (zobrazena_mapa) {
	                jQuery("#mapa").show();
	                jQuery("#mapa_loading").hide();
	            }
	        }
			/// kdyz se naslo:
	        else { // Google byl šikovný a adresu/adresy našel
				/// kdyz se naslo jednoznacne nacti objekty kolem toho mista
	            if (point.Placemark.length == 1) { // nalezen jeden objekt
	                var coords = jQuery(point.Placemark).attr("Point").coordinates;

	                var lat = coords[1];
	                var lon = coords[0];
	                mapa_get_objekty(lat, lon);
	            }
				/// kdyz se toho naslo vic, nasyp to do selectu - vzdy adresa s prislusnejma souradnicema, schovej vyhledavaci text a zobraz select misto nej
	            else { // nalezeno více objektů	                

	                var nalezeno;
	                var textinput = jQuery("#mapa_vyhledavani_text");
	                var select = jQuery("#mapa_vyhledavani_select");

	                select.remove("option");

	                jQuery.each(point.Placemark, function(i, val) {
	                    nalezeno = jQuery(this);

	                    var latlon = nalezeno.attr("Point").coordinates[0] + "," + nalezeno.attr("Point").coordinates[1];


	                    var adresa = nalezeno.attr("address");

	                    select.append('<option value="' + latlon + '">' + adresa + '</option>');
	                });

	                select.show();
	                textinput.hide();
	            }
	        }
	    }
  	);
	/// }}} evt geocoder.getLocations
  }
  dbg_funend();
}

function display_markers() {

 // var markersToDisplay = zobrazene_markery.slice(0, offset_vyhledanych).concat(zobrazene_markery_pismenka.slice(0, pocet_vyhledanych)).concat(zobrazene_markery.slice(offset_vyhledanych + pocet_vyhledanych));
    var markersToDisplay = zobrazene_markery.slice(0, offset_vyhledanych).concat(zobrazene_markery.slice(offset_vyhledanych + pocet_vyhledanych));

    clusterer.clearMarkers();
    mapa.clearOverlays();
        
    if (useClusterer) {
        clusterer.addMarkers(markersToDisplay);
        jQuery.each(zobrazene_markery_pismenka.slice(0, pocet_vyhledanych), function(i, val) {
            mapa.addOverlay(val);
        });
    }
    else {
        jQuery.each(markersToDisplay, function(i, val) {
            mapa.addOverlay(val);
        });
        jQuery.each(zobrazene_markery_pismenka.slice(0, pocet_vyhledanych), function(i, val) {
            mapa.addOverlay(val);
        });
    }
}

function mapa_get_objekty(lat, lon) {
    dbg_funbeg("mapa_get_objekty", arguments);

    zobrazene_markery_pismenka = [];

	/// zapamatovani nejakych poslednich souradnic
	if (lat != undefined) {
        posledni_hledani_lat = lat;
    }
    else {
        lat = posledni_hledani_lat;
    }

    if (lon != undefined) {
        posledni_hledani_lon = lon;
    }
    else {
        lon = posledni_hledani_lon;
    }

	/// zrus strankovani ???
    jQuery("#mapa_vyhledavani_tabulka tr:not(.strankovani):not(.prvni)").remove();

	/// zjisti zda jsme hledali bankomaty nebo pobocky a podle toho vytvor a napln prislusnou strukturu params pro hledani asi
    var static_params = jQuery("#mapa_vyhledavani_params");
    var typ = static_params.find(".typ").text();
    var hack_offset_vyhledanych = offset_vyhledanych;
    typ = jQuery.trim(typ);
	
    var params;

    if (typ == "bankomaty") {
        //meritko = "";
        boundary_top = "";
        boundary_left = "";
        boundary_right = "";
        boundary_bottom = "";

        if (zazoomovano == true) {
            //meritko = mapa.getZoom();
            boundary_top = mapa.getBounds().getNorthEast().lat();
            boundary_left = mapa.getBounds().getSouthWest().lng();
            boundary_right = mapa.getBounds().getNorthEast().lng();
            boundary_bottom = mapa.getBounds().getSouthWest().lat();
        }
        params = {
            "gps_lat": lat,
            "gps_lon": lon,
            "pocet": pocet_vyhledanych,
            "offset": hack_offset_vyhledanych,
            "typ": typ,
            "boundary_top": boundary_top,
            "boundary_left": boundary_left,
            "boundary_right": boundary_right,
            "boundary_bottom": boundary_bottom
            //"meritko": meritko
        }
    }
    else if (typ == "pobocky") {
        var financni_centra;

        if (jQuery("#mapa_chbx_pobocky").is(":checked")) {
            financni_centra = 1;
        }
        else {
            financni_centra = 0;
        }

        var posty;

        if (jQuery("#mapa_chbx_posty").is(":checked")) {
            posty = 1;
        }
        else {
            posty = 0;
        }

        var pip = static_params.find(".pip").text();
        var sui = static_params.find(".sui").text();
        var eurokonto = static_params.find(".eurokonto").text();
        var hypotecni_uver = static_params.find(".hypotecni_uver").text();
        var nejnizsi_uroven_posty = static_params.find(".nejnizsi_uroven_posty").text();

        //      meritko = "";
        boundary_top = "";
        boundary_left = "";
        boundary_right = "";
        boundary_bottom = "";

        if (zazoomovano == true) {
            //            meritko = mapa.getZoom();
            boundary_top = mapa.getBounds().getNorthEast().lat();
            boundary_left = mapa.getBounds().getSouthWest().lng();
            boundary_right = mapa.getBounds().getNorthEast().lng();
            boundary_bottom = mapa.getBounds().getSouthWest().lat();
        }

        params = {
            "gps_lat": lat,
            "gps_lon": lon,
            "pocet": pocet_vyhledanych,
            "offset": hack_offset_vyhledanych,
            "typ": typ,
            "posty": posty,
            "financni_centra": financni_centra,
            "pip": pip,
            "sui": sui,
            "eurokonto": eurokonto,
            "hypotecni_uver": hypotecni_uver,
            "nejnizsi_uroven_posty": nejnizsi_uroven_posty,
            "boundary_top": boundary_top,
            "boundary_left": boundary_left,
            "boundary_right": boundary_right,
            "boundary_bottom": boundary_bottom
            //"meritko": meritko
        }
    }

    // volani stranky pro (google analytics) mereni, co hledaji
    try { pageTracker._trackPageview(mapa_ajax_response_url + "?typ=" + typ + "&searchfield=" + jQuery("#mapa_vyhledavani_text").val()); } catch (err) { }

    /// zeptame se nasi databaze na pobocky v oblasti danou strukturou params
    jQuery.ajax({
        type: "POST",
        data: params,
        url: mapa_ajax_response_url,
        dataType: "text",  //vyresi ie6 bug
        //dataType: "json",

        error: function(XMLHttpRequest, textStatus, errorThrown) {
            ;
        },

        /// {{{ evt ajax.success
        //success: (function(data) {
        /// oblozim puvodni funkci kodem, ktery behem jejiho provadeni nastavi processing_ajax priznak
        success: (function(cont) { return function(datax) { processing_ajax = true; cont(datax); processing_ajax = false; } })(function(data) {

            dbg_funbeg("evt ajax success", arguments);
            /// nejake cisteni a nacteni jsonu do promene data
            // v odpovedi se objevuji nejka cisla. nevim proc, ale musi pryc
            var paraIndex = data.indexOf("{", 0);
            if (paraIndex > 0) data = data.substr(paraIndex, data.length);

            //kvuli IE6 posilam data jako text misto json a pak evalem z toho udelam objekt;        
            var command = 'data = ' + data + ';';
            eval(command);

            /// ???
            if (poznamka == undefined) {
                var poznamka = "";
            }

            /// vymazeni leveho menu
            if (zobrazena_mapa) {
                jQuery("#mapa_vyhledavani_mapa_seznam").empty(); // odstraníme vše z levého menu
            }

            pocet_nalezenych = data.celkem_nalezeno;


            /// bounds at zahrnuji vsechny drive zobrazene markery i ty nove markery - asi kvuli strankovani na nove strane
            var bounds = new GLatLngBounds(); // hranice mapy

            //alert(bounds.getCenter().toUrlValue());

            //var poradi;
            //jQuery.each(zobrazene_markery, function(i, val) {
            //mapa.addOverlay(val);
            //mapa_addOverlay_proxy(val);
            //bounds.extend(val.getLatLng()); // rozšíříme hranice mapy aby se bod vešel
            //});

            var pocet_nalezenych_pri_poslednim_pruchodu = 0; /// ??? nikde se nepouzije

            /// {{{ iter data.objekty
            jQuery.each(data.objekty, function(i, val) {
                poradi = i - offset_zobrazenych;

                /// prirazeni pismene jen pro markery z aktualni strany
                if (poradi >= 1 && poradi <= 5) {
                    var pismeno = pismena_markeru[poradi - 1];
                }

                /// omezeni delky strany
                if (poradi >= 1) { //&& poradi <= max_pocet_zobrazenych || (zobrazena_mapa && i >= zobrazene_markery.length)) {

                    // roztahni meze a pridej znacku
                    if (poradi >= 1 && poradi <= max_pocet_zobrazenych) {
                        bounds.extend(new GLatLng(this.lat, this.lon)); // rozšíříme hranice mapy aby se bod vešel
                    }

                    if (this.typ == "atm") {
                        mapa_pridej_bankomat(i, pismeno, this.lat, this.lon, this.nazev, this.ulice, this.mesto, this.PSC, this.nonstop, this.dob, undefined, this.vkl, this.poj, this.det, this.note);
                    }
                    else if (this.typ == "p") {
                        mapa_pridej_postu(i, pismeno, this.lat, this.lon, this.nazev, this.ulice, this.mesto, this.PSC, this.l, undefined, undefined, undefined, undefined);
                    }
                    else if (this.typ == "fc") {
                        mapa_pridej_financni_centrum(i, pismeno, this.lat, this.lon, this.nazev, this.ulice, this.mesto, this.PSC, this.img, this.tel, this.url, this.note);
                    }
                }

                pocet_nalezenych_pri_poslednim_pruchodu++;  /// ??? nikde se nepouzije
            });
            /// }}} iter data.objekty

            display_markers();

            //alert(bounds.getCenter().toUrlValue());


            /// zoomujeme jen kdyz je na co a pokud neni rucne nastaveny zoomovani
            if (pocet_nalezenych > 0 && !zazoomovano) {

                mapa.setZoom(mapa.getBoundsZoomLevel(bounds) - 1);   // zazoomujeme mapu aby se vešly všechny body
                mapa.setCenter(bounds.getCenter()); // mapu vycentrujeme

            }

            /// nastaveni strankovani a obsluha jeho udalosti
            /// ????
            if (hack_offset_vyhledanych == 0) {
                mapa_obnovit_strankovani();
            }

            /// ??? proc fix?
            //IE6 fix
            if (pocet_nalezenych == 0) {
                jQuery('#mapa_vyhledavani_mapa_seznam').hide();
            }
            else {
                jQuery('#mapa_vyhledavani_mapa_seznam').show();
            }

            var odkaz_dalsi = jQuery("#mapa_vyhledavani_mapa_dalsi");
            var odkaz_predchozi = jQuery("#mapa_vyhledavani_mapa_predchozi");

            // tlacitko dalsi
            if (pocet_nalezenych > 5 && hack_offset_vyhledanych < pocet_nalezenych - 5) {
                /// {{{ evt odkaz_dalsi.click
                odkaz_dalsi.unbind().click(function() {
                    mapa.closeExtInfoWindow();
                    mapa_clearOverlays_proxy();
                    mapa_zobrazit_dalsi(lat, lon); // předáme stejné parametry lat, lon
                    return false;
                }).show();
                /// }}} evt odkaz_dalsi.click

            }
            else {
                odkaz_dalsi.hide();
            }
            // tlacitko predchozi
            //alert(offset_vyhledanych);
            if (pocet_nalezenych > 5 && hack_offset_vyhledanych >= 5) {
                /// {{{ evt odkaz_predchozi.click
                odkaz_predchozi.unbind().click(function() {
                    mapa_clearOverlays_proxy();
                    mapa.closeExtInfoWindow();

                    mapa_zobrazit_predchozi(lat, lon); // předáme stejné parametry lat, lon

                    //kdyz je zazoomovano, nemazou se markery - porad je zobrazeno vsechno ve vyrezu
                    //if (!zazoomovano) zobrazene_markery.splice(hack_offset_vyhledanych, zobrazene_markery.length - offset_vyhledanych);

                    return false;
                }).show();
                /// }}} evt odkaz_predchozi.click

            }
            else {
                odkaz_predchozi.hide();
            }

            /// schovej info o nacitani a zobraz mapu s markerama
            if (zobrazena_mapa) {
                jQuery("#mapa").show();
                jQuery("#mapa_loading").hide();
            }
            else {
                jQuery("#mapa_vyhledavani_tabulka").show();
                jQuery("#mapa_seznam_loading").hide();
            }

            /// nejaky IE hack
            if (pocet_nalezenych > 0 && !zazoomovano) {
                //toto zopakovat kvuli iecku, musi se to zoomovat jeste jednou po odkryti mapy a jeste takto opakovane
                mapa.setZoom(mapa.getBoundsZoomLevel(bounds) - 1);   // zazoomujeme mapu aby se vešly všechny body
                mapa.setCenter(bounds.getCenter()); // mapu vycentrujeme
                mapa.setZoom(mapa.getBoundsZoomLevel(bounds) - 1);

            }

            /// info o poctu
            jQuery("span.mapa_vyhledavani_pocet_nalezenych").text(pocet_nalezenych); // nastavíme počet nalezených objektů

            dbg_funend();
        })
        /// }}} evt ajax.success

    });
	dbg_funend();
}

function lazy_unique_image_init(html) {
    var node = document.createElement("div");
    node.innerHTML = html;
    var detailImage = node.getElementsByTagName("IMG")[0];

    if (detailImage != undefined && detailImage.id == "unique-photo") {
        detailImage.src = detailImage.alt;
        detailImage.alt = "";
    }

    return node.innerHTML;
}

/// nejake dve funkce pro asi obnoveni strankovani pokud je zobrazena tabulka

function mapa_strankovani_page_select(page_index, jq) {
	dbg_funbeg("mapa_strankovani_page_select", arguments);
    jQuery("#mapa_vyhledavani_tabulka").hide();
    jQuery("#mapa_seznam_loading").show();
    var novy_offset = page_index * max_pocet_zobrazenych;

    if (offset_vyhledanych != novy_offset) {
        offset_vyhledanych = page_index * max_pocet_zobrazenych;

        mapa_get_objekty(undefined, undefined);
    }
	dbg_funend();
    return false;
}

function mapa_obnovit_strankovani() {
	dbg_funbeg("mapa_obnovit_strankovani", arguments);
	/// to pagination vypada jako nejaka knihovni funkcionalita, protoze to tu neni nijak detailne realizovano
    jQuery("#mapa_tabulka_strankovani").pagination(pocet_nalezenych, {
        items_per_page: max_pocet_zobrazenych,
        num_edge_entries: 1,
        callback: mapa_strankovani_page_select,
        ellipse_text: "...",
        prev_text: "Předchozí",
        next_text: "Další"
    });
    var pocetA = jQuery("#mapa_tabulka_strankovani A").length + 1;
    var delkaStrankovace = 170;
    delkaStrankovace = delkaStrankovace + (pocetA * 35);
    jQuery("#mapa_tabulka_strankovani").attr("style", "width:" + delkaStrankovace + "px");
    strankovani_vytvoreno = true;
	dbg_funend();
}

/// pomocne dve funkce pro pridani bankomatu
function createAtmImage(imageName, title) {
  var url = '/images/Bankomaty/' + imageName + '.' + (jQuery.browser.version == 6 ? 'gif' : 'png');
  var tag = '<img src="' + url + '" alt="' + title + '" title="' + title + '"/>';
  return jQuery(tag);
}

function appendAtmImages(content, nonstop, dobijeni_kreditu, registrace_sms, vkladani_hotovosti, pojisteni) {
  if (nonstop == 1) {
    content.append(createAtmImage('bankomaty-01', 'Bankomat je dostupný 24x7.'));
  }
  if (dobijeni_kreditu == 1) {
    content.append(createAtmImage('bankomaty-02', 'Bankomat podporuje dobíjení kreditu předplaceného mobilního čísla.'));
  }
  if (registrace_sms == 1) {
    content.append(createAtmImage('bankomaty-03', 'Bankomat podporuje službu registrace SMS nabíjení.'));
  }
  if (vkladani_hotovosti == 1) {
    content.append(createAtmImage('bankomaty-04', 'Bankomat podporuje vklad hotovosti.'));
  }
  if (pojisteni == 1) {
    content.append(createAtmImage('bankomaty-05', 'Bankomat umožňující sjednání Cestovního pojištění.'));
  }
}

/// funkce pro pridani bankomatu bud na mapu nebo do tabulky
function mapa_pridej_bankomat(index, pismeno, lat, lon, nazev, ulice, mesto, PSC, nonstop, dobijeni_kreditu, registrace_sms, vkladani_hotovosti, pojisteni, upresneni_polohy, poznamka) {

  upresneni_polohy = upresneni_polohy != undefined ? upresneni_polohy : '';
  poznamka = poznamka != undefined ? poznamka : '';
  var html = jQuery('<div></div>');

  if (zobrazena_mapa /*&& pismeno != undefined*/) {
    var map_content = jQuery('<div class="map-content"></div>');

    var innerHtml = '<div class="headline">' + mesto + '</div> ' + ulice + '<br />' + upresneni_polohy + '<br />';
    if (poznamka) innerHtml = innerHtml + '<div class="map-note">' + poznamka + '</div>';
    map_content.append(jQuery(innerHtml));

    appendAtmImages(map_content, nonstop, dobijeni_kreditu, registrace_sms, vkladani_hotovosti, pojisteni);

    var map_content_bottom = jQuery('<div class="map-content-bottom">');

    map_content_bottom.append(jQuery('<div class="float-left gps">Loc: ' + floats2gps(lat, lon) + '</div><div class="float-right"></div>'));

    html.append(map_content).append(map_content_bottom);
  }
  else if (zobrazena_tabulka) {

    html.append(jQuery('<div class="float-left"><span>' + mesto + '</span></div>'));

    var float_right = jQuery('<div class="float-right"></div>');
    var note = jQuery('<div class="map-note">' + poznamka + '</div>');        

    appendAtmImages(float_right, nonstop, dobijeni_kreditu, registrace_sms, vkladani_hotovosti, pojisteni);

    html.append(float_right);
    if (poznamka) html.append(note);
  }

  mapa_pridej_objekt(index, "bankomat", pismeno, lat, lon, html, nazev, ulice, mesto, PSC, 0, upresneni_polohy, poznamka, undefined);
}

function mapa_pridej_postu(index, pismeno, lat, lon, nazev, ulice, mesto, PSC, uroven, pip, sui, eurokonto, hypotecni_uver) {

    var html = jQuery('<div></div>');

    if (zobrazena_mapa /*&& pismeno != undefined*/) {
        var map_content = jQuery('<div class="map-content"></div>');

        map_content.append(jQuery('<div class="headline">' + nazev + '</div> ' + ulice + '<br />' + mesto + '<br />' + formatPostalCode(PSC) + '<br /><a href="' + cesta_posty + PSC.replace(" ","") + '" title="Detail pošty">Detail pošty</a>'));

        var map_content_bottom = jQuery('<div class="map-content-bottom"></div>');

        map_content_bottom.append(jQuery('<div class="float-left gps">Loc: ' + floats2gps(lat, lon) + '</div><div class="float-right"></div>'));

        html.append(map_content).append(map_content_bottom);
    }
    else if (zobrazena_tabulka) {
        html.append(jQuery('<div class="float-left"><img src="/images/Pobocky/bullet-blue.png" alt="Pošta" /><span>' + nazev + '</span></div>'));

        var uroven_cislo = uroven.substr(1, 1);
        html.append(jQuery('<div class="float-right"><img src="/images/Pobocky/listky-' + uroven + '.gif" alt="" /></div>'));
    }
    URL = cesta_posty + PSC.replace(" ","");
    mapa_pridej_objekt(index, "posta", pismeno, lat, lon, html, nazev, ulice, mesto, PSC, uroven, undefined, undefined, URL);
}

function mapa_pridej_financni_centrum(index, pismeno, lat, lon, nazev, ulice, mesto, PSC, obrazek_url, telefon, detail_url, poznamka) {
    obrazek_url = obrazek_url != undefined ? obrazek_url : '';
    poznamka = poznamka != undefined ? poznamka : '';
    var html = jQuery('<div></div>');

    if (zobrazena_mapa /*&& pismeno!=undefined*/) {
        var map_content = jQuery('<div class="map-content"></div>');
        
        if (obrazek_url != "") {
           map_content.append(jQuery('<div class="gmap-photo"><img id="unique-photo" alt="' + obrazek_url + '" class="float-left foto" /></div>'));
        }

        map_content.append(jQuery('<div class="headline">' + nazev + '</div> ' + ulice + '<br />' + mesto + '<br />' + telefon + '<br />' + poznamka + '<br />'));

        if (detail_url != undefined) {
            if (detail_url != "") {
                if (detail_url.indexOf("?") != -1) {
                    detail_url = detail_url + "&marker=" + pismeno;
                }
                else {
                    detail_url = detail_url + "?marker=" + pismeno;
                }
                map_content.append(jQuery('<a href="' + detail_url + '">Více informací</a><br />'));
            }
        }
        var map_content_bottom = jQuery('<div class="map-content-bottom"></div>');

        map_content_bottom.append(jQuery('<div class="float-left gps">Loc: ' + floats2gps(lat, lon) + '</div><div class="float-right"></div>'));

        html.append(map_content).append(map_content_bottom);

    }
    else if (zobrazena_tabulka) {
        html.append(jQuery('<div class="float-left"><img src="/images/Pobocky/bullet-red.png" alt="Pobočka" /><span>' + nazev + '</span></div>'));
    }
    URL = detail_url;
    mapa_pridej_objekt(index, "financni_centrum", pismeno, lat, lon, html, nazev, ulice, mesto, PSC, 0, undefined, undefined, URL);

}


function mapa_pridej_objekt(index, typ, pismeno, lat, lon, html, nazev, ulice, mesto, PSC, uroven_posta, upresneni_polohy, poznamka, URL) {
	/// vetveni zda tabulka nebo mapa
	/// - mapa
    if (zobrazena_mapa) {
        var menu_class;

        var barva;
        var pripona = "";
        var menu_class = "";
        var posta_uroven_html = "";

		/// nastaveni zobrazeni dle typu znacky
        if (typ == "bankomat") {
            barva = "red";
        }
        else if (typ == "posta") {
            barva = "blue";
            menu_class = "bluemark";
            posta_uroven_html = '<div class="float-right rightpadding"><img alt="Úroveň pošty" src="/images/Pobocky/listky-' + uroven_posta + '.gif"></div>';
        }
        else if (typ == "financni_centrum") {
            barva = "red";
        }

        if (pismeno != undefined) { // prázdný marker
            pripona = "-" + pismeno;
        }


		/// vytvoreni markerů, marker se vkladá na mapu, marker2 se vkládá do pole zobrazene_markery, oba markery jsou prakticky stejné
		/// marker se znamena ze je zobrazen na aktualni strane pri strankovani, marker2 se dava do toho pole co uz je zobrazeno ale neni na aktualni strane (nema pismeno ve znacce)
        /* přidání markerů */
        var nazev_markeru = "marker-" + barva + pripona;

        var ikonka = new GIcon();
        ikonka.image = '/images/Maps/' + nazev_markeru + '/image.png';
        ikonka.shadow = '/images/Maps/' + nazev_markeru + '/shadow.png';
        ikonka.iconSize = new GSize(34, 38);
        ikonka.shadowSize = new GSize(53, 38);
        ikonka.iconAnchor = new GPoint(0, 38);
        ikonka.infoWindowAnchor = new GPoint(17, 0);
        ikonka.printImage = '/images/Maps/' + nazev_markeru + '/printImage.gif';
        ikonka.mozPrintImage = '/images/Maps/' + nazev_markeru + '/mozPrintImage.gif';
        ikonka.printShadow = '/images/Maps/' + nazev_markeru + '/printShadow.gif';
        ikonka.transparent = '/images/Maps/' + nazev_markeru + '/transparent.png';
        ikonka.imageMap = [27, 0, 27, 1, 27, 2, 27, 3, 27, 4, 27, 5, 27, 6, 27, 7, 27, 8, 27, 9, 27, 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 27, 20, 33, 21, 33, 22, 33, 23, 33, 24, 32, 25, 32, 26, 31, 27, 30, 28, 31, 29, 30, 30, 30, 31, 17, 32, 19, 33, 18, 34, 15, 35, 15, 36, 14, 37, 13, 37, 13, 36, 12, 35, 11, 34, 11, 33, 10, 32, 3, 31, 3, 30, 3, 29, 3, 28, 0, 27, 0, 26, 0, 25, 0, 24, 0, 23, 0, 22, 0, 21, 0, 20, 0, 19, 0, 18, 0, 17, 0, 16, 0, 15, 0, 14, 0, 13, 0, 12, 0, 11, 0, 10, 0, 9, 0, 8, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0, 1, 0, 0];

        var markerOptions = { icon: ikonka };

        var point = new GLatLng(lat, lon);
        var marker = new GMarker(point, markerOptions);
		
		marker.dbg_pismeno = pismeno;    ///ladeni
		
	  //mapa.addOverlay(marker);
	  //mapa_addOverlay_proxy(marker);

		zobrazene_markery_pismenka[index - 1] = marker;

        // pro zobrazení při stránkování
        var nazev_markeru = "marker-" + barva;

        var ikonka = new GIcon();
        ikonka.image = '/images/Maps/' + nazev_markeru + '/image.png';
        ikonka.shadow = '/images/Maps/' + nazev_markeru + '/shadow.png';
        ikonka.iconSize = new GSize(34, 38);
        ikonka.shadowSize = new GSize(53, 38);
        ikonka.iconAnchor = new GPoint(0, 38);
        ikonka.infoWindowAnchor = new GPoint(17, 0);
        ikonka.printImage = '/images/Maps/' + nazev_markeru + '/printImage.gif';
        ikonka.mozPrintImage = '/images/Maps/' + nazev_markeru + '/mozPrintImage.gif';
        ikonka.printShadow = '/images/Maps/' + nazev_markeru + '/printShadow.gif';
        ikonka.transparent = '/images/Maps/' + nazev_markeru + '/transparent.png';
        ikonka.imageMap = [27, 0, 27, 1, 27, 2, 27, 3, 27, 4, 27, 5, 27, 6, 27, 7, 27, 8, 27, 9, 27, 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 27, 20, 33, 21, 33, 22, 33, 23, 33, 24, 32, 25, 32, 26, 31, 27, 30, 28, 31, 29, 30, 30, 30, 31, 17, 32, 19, 33, 18, 34, 15, 35, 15, 36, 14, 37, 13, 37, 13, 36, 12, 35, 11, 34, 11, 33, 10, 32, 3, 31, 3, 30, 3, 29, 3, 28, 0, 27, 0, 26, 0, 25, 0, 24, 0, 23, 0, 22, 0, 21, 0, 20, 0, 19, 0, 18, 0, 17, 0, 16, 0, 15, 0, 14, 0, 13, 0, 12, 0, 11, 0, 10, 0, 9, 0, 8, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0, 1, 0, 0];

        var markerOptions = { icon: ikonka };

        var marker2 = new GMarker(point, markerOptions);
		
		marker2.dbg_pismeno = pismeno;   /// ladeni
		
        var newHTML = html.html();

        GEvent.addListener(marker, 'click', function() {
            marker_click_in_progress = true;

            marker.openExtInfoWindow(
		      mapa,
		      "map_infowindow",
		      lazy_unique_image_init(newHTML),
		      { beakOffset: 0 }
		    );
        });

        GEvent.addListener(marker2, 'click', function() {
            
            marker_click_in_progress = true;

            marker2.openExtInfoWindow(
		      mapa,
		      "map_infowindow",
		      lazy_unique_image_init(newHTML),
		      { beakOffset: 0 }
		    );
        });

        zobrazene_markery[index - 1 + offset_vyhledanych + 0] = marker2; // přidáme marker do pole všech zobrazených markerů

        hrefFirst = index == 1 ? "set_visible('bankomatyMenuTop');" : "set_visible('bankomatyMenuTop');";
        hrefLast = index == pocet_vyhledanych ? ";set_visible('bankomatyMenuBottom');" : "set_visible('bankomatyMenuBottom');";
        href = "javascript:jQuery('#mapa_vyhledavani_mapa_seznam').attr('class','bankomaty-menu bankomaty-menu-" + index + "');" + hrefFirst + hrefLast;

		/// pridani polozky do leveho strankovani (jen pokud ma pismeno, jinak je na jine strane)
        /* přidání položek menu */
        if (pismeno != undefined) {
          /// {{{ evt <a>??.click
            var odkaz = jQuery('<a href="' + href + '"></a>').click(function() {
                var js = odkaz.attr('href');
                eval(js);
                mapa.closeExtInfoWindow();

                marker_click_in_progress = true;                

                marker.openExtInfoWindow(
			      mapa,
			      "map_infowindow",
			      lazy_unique_image_init(newHTML),
			      { beakOffset: 0 }
			    );

                return false;
            });
          /// }}} evt <a>??.click


            var classMenuItem = '';
            if (index == 1) {
                classMenuItem = 'first';
            }
            else if (index == pocet_vyhledanych) {
                classMenuItem = 'last'
            }
            if (typ == "bankomat") {
              var innerHtml = '<strong>' + mesto + '</strong><br />' + ulice + '<br />' + upresneni_polohy + '<br />';
              if (poznamka) innerHtml = innerHtml + '<div class="map-note"><a href="#" alt="' + poznamka + ' "title="' + poznamka + '">Poznámka</a></div>';

              var polozka_menu = odkaz.append(jQuery('<div class="bank-menu-item ' + classMenuItem + '"><div class="bank-menu-mark ' + menu_class + '">' + pismeno + '</div><div class="bank-menu-text">' + innerHtml + '</div></div>'));
            }
            else {
                var polozka_menu = odkaz.append(jQuery('<div class="bank-menu-item ' + classMenuItem + '">' + posta_uroven_html + '<div class="bank-menu-mark ' + menu_class + '">' + pismeno + '</div><div class="bank-menu-text"><strong>' + nazev + '</strong><br />' + ulice + '<br />' + mesto + '<br /></div></div>'));
            }

            jQuery("#mapa_vyhledavani_mapa_seznam").append(polozka_menu);
        }

        /// funkce je volana i na detailu, kde se zobrazuje pobocka hned
		/* zobrazení markeru ihned pokud jsme na detailu pobočky */
        if (jQuery("#mapa_pobocka_params").length > 0) {

            marker_click_in_progress = true;
            
            marker.openExtInfoWindow(
		      mapa,
		      "map_infowindow",
              lazy_unique_image_init(newHTML),
                { beakOffset: 0 }
		    );
        }

    }
	/// - tabulka
	/// pridani radku do tabulky
    else if (zobrazena_tabulka) {
        if (typ == "bankomat") {
            var radek = jQuery('<tr></tr>').append(jQuery('<td class="bankomaty-first"></td>').append(html)).append("<td>" + ulice + "</td>").append("<td>" + upresneni_polohy + "</td>");
            jQuery("#mapa_vyhledavani_tabulka tr.strankovani").before(radek);
        }
        else {
            var radek = jQuery('<tr onmouseover="this.style.backgroundColor=\'#e3f6d6\';this.style.cursor=\'pointer\';" onmouseout="this.style.backgroundColor=\'#fff\';" onclick="location.href=\'' + URL + '\';"></tr>').append(jQuery('<td class="bankomaty-first"></td>').append(html)).append("<td>" + ulice + "</td>").append("<td>" + mesto + "</td>").append("<td>" + formatPostalCode(PSC) + "</td>");
            jQuery("#mapa_vyhledavani_tabulka tr.strankovani").before(radek);
        }
    }
}

/// strankovani v levem seznamu u mapy
function mapa_zobrazit_dalsi(lat, lon) {
    mapa_clearOverlays_proxy(); // vymazání markerů z mapy

    if (zobrazena_mapa) {
        offset_vyhledanych += 5;
    }

    mapa_get_objekty(lat, lon);
}

function mapa_zobrazit_predchozi(lat, lon) {
    mapa_clearOverlays_proxy(); // vymazání markerů z mapy

    if (zobrazena_mapa) {
        offset_vyhledanych -= 5;
    }

    mapa_get_objekty(lat, lon);
}

/// nastaveni mapy aby ukazala CR
function mapa_ukaz_cr() {
  mapa.checkResize();
  mapa.setCenter(allowedBounds.getCenter(), minimumMapResolution); // centrujeme mapu a zobrazíme ČR
  mapa.savePosition(); 
}

/// vraci hodnotu parametru name z url
function gup(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return results[1]; }

/// dve funkce pro hezke zobrazeni GPS
function float2gps(Ffloat, positive, negative) {
    x = Math.abs(Ffloat);
    deg = Math.floor(x);
    min_sec = (x - deg) * 60;
    min = Math.floor(min_sec);
    sec = (min_sec - min) * 60;
    return deg + "°" + min + "'" + sec.toString().substring(0, 6) + '"' + (Ffloat >= 0 ? positive : negative);
}

function floats2gps(lat, lng) {
    return float2gps(lat, "N", "S") + ", " + float2gps(lng, "E", "W");
}

/// hezke zobrazeni PSC
function formatPostalCode(refString) {
    var postalCode;
    if (refString.search(" ") == -1) {
        if (refString.length == 5) {
            postalCode = refString.substr(0, 3) + " " + refString.substr(3, 2);
            return postalCode;
        } else {
            return refString;
        }
    } else {
        return refString;
    }
}

