//--------------------------------------------------------------------
// tokio.decore.jp/wander.asp 用イベント＆オブジェクト
//--------------------------------------------------------------------
//                                               http://www.oas.co.jp/

//--------------------------------------------------------------------
var C_max_landmark = 20;    // 表示ランドマーク数(最大数はaspにて指定)
//var C_url_search = '/aisasp/sdb.asp';  // 検索結果用の asp
//var C_url_table  = '/aisasp/tdb.asp';  // データテーブル作成用 asp
//var C_url_detail  = '/aisasp/ddb.asp';  // 詳細表示用 asp

var C_url_domain = 'http://tokio.decore.jp';
var C_url_search = C_url_domain+'/aisasp/sdb.asp';  // 検索結果用の asp
var C_url_table  = C_url_domain+'/aisasp/tdb.asp';  // データテーブル作成用 asp
var C_url_detail = C_url_domain+'/aisasp/ddb.asp';  // 詳細表示用 asp
//--------------------------------------------------------------------


// イベント
function onLoadBody(pos)
{
  var owid   = document.fparam.wid;
  var ohgt   = document.fparam.hgt;
  
  owid.value = G_canvas.w;
  ohgt.value = G_canvas.h;
  
  // 画像を表示する
  var ov = document.fparam.vinf;
  if (ov && pos)
  {
    chgparams(true);
    ov.value = pos;
    jumpViewInfo();
  }
  else
  {
    chgparams();
  }
  
  // 
  loadViewInfoNames();
  setAgreed();
  // テキストボックスのイベントを一括追加
  setFocusEvents();
  document.fparam.kwd.focus();
}

// 画像をキャッシュに読み込むときのコールバック
function onLoadImg()
{
  // パラメータ
  var mpp = oApp.mpp * 100;
  var smpp = '' + mpp;
  var ofp = eval( 'document.fparam' );
  if (ofp)
  {
    // 倍率リストボックス
    var oscl = ofp.scale;
    oscl.selectedIndex = 0;
    for (var i=0; i<oscl.options.length; i++)
    {
      if (oscl.options[i].value == smpp)
      {
        oscl.selectedIndex = i;
        break;
      }
    }
    // 倍率リストボックス(2)
    var osmpp = ofp.smpp;
    osmpp.selectedIndex = 0;
    for (var i=0; i<osmpp.options.length; i++)
    {
      if (osmpp.options[i].value == smpp)
      {
        osmpp.selectedIndex = i;
        break;
      }
    }
    // 幅と高さ
    ofp.wid.value = '' + (oApp.wid>0)? oApp.wid: '';
    ofp.hgt.value = '' + (oApp.hgt>0)? oApp.hgt: '';
    
    // 緯度経度と平面直角座標
    ofp.ido.value = oApp.s_ido;
    ofp.kdo.value = oApp.s_kdo;
    ofp.hx.value = oApp.cx;
    ofp.hy.value = oApp.cy;
    
    // DB用
    ofp.dbmpp.value = oApp.mpp;
    
    // viewinfo
    if (ofp.vinf)
    {
      ofp.vinf.value = getViewInfo();
    }
    // wanderurl
    if (ofp.wanderurl)
    {
      var ptokyo='tokyo='+oApp.s_ido.split('/').join('.')+','+oApp.s_kdo.split('/').join('.');
      ofp.wanderurl.value = G_thisasp+'?'+ptokyo+'&zm='+oApp.mpp;
    }
  }
  
  // DBとランドマークの初期化
  G_distline.mpp = oApp.mpp;
  G_areapoly.mpp = oApp.mpp;
  recalcCanvas();
  refreshDB();
  
  // 広告リフレッシュ
  nextCM();
}
function pmv(direction)
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var mvs = parseFloat( document.fparam.mvs.value );
  if (isNaN(mvs))
  {
    alert('移動の比率が正しくありません');
  }
  else if(0>=mvs || mvs>1.0)
  {
    alert('移動の比率は 0.1〜1.0 が妥当です');
  }
  else
  {
    // 指定した方向に移動(方向は テンキーと同じ)
    document.fparam.mvs.value = '' + mvs;
    oApp.moveDir( direction, mvs );
    oApp.refresh();
  }
}
function chgparams(norefresh)
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var oscale = document.fparam.scale;
  var osrc   = document.fparam.src;
  var owid   = document.fparam.wid;
  var ohgt   = document.fparam.hgt;
  var omode  = document.fparam.mode;
  var oqual  = document.fparam.quality;
  
  var scale100 = parseFloat( oscale.options[ oscale.selectedIndex ].value );
  var scale = scale100/100;
  var quality = parseInt( oqual.options[ oqual.selectedIndex ].value );
  var src = osrc.options[ osrc.selectedIndex ].value;
  var wid = parseInt( owid.value );
  var hgt = parseInt( ohgt.value );
  
  var nl = document.fparam.ido.value;
  var el = document.fparam.kdo.value;
  var hx = parseFloat( document.fparam.hx.value );
  var hy = parseFloat( document.fparam.hy.value );
  
  if (nl.length > 0 && el.length > 0)
  {
    if (scale>0)
    {
      oApp.setInfo( el, nl, scale, wid, hgt );
    }
    else
    {
      oApp.setInfo( el, nl, 3.5, wid, hgt );
    }
  }
  else
  {
    alert('緯度または経度が正しくありません.');
    return;
  }
  
  if (scale>0)
  {
    oApp.setScale( scale );
  }
  if (src.length > 0)
  {
    oApp.setSrc( src );
  }
  if (quality>=0 && 100>=quality)
  {
    oApp.setQuality( quality );
  }
  
  if (!norefresh)
  {
    oApp.refresh();
  }
}
function reload()
{
  oApp.refresh(true);
}
function onMdn(e)
{
  if (oApp.display)
  {
    var x,y;
    var bSucceed = false;
    if (document.all)
    {
      if (event.button == 1)
      {
        // 左クリックのみ
        x = event.offsetX;
        y = event.offsetY;
        bSucceed = true;
      }
    }
    else if (document.layers || document.getElementById)
    {
      if (e.which == 1)
      {
        // 左クリックのみ
//        alert('ご使用のブラウザでは操作できません.');
//        x = e.layerX;
//        y = e.layerY;
//        bSucceed = true;
      }
    }
    if (bSucceed)
    {
      // (x,y)へ移動
      oApp.moveTo( x, y );
      oApp.refresh();
    }
  }
  return false;
}
function disponlymap()
{
  var w = window.open( oApp.url );
}

