//
// Map utility functions
//

var markers = new Array();
var hightlighted;
var hightlighted_id;

//
// get zoom
//
function get_zoom(level) {
    if(typeof level == 'undefined') {
        level = 13;
    }
    
    var zoom_str = '';
    
    if(level < 14) {
        zoom_str = 'small';
    }
    else if(level > 13 && level < 15) {
        zoom_str = 'normal';
    }
    else {
        zoom_str = 'big';
    }
    
    //if(typeof console != 'undefined') {
    //    console.log("level --> " + level);
    //    console.log("icons --> " + zoom_str);
    //}
    
    return zoom_str;
}

//
// creates a "normal" marker
//
function createMarker(lat, lng, color, draggable) {
    if(typeof color == 'undefined' || color == null) {
        color = 'red';
    }
    
    if(typeof draggable == 'undefined' || draggable == null) {
        draggable = false;
    }
    
    var f = new GIcon();
    
    if (!/landing/.test(color) && !/poi/.test(color) && !/show/.test(color) && !/ticket/.test(color) && !/change/.test(color) &&
        !/icona_chiesa/.test(color) && !/icona_musei/.test(color) && !/icona_negozi/.test(color) && !/icona_ristoranti/.test(color) && !/icona_curiosita/.test(color)
        ) {
        f.image = "http://labs.google.com/ridefinder/images/mm_20_" + color + ".png";
        f.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        f.iconSize = new GSize(12,20);
        f.shadowSize = new GSize(22,20);
        f.iconAnchor = new GPoint(6,20);
        f.infoWindowAnchor = new GPoint(6,1);
        f.infoShadowAnchor = new GPoint(13,13);
    }
    else {
        var zoom_str = get_zoom(document.map.getZoom());
        
        if (/big/.test(zoom_str)) {
            f.image = "http://" + project_host + "/" + project_path + "map_browser/images/icons/" + color + "_big_icon.png";
            f.shadow = "http://" + project_host + "/" + project_path + "map_browser/images/icons/shadow_big.png";
            f.iconSize = new GSize(15,20);
            f.shadowSize = new GSize(22,20);
            f.iconAnchor = new GPoint(8,20);
            f.infoWindowAnchor = new GPoint(6,1);
            f.infoShadowAnchor = new GPoint(13,13);
        }
        else if (/small/.test(zoom_str)) {
            f.image = "http://" + project_host + "/" + project_path + "map_browser/images/icons/" + color + "_small_icon.png";
            f.shadow = "http://" + project_host + "/" + project_path + "map_browser/images/icons/shadow_small.png";
            f.iconSize = new GSize(8,10);
            f.shadowSize = new GSize(12,10);
            f.iconAnchor = new GPoint(4,10);
            f.infoWindowAnchor = new GPoint(6,1);
            f.infoShadowAnchor = new GPoint(13,13);
        }
        else {
            f.image = "http://" + project_host + "/" + project_path + "map_browser/images/icons/" + color + "_icon.png";
            f.shadow = "http://" + project_host + "/" + project_path + "map_browser/images/icons/shadow.png";
            f.iconSize = new GSize(11,15);
            f.shadowSize = new GSize(16,15);
            f.iconAnchor = new GPoint(5,15);
            f.infoWindowAnchor = new GPoint(6,1);
            f.infoShadowAnchor = new GPoint(13,13);
        }
    }
    
    var newMarker = new GMarker(new GLatLng(parseFloat(lat),parseFloat(lng)),
    {
        icon: f,
        draggable: draggable
    });
    
    return newMarker;
}

//
// highlight place marker
//
function highlight(place_id) {
    var origin_highlight_id;
    
    if(typeof highlighted != 'undefined' && highlighted != null) {
        markers[highlighted_id] = createMarker(markers[highlighted_id].getLatLng().lat(), markers[highlighted_id].getLatLng().lng());
        
        document.map.removeOverlay(highlighted);
        document.map.addOverlay(markers[highlighted_id]);
        
        origin_highlight_id = highlighted_id;
    }
    
    if(typeof markers[place_id] != 'undefined') {
        highlighted = createMarker(markers[place_id].getLatLng().lat(), markers[place_id].getLatLng().lng(), 'yellow', true);
        highlighted_id = place_id;
        
        document.map.removeOverlay(markers[place_id]);
        document.map.addOverlay(highlighted);
        
        // set center to highlight marker
        document.map.setCenter(highlighted.getLatLng());
    }
    
    return origin_highlight_id;
}
