//<![CDATA[

//環境変数
/*******************************************/
//プロットする最大実況中継数(個)
var MAX_PROGRESS_NUM = 100;

//実況中継のアニメーション処理のインターバル(ミリ秒)
var INTERVAL_TIME = 100;

//初期プロットに戻すまでの時間(ミリ秒)
var INIT_TIME = 3000;
/*******************************************/


//マップ変数
var map;
var data = null;

// マーカーを格納する配列
var dest_markers = [];
var pg_markers = []

//アニメーションの変数
var animation_flag = false;
var animationDest_flag = false;
var plotInit_flag = true;
var animationPlot_flag = true;
var anime_id = 0;
var animation_interval = 10;
var tmp_interval = 0;
var highlight_pmarker_id = -1;
var highlight_dmarker_id = -1;
var roop_cnt = 0;

//地図上のロケ地データ
var dest_lat = [35.6997734,35.7004443,35.7047047,35.7049138,35.6984055,35.7034065,35.7036418,35.7006795,35.7029099,35.7068827];
var dest_lon = [139.574175,139.572051,139.581739,139.571321,139.576771,139.578788,139.578381,139.578166,139.580441,139.578563];

function load() {
  if (GBrowserIsCompatible()) {
    //初期化処理
    map = new GMap2(document.getElementById("map"));
    //中心は吉祥寺駅付近
    map.setCenter(new GLatLng(35.703730115, 139.578545175), 16);
    //地図は動かさない
    map.disableDragging();

    //カスタムマップ処理
    var copyrights = new GCopyrightCollection();
    var tilelayer = new GTileLayer(copyrights, 0, 19);

    tilelayer.getTileUrl = function(tile, zoom){
      var imgurl;

    if (tile.x == 58175 && tile.y == 25800 && zoom == 16){
      imgurl = "map/58175_25800.png";
    }else if (tile.x == 58176 && tile.y == 25800 && zoom == 16){
      imgurl = "map/58176_25800.png";
    }else if(tile.x == 58177 && tile.y == 25800 && zoom == 16){
      imgurl = "map/58177_25800.png";
    }else if(tile.x == 58178 && tile.y == 25800 && zoom == 16){
      imgurl = "map/58178_25800.png";
    }else if(tile.x == 58179 && tile.y == 25800 && zoom == 16){
      imgurl = "map/58179_25800.png";
    }else if(tile.x == 58175 && tile.y == 25801 && zoom == 16){
      imgurl = "map/58175_25801.png";
    }else if(tile.x == 58176 && tile.y == 25801 && zoom == 16){
      imgurl = "map/58176_25801.png";
    }else if(tile.x == 58177 && tile.y == 25801 && zoom == 16){
      imgurl = "map/58177_25801.png";
    }else if(tile.x == 58178 && tile.y == 25801 && zoom == 16){
      imgurl = "map/58178_25801.png";
    }else if(tile.x == 58179 && tile.y == 25801 && zoom == 16){
      imgurl = "map/58179_25801.png";
    }else if(tile.x == 58175 && tile.y == 25802 && zoom == 16){
      imgurl = "map/58175_25802.png";
    }else if(tile.x == 58176 && tile.y == 25802 && zoom == 16){
      imgurl = "map/58176_25802.png";
    }else if(tile.x == 58177 && tile.y == 25802 && zoom == 16){
      imgurl = "map/58177_25802.png";
    }else if(tile.x == 58178 && tile.y == 25802 && zoom == 16){
      imgurl = "map/58178_25802.png";
    }else if(tile.x == 58179 && tile.y == 25802 && zoom == 16){
      imgurl = "map/58179_25802.png";
    }else {
      imgurl = "";
    }

      return imgurl;
    };
  
    var tileoverlay = new GTileLayerOverlay(tilelayer);
    map.addOverlay(tileoverlay);
  }
}

//イッテミアデータの取得
function ittemiaCallback(obj) {
	if(obj == null) {
    	if(_isDebug > 0) {
      	alert('引数が不正です。');
    	}
    	return;
  	}
  	data = obj;

  	//目的地のプロットを開始
  	destinationPlot();
		//実況中継のプロットを開始
  	setTimeout('progressPlot()', INIT_TIME);

}


