/* Copyright (C) 2008 LINK AT JAPN Co.,LTD. */


var map = null;
var iconObj = null;
var iconObj_reached = null;
var isloaded = false;
var PLOT_PER_PAGE = 200;
var ua = new UAIdentifier();
var _isDebug = 1;
var areaArray = new Array("all","北海道・東北","関東","中部","近畿","中国・四国","九州");
var qsParm = new Array();

//GETデータの取得
function retrieveGETqs() {
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			qsParm[key] = val;
		}
	}
}

//var data = null;
//ページロード時の処理
//GooGleMapsの初期化およびアイコン設定
function load() {
	retrieveGETqs();
  if (GBrowserIsCompatible()) {
		//初期化処理
    map = new GMap2(document.getElementById("Maps"));

    //map.addMapType(G_SATELLITE_3D_MAP);
	//map.addControl(new GHierarchicalMapTypeControl());

    map.addControl(new GLargeMapControl());
  	map.addControl(new GMapTypeControl());
  	map.addControl(new GScaleControl());
  	map.addControl(new GOverviewMapControl());
btnChange(qsParm['area']);
switch(qsParm['area']){
	case '1':
		var latitude = '40.09824396829051';
		var longitude = '139.4384765625';
		var zoom = '6';
		break;
	case '2':
		var latitude = '35.75676571310923';
		var longitude = '139.76806640625';
		var zoom = '9';
		break;
	case '3':
		var latitude = '35.742945590929054';
		var longitude = '137.340087890625';
		var zoom = '7';
		break;

	case '4':
		var latitude = '34.593197917573164';
		var longitude = '135.48751831054688';
		var zoom = '10';
		break;

	case '5':
		var latitude = '34.18545070642092';
		var longitude = '132.91259765625';
		var zoom = '7';
		break;

	case '6':
		var latitude = '32.866669237523546';
		var longitude = '130.814208984375';
		var zoom = '8';
		break;
	default:
		var latitude = '36.500537';
		var longitude = '138.25332';
		var zoom = '5';
		break;
}



	 	//デフォルト中心地の設定
	 	if(latitude != '' && longitude != '' && zoom != '') {
	 	  zoom = parseInt(zoom);
    	map.setCenter(new GLatLng(latitude, longitude), zoom);
	 	} else {
    	map.setCenter(new GLatLng(35.00205426142815, 134.99770939350128), 4);
        }


	//マーカーアイコンの設定
		
  	iconObj_syou = new GIcon();
  	iconObj_chu = new GIcon();

		//科学館
    	iconObj_syou.image = "icon/icon.gif";
    	iconObj_syou.shadow = "";
    	iconObj_syou.iconSize = new GSize( 33, 18 );
    	iconObj_syou.iconAnchor = new GPoint( 33, 9 );
    	iconObj_syou.infoWindowAnchor = new GPoint( 16, 9 );
  	isloaded = true;
  	$.get("kagakukan.js", {address: "dummy"}, ittemiaCallback);
  }
}

//プロットデータ
var data = null;
//ページナビ
var myFootprintNavi = null;

