
//初期クラスの情報格納
//var arr_shoki_class_id=[0,0,0]; // クラスID
//var arr_shoki_class_index=[0,0,0]; // 選択クラスのインデックス 
//var arr_shoki_class_lv=[0,0,0]; // 下限レベル
var aShokiCls_id=[0,0,0]; //クラスID
var aShokiCls_lv=[0,0,0]; //下限レベル
var aShokiCls_index=[0,0,0]; //選択クラスのインデックス クラスリストを動的に変える時はあったほうがいい


// データ用変数初期化
var ClassData=[];
var Item=[];

/* 
特定条件でのみ持てるアイテムは、Item[]のindexを持つ配列を作ればいい
var Item_Sikifuda[] = ...
*/

//デフォルト値用配列
var a_def=[];
a_def['s_cls']=[0,0,0]; //初期クラス
a_def['class']=[0,0,0,0,0,0]; //クラス
a_def['clslv']=[0,0,0,0,0,0]; //クラスレベル
//a_def['item']=[0,0,0,0]; //アイテム

//select Index格納用配列
var a_idx=[];

var doc=document,f=document.MAKING;

function $(Id){
	return document.getElementById(Id);
}
function $F(name){
	var o=document.getElementsByName(name);
	if(o.length)return o.item(0).value;
	else return o;
//	return document.getElementsByName(name).item(0).value;
}
function $FE(name){
//	return document.MAKING.elements[name];
	var o=document.getElementsByName(name);
	if(o.length==1)return o[0];
	else return o;
}

/*** 以下 関数定義 ***/
function onLoadPcMaking() {
	doc=document;
	f=document.MAKING;
	getIndexsSelect();
	var isr=f.is_readed;
	if(isr==undefined){
	}else if(isr.value==0){
		var o,j,l,ix,df;
		//初期クラス
//		o=fe['shoki_class_id[]'];
		o=$FE('shoki_class_id[]');
		ix=a_idx['class'];
		df=a_def['s_cls'];
		o[0].selectedIndex=ix[df[0]];
		o[1].selectedIndex=ix[df[1]];
		o[2].selectedIndex=ix[df[2]];
		calcArrShokiCls(df,[ix[df[0]],ix[df[1]],ix[df[2]]])
		//クラス、レベル
		o=$FE('class_id[]');
		olv=$FE('class_lv[]');
		df=a_def['class'];
		dlv=a_def['clslv'];
		l=o.length;
		for(var i=0;i<l;i++){
			if(df[i]==undefined)break;
			o[i].selectedIndex=ix[df[i]];
			olv[i].selectedIndex=dlv[i];
		}
		isr.value=1;
	}
	chkDispBougyo();
	chkDispTokugi();
	chkDispPersonal();
	setPcMemoRows();
	setCreateBonusNouryoku();
	cE();
}
function getIndexsSelect(){
	//レベルなど値とIndexが一致するものは不要
	var o,l,a_ar;
	//クラス
	if(a_idx['class']==undefined){
//		var o=fe['class_id[]'][0].options;
		var o=$FE('class_id[]')[0].options;
		l=o.length;
		a_ar=a_idx['class']=[];
		for(var i=0;i<l;i++){
			a_ar[o[i].value]=i;
		}
	}
}

