		var gInitialColor = new Array(33, 57, 98); // 最初の色をR,G,B(8bit)で指定
		var gFinalColor = new Array(128, 0, 0); // 最後の色をR,G,B(8bit)で指定
		var gOverStep = 15; // フェードイン時のコマ数。少ないほど早くフェードする
		var gOutStep = 30; // フェードアウト時のコマ数。少ないほど早くフェードする


		gHexTbl = new Array;
		for(var i = 0; i < 10; i++) {
			gHexTbl[i] = i;
		}
		gHexTbl.push("A", "B", "C", "D", "E", "F");

		function hexEval(val) {
			if (val <= 0) {
				return "00";
			} else if (val >= 255) {
				return "FF";
			} else {
				return "" + gHexTbl[Math.floor(val / 16)] + gHexTbl[val % 16];
			}
		}

		function styleObjSelecter(i) {
			var o = null;

			if (document.all) {
				o = document.all(i).style;
			} else if (document.getElementById) {
				o = document.getElementById(i).style;
			}

			return o;
		}

		function f(mode, id) {
			if (styleObjSelecter(id) != null) {
				if (mode == "over") {
					fade(id, gOverStep, gInitialColor[0], gInitialColor[1], gInitialColor[2], gFinalColor[0], gFinalColor[1], gFinalColor[2]);
				} else if (mode == "out") {
					fade(id, gOutStep, gFinalColor[0], gFinalColor[1], gFinalColor[2], gInitialColor[0], gInitialColor[1], gInitialColor[2]);
				}
			}
		}

		function fade(id, step, sr, sg, sb, er, eg, eb) {
			for (var i = 0; i < step; i++) {
				var nr = Math.floor((((er - sr) / step) * i) + sr);
				var ng = Math.floor((((eg - sg) / step) * i) + sg);
				var nb = Math.floor((((eb - sb) / step) * i) + sb);
				setTimeout("setTextColor(" + nr + ", " + ng  + ", " + nb + ", " + '"' + id + '");', i * step);
			}
			setTimeout("setTextColor(" + er + ", " + eg  + ", " + eb + ", " + '"' + id + '");', step * step);
		}

		function setTextColor(r, g, b, id) {
			var obj = styleObjSelecter(id);
			if (obj != null) {
				obj.color = "#" + hexEval(r) + hexEval(g) + hexEval(b);
			}
		}