﻿//<![CDATA[

//
// Gatagata Map Utility
//    Copyright(c) All right reserved T.Yahagi(yahag@gatagata.jp)
//      http://www.gatagata.jp
//
//  isj_form [form]
//     dis_id [select]
//     city_id [select]
//     sec_id [select]
//     blk_id [select]
//  city_id_div
//  city_id_wait_div
//  sec_id_div
//  sec_id_wait_div
//  blk_id_div
//  blk_id_wait_div
//

var ac_xmlhttp;
var ac_str_element;
var ac_target_div;
var ac_idle_timer;
var ac_event_keycode;

// Creation of XMLHttp Object
function createXMLHttp()
{
  try
  {
    return new ActiveXObject ("Microsoft.XMLHTTP");
  }
  catch(e)
  {
    try
    {
      return new XMLHttpRequest();
    }
    catch(e)
    {
      return null;
    }
  }
  return null;
}

function InitISJForm( jp_flag ) {
  var i;

  ac_xmlhttp = null;
  ac_str_element = null;
  ac_target_div = null;
  ac_idle_timer = null;

  if( jp_flag != 0 ) {
      document.isj_form.dis_id.length = 0;
      i = 0;
      document.isj_form.dis_id.options[i] = new Option( "北海道",   "01" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "青森県",   "02" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "岩手県",   "03" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "宮城県",   "04" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "秋田県",   "05" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "山形県",   "06" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "福島県",   "07" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "茨城県",   "08" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "栃木県",   "09" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "群馬県",   "10" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "埼玉県",   "11" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "千葉県",   "12" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "東京都",   "13" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "神奈川県", "14" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "新潟県",   "15" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "富山県",   "16" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "石川県",   "17" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "福井県",   "18" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "山梨県",   "19" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "長野県",   "20" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "岐阜県",   "21" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "静岡県",   "22" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "愛知県",   "23" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "三重県",   "24" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "滋賀県",   "25" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "京都府",   "26" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "大阪県",   "27" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "兵庫県",   "28" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "奈良県",   "29" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "和歌山県", "30" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "鳥取県",   "31" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "島根県",   "32" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "岡山県",   "33" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "広島県",   "34" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "山口県",   "35" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "徳島県",   "36" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "香川県",   "37" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "愛媛県",   "38" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "高知県",   "39" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "福岡県",   "40" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "佐賀県",   "41" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "長崎県",   "42" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "熊本県",   "43" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "大分県",   "44" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "宮崎県",   "45" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "鹿児島県", "46" ); i++;
      document.isj_form.dis_id.options[i] = new Option( "沖縄県",   "47" ); i++;
      changeDistrict();
   }
}

function changeDistrict() {

// Update City List
  document.getElementById("city_id_wait_div").innerHTML = "<img src=\"wait.gif\">";
  document.getElementById("city_id_wait_div").style.visibility = "visible";
  document.getElementById("city_id_wait_div").style.position = "";
  document.getElementById("city_id_div").style.visibility = "hidden";
  document.getElementById("city_id_div").style.position = "absolute";
  
  var request = createXMLHttp();
  request.open("GET", "/PhotoMap/isj_func.cgi?func=city_list&dis_id=" + document.isj_form.dis_id.value, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      var citys = xmlDoc.documentElement.getElementsByTagName("isj_city");
      document.isj_form.city_id.length = 0;
      for (var i = 0; i < citys.length; i++) {
//        alert( citys[i].getAttribute("id") );
        document.isj_form.city_id.options[i] = new Option( citys[i].getAttribute("city"), citys[i].getAttribute("id") );
      }
      document.getElementById("city_id_wait_div").innerHTML = "";
      document.getElementById("city_id_wait_div").style.visibility = "hidden";
      document.getElementById("city_id_wait_div").style.position = "absolute";
      document.getElementById("city_id_div").style.visibility = "visible";
      document.getElementById("city_id_div").style.position = "";
      changeCity();
    }
  }
  request.send(null);

}

