// jogsim.js  2006/04/18
// jogsim110.js 2006/05/15
// jogsim120.js 2006/06/04
// jogsim121.js 2006/06/11
// jogsim122.js 2006/07/24
// jogsim123.js 2006/08/09
// jogsim130.js 2006/12/08
// jogsim140.js 2006/12/14
// jogsim141.js 2007/01/13
// jogsim142.js 2007/02/03
// jogsim150.js 2007/03/25
// jogsim151.js 2007/04/14
// jogsim160.js 2007/05/12
// jogsim161.js 2007/05/13
// jogsim170.js 2007/08/15
// jogsim180.js 2007/11/25
// jogsim181.js 2007/12/23
// jogsim182.js 2008/04/04
// jogsim183.js 2008/04/29
// jogsim190.js 2008/05/11
// jogsim1901.js 2008/05/19
// jogsim200.js 2008/08/10
// jogsim210.js 2008/11/02
// jogsim2101.js 2008/11/14
// jogsim211.js 2009/02/27
// jogsim220.js 2009/04/15
// jogsim221.js 2009/05/18
// jogsim230.js 2009/11/11
// jogsim240.js 2010/01/08
// jogsim241.js 2010/01/18
// jogsim2411.js 2010/01/19

function bitly(imageurl){
		
	BitlyCB.myShortenCallback = function(data) {
		// this is how to get a result of shortening a single url
		var result;
		for (var r in data.results) {
			result = data.results[r];
			result['longUrl'] = r;
			break;
		}
		bitlyurl=result['shortUrl'];

	　　　　var answer=confirm('走行マップをtwitしていいですか？');
	　　　　if((answer==true)&&(bitlyurl!="")){
			twitter_credit=" 走行地図→ "+bitlyurl+" #jogsim";
　　　　	}else{
			twitter_credit=" http://42.195km.net/ #jogsim";
　　　　	}

		twitter_com = twitter_com + twitter_credit;
		TwitterAPI.statuses.update(twitter_com);
		twitter_com = "";

	}
	BitlyClient.shorten(imageurl, 'BitlyCB.myShortenCallback');

}
function bitly_map(image_url,imageurl2,output_width,output_height){
		
	BitlyCB.myShortenCallback = function(data) {
		// this is how to get a result of shortening a single url
		var result;
		for (var r in data.results) {
			result = data.results[r];
			result['longUrl'] = r;
			break;
		}
		bitlyurl=result['shortUrl'];	

		var phpurl="<img src=" + image_url +" width="+output_width+" height=" + output_height +" alt=\"jogsim_image\">";

		var w1=window.open("","hoge2","titlebar=no,status=no,menubar=no,resizable=no,location=no,width=520,height=520,scrollbars=yes");
		w1.document.open();
		w1.document.write("<html><head>\n<title>マップイメージ ");
		w1.document.write(output_width);
		w1.document.write("x");
		w1.document.write(output_height);
		w1.document.write("</title>\n");
		w1.document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"./jogsim.css\" />\n");
		w1.document.write("</head>\n");
		w1.document.write("<body><center>\n");
		w1.document.write(phpurl);
		w1.document.write("\n<br /><br />");
		w1.document.write("<div class=\"init_waku\"><br/>画像保存は地図を「右クリック-画像保存」です。<br />\n");
		w1.document.write("（Windowsの場合）<br /><br /></div><br />\n");
		w1.document.write("<a href=\"yyy.htm\" onclick=\"window.open('mapimage_hint.htm', '_blank', 'width=440,height=320,scrollbars=yes'); return false;\"><span class=\"caution_mid\"><img src=\"./gif/hint.gif\" border=0 width=19 height=19 alt=\"制限事項\">マップイメージの制限事項</a></span>");
		w1.document.write("\n<br /><br /><br /><br />\n");
		w1.document.write("<span class=\"caution_mid\">リンク用URLはこちら</span><br />\n");
		w1.document.write("<textarea rows=3 cols=50 onfocus=\"this.select()\">");
		w1.document.write(image_url);
		w1.document.write("</textarea><br />\n");
		w1.document.write("<span class=\"caution_mid\">またははこちら</span><br />\n");
		w1.document.write("<textarea rows=1 cols=50 onfocus=\"this.select()\">");
		w1.document.write(bitlyurl);
		w1.document.write("</textarea><br /><br />\n");

		w1.document.write("<a href=\"javascript:void(0)\" onclick=\"window.close()\"><img src=\"./gif/jg_close.gif\" alt=\"閉じる\" width=\"20\" height=\"20\" border=\"0\">閉じる</a><br /><br />\n");

		w1.document.write("</center>\n");
		w1.document.write("</body>\n");
		w1.document.write("</html>");
		w1.document.close();

	}
	BitlyClient.shorten(imageurl2, 'BitlyCB.myShortenCallback');

}

function readOut(){

	if (document.getElementById("hour").value==0){
		twitter_hour = "";
		}else{
		twitter_hour = document.getElementById("hour").value+"時間";
		}
	if (document.getElementById("min").value==0){
		twitter_min = "";
		}else{
		twitter_min = document.getElementById("min").value+"分";
		}

	if (init_speakmansave == 0){vds.setCast("KeikoJPf");}
		else{vds.setCast("TakashiJPm");}

	var headarray = new Array("お疲れ様でした。", "ナイス、ラン！", "ご苦労様。", "がんばったね。", "すごーぃ、すごーぃ。", "グッドジョブ。");
	var randnum = Math.floor( Math.random() * headarray.length ); 
	var tailarray = new Array("明日もがんばろう", "マイペースでいきましょう。", "お仕事もがんばってください。", "めざせっ、自己ベストっ！");
	var randnum2 = Math.floor( Math.random() * tailarray.length ); 

	speak_head=headarray[randnum];
	speak_tail=tailarray[randnum2];

	var midarray= new Array();; 

	midarray[0]="今日はごはんを"+document.f.rice.value+"杯分もしくは生ビール"+document.f.beer.value+"杯分、余計に飲めそうです。";
	midarray[1]="平均速度は時速"+document.f.y.value+"キロ。エネルギー換算で"+document.f.kw.value+"キロワット　アワーです。";
	midarray[2]="ウィンドウショッピングだと"+document.f.shop.value+"分相当。ぞうきんがけだと"+document.f.clean.value+"分に値します。";

	var randnum3=Math.floor( Math.random()*3 );
	speak_mid=midarray[randnum3];

	if (document.f.cal.value==0){
		speak_cal = "体重や時間を入力するとカロリーとかも計算します。";
		}else{
		speak_cal = "これは"+document.f.cal.value+"キロカロリーの消費。脂肪は"+document.f.fat.value+"グラムを燃焼しました。" + speak_mid + speak_tail ;
		}

	speak_word=speak_head+document.f.d.value+"キロメートルを"+twitter_hour+twitter_min+"走りました。"+speak_cal;

//window.alert(speak_word);

	vds.setRate(1);
	vds.setString(speak_word);

	vds.speak();

}

function twitterpost() {
    if(twitter_com ==""){
	window.alert("【　計算　】をクリックしてからtwitterに投稿してください。");
	}else{
	bitlyurl="";
	ImagePage_make();
	}
}

function ImagePage_L(){
	var output_width=450;
	var output_height=450;

	ImagePage(output_width,output_height);
}
function ImagePage_M(){
	var output_width=300;
	var output_height=300;

	ImagePage(output_width,output_height);
}
function ImagePage_S(){
	var output_width=150;
	var output_height=150;

	ImagePage(output_width,output_height);
}

function ImagePage(output_width,output_height){

	var max_number_image = 70 ;
	var map_path_data="";
	map_marker_mark="&markers=";

	lines = xy0.split("\n");
	var datalen=lines.length ;
	var check_dist=parseFloat(document.getElementById("distance").value);
	marker_count=check_dist;

	if (check_dist > 15){keta=1000;}else{keta=10000;}//1000...60mくらい誤差(30km超時）
	if (datalen > 50){keta_p=1000;}else{keta_p=10000;}//1000...60mくらい誤差(30km超時）

	mabi_path=datalen/max_number_image;

	var points3 = new Array();
	p = 0;
	dist = 0;
	var ii=0;

	if (lines.length > 2){
		lines.length = lines.length - 1 ;
		if (mabi_path>1){
			for (var i=0; i<lines.length; i++) {
				if (lines[i].length > 1) {
					parts = lines[i].split(",");
					var lat = parseFloat(parts[0]);
					var lng = parseFloat(parts[1]);
					points3.push( new GLatLng(lng,lat) );

					if ((Math.floor(i*mabi_path))<datalen){
						ii=Math.floor(i*mabi_path);

						partsii = lines[ii].split(",");
						var latii = parseInt(partsii[0]*keta_p)/keta_p;
						var lngii = parseInt(partsii[1]*keta_p)/keta_p;

						map_path_data = map_path_data+"|"+lngii+","+latii;
					}
				}
			}
			parts = lines[lines.length-1].split(",");
			var lat = parseInt(parts[0]*keta_p)/keta_p;
			var lng = parseInt(parts[1]*keta_p)/keta_p;
			map_path_data = map_path_data+"|"+lng+","+lat;

		}else{     //dataがmax以下

			for (var i=0; i<lines.length; i++) {
				if (lines[i].length > 1) {
					parts = lines[i].split(",");
					var lat = parseInt(parts[0]*keta_p)/keta_p;
					var lng = parseInt(parts[1]*keta_p)/keta_p;
					points3.push(new GLatLng(lng,lat) );

					map_path_data = map_path_data+"|"+lng+","+lat;
				}
			}
		}

		k_count = 1;
		zan1=0;distx1=0;mae_total1=0;
		while( p != (points3.length -1)) {
			distx1 = Gdistance(points3[p], points3[p+1]);
			dist += Gdistance(points3[p], points3[++p]);
			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){
				if ((mae_total1+distx1) < 1000){
					mae_total1 = mae_total1 + distx1;
					zan1 = 1000 - mae_total1;
				}
				else{
					zan1 = actFlag_image(distx1,points3[p-1],points3[p],zan1);
					mae_total1 = 1000 - zan1;
				}
			}
       		}
	}

	var map_path_line="path=rgb:0xff0000,weight:3";

	if (map_path_data != ""){
		var map_path = map_path_line+map_path_data;
	}else{
		var mapimage = map.getCenter();
		var mapimage_zoom = map.getZoom();
		var map_path = "center="+mapimage.y+","+mapimage.x+"&zoom="+mapimage_zoom;
	}
	var image_url="http://maps.google.com/staticmap?"+map_path+map_marker_mark+"&size="+output_width+"x"+output_height+"&maptype=roadmap&key=ABQIAAAAkilhmkmatuDAqukaIZIjARSnSeM8Ks8WN-lvuOD87B_63jhr8BRDcROUNon7nc3ZdN_j65mc3zMIUA&sensor=false";

	var dist4_5=Math.round(document.getElementById("distance").value*10)/10;;
	var image_url2="http://42.195km.net/jogsim/showmap.htm?"+dist4_5+"??http://maps.google.com/staticmap?"+map_path+map_marker_mark+"&size="+output_width+"x"+output_height+"&maptype=roadmap&key=ABQIAAAAkilhmkmatuDAqukaIZIjARSnSeM8Ks8WN-lvuOD87B_63jhr8BRDcROUNon7nc3ZdN_j65mc3zMIUA&sensor=false";

	bitly_map(image_url,image_url2,output_width,output_height)

}
function ImagePage_make(){

	output_width=450;
	output_height=450;

	var max_number_image = 70 ;

	var map_path_data="";
	map_marker_mark="&markers=";

	lines = xy0.split("\n");
	var datalen=lines.length ;
	var check_dist=parseFloat(document.getElementById("distance").value);
	marker_count=check_dist;

	if (check_dist > 15){keta=1000;}else{keta=10000;}//1000...60mくらい誤差(30km超時）
	if (datalen > 50){keta_p=1000;}else{keta_p=10000;}//1000...60mくらい誤差(30km超時）

	mabi_path=datalen/max_number_image;

	var points3 = new Array();
	p = 0;
	dist = 0;
	var ii=0;

	if (lines.length > 2){
		lines.length = lines.length - 1 ;
		if (mabi_path>1){
			for (var i=0; i<lines.length; i++) {
				if (lines[i].length > 1) {
					parts = lines[i].split(",");
					var lat = parseFloat(parts[0]);
					var lng = parseFloat(parts[1]);
					points3.push( new GLatLng(lng,lat) );

					if ((Math.floor(i*mabi_path))<datalen){
						ii=Math.floor(i*mabi_path);

						partsii = lines[ii].split(",");
						var latii = parseInt(partsii[0]*keta_p)/keta_p;
						var lngii = parseInt(partsii[1]*keta_p)/keta_p;

						map_path_data = map_path_data+"|"+lngii+","+latii;
					}
				}
			}
			parts = lines[lines.length-1].split(",");
			var lat = parseInt(parts[0]*keta_p)/keta_p;
			var lng = parseInt(parts[1]*keta_p)/keta_p;
			map_path_data = map_path_data+"|"+lng+","+lat;

		}else{     //dataがmax以下

			for (var i=0; i<lines.length; i++) {
				if (lines[i].length > 1) {
					parts = lines[i].split(",");
					var lat = parseInt(parts[0]*keta_p)/keta_p;
					var lng = parseInt(parts[1]*keta_p)/keta_p;
					points3.push(new GLatLng(lng,lat) );

					map_path_data = map_path_data+"|"+lng+","+lat;
				}
			}
		}

		k_count = 1;
		zan1=0;distx1=0;mae_total1=0;
		while( p != (points3.length -1)) {
			distx1 = Gdistance(points3[p], points3[p+1]);
			dist += Gdistance(points3[p], points3[++p]);
			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){
				if ((mae_total1+distx1) < 1000){
					mae_total1 = mae_total1 + distx1;
					zan1 = 1000 - mae_total1;
				}
				else{
					zan1 = actFlag_image(distx1,points3[p-1],points3[p],zan1);
					mae_total1 = 1000 - zan1;
				}
			}
       		}
	}

	var map_path_line="path=rgb:0xff0000,weight:3";

	if (map_path_data != ""){
		var map_path = map_path_line+map_path_data;
	}else{
		var mapimage = map.getCenter();
		var mapimage_zoom = map.getZoom();
		var map_path = "center="+mapimage.y+","+mapimage.x+"&zoom="+mapimage_zoom;
	}

	var dist4_5=Math.round(document.getElementById("distance").value*10)/10;;
	var image_url="http://42.195km.net/jogsim/showmap.htm?"+dist4_5+"??http://maps.google.com/staticmap?"+map_path+map_marker_mark+"&size="+output_width+"x"+output_height+"&maptype=roadmap&key=ABQIAAAAkilhmkmatuDAqukaIZIjARSnSeM8Ks8WN-lvuOD87B_63jhr8BRDcROUNon7nc3ZdN_j65mc3zMIUA&sensor=false";

	bitly(image_url)
}

