/*
	文字をグラデーションさせる
*/
var Col=new Array();
Col[0]="999999";	//色指定  半角英数小文字6桁
Col[1]="111111";
//Col[2]="ff0000";

var Reso=32;		//Col[?]→Col[?+1]の色へ、何回にかけて変更するか
var Speed=100;		//更新速度 小さいほど速い

var ColLen=Col.length;
var RGB=new Array(ColLen);
var hex="0123456789abcdef";
var Obj;
var Length;
var ColPos=0;
var ResoPos=0;


function stov(str){
	var i;
	for(i=0;i<16;i++)
		if(hex.charAt(i)==str)
			return i;
}

function vtos(value){
	if(value<0)
		return "0";
	return hex.charAt(value);
}

function GetCol(){
	var data="#",i,n;
	var ColPosNext=(ColPos+1)%ColLen;
	for(i=0;i<3;i++){
		n=Math.floor(RGB[ColPos][i]+(RGB[ColPosNext][i]-RGB[ColPos][i])/(Reso-1)*ResoPos);
		data+=vtos(Math.floor(n/16))+vtos(n%16);
	}
	if(++ResoPos>=Reso){
		ResoPos=0;
		ColPos=ColPosNext;
	}
	return data;
}

function SetGrad(Str){
	var i,j;
	Length=Str.length;
	Obj=new Array(Length);
	for(i=0;i<Length;i++){
		document.write("<font id=\"FONT_"+i+"\" >"+Str.charAt(i)+"</font>");
		eval("Obj[i]=FONT_"+i);
	}
	
	for(i=0;i<ColLen;i++){
		RGB[i]=new Array(3);
		for(j=0;j<3;j++)
			RGB[i][j]=stov(Col[i].charAt(j*2))*16+stov(Col[i].charAt(j*2+1));
	}

	for(i=Length-1;i>=0;i--)
		Obj[i].color=GetCol();

	setInterval("GradLoop()",Speed);
}

function GradLoop(){	
	var i;
	for(i=Length-1;i>0;i--)
		Obj[i].color=Obj[i-1].color;
	Obj[0].color=GetCol();
}

/*
	１文字づつ表示する
*/
function by1CharAppears(str, id) {
	this.str = str;
	this.id = id;
	this.count = 0;
	this.speed = 100;
	
	this.setText = function()
	{
		var that = this;
		if (this.count > this.str.length) return;
		this.count++;
		txt = this.str.substring(0,this.count);
		if (document.all) document.all[this.id].innerHTML = txt;
		if (document.layers)
		{
			document.layers[this.id].document.open();
			document.layers[this.id].document.write(txt);
			document.layers[this.id].document.close();
		}
		setTimeout(function() { that.setText() }, this.speed);
	}
}