/*** 変更・入力時処理 ***/
function chgShokiClass(id) {
	var oc=$FE('shoki_class_id[]'),idx=oc[id].value-0,cd=ClassData[idx]['data'];
	for(var i=0;i<7;i++){
		$FE('NP'+(i+1)+'[]')[id].value=cd[i];
	}
	$FE('shoki_class_name[]')[id].value=cd[8]; //クラス名
	$FE('shoki_class_chofukufuka[]')[id].value=cd[9]; //重複不可クラス

	//初期クラスの配列 値セット
	var v=[oc[0].value-0,oc[1].value-0,oc[2].value-0];
	var x=[oc[0].selectedIndex,oc[1].selectedIndex,oc[2].selectedIndex];
	calcArrShokiCls(v,x);
//	alert("id: "+aShokiCls_id+"\nlv: "+aShokiCls_lv+"\nix: "+aShokiCls_index+"\n");

	// 戦闘値表のクラス欄にセット
//	setBattleChartClass(); //戦闘値表クラス自動選択
	for(var i=0;i<3;i++){
		if(aShokiCls_id[i]>0){
			$FE('class_id[]')[i].selectedIndex=aShokiCls_index[i];
			$FE('class_lv[]')[i].selectedIndex=aShokiCls_lv[i];
		}else{
//			f.elements['class_id[]'][i].selectedIndex='0';
//			f.elements['class_lv[]'][i].selectedIndex='0';
		}
	}
	setBattleClassPoint(0);
	setBattleClassPoint(1);
	setBattleClassPoint(2);

	calcNoryokuKihonchi();
	calcCharaLv();
	calcKeikentenNoryoku();
	calcKeikentenLv();
	setShuzoku();
	cE();
}

function chgCreateBonus() {
	calcNoryokuKihonchi();
	setCreateBonusNouryoku();
	cE();
}

function chgNouryokuchiShusei() {
	calcNoryokuKihonchi();
	calcKeikentenNoryoku();
//	cE();
}

function chgBaseMod() {
	calcBattleChart();
//	cE();
}

function chgClass(id) {
	var ob=$FE('class_id[]')[id];
	if(id<3&&aShokiCls_lv[id]>0)
		ob.selectedIndex=aShokiCls_index[id];

	setBattleClassPoint(id);
	calcCharaLv();
	calcKeikentenLv();
	calcBattleChart();
	setShuzoku();
	cE();
}
function focusClass(id) {
	if(id<3&&aShokiCls_lv[id]>0){
		$FE('class_id[]')[id].selectedIndex=aShokiCls_index[id];
		$FE('class_lv[]')[id].focus();
	}
}
function blurClass(id) {
	var o=$FE('class_id[]')[id];
	if(id<3&&aShokiCls_lv[id]>0&&o.value!=aShokiCls_lv[id]){
		o.selectedIndex=aShokiCls_index[id];
		setBattleClassPoint(id);
		calcBattleChart();
		cE();
	}
}

function chgClassLv(id) {
	var o=$FE('class_lv[]')[id],lv=o.value-0;
	if(id<3&&lv<aShokiCls_lv[id])
		o.selectedIndex=lv=aShokiCls_lv[id];
	setBattleClassPoint(id);
	calcCharaLv();
	calcKeikentenLv();
	calcBattleChart();
	cE();
}

