var debiIcon= null;
var dugIcon = null;
var geoCoder = null;
var markerManager;
var map;
var debiImage = "/inc_common/styles/img/google-maps/Google-Icon-Debitel.png"
var debiShadow = "/inc_common/styles/img/google-maps/Google-Icon-Debitel-Schatten.png"
var dugImage = "/inc_common/styles/img/google-maps/Google-Icon-Dug.png"
var dugShadow = "/inc_common/styles/img/google-maps/Google-Icon-Dug-Schatten.png"

jQuery(document).ready(function () {
    if (GBrowserIsCompatible() && (jQuery('#map_dealersearch_main').length>0) ) {
        debiIcon = new GIcon();
        debiIcon.image = debiImage;
        debiIcon.shadow = debiShadow;
        debiIcon.shadowSize = new GSize(70, 38);
        debiIcon.iconAnchor = new GPoint(6, 39);
        debiIcon.infoWindowAnchor = new GPoint(50, - 2);
        dugIcon = new GIcon();
        dugIcon.image = dugImage;
        dugIcon.shadow = dugShadow;
        dugIcon.shadowSize = new GSize(70, 38);
        dugIcon.iconAnchor = new GPoint(18, 40);
        dugIcon.infoWindowAnchor = new GPoint(50, - 2);
        geocoder = new GClientGeocoder();
        initMap('dealersearch_main');
    }

function addMarkersFromTable() {
    var rechteck = new GLatLngBounds();
    map.clearOverlays();
    // markerManager = new GMarkerManager(map);
    map.clearOverlays();
    jQuery('div.aDealer:not(.hidden) > table').each(function() {


        var tabelle = this;
        dealer_name = jQuery("th", jQuery(this)).text();
        street = jQuery("td.street", jQuery(this)).text();
        city = jQuery("td.city", jQuery(this)).text();
        adress = street + ", " + city;
        jQuery(tabelle).data('infoText', "<div class='map_info'><h5>"+dealer_name+"</h5><p>"+street+"<br />"+city+'</p>'+jQuery("div.dealerInfos", tabelle.parentNode).html()+'</div>').click(function(){
            if (jQuery(this).data('marker')) jQuery(this).data('marker').openInfoWindowHtml(jQuery(this).data('infoText'));
        });
        var outletIcon = debiIcon;

        if (jQuery(tabelle).data('marker_point')!='' && jQuery(tabelle).data('marker_point')!=undefined) {
            marker_point = jQuery(tabelle).data('marker_point');
            try{
                rechteck.extend(marker_point);
                var marker = (new GMarker(marker_point, {
                  icon : outletIcon }
                ))
                GEvent.addListener(marker, "click", function() {
                  marker.openInfoWindowHtml(jQuery(tabelle).data('infoText'), {maxWidth: 400}); }
                );
                jQuery(tabelle).data('marker', marker);
                jQuery("th", tabelle).css({cursor : 'pointer' }).append("<span class='icon_small'></span>");
                //markerManager.addMarker( marker, 0 );
                map.addOverlay(marker);
                map.setCenter(rechteck.getCenter(), map.getBoundsZoomLevel(rechteck));
            } catch(e) {}
        } else {
            geocoder.getLatLng(adress, function(marker_point){
                if (marker_point) {
                    jQuery(tabelle).data('marker_point', marker_point);
                    try{
                        rechteck.extend(marker_point);
                        var marker = (new GMarker(marker_point, {
                          icon : outletIcon }
                        ))
                        GEvent.addListener(marker, "click", function() {
                          marker.openInfoWindowHtml(jQuery(tabelle).data('infoText'), {maxWidth: 400} ); }
                        );
                        jQuery(tabelle).data('marker', marker);
                        jQuery("th", tabelle).css({cursor : 'pointer' }).append("<span class='icon_small'></span>");
                        //markerManager.addMarker( marker, 0 );
                        map.addOverlay(marker);
                        map.setCenter(rechteck.getCenter(), map.getBoundsZoomLevel(rechteck));
                    } catch(e) {}
                }
            });
        }

    });
}

function showMap(point, map_id){
    var mapDOM = document.getElementById("map_"+map_id);
    map = new GMap2(mapDOM);
    var i = 0;
    map.setCenter(point, 2);
    while (!map.isLoaded()) {
    }
    map.addControl(new GSmallMapControl());
    //info window
    addMarkersFromTable();

    }
    function initMap(map_id) {
        if(!geocoder) return;
        mapDOM = document.getElementById("map_"+map_id);

        zip = document.getElementById('haendlersuche-dealersearch-0-dealersearch-location-zip').value;
        city = document.getElementById('haendlersuche-dealersearch-0-dealersearch-location-city').value;

        adress = zip+' '+city;
        geocoder.getLatLng(adress, function(point){
            showMap(point, map_id);
        })
    }

  jQuery('p.paging a').click(function(){
    if (jQuery(this).hasClass('next_page')) {
      next = true;
    } else {
      next = false;
    }
    if (!jQuery('p.paging').data('currentOffset'))
       jQuery('p.paging').data('currentOffset', 0);
    currentOffset = jQuery('p.paging').data('currentOffset');
    nextOffset = (next) ? currentOffset+4 : currentOffset-4;
    nextOffsetEnd = nextOffset+4;
    jQuery('p.paging').data('currentOffset', nextOffset);

    jQuery('div.aDealer').removeClass('hidden').addClass('hidden');
    jQuery('div.aDealer:lt('+nextOffsetEnd+'):gt('+(nextOffset-1)+')').removeClass('hidden');
    map.clearOverlays();

    if (nextOffset>0) jQuery('p.paging a.previous_page').removeClass('hidden');
    else jQuery('p.paging a.previous_page').removeClass('hidden').addClass('hidden');
    if (nextOffsetEnd < jQuery('div.aDealer').length) jQuery('p.paging a.next_page').removeClass('hidden');
    else jQuery('p.paging a.next_page').removeClass('hidden').addClass('hidden');
    endNumber =  (nextOffsetEnd < jQuery('div.aDealer').length) ? nextOffsetEnd :  jQuery('div.aDealer').length;
    jQuery('p.paging span.status_page').text((nextOffset+1) + ' - ' + endNumber);

    addMarkersFromTable();

    return false;
  });

});

