stwidth  = 40;   // 表示領域の幅(文字数)
interval = 200;  // インターバル時間(msec)
tid      = null; // タイマ識別子

stblank  = ''; for(var i=0;i<stwidth;i++) stblank+='　';
curScr   = new scrObj('',interval,window);
oldScr   = '';

// スクロールオブジェクト
function scrObj(msg,ival,target)
{
	this.ststrip= stblank+msg+stblank;
	this.msgstr = msg;
	this.msglen = msg.length;
	this.stpos  = 0;
	this.interval = ival;
	this.target = target;
	return this;
}

// スクロール関数
function scrollMsg()
{
	curScr.stpos++;
	if(curScr.stpos==stwidth+curScr.msglen) curScr.stpos=0;
	var msg = curScr.ststrip.substring(curScr.stpos,curScr.stpos+stwidth);
	if(curScr.target==window) window.status=msg;
	else                      curScr.target.value=msg;
	tid=setTimeout('scrollMsg()',curScr.interval);
}

// スクロール処理取消関数
function cancelMsgTime()
{
	if(tid)
	{
		window.status=stblank;
		clearTimeout(tid);
		tid=null;
	}
}

// スクロール処理の初期化関数
function setScrollMsg(msg,save,target)
{
	if(save) oldScr=curScr;
	curScr=new scrObj(msg,interval,target);
	cancelMsgTime();
	scrollMsg();
}

