/////////////////////////////////////////////////////////////////////////////////
//
//   GoogleMap設定ファイル　Ver1.0
//
//     2009/01/01：タブ機能改変・吹き出しなしマーカー、複数MAP設置実装
//     2008/09/11：タブ機能実装・オプション機能追加・リファレンス改訂
//     2008/09/01：説明文をより分かりやすく修正
//     2008/08/23：初期設定値変更・説明文追加
//
/////////////////////////////////////////////////////////////////////////////////

  /*******************************基本機能設定部分******************************/


function gLoad() {
  
  //地図を表示する部分で指定したIDと同じ名前を指定
  var m_ID = 'map';
  
  //地図のサイズを指定（他所で指定している場合は空白）
  var m_Width = '398px';
  var m_Height = '400px';
  
  //初期表示場所を指定
  var m_Loc = '35.629831796895424, 139.32878494262695';
  
  //マーカーを指定（複数配置する場合は間に / を入れる）
  var m_Mar = '35.627268, 139.326918';
  
  //読み込み時に吹き出しを表示するマーカーを、上のマーカー指定で座標を記入した順番に沿って設定（1番から数え、0はoff）
  var pre_Com = 1;

  //地図の拡大率設定：0～19の範囲で数字が大きいほど拡大
  var m_Zoom = 16;

  //吹き出しに表示する外部ファイルを、地図表示ページからの相対パスで指定
  var m_Com = "gmap.html";

  //吹き出しにタブを使用（1でon、0でoff）
  /* 空行（改行ではない隙間の行）までを1つの吹き出しに入れ、ブロック要素ごとにタブにする */
  /* タブの名前はブロック要素自体につけたtitle属性が自動的に適用される */
  var m_Tab = 0;

  //ブロック要素にtitle属性がない場合に付けるタブの名前
  var dmy_tab = "詳細";

  //地図のコントロールパネルを表示（1で小、2で中、3で大、0でoff）
  var m_Con = 2;
  
  //地図の種類（航空写真など）を切り替えるパネルを表示（1でon、0でoff）
  var m_Typ = 1;

  //地図の縮尺を左下に表示（1でon、0でoff）
  var m_Sca = 0;

  //地図の拡大縮小をマウスホイールで可能（1でon、0でoff）
  var m_Whl = 0;

  //地図の拡大縮小をスムーズ化（1でon、0でoff）
  var m_Coz = 1;

  //地図の右下に縮小地図を表示（1でon、0でoff）
  var m_Min = 0;

  //縮小地図を表示する場合のサイズの指定（m_MinX：横幅・m_MinY：縦幅、単位は自動的にpxがつきます）
  var m_MinX = 100;
  var m_MinY = 100;




  /*******************************以下設定部分のため改変不可******************************/
  
  //地図の表示方法を変更
  var m_style = document.getElementById(m_ID).style;
  
  if(m_Width){
    m_style.width = m_Width;
    m_style.overflow = "hidden";
  }
  if(m_Height){
    m_style.height = m_Height;
  }
  var sta_Tag = "<div";
  var end_Tag = "</div>";
  //正規表現オブジェクト
  var CRLF = "\r\n";
  var find_CRLF = new RegExp(CRLF,"g");
  
  //座標を確定
  var set_map = new GMap2(document.getElementById(m_ID));
  var set_Loc = m_Loc.split(',');
  var point = new Array();
  var marker = new Array();
  var arr_Mar = m_Mar.split('/');
  var count_Mar = m_Mar.split('/').length;
  var res_Mar = 0;
  var tmp_Mar = new Array();
  var tab_Ind = new Array();
  var tabs = new Array();
  var count_Tab = new Array();
  var req = new Array();


  /** 地図表示部分 **/

  if (GBrowserIsCompatible()) {
    set_map.setCenter(new GLatLng(set_Loc[0],set_Loc[1]), m_Zoom);
    
    //外部ファイルの読み込み
    req[m_ID] = GXmlHttp.create();
    req[m_ID].open("GET", m_Com, true);
    req[m_ID].onreadystatechange = function () {
      if (req[m_ID].readyState == 4) {
        res = req[m_ID].responseText;
        if(m_Tab) {
          var set_Com = res.split(end_Tag+CRLF+CRLF);
        }else{
          var set_Com = res.split(end_Tag);
        }
        for( i=0; i < count_Mar; i++ ) {
          count_Tab[i] = set_Com[i].match(sta_Tag).length;
          res_Mar += count_Tab[i];
          if(res_Mar > count_Mar) {
            res_Mar = count_Mar;
          }
          
          //マーカーを表示
          if(i < res_Mar) {
            var arr = arr_Mar[i].split( ',' );
            point[i] = new GLatLng( arr[0], arr[1] );
            marker[i] = new GMarker(point[i]);
            set_map.addOverlay(marker[i]);
          }
          
          //マーカーの初期設定
          set_Com[i] = set_Com[i].replace(find_CRLF,"");
          if (!set_Com[i].match( end_Tag+"$" )) {
            set_Com[i] = set_Com[i]+end_Tag;
          }
          var tab_Com = set_Com[i].split(end_Tag);
          for(m=0; tab_Com[m];m++){
            if (tab_Com[m].match(/title="([^"])([^"]*)/i)) {
              tab_Ind[m] = RegExp.$1 + RegExp.$2;
            }else{
              tab_Ind[m] = dmy_tab;
            }
          }
          
          //マーカークリック時の動作
          tabs[i] = [new GInfoWindowTab(tab_Ind[0],tab_Com[0])];
          for ( j=1; tab_Com[j]; j++ ){
              tabs[i] = tabs[i].concat(new GInfoWindowTab(tab_Ind[j],tab_Com[j]));
          }
          if (!set_Com[i].match(/<div><\/div>/i)) {
            if(m_Tab) {
              clickTab ( marker[i], point[i], tabs[i], set_map)
            }else{
              clickMap ( marker[i], set_Com[i] )
            }
          }
          //マーカーの初期表示
          if(pre_Com > 0){
            if(m_Tab) {
              set_map.openInfoWindowTabsHtml(point[pre_Com - 1],tabs[pre_Com - 1]);
            }else{
              marker[pre_Com - 1].openInfoWindowHtml(set_Com[pre_Com - 1]);
            }
          }
        }
      }
    };
    req[m_ID].send(null);
    
    //オプション設定
    if(m_Con == 1){
      set_map.addControl(new GSmallZoomControl());
    }else if(m_Con == 2){
      set_map.addControl(new GSmallMapControl());
    }else if(m_Con == 3){
      set_map.addControl(new GLargeMapControl());
    }
    if (m_Typ) { set_map.addControl(new GMapTypeControl()); }
    if (m_Sca) { set_map.addControl(new GScaleControl()); }
    if (m_Whl) { set_map.enableScrollWheelZoom(); }
    if (m_Coz) { set_map.enableContinuousZoom(); }
    if (m_Min) {
      var miniMap = new GOverviewMapControl(new GSize(m_MinX,m_MinY));
      set_map.addControl(miniMap);
    }
  }
}

//各マーカークリック時の動作設定
function clickMap ( m, c ) {
  GEvent.addListener(m, "click", function() {
    m.openInfoWindowHtml(c);
  });
}

//各マーカークリック時の動作設定(Tab時)
function clickTab ( m, k , t, n) {
  GEvent.addListener(m, "click", function() {
    n.openInfoWindowTabsHtml(k,t);
  });
}

//「onload」イベントを疑似的に再現
var addListener = function(elm, type, func) {
  if (elm.addEventListener) {
    elm.addEventListener(type, func, false);
  }
  else if (elm.attachEvent) {
    elm.attachEvent('on' + type, func);
  }
};
addListener(window, "load", gLoad);

