//<![CDATA[
var icon;
var chat_icon;
var status_kind;
var map;
var current_kind;
var current_dispname;
var current_handle;
var current_lang;
var current_markers;
var current_isj_markers;
// var skmap_base_url;
var skmap_base_url = "http://skmap.gatagata.jp/";
var xmlhttp = null;
var smtl_timer = null;
current_markers = null;
current_isj_markers = null;
current_kind = "";
current_dispname = "";
current_handle = "";
current_lang ="";
var contact_position;

var marker_list;
var overlay_list;
var listener_list;

var last_map_time = 0;
var current_maptype_name;

function create_marker( point, icon )
{
    var marker = new GMarker(point,icon);
//    marker_list.push(marker);
    return( marker );
}

function add_overlay( marker )
{
    var overlay = map.addOverlay(marker);
    overlay_list.push(overlay);
    return( overlay );
}

function add_listener( marker, event, func )
{
    var listener = GEvent.addListener( marker, event, func );
    listener_list.push(listener);
    return( listener );
}

function clear_markers()
{
    marker_list = new Array();
}

function clear_listeners()
{
    for (var i = 0; i < listener_list.length; i++) {
        GEvent.removeListener(listener_list[i]);
    }
    listener_list = new Array();
}

function clear_overlays()
{
//    for (var i = 0; i < overlay_list.length; i++) {
//        map.removeOverlay(overlay_list[i]);
//    }
    map.clearOverlays();
    overlay_list = new Array();
}

function clear_all_gobjects()
{
    clear_listeners();
    clear_markers();
    clear_overlays();
//    GUnload();
}

function chat_open( id )
{
    var url;
//    url = "web_chat.cgi?id=" + id + "&r=" + Math.random();
//    win=window.open(url,"chat_" + Math.random(),"scrollbars=1,width=400,height=600");
    url = "web_chat.cgi?id=" + id + "&r=" + Math.random();
    win=window.open(url,"chat_","scrollbars=1,width=620,height=620");
}

//GMap2.prototype.setMapType=function( map_type )
//{
//alert("A");
//    var _t = map_type.getName();
//	if (_t == "Refresh") {
//	  changeStatusKind( current_handle );
//      setupChatList( current_handle );
//	  return;
//	}
//	
//	this.switchSpecification(map_type);
//}


function copy_obj(o)
{
	var c=new Object();
	for (var e in o)
	{
	  c[e]=o[e];
	}
	return c;
}

function GESearchPre()
{
    document.GESearchForm.r.value = Math.random();
    return 1;
}

function show_photo_comment( index ) {
    if (! document.getElementById) return;
    if (! document.getElementById( "photo_" + index + "_body" ) ) return;
    if (! document.getElementById( "photo_" + index + "_comment" ) ) return;
  
    document.getElementById( "photo_" + index + "_comment" ).style.visibility = "visible";
    document.getElementById( "photo_" + index + "_comment" ).style.position = "";
    document.getElementById( "photo_selector_" + index + "_comment" ).className = "open";
    document.getElementById( "photo_" + index + "_body" ).style.visibility = "hidden";
    document.getElementById( "photo_" + index + "_body" ).style.position = "absolute";
    document.getElementById( "photo_selector_" + index + "_body" ).className = "close";
}

function show_photo_body( index ) {
    if (! document.getElementById) return;
    if (! document.getElementById( "photo_" + index + "_body" ) ) return;
    if (! document.getElementById( "photo_" + index + "_comment" ) ) return;
    document.getElementById( "photo_" + index + "_body" ).style.visibility = "visible";
    document.getElementById( "photo_" + index + "_body" ).style.position = "";
    document.getElementById( "photo_selector_" + index + "_body" ).className = "open";
    document.getElementById( "photo_" + index + "_comment" ).style.visibility = "hidden";
    document.getElementById( "photo_" + index + "_comment" ).style.position = "absolute";
    document.getElementById( "photo_selector_" + index + "_comment" ).className = "close";
}