// -------------------------------------------------------------------
// -------------------------------------------------------------------
function onFocusText() {var o=document.all[this.name]; if(o){o.style.backgroundColor='#99ccff';
    document.body.onselectstart=new Function("return true");}}
function onBlurText() {var o=document.all[this.name]; if(o){o.style.backgroundColor='';}
    document.body.onselectstart=new Function("return false");}

function setFocusEvents()
{
  var textnames = new Array( 'ido', 'kdo', 'kwd', 'vinf0', 'vinf1', 'vinf', 'wanderurl' );
  for (var i=0; i<textnames.length; i++)
  {
    var o = document.all[textnames[i]];
    if (o)
    {
      o.onfocus = onFocusText;
      o.onblur = onBlurText;
    }
  }
}

// -------------------------------------------------------------------
// -------------------------------------------------------------------
var C_tabcapt = new Array( 'ランドマーク検索', '東西南北に移動', '画像・品質の変更', '距離／面積計測' );
var C_tabname = new Array( 'tb_search', 'tb_idokdo', 'tb_srcinfo', 'tb_mesure' );
var C_onoffbg = new Array('#99CCFF', '#3366CC' );
var C_onofffg = new Array('#000066', '#FFFFFF' );

function putTab(m)
{
  var st, st0 = 'border:none;width:140;font-size:12px;font-weight:bold;background-color:', st1 = ';color:', st2=";";
  var onoff_bg = new Array('#99CCFF', '#3366CC' );
  var onoff_fg = new Array('#000066', '#FFFFFF' );
  for (var i=0; i<C_tabcapt.length && i<=m; i++)
  {
    st = st0 + C_onoffbg[(i==0)? 0: 1] + st1 + C_onofffg[(i==0)? 0: 1] + st2;
    if (i<=m)
    {
      document.write( '<INPUT TYPE=BUTTON style="'+st+'" ID="'+C_tabname[i]+'_b" onclick="changeMenuTab('+i+');" VALUE="'+C_tabcapt[i]+'">' );
    }
    
  }
}
function changeMenuTab(n)
{
  var visibles = new Array();
  
  if (n<0 || C_tabname.length<=n)  return ;
  
  if (document.getElementById)
  {
    for (var i=0; i<C_tabname.length; i++)
    {
      var ot  = document.getElementById( C_tabname[i] );
      var ob  = document.getElementById( C_tabname[i] + '_b' );
      if (ot)
      {
        ot.style.display = (i==n)? 'block': 'none';
      }
      if (ob)
      {
        ob.style.backgroundColor = C_onoffbg[(i==n)? 0: 1];
        ob.style.color = C_onofffg[(i==n)? 0: 1];
      }
      
    }
  }
}

