//DHTMLサンプルライブラリ
//
//製作者：ＥＭＯＴＡＲＯ
//
//このライブラリを使用する場合は、セットでcrossbrow_lib.jsが必要です。
//
//
//*******************************************************
//***************  これよりライブラリ    ****************
//*******************************************************
//
//タイプライター
//
//TypeWriter("レイヤーID","コメント","表示行数","スピード")
//
//コメントは、<br>で改行する。<BR>は使わない。
//表示行数はそれ以上の行がある場合はスクロールする。
//スピードは30以下では同じようです。
//もし、タイプ終了時になにかしたいときは、この関数をhtmlにコピーして、clearTimeoutのあとに記述してください。
//NN4.xはレイヤーに設定したCSSが無視されます。また、NN4.xは
//ウインドウをリサイズすると消えてしまいます。
//-------------------------------------------------------
function TypeWriter(divname,Comment,maxLog,speed){
	TYPEWRITERDIV=getDivFromName(divname);
	COMMENT = Comment.split("<br>");
	COMMENTARRAY = COMMENT.length;
	MAXLOG = maxLog-2;
	TYPEWRITERSPEED = speed
	WordLength = new Array();
	WordComment = new Array();
	for (i=0;i<COMMENTARRAY;i++){
		WordLength[i] = COMMENT[i].length;
		WordComment[i] = COMMENT[i];
	}
	WriteCount = -1;
	WriteChar = "";
	WriteCharlog = "";
	WriteCountlog = 0;
	seigyo = 0;
	TypeWriterMain();
}
function TypeWriterMain(){
	if(WriteCount <= WordLength[WriteCountlog]){
		WriteCount++;
		if (WordComment[WriteCountlog].charAt(WriteCount)=="<"){TagCheck();}
		WriteChar += WordComment[WriteCountlog].charAt(WriteCount);
		writeDivHTML(TYPEWRITERDIV,true,true,WriteCharlog+WriteChar+"_");
		WRITETIMEID = setTimeout("TypeWriterMain2()",TYPEWRITERSPEED);
	}else{
		if(WriteCountlog < COMMENTARRAY){
			WriteCharlog = "";
			seigyo = WriteCountlog - MAXLOG;
			if(seigyo < 0){seigyo = 0;}
			for (i=seigyo;i<=WriteCountlog;i++){
				WriteCharlog += WordComment[i]+"<br>";
			}
			WriteCountlog ++;
			WriteCount = -1;
			WriteChar = "";
			WRITETIMEID = setTimeout("TypeWriterMain()",50);
		}else{
			clearTimeout(WRITETIMEID);
			return true;
		}
	}
}
function TypeWriterMain2(){
	writeDivHTML(TYPEWRITERDIV,true,true,WriteCharlog+WriteChar);
	WRITETIMEID = setTimeout("TypeWriterMain()",TYPEWRITERSPEED);	
}
function TagCheck(){
	WriteChar += WordComment[WriteCountlog].charAt(WriteCount);
	WriteCount ++;
	if(WordComment[WriteCountlog].charAt(WriteCount)!=">"){
		TagCheck();
	}else{
		return;
	}
}
//-------------------------------------------------------
//アクティブメニュー
//
//ActiveMenu("レイヤーＩＤ","固定するＸ座標","固定するＹ座標","移動スピード")
//移動スピードは１以上です。１は瞬間移動、２以降大きくなるに連れ遅くなります。
//
//-------------------------------------------------------		
function ActiveMenu(divname,X,Y,speed){
	offsetY = getWinYOffset();
	ActiveMenudiv = getDivFromName(divname);
	initDivPos(ActiveMenudiv);
	posTop = getDivTop(ActiveMenudiv);  
	difference = (offsetY+Y - posTop)/speed;
	if(difference > 0 ){difference = Math.ceil(difference); }
	MoveTop = posTop + difference
	moveDivTo(ActiveMenudiv,X,MoveTop);
}
//-------------------------------------------------------
//ポップアップ式メニュー
//
// PopMenu("レイヤーID","幅","高さ","スピード")
// PopMenu2("レイヤーID")
// MenuHide("レイヤーID")
//メニューの見出しにonMouseOverにPopMenu、onMouseOutにMenuHideをセットします。メニュー自体にはPopMenu2とMenuHideをセットします。スピードは高さが割り切れる数を入れます。大きいほど遅くなります。
//-------------------------------------------------------
function PopMenu(divname,x,y,speed){
	PopSizeX = x;
	PopSizeY = y;
	PopSpeed = speed;
	PopDiv=getDivFromName(divname);
	PopClip = 0;
	PopMenuTIMEID=setTimeout("PopMenuMain()",50);
}
function PopMenu2(divname){
	PopDiv=getDivFromName(divname);
	setDivVisibility(PopDiv,true);
	setDivClip(PopDiv,0,PopSizeX,PopSizeY,0);
}
function PopMenuMain(){
	PopClip = PopClip + (PopSizeY / PopSpeed);
	setDivVisibility(PopDiv,true);
	setDivClip(PopDiv,0,PopSizeX,PopClip,0);
	if(PopClip >= PopSizeY){
		clearTimeout(PopMenuTIMEID);
	}else{
			PopMenuTIMEID=setTimeout("PopMenuMain()",50);
	}
}
function MenuHide(divname){
	PopDiv=getDivFromName(divname);
	setDivVisibility(PopDiv,false);
	clearInterval(PopMenuTIMEID);
}
//-------------------------------------------------------
//エクスプローラー風ツリー
//
// ExplorerTree()
//フォルダの画像とファイルの画像を設置する必要があります。folder.gif（閉じたフォルダ）、folder2.gif（開いたフォルダ）、file.gif（ファイル）場所は相対パスでimg/となっています。ソースを変更してもかまいません。
// HTML本体に初期値を設定する必要あり。
// ExpposinitX ,ExpposinitY＝ トップのポジション;
// ExpWidth ＝一行の最大の長さ（PIXEL)表示するメニューの最大の長さ
// menu="タイトル、レベル、FOLDER or FILE or NOTHING"
// タイトルはタグも使えます。ただし、",(カンマ)"は禁止です。また-を使うとNN4.xで動作しません。レベルは0が最高、続いて1,2...と下位層になる。FOLDER or FILE or NOTHINGは0でフォルダ扱い、１でファイル扱いになります。それ以外は、ファイル扱いと一緒ですがアイコンがつきません。
// 配列の並べ方はすべて展開したときをイメージして上から並べてください。グループはひとつ上の配列に属します。
// 例：menu = new Array;
//     menu[0] = "folder1,0,0";
//     menu[1] = "folder11,1,2";
//-------------------------------------------------------
function ExplorerTree(){
	Expdiv = new Array;
	ExpposX = 0;
	ExpposY = 0;
	menucount = menu.length;
	CreateExplorer();
	ExplorerWrite();
}
function CreateExplorer(){
	for(i=0;i<menucount;i++){
		MENU1 = menu[i].split(",");
		if(MENU1[1] == 0){
			menu[i] = menu[i] + ",0,1";
		}else{
			menu[i] = menu[i] + ",0,0";
		}
		switch (MENU1[2]){
		case "0":
			Expdiv[i] = createLayer(0,0,ExpWidth,0,null,"<a href='javascript:void(0)' onClick='setExplorer("+i+")'><img src='img/folder.gif' border=0 width=17 height=13></a>"+MENU1[0]);
			break;
		case "1":
			Expdiv[i] = createLayer(0,0,ExpWidth,0,null,"<img src='img/file.gif' border=0 width=13 height=16>"+MENU1[0]);
			break;
		default:
			Expdiv[i] = createLayer(0,0,ExpWidth,0,null,MENU1[0]);
		}
	}
}
function setExplorer(number){
	ExpposY = 0;
	MENU1 = menu[number].split(",");
	if(MENU1[3] == 0 ){
		MENU1[3] = 1;
		writeDivHTML(Expdiv[number],true,true,"<a href='javascript:void(0)' onClick=setExplorer("+number+")><img src='img/folder2.gif' border=0 width=17 height=13></a>"+MENU1[0]);
	}else{
		MENU1[3] = 0;
		writeDivHTML(Expdiv[number],true,true,"<a href='javascript:void(0)' onClick=setExplorer("+number+")><img src='img/folder.gif' border=0 width=17 height=13></a>"+MENU1[0]);
	}
	menu[number] = MENU1[0] + "," + MENU1[1] + "," + MENU1[2] + "," + MENU1[3] + "," + MENU1[4];
	setExplorer2();
}
function setExplorer2(){
	for(i=0;i<menucount;i++){
		MENU1 = menu[i].split(",");
		Expcount = i;
		setExplorer3();
	}
	ExplorerWrite();
}
function setExplorer3(){
	Expcount = Expcount + 1;
	if(Expcount < menucount){
		MENU2 = menu[Expcount].split(",");
		if(MENU1[1] < MENU2[1]){
			if(!(MENU1[3] == 1 && MENU1[4] == 0)){
				MENU2[4] = MENU1[3];
				menu[Expcount] = MENU2[0] + "," + MENU2[1] + "," + MENU2[2] + "," + MENU2[3] + "," + MENU2[4];
				setExplorer3();
			}
		} 
	}
}