function optionsave(){

	if (document.getElementById("center").checked){
		init_center=1;
		}else{
		init_center=0;
		}
	if (document.getElementById("weightsave").checked){
		init_weight = document.getElementById("weight").value;
		}else{
		init_weight=0;
		}
	if (document.getElementById("heightsave").checked){
		init_height=1;
		document.getElementById("elevop").checked=1;
		}else{
		init_height=0;
//		document.getElementById("elevop").checked=0;
		}
	if (document.getElementById("citysave").checked){
		init_city=1;
		document.getElementById("citytown").checked=1;
		}else{
		init_city=0;
//		document.getElementById("citytown").checked=0;
		}
	if (document.getElementById("fitsave").checked){
		init_fit = 1;
		}else{
		init_fit = 0;
		}
	if (document.getElementById("speaksave").checked){
		init_speak = 0;
		document.getElementById("speak").checked=0;
		}else{
		init_speak = 1;
		document.getElementById("speak").checked=1;
		}
	if (document.getElementById("speakmansave").checked){
		init_speakmansave = 1;
		}else{
		init_speakmansave = 0;
		}

	setCookie("init_center", init_center);
	setCookie("init_weight", init_weight);
	setCookie("init_height", init_height);
	setCookie("init_city", init_city);
	setCookie("init_fit", init_fit);
	setCookie("init_speak", init_speak);
	setCookie("init_speakmansave", init_speakmansave);

	window.alert("オプション設定を保存しました"); 
	closeDataWin();
	fat_show();

}

function remainder(){
    lines = xy0.split("\n");
    datacount = lines.length;

    if (datacount > 2){

    	calc_check_jogsim();
    	var pppoints = new Array(2); 
    	var guide = new Array(3);
    	var sum_dist ;
    	var longest_dist=0;
    	var longest_point=0;

    	var endpoint =points.length-1;
    	for (var i = 0; i <= endpoint; i++) {pppoints[i] = ['',''];}

    	var distance_end=Gdistance(points[0],points[endpoint]);

	for (var i = 0; i <= endpoint; i++) { 
		if (i == 0){
	    		pppoints[i][0]=0;//一番最初はゼロ
	    	}else{
	    		pppoints[i][0] = pppoints[i-1][0]+Gdistance(points[i-1],points[i]);
	    	}
        	if (i == endpoint){
	   		pppoints[i][1]=0;
	   	}else{
	   		pppoints[i][1]=Gdistance(points[i],points[endpoint]);//今から終点まで
	   		if (longest_dist<pppoints[i][1]){
				longest_dist=pppoints[i][1];
				longest_point=pppoints[i][0];
			}
	   	}
        	sum_dist=pppoints[i][0];
	}

    	guide[0]=[0,distance_end];
    	if(0.1 > distance_end/sum_dist){
		guide[1]=[longest_point,longest_dist];//roop
	}else{
		guide[1]=[sum_dist/2,distance_end/2];//one way
	}
    	guide[2]=[sum_dist,0];

    	var chart = new EJSC.Chart(

	       "FourthChart", 
       		{
		axis_bottom: {
			caption: "走行距離　m"
		},
		axis_left: {
			caption: ""
//			visible: false
		},
        	show_legend: false,
 		show_hints: true,
        	title: "",
		grid: {
			color: "rgb(230,230,230)" 
		}
       		}

     	);

	var myChartSeries =  new EJSC.AreaSeries(

		new EJSC.ArrayDataHandler(pppoints),
		{ title: "直線距離" }
	);
     	var my2ChartSeries =  new EJSC.LineSeries(
		new EJSC.ArrayDataHandler(guide),
		{ title: "ガイドライン" }
      	);

	myChartSeries.lineWidth = 5;
	myChartSeries.color = 'rgb(255,203,101)';
	chart.addSeries(myChartSeries);

	chart.addSeries(my2ChartSeries);
	document.getElementById("FourthChartYaxis").innerHTML ="<img src=\"./gif/s_direct.gif\" width=\"46\" height=\"200\">";

    }else{
	document.getElementById("FourthChart").innerHTML ="<center><span class=\"head\">測定データがありません。</span></center>";
	document.getElementById("FourthChartYaxis").innerHTML ="";
    }

}

function keisan(ido,keido,ido2,keido2){
	var a,b,x,y ;
	var dx1,dy1,dx2,dy2 ;
	var work ,lng,lat;
	var deg,dist,dist_km ;
	
	L_ido = ido ; L_keido = keido ;
	M_ido = ido2 ; M_keido = keido2 ;
	
	dx1 = ido * Math.PI / 180 ;
	dy1 = keido * Math.PI / 180 ;
	dx2= ido2 * Math.PI / 180 ;
	dy2 = keido2 * Math.PI / 180 ;
	
	deg = Math.sin(dy1) * Math.sin(dy2) + Math.cos(dy1) * Math.cos(dy2) * Math.cos( dx2 - dx1) ;
	
	ido = Math.PI * ido / 180 ;
	keido = Math.PI * keido / 180 ;
	ido2 = Math.PI * ido2 / 180 ;
	keido2 = Math.PI * keido2/ 180 ;
	
	
	a = keido2 -keido ;
	y = Math.cos(ido2)*Math.sin(a) ;
	x =( Math.cos(ido)*Math.sin(ido2) ) - ( Math.sin(ido) * Math.cos(ido2)* Math.cos(a) );
	
	b = Math.atan2(y,x) * 180 / Math.PI ;
	
	if (b < 0 ) b =  b + 360 ;
	return(b);  
}

function vector(){
    lines = xy0.split("\n");
    datacount = lines.length;

    if (datacount > 2){

	calc_check_jogsim();
    	var x1,x2,x3,y1,y2,y3,kosu ;
    	var vec1,vec2,vec3;
    	var houi = new Array("北","北北東","北東","東北東","東","東南東","南東","南南東","南","南南西","南西","西南西","西","西北西","北西","北北西");
    	var bunkatu16=360/32;
    	var houi_com;
    	var direct_time;
    	var real_time;

    	kosu = lines.length-2;

	parts = lines[0].split(",");
	y1 = parseFloat(parts[1]);
	x1 = parseFloat(parts[0]);

	parts = lines[kosu].split(",");
    	y2 = parseFloat(parts[1]);
    	x2 = parseFloat(parts[0]);

    	if(y1<y2){y3=y2+(y2-y1);}else{y3=y2-(y1-y2);}
    	if(x1<x2){x3=x2+(x2-x1);}else{x3=x2-(x1-x2);}

	setLoading_town();
     	var request = GXmlHttp.create();
	var url = "town2.cgi" + "?lon=" + x3 + "&lat=" + y3;

	request.open("GET", url, true);
        request.onreadystatechange = function() {
	if (request.readyState == 4) {
		var citytowns = request.responseText;
		var citycut = citytowns.split(",");
		var citytownname = citycut[0]+citycut[1]+citycut[2];
		if ( (citytowns.indexOf("Warning") != -1)||(citytowns == "")||(citytowns == ",,")||(citytowns.indexOf("undefined") != -1) ){
			citytowns = "error";
			citytownname = "<font color=red>情報が取れませんでした</font>";
			}
		document.getElementById("pretown").innerHTML =citytownname;
//		if (citytowns !="error"){
//			ct0 += citytowns+"\n";
//			}
		unsetLoading_town();
		}
        }
	request.send(null);

	var endpoint =points.length-1;
    	var distance_end=Gdistance(points[0],points[endpoint]);
    	var vector_end=keisan(y1,x1,y2,x2);	

	var vec ;
    	vec = Math.floor(vector_end/bunkatu16/2+0.5);
    	if (vec==16){vec=0;}
	houi_com=houi[vec];

	real_time=parseFloat(document.getElementById("hour").value)*3600+parseFloat(document.getElementById("min").value)*60+parseFloat(document.getElementById("sec").value);
    	var dist_rate = distance_end/parseFloat(document.getElementById("distance").value)/1000

    	real_time = real_time * dist_rate;

    	var d_hour=Math.floor(real_time/3600);
    	var d_min =Math.floor((real_time-d_hour*3600)/60);
    	var d_sec =Math.floor(real_time-d_hour*3600-d_min*60);

    	if (d_hour==0){d_hour="";}else{d_hour = d_hour+" 時間 ";}
    	if ((d_hour==0)&&(d_min==0)){d_min="";}else{d_min  = d_min +" 分 ";}
    	d_sec  = d_sec +" 秒 ";

    	document.getElementById("vector").innerHTML =houi_com;
    	document.getElementById("vector_dist").innerHTML =distance_end;
    	document.getElementById("directtime").innerHTML =d_hour+d_min+d_sec;

    	vec3=360-vector_end-5;
    	vec2=10;
    	vec1=vector_end-5;

    	if (lines.length > 2){
		var third_data =[ [vec1,"white"],[vec2,"red"],[vec3,"white"] ];
		var chart = new EJSC.Chart("ThirdChart", 
   		{
      		title: "", 
      		show_legend: false,
      		show_hints: false
 		}
  		); 

		mySeries= new EJSC.PieSeries( 
    		new EJSC.ArrayDataHandler(third_data) ,
    		{
     			defaultColors: [ 
          		'rgb(255,255,255)', 
          		'rgb(255,51,51)', 
          		'rgb(255,255,255)' 
      			] 
     		}
  		);

		chart.addSeries(mySeries);
	        document.getElementById("ThirdChartSample").innerHTML ="<img src=\"./gif/houi.gif\">";
	}

    }else{
	document.getElementById("ThirdChart").innerHTML ="<center><span class=\"head\">測定データがありません。</span></center>";
        document.getElementById("ThirdChartSample").innerHTML ="";
	document.getElementById("vector").innerHTML ="-----";
    	document.getElementById("vector_dist").innerHTML ="-----";
    	document.getElementById("directtime").innerHTML ="-----";
    	document.getElementById("pretown").innerHTML ="-----";
    }

}

function turn_num(){

    lines = xy0.split("\n");
    datacount = lines.length;

    if (datacount > 2){
	calc_check_jogsim();
    	var angle60l = 0;
    	var angle120l = 0;
    	var angle150l = 0;
    	var angle60r = 0;
    	var angle120r = 0;
    	var angle150r = 0;

    	parts = lines[0].split(",");

       	for (var i=1; i<(lines.length-1); i++) {

		parts = lines[i-1].split(",");
		var lat0 = parseFloat(parts[1]);
		var lng0 = parseFloat(parts[0]);
		parts = lines[i].split(",");
		var lat1 = parseFloat(parts[1]);
		var lng1 = parseFloat(parts[0]);
		parts = lines[i+1].split(",");
		var lat2 = parseFloat(parts[1]);
		var lng2 = parseFloat(parts[0]);

		var lata = lat0-lat1;
		var lnga = lng0-lng1;
		var latb = lat2-lat1;
		var lngb = lng2-lng1;

		yy = lata * lngb - lnga * latb;
		xx = lata * latb + lnga * lngb;
		var theta = Math.atan2(yy, xx) *180 / Math.PI;

		if ((theta> 0 )&&(theta<= 60)){angle60l = angle60l + 1;}
		if ((theta> 60)&&(theta<=120)){angle120l =angle120l + 1;}
		if ((theta>120)&&(theta<=150)){angle150l =angle150l + 1;}
		if ((theta< 0 )&&(theta>= -60)){angle60r = angle60r + 1;}
		if ((theta< -60)&&(theta>=-120)){angle120r =angle120r + 1;}
		if ((theta<-120)&&(theta>=-150)){angle150r =angle150r + 1;}
	}

	var second_data =[ [angle60r,"右廻り 0ﾟ- 60ﾟ"],
	   [angle120r,"右廻り 60ﾟ-120ﾟ"],
	   [angle150r,"右廻り120ﾟ-150ﾟ"],
	   [angle150l,"左廻り120ﾟ-150ﾟ"],
	   [angle120l,"左廻り 60ﾟ-120ﾟ"],
	   [angle60l,"左廻り 0ﾟ- 60ﾟ"] ];

	var turn_r = angle60r+angle120r+angle150r;
	var turn_l = angle60l+angle120l+angle150l;

	if (turn_r == turn_l){document.getElementById("turn").innerHTML ="右折も左折も同じ回数";}
	if (turn_r < turn_l){document.getElementById("turn").innerHTML ="左折が多い";}
	if (turn_r > turn_l){document.getElementById("turn").innerHTML ="右折が多い";}
	var chart = new EJSC.Chart("SecondChart", 
	    {
 		title: "", 
    		show_legend: false,

		onShowHint: function(point, series, chart, hint, hoverOrSelect) { 
    			return "[label]<br/>([percent]%)"; 
		} 
　　	    }
	);


	mySeries= new EJSC.PieSeries( 
	    new EJSC.ArrayDataHandler(second_data) ,
	    {
	     defaultColors: [ 
      		'rgb(255,51,51)', 
       		'rgb(255,101,101)',
       		'rgb(255,152,152)',//Red 
       		'rgb(152,152,255)',
       		'rgb(101,101,255)',
       		'rgb(51,51,255)'  //Blue 
		]
	    }
	);

	chart.addSeries(mySeries);
        document.getElementById("SecondChartSample").innerHTML ="<img src=\"./gif/left-right.gif\" width=\"225\" height=\"115\">";

    }else{
	document.getElementById("SecondChart").innerHTML ="<center><span class=\"head\">測定データがありません。</span></center>";
	document.getElementById("turn").innerHTML ="-----";
	document.getElementById("SecondChartSample").innerHTML ="";
    }

}

function height_g() {
    linecut = ev0.split("\n");
    datacount = linecut.length;

    if ((document.getElementById("elevop").checked == 1)&&(datacount > 2)){

    calc_check_jogsim();

    lines_ev = ev0.split("\n");

    if (lines_ev.length > 2){

    var pppoints = new Array(2); 
    for (var i = 0; i < lines_ev.length-1; i++) {pppoints[i] = ['',''];}
	distsum = 0;
        for (var i=0; i<lines_ev.length-1; i++) {
		parts_ev = lines_ev[i].split(",");
		distsum = parseFloat(distsum) + parseFloat(parts_ev[0]);
		pppoints[i][0] = parseFloat(distsum); 
		pppoints[i][1] = parseFloat(parts_ev[1]) ; 
	}
    }

    var chart = new EJSC.Chart(

    "FirstChart", 
 	{
	axis_bottom: {
		caption: "走行距離　m"
	},
	axis_left: {
//		caption: "標　高　m",
		caption: ""
//		visible: false
	},
        show_legend: false,
 	show_hints: true,
        title: "",
	grid: {
		color: "rgb(230,230,230)" 
	}
       }
     );

    var myChartSeries =  new EJSC.AreaSeries(

	new EJSC.ArrayDataHandler(pppoints),
	{ title: "標高データ" }
      );

    myChartSeries.lineWidth = 5;
    myChartSeries.color = 'rgb(255,203,101)';
    chart.addSeries(myChartSeries);
    document.getElementById("FirstChartYaxis").innerHTML ="<img src=\"./gif/s_height.gif\" width=\"46\" height=\"200\">";

    ave_angle=0;
    elev_calc();
    document.f.max_elev.value=Math.round(parseFloat(max_elev)*10)/10;
    document.f.ave_angle.value=Math.round(parseFloat(ave_angle)*100)/100;
    document.f.max_angle_u.value=Math.round(parseFloat(max_angle)*100)/100;
    document.f.max_angle_d.value=Math.round(parseFloat(min_angle)*100)/100;
    document.f.sum_elev.value=Math.round(parseFloat(sum_up)*parseFloat(document.getElementById("kai").value)*10)/10;

    }else{
    document.getElementById("FirstChart").innerHTML ="<center><span class=\"head\">高低差オプションがチェックされていません。<br />もしくはデータがありません。</span></center>";
    document.getElementById("FirstChartYaxis").innerHTML ="";

    document.f.max_elev.value="--- ";
    document.f.ave_angle.value="--- ";
    document.f.max_angle_u.value="--- ";
    document.f.max_angle_d.value="--- ";
    document.f.sum_elev.value="--- ";
    }

}

function jump_normal_mal(){
    map.setMapType(G_NORMAL_MAP);
}

function MDControl() { }
    MDControl.prototype = new GControl();
    MDControl.prototype.initialize = function(map) {
    var container = document.createElement("div");
    var savepos= document.createElement("div");
    savepos.title= "ストリートビューを見る";
    savepos.className= "MDbuttons";
    container.appendChild(savepos);
    savepos.appendChild(document.createTextNode("ストリートビュー"));
     GEvent.addDomListener(savepos, "click", do_streetview);

    map.getContainer().appendChild(container);
    return container;
}

MDControl.prototype.getDefaultPosition = function() {
    return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7,31));
}

function do_streetview(){

    if (points.length == 0){
	point = map.getCenter();
	}else{
	point=points[points.length -1];
	}

   //   ストリートビューの初期化    //
     svContainer = document.createElement("div");
     svContainer.style.width="300px";
     svContainer.style.height="300px";
     map.addOverlay(new GStreetviewOverlay());
   //       マーカーの初期化        //
     marker = new GMarker(point,{draggable: true});
   //マーカーをクリックしたら、ふきだしを表示する
     GEvent.addListener(marker, "click", showStreetView);
   //マーカーがドラッグを開始したら、ふきだしを閉じる
     GEvent.addListener(marker, "dragstart", function(){
                map.closeInfoWindow();
                if(svObj){
                   //GStreetViewPanoramaの削除
                   //(IEのとき、メモリ開放)
                   svObj.remove();
                }
     });
    //マーカーのドラッグが終了したら、マーカーを擬似クリック
     GEvent.addListener(marker, "dragend", function(){
	     GEvent.trigger(marker, "click");
     });
    //マーカーの追加
     map.addOverlay(marker);     
     marker.openInfoWindowHtml("<div style=\"font-size: 12px;\">青い線の上にドラッグ＆ドロップすると<br />周辺画像を見ることができます。</div>",{maxWidth:50});

}

function showStreetView(){
    var markerPos = marker.getPoint();
    setTimeout(function(){
    	svObj = new GStreetviewPanorama(svContainer,{latlng:markerPos});
    }, 10);
    marker.openInfoWindow(svContainer);
}

function showmaptype(){
//var kkkkkk=new GMenuMapTypeControl();
var aiueo=map.getCurrentMapType().getName();
//var aiueo=kkkkkk.getMapTypes();
window.alert(aiueo);
}

function getEarthInstanceCB(object) {

    var ge = object;

    if (document.getElementById("earth_buld").checked){
	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, false);
	}else{
    	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
	}
      // You can now manipulate ge using the full Google Earth API.
}

function j_earth(){

    var j_earth_yesno = 'yes';

    if ((document.getElementById("citytown").checked)||(document.getElementById("elevop").checked)){
	if(window.confirm('この機能を使うと高低データや市町村データは破棄します。\nよろしいですか？')){
	    j_earth_yesno='yes';
	    document.getElementById("citytown").checked=0;
	    document.getElementById("elevop").checked=0;
	    }
	    else{
	    j_earth_yesno='no';
	    }
	}
    if(document.getElementById("world_location").value == "x"){j_earth_yesno='no';}


    if(j_earth_yesno=='yes'){
	
	world_location=document.getElementById("world_location").value;
	location0=world_location.split(",");

	def_lat = parseFloat(location0[0]);
    	def_lng = parseFloat(location0[1]);
    	def_maptype = parseFloat(location0[2]); //0..normal 1..satelite image

	map.setCenter(new GLatLng(def_lat, def_lng));
        if (def_maptype == 1 ){
	    window.alert("この地区は強制的に航空写真モードにチェンジします");
	    map.setMapType(G_SATELLITE_MAP);
	    }

        lines = xy0.split("\n");
    	start_parts=lines[0].split(",");
    	org_lng = parseFloat(start_parts[0]);//start地点の座標
    	org_lat = parseFloat(start_parts[1]);
    	sabun_lat = def_lat - org_lat;
    	sabun_lng = def_lng - org_lng;

	var poly2= null;

	var hosei_lat=0;
    	var hosei_lng=0;
    	var plus_alpha=0;

	lines_ev = ev0.split("\n");

	if (lines.length > 2){
	    map.clearOverlays();
	    poly = null;
	    var points2 = new Array();
	    xy0 = "";
	    ev0 = "";
	    ct0 = "";
	    dist = 0;
	    p = 0;

	    lines.length = lines.length - 1 ;
	    for (var i=0; i<lines.length; i++) {
		if (lines[i].length > 1) {
		    parts = lines[i].split(",");
		    parts_ev = lines_ev[i].split(",");
		    var lat = parseFloat(parts[1]);
		    var lng = parseFloat(parts[0]);
		    var distsum = parseFloat(parts_ev[0]);
		    var elev0 = '';

		    if(i == 0){
			plus_alpha = 0;
			old_lat=lat;
			old_lng=lng;
			old_plus_alpha=0;
			}else{
			plus_alpha = (lng - old_lng)*(  (Math.cos( (180-lat) * Math.PI / 180)) / (Math.cos( (180-(lat+sabun_lat)) * Math.PI / 180))  -1)+old_plus_alpha;
			old_lat=lat;
			old_lng=lng;
			old_plus_alpha=plus_alpha;
			}
					
		    hosei_lat=lat+sabun_lat;
		    hosei_lng=lng+sabun_lng+plus_alpha;

		    points2.push(new GLatLng(hosei_lat,hosei_lng) );
		    xy0 += String(hosei_lng)+","+String(hosei_lat) +"\n";
		    ev0 += String(distsum) + "," + String(elev0) + "\n";
		    }
		}

		k_count = 1;

		if (document.getElementById("pg").checked){
		    poly = new GPolygon(points2, color, 3, 0.6,color,0.1);//Polygon mode
		    var xys = new Array;
		    for( var i = 0; i < points2.length; i++){
			xys.push( getXY( points2[0], points2[i] ) )
		    }
		    document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
		    }else{
			poly = new GPolyline(points2, color, 3, 0.6); //Normal mode
 			document.getElementById("pgarea").value =  "--- ";
		    }
		map.addOverlay(poly);

		marker000 = new GMarker(points2[0], {icon:icon3, draggable: true});
		map.addOverlay(marker000);
		marker000.enableDragging();
		GEvent.addListener(marker000,'dragend',function(){move_start_point()});


		eol = poly.Distance();

		points = points2;
		zan1=0;distx1=0;mae_total1=0;
		while( p != (points.length -1)) {
			distx1 = Gdistance(points[p], points[p+1]);
			dist += Gdistance(points[p], points[++p]);

			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){

				if ((mae_total1+distx1) < 1000){
					mae_total1 = mae_total1 + distx1;
					zan1 = 1000 - mae_total1;
					}
				else{
					zan1 = actFlag(distx1,points[p-1],points[p],zan1);
					mae_total1 = 1000 - zan1;
				}
			}
		}
		document.getElementById("distance").value = addZero3(String(dist/1000));
	    }

	    header_kml();
	    document.getElementById("out").value =kml_top+xy0+kml_bottom;
	}
}

function move_start_point(){

    lines = xy0.split("\n");
    lines_ev = ev0.split("\n");
    parts = lines[0].split(",");
    var new_lat = parseFloat(parts[1]);
    var new_lng = parseFloat(parts[0]);

    var remove = marker000.getPoint();
    var new_point = 

    remove_lat=remove.y;
    remove_lng=remove.x;

    sabun_re_lat = remove.y - new_lat;
    sabun_re_lng = remove.x - new_lng;

    var poly2= null;

    if (lines.length > 2){
	map.clearOverlays();
	poly = null;
	var points2 = new Array();
	xy0 = "";
	ev0 = "";
	ct0 = "";
	dist = 0;
	p = 0;

	lines.length = lines.length - 1 ;
            for (var i=0; i<lines.length; i++) {
		if (lines[i].length > 1) {
			parts = lines[i].split(",");
			parts_ev = lines_ev[i].split(",");
			var lat = parseFloat(parts[1]);
			var lng = parseFloat(parts[0]);
			var distsum = parseFloat(parts_ev[0]);
	   		var elev0 = '';

			if(i == 0){
				plus_alpha = 0;
				old_lat=lat;
				old_lng=lng;
				old_plus_alpha=0;
				}else{
				plus_alpha = (lng - old_lng)*(  (Math.cos( (180-lat) * Math.PI / 180)) / (Math.cos( (180-(lat+sabun_re_lat)) * Math.PI / 180))  -1)+old_plus_alpha;
				old_lat=lat;
				old_lng=lng;
				old_plus_alpha=plus_alpha;
				}
					
			hosei_lat=lat+sabun_re_lat;
			hosei_lng=lng+sabun_re_lng+plus_alpha;

			points2.push(new GLatLng(hosei_lat,hosei_lng) );
			xy0 += String(hosei_lng)+","+String(hosei_lat) +"\n";
			ev0 += String(distsum) + "," + String(elev0) + "\n";
			}
		}

		k_count = 1;

		if (document.getElementById("pg").checked){
			poly = new GPolygon(points2, color, 3, 0.6,color,0.1);//Polygon mode
			var xys = new Array;
			for( var i = 0; i < points2.length; i++){
				xys.push( getXY( points2[0], points2[i] ) )
			}
			document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
		}else{
			poly = new GPolyline(points2, color, 3, 0.6); //Normal mode
 			document.getElementById("pgarea").value =  "--- ";
		}
		map.addOverlay(poly);

		marker000 = new GMarker(points2[0], {icon:icon3, draggable: true});
		map.addOverlay(marker000);
		marker000.enableDragging();
		GEvent.addListener(marker000,'dragend',function(){move_start_point()});


		eol = poly.Distance();

		points = points2;
		zan1=0;distx1=0;mae_total1=0;
		while( p != (points.length -1)) {
			distx1 = Gdistance(points[p], points[p+1]);
			dist += Gdistance(points[p], points[++p]);

			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){

				if ((mae_total1+distx1) < 1000){
					mae_total1 = mae_total1 + distx1;
					zan1 = 1000 - mae_total1;
					}
				else{
					zan1 = actFlag(distx1,points[p-1],points[p],zan1);
					mae_total1 = 1000 - zan1;
				}
			}
		}
		document.getElementById("distance").value = addZero3(String(dist/1000));
	}


	header_kml();
	document.getElementById("out").value =kml_top+xy0+kml_bottom;

}

function checkOverview(){
		overview = document.getElementById("map_overview"); 
    if(overview) 
    {
//		overview.firstChild.style.border = "2px solid #ffcc66";
		overview.firstChild.firstChild.style.left="4px";
		overview.firstChild.firstChild.style.top="4px";
		overview.firstChild.firstChild.style.width="140px";
		overview.firstChild.firstChild.style.heigh="140px";

		document.getElementById("map").appendChild(overview); 
	}else {
        setTimeout("checkOverview()",500);
//        setTimeout("checkOverview()",100);
      }
}

