// Javascript hack to show hotsplots data on google maps
// (c) 2006 hotsplots GmbH
// 

// a few global vars here...
//
var gmarkers = [];
var htmls = [];
var map;
var clusterer;


// our icons
//      
var iconPartner = new GIcon();
iconPartner.image = "map/marker_partner.png";
iconPartner.shadow = "map/shadow50.png";
iconPartner.iconSize = new GSize(25, 45);
iconPartner.shadowSize = new GSize(37, 34);
iconPartner.iconAnchor = new GPoint(9, 34);
iconPartner.infoWindowAnchor = new GPoint(29, 2);
iconPartner.infoShadowAnchor = new GPoint(18, 25);

var clusterIcon = new GIcon();
clusterIcon.image = 'map/marker_cluster.png';
clusterIcon.shadow = 'map/shadow_cluster.png';
clusterIcon.iconSize = new GSize( 30, 51 );
clusterIcon.shadowSize = new GSize( 56, 51 );
clusterIcon.iconAnchor = new GPoint( 13, 34 );
clusterIcon.infoWindowAnchor = new GPoint( 13, 3 );
clusterIcon.infoShadowAnchor = new GPoint( 27, 37 );



// ----------------------------------------
// create markers and popups for partner
//
function createPartnerMarker(partner) {

    var html = '<div style="white-space:nowrap; font-size: 9px;">';

    if (partner.logo != "no") {
        html = html + '<img src="/partnerlogos/' + partner.logo + '"><br/><br/>';
    }

    html = html + '<strong>'+partner.company+'</strong><br/>' + partner.patid + '<br/>';

    if (partner.telephone) {
        html = html + partner.telephone+ '<br/>';
    }
    if (partner.email) {
        html = html + '<a href="mailto:'+partner.email+'">'+partner.email+'</a><br/>';
    }

    html = html + partner.address + '<br/>'
        + partner.zip + ' ' + partner.city + '<br/>'
        + '<a href="http://' + partner.www + '" target="_blank">'+ partner.www + '</a>'
        + '</div>';

    var marker = new GMarker(partner.point, iconPartner);
    
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
    });

    gmarkers[partner.uid] = marker;
    htmls[partner.uid] = html;

    return marker;
}


// ----------------------------------------
// picks up the click and opens the corresponding info window
//
function showSpot(strName) {
    gmarkers[strName].openInfoWindowHtml(htmls[strName]);
}

// ----------------------------------------
// perform search
//
function search() {

    document.getElementById("resultDiv").innerHTML = '<h2>Searching installation partners</h2>Please wait...';
    xajax_searchPartner(xajax.getFormValues('queryForm'), 'de');
}

// ----------------------------------------
// show help infos
//
function help(){

    document.getElementById("resultDiv").innerHTML = 
         '<h2>Search help</h2>' +
        '&bull; ZIP: "1" finds all hotspots partners with ZIP code 1xxxx, "10" with ZIP code 10xxx, and so on.<br/><br/>'+
        '&bull; City: enter "B" to find all hotspots in cities starting with a "B"<br/><br/>'+
       '<p>&nbsp;</p><h2>Map help</h2>' +
        '&bull; The ruler on the left controls the map zoom.<br/><br/>'+
        '&bull; Click and drag within the map area to move it around.';
}



// ----------------------------------------.
// get partner data from hotsplots
//
function getPartner() {

    clusterer.ClearAll();
    map.clearOverlays();

    // Read the data 
    var request = GXmlHttp.create();
    request.open("GET", "map/getPartner.php", true);
    request.onreadystatechange = function() {

        if (request.readyState == 4) {
            
            var xmlDoc = request.responseXML;
            // obtain the array of markers and loop through it
            var markers = xmlDoc.documentElement.getElementsByTagName("partner");
          
            for (var i = 0; i < markers.length; i++) {
                // obtain the attribues of each marker1
                var partner = new Object();
                
                partner.point = new GPoint(parseFloat(markers[i].getAttribute("lng")),
                                         parseFloat(markers[i].getAttribute("lat")));
            
                partner.dest = '<a target="_blank" href="http://maps.google.com/maps?f=d&hl=de&q='+markers[i].getAttribute("dest")+'">';

                partner.address = partner.dest + markers[i].getAttribute("address")+"</a>";

                partner.patid   = markers[i].getAttribute("name");
                partner.telephone = markers[i].getAttribute("telephone");
                partner.uid     = markers[i].getAttribute("uid");
                partner.zip     = markers[i].getAttribute("zip");
                partner.city    = markers[i].getAttribute("city");
                partner.www     = markers[i].getAttribute("www");
                partner.company = markers[i].getAttribute("company");
                partner.email   = markers[i].getAttribute("email");
                partner.logo    = markers[i].getAttribute("logo");

                var marker = createPartnerMarker(partner);

                // create clusterer object
                clusterer.AddMarker(marker, partner.uid);
            }
        }
    }
    request.send(null);
}


// ----------------------------------------
// create the map
//
function showMap() {

    map = new GMap2(document.getElementById("map"));
    //map.addControl(new GLargeMapControl());
    //map.addControl(new GMapTypeControl());
    //map.addControl(new GScaleControl());
    map.setCenter(new GLatLng(51.412912, 10.546875), 6);
    map.setUIToDefault();
    map.setMapType(G_NORMAL_MAP);

    //var overV=new GOverviewMapControl(new GSize(200, 150));
    //map.addControl(overV);
    //overV.hide(true);
    
    // create the clusterer
    clusterer = new Clusterer(map);
      
    // set the clusterer parameters if you dont like the defaults
    clusterer.icon = clusterIcon;      
    clusterer.maxVisibleMarkers = 100;
    clusterer.gridSize = 15;
    clusterer.minMarkersPerClusterer = 10;
    clusterer.maxLinesPerInfoBox = 6;

    // get and show hotspot data
    getPartner();
    help();
}


if (window.attachEvent) {
  window.attachEvent("onload", function() { showMap(); });
} else {
  window.addEventListener("load", function() { showMap(); }, false);
}




    