function putMeasureLandmark(t)
{
  if (t)
  {
    document.write( '<IMG SRC="./image/sepa.gif" ALT="|">' );
    document.write( '<INPUT TYPE=CHECKBOX NAME="cmsr" CHECKED onClick="">' );
    document.write( '<SPAN class="caption" style="cursor:default;" onMouseDown="document.fparam.cmsr.checked^=true; return true;">ランドマークにより位置を指定する</SPAN>' );
  }

}
function putMeasureMode(m)
{
  var md = new Array( 'なし', '距離(ｍ)', '面積(平方ｍ)', '面積(坪)' );
  for (var i=0; i<md.length; i++)
  {
    document.write( '<TD CLASS="hrborder">' );
    if (i<=m)
    {
      document.write( '<INPUT TYPE=RADIO NAME="rdo" VALUE="'+i+'" onClick="setMode();"' + ((i==0)? ' CHECKED':'') + '>' );
      document.write( '<NOBR>' );
      document.write( '<SPAN CLASS="caption" style="cursor:default;" onMouseDown="setMode(\''+i+'\');return true;">' );
      document.write( md[i] );
      document.write( '<\/SPAN>' );
      document.write( '<\/NOBR>' );
    }
    else
    {
      document.write( '<BR>' );
    }
    document.write( '<\/TD>' );
    
  }
}

function visibleId(name,b)
{
  var ot  = document.getElementById(name);
  if (ot)
  {
    ot.style.display = (!!b)? 'block': 'none';
  }
}

// -------------------------------------------------------------------
// -------------------------------------------------------------------
// 表示した時に「同意した」というCookieを埋め込む (1年有効)
function setAgreed()
{
  var exp = new Date();
  exp.setUTCFullYear(exp.getUTCFullYear() + 1);
  setCookie('agreed', 'yes', exp );
}

// -------------------------------------------------------------------
// -------------------------------------------------------------------
function getViewInfo()
{
  var mpp = oApp.mpp;
  var cx  = oApp.cx;
  var cy  = oApp.cy;
  
  var ret = '' + mpp + ',' + cx + ',' + cy;
  return ret;
}
function setViewInfo(info)
{
  if(!info) return ;
  var arr = info.split(',');
  if (arr.length > 2) {
    var mpp = parseFloat(arr[0]);
    var cx  = parseFloat(arr[1]);
    var cy  = parseFloat(arr[2]);
    if (!isNaN(mpp) && !isNaN(cx) && !isNaN(cy))
    {
      oApp.setUrlXY( oApp.wid, oApp.hgt, mpp, cx, cy );
      oApp.refresh();
    }
  }
}
function saveViewInfo(num)
{
  var exp = new Date();
  exp.setUTCFullYear(exp.getUTCFullYear() + 1);
  var v=getViewInfo();
  var onm = eval('document.fparam.vinf' + num);
  var nm = '';
  if (onm)
  {
    nm = onm.value;
    if (!nm) nm = '';
  }
  setCookie('vinfo'+num, v, exp );
  setCookie('vinfo'+num+'_n', nm, exp );
  
  var msg = '';
  if (nm.length > 0) { msg += '「'+nm+'」の位置を'};
  msg += 'Cookie へ保存しました.';
  alert(msg);
}
function loadViewInfoNames()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  for (var i=0; i<2; i++)
  {
    var nm = getCookie('vinfo'+i+'_n');
    var ob = eval('document.fparam.vinf' + i);
    if (nm && ob)
    {
      ob.value = nm;
    }
  }
}
function loadViewInfo(num)
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var v=getCookie('vinfo'+num);
  setViewInfo(v);
}
function delViewInfo(num)
{
  var v  = getCookie('vinfo'+num);
  if (!v) return ;
  var nm = getCookie('vinfo'+num+'_n');
  var msg = '';
  if (nm)
  {
    if (nm.length > 0) { msg += '「'+nm+'」の位置を'};
  }
  msg += '削除しますか？';
  if (confirm(msg))
  {
    var ob = eval('document.fparam.vinf' + num);
    if (ob) { ob.value = ''; }
    
    delCookie('vinfo'+num+'_n');
    delCookie('vinfo'+num);
  }
}
function jumpViewInfo()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var ov = document.fparam.vinf;
  if (ov)
  {
    var v = ov.value;
    setViewInfo(v);
  }
}
function clearViewInfo()
{
  var ov = document.fparam.vinf;
  if (ov)
  {
    ov.value = '';
  }
}
// -------------------------------------------------------------------
// -------------------------------------------------------------------

