//------------------------------------------------------------------------------
//	Bbs JavaScript File
//		掲示板スクリプト
//		v1.00	 by m	1999/12/28	新規
//		v1.01	 by m	1999/12/29	ie4で'http://'が正規表現と解釈されるバグ修正
//------------------------------------------------------------------------------

//	！！！！！JavaScriptに詳しく無い方は、編集しないほうが賢明です！！！！！

//------------------------------------------------------------------------------
//	ローカル変数

var bNN = (navigator.appName.indexOf("Netscape") != -1);
var bIE = (navigator.appVersion.indexOf("MSIE") != -1);

var layDisp;					// 表示レイヤー
var layTag;						// タグレイヤー
var layIcon;					// アイコン選択レイヤー
var cokName;					// 名前クッキー
var cokMail;					// メールクッキー
var cokUrl;						// URLクッキー
var cokIcon;					// アイコンクッキー
var cokBgc;						// 背景色クッキー
var cokFgc;						// フォント色クッキー
var cokX;						// 表示レイヤー位置Xクッキー
var cokY;						// 表示レイヤー位置Yクッキー
var aBbsIcon = new Array(0);	// サンプルアイコン配列
var nBbsIcon = 0;				// サンプルアイコン数

var asColor = new Array(		// カラー配列
	"aliceblue",		"antiquewhite",		"aqua",					"aquamarine",
	"azure",			"beige",			"bisque",				"black",
	"blanchedalmond",	"blue",				"blueviolet",			"brown",
	"burlywood",		"cadetblue",		"chartreuse",			"chocolate",
	"coral",			"cornflowerblue",	"cornsilk",				"crimson",
	"cyan",				"darkblue",			"darkcyan",				"darkgoldenrod",
	"darkgreen",		"darkgray",			"darkkhaki",			"darkmagenta",
	"darkolivegreen",	"darkorange",		"darkorchid",			"darkred",
	"darksalmon",		"darkseagreen",		"darkslateblue",		"darkslategray",
	"darkturquoise",	"darkviolet",		"deeppink",				"deepskyblue",
	"dimgray",			"dodgerblue",		"firebrick",			"floralwhite",
	"forestgreen",		"fuchsia",			"gainsboro",			"ghostwhite",
	"gold",				"goldenrod",		"gray",					"green",
	"greenyellow",		"honeydew",			"hotpink",				"indianred",
	"indigo",			"ivory",			"khaki",				"lavender",
	"lavenderblush",	"lawngreen",		"lemonchiffon",			"lightblue",
	"lightcoral",		"lightcyan",		"lightgoldenrodyellow",	"lightgreen",
	"lightgrey",		"lightpink",		"lightsalmon",			"lightseagreen",
	"lightskyblue",		"lightslategray",	"lightsteelblue",		"lightyellow",
	"lime",				"limegreen",		"linen",				"magenta",
	"maroon",			"mediumaquamarine",	"mediumblue",			"mediumorchid",
	"mediumpurple",		"mediumseagreen",	"mediumslateblue",		"mediumspringgreen",
	"mediumturquoise",	"mediumvioletred",	"midnightblue",			"mintcream",
	"mistyrose",		"moccasin",			"navajowhite",			"navy",
	"oldlace",			"olive",			"olivedrab",			"orange",
	"orangered",		"orchid",			"palegoldenrod",		"palegreen",
	"paleturquoise",	"palevioletred",	"papayawhip",			"peachpuff",
	"peru",				"pink",				"plum",					"powderblue",
	"purple",			"red",				"rosybrown",			"royalblue",
	"saddlebrown",		"salmon",			"sandybrown",			"seagreen",
	"seashell",			"sienna",			"silver",				"skyblue",
	"slateblue",		"slategray",		"snow",					"springgreen",
	"steelblue",		"tan",				"teal",					"thistle",
	"tomato",			"turquoise",		"violet",				"wheat",
	"white",			"whitesmoke",		"yellow",				"yellowgreen"
);

var usrData = new Object;
	usrData.sCgiUrl = '';
	usrData.nDispX = 450;
	usrData.nDispY = 40;
	usrData.sDefBgc = 'aliceblue';
	usrData.sDefFgc = 'black';
	usrData.sIconBgc = 'aquamarine';
	usrData.sIconFgc = 'black';
	usrData.sTagBgc = 'lightyellow';
	usrData.sTagFgc = 'black';

//------------------------------------------------------------------------------
//	掲示板の各種ユーザー設定

