//----- Tanalog GoogleMap Scripts

//TanaMap Class
var TanaMap = new function(){
    this.gmap = new Object();
    this.geocoder = null;

    this.mode = 0;//DisplayMode:0 PointingMode:1
    this.marker = null;//Marker
    this.setPointingMode = TanaMap_setPointingMode;
    this.setDisplayMode = TanaMap_setDisplayMode;

    this.event = new Object;
    //this.event.moveStart = TanaMap_event_moveStart;
    //this.event.moveEnd = TanaMap_event_moveEnd;

    this.init = TanaMap_init;
    this.showAddress = TanaMap_showAddress;
}
//TanaMap Method
function TanaMap_init(x,y,scale,excerpt) {
  TanaMap.gmap = new GMap2(document.getElementById("map"));
  TanaMap.geocoder = new GClientGeocoder();
  TanaMap.gmap.addControl(new GLargeMapControl());
  TanaMap.gmap.addControl(new GMapTypeControl());
  TanaMap.gmap.setCenter(new GLatLng(y, x), scale);
  //
  if (window.opener.document.location.href.indexOf("addBlogEntry")>0)
      TanaMap.setPointingMode();
  else if (window.opener.document.location.href.indexOf("editBlogEntry")>0)
      TanaMap.setPointingMode();
  else if (window.opener.document.location.href.indexOf("saveBlogEntry")>0)
      TanaMap.setPointingMode();
  else TanaMap.setDisplayMode(x,y,excerpt);
}

function TanaMap_setPointingMode() {
    //
    TanaMap.mode = 1;
    var center = TanaMap.gmap.getCenter();
    TanaMap.marker = new GMarker(new GLatLng(center.lat(), center.lng()),{draggable: true});
    TanaMap.gmap.addOverlay(TanaMap.marker);

    GEvent.addListener(TanaMap.gmap, "movestart", function() {
        TanaMap.marker.hide();
    });
    GEvent.addListener(TanaMap.gmap, "zoomend", function() {
        var center = TanaMap.marker.getLatLng();
        TanaMap_setMapPosition(center);
        TanaMap.gmap.panTo(center);
    });
    GEvent.addListener(TanaMap.gmap, "moveend", function() {
        var center = TanaMap.gmap.getCenter();
        TanaMap_setMapPosition(center);
        TanaMap.marker.setLatLng(center);
        TanaMap.marker.show();
    });
    GEvent.addListener(TanaMap.marker, "dragend", function() {
        var center = TanaMap.marker.getLatLng();
        TanaMap_setMapPosition(center);
    });
}
function TanaMap_setMapPosition(center) {
    var latLngStr = center.lng() + ',' + center.lat() + ',' + TanaMap.gmap.getZoom();
    document.getElementById("message").innerHTML = latLngStr;
}

function TanaMap_setDisplayMode(x,y,excerpt) {
    //
    TanaMap.mode = 0;
    document.getElementById("geocoder").style.display = "none";
    document.getElementById("setbutton").style.display = "none";
    TanaMap.marker = new GMarker(new GLatLng(y, x));
    GEvent.addListener(TanaMap.marker, "click", function() {
        TanaMap.marker.openInfoWindowHtml(excerpt);
    });
    TanaMap.gmap.addOverlay(TanaMap.marker);
}

function TanaMap_showAddress(address) {
  if (TanaMap.geocoder) {
    TanaMap.geocoder.getLatLng(
      address,
      function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
            TanaMap.gmap.setCenter(point);
          }
      }
    );
  }
}


//-----  Tanalog GoogleMap Scripts for index page

//TanaIndexMap Class
var TanaIndexMap = new function(){
    this.gmap = new Object();
    this.geocoder = null;
    this.gmarkers = [];
    this.htmls = [];
    this.mcount = 0;
    this.init = TanaIndexMap_init;
    this.loadFromXml = TanaIndexMap_loadFromXml;
    this.createMarker = TanaIndexMap_createMarker;
    this.icon = new Object();
    this.showAddress = TanaIndexMap_showAddress;
}


function TanaIndexMap_createMarker(point, html) {
    var marker = new GMarker(point,TanaIndexMap.icon);
    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
    TanaIndexMap.gmarkers[TanaIndexMap.mcount] = marker;
    TanaIndexMap.htmls[TanaIndexMap.mcount] = html;
    TanaIndexMap.mcount++;
    return marker;
}

function TanaIndexMap_init(x,y,scale) {
  TanaIndexMap.gmap = new GMap2(document.getElementById("map"));
  TanaIndexMap.geocoder = new GClientGeocoder();
  TanaIndexMap.gmap.addControl(new GLargeMapControl());
  TanaIndexMap.gmap.addControl(new GMapTypeControl());
  TanaIndexMap.gmap.setCenter(new GLatLng(y, x), scale);
  TanaIndexMap.icon = new GIcon();
  TanaIndexMap.icon.image = "/common/images/marker.png";
  TanaIndexMap.icon.iconSize = new GSize(25,25);
  TanaIndexMap.icon.iconAnchor = new GPoint(7,23);
  TanaIndexMap.icon.infoWindowAnchor = new GPoint(14,0);
  TanaIndexMap.icon.shadow = "/common/images/shadow.png";
  TanaIndexMap.icon.shadowSize = new GSize(36,25);
}

function TanaIndexMap_showAddress(address) {
  if (TanaIndexMap.geocoder) {
    TanaIndexMap.geocoder.getLatLng(
      address,
      function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
            TanaIndexMap.gmap.setCenter(point);
          }
      }
    );
  }
}

// ===== XML =====
function TanaIndexMap_loadFromXml(url) {
    var request = GXmlHttp.create();
    request.open("GET", url, true);
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            var xmlDoc = request.responseXML;
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {
                var lat = parseFloat(markers[i].getAttribute("lat"));
                var lng = parseFloat(markers[i].getAttribute("lng"));
                var point = new GLatLng(lat,lng);
                var html = markers[i].getAttribute("html");

                var marker = createMarker(point,html);
                TanaIndexMap.gmap.addOverlay(marker);
            }
         }
      }
      request.send(null);
}

//
//<markers>
//    <marker lat="35.65769724633269" lng="139.7019875049591" html="TEXT1"/>
//    <marker lat="35.70974888703399" lng="139.7970986366272" html="TEXT2"/>
//</markers>



