var pinGroups = {};

function showPinGroup(group) {
    var g = pinGroups[group];
    if (g)
        for (var i = 0; i < g.length; i++)
            g[i].show();
}

function hidePinGroup(group) {
    var g = pinGroups[group];
    if (g)
        for (var i = 0; i < g.length; i++)
            g[i].hide();
}

function showAllPins() {
    for (var g in pinGroups)
        showPinGroup(g);
}

function hideAllPins() {
    for (var g in pinGroups)
        hidePinGroup(g);
}

function createPin(point, info, icon) {
    var gi = new GIcon(G_DEFAULT_ICON);
    if (icon) { 
        gi.image = icon;
        gi.iconSize = new GSize(32, 32);    
    } else {
		gi.image = "img/gm-flag.png";
		gi.shadow = "img/gm-flag-shadow.png";
        gi.iconSize = new GSize(32, 32);  		
    }
    
    var marker = new GMarker(point, {icon:gi});
    GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindow(info);
		marker.openInfoWindowHtml(info,{maxWidth:175});
});
    return marker;
}

function addPin(map, group, pin) {
    if (!pinGroups[group])
        pinGroups[group] = [];
    pinGroups[group].push(pin);
    map.addOverlay(pin);
}

function addPins(map, group, pinSpecs) {
    for (var i = 0; i < pinSpecs.length; i++)
        addPin(map, group, createPin(new GLatLng(pinSpecs[i].lat, pinSpecs[i].lng), pinSpecs[i].dsc, pinSpecs[i].icon));
}