var maps = new Array();
var markers = new Array();

// Creates a marker whose info window displays the letter corresponding
// to the given index.
function createMarker(point, dealer) {
  // Create a lettered icon for this point using our icon class
    var letter = dealer[10];
    var letteredIcon = new GIcon(G_DEFAULT_ICON);
    letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
    letteredIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    letteredIcon.iconSize = new GSize(20, 34);
    letteredIcon.shadowSize = new GSize(37, 34);
    letteredIcon.iconAnchor = new GPoint(9, 34);
    letteredIcon.infoWindowAnchor = new GPoint(9, 2);

    // Set up our GMarkerOptions object
    markerOptions = { icon:letteredIcon };
    var marker = new GMarker(point, markerOptions);
    var add2 = (dealer[4] == "") ? "" : dealer[4] + "<br>";
    var open_function = function() {
            marker.openInfoWindowHtml("<b>"+dealer[0]+"</b><br>Products: "+dealer[11]+"<br>"+dealer[3]+"<br>"+add2+dealer[5]+", "+dealer[6]+" "+dealer[7]+"<br>"+dealer[8]+"<br><a href='"+dealer[9]+"' target='_blank'>Driving directions</a>");
            };
    GEvent.addListener(marker, "click", open_function);
    dealer.open_function = open_function;
    return marker;
}

function load_map() {
  if (GBrowserIsCompatible()) {

    for (var m=0; m<maps.length; m++)
    {
        var mapdata = maps[m];
        var dealers = mapdata[1];
        var bounds =new GLatLngBounds();

        // We're going to add all the dealers to bounds

        for (var d=0; d<dealers.length; d++)
        {  
            var lat = dealers[d][1];
            var lon = dealers[d][2];
            var point = new GLatLng(lat,lon);
            markers.push(createMarker(point, dealers[d]));
            bounds.extend(point);
        }

        var map = new GMap2(document.getElementById(mapdata[0]));
        //map.setCenter(new GLatLng(33.9343,-118.146), 13);

        map.setCenter(bounds.getCenter(), 13);
        map.setZoom(map.getBoundsZoomLevel(bounds));
        map.addControl(new GLargeMapControl());
        //map.enableScrollWheelZoom();

        // Add the dealer markers
        for (var i=0; i<markers.length; i++)
            map.addOverlay(markers[i]);
    }
  }
}

function register_map(map_id, dealers)
{
    maps.push( new Array(map_id, dealers) );
}

function scroll_to_element(theElement)
{
  var selectedPosX = 0;
  var selectedPosY = 0;
              
  while(theElement != null){
    selectedPosX += theElement.offsetLeft;
    selectedPosY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
 window.scrollTo(selectedPosX,selectedPosY);
}

function scroll_to_id(id)
{
    scroll_to_element(document.getElementById(id));
}


function open_marker(map_id, letter)
{
    scroll_to_id(map_id);
    window.scrollBy(0,-35);
    for (var m=0; m<maps.length; m++)
    {
        var mapdata = maps[m];
        if (mapdata[0] == map_id)
        {
            var dealers = mapdata[1];
            for (var d=0; d<dealers.length; d++)
            {
                if (dealers[d][10] == letter)
                    dealers[d].open_function();
            }
        }
    }
}