function changeCity() {

// Update Section List
  document.getElementById("sec_id_wait_div").innerHTML = "<img src=\"wait.gif\">";
  document.getElementById("sec_id_wait_div").style.visibility = "visible";
  document.getElementById("sec_id_wait_div").style.position = "";
  document.getElementById("sec_id_div").style.visibility = "hidden";
  document.getElementById("sec_id_div").style.position = "absolute";
  
  var request = createXMLHttp();
  request.open("GET", "/PhotoMap/isj_func.cgi?func=sec_list&dis_id=" + document.isj_form.dis_id.value + "&city_id=" + document.isj_form.city_id.value, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      var sections = xmlDoc.documentElement.getElementsByTagName("isj_section");
//      alert( "Step2[" +  sections.length + "]" );
      document.isj_form.sec_id.length = 0;
      for (var i = 0; i < sections.length; i++) {
        document.isj_form.sec_id.options[i] = new Option( sections[i].getAttribute("section"), sections[i].getAttribute("id") );
      }
      document.getElementById("sec_id_wait_div").innerHTML = "";
      document.getElementById("sec_id_wait_div").style.visibility = "hidden";
      document.getElementById("sec_id_wait_div").style.position = "absolute";
      document.getElementById("sec_id_div").style.visibility = "visible";
      document.getElementById("sec_id_div").style.position = "";
      changeSection();
    }
  }
  request.send(null);
}

function changeSection() {

// Update Block List
  document.getElementById("blk_wait_div").innerHTML = "<img src=\"wait.gif\">";
  document.getElementById("blk_wait_div").style.visibility = "visible";
  document.getElementById("blk_wait_div").style.position = "";
  document.getElementById("blk_div").style.visibility = "hidden";
  document.getElementById("blk_div").style.position = "absolute";
  var request = createXMLHttp();
  request.open("GET", "/PhotoMap/isj_func.cgi?func=blk_list&dis_id=" + document.isj_form.dis_id.value + "&city_id=" + document.isj_form.city_id.value + "&sec_id=" + document.isj_form.sec_id.value, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      var blocks = xmlDoc.documentElement.getElementsByTagName("isj_block");
//      alert( "Step2[" +  blocks.length + "]" );
      document.isj_form.blk.length = 0;
      for (var i = 0; i < blocks.length; i++) {
        document.isj_form.blk.options[i] = new Option( blocks[i].getAttribute("block"), blocks[i].getAttribute("block") );
      }
      document.getElementById("blk_wait_div").innerHTML = "";
      document.getElementById("blk_wait_div").style.visibility = "hidden";
      document.getElementById("blk_wait_div").style.position = "absolute";
      document.getElementById("blk_div").style.visibility = "visible";
      document.getElementById("blk_div").style.position = "";
    }
  }
  request.send(null);
}

function SetWET() {
    getMarkers( 'WET', document.isj_form.dis_id.value );
}

function ac_onMouseOver(id_name)
{
    var ac_target_td = document.getElementById(id_name);
    ac_target_td.style.backgroundColor = "#A0A0F0";
}

function ac_onMouseOut(id_name)
{
    var ac_target_td = document.getElementById(id_name);
    ac_target_td.style.backgroundColor = "";
}

function ac_onClick(type, adjust_str, lat, lon)
{
    ac_str_element.value = adjust_str;

    if( type == "lnd_mrk" ) {
        var point = new GLatLng(parseFloat(lat), parseFloat(lon), true);
        var marker = createISJMarker(point,
                                     "",
                                     adjust_str,
                                     "",
                                     ""
                                    );
        map.addOverlay(marker);
        map.setCenter(point, 12);
    } else if( type == "skype_handle" ) {
        var point = new GLatLng(parseFloat(lat), parseFloat(lon), true);
        map.setCenter(point, 12);
    } else if( type == "skype_chat" ) {
        var point = new GLatLng(parseFloat(lat), parseFloat(lon), true);
        map.setCenter(point, 12);
    }
}

