var mapLocation = 0;
var mapProperty = 0;
var mapRadius = 0;
var mapDuration;



/**
 * Funkce s tabulkou pro preklad kraju do id Google map
 *
 * Tuto funkci vyuziva funkci set_map_center v gmap.js
 */
function changeLocation(id) {
    var translateTable = Array();
    if(akce != "slovenska-republika")
    {
        translateTable[0] = 17;  //Celá ČR
        translateTable[9] = 1;  //Jihočeský kraj
        translateTable[11] = 2;  //Jihomoravský kraj
        translateTable[5] = 3;  //Karlovarský kraj
        translateTable[7] = 4;  //Královehradecký kraj
        translateTable[3] = 5;  //Liberecký kraj
        translateTable[14] = 6;  //Moravskoslezský kraj
        translateTable[13] = 7;  //Olomoucký kraj
        translateTable[8] = 8;  //Pardubický kraj
        translateTable[6] = 9;  //Plzeňský kraj
        translateTable[1] = 11; //Praha
        translateTable[2] = 10; //Středočeský kraj
        translateTable[4] = 12; //Ústecký kraj
        translateTable[10] = 13; //Vysočina
        translateTable[12] = 14; //Zlínský kraj
    }
    else
    {
        translateTable[0] = 18; //Celá SR
        translateTable[15] = 19; // Bratislavský
        translateTable[16] = 20; // Trnavský
        translateTable[17] = 21; // Nitranský
        translateTable[18] = 22; // Trenčínský
        translateTable[19] = 23; // Banskobystrický
        translateTable[20] = 24; // Žilinský
        translateTable[21] = 25; // Košický
        translateTable[22] = 26; // Prešovský
    }

    var location = translateTable[id];

    set_map_center(location);

    if (getHomeLat() > 0 && getHomeLng() > 0) {
        drawMarker('home', getHomeLat(), getHomeLng(), 'Váš výchozí bod', 'Zde se nachází výchozí bod pro výpočet vzdálenosti nebo navigaci do obchodu.', gMap);
    }

    // zvyrazneni odkazu
    $('.kraj').removeClass('text-blue');
    $('#kraj-' + id).addClass('text-blue');

    //zmena nadpisu
    $('#activeRegion').html($('#kraj-' + id).html());

    //nastaveni novych markeru
    if (id == 0 && mapProperty == 0) {
        drawMarkersFromJSON(shops);
    }
    else if (mapRadius != 0) {
        mapLocation = id;
        GMapSliderCallback(defaultGMapValues, mapRadius);
    }
    else {
        $.ajax({
            url: webDir() + language + sekce,
            data: ({
                ajaxAction: 'setParams',
                category_id: id,
                property_id: mapProperty,
                akce: akce
            }),
            success: function(data) {
                deleteOverlays();
                drawMarkersFromJSON(data);
                redrawRadius(mapRadius);
            }
        });
    }
    mapLocation = id;

    getShops();
}

function changeProperty(id) {
    // zvyrazneni odkazu
    $('.box').removeClass('active');
    $('.text-blue').removeClass("text-blue");
    $('#property-' + id).addClass('text-blue').parent().addClass("active");

    //nastaveni novych markeru
    mapProperty = id;
    deleteOverlays();
    deleteRoutes();
    changeLocation(mapLocation);
}

function GMapSliderCallback(defaultGMapValues, distance) {
    // smazani starych markeru
    deleteOverlays();

    mapRadius = distance;

    // vykresleni vysledku AJAXoveho requestu
    $.ajax({
        url: webDir() + language + sekce,
        data: ({
            ajaxAction: 'setParams',
            category_id: mapLocation,
            property_id: mapProperty,
            distance: distance,
            centerLat: getHomeLat(),
            centerLng: getHomeLng(),
            akce: akce
        }),
        success: function(data) {
            drawMarkersFromJSON(data);
            getShops();
        }
    });
}

function searchShops(query,shopsContent)
{
    $.ajax(
        {
            url: webDir() + language + sekce,
            data: {
                ajaxAction: "search",
                q: query,
                shopContent: shopsContent,
                akce: akce
            },
            success: function(data){
                if(!shopsContent){
                    deleteRoutes();
                    redrawMarkersFromJSON(data);
                    searchShops(query,true);
                }
                else
                {
                    $("#shopsContent").html(data);
                }
            }
        }
    );
}

function getShops() {
    $.ajax({
        url: webDir() + language + sekce,
        data: ({
            ajaxAction: 'setParams',
            category_id: mapLocation,
            property_id: mapProperty,
            distance: mapRadius,
            centerLat: getHomeLat(),
            centerLng: getHomeLng(),
            getShops: true,
            akce: akce
        }),
        success: function(data) {
            $('#shopsContent').html(data);
        }
    });
}

