/**
 * @author rogi073
 */
function OnloadMap(bmid){
	gmapOnLoad('seunze_map');
	if(bmid!=""){
		var lat = center.lat();
		var lon = center.lng();
		changecenter(lat,lon,bmid);
	}
	addEatlist("food");
	addEatlist("genre");
	addEatlist("budget");
}

/*Google Map Relateed Control*/
function gmapOnLoad(divid) {
 if (GBrowserIsCompatible()) {
 	map = new GMap2(document.getElementById(divid));
 	map.addControl(new GLargeMapControl());
 	map.addControl(new GMapTypeControl());
 	map.addControl(new GScaleControl());
 	map.setCenter(center, 15);
 	centmarker = new GMarker(center);
 	map.addOverlay(centmarker);
 	geocoder = new GClientGeocoder();
 	bounds = map.getBounds();
 	latmax = bounds.getNorthEast().lat();
 	latmin = bounds.getSouthWest().lat();
 	lonmax = bounds.getNorthEast().lng();
 	lonmin = bounds.getSouthWest().lng();
	update();
 	GEvent.addListener(map, "moveend", function(){
 		centmarker.setLatLng(new GLatLng(map.getCenter().lat(), map.getCenter().lng()));
 		bounds = map.getBounds();
 		latmax = bounds.getNorthEast().lat();
 		latmin = bounds.getSouthWest().lat();
 		lonmax = bounds.getNorthEast().lng();
 		lonmin = bounds.getSouthWest().lng();
		update();
		});
	}
}
function showAddress(address){
	if (address != "") {
		if (geocoder) {
			geocoder.getLatLng(address, function(point){
				if (!point) {
					alert("「" + address + "」が見つかりませんでした。");
				}
				else {
					map.panTo(point, 15);
				}
			});
		}
	}
}
function srchPlace(){
 if(document.tlbmgmapsrch.srchtplace.value=="地名を入力して検索"){
  document.tlbmgmapsrch.srchtplace.value="";
 }
}
function createMarker3(point, title, name, id, icon){
	var conts = document.getElementById(id + 'set_' + name).innerHTML;
	umarker[id + '_' + mrknum[id]] = new GMarker(point, {
		title: title,
		icon: icon
	});
	var marker=umarker[id + '_' + mrknum[id]];
	GEvent.addListener(marker, "click", function(){
		marker.openInfoWindowHtml(conts, {
			maxWidth: 400
		});
	});
	map.addOverlay(umarker[id + '_' + mrknum[id]]);
}
function createMarker2(point, title, tabs, icon){
	umarker['data_' + mrknum['data']] = new GMarker(point, {
		title: title,
		icon: icon
	});
	var marker=umarker['data_' + mrknum['data']];
	GEvent.addListener(marker, "click", function(){
		marker.openInfoWindowTabsHtml(tabs, {
			maxWidth: 400
		});
	});
	map.addOverlay(marker);
}
function createMarker(point, title, conts, icon){
	var marker = new GMarker(point, {
		title: title,
		icon: icon
	});
	GEvent.addListener(marker, "click", function(){
		marker.openInfoWindowHtml(conts, {
			maxWidth: 400
		});
	});
	map.addOverlay(marker);
}
/*Update Alldata when map is moved*/
function update(){
	if (!document.tlbmgmapsrch.maplock.checked) {
		/* every time map moves lat lon information is updated.*/
		var lat = map.getCenter().lat();
		var lon = map.getCenter().lng();
		document.getElementById('lat').innerHTML = lat;
		document.getElementById('lon').innerHTML = lon;
		document.getElementById('permalink').innerHTML = 'http://www.seunze.com/map.html?lat=' + lat + '&lon=' + lon;
		document.title="SEUNZE.com -> 地図と予定とウェッブサイト -> 緯度経度：" + lat +',' + lon;
		//
		if (!centinfo) {
			document.getElementById('centerinfo').innerHTML = "";
			document.getElementById("centerinfo").style.display = 'none';
		}
		centinfo = false;
		var movelen = GetLength(pastlat, pastlon, lat, lon);
		var val = false;
		var val2 = false;
		/* Check for data renew */
		if (pastlat != null) {
			if (movelen > 500) {
				val = true;
			}
		}
		else {
			val = true;
		}
		/* Check fro Address renew */
		if (renewnum > 3 || renewnum == null || movelen > 4000) {
			val2 = true;
			renewnum = 0;
		}
		/* if map moves more than 500m then get new data */
		if (val) {
			/*Get registered schedule*/
			getdatalist();
			pastlat = map.getCenter().lat();
			pastlon = map.getCenter().lng();
			renewnum += 1;
		}
		/* if map data received more than 5 times then get new address */
		if (val2) {
			/*Get address data*/
			param = 'lat=' + lat + '&lon=' + lon + '&tid=' + transid;
			document.getElementById('weather').innerHTML = '<img class="loading" src="http://www.seunze.com/pictures/ajax-loader.gif" alt="Now Loading!!" />';
			new Ajax.Request('http://www.seunze.com/seunzemap_address.html', {
				method: 'post',
				parameters: param,
				onSuccess: showplace
			});
			/*Get doodle data*/
			getdoodle();
			document.getElementById('art').innerHTML ='<a class="blue" href="javascript:getartevent();">この地図の範囲内のアート情報を表示</a>';
			document.getElementById('art').style.height ='20px';
			removemark('art');
			document.getElementById('station').innerHTML ='<a class="blue" href="javascript:getstation();">この地図の範囲内の駅情報を表示</a>';
			document.getElementById('station').style.height ='20px';
			removemark('station');
			document.getElementById('eat').innerHTML ='';
			document.getElementById('eat').style.height ='1px';
			removemark('eat');
		}
	}
}
function getplcContents(id,param){
	document.getElementById(id).style.height ='20px';
	document.getElementById(id).innerHTML = '<img class="loading" src="http://www.seunze.com/pictures/ajax-loader.gif" alt="Now Loading!!" />';
	removemark(id);
	new Ajax.Updater(id, 'http://www.seunze.com/seunzemap_'+id+'.html', {
		method: 'post',
		parameters: param
	});
}
function removemark(id){
	if(mrknum[id]>1){
		for(var i=1;i<mrknum[id];i++){
			map.removeOverlay(umarker[id + '_' + i]);
		}
	}
	mrknum[id] = 1;	
}
function setMarker(lat, lon, title, name, id){
	document.getElementById(id + '_' + name).innerHTML = 'マーカー' + mrknum[id] + '番で表示中';
	var point = new GLatLng(lat, lon);
	var resicon = new GIcon(baseicon);
	var marker = "nred_Marker";
	switch (id) {
		case "doodle":
			marker = "npaleblue_Marker";
			break;
		case "station":
			marker = "npink_Marker";
			break;
		case "art":
			marker = "ngreen_Marker";
			break;
		case "eat":
			marker = "npurple_Marker";
			break;
	}
	resicon.image = 'http://www.seunze.com/pictures/' + marker + mrknum[id] + '.png';
	createMarker3(point, (title), name, id, resicon);
	mrknum[id] += 1;
}
function getdatalist(){
	/*keyword set*/
	var word="";
	if(document.dtoform.dtosrch.checked){
		word=document.dtoform.dtoword.value;
	}
	/*hot set*/
	var hot="";
	if(document.dtoform.dtohot.checked){
		hot="hot";
	}
	/*user set*/
	var userset=document.dtoform.dtowho.value;
	param = 'latmax=' + latmax + '&latmin=' + latmin + '&lonmax=' + lonmax + '&lonmin=' + lonmin + '&tid=' + transid;
	param+= '&word=' + word + '&hot=' + hot + '&userset=' + userset;
	/*Get Shchedule data*/
	document.getElementById('datalist_1').innerHTML =　'<img class="loading" src="http://www.seunze.com/pictures/ajax-loader.gif" alt="Now Loading!!" />';
	document.getElementById('datalist_2').innerHTML =　'<img class="loading" src="http://www.seunze.com/pictures/ajax-loader.gif" alt="Now Loading!!" />';
	new Ajax.Request('http://www.seunze.com/seunzemap_data.html', {
		method: 'post',
		parameters: param,
		onSuccess: showdata
	});
}
function getartevent(){
	var checkarea=document.getElementById('area').innerHTML;
	var temp=checkarea.toString();
	var area=new Array();
	area=temp.split('-');
	if (area[0] == "地域：関東") {
		var lat = map.getCenter().lat();
		var lon = map.getCenter().lng();
		param = 'lat=' + lat + '&lon=' + lon + '&tid=' + transid + '&latmax=' + latmax + '&latmin=' + latmin + '&lonmax=' + lonmax + '&lonmin=' + lonmin;
		/*Get art data*/
		getplcContents('art', param);
		document.getElementById('art').style.height ='150px';
	}
	else {
		document.getElementById('art').innerHTML = "アート情報は、関東エリアのみです。";
	}
}
function geteatplace(){
	var lat = map.getCenter().lat();
	var lon = map.getCenter().lng();
	param = 'lat=' + lat + '&lon=' + lon + '&tid=' + transid + '&latmax=' + latmax + '&latmin=' + latmin + '&lonmax=' + lonmax + '&lonmin=' + lonmin;
	param+= '&genre=' + document.eatsubmit.srchgenre.value +'&budget=' + document.eatsubmit.srchbudget.value +'&food=' + document.eatsubmit.srchfood.value;
	/*Get eat data*/
	getplcContents("eat",param);
	document.getElementById('eat').style.height ='130px';
}
function getstation(){
	var lat = map.getCenter().lat();
	var lon = map.getCenter().lng();
	param = 'lat=' + lat + '&lon=' + lon + '&tid=' + transid;
	param += '&latmax=' + latmax + '&latmin=' + latmin + '&lonmax=' + lonmax + '&lonmin=' + lonmin;
	/*Get station data*/
	getplcContents('station',param);
	document.getElementById('station').style.height ='110px';
}
function getdoodle(){
	var lat = map.getCenter().lat();
	var lon = map.getCenter().lng();
	param = 'lat=' + lat + '&lon=' + lon + '&tid=' + transid;
	param += '&latmax=' + latmax + '&latmin=' + latmin + '&lonmax=' + lonmax + '&lonmin=' + lonmin;
	/*Get doodle data*/
	getplcContents('doodle',param);
	document.getElementById('doodle').style.height ='150px';
}
function showdata(oj){
	removemark('data');
	if(oj.responseText!=""){
		var timeset=new Array("outrange","now","future","all");
		var res=eval("(" + oj.responseText + ")");
		var items = res['items'];
		var datalist=new Array(3);
		datalist[0] ='';
		datalist[1] ='';
		datalist[2] ='';
		if (items != "empty") {
			var itemlen = items.length;
			var i = 0;
			var name;
			var conts = new Array(3);
			var tabs  = new Array();
			var elm = items[0];
			i++;
			while (i < (itemlen-1)) {
				i--;
				if (elm['lat'] != "" | elm['lon'] != "") {
					var point = new GLatLng(elm['lat'], elm['lon']);
					name = elm['name'];
					conts[0] = '';
					conts[1] = '';
					conts[2] = '';
					conts[elm['status']] = elm['wininfo'];
					datalist[elm['status']] += '<div class="datalistset">' + elm['wininfo'] + '</div>';
					if ((i < (itemlen - 1))) {
						i++;
						elm = items[i];
						while (elm['PlaceID'] == items[i - 1]['PlaceID']) {
							name += ':' + elm['name'];
							conts[elm['status']] += elm['wininfo'];
							datalist[elm['status']] += '<div class="datalistset">' + elm['wininfo'] + '</div>';
							if ((i < (itemlen - 1))) {
								i++;
								elm = items[i];
							}else{
								break;
							}
						}
					}else{
						break;
					}
					j = 0;
					k = 0;
					tabs = new Array();
					if (conts[1] != '') {
						tabs[j] = new GInfoWindowTab('現在', '<div class="gmaplistset">' + conts[1] + '</div>');
						j++;
						k += 1;
					}
					if (conts[2] != '') {
						tabs[j] = new GInfoWindowTab('もうすぐ', '<div class="gmaplistset">' + conts[2] + '</div>');
						j++;
						k += 2;
					}
					if (conts[0] != '') {
						tabs[j] = new GInfoWindowTab('過去、未来', '<div class="gmaplistset">' + conts[0] + '</div>');
						j++;
						k += 0;
					}
					var resicon = new GIcon(baseicon);
					resicon.image = 'http://www.seunze.com/pictures/dticon_' + timeset[k] + '.png';
					createMarker2(point, name, tabs, resicon);
					mrknum['data'] += 1;
				}
				i++;
			}
			if(datalist[1]=='') datalist[1]='データが見つかりませんでした。';
			if(datalist[2]=='') datalist[2]='データが見つかりませんでした。';
			document.getElementById('datalist_1').innerHTML = datalist[1] + '<div class="div-clear"></div>';
			document.getElementById('datalist_2').innerHTML = datalist[2] + '<div class="div-clear"></div>';
		}
		else {
			document.getElementById('datalist_1').innerHTML = 'データが見つかりませんでした。';
			document.getElementById('datalist_2').innerHTML = 'データが見つかりませんでした。';
		}
	}
}
function showplace(oj){
	if (oj.responseText != "") {
		var res=eval("(" + oj.responseText + ")");
		document.getElementById('address').innerHTML = res["address"];
		document.getElementById('area').innerHTML = res["area"];
		
		if(res["message"]==""){
			param = 'l0=' + res["Level0LID"]+'&l1=' + res["Level1LID"]+'&address=' + encodeURIComponent(res["address"]) + '&tid=' + transid;
			new Ajax.Updater('weather','http://www.seunze.com/seunzemap_weather.html', {
			method: 'post',
			parameters: param
			});
		}else{
			document.getElementById('weather').innerHTML = res["message"];
		}
	}
}
function StationSelect(type, code){
	var s = document.getElementsByTagName("head")[0].appendChild(document.createElement("script"));
	s.type = "text/javascript";
	s.charset = "utf-8";
	var line_el = document.getElementById("srchline");
	var station_el = document.getElementById("srchstation");
	var optionIndex0 = line_el.options.length;
	var optionIndex1 = station_el.options.length;
	if (type == 0) {
		for (i = 0; i <= optionIndex0; i++) {
			line_el.options[0] = null
		}
		for (i = 0; i <= optionIndex1; i++) {
			station_el.options[0] = null
		}
		station_el.options[0] = new Option("駅を選択", 0);
		if (code == 0) {
			line_el.options[0] = new Option("路線を選択", 0);
		}
		else {
			s.src = "http://www.ekidata.jp/api/p/" + code + ".json";
		}
	}
	else {
		for (i = 0; i <= optionIndex1; i++) {
			station_el.options[0] = null
		} //駅削除
		if (code == 0) {
			station_el.options[0] = new Option("駅を選択", 0); //駅OPTIONを空に
		}
		else {
			s.src = "http://www.ekidata.jp/api/l/" + code + ".json"; //駅JSONデータURL
		}
	}
}
function MovetoStation(ssid){
	/*alert(ssid);*/
	var temp = ssid.split(",");
	if(temp[0]!=0){
		var point=new GLatLng(temp[1], temp[2]);
		map.panTo(point, 15);
	}	
}
function changecenter(lat,lon,bmid){
	document.tlbmgmapsrch.maplock.checked=false;
	centinfo=true;
	map.panTo(new GLatLng(lat,lon), 15);
	pastlat=null;
	renewnum=0;
	param = 'bmid=' + bmid + '&tid=' + transid;
	new Ajax.Updater('centerinfo','http://www.seunze.com/seunzemap_detail.html', {
			method: 'post',
			parameters: param
			});
	document.getElementById("centerinfo").style.display='block';
}
//Eat Selection Jsonp
function genremenu(res){
	var items = res["results"];
	var item = items["genre"];
	var len=item.length;
	for (i = 0; i < len; i++) {
		var elm = item[i];
		genre[i] = elm["code"] + ':::' + elm["name"];
	}
}
function foodmenu(res){
	var items = res["results"];
	var item = items["food"];
	var len=item.length;
	for (i = 0; i < len; i++) {
		var elm = item[i];
		food[i] = elm["code"] + ':::' + elm["name"];
	}
}
function budgetmenu(res){
	var items = res["results"];
	var item = items["budget"];
	var len=item.length;
	for (i = 0; i < len; i++) {
		var elm = item[i];
		budget[i] = elm["code"] + ':::' + elm["name"];
	}
}
function addEatlist(mode){
	switch(mode){
		case "genre":
			var list=genre;
		break;
		case "budget":
			var list=budget;
		break;
		case "food":
			var list=food;
		break;
	}
	var element=document.getElementById("srch"+mode);
	for (i = 0; i < list.length; i++) {
		var tmp=list[i].split(":::")
		ii = i + 1;
		element.options[ii] = new Option(tmp[1], tmp[0]);
	}
}
//Sned to Registration
function tabtodata(url,title,lat,lon,start,end,place){
	document.tabsubmit.tablat.value=lat;
	document.tabsubmit.tablon.value=lon;
	document.tabsubmit.tabstart.value=start;
	document.tabsubmit.tabend.value=end;
	document.tabsubmit.tabplace.value=place;
	document.tabsubmit.url.value=url;
	document.tabsubmit.title.value=title;
	document.tabsubmit.submit();
}
