var ONSEN_LIMIT = 76;
var ONSEN_REFRESH = 24 * 7;

/**
 * googleMapを新規に作成する。
 */
function createNewMap(div, latlng, zoom) {
	// Mapの生成
	var map = new GMap2(div);
	var G_HYBRID_PHYSICAL_MAP = new　GMapType([
	    G_PHYSICAL_MAP.getTileLayers()[0],
	    G_HYBRID_MAP.getTileLayers()[1]],
	    G_NORMAL_MAP.getProjection(),"地形+地図");

	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(G_HYBRID_PHYSICAL_MAP);
//	var c = new GHierarchicalMapTypeControl();
//	c.clearRelationships();
//	c.addRelationship(G_SATELLITE_MAP, G_HYBRID_MAP,"地名を表示", false);
//	c.addRelationship(G_PHYSICAL_MAP, G_HYBRID_PHYSICAL_MAP, "地名を表示", false);
//	map.addControl(c);

//	map.addControl(new GScaleControl());
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl(new GSize(130, 150)));
	map.enableScrollWheelZoom();
	map.disableDoubleClickZoom();
	map.setCenter(latlng, zoom);
	map.setMapType(G_PHYSICAL_MAP);
	return map;
}

var COOKIE_DEFAULT_PATH = '/';
var COOKIE_DEFAULT_DURATION = 90;

var COOKIE_LAST_LATLNG_KEY = 'last_latlng';

/**
 * Mapの緯度、経度、ズームレベルをCookieに保存する
 */
 function cookieSetLatLng(lat, lng, zoom) {
	// Cookie発行
	var param = lat + '/' + lng + '/' + zoom + '/';
//	Cookie.set(COOKIE_LAST_LATLNG_KEY, param, {		//mootools1.1
	Cookie.write(COOKIE_LAST_LATLNG_KEY, param, {		//mootools1.2
		 path: COOKIE_DEFAULT_PATH
		,duration: COOKIE_DEFAULT_DURATION
	});
 }
/**
 * 保存されたMapの緯度、経度、ズームレベルをCookieから取得する
 */
 function cookieGetLatLng() {
	// Cookie取得
	var param = Cookie.read(COOKIE_LAST_LATLNG_KEY);	//mootools1.2
	if (!param) return false;
	return param.split('/');
 }
/**
 * 位置による処理を行うか判定する
 * 日本領土で一般人の立ち入ることのできる陸地を大雑把に判定している。
 * @param lat
 * @param lng
 * @return 処理を行う範囲であれば真
 */
function isLand(lat, lng) {
	// 一般人の立ち入ることのできる範囲
	if (lat > 46 ||		//宗谷岬
		lat < 24 ||		//与那国島
		lng < 123 ||	//波照間島
		lng > 146)		//納沙布岬
			return false;
	// 北海道以南、小笠原以東の太平洋
	if (lat < 42 &&		//襟裳あたり
		lng > 143)		//小笠原
			return false;
	// 佐渡以北、奥尻以西の日本海
	if (lat > 39 &&		//佐渡あたり
		lng < 139)		//奥尻あたり
			return false;
	// 奄美以北、五島以西の日本海
	if (lat > 28 &&		//奄美あたり
		lng < 128)		//五島あたり
			return false;

	return true;
}
 /**
  * 逆ジオコーディング
  */
function rgeocode(lat, lng) {
	// requestするURLの生成
	var targetUrl = "http://refits.cgk.affrc.go.jp/tsrv/jp/rgeocode.php?v=2&jsonp=callBackRgeocode";
	targetUrl += "&lat=" + Number.toFloat(lat).round(1);
	targetUrl += "&lon=" + Number.toFloat(lng).round(1);

	var script = new Element('script', {
		'charaset': 'UTF-8',
		'id': targetUrl,
		'src': targetUrl
	});
	document.body.appendChild(script);
	document.body.removeChild(script);
 }
/**
 * ロード可能か判定する
 * @param {Element} el 切り替えるElement
 * @return ロード可能であればtrue,以前のものがロード中であればfalse
 */
function isLoading(el) {
	var children = el.getChildren();
	var oldLoading = false;
	children.each(function(item, index){
		if (item.hasClass('loading')) {
			oldLoading = true;
			return;
		}
	});
	return oldLoading;
}
/**
 * Elementをの中身をローディング表示に切り替える
 * @param {Element} el 切り替えるElement
 * @param {String} message 表示メッセージ
 * @param {boolean} notErase true で読み込み中にする要素を削除しない
 */
function setLoading(el, message, notErase) {
	if (!notErase) el.empty();
	// 「取得中」表示に切り替え
	el.grab(
		new Element('div', {'class': 'loading'}).appendText(message)
		,'top'
	);
}

/**
 * 東京測地系から世界測地系への変換
 * @param jx 東京測地系の経度
 * @param jy 東京測地系の緯度
 * @return GLatLng
 * @see http://groups.google.com/group/Google-Maps-API-Japan/browse_thread/thread/d0ce529ce20edc4d/285aac6e0d3497a1
 */
function ChangeLocationJapanToGlobal(jx, jy) {
  var wy = jy - jy * 0.00010695 + jx * 0.000017464 + 0.0046017;
  var wx = jx - jy * 0.000046038 - jx * 0.000083043 + 0.010040;

  return new GLatLng(wy, wx);
}

/**
 * 世界測地系から東京測地系への変換
 * @param wx 世界測地系の経度
 * @param wy 世界測地系の緯度
 * @return GLatLng
 */
function ChangeLocationGlobalToJapan(wx, wy) {
  var jy = wy * 1.000106961 - wx * 0.000017467 - 0.004602017;
  var jx = wx * 1.000083049 + wy * 0.000046047 - 0.010041046;

  return new GLatLng(jy, jx);
}

/**
 * urlにアクセスするためのスクリプトタグをセットする。
 * @param url アクセスするURL
 */
function appendScript(url) {
	var script = new Element('script', {
		'charaset': 'UTF-8',
		'id': url,
		'src': url
	});
	document.body.appendChild(script);
	document.body.removeChild(script);
}
/**
 * 天気JSONを取得するURLを得る。
 * @param url 取得するURL
 */
function weatherCache(targetUrl) {
	var url = "/weather-cache.php"
		+ "?url=" + encodeURIComponent(targetUrl);
	return url;
}
/**
 * じゃらん宿JSONを取得するURLを得る。
 * @param targetUrl 取得するURL
 */
function jalanHotelProxy(targetUrl) {
	var url = "/jalan-hotel-proxy.php"
		 + "?url=" + encodeURIComponent(targetUrl);
	return url;
}