function BbsSetUsrData_CgiUrl(s){ usrData.sCgiUrl = s; }
function BbsSetUsrData_DispXY(nX,nY){ usrData.nDispX = nX; usrData.nDispY = nY; }
function BbsSetUsrData_DefColor(sBgc,sFgc){ usrData.sDefBgc = sBgc; usrData.sDefFgc = sFgc; }
function BbsSetUsrData_IconColor(sBgc,sFgc){ usrData.sIconBgc = sBgc; usrData.sIconFgc = sFgc; }
function BbsSetUsrData_TagColor(sBgc,sFgc){ usrData.sTagBgc = sBgc; usrData.sTagFgc = sFgc; }

//------------------------------------------------------------------------------
//	フォームサイズ(IEとNNで最適なフォームサイズに変換する)

function BbsFormTextSize(n)
{
	if(bNN)	return Math.floor(3.2*n/5);
	else	return n;
}

function BbsFormTextAreaSize(n)
{
	if(bNN)	return Math.floor(3.8*n/5);
	else	return n;
}

//------------------------------------------------------------------------------
//	フォーム書き込み処理

function BbsWriteForm()
{
	var s = '';
	
	for(i in asColor){
		s += '<option value="' + asColor[i] + '">' + asColor[i] + '</option>\n';
	}

	document.write('\
<form action="' + usrData.sCgiUrl + '" method="POST" name="bbsform" onsubmit="BbsSet()">\
	<input type="hidden" name="f_bgc" value="white">\
	<input type="hidden" name="f_fgc" value="black">\
	<input type="hidden" name="f_icon_url" value="http://">\
	<input type="hidden" name="f_mode" value="wr">\
	<table border="0" cellspacing="0">\
		<tr>\
			<td align="center">題名</td>\
			<td><input type="text" size="' + BbsFormTextSize(30) + '" name="f_sub"> <input\
			type="submit" name="B1" value="投稿"></td>\
		</tr>\
		<tr>\
			<td align="center">名前</td>\
			<td><input type="text" size="' + BbsFormTextSize(30) + '" name="f_name"> <!input\
			type="button" name="B2" value="アイコン設定" onclick="BbsSetIcon()"></td>\
		</tr>\
		<tr>\
			<td align="center">E-mail</td>\
			<td><input type="text" size="' + BbsFormTextSize(30) + '" name="f_mail"> <input\
			type="button" name="B3" value="クッキー削除" onclick="BbsDelCok()"></td>\
		</tr>\
		<tr>\
			<td align="center">内容</td>\
			<td><textarea name="f_comm" rows="5" cols="' + BbsFormTextAreaSize(50) + '" onfocus="BbsShowDisp()"></textarea></td>\
		</tr>\
		<tr>\
			<td align="center">URL</td>\
			<td><input type="text" size="' + BbsFormTextSize(40) + '" name="f_hp_url"></td>\
		</tr>\
		<tr>\
			<td align="center">色</td>\
			<td>\
				<select name="S" size="1" onchange="BbsOnChangeS()">\
				<option selected>背景色</option><option>フォント色</option></select>\
				<select name="C" size="1" onchange="BbsOnChangeC()">' + s + '\
				</select>\
				<!-input type="radio"  name="f_enable_tag" value="true" onclick="BbsOnEnableTag()"><!--タグ許可//-->\
				<!-input type="radio" checked name="f_enable_tag" value="false" onclick="BbsOnDisableTag()"><!--タグ禁止//-->\
			</td>\
		</tr>\
	</table>\
</form>\
	');
	
	BbsInitForm();
}

//------------------------------------------------------------------------------
//	フォームの初期化

function BbsInitForm()
{
	var w,h;
	cokName = new Cok('cName','');
	cokMail = new Cok('cMail','');
	cokUrl = new Cok('cUrl','http://');
	cokIcon = new Cok('cIcon','http://');
	cokBgc = new Cok('cBgc',usrData.sDefBgc);
	cokFgc = new Cok('cFgc',usrData.sDefFgc);
	cokX = new Cok('cX',usrData.nDispX);
	cokY = new Cok('cY',usrData.nDispY);
	CokReadCookie();
	
	if(document.all){
		w = document.body.clientWidth;
		h = document.body.clientHeight;
	}
	else if(document.layers){
		w = innerWidth;
		h = innerHeight;
	}
	if(cokX.sValue >= w-100){
		cokX.sValue = w - 100;
	}
	if(cokY.sValue >= h-100){
		cokY.sValue = h - 100;
	}
	
	document.bbsform.f_name.value = cokName.sValue;
	document.bbsform.f_mail.value = cokMail.sValue;
	document.bbsform.f_hp_url.value = cokUrl.sValue;
	document.bbsform.f_icon_url.value = cokIcon.sValue;
	document.bbsform.f_bgc.value = cokBgc.sValue;
	document.bbsform.f_fgc.value = cokFgc.sValue;
	BbsSetC();
}

