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

///////////////////////
function initialize() {
///////////////////////
  var latlng = new google.maps.LatLng(43.03953613581782, 142.0429229736328);
  var myOptions = {
    zoom: 12,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    scaleControl: true,
    scrollwheel: false
  };
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  var httpobj = createHttpRequest();
  httpobj.open("GET", "dat/marker.xml", false);
  httpobj.send(null);
  var RootNode = httpobj.responseXML.documentElement;
  for (var i = 0; i < RootNode.childNodes.length; i++) {
    if (RootNode.childNodes[i].nodeName != 'point') { continue; }
    var CNode = RootNode.childNodes[i];
    var marker = new google.maps.Marker({
      position: new google.maps.LatLng(CNode.attributes[0].value, CNode.attributes[1].value),
      map: map,
      title: CNode.attributes[2].value
    });
    makeMarkerEvent(map, marker, CNode.attributes[2].value, CNode.attributes[3].value);
  }

  var areaControlDiv = document.createElement('DIV');
  var areaControl = new AreaControl(map, areaControlDiv);
  areaControlDiv.index = 1;
  map.controls[google.maps.ControlPosition.RIGHT].push(areaControlDiv);
}

////////////////////////////////////////////////////////////
function makeMarkerEvent(map, marker, site_name, site_url) {
////////////////////////////////////////////////////////////
  google.maps.event.addListener(marker, 'click', function() {
    if (openinfo) {
      openinfo.close();
      openinfo = null;
    }
	var window_text = '<div class="aln_c" style="font-size:11pt;padding-top:20px;">'
      + '<a href=' + site_url + ' target="_blank">' + site_name + '</a>'
      + '</div>';
    var infowindow = new google.maps.InfoWindow({
      content: window_text
    }); 
    infowindow.open(map, marker);
    openinfo = infowindow;
    google.maps.event.addListener(infowindow, 'closeclick', function(){
      openinfo = null;
    });
  });
}

///////////////////////////////////////
function AreaControl(map, controlDiv) {
///////////////////////////////////////
  controlDiv.style.padding = '5px';

  var httpobj = createHttpRequest();
  httpobj.open("GET", "dat/area.xml", false);
  httpobj.send(null);
  var RootNode = httpobj.responseXML.documentElement;
  for (var i = 0; i < RootNode.childNodes.length; i++) {
    if (RootNode.childNodes[i].nodeName != 'area') { continue; }
    var CNode = RootNode.childNodes[i];
    var controlUI = document.createElement('DIV');
    controlUI.style.width = '106px';
    controlUI.style.color = '#333333';
    controlUI.style.backgroundColor = '#FFFFFF';
    controlUI.style.border = '1px solid #7390D2';
    controlUI.style.cursor = 'pointer';
    controlUI.style.textAlign = 'center';
    controlUI.style.padding = '2px 0px';
    controlUI.style.marginBottom = '5px';
    controlUI.title = CNode.attributes[0].value;
    controlDiv.appendChild(controlUI);

    var controlText = document.createElement('DIV');
    controlText.innerHTML = CNode.attributes[0].value;
    controlUI.appendChild(controlText);

    makeAreaButtonEvent(
      map,
      controlUI,
      CNode.attributes[1].value,
      CNode.attributes[2].value,
      CNode.attributes[3].value
    );
  }
}

///////////////////////////////////////////////////////////////////
function makeAreaButtonEvent(map, controlUI, map_x, map_y, map_z) {
///////////////////////////////////////////////////////////////////
  google.maps.event.addDomListener(controlUI, 'click', function() {
    map.setCenter(new google.maps.LatLng(map_x, map_y));
    map.setZoom(Number(map_z));
  });
}

//////////////////////////////
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;
  }
}
//]]>

