var poi_lat;
var poi_lon;

var bounds = new GLatLngBounds();

function get_sx_icon() {
    var sx_icon        = new GIcon(G_DEFAULT_ICON);
    sx_icon.image      = "/common/img/app/multimap/sx-marker.png";
    sx_icon.iconSize   = new GSize(37, 29);
    sx_icon.iconAnchor = new GPoint(18, 29);
    sx_icon.infoWindowAnchor = new GPoint(18, 29);
    sx_icon.shadow     = "/common/img/app/multimap/shadow-sx-marker.png";
    sx_icon.shadowSize = new GSize(52, 29);
    return sx_icon;
}

var poi_markers = [];

var poi_icons = [];

var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.iconSize   = new GSize(29, 38);
baseIcon.iconAnchor = new GPoint(29, 38);
baseIcon.infoWindowAnchor = new GPoint(29, 38);

poi_icons["bank"] = new GIcon(baseIcon,"/common/img/app/multimap/icon-bank.gif");
poi_icons["restaurant"] = new GIcon(baseIcon,"/common/img/app/multimap/icon-gaststaette.gif");
poi_icons["fuel"] = new GIcon(baseIcon,"/common/img/app/multimap/icon-tankstelle.gif");
poi_icons["hotel"] = new GIcon(baseIcon,"/common/img/app/multimap/icon-hotel.gif");


function create_poi_marker(point,category) {
    var marker = new GMarker(point,poi_icons[category]);
    // === Store the category and name info as a marker properties ===
    marker.mycategory = category;

    poi_markers.push(marker);
    return marker;
}

function create_poi_info_marker(point,category,html) {
    var marker = new GMarker(point,poi_icons[category]);
    // === Store the category and name info as a marker properties ===
    marker.mycategory = category;

    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
    });

    poi_markers.push(marker);
    return marker;
}


function show_poi(category) {
    for (var i=0; i<poi_markers.length; i++) {
        if (poi_markers[i].mycategory == category) {
            poi_markers[i].show();
        }
    }
    // == check the checkbox ==
    document.getElementById(category+"box").checked = true;
}

function hide_poi(category) {
    for (var i=0; i<poi_markers.length; i++) {
        if (poi_markers[i].mycategory == category) {
            poi_markers[i].hide();
        }
    }
    // == clear the checkbox ==
    document.getElementById(category+"box").checked = false;

}

function show_poi_in_map(box,category){
    if (box.checked) {
        show_poi(category);
    } else {
        hide_poi(category);
    }
}

var hoteljson;
function get_hotel_json(hotel_json){
    hoteljson = hotel_json;
}


