/*
 * 携帯電話からでもなんとか読めるXHTML超軽量化計画
 * (携帯やDOM未対応ブラウザの場合、画像へのリンクとなる)
 *
 * かのう神路 / 不良少年
 * http://www.furyoshonen.com/
 */


/*
 * 画像ソース URI 抽出パターン
 */
var imageURI = new RegExp("");
imageURI.compile("\\.(png|jpg|gif|bmp)$");


/*
 * 画像の alt, width, height 属性抽出パターン
 *
 * ※ alt(width, height) のように、alt の後に括弧でサイズを指定
 */
var imageSize = new RegExp("");
imageSize.compile("^(.*?)\\(\\s*([0-9]+)\\s*[a-z]*\\s*[x\\,\\*]\\s*([0-9]+)\\s*[a-z]*\\s*\\)$");


/*
 * IE バージョンチェック (AlphaImageLoader 用)
 *
 * note: IE 5.5～6.x 系のレンダラを持つブラウザに適用される
 */
var isIE6 = navigator.userAgent.match(/MSIE (6\.[0-9]|5\.[5-9])/);


/*
 * ドキュメント初期化 (DOM 対応ブラウザのみ)
 */
if(document.implementation)
{
	window.onload = function()
	{
		// AlphaImageLoader対応(IE5.5～IE6対策)
		if(isIE6)
		{
			// 透過PNG読み込み
			loadAlphaPNG("logo",		"/image/logo.png", "crop");
			loadAlphaPNG("navigator",	"/image/navigation.png");
			loadAlphaPNG("pagetop",		"/image/pagetop.png");
			loadAlphaPNG("q",			"/image/input.png", "crop");
		}

		initCSE();
		drawImages();
	};
}


/*
 * Google custom search フォーム初期化
 */
function initCSE()
{
	var search = document.getElementById("search");

	if(search && search.q)
	{
		var q = search.q;

		var blur = function()
		{
			if (q.value == '')
				q.style.backgroundPosition = "left";
			else
				q.style.backgroundPosition = "right";
		};

		var focus = function()
		{
			q.style.backgroundPosition = "right";
		};

		q.onfocus = focus;
		q.onblur = blur;

		blur();
	}
}


/*
 * ins タグ内の a タグ要素から img タグを生成
 *
 * ※ 例 1: 通常の画像
 *	<ins><a href="./example.png">例題画像(640 x 480 pixels)</a></ins>
 *
 * ※ 例 2: 画像リンク (バナー)
 *	<ins cite="./image.jpg"><a href="./example.html">例題リンク</a></ins>
 */
function drawImages()
{
	// ins タグ抽出
	var insertTags = document.getElementsByTagName("ins");

	for(var i = 0; i < insertTags.length; i ++)
	{
		var insert = insertTags[i];

		// a タグ抽出
		var anchorTags = insert.getElementsByTagName("a");

		for(var j = 0; j < anchorTags.length; j ++)
		{
			var anchor = anchorTags[j];
			var src = insert.cite ? insert.cite : anchor.href;

			if(!src)
				continue;

			// リンク先が画像の場合のみ
			if(imageURI.test(src) && anchor.firstChild.nodeType == 3)
			{
				// img タグの生成
				var img = document.createElement("img");
				img.setAttribute("src", src);

				var alt = anchor.firstChild.nodeValue;

				if(alt)
				{
					// サイズが指定されている場合は書き込む
					if(imageSize.test(alt))
					{
						img.setAttribute("width", RegExp.$2);
						img.setAttribute("height", RegExp.$3);

						alt = RegExp.$1;
					}

					img.setAttribute("alt", alt);
				}

				// cite 属性がある場合、画像をリンクバナーとして扱う
				if(insert.cite)
					anchor.replaceChild(img, anchor.firstChild);
				else
					insert.replaceChild(img, anchor);
			}
		}
	}
}


/*
 * IE5.5 ～ IE6 で透過PNGを読み込む
 */
function loadAlphaPNG(id, src, sizing)
{
	if(!sizing)
		sizing = "scale";

	var elm = document.getElementById(id);

	// AlphaImageLoader で無理矢理読み込んでみる
	var filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=" + sizing + ", src='"+ src +"')";

	// 透過PNG読み込み (IE5.5～IE6)
	if(elm)
	{
		elm.style.backgroundImage = "none";
		elm.style.filter = filter;
	}
}