function ac_GetList()
{
    var ac_str = ac_str_element.value;
    if( ac_xmlhttp == null ) {
        ac_xmlhttp = GXmlHttp.create();
    } else {
        ac_xmlhttp.abort();
    }

    document.getElementById('search_status').innerHTML = "<b>...</b>";
    disp_kind = document.StatusKindSelect.status_kind.options[document.StatusKindSelect.status_kind.selectedIndex].value;
//    alert( disp_kind );
    if( disp_kind == "CHAT" ) {
        ac_xmlhttp.open('GET', "SKMapChatSearch.cgi?func=search&type=xml&key=" + encodeURI(ac_str)  );
    } else {
        ac_xmlhttp.open('GET', "SKMapSearch.cgi?func=search&kind=&type=xml&key=" + encodeURI(ac_str)  );
    }
    ac_xmlhttp.onreadystatechange = function() {
      if( ac_xmlhttp.readyState == 4 )
      {
        var xmlDoc = ac_xmlhttp.responseXML;
        var results = xmlDoc.documentElement.getElementsByTagName("search_result");
        var html = "";
        document.getElementById('search_status').innerHTML = "";
        if( results.length > 0 ) {
            html += "<table width=\"100%\">";
            for( var i = 0; i < results.length && i < 15; i ++ ) {
                var er_name = "ac_list_record_" + i;
                html += "<tr><td id=\"" + er_name + "\" onMouseOver=\"ac_onMouseOver('" + er_name + "')\" onMouseOut=\"ac_onMouseOut('" + er_name +"')\" ";
                if( results[i].getAttribute("type") == "lnd_mrk" ) {
                    html += "onClick=\"ac_onClick('lnd_mrk', '" +
                            results[i].getAttribute("NAME") + "','" + results[i].getAttribute("LAT") + "','" + results[i].getAttribute("LON") + "')\">";
                    html += results[i].getAttribute("NAME") + "&nbsp;&nbsp;[Landmark]";
                } else if( results[i].getAttribute("type") == "user" ) {
                    html += "onClick=\"ac_onClick('skype_handle', '" +
                            results[i].getAttribute("handle") + "','" + results[i].getAttribute("lat") + "','" + results[i].getAttribute("lon") + "')\">";
//                    html += results[i].getAttribute("handle") + "&nbsp;&nbsp;[Skype Handle]";
                    html += results[i].getAttribute("handle");
                } else if( results[i].getAttribute("type") == "chat" ) {
                    html += "onClick=\"ac_onClick('skype_chat', '" +
                            results[i].getAttribute("display_name") + "','" + results[i].getAttribute("lat") + "','" + results[i].getAttribute("lon") + "')\">";
//                    html += results[i].getAttribute("handle") + "&nbsp;&nbsp;[Skype Handle]";
                    html += results[i].getAttribute("display_name");
                }
                html += "</td></tr>";
            }
            html += "</table>";
        } else {
            alert( "Not found ["+ ac_str +"]" );
        }
        ac_target_div.innerHTML = html;
        
        var loc = getLocation(ac_str_element);
        ac_target_div.style.left          = loc[0] + 'px';
        ac_target_div.style.top           = (loc[1] + ac_str_element.offsetHeight) + 'px';
        ac_target_div.style.width         = ac_str_element.offsetWidth + 'px';
        ac_target_div.style.visibility    = 'visible';
      }
    };
    ac_xmlhttp.send(null);
}

function ac_onKeypress(keycode, ac_str_input, ac_list_div)
{
    ac_str_element = document.getElementById(ac_str_input);
    ac_target_div = document.getElementById(ac_list_div);

    if( keycode != 40 ) {
      return true;
    }

    if( ac_idle_timer == null ) {
        ac_idle_timer = setTimeout( 'ac_GetList()', 1000 );
    } else {
        clearTimeout( ac_idle_timer );
        ac_idle_timer = null;
        ac_idle_timer = setTimeout( 'ac_GetList()', 1000 );
    }

    return false;

}

function ac_onKeypress2(keycode, ac_str_input, ac_list_div)
{
    ac_str_element = document.getElementById(ac_str_input);
    ac_target_div = document.getElementById(ac_list_div);

    if( keycode != 13 ) {
      return true;
    }

    if( ac_idle_timer == null ) {
        ac_idle_timer = setTimeout( 'ac_GetList()', 1000 );
    } else {
        clearTimeout( ac_idle_timer );
        ac_idle_timer = null;
        ac_idle_timer = setTimeout( 'ac_GetList()', 1000 );
    }

    return false;

}

function ac_clearContents()
{
    if( ac_target_div != null ) {
        ac_target_div.innerHtml = "";
        ac_target_div.style.visibility = 'hidden';
    }
    if( ac_idle_timer != null ) {
        clearTimeout( ac_idle_timer );
        ac_idle_timer = null;
    }
}

function ac_onBlur(ac_str_input, ac_list_div)
{
    var ac_str_element = document.getElementById(ac_str_input);
    var ac_target_div = document.getElementById(ac_list_div);
    if( ac_idle_timer == null ) {
        ac_idle_timer = setTimeout( 'ac_clearContents()', 500 );
    } else {
        clearTimeout( ac_idle_timer );
        ac_idle_timer = null;
        ac_idle_timer = setTimeout( 'ac_clearContents()', 500 );
    }
}

//]]>