function gmap_ini(la, lo, level, zoom, reload) {
    if (typeof reload == "undefined") reload = 0;

    if (!level) {
        level = 'country';
    }
    switch (level) {
        case 'station': if (typeof zoom == "undefined") zoom = 14; break;
        case 'town'   : if (typeof zoom == "undefined") zoom = 11; break;
        case 'country': if (typeof zoom == "undefined") zoom =  6; break;
        default: zoom = 10;
    }
    var map   = new GMap2(document.getElementById("sx_seo_map"));
    var point = new GLatLng(la, lo);
    map.setCenter(point, zoom);
    map.addControl(new GMapTypeControl());
    map.addControl(new GSmallMapControl());
    map.addControl(new GScaleControl());
    if (level == 'station') {
        markerOptions = { 
            icon:get_sx_icon()
        };
        map.addOverlay(new GMarker(point,markerOptions));



        // display point of interest markers in map
        var latitude = $('#geo-latu').val();
        var longitude = $('#geo-lotu').val();
        var cit = $('#cit').val();
        var bounds = map.getBounds().toString();

        bounds = bounds.replace(/[\(\) ]+/g, '');
        bounds = bounds.split(',');

        $.getJSON(self.location.protocol + "//" + self.location.host + "/php/seo/extend_map" , {
            minX:bounds[0],
            minY:bounds[1],
            maxX:bounds[2],
            maxY:bounds[3],
            poiX:latitude,
            poiY:longitude,
            cit:cit,
            reload:reload
        }, function(response) {

            var poi_object = eval(response);

            reload = poi_object.rec.reload;

            if(poi_object.rec.amenity != null){
                var bank = poi_object.rec.amenity.bank;
                var restaurant = poi_object.rec.amenity.restaurant;
                var fuel = poi_object.rec.amenity.fuel;
                var poi_point;
                var lon;
                var lat;

                var marker;

                //bank
                if(typeof(bank)!="undefined"){
                    for (var ba=0; ba<bank.length; ba++){
                        lon = bank[ba].lon;
                        lat = bank[ba].lat;
                        poi_point = new GLatLng(lat, lon);

                        var name_ba = bank[ba].name;
                        if (name_ba != null && name_ba != ''){
                            var info_html_ba = '<p>' + name_ba + '</p>'
                            marker = create_poi_info_marker(poi_point,'bank',info_html_ba);
                        }else{
                            marker = create_poi_marker(poi_point,'bank');
                        }
                        $('#bankbox-marker').show();
                        map.addOverlay(marker);
                        marker.hide();
                    }
                }

                //restaurant
                if(typeof(restaurant)!="undefined"){
                    for (var re=0; re<restaurant.length; re++){
                        lon = restaurant[re].lon;
                        lat = restaurant[re].lat;
                        poi_point = new GLatLng(lat, lon);

                        var name_res = restaurant[re].name;
                        if (name_res != null && name_res != ''){
                            var info_html_res = '<p>' + name_res + '</p>'
                            marker = create_poi_info_marker(poi_point,'restaurant',info_html_res);
                        }else{
                            marker = create_poi_marker(poi_point,'restaurant');
                        }

                        $('#restaurantbox-marker').show();
                        map.addOverlay(marker);
                        marker.hide();
                    }
                }
                if(typeof(fuel)!="undefined"){
                    //fuel
                    for (var fu=0; fu<fuel.length; fu++){
                        lon = fuel[fu].lon;
                        lat = fuel[fu].lat;
                        poi_point = new GLatLng(lat, lon);

                        var name_fu = fuel[fu].name;
                        if (name_fu != null && name_fu != ''){
                            var info_html_fu = '<p>' + name_fu + '</p>'
                            marker = create_poi_info_marker(poi_point,'fuel',info_html_fu);
                        }else{
                            marker = create_poi_marker(poi_point,'fuel');
                        }

                        $('#fuelbox-marker').show();
                        map.addOverlay(marker);
                        marker.show();
                    }
                } else {
                    if (zoom > 12) {
                        zoom -= 1;
                        gmap_ini(la, lo, level, zoom, 1);
                    }
                }
            } else {
                if (zoom > 13) {
                    zoom -= 1;
                    gmap_ini(la, lo, level, zoom, 1);
                }
            }
        });

        if(hoteljson != null && hoteljson != ""){
            eval("var hotel=" + hoteljson);
            var hotel_point;
            var lon;
            var lat;
            var marker;

            var activity = hotel.activity;
            var custid = hotel.cust_id;


            for(ii in hotel){
                var intii = parseInt(ii);

                if (!isNaN(intii)){

                    var marker_info_html;

                    var hid = ii;
                    
                    var client = hotel[ii].client;
                    var name = hotel[ii].hotel_name;
                    if(name == null)
                        name = "Hotel"
                    var street = hotel[ii].street;
                    if(street == null)
                        street = "";
                    var city = hotel[ii].city;
                    if(city == null)
                        city = "";
                    var hotel_link = "http://www.hrs.com/web3/hotelData.do?client=" + client + "&customerId=" + custid + "&activity=" + activity + "&hotelnumber=" + hid;
                
                    marker_info_html = '<div> <p>'+name+'</p><p>'+street+'</p><p>'+city+'</p><p><a target="_blank" href="'+hotel_link+'" title="'+name+'">'+name+'</a></p> </div>'


                    lon = hotel[ii].geo_lon;
                    lat = hotel[ii].geo_lat;
                    hotel_point = new GLatLng(lat, lon);
                    marker = create_poi_info_marker(hotel_point,'hotel', marker_info_html);
                    $('#hotel-marker').show();
                

                    map.addOverlay(marker);
                
                    marker.hide();
                }
            }
            
        }
           
            

    }
    return map;
}


var country_markers = [];

function gmap_add_station(map, la, lo, name, link, linkdesc) {
    var point   = new GLatLng(la, lo);
    bounds.extend(point);
    markerOptions = {
        icon:get_sx_icon()
    };
    marker = new GMarker(point,markerOptions);
    GEvent.addListener(marker, "click", function() {
        var myHtml = name + '<br /><br /><a href="' + link + '">' + linkdesc + '</a>';
        map.openInfoWindowHtml(point, myHtml);
    });

    country_markers.push(marker);

//    map.addOverlay(marker);
}

function add_markers_to_country_map(map){
    var markerCluster = new MarkerClusterer(map, country_markers, {
        gridSize:40
    });
}

function gmap_center(map){
    if(map.getBoundsZoomLevel(bounds) > 15){
        map.setZoom(15);
    }else{
        map.setZoom(map.getBoundsZoomLevel(bounds));
    }
    map.setCenter(bounds.getCenter());
}

// toggle fields in station.tpl
	