//データ読み込み時のコールバック関数
function ittemiaCallback(obj) {
  if(obj == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  data = eval("("+obj+")");

  //初期プロット実行
  createPlotPage(0);
}

//ページ用のプロットおよび一覧を作成
function createPlotPage(currentPageNum) {
  if(currentPageNum == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  normalPlot(currentPageNum,0);
}

//一覧のハイライト表示
function highlightList(id) {
  if(id == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  //IDからカレントページ番号を推測
  var page = parseInt(id / PLOT_PER_PAGE, 10);
  for(var i = page*PLOT_PER_PAGE; i < (page+1)*PLOT_PER_PAGE; i++) {
    var obj_li = $("#nav_"+i);
    //alert($("#nav_"+i).attr("id"));
    if(obj_li) {
      if(id == i) {
        // 選択状態のクラスを追加
        obj_li.addClass("selected");
        //該当の目的地にスクロール
        var targetScrollTop = obj_li.scrollTop;
        
        if(!ua.ie >=5.0) {
          targetScrollTop -= $('#navi').offsetTop;
        }
        obj_li.parent().parent().scrollTop = targetScrollTop;
                
      }else {

        // 非選択状態に設定
        obj_li.removeClass("selected");
      }
    }
  }
}

//プロットしたマーカーを管理
var marker = new Array();
//プロットしたポイントを管理(ライン用)
var linepoint = new Array();
//足あとデータのプロット
function normalPlot(currentPageNum,school,freq) {
　//ボタン機能の切り替え
  if(qsParm['area'] == undefined){
	  $("#allButton").remove();
  }else{
	  if(qsParm['area'] != 7){
		  //$("#allButton").replaceWith('<a href="javascript:normalPlot(0,0);" id="allButton"><img src="img/common/all_off_btn.gif" alt="元の表示に戻す" width="136" height="29" /></a>');
	  //}else{
		  $("#allButton").replaceWith('<a href="?area=7" id="allButton"><img src="img/common/all_btn.gif" alt="全国の科学館を表示" width="136" height="29" /></a>');
	  }
  }
  if(currentPageNum == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  if(!isloaded || !map.isLoaded()) {
    //読み込み中なら後で実行
    setTimeout('normalPlot('+currentPageNum+','+school+')', 100);
    return;
  }
  //地図に描画されたマーカーを全て除去
  map.clearOverlays();
  //生成したマーカーを削除
  marker.length=0;
  var sel_area = areaArray[qsParm['area']];
  for(var i=currentPageNum*PLOT_PER_PAGE; i <= (currentPageNum+1)*PLOT_PER_PAGE; i++) {
    if(i >= data.item.length) {
      break;
    }   
	
		//全国/地域の切り替え
		if(freq != undefined || sel_area == undefined) {
		   plotMarker(i, data.item[i]);				
  		}else{
		   iarea = data.item[i].area;
			if(sel_area == iarea){
			   plotMarker(i, data.item[i]);				
			}
		}
  }
}

//実際にプロットし、クリックイベントを登録
function plotMarker(id, obj) {
  if(id == null || obj == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  
	//var frequency = obj.frequency;
	//var prize = obj.prize;
	//var school = obj.school;
	var imgfile = obj.imgfile;
	var access = obj.access;
	var name = obj.name;
	var tel = obj.tel;
	var url = obj.url;
	//緯度
	var lat = obj.latitude;
	//経度
	var lon = obj.longitude;
	linepoint[id] = new GLatLng(lat,lon);
	 //小学校／中学校アイコン切替
	 marker[id] = new GMarker(linepoint[id], iconObj_syou);
	//マップ上にマーカーをプロット
	map.addOverlay(marker[id]);

	//クリック時のイベントを登録
	GEvent.addListener(marker[id], "click", function() {

	
	var html="<div class='fukidashi'><h4>"+name+"</h4>";
	if(imgfile != ''){
		html+="<img src='img/k_map/kan/"+imgfile+"' onerror='replaceImage(this)' />";
	}
		html+="<dl>";
		html+="<dt>住所:</dt><dd>"+access+"</dd>";
		html+="<dt>電話:</dt><dd>"+tel+"</dd>";
	if(url != ''){
		html+="<dt>URL:</dt><dd><a href='"+url+"' target='_blank'>"+url+"</a></dd>";
	}
	html+="</dl></div>";
	//吹き出し設定
	marker[id].openInfoWindowHtml(html);
	//中心へ移動
	map.panTo(marker[id].getPoint());
	});
}


//クリックイベントを呼ぶ
function clickPlot(id) {
  if(id == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
	GEvent.trigger(marker[id], "click");
}


function redrawMap() {
  var xy = map.getCenter();
  var rect = map.getBounds();
  
  var sw = rect.getSouthWest();
  var ne = rect.getNorthEast();

  var se = new GLatLng(sw.lat(), ne.lng());
  
  var range = sw.distanceFrom(se) / 2;
  
  $('geoSearchResult').innerHTML = '<p class="textStyle1"><img src="/common/images/loading.gif" width="15px" />読み込み中。</p>';

  var url = "http://" + hostname + "/destination_gearth.php/mode/json/callback/ittemiaCallback?latitude=" + xy.lat() + "&longitude=" + xy.lng() + "&range=" + range + "&zoom=" + map.getZoom();

  GDownloadUrl(url, function(doc, stat){
    eval(doc);
  });

  return;
}

/* 検索結果に目的地をプロット */
function selectSearchResult(point) {
  //一覧を一度消す
  $('geoSearchResult').innerHTML = '';
  map.setCenter(point, 15);
  redrawMap();
}


//プロットページャ
var FootprintNavi = function(data_size) {
  if(data_size == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }

  var currentPageNum = 0;
  var pageNum = Math.ceil(data_size / PLOT_PER_PAGE);
  
  //ナビ作成
  this.createNavi = function() {
    var text_array = new Array('<ul class="linearNaviStyle">');
    if(currentPageNum > 0) {
      text_array.push('<li><a onclick="myFootprintNavi.prevPage();createPlotPage(myFootprintNavi.getCurrentPageNum());" href="javascript:void(0);">前の'+PLOT_PER_PAGE+'件</a></li>');
    }else {
      text_array.push('<li>前の'+PLOT_PER_PAGE+'件</li>');
    }
    if(currentPageNum >= pageNum -1) {
      text_array.push('<li>次の'+PLOT_PER_PAGE+'件</li>');
    }else {
      text_array.push('<li><a onclick="myFootprintNavi.nextPage();createPlotPage(myFootprintNavi.getCurrentPageNum());" href="javascript:void(0);">次の'+PLOT_PER_PAGE+'件</a></li>');
    }
    text_array.push('</ul>');
    $('linerNav').innerHTML = text_array.join("\n");
  }
  
  //前のページに戻る
  this.prevPage = function() {
    if(currentPageNum - 1 < 0) {
      if(_isDebug > 0) {
        alert('無効なページ');
        return;
      }
    }
    currentPageNum--;
    this.createNavi();
  }

  //次のページに進む
  this.nextPage = function() {
    if(currentPageNum +1 >= pageNum) {
      if(_isDebug > 0) {
        alert('無効なページ');
        return;
      }
    }
    currentPageNum++;
    this.createNavi();
  }

  //現在のページ番号を取得
  this.getCurrentPageNum = function() {
    return currentPageNum;
  }
}


//最新のポイントを中心へ
function setCenterPoint(lat,lon,zoom) {
	var pos = new GLatLng(lat,lon);  
    //中心へ移動
    map.setCenter(pos,zoom);
}


function replaceImage(img) {
  var w = 0;
  w += img.width; 
  if (w > 1) {
  }else{
    img.src = 'img/k_map/no-image.gif';
  }
}


//地域ボタンの切り替え
function btnChange(area){
$("#hokkaido").replaceWith('<img src="img/common/btn_hokkaido1.gif" alt="北海道・東北" name="hokkaido" width="170" height="20" border="0" id="hokkaido" />');
$("#kantou").replaceWith('<img src="img/common/btn_kantou1.gif" alt="関東" name="kantou" width="170" height="20" border="0" id="kantou" />');
$("#chubu").replaceWith('<img src="img/common/btn_chuubu1.gif" alt="中部" name="chubu" width="170" height="20" border="0" id="chubu" />');
$("#kinki").replaceWith('<img src="img/common/btn_kinki1.gif" alt="近畿" name="kinki" width="170" height="20" border="0" id="kinki" />');
$("#chushi").replaceWith('<img src="img/common/btn_chushi1.gif" alt="中国・四国" name="chushi" width="170" height="20" border="0" id="chushi" />');
$("#kyushu").replaceWith('<img src="img/common/btn_kyushu1.gif" alt="九州" name="kyushu" width="170" height="20" border="0" id="kyushu" />');
	switch(area){
		case '1':
			$("#hokkaido").replaceWith('<img src="img/common/btn_hokkaido2.gif" alt="北海道・東北" name="hokkaido" width="170" height="20" border="0" id="hokkaido" />');
			break;
		case '2':
			$("#kantou").replaceWith('<img src="img/common/btn_kantou2.gif" alt="関東" name="kantou" width="170" height="20" border="0" id="kantou" />');
			break;
		case '3':
			$("#chubu").replaceWith('<img src="img/common/btn_chuubu2.gif" alt="中部" name="chubu" width="170" height="20" border="0" id="chubu" />');
			break;
		case '4':
			$("#kinki").replaceWith('<img src="img/common/btn_kinki2.gif" alt="近畿" name="kinki" width="170" height="20" border="0" id="kinki" />');
			break;
		case '5':
			$("#chushi").replaceWith('<img src="img/common/btn_chushi2.gif" alt="中国・四国" name="chushi" width="170" height="20" border="0" id="chushi" />');
			break;
		case '6':
			$("#kyushu").replaceWith('<img src="img/common/btn_kyushu2.gif" alt="九州" name="kyushu" width="170" height="20" border="0" id="kyushu" />');
			break;
	}

}