function ExplorerWrite(){
	for(i=0;i<menucount;i++){
		MENU1 = menu[i].split(",");
		initDivPos(Expdiv[i]);
		if(MENU1[4]==1){
			setDivVisibility(Expdiv[i],true);
			ExpposX = MENU1[1] * 20;
			moveDivTo(Expdiv[i],ExpposX+ExpposinitX,ExpposY+ExpposinitY);
			initDivSize(Expdiv[i]);
			ExpposY =ExpposY + getDivHeight(Expdiv[i]);
		}else{
			setDivVisibility(Expdiv[i],false);
		}
	}
}
//-------------------------------------------------------
//ドラッグ＆ドロップ
//DrugDropMain()をonLoad時に起動
//対象となる画像をdivで囲う。
//画像IMGタグの中にonMouseDown="DrugOn(event,レイヤー名);return false;"
//を埋め込む。
//divはstyle=position:absoluteとする。
//-------------------------------------------------------
function DrugDropMain(){
	DrugDropDiv = "";
	document.onmousemove = DrugDropAction;
	document.onmouseup = DrugOff;
//************  m1,n6用。NN6.0で動かなかったら有効にする。（下とセット） *********↓
//	if(navigator.userAgent.indexOf('Gecko')!=-1){   
//		document.onmousedown = mdown;
//	}
//******************************************************************↑
	if(document.layers){
		document.captureEvents(Event.MOUSEMOVE);
		document.captureEvents(Event.MOUSEUP);
	}
}
//************  NN6.0用らしいが未確認なのでコメントあつかい（上とセット） ***********↓
//function mdown(e){
//	if(e.currentTarget.id != 'item'){
//		return;
//	}else{
//		DrugOn(e);
//	}
//}
//*********************************************************************↑
function DrugOn(e,itemname){
	clickPX = getPositionX(e);
	clickPY = getPositionY(e);
	DrugDropDiv = getDivFromName(itemname);
	initDivPos(DrugDropDiv);
	clickPointX = getDivLeft(DrugDropDiv) - clickPX;
	clickPointY = getDivTop(DrugDropDiv) - clickPY; 
	return false;
}