function onLoad( lang, lon, lat, handle  ) {

//   GLog.write( "onLoad Start ..." );

  marker_list = new Array();
  listener_list = new Array();
  overlay_list = new Array();
  last_map_time = 0;

  current_lang = lang;
  current_handle = handle;

  map = new GMap2(document.getElementById('map'));
  
//  var map_type_ctrl=new GMapTypeControl();

  var map_type_ar = map.getMapTypes()
  var _control0=copy_obj(map_type_ar[0]);
//  _control0.getLinkText=function(){return 'Refresh';}
  _control0.getName=function(){return 'Refresh';}
  map.addMapType(_control0);

//  var refresh_mt = new GMapType();
//  map.addMapType(refresh_mt);


  GEvent.addListener(map, "moveend", function() {
    ShowCenterAddress();
  });

  GEvent.addListener(map, "maptypechanged", function() {
    var mt = map.getCurrentMapType();
    var mt_name = mt.getName();
    if( mt_name == "Refresh" ) {
    document.getElementById("status_summary_bar").innerHTML = "Loading ....";
      changeStatusKind( current_handle );
      setupChatList( current_handle );
      var mt_ar = map.getMapTypes();
      for( var i = 0; i < mt_ar.length; i ++ ) {
        if( mt_ar[i].getName() == current_maptype_name ) {
            map.setMapType( mt_ar[i] );
        }
      }
      return;
    }
    current_maptype_name = mt_name;
  });


  map.addControl(new GLargeMapControl());
//  map.addControl(map_type_ctrl);
  map.addControl(new GMapTypeControl());
  map.addControl(new GScaleControl());


  if( lang == "ja" ) {
    map.setCenter(new GLatLng(lat,lon,true),1);
  } else if( lang == "en" ) {
    map.setCenter(new GLatLng(54.41892996865827, -2.52685546875, true),1);
  } else if( lang == "ww" ) {
    map.setCenter(new GLatLng(lat,lon,true),1);
  } else {
    map.setCenter(new GLatLng(37.06250, -95.677068, true),1);
  }
  status_kind = new Object();
  status_kind["ONLINE"]    = "ONLINE";
  status_kind["OFFLINE"]   = "OFFLINE";
  status_kind["AWAY"]      = "ONLINE";
  status_kind["DND"]       = "ONLINE";
  status_kind["INVISIBLE"] = "OFFLINE";
  status_kind["NA"]        = "ONLINE";
  status_kind["SKYPEME"]   = "ONLINE";
  status_kind["OFFLINEVOICEMAIL"] = "ONLINE";
  status_kind["PENDING"]   = "OFFLINE";
  status_kind["BLOCKED"]   = "OFFLINE";
  icon = new Object();
  icon["ONLINE"] = new GIcon();
  icon["ONLINE"].image = skmap_base_url + "images/ONLINE.png";
  icon["ONLINE"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["ONLINE"].iconSize = new GSize(24, 24);
  icon["ONLINE"].shadowSize = new GSize(35, 30);
  icon["ONLINE"].iconAnchor = new GPoint(12, 12);
  icon["ONLINE"].infoWindowAnchor = new GPoint(9, 1);
  icon["OFFLINE"] = new GIcon();
  icon["OFFLINE"].image = skmap_base_url + "images/OFFLINE.png";
  icon["OFFLINE"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["OFFLINE"].iconSize = new GSize(12, 12);
  icon["OFFLINE"].shadowSize = new GSize(17, 15);
  icon["OFFLINE"].iconAnchor = new GPoint(6, 6);
  icon["OFFLINE"].infoWindowAnchor = new GPoint(9, 1);
  icon["AWAY"] = new GIcon();
  icon["AWAY"].image = skmap_base_url + "images/AWAY.png";
  icon["AWAY"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["AWAY"].iconSize = new GSize(16, 16);
  icon["AWAY"].shadowSize = new GSize(27, 20);
  icon["AWAY"].iconAnchor = new GPoint(8, 8);
  icon["AWAY"].infoWindowAnchor = new GPoint(9, 1);
  icon["BLOCKED"] = new GIcon();
  icon["BLOCKED"].image = skmap_base_url + "images/BLOCKED.png";
  icon["BLOCKED"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["BLOCKED"].iconSize = new GSize(16, 16);
  icon["BLOCKED"].shadowSize = new GSize(27, 20);
  icon["BLOCKED"].iconAnchor = new GPoint(8, 8);
  icon["BLOCKED"].infoWindowAnchor = new GPoint(9, 1);
  icon["DND"] = new GIcon();
  icon["DND"].image = skmap_base_url + "images/DND.png";
  icon["DND"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["DND"].iconSize = new GSize(16, 16);
  icon["DND"].shadowSize = new GSize(27, 20);
  icon["DND"].iconAnchor = new GPoint(8, 8);
  icon["DND"].infoWindowAnchor = new GPoint(9, 1);
  icon["INVISIBLE"] = new GIcon();
  icon["INVISIBLE"].image = skmap_base_url + "images/INVISIBLE.png";
  icon["INVISIBLE"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["INVISIBLE"].iconSize = new GSize(16, 16);
  icon["INVISIBLE"].shadowSize = new GSize(27, 20);
  icon["INVISIBLE"].iconAnchor = new GPoint(8, 8);
  icon["INVISIBLE"].infoWindowAnchor = new GPoint(9, 1);
  icon["NA"] = new GIcon();
  icon["NA"].image = skmap_base_url + "images/NA.png";
  icon["NA"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["NA"].iconSize = new GSize(16, 16);
  icon["NA"].shadowSize = new GSize(27, 20);
  icon["NA"].iconAnchor = new GPoint(8, 8);
  icon["NA"].infoWindowAnchor = new GPoint(9, 1);
  icon["SKYPEME"] = new GIcon();
  icon["SKYPEME"].image = skmap_base_url + "images/SKYPEME.png";
  icon["SKYPEME"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["SKYPEME"].iconSize = new GSize(24, 24);
  icon["SKYPEME"].shadowSize = new GSize(35, 30);
  icon["SKYPEME"].iconAnchor = new GPoint(12, 12);
  icon["SKYPEME"].infoWindowAnchor = new GPoint(9, 1);
  icon["OFFLINEVOICEMAIL"] = new GIcon();
  icon["OFFLINEVOICEMAIL"].image = skmap_base_url + "images/OFFLINEVOICEMAIL.png";
  icon["OFFLINEVOICEMAIL"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["OFFLINEVOICEMAIL"].iconSize = new GSize(24, 24);
  icon["OFFLINEVOICEMAIL"].shadowSize = new GSize(35, 30);
  icon["OFFLINEVOICEMAIL"].iconAnchor = new GPoint(12, 12);
  icon["OFFLINEVOICEMAIL"].infoWindowAnchor = new GPoint(9, 1);
  icon["PENDING"] = new GIcon();
  icon["PENDING"].image = skmap_base_url + "images/PENDING.png";
  icon["PENDING"].shadow = skmap_base_url + "images/SHADOW.png";
  icon["PENDING"].iconSize = new GSize(24, 24);
  icon["PENDING"].shadowSize = new GSize(35, 30);
  icon["PENDING"].iconAnchor = new GPoint(12, 12);
  icon["PENDING"].infoWindowAnchor = new GPoint(9, 1);
  null_icon = new GIcon();
  null_icon.image = skmap_base_url + "images/SHADOW.png";
  null_icon.shadow = skmap_base_url + "images/SHADOW.png";
  null_icon.iconSize = new GSize(1, 1);
  null_icon.shadowSize = new GSize(1, 1);
  null_icon.iconAnchor = new GPoint(1, 1);
  null_icon.infoWindowAnchor = new GPoint(1, 1);
  chat_icon = new GIcon();
  chat_icon.image = skmap_base_url + "images/CHAT.png";
  chat_icon.shadow = skmap_base_url + "images/SHADOW.png";
  chat_icon.iconSize = new GSize(24, 24);
  chat_icon.shadowSize = new GSize(35, 30);
  chat_icon.iconAnchor = new GPoint(12, 12);
  chat_icon.infoWindowAnchor = new GPoint(9, 1);

  contact_position = new Object();

  changeStatusKind( handle );
  setupChatList( handle );
  setupMoodTextList();

  var map_types=map.getMapTypes();
  map.setMapType(G_SATELLITE_MAP);


}

function createMarker(point, handle, kind, index, status, pl, hp) {
  if( current_lang == "ja" ) {
    body_selector_str = "説明";
    comment_selector_str = "コメント";
    detail_str = "詳細 ...";
    write_comment_str = "投稿";
  } else {
    body_selector_str = "Memo";
    comment_selector_str = "Comment";
    detail_str = "detail ...";
    write_comment_str = "Write";
  }

  if( icon[status] == null ) {
    status = "PENDING";
  }

// TEST
//  var marker = new GMarker(point,icon[status]);
  var marker = create_marker(point,icon[status]);

  var html = "";
  if( handle == "?" ) {
    html += "<b>" + handle + "</b><br /><table><tr>";
  } else {
    html += "<b>" + handle + "</b><br /><table><tr><td nowrap><a href=\"SKMapSearch.cgi?func=search&type=ge-search&key=" + handle + "\"><img src=\"images/GE.png\" /></a></td>";
  }
  if( pl != "icon" ) {

    if( pl != "name" ) {
      var _html = "";
      if( pl != "info" ) {

        if( pl != "chat" ) {

          _html += "<td><a href=\"skype:" + handle + "?call\"><img src=\"images/CALL.png\" /></a></td>";
          if( pl != "call" ) {
            _html = "";
          }
        }
        _html += "<td><a href=\"skype:" + handle + "?chat\"><img src=\"images/CHAT.png\" /></a></td>";
      }
      _html += "<td><a href=\"skype:" + handle + "?userinfo\"><img src=\"images/INFO.png\" /></a></td>";
      if( hp != null && hp != "" && hp != " " && hp != "/" && hp != "http://") {
        _html += "<td><a href=\"" + hp + "\"><img src=\"images/HOMEPAGE.png\" /></a></td>";
      }
      _html += "</table>";
      html += _html;
    }

  }
  html += "<a href=\"h2_pm.html\" onclick=\"window.open('h2_pm.html'); return false;\">help</a>";

// TEST
//  GEvent.addListener(marker, "click", function() {
//    marker.openInfoWindowHtml( html );
//  });
  add_listener(marker, "click", function() {
    marker.openInfoWindowHtml( html );
  });

  return marker;
}

function createChatMarker( point, dn, id ) {

  body_selector_str = "Memo";
  comment_selector_str = "Comment";
  detail_str = "detail ...";
  write_comment_str = "Write";

// TEST
//  var marker = new GMarker(point, chat_icon);
  var marker = create_marker(point, chat_icon);

  var html = "";
  html += "<table><tr><th colspan=\"2\" nowrap>" + dn + "</th></tr><tr><td><a href=\"skype:?chat&id=%23" + id + "\"><img src=\"images/CHAT.png\"/></a></td><td><a href=\"SKMapGetGlobalMsg.cgi?" + id + "\">Log</a></td></tr></table>";

// TEST
//  GEvent.addListener(marker, "click", function() {
//    marker.openInfoWindowHtml( html );
//  });
  add_listener(marker, "click", function() {
    marker.openInfoWindowHtml( html );
  });

  return marker;
}

function createAboutMarker(point, about) {
// TEST
//  var marker = new GMarker(point,null_icon);
  var marker = create_marker(point,null_icon);
  return marker;
}

function createCenterMarker( point, name, elements, icon_image, anc_type )
{
    var icon2 = new GIcon();
    icon2 = new GIcon();
    icon2.image = icon_image;
    icon2.shadow = skmap_base_url + "images/MEDIA_CENTER_SHADOW.png";
    icon2.iconSize = new GSize(19, 32);
    icon2.iconAnchor = new GPoint(10, 32);
    icon2.infoWindowAnchor = new GPoint(9, 1);
    icon2.shadowSize = new GSize(27, 12);
    if(        anc_type == "lu" ) {
      icon2.iconAnchor = new GPoint(0, 0);
      icon2.infoWindowAnchor = new GPoint(9, 1);
    } else if( anc_type == "rd" ) {
      icon2.iconAnchor = new GPoint(19, 32);
      icon2.infoWindowAnchor = new GPoint(9, 1);
    }

//TEST
//    var marker = new GMarker(point, icon2);
    var marker = create_marker(point, icon2);

    var html = "<div style=\"width: 250px; height: 100px; overflow-y: scroll; font-size: 12px;\">";
    html += "<b>" + name + "&nbsp;<a href=\"about_media_center.html\" onclick=\"window.open('about_media_center.html'); return false;\">?</a></b><br/><br/>";
    for ( var i = 0; i < elements.length; i ++ ) {
        html += "<a href=\"" + elements[i].getAttribute("homepage") + "\">" + elements[i].getAttribute("name") + "</a><br/>";
    }
    html += "</div>";

// TEST
//    GEvent.addListener(marker, "click", function() {
//        marker.openInfoWindowHtml( html );
//    });
    add_listener(marker, "click", function() {
        marker.openInfoWindowHtml( html );
    });

    return marker;
}

function createRocketMarker()
{
    var point = new GLatLng( -56.17002298293204, -146.25 );
    var icon3 = new GIcon();
    icon3 = new GIcon();
    icon3.image = skmap_base_url + "images/ROCKET.png";
    icon3.iconSize = new GSize(23, 59);
    icon3.iconAnchor = new GPoint(0, 0);
    icon3.infoWindowAnchor = new GPoint(9, 1);
    icon3.iconAnchor = new GPoint(10, 59);

// TEST
//    var marker = new GMarker(point, icon3);
    var marker = create_marker(point, icon3);

    var html = "<div style=\"width: 250px; height: 100px; overflow-y: scroll; font-size: 12px;\">";
    html += "<b>Rocket to the <a href=\"http://moon.google.com/\">Moon</a></b><br/>Someday!!<br/><br/>... to the <a href=\"http://www.google.com/mars/\">Mars</a><br/>Challenge it by the next generation!<br/> But, it is very HOT!!";
    html += "</div>";

// TEST
//    GEvent.addListener(marker, "click", function() {
//        marker.openInfoWindowHtml( html );
//    });
    add_listener(marker, "click", function() {
        marker.openInfoWindowHtml( html );
    });

// TEST
//    map.addOverlay(marker);
    add_overlay(marker);
}

function JumpToContact( handle )
{
    if( contact_position[handle] != null ) {
//        map.centerAndZoom(contact_position[handle],8);
        map.setCenter(contact_position[handle], map.getZoomLevel());
    }
}

function getChatMarkers()
{
    var xmlhttp = GXmlHttp.create();

// TEST
//    map.clearOverlays();
    clear_all_gobjects();

    xmlhttp.open('GET', "SKMapChatSearch.cgi?func=search&type=xml", true );
    xmlhttp.onreadystatechange = function() {
      if( xmlhttp.readyState == 4 )
      {
        var html;
        var xmlDoc = xmlhttp.responseXML;

        chats = xmlDoc.documentElement.getElementsByTagName("search_result");
        for (var i = 0; i < chats.length; i++) {
          var type = chats[i].getAttribute("type");
          var id = chats[i].getAttribute("id");
          var display_name = chats[i].getAttribute("display_name");
          var lon = parseFloat(chats[i].getAttribute("lon"));
          var lat = parseFloat(chats[i].getAttribute("lat"));
          if( lon != 0.0 || lat != 0.0 ) {
            var point = new GLatLng( lat, lon, true );
            var marker = createChatMarker(point, display_name, id );
// TEST
//            map.addOverlay(marker);
            add_overlay(marker);
          }
        }
      }
    };
    xmlhttp.send(null);
}

function getMarkers( kind, disp_name, target_handle )
{
    var xmlhttp = GXmlHttp.create();

//    alert( "AAAA" );
    document.getElementById("status_summary_bar").innerHTML = "Loading ....";

// TEST
//    map.clearOverlays();
    clear_all_gobjects();

    xmlhttp.open('GET', "SKMapSearch2.cgi?func=search&key=&kind=" + kind + "&type=xml&time=" + last_map_time, true );
    current_kind = kind;
    current_dispname = disp_name;
//    current_handle = target_handle;
    xmlhttp.onreadystatechange = function() {
      if( xmlhttp.readyState == 4 && xmlhttp.status == 200)
      {
        var summary = new Object();
        summary["SKYPEME"]   = 0;
        summary["ONLINE"]    = 0;
        summary["AWAY"]      = 0;
        summary["NA"]        = 0;
        summary["DND"]       = 0;
//        summary["INVISIBLE"] = 0;
//        summary["OFFLINEVOICEMAIL"] = 0;
        summary["OFFLINE"]   = 0;
//        summary["PENDING"]   = 0;
//        summary["BLOCKED"]   = 0;
        var xmlDoc = xmlhttp.responseXML;
        var map_info = xmlDoc.documentElement.getElementsByTagName("mi");

        if( map_info != null ) {
            if( map_info.length > 0 ) {
//            alert( map_info[0].getAttribute("t") );
                var t = parseInt( map_info[0].getAttribute("t") );
//            alert( t + "<->" + last_map_time );
                if( t <= last_map_time ) {
//                    return;
                }
                last_map_time = t;
            }
        }

        var current_markers = xmlDoc.documentElement.getElementsByTagName("sr");
        for (var i = 0; i < current_markers.length; i++) {
          var point = new GLatLng(parseFloat(current_markers[i].getAttribute("y")), parseFloat(current_markers[i].getAttribute("x")));
          var status = current_markers[i].getAttribute("s");
          var handle = current_markers[i].getAttribute("h");
          var flag = 1;
          
          if( handle == current_handle ) {
            map.setCenter(point,12);
          }

          var ci = document.getElementById( handle + "_status_img" );
          if( ci != null ) {
            ci.src = "images/" + status + ".png";
            contact_position[handle] = point;
          }

          if( kind != "ALL" && kind != "BUDDY" ) {
            if( status_kind[status] != kind && status != kind ) {
              flag = 0;
            }
          }
          if( kind == "BUDDY" && ci == null ) {
            flag = 0;
          }
          if( flag == 1 ) {
//            if( summary[status] != null ) {
//              summary[status] ++;
//            }
            var marker = createMarker(point, handle, current_kind, i, status, current_markers[i].getAttribute("p"), current_markers[i].getAttribute("u") );
// TEST
//            map.addOverlay(marker);
            add_overlay(marker);
          }
        }

        var current_summary = xmlDoc.documentElement.getElementsByTagName("sm");
        for (var i = 0; i < current_summary.length; i++) {
          summary[current_summary[i].getAttribute("status")] = current_summary[i].getAttribute("count");
        }

        var html;
        html = "";
        var cc = 0;
        for (var e in summary)
        {
          html += "<img src=\"images/" + e + ".gif\"/>x" + summary[e];
          cc = cc + 1;
          if( cc == 3 ) {
            html += "<br/>";
            cc = 0;
          } else {
            html += "&nbsp;&nbsp;";
          }
        }
        document.getElementById("status_summary_bar").innerHTML = html;
      }
    };
    xmlhttp.send(null);

    var xmlhttp2 = GXmlHttp.create();
    xmlhttp2.open('GET', "additional.xml?rand=" + Math.random(), true  );
    xmlhttp2.onreadystatechange = function() {
      if( xmlhttp2.readyState == 4 )
      {
        var xmlDoc = xmlhttp2.responseXML;
        media_centers = xmlDoc.documentElement.getElementsByTagName("media_center");
        for (var i = 0; i < media_centers.length; i++) {
          var point = new GLatLng(parseFloat(media_centers[i].getAttribute("lat")),
                                  parseFloat(media_centers[i].getAttribute("lon")),
                                  true);
          var marker = createCenterMarker(point, media_centers[i].getAttribute("name"), media_centers[i].getElementsByTagName("media"), media_centers[i].getAttribute("icon"), media_centers[i].getAttribute("anc_type") );
// TEST
//          map.addOverlay(marker);
          add_overlay(marker);
        }
      }
    };
    xmlhttp2.send(null);
}

function setupChatList( handle )
{
    if( document.getElementById("chat_list") == null ) {
        return;
    }
    
//    alert( handle );
    
    var xmlhttp_c = GXmlHttp.create();
    xmlhttp_c.open('GET', "SKMapChatSearch.cgi?func=search&type=xml&handle=" + handle + "&rand=" + Math.random(), true );
    xmlhttp_c.onreadystatechange = function() {
      if( xmlhttp_c.readyState == 4 )
      {
        var html;
        var xmlDoc = xmlhttp_c.responseXML;

//    alert( handle );

        chats = xmlDoc.documentElement.getElementsByTagName("search_result");
        html = "";

        for (var i = 0; i < chats.length; i++) {
          var type = chats[i].getAttribute("type");
          var id = chats[i].getAttribute("id");
          var display_name = chats[i].getAttribute("display_name");
          var member_flag = chats[i].getAttribute("member_flag");
          html += display_name + "<a href=\"skype:?chat&id=%23" + id + "\">(Open)</a>";
          if( current_handle != "" ) {
            html += "<a href=\"invite_to_chat.cgi?id=" + id + "\">(Join)</a>";
            html += "<a href=\"#\" onClick=\"javascript:chat_open('" + id + "');return false;\">(Web)</a>";
          }
          html += "<br/>";
        }
        document.getElementById("chat_list").innerHTML = html;
      }
    };
    xmlhttp_c.send(null);
}

function setupMoodTextList()
{
    if( document.getElementById("mood_text_list") == null ) {
        return;
    }

    document.getElementById("skype_user_counter").innerHTML = "Loading ....";

    if( smtl_timer != null ) {
      clearTimeout( smtl_timer );
      smtl_timer = null;
    }

    var xmlhttp_m = GXmlHttp.create();
    xmlhttp_m.open('GET', "SKMapMoodSearch.cgi?func=list&type=xml&cnt=10&rand=" + Math.random(), true );
    xmlhttp_m.onreadystatechange = function() {
      if( xmlhttp_m.readyState == 4 && xmlhttp_m.status == 200)
      {
        var html;
        var xmlDoc = xmlhttp_m.responseXML;

        moods = xmlDoc.documentElement.getElementsByTagName("mood_text");
        html = "<dl>";

        for (var i = 0; i < moods.length; i++) {
          var handle = moods[i].getAttribute("handle");
          var t_str = moods[i].getAttribute("time");
          var text = moods[i].getAttribute("text");
          html += "<dt>" + handle + "(" + t_str + ")</dt><dd>" + text + "</dd>";
        }
        html += "</dl>";

        document.getElementById("mood_text_list").innerHTML = html;

        ssc = xmlDoc.documentElement.getElementsByTagName("skype_user_counter");
        if( ssc != null ) {
          var counter = ssc[0].getAttribute("counter");
          document.getElementById("skype_user_counter").innerHTML = "Skype Network: " + counter + " Users Online(<a href=\"skype_user_counter.png\">graph</a>)";
        }

        smtl_timer = setTimeout( setupMoodTextList, 20000 );

      }
    };
    xmlhttp_m.send(null);
}

function changeStatusKind( handle )
{
    var status_kind;
    var status_kind_disp;
    
    status_kind = document.StatusKindSelect.status_kind.value;
    if( status_kind != "CHAT" ) {
      status_kind_disp = document.StatusKindSelect.status_kind.options[document.StatusKindSelect.status_kind.selectedIndex].text;
      getMarkers( status_kind, status_kind_disp, handle );
    } else {
      getChatMarkers();
    }
    createRocketMarker();
}




var ShowCenterAddress_xmlhttp = null;
var ShowCenterAddress_last_pt_x = null;
var ShowCenterAddress_last_pt_y = null;

function ShowCenterAddress() {

//    var center = map.getCenterLatLng();
    var center = map.getCenter();

    if( ShowCenterAddress_last_pt_x != null ) {
        if( Math.abs( ShowCenterAddress_last_pt_x - center.x ) < 0.00001 &&
            Math.abs( ShowCenterAddress_last_pt_y - center.y ) < 0.00001 ) {
            return;
        }
    }
    
    document.getElementById("bottom_bar").innerHTML = "<img src=\"wait.gif\">";
    ShowCenterAddress_last_pt_x = center.x;
    ShowCenterAddress_last_pt_y = center.y;

    var html = "";
    if( current_lang == "ja" ) {
      html = "<table width=\"100%\" style=\"font-size:10px;\"><tr><th width=\"100\">地図中央</th><td></td><td>位置=&gt</td><td>(" + center.x + ", " + center.y + ")</td><td>この位置を登録するなら=&gt;&nbsp;#location " + center.x + " " + center.y + "</td>" ;
      html += "</tr></table>";
    } else {
      html = "Center: (" + center.x + " E, " + center.y + " N)<br/>Chat Command: #location " + center.x + " " + center.y;
    }
    document.getElementById("bottom_bar").innerHTML = html;
    return;
}

function ClearAllMarker()
{
// TEST
//    map.clearOverlays();
    clear_all_gobjects();
}

function getLocation(elem)
{
    var ans_top;
    var ans_left;
    
    ans_top = 0;
    ans_left = 0;
    do {
      var dt, dl;
      dt = 0;
      dl = 0;
      if( elem.offsetTop ) {
        dt = elem.offsetTop;
      }
      if( elem.offsetLeft ) {
        dl = elem.offsetLeft;
      }
      ans_top += dt;
      ans_left += dl;
      elem = elem.offsetParent;
    } while (elem);
    return [ans_left, ans_top];
}

//]]>