function selectrival(){
	rival_time_zenkaku=0;

	rival_name=document.getElementById("rivalname").value;
	rival_time_min=document.getElementById("rival_m").value
        if (rival_time_min.match(/[^0-9]/g)){
            alert ("ライバルのペース（分）に数値以外が含まれています\n（数値は半角で入力してください）");
        rival_time_min = "■";
	rival_time_zenkaku=1;
	}
	if (rival_time_min == ""){rival_time_min = "0";}

	rival_time_sec=document.getElementById("rival_s").value
        if (rival_time_sec.match(/[^0-9\.]/g)){
            alert ("ライバルのペース（秒）に数値以外が含まれています\n（数値は半角で入力してください）");
	rival_time_sec = "■";
	rival_time_zenkaku=1;
        }
	if (rival_time_sec == ""){rival_time_sec = "0";}

	if((parseFloat(rival_time_min) >0)||(parseFloat(rival_time_sec) >0)){
		rival_time=parseFloat(rival_time_min)+parseFloat(rival_time_sec)/60;
		rival_name="ライバル";
		}else{
		if(rival_name == "ゲブレセラシェ"){rival_time=176.9/60;}
		if(rival_name == "ラドクリフ")	{rival_time=192.6/60;}
		if(rival_name == "長谷川理恵")	{rival_time=278.1/60;}
		if(rival_name == "郷ひろみ")	{rival_time=310.9/60;}
		if(rival_name == "松村邦洋")	{rival_time=780.8/60;}
		if(rival_name == "x")		{window.alert("ライバルが未選択またはペースが入力されていません。");
						rival_time=0;
						}
		}

	if(rival_time >0 ){rival_flag=1;}

	mydist = parseFloat(document.getElementById("distance").value)*parseFloat(document.getElementById("kai").value);
	if ((document.getElementById("hour").value == "")||(document.getElementById("min").value == "")||(document.getElementById("sec").value == ""))
		{
		mymin=0;
		rival_flag=0
		}else
		{
		mymin = parseFloat(document.getElementById("hour").value)*60+parseFloat(document.getElementById("min").value)+parseFloat(document.getElementById("sec").value/60);
		rival_flag=1
		}
	mytime=	mymin / mydist;

/////////////
//mytime = 6;rival_flag=1;
//////////////
	rival = mytime / rival_time;

	if(parseFloat(mytime) > 0){
		rival_time_min = Math.floor(rival_time);
		rival_time_sec = Math.floor((rival_time - rival_time_min)*60+0.5);
		you_time_min = Math.floor(mytime);
		you_time_sec = Math.floor((mytime - you_time_min)*60+0.5);

		rival_set_word ="<br><img src=\"gif/run_r.gif\" alt=\"あなた\" width=\"11\" height=\"15\" border=\"0\">"+"あなた:"+you_time_min+"分"+you_time_sec+"秒/Km<br />"+"<img src=\"gif/run_r0.gif\" alt=\"ライバル\" width=\"11\" height=\"15\" border=\"0\">"+rival_name+":"+rival_time_min+"分"+rival_time_sec+"秒/Km<br />";
		rival_set_word = rival_set_word + "<a href=\"javascript:void(0)\" onClick=\"cancelrival()\">ライバルとの競走をやめる</a><br>";
	        document.getElementById("rivalshow").innerHTML =rival_set_word;
		}else{
		window.alert("比較するあなたのペースが計算されていません\nまず、ランニング時間を入れてCalcボタンで計算しましょう。");
		rival_flag=0;
		}
	if(rival_time_zenkaku==1){rival_flag=0;}

	document.getElementById('oririval').style.display='none';

}
function cancelrival(){
	rival_flag=0;
	rival=0;
	document.getElementById("rivalshow").innerHTML="";
}

function pauseOrUnpause(){
	if (paused == 0) {
                paused = 1;
		document.getElementById("ani_status").src="./gif/ani_go.gif";
		document.getElementById("slow").disabled=false;
		document.getElementById("fast").disabled=false;
                } else {
                paused = 0;
		document.getElementById("ani_status").src="./gif/ani_pause.gif";
		document.getElementById("slow").disabled=true;
		document.getElementById("fast").disabled=true;

		step_check();

		if ((rival >=1)||(rival_flag == 0)){
			animate(now_d+step);
			}else{
			animate_0(now_d+step);
			}
        }
}

function zoomToPoly() {
	if (poly && points.length > 0) {
		var bounds = poly.getBounds();
		map.setCenter(bounds.getCenter());
		map.setZoom(map.getBoundsZoomLevel(bounds));
	}
}

function step_check(){
	if (document.getElementById("slow").checked){
		step = 10;
	}else{
		step = 30;
	}
}

function run_stop(){
	eol=0;
	moving_check=0;
	paused=0;
	if (marker_r){ map.removeOverlay(marker_r);}
//Original ...map.removeOverlay(marker_r);

	if (marker_l){ map.removeOverlay(marker_l);}
}

function run_ani() {
	if(poly != null){
		if(moving_check == 0){


		moving_check=1;
		step_check();
		document.getElementById("ani_status").src="./gif/ani_pause.gif";
		document.getElementById("slow").disabled=true;
		document.getElementById("fast").disabled=true;

		eol = poly.Distance()
        	marker_r = new GMarker(poly.getVertex(0),{icon:car_r});
        	marker_l = new GMarker(poly.getVertex(0),{icon:car_l});
        	marker_f = new GMarker(poly.getVertex(0),{icon:car_f});
        	marker_ff = new GMarker(poly.getVertex(0),{icon:car_ff});
        	map.addOverlay(marker_r);
        	map.addOverlay(marker_l);
        	map.addOverlay(marker_f);
        	map.addOverlay(marker_ff);

		if (rival_flag == 1){
	        	marker_r0 = new GMarker(poly.getVertex(0),{icon:car_r0});
        		marker_l0 = new GMarker(poly.getVertex(0),{icon:car_l0});
        		marker_f0 = new GMarker(poly.getVertex(0),{icon:car_f0});
        		map.addOverlay(marker_r0);
        		map.addOverlay(marker_l0);
        		map.addOverlay(marker_f0);
		}

		if ((rival >=1)||(rival_flag == 0)){
			animate(0);
			}else{
			animate_0(0);
			}

		}else{
		pauseOrUnpause();

		}
	}else{
		window.alert("データがありません");
	}
}
function myfinish(){
		if (marker_f){map.removeOverlay(marker_f);}

}
function animate(d) { 
	if (d>eol) {
		if (marker_r){map.removeOverlay(marker_r);}
		if (marker_l){map.removeOverlay(marker_l);}
	        	map.addOverlay(marker_f);
			marker_f.setPoint(p);

		if (rival_flag == 1){
			if (marker_r0){map.removeOverlay(marker_r0);}
			if (marker_l0){map.removeOverlay(marker_l0);}
			if (marker_f0){map.removeOverlay(marker_f0);}
		}

		paused=0;
		moving_check=0;
		document.getElementById("ani_status").src="./gif/ani_go.gif";
		document.getElementById("fast").disabled=false;
		document.getElementById("slow").disabled=false;

        	setTimeout("myfinish()", 4000); 

		return; 
	}

	if( paused == 0 ) {
		if (first_flag == 0)
			{
			old_x = p.x;
			old0_x = p0.x;
			}

		p = poly.GetPointAtDistance(d); 
		if(eol >= d*rival){p0 = poly.GetPointAtDistance(d*rival); }
			else{p0 = poly.GetPointAtDistance(eol);}
		first_flag=0;

        	if (k++>=180/step) {
        		map.panTo(p);
			if (rival_flag == 1){
        			map.panTo(p0);
			}
        		k=0;
        	}
		if (p.x > old_x){
        		if (marker_f){map.removeOverlay(marker_f);}
        		if (marker_ff){map.removeOverlay(marker_ff);}
if (marker_r){map.removeOverlay(marker_r);}
	        	map.addOverlay(marker_r);
	       		marker_r.setPoint(p);
	        	if (marker_l){map.removeOverlay(marker_l);}
			}else{
if (marker_l){map.removeOverlay(marker_l);}
	        	map.addOverlay(marker_l);
			marker_l.setPoint(p);
	        	if (marker_r){map.removeOverlay(marker_r);}
			}
		if((eol > d*rival)&&(rival_flag == 1)){
			if (p0.x > old0_x){
	        		if (marker_f0){map.removeOverlay(marker_f0);}
	        		map.addOverlay(marker_r0);
	       			marker_r0.setPoint(p0);

	        		if (marker_l0){map.removeOverlay(marker_l0);}
				}else{
	        		map.addOverlay(marker_l0);
				marker_l0.setPoint(p0);
	        		if (marker_r0){map.removeOverlay(marker_r0);}
				}
			}
		if((eol < d*rival)&&(rival_flag == 1)){
			p0 = poly.GetPointAtDistance(eol);
	        		map.addOverlay(marker_f0);
	       			marker_f0.setPoint(p0);

	        		if (marker_l0){map.removeOverlay(marker_l0);}
	        		if (marker_r0){map.removeOverlay(marker_r0);}
			}
		now_d=d;
        	setTimeout("animate("+(d+step)+")", tick); 
	}
}

function animate_0(d) { //Mytime is faster than rival
	if (eol<d*rival) { 

		if (rival_flag == 1){
			if (marker_r0){map.removeOverlay(marker_r0);}
			if (marker_l0){map.removeOverlay(marker_l0);}
			if (marker_f0){map.removeOverlay(marker_f0);}
		}

		if (marker_r){map.removeOverlay(marker_r);}
		if (marker_l){map.removeOverlay(marker_l);}
		if (marker_ff){map.removeOverlay(marker_ff);}
	        	map.addOverlay(marker_f);
			marker_f.setPoint(p);

		paused=0;
		moving_check=0;
		document.getElementById("ani_status").src="./gif/ani_go.gif";
		document.getElementById("fast").disabled=false;
		document.getElementById("slow").disabled=false;

        	setTimeout("myfinish()", 4000); 

		return; 
	}

	if( paused == 0 ) {
		if (first_flag == 0)
			{
			old_x = p.x;
			old0_x = p0.x;
			}
		p0 = poly.GetPointAtDistance(d*rival);
		if(eol >= d){p = poly.GetPointAtDistance(d); }
			else{p = poly.GetPointAtDistance(eol);}
		first_flag=0;

        	if (k++>=180/step) {
        		map.panTo(p);
			if (rival_flag == 1){
        			map.panTo(p0);
			}
        		k=0;
        	}
		if (p0.x > old0_x){
        		if (marker_f0){map.removeOverlay(marker_f0);}
        		if (marker_ff){map.removeOverlay(marker_ff);}
	        	map.addOverlay(marker_r0);
	       		marker_r0.setPoint(p0);

	        	if (marker_l0){map.removeOverlay(marker_l0);}
			}else{
	        	map.addOverlay(marker_l0);
			marker_l0.setPoint(p0);
	        	if (marker_r0){map.removeOverlay(marker_r0);}
			}
		if((eol > d)&&(rival_flag == 1)){
			if (p.x > old_x){
	        		if (marker_f){map.removeOverlay(marker_f);}
	        		map.addOverlay(marker_r);
	       			marker_r.setPoint(p);

	        		if (marker_l){map.removeOverlay(marker_l);}
				}else{
	        		map.addOverlay(marker_l);
				marker_l.setPoint(p);
	        		if (marker_r){map.removeOverlay(marker_r);}
				}
			}
		if((eol < d)&&(rival_flag == 1)){
			p = poly.GetPointAtDistance(eol);
	        		map.addOverlay(marker_ff);
	       			marker_ff.setPoint(p);

	        		if (marker_l){map.removeOverlay(marker_l);}
	        		if (marker_r){map.removeOverlay(marker_r);}
			}
		now_d=d;
        	setTimeout("animate_0("+(d+step)+")", tick); 
	}
}

function PreLoad(obj,val) {
    var d = document;
    var img = obj;
    d.img = new Image();
    d.img.src = val;
}
function eh_click2(overlay, point) {

}
function eh_click(overlay, point) {
 if(point){

	var citytownname="";
	points.push( point );

	distxx = 0 ;
	xandy = String(point.x)+","+String(point.y);
	p = points.length;
	if (points.length > 1){
		distxx = Gdistance(points[p-2], points[p-1]);
	}

	if (document.getElementById("elevop").checked){
		if(!flag_&&point!=null){
			setLoading();

      			var url = 'http://lab.uribou.net/ll2h/?ll='+point.lat()+','+point.lng()+'&jsonp=ll2h_callback';

			jsonObj_ = new JSONscriptRequest(url);
			jsonObj_.buildScriptTag();
			jsonObj_.addScriptTag();
		}
	}else{
		xy0 += xandy +"\n";
		ev0 += String(distxx)+",0,"+"\n";
	}

	if (document.getElementById("citytown").checked){
		if(!flag_town&&point!=null){
			setLoading_town();
        		var request = GXmlHttp.create();
//		        var url = "town.php" + "?lon=" + point.x + "&lat=" + point.y;
//		        var url = "town.cgi" + "?lon=" + point.x + "&lat=" + point.y;
		        var url = "town2.cgi" + "?lon=" + point.x + "&lat=" + point.y;
//		        var url = "town2.php" + "?lon=" + point.x + "&lat=" + point.y;

		        request.open("GET", url, true);
        		request.onreadystatechange = function() {
	          		if (request.readyState == 4) {
					citytowns = request.responseText;
//var dummy = new Array(2);
//dummy[0]="";dummy[1]="";
//dummy = citytowns.split("\n");
//citytowns=dummy[0]+dummy[1];
	    				var citycut = citytowns.split(",");
	    				citytownname = citycut[0]+citycut[1]+citycut[2];

					if ( (citytowns.indexOf("Warning") != -1)||(citytowns == "")||(citytowns == "\n")||(citytowns == ",,")||(citytowns.indexOf("undefined") != -1)||(!citytowns.match(/\S/g)) ){
						citytowns = "error";
						citytownname = "<font color=red>情報が取れませんでした</font>";
					}
					document.getElementById("town").innerHTML =citytownname;
	    				if ((citytowns !="error")&&(citytowns.match(/\S/g))){
						citytowns = citytowns.replace(/\n/,"");
						ct0 += citytowns+"\n";
					}
	    				header_kml();
	    				document.getElementById("out").value =kml_top+xy0+kml_bottom;
	    				unsetLoading_town();
				}
        		}
			request.send(null);
		}

	}else{
	        document.getElementById("town").innerHTML ="------------------";

		citytowns=",,";
  	        ct0 += citytowns+"\n";

		header_kml();
		document.getElementById("out").value =kml_top+xy0+kml_bottom;

        }

	if (document.getElementById("center").checked){map.setCenter(point);}
	if( points.length > 1 ) {
     		map.clearOverlays();
		k_count = 1;

		if (document.getElementById("pg").checked){
			poly = new GPolygon(points, color, 3, 0.6,color,0.1);//Polygon mode
			var xys = new Array;
			for( var i = 0; i < points.length; i++)
			{
			xys.push( getXY( points[0], points[i] ) )
			}
 	     		document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
		}else{
			poly = new GPolyline(points, color, 3, 0.6); //Normal mode
   			document.getElementById("pgarea").value =  "--- ";
		}
     		map.addOverlay(poly);
		eol = poly.Distance();//------------------------

	       GEvent.addListener(poly,"click",function(point){if (point) GEvent.trigger(map,"click",null,point)});

		var p = 0;
		var dist = 0;
		var distx = 0;
		zan = 0;
		var mae_total = 0;

		while( p != (points.length -1)) {
			distx = Gdistance(points[p], points[p+1]);
			dist += Gdistance(points[p], points[++p]);
			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){
				if ((mae_total+distx) < 1000){
					mae_total = mae_total + distx;
					zan = 1000 - mae_total;
				}
				else{
				zan = actFlag(distx,points[p-1],points[p],zan);
				mae_total = 1000 - zan;
		     		}
			}
		}
		document.getElementById("distance").value = addZero3(String(dist/1000));

	}
 }
}

function showAddress(address) {

	if (geocoder) {
		geocoder.getLatLng(
        	address,
          	function(point3) {
          		if (point3) { 
            			map.setCenter(point3, map.getZoom());
            			var marker = new GMarker(point3,icon3);
            			map.addOverlay(marker);
		eol = poly.Distance();//------------------------

          		}else{ 
            			window.alert("「"+address+"」では見つかりません"); 
               		}
	   	}
        	);
	}
}

function resize(){ 
	var map_div=document.getElementById("map");
	var chart1_div=document.getElementById("FirstChart");
	var chart4_div=document.getElementById("FourthChart");

	var disp=getDispSize();

	var h1=disp.height-100-20+50;	//地図のサイズ
	var h2=disp.height-120-200-40;	//パネルのサイズ

	if(h1<h2+200){h1=h2+200;}

	map_div.style.width=(disp.width-200)+"px";
	map_div.style.height=h1+"px";
	chart1_div.style.height=h1*.4+"px";
	chart1_div.style.width=(disp.width-200)+"px";
	chart4_div.style.height=h1*.4+"px";
	chart4_div.style.width=(disp.width-200)+"px";
	return {width:(disp.width-200)+"px",height:h1+"px"};

}

function getDispSize(){
	if(document.all){ 
		if(window.opera){
			return {width:document.body.clientWidth,height:document.body.clientHeight}; 
		}else{
			return {width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}; 
		}
	}

	// NN 
	else if(document.layers || document.getElementById){ 
		return {width:window.innerWidth,height:window.innerHeight}; 
	} 

}

function dd(id1,id2)
{
	if(document.all) {
		OBJ = document.all(id1).style;
		OBJ2 = document.all(id2).style;
		} 
		else if(document.getElementById){
			OBJ = document.getElementById(id1).style;
			OBJ2 = document.getElementById(id2).style;
		}

	if(OBJ) {
		if(OBJ.display=='none'){   //none hide
			OBJ.display='';
			if(OBJ2.display==''){OBJ2.display='none';}
		}else{
			OBJ.display='none';
//			if(OBJ2.display=='none'){OBJ2.display='';}
		}
	}
} 
function dd3(id1,id2,id3)
{
	if(document.all) {
		OBJ = document.all(id1).style;
		OBJ2 = document.all(id2).style;
		OBJ3 = document.all(id3).style;
		} 
		else if(document.getElementById){
			OBJ = document.getElementById(id1).style;
			OBJ2 = document.getElementById(id2).style;
			OBJ3 = document.getElementById(id3).style;
		}

	if(OBJ) {
		if(OBJ.display=='none'){   //none hide
			OBJ.display='';
			if(OBJ2.display==''){OBJ2.display='none';}
			if(OBJ3.display==''){OBJ3.display='none';}
		}else{
			OBJ.display='none';
		}
	}

}

function dd1(id){
	if(document.all)OBJ = document.all(id).style;
		 else if(document.getElementById)OBJ = document.getElementById(id).style;
	if(OBJ) OBJ.display=='none'?OBJ.display='':OBJ.display='none';
}

function jogsimshow()
{
	header_jogsim();
	document.getElementById("out").value = xyinit + xy0 ;
}

function kmlshow()
{
	header_kml();
	document.getElementById("out").value =kml_top+xy0+kml_bottom;
}

function draw()
{
	dummy = document.getElementById("in").value ;

	linecut = dummy.split("\n");
	if( linecut[0].substring(0,9) != "<?xml ver" )
		{draw_js();}
		else
		{draw_kml();}
}

function draw_js()
{
	var xy100 = "";

	var poly3= null;
	var point3 = new Array();

	xy0=""; 
	dummy = document.getElementById("in").value ;
	linecut = dummy.split("\n");
	partcut = linecut[0].split(",");
	apri_name = partcut[0];
	apri_ver  = partcut[1];
	LatLngx   = partcut[2];
	LatLngy   = partcut[3];
	zoom0     = partcut[4];
	f1k       = Number(partcut[5]);
	f5k       = Number(partcut[6]); 

	if (linecut.length > DataMax){
		window.alert("データ個数が多すぎます。取扱説明を参照ください。");
	}else{
    		if ((apri_name != "Jogsim")||(apri_ver != "1.2")){
			window.alert("データ形式が違います！");
		}
        	else{
        		for (var i=1; i<(linecut.length-1); i++) {
        		xy0 += linecut[i]+"\n";
        		}

			if (f1k == "1"){
				document.getElementById("1k").checked=1;
			}else{
				document.getElementById("1k").checked=0;
			}
			if (f5k == "1"){
				document.getElementById("5k").checked=1;
			}else{
				document.getElementById("5k").checked=0;
			}

			lines = xy0.split("\n");

			if (lines.length > 2){
      				map.clearOverlays();
      				poly = null;
      				var points3 = new Array();
      				xy0 ="";
      				dist = 0;
      				p = 0;

      				lines.length = lines.length - 1 ;
      				for (var i=0; i<lines.length; i++) {// Undo x
        				if (lines[i].length > 1) {
          					parts = lines[i].split(",");
          					var lat = parseFloat(parts[0]);
          					var lng = parseFloat(parts[1]);

          					points3.push(new GLatLng(lng,lat) );
          					xy0 += String(lat)+","+String(lng)+"\n";
         				}
      				}
      				k_count = 1;
	        
				if (document.getElementById("pg").checked){
		     			poly = new GPolygon(points3, color, 3, 0.6,color,0.1);//Polygon mode
  		     			var xys = new Array;
     		     			for( var i = 0; i < points3.length; i++){
						xys.push( getXY( points3[0], points3[i] ) )
		        			}
 					document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
				}else{
	     	     			poly = new GPolyline(points3, color, 3, 0.6); //Normal mode
		     			document.getElementById("pgarea").value =  "--- ";
				}

		      		map.addOverlay(poly);
				eol = poly.Distance();//------------------------

      				points = points3;
      				zan1=0;distx1=0;mae_total1=0;
      				while( p != (points.length -1)) {
        				distx1 = Gdistance(points[p], points[p+1]);
     	 				dist += Gdistance(points[p], points[++p]);

         				if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){
       		     				if ((mae_total1+distx1) < 1000){
   	      						mae_total1 = mae_total1 + distx1;
	      						zan1 = 1000 - mae_total1;
	      					}
	      					else{
              						zan1 = actFlag(distx1,points[p-1],points[p],zan1);
	      						mae_total1 = 1000 - zan1;
	      					}
   	     				}
          			}
          			document.getElementById("distance").value = addZero3(String(dist/1000));
     			}

			map.setCenter(new GLatLng(parseFloat(LatLngy),parseFloat(LatLngx)), parseInt(zoom0));
			document.getElementById('ori2').style.display='none';
		}
	}

}

function draw_kml()
{
    var xy100 = "";

    var poly3= null;
    var point3 = new Array();
    var elev002 ="";
    var elev001 ="";
    var elev000 ="";

    xy0=""; 
    ev0=""; 
    ct0=""; 

    dummy = document.getElementById("in").value ;
    linecut = dummy.split("\n");
    partcut = linecut[5].split(",");
    apri_name = "Jogsim";
    partcut = linecut[linecut.length-3].split(",");

    zoom0     = partcut[0];
    LatLngx   = partcut[1];
    LatLngy   = partcut[2];
    f1k       = partcut[3];
    f5k       = partcut[4]; 
    f1m       = partcut[5];
    f5m       = partcut[6]; 
    apri_ver  = parseFloat(partcut[7]);
    fpg       = parseFloat(partcut[8]); 
    fev       = parseFloat(partcut[9]); 
    fcitytown = parseFloat(partcut[10]);

  if (linecut.length > (DataMax+10)){window.alert("データ個数が多すぎます。取扱説明を参照ください。");}else{
    if ((apri_name != "Jogsim")||(apri_ver != 1.4)){
		window.alert("データ形式が違います！");
		}
        else{
	ev_check=0;xy_check=0;

        for (var i=4; i<(linecut.length-5); i++) {

      		if (linecut[i].indexOf("<dist_elev>") != -1){

			i ++ ;
			while (linecut[i].indexOf("</dist_elev>") == -1){
				ev0 += linecut[i]+"\n";
			        parts_ev = linecut[i].split(",");
			        elev0 = parseFloat(parts_ev[1]);
				distcheck= parseFloat(parts_ev[0]);
	  			elev002 = elev001;
	  			elev001 = elev000;
	  			elev000 = elev0;
				i ++;
			}
		}
      		if (linecut[i].indexOf("<visited_place>") != -1){

			i ++ ;
			while (linecut[i].indexOf("</visited_place>") == -1){
				ct0 += linecut[i]+"\n";
				i ++;
			}

		}
      		if (linecut[i].indexOf("<coordinates>") != -1){

			i ++ ;
			while (linecut[i].indexOf("</coordinates>") == -1){

				xy0 += linecut[i]+"\n";

				i ++;
			}
		}
	}

	if (f1k == "1"){
		document.getElementById("1k").checked=1;
		}else{
		document.getElementById("1k").checked=0;
		}
	if (f5k == "1"){
		document.getElementById("5k").checked=1;
		}else{
		document.getElementById("5k").checked=0;
		}
	if (fpg == "1"){
		document.getElementById("pg").checked=1;
		}else{
		document.getElementById("pg").checked=0;
		}
	if (fev == "1"){
		document.getElementById("elevop").checked=1;
		}else{
		document.getElementById("elevop").checked=0;
		}
	if (fcitytown == "1"){
		document.getElementById("citytown").checked=1;
		}else{
		document.getElementById("citytown").checked=0;
		}

	document.getElementById("elev").value =  "";
	lines = xy0.split("\n");

	if (lines.length > 2){
      		map.clearOverlays();
      		poly = null;
      		var points3 = new Array();
      		xy0 ="";
      		dist = 0;
      		p = 0;

      		lines.length = lines.length - 1 ;
      		for (var i=0; i<lines.length; i++) {// Undo x
        		if (lines[i].length > 1) {
          		parts = lines[i].split(",");

    		        var lat = parseFloat(parts[0]);
          		var lng = parseFloat(parts[1]);

          		points3.push(new GLatLng(lng,lat) );
          		xy0 += String(lat)+","+String(lng)+"\n";
         		}
      		}
      		k_count = 1;

		if (document.getElementById("pg").checked){
	  	   poly = new GPolygon(points3, color, 3, 0.6,color,0.1);//Polygon mode
	           var xys = new Array;
     		   for( var i = 0; i < points3.length; i++)
		   {
			xys.push( getXY( points3[0], points3[i] ) )
		   }
  		   document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
		 }else{
	     	   poly = new GPolyline(points3, color, 3, 0.6); //Normal mode
 		   document.getElementById("pgarea").value =  "--- ";
		 }
     		map.addOverlay(poly);	
		eol = poly.Distance();//------------------------


      		points = points3;
      		zan1=0;distx1=0;mae_total1=0;
      		while( p != (points.length -1)) {
        		distx1 = Gdistance(points[p], points[p+1]);
     	 		dist += Gdistance(points[p], points[++p]);

         		if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){
       		     		if ((mae_total1+distx1) < 1000){
   	      				mae_total1 = mae_total1 + distx1;
	      				zan1 = 1000 - mae_total1;
	      			}
	      			else{
              				zan1 = actFlag(distx1,points[p-1],points[p],zan1);
	      				mae_total1 = 1000 - zan1;
	      			}
   	     		}
          	}
          	document.getElementById("distance").value = addZero3(String(dist/1000));
     	}

      if (document.getElementById("elevop").checked){
        	document.getElementById("elev").value =  addZero2(String(elev000));
        	document.getElementById("elev_a").value =  addZero2(String(elev002));
        	document.getElementById("elev_b").value =  addZero2(String(elev001));
		show_elev_image(distcheck,elev000,elev001);
      }

	map.setCenter(new GLatLng(parseFloat(LatLngy),parseFloat(LatLngx)), parseInt(zoom0));
	document.getElementById('ori2').style.display='none';
    }
  }

}

function header_jogsim()
{
	var LatLngObj0 = map.getCenter();
   	var init0_zoom = map.getZoom();
	if (document.getElementById("1k").checked){flag_1k="1";}else{flag_1k="0";}
	if (document.getElementById("5k").checked){flag_5k="1";}else{flag_5k="0";}

	xyinit="Jogsim"+"," + vernum + ","+String(LatLngObj0.x) +","+String(LatLngObj0.y)+","+String(init0_zoom)+","+flag_1k+","+flag_5k+"\n";
}

