/*
 * @name googleMaps Plugin for multiple Markers
 * @author Alexander Tobies
 */

var gMapMap, gMapData, gMapCenterLat, gMapCenterLong, gMapZoomLevel, points, html, markers, gMarkerLength;

$.fn.gMapMarker = function(settings) {

    settings = $.extend({}, $.gMapMarker.defaults, settings);

    gMapMap = settings.gMapMap;
    gMapData = settings.gMapData;
    gMapCenterLat = settings.gMapCenterLat;
    gMapCenterLong = settings.gMapCenterLong;
    gMapZoomLevel = settings.gMapZoomLevel;

    points = new Array();
    html = new Array();
    markers = new Array();

    gMarkerLength = gMapData.length;

    __init = function(){
        var gBrowserIsCompatible = false;

        if (GBrowserIsCompatible()) {
            var map = new GMap2(document.getElementById(gMapMap))
            map.setCenter(new GLatLng(gMapCenterLat, gMapCenterLong), gMapZoomLevel);
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            map.enableScrollWheelZoom();

            //-------------------

            var gMapMarkerIcon = new GIcon(G_DEFAULT_ICON);
            //gMapMarkerIcon.image = "assets/img/gMapMarker.png";

            function createMarker(point,html,icon, name) {
                var marker = new GMarker(point, {icon:icon});
                GEvent.addListener(marker, "click", function() {
                    marker.openInfoWindowHtml(html);
                });
                return marker;
            }

            for( var i = 0; i < gMarkerLength; i++) {

                points[ i ] = new GLatLng(gMapData[i].locLat, gMapData[i].locLong);
                //var logo = (gMapData[i].logo == "") ? "" : "<img src=\"files/logos/"+gMapData[i].logo+"\" alt=\""+gMapData[i].name+"\" style=\"float: left;\"/>";
                var additionalInfo = "";
                additionalInfo += (gMapData[i].tel == "") ? "" : "<p>Tel.: " + gMapData[i].tel + "</p>";
                additionalInfo += (gMapData[i].fax == "") ? "" : "<p>Fax.: " + gMapData[i].fax + "</p>";
                additionalInfo += (gMapData[i].mail == "") ? "" : "<p><a href=\"mailto:" + gMapData[i].mail + "\">" + gMapData[i].mail + "</a></p>";
                additionalInfo += (gMapData[i].web == "") ? "" : "<p><a href=\"http://" + gMapData[i].web + "\" target=\"_blank\">" + gMapData[i].web + "</a></p>";
                html [ i ] = "<h3>" + gMapData[i].name + "</h3>\n\
                                <p>" + gMapData[i].address + "</p>\n\
                                <p>" + gMapData[i].postalcode + " " + gMapData[i].city + "</p>\n\
                                " + additionalInfo + "\n\
                                <p>&nbsp;</p>";

                markers[ i ] = createMarker(points[ i ], html[ i ], gMapMarkerIcon, gMapData[i].name);
                map.addOverlay(markers[ i ]);

            }
            gBrowserIsCompatible = true;
        }
    }
    
    if(!gMapData || !gMapMap){
        return false;
    }
    else {
        __init();
    }
    
}
$.fn.gMapMarker.getMarkers = function(){
    return markers;
}
$.fn.gMapMarker.getHTML = function(){
    return html;
}
$.gMapMarker = {
    defaults: {
        gMapMap: false,
        gMapData: false,
        gMapCenterLat: 0,
        gMapCenterLong: 0,
        gMapZoomLevel: 0
    }
};