function DrugOff(){
	DrugDropDiv = "";
	return false;
}

function DrugDropAction(e){
	if(DrugDropDiv != ""){
		positionX = getPositionX(e);
		positionY = getPositionY(e);
		moveDivTo(DrugDropDiv,positionX+clickPointX,positionY+clickPointY);
	}
	return false;
}

//-------------------------------------------------------
//引き出し
//HikidashiMain()をonLoad時に起動
//引き出し全体をdivで囲う。
//取っ手になる画像IMGタグの中にonMouseDown="HikidashiOn(event,レイヤー名,開始位置,終了位置);return false;"
//を埋め込む。
//divはstyle=position:absoluteとする。
//-------------------------------------------------------
function HikidashiMain(){
	HikidashiDiv = "";
	document.onmousemove = HikidashiAction;
	document.onmouseup = HikidashiOff;
	if(document.layers){
		document.captureEvents(Event.MOUSEMOVE);
		document.captureEvents(Event.MOUSEUP);
	}
}
function HikidashiOn(e,itemname,topmin,topmax){
	HikidashiPY = getPositionY(e);
	HikidashiTopMin = topmin;
	HikidashiTopMax = topmax;
	HikidashiDiv = getDivFromName(itemname);
	initDivPos(HikidashiDiv);
	HikidashiX = getDivLeft(HikidashiDiv);
	HikidashiY = getDivTop(HikidashiDiv) - HikidashiPY; 
	return false;
}