function header_kml()
{
	kml_header1 ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://earth.google.com/kml/2.1\"><Document><name>Jogging simulator</name><open>1</open><Style id=\"linestylered\"><LineStyle><color>7f0000ff</color><width>4</width></LineStyle></Style><Placemark>\n<name>";
	kml_header2 ="</name>\n<styleUrl>#linestylered</styleUrl><LineString><extrude>1</extrude><tessellate>1</tessellate>\n<dist_elev>\n";
	kml_header3 ="</dist_elev>\n<visited_place>\n";
	kml_header4 ="</visited_place>\n<coordinates>\n";

	kml_footer1 = "</coordinates>\n<jogsiminfo>\n";
	kml_footer2 = "\n</jogsiminfo>\n</LineString></Placemark></Document></kml>";
  //
  	to_day();
	kml_date =runday;
	version_kml = "1.4";
	LatLngObj0 = map.getCenter();
	init0_zoom = map.getZoom();
	if (document.getElementById("1k").checked){flag_1k="1";}else{flag_1k="0";}
	if (document.getElementById("5k").checked){flag_5k="1";}else{flag_5k="0";}
	if (document.getElementById("pg").checked){flag_pg="1";}else{flag_pg="0";}
	if (document.getElementById("elevop").checked){flag_ev="1";}else{flag_ev="0";}
	if (document.getElementById("citytown").checked){flag_citytown="1";}else{flag_citytown="0";}
	flag_1m="0";//Japanese Version
	flag_5m="0";//Japanese Version

	kml_jogsiminfo=String(init0_zoom)+","+String(LatLngObj0.x) +","+String(LatLngObj0.y)+","+flag_1k+","+flag_5k+","+flag_1m+","+flag_5m+","+version_kml+","+flag_pg+","+flag_ev+","+flag_citytown;

	kml_top= kml_header1+kml_date+kml_header2+ev0+kml_header3+ct0+kml_header4;
	kml_bottom = kml_footer1+kml_jogsiminfo+kml_footer2;
}

function undoMapXY()
{
	var poly2= null;
	var point2 = new Array();
	var elev000="";
	var elev001="";
	var elev002="";

	lines = xy0.split("\n");
	lines_ev = ev0.split("\n");
	lines_ct = ct0.split("\n");

	if (lines.length > 2){
		map.clearOverlays();
		poly = null;
		var points2 = new Array();
		xy0 = "";
		ev0 = "";
		ct0 = "";
		dist = 0;
		p = 0;

		lines.length = lines.length - 2 ;
		for (var i=0; i<lines.length; i++) {// Undo
			if (lines[i].length > 1) {
				parts = lines[i].split(",");
				parts_ev = lines_ev[i].split(",");
				var lat = parseFloat(parts[0]);
				var lng = parseFloat(parts[1]);
				var distsum = parseFloat(parts_ev[0]);
				var elev0 = parseFloat(parts_ev[1]);

				elev002 = elev001;
				elev001 = elev000;
				elev000 = elev0;

				points2.push(new GLatLng(lng,lat) );
				xy0 += String(lat)+","+String(lng) +"\n";
				ev0 += String(distsum) + "," + String(elev0) + "\n";
			}
		}

		if (document.getElementById("citytown").checked){
			lines_ct.length = lines_ct.length - 2 ;
			for (var i=0; i<lines_ct.length; i++) {// Undo
				if (lines_ct[i].length > 1) {
					ct0 += lines_ct[i] +"\n";
				}
			}
		}

		k_count = 1;

	      	if (document.getElementById("elevop").checked){
			document.getElementById("elev").value =  addZero2(String(elev000));
			document.getElementById("elev_a").value =  addZero2(String(elev002));
			document.getElementById("elev_b").value =  addZero2(String(elev001));
			show_elev_image(distsum,elev000,elev001);
		}

		if (document.getElementById("pg").checked){
			poly = new GPolygon(points2, color, 3, 0.6,color,0.1);//Polygon mode
			var xys = new Array;
			for( var i = 0; i < points2.length; i++){
				xys.push( getXY( points2[0], points2[i] ) )
			}
			document.getElementById("pgarea").value =  addZero3(String(getSquareKilo( xys )));
		}else{
			poly = new GPolyline(points2, color, 3, 0.6); //Normal mode
 			document.getElementById("pgarea").value =  "--- ";
		}
		map.addOverlay(poly);
		eol = poly.Distance();//------------------------
	       GEvent.addListener(poly,"click",function(point){if (point) GEvent.trigger(map,"click",null,point)});

		points = points2;
		zan1=0;distx1=0;mae_total1=0;
		while( p != (points.length -1)) {
			distx1 = Gdistance(points[p], points[p+1]);
			dist += Gdistance(points[p], points[++p]);

			if ((document.getElementById("1k").checked)||(document.getElementById("5k").checked)){

				if ((mae_total1+distx1) < 1000){
					mae_total1 = mae_total1 + distx1;
					zan1 = 1000 - mae_total1;
					}
				else{
					zan1 = actFlag(distx1,points[p-1],points[p],zan1);
					mae_total1 = 1000 - zan1;
				}
			}
		}
		document.getElementById("distance").value = addZero3(String(dist/1000));
	}
}

function actFlag_image(dist00,from_points,to_points,zan0) 
{
	var xxx=from_points.x;
	var yyy=from_points.y;
	var marker_flag = 0;

	if (zan0 > 0){mae= 1000-zan0;}else{mae = 0;}
	var num = parseInt((dist00+mae)/1000);

	if(marker_count >=20){marker_flag = 1;}


	while(( num > 0 ) ){
		if (zan0 == 0){
			var x=parseFloat(xxx)+(parseFloat(to_points.x)-parseFloat(xxx))/dist00*1000;
			var y=parseFloat(yyy)+(parseFloat(to_points.y)-parseFloat(yyy))/dist00*1000;
			dist00 = dist00 - 1000;
                 	}
		else{
			var x=parseFloat(xxx)+(parseFloat(to_points.x)-parseFloat(xxx))*zan0/dist00;
			var y=parseFloat(yyy)+(parseFloat(to_points.y)-parseFloat(yyy))*zan0/dist00;
			dist00 = dist00 - zan0;
			zan0 = 0;
		}

	x=parseInt(x*keta)/keta;  //1000...60mくらい誤差
	y=parseInt(y*keta)/keta;

		if ((k_count % 5) == 0){
			if(document.getElementById("5k").checked){
				map_marker_mark = map_marker_mark + y + "," + x + ",smallblue|";
			}else{
			if(marker_flag == 0){
				map_marker_mark = map_marker_mark + y + "," + x + ",smallred|";
 	    			}
			}
		}else{
        	if((document.getElementById("1k").checked)&&(marker_flag == 0)){
			map_marker_mark = map_marker_mark + y + "," + x + ",smallred|";
            		}
		}

        	if((document.getElementById("1k").checked)&&(marker_flag == 1)){
			if ((k_count % 5) == 0){
				map_marker_mark = map_marker_mark + y + "," + x + ",smallblue|";
				}
			}

	k_count ++ ;
	xxx=x;
	yyy=y;

	num -- ;
	}
	return (1000-dist00);
}

function actFlag(dist00,from_points,to_points,zan0) 
{
	var xxx=from_points.x;
	var yyy=from_points.y;

	if (zan0 > 0){mae= 1000-zan0;}else{mae = 0;}
	var num = parseInt((dist00+mae)/1000);

	while( num > 0 ) {
		if (zan0 == 0){
			xxx=parseFloat(xxx)+(parseFloat(to_points.x)-parseFloat(xxx))/dist00*1000;
			yyy=parseFloat(yyy)+(parseFloat(to_points.y)-parseFloat(yyy))/dist00*1000;
			dist00 = dist00 - 1000;
                 	}
		else{
			xxx=parseFloat(xxx)+(parseFloat(to_points.x)-parseFloat(xxx))*zan0/dist00;
			yyy=parseFloat(yyy)+(parseFloat(to_points.y)-parseFloat(yyy))*zan0/dist00;
			dist00 = dist00 - zan0;
			zan0 = 0;
		}

		var point99 = new GLatLng(yyy,xxx);

		if ((k_count % 5) == 0){
			if(document.getElementById("5k").checked){
				map.addOverlay(new GMarker(point99,icon2));//blue
				}else{
            			map.addOverlay(new GMarker(point99,icon1));//red
 	    			}
			}else{
        		if(document.getElementById("1k").checked){
	    			map.addOverlay(new GMarker(point99,icon1));//red
            		}
		}

	k_count ++ ;
	num -- ;
	}

	return (1000-dist00);
}

function calc_check_jogsim()
{
	check = true;
	m = document.getElementById("weight").value;  //m...weight(kg)
	d = document.getElementById("distance").value; //d...Km
	d =d * parseFloat(document.getElementById("kai").value);

        str=m; 
        if (str.match(/[^0-9\.]/g)){
            alert ("体重に数値以外が含まれています\n（数値は半角で入力してください）");
            check=false;
        }
        str=document.getElementById("kai").value; 
        if (str.match(/[^0-9]/g)){
            alert ("周回回数に数値以外が含まれています\n（数値は半角で入力してください）");
            check=false;
        }
        str=document.getElementById("hour").value; 
        if (str.match(/[^0-9]/g)){
            alert ("ランニング時間「時間」に数値以外が含まれています\n（数値は半角で入力してください）");
            check=false;
        }
        str=document.getElementById("min").value; 
        if (str.match(/[^0-9]/g)){
            alert ("ランニング時間「分」に数値以外が含まれています\n（数値は半角で入力してください）");
            check=false;
        }
        str=document.getElementById("sec").value; 
        if (str.match(/[^0-9\.]/g)){
            alert ("ランニング時間「秒」に数値以外が含まれています\n（数値は半角で入力してください）");
            check=false;
        }

	sq=document.getElementById("pgarea").value;
	sq =sq * parseFloat(document.getElementById("kai").value);

	if (document.getElementById("hour").value  == ""){document.getElementById("hour").value=0;}
	if (document.getElementById("min").value  == ""){document.getElementById("min").value=0;}
	if (document.getElementById("sec").value  == ""){document.getElementById("sec").value=0;}
	z = parseFloat(document.getElementById("hour").value*60) + parseFloat(document.getElementById("min").value) + parseFloat(document.getElementById("sec").value)/60 ; //z..time(min)

	if (d == "") { d = 0; } 
	if (m == "") { m = 0; } 
	if (z == "") { z = 0; } 

	if(d<0){
		alert("走行距離が０ｋｍ以上じゃないと計算できません。");
        	check=false;
	}
	if(m<0){
		alert("体重は０ｋｇ以上を入力しましょう。");
        	check=false;
	}
	if(z<0){
		alert("走行時間はゼロ以上を入れてください。");
        	check=false;
	}


	if (check==true) { calc(); }

}

function calc_town(){
	calc_check_jogsim();
	if (document.getElementById("citytown").checked){
		citytown_calc();
	        document.getElementById("towninfo").innerHTML ="";
	}else{
		document.f.prefcount.value ="--- ";
		document.f.citycount.value ="--- ";
		document.f.towncount.value ="--- ";
	        document.getElementById("towninfo").innerHTML ="<span class=\"head\">通過地区データがありません。<br />今どこ？の前のチェックマークをチェックすると計算されます</span><br>";
	}

}
function calc()
{
	y=0 ;
	ave_angle=0;

	if (z != 0){
	y=d/z*60;          //y...v(km/h)
	}

	y0=y+y*parseFloat(ave_angle)*9/200;	//y0...角度を考慮した時速(平均斜度を勘案。下り時も計算）

	if (document.getElementById("byc").checked){
		if (y0 <= 11){mets = 3;}
		else if (y0 < 14.5){mets = 4;}
		else if (y0 < 17.5){mets = 5;}
		else if (y0 < 19.5){mets = 6;}
		else if (y0 < 22.5){mets = 7;}
		else if (y0 < 25.5){mets = 8;}
		else if (y0 < 28.5){mets = 9;}
		else{mets = 10;}
		cal=mets*m*z/60 ;
	}
	else{
		cal=(y0*1000/60+17.5)*z*m/1000 ;
		if ((m != 0)&&(z != 0)){mets=cal/m/z*60;}else{mets=0;}
	}

	fat=cal/7/2;
	kj=4.184*cal;
	kw=kj/3600;
	stb=60*kw;
	dnk=kw*10;
	rice=cal/252;
	beer=cal/203;
	shop=cal/2.5;
	clean=cal/3.8;

	if(y == 0){
		s100=0;
		m1k=0;
		s1k=0;
		m10k=0;
		s10k=0;
		m21k=0;
		m42k=0;
	}else{
		s100=360/y;  		//100m for sec
		m1k=Math.floor(s100*10/60);
		s1k=((s100*10)-m1k*60);    //1K for min
		m10k=Math.floor(600/y);
		s10k=((600/y)-m10k)*60; //10K for min
		m21k=21.095*60/y;	//Half for min
		m42k=42.195*60/y;	//Full for min
	}

	m42k_sec=42.195*60*60/y;
	arakawaload();
	nycload();
	nycload2009();

	m21kh=Math.floor(m21k/60);
	m21km=Math.floor(m21k-m21kh*60);
	m21ks=((m21k-m21kh*60)-m21km)*60;

	m42kh=Math.floor(m42k/60);
	m42km=Math.floor(m42k-m42kh*60);
	m42ks=((m42k-m42kh*60)-m42km)*60;

	co2=d*165;//(g)
	co2_l=co2/1000*255;

	taxi1=0;
	if (d<=2){taxi1=710;}
		else{taxi1=710+Math.floor((d-2)/0.288)*90;}
	taxi2=Math.floor(taxi1*1.2/10+0.5)*10;

	if (document.getElementById("pg").checked){
		document.f.sq.value=Math.round(parseFloat(sq)*10)/10;
		document.f.sq1.value=Math.round(parseFloat(sq)*1000/670.33)/1000;
		document.f.sq2.value=Math.round(parseFloat(sq)*100/1.42)/100;
	}else{
		document.f.sq.value="--- ";
		document.f.sq1.value="--- ";
		document.f.sq2.value="--- ";
	}

	document.f.d.value=Math.round(d*10)/10;
	document.f.d1.value=Math.round(d*100/8.84)/100;
	document.f.d2.value=Math.round(d*10/0.34)/10;

	document.f.y.value=Math.round(y*10)/10;
	document.f.cal.value=Math.round(cal*10)/10;
	document.f.fat.value=Math.round(fat*10)/10;
	document.f.mets.value=Math.round(mets*10)/10;
	document.f.kw.value=Math.round(kw*10)/10;
	document.f.stb.value=Math.round(stb*10)/10;
	document.f.dnk.value=Math.round(dnk*10)/10;
	document.f.rice.value=Math.round(rice*10)/10;
	document.f.beer.value=Math.round(beer*10)/10;
	document.f.shop.value=Math.round(shop*10)/10;
	document.f.clean.value=Math.round(clean*10)/10;

	document.f.co2.value=Math.round(co2*10)/10;
	document.f.co2_l.value=Math.round(co2_l*10)/10;
	document.f.taxi1.value=Math.round(taxi1*10)/10;
	document.f.taxi2.value=Math.round(taxi2*10)/10;

	document.f.s100.value=Math.round(s100*10)/10;
	document.f.m1k.value=m1k;
	document.f.s1k.value=Math.round(s1k*10)/10;
	document.f.m10k.value=m10k;
	document.f.s10k.value=Math.round(s10k*10)/10;
	document.f.m21kh.value=m21kh;
	document.f.m21km.value=m21km;
	document.f.m21ks.value=Math.round(m21ks*10)/10;
	document.f.m42kh.value=m42kh;
	document.f.m42km.value=m42km;
	document.f.m42ks.value=Math.round(m42ks*10)/10;

	document.f.ara2006x.value=rank;
	document.f.ara2006n.value=lastrunner;
	document.f.nyc2006x.value=rank_nyc;
	document.f.nyc2006n.value=lastrunner_nyc;
	document.f.nyc2009x.value=rank_nyc2009;
	document.f.nyc2009n.value=lastrunner_nyc2009;
	

	if((m>0)&&(document.getElementById("byc").checked==false)){
		document.f.chari_min.value=Math.round(60*cal/4/m);// mets=4 16.1km/h
		document.f.chari_dist.value=Math.round(document.f.chari_min.value*16.1/60*10)/10;
		}else{
		document.f.chari_min.value="--- ";
		document.f.chari_dist.value="--- ";
		}


	if (document.getElementById("weightsave").checked){
		init_weight = document.getElementById("weight").value;
		setCookie("init_weight", init_weight);
		}

	speed = y;
	speed_show();
	fat_show();

	var twitter_hour,twitter_cal,twitter_tail,twitter_credit;
	var tailarray = new Array("です。", "だす。", "なのだ。", "で候。", "ってことで。");
	var randnum = Math.floor( Math.random() * tailarray.length ); 

	if (document.getElementById("hour").value==0){
		twitter_hour = "";
		}else{
		twitter_hour = document.getElementById("hour").value+"時間";
		}

	if (document.f.cal.value==0){
		twitter_cal = "おつかれｗ";
		}else{
		twitter_cal = document.f.cal.value+"カロリー消費。それってご飯"+document.f.rice.value+"分。中ナマ"+document.f.beer.value+"杯分ｗ";
		}

	twitter_tail=tailarray[randnum];
//	twitter_credit=" #jogsim http://42.195km.net/";

	twitter_com="今日もランコース開拓！"+document.f.d.value+"kmを"+twitter_hour+document.getElementById("min").value+"分で！"+twitter_cal+twitter_tail;


//speaker check//
	if(document.getElementById("speak").checked){readOut();}

}