var isEID = (document.getElementById)? true: false;

function onMdnCanvas(e)
{
  var ret = false;
  if (isEID){
    var x = window.event.offsetX;
    var y = window.event.offsetY;
    var rval = getRadioValue( document.fparam.rdo );
    if (rval == '0')
    {
      ret = onMdn(e);
    }
    else
    {
      if (event.button == 1)
      {
        addPoint(x, y);
      }
      else if (event.button == 2)
      {
        var npoint = getPoints();
        
        if (npoint > 0)
        {
          if (confirm('一つ戻りますか?\n現在の点の数='+npoint))
          {
            addPointUndo();
          }
        }
      }
    }
  }
  else
  {
    ret = onMdn(e);
  }
  return ret;
}
function addPoint(x,y) // addPoint したら true
{
  var ret = true;
  var rval = getRadioValue( document.fparam.rdo );
  switch(rval)
  {
  case '0':
    ret = false;
    break;
  case '1':
    G_distline.addLine(x,y);
    G_distline.redraw();
    break;
  case '2':
    G_areapoly.addLine(x,y);
    G_areapoly.redraw();
    break;
  case '3':
    G_areapoly.addLine(x,y);
    G_areapoly.redraw();
    break;
  }
  recalcCanvas();
  return ret;
}
function getPoints()  // 現在保持しているポイント数を返す
{
  var ret = 0;
  var rval = getRadioValue( document.fparam.rdo );
  switch(rval)
  {
  case '0':            ret=0;                       break;
  case '1':            ret=G_distline.list.length;  break;
  case '2': case '3':  ret=G_areapoly.list.length;  break;
  }
  return ret;
}
function addPointUndo() // undo したら true
{
  var ret = true;
  var rval = getRadioValue( document.fparam.rdo );
  switch(rval)
  {
  case '0':
    ret = false;
    break;
  case '1':
    G_distline.undoLine();
    G_distline.redraw();
    break;
  case '2':
    G_areapoly.undoLine();
    G_areapoly.redraw();
    break;
  case '3':
    G_areapoly.undoLine();
    G_areapoly.redraw();
    break;
  }
  recalcCanvas();
  return ret;
}
function recalcCanvas()
{
  if (! is_ie5_5up)
  {
    document.fparam.vdo.value = '***計測できません***';
    return false;
  }
  if (isEID){
    var rval = getRadioValue( document.fparam.rdo );
    var r = 0;
    var unt = '';
    switch(rval)
    {
    case '0': break;
    case '1': r = G_distline.calc();  unt=' ｍ';  break;
    case '2': r = G_areapoly.calc();  unt=' 平方ｍ'; break;
    case '3': r = G_areapoly.calc() * 0.3025;  unt=' 坪'; break;
    }
    document.fparam.vdo.value = (r>0)? ('約 '+zround(r,3)+unt): ('');
  }
}
function clearCanvas()
{
  if (! is_ie5_5up)
  {
    document.fparam.vdo.value = '***計測できません***';
    return false;
  }
  if (isEID){
    var rval = parseInt( getRadioValue( document.fparam.rdo ) );
    switch(rval)
    {
    case 0:
      break;
    case 1:
      G_distline.destroy();
      G_distline.redraw();
      break;
    case 2:
      G_areapoly.destroy();
      G_areapoly.redraw();
      break;
    case 3:
      G_areapoly.destroy();
      G_areapoly.redraw();
      break;
    }
    document.fparam.vdo.value = '';
  }
  return false;
}

function getRadioValue(o)
{
  if (o)
  {
    for (var i=0; i<o.length; i++)
    {
      if (o[i].checked) return ''+o[i].value;
    }
  }
  return null;
}
function zround(v,z)  // 小数点以下に丸める
{
  var mppz = (z && !isNaN(z) && z>0)? z: 6; // 小数点以下?桁
  var mppu = Math.pow(10,mppz);
  var mppZ = (''+mppu).substring(1);
  v *= mppu;
  v = Math.round( v );
  var mpph = parseInt( v / mppu );
  var mppL = (''+mppZ+v).length;
  var mppl = (''+mppZ+v).substring(mppL-mppz,mppL);
  var ret = ''+mpph+'.'+mppl;
  return ret;
}




