//デフォルト値用配列
var a_def=[]
a_def['item']=[0,0,0,0,0,0];

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

//var def_skills='';
//var def_skill_memos='';
var doc=document;
var f=document.MAKING;

/*** 以下関数 ***/

function onLoadPcMaking() {
	doc=document;
	f=doc.MAKING;  // onLoad時はこれが必要
	getIndexsSelect();
	var isr=f.is_readed;
	if(isr==undefined){
	}else if(isr.value==0){
		//初期値・保存値設定
		//レベル・フェイト
		f.SL_level.selectedIndex=f.V_level.value-1;
		f.SL_fate.selectedIndex=f.V_fate.value-5;
		//種族,メインクラス,サポートクラス
		f.SL_shuzoku.selectedIndex=f.shuzoku_id.value-0;
		f.SL_main_class.selectedIndex=a_idx['Mcls'][f.V_main_class_id.value];
		f.SL_support_class.selectedIndex=a_idx['Scls'][f.V_support_class_id.value];
		//ライフパス
		f.shutujiID.selectedIndex=f.V_shutujiID.value-0;
		f.tokuchoID.selectedIndex=f.V_tokuchoID.value-0;
		f.kyouguID.selectedIndex=f.V_kyouguID.value-0;
		f.unmeiID.selectedIndex=f.V_unmeiID.value-0;
		//ギルドレベル
		f.guild_lv.selectedIndex=f.V_guild_lv.value-1;
		//ギルドメンバー メインクラス、サポートクラス、種族
		var o=f.elements['guild_member_mclsID[]'],l=o.length,
		sc=f.elements['guild_member_sclsID[]'],sz=f.elements['guild_member_shuzokuID[]'],
		mi=f.elements['V_guild_member_mclsID[]'],si=f.elements['V_guild_member_sclsID[]'],
		zi=f.elements['V_guild_member_shuzokuID[]'];
		for(var i=0;i<l;i++){
			o[i].selectedIndex=a_idx['Mcls'][mi[i].value];
			sc[i].selectedIndex=a_idx['Scls'][si[i].value];
			sz[i].selectedIndex=zi[i].value;
		}
		//装備
		df=a_def['item'];
		f.IR_id.selectedIndex=a_idx['itemR'][df[0]];
		f.IL_id.selectedIndex=a_idx['itemL'][df[1]];
		f.IM_id.selectedIndex=a_idx['itemM'][df[2]];
		f.IH_id.selectedIndex=a_idx['itemH'][df[3]];
		f.IB_id.selectedIndex=a_idx['itemB'][df[4]];
		f.IA_id.selectedIndex=a_idx['itemA'][df[5]];
		f.IS_id.selectedIndex=a_idx['itemS'][df[6]];
		isr.value=1;
	}
	//種族スキル
//	setListShuzokuSkill();
////	doc.getElementById("shuzoku_skill_id").selectedIndex=(f.V_shuzoku_skill_id.value-1)-(f.SL_shuzoku.value-1)*5;
//	var sz=f.SL_shuzoku.value-0,zs=f.V_shuzoku_skill_id.value-0;
//	if(sz>0&&zs>0){
//		setTimeout('doc.getElementById("shuzoku_skill_id").selectedIndex='+((zs-1)-(sz-1)*5),30);
//	}
	//種族スキル 新しいロジック
	var sz=f.SL_shuzoku.value-0,sv=f.shuzoku_skill_id.value-0;
	if(sv>0){
		f.elements['SL_shuzoku_skill_'+sz].selectedIndex=a_idx['szSkl'+sz][f.shuzoku_skill_id.value-0];
	}
	chgDispShuzokuSkillSelect();
	
	chkDispLifepath();
	chkDspShutujiName();
	chkDspTokuchoName();
	chkDspKyouguName();
	chkDspUnmeiName();
//	chkDispSkill();
	chkDispBattle();
	chkDispEquip();
	chkDispItem();
	chkDispTokushuhantei();
	chkDispLvUpHistory();
	chkDispSCHistory();
	chkDispSeicho();
	chkDispPersonal();
	chkDispGuild();
//	isDisableCheck();
	chkDblTokushuHantei();
	chkDblHigherMainCls();
	chkDblLvupHistory();
	iDcItemL();
	isDisableSupportClassHistory();
//	chkDblShuzokuSkill();
	setPcMemoRows();
	cE();
}
function getIndexsSelect(){
	//レベルなど値とIndexが一致/計算できるものは不要
	var o,l,m,a_ar,sn;
	//装備(右・左・腕・頭・胴・装の６つ）
	//下の配列にどんどん足せばいい
	var ao=[f.SL_main_class,f.SL_support_class,f.IR_id,f.IL_id,f.IM_id,f.IH_id,f.IB_id,f.IA_id,f.IS_id
		,f.SL_shuzoku_skill_1,f.SL_shuzoku_skill_2,f.SL_shuzoku_skill_3,f.SL_shuzoku_skill_4
		,f.SL_shuzoku_skill_5,f.SL_shuzoku_skill_6,f.SL_shuzoku_skill_7,f.SL_shuzoku_skill_8];
	var ain=['Mcls','Scls','itemR','itemL','itemM','itemH','itemB','itemA','itemS'
		,'szSkl1','szSkl2','szSkl3','szSkl4','szSkl5','szSkl6','szSkl7','szSkl8'];
	m=ao.length;
	for(var 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(var i=0;i<l;i++){
				a_ar[o[i].value]=i;
			}
		}
	}
	a_idx['Mcls'][0]=0;
}

/*** 能力値・HP・MP ***/
function changeLevel() {
	var v=f.SL_level.value-0;

	//レベル増減時にレベルアップ記録欄も増減
	var b=f.V_level.value-0,l=f.elements['LvupH_mcls_name[]'].length-1,n=(v>1)?v-1:1;
	var tbl=doc.getElementById('Table_LvupHistory'),ln=tbl.rows.length-2,f_nk=false;
	//l:現在の欄数、n:あるべき欄数
	if(v>b){ //Lv上昇
		var r=doc.getElementById('Table_LvupHistory_tpl').rows[0],on;
		for(var i=l;i<n;i++){
			insertRowByTemplate(r,tbl,ln);
			doc.getElementsByName('LvupH_num')[i+1].innerHTML=(i+1)+'&gt;'+(i+2);
			ln++;
		}
		setLvUpHistoryValues();
	}else if(v<b){ //Lv減少
		if(confirm("キャラクターLvを下げようとしています。\nレベルアップ記録欄が削除されますがいいですか？")){
			for(var i=l;i>n;i--){
				ln--;
				tbl.deleteRow(ln);
			}
			var ac=[f.CB_LvupH_KN1,f.CB_LvupH_KN2,f.CB_LvupH_KN3,f.CB_LvupH_KN4,f.CB_LvupH_KN5,f.CB_LvupH_KN6,f.CB_LvupH_KN7],
			ao=[f.elements['LvupH_KN1[]'],f.elements['LvupH_KN2[]'],f.elements['LvupH_KN3[]'],f.elements['LvupH_KN4[]'],f.elements['LvupH_KN5[]'],f.elements['LvupH_KN6[]'],f.elements['LvupH_KN7[]']],
			lg=ao[0].length-1,s=[0,0,0,0,0,0,0];
			if(v==1){
				ac[0][0].checked=ac[1][0].checked=ac[2][0].checked=ac[3][0].checked=ac[4][0].checked=ac[5][0].checked=ac[6][0].checked=false;
				ao[0][0].value=ao[1][0].value=ao[2][0].value=ao[3][0].value=ao[4][0].value=ao[5][0].value=ao[6][0].value=0;
				f.elements['LvupH_mcls_name[]'][0].value=f.elements['LvupH_scls_name[]'][0].value=f.elements['LvupH_skill1[]'][0].value=f.elements['LvupH_skill2[]'][0].value='';
			}
			for(var i=0;i<lg;i++){
				s[0]+=(ao[0].value=ac[0][i].checked?1:0);
				s[1]+=(ao[1].value=ac[1][i].checked?1:0);
				s[2]+=(ao[2].value=ac[2][i].checked?1:0);
				s[3]+=(ao[3].value=ac[3][i].checked?1:0);
				s[4]+=(ao[4].value=ac[4][i].checked?1:0);
				s[5]+=(ao[5].value=ac[5][i].checked?1:0);
				s[6]+=(ao[6].value=ac[6][i].checked?1:0);
			}
			f.SA1.value=(0<(f.LvUpKN1_sum.value=s[0]))?s[0]:'';
			f.SA2.value=(0<(f.LvUpKN2_sum.value=s[1]))?s[1]:'';
			f.SA3.value=(0<(f.LvUpKN3_sum.value=s[2]))?s[2]:'';
			f.SA4.value=(0<(f.LvUpKN4_sum.value=s[3]))?s[3]:'';
			f.SA5.value=(0<(f.LvUpKN5_sum.value=s[4]))?s[4]:'';
			f.SA6.value=(0<(f.LvUpKN6_sum.value=s[5]))?s[5]:'';
			f.SA7.value=(0<(f.LvUpKN7_sum.value=s[6]))?s[6]:'';
			f.sumSA.value=s[0]+s[1]+s[2]+s[3]+s[4]+s[5]+s[6];
			calcNoryokuKihonchi();
			f_nk=true;
		}else{
			f.SL_level.value=b;
			return;
		}
	}
	
	if (f.SL_main_class.value>0)calcMainClass();
	if (f.SL_support_class.value>0)calcSupportClass();
	if(!f_nk)calcNoryokuchi();
	f.seicho_point.value=(v-1)*3;
	f.V_level.value=f.level_dsp.value=f.now_level.value=v;
	calcSeichoten();
	chkDblHigherMainCls();
	chkDblLvupHistory();
	cE();
}
//フェイト
function changeFate() {
	calcFate();
}
function calcFate(){
	var o=f.SL_fate,v=o.value,
	fb=f.start_fate.value=f.fate_base.value=5+(f.fate_tokucho.value-0)+(f.fate_skill.value-0);
	if(v<fb)o.value=v=fb;
	f.now_fate.value=v;
	calcSeichoten();
}
//種族
function changeShuzoku() {
	var o=f.SL_shuzoku,v=f.shuzoku_id.value=o.value,s=Shuzoku[v];
	f.S1.value=s[0];
	f.S2.value=s[1];
	f.S3.value=s[2];
	f.S4.value=s[3];
	f.S5.value=s[4];
	f.S6.value=s[5];
	f.S7.value=s[6];
	f.shuzoku_skill_shozoku.value=f.shuzoku.value=s[7];
//	var azs=[0,1,6,11,16,21,26];
//	f.shuzoku_skill_id.value=azs[v];
	f.shuzoku_skill_id.value=Shuzoku[v][8]
	f.elements['SL_shuzoku_skill_'+v].selectedIndex=0;
	
	calcNoryokuKihonchi();
	
	 //選択リストを設定
//	setListShuzokuSkill();
//	chkDblShuzokuSkill();
	chgDispShuzokuSkillSelect();
	calcShuzokuSkill();
	cE();
}
/*
function setListShuzokuSkill(){
	if(f.is_disp_skill.value==0)chgDispSkill(1); //IE6で隠れたままでリスト変更するとエラーになるので強制的に表示
	//選択リストを設定
	var o=f.shuzoku_skill_id,opt,l=o.options.length,m,n,v=f.SL_shuzoku.value,s=Shuzoku[v];
	for(var i=l-1;i>=0;i--){
		o.remove(i);
	}
	m=(v==0)?9:((v==5||v==6)?11:13);
	for(var i=8;i<m;i++){
		opt=doc.createElement('option');
		opt.value=n=s[i];
		opt.appendChild(doc.createTextNode(Skill[n][0]));
		o.appendChild(opt);
	}
//	f.V_shuzoku_skill_id.value=o.selectedIndex=0;
	o.selectedIndex=0;
}
*/
//作成時ボーナスポイント
function changeBonusPoint() {
	calcNoryokuKihonchi();
	f.sumBP.value=(f.BP1.value-0)+(f.BP2.value-0)+(f.BP3.value-0)+(f.BP4.value-0)+(f.BP5.value-0)+(f.BP6.value-0)+(f.BP7.value-0);
	cE();
}
function chgTM() {
	calcNoryokuKihonchi();
	cE();
}
// 成長などの修正
function changeSeichoAdd() {
	calcNoryokuKihonchi();
	f.sumSA.value=(f.SA1.value-0)+(f.SA2.value-0)+(f.SA3.value-0)+(f.SA4.value-0)+(f.SA5.value-0)+(f.SA6.value-0)+(f.SA7.value-0);
	cE();
}
//メインクラス 上級へ転職したレベル
function changeMainChangeLv() {
	calcMainClass();
	calcNoryokuchi();
	setLvUpHistoryValues();
	cE();
}
//メインクラス
function changeMainClass() {
	// 初期メインクラス・メインクラススキルの値セット
	var i=f.SL_main_class.value,v;
	if (Class[i][13]==3) {
		f.start_main_class_id.value=v=Class[i][14];
	} else {
		f.start_main_class_id.value=v=i;
	}
	f.start_main_class.value=Class[v][11];
	f.m_cls_skill_shozoku.value=f.main_class.value=Class[i][11];
//	f.m_class_skill.value=skl[0];
//	f.m_class_skill_memo.value=skl[1];
	if(v==0){
		f.m_cls_skill_id.value=0;
		f.m_cls_skill_name.value=f.m_cls_skill_lv.value=f.m_cls_skill_timing.value=
		f.m_cls_skill_hantei.value=f.m_cls_skill_taisho.value=f.m_cls_skill_range.value=
		f.m_cls_skill_cost.value=f.m_cls_skill_memo.value=f.m_cls_skill_page.value='';
	}else{
		var s=f.m_cls_skill_id.value=Class[v][12],a=Skill[s];
		f.m_cls_skill_name.value=a[0];
		f.m_cls_skill_lv.value=1;
		f.m_cls_skill_timing.value=Timing[a[1]];
		f.m_cls_skill_hantei.value=Hantei[a[2]];
		f.m_cls_skill_taisho.value=Taisho[a[3]];
		f.m_cls_skill_range.value=(a[4]=='')?'-':a[4];
		f.m_cls_skill_cost.value=(a[5]==0)?'-':a[5];
		f.m_cls_skill_memo.value=a[6];
		f.m_cls_skill_page.value=Book[a[7]]+a[8];
	}
	calcMainClass();
	calcNoryokuchi();
	setSupportClassSkill();
	setLvUpHistoryValues();
	calcClassChangeCount();
	calcSeichoten();
	chkDblTokushuHantei();
	chkDblHigherMainCls();
	cE();
}
//サポートクラス
function changeSupportClass() {
	calcSupportClass();
	calcNoryokuchi();
	var v=f.s_cls_skill_id.value=f.SL_support_class.value;
	f.s_cls_skill_shozoku.value=f.support_class.value=Class[v][11];
	setSupportClassSkill();
	setLvUpHistoryValues();
	calcClassChangeCount();
	calcSeichoten();
	cE();
}
//サポートクラススキル
function setSupportClassSkill() {
	var mc=f.SL_main_class.value-0,sc=f.SL_support_class.value-0,s,
	o0=f.s_cls_skill_id,
	o1=f.s_cls_skill_name,
	o2=f.s_cls_skill_lv,
	o3=f.s_cls_skill_timing,
	o4=f.s_cls_skill_hantei,
	o5=f.s_cls_skill_taisho,
	o6=f.s_cls_skill_range,
	o7=f.s_cls_skill_cost,
	o8=f.s_cls_skill_memo,
	o9=f.s_cls_skill_page;
	if(sc==0||(s=Class[sc][12])==0){
		//サポ・スキルIDが0なら空欄
		o1.value=o2.value=o3.value=o4.value=o5.value=o6.value=o7.value=o8.value=o9.value='';
	}else if(sc!=mc&&(Class[mc][13]!=3||sc!=Class[mc][14])) {
		//一致しなくても上級の可能性があるのでチェック
		var a=Skill[s];
		o1.value=a[0];
		o2.value=1;
		o3.value=Timing[a[1]];
		o4.value=Hantei[a[2]];
		o5.value=Taisho[a[3]];
		o6.value=(a[4]=='')?'-':a[4];
		o7.value=(a[5]==0)?'-':a[5];
		o8.value=a[6];
		o9.value=Book[a[7]]+a[8];
	}else{
		o2.value=o3.value=o4.value=o5.value=o6.value=o7.value=o9.value='';
		o1.value='（重複）';
		o8.value='上記の効果の(CL)に１を加える';
	}
}

function changeNoryokuchiMod() {
	calcNoryokuchi();
	cE();
}

/*** ライフパス ***/
//出自
function chgShutujiID(){
	var v=f.shutujiID.value;
	f.shutuji_name.value=Shutuji[v][0];
	if(!f.isInput_tokucho_name.checked){
		f.tokuchoID.value=v;
		chgTokuchoID();
	}else{cE();}
}
function chgIsInputShutujiName(g){
	chkDspShutujiName();
	f.shutujiID.value=0;
	if(!g){f.shutuji_name.value='';}
}
//特徴
function chgTokuchoID(){
	var a=Shutuji[f.tokuchoID.value];
	f.tokucho_name.value=a[1];
	f.tokucho_memo.value=a[2];
	calcByTokucho();
	cE();
}
function chgIsInputTokuchoName(g){
	chkDspTokuchoName();
	//ﾁｪｯｸを入れたらIDをクリア IDによりフェイトや能力値を計算しているため
	f.tokuchoID.value=0; //入れて非表示で0にする→外して表示時にも0
	if(!g)f.tokucho_name.value=Shutuji[f.tokuchoID.value][1];
	calcByTokucho();
}
function calcByTokucho(){
	var i=f.tokuchoID.value-0;
	//特徴IDにより処理分岐
	var o=f.SL_fate,v=o.value-0;
//	if(i==1){if(v<6)f.now_fate.value=o.value=(v+1);} //フェイト
	f.fate_tokucho.value=(i==1)?1:0;
	f.start_money.value=(i==2)?800:500;
	f.TM5.value=(i==4)?3:'';
	f.THO3.value=(i==5)?3:'';
	f.TM4.value=(i==6)?3:'';
	f.THO5.value=(i==7)?3:'';
	f.TM1.value=(i==8)?3:'';
	f.TM3.value=(i==9)?3:'';
	f.TM2.value=(i==10)?3:'';
	f.TM6.value=(i==11)?3:'';
	f.THO4.value=(i==12)?3:'';
	f.TM7.value=(i==13)?3:'';
	f.TM9.value=(i==14)?5:'';
	f.TM8.value=(i==18)?5:'';

	calcNoryokuKihonchi();
	calcTokushuHanteiSum();
	calcFate();
//	calcSeichoten();
}
//境遇
function chgKyouguID(){
	var a=Kyougu[f.kyouguID.value];
	f.kyougu_name.value=a[0];
//	f.kyougu_memo.value=a[1];
}
function chgIsInputKyouguName(g){
	if(!g)f.kyougu_name.value=Kyougu[f.kyouguID.value][0];
	chkDspKyouguName();
}
//運命
function chgUnmeiID(){
	var a=Unmei[f.unmeiID.value];
	f.unmei_name.value=a[0];
//	f.unmei_memo.value=a[1];
}
function chgIsInputUnmeiName(g){
	if(!g)f.unmei_name.value=Unmei[f.unmeiID.value][0];
	chkDspUnmeiName();
}

/*** スキル ***/
//種族スキル
//function chgShuzokuSkill(){
//	f.V_shuzoku_skill_id.value=f.shuzoku_skill_id.value;
//	calcShuzokuSkill();
//	cE();
//}
function chgShuzokuSkillSelect(o){
	f.shuzoku_skill_id.value=o.value;
	calcShuzokuSkill();
	cE();
}
function calcShuzokuSkill(){
	var v=f.shuzoku_skill_id.value-0,a=Skill[v];
	if(f.SL_shuzoku.value==0){
		f.shuzoku_skill_name.value=f.shuzoku_skill_lv.value=f.shuzoku_skill_timing.value=f.shuzoku_skill_hantei.value=
		f.shuzoku_skill_taisho.value=f.shuzoku_skill_range.value=f.shuzoku_skill_cost.value=
		f.shuzoku_skill_memo.value=f.shuzoku_skill_page.value='';
	}else{
		f.shuzoku_skill_name.value=a[0];
		f.shuzoku_skill_lv.value=1;
		f.shuzoku_skill_timing.value=Timing[a[1]];
		f.shuzoku_skill_hantei.value=Hantei[a[2]];
		f.shuzoku_skill_taisho.value=Taisho[a[3]];
		f.shuzoku_skill_range.value=(a[4]=='')?'-':a[4];
		f.shuzoku_skill_cost.value=(a[5]==0)?'-':a[5];
		f.shuzoku_skill_memo.value=a[6];
		f.shuzoku_skill_page.value=Book[a[7]]+a[8];
	}
	calcSkillValues();
}
//スキルによる各値への修正を計算
function calcSkillValues(){
	var s=f.shuzoku_skill_id.value;
	//フェイト
	f.fate_skill.value=(s==3)?1:0;
	calcFate();
}
//スキル 行増減
function addLineSkill(){
	var tbl=doc.getElementById('Table_skill');
	insertRowByTemplate(doc.getElementById('Table_skill_tpl').rows[0],tbl,tbl.rows.length);
}
function delLineSkill(){
	var tbl=doc.getElementById('Table_skill'),
	af=['skill_header[]','skill_name[]','skill_lv[]','skill_timing[]','skill_hantei[]','skill_taisho[]','skill_range[]','skill_cost[]','skill_memo[]','skill_page[]','skill_shozoku[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,3);
}

function forcusFreeSkills() {
//	if (def_skills==''){def_skills=f.free_skills.value;}
//	if (def_skill_memos==''){def_skill_memos=f.free_skill_memos.value;}
	var o=f.free_skills;
	if(o.value.substr(0,4)=='スキル１'){
		f.free_skill_memos.value=o.value='';
	}
}
function chgFreeSkills(){
	var o=doc.getElementById('free_skills'),m=doc.getElementById('free_skill_memos'),l=o.value.split("\n").length;
	if(l<5)o.rows=m.rows=5;
	else o.rows=m.rows=l+1;
}

/*** 戦闘・武器・防具 ***/
//武器
function chgItemRL(isL){
	var or=f.IR_id,ol=f.IL_id;
	var ir=or.value-0,il=ol.value-0,clv=f.SL_level.value-0;
	var ar=Item[ir],al=Item[il],o;
	if(isL==0){
		//右手
		if(ar[10]==2){
			il=0;al=Item[0];
		}
	}else{
		//左手
		if(al[10]==2){
			or.value=ir=il;ar=Item[il];
			il=0;al=Item[0];
		}
	}
	iDcItemL();
	//右手
	f.BIR1.value=ar[2];
	//キャリバー、ガンパードは攻撃力がCLで変わる
	o=f.BIR2;
	if(ir==149)o.value=clv+3;
	else if(ir==150)o.value=clv+6; // SLは1として計算 clv+(SL+1)*3
	else o.value=ar[3];
	f.BIR3.value=ar[4];
	f.BIR4.value=ar[5];
	f.BIR5.value=ar[6];
	f.BIR6.value=ar[7];
	f.IR_shatei.value=ar[12];
	f.IR_type.value=ar[9];
	f.IR_lv.value=ar[0];
	f.IR_name.value=ar[8];
	f.IR_price.value=ar[11];
	f.IR_weight.value=ar[1];
	f.IR_only_cls.value=ar[17];
	f.IR_memo.value=ar[15];
	f.IR_book.value=Book[ar[20]];
	//左手
	f.BIL1.value=al[2];
	//キャリバーは攻撃力がCLで変わる
	o=f.BIL2;
	if(il==149)o.value=clv+3;
	else if(il==150)o.value=(clv+1)*3;
	else o.value=al[3];
	f.BIL3.value=al[4];
	f.BIL4.value=al[5];
	f.BIL5.value=al[6];
	f.BIL6.value=al[7];
	f.IL_shatei.value=al[12];
	f.IL_type.value=al[9];
	f.IL_lv.value=al[0];
	f.IL_name.value=al[8];
	f.IL_price.value=al[11];
	f.IL_weight.value=al[1];
	f.IL_only_cls.value=al[17];
	f.IL_memo.value=al[15];
	f.IL_book.value=Book[al[20]];
	
	if(calcItemValues()==0)calcBattle();
	calcPrice();
	calcWeight();
	cE();
}
//腕
//頭部
//胴部
//装身具
//補助防具
function chgItem(tp){
	var an=['BI'+tp+'1','BI'+tp+'2','BI'+tp+'3','BI'+tp+'4','BI'+tp+'5','BI'+tp+'6',
		'I'+tp+'_type','I'+tp+'_lv','I'+tp+'_name','I'+tp+'_price','I'+tp+'_weight',
		'I'+tp+'_only_cls','I'+tp+'_memo'];
	var ak=[2,3,4,5,6,7,9,0,8,11,1,17,15];
	var v=f.elements['I'+tp+'_id'].value-0;
	var ai=Item[v],l=an.length,i;
	for(i=0;i<l;i++){
		f.elements[an[i]].value=ai[ak[i]];
	}
	f.elements['I'+tp+'_book'].value=Book[ai[20]];
	if(calcItemValues()==0)calcBattle();
	calcPrice();
	calcWeight();
	cE();
}

//戦闘欄
function chgBattle(){
	calcBattle();
	cE();
}
/*** 装備欄 ***/
//価格
function chgPrice(){
	calcPrice();
}
//重量
function chgWeight(){
	calcWeight();
	cE();
}
//重量制限
function chgWeightArmsMod(){
	f.weight_arms_max.value=(f.NK1.value-0)+(f.weight_arms_mod.value-0);
}
function chgWeightBodyMod(){
	f.weight_body_max.value=(f.NK1.value-0)+(f.weight_body_mod.value-0);
}

/*** 所持品・所持金 ***/
//重量
function chgItemWeight(){
	calcItemWeight();
	cE();
}
//重量制限
function chgWeightItemMod(){
	f.weight_item_max.value=(f.NK1.value-0)+(f.weight_item_mod.value-0);
}
function calcItemWeight(){
	var o=f.elements['item_weight[]'],l=o.length,s=0;
	for(var i=1;i<l;i++){
		s+=isNaN(v=o[i].value)?0:v-0;
	}
	f.weight_item_sum.value=s;
}
//価格
function chgItemPrice(){
	calcItemPrice();
	cE();
}
function calcItemPrice(){
	var o=f.elements['item_price[]'],l=o.length,s=0;
	for(var i=1;i<l;i++){
		s+=isNaN(v=o[i].value)?0:v-0;
	}
	f.price_item_sum.value=s;
	f.price_all_sum.value=s+(f.price_equip_sum.value-0);
}

//所持品 行増減
function addLineItem(){
	var tbl=doc.getElementById('Table_item');
	insertRowByTemplate(doc.getElementById('Table_item_tpl').rows[0],tbl,tbl.rows.length-3);
}
function delLineItem(){
	var tbl=doc.getElementById('Table_item'),af=['item_name[]','item_weight[]','item_price[]','item_memo[]'];
	deleteRowByIndex(tbl,tbl.rows.length-4,af,4);
	chgItemWeight();
	calcItemPrice();
}


/*** 特殊な判定 ***/
function changeTokushuHanteiHasSkill() {
	setTokushuHanteiNoryokuchi();
//	isDisableCheck();
	chkDblTokushuHantei();
}
function changeTokushuHanteiSkill() {
	calcTokushuHanteiSum();
}
function changeTokushuHanteiOther() {
	calcTokushuHanteiSum();
}

/*** レベルアップ記録 ***/
function chgLvUpHistoryKN(id,obj){
	var cb=f.elements['CB_LvupH_KN'+id],o=f.elements['LvupH_KN'+id+'[]'],l=o.length,s=0,t,flg,e=false;
	flg=obj.checked;
	for(var i=1;i<l;i++){
		if(flg){
			t=0;
			if(f.CB_LvupH_KN1[i].checked)t++;
			if(f.CB_LvupH_KN2[i].checked)t++;
			if(f.CB_LvupH_KN3[i].checked)t++;
			if(f.CB_LvupH_KN4[i].checked)t++;
			if(f.CB_LvupH_KN5[i].checked)t++;
			if(f.CB_LvupH_KN6[i].checked)t++;
			if(f.CB_LvupH_KN7[i].checked)t++;
			if(t>3){
				alert('1回のレベルアップでは3つしか上昇できません。');
				flg=obj.checked=false;
				e=true;
			}
		}
		s+=(o[i].value=cb[i].checked?1:0);
	}
	if(e)return;
	f.elements['LvUpKN'+id+'_sum'].value=s;
	f.elements['SA'+id].value=s>0?s:'';
	changeSeichoAdd(id);
//	cE();
}
//クラスなどをセット
function setLvUpHistoryValues(){
	var om=f.elements['LvupH_mcls_name[]'],
	os=f.elements['LvupH_scls_name[]'],
	l=om.length,
	mc=f.main_class.value,is_jokyu=(Class[f.SL_main_class.value][13]==3),
	start_mc=is_jokyu?f.start_main_class.value:mc,
	jokyu_mc=is_jokyu?mc:'',mc_chgLv=f.SL_main_change_lv.value;

//	os[l-1].value=f.support_class.value;
	for(var i=1;i<l;i++){
		lv=i;
		om[i].value=(!is_jokyu||mc_chgLv>lv)?start_mc:jokyu_mc;
	}
}


/*** サポートクラス転職歴 ***/
function changeSupportClassHistory() {
	var o1=f.elements['SL_s_class_history[]'],id;
	var l=o1.length,skl;
	for (var i=1;i<l;i++) {
		if((id=o1[i].value)=='')id=0;
//		alert(i+':'+o1[i].value);
		f.elements['s_class_history[]'][i].value=Class[id][11];
//		skl=Class[id][12].split('||');
		skl=f.elements['sclsH_skill_id[]'][i].value=Skill[Class[id][12]];
		f.elements['s_class_skill_history[]'][i].value=skl[0];
		f.elements['s_class_skill_memo_history[]'][i].value=skl[6];
		f.elements['sclsH_skill_timing[]'][i].value=Timing[skl[1]];
		f.elements['sclsH_skill_hantei[]'][i].value=Hantei[skl[2]];
		f.elements['sclsH_skill_taisho[]'][i].value=Taisho[skl[3]];
		f.elements['sclsH_skill_range[]'][i].value=skl[4];
		f.elements['sclsH_skill_cost[]'][i].value=(skl[5]==0)?'-':skl[5];
		f.elements['sclsH_skill_page[]'][i].value=Book[skl[7]]+skl[8];
	}
	if(o1[i-1].value!=0){
		var tbl=doc.getElementById('Table_SClsHistory');
		insertRowByTemplate(doc.getElementById('Table_SClsHistory_tpl').rows[0],tbl,tbl.rows.length);
		var o=doc.getElementsByName('SCH_num');
		o[l].innerHTML=o.length-1;
		setSupClsLvHistoryDsp();
	}
//	setSupClsLvHistoryDsp();
//	calcUpLevel();
	calcSupportClassHistory();
//	sumSupportClassHistoryHpMp();
	calcSupportClass();
	calcNoryokuchi();
	calcClassChangeCount();
	calcSeichoten();
	isDisableSupportClassHistory();
//	isDisableCheck();
	cE();
}
function changeSupportClassLvHistory() {
	setSupClsLvHistoryDsp();
//	calcUpLevel();
	calcSupportClassHistory();
//	sumSupportClassHistoryHpMp();
	calcSupportClass();
	calcNoryokuchi();
	cE();
}
//転職歴 行増減
function addLineSClsHistory(){
	var tbl=doc.getElementById('Table_SClsHistory');
	insertRowByTemplate(doc.getElementById('Table_SClsHistory_tpl').rows[0],tbl,tbl.rows.length);
	var o=doc.getElementsByName('SCH_num'),l=o.length-1;
	o[l].innerHTML=l;
	setSupClsLvHistoryDsp();
	isDisableSupportClassHistory();
//	calcSupportClassHistory();
}
function delLineSClsHistory(){
	var tbl=doc.getElementById('Table_SClsHistory'),
	af=['s_class_history[]','s_class_skill_history[]','s_class_skill_memo_history[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,2);
	changeSupportClassHistory();
}
/*** コネクション ***/
//コネクション 行増減
function addLineConne(){
	var tbl=doc.getElementById('Table_conne');
	insertRowByTemplate(doc.getElementById('Table_conne_tpl').rows[0],tbl,tbl.rows.length);
}
function delLineConne(){
	var tbl=doc.getElementById('Table_conne'),af=['cone_name[]','cone_kankei[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,2);
}
/*** ギルドデータ ***/
//ギルドレベル
function chgGuildLv(){
/*
	//レベル増減時にギルドスキル欄も増減
	var v=f.guild_lv.value-0,l=f.elements['guild_skill_name[]'].length-1,n=v+1;
	var tbl=doc.getElementById('Table_guild_skill'),ln=tbl.rows.length;
	//l:現在のスキル欄数、n:あるべきスキル欄数
	if(n>l){ //Lv上昇
		var r=doc.getElementById('Table_guild_skill_tpl').rows[0],on;
		for(var i=l;i<n;i++){
			insertRowByTemplate(r,tbl,ln);
			on=doc.getElementsByName('guild_skill_num');
			on[on.length-2].innerHTML=i;
			ln++;
		}
	}else if(n<l){ //Lv減少
		if(confirm('ギルドレベルを下げようとしています。スキル欄が削除されますがいいですか？')){
			for(var i=l;i>n;i--){
				ln--;
				tbl.deleteRow(ln);
			}
//			var af=['guild_skill_name[]','guild_skill_timing[]','guild_skill_memo[]','guild_skill_page[]'];
//			deleteRowByIndex(tbl,tbl.rows.length-1,af,2);
		}else{
			f.guild_lv.value=l-1;
		}
	}
*/
	calcGuildSeichoten();
	cE();
}
//ギルドスキル 成長点計算
function calcGuildSeichoten(){
	var lv=f.guild_lv.value-0,g=f.guild_get_seichoten.value;
	var n=f.guild_used_seichoten.value=(lv-1)*lv*5;
	g=isNaN(g)?0:g-0;
	f.guild_nokori_seichoten.value=(g<n)?0:g-n;
}

function chgGMemberMcls(){
	var o=f.elements['guild_member_mclsID[]'],l=o.length-1;//テンプレート分を除く
	for(var i=0;i<l;i++){
		f.elements['guild_member_mcls_name[]'][i].value=Class[o[i].value][11];
	}
}
function chgGMemberScls(){
	var o=f.elements['guild_member_sclsID[]'],l=o.length-1;
	for(var i=0;i<l;i++){
		f.elements['guild_member_scls_name[]'][i].value=Class[o[i].value][11];
	}
}
function chgGMemberShuzoku(){
	var o=f.elements['guild_member_shuzokuID[]'],l=o.length-1;
	for(var i=0;i<l;i++){
		f.elements['guild_member_shuzoku[]'][i].value=o[i].options[o[i].selectedIndex].text;
	}
}
//ギルドメンバー 行増減
function addLineGMember(){
	var tbl=doc.getElementById('Table_guild_member');
	insertRowByTemplate(doc.getElementById('Table_guild_member_tpl').rows[0],tbl,tbl.rows.length);
}
function delLineGMember(){
	var tbl=doc.getElementById('Table_guild_member'),
	af=['guild_member_name[]','guild_member_mcls_name[]','guild_member_scls_name[]','guild_member_shuzoku[]','guild_member_lv[]','guild_member_memo[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,3);
}
function addLineGuildSkill(){
	var tbl=doc.getElementById('Table_guild_skill');
	insertRowByTemplate(doc.getElementById('Table_guild_skill_tpl').rows[0],tbl,tbl.rows.length);
	var on=doc.getElementsByName('guild_skill_num'),l=on.length-1;
	on[l].innerHTML=l;
/*
	var o=f.guild_lv;
	o.value=(o.value-0)+1;
	chgGuildLv();
*/
}
function delLineGuildSkill(){
	var tbl=doc.getElementById('Table_guild_skill'),
	af=['guild_skill_name[]','guild_skill_timing[]','guild_skill_memo[]','guild_skill_page[]'];
	deleteRowByIndex(tbl,tbl.rows.length-1,af,2);
/*
	var o=f.guild_lv,v=o.value;
	if(v<2){
		alert(msgWarnCantDelLine);
		return;
	}
	o.value=o.value-1;
	chgGuildLv();
*/
}
/***** ここより計算系処理 *****/
// メインクラスデータ計算
function calcMainClass() {
	var cls=f.SL_main_class.value,ac=Class[cls];
	f.MC1.value=ac[0];
	f.MC2.value=ac[1];
	f.MC3.value=ac[2];
	f.MC4.value=ac[3];
	f.MC5.value=ac[4];
	f.MC6.value=ac[5];
	f.MC7.value=ac[6];
	var now_lv=f.SL_level.value-0;
	if(ac[13]==3){
		if (now_lv>=10) {
			var sc=Class[ac[14]];
			var chg_lv=f.SL_main_change_lv.value-0;
			var df_lv=now_lv-chg_lv;
			if(df_lv<0)df_lv=0;
			f.MC8.value=sc[7]+(sc[9] *(chg_lv-1))+(ac[9] *df_lv);
			f.MC9.value=sc[8]+(sc[10]*(chg_lv-1))+(ac[10]*df_lv);
		} else {
			f.MC8.value='';
			f.MC9.value='';
		}
	} else {
		f.MC8.value=ac[7]+(ac[9] *(now_lv-1));
		f.MC9.value=ac[8]+(ac[10]*(now_lv-1));
	}
}
// サポートクラスデータ計算
function calcSupportClass() {
	var cls=f.SL_support_class.value,ac=Class[cls];
	f.SC1.value=ac[0];
	f.SC2.value=ac[1];
	f.SC3.value=ac[2];
	f.SC4.value=ac[3];
	f.SC5.value=ac[4];
	f.SC6.value=ac[5];
	f.SC7.value=ac[6];
	if(f.SC8_2.value==''){
		//変更時は転職歴クリア処理にも影響
		var lv=f.SL_level.value-1;
		f.SC8.value=ac[7]+(ac[9] *lv);
		f.SC9.value=ac[8]+(ac[10]*lv);
	}else{
		f.SC8.value=f.SC8_2.value;
		f.SC9.value=f.SC9_2.value;
	}
}
// 能力基本値計算
function calcNoryokuKihonchi() {
	var a=[],s1=f.S1.value-0,b1=f.BP1.value-0,s6=f.S6.value-0,b6=f.BP6.value-0;

	f.NK1.value=f.vNK1.value=a[0]=s1+b1+(f.TM1.value-0)+(f.SA1.value-0);
	f.NK2.value=f.vNK2.value=a[1]=(f.S2.value-0)+(f.BP2.value-0)+(f.TM2.value-0)+(f.SA2.value-0);
	f.NK3.value=f.vNK3.value=a[2]=(f.S3.value-0)+(f.BP3.value-0)+(f.TM3.value-0)+(f.SA3.value-0);
	f.NK4.value=f.vNK4.value=a[3]=(f.S4.value-0)+(f.BP4.value-0)+(f.TM4.value-0)+(f.SA4.value-0);
	f.NK5.value=f.vNK5.value=a[4]=(f.S5.value-0)+(f.BP5.value-0)+(f.TM5.value-0)+(f.SA5.value-0);
	f.NK6.value=f.vNK6.value=a[5]=s6+b6+(f.TM6.value-0)+(f.SA6.value-0);
	f.NK7.value=f.vNK7.value=a[6]=(f.S7.value-0)+(f.BP7.value-0)+(f.TM7.value-0)+(f.SA7.value-0);
	f.NK8.value=s1+b1+(f.TM8.value-0);
	f.NK9.value=s6+b6+(f.TM9.value-0);
	// 能力ボーナス計算
	f.NB1.value=Math.floor(a[0]/3);
	f.NB2.value=Math.floor(a[1]/3);
	f.NB3.value=Math.floor(a[2]/3);
	f.NB4.value=Math.floor(a[3]/3);
	f.NB5.value=Math.floor(a[4]/3);
	f.NB6.value=Math.floor(a[5]/3);
	f.NB7.value=Math.floor(a[6]/3);
	//重量制限計算
	f.weight_arms_max.value=a[0]+(f.weight_arms_mod.value-0);
	f.weight_body_max.value=a[0]+(f.weight_body_mod.value-0);
	f.weight_item_max.value=a[0]+(f.weight_item_mod.value-0);

	calcNoryokuchi();
}
// 能力値計算
function calcNoryokuchi(){
	// 修正前の値
	var p3,p5
	f.NP1.value=(f.NB1.value-0)+(f.MC1.value-0)+(f.SC1.value-0)+(f.NM1.value-0);
	f.NP2.value=f.BN1.value=(f.NB2.value-0)+(f.MC2.value-0)+(f.SC2.value-0)+(f.NM2.value-0);
	f.NP3.value=f.BN3.value=p3=(f.NB3.value-0)+(f.MC3.value-0)+(f.SC3.value-0)+(f.NM3.value-0);
	f.NP4.value=(f.NB4.value-0)+(f.MC4.value-0)+(f.SC4.value-0)+(f.NM4.value-0);
	f.NP5.value=p5=(f.NB5.value-0)+(f.MC5.value-0)+(f.SC5.value-0)+(f.NM5.value-0);
	f.NP6.value=f.BN5.value=(f.NB6.value-0)+(f.MC6.value-0)+(f.SC6.value-0)+(f.NM6.value-0);
	f.NP7.value=(f.NB7.value-0)+(f.MC7.value-0)+(f.SC7.value-0)+(f.NM7.value-0);
	f.NP8.value=(f.NK8.value-0)+(f.MC8.value-0)+(f.SC8.value-0)+(f.NM8.value-0);//変更時は転職歴クリア処理にも影響
	f.NP9.value=(f.NK9.value-0)+(f.MC9.value-0)+(f.SC9.value-0)+(f.NM9.value-0);
	f.BN6.value=p3+p5;
	calcBattle();
	setTokushuHanteiNoryokuchi();
}

/** 戦闘欄 **/
function calcBattle(){
	var a=[],ir=f.IR_id.value-0,il=f.IL_id.value-0,ia=f.IA_id.value-0,v;
	var ir1=f.BIR1.value-0,il1=f.BIL1.value-0,ia1=f.BIA1.value-0;
	//装備小計
	if(ia==609&&Item[ir][9]!='刀')v=0; //修羅の鞘(609)は刀のみ命中判定＋１
	else if(ia==613){ //深紅の腕輪は武器の命中修正+1、最大0
		if(ir1>=0)v=0;
		else if((ir1+ia1)>0)v=-1*ir1;
		else v=ia1;
	}else v=ia1;
	f.BI_SUM1R.value=a[0]=ir1+(f.BIM1.value-0)+(f.BIH1.value-0)+(f.BIB1.value-0)+(f.BIS1.value-0)+v;
	f.BI_SUM2R.value=a[1]=(f.BIR2.value-0)+(f.BIM2.value-0)+(f.BIH2.value-0)+(f.BIB2.value-0)+(f.BIS2.value-0)+(f.BIA2.value-0);
	f.BI_SUM3.value=a[2]=(f.BIR3.value-0)+(f.BIL3.value-0)+(f.BIM3.value-0)+(f.BIH3.value-0)+(f.BIB3.value-0)+(f.BIS3.value-0)+(f.BIA3.value-0);
	f.BI_SUM4.value=a[3]=(f.BIR4.value-0)+(f.BIL4.value-0)+(f.BIM4.value-0)+(f.BIH4.value-0)+(f.BIB4.value-0)+(f.BIS4.value-0)+(f.BIA4.value-0);
	f.BI_SUM5.value=a[4]=(f.BIR5.value-0)+(f.BIL5.value-0)+(f.BIM5.value-0)+(f.BIH5.value-0)+(f.BIB5.value-0)+(f.BIS5.value-0)+(f.BIA5.value-0);
	f.BI_SUM6.value=a[5]=(f.BIR6.value-0)+(f.BIL6.value-0)+(f.BIM6.value-0)+(f.BIH6.value-0)+(f.BIB6.value-0)+(f.BIS6.value-0)+(f.BIA6.value-0);
	//合計
	f.BSUM1R.value=a[0]+(f.BSK1.value-0)+(f.BOT1.value-0)+(f.BN1.value-0);
	f.BSUM2R.value=a[1]+(f.BSK2.value-0)+(f.BOT2.value-0);
	f.BSUM3.value=a[2]+(f.BSK3.value-0)+(f.BOT3.value-0)+(f.BN3.value-0);
	f.BSUM4.value=a[3]+(f.BSK4.value-0)+(f.BOT4.value-0);
	f.BSUM5.value=a[4]+(f.BSK5.value-0)+(f.BOT5.value-0)+(f.BN5.value-0);
	var i=a[5]+(f.BSK6.value-0)+(f.BOT6.value-0)+(f.BN6.value-0);
	f.BSUM6.value=i=(i<0)?0:i;
	//移動力
	f.ido.value=i+5+(f.ido_skill.value-0)+(f.ido_other.value-0);
	//両手の場合左手は空欄に
	if(Item[ir][10]!=2){
		if(ia==609&&Item[il][9]!='刀')v=0; //修羅の鞘(609)は刀のみ命中判定＋１
		else if(ia==613){ //深紅の腕輪は武器の命中修正+1、最大0
			if(il1>=0)v=0;
			else if((il1+ia1)>0)v=-1*il1;
			else v=ia1;
		}else v=ia1;
		f.BI_SUM1L.value=a[6]=il1+(f.BIM1.value-0)+(f.BIH1.value-0)+(f.BIB1.value-0)+(f.BIS1.value-0)+v;
		f.BI_SUM2L.value=a[7]=(f.BIL2.value-0)+(f.BIM2.value-0)+(f.BIH2.value-0)+(f.BIB2.value-0)+(f.BIS2.value-0)+(f.BIA2.value-0);
		f.BSUM1L.value=a[6]+(f.BSK1.value-0)+(f.BOT1.value-0)+(f.BN1.value-0);
		f.BSUM2L.value=a[7]+(f.BSK2.value-0)+(f.BOT2.value-0);
	}else{
		f.BI_SUM1L.value=f.BI_SUM2L.value=f.BSUM1L.value=f.BSUM2L.value='';
	}
}
function calcPrice(){
	var pa=f.price_arms_sum.value=(f.IR_price.value-0)+(f.IL_price.value-0)+(f.IM_price.value-0);
	var pb=f.price_body_sum.value=(f.IH_price.value-0)+(f.IB_price.value-0)+(f.IS_price.value-0)+(f.IA_price.value-0);
	//アイテムの合計はchgItemPrice
	f.price_all_sum.value=(f.price_item_sum.value-0)+(f.price_equip_sum.value=pa+pb);
}
function calcWeight(){
	f.weight_arms_sum.value=(f.IR_weight.value-0)+(f.IL_weight.value-0)+(f.IM_weight.value-0);
	f.weight_body_sum.value=(f.IH_weight.value-0)+(f.IB_weight.value-0)+(f.IS_weight.value-0)+(f.IA_weight.value-0);
}

//装備の魔術判定やMPなど特殊な値の計算
function calcItemValues(){
	//0:武器右,1:武器左,2:腕,3:頭,4:胴,5:装身具,6:補助防具
	var v=[f.IR_id.value-0,f.IL_id.value-0,f.IM_id.value-0,f.IH_id.value-0,f.IB_id.value-0,f.IA_id.value-0,f.IS_id.value-0],
		ar=Item[v[0]],al=Item[v[1]],am=Item[v[2]],ah=Item[v[3]],ab=Item[v[4]],aa=Item[v[5]],
		sum,i,o,kfg=nfg=tfg=0;
	/* 能力基本値 */
	//体力 SA1
	o=f.item_SA1_sum;
	sum=0;
	if(v[0]==197)sum+=3;
	if(v[1]==197)sum+=3;
	if(o.value!=sum){
		o.value=sum;
		f.SA1.value=(sum==0)?'':sum;
		kfg=1;
	}
	
	/* 能力値 */
	//器用 NM2
	o=f.item_NM2_sum;
	if(v[5]==637)sum=1;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.NM2.value=(sum==0)?'':sum;
		nfg=1;
	}
	//知力 NM4
	o=f.item_NM4_sum;
	if(v[4]==571)sum=1;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.NM4.value=(sum==0)?'':sum;
		nfg=1;
	}
	//精神 NM6
	i=19;o=f.item_NM6_sum;
	sum=ar[i]+al[i]+am[i]+ah[i]+ab[i]+aa[i];
	if(o.value!=sum){
		o.value=sum;
		f.NM6.value=(sum==0)?'':sum;
		nfg=1;
	}
	//幸運 NM7
	o=f.item_NM7_sum;
	if(v[3]==616)sum=-1;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.NM7.value=(sum==0)?'':sum;
		nfg=1;
	}
	//MP
	i=18;o=f.item_mp_sum;
	sum=ar[i]+al[i]+am[i]+ah[i]+ab[i]+aa[i];
	if(o.value!=sum){
		o.value=sum;
		f.NM9.value=(sum==0)?'':sum;
		f.NP9.value=(f.NK9.value-0)+(f.MC9.value-0)+(f.SC9.value-0)+sum;//MP計算
	}
	
	/* 特殊な判定 */
	sum=0;
	//トラップ解除
	o=f.item_wanakaijo_sum;
	if(v[5]==529)sum=1;
	else if(v[5]==601)sum=2;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.THO1.value=(sum==0)?'':sum;
		tfg=1;
	}
	//エネミー識別
	o=f.item_sikibetu_sum;
	if(v[5]==597)sum=1;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.THO4.value=(sum==0)?'':sum;
		tfg=1;
	}
	//魔術
	i=16;o=f.item_majutu_sum;
	sum=ar[i]+al[i]+am[i]+ah[i]+ab[i]+aa[i];
	if(o.value!=sum){
		o.value=sum;
		f.THO6.value=(sum==0)?'':sum;
		tfg=1;
	}
	//呪歌
	o=f.item_juka_sum;
	if(v[5]==530)sum=1;
	else sum=0;
	if(o.value!=sum){
		o.value=sum;
		f.THO7.value=(sum==0)?'':sum;
		tfg=1;
	}
	if(kfg){
		calcNoryokuKihonchi();
		return 1;
	}else if(nfg){
		calcNoryokuchi();
		return 1; //calcBattle()実施済み
	} else if(tfg)calcTokushuHanteiSum();
	return 0;
}


// 特殊な判定 能力値セット
function setTokushuHanteiNoryokuchi() {
	//クラスによりﾁｪｯｸを処理
	//本当はスキルで判断すべき
	//転職や封印スキルがあるので単純にクラスだけで判断できないが、シーフ→罠解除といった関係で制御は出来る
	var mc=f.SL_main_class.value,sc=f.SL_support_class.value,sm=f.start_main_class_id.value;
	if(mc==4||sc==4||sm==4)f.THHS1.checked=true; //シーフは罠探知
	if(sc==9)f.THHS8.checked=true; //アルケミストは錬金術
	if(sc==10)f.THHS7.checked=true; //バードは呪歌
	//メイジ、アコライト、サモナー、シャーマンは魔術
	if(mc==2||sc==2||sm==2||mc==3||sc==3||sm==3||sc==7||sc==27)f.THHS6.checked=true;
	
	var n2=f.NP2.value,n4=f.NP4.value,n5=f.NP5.value;
	f.THN1.value=f.THHS1.checked?n5:'';
	f.THN2.value=n2;
	f.THN3.value=n5;
	f.THN4.value=f.THN5.value=n4;
	f.THN6.value=f.THHS6.checked?n4:'';
	f.THN7.value=f.THHS7.checked?f.NP6.value:'';
	f.THN8.value=f.THHS8.checked?n2:'';
	calcTokushuHanteiSum();
}
// 特殊な判定 合計値計算
function calcTokushuHanteiSum() {
	f.THG1.value=f.THHS1.checked?(f.THN1.value-0)+(f.THS1.value-0)+(f.THO1.value-0):'';
	f.THG2.value=(f.THN2.value-0)+(f.THS2.value-0)+(f.THO2.value-0);
	f.THG3.value=(f.THN3.value-0)+(f.THS3.value-0)+(f.THO3.value-0);
	f.THG4.value=(f.THN4.value-0)+(f.THS4.value-0)+(f.THO4.value-0);
	f.THG5.value=(f.THN5.value-0)+(f.THS5.value-0)+(f.THO5.value-0);
	f.THG6.value=f.THHS6.checked?(f.THN6.value-0)+(f.THS6.value-0)+(f.THO6.value-0):'';
	f.THG7.value=f.THHS7.checked?(f.THN7.value-0)+(f.THS7.value-0)+(f.THO7.value-0):'';
	f.THG8.value=f.THHS8.checked?(f.THN8.value-0)+(f.THS8.value-0)+(f.THO8.value-0):'';
}


/*** サポートクラス転職歴関連処理 ***/
// 転職歴 全クリア処理
function clearSupportClassHistory() {
	var ob1=f.elements['SL_s_class_history[]'],
	ob2=f.elements['s_class_lv_history_dsp[]'],
	ob3=f.elements['SL_s_class_lv_history[]'],
	ob4=f.elements['s_class_up_lv_history[]'],
	ob5=f.elements['s_class_hp_history[]'],
	ob6=f.elements['s_class_mp_history[]'],
	ob7=f.elements['s_class_skill_history[]'],
	ob8=f.elements['s_class_skill_memo_history[]'],
	o9=f.elements['sclsH_skill_timing[]'],
	o10=f.elements['sclsH_skill_hantei[]'],
	o11=f.elements['sclsH_skill_taisho[]'],
	o12=f.elements['sclsH_skill_range[]'],
	o13=f.elements['sclsH_skill_cost[]'],
	o14=f.elements['sclsH_skill_page[]'],
	o15=f.elements['sclsH_skill_id[]'],
	l=ob1.length;
	for(var i=1;i<l;i++){
		ob1[i].selectedIndex=ob3[i].selectedIndex=ob4[i].value=ob5[i].value=ob6[i].value=o15[i].value=0;
		ob2[i].value=1;
		ob7[i].value=ob8[i].value=o9[i].value=o10[i].value=o11[i].value=o12[i].value=o13[i].value=o14[i].value='';
	}
	f.SC8_2.value=f.SC9_2.value='';
	var cls=f.SL_support_class.value,lv=f.SL_level.value-1;
	f.SC8.value=Class[cls][7]+(Class[cls][9] *lv);
	f.SC9.value=Class[cls][8]+(Class[cls][10]*lv);
	f.NP8.value=(f.NK8.value-0)+(f.MC8.value-0)+(f.SC8.value-0)+(f.NM8.value-0);
	f.NP9.value=(f.NK9.value-0)+(f.MC9.value-0)+(f.SC9.value-0)+(f.NM9.value-0);
	f.class_change_count.value=(Class[cls][13]==3)?1:0;
	calcSeichoten();
	isDisableSupportClassHistory();
	cE();
}

// レベルのみ全クリア処理
function clearSupportClassLvHistory() {
	var ob1=f.elements['s_class_lv_history_dsp[]'];
	var ob2=f.elements['SL_s_class_lv_history[]'];
	var ob3=f.elements['s_class_up_lv_history[]'];
	var ob4=f.elements['s_class_hp_history[]'];
	var ob5=f.elements['s_class_mp_history[]'];
	var l=ob1.length;
	for(var i=1;i<l;i++){
		ob1[i].value=1;
		ob2[i].selectedIndex=ob3[i].value=ob4[i].value=ob5[i].value=0;
	}
	var cl=f.elements['SL_s_class_history[]'][0].value;
	ob4[0].value=Class[cl][7];
	ob5[0].value=Class[cl][8];
	var cl=f.SL_support_class.value,lv=f.SL_level.value-1;
	f.SC8.value=Class[cl][7]+(Class[cl][9] *lv);
	f.SC9.value=Class[cl][8]+(Class[cl][10]*lv);
	f.NP8.value=(f.NK8.value-0)+(f.MC8.value-0)+(f.SC8.value-0)+(f.NM8.value-0);
	f.NP9.value=(f.NK9.value-0)+(f.MC9.value-0)+(f.SC9.value-0)+(f.NM9.value-0);
	cE();
}

function calcSupportClassHistory() {
	calcUpLevel();
	var sch=f.elements['SL_s_class_history[]'],l=sch.length,cls,up_lv;
	var lvh=f.elements['s_class_up_lv_history[]'],
	hph=f.elements['s_class_hp_history[]'],
	mph=f.elements['s_class_mp_history[]'];
	for(var i=1;i<l;i++){
		cls=sch[i].value;
		if(cls!=0){
//			up_lv=lvh[i].value-0;
			if((up_lv=lvh[i].value-0)<0)up_lv=0;
			// 初期クラスはベースのHP,MPを足す
			hph[i].value=(i>1?0:Class[cls][7])+(Class[cls][9]*up_lv);
			mph[i].value=(i>1?0:Class[cls][8])+(Class[cls][10]*up_lv);
//			if(i>1){
//				hph[i].value=Class[cls][9]*up_lv;
//				mph[i].value=Class[cls][10]*up_lv;
//			}else{
//				hph[i].value=Class[cls][7]+(Class[cls][9]*up_lv);
//				mph[i].value=Class[cls][8]+(Class[cls][10]*up_lv);
//			}
		}else{
			hph[i].value=mph[i].value=0;
		}
	}
	sumSupportClassHistoryHpMp();
}
function sumSupportClassHistoryHpMp() {
	var hph=f.elements['s_class_hp_history[]'],l=hph.length,
		mph=f.elements['s_class_mp_history[]'],hp=0,mp=0;
	for(var i=1;i<l;i++){
		hp+=hph[i].value-0;
		mp+=mph[i].value-0;
	}
	var g=((hp+mp)==0);
	f.SC8_2.value=g?'':hp;
	f.SC9_2.value=g?'':mp;
//	if ((hp+mp)==0) {
//		f.SC8_2.value='';
//		f.SC9_2.value='';
//	} else {
//		f.SC8_2.value=hp;
//		f.SC9_2.value=mp;
//	}
}

function setSupClsLvHistoryDsp() {
	var ob1=f.elements['SL_s_class_lv_history[]'];
	var ob2=f.elements['s_class_lv_history_dsp[]'];
	var ob3=f.elements['SL_s_class_history[]'];
	var l=ob2.length,j=0,lv=1;
	for(var i=0;i<l-1;i++){
		j=i+1;
		if(lv<ob1[i].value){
			lv=ob1[i].value-0;
		}
		ob2[j].value=lv;
		if(lv>(ob1[j].value-0)||(ob3[i].value==0&&ob3[j].value==0)){
			ob1[j].selectedIndex=(lv-1);
		}
	}
}
function calcUpLevel() {
	var od=f.elements['s_class_lv_history_dsp[]'];
	var ol=f.elements['SL_s_class_lv_history[]'];
	var ou=f.elements['s_class_up_lv_history[]'],up=0,l=od.length,i;
	for(i=0;i<l;i++){
		up=ol[i].value-od[i].value;
//		if(up<0)up=0;
		ou[i].value=up;
	}
}

/*** 必要成長点 計算処理 ***/
//実際の値から計算
function calcSeichoten() {
	// キャラクターレベル
	var slv=sft=sch=0,i,l=f.SL_level.value-0,s=1;
	f.seichoten_level.value=slv=(l<s)?0:(l-s)*(s+l-1)*5;
	// フェイト
	l=f.SL_fate.value-0;
	s=(isNaN(s=f.fate_base.value))?5:s-0;
	f.seichoten_fate.value=sft=(l<s)?0:(l-s)*(s+l-1);
	// クラスチェンジ
	var n=getClassChangeCount();
	f.seichoten_classchange.value=sch=n*10;
	// 合計
	f.sum_seichoten.value=slv+sft+sch;
	calcSeichoten4Calc();
}
//成長点計算欄の値から計算
function calcSeichoten4Calc() {
	// キャラクターレベル
	var slv=sft=sch=0,i,l=f.now_level.value-0,s=1;
	f.seichoten_level_calc.value=slv=(l<s)?0:(l-s)*(s+l-1)*5;
	// フェイト
	l=f.now_fate.value-0;
	s=(isNaN(s=f.start_fate.value))?5:s-0;
	f.seichoten_fate_calc.value=sft=(l<s)?0:(l-s)*(s+l-1);
	// クラスチェンジ
	f.seichoten_classchange_calc.value=sch=f.class_change_count.value*10;
	// 合計
	f.sum_seichoten_calc.value=slv+sft+sch;
}

// クラスチェンジ回数計算
function calcClassChangeCount(){
	f.class_change_count.value=getClassChangeCount();
}
function getClassChangeCount(){
	var cnt=0;
	// メイン 上級なら1回
	if(Class[f.SL_main_class.value][13]==3)cnt++;
	// サポート
	var obj=f.elements['SL_s_class_history[]'];
//	if(f.SC8_2.value+f.SC9_2.value!=''){
//	if(obj[1].value!=0){
		var l=obj.length;
		for(var i=l-1;i>1;i--) {
			if(obj[i].value==0)continue;
			cnt+=i-1;
			break;
		}
//	}
	return cnt;
}

function setSeichotenValue() {
	f.now_level.value=f.SL_level.value;
	f.start_fate.value=f.fate_base.value;
	f.now_fate.value=f.SL_fate.value;
	calcClassChangeCount();
	calcSeichoten();
}

/*** 入力可・不可制御 ***/
// 入力・選択欄の使用可否の設定
/*
function isDisableCheck() {
	// 上級への転職レベル欄の使用可否の設定
//	var flg=(f.SL_level.value<10||Class[f.SL_main_class.value][13]!=3);
//	f.start_main_class.disabled=f.SL_main_change_lv.disabled=flg;
	// 特殊な判定の使用可否
	// 罠探知
	f.THN1.disabled=f.THS1.disabled=f.THO1.disabled=f.THG1.disabled=f.dice_wanatanti.disabled=!(f.THHS1.checked);
	// 魔術
	f.THN6.disabled=f.THS6.disabled=f.THO6.disabled=f.THG6.disabled=f.dice_majutu.disabled=!(f.THHS6.checked);
	// 呪歌
	f.THN7.disabled=f.THS7.disabled=f.THO7.disabled=f.THG7.disabled=f.dice_juka.disabled=!(f.THHS7.checked);
	// 錬金術
	f.THN8.disabled=f.THS8.disabled=f.THO8.disabled=f.THG8.disabled=f.dice_renkin.disabled=!(f.THHS8.checked);
//	isDisableSupportClassHistory();  // 転職歴 使用可否処理
}
*/
// 上級への転職レベル欄の使用可否の設定
function chkDblHigherMainCls(){
	f.start_main_class.disabled=f.SL_main_change_lv.disabled=(f.SL_level.value<10||Class[f.SL_main_class.value][13]!=3);
}
// 特殊な判定
function chkDblTokushuHantei() {
	// 罠探知
	f.THN1.disabled=f.THS1.disabled=f.THO1.disabled=f.THG1.disabled=f.dice_wanatanti.disabled=!(f.THHS1.checked);
	// 魔術
	f.THN6.disabled=f.THS6.disabled=f.THO6.disabled=f.THG6.disabled=f.dice_majutu.disabled=!(f.THHS6.checked);
	// 呪歌
	f.THN7.disabled=f.THS7.disabled=f.THO7.disabled=f.THG7.disabled=f.dice_juka.disabled=!(f.THHS7.checked);
	// 錬金術
	f.THN8.disabled=f.THS8.disabled=f.THO8.disabled=f.THG8.disabled=f.dice_renkin.disabled=!(f.THHS8.checked);
}
//両手武器時 左手使用不可に
function iDcItemL(){
	var ao=[f.IL_id,f.BIL1,f.BIL2,f.BIL3,f.BIL4,f.BIL5,f.BIL6,f.IL_shatei,f.IL_type,f.IL_lv,f.IL_name,f.IL_price,f.IL_weight,f.IL_only_cls];
//	var flg=(Item[f.IR_id.value][10]=='両手'),l=ao.length,i;
	var flg=(Item[f.IR_id.value][10]==2),l=ao.length,i;
	for(i=0;i<l;i++){
		ao[i].disabled=flg;
	}
}

// 転職歴 使用可否処理
function isDisableSupportClassHistory(){
	var ob1=f.elements['SL_s_class_history[]'];
	var ob2=f.elements['s_class_lv_history_dsp[]'];
	var ob3=f.elements['SL_s_class_lv_history[]'];
	var ob4=f.elements['s_class_up_lv_history[]'];
	var ob5=f.elements['s_class_hp_history[]'];
	var ob6=f.elements['s_class_mp_history[]'];
	var ob7=f.elements['s_class_skill_history[]'];
	var ob8=f.elements['s_class_skill_memo_history[]'];
	var j=0,flg=false,l=ob1.length-1;
	for (var i=1;i<l;i++) {
		j=i+1;
		flg=(flg||ob1[i].value==0);
		ob1[j].disabled=ob2[j].disabled=ob3[j].disabled=ob4[j].disabled=ob5[j].disabled=ob6[j].disabled=ob7[j].disabled=ob8[j].disabled=flg;
	}
}
//レベルアップ履歴
function chkDblLvupHistory(){
	var o=[f.elements['LvupH_mcls_name[]'],f.elements['LvupH_scls_name[]'],
	f.CB_LvupH_KN1,f.CB_LvupH_KN2,f.CB_LvupH_KN3,f.CB_LvupH_KN4,f.CB_LvupH_KN5,f.CB_LvupH_KN6,f.CB_LvupH_KN7,
	f.elements['LvupH_KN1[]'],
	f.elements['LvupH_KN2[]'],
	f.elements['LvupH_KN3[]'],
	f.elements['LvupH_KN4[]'],
	f.elements['LvupH_KN5[]'],
	f.elements['LvupH_KN6[]'],
	f.elements['LvupH_KN7[]'],
	f.elements['LvupH_skill1[]'],f.elements['LvupH_skill2[]']],flg=!((f.SL_level.value-0)>1),l=o.length;
	for(var i=0;i<l;i++){
		o[i][1].disabled=flg;
	}
}
//種族スキル
//ヴァーナ、ドゥアンは3つ
//function chkDblShuzokuSkill() {
//	var v=f.SL_shuzoku.value-0;
//	var o=f.SL_shuzoku_skill,s=f.elements['shuzoku_skill_text[]'];
//	if(v==5||v==6){
//		if(o[3].checked||o[4].checked)o[0].checked=true;
//		o[3].disabled=o[4].disabled=s[3].disabled=s[4].disabled=true;
//	}else{
//		o[3].disabled=o[4].disabled=s[3].disabled=s[4].disabled=false;
//	}
//}

/*** 表示非表示制御 ***/
//ライフパス欄
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 chkDspShutujiName(){
	var g=f.isInput_shutuji_name.checked;
	doc.getElementById('shutuji_name').style.display=g?'inline':'none';
	doc.getElementById('shutujiID').style.display=g?'none':'inline';
}
function chkDspTokuchoName(){
	var g=f.isInput_tokucho_name.checked;
	doc.getElementById('tokucho_name').style.display=g?'inline':'none';
	doc.getElementById('tokuchoID').style.display=g?'none':'inline';
}
function chkDspKyouguName(){
	var g=f.isInput_kyougu_name.checked;
	doc.getElementById('kyougu_name').style.display=g?'inline':'none';
	doc.getElementById('kyouguID').style.display=g?'none':'inline';
}
function chkDspUnmeiName(){
	var g=f.isInput_unmei_name.checked;
	doc.getElementById('unmei_name').style.display=g?'inline':'none';
	doc.getElementById('unmeiID').style.display=g?'none':'inline';
}

//スキル欄
function chkDispSkill(){
	var flg=f.is_disp_skill.value-0;
	doc.getElementById('skill_disp').style.display=(flg?'block':'none');
	doc.getElementById('skill_nodisp').style.display=(!flg?'block':'none');
}
function chgDispSkill(flg){
	f.is_disp_skill.value=(flg==0)?0:1;
	chkDispSkill();
}
//種族スキル
function chgDispShuzokuSkillSelect(){
	var o=f.SL_shuzoku,v=o.value,l=o.options.length;
	for(var i=0;i<l;i++){
		doc.getElementById('SL_shuzoku_skill_'+i).style.display=(i==v)?'inline':'none';
	}
}

//戦闘欄
function chkDispBattle(){
	var flg=f.is_disp_battle.value-0;
	doc.getElementById('battle_disp').style.display=(flg?'block':'none');
	doc.getElementById('battle_nodisp').style.display=(!flg?'block':'none');
}
function chgDispBattle(flg){
	f.is_disp_battle.value=(flg==0)?0:1;
	chkDispBattle();
}
//装備欄
function chkDispEquip(){
	var flg=f.is_disp_equip.value-0;
	doc.getElementById('equip_disp').style.display=(flg?'block':'none');
	doc.getElementById('equip_nodisp').style.display=(!flg?'block':'none');
}
function chgDispEquip(flg){
	f.is_disp_equip.value=(flg==0)?0:1;
	chkDispEquip();
}
//所持品欄
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?'block':'none');
}
function chgDispItem(flg){
	f.is_disp_item.value=(flg==0)?0:1;
	chkDispItem();
}
//特殊判定詳細
function chkDispTokushuhantei(){
	var flg=f.is_disp_tokushuhantei.value-0;
	doc.getElementById('tokushuhantei_disp').style.display=(flg?'block':'none');
	doc.getElementById('tokushuhantei_nodisp').style.display=(!flg?'block':'none');
}
function chgDispTokushuhantei(flg){
	f.is_disp_tokushuhantei.value=(flg==0)?0:1;
	chkDispTokushuhantei();
}
//レベルアップ記録
function chkDispLvUpHistory(){
	var flg=f.is_disp_LvUpHistory.value-0;
	doc.getElementById('LvUpHistory_disp').style.display=(flg?'block':'none');
	doc.getElementById('LvUpHistory_nodisp').style.display=(flg?'none':'block');
}
function chgDispLvUpHistory(flg){
	f.is_disp_LvUpHistory.value=(flg==0)?0:1;
	chkDispLvUpHistory();
}
//サポートクラス転職歴
function chkDispSCHistory(){
	var flg=f.is_disp_SCHistory.value-0;
	doc.getElementById('SCHistory_disp').style.display=(flg?'block':'none');
	doc.getElementById('SCHistory_nodisp').style.display=(flg?'none':'block');
}
function chgDispSCHistory(flg){
	f.is_disp_SCHistory.value=(flg==0)?0:1;
	chkDispSCHistory();
}
//成長点計算
function chkDispSeicho(){
	var flg=f.is_disp_seicho.value-0;
	doc.getElementById('seicho_disp').style.display=(flg?'block':'none');
	doc.getElementById('seicho_nodisp').style.display=(flg?'none':'block');
}
function chgDispSeicho(flg){
	f.is_disp_seicho.value=(flg==0)?0:1;
	chkDispSeicho();
}
//パーソナルデータ
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();
}
//ギルドデータ
function chkDispGuild(){
	var flg=f.is_disp_guild.value-0;
	doc.getElementById('guild_disp').style.display=(flg?'block':'none');
	doc.getElementById('guild_nodisp').style.display=(flg?'none':'block');
}
function chgDispGuild(flg){
	f.is_disp_guild.value=(flg==0)?0:1;
	chkDispGuild();
}

/*** エラーチェック・メッセージ関連 ***/
//addErrorMessage
function aE(str) {
	if(str=='')return;
	var v=f.message.value;
	f.message.value=(v=='')?str:v+"\n"+str;
}
// checkError
function cE() {
	f.message.value='';
	var main_cls=f.SL_main_class.value-0;
	var supp_cls=f.SL_support_class.value-0;
	if (f.SL_shuzoku.value<1 || main_cls<1 || supp_cls<1) {
		//種族・メインクラス・サポートクラス
		var arr=[];
		if (f.SL_shuzoku.value<1) arr.push('種族');
		if (main_cls<1) arr.push('メインクラス');
		if (supp_cls<1) arr.push('サポートクラス');
		aE(arr.join(',')+'が選択されていません。[設定間違い]');
	} else {
		var clv=f.SL_level.value-0,i,v,s,mes_str;
		var bp=f.sumBP.value-0,is_excls=(Class[main_cls][13]==3);
		if(bp>5){aE('ボーナスポイントの合計が５点を超えています。[ルール違反]'); }
		else if(bp!=5){aE('ボーナスポイントの合計が５点ではありません。[設定間違い]'); }
		
		// 能力値１３点超過チェック
		var types=['','筋力','器用','敏捷','知力','感知','精神','幸運'];
		var err_types=[],i,s,b;
		for(i=1;i<8;i++){
			s='S'+i;b='BP'+i;
			if((f.elements[s].value-0)+(f.elements[b].value-0)>13)err_types.push(types[i]);
		}
		mes_str=err_types.join(',');
		if(mes_str!='')aE(mes_str+'で種族値＋ボーナスポイントが１３点を超えています。[ルール違反]');
		//上級クラスは10レベル以上
		if (is_excls && clv<10)
			aE('レベル(CL)が１０未満なのに上級クラスが選択されています。[設定間違い]');
		if(clv>=10 && is_excls && f.SL_main_change_lv.value>clv)
			aE('上級クラスへの転職レベルがレベル(CL)を超えています。[設定間違い]');
		// ドラグーン・テイマーはレベル10以上が必須
		if((supp_cls==23||supp_cls==24) && clv<10)
			aE( Class[supp_cls][11]+'はレベル(CL)１０以上が必須です。[設定間違い]');
		/** 装備関連 **/
		//レベル
		var ait=['IR','IL','IM','IH','IB','IS','IA'],il;
		var its=['右手','左手','バックラー','頭部','胴部','補助防具','装身具'],err_arr=[],aiv=[];
		for(i=0;i<6;i++){
			il=ait[i]+'_lv';
			v=f.elements[il].value;
			if(!isNaN(v))if(clv<v)err_arr.push(its[i]);
		}
		mes_str=err_arr.join(',');
		if(mes_str!='')aE(mes_str+'の装備可能レベルが現在のレベルを超えています。[設定間違い]')
		//重量
		err_arr=[];
		if((f.weight_arms_max.value-0)<(f.weight_arms_sum.value-0))err_arr.push('右手・左手');
		if((f.weight_body_max.value-0)<(f.weight_body_sum.value-0))err_arr.push('頭・胴・装身具');
		if((f.weight_item_max.value-0)<(f.weight_item_sum.value-0))err_arr.push('所持品');
		mes_str=err_arr.join(',');
		if(mes_str!='')aE(mes_str+'の重量が持てる最大重量を超えています。[ルール違反]');
		//ｸﾗｽ制限
		err_arr=[];
		for(i=0;i<6;i++){
			aiv[i]=v=f.elements[ait[i]+'_id'].value;
			s=Item[v][13];
			if(s!=0){
				if(s.indexOf('|'+main_cls+'|')==-1){
					if(!is_excls){
						err_arr.push(its[i]);
					}else if(s.indexOf('|'+f.start_main_class_id.value+'|')==-1){
						err_arr.push(its[i]);
					}
				}
			}else{
				s=Item[v][14];
				if(s!=0){
					if(s.indexOf('|'+supp_cls+'|')==-1)err_arr.push(its[i]);
				}
			}
		}
		mes_str=err_arr.join(',');
		if(mes_str!='')aE(mes_str+'の装備はクラス制限により装備できません。[設定間違い]');
		//ソードブレイカー(76)はバックラーと併用不可
		if(aiv[2]!=0&&(aiv[0]==76||aiv[1]==76))aE('ソードブレイカーはバックラーと同時に装備できません。[設定間違い]');
		//剛神の鎧(625)は盾装備不可
		if(aiv[4]==625&&(Item[aiv[0]][9]=='盾'||Item[aiv[1]][9]=='盾'||aiv[2]!=0))aE('剛神の鎧は盾と同時に装備できません。[設定間違い]');
		//アサシンガーブ(626)は他の防具装備不可
		if(aiv[4]==626&&(Item[aiv[3]][9]=='防具'||Item[aiv[5]][9]=='防具'))aE('アサシンガーブは他の防具と同時に装備できません。[設定間違い]');
		// 転職歴関連のチェック
		var och=f.elements['SL_s_class_history[]'];
		var olh=f.elements['SL_s_class_lv_history[]'];
		var olhd=f.elements['s_class_lv_history_dsp[]'];
		var max=och.length-1,sh,v,fg1=fg2=0;
		if(f.SC8_2.value+f.SC8_2.value!=''){
			if(olh[max].value!=clv)
				aE('転職歴のレベルと現在のレベルが一致しません。[設定間違い]');
			for (i=max;i>=0;i--) {
				v=och[i].value-0;
				if(v==0)continue;
				if(fg1==0&&(v==23||v==24)&&olhd[i].value<10){
					aE( '転職歴で'+Class[v][11]+'がレベル１０未満で設定されています。[設定間違い]');
					fg1=1;
				}
				if(fg2==0&&v!=supp_cls){
					aE('転職歴最後のサポートクラスと現在のサポートクラスが一致しません。[設定間違い]');
					fg2=1;
				}else fg2=1;
				if(fg1&&fg2)break;
			}
		}
	}
}

/***** オプションの表示 *****/
function get_option_num(is_zero,start,end){
	var str=[],s,i;
	if(is_zero) str.push('<option value="0" selected="selected"></option>');
	for(i=start;i<=end; i++) {
		str.push('<option value="'+i+'">'+i+'</option>');
	}
	s=str.join('');
	return s;
}