/* 目的地のプロット */
var destinationPlot = function() {

  if(!map || !map.isLoaded()) {
    //読み込み中なら後で実行
    setTimeout('destinationPlot()', 100);
    return;
  }

  var thumb_prefix = 'dest';
  var dest;

  //静止画アイコン
  var icon = new GIcon();
  icon.image  = "image/foot_static.gif";
  icon.iconSize   = new GSize(48, 48);
  icon.iconAnchor = new GPoint(23.5, 33);

  //アニメーションGIF
  var icon_c = new GIcon();
  icon_c.image  = "image/foot_animation.gif";
  icon_c.iconSize   = new GSize(48, 48);
  icon_c.iconAnchor = new GPoint(0, 0);

  //すべての目的地をプロット
  var count = 0;
  for(var i=0; i < data.destination.length; i++) {
		dest = data.destination[i];
		d_plot(dest);
	}
	
	function d_plot(dest){
    //var pos = new GLatLng(dest.latitude, dest.longitude);
    var pos = new GLatLng(dest_lat[i], dest_lon[i]);
    dest_markers.push(new GMarker(pos,icon));

		var id = dest_markers.length - 1;
		dest_markers[id].dest_id = dest.id;

		map.addOverlay(dest_markers[id]);

		GEvent.addListener(dest_markers[id], "click", function(){
			destinationInfo(dest.id);
		});
  }


	
	//麻子の家をプロット(ミッションの目的地ではない)
  var pos = new GLatLng(35.7012724, 139.574675);
  dest_markers.push(new GMarker(pos, icon));

	var id = dest_markers.length - 1;
	dest_markers[id].dest_id = 21176;

	map.addOverlay(dest_markers[id]);

	GEvent.addListener(dest_markers[id], "click", function(){
		destinationInfo(dest_markers[id].dest_id);
	});
  
}


/* 実況中継のプロット */
var progressPlot = function() {

  if(!map || !map.isLoaded()) {
    //読み込み中なら後で実行
    setTimeout('progressPlot()', 100);
    return;
  }

  var thumb_prefix = 'pg';
  var pg;

  //静止画アイコン
  var icon = new GIcon();
  icon.image  = "image/cat_static.gif";
  icon.iconSize   = new GSize(48, 48);
  icon.iconAnchor = new GPoint(0, 0);

  //アニメーションGIF
  var icon_c = new GIcon();
  icon_c.image  = "image/cat_animation.gif";
  icon_c.iconSize   = new GSize(48, 48);
  icon_c.iconAnchor = new GPoint(0, 0);
  
  var count = 0;
  for(var i=0; i < data.progress.length; i++) {
		plot(i);
 		count++;
	}
	
	//プロット処理
  function plot(j) {
		var pg = data.progress[j];

		//写真があるものだけをプロットする
		if(pg.image != '') {
		
			var pos = new GLatLng(pg.latitude, pg.longitude);
			pg_markers.push(new GMarker(pos,icon));

			var id = pg_markers.length - 1;
			pg_markers[id].dest_id = pg.destination_id;

			//プロットは最大MAX_PROGRESS_NUM
			if( count < MAX_PROGRESS_NUM ){
				map.addOverlay(pg_markers[id]);
				pg_markers[id].mark = true;
			}

			GEvent.addListener(pg_markers[id], "click", function(){
				//対応する画像をlightboxにて表示
				myLightbox.start($(thumb_prefix+pg.id));
			});

			var user_name = pg.author + 'さん';
			var comment = [user_name,nl2br(pg.comment),pg.date].join('<br />');
                     
			//lightbox用のエレメント
			var obj = document.createElement('div');
			var link_obj = document.createElement('a');
			link_obj.id = thumb_prefix + pg.id;
			link_obj.setAttribute('href', pg.image);
			link_obj.setAttribute('rel', 'lightbox[link_area]');
			link_obj.setAttribute('title', comment);
			link_obj.setAttribute('onclick', 'myLightbox.start(this); return false;');
			link_obj.setAttribute('alt', 'クリックすると大きいサイズで見られます');
			obj.appendChild(link_obj);

			$('link_area').innerHTML = obj.innerHTML + $('link_area').innerHTML;
		}
	}
	
	if(data.progress.length > 0){
		//全体のアニメーション開始
		animateProgressInit('all');
  	animateProgress();
  }
}


/* ある目的地のデータをプロット */
var focus_dest = function(dest_id) {
	
	var progress_flag = false;
	var count = 0;
	
	//実況中継アニメーション動作中の場合は停止させる
	if(animation_flag){
		pg_markers[highlight_pmarker_id].setImage("image/cat_static.gif");
		animation_flag = false;
	}
	
	//ハイライトの目的地を切り替え
	if(highlight_dmarker_id >= 0){
		dest_markers[highlight_dmarker_id].setImage("image/foot_static.gif");
		map.removeOverlay(dest_markers[highlight_dmarker_id]);
		highlight_dmarker_id  = -1;
	}

	//実況中継をいったん消す
	for(var i=0; i < pg_markers.length; i++) {
		map.removeOverlay(pg_markers[i]);
	}

	//目的地をいったん消す
	for(var i=0; i < dest_markers.length; i++) {
		map.removeOverlay(dest_markers[i]);
	}

  //指定された目的地だけプロット
	for(var i=0; i < dest_markers.length; i++) {
		if(dest_markers[i].dest_id == dest_id){
			map.addOverlay(dest_markers[i]);
			dest_markers[i].setImage("image/footicon_5.gif");
			highlight_dmarker_id = i;
			break;
		}
	}

	if(animationPlot_flag){
		animationPlot_flag = false;
		//目的地画像の点滅
		animateDestInit();
		animateDest();
	}
	
	if(plotInit_flag){
		plotInit_flag = false;
		//5秒後に初期表示に戻す
		setTimeout('plotInit()', INIT_TIME);
	}
	
}