function fat_show()
{
  if (init_fit =="1"){fit_max=200;}else{fit_max=100;}
  var chart = new EJSC.Chart(
    "fatChart" ,
    {
      show_titlebar: false ,
      axis_bottom: { visible: false },
      axis_left: { visible: false },
      show_legend: false,
      show_messages: false
    }
  );
  
  chart.addSeries(
    new EJSC.AnalogGaugeSeries(
      new EJSC.ArrayDataHandler(
        [ [fat,''] ]
      ) ,
      {
        axis: {
          color          : 'rgb(180,190,255)' ,
          innerBorderColor    : 'rgb(0,0,0)' ,
          innerBorderOpacity    : 0 ,
          innerBorderWidth    : 1 ,
          innerBorderVisible    : false ,
          opacity          : 100 ,
          outerBorderColor    : 'rgb(0,0,150)' ,
          outerBorderOpacity    : 100 ,
          outerBorderWidth    : 2 ,
          outerBorderVisible    : true ,
          thickness        : 10
        },
	min:0,
	max:fit_max,
        tickCount: 5 ,
        label: {
          className        : 'blueLabel' ,
          textAlign        : 'center' ,
          position        : 'centerLeft' ,
          lines          : 1
        }
      }
    )
  );

}
function speed_show()
{
  var chart = new EJSC.Chart(
    "speedChart" ,
    {
      show_titlebar: false ,
      axis_bottom: { visible: false },
      axis_left: { visible: false },
      show_legend: false,
      show_messages: false
    }
  );
  
  chart.addSeries(
    new EJSC.AnalogGaugeSeries(
      new EJSC.ArrayDataHandler(
        [ [speed,''] ]
      ) ,
      {
            range: {
        borderColor : 'rgb(0,0,0)',
        borderOpacity : 50,
        borderWidth : 1,
        offset : 0,
        opacity : 50,
        style : 'pie',
        thickness: 1
      } ,      
      ranges: [ 
        [ 16 , 18 , 'rgb(255,255,0)' ] ,
        [ 18 , 20 , 'rgb(255,0,0)' ] 
      ],
        axis: {
          color          : 'rgb(180,190,255)' ,
          innerBorderColor    : 'rgb(0,0,0)' ,
          innerBorderOpacity    : 0 ,
          innerBorderWidth    : 1 ,
          innerBorderVisible    : false ,
          opacity          : 100 ,
          outerBorderColor    : 'rgb(0,0,150)' ,
          outerBorderOpacity    : 100 ,
          outerBorderWidth    : 2 ,
          outerBorderVisible    : true ,
          thickness        : 5
        },
	min:0,
	max:20,
        tickCount: 5 ,
        label: {
          className        : 'blueLabel' ,
          textAlign        : 'center' ,
          position        : 'centerLeft' ,
          lines          : 1
        }
      }
    )
  );

}

function elev_calc()
{
	var sum_r=0;
	var max_y = -1000;
	var min_y =  1000;
	var x1= new Array();
	var y1= new Array();
	var angle1 = 0;

	max_angle = 0;
	min_angle = 0;
	sum_up = 0;

	linecut = ev0.split("\n");
	datacount = linecut.length;

   	for (var i=0; i<datacount-1; i++) {
         	parts = linecut[i].split(",");
		x1[i] = parseFloat(parts[0]);
          	y1[i] = parseFloat(parts[1]);
		if (i != 0){
			angle1 = (y1[i]-y1[i-1])*100/x1[i];
			if (angle1 > 0){sum_up += y1[i]-y1[i-1];}
		}else{
			angle1 = 0;
		}
		sum_r += x1[i];
		if (y1[i] > max_y){ max_y = y1[i];}
		if (y1[i] < min_y){ min_y = y1[i];}
		if (angle1 > max_angle){ max_angle = angle1;}
		if (angle1 < min_angle){ min_angle = angle1;}
		

      	}

	max_elev = max_y - min_y;
	if (sum_r == 0){ave_angle = 0;max_elev=0;}
	else{ave_angle = parseFloat( (y1[(datacount-2)]-y1[0]) /sum_r)*100;}
}

function setCoo()
{
	LatLngObj = map.getCenter();
	init_zoom = map.getZoom();
	init_maptype = map.getCurrentMapType();
	if (document.getElementById("center").checked){init_center=1;}else{init_center=0;}
	if(window.confirm('ここを座標１のデータとして保存します。\nよろしいですか？')){
	setCookie("init_x", LatLngObj.x);
	setCookie("init_y", LatLngObj.y);
	setCookie("init_zoom", init_zoom);
	setCookie("init_center", init_center);
	window.alert("座標１に保存しました\n（この座標は本サイトを開いた時の中心になります）"); 
	}

}
function setCoo2()
{
	LatLngObj = map.getCenter();
	init_zoom = map.getZoom();
	init_maptype = map.getCurrentMapType();
	if (document.getElementById("center").checked){init_center=1;}else{init_center=0;}
	if(window.confirm('ここを座標２のデータとして保存します。\nよろしいですか？')){
	setCookie("init_x2", LatLngObj.x);
	setCookie("init_y2", LatLngObj.y);
	setCookie("init_zoom2", init_zoom);
	setCookie("init_center", init_center);
	window.alert("座標２に保存しました"); 
	}
}
function goto_a()
{
	init_a_load();
	map.setCenter(new GLatLng(init_y, init_x), parseInt(init_zoom));
}
function goto_b()
{
	init_b_load();
	map.setCenter(new GLatLng(init_y, init_x), parseInt(init_zoom));
}
function init_load()
{
	init_weight = getCookie("init_weight");
	if ((init_weight == 0)||(init_weight == "")){document.getElementById("weight").value="";}
		else{document.getElementById("weight").value=init_weight;
		document.getElementById("weightsave").checked=1;
		}
	init_center = getCookie("init_center");
	if (init_center == 1){document.getElementById("center").checked=1;}
		else{document.getElementById("center").checked=0;}
	init_height = getCookie("init_height");
	if (init_height == 1){
		document.getElementById("elevop").checked=1;
		document.getElementById("heightsave").checked=1;
		}else{
		document.getElementById("elevop").checked=0;
		document.getElementById("heightsave").checked=0;
		}
	init_city = getCookie("init_city");
	if (init_city == 1){
		document.getElementById("citytown").checked=1;
		document.getElementById("citysave").checked=1;
		}else{
		document.getElementById("citytown").checked=0;
		document.getElementById("citysave").checked=0;
		}
	init_fit = getCookie("init_fit");
	if (init_fit == 1){
		document.getElementById("fitsave").checked=1;
		}else{
		document.getElementById("fitsave").checked=0;
		}
	init_speak = getCookie("init_speak");
	if (init_speak == "0"){
		document.getElementById("speak").checked=0;
		}else{
		document.getElementById("speak").checked=1;
		}
	init_speakmansave = getCookie("init_speakmansave");
	if (init_speakmansave == 0){
		document.getElementById("speakmansave").checked=0;
		}else{
		document.getElementById("speakmansave").checked=1;
		}

//window.alert(init_speak);
}
function init_a_load()
{
	init_x = getCookie("init_x");
	if (init_x == "") {init_x= 139.74536418914795;}
	init_y = getCookie("init_y");
	if (init_y == "") {init_y= 35.65844693328663;}
	init_zoom = getCookie("init_zoom");
	if (init_zoom == "") {init_zoom= 15;}
	init_center = getCookie("init_center");
}
function init_b_load()
{
	init_x = getCookie("init_x2");
	if (init_x == "") {init_x= 139.74536418914795;}
	init_y = getCookie("init_y2");
	if (init_y == "") {init_y= 35.65844693328663;}
	init_zoom = getCookie("init_zoom2");
	if (init_zoom == "") {init_zoom= 15;}
	init_center = getCookie("init_center");

}
function Gdistance( from , to ) 
{
	var from_x = from.x * Math.PI / 180;
	var from_y = from.y * Math.PI / 180;
	var to_x   = to.x * Math.PI / 180;
	var to_y   = to.y * Math.PI / 180;
	var deg = Math.sin(from_y) * Math.sin(to_y) + Math.cos(from_y) * Math.cos(to_y) * Math.cos(to_x-from_x);
	var dist0 = 6378140 * (Math.atan( -deg / Math.sqrt(-deg * deg + 1)) + Math.PI / 2);

	document.getElementById("elevop").disabled = true;
	return Math.round(dist0);
}

function arakawaload()
{ //2006 Arakawa shimin marathon DATA

	arakawax = new Array(1,3,20,68,174,386,726,1098,1693,2429,3156,3871,4648,5364,6015,6790,7371,7861,8336,8805,9232,9626,9982,10276,10518,10735,10907,11084);
	arakaway = new Array(9368,9615,10208,10812,11415,12001,12600,13201,13800,14401,15003,15600,16200,16800,17400,18000,18600,19200,19800,20400,21000,21600,22206,22800,23408,24008,24601,25204);
	arakawadata=28;

	lastrunner=arakawax[(arakawadata-1)];
	flag_a = 0;

	for (i=0;i<arakawadata;i++){
		if (i != 0){dummy= arakaway[i-1];}
		if (m42k_sec < arakaway[i]){
			rank1 = arakawax[i];
			arakaway = arakaway[i];
			if ((i-1) < 0){
				rank0=0;
				arakaway0 = 0;
				}else{
				rank0     = arakawax[i-1];
				arakaway0=dummy;
			}
			flag_a = 1;
			i=arakawadata+2;
		}
	}

	if (flag_a == 1){
		rank = rank0 + parseFloat( (rank1 - rank0 )*(m42k_sec - arakaway0) / (arakaway - arakaway0 ) );
		rank = Math.ceil(rank);
		}else{
		rank = lastrunner;
	}

}
function nycload()
{ //2006 NYC marathon DATA
	nycx = new Array(1,12,19,31,57,129,218,372,557,890,1150,1351,2022,2602,3257,4201,5169,6211,7353,8732,10276,12169,13584,15142,16652,18209,19806,21454,22909,24390,25789,27173,28423,29591,31210,32608,33839,34750,35480,36023,36736,36678,36953,37148,37347,37486,37613,37717,37792,37825,37846,37854,37859,37866);
	nycy = new Array(7798,8094,8393,8699,9001,9600,9895,10198,10498,10800,11099,11400,11700,12000,12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,18600,19200,19800,20400,21000,21601,22201,22800,23399,24000,24599,25201,26100,27015,27915,28818,29790,30832,32400,35998);
	nycdata=54;

	lastrunner_nyc=nycx[(nycdata-1)];
	flag_a = 0;

	for (i=0;i<nycdata;i++){
		if (i != 0){dummy= nycy[i-1];}
		if (m42k_sec < nycy[i]){
			rank1 = nycx[i];
			nycy = nycy[i];
			if ((i-1) < 0){
				rank0=0;
				nycy0 = 0;
				}else{
				rank0     = nycx[i-1];
				nycy0=dummy;
				}
			flag_a = 1;
			i=nycdata+2;
		}
	}

	if (flag_a == 1){
		rank_nyc = rank0 + parseFloat( (rank1 - rank0 )*(m42k_sec - nycy0) / (nycy - nycy0 ) );
		rank_nyc = Math.ceil(rank_nyc);
		}else{
		rank_nyc = lastrunner_nyc;
		}

}
function nycload2009()
{
//2009 NYC marathon DATA
	nycx = new Array(1,2,3,11,21,33,62,98,152,228,379,615,1012,1379,1860,2429,3222,4123,5265,6523,8017,9316,10127,11722,13724,15324,17232,19315,20220,22212,25012,27504,29611,31415,33213,34703,36807,38419,39613,40818,41620,42712,43019,43207,43411,43511,43555,43570,43586);
	nycy = new Array(7755,7796,7825,8110,8443,8705,9014,9302,9600,9905,10202,10500,10800,11100,11400,11700,12005,12318,12600,12914,13240,13505,13661,13927,14208,14415,14769,15124,15276,15611,16064,16506,16914,17291,17674,18025,18767,19482,20155,21045,21860,23841,24645,25261,26438,27726,28931,29526,32359);
	nycdata=49;

	lastrunner_nyc2009=nycx[(nycdata-1)];
	flag_a = 0;

	for (i=0;i<nycdata;i++){
		if (i != 0){dummy= nycy[i-1];}
		if (m42k_sec < nycy[i]){
			rank1 = nycx[i];
			nycy = nycy[i];
			if ((i-1) < 0){
				rank0=0;
				nycy0 = 0;
				}else{
				rank0     = nycx[i-1];
				nycy0=dummy;
				}
			flag_a = 1;
			i=nycdata+2;
		}
	}

	if (flag_a == 1){
		rank_nyc2009 = rank0 + parseFloat( (rank1 - rank0 )*(m42k_sec - nycy0) / (nycy - nycy0 ) );
		rank_nyc2009 = Math.ceil(rank_nyc2009);
		}else{
		rank_nyc2009 = lastrunner_nyc2009;
		}

}

