
var map;
var map_warn = false;
//var geocoder;
var buf_st = '';
var crr_x, crr_y;
var buf_x, buf_y;

function ini_box(){
	
	/*
	var w_w = $(window).width();
	var w_h = $(window).height();
	$(function(){
		setTimeout(scrollTo, 60, 0, 1000);
	});
	*/
	
}


function get_pos(pos){
	var p = pos.coords;
	var x = p.longitude;
	var y = p.latitude;
	var a = p.accuracy;
	
	//if(x==null){}
	//var x = 139.7668969631195;
	//var y = 35.681025774313696;
	
	$('#lng').text(x);
	$('#lat').text(y);
	$('#acc').text(a);
	$('#test').text('['+p+']');
	
	//if(self()=='' || self()=='index'){}
	crr_x = x;
	crr_y = y;
	ini_map(x, y);
	pos2sttn(x, y);
}

function pos2sttn(x, y){
	//console.log('【pos2sttn】');

	$('#near #navi').text('最寄り駅を検索中...');
	$('#stnm').text('最寄り駅を検索中...');
	
	$.ajax({
		url:'http://map.simpleapi.net/stationapi?output=json&x='+x+'&y='+y,
		type:'get',
		dataType:'jsonp',
		cache: false,
		success : function(j){
			//console.log(j);
			var st = j[0];
			var st_name = st.name;
			$('#stnm').text(st.name);
			$('#near #navi').text(st.name+' '+st.distanceM+' '+st.traveltime);
			if(buf_st!=st_name){
				api_g(st_name);
			}
			buf_st = st_name;
		}
	});
}



function api_g(st){
	//console.log('【api_g】'+st);
	var st_full = st;
	var st_name = st.replace(/駅$/,'');

	
	$('#lines').html($('<li>').text('最寄り駅リストを取得中...'));
	
	

//基本的に駅アリ
//大手町,大宮,八丁堀

//平日とかは無し
//駅名（　を重要視
//先頭にこだわらない

//先頭何文字以内（区切り文字内）
//二本松駅がなぜか引っかからない
//日野駅
//路線番号を覚えておく

	//var q = 'site:timetable.ekitan.com '+st_name+' 方面 平日 -'+st_name+'方面';//東京
	//var q = 'site:timetable.ekitan.com intitle:'+st_full+' OR ('+st_name+' AND )駅) AND 平日 -'+st_name+'方面';//new
	//var q = 'site:timetable.ekitan.com '+st.replace(/駅$/,'');
	var q = "site:timetable.ekitan.com intitle:"+st_name+" | "+st_name+"*駅 -"+st_name+"方面 -ページ";
	//console.log(q);
	
	q = encodeURI(q);
	//var url = 'http://api.hoge.in/gw.php?n=50&q='+q;
	//var url = 'http://localhost:8888/api/gw.php?n=50&q='+q;
	//var url = 'http://localhost:8888/api/ek.php?n=50&q='+q;
	//var url = 'http://api.hoge.in/ek.php?n=50&q='+q;
	var url = 'ajax/station.php?n=50&q='+q;//テスト
	
	//http://proxy.hoge.in/eki/
	
	//console.log(url);
	
//	console.log(url);
	
	$.ajax({
		url:url,
		type:'get',
		dataType:'jsonp',
		cache: false,
		timeout: 10000,
		success:function(j){
			
			
			
			$('#lines').html($('<li>').text('読み込み完了'));
			var cnt = 1;
			var lnk = [];
			var key = {};
			var ls_buf = {};
			
			//console.log(j.req);
			$('#svr_tw').attr({'href':'http://twitter.com/'+j.req.svr.tw}).text('@'+j.req.svr.tw);
			$('#svr_num').text(j.req.svr.num+'号鯖');
			$('#update').text('update: '+j.req.update);
			
			$(j.res.items).each(function(){
				
				
				
				//var f = this.title.match(new RegExp("^" + st_name + ".+$"));
				
				var ary_t = this.title.replace('｜',' ').split(' ');
				
				var f = 
				ary_t[0].match(new RegExp("^.*"+st_name+"駅"))
				||
				ary_t[0].match(new RegExp(st_name+"\([^\)]+\)駅"))
				;
				
				
				if(f && 6<=ary_t.length){//6以上の場合もある（秋葉原の山手線が）
					
					var tmp = {};
					//var ary_t = this.title.replace('｜',' ').split(' ');
					var ary_h = this.href.split('/').pop().replace('-','_').replace('.shtml','').split('_');
					
					tmp.name = st;
					tmp.line = ary_t[2];
					tmp.drct = ary_t[3];//(ary_h[2]=='D1'?'上り':'下り')+' '+
					//tmp.file = ary_h[0]+'-'+ary_h[1]+'_'+ary_h[2];
					tmp.file = ary_h[0]+'-'+ary_h[1];//+'_'+ary_h[2]
					
					tmp.lnid = ary_h[0];//路線
					tmp.stid = ary_h[1];//駅番号
					tmp.drid = ary_h[2];//方向
					tmp.id = zerofill(tmp.lnid,4)+zerofill(tmp.stid,4)+tmp.drid;
					tmp.ls = zerofill(tmp.lnid,4)+zerofill(tmp.stid,4);
					
					//console.log(tmp.ls,tmp.line,tmp.drct);
					
					if(!key[tmp.id]){
						lnk.push(tmp);
						cnt++;
						ls_buf[tmp.file] = ls_buf[tmp.file]?ls_buf[tmp.file]+1:1;//カウントしておく
						key[tmp.id]='true';//ダブり防止
					}
					
				}
				
			});//each
			
			

			//補完する
			$.each(ls_buf, function(k, v){
				if(v<2){//一つしかない場合
					$.each(lnk, function(){
						if(this.file==k){
							var cln = {};//コピー用
							$.each(this, function(kk, vv){cln[kk] = vv;});
							cln.drct = "反対方面";
							cln.drid = cln.drid=='D1'?'D2':'D1';
							cln.id = zerofill(cln.lnid,4)+zerofill(cln.stid,4)+cln.drid;
							if(cln.stid!=0){lnk.push(cln);}//駅番号ゼロなら補完しない
							return true;
						}
					});
				}
			});
			
			srt('id', lnk);
			
			/*
			$(lnk).each(function(){
				console.log(this.line,this.drct);
			});
			*/
			/**/
			setTimeout(function(){
				sgst(lnk, 'lines');
			},100);
			
			//sgst(lnk, 'lines');
			
			//window.scrollTo(60);
			//$('#res').get(0).scrollIntoView();
			//console.log('end');
		},
		complete: function(XMLHttpRequest, status){
			if (status == "timeout") {
				alert('サーバが混雑している様です。しばらく時間をおいて試して下さい。');
			}
		}
	});
}




