/**********************************************************************
 * wt_gmap.js
 *
 * Copyright (c) 2006 by JJWorkshop HIRO. <http://jjworkshop.com/>
 * This library licensed under MIT license:
 * http://opensource.org/licenses/mit-license.php
 *
**********************************************************************/

// Google map イメージURL
// var gmapImgUrl = "http://maps.google.com/mapdata?"; 古い形式
var gmapImgUrl = "http://maps.google.com/maps/api/staticmap?";

// Google pirint URL
var gmapPrnUrl = "http://maps.google.co.jp/maps?";

// 緯度経度検索用URL
var mapFindUrl = "http://www.geocoding.jp/?q="

// Cookie Save param
var param = {
	 "iw"        : 200
	,"ih"        : 200
	,"sc"        : 16
	,"mk"        : 16
	,"sz"        : 15
};

/**********************************************************************
 * loadCookie/saveCookie		設定をクッキーから読み出し／書き出し
**********************************************************************/
function loadCookie()
{
	// クッキーから読み出してパラメタを設定
	var ck = getCookie("gmap");
	if (ck != '')	{
		param = ck.toQueryParams();
		$('iw').value    = param.iw		? param.iw  : "";
		$('ih').value    = param.ih		? param.ih  : "";
		$('sc').value    = param.sc		? param.sc  : "";
		var nodes = $A($('mk').getElementsByClassName('sel'));
		nodes.each(function(node){
			if (node.value == param.mk)	node.selected = true;
		});
		$('sz').value    = param.sz		? param.sz  : "";
	}
}
function saveCookie()
{
	// パラメタをクッキーに保存
	param.iw  = $F('iw');
	param.ih  = $F('ih');
	param.sc  = $F('sc');
	var rs = $A(document.map.mk).find(function(v) {return v.selected;});
	param.mk     = rs.value;
	param.sz  = $F('sz');
	setCookie("gmap",$H(param).toQueryString(),90);	// 90日保存
}

/**********************************************************************
 * doMakeMapTag		Google map イメージタグを作成
**********************************************************************/
function doMakeMapTag(ResultsDiv)
{
	if (!doResetResult(ResultsDiv))	return;

	if (isErrParam($('nl'),"f","緯度を数値で入力して下さい。"))	return;
	if (isErrParam($('el'),"f","経度を数値で入力して下さい。"))	return;
	if (isErrParam($('iw'),"f","IMGサイズを数値で入力して下さい。"))	return;
	if (isErrParam($('ih'),"f","IMGサイズを数値で入力して下さい。"))	return;
	if (isErrParam($('sc'),"f","倍率を数値で入力して下さい。"))	return;

	// イメージURL組み立て
	var url_i = gmapImgUrl + "center=" + $("nl").value + "," + $("el").value;
	url_i += "&markers=color:blue|label:" + $("mk").value + "|" + $("nl").value + "," + $("el").value;
	url_i += "&zoom=" + $("sz").value;
	url_i += "&size=" + $("iw").value + "x" + $("ih").value;
	url_i += "&sensor=false";

	var url_a = gmapPrnUrl + "&q=" + $("nl").value + "," + $("el").value + "+(" + EscapeUTF8($("ti").value) + ")" + "&hl=ja&ie=UTF8&z=" + $("sc").value;

	var imgTag = '<img src="' + url_i + '" title="' + $("ti").value + '" border="1">';
	var aTag   = '<a href="' + url_a + '" target="_blank">';
	var buf = "";
	
	// イメージサンプル
	buf += "生成したマップ：<br/><br/><form class='resForm'>" + imgTag + "&nbsp;&nbsp;" + aTag + imgTag + "</a>&nbsp;&nbsp;※ " + aTag + $("ti").value + "</a><br/><br/>";
	
	// google イメージタグソース表示
	buf += "イメージタグ：（生成したマップ左）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(imgTag) + "</textarea><br/>";
	
	// google イメージリンクタグソース表示
	buf += "イメージマップリンクタグ：（生成したマップ右）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(aTag) + cnvPre(imgTag) + cnvPre("</a>") + "</textarea><br/>";
	
	// google リンクタグソース表示
	buf += "印刷用マップリンクタグ：（※ 部分のリンク）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(aTag) + $("ti").value + cnvPre("</a>") + "</textarea><br/>";
	
	// google メール添付ＵＲＬソース表示
	buf += "ＰＣメール本文添付用ＵＲＬ：（印刷用地図ＵＲＬ）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + url_a + "</textarea><br/>";

	// google 携帯メール添付ＵＲＬソース表示
	buf += "携帯メール本文添付用ＵＲＬ：（小地図ＵＲＬ／生成したマップ左）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + url_i + "</textarea><br/></form>";

	buf += '<a href="#" onclick="Element.scrollTo(\'body\');return false;">TOPへ&nbsp;&#8811;</a>'
	
	$(ResultsDiv).innerHTML = buf;
	Element.scrollTo(ResultsDiv);
	
	// パラメタをクッキーに保存
	saveCookie();

}


/**********************************************************************
 * doResetResult	結果リセット
**********************************************************************/
function doResetResult(ResultsDiv)
{
	if ($(ResultsDiv))	{
		$(ResultsDiv).innerHTML = "";
	}
	else	{
		alert('結果を返す div が html で記述されてない');
		return false;
	}
	$("nl").focus();
	return true;
}

/**********************************************************************
 * isErrParam		項目チェック
**********************************************************************/
function isErrParam(obj,mode,msg)
{
	var isErr = false;
	var tx = obj.value;
	if (mode == 'f')	{
		if (tx == '' || isNaN(tx))	isErr = true;
	}
	if (isErr)	{
		alert(msg);
		obj.focus();
	}
	return isErr;
}

/**********************************************************************
 * cnvPre			特殊文字（< >）を　&lt; &gt;に変換
**********************************************************************/
function cnvPre(src)
{
	// 手抜きです
	//var wk = src;
	//wk = wk.replace(/</g,"&lt;");
	//wk = wk.replace(/>/g,"&gt;");
	return src.escapeHTML();
}

/**********************************************************************
 * findMap			緯度、経度を検索
**********************************************************************/
function findMap(prm)
{
	window.open(mapFindUrl + $(prm).value);
}

/**********************************************************************
 * doTop			ウィンドウの先頭へ
**********************************************************************/
function doTop(prm)
{
	Element.scrollTo("body");
}

/**********************************************************************
 * setCookie		クッキー保存
**********************************************************************/
function setCookie(cki,value,day)
{
	var exp = new Date();
	exp.setTime(exp.getTime()+(day*24*60*60*1000));
	var item = "@" + cki + "=" + escape(value) + ";";
	var strWk = "expires="+exp.toGMTString();
	document.cookie =  item + strWk;
}

/**********************************************************************
 * getCookie		クッキー読み出し
**********************************************************************/
function getCookie(cki)
{
	cki = "@" + cki + "=";
	var value = "";
	var strWk = document.cookie + ";" ;
	var offset = strWk.indexOf(cki);
	if (offset != -1){
		var sPos = offset + cki.length;
		var ePos   = strWk.indexOf(";" , sPos);
		value = unescape(strWk.substring(sPos,ePos));
	}
	return value;
}

