
/*-------------------------------------------------------------------
  はねるはねるわ、リンクが跳ねるわ。 そして、壊れる。
  
       *************************************************
       *** リンクが跳ねてこわれるスクリプト Ver.4.50 ***
       *************************************************
<address>
  いろきゅう
  http://www.skz.or.jp/ir9/sheela/sh1200.htm
  ir9@skz.or.jp
</address>

** コメントはけさないでちょ！ **

** ユーザー設定エリアのパラメータは、
   各自で自由に変更してかまいません。 **

// ---- Ver.04.50.0002 : 2002/01/03 ----------
// * 落ちたあと、その要素を非表示にしていたつもりだったけど
//   実は、文法ミスにより表示されたままだったのを修正。
//
// ---- Ver.04.50.0001 : 2001/09/16 ----------
// * スクリプト配布用に組みなおし
// * リンクが跳ねて壊れるだけにした。
// * 64 以上イベントが起きたとしても、無視するように修正
// * メッセージを表示するかしないの選択が可能に！

---------------------------------------------------------------------*/
/* ■■■■■ ユーザー設定エリア ■■■■■ */

// リンクが落ちる確率 ( 1.00 〜 0.00 )
var Kakuritu = 0.2;
// 落ちたときにメッセージを表示するか？ (true or false)
var MsgFlg   = false;
// おちたときの表示するメッセージ (ダブルコーテーションで囲うのを忘れずに。)
var Message  = "■ 警告 ■\n\nシーラ家が、壊れやすいからって、がんばって壊さないでください！\n(マウスでがんばってる姿が、目に見えるよぅ〜：笑)";

/* ■■■■■ ユーザー設定エリア 終わり ■■■■■ */

//// ブラウザ判定

var bl_user = navigator.userAgent;
var bl_ver  = navigator.appVersion;
var bl_name = navigator.appName;
var bl_id   = 0;

if(bl_name.indexOf('Internet Explorer') >= 0)
{
	if(bl_ver.charAt(0) >= 4)
	{
		bl_id = 1;
	}
}

//////////////////////////
//////////////////////////

var hairetu   = 65;
var mhairetu  = hairetu - 1;

var wariai    = 5;
var wariaiTmp = 0;
var wariaiNow = 0;

var i;		// 落ちるのと共有してます。
var g_nLinkCount;

var g_NowID  = 0;				// 今のＩＤ格納
var g_aThis  = Array(hairetu);	// this ポインタ格納
var g_ahStop = Array(hairetu);	// setInterval()
var g_aPhase = Array(hairetu);	// フェーズ格納
var g_bFlg   = true;			// 落ち処理に入ったリンクがあるかい？
var g_Count  = 0;               // イベントの数

/////////////////////////// はじめに、この関数を呼び出そう♪ 
function jmpbreak()
{
	if(bl_id != 1) return 1;	// IE 以外はさようなら〜 (T^T)/~

	g_nLinkCount = document.links.length;

	for(i = 0; i < hairetu; i++)
	{
		g_aPhase[i] = 0;
	}

	for(i = 0; i < g_nLinkCount; i++)
	{
		document.links[i].style.position = "relative";
		document.links[i].onmouseover    = jump;	// Link に onMouseOver の機能を追加するにゅ。
		document.links[i].Flg            = false;
	}
}

function jump()
{
	if(this.Flg && g_Count < 65) return 0;

	if(g_bFlg && Math.random() < Kakuritu)
	{
		this.Flg = true;	// フラグを立てて、これ以上はねないようにしましょう。
		g_bFlg   = false;
		g_aThis[mhairetu]  = this.style;
		g_ahStop[mhairetu] = setInterval("jumpFall()",50);
	}
	else
	{
		g_aThis[g_NowID]  = this.style;
		g_ahStop[g_NowID] = setInterval("jumpProc(" + g_NowID + ")",50);

		g_NowID = ++g_NowID % mhairetu;
		g_Count++;
	}
}

function jumpFall()
{
	if(g_aPhase[mhairetu] < 10)
	{
		jumpProc(mhairetu);
		g_aPhase[mhairetu]--;	// jumpProc の中ですでにインクリメントされちゃってるから、デクリメントしちゃいましょう。 // 無駄な処理やなぁ…(^^ ;;
	}
	else if(g_aPhase[mhairetu] > 15)
	{
		jumpDown();
		if(g_aPhase[mhairetu] > 38)
		{
			clearInterval(g_ahStop[mhairetu]);
			g_aThis[mhairetu].visibility = "hidden"; // 4.50.0002 Fix! : g_aThis.visibility = "hidden";
			g_bFlg             = true;
			g_aPhase[mhairetu] = 0;
			wariaiTmp = 0;
			wariaiNow = 0;
			if(MsgFlg)  alert(Message);
		}
	}
	g_aPhase[mhairetu]++;
	// １１〜１５までの間は、何も処理しないにょ（ちょっと止まってるにゅ）。
}

function jumpDown()
{
	wariaiTmp += wariai;
	wariaiNow += wariaiTmp;
	g_aThis[mhairetu].top = wariaiNow + "px";
}

function jumpProc(id)
{
	switch(g_aPhase[id])
	{
	case 0:
	case 4:
	case 7:
		{
			g_aThis[id].top = "-2px";
		}
		break;
	case 1:
	case 3:
		{
			g_aThis[id].top = "-3px";
		}
		break;
	case 2:
		{
			g_aThis[id].top = "-4px";
		}
		break;
	case 5:
	case 9:
	case 11:
		{
			g_aThis[id].top = "0px";
		}
		break;
	case 6:
	case 8:
	case 10:
		{
			g_aThis[id].top = "-1px";
		}
		break;
	default:
		{
			alert(g_aPhase[id]);
		}
	}

	if(g_aPhase[id] == 11)
	{
		clearInterval(g_ahStop[id]);
		g_aPhase[id] = 0;
		g_Count--;
	}
	else
	{
		g_aPhase[id]++;
	}
}

