/**
 * PHP用にEUCでエスケープします。
 *
 * @return escaped string
 */
function escapeURI(uri) {
	return EscapeEUCJP(uri).replace(/\+/,"%2B");
}

/**
 * 距離計算。ヒュベニの計算式。
 *
 * @return distance（メートル）
 */
function distance(lat1, lon1, lat2, lon2){
	var a = lat1 / 180 * Math.PI;
	var b = lon1 / 180 * Math.PI;
	var c = lat2 / 180 * Math.PI;
	var d = lon2 / 180 * Math.PI;

// 緯度平均、緯度差
	var	fAvgLat = (a + c)/2;
	var fDiffLat = (a - c);

//経度差
	var fDiffLng = (b - d);

//子午線曲率半径
	var hlf = 1 - 0.006674*(Math.sin(fAvgLat) * Math.sin(fAvgLat));
	var dmrad = 6334834 / Math.sqrt(hlf * hlf * hlf);

//卯酉線曲率半径
	var dvrad = 6377397 / Math.sqrt(hlf);

//ヒュベニの距離計算式
	var t1 = dmrad * fDiffLat;
	var t2 = dvrad * Math.cos(fAvgLat) * fDiffLng;
	var d  = Math.sqrt((t1 * t1) + (t2 * t2));

	return Math.round(d); // 戻り値はメートル
}

/**
 * データ受信。
 */
var rang = 0;//距離制限
function selectedpoint(res) {
	var result;//戻りデータ
	/*
		res : JSON表記の文字列（SELECT文の実行結果）
			res = {
				sql : <SQL文>,
				colno : <カラム数>,
				column : [<カラムの並び>...],
				rowno : <レコード数>,
				rows : [[<データの並び>...]<レコードの並び>...]
			}
	*/
	var i;
	var dist;//距離
	var lst = "";
	var f_name;//施設名
	var f_addr;//住所
	var f_lat;//緯度
	var f_lng;//経度
	var f_type;//種別
	var f_phone;//種別
	var f_url;//種別
	var markerp = 0;
	var	n;		//レコード番号
	var	nclass;	//レコードごとのclass宣言

	if (res.substring(0,1) == "{") {
		try {
			eval("var result = " + res);			// ここでjavascriptの変数に戻り値を入れる
			if (result.rowno > 0) {
				for (i = 0, n = 0; i < result.rowno; i++) {
					f_name = result.rows[i][0];
					f_addr = result.rows[i][1];
					f_lat  = result.rows[i][2];
					f_lng  = result.rows[i][3];
					f_type = result.rows[i][4];
					f_phone= result.rows[i][5];
					f_url  = result.rows[i][6];
					dist = distance(f_lat,f_lng,t_lat,t_lng) / 1000;
					if ( ((rang == 0) || (dist <= rang)) ) {
						nclass = "";
						if (n++ % 2)	nclass = " class=\"formlistl1\"";
						lst += "<TR><TD align='center'" + nclass + ">";
						if (f_type == 1) {
							if (f_url != "") {
								lst += "<IMG src=\"images/mapicon_01.gif\" alt=\"ハローワーク\" title=\"ハローワーク\" width=\"16\" height=\"15\"></TD>"
									 + "<TD" + nclass + "><A href='" + f_url + "' target='_blank'>ハローワーク　" + f_name + "</A></TD>"
									 + "<TD" + nclass + " align='center'>" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "</TD>"
									 + "<TD" + nclass + "><A href='javascript:redispAMark(" + (markerp++) + ")'>" + f_addr + "</A></TD>"
									 + "<TD" + nclass + " nowrap>" + f_phone + "</TD></TR>";

								pointAMark(f_lat,f_lng,"<div style='width:200px'><A href='" + f_url + "' target='_blank'>" + "ハローワーク　" + f_name + "</A><br />"
									 + f_addr +  "<br />"
									 + "電話　" + f_phone + "<br />現在地から" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "km(直線距離)</div>",f_type-1);
							} else {
								lst += "<IMG src=\"images/mapicon_01.gif\" alt=\"ハローワーク\" title=\"ハローワーク\" width=\"16\" height=\"15\"></STRONG></TD>"
									 + "<TD" + nclass + ">ハローワーク　" + f_name + "</TD>"
									 + "<TD" + nclass + " align='center'>" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "</TD>"
									 + "<TD" + nclass + "><A href='javascript:redispAMark(" + (markerp++) + ")'>" + f_addr + "</A></TD>"
									 + "<TD" + nclass + " nowrap>" + f_phone + "</TD></TR>";

								pointAMark(f_lat,f_lng,"<div style='width:200px'>" + "ハローワーク　" + f_name + "<br />"
									 + f_addr +  "<br />"
									 + "電話　" + f_phone + "<br />現在地から" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "km(直線距離)</div>",f_type-1);
							}
						} else {
							if (f_type == 2) {
								lst += "<IMG src=\"images/mapicon_04.gif\" alt=\"ジョブカフェ\" title=\"ジョブカフェ\" width=\"16\" height=\"15\">";
							} else if (f_type == 3) {
								lst += "<IMG src=\"images/mapicon_03.gif\" alt=\"人材銀行\" title=\"人材銀行\" width=\"16\" height=\"15\">";
							} else if (f_type == 4) {
								lst += "<IMG src=\"images/mapicon_05.gif\" alt=\"雇用・能力開発機構\" title=\"雇用・能力開発機構\" width=\"16\" height=\"15\">";
							} else if (f_type == 5) {
								lst += "<IMG src=\"images/mapicon_02.gif\" width=\"16\" height=\"15\" alt=\"パートバンク\" title=\"パートバンク\">";
							} else if (f_type == 6) {
								lst += "<IMG src=\"images/mapicon_06.gif\" width=\"16\" height=\"15\" alt=\"サポステ\" title=\"サポステ\">";
							} else if (f_type == 7) {
								lst += "<IMG src=\"images/mapicon_07.gif\" width=\"16\" height=\"15\" alt=\"学生相談窓口\" title=\"学生相談窓口\">";
							} else {
								lst += "？";
							}
							lst += "</TD>";
							if (f_url != "") {
								lst += "<TD" + nclass + "><A href='" + f_url + "' target='_blank'>" + f_name + "</A></TD>"
									 + "<TD" + nclass + " align='center'>" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "</TD>"
									 + "<TD" + nclass + "><A href='javascript:redispAMark(" + (markerp++) + ")'>" + f_addr + "</A></TD>"
									 + "<TD" + nclass + ">" + f_phone + "</TD>";

								pointAMark(f_lat,f_lng,"<div style='width:200px'><A href='" + f_url + "' target='_blank'>" + f_name + "</A><br />"
									 + f_addr +  "<br />"
									 + "電話　" + f_phone + "<br />現在地から" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "km(直線距離)</div>",f_type-1);
							} else {
								lst += "<TD" + nclass + ">" + f_name + "</TD>"
									 + "<TD" + nclass + " align='center'>" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "</TD>"
									 + "<TD" + nclass + "><A href='javascript:redispAMark(" + (markerp++) + ")'>" + f_addr + "</A></TD>"
									 + "<TD" + nclass + ">" + f_phone + "</TD>";

								pointAMark(f_lat,f_lng,"<div style='width:200px'>" + f_name + "<br />"
									 + f_addr +  "<br />"
									 + "電話　" + f_phone + "<br />現在地から" + Math.floor(dist) + "." + (Math.floor(dist*10)-(Math.floor(dist)*10)) + "km(直線距離)</div>",f_type-1);
							}
							lst += "</TR>\n";
						}
					}
				}

				if (lst) {
					document.getElementById("list").innerHTML =
						"<TABLE width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">"
						+ "<TR>\n"
						+ "<TD width=\"16\" align=\"center\" class=\"TABLEhead\">種別</TD>\n"
						+ "<TD width=\"235\" class=\"TABLEhead\">施設名 (リンクはHPへ)</TD>\n"
						+ "<TD width=\"31\" class=\"TABLEhead\">直線距離Km</TD>\n"
						+ "<TD width=\"273\" class=\"TABLEhead\">住所 (クリックで地図を表示)</TD>\n"
						+ "<TD width=\"80\" align=\"center\" class=\"TABLEhead\">電話番号</TD>\n"
						+ "</TR>\n"
						+ lst
						+ "<TR><TD valign=\"top\" height=\"2\" colspan=\"5\"><IMG src=\"images/cm_spacer.gif\" alt=\"　\" width=\"1\" height=\"1\"></TD></TR>\n"
						+ "</TABLE>\n";
				} else {
					document.getElementById("list").innerHTML = "";
					alert("データは0件です");//距離を調べたら条件外でゼロ件
				}
			} else {
				document.getElementById("list").innerHTML = "";
				alert("データは0件です");//DB側でゼロ件
			}
		}
		catch (e) {
			document.getElementById("list").innerHTML = "";
			alert('内部エラー(func2.js)　' + e.message);
		}
	}
	else {
		document.getElementById("list").innerHTML = "";
		alert(res);		// DB側でエラー
	}
}
/**
 * SQLを発行。
 */
function selectpoint(lat,lng,typ,range) {
	var sqlstr,condstr,i;

	rang = range;
	condstr = "";
	for (i = 0; i < typ.length; i++) {
		if (typ[i].checked) {
			condstr += "type = '" + typ[i].value + "' OR ";
		}
	}
	if (condstr.length > 4)
		condstr = condstr.substring(0,condstr.length-4);
	sqlstr = "SELECT facilityname,address,lat,lng,type,phone,url FROM jnet_facility_addr ";
	if (condstr.length > 0)
		sqlstr += "WHERE " + condstr;
	//直線距離を近似でソート（0.82はcos(35°)＝日本のおよその緯度）
	sqlstr += " ORDER BY (lat-" + lat + ")*(lat-" + lat + ")+(lng-" + lng + ")*(lng-" + lng + ")*0.82 LIMIT 0,50;";
	document.getElementById("list").innerHTML = "<TABLE border='0' width='100%'><TR><TD align='center'><FONT color='red'>〜読み込み中〜</FONT></TD></TR></TABLE>";
	ajax_dload('./server/db_select.php?sql=' + escapeURI(sqlstr), selectedpoint);
}

