﻿/// <reference path="GMAPJSHelper_Release.js" />
var themap = new GMap2();
var thedir = null;
function __showInfo(overlay, point) {
    var bounds = overlay.getBounds();
    var nw = bounds.getNorthEast();
    var se = bounds.getSouthWest();
    //ret = CountLookup.BoundedPoints(nw.lng(), nw.lat(), se.lng(), se.lat(), OnComplete, OnTimeOut, OnError);
    ret = CountLookup.BoundedMarkers(nw.lng(), nw.lat(), se.lng(), se.lat(), OnMarkerComplete, OnTimeOut, OnError);
    return (true);
}

function UpdateAddress() {
    var address = document.getElementById("__address").value;
    var gcg = new GClientGeocoder();
    gcg.getLocations(address, showAddress);

}

function showAddress(response) {
    if (!response || response.Status.code != 200) {
        alert("Status Code:" + response.Status.code);
    }
    else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); themap.setCenter(point);
    }
}

function createMarker(point, dest, id, title, desc, counts) {   // Create our custom marker

    var markerOptions = {  };
    var marker = new GMarker(point, markerOptions);

    // create balloon info
    var balloonInfo = createMarkerBalloonInfo(id, title, desc, counts);

    GEvent.addListener(marker, 'click', function() { marker.openInfoWindow(balloonInfo); });
    GEvent.addListener(marker, 'click', function() { showdirections(point, dest); });


    return marker;
}

function showdirections(point, dest) {
    var cntinfo = document.getElementById("__cntinfo");
    cntinfo.innerHTML = "";
    if (thedir == null) {
        thedir = new GDirections(themap, cntinfo);
    }
    var dirstr = "from: " + point.y + "," + point.x + " to: " + dest.y + "," + dest.x;
    //cntinfo.innerHTML = dirstr;
    thedir.clear();

    thedir.load(dirstr, { preserveViewport: true, travelMode: G_TRAVEL_MODE_WALKING });

}

function createMarkerBalloonInfo(id, title, desc, counts) {   // Create marker balloon info

    // retrieve the div containing item template
    var templateDiv = document.getElementById("balloonInfoTemplate");
    var template = templateDiv.innerHTML;

    template = template.replace("{title}", title);
    template = template.replace("{counts}", "<table>" + counts + "</table>");
    //template = template.replace("(counts)", counts[0]);
    var div = document.createElement("div");
    div.innerHTML = template;
    return div;
}

function OnMarkerComplete(arg) {
    var cntinfo = document.getElementById('__cntinfo');
    var warn = document.getElementById('__warning');

    if (arg.length >= 20) {
        warn.innerHTML = "Your search returned more than 20 counts.  Only the first 20 were shown.  Please adjust zoom level."
    } else {
         warn.innerHTML = "";
    }

    for (i = 0; i < arg.length; i++) {
        var mkpt = arg[i];
        //cntinfo.innerHTML += mkpt.lat + "|" + mkpt.lon + mkpt.desc + "<br/>";
        var opts = { title: mkpt.desc, Text: "Blah<br/>Blah<br/>Blah!" };
        opts.title = mkpt.desc;
        //var mark = new GMarker(new GPoint(mkpt.lon, mkpt.lat), opts);
        themap.addOverlay(createMarker(new GPoint(mkpt.lon, mkpt.lat), new GPoint(mkpt.endlon, mkpt.endlat), i, mkpt.desc, "testing", mkpt.counts));



    }
    // cntinfo.innerHTML += arg.length + "<br/>";
}

function OnComplete(arg) {
    var cntinfo = document.getElementById('__cntinfo');
    cntinfo.innerHTML = arg;
}
function OnTimeOut(arg) {
    var cntinfo = document.getElementById('__cntinfo');
    cntinfo.innerHTML = "The Server has timed out";
}
function OnError(arg) {
    var cntinfo = document.getElementById('__cntinfo');
    cntinfo.innerHTML = "An Error has occured";
}

function AddMap() {
    //GEvent.addListener(ccmap, "moveend", function() { __showInfo(ccmap, new GPoint(1, 1)); });

}