// アイテム変更
function changeItem(id) {
//	alert(id+' : '+f.elements['SL_item[]'][id].value);
	var o_item=f.elements['SL_item[]'];
	var item_id=o_item[id].value;
	var g=f.game.value;
	f.elements['item_name[]'][id].value=Item[item_id][19];
	if (id==0 || id==1) {
	// 武器の場合
		if (Item[item_id][22]=='両手') {
		// 両手の場合は右手にデータを写して、左手はクリア
			o_item[0].value=item_id;
			o_item[1].value=0;
		}
		var Rid=o_item[0].value;
		var Lid=o_item[1].value;

		f.elements['BM1[]'][0].value=Item[Rid][0];
		f.elements['BM2[]'][0].value=Item[Rid][1];
		f.elements['BM3[]'][0].value=Item[Rid][2];
		f.elements['BM4[]'][0].value=Item[Rid][3];
		f.elements['BM5[]'][0].value=Item[Rid][4];
		f.elements['BM6[]'][0].value=Item[Rid][5];
		f.elements['BM7[]'][0].value=Item[Rid][6];
		f.elements['BM8[]'][0].value=Item[Rid][16];
		f.bukiR_zokusei.value=Item[Rid][15];
		f.bukiR_shatei.value=Item[Rid][21];
		f.elements['item_name[]'][0].value=Item[Rid][19];

		f.elements['BM1[]'][1].value=Item[Lid][0];
		f.elements['BM2[]'][1].value=Item[Lid][1];
		f.elements['BM3[]'][1].value=Item[Lid][2];
		f.elements['BM4[]'][1].value=Item[Lid][3];
		f.elements['BM5[]'][1].value=Item[Lid][4];
		f.elements['BM6[]'][1].value=Item[Lid][5];
		f.elements['BM7[]'][1].value=Item[Lid][6];
		f.elements['BM9[]'][1].value=Item[Lid][16];
		f.bukiL_zokusei.value=Item[Lid][15];
		f.bukiL_shatei.value=Item[Lid][21];
		f.elements['item_name[]'][1].value=Item[Lid][19];

		// 防御修正の処理
		f.elements['DF1[]'][0].value=Item[Rid][7];
		f.elements['DF2[]'][0].value=Item[Rid][8];
		f.elements['DF3[]'][0].value=Item[Rid][9];
		f.elements['DF4[]'][0].value=Item[Rid][10];
		f.elements['DF5[]'][0].value=Item[Rid][11];
		f.elements['DF6[]'][0].value=Item[Rid][12];
		f.elements['DF7[]'][0].value=Item[Rid][13];
		f.elements['DF8[]'][0].value=Item[Rid][14];

		f.elements['DF1[]'][1].value=Item[Lid][7];
		f.elements['DF2[]'][1].value=Item[Lid][8];
		f.elements['DF3[]'][1].value=Item[Lid][9];
		f.elements['DF4[]'][1].value=Item[Lid][10];
		f.elements['DF5[]'][1].value=Item[Lid][11];
		f.elements['DF6[]'][1].value=Item[Lid][12];
		f.elements['DF7[]'][1].value=Item[Lid][13];
		f.elements['DF8[]'][1].value=Item[Lid][14];
		
		// 備考の処理
		f.elements['item_memo[]'][0].value=Item[Rid][23];
		f.elements['item_memo[]'][1].value=Item[Lid][23];

		// 常備化ポイント
		f.elements['item_joubika_point[]'][0].value=Item[Rid][18];
		f.elements['item_joubika_point[]'][1].value=Item[Lid][18];
		// 価格

	} else {
		// 武器以外
		// 戦闘値
		f.elements['BM1[]'][id].value=Item[item_id][0];
		f.elements['BM2[]'][id].value=Item[item_id][1];
		f.elements['BM3[]'][id].value=Item[item_id][2];
		f.elements['BM4[]'][id].value=Item[item_id][3];
		f.elements['BM5[]'][id].value=Item[item_id][4];
		f.elements['BM6[]'][id].value=Item[item_id][5];
		f.elements['BM7[]'][id].value=Item[item_id][6];
		f.elements['BM8[]'][id].value=Item[item_id][16];
		// 防御修正の処理
		f.elements['DF1[]'][id].value=Item[item_id][7];
		f.elements['DF2[]'][id].value=Item[item_id][8];
		f.elements['DF3[]'][id].value=Item[item_id][9];
		f.elements['DF4[]'][id].value=Item[item_id][10];
		f.elements['DF5[]'][id].value=Item[item_id][11];
		f.elements['DF6[]'][id].value=Item[item_id][12];
		f.elements['DF7[]'][id].value=Item[item_id][13];
		f.elements['DF8[]'][id].value=Item[item_id][14];
		// 備考の処理
		f.elements['item_memo[]'][id].value=Item[item_id][23];
		// 常備化ポイント
		f.elements['item_joubika_point[]'][id].value=Item[item_id][18];
		// 価格
	}

	// 必要体力の処理
	if (id==0 || id==1 || id==2) {
	// 武器か防具の場合
		var Rid=o_item[0].value;
		var Lid=o_item[1].value;
		// パワーアシストアーマーの場合は必要体力-1
		if (o_item[2].value!=1509) {
			f.bukiR_HT.value=Item[Rid][20];
			f.bukiL_HT.value=Item[Lid][20];
		} else {
			if (Rid==0) {
				f.bukiR_HT.value='';
			} else if (Item[Rid][20] > 1){
				f.bukiR_HT.value=Item[Rid][20]-1;
			} else {
				f.bukiR_HT.value=0
			}
			if (Lid==0) {
				f.bukiL_HT.value='';
			} else if (Item[Lid][20] > 1){
				f.bukiL_HT.value=Item[Lid][20]-1;
			} else {
				f.bukiL_HT.value=0
			}
		}
	}

	calcSumGenzaichi();
	calcSumBougyoGenzaichi();
	calcSumSoubiJoubika();
	isDisableCheck();
	cE();
}