var G_modeold = -1;
function setMode(pos)
{
  if (pos)
  {
    var p = parseInt(pos);
    if (! isNaN(p) && 0<=p && p<document.fparam.rdo.length )
    {
      document.fparam.rdo[p].checked = true;
    }
  }
  var newval = parseInt( getRadioValue( document.fparam.rdo ) );
  
  if (G_modeold != newval)
  {
    switch(G_modeold)
    {
    case 0:  break;
    case 1:  G_distline.setVisible(false);  break;
    case 2:  G_areapoly.setVisible(false);  break;
    case 3:  G_areapoly.setVisible(false);  break;
    }
    setMesureInfo(newval);
    switch(newval)
    {
    case 0:  break;
    case 1:  G_distline.setVisible(true);  break;
    case 2:  G_areapoly.setVisible(true);  break;
    case 3:  G_areapoly.setVisible(true);  break;
    }
    recalcCanvas();
  }
  G_modeold = newval;
}
function setMesureInfo(md)
{
  var msg = '';
  
  switch(md)
  {
  case 0:  break;
  case 1:  msg='左クリックで点を追加、右クリックで確認後１つ削除します';  break;
  case 2:  msg='左クリックで点を追加、右クリックで確認後１つ削除します';  break;
  case 3:  msg='左クリックで点を追加、右クリックで確認後１つ削除します';  break;
  }
  if (isEID) {
    var o = document.getElementById('mesureinfo');
    if (o)
    {
      o.innerHTML = msg;
    }
  }
}
function toggleLandmark()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var ocb = eval( 'document.fparam.clm' );
  if (ocb)
  {
    setVisibleAllLandmark_div( ocb.checked );
  }
  return true;
}

function toggleLineLM() // 古いバージョンのために残してあります.
{
  var ocb = eval( 'document.fparam.cline' );
  if (ocb)
  {
    setVisibleAllLandmarkLine( ocb.checked );
  }
  return true;
}
function visibleAllLine(b)
{
  setVisibleAllLandmarkLine( !!b );
  setLineIndex(b)
  return true;
}
function getLandmarkMeasure()
{
  var ocb = eval( 'document.fparam.cmsr' );
  if (ocb)
  {
    return ocb.checked;
  }
  return false;
}
function arrangeLandmark()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  for (var i=0; i<G_landmark.length; i++)
  {
    G_landmark[i].defaultPos();
  }
  setPositionIndex(0);  // 以後の初期位置を「整列」に
}
function arrangeLandmarkTarget()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  for (var i=0; i<G_landmark.length; i++)
  {
    G_landmark[i].targetPos();
  }
  setPositionIndex(1);  // 以後の初期位置を「地図上」に
}

function mmove(e)
{
  if (mousemoveLandmark())
  {
    return false;
  }
}
function selstart()
{
  if (isDragging())
  {
    return false;
  }
}
document.onmousemove = mmove;
document.onselectstart = selstart;


function checkEnter(func)
{
  var keycode = event.keyCode; // for IE
  if (keycode == 13) {
    var f = eval(func);
    if (f) f();
  }
}


