/*-----------------------------------------------------------------------------
がちゃがちゃフレンド

BlogPoeple (http://www.blogpeople.net/) の「ガチャガチャブログ」と同様の機能の
リンクサイト限定版を JavaScript のみで実装したものです。使用方法など詳細は私の
ブログ
	http://homepage.mac.com/yuji_okamura/iblog/DotMac/Tips/
を参照してください。

$Id: GachaGachaFriend.js,v 1.3 2004/08/05 15:14:22 okamura Exp $
Copyright (C) 2004 OKAMURA Yuji, All rights reserved.
-----------------------------------------------------------------------------*/
// ジャンプ先候補のベース URL
var	GF_LinkBase = 'http://www.blogpeople.net/cgi-bin/click.cgi?';

// サポートされていないブラウザへの警告文字列
//	もしこの文字列が空ならそういうブラウザではなにもしない。
var	GF_UnSupportAlertString = 'ご免なさい。\nあなたのブラウザには対応してないんです。';

// セレクタ形式で BlogPeople のリンクリストを出しているかどうか
var GF_Select = false;

/*-----
引数:
	elmtID - タグに付けた ID 属性の値
		省略可能
	win - リンクを探す対象となるウィンドウ
		省略可能
戻り値:
	成功か失敗かを表す真偽値
機能:
	elmtID が与えられていればその要素の中から、与えられていなければドキュメン
	ト全体から LinkBase で始まり LinkBase より長い URL への a タグによるのリ
	ンクを探し出し、その中からランダムに選んでジャンプする。
	win が与えられているときはそのウィンドウ上で、与えられていないときは現在
	のウィンドウ上でリンクを探す。
------*/
function GachaGachaFriend(elmtID, win) {
	// DOM サポートのチェック
	if (!document.getElementsByTagName || !document.getElementById) {
		if (GF_UnSupportAlertString) {
			alert(GF_UnSupportAlertString);
		}
		return false;
	}

	var	link = new Array;
	var	i;

	// ジャンプ先候補の URL を収集する。
	{
		var	place;

		// ジャンプ先候補を探す対象を決める。
		if (win) {
			place = win.document
		}
		else {
			place = document;
		}
		if (elmtID) {
			place = place.getElementById(elmtID);
		}

		// ジャンプ先候補をリストアップする。
		var	anchor;
		var	hrefMinLen = GF_LinkBase.length;
		var	hrefStr;

		if (GF_Select) {
			anchor = place.getElementsByTagName('option');
			for (i = 0; i < anchor.length; i++) {
				hrefStr = String(anchor[i].value);
				if (
					hrefStr.length > hrefMinLen
						&&
					hrefStr.substr(0, hrefMinLen) == GF_LinkBase
				) {
					link[link.length] = hrefStr;
				}
			}
		}
		else {
			anchor = place.getElementsByTagName('a');
			for (i = 0; i < anchor.length; i++) {
				hrefStr = String(anchor[i].href);
				if (
					hrefStr.length > hrefMinLen
						&&
					hrefStr.substr(0, hrefMinLen) == GF_LinkBase
				) {
					link[link.length] = hrefStr;
				}
			}
		}
	}

	// Safari 1.2.2 のように起動直後の乱数の種が一定のブラウザ対策
	{
		var n = new Date();

		n = n.getSeconds();
		for (i = 0; i < n; i++) {
			Math.random();
		}
	}

	// ジャンプ先を選んでジャンプ
	location.href = link[Math.floor(Math.random() * link.length)];
	return true;
}