$(document).ready(function(){
    $('span.dirheader').click(function(e) {
        e.preventDefault();
        $(this).siblings('div.dirtext').slideToggle("normal");
    }).click();

    $('span.sx-seo-dictionary-key a').click(function(e) {
        e.preventDefault();
        letter = $(this).text();
        $('#sx-seo-dictionary ul').hide();
        $('ul#sx-seo-dictionary-list-' + letter.toLowerCase()).show();
    });
                
        
    // Elementdeklaration
    start_el 	 = $('input[name=start]');
    end_el   	 = $('input[name=end]');
    start_adr_el = $('input[name=start_adr]');
    end_adr_el   = $('input[name=end_adr]');
    adr_el   	 = $('input[name=adr]');
        
    // Werte auslesen
    dir   = $('input[name=dir]').val();
            
    // bei einem Reload sind u.U. die Formatierungen nicht mehr richtig
    // deshalb werden sie hier abhängig vom Zustand dir neu gesetzt
        
    if (dir && dir == 'from') {
            
        // Attributzuweisungen: Sichtbarkeit und readonly
        $(start_adr_el).attr('style','display:inline;');
        $(start_adr_el).attr('readonly','readonly');
                
        $(start_el).attr('style','display:none;');
        $(start_el).attr('readonly','readonly');
                
        $(end_el).attr('style','display:inline;font-style:normal;color:black;');
        $(end_el).removeAttr('readonly');
                                
        $(end_adr_el).attr('style','display:none;');
        $(end_adr_el).attr('readonly','readonly');
                
    } else if (dir && dir != 'from') {
            
        // Attributzuweisungen: Sichtbarkeit und readonly
        $(end_el).attr('style','display:none;');
        $(end_el).attr('readonly','readonly');
				
        $(start_el).attr('style','display:inline;font-style:normal;color:black;');
        $(start_el).removeAttr('readonly');
                
        $(end_adr_el).attr('style','display:inline;');
        $(end_adr_el).attr('readonly','readonly');
                
        $(start_adr_el).attr('style','display:none;');
        $(start_adr_el).attr('readonly','readonly');
    }

    $('#sx-seo-switchdir').click(function(e) {
        e.preventDefault();
            
        start_val = start_el.val(); 			// input name = start
        end_val   = end_el.val();				// input name = end
        start_adr_val   = start_adr_el.val();	// input name = start_adr
        end_adr_val   = end_adr_el.val();		// input name = end_adr
        adr_val   = adr_el.val();				// input name = adr
	        	        
        dir   = $('input[name=dir]').val();

        if (dir == 'to') {
            
            // Zuweisung der Werte in die inputs
            $(start_adr_el).val(end_adr_val);
            $(start_el).val(end_val);
            $(end_el).val(start_val);
            $(adr_el).val(adr_val);
            
            // Attributzuweisungen: Sichtbarkeit und readonly 
            $(start_adr_el).attr('style','display:inline;');
            $(start_adr_el).attr('readonly','readonly');
                
            $(start_el).attr('style','display:none;');
            $(start_el).attr('readonly','readonly');
                
            $(end_el).attr('style','display:inline;font-style:normal;color:black;');
            $(end_el).removeAttr('readonly');
            //alert("remove " + dir);
                
            $(end_adr_el).attr('style','display:none;');
            $(end_adr_el).attr('readonly','readonly');
                
        } else {
            
            // Zuweisung der Werte in die inputs
            $(end_el).val(start_val);
            $(start_el).val(end_val);
            $(start_adr_el).val("");
            $(adr_el).val(adr_val);
                
            // Attributzuweisungen: Sichtbarkeit und readonly 
            $(end_el).attr('style','display:none;');
            $(end_el).attr('readonly','readonly');
				
            $(start_el).attr('style','display:inline;font-style:normal;color:black;');
            $(start_el).removeAttr('readonly');
            //alert("remove " + dir);
                
            $(end_adr_el).attr('style','display:inline;');
            $(end_adr_el).attr('readonly','readonly');
                
            $(start_adr_el).attr('style','display:none;');
            $(start_adr_el).attr('readonly','readonly');
                
        }
        $('input[name=dir]').val(dir == 'from' ? 'to' : 'from');
    });

});

function sx_seo_save_pref(stationId){
    $.getJSON(self.location.protocol + "//" + self.location.host + "/php/seo/setfavstation", {
        station:stationId
    }, function(response) {
        //        alert(response.rec.toSource())
        $('#saveStation').hide();
    });
}


function sx_seo_get_additional_map_info(map, poiX, poiY, cit) {
    var bounds = map.getBounds().toString();

    bounds = bounds.replace(/[\(\) ]+/g, ''); 
    bounds = bounds.split(',');

    $.getJSON(self.location.protocol + "//" + self.location.host + "/php/seo/extend_map" , {
        minX:bounds[0],
        minY:bounds[1],
        maxX:bounds[2],
        maxY:bounds[3],
        poiX:poiX,
        poiY:poiY,
        cit:cit
    }, function(response) {
        });
}


function changePic(pic_path, station_id){
    var src = window.location.protocol + '//' 
    + window.location.host
    + '/sxstations/'
    + station_id
    + "/big/"
    + pic_path.match(/\d\.[a-z]{3}$/);

    $('#startpic').attr("src", src);
}