function disponlycsv(n)
{
  var name = (n==0)? G_landmarkdb: ( (n==1)? G_searchdb: '');
  if(isEID && name.length)
  {
    var w = window.open( document.getElementById( name ).DataURL, '__disp_only_csv__' );
  }
  else
  {
    alert('sorry, not supported.')
  }
}
var old_xywhm='';
var old_filter='';
function refreshDB()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var mpp = parseFloat( document.fparam.dbmpp.value );
  var wid = parseInt( document.fparam.wid.value );
  var hgt = parseInt( document.fparam.hgt.value );
  var hx  = parseFloat( document.fparam.hx.value );
  var hy  = parseFloat( document.fparam.hy.value );
  var blms = !!document.fparam.clms.checked;
  var blml = !!document.fparam.clml.checked;
  var blma = !!document.fparam.clma.checked;
  
  if(isEID)
  {
    var filter = '';
    if (blms || blma || blml)
    {
      if (blms) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="s"';
      }
      if (blma) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="a"';
      }
      if (blml) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="l"';
        filter += ' | ';
        filter += 'type="m"';
      }
    }
    else
    {
      filter = 'type=\'*\'';
    }
    
    var o = document.getElementById( G_landmarkdb );
    if (o)
    {
      var newxywhm = ''
        + '&x=' + hx
        + '&y=' + hy
        + '&m=' + mpp
        + '&w=' + wid
        + '&h=' + hgt
        ;
      var newurl = C_url_table + '?c=sal' + newxywhm;
      
      if (old_xywhm != newxywhm)
      {
        // 中心位置,画像サイズ,縮尺 いずれかの変更
//        alert('中心位置,画像サイズ,縮尺 いずれかの変更');
        document.getElementById(G_landamrkdiv).innerHTML = '';
        old_xywhm = newxywhm;
        old_filter = filter;
        
        o.DataURL = newurl;
        o.filter = filter;
        o.Sort = 'dist2';
        o.Reset();
      }
      else if (old_filter != filter)
      {
        // フィルタの変更
//        alert('フィルタの変更');
        document.getElementById(G_landamrkdiv).innerHTML = '';
        old_filter = filter;
        
        o.filter = filter;
        o.Sort = 'dist2';
        o.Reset();
      }
    }
    else
    {
      document.getElementById(G_landamrkdiv).innerHTML = '';
    }
  }
}//
function completeDB(e)
{
  var reason = event.reason;
  
//  alert('completeDB = '+reason );
  
  if (reason == 0)
  {
    loadDB();
  }
  else
  {
    var scode = '未知のエラー';
    switch (reason)
    {
    case 0: scode = 'ダウンロードの成功'; break;
    case 1: scode = 'ダウンロードの異常終了'; break;
    case 2: scode = 'ダウンロードの失敗'; break;
    }
    alert('ランドマークデータの読込みに失敗しました.\n'
      + 'エラーコードは '+reason+' ['+scode+'] です.' );
  }
}
function loadDB()
{
  if (!isEID) return ;
  
  var o = document.getElementById( G_landmarkdb );
  if (!o) return ;
  
  G_landmark = null;
  G_landmark = new Array();
  resetZIndex();
  
  var rs = o.recordset;
  var rscount = rs.recordcount;
//  alert('rscount='+rscount);
  if (rscount == 0)
  {
    document.getElementById(G_landamrkdiv).innerHTML = '';
    return ;
  }
  
  var type,name,href,xpos,ypos;
  var book,lmid;
  var olm;
  var lmdt='detailform';
  
  rs.moveFirst();
  for (var i=0; i<rscount && i<C_max_landmark; i++)
  {
    type = rs.fields('type').value;
    name = rs.fields('name').value;
    href = rs.fields('href').value;
    book = rs.fields('book').value;
    lmid = rs.fields('id').value;
    xpos = rs.fields('x').value;
    ypos = rs.fields('y').value;
    
    if (type == 'E')
    {
      olm = addLandmark(xpos,ypos,'エラー','javascript:alert(\''+name+'\')','','','', true);
      olm.rect_bg = '#FF9966';
    }
    else
    {
      olm = addLandmark(xpos,ypos,name,href,'_blank',book,'_blank', true);
      switch(type)
      {
      case 's':  olm.rect_bg = '#33CCFF';  olm.rect_fg = '#000000';  olm.lmdt = lmdt;  break;
      case 'a':  olm.rect_bg = '#CCFF99';  olm.rect_fg = '#000000';  break;
      case 'l':  olm.rect_bg = '#FFFF66';  olm.rect_fg = '#0000ff';  olm.lmdt = lmdt;  break;
      case 'm':  olm.rect_bg = '#FFA500';  olm.rect_fg = '#000000';  olm.lmdt = lmdt;  break;
      }
      olm.lmid = lmid;
      olm.lmtp = type;
    }
    rs.movenext();
  }
  
  var inner = '';
  for (var i=0; i<G_landmark.length; i++)
  {
    inner += G_landmark[i].getHtml();
  }
  
  document.getElementById(G_landamrkdiv).innerHTML = inner;
  resetZIndex();
  
  for (var i=0; i<G_landmark.length; i++)
  {
    G_landmark[i].setEvent();
    G_landmark[i].afterOnMDN = onMdnLandmark;
  }
  setStartPosition();
  
  var ocb = eval( 'document.fparam.clm' );
  if (ocb)
  {
    setVisibleAllLandmark_div( ocb.checked );
  }
  if (! is_ie5_5up)
  {
    setVisibleAllLandmark_div(false);
  }

  setStartLine();
}

// --------------
var pushed_action=1;  // 0:整列, 1:地図上
function setStartPosition()
{
  if (pushed_action == 0)
  {
    for (var i=0; i<G_landmark.length; i++)
    {
      G_landmark[i].defaultPos();
    }
  }
  else if (pushed_action == 1)
  {
    for (var i=0; i<G_landmark.length; i++)
    {
      G_landmark[i].targetPos();
    }
  }
}
function setPositionIndex(index)
{
  pushed_action = index;
}
// --------------
var pushed_line=true;  // false:非表示, true:表示
function setStartLine()
{
  setVisibleAllLandmarkLine(pushed_line);
}
function setLineIndex(b)
{
  pushed_line = !!b;
}