//------------------------------------------------------------------------------
//	削除フォーム書き込み処理

function BbsWriteDeleteForm()
{
	document.write('\
<form action="' + usrData.sCgiUrl + '" method="POST">\
	<input type="hidden" name="f_mode" value="del">\
	<table border="0"><tr>\
		<td>パスワード</td>\
		<td><!--webbot bot="Validation" b-value-required="TRUE" -->\
		<input type="password" size="20" name="f_pass"></td>\
		<td rowspan="2"><input type="submit" name="B1" value="削除"></td>\
	</tr><tr>\
		<td>削除する記事の番号</td>\
		<td><!--webbot bot="Validation" s-data-type="Integer" s-number-separators="x" b-value-required="TRUE" -->\
		<input type="text" size="10" name="f_number" value="0"></td>\
	</tr></table>\
</form>\
	');
}

//------------------------------------------------------------------------------
//	掲示板書き込み

function BbsSet()
{
	cokName.sValue = document.bbsform.f_name.value;
	cokMail.sValue = document.bbsform.f_mail.value;
	cokUrl.sValue = document.bbsform.f_hp_url.value;
	cokIcon.sValue = document.bbsform.f_icon_url.value;
	cokBgc.sValue = document.bbsform.f_bgc.value;
	cokFgc.sValue = document.bbsform.f_fgc.value;
	cokX.sValue = layDisp.nX;
	cokY.sValue = layDisp.nY;
	CokWriteCookie();
	return true;
}

//------------------------------------------------------------------------------
//	タグ除去処理

function BbsCutTag(s)
{
	s = s.replace(/&/ig,'&amp;');
	s = s.replace(/</ig,'&lt;');
	s = s.replace(/>/ig,'&gt;');
	return s;
}

//------------------------------------------------------------------------------
//	表示処理

function BbsShowDisp()
{
	var ic;
	if(document.bbsform.f_icon_url.value == '')
		ic = '';
	else if(document.bbsform.f_icon_url.value == 'http://')
		ic = '';
	else
		ic = '<img src="' + document.bbsform.f_icon_url.value + '" width="32" height="32">';
	
	var fg = document.bbsform.f_fgc.value;
	var bg = document.bbsform.f_bgc.value;
	var t = '<font color="' + fg + '">'
		+ 'サンプル表示<br>'
		+ 'NAME : '+ BbsCutTag(document.bbsform.f_name.value) + '<br>'
		+ 'MAIL : '+ BbsCutTag(document.bbsform.f_mail.value) + '<br>'
		+ 'URL  : '+ BbsCutTag(document.bbsform.f_hp_url.value) + '<br>'
		+ 'ICON : '+ BbsCutTag(document.bbsform.f_icon_url.value) + '<br>'
		+ ic
		+ '</font>';
	if(layDisp){
		layDisp = new Lay(cokX.sValue,cokY.sValue,10,220,120,'Layer for Sample');
		layDisp.SetVsbl(true);
		layDisp.SetDrag(true);
	}
	if(layDisp){
		layDisp.WriteHtml(t);
		layDisp.SetBgColor(bg);
	}
}

//------------------------------------------------------------------------------
//	サンプルアイコン

function BbsIcon(sImg,sAlt)
{
	this.sImg = sImg;
	this.sAlt = sAlt;
	aBbsIcon[nBbsIcon] = this;
	nBbsIcon++;
}

//------------------------------------------------------------------------------
//	アイコンリスト変化時の処理

function BbsOnChangeIconList()
{
	// アドレス入力の場合は、ドラッグ禁止にして、キー入力を受けつける
	if(layIcon.div.document.iconform.ICONLIST.selectedIndex == 1){
		layIcon.SetDrag(false);
	}
	// その他の場合は、ドラッグ許可
	else{
		layIcon.SetDrag(true);
	}
}

//------------------------------------------------------------------------------
//	アイコンセット