function navigateToShop(id) {
    $.ajax({
        url: webDir() + language + sekce,
        data: ({
            ajaxAction: 'getShopLocation',
            id: id
        }),
        success: function(data) {
            routeFromTo(data);
            var address = jQuery.parseJSON(data);
            $('#to').val(address['address']);
        }
    });
}

function addToStepDisplay(index, stepText) {
    $('#mapSteps').html($('#mapSteps').html() + '<br /><div id="' + index + '" class="steps">' + stepText + '<div>');
}

function showDuration(duration) {
    mapDuration = Math.floor(duration.value / 60);
}

function showDistance(distance) {
    $('#mapSteps').html($('#mapSteps').html() + '<br /><div class="steps">Vzdálenost: ' + Math.floor(distance.value / 1000) + 'km Čas: ' + mapDuration + 'min.</div>');
}

function showSteps() {
    $('#mapMenu').addClass('hidden');
    $('#mapSteps').removeClass('hidden');
}

function hiddenSteps() {
    $('#mapSteps').addClass('hidden');
    $('#mapMenu').removeClass('hidden');
    $('#mapSteps').html('<a href="#" onclick="hiddenSteps(); return false;" class="closeSteps">Zavřít</a>');
    changeLocation(mapLocation);
}

function highlightStep(index) {
    $('.steps').css('color', '');
    $('#' + index).css('color', '#4B9341');
}

function setMyPosition(position) {
    // smazani starych markeru
    deleteOverlays();

    // vycentrovani mapy
    gMap.setCenter(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
    gMap.setZoom(12);

    // nastaveni adresy do adresnich radku
    var address = getAddressByLatlng(position.coords.latitude, position.coords.longitude);
    $('#from').val(address);
    $('#address').val(address);

    //vykresleni markeru pro aktualni polohu
    drawMarker('home', position.coords.latitude, position.coords.longitude, 'Váš výchozí bod', 'Zde se nachází výchozí bod pro výpočet vzdálenosti nebo navigaci do obchodu.', gMap);
    setHomeLocation(position.coords.latitude, position.coords.longitude);

    //nastaveni novych markeru
    if (mapLocation == 0 && mapProperty == 0) {
        drawMarkersFromJSON(shops);
    }
    else if (mapRadius != 0) {
        GMapSliderCallback(defaultGMapValues, mapRadius);
    }
    else {
        $.ajax({
            url: webDir() + language + sekce,
            data: ({
                ajaxAction: 'setParams',
                category_id: mapLocation,
                property_id: mapProperty,
                akce: akce
            }),
            success: function(data) {
                drawMarkersFromJSON(data);
                redrawRadius(mapRadius);
            }
        });
    }
}

function setMyPositionByAddress(position) {
    // smazani starych markeru
    deleteOverlays();

    //vykresleni markeru pro aktualni polohu
    drawMarker('home', position.geometry.location.lat(), position.geometry.location.lng(), 'Váš výchozí bod', 'Zde se nachází výchozí bod pro výpočet vzdálenosti nebo navigaci do obchodu.', gMap);
    setHomeLocation(position.geometry.location.lat(), position.geometry.location.lng());

    $('#from').val(position.formatted_address);
    $('#address').val(position.formatted_address);

    //nastaveni novych markeru
    if (mapLocation == 0 && mapProperty == 0) {
        drawMarkersFromJSON(shops);
    }
    else if (mapRadius != 0) {
        GMapSliderCallback(defaultGMapValues, mapRadius);
    }
    else {
        $.ajax({
            url: webDir() + language + sekce,
            data: ({
                ajaxAction: 'setParams',
                category_id: mapLocation,
                property_id: mapProperty,
                akce: akce
            }),
            success: function(data) {
                drawMarkersFromJSON(data);
                redrawRadius(mapRadius);
            }
        });
    }
}

function highlightShop(id) {
    $('.seller-item').removeClass('highlight');
    $('#shop-' + id).addClass('highlight');
}

function navigateMe() {
    var from = $('#from').val();
    var to = $('#to').val();

    //nalezeni latlng
    getLatLngByAddress(from, function(fromLatLng) {
        getLatLngByAddress(to, function(toLatLng) {
            gMap.setCenter(fromLatLng);
            gMap.setZoom(12);
            setHomeLocation(fromLatLng.lat(), fromLatLng.lng());
            redrawRadius(mapRadius);

            $.ajax({
                url: webDir() + language + sekce,
                data: ({
                    ajaxAction: 'getJSON',
                    lat: toLatLng.lat(),
                    lng: toLatLng.lng()
                }),
                success: function(data) {
                    deleteOverlays();
                    routeFromTo(data, fromLatLng)
                }
            });
        });
    });
}

function changeInputText(id, text)
{
    $(function(){
        if($(id).val() == text)
        {
            $(id).val('');
        }
        else
        {
            if($(id).val() == '') $(id).val(text);
        }
    })
}