// --------------
var old_srchtext='';
var old_srchfilter='';
function refreshSearchDB()
{
//  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var kwd = document.fparam.kwd.value;
  var blms = !!document.fparam.slms.checked;
  var blml = !!document.fparam.slml.checked;
  var blma = !!document.fparam.slma.checked;
  
  if(isEID)
  {
    var filter = '';
    if (blms || blma || blml)
    {
      if (blms) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="s"';
      }
      if (blma) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="a"';
      }
      if (blml) { if (filter.length > 0) { filter += ' | '; }
        filter += 'type="l" | type="m"';
      }
      if (filter.length > 0) { filter += ' | '; }
//      filter += 'type="I" | type="E"';
      filter += 'type="I"';
    }
    else
    {
      filter = 'type=\'*\' | type="I" | type="E" ';
    }
    
    var info = '検索中です...'
    var osel = document.fparam.slmv;
    
    var o = document.getElementById( G_searchdb );
    if (o)
    {
      var newsrchtext = '&k=' + kwd;
      var newurl = C_url_search + '?c=sal' + newsrchtext;
      
      if (old_srchtext != newsrchtext)
      {
        // キーワードの変更
        old_srchtext = newsrchtext;
        old_srchfilter = filter;
        
        osel.options.length = 1;
        osel.options[0].text = info;
        osel.options[0].value = '';
        
        o.DataURL = newurl;
        o.filter = filter;
        o.Reset();
      }
      else if (old_srchfilter != filter)
      {
        // フィルタの変更
//        alert('フィルタの変更');
        old_srchfilter = filter;
        stat_loading_srchdb = true;
        
        osel.options.length = 1;
        osel.options[0].text = info;
        osel.options[0].value = '';
        
        o.filter = filter;
        o.Reset();
      }
    }
    else
    {
      info = '';
      osel.options.length = 1;
      osel.options[0].text = info;
      osel.options[0].value = '';
    }
  }
}//

function completeSearchDB(e)
{
  var reason = event.reason;
  
  if (reason == 0)
  {
    loadSearchDB();
  }
  else
  {
    var scode = '未知のエラー';
    switch (reason)
    {
    case 0: scode = 'ダウンロードの成功'; break;
    case 1: scode = 'ダウンロードの異常終了'; break;
    case 2: scode = 'ダウンロードの失敗'; break;
    }
    alert('検索結果の読込みに失敗しました.\n'
      + 'エラーコードは '+reason+' ['+scode+'] です.' );
  }
}
function loadSearchDB()
{
  if (!isEID) return ;
  
  var osel = document.fparam.slmv;
  if (!osel) return ;
  
  var o = document.getElementById( G_searchdb );
  if (!o) return ;
  
  var rs = o.recordset;
  var rscount = rs.recordcount;
//  alert('rscount='+rscount);
  if (rscount == 0)
  {
    osel.options.length = 1;
    osel.options[0].text = '検索結果がありません';
    osel.options[0].value = '';
    return ;
  }
  
  var type,name,xpos,ypos;
  var optname, optvalue;
  
  rs.moveFirst();
  osel.options.length = rscount;
  for (var i=0; i<rscount; i++)
  {
    type = rs.fields('type').value;
    name = rs.fields('name').value;
    xpos = rs.fields('x').value;
    ypos = rs.fields('y').value;
    
    if (type == 'E')
    {
      optname  = '×' + name;
      optvalue = '';
    }
    else if (type == 'I')
    {
      optname  = '※' + name;
      optvalue = '';
    }
    else
    {
      optname  = name;
      optvalue = ''+xpos+'/'+ypos;
    }
    osel.options[i].text  = optname;
    osel.options[i].value = optvalue;
    
    rs.movenext();
  }
}
function jumpSearch()
{
  if(cannotAction()) {alert('フォーム表示中は実行できません.'); return;}
  
  var osel = document.fparam.slmv;
  if (!osel) return ;
  
  var xypos = osel.options[ osel.selectedIndex ].value;
  if (xypos.length == 0) return ;
  
  var ar =  xypos.split("/");
  if (ar.length != 2)  return ;
  
  var xpos = parseFloat( ar[0] );
  var ypos = parseFloat( ar[1] );
  oApp.setUrlXY( oApp.wid, oApp.hgt, oApp.mpp, xpos, ypos );
  oApp.refresh();
}
// --------------

