/* 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 = 500;
var ua = new UAIdentifier();
var _isDebug = 1;
//var data = null;
//ページロード時の処理
//GooGleMapsの初期化およびアイコン設定
function load() {
  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());




	 	//デフォルト中心地の設定
	 	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/icon01.gif";
    	iconObj_syou.shadow = "";
    	iconObj_syou.iconSize = new GSize( 18, 18 );
    	iconObj_syou.iconAnchor = new GPoint( 18, 9 );
    	iconObj_syou.infoWindowAnchor = new GPoint( 9, 9 );
		// 中学校
    	iconObj_chu.image = "icon/icon02.gif";
    	iconObj_chu.shadow = "";
    	iconObj_chu.iconSize = new GSize( 18, 18 );
    	iconObj_chu.iconAnchor = new GPoint( 18, 9 );
    	iconObj_chu.infoWindowAnchor = new GPoint( 9, 9 );

  	isloaded = true;
  	$.get("../search/prizewinners/chiiki/", {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);
    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(currentPageNum == null) {
    if(_isDebug>0) {
      alert('引数が不正です。');
    }
    return;
  }
  if(!isloaded || !map.isLoaded()) {
    //読み込み中なら後で実行
    setTimeout('normalPlot('+currentPageNum+','+school+')', 100);
    return;
  }
  //地図に描画されたマーカーを全て除去
  map.clearOverlays();
  //生成したマーカーを削除
  marker.length=0;
  for(var i=currentPageNum*PLOT_PER_PAGE; i <= (currentPageNum+1)*PLOT_PER_PAGE; i++) {
    if(i >= data.item.length) {
      break;
    }   
//		console.debug(data.item[i]);
	    //小学生のみ中学生のみすべての切り替え
		if(school == 0){
			plotMarker(i, data.item[i]);
		}else{
			sch = data.item[i].level;
			if(school == sch){
				plotMarker(i, data.item[i]);				
			}
		}
		//開催回での切り替え
		if(freq != undefined) {
		   ifreq = data.item[i].frequency;
		   if(ifreq == freq){
				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 level = obj.level;
	var grade = obj.grade;
	var name = obj.name;
	var title = obj.title;
	var url = obj.url;
	//緯度
	var lat = obj.latitude;
	//経度
	var lon = obj.longitude;
	linepoint[id] = new GLatLng(lat,lon);
	 
	 //小学校／中学校アイコン切替
	 if(level == 1){
		 marker[id] = new GMarker(linepoint[id], iconObj_syou);
	 }else{
		 marker[id] = new GMarker(linepoint[id], iconObj_chu);
	 }
	//マップ上にマーカーをプロット
	map.addOverlay(marker[id]);

	//クリック時のイベントを登録
	GEvent.addListener(marker[id], "click", function() {

	
	if(url == ''){
	var html="<div class='fukidashi'><p class='prize'>第"+frequency+"回"+prize+"</p><h4>"+title+"</h4><h5>"+school+" "+grade+" "+name+"</h5></div>";
	}else{
	var html="<div class='fukidashi'><p class='prize'>第"+frequency+"回"+prize+"</p><h4>"+title+"</h4><h5>"+school+" "+grade+" "+name+"</h5><a href='"+url+"' class='more'><img src='common/more.gif' border='0' /></a></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);
}