function BbsSetIcon()
{
	var s,i,j;
	// アイコンレイヤー生成
	if(!layIcon){
		layIcon = new Lay(layDisp.nX,layDisp.nY+layDisp.nH+10,12,300,120,'Layer for Sample Icon');
		layIcon.SetBgColor(usrData.sIconBgc);
		layIcon.SetVsbl(false);
		layIcon.SetDrag(true);
	}
	// アイコン選択処理
	if(layIcon.IsVsbl()){
		if(layIcon.div.document.iconform.ICONLIST.selectedIndex == 0){
			document.bbsform.f_icon_url.value = 'http://';
		}
		else if(layIcon.div.document.iconform.ICONLIST.selectedIndex == 1){
			if(layIcon.div.document.iconform.ICONURL.value.search(/http:\/\//) != 0){
			}
			else{
				document.bbsform.f_icon_url.value = layIcon.div.document.iconform.ICONURL.value;
			}
		}
		else{
			document.bbsform.f_icon_url.value =
			aBbsIcon[layIcon.div.document.iconform.ICONLIST.selectedIndex-2].sImg;
		}
		
		layIcon.SetVsbl(false);
		BbsShowDisp();
	}
	// アイコンリスト表示処理
	else{
		layIcon.SetVsbl(true);
		s = '<font color="' + usrData.sIconFgc + '">';
		s += 'アイコン設定ボタンを押すと確定<br>(32×32ピクセルで表示)<br>';
		s += '<form method="POST" name="iconform">リスト : ';
		s += '<select name="ICONLIST" size="1" onchange="BbsOnChangeIconList()">';
		s += '<option value="">アイコンを使用しない</option>';
		s += '<option value="">アドレスを入力する</option>';
		for(i in aBbsIcon){
			s += '<option value="' + aBbsIcon[i].sImg + '">' + aBbsIcon[i].sAlt + '</option>\n';
		}
		s += '</select><br>';
		s += 'アドレス : <input type="text" size="' + BbsFormTextSize(40) + '" name="ICONURL" value="'
		s += (document.bbsform.f_icon_url.value.search(/http:\/\//) != 0) ? 'http://' : document.bbsform.f_icon_url.value;
		s += '">';
		s += '</form></font>';
		layIcon.WriteHtml(s);
		
		// リスト位置を現在の設定に合わせる
		j = -1;
		for(i in aBbsIcon){
			if(document.bbsform.f_icon_url.value == aBbsIcon[i].sImg){
				j = i;
				break;
			}
		}
		if(j >= 0){
			layIcon.div.document.iconform.ICONLIST.selectedIndex = parseInt(j)+2;
		}
		else if(document.bbsform.f_icon_url.value == 'http://'){
			layIcon.div.document.iconform.ICONLIST.selectedIndex = 0;
		}
		else{
			layIcon.div.document.iconform.ICONLIST.selectedIndex = 1;
			layIcon.SetDrag(false);
		}
	}
}

//------------------------------------------------------------------------------
//	C(カラー)セット

function BbsSetC()
{
	var i,c;
	if(document.bbsform.S.selectedIndex)
		c = document.bbsform.f_fgc.value;
	else
		c = document.bbsform.f_bgc.value;
	
	for(i in asColor){
		if(c == asColor[i]){
			document.bbsform.C.selectedIndex = i;
			break;
		}
	}
}

//------------------------------------------------------------------------------
//	S(背景色、フォント色セレクト)の変化時の処理

function BbsOnChangeS()
{
	BbsSetC();
	document.bbsform.C.focus();
}

//------------------------------------------------------------------------------
//	C(カラー)の変化時の処理

function BbsOnChangeC()
{
	var c = document.bbsform.C.options[document.bbsform.C.selectedIndex].value;
	if(document.bbsform.S.selectedIndex)
		document.bbsform.f_fgc.value = c;
	else
		document.bbsform.f_bgc.value = c;
	BbsShowDisp();
}

//------------------------------------------------------------------------------
//	タグ許可クリック処理

function BbsOnEnableTag()
{
	if(!layTag){
		var s = '<font color="' + usrData.sTagFgc + '">使用可能なタグ<br>';
		s += BbsCutTag('<font></font>') + '<br>';
		s += BbsCutTag('<b></b>') + '<br>';
		s += BbsCutTag('<a></a>') + '<br>';
		s += BbsCutTag('<img>');
		layTag = new Lay(layDisp.nX,layDisp.nY+layDisp.nH+140,11,100,100,s);
		layTag.SetDrag(true);
		layTag.SetBgColor(usrData.sTagBgc);
	}
	layTag.SetVsbl(true);
}

//------------------------------------------------------------------------------
//	タグ禁止クリック処理

function BbsOnDisableTag()
{
	if(layTag){
		layTag.SetVsbl(false);
	}
}

//------------------------------------------------------------------------------
//	クッキー削除

function BbsDelCok()
{
	CokDelCookie();
	alert("削除しました");
}

//------------------------------------------------------------------------------