function setVisibleAllLandmark_div(b)
{
  b = !!b;
  setVisibleAllLandmark(b);
  if (isEID)
  {
    visibleId(G_landamrkdiv, b);
  }
}

function onMdnLandmark(olm)
{
  if (olm)
  {
    if (getLandmarkMeasure())
    {
      if (addPoint( olm.x, olm.y ))
      {
        olm.setLineVisible( true );
      }
    }
  }
}

// --------------
function cannotAction()
{
  if (bDetailForm)
  {
    // 詳細表示中は自動的に閉じる
    detailform(-1);
  }
  return false;
}
// --------------
function entryform()
{
  var pos = getViewInfo();
  var p = 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=450,height='+(screen.availHeight-22);
  var w = window.open('/regist/touroku.asp?p='+pos, 'entryform', p);
  w.moveTo(screen.availWidth-450-3,-3); //右側
//  w.moveTo(-3,-3); //左側
  w.focus();
}
function setVisibleLargeMap(b)
{
  visibleId(c_imagename, b);
  visibleId('urlspan', b); // urlspan(wanderurl表示欄も同期)
}

// --------------
var bDetailForm = false;
function detailform(lmid)
{
  window.status = '';
  
  if (! is_ie5_5up)
  {
    alert('詳細情報を表示できません.'); //ランドマーク自体表示しないので.
    return;
  }
  bDetailForm ^= true;
  
  var olm = null;
  if(0<=lmid && lmid<G_landmark.length)
  {
    olm = G_landmark[lmid];
  }
  if (bDetailForm)
  {
    // 表示
    document.body.onselectstart=new Function("return true");
    setVisibleAllLandmark_div(false);
    setVisibleLargeMap(false);
    hideDetailMap();
    
    refreshDetail(olm);
    setVisibleDetailForm(bDetailForm);
  }
  else
  {
    // 非表示
    document.body.onselectstart=new Function("return false");
    hideDetailMap();
    setVisibleDetailForm(bDetailForm);
    var ocb = eval( 'document.fparam.clm' );
    if (ocb)
    {
      setVisibleAllLandmark_div( ocb.checked );
    }
    setVisibleLargeMap(true);
  }
}
var showimagedetail = false;
function hideDetailMap()
{
  visibleId(c_imagenamedetail, false);
  showimagedetail = false;
}
function setVisibleDetailForm(b)
{
  visibleId( 'detailform', b );
}
function refreshDetail(olm)
{
  var ifm=document.all.ifdetail;
  if (ifm)
  {
    if (olm)
    {
      ifm.src = C_url_detail + '?tp='+olm.lmtp+'&lmid='+olm.lmid;
    }
    else
    {
      ifm.src = C_url_detail + '?blank=yes';
    }
  }
}

// --------------
function setDetailMapXY(cx,cy,sc)
{
  if (sc)
  {
    var scale = parseFloat(sc)/100;
    if (isNaN(scale))  return;
    oAppDetail.setUrlXY( 320, 240, scale, cx, cy );
  }
  else
  {
    oAppDetail.setUrlXY( 320, 240, oApp.mpp, cx, cy );
  }
  oAppDetail.setSrc(oApp.aissrc+'_pre');
  oAppDetail.setQuality(40);
  oAppDetail.refresh();
  visibleId(c_imagenamedetail, true);
  showimagedetail = true;
}
function setNewKeyword(kwd)
{
  if (kwd)
  {
    changeMenuTab(0); //add 2004/4/2
    document.fparam.kwd.value = '' + kwd;
    refreshSearchDB();
  }
}
function goCenterFromDetail()
{
  if (showimagedetail)
  {
    oApp.setUrlXY( oApp.wid, oApp.hgt, oApp.mpp, oAppDetail.cx, oAppDetail.cy );
    oApp.refresh();
  }
  else
  {
    alert('ランドマーク詳細情報の取得までしばらくお待ちください.')
  }
}
// --------------
function copyClipboard(value)
{
  if (!value) value='';
  if (window.clipboardData)
  {
    var result = window.clipboardData.setData("Text",value);
    alert((result)? 'クリップボードへコピーしました': 'コピーできませんでした');
  }
}
// --------------
function goCenterFromNews(x,y)
{
  oApp.setUrlXY( oApp.wid, oApp.hgt, oApp.mpp, x, y );
  oApp.refresh();
}