function chgItemName(){
	f.IR_name1.value=$F('IR_name');
	f.IL_name1.value=$F('IL_name');
	f.IB_name1.value=$F('IB_name');
	f.IA_name1.value=$F('IA_name');
}
function chgItemName1(){
	f.IR_name.value=$F('IR_name1');
	f.IL_name.value=$F('IL_name1');
	f.IB_name.value=$F('IB_name1');
	f.IA_name.value=$F('IA_name1');
}

// 戦闘値修正欄 変更時
function chgBattleMod(){
	calcSumGenzaichi();
	cE();
}

// 防御修正欄 変更時
function chgDefenseMod(){
	calcSumBougyoGenzaichi();
	cE();
}

// 装備の常備化ﾎﾟｲﾝﾄ変更時
function chgSoubiJoubika() {
	calcSumSoubiJoubika();
	cE();
}

// 常備化ポイント自由入力欄 変更時
function changeJoubikaPointInput() {
	calcJoubikaPointTable();
	cE();
}

/*** 特技 ***/
//入力行の増減
function addLineTokugi(){
	var tbl=doc.getElementById('Table_tokugi');
	insertRowByTemplate(doc.getElementById('Table_tokugi_tpl').rows[0],tbl,tbl.rows.length);
}
function delLineTokugi(){
	var tbl=doc.getElementById('Table_tokugi'),
	af=['tokugi_name[]','tokugi_lv[]','tokugi_type[]','tokugi_timing[]','tokugi_hantei[]',
	'tokugi_nanido[]','tokugi_taisho[]','tokugi_range[]','tokugi_daisho[]','tokugi_memo[]','tokugi_page[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,4);
}

/***** ここより計算系処理 *****/

// キャラクターレベル計算
function calcCharaLv() {
	var sum_lv=0,s=$FE('class_lv[]'),l=s.length;
	for (var i=0;i<l;i++) {
		sum_lv+=(s[i].value-0);
	}
	f.character_lv.value=(sum_lv>=3)?sum_lv:'-'
}
// 作成時ボーナスを追加した能力
function setCreateBonusNouryoku(){
	var o=f.STK,l=o.length,a=['体力','反射','知覚','理知','意思','天下'];
	for(var i=0;i<l;i++){
		if(o[i].checked){
			f.STK_nouryoku.value=a[i];
			break;
		}
	}
}

// 能力基本値計算
function calcNoryokuKihonchi() {
	var o1=$FE('NP1[]');
	var o2=$FE('NP2[]');
	var o3=$FE('NP3[]');
	var o4=$FE('NP4[]');
	var o5=$FE('NP5[]');
	var o6=$FE('NP6[]');
	var o7=$FE('NP7[]');
	var os=f.STK,v=[];
	f.NK1.value=v[0]=f.v_tairyoku.value=(o1[0].value-0)+(o1[1].value-0)+(o1[2].value-0)+(f.NS1.value-0)+(f.NO1.value-0)+(os[0].checked?1:0);
	f.NK2.value=v[1]=(o2[0].value-0)+(o2[1].value-0)+(o2[2].value-0)+(f.NS2.value-0)+(f.NO2.value-0)+(os[1].checked?1:0);
	f.NK3.value=v[2]=(o3[0].value-0)+(o3[1].value-0)+(o3[2].value-0)+(f.NS3.value-0)+(f.NO3.value-0)+(os[2].checked?1:0);
	f.NK4.value=v[3]=(o4[0].value-0)+(o4[1].value-0)+(o4[2].value-0)+(f.NS4.value-0)+(f.NO4.value-0)+(os[3].checked?1:0);
	f.NK5.value=v[4]=(o5[0].value-0)+(o5[1].value-0)+(o5[2].value-0)+(f.NS5.value-0)+(f.NO5.value-0)+(os[4].checked?1:0);
	f.NK6.value=v[5]=(o6[0].value-0)+(o6[1].value-0)+(o6[2].value-0)+(f.NS6.value-0)+(f.NO6.value-0)+(os[5].checked?1:0);
	//宿業
	var sk=[o7[0].value,o7[1].value,o7[2].value];
	f.shukugou.value=(sk[0]>sk[1])?(sk[0]>sk[2]?sk[0]:sk[2]):(sk[1]>sk[2]?sk[1]:sk[2]);
	// 能力ボーナス（能力基本値/3）計算
	f.NB1.value=Math.floor(v[0]/3);
	f.NB2.value=Math.floor(v[1]/3);
	f.NB3.value=Math.floor(v[2]/3);
	f.NB4.value=Math.floor(v[3]/3);
	f.NB5.value=Math.floor(v[4]/3);
	f.NB6.value=Math.floor(v[5]/3);
	calcBattleChart();
}

/*** 戦闘値計算 ***/
// クラスの戦闘値を設定
function setBattleClassPoint(id) {
	var idx=$FE('class_id[]')[id].value;
	var olv=$FE('class_lv[]')[id],lv=olv.value;
	var a=ClassData[idx];maxlv=a['data'][11];
	if(idx==0&&lv>0)olv.selectedIndex=lv=0;
	else if(lv>maxlv)olv.selectedIndex=lv=maxlv; //上限レベルチェック クラス変更時にレベルリストを変更もつけたい
	var cd=a[lv];
	for(var i=0;i<8;i++){
		$FE('CB'+(i+1)+'[]')[id].value=cd[i]
	}
	
	//非表示フィールドにクラス名などセット
	cd=ClassData[idx]['data'];
	$FE('class_name[]')[id].value=cd[8];
	$FE('class_chofukufuka[]')[id].value=cd[9];
	
}

function calcBattleChart() {
	//ベース計算
	var b2=f.NB2.value-0,b3=f.NB3.value-0,b4=f.NB4.value-0,b6=f.NB6.value-0,bm=[],bs=[];
	for(var i=0;i<7;i++){
		bm[i]=$F('BSM'+(i+1))-0;
	}
	f.BASE1.value=bs[0]=bm[0]+Math.floor((b2+b3)/2);
	f.BASE2.value=bs[1]=bm[1]+Math.floor((b2+b6)/2);
	f.BASE3.value=bs[2]=bm[2]+Math.floor((b3+b4)/2);
	f.BASE4.value=bs[3]=bm[3]+Math.floor((b4+b6)/2);
	f.BASE5.value=bs[4]=bm[4]+b2+b4;
	f.BASE6.value=bs[5]=bm[5]+(f.NK1.value-0);
	f.BASE7.value=bs[6]=bm[6]+(f.NK5.value-0);
	
	// 未装備小計計算
//	calcSumMisoubi();
	var bp=[0,0,0,0,0,0,0,0],l=$FE('CB1[]').length;
	var o=[$FE('CB1[]'),$FE('CB2[]'),$FE('CB3[]'),$FE('CB4[]'),$FE('CB5[]'),$FE('CB6[]'),$FE('CB7[]'),$FE('CB8[]')];
	for(var i=0;i<l;i++){
		bp[0]+=(o[0][i].value-0);
		bp[1]+=(o[1][i].value-0);
		bp[2]+=(o[2][i].value-0);
		bp[3]+=(o[3][i].value-0);
		bp[4]+=(o[4][i].value-0);
		bp[5]+=(o[5][i].value-0);
		bp[6]+=(o[6][i].value-0);
		bp[7]+=(o[7][i].value-0);
	}
	f.SumMishoubi1.value=bs[0]+bp[0];
	f.SumMishoubi2.value=bs[1]+bp[1];
	f.SumMishoubi3.value=bs[2]+bp[2];
	f.SumMishoubi4.value=bs[3]+bp[3];
	f.SumMishoubi5.value=bs[4]+bp[4];
	f.SumMishoubi6.value=bs[5]+bp[5];
	f.SumMishoubi7.value=bs[6]+bp[6];
	f.SumMishoubi8.value=bp[7];
	calcSumGenzaichi();
}

// 現在値合計 計算
function calcSumGenzaichi() {
	for(var i=1;i<8;i++){
		$FE('SumBP'+i).value=($F('SumMishoubi'+i)-0)+($F('BIR'+i)-0)+($F('BIL'+i)-0)+($F('BIB'+i)-0)+($F('BIA'+i)-0)+($F('BM'+i)-0);
	}
	//攻撃力は左右別
	var s8=($F('SumMishoubi8')-0)+($F('BIB8')-0)+($F('BIA8')-0)+($F('BM8')-0);
	var iR=f.SumBP8R.value=s8+($F('BIR8')-0);
	var iL=f.SumBP8L.value=s8+($F('BIL8')-0);
	f.SumBP8R_full.value=$F('IR_zokusei')+'+'+iR;
	f.SumBP8L_full.value=$F('IL_zokusei')+'+'+iL;
	
//	f.HP.value=$F('SumBP6');
//	f.MP.value=$F('SumBP7');
	var m=f.move_battle.value=(f.SumBP5.value-0)+5;  // 戦闘移動
	f.move_full.value=m*2;  // 全力移動
}

// 防御修正 現在値合計 計算
function calcSumBougyoGenzaichi() {
	for(var i=1;i<9;i++){
		$FE('SumDP'+i).value=($F('DIR'+i)-0)+($F('DIL'+i)-0)+($F('DIB'+i)-0)+($F('DIA'+i)-0)+($F('DOther'+i)-0);
	}
}

//レベルの上限チェック
function chkMaxLv(id){
	var olv=$FE('class_lv[]')[id],lv=olv.value-0;
	var max=ClassData[$FE('class_id[]')[id].value]['data'][11];
	if(lv>max)
		olv.selectedIndex=max;
}

/*** 常備化ポイント計算処理 ***/

// 装備（武器など)の常備化ポイント合計計算
function calcSumSoubiJoubika() {
	f.SumSoubiJoubika.value=($F('IR_joubika')-0)+($F('IL_joubika')-0)+($F('IB_joubika')-0)+($F('IA_joubika')-0)+($F('DOther_joubika')-0);
//	calcJoubikaPointTable();
}
// 常備化欄の合計計算
function calcJoubikaPointTable() {
//	var sum=i=0,oj=f.elements['JP[]'],l=oj.length;
//	for (i=0; i<l; i++) {
//		v=oj[i].value;
//		if (!isNaN(v)) sum += v-0;
//	}
//	f.sumJoubikaP.value=sum;
}


//初期クラス情報を配列に格納 画面起動時にも処理が必要なので関数化
//var aShokiCls_id=[0,0,0]; //クラスID
//var aShokiCls_lv=[0,0,0]; //下限レベル
//var aShokiCls_index=[0,0,0]; //クラス選択リストのインデックス
function calcArrShokiCls(v,x){
	aShokiCls_id=[0,0,0]; // クラスID
	aShokiCls_lv=[0,0,0]; // 下限レベル
	aShokiCls_index=[0,0,0];
	for(var i=0;i<3;i++){
		var c=v[i];
		if(c>0){
			for(var j=0;j<3;j++){
				var m=aShokiCls_id[j];
				if(m==0||m==c){
					aShokiCls_id[j]=c;
					aShokiCls_lv[j]++;
					aShokiCls_index[j]=x[i];
					break;
				}
			}
		}
	}
}

/*** 経験点計算 ***/
function calcKeikenten() {
	f.keikenten_sum.value=(f.keikenten_noryoku.value-0)+(f.keikenten_level.value-0);
}

function calcKeikentenNoryoku() {
	var arr_exp=[30,50,60,60,60,90,90,90,120,120,120,150];
	var exp_sum=0,obj,v;
	for(var i=1;i<7;i++){
		obj=$FE('NS'+i);
		v=obj.value-0;
		if(v>0){
			after_np=$FE('NK'+i).value-0;
			before_np=after_np-v;
			for (var j=(before_np+1);j<=after_np;j++) {
				if(j<20){
					exp_sum+=arr_exp[0];
				} else if (j<=30) {
					exp_sum+=arr_exp[j-19];
				} else {
					exp_sum+=(after_np-30)*arr_exp[11];
					break;
				}
			}
		}
		
	}
	f.keikenten_noryoku.value=exp_sum;
	calcKeikenten();
}
function calcKeikentenLv() {
	var lv=f.character_lv.value-0;
	if (lv>=4) {
		var arr_exp=[0,0,0,0,10,10,20,40,80,160,320,360,400];
		var exp_sum=0;
		for(var i=4;i<=lv;i++){
			if(i<=12){
				exp_sum+=arr_exp[i];
			} else {
				exp_sum+=(lv-12)*arr_exp[12];
				break;
			}
		}
		f.keikenten_level.value=exp_sum;
	} else {
		f.keikenten_level.value=0;
	}
	calcKeikenten();
}

// 種族
function setShuzoku() {
	var arr_shuzoku=[],cd=[],cls=0;
	var ob=$FE('class_id[]'),l=ob.length;
	for(var i=0;i<l;i++) {
		cd=ClassData[ob[i].value-0]['data'];
		if (cd[7]==2) {
			arr_shuzoku.push(cd[8]);
		}
	}
	f.shuzoku.value=(arr_shuzoku.length==0)?'人間':arr_shuzoku.join('、');
}

// 入力可／不可チェック
function isDisableCheck() {
	// 武器 両手持ちなら左手選択不可
//	if (Item[f.elements['SL_item[]'][0].value][22]!='両手') {
//		f.elements['SL_item[]'][1].disabled=false;
//	} else {
//		f.elements['SL_item[]'][1].disabled=true;
//	}
	
}

/*** 表示非表示制御 ***/

//防御修正
function chkDispBougyo(){
	var flg=f.is_disp_bougyo.value-0;
	$('bougyoshuusei_disp').style.display=(flg?'block':'none');
	$('bougyoshuusei_nodisp').style.display=(!flg?'block':'none');
}
function chgDispBougyo(flg){
	f.is_disp_bougyo.value=(flg==0)?0:1;
	chkDispBougyo();
}
//特技
function chkDispTokugi(){
	var flg=f.is_disp_tokugi.value-0;
	doc.getElementById('tokugi_disp').style.display=(flg?'block':'none');
	doc.getElementById('tokugi_nodisp').style.display=(flg?'none':'block');
}
function chgDispTokugi(flg){
	f.is_disp_tokugi.value=(flg==0)?0:1;
	chkDispTokugi();
}
//パーソナルデータ
function chkDispPersonal(){
	var flg=f.is_disp_personal.value-0;
	doc.getElementById('personal_disp').style.display=(flg?'block':'none');
	doc.getElementById('personal_nodisp').style.display=(flg?'none':'block');
}
function chgDispPersonal(flg){
	f.is_disp_personal.value=(flg==0)?0:1;
	chkDispPersonal();
}

/*** エラーチェック関連 ***/

// エラーメッセージ関連
// addErrorMessage
function aE(str) {
	var om=f.message;
	if(str=='') return;
	if(om.value=='')om.value=str;
	else om.value+='\n'+str;
}

// エラーチェック
function cE() {
f.message.value='';

// 初期クラスの設定忘れ
var obj_cls=$FE('shoki_class_id[]');
if (obj_cls[0].value==0 || obj_cls[1].value==0 || obj_cls[2].value==0 ) {
	aE('初期クラスを全て設定していません [設定間違い]');
} else {
	// 作成時ボーナス
	var bp=0,ost=f.STK,l;
	for(var i=0;i<6;i++) {
		if(ost[i].checked){bp=1;break;}
	}
	if (bp==0) aE('作成時ボーナスを割り振っていません [設定間違い]');
	

	/*** クラス関連チェック ***/
	// 同じクラスが複数設定されている
	// レベルが0のクラスがある
	//重複不可クラスチェック
	// 推奨クラスがない
	var flg=0,flg_lv0=0,flg_bas=0;
	var cl=$FE('class_id[]'),clv=$FE('class_lv[]'),clist='|';
	l=cl.length;
	for(var i=0;i<l;i++){
		clist+=cl[i].value+'|';
	}
	for(var i=0;i<l;i++){
		var v=cl[i].value-0,cd=ClassData[v]['data'];
		if(v!=0){
			if(flg_lv0==0&&clv[i].value==0){
				aE('戦闘値表でレベルが０に設定されているクラスがあります [確認]');
				flg_lv0=1;
			}
			if(flg_bas==0&&cd[7]==1)flg_bas=1; //推奨クラスチェック
			if(flg==0){
				for(var j=i+1;j<l;j++){
					if(v==cl[j].value){
						aE('戦闘値表で重複して設定されているクラスがあります [設定間違い]');
						flg=1;
						break;
					}
				}
			}
			
		}
		if(cd[10]!=''){
			var a=cd[10].split('|'),al=a.length;
			for(var j=0;j<al;j++){
				if(clist.indexOf('|'+a[j]+'|')!=-1){
					aE(cd[8]+'の重複不可クラスが設定されています [設定間違い]');
				}
			}
		}
		
	}
	if(flg_bas==0)aE('推奨されている4つのクラスを一つも選択していません [確認]');
	//シャーマン、流派：是楴流はル＝ティラエが必須
	//シャーマンの記述は正誤表で削除
//	if(clist.indexOf('|12|')!=-1&&clist.indexOf('|20|')==-1) aE('シャーマンはル＝ティラエが必須です [設定間違い]');
	if(clist.indexOf('|38|')!=-1&&clist.indexOf('|20|')==-1) aE('流派：是楴流はル＝ティラエが必須です [設定間違い]');

	// 行動力現在値0以下は不可
//	if (f.SumBP5.value <= 0) {
//		aE('行動値が0以下になるような防具を選択しています [設定間違い]');
//	}

	// 体力が装備武器の必要体力未満
//	var oR=$FE('SL_item[]']),vt=$F('v_tairyoku')-0;
//	if (((oi[0].value-0)!=0&&vt < (f.bukiR_HT.value-0)) || 
//	 ((oi[1].value-0)!=0&&vt < (f.bukiL_HT.value-0))) {
//		aE('装備している武器の必要体力が体力基本値を超えています [設定間違い]');
//	}

}
// エラーチェック関数ここまで
}
