//<![CDATA[
//
// maps.js for Google Maps.
//
// Copyright(c) 2006-2008 Logical Wedge. All rights reserved.
//
// URL: http://logical-wedge.net/
//
var map;

function AreaControl() {}
  AreaControl.prototype = new GControl();
  AreaControl.prototype.initialize = function(map) {
  var httpobj = createHttpRequest();
  httpobj.open("GET", "dat/area.xml", false);
  httpobj.send(null);
  var RootNode = httpobj.responseXML.documentElement;
  var container = document.createElement("div");
  var AreaDiv = new Array();
  var j = 0;
  for (var i = 0; i < RootNode.childNodes.length; i++) {
    if (RootNode.childNodes[i].nodeName != 'area') { continue; }
    var CNode = RootNode.childNodes[i];
    AreaDiv[j] = document.createElement("div");
    this.setButtonStyle_(AreaDiv[j]);
    container.appendChild(AreaDiv[j]);
    AreaDiv[j].appendChild(document.createTextNode(CNode.attributes[0].value));
    makeAreaButtonEvent(map, AreaDiv[j], CNode.attributes[1].value, CNode.attributes[2].value, CNode.attributes[3].value);
    j++;
  }
  map.getContainer().appendChild(container);
  return container;
}
function makeAreaButtonEvent(map, area, map_x, map_y, map_z) {
  GEvent.addDomListener(area, "click", function() {
    map.setCenter(new GLatLng(map_x, map_y), Number(map_z));
  });
}
AreaControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(8, 34));
}
AreaControl.prototype.setButtonStyle_ = function(button) {
  button.style.textDecoration = "none";
  button.style.color = "#000000";
  button.style.backgroundColor = "#F6F5EB";
  button.style.border = "1px solid black";
  button.style.padding = "2px";
  button.style.marginBottom = "3px";
  button.style.textAlign = "center";
  button.style.width = "99px";
  button.style.cursor = "pointer";
}

var httpobj = createHttpRequest();
httpobj.open("GET", "dat/icon.xml", false);
httpobj.send(null);
var RootNode = httpobj.responseXML.documentElement;
var icon = new Array();
var j = 0;
for (var i = 0; i < RootNode.childNodes.length; i++) {
  if (RootNode.childNodes[i].nodeName != 'icon') { continue; }
  var CNode = RootNode.childNodes[i];
  icon[j] = new GIcon();
  icon[j].image = "image/" + CNode.attributes[0].value;
  icon[j].transparent = "image/" + CNode.attributes[1].value;
  icon[j].iconSize = new GSize(CNode.attributes[2].value, CNode.attributes[3].value);
  icon[j].iconAnchor = new GPoint(CNode.attributes[4].value, CNode.attributes[5].value);
  icon[j].infoWindowAnchor = new GPoint(Number(CNode.attributes[6].value), Number(CNode.attributes[7].value));
  j++;
}

var httpobj = createHttpRequest();
httpobj.open("GET", "dat/marker.xml", false);
httpobj.send(null);
var RootNode = httpobj.responseXML.documentElement;
var marker = new Array();
var j = 0;
for (var i = 0; i < RootNode.childNodes.length; i++) {
  if (RootNode.childNodes[i].nodeName != 'point') { continue; }
  var CNode = RootNode.childNodes[i];
  markerOptions = {
    icon: icon[Number(CNode.attributes[2].value)],
    title: CNode.attributes[4].value
  };
  marker[j] = new GMarker(new GLatLng(CNode.attributes[0].value, CNode.attributes[1].value), markerOptions);
  makeMarkerEvent(marker[j], CNode.attributes[3].value);
  j++;
}
function makeMarkerEvent(marker, file) {
  GEvent.addListener(marker, "click", function() {
    var httpobj = createHttpRequest();
    httpobj.open("GET", file, false);
    httpobj.send(null);
    marker.openInfoWindowHtml(httpobj.responseText);
  });
}
function openMarkerInfo(idx, file) {
    map.setCenter(marker[idx].getPoint());
    var httpobj = createHttpRequest();
    httpobj.open("GET", file, false);
    httpobj.send(null);
    marker[idx].openInfoWindowHtml(httpobj.responseText);
}

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new AreaControl());
    map.addControl(new GMenuMapTypeControl());
    map.addMapType(G_PHYSICAL_MAP);
    map.addControl(new GScaleControl());
    map.addControl(new GOverviewMapControl(new GSize(228,150)));

    GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {
      if (newLevel > 7) {
        if (oldLevel == undefined || oldLevel <= 7) {
          for (var i in marker) { map.addOverlay(marker[i]); }
        }
      } else {
        if (oldLevel > 7) {
          map.closeInfoWindow();
          for (var i in marker) { map.removeOverlay(marker[i]); }
        }
      }
    });

    map.setCenter(new GLatLng(43.03953613581782, 142.0429229736328), 12);
  }
}

function createHttpRequest() {
  if (window.ActiveXObject) {
    try {
      return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        return new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
        return null;
      }
    }
  } else if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else {
    alert('XMLHttpRequest Error');
    return null;
  }
}
//]]>