function clearPoints() 
{
	if(window.confirm('測定データをすべてクリアします。\nよろしいですか？')){ 
		points = new Array();
		map.clearOverlays();
		document.getElementById("distance").value = "";
		document.getElementById("out").value = "";
		document.getElementById("in").value = "";
		document.getElementById("elev").value = "";
		document.getElementById("elev_a").value = "";
		document.getElementById("elev_b").value = "";
		document.getElementById("pgarea").value ="";
		document.getElementById("elev_img").src ="./gif/elev00.gif";
		document.getElementById("out_pref").value ="";
		document.getElementById("out_city").value ="";
		document.getElementById("out_town").value ="";
	        document.getElementById("town").innerHTML ="------------------";
		document.getElementById("rival_m").value ="";
		document.getElementById("rival_s").value ="";
		document.getElementById('oririval').style.display='none';
		document.getElementById('oriworld').style.display='none';

		elev_a = "";
		elev_b = "";
		xy0="";
		ev0="";
		ct0="";
		poly = null;
		dist = 0 ;
		zan = 0 ;
		k_count = 1;
		xyelev = 0;
		document.getElementById('ori').style.display='none';
		document.getElementById('ori2').style.display='none';
		document.getElementById("elevop").disabled = false;
		document.getElementById("ani_status").src="./gif/ani_go.gif";
		document.getElementById("fast").disabled=false;
		document.getElementById("slow").disabled=false;

		if (marker_r){map.removeOverlay(marker_r);}
		if (marker_l){map.removeOverlay(marker_l);}
		moving_check=0;
		paused=0;
		cancelrival();

  		map.setMapType(G_NORMAL_MAP);

	}
}

function closeDataWin()
{
	document.getElementById('ori').style.display='none';
	document.getElementById('ori2').style.display='none';
	document.getElementById('oriinit').style.display='none';
}

function getCookie(key,  tmp1, tmp2, xx1, xx2, xx3) 
{
	tmp1 = " " + document.cookie + ";";
	xx1 = xx2 = 0;
	len = tmp1.length;
	while (xx1 < len) {
        	xx2 = tmp1.indexOf(";", xx1);
        	tmp2 = tmp1.substring(xx1 + 1, xx2);
        	xx3 = tmp2.indexOf("=");
        	if (tmp2.substring(0, xx3) == key) {
            		return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        	}
        	xx1 = xx2 + 1;
	}
	return("");
}

function setCookie(key, val, tmp) 
{
	tmp = key + "=" + escape(val) + "; ";
	tmp += "expires=Tue, 31-Dec-2030 23:59:59; ";
	document.cookie = tmp;
}

function clearCookie(key) {
	document.cookie = key + "=" + "xx; expires=Tue, 1-Jan-1980 00:00:00;";
}
function to_day()
{
	dd1 = new Date();
    	year1 = dd1.getYear();
    	if (year1 < 2000) year1 += 1900;
    	mon1 = dd1.getMonth() + 1;
    	date1 = dd1.getDate();
    	runday=year1+"/"+mon1+"/"+date1;
}

function getXY( a, b )
{
	var pi = Math.PI
	var A = 6378137
	var coo = new Object
	coo.phi = ( b.x - a.x ) / 180 * pi
	coo.lambda = ( b.y - a.y ) / 180 * pi

	coo.y = A * coo.phi
	coo.x = A * coo.lambda * Math.cos( a.y / 180 * pi )

	return coo
}

function getSquareKilo( coo )
{
	var max = coo.length - 1
	var s = 0
	for( var i = 0; i <= max; i++)
		{
			var max = coo.length - 1
			var im = ( i == 0 )
				? max
				: i - 1
			var ip = ( i == max )
				? 0
				: i + 1
			
			s += ( coo[im].x - coo[ip].x ) * coo[i].y
		}
	s = Math.abs( s / 2 ) /1000000;
	s= (Math.round(s*1000))/1000;	
	return s
}
function ll2h_callback(jsonData) 
{
	jsonObj_.removeScriptTag();
	elevx = 0;

	elev_a = document.getElementById("elev_b").value; //elev_b;
	elev_b = document.getElementById("elev").value;



	if(jsonData.error==1){
		alert("対象範囲外です（日本国内の標高しか算出できません）");
        	document.getElementById("elev").value =  0;

	}else{
		elevx = jsonData.height;
		xyelev += String(distxx) + "," + String(elevx) + "/";


        	document.getElementById("elev").value =  addZero2(String(jsonData.height));
        	document.getElementById("elev_a").value =  addZero2(String(elev_a));
        	document.getElementById("elev_b").value =  addZero2(String(elev_b));

		show_elev_image(distxx,elevx,elev_b);

	}
	xy0 += xandy +"\n";
	ev0 += String(distxx)+","+String(elevx)+"\n";

	unsetLoading();

}

function openElev() 
{
	linecut = ev0.split("\n");
	datacount = linecut.length;

if ((document.getElementById("elevop").checked == 1)&&(datacount > 2)){
	mabiki();
	}else{
	alert( "高低差オプションがチェックされていません。\nもしくはデータがありません。" );
	}
}

function mabiki()
{

	var mabikimax = 25 ;
	var x= new Array();
	var y= new Array();
	var xx= new Array();
	var yy= new Array();
	var max_y = 0 ;
	var min_y = 1000000 ;
	var max_x = 0 ;
	var min_x = 0 ;
	var sum_x = 0 ;

	var dummyword="";

	linecut = ev0.split("\n");

	datacount = linecut.length;

   	for (var i=0; i<datacount; i++) {
         	parts = linecut[i].split(",");
          	if (i == 0 ){
			x[i] = parseFloat(parts[0]);
			}else{
			x[i] = parseFloat(parts[0])+parseFloat(x[i-1]);
			}
          	y[i] = parseFloat(parts[1]);
		
		if (y[i] > max_y){ max_y = y[i]; max_x=i;}
		if (y[i] < min_y){ min_y = y[i]; min_x=i;}
      	}

	if (datacount < mabikimax){ mabikimax = datacount ;}

	yy[0] = y[0];
	xx[0] = x[0];
   	for (i=1; i<datacount; i++) {
		if((i==1)&&(mabikimax==datacount)){
			yy[1] = y[0];
			xx[1] = x[0];
		}
		new_i = Math.floor( (mabikimax/datacount)*(i+1) ) ;
		yy[ new_i ] = y[i];
		xx[ new_i ] = x[i];
      	}

//max,minの強制入力（ただし最初と最後は除く）
	min_i = Math.floor( (mabikimax/datacount)*(min_x+1) ) ;
	yy[ min_i ] = min_y;
	xx[ min_i ] = x[min_x];

	max_i = Math.floor( (mabikimax/datacount)*(max_x+1) ) ;
	yy[ max_i ] = max_y;
	xx[ max_i ] = x[max_x];

	new2= new_i+1;
	
	yy[new2] = y[(datacount-1)];
	xx[new2] = x[(datacount-1)];

   	for (i=0; i<new_i; i++) {
		dummyword += xx[ i ] +","+yy[ i ]+"/";
      	}

var url="./elevimage2.php?data=" + dummyword ;

phpurl="<img src=" + url +">";

var w1;
w1=window.open("","hoge2","titlebar=no,status=no,menubar=no,resizable=no,width=640,height=180,scrollbars=yes");
w1.document.open();
w1.document.write("<html><head><title>高低差イメージ<"+"/title>");
w1.document.write("<"+"/head>");
w1.document.write("<body>");
w1.document.write(phpurl);
w1.document.write("<"+"/body>");
w1.document.write("<"+"/html>");
w1.document.close();

}
function addZero2( x123 )
{
	n = x123;
	if (n.indexOf(".") == -1){n = n + ".00" ;}
	n = n.split(".")[0]+"."+(n.split(".")[1]+"00").substring(0,2);
	return n;
}
function addZero3( x123 )
{
	n = x123;
	if (n.indexOf(".") == -1){n = n + ".000" ;}
	n = n.split(".")[0]+"."+(n.split(".")[1]+"000").substring(0,3);
	return n;
}
function show_elev_image(dist000,elev000,elev001)
{
	if (dist000 != 0){angle = (elev000-elev001)*100/dist000;}
		else{angle = 0;}

	if (angle < -8){document.getElementById("elev_img").src ="./gif/elev4d.gif";}
	else if (angle < -4){document.getElementById("elev_img").src ="./gif/elev3d.gif";}
	else if (angle < -2){document.getElementById("elev_img").src ="./gif/elev2d.gif";}
	else if (angle < -1){document.getElementById("elev_img").src ="./gif/elev1d.gif";}
	else if (angle <  1){document.getElementById("elev_img").src ="./gif/elev00.gif";}
	else if (angle <  2){document.getElementById("elev_img").src ="./gif/elev1u.gif";}
	else if (angle <  4){document.getElementById("elev_img").src ="./gif/elev2u.gif";}
	else if (angle <  8){document.getElementById("elev_img").src ="./gif/elev3u.gif";}
	else {document.getElementById("elev_img").src ="./gif/elev4u.gif";}

}
function setLoading()
{
	flag_ = true;
	loading_.style.display = "block";
}
function unsetLoading(){
	loading_.style.display = "none";
	flag_ = false;
}
function setLoading_town(){
	flag_town = true;
	loading2_.style.display = "block";
}
function unsetLoading_town(){
	loading2_.style.display = "none";
	flag_town = false;
}
function citytown_calc(){
	var preflist="";
	var citylist="";
	var townlist="";

	lines_ct = ct0.split("\n");

	for (var i=0; i<lines_ct.length-1; i++) {
		if((lines_ct[i].match(/\S/g))){ //空白じゃなかったら
			parts_ct = lines_ct[i].split(",");

			if (preflist.indexOf(parts_ct[0]) == -1){preflist += parts_ct[0]+"\n";}
			if ((citylist.indexOf(parts_ct[1]) == -1)&&(parts_ct[1] != "")){citylist += parts_ct[1]+"\n";}
			var serch = parts_ct[1]+parts_ct[2];
			if (townlist.indexOf(serch) == -1){townlist += serch+"\n";}
		}

         }

	prefcount = preflist.split("\n");
	citycount = citylist.split("\n");
	towncount = townlist.split("\n");

	document.f.prefcount.value =prefcount.length-1;
	document.f.citycount.value =citycount.length-1;
	document.f.towncount.value =towncount.length-1;

	document.getElementById("out_pref").value =preflist;
	document.getElementById("out_city").value =citylist;
	document.getElementById("out_town").value =townlist;

}

function transit(){

	lines = xy0.split("\n");

	if (lines.length > 2){
		parts=lines[0].split(",");
		var lat0 = parseFloat(parts[0]);
		var lng0 = parseFloat(parts[1]);
		parts=lines[lines.length-2].split(",");
		var lat1 = parseFloat(parts[0]);
		var lng1 = parseFloat(parts[1]);

		var url="http://www.google.co.jp/transit?saddr=" + lng1 + "%2C" + lat1 + "&daddr=" + lng0 + "%2C" + lat0;
		window.open(url);

	}else{
		window.alert("データが足りません");
	}

}

function masa(count) {//上上下下左右左右BA
    switch (count) {
        case 0 : alert('\n\nIf you want to win something, run 100 meters.\nIf you want to experience something, run a marathon.\n\n- Emil Zatopek\n\n\nもし、誰かに勝ちたいだけなら、100ｍを走ればいい。でも何かを経験したいのならば、マラソンを走ること。\n\n－　エミール・ザトペック\n\n\n'); 
        case 1 : alert('\n\nIf you feel bad at 10 miles, you\'re in trouble.\nIf you feel bad at 20 miles, you\'re normal.\nIf you don\'t feel bad at 26 miles, you\'re abnormal.\n\n- Robert de Castella\n\n\nもし10マイル（約16km）地点で気分が悪くなったとしたら、それは問題だ。\n20マイル（約32km）地点で気分が悪くなるのは、普通のこと。\nでも、26マイル（約42km）で気分が悪くないとしたら、それは異常だね。\n\n－　ロバート・デ・キャステラ\n\n\n'); 
        case 2 : alert('\n\nIf you want to become the best runner you can be, start now. Don\'t spend the rest of your life wondering if you can do it.\n\n- Priscilla Welch\n\n\nできる限り素晴らしいランナーになりたいのなら、今すぐに始めること。出来るかどうかと悩むことに、残りの人生を費やさないように。\n\n－　プリシラ・ウェルチ\n\n\n'); 
        case 3 : alert('\n\nそして君は偉い。僕も偉い。\n\n－　まさ\n\n\n'); 
    }
}

//window.alert("check!");