function sgst(ary, tgt){
	
	$('#lines').empty();
	
	var lines = $('#lines');
	if(!$(ary).size()){
		lines
		.append($('<li>').text('該当駅のデータが見つからない、またはgoogle様にブロックされました'))
	}
	
	var tmp_ls = '';
	var cnt = 1;
	
	$(ary).each(function(){
		tmp_tgt = 'ls_'+this.ls;
		
		if(this.ls!=tmp_ls){
			lines
			//.append($('<dt>').text(this.line+' '+this.name))
			//.append($('<h4>').text(this.line+' '+this.name))
			//.addClass('sep')
			.append($('<li>').addClass('sep').text(this.line+' '+this.name));
			//.append($('<dd>').attr({'id':tmp_tgt}))
			//.append($('<ul>').attr({'id':tmp_tgt}));
		}
		
		//$('#'+tmp_tgt).append($('<a>').attr({'href':this.file}).text('【'+this.drct+'】'));
		
		//forward
		//arrow
		/*
		$('#'+tmp_tgt).append(
			$('<li>').addClass('arrow')
			.append($('<a>').attr({'href':'ajax/unk.php?tblid='+this.file}).text(this.drct))
		);
		*/
		
		//var ts = new Date().getTime();
		//+'&ts='+ts
		lines
		.append(
			$('<li>').addClass('arrow')
			.append($('<a>').attr({'href':'ajax/unk.php?tblid='+this.file+'_'+this.drid}).text(this.drct))
		);
		
		/*
		//キャッシュ防止
		.click(function(){
			var rp_href = $(this).attr('href').split('&').shift()+'&ts='+(new Date().getTime());
			$(this).attr(rp_href);
		})
		*/
		tmp_ls = this.ls;
		cnt++;
	});
	//console.log('----------------------------------------------------------------');

}




//set_zoom(map.get_zoom()++)

function ctrl(f){
	//console.log(crr_x,crr_y);
	switch(f){
		case '+':break;//map.zoomIn();
		case '-':break;//map.zoomOut();
		case '@':map.setCenter(new google.maps.LatLng(crr_y, crr_x));break;
		default:break;
	}
	//return false;
}

function reset_pos(){
	if(navigator.userAgent.match('iPhone|iPod')){
		navigator.geolocation.getCurrentPosition(get_pos, error_func);
	}else{
		map.setCenter(new google.maps.LatLng(crr_y, crr_x));
		pos2sttn(crr_x, crr_y);
	}
	return false;
}