/* アニメーション */
var animateProgress = function() {
  //1秒間隔でフラグを確認
  if((tmp_interval++) % animation_interval != 0) {
    if(animation_flag) {
      setTimeout('animateProgress()', INTERVAL_TIME);
    }
    return;
  }
  
  if(animation_flag) {
    while(1){
			if(pg_markers[anime_id].mark && (select_dest_id == 'all' || pg_markers[anime_id].dest_id == select_dest_id)){
				//現在ハイライトしているマーカーを元に戻す
				if(highlight_pmarker_id >= 0){
					pg_markers[highlight_pmarker_id].setImage("image/cat_static.gif");
				}
				//新たにマーカーをオーバーレイしてハイライト
				if(pg_markers[anime_id].mark){
					map.removeOverlay(pg_markers[anime_id]);
					map.addOverlay(pg_markers[anime_id]);
					pg_markers[anime_id].setImage("image/cat_animation.gif");
					highlight_pmarker_id = anime_id;
				}
				anime_id++;
				break;
			}
      anime_id++;
      if(anime_id >= pg_markers.length){
				anime_id = 0;
			}
		}
		
		if(anime_id >= pg_markers.length){
			anime_id = 0;
		}
		animateProgress();
  }
}

function animateDest() {
  //1秒間隔でフラグを確認
  if((tmp_interval++) % animation_interval != 0) {
		if(animationDest_flag) {
			setTimeout('animateDest()', 30);
		}
		return;
  }
  
  if(animationDest_flag) {
		if(roop_cnt < 9) {
			setImage();
			roop_cnt++;
			animateDest();
		}else{
			roop_cnt=0;
			animationDest_flag=false;
			animationPlot_flag=true;
		}
  }
}

/* 実況中継アニメーションの初期化 */
var animateProgressInit = function(dest_id) {
	anime_id = 0;
	animation_interval = 10;
	tmp_interval = 0;
	select_dest_id = dest_id;
	highlight_pmarker_id = -1;
	animation_flag = true;
}


/* 目的地アニメーションの初期化 */
var animateDestInit = function(dest_id) {
	roop_cnt = 0;
	animation_interval = 10;
	tmp_interval = 0;
	animationDest_flag = true;
}


/* ロケ地の情報切り替え */
var destinationInfo = function(dest_id) {
	if(dest_id==21166){
		S1.src='image/img1.jpg';
	}else if(dest_id==21167){
		S1.src='image/img2.jpg';
	}else if(dest_id==21176){
		S1.src='image/img3.jpg';
	}else if(dest_id==21168){
		S1.src='image/img4.jpg';
	}else if(dest_id==21169){
		S1.src='image/img5.jpg';
	}else if(dest_id==21170){
		S1.src='image/img6.jpg';
	}else if(dest_id==21171){
		S1.src='image/img7.jpg';
	}else if(dest_id==21172){
		S1.src='image/img8.jpg';
	}else if(dest_id==21173){
		S1.src='image/img9.jpg';
	}else if(dest_id==21174){
		S1.src='image/img11.jpg';
	}else if(dest_id==21175){
		S1.src='image/img10.jpg';
	}else{
		S1.src='image/img.jpg';
	}
}


/* プロットの初期化 */
var plotInit = function() {
	
	if(highlight_dmarker_id >= 0 ){
		dest_markers[highlight_dmarker_id].setImage("image/foot_static.gif");
		map.removeOverlay(dest_markers[highlight_dmarker_id]);
		highlight_dmarker_id  = -1;
	}


	//目的地の再プロット
	for(var i=0; i < dest_markers.length; i++) {
		map.addOverlay(dest_markers[i]);
	}
	
	//実況中継の再プロット
	for(var i=0; i < pg_markers.length; i++) {
		map.addOverlay(pg_markers[i]);
	}

	if(data.progress.length > 0){
		//全体のアニメーション開始
		animateProgressInit('all');
  	animateProgress();
  }
  
  plotInit_flag = true;
}


//目的地マーカーを入れ替える関数
var setImage = function() {
	
	if(highlight_dmarker_id >= 0 ){
		if(roop_cnt%3==0){
			dest_markers[highlight_dmarker_id].setImage("image/foot_static.gif");
		}else if(roop_cnt%3==1){
			dest_markers[highlight_dmarker_id].setImage("image/footicon_3.gif");
		}else{
			dest_markers[highlight_dmarker_id].setImage("image/footicon_5.gif");
		}
	}
}


//改行コードをbrタグに変換する関数
function nl2br(text) {
	text = text.replace(/\r\n/g, "<br />");
	text = text.replace(/(\r\n|\n|\r)/g,"<br />");
	return text;
}
//]]>