function HikidashiOff(){
	HikidashiDiv = "";
	return false;
}

function HikidashiAction(e){
	if(HikidashiDiv != ""){
		HikidashiPosY = getPositionY(e) + HikidashiY;
		if(HikidashiPosY >= HikidashiTopMax){HikidashiPosY = HikidashiTopMax;}
		if(HikidashiPosY <= HikidashiTopMin){HikidashiPosY = HikidashiTopMin;}
		moveDivTo(HikidashiDiv,HikidashiX,HikidashiPosY);
	}
	return false;
}
//-------------------------------------------------------
//スライダー
//SliderInit()をonLoad時に起動
//Slider01(左上Ｘ,左上Ｙ,スライダー初期値)・・・範囲指定用スライダー
//Slider02(左上Ｘ,左上Ｙ,スライダー初期値)・・・横スライダー
//Slider03(左上Ｘ,左上Ｙ,スライダー初期値)・・・縦スライダー
//スライダー初期値は0から200までの間
//値の取り出しは、
//Slider01LeftValue(順番)・・・範囲指定スライダー左
//Slider01RightValue(順番)・・・範囲指定スライダー右
//Slider02Value(順番)・・・横スライダー
//Slider03Value(順番)・・・縦スライダー
//順番は、スライダー全体を上から数えた順。一番上は0、範囲指定スライダーはワンセット
//スライダーオブジェはいくつでも作成できるが、順番はすべてのオブジェクトに対して連番になる。
//値は0から200を返す。
//ほかのドラッグ関数と併用できない。
//スライダー画像が別途必要（slidebar01.gif,slidebar02.gif,slider01_left.gif,slider01_right.gif,slider02.gif,slider03.gif）
//-------------------------------------------------------
function SliderInit(){
	SliderNumber = -1;
	SliderObj01 = new Array;
	SliderObj02 = new Array;
	SliderObj03 = new Array;
	SliderParam0 = new Array;
	SliderParam1 = new Array;
	SliderParam2 = new Array;
	SliderParam3 = new Array;
	SliderDiv = "";
	document.onmousemove = SliderAction;
	document.onmouseup = SliderOff;
	if(document.layers){
		document.captureEvents(Event.MOUSEMOVE);
		document.captureEvents(Event.MOUSEUP);
	}
}
function Slider01(x,y,plus){
	SliderNumber ++;
	LEFT ="left";
	RIGHT = "right";
	SliderObj01[SliderNumber] = createLayer(x,y,"","","","<img src='img/slidebar01.gif' height=6 width=200>");
	SliderObj02[SliderNumber] = createLayer((x+plus-9),(y-20),"","","","<img src='img/slider01_left.gif' width=9 height=32 onMouseDown='Slider01On(event,LEFT,"+SliderNumber+");return false'>");
	SliderObj03[SliderNumber] = createLayer((x+plus),(y-20),"","","","<img src='img/slider01_right.gif' width=9 height=32 onMouseDown='Slider01On(event,RIGHT,"+SliderNumber+");return false'>");
	SliderParam0[SliderNumber] = x-9;
	SliderParam1[SliderNumber] = x+200;
	setDivVisibility(SliderObj01[SliderNumber],true);
	setDivVisibility(SliderObj02[SliderNumber],true);
	setDivVisibility(SliderObj03[SliderNumber],true);
}
function Slider01On(e,slider,itemnumber){
	clickPX = getPositionX(e);
	clickPY = getPositionY(e);
	if(slider == 'left'){
		SliderDiv = SliderObj02[itemnumber];
		RangeParam0 = SliderParam0[itemnumber];
		RangeParam1 = getDivLeft(SliderObj03[itemnumber])-9;
		RangeParam2 = false;
		RangeParam3 = false;
	}
	if(slider == 'right'){
		SliderDiv = SliderObj03[itemnumber];
		RangeParam0 = getDivLeft(SliderObj02[itemnumber])+9;
		RangeParam1 = SliderParam1[itemnumber];
		RangeParam2 = false;
		RangeParam3 = false;
	}
	initDivPos(SliderDiv);
	clickPointX = getDivLeft(SliderDiv) - clickPX;
	clickPointY = getDivTop(SliderDiv) - clickPY; 
	return false;
}
function Slider02(x,y,plus){
	SliderNumber ++;
	SliderObj01[SliderNumber] = createLayer(x,y,"","","","<img src='img/slidebar01.gif' height=6 width=200>");
	SliderObj02[SliderNumber] = createLayer(x+plus-9,y-16,"","","","<img src='img/slider02.gif' width=17 height=32 onMouseDown='Slider02On(event,"+SliderNumber+");return false'>");
	SliderParam0[SliderNumber] = x-9;
	SliderParam1[SliderNumber] = x+191;
	setDivVisibility(SliderObj01[SliderNumber],true);
	setDivVisibility(SliderObj02[SliderNumber],true);
}
function Slider02On(e,itemnumber){
	clickPX = getPositionX(e);
	clickPY = getPositionY(e);
	SliderDiv = SliderObj02[itemnumber];
	RangeParam0 = SliderParam0[itemnumber];
	RangeParam1 = SliderParam1[itemnumber];
	RangeParam2 = false;
	RangeParam3 = false;
	initDivPos(SliderDiv);
	clickPointX = getDivLeft(SliderDiv) - clickPX;
	clickPointY = getDivTop(SliderDiv) - clickPY; 
	return false;
}
function Slider03(x,y,plus){
	SliderNumber ++;
	SliderObj01[SliderNumber] = createLayer(x,y,"","","","<img src='img/slidebar02.gif' height=200 width=6>");
	SliderObj02[SliderNumber] = createLayer(x-13,y+plus-9,"","","","<img src='img/slider03.gif' width=32 height=17 onMouseDown='Slider03On(event,"+SliderNumber+");return false'>");
	SliderParam2[SliderNumber] = y-9;
	SliderParam3[SliderNumber] = y+191;
	setDivVisibility(SliderObj01[SliderNumber],true);
	setDivVisibility(SliderObj02[SliderNumber],true);
}
function Slider03On(e,itemnumber){
	clickPX = getPositionX(e);
	clickPY = getPositionY(e);
	SliderDiv = SliderObj02[itemnumber];
	RangeParam0 = false;
	RangeParam1 = false;
	RangeParam2 = SliderParam2[itemnumber];
	RangeParam3 = SliderParam3[itemnumber];
	initDivPos(SliderDiv);
	clickPointX = getDivLeft(SliderDiv) - clickPX;
	clickPointY = getDivTop(SliderDiv) - clickPY; 
	return false;
}

