// html書き出し用
var opt_wcls='<option value="0" selected="selected"><option value="19">異能者</option><option value="1">大いなる者</option><option value="2">落とし子</option><option value="3">陰陽師</option><option value="4">吸血鬼</option><option value="5">強化人間</option><option value="20">侍</option><option value="6">使徒</option><option value="7">人造人間</option><option value="8">侵魔召喚師</option><option value="9">人狼</option><option value="10">聖職者</option><option value="21">仙人</option><option value="11">転生者</option><option value="12">忍者</option><option value="13">魔剣使い</option><option value="14">魔術師</option><option value="15">魔物使い</option><option value="22">錬金術師</option><option value="16">勇者</option><option value="17">夢使い</option><option value="18">龍使い</option>';
var opt_wlv='<option value="0" selected="selected">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option>';

/*** データ変数初期化 ***/
// スタイルクラス
// 0～10:命中,回避,攻撃,防御,魔導,抵抗,魔攻,魔防,耐久力,魔法力,行動値
// 11:耐久力成長、12:魔法力成長、13:クラス名、14:自動取得特殊能力ID
var StyleCls=[[0,0,0,0,0,0,0,0,0,0,0,0,0,'',0],[3,2,4,2,0,0,0,0,5,2,2,3,1,'アタッカー',3],[0,0,0,0,3,2,4,2,2,5,2,1,3,'キャスター',4],[2,0,2,4,2,0,0,3,6,1,0,3,1,'ディフェンダー',5],[2,0,0,2,3,1,2,3,3,4,0,2,2,'ヒーラー',6]];

// ウィザードクラス
// 0～10:命中,回避,攻撃,防御,魔導,抵抗,魔攻,魔防,耐久力,魔法力,行動値、11:耐久力成長、12:魔法力成長
// 13:クラス名
var WizCls=[[0,0,0,0,0,0,0,0,0,0,0,0,0,'']];
WizCls[1]=[2,0,2,0,3,2,3,1,3,4,0,2,2,'大いなる者'];
WizCls[2]=[3,0,3,0,3,0,3,0,5,2,1,2,2,'落とし子'];
WizCls[3]=[0,2,0,0,2,3,2,4,2,5,0,1,3,'陰陽師'];
WizCls[4]=[2,0,2,0,2,2,3,2,4,3,0,2,2,'吸血鬼'];
WizCls[5]=[4,1,3,2,0,0,0,0,5,2,3,3,1,'強化人間'];
WizCls[6]=[0,0,0,0,2,4,2,4,1,6,1,1,3,'使徒'];
WizCls[7]=[3,0,3,4,0,0,0,3,6,1,0,3,1,'人造人間'];
WizCls[8]=[0,0,0,0,3,3,3,3,2,5,1,1,3,'侵魔召喚師'];
WizCls[9]=[3,3,4,1,0,0,0,0,6,1,2,3,1,'人狼'];
WizCls[10]=[1,0,3,1,1,2,2,3,3,4,0,2,2,'聖職者'];
WizCls[11]=[2,1,2,2,1,1,2,2,4,3,0,2,2,'転生者'];
WizCls[12]=[3,3,3,0,0,0,0,0,5,2,4,3,1,'忍者'];
WizCls[13]=[4,2,3,2,0,0,0,0,5,2,2,3,1,'魔剣使い'];
WizCls[14]=[0,0,0,0,4,3,4,2,2,5,0,1,3,'魔術師'];
WizCls[15]=[3,0,2,3,0,2,0,3,4,3,0,2,2,'魔物使い'];
WizCls[16]=[2,1,2,1,2,1,2,1,4,3,1,2,2,'勇者'];
WizCls[17]=[0,1,0,2,3,2,3,2,2,5,0,1,3,'夢使い'];
WizCls[18]=[3,2,4,4,0,0,0,0,6,1,0,3,1,'龍使い'];
WizCls[19]=[2,2,2,0,3,2,2,0,3,4,0,2,2,'異能者'];
WizCls[20]=[4,1,3,0,2,0,0,0,5,2,3,3,1,'侍'];
WizCls[21]=[2,0,2,0,3,2,2,2,3,4,0,2,2,'仙人'];
WizCls[22]=[2,0,2,0,3,1,3,1,2,5,1,1,3,'錬金術師'];
// クラスを追加時の注意
// cls_numをクラスの個数に変更、tpl.htmlの a_def['WCLvHis'] を変更
var cls_num=22;

// 属性の配列
// 第1第2属性による値
// 0～7:筋力,器用,敏捷,精神,知力,信仰,知覚,幸運、8,9:耐久力,魔法力
var Zokusei=[[0,0,0,0,0,0,0,0,0,0,0]];
Zokusei[1]='天';
Zokusei[2]='冥';
Zokusei[3]='地';
Zokusei[4]='水';
Zokusei[5]='火';
Zokusei[6]='風';
Zokusei[7]='虚';

Zokusei[11]=[5,6,5,8,8,12,6,13,12,20];
Zokusei[12]=[6,7,5,9,10,10,6,10,13,17];
Zokusei[13]=[8,6,4,9,7,11,7,11,15,16];
Zokusei[14]=[5,7,6,9,9,11,6,10,12,17];
Zokusei[15]=[8,8,5,7,7,10,7,11,15,15];
Zokusei[16]=[6,9,4,8,8,10,8,10,13,16];
Zokusei[17]=[5,7,5,10,7,10,7,12,12,15];
Zokusei[21]=[6,8,7,11,11,6,6,8,13,15];
Zokusei[22]=[7,9,7,12,13,4,6,5,14,18];
Zokusei[23]=[9,8,6,12,10,5,7,6,16,14];
Zokusei[24]=[6,9,8,12,12,5,6,5,13,15];
Zokusei[25]=[9,10,7,10,10,4,7,6,16,14];
Zokusei[26]=[7,11,6,11,11,4,8,5,14,14];
Zokusei[27]=[6,9,7,13,10,4,7,7,13,14];
Zokusei[31]=[10,6,6,11,6,8,7,9,17,14];
Zokusei[32]=[11,7,6,12,8,6,7,6,18,14];
Zokusei[33]=[13,6,5,12,5,7,8,7,20,17];
Zokusei[34]=[10,7,7,12,7,7,7,6,17,14];
Zokusei[35]=[13,8,6,10,5,6,8,7,20,12];
Zokusei[36]=[11,9,5,11,6,6,9,6,18,13];
Zokusei[37]=[10,7,6,13,5,6,8,8,17,12];
Zokusei[41]=[5,6,8,9,11,10,5,9,12,17];
Zokusei[42]=[6,7,8,10,13,8,5,6,13,17];
Zokusei[43]=[8,6,7,10,10,9,6,7,15,16];
Zokusei[44]=[5,7,9,10,12,9,5,6,12,20];
Zokusei[45]=[8,8,8,8,10,8,6,7,15,16];
Zokusei[46]=[6,9,7,9,11,8,7,6,13,16];
Zokusei[47]=[5,7,8,11,10,8,6,8,12,16];
Zokusei[51]=[12,8,8,7,5,7,7,9,19,13];
Zokusei[52]=[13,9,8,8,7,5,7,6,20,13];
Zokusei[53]=[15,8,7,8,4,6,8,7,22,12];
Zokusei[54]=[12,9,9,8,6,6,7,6,19,13];
Zokusei[55]=[15,10,8,6,4,5,8,7,22,14];
Zokusei[56]=[13,11,7,7,5,5,9,6,20,12];
Zokusei[57]=[12,9,8,9,4,5,8,8,19,11];
Zokusei[61]=[7,10,11,7,7,7,7,7,14,14];
Zokusei[62]=[8,11,11,8,9,5,7,4,15,14];
Zokusei[63]=[10,10,10,8,6,6,8,5,17,13];
Zokusei[64]=[7,11,12,8,8,6,7,4,14,14];
Zokusei[65]=[10,12,11,6,6,5,8,5,17,12];
Zokusei[66]=[8,13,10,7,7,5,9,4,15,17];
Zokusei[67]=[7,11,11,9,6,5,8,6,14,12];
Zokusei[71]=[7,7,11,6,5,6,8,13,14,12];
Zokusei[72]=[8,8,11,7,7,4,8,10,15,12];
Zokusei[73]=[10,7,10,7,4,5,9,11,17,11];
Zokusei[74]=[7,8,12,7,6,5,8,10,14,12];
Zokusei[75]=[10,9,11,5,4,4,9,11,17,11];
Zokusei[76]=[8,10,10,6,5,4,10,10,15,11];
Zokusei[77]=[7,8,11,8,4,4,9,12,14,14];

//特殊能力
//0:名称,1:取得CL(0:自動取得),2:重複(0:不可/1～:SL上限),3:タイミング,4:判定値,5;難易度,
//6:対象,7:射程,8:代償,9:効果,10:参照
var Tokunou=[['',0,0,'','','','','','','','']];
Tokunou[1]=['月衣',0,0,'常時','自動成功','なし','自身','なし','なし','アイテムを隠す、上限は筋力×2+総合レベル',126];
Tokunou[2]=['月匣',0,0,'常時','自動成功','なし','自身','なし','なし','月匣を展開する',126];
Tokunou[3]=['物理攻撃力UP',0,0,'常時','自動成功','なし','自身','なし','なし','攻撃を+CL+3する',86];
Tokunou[4]=['魔法攻撃力UP',0,0,'常時','自動成功','なし','自身','なし','なし','魔攻を+CL+3する',87];
Tokunou[5]=['カバーリング',0,0,'オートアクション','自動成功','なし','単体','0Sq','3MP,1c','対象の代わりに防御か魔防を行う、1メインプロセスに1回まで',88];
Tokunou[6]=['蘇生の光',0,0,'オートアクション','自動成功','なし','単体','3Sq','1Pr','対象が行う生死判定を成功にする、1シーンに1回まで',89];


//デフォルト値用配列
var a_def=[];
a_def['Zokusei']=[0,0]; //属性 第1,第2
a_def['Cls']=[0,0]; //ウィザードクラス、スタイルクラス
a_def['ClsLv']=[0,0]; //ウィザードクラス、スタイルクラスのレベル
a_def['WCKeiH']=[0]; //クラス履歴経験チェック
//クラス履歴各レベル
//a_def['WCLvHis']=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; //クラス履歴各レベル
a_def['WCLvHis']=[];
for(var i=0;i<cls_num;i++){
	a_def['WCLvHis'][i]=0;
}
a_def['HMemoCls']=[];
a_def['HMemoClsLv1']=[];
a_def['HMemoClsLv2']=[];

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

var doc=document;
var f=document.MAKING;

/*** 以下 関数定義 ***/
function onLoadPcMaking() {
	doc=document;
	f=document.MAKING;  // onLoad時はこれが必要
	getIndexsSelect();
	var isr=f.is_readed;
	if(isr==undefined){
	}else if(isr.value==0){
		var i,o,a,v;
		//属性はindexと値が等しいのでそのまま代入
		f.Zokusei1ID.selectedIndex=a_def['Zokusei'][0];
		f.Zokusei2ID.selectedIndex=a_def['Zokusei'][1];
		//ウィザード・スタイルクラス
		f.WizClassID.selectedIndex=a_idx['WCls'][a_def['Cls'][0]]
		f.StyleClassID.selectedIndex=a_idx['SCls'][a_def['Cls'][1]]
		//クラスレベル index=value
		f.WizClassLv.selectedIndex=a_def['ClsLv'][0];
		f.StyleClassLv.selectedIndex=a_def['ClsLv'][1];
		//クラス履歴
		v=f.FirstWClsID.value-0;
		if(v>0){
			//作成時クラス
			f.IsFirstWCls[a_idx['WClsHis'][v]].checked=true;
			//経験クラス
			a=a_def['WCKeiH'];
			if(a[0]!=0){
				for(i=0;i<a.length;i++){
					f.elements['IsKeikenWCls[]'][a_idx['WClsHis'][a[i]]].checked=true;
				}
			}
			//レベル index=value
			for(i=1;i<=cls_num;i++){
				f.elements['WCLHis'+i].selectedIndex=a_def['WCLvHis'][i-1];
			}
		}
		
		//履歴メモ クラス、レベル
		a=a_def['Cls'][0];
		o=f.elements['WClsIDH[]'];
		for(i=0;i<o.length;i++){
			o[i].selectedIndex=a_idx['WCls'][a_def['HMemoCls'][i]];
			if(i>1)f.elements['WClsLvH1[]'][i].selectedIndex=a_def['HMemoClsLv1'][i];
			f.elements['WClsLvH2[]'][i].selectedIndex=a_def['HMemoClsLv2'][i];
		}
/*
		var o,i,j,l,ix,df;
		//初期クラス
		o=f.elements['shoki_class[]'];
		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]];
		//クラス
		o=f.elements['SL_class[]'];
		df=a_def['class'];
		l=o.length;
		for(i=0;i<l;i++){
			if(df[i]==undefined)break;
			o[i].selectedIndex=ix[df[i]];
		}
*/
		isr.value=1;
	}
	chkDispKihonNExp();
	chkDispLifepath();
	chkDispTokunou();
	chkDispMagic();
	chkDispArms();
	chkDispItem();
	chkDispPrice();
	chkDispWClsHistory();
	chkDispWCHMemo();
	chkDsblWCHistory();
	chkDispExp();
	chkDispPersonal();
	setPcMemoRows();
	cE();
}
function getIndexsSelect(){
	//レベルなど値とIndexが一致/計算できるものは不要
	var o,l,i,m,j,a_ar,sn;
	//Wizクラス
	//Styleクラス
	//下の配列にどんどん足せばいい SELECTのみ
	var ao=[f.WizClassID,f.StyleClassID];
	var ain=['WCls','SCls'];
	m=ao.length;
	for(j=0;j<m;j++){
		sn=ain[j];
		if(a_idx[sn]==undefined){
			o=ao[j].options;
			l=o.length;
			a_ar=a_idx[sn]=[];
			for(i=0;i<l;i++){
				a_ar[o[i].value]=i;
			}
		}
	}
	//クラス履歴 経験チェック欄
	if(a_idx['WClsHis']==undefined){
		o=f.elements['IsKeikenWCls[]'];
		l=o.length;
		a_ar=a_idx['WClsHis']=[];
		for(i=0;i<l;i++){
			a_ar[o[i].value]=i;
		}
	}
}

/*** 基本能力値 ***/
//属性
function chgZokusei() {
	var z1=f.Zokusei1ID.value-0;
	var z2=f.Zokusei2ID.value-0;
	if (z1!=0&&z2!=0) {var za=Zokusei[''+z1+z2]}
	else {var za=Zokusei[0];}

	f.NZ1.value=za[0];
	f.NZ2.value=za[1];
	f.NZ3.value=za[2];
	f.NZ4.value=za[3];
	f.NZ5.value=za[4];
	f.NZ6.value=za[5];
	f.NZ7.value=za[6];
	f.NZ8.value=za[7];
	f.BB9.value=f.ZokuseiHP.value=za[8];
	f.BB10.value=f.ZokuseiMP.value=za[9];
	//属性名
	f.Zokusei1.value=Zokusei[z1];
	f.Zokusei2.value=Zokusei[z2];
	//CF修正値、プラーナ初期値
	var pk=f.CFS.value=f.PKZ.value=Math.floor(za[7]/3);
	var pn=f.PNZ.value=10-pk;

	calcKihonNouryokuchi();
	cE();
}

function chgNouryokuchiSeicho(){
	calcKihonNouryokuchi();
	cE();
}

function chgNouryokuchiMod(){
	calcKihonNouryokuchi();
	cE();
}

// クラス変更時
function chgWizClass(){
	var w=f.WizClassID.value-0;
	calcWizClsLv();
	var wa=WizCls[w];
	f.BW1.value=wa[0];
	f.BW2.value=wa[1];
	f.BW3.value=wa[2];
	f.BW4.value=wa[3];
	f.BW5.value=wa[4];
	f.BW6.value=wa[5];
	f.BW7.value=wa[6];
	f.BW8.value=wa[7];
	f.BW9.value=wa[8];
	f.BW10.value=wa[9];
	f.BW11.value=wa[10];
	f.WizClsName.value=wa[13];
		
	f.shuzoku.value=w==4?'吸血鬼':(w==9?'人狼':'人間');

	calcClsBattleMod(); //耐久力、魔法力ベースも計算しているためcalcBattleChart()より早く処理
	calcBattleChart();
	if(f.FirstWClsID.value!=0){
		calcWClsHistory();
		chkDsblWCHistory();
	}
	cE();
}
function chgStyleClass(){
	var s=f.StyleClassID.value-0;
	var sa=StyleCls[s];
	f.BS1.value=sa[0];
	f.BS2.value=sa[1];
	f.BS3.value=sa[2];
	f.BS4.value=sa[3];
	f.BS5.value=sa[4];
	f.BS6.value=sa[5];
	f.BS7.value=sa[6];
	f.BS8.value=sa[7];
	f.BS9.value=sa[8];
	f.BS10.value=sa[9];
	f.BS11.value=sa[10];
	f.StyleClsName.value=sa[13];
	setTokunouByIdAndRow(sa[14],3);
//	f.elements['Tokunou_name[]'][2].value=sa[14];
//	f.elements['Tokunou_memo[]'][2].value=sa[15];
//	calcTokunou();
	calcClsBattleMod();
	calcBattleChart();
	cE();
}

function chgWizClsLv() {
	calcWizClsLv();
	if(f.FirstWClsID.value!=0){
		calcWClsHistory();
		chkDsblWCHistory();
	}
	calcClsBattleMod();
	calcBattleChart();
	cE();
}
function chgStyleClsLv() {
	calcTokunou();
	calcClsBattleMod()
	calcBattleChart();
	cE();
}
//戦闘値
function chgBBM(){
	calcBattleChart();
	cE();
}
function chgBCL() {
	f.SumBCL.value=(f.BCL1.value-0)+(f.BCL2.value-0)+(f.BCL3.value-0)+(f.BCL4.value-0)+(f.BCL5.value-0)+(f.BCL6.value-0)+(f.BCL7.value-0)+(f.BCL8.value-0)+(f.BCL9.value-0)+(f.BCL10.value-0)+(f.BCL11.value-0);
	calcBattleChart();
	cE();
}
function chgBTN() {
	calcBattleChart();
	cE();
}
function chgBLV() {
	f.SumBLV.value=(f.BLV1.value-0)+(f.BLV2.value-0)+(f.BLV3.value-0)+(f.BLV4.value-0)+(f.BLV5.value-0)+(f.BLV6.value-0)+(f.BLV7.value-0)+(f.BLV8.value-0)+(f.BLV9.value-0)+(f.BLV10.value-0)+(f.BLV11.value-0);
	calcBattleChart();
	cE();
}
function chgBEq() {
	calcSumSaishu();
	cE();
}
//総合レベル
function chgSogoLv(){
	calcCapacity();
	cE();
}

/*** ライフパス ***/
function chgConnePrice(){
	calcSumConnePrice();
	cE();
}
//コネクション 価格計算
function calcSumConnePrice(){
	var o=f.elements['cone_price[]'],l=o.length,s=0,v;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.cone_price_sum.value=f.Price_cone.value=s;
	calcSumPrice();
}
//コネクション 行増減
function addLineConne(){
	var tbl=doc.getElementById('Table_conne');
	insertRowByTemplate(doc.getElementById('Table_conne_tpl').rows[0],tbl,tbl.rows.length-1);
}
function delLineConne(){
	var tbl=doc.getElementById('Table_conne'),
	af=['cone_name[]','cone_kankei[]','cone_price[]'];
	deleteRowByIndex(tbl,tbl.rows.length-2,af,3);
	calcSumConnePrice();
	cE();
}

/*** 特殊能力 ***/
//入力行を増やす
function addTokunouLine(){
	var tbl=doc.getElementById('Table_tokunou');
	insertRowByTemplate(doc.getElementById('Table_tokunou_tpl').rows[0],tbl,tbl.rows.length);
}
//入力行を減らす
function delTokunouLine(){
	var tbl=doc.getElementById('Table_tokunou'),
	af=['Tokunou_name[]','Tokunou_SL[]','Tokunou_timing[]','Tokunou_hantei[]','Tokunou_nanido[]',
	'Tokunou_taisho[]','Tokunou_range[]','Tokunou_daisho[]','Tokunou_memo[]','Tokunou_page[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,7);
}

/*** 魔法 ***/
//魔法 記憶チェック
function chgMagicIsKioku(){
	var o=f.elements['Magic_isKioku[]'],l=o.length;
	for(var i=0;i<l;i++){
		o[i].value=(f.Magic_isKioku_chk[i].checked)?1:0;
	}
	calcSumMagicLv();
	cE();
}
//魔法 Lv変更
function chgMagicLv(){
	calcSumMagicLv();
	cE();
}
function calcSumMagicLv(){
	var o=f.elements['Magic_lv[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(f.Magic_isKioku_chk[i].checked&&!isNaN(v=o[i].value))s+=v-0;
	}
	f.Magic_lv_sum.value=s;
}
//魔法 価格変更
function chgMagicPrice(){
	calcSumMagicPrice();
	calcSumPrice();
	cE();
}
function calcSumMagicPrice(){
	var o=f.elements['Magic_price[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.Magic_price_sum.value=f.Price_magic.value=s;
}
//魔法記憶容量
function chgMagicCapaMod(){
	calcMagicCapa();
	cE();
}
function calcMagicCapa(){
	f.Magic_capacity.value=(f.KN5.value-0)+(f.Magic_capacity_mod.value-0)+(f.SogoLv.value-0);
}
//魔法 入力行を増やす
function addLineMagic(){
	var tbl=doc.getElementById('Table_magic');
	insertRowByTemplate(doc.getElementById('Table_magic_tpl').rows[0],tbl,tbl.rows.length-1);
}
//魔法 入力行を減らす
function delLineMagic(){
	var tbl=doc.getElementById('Table_magic'),
	af=['Magic_name[]','Magic_lv[]','Magic_type[]','Magic_timing[]','Magic_hantei[]','Magic_nanido[]',
	'Magic_taisho[]','Magic_range[]','Magic_daisho[]','Magic_price[]','Magic_memo[]','Magic_page[]'];
	deleteRowByIndex(tbl,tbl.rows.length-2,af,2);
	calcSumMagicLv();
	calcSumMagicPrice();
	calcSumPrice();
	cE();
}

/*** 武装 ***/
//武装 装備・未装備チェック
function chgArmsIsEquip(){
	var o=f.elements['Arms_isEquip[]'],l=o.length;
	for(var i=1;i<l;i++){
		o[i].value=(f.Arms_isEquip_chk[i].checked)?1:0;
	}
	calcArmsBP();
	calcSumArmsWeight();
	cE();
}
//武装 重量変更
function chgArmsWeight(){
	calcSumArmsWeight();
	cE();
}
//武装 重量合計
function calcSumArmsWeight(){
	var o=f.elements['Arms_weight[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value)&&f.elements['Arms_isEquip[]'][i].value==1)s+=v-0;
	}
	f.Arms_weight_sum.value=s;
}
//武装 価格変更
function chgArmsPrice(){
	calcSumArmsPrice();
	calcSumPrice();
	cE();
}
//武装 価格合計
function calcSumArmsPrice(){
	var o=f.elements['Arms_price[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.Arms_price_sum.value=f.Price_arms.value=s;
	f.Equip_price_sum.value=s+(f.Maso_price_sum.value-0);
}
//武装 戦闘値変更
function chgArmsBP(id){
	var m='AM'+id+'[]',o=f.elements[m],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(f.Arms_isEquip_chk[i].checked&&!isNaN(v=o[i].value))s+=v-0;
	}
	f.elements['AMSum'+id].value=s;
	calcSumEquipBP(id);
	cE();
}
function chgArmsIdo(){
	var m='Arms_ido[]',o=f.elements[m],s=0,v,l=o.length;
	for(var i=0;i<l;i++){
		if(f.Arms_isEquip_chk[i].checked&&!isNaN(v=o[i].value))s+=v-0;
	}
	f.Arms_ido_sum.value=s;
	calcSumEquipIdo();
	cE();
}
//武装 入力行を増やす
function addLineArms(){
	var tbl=doc.getElementById('Table_arms');
	insertRowByTemplate(doc.getElementById('Table_arms_tpl').rows[0],tbl,tbl.rows.length-1);
}
//武装 入力行を減らす
function delLineArms(){
	var tbl=doc.getElementById('Table_arms'),
	af=['Arms_name[]','Arms_type[]','Arms_weight[]','Arms_ido[]','Arms_range[]','Arms_price[]','Arms_memo[]',
	'Arms_page[]','AM1[]','AM2[]','AM3[]','AM4[]','AM5[]','AM6[]','AM7[]','AM8[]','AM9[]','AM10[]','AM11[]'];
	deleteRowByIndex(tbl,tbl.rows.length-2,af,2);
	calcArmsBP();
	calcSumArmsWeight();
	calcSumArmsPrice();
	cE();
}
/*** 魔装 ***/
//魔装 装備・未装備チェック
function chgMasoIsEquip(){
	var o=f.elements['Maso_isEquip[]'],l=o.length;
	for(var i=1;i<l;i++){
		o[i].value=(f.Maso_isEquip_chk[i].checked)?1:0;
	}
	calcMasoBP();
	calcSumMasoLv();
	cE();
}
//魔装 Lv変更
function chgMasoLv(){
	calcSumMasoLv();
	cE();
}
//魔装 Lv合計
function calcSumMasoLv(){
	var o=f.elements['Maso_lv[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value)&&f.elements['Maso_isEquip[]'][i].value==1)s+=v-0;
	}
	f.Maso_lv_sum.value=s;
}
//魔装 価格変更
function chgMasoPrice(){
	calcSumMasoPrice();
	calcSumPrice();
	cE();
}
//魔装 価格合計
function calcSumMasoPrice(){
	var o=f.elements['Maso_price[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.Maso_price_sum.value=f.Price_maso.value=s;
	f.Equip_price_sum.value=s+(f.Arms_price_sum.value-0);
}
//魔装 戦闘値変更
function chgMasoBP(id){
	var m='MM'+id+'[]',o=f.elements[m],s=0,v,l=o.length;
	for(var i=0;i<l;i++){
		if(f.Maso_isEquip_chk[i].checked&&!isNaN(v=o[i].value))s+=v-0;
	}
	f.elements['MMSum'+id].value=s;
	calcSumEquipBP(id);
	cE();
}
function chgMasoIdo(){
	var m='Maso_ido[]',o=f.elements[m],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(f.Maso_isEquip_chk[i].checked&&!isNaN(v=o[i].value))s+=v-0;
	}
	f.Maso_ido_sum.value=s;
	calcSumEquipIdo();
	cE();
}
//魔装 入力行を増やす
function addLineMaso(){
	var tbl=doc.getElementById('Table_Maso');
	insertRowByTemplate(doc.getElementById('Table_Maso_tpl').rows[0],tbl,tbl.rows.length-2);
}
//魔装 入力行を減らす
function delLineMaso(){
	var tbl=doc.getElementById('Table_Maso'),
	af=['Maso_name[]','Maso_type[]','Maso_lv[]','Maso_ido[]','Maso_range[]','Maso_price[]','Maso_memo[]',
	'Maso_page[]','MM1[]','MM2[]','MM3[]','MM4[]','MM5[]','MM6[]','MM7[]','MM8[]','MM9[]','MM10[]','MM11[]'];
	deleteRowByIndex(tbl,tbl.rows.length-3,af,2);
	calcMasoBP();
	calcSumMasoLv();
	calcSumMasoPrice();
	cE();
}
/*** 所持品 ***/
//所持品 価格変更
function chgItemPrice(){
	var o=f.elements['Item_price[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.Item_price_sum.value=f.Price_item.value=s;
	calcSumPrice();
	cE();
}
//所持品 重量変更
function chgItemWeight(){
	calcSumItemWeight();
	cE();
}
function calcSumItemWeight(){
	var o=f.elements['Item_weight[]'],s=0,v,l=o.length;
	for(var i=1;i<l;i++){
		if(!isNaN(v=o[i].value))s+=v-0;
	}
	f.Item_weight_sum.value=s;
}
//所持品 入力行を増やす
function addLineItem(){
	var tbl=doc.getElementById('Table_item');
	insertRowByTemplate(doc.getElementById('Table_item_tpl').rows[0],tbl,tbl.rows.length-1);
}
//所持品 入力行を減らす
function delLineItem(){
	var tbl=doc.getElementById('Table_item'),
	af=['Item_name[]','Item_weight[]','Item_memo[]','Item_price[]','Item_page[]'];
	deleteRowByIndex(tbl,tbl.rows.length-2,af,4);
	calcSumItemWeight();
	chgItemPrice();
//	cE(); //chgItemPriceに任せる
}
//価格合計計算欄変更
function chgPrice(){
	calcSumPrice();
	cE();
}

/***クラス履歴欄 ***/
function chgIsFirstWCls(ob) {
	var v=f.FirstWClsID.value=ob.value;
	f.elements['IsKeikenWCls[]'][a_idx['WClsHis'][v]].checked=true;
	calcWClsHistory();
	calcClsBattleMod();
	chkDsblWCHistory();
	cE();
}
function chgIsKeikenWCls(ob) {
	var v=f.FirstWClsID.value;
	var k=ob.value;
	if(ob.checked==false){
		if(k==v)ob.checked=true;
	}else if(v==0){
		f.IsFirstWCls[a_idx['WClsHis'][k]].checked=true;
		f.FirstWClsID.value=k;
	}
	calcWClsHistory();
	calcClsBattleMod();
	chkDsblWCHistory();
	cE();
}
function chgWCLHistory(){
	calcWClsHistory();
	calcClsBattleMod();
	cE();
}
//全履歴クリア
function clearAllWClsHistory(){
	for(var i=0;i<cls_num;i++){
		f.elements['IsKeikenWCls[]'][i].checked=false;
		f.IsFirstWCls[i].checked=false;
	}
	f.FirstWClsID.value=f.KeikenWClsID.value=0;
	clearWClsLvHistory();
//	cE(); //レベルクリア処理で行う
}
//レベルクリア
function clearWClsLvHistory(){
	for(var i=0;i<cls_num;i++){
		f.elements['WCLHis'+(i+1)].value=0;
	}
//	f.WCLHis1.value=f.WCLHis2.value=f.WCLHis3.value=f.WCLHis4.value=f.WCLHis5.value=f.WCLHis6.value=f.WCLHis7.value=f.WCLHis8.value=f.WCLHis9.value=f.WCLHis10.value=f.WCLHis11.value=f.WCLHis12.value=f.WCLHis13.value=f.WCLHis14.value=f.WCLHis15.value=f.WCLHis16.value=f.WCLHis17.value=f.WCLHis18.value=0;
	calcWClsHistory();
	calcClsBattleMod();
	chkDsblWCHistory();
	cE();
}

//経験点欄
function chgExpItem() {
	calcExp();
	cE();
}

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

// 基本能力値計算
function calcKihonNouryokuchi() {
	var z1=f.NZ1.value-0,s1=f.NS1.value-0;
	var z2=f.NZ2.value-0,s2=f.NS2.value-0;
	var z3=f.NZ3.value-0,s3=f.NS3.value-0;
	var z4=f.NZ4.value-0,s4=f.NS4.value-0;
	var z5=f.NZ5.value-0,s5=f.NS5.value-0;
	var z6=f.NZ6.value-0,s6=f.NS6.value-0;
	var z7=f.NZ7.value-0,s7=f.NS7.value-0;
	var z8=f.NZ8.value-0,s8=f.NS8.value-0;

	var n1=f.KN1.value=z1+s1+(f.NM1.value-0);
	var n2=f.KN2.value=z2+s2+(f.NM2.value-0);
	var n3=f.KN3.value=z3+s3+(f.NM3.value-0);
	var n4=f.KN4.value=z4+s4+(f.NM4.value-0);
	var n5=f.KN5.value=z5+s5+(f.NM5.value-0);
	var n6=f.KN6.value=z6+s6+(f.NM6.value-0);
	var n7=f.KN7.value=z7+s7+(f.NM7.value-0);
	var n8=f.KN8.value=z8+s8+(f.NM8.value-0);
	// プラーナ計算
	var pnz=f.PuranaNBase.value=f.PNZ.value-0;
	var pkz=f.PuranaKBase.value=f.PKZ.value-0;
	f.PuranaNNow.value=f.PuranaN.value=pnz+(f.PNS.value-0)+(f.PNM.value-0);
	f.PuranaKNow.value=f.PuranaK.value=pkz+(f.PKS.value-0)+(f.PKM.value-0);
	// 戦闘値ベース計算
	f.BBB1.value=Math.floor((n2+n7)/2);
	f.BBB2.value=Math.floor((n3+n7)/2);
	f.BBB3.value=Math.floor((n1+n2)/2);
	f.BBB4.value=Math.floor((n1+n6)/2);
	f.BBB5.value=Math.floor((n4+n8)/2);
	f.BBB6.value=Math.floor((n3+n8)/2);
	f.BBB7.value=Math.floor((n4+n5)/2);
	f.BBB8.value=Math.floor((n5+n6)/2);
	//9,10 耐久力、魔法力はcalcClsBattleMod()
	f.BBB11.value=Math.floor((n1+n3+n5+n6)/3);
	//消費経験点計算
	//基本能力値 +1*3
	var ex=0;
	ex+=f.NS1Exp.value=(s1>0)?s1*((2*z1)+1+s1)*3/2:0;
	ex+=f.NS2Exp.value=(s2>0)?s2*((2*z2)+1+s2)*3/2:0;
	ex+=f.NS3Exp.value=(s3>0)?s3*((2*z3)+1+s3)*3/2:0;
	ex+=f.NS4Exp.value=(s4>0)?s4*((2*z4)+1+s4)*3/2:0;
	ex+=f.NS5Exp.value=(s5>0)?s5*((2*z5)+1+s5)*3/2:0;
	ex+=f.NS6Exp.value=(s6>0)?s6*((2*z6)+1+s6)*3/2:0;
	ex+=f.NS7Exp.value=(s7>0)?s7*((2*z7)+1+s7)*3/2:0;
	ex+=f.NS8Exp.value=(s8>0)?s8*((2*z8)+1+s8)*3/2:0;
	f.ExpKihonNouryokuUp.value=ex;
	//プラーナ 内包+1*2、開放+1*3
	var pnz=f.PNZ.value-0,pns=f.PNS.value-0;
	ex+=f.PNSExp.value=(pns>0)?pns*((2*pnz)+1+pns):0;
	var pkz=f.PKZ.value-0,pks=f.PKS.value-0;
	ps=f.PKS.value-0;
	ex+=f.PKSExp.value=(pks>0)?pks*((2*pkz)+1+pks)*3/2:0;
	f.PuranaNBase.value=pnz;
	f.PuranaNNow.value=pnz+pns;
	f.PuranaKBase.value=pkz;
	f.PuranaKNow.value=pkz+pks;
	f.SumNSExp.value=ex;

	calcClsBattleMod();
	calcBattleChart();
	calcExp();
}

/*** 戦闘値計算 ***/

// ウィザードクラスLv計算、セット
function calcWizClsLv() {
	var lv=f.WizClassLv.value-0;
	var wc=f.WizClassID.value-0;
	//初期クラスの場合のみ0>1にする
	var fw=f.FirstWClsID.value-0;
	if((wc!=0)&&(wc==fw||fw==0)&&lv==0){
		lv=f.WizClassLv.value=1;
	}
	f.WizClsLv_disp.value=lv;
}

// クラスによる耐久力、魔法力ベースへの修正
// クラスLvUpによる戦闘値修正分計算
// 総合レベル計算
function calcClsBattleMod() {
	var wc=f.WizClassID.value-0;wl=f.WizClassLv.value-0,sl=f.StyleClassLv.value-0,wlsum=f.SumWCLHis.value-0;
	var fid=f.FirstWClsID.value-0;
	var useH=(fid!=0);
	//履歴欄使用かどうかで、総合レベル計算が変わる
	var slv=f.SogoLv.value=(useH)?wlsum+sl:wl+sl;
	//クラスLvUpによる戦闘値修正
	// ウィザードクラスが初期取得なら-1
	if(!useH||wc==fid){
		wl=(wl>0)?wl-1:0;
	}
//	if(wl>0){--wl;}else{wl=0;}
	var sa=StyleCls[f.StyleClassID.value];
	var hp=(f.ZokuseiHP.value-0)+(sa[11]*sl),mp=(f.ZokuseiMP.value-0)+(sa[12]*sl),o,wa,lv;
	//履歴欄使用の場合、耐久力、魔法力のベースを履歴からも加算
	if(useH){
		var wid;
		for(var i=0;i<cls_num;i++){
			o=f.elements['IsKeikenWCls[]'][i];
			if(o.checked){
				wid=o.value;
				lv=f.elements['WCLHis'+wid].value;
				if(wid==f.FirstWClsID.value&&lv>0)lv--;
				wa=WizCls[wid];
				hp+=(wa[11]*lv)
				mp+=(wa[12]*lv)
			}
		}
	}else{
		wa=WizCls[wc];
		hp+=wa[11]*wl;
		mp+=wa[12]*wl;
	}
	f.BBB9.value=hp+(f.BBM9.value-0);
	f.BBB10.value=mp+(f.BBM10.value-0);
	f.ClsLvupMod.value=wl+sl;
	calcCapacity();
}
//上限値計算
//総合レベルが絡むので別関数に
function calcCapacity(){
	var slv=f.SogoLv.value-0;
	//魔法記憶容量
	calcMagicCapa();
//	f.Magic_capacity.value=(f.KN5.value-0)+(f.Magic_capacity_mod.value-0)+slv;
	//魔法装備可能レベル合計
	f.Maso_capacity.value=(f.KN5.value-0)+slv;
	//重量上限
	//アイテム上限参考値(筋力+総合Lv)
	var k1=f.KN1.value-0;
	f.Arms_capacity.value=f.Item_capacity.value=k1+slv;
	//月衣収納可能重量
	f.Kaguya_capacity.value=k1*2+slv;
}
//戦闘値
function calcBattleChart() {
	//ベース
	var b1=f.BB1.value=(f.BBB1.value-0)+(f.BBM1.value-0);
	var b2=f.BB2.value=(f.BBB2.value-0)+(f.BBM2.value-0);
	var b3=f.BB3.value=(f.BBB3.value-0)+(f.BBM3.value-0);
	var b4=f.BB4.value=(f.BBB4.value-0)+(f.BBM4.value-0);
	var b5=f.BB5.value=(f.BBB5.value-0)+(f.BBM5.value-0);
	var b6=f.BB6.value=(f.BBB6.value-0)+(f.BBM6.value-0);
	var b7=f.BB7.value=(f.BBB7.value-0)+(f.BBM7.value-0);
	var b8=f.BB8.value=(f.BBB8.value-0)+(f.BBM8.value-0);
	var b9=f.BB9.value=(f.BBB9.value-0)+(f.BBM9.value-0);
	var b10=f.BB10.value=(f.BBB10.value-0)+(f.BBM10.value-0);
	var b11=f.BB11.value=(f.BBB11.value-0)+(f.BBM11.value-0);
	//未装備
	f.BMi1.value=b1+(f.BW1.value-0)+(f.BS1.value-0)+(f.BCL1.value-0)+(f.BTN1.value-0)+(f.BLV1.value-0);
	f.BMi2.value=b2+(f.BW2.value-0)+(f.BS2.value-0)+(f.BCL2.value-0)+(f.BTN2.value-0)+(f.BLV2.value-0);
	f.BMi3.value=b3+(f.BW3.value-0)+(f.BS3.value-0)+(f.BCL3.value-0)+(f.BTN3.value-0)+(f.BLV3.value-0);
	f.BMi4.value=b4+(f.BW4.value-0)+(f.BS4.value-0)+(f.BCL4.value-0)+(f.BTN4.value-0)+(f.BLV4.value-0);
	f.BMi5.value=b5+(f.BW5.value-0)+(f.BS5.value-0)+(f.BCL5.value-0)+(f.BTN5.value-0)+(f.BLV5.value-0);
	f.BMi6.value=b6+(f.BW6.value-0)+(f.BS6.value-0)+(f.BCL6.value-0)+(f.BTN6.value-0)+(f.BLV6.value-0);
	f.BMi7.value=b7+(f.BW7.value-0)+(f.BS7.value-0)+(f.BCL7.value-0)+(f.BTN7.value-0)+(f.BLV7.value-0);
	f.BMi8.value=b8+(f.BW8.value-0)+(f.BS8.value-0)+(f.BCL8.value-0)+(f.BTN8.value-0)+(f.BLV8.value-0);
	f.BMi9.value=b9+(f.BW9.value-0)+(f.BS9.value-0)+(f.BCL9.value-0)+(f.BTN9.value-0)+(f.BLV9.value-0);
	f.BMi10.value=b10+(f.BW10.value-0)+(f.BS10.value-0)+(f.BCL10.value-0)+(f.BTN10.value-0)+(f.BLV10.value-0);
	var m11=f.BMi11.value=b11+(f.BW11.value-0)+(f.BS11.value-0)+(f.BCL11.value-0)+(f.BTN11.value-0)+(f.BLV11.value-0);
	//移動力
	var ib=f.idoB.value=Math.floor(m11/10)+1;
	f.idoMisoubi.value=ib+(f.idoTN.value-0);

	calcSumSaishu();
}
// 最終値計算
function calcSumSaishu() {
	f.BSum1.value=(f.BMi1.value-0)+(f.BEq1.value-0);
	f.BSum2.value=(f.BMi2.value-0)+(f.BEq2.value-0);
	f.BSum3.value=(f.BMi3.value-0)+(f.BEq3.value-0);
	f.BSum4.value=(f.BMi4.value-0)+(f.BEq4.value-0);
	f.BSum5.value=(f.BMi5.value-0)+(f.BEq5.value-0);
	f.BSum6.value=(f.BMi6.value-0)+(f.BEq6.value-0);
	f.BSum7.value=(f.BMi7.value-0)+(f.BEq7.value-0);
	f.BSum8.value=(f.BMi8.value-0)+(f.BEq8.value-0);
	f.BSum9.value=(f.BMi9.value-0)+(f.BEq9.value-0);
	f.BSum10.value=(f.BMi10.value-0)+(f.BEq10.value-0);
	f.BSum11.value=(f.BMi11.value-0)+(f.BEq11.value-0);
	f.idoSum.value=(f.idoMisoubi.value-0)+(f.idoEquip.value-0);
}
/*** 特殊能力関連処理 ***/
//特殊能力IDと行index(0～)で値をセット
function setTokunouByIdAndRow(id,r){
	var o=f.elements['Tokunou_name[]'];
	if(isNaN(id)||isNaN(r)){alert('error!:isNaN(id,row)');return;}
	if(r>=o.length||!(id in Tokunou)){alert('error!:row>l,id_T');return;}
	var a=Tokunou[id];
	f.elements['tokunouID[]'][r].value=id;
	o[r].value=a[0];
	f.elements['Tokunou_SL[]'][r].value=((v=a[2])==0)?(id==0?'':'-'):1;
	f.elements['Tokunou_timing[]'][r].value=a[3];
	f.elements['Tokunou_hantei[]'][r].value=a[4];
	f.elements['Tokunou_nanido[]'][r].value=a[5];
	f.elements['Tokunou_taisho[]'][r].value=a[6];
	f.elements['Tokunou_range[]'][r].value=a[7];
	f.elements['Tokunou_daisho[]'][r].value=a[8];
	f.elements['Tokunou_memo[]'][r].value=a[9];
	f.elements['Tokunou_page[]'][r].value=a[10];
	calcTokunou();
}

function calcTokunou(){
	var s=f.StyleClassID.value;
	var sl=f.StyleClassLv.value-0;
	//アタッカー、キャスターは自動取得の特殊能力で戦闘値修正あり
	f.BTN3.value=(s==1)?3+sl:'';
	f.BTN7.value=(s==2)?3+sl:'';
}
/*** 武装・魔装 ***/
//武装 戦闘値計算
function calcArmsBP(){
	var o=f.Arms_isEquip_chk,s=[0,0,0,0,0,0,0,0,0,0,0,0],v,m,l=o.length;
	for(var i=1;i<l;i++){
		if(!o[i].checked)continue;
		for(var j=0;j<11;j++){
			m='AM'+(j+1)+'[]';
			if(!isNaN(v=f.elements[m][i].value))s[j]+=v-0;
		}
		if(!isNaN(v=f.elements['Arms_ido[]'][i].value))s[11]+=v-0;
	}
	for(var i=0;i<11;i++){
		f.elements['AMSum'+(i+1)].value=s[i];
	}
	f.Arms_ido_sum.value=s[11];
	calcSumAllEquipBP();
}
//魔装 戦闘値計算
function calcMasoBP(){
	var o=f.Maso_isEquip_chk,s=[0,0,0,0,0,0,0,0,0,0,0,0],v,i,m,l=o.length;
	for(var i=1;i<l;i++){
		if(!o[i].checked)continue;
		for(var j=0;j<11;j++){
			m='MM'+(j+1)+'[]';
			if(!isNaN(v=f.elements[m][i].value))s[j]+=v-0;
		}
		if(!isNaN(v=f.elements['Maso_ido[]'][i].value))s[11]+=v-0;
	}
	for(var i=0;i<11;i++){
		f.elements['MMSum'+(i+1)].value=s[i];
	}
	f.Maso_ido_sum.value=s[11];
	calcSumAllEquipBP();
}
//武装・魔装 戦闘値合計
//列ごと計算
function calcSumEquipBP(id){
	var bs='BSum'+id,bm='BMi'+id,eq='BEq'+id,es='EquipSum'+id,as='AMSum'+id,ms='MMSum'+id;
	f.elements[bs].value=(f.elements[bm].value-0)+
		(f.elements[eq].value=f.elements[es].value=(f.elements[as].value-0)+(f.elements[ms].value-0));
//	calcSumSaishu();
}
function calcSumEquipIdo(){
	f.idoSum.value=(f.idoMisoubi.value-0)+(f.idoEquip.value=f.Equip_ido_sum.value=(f.Arms_ido_sum.value-0)+(f.Maso_ido_sum.value-0));
}
//全戦闘値計算
function calcSumAllEquipBP(){
	var eq,es,as,ms;
	for(var i=1;i<12;i++){
		eq='BEq'+i,es='EquipSum'+i,as='AMSum'+i,ms='MMSum'+i;
		f.elements[eq].value=f.elements[es].value=(f.elements[as].value-0)+(f.elements[ms].value-0);
//		f.elements['BEq'+i].value=f.elements['EquipSum'+i].value=(f.elements['AMSum'+i].value-0)+(f.elements['MMSum'+i].value-0);
	}
	f.idoEquip.value=f.Equip_ido_sum.value=(f.Arms_ido_sum.value-0)+(f.Maso_ido_sum.value-0);
	calcSumSaishu();
}

/*** クラス履歴 ***/
function calcWClsHistory(){
	var i,of,ok,ids=[],nms=[],wf=0,sum=0,v;
	//戦闘値欄のクラス情報からクラス履歴をセット
	var wc=f.WizClassID.value;
	if(wc!=0&&f.FirstWClsID.value!=0){
		var o=f.elements['IsKeikenWCls[]'][a_idx['WClsHis'][wc]];
		if(!o.checked){
			o.checked=true;
		}
		f.elements['WCLHis'+wc].value=f.WizClassLv.value;
	}
	//初期クラスID
	//経験したウィザードクラスID
	// クラス履歴レベル合計
	for(i=0;i<cls_num;i++){
		of=f.IsFirstWCls[i];
		ok=f.elements['IsKeikenWCls[]'][i];
		if(of.checked)wf=of.value;
		if(ok.checked){
			v=ok.value;
			ids.push(v);
			nms.push(WizCls[v][13]);
			sum+=f.elements['WCLHis'+v].value-0;
		}
	}
	f.FirstWClsID.value=wf;
	var l=ids.length;
	f.KeikenWClsID.value=(l>0)?'|'+ids.join('|')+'|':0;
	f.KeikenWClsName.value=(l>0)?nms.join(','):'';
	f.SumWCLHis.value=sum;
	//最少転職回数計算
	f.ClsChgNumMin.value=(l>1)?l-1:0;

}
/*** 価格計算 ***/
function calcSumPrice(){
	f.Price_sum.value=(f.Price_magic.value-0)+(f.Price_arms.value-0)+(f.Price_maso.value-0)+
		(f.Price_item.value-0)+(f.Price_cone.value-0)+(f.Price_other.value-0);
}

/*** 消費経験点計算 ***/
function calcExp() {
	var sum=0;
	//クラスチェンジ 10点/回
	sum+=f.ExpClsChg.value=(f.ClsChgNum.value-0)*10;
	//汎用特殊能力 5点/個
	sum+=f.ExpHanyoTokuno.value=(f.HanyoTokunouGetNum.value-0)*5;
	//プラーナ 内包+1*2、開放+1*3
	//基本能力値欄ではなく経験点欄から計算
	var p1=f.PuranaNBase.value-0,p2=f.PuranaNNow.value-0,pn;
	pn=(p1<p2)?(p2-p1):0;
	sum+=f.ExpPuranaNUp.value=pn*(p1+1+p2);
	p1=f.PuranaKBase.value-0;
	p2=f.PuranaKNow.value-0;
	pn=(p1<p2)?(p2-p1):0;
	sum+=f.ExpPuranaKUp.value=pn*(p1+1+p2)*3/2;
	//基本能力値 基本能力値欄からの自動計算か手入力
	sum+=f.ExpKihonNouryokuUp.value-0;
	//アイテム常備化 手入力
	sum+=f.ExpItemJoubi.value-0;
	//合計
	f.ExpSum.value=sum;
}

/*** 入力可／不可チェック ***/
function chkDsblWCHistory() {
	var i,o;
	for (i=0;i<cls_num;i++) {
		o=f.elements['IsKeikenWCls[]'][i];
		f.elements['WCLHis'+o.value].disabled=!o.checked
	}
}

function isDisableCheck() {
}

/*** 表示非表示制御 ***/
// 二つの関数に分けているのは、開いたときの処理がちゃんと動くように
//ライフパス

function chkDispLifepath(){
	var flg=f.is_disp_lifepath.value-0;
	doc.getElementById('lifepath_disp').style.display=(flg?'block':'none');
	doc.getElementById('lifepath_nodisp').style.display=(flg?'none':'block');
}
function chgDispLifepath(flg){
	f.is_disp_lifepath.value=(flg==0)?0:1;
	chkDispLifepath();
}
//基本能力値成長に必要な消費経験点
function chkDispKihonNExp(){
	var flg=f.is_disp_kihonexp.value-0;
	doc.getElementById('kihonNExp_nodisp').style.display=(!flg?'inline':'none');
	doc.getElementById('kihonexp_disp').style.display=(flg?'inline':'none');
	doc.getElementById('kihonexp0_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp1_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp2_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp3_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp4_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp5_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp6_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp7_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp8_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp9_disp').style.display=(flg?'block':'none');
	doc.getElementById('kihonexp10_disp').style.display=(flg?'block':'none');
}
function chgDispKihonNExp(flg){
	f.is_disp_kihonexp.value=(flg==0)?0:1;
	chkDispKihonNExp();
}
//特殊能力
function chkDispTokunou(){
	var flg=f.is_disp_tokunou.value-0;
	doc.getElementById('tokunou_disp').style.display=(flg?'block':'none');
	doc.getElementById('tokunou_nodisp').style.display=(flg?'none':'block');
}
function chgDispTokunou(flg){
	f.is_disp_tokunou.value=(flg==0)?0:1;
	chkDispTokunou();
}
//魔法
function chkDispMagic(){
	var flg=f.is_disp_magic.value-0;
	doc.getElementById('magic_disp').style.display=(flg?'block':'none');
	doc.getElementById('magic_nodisp').style.display=(flg?'none':'block');
}
function chgDispMagic(flg){
	f.is_disp_magic.value=(flg==0)?0:1;
	chkDispMagic();
}
//武装・魔装
function chkDispArms(){
	var flg=f.is_disp_arms.value-0;
	doc.getElementById('arms_disp').style.display=(flg?'block':'none');
	doc.getElementById('arms_nodisp').style.display=(flg?'none':'block');
}
function chgDispArms(flg){
	f.is_disp_arms.value=(flg==0)?0:1;
	chkDispArms();
}
//所持品
function chkDispItem(){
	var flg=f.is_disp_item.value-0;
	doc.getElementById('item_disp').style.display=(flg?'block':'none');
	doc.getElementById('item_nodisp').style.display=(flg?'none':'block');
}
function chgDispItem(flg){
	f.is_disp_item.value=(flg==0)?0:1;
	chkDispItem();
}
//価格合計計算
function chkDispPrice(){
	var flg=f.is_disp_price.value-0;
	doc.getElementById('price_disp').style.display=(flg?'block':'none');
	doc.getElementById('price_nodisp').style.display=(flg?'none':'block');
}
function chgDispPrice(flg){
	f.is_disp_price.value=(flg==0)?0:1;
	chkDispPrice();
}
//クラス履歴
function chkDispWClsHistory(){
	var flg=f.is_disp_wclshistory.value-0;
	doc.getElementById('wclshistory_disp').style.display=(flg?'block':'none');
	doc.getElementById('wclshistory_nodisp').style.display=(flg?'none':'block');
}
function chgDispWClsHistory(flg){
	f.is_disp_wclshistory.value=(flg==0)?0:1;
	chkDispWClsHistory();
}
//クラスチェンジ履歴メモ
function chkDispWCHMemo(){
	var flg=f.is_disp_wchis_memo.value-0;
	doc.getElementById('wchis_memo_disp').style.display=(flg?'block':'none');
	doc.getElementById('wchis_memo_nodisp').style.display=(flg?'none':'block');
}
function chgDispWCHMemo(flg){
	f.is_disp_wchis_memo.value=(flg==0)?0:1;
	chkDispWCHMemo();
}
//経験値計算
function chkDispExp(){
	var flg=f.is_disp_exp.value-0;
	doc.getElementById('exp_disp').style.display=(flg?'block':'none');
	doc.getElementById('exp_nodisp').style.display=(flg?'none':'block');
}
function chgDispExp(flg){
	f.is_disp_exp.value=(flg==0)?0:1;
	chkDispExp();
}
//パーソナルデータ
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='';
//属性設定
if(f.Zokusei1ID.value==0||f.Zokusei2ID.value==0){
	aE('第1属性または第2属性が設定されていません。 [設定間違い]');
}
//クラス設定
if(f.WizClassID.value==0){
	aE('ウィザードクラスが設定されていません。 [設定間違い]');
}
if(f.StyleClassID.value==0){
	aE('スタイルクラスが設定されていません。 [設定間違い]');
}
if(f.message.value==''){
	//LvUp修正、総合レベル修正
	if(f.ClsLvupMod.value!=f.SumBCL.value){
		aE('クラスレベル上昇分の戦闘値修正の値が間違っています。 [設定間違い]');
	}
	if(f.SogoLv.value!=f.SumBLV.value){
		aE('総合レベル分の戦闘値修正の値が間違っています。 [設定間違い]');
	}
	//魔法Lv合計
	if(f.Magic_lv_sum.value-0>f.Magic_capacity.value-0){
		aE('魔法Lvの合計が記憶容量を超えています。記憶する魔法の選択が必要です。 [確認]');
	}
	//武装重量
	if(f.Arms_weight_sum.value-0>f.Arms_capacity.value-0){
		aE('武装の重量合計が上限を超えています。装備する武装の選択が必要です。 [確認]');
	}
	//魔装Lv合計
	if(f.Maso_lv_sum.value-0>f.Maso_capacity.value-0){
		aE('魔装のLv合計が上限を超えています。装備する魔装の選択が必要です。 [確認]');
	}
	//クラス履歴
	var fc=f.FirstWClsID.value-0;
	if(fc!=0){
		//作成時クラスがレベル0
		if(f.elements['WCLHis'+fc].value==0){
			aE('クラス履歴欄で作成時のクラスのレベルが1以上になっていません。 [設定間違い]');
		}
		//現在のクラス、レベル一致チェック
		if(f.WizClassLv.value!=f.elements['WCLHis'+f.WizClassID.value].value){
			aE('現在のウィザードクラスのレベルがクラス履歴欄と異なっています。 [確認]');
		}
	}
	//クラスチェンジ回数
	if((f.ClsChgNum.value-0)<(f.ClsChgNumMin.value-0)){
		aE('経験点計算でクラスチェンジの回数が最少回数より少なく設定されています。 [確認]');
	}
}
// エラーチェック関数ここまで
}

