/**********************************************************************
 * wt_ymap.js
 *
 * Copyright (c) 2007 by JJWorkshop HIRO. <http://jjworkshop.com/>
 * This library licensed under MIT license:
 * http://opensource.org/licenses/mit-license.php
 *
**********************************************************************/

// Yahoo map イメージURL
var ymapImgUrl = "http://img.map.yahoo.co.jp/ymap/mk_map?";

// Yahoo pirint URL
var ymapPrnUrl = "http://map.yahoo.co.jp/print?";

// 緯度経度検索用URL
var mapFindUrl = "http://www.geocoding.jp/?q="

// Cookie Save param
var param = {
	 "iw"        : 200
	,"ih"        : 200
	,"sc"        : 3
};

/**********************************************************************
 * loadCookie/saveCookie		設定をクッキーから読み出し／書き出し
**********************************************************************/
function loadCookie()
{
	// クッキーから読み出してパラメタを設定
	var ck = getCookie("ymap");
	if (ck != '')	{
		param = ck.toQueryParams();
		$('iw').value    = param.iw		? param.iw  : "";
		$('ih').value    = param.ih		? param.ih  : "";
		$('sc').value    = param.sc		? param.sc  : "";
	}
}
function saveCookie()
{
	// パラメタをクッキーに保存
	param.iw  = $F('iw');
	param.ih  = $F('ih');
	param.sc  = $F('sc');
	setCookie("ymap",$H(param).toQueryString(),90);	// 90日保存
}

/**********************************************************************
 * doMakeMapTag		Yahoo 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 = ymapImgUrl + 
				$H({
					lat:		$("nl").value,
					lon:		$("el").value,
					width:		$("iw").value,
					height:		$("ih").value,
					sc:			$("sc").value
				}).toQueryString();
	var url_a = ymapPrnUrl + 
				$H({
					mode:		"0",
					nl:			$("nl").value,
					el:			$("el").value,
					fi:			"1",
					prop:		"",
					memo:		EscapeEUCJP($("ti").value) + "++" + EscapeEUCJP("住所："+$("ad").value) + "++" + EscapeEUCJP("電話："+$("te").value),
					sc:			$("sc").value
				}).toQueryString();

	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/>";
	
	// Yahoo イメージタグソース表示
	buf += "イメージタグ：（生成したマップ左）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(imgTag) + "</textarea><br/>";
	
	// Yahoo イメージリンクタグソース表示
	buf += "イメージマップリンクタグ：（生成したマップ右）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(aTag) + cnvPre(imgTag) + cnvPre("</a>") + "</textarea><br/>";
	
	// Yahoo リンクタグソース表示
	buf += "印刷用マップリンクタグ：（※ 部分のリンク）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + cnvPre(aTag) + $("ti").value + cnvPre("</a>") + "</textarea><br/>";
	
	// Yahoo メール添付ＵＲＬソース表示
	buf += "ＰＣメール本文添付用ＵＲＬ：（印刷用地図ＵＲＬ）<br/><textarea wrap='off' readonly='readonly' onclick='this.select();'>" + url_a + "</textarea><br/>";
	
	// Yahoo 携帯メール添付ＵＲＬソース表示
	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;
}