function error_func(a){
	alert('位置の取得に失敗しました');
	//alert(a.code);
}




function set_center_marker(pos){
	var icon = new google.maps.MarkerImage(
		'img/centermarker.png',
		new google.maps.Size(23, 23),
		new google.maps.Point(0,0),
		new google.maps.Point(11, 11)
	);
	var shadow = new google.maps.MarkerImage(
		'img/centermarker_shadow.png',
		new google.maps.Size(29, 29),
		new google.maps.Point(0, 0),
		new google.maps.Point(11, 11)
	);
	center_marker = new google.maps.Marker({
		position: pos,
		map: map,
		shadow: shadow,
		icon: icon,
		zIndex: 1
	});
	return center_marker;
}




function ini_map(x, y){
	var latlng = new google.maps.LatLng(y, x);
	var opt = {
		center: latlng,
		zoom: 15,
		scrollwheel:true,
		mapTypeControl: false,
		navigationControl: true,
		navigationControlOptions:{style: google.maps.NavigationControlStyle.SMALL},
		//navigationControlOptions:{style: google.maps.NavigationControlStyle.ANDROID},
		//navigationControlOptions:{style: google.maps.NavigationControlStyle.ZOOM_PAN},
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	
	map = new google.maps.Map($('#map').get(0), opt);
	//map = new google.maps.Map(document.getElementById("map"), opt);
	
	var geocoder = new google.maps.Geocoder();
	rev_geo(latlng);
	

	
	/**/
	//センター▼
	//var center_pos = map.getCenter();
	//var center_marker = set_center_marker(center_pos);
	var center_marker = set_center_marker(latlng);
	
	
//	center_marker_icon.iconAnchor = new GPoint(11, 11);
//	var center_marker = new GMarker(map.getCenter(), center_marker_icon);
	google.maps.event.addListener(map, 'dragstart', function(){
		//center_marker.set_visible(false);
		if(center_marker){center_marker.setMap(null);}
	});
	
	google.maps.event.addListener(map, 'dragend', function(){
		//console.log('dragend');
		
		if(!map_warn && navigator.userAgent.match('iPhone|iPod')){alert('ごめんなさい！ドラッグは表示が乱れる事が多いです！素早くドラッグした方がいいかも。');map_warn = true;}
		
		//var center_pos = map.getCenter();
		//var center_marker = set_center_marker(center_pos);
		//center_marker.set_visible(true);
		//center_marker.getPosition(center_pos.lat(), center_pos.lng());
		center_pos = map.getCenter();
		center_marker = set_center_marker(center_pos);
		
		
		
		//▼
		//var tmp_p = map.get_center();
		var tmp_p = map.getCenter();
		rev_geo(tmp_p);
		
		var tmp_x = tmp_p.lng();
		var tmp_y = tmp_p.lat();
		//console.log('tilesloaded');
		//console.log('buf_',buf_x,buf_y);
		if(tmp_x!=buf_x || tmp_y!=buf_y){
			pos2sttn(tmp_x, tmp_y);
		}else{
			//console.log('pos変更なし');
		}
		
		buf_x = tmp_x;
		buf_y = tmp_y;
		//▲
		
		
		
	});
	//センター▲
	
	
	var mkr = new google.maps.Marker({
		position: latlng,
		map: map,
		title:'koko!'
	});
	
	var infowindow = new google.maps.InfoWindow({
		content:'この辺でしょ？'
	});
	
	google.maps.event.addListener(mkr, 'click', function() {
		infowindow.open(map, mkr);
	});
	
	google.maps.event.addListener(map, 'tilesloaded', function(){
		/*
		▼
		▲
		*/
	});
	
	//google.maps.event.addListener(map, 'zoom_changed', function(){});
	
	




	
	
}



function rev_geo(latlng){
	//console.log('rev_geo');
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode({'latLng': latlng}, function(rslt, stat){
		if(stat == google.maps.GeocoderStatus.OK){
			var addr;
			
			//address_components
			//formatted_address
			//console.log(rslt);
			//console.log('formatted_address--'+rslt[0].formatted_address);
			
			//for(var i=0; i<rslt[0].address_components.length; i++){
			//	console.log('レベル'+rslt[0].address_components[i].long_name);
			//}
			addr = rslt[0].formatted_address;
			//return addr;
			$('#near #addr').text(addr);

		}
	});
	
}



function self(){return location.pathname.split('/').pop().split('.').shift();}
function zerofill(n, l){var df = l - (n+"").length;var add = "";if(0<df){for(i=0;i<df;i++){add += "0";}}return (add+n);}
function srt(k, a){a.sort(function (b, c){return b[k] > c[k]?1:-1;});}