function SliderOff(){
	SliderDiv = "";
	return false;
}

function SliderAction(e){
	if(SliderDiv != ""){
		positionX = getPositionX(e)+clickPointX;
		positionY = getPositionY(e)+clickPointY;
		if(!RangeParam2){
			positionY = getDivTop(SliderDiv);
			if(positionX <= RangeParam0){positionX = RangeParam0;}
			if(positionX >= RangeParam1){positionX = RangeParam1;}
			moveDivTo(SliderDiv,positionX,positionY);
		}
		if(!RangeParam0){
			positionX = getDivLeft(SliderDiv);
			if(positionY <= RangeParam2){positionY = RangeParam2;}
			if(positionY >= RangeParam3){positionY = RangeParam3;}
			moveDivTo(SliderDiv,positionX,positionY);
		}
	}
	return false;
}
function Slider01LeftValue(number){
	return (getDivLeft(SliderObj02[number])-SliderParam0[number]);
}
function Slider01RightValue(number){
	return (getDivLeft(SliderObj03[number])-SliderParam0[number]-9);
}
function Slider02Value(number){
	return (getDivLeft(SliderObj02[number])-SliderParam0[number]);
}
function Slider03Value(number){
	return (getDivTop(SliderObj02[number])-SliderParam2[number]);
}
//-------------------------------------------------------
//カタログスライダー
//catalogSlider(カタログの一番左の座標、カタログの上の座標、スライド幅（通常はパネル1枚の幅）、見出しの幅、z-indexの最低値、スピード）
//これをonLoad時に起動。スピードは１が最高２、３となるにつれ遅くなる。
//パネルとなる素材を用意して、divで囲む。スタイルをposition:absolute;とする。位置は決めなくてもよい。
//id名をpaneldataに,(カンマ)で区切って入れる。
//例：paneldata="パネル1,パネル2,パネル3,....."
//イベント発生は
//catalogAction(パネル番号)
//で呼び出す。パネル番号は1枚目が1、2枚目が2
//-------------------------------------------------------
function catalogSlider(left,top,width,space,zindex,speed){
	catalogTIMEID = "";
	panel = paneldata.split(",");
	catalogSpeed = speed;
	catalogDiv = new Array;
	panelLeft = new Array;
	panelRight = new Array;
	for(i=0;i<panel.length;i++){
		catalogDiv[i] = getDivFromName(panel[i]);
		panelLeft[i] = left - width + space*(i+1);
		panelRight[i] = left + space*i;
		setDivZIndex(catalogDiv[i],panel.length-i+zindex)
		initDivPos(catalogDiv[i]);
		moveDivTo(catalogDiv[i],panelRight[i],top);
	}
}
function catalogAction(panelnumber){
	clearTimeout(catalogTIMEID);
	catalogNumber = panelnumber-1;
	catalogPosX = getDivLeft(catalogDiv[catalogNumber]);
	if(catalogPosX <= panelLeft[catalogNumber]){
		catalogTIMEID = setInterval("catalogMoveRight()",50);
	}else{
		if(catalogNumber != 0){
			catalogTIMEID = setInterval("catalogMoveLeft()",50);
		}
	}
}
function catalogMoveLeft(){
	catalogPosX = getDivLeft(catalogDiv[catalogNumber-1]);
	if(catalogPosX >panelLeft[catalogNumber-1]){
		for(i=0;i<catalogNumber;i++){
			catalogPosX = getDivLeft(catalogDiv[i]);
			setcatalogPosX = catalogPosX - Math.ceil((catalogPosX - panelLeft[i])/catalogSpeed);
			setcatalogPosY = getDivTop(catalogDiv[i]);
			moveDivTo(catalogDiv[i],setcatalogPosX,setcatalogPosY);
		}
	}else{
		clearInterval(catalogTIMEID);
	}
}
function catalogMoveRight(){
	catalogPosX = getDivLeft(catalogDiv[catalogNumber]);
	if(catalogPosX < panelRight[catalogNumber]){
		for(i=catalogNumber;i<panel.length;i++){
			catalogPosX = getDivLeft(catalogDiv[i]);
			setcatalogPosX = catalogPosX + Math.ceil((panelRight[i] - catalogPosX)/catalogSpeed);
			setcatalogPosY = getDivTop(catalogDiv[i]);
			moveDivTo(catalogDiv[i],setcatalogPosX,setcatalogPosY);
		}
	}else{
		clearInterval(catalogTIMEID);
	}
}