//////////////////////////////////////////////////
/////         Netmarble Laghaim              /////
/////                      provided by hayun /////
//////////////////////////////////////////////////

// Declare the array for each race
switch(theRace) {
    case "aBulkan": case "wBulkan":
        acNeckE=acCNAcceE;acNeckK=acCNAcceK;
        acRingE=acCRAcceE;acRingK=acCRAcceK;
        acOtheE=acCOAcceE;acOtheK=acCOAcceK;
        break;
    case "hHybrid": case "tHybrid":
        acNeckE=acCNAcceE;acNeckK=acCNAcceK;
        acRingE=acCRAcceE;acRingK=acCRAcceK;
        acOtheE=acCOAcceE;acOtheK=acCOAcceK;
        break;
    case "Kairipton":
        acNeckE=acCNAcceE;acNeckK=acCNAcceK;
        acRingE=acCRAcceE;acRingK=acCRAcceK;
        acOtheE=acCOAcceE;acOtheK=acCOAcceK;
        break;
    case "Human":
        acNeckE=acCNAcceE;acNeckK=acCNAcceK;
        acRingE=acCRAcceE;acRingK=acCRAcceK;
        acOtheE=acHOAcceE;acOtheK=acHOAcceK;
        break;
    case "Aidia":
        acNeckE=acCNAcceE;acNeckK=acCNAcceK;
        acRingE=acCRAcceE;acRingK=acCRAcceK;
        acOtheE=acCOAcceE;acOtheK=acCOAcceK;
        break;
    default:break;
}

// generate present weapon object
// myArmor is created in getStat.js, setInit()
function theAcce(zacce,zname,zupnum) {
    var t=this;
    // Total AC, Physical AC
    t.allTotalAC=0;t.allPhysicalAC=0;
    t.acceType=new Array("N","R","O");     // Accessory Type (N:Neckless, R:Ring, O:Other)
    if (zacce=="initAcce") {     // initialize
        for (var x=0;x<t.acceType.length;x++) {
            var zstr='this.'+t.acceType[x]+'=new makeAcce(noC'+t.acceType[x]+'Acce,"なし",0)';
            eval(zstr);
        }
    }
    else alert("種族が不明です。");
}
// gather totalAC/physicalAC/magicalAC from each sub armor
// and update screen information for total AC
theAcce.prototype.gatherAcce=function() {
    var t=this;

    // 防御
    var zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".totalAC;");
    }
    myChar.acceAC = zstr;

    // 凍結
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".coldDef;");
    }
    myChar.coldDef = zstr;
    // 石化
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".stoneDef;");
    }
    myChar.stoneDef = zstr;
    // 電撃
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".boltDef;");
    }
    myChar.boltDef = zstr;
    // マグマ
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".volcanicDef;");
    }
    myChar.volcanicDef = zstr;

    // 反射
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".reflectDam;");
    }
    myChar.reflectDam = zstr;

    // エネ増幅
    zstr=0;
    for (var x=0;x<t.acceType.length;x++) {
        zstr+=eval("myAcce."+t.acceType[x]+".elecUp;");
    }
    myChar.elecUp = zstr;
}

// the sub-objects in theAcce (N:Neckless, R:Ring, O:Other)
function makeAcce(zarr,zname) {
    // Eng/Kor name, level, levle grade (for Magic stone), AC, STR/WIS/DEX, price
    var t=this;
    zarr[0].substring(0,2)=="no" ? t.isNoAcce=true : t.isNoAcce=false;
    t.engName=zarr[0];t.korName=zname;
    t.itemLevel=zarr[1];
    t.levelGrade=Math.ceil(t.itemLevel/30);
    // 1:lvl 1~30, 2:31-60, 3:61-90, 4:91-120,  5:121-150, 6:151-180, 7:181-210,,       8:211-240,    250
    // 1 amethyst  2 topaz  3 opal   4 sapphire 4 ruby     5 emerald  6 white knight    7 taeurs        5
    if (t.levelGrade==5) t.levelGrade=4;    // 5=>4
    if (t.levelGrade>=6) t.levelGrade=5;    // above 6, should be 5 (including metacape)
    t.AC=zarr[2];
    t.strLimit=zarr[3];t.wisLimit=zarr[4];t.spdLimit=zarr[5];t.itemPrice=zarr[6];
    // AC< physical AC, magical AC
    t.totalAC=0;t.physicalAC=0;t.magicalAC=0;
    // magical AC race (%), mana usage (-%), reflect damage for Aidia(%), physical damage shield (%)
    t.magicDef=0;t.magicDefz=0;t.manaExp=0;t.reflectDam=0;t.physicalShield=0;
    if (zarr[7]!=null) {t.magicDef=zarr[7];t.magicDefz=zarr[7];}
    if (zarr[8]!=null) t.manaExp=zarr[8];
    if (zarr[9]!=null) t.reflectDam=zarr[9];
    if (zarr[10]!=null) t.physicalShield=zarr[10];
    // special resistance for diamond item, cold/stone/bolt/volcanic
    t.coldDef=0;t.stoneDef=0;t.boltDef=0;t.volcanicDef=0;
    t.coldDefz='';t.stoneDefz='';t.boltDefz='';t.volcanicDefz='';
    if (zarr[11]!=null) {t.coldDef=zarr[11]>0?zarr[11]:0;t.coldDefz=zarr[11]>0?'凍結抵抗':'';}
    if (zarr[12]!=null) {t.stoneDef=zarr[12]>0?zarr[12]:0;t.stoneDefz=zarr[12]>0?'石化抵抗':'';}
    if (zarr[13]!=null) {t.boltDef=zarr[13]>0?zarr[13]:0;t.boltDefz=zarr[13]>0?'電撃抵抗':'';}
    if (zarr[14]!=null) {t.volcanicDef=zarr[14]>0?zarr[14]:0;t.volcanicDefz=zarr[14]>0?'マグマ抵抗':'';}
    // エネショック用
    t.elecUp=0;
    if (zarr[15]!=null) t.elecUp=zarr[15];
    // 表示テキスト
    t.text='';
    if (zarr[16]!=null) t.text=zarr[16];
    // upgrade no (Jewel), special AC, magic stone value
    t.noUpgrade=0;
    // SPアクセサリ
    t.spLife=0;t.spMana=0;t.spEne=0;t.spSta=0;
    t.spHelu=0;t.spAthe=0;t.spAlth=0;t.spTita=0;t.spZeus=0;
    t.spRenkin=0;t.spBouken=0;
    t.spNecklessMin=0;t.spNecklessMax=500;
    t.spRingMin=0;t.spRingMax=18;
    t.spRingZeusMin=0;t.spRingZeusMax=27;
    t.spRenkinMin=0;t.spRenkinMax=10;
    t.spBoukenMin=0;t.spBoukenMax=100;
}

// update sub object value (jewel,masuk,special)
makeAcce.prototype.applyJewel=function(zno) {this.noUpgrade=zno;}
makeAcce.prototype.applyMasuk=function(zArr) {
    for (var x=0;x<zArr.length;x++) {
        var zstr="this.masuk"+(x+1)+"="+zArr[x];eval(zstr);
        //if (zArr[x]!=0) {var zstr="this.masuk"+(x+1)+"AC=iMAcce["+Math.round(x*3+zArr[x])+"]";eval(zstr);}
        //else {var zstr="this.masuk"+(x+1)+"AC=0";eval(zstr);}
        
    }
}

// 首飾り値 表示
makeAcce.prototype.applySpNLife=function(zAC) {
    this.spLife=zAC;
    myChar.spNeckLife = zAC;
    genWriteIt("idSubLife",myChar.spRingLife+myChar.spNeckLife);
}
makeAcce.prototype.applySpNMana=function(zAC) {
    this.spMana=zAC;
    myChar.spNeckMana = zAC;
    genWriteIt("idSubMana",myChar.spRingMana+myChar.spNeckMana);
}
makeAcce.prototype.applySpNEne=function(zAC) {
    this.spEne=zAC;
    myChar.spNeckElec = zAC;
    genWriteIt("idSubElec",myChar.spRingElec+myChar.spNeckElec);
}
makeAcce.prototype.applySpNSta=function(zAC) {
    this.spSta=zAC;
    myChar.spNeckStam = zAC;
    genWriteIt("idSubStam",myChar.spRingStam+myChar.spNeckStam);
}

// 指輪値 表示
makeAcce.prototype.applySpRHelu=function(zAC) {
    // 指輪の体力１はライフ１スタミナ２上昇
    this.spHelu=zAC;
    if (theRace=='Aidia') {
        myChar.spRingLife = parseInt(zAC)+parseInt(this.spTita)*2+parseInt(this.spZeus*0.5)*3;
    } else {
        myChar.spRingLife = parseInt(zAC)+parseInt(this.spTita)*2+parseInt(this.spZeus*0.5);
    }
    myChar.spRingStam = parseInt(zAC)*2+parseInt(this.spZeus*0.5);
    genWriteIt("idSubStr",zAC);
    genWriteIt("idSubLife",myChar.spRingLife+myChar.spNeckLife);
    genWriteIt("idSubStam",myChar.spRingStam+myChar.spNeckStam);
}
makeAcce.prototype.applySpRAthe=function(zAC) {
    // 指輪の知力１はマナ２上昇
    this.spAthe=zAC;
    if (theRace=='Aidia') {
        myChar.spRingMana = parseInt(zAC)*2+parseInt(this.spZeus*0.5)*3;
    } else {
        myChar.spRingMana = parseInt(zAC)*2+parseInt(this.spZeus*0.5);
    }
    genWriteIt("idSubWis",zAC);
    genWriteIt("idSubMana",myChar.spRingMana+myChar.spNeckMana);
}
makeAcce.prototype.applySpRAlth=function(zAC) {
    // 指輪の素早さ１はエネルギー２上昇
    this.spAlth=zAC;
    myChar.spRingElec = parseInt(zAC)*2+parseInt(this.spZeus*0.5);
    genWriteIt("idSubSpd",zAC);
    genWriteIt("idSubElec",myChar.spRingElec+myChar.spNeckElec);
}
makeAcce.prototype.applySpRTita=function(zAC) {
    // 指輪の体質１はライフ２上昇
    this.spTita=zAC;
    if (theRace=='Aidia') {
        myChar.spRingLife = parseInt(zAC)*2+parseInt(this.spHelu)+parseInt(this.spZeus*0.5)*3;
    } else {
        myChar.spRingLife = parseInt(zAC)*2+parseInt(this.spHelu)+parseInt(this.spZeus*0.5);
    }
    genWriteIt("idSubCon",zAC);
    genWriteIt("idSubLife",myChar.spRingLife+myChar.spNeckLife);
}
makeAcce.prototype.applySpRZeus=function(zAC) {
    // 指輪の統率１はステータスに影響しない
    //this.spZeus=zAC;
    //genWriteIt("idSubLeader",zAC);
    // 指輪の統率２は各ステータス１上昇
    this.spZeus=zAC;
    if (theRace=='Aidia') {
        myChar.spRingLife = parseInt(zAC*0.5)*3+parseInt(this.spTita)*2+parseInt(this.spHelu);
        myChar.spRingMana = parseInt(zAC*0.5)*3+parseInt(this.spAthe)*2;
        myChar.spRingStam = parseInt(zAC*0.5)+parseInt(this.spHelu)*2;
        myChar.spRingElec = parseInt(zAC*0.5)+parseInt(this.spAlth)*2;
    } else {
        myChar.spRingLife = parseInt(zAC*0.5)+parseInt(this.spTita)*2+parseInt(this.spHelu);
        myChar.spRingMana = parseInt(zAC*0.5)+parseInt(this.spAthe)*2;
        myChar.spRingStam = parseInt(zAC*0.5)+parseInt(this.spHelu)*2;
        myChar.spRingElec = parseInt(zAC*0.5)+parseInt(this.spAlth)*2;
    }
    genWriteIt("idSubLeader",zAC);
    genWriteIt("idSubLife",myChar.spRingLife+myChar.spNeckLife);
    genWriteIt("idSubStam",myChar.spRingStam+myChar.spNeckStam);
    genWriteIt("idSubMana",myChar.spRingMana+myChar.spNeckMana);
    genWriteIt("idSubElec",myChar.spRingElec+myChar.spNeckElec);
}

// 腕輪値 表示
makeAcce.prototype.applySpORenkin=function(zAC) {this.spRenkin=zAC;}
makeAcce.prototype.applySpOBouken=function(zAC) {this.spBouken=zAC;}


// calculate t.totalAC=t.AC;t.physicalAC=t.AC;t.magicalAC=t.AC;
makeAcce.prototype.applyAcce=function() {
    var t=this;var zact=t.AC;
    // apply jewel AC
    zact=Math.round(zact*(1+plusValueA[t.noUpgrade]));
    t.totalAC=zact;
}
// write each acce information
makeAcce.prototype.writeAcce=function() {
    var t=this;
    if (t.isNoAcce) {  // if no accessory
        var zstr="document.getElementById('idC"+this.engName.charAt(3)+"').innerHTML='なし';";eval(zstr);
        var zstr="idC"+this.engName.charAt(3)+"Msg[0]=''";eval(zstr);
        return true;
    }
    // basic armor name & jewel upgrade
    var zstr="document.getElementById('idC"+this.engName.charAt(3)+"').innerHTML='"+this.korName+"';";eval(zstr);

    // canvasArmor : detail armor information for pop up window
    var whatIsAcce = "";
    // フォントをゲーム内の表示に合わせる
    var AcceHead = '<TABLE width="180" align="center" class="font9" style="background-color:#E0E7E7;font-family:ＭＳ 明朝;">'
                  + '<tr><td>';
    var AcceTail = '</td></tr></table>';
    //name:#FF5973,lvl:#DE969C,masuk:#009900,atk:#006699,str:#9C9B99
    //強化品の場合は色を変更
    if(t.korName.indexOf("+")==-1) {
      whatIsAcce += "<font color='#FF5973'>"+t.korName+"</font><br>";
    } else {
      whatIsAcce += "<font color='#009900'>"+t.korName+"</font><br>";
    }
    if(t.itemLevel>0) {
      whatIsAcce += "<font color='#FF5973'>必要レベル: "+t.itemLevel+"<br></font>";
    }

    // special item
    whatIsAcce += "<font color='#009900'>";
    // 首飾り
    if(this.engName.charAt(3) == "N") {
        if (t.spLife>0) whatIsAcce += "ライフ&nbsp;"+t.spLife+"&nbsp;アップ<br>";
        if (t.spMana>0) whatIsAcce += "マナ&nbsp;"+t.spMana+"&nbsp;アップ<br>";
        if (t.spEne>0) whatIsAcce += "エネルギー&nbsp;"+t.spEne+"&nbsp;アップ<br>";
        if (t.spSta>0) whatIsAcce += "スタミナ&nbsp;"+t.spSta+"&nbsp;アップ<br>";
    }
    // 指輪
    if(this.engName.charAt(3) == "R") {
        if (t.spHelu>0) whatIsAcce += "体力&nbsp;"+t.spHelu+"&nbsp;アップ<br>";
        if (t.spAthe>0) whatIsAcce += "知力&nbsp;"+t.spAthe+"&nbsp;アップ<br>";
        if (t.spAlth>0) whatIsAcce += "素早さ&nbsp;"+t.spAlth+"&nbsp;アップ<br>";
        if (t.spTita>0) whatIsAcce += "体質&nbsp;"+t.spTita+"&nbsp;アップ<br>";
        if (t.spZeus>0) whatIsAcce += "統率&nbsp;"+t.spZeus+"&nbsp;アップ<br>";
    }
    // 腕輪
    if(this.engName.charAt(3) == "O") {
        if (t.spRenkin>0) whatIsAcce += "獲得金額&nbsp;"+t.spRenkin+"%&nbsp;上昇<br>";
        if (t.spBouken>0) whatIsAcce += "獲得経験値&nbsp;"+t.spBouken+"%&nbsp;上昇<br>";
    }

    // 小型装備の説明など
    var zDiamond='';
    if(t.text!='' && t.text!=null) zDiamond+=t.text.substring(1,t.text.length-1);
    whatIsAcce += zDiamond;
/*
    // 小型装備の抵抗値
    var zDiamond='';
    if (t.coldDef>0 && t.coldDef>0 && t.boltDef>0 && t.volcanicDef>0) {
      zDiamond+='';
    } else {
      if (t.coldDef>0)  {zDiamond+=t.coldDefz+':'+Math.round(t.coldDef*10*10)+'%<br>';}
      if (t.stoneDef>0) {zDiamond+=t.stoneDefz+':'+Math.round(t.stoneDef*10*10)+'%<br>';}
      if (t.boltDef>0)  {zDiamond+=t.boltDefz+':'+Math.round(t.boltDef*10*10)+'%<br>';}
      if (t.volcanicDef>0) {zDiamond+=t.volcanicDefz+':'+Math.round(t.volcanicDef*10*10)+'%<br>';}
    }
    whatIsAcce += zDiamond;
*/

    whatIsAcce += "</font>";

    // Etc (AC/mgical AC rate/mana usage/STR/WIS/DEX/Price)
    if(t.totalAC>0) {
      whatIsAcce += "<font color='#006699'>防御力:&nbsp;"+t.totalAC+"<BR></font>";
    }
    if(t.strLimit>0 || t.wisLimit>0 || t.spdLimit>0) {
      whatIsAcce += "<font color='#646464'>"
                 + (t.strLimit>0 ? "必要体力: "+t.strLimit+"<br>" : "")
                 + (t.wisLimit>0 ? "必要知力: "+t.wisLimit+"<br>" : "")
                 + (t.spdLimit>0 ? "必要素早さ: "+t.spdLimit+"<br>" : "")
                 + "</font>";
    }
    whatIsAcce += "<font color='#646464'>価格: "+t.itemPrice+" G</font>";
    // msg array update, idCHMsg[0]     N/R/O
    var zstr="idC"+this.engName.charAt(3)+"Msg[0]=AcceHead+whatIsAcce+AcceTail;";eval(zstr);
}

// bridge function for armor upgrade
// input : acceType (N/R/O)
//         type (jewel,masuk,special)=>J/M/S
//         value (jewel:zno, masuk:masukArr, special:zAC)
// output: applyJewel/Masuk/Special(), applyAcce(); writeAcce(); gatherAcce()
function updateAcce(zar,ztype,zvalue1,zvalue2,zvalue3,zvalue4,zvalue5) {
    var zstr="";
    switch(ztype) {
        case "J" : // jewel
            zstr="myAcce."+zar+".applyJewel("+zvalue1+");";eval(zstr);
            break;
        case "M" : // masuk
            zstr="myAcce."+zar+".applyMasuk(zvalue1);";eval(zstr);
            break;
        case "S" : // special item
            switch(zar) {
                case "N" : // ネックレス
                    zstr="myAcce."+zar+".applySpNLife("+zvalue1+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpNMana("+zvalue2+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpNEne("+zvalue3+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpNSta("+zvalue4+");";eval(zstr);
                    break;
                case "R" : // 指輪
                    zstr="myAcce."+zar+".applySpRHelu("+zvalue1+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpRAthe("+zvalue2+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpRAlth("+zvalue3+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpRTita("+zvalue4+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpRZeus("+zvalue5+");";eval(zstr);
                    break;
                case "O" : // 腕輪
                    zstr="myAcce."+zar+".applySpORenkin("+zvalue1+");";eval(zstr);
                    zstr="myAcce."+zar+".applySpOBouken("+zvalue2+");";eval(zstr);
                    break;
            }
            break;
    }
    zstr="myAcce."+zar+".applyAcce();";eval(zstr);
    zstr="myAcce."+zar+".writeAcce();";eval(zstr);
    myAcce.gatherAcce();
    myArmor.gatherArmor();

    myChar.getBareDam();
    updateDamage();

    return true;
}

// do this when the onClick event in menu is occurred
// parameter : zacce=,zname,zmin,zmax,zupnum
function chooseAcce(zacce,zname,zupnum) {
    // アクセサリの種類を判断して対象を初期化・再表示
    if(zacce[0].charAt(3)=="N") {
        myAcce.spLife=0;myAcce.spMana=0;myAcce.spEne=0;myAcce.spSta=0;
        myChar.spNeckLife=0;myChar.spNeckMana=0;
        myChar.spNeckElec=0;myChar.spNeckStam=0;
        genWriteIt("idSubLife",myChar.spRingLife);
        genWriteIt("idSubMana",myChar.spRingMana);
        genWriteIt("idSubElec",myChar.spRingElec);
        genWriteIt("idSubStam",myChar.spRingStam);
    } else if(zacce[0].charAt(3)=="R") {
        myAcce.spHelu=0;myAcce.spAthe=0;myAcce.spAlth=0;myAcce.spTita=0;myAcce.spZeus=0;
        myChar.spStr=0;myChar.spWis=0;myChar.spSpd=0;myChar.spCon=0;myChar.spLeader=0;
        myChar.spRingLife=0;myChar.spRingMana=0;
        myChar.spRingElec=0;myChar.spRingStam=0;
        genWriteIt("idSubStr",0);genWriteIt("idSubWis",0);genWriteIt("idSubSpd",0);
        genWriteIt("idSubCon",0);genWriteIt("idSubLeader",0);
        genWriteIt("idSubLife",myChar.spNeckLife);
        genWriteIt("idSubMana",myChar.spNeckMana);
        genWriteIt("idSubElec",myChar.spNeckElec);
        genWriteIt("idSubStam",myChar.spNeckStam);
    } else if(zacce[0].charAt(3)=="O") {
        myAcce.spRenkin = 0;
        myAcce.spBouken = 0;
    }

    var zstr="";
    // at first destroy sub acce & recreate it
    zstr="myAcce."+zacce[0].charAt(3)+"=null;";eval(zstr);
    // myAcce.N=new makeAcce(zacce,zname);     // N,R,O etc
    zstr="myAcce."+zacce[0].charAt(3)+"=new makeAcce(zacce,zname);";eval(zstr);
    // myAcce.N.updateAcce();     // N,R,O etc
    zstr="updateAcce('"+zacce[0].charAt(3)+"','J',"+zupnum+",0,0,0,0);";eval(zstr);
    updateDamage();     // call this in getAttack.js, required to show one/two hand damage with shielda altogether
    return true;
}

// アクセサリ：魔石選択
function canvasCMasuk(id) {
    var zAcce=eval('myAcce.'+id.charAt(3));
    var zzTrTd = '<tr><td>';
    var zzTd = '</td><td style="color:black">';
    var masukHead = '<Form name="'+id+'Form">'
                  + '<TABLE width="250" height="150" class="font9" align="center" style="background-color:#E0E7E7;">';
    var masukTail = '</td></tr><tr>'
                  + '<td height="20" colspan="2">';
    if (zAcce.isNoAcce || zAcce.levelGrade>=6) masukTail +='<input type="BUTTON" class="BUTTON1" onClick="popOutFixed();" value="OK">';
    else masukTail += '<input type="BUTTON" class="BUTTON1" onClick="submitCMasuk(this.form,'+zAcce.levelGrade+');" value="OK">';
    masukTail += '</td></tr></table></Form>';
    var whatIsMasuk = '';

    if (zAcce.isNoAcce) 
        whatIsMasuk='<tr><td colspan="2">アクセサリなし</td></tr>';
    else if (zAcce.levelGrade==1) 
        whatIsMasuk='<tr><td colspan="2">'+zAcce.korName+'<BR>魔石は付加できません</td></tr>';

    var zstr=id+"Msg[0]=masukHead+whatIsMasuk+masukTail;";eval(zstr);
    popUpMsg(eval(id+"Msg"));
    // read the myWeapon.masuk value and display it
    var zzz="";
    if (!zAcce.isNoAcce && zAcce.levelGrade>=2 && zAcce.levelGrade<=5) {
        for (var x=2;x<=zAcce.levelGrade;x++) {
            var zMasuk = eval('zAcce.masuk'+(x-1));
            zzz+=zMasuk+",";
            var zstr = 'document.all.'+id+'FormM'+(x-1)+'['+zMasuk+'].checked=true';
            eval(zstr);
        }
    }
}
// アクセサリ：魔石
function submitCMasuk(zForm,zGrade) {
    var zarr=new Array();
    for (var x=2;x<=zGrade;x++) {
        var zName=eval('zForm.'+zForm.name+'M'+(x-1));
        var zLength=zName.length;
        for (var y=0;y<zLength;y++) 
            if (zName[y].checked) zarr[(x-2)]=y;
    }
    updateAcce(zForm.name.charAt(3),"M",zarr);
    popOutFixed();
}

// SPアクセサリ効果選択ウインドウ
function canvasCSpecial(id) {
    var zAcce=eval('myAcce.'+id.charAt(3));
    var zzTrTd = '<tr><td>';
    var zzTd = '</td><td style="color:black">';
    var spHead = '<Form name="'+id+'Form">'
               + '<TABLE width="250" height="100" class="font9" align="center" style="background-color:#E0E7E7;">';
    var spTail = '<tr><td height="20" colspan="2">';
    if (zAcce.isNoAcce) spTail +='<input type="BUTTON" class="BUTTON1" onClick="popOutFixed();" value="OK">';
    else spTail += '<input type="BUTTON" class="BUTTON1" onClick=submitCSpecial(this.form,"'+id+'"); value="OK">';
    spTail += '</td></tr></table></Form>';
    var whatIsSp = '';
    if (zAcce.isNoAcce) {
        whatIsSp='<tr><td colspan="2">アクセサリなし</td></tr>';
    } else if(zAcce.engName.substring(0,4)=="acCN") {
        whatIsSp += '<tr height="25"><td colspan="2" class="black9b">SP首飾り</td></tr>'
                  + '<tr><td width="100">ライフ＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpLife" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spNecklessMin+'〜'+zAcce.spNecklessMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">マナ＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpMana" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spNecklessMin+'〜'+zAcce.spNecklessMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">エネルギー＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpEne" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spNecklessMin+'〜'+zAcce.spNecklessMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">スタミナ＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpSta" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spNecklessMin+'〜'+zAcce.spNecklessMax+')&nbsp;</td></tr>';
    } else if(zAcce.engName.substring(0,4)=="acCR") {
        whatIsSp += '<tr height="25"><td colspan="2" class="black9b">SP指輪</td></tr>'
                  + '<tr><td width="100">体力＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpHelu" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spRingMin+'〜'+zAcce.spRingMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">知力＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpAthe" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spRingMin+'〜'+zAcce.spRingMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">素早さ＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpAlth" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spRingMin+'〜'+zAcce.spRingMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">体質＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpTita" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spRingMin+'〜'+zAcce.spRingMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">統率＋</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpZeus" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;('+zAcce.spRingZeusMin+'〜'+zAcce.spRingZeusMax+')&nbsp;</td></tr>';
    } else if(zAcce.engName.substring(0,4)=="acCO") {
        whatIsSp += '<tr height="25"><td colspan="2" class="black9b">SP腕輪</td></tr>'
                  + '<tr><td width="100">獲得金額アップ</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpRenkin" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;%&nbsp;('+zAcce.spRenkinMin+'〜'+zAcce.spRenkinMax+')&nbsp;</td></tr>';
        whatIsSp += '<tr><td width="100">獲得経験値アップ</td>'
                  + '<td class="black9"><INPUT TYPE="text" NAME="'+id+'FormSpBouken" SIZE="3" MAXLENGTH="3" onBlur="return true;" class="tdtext">'
                  + '&nbsp;%&nbsp;('+zAcce.spBoukenMin+'〜'+zAcce.spBoukenMax+')&nbsp;</td></tr>';
    }
    var zstr=id+"Msg[0]=spHead+whatIsSp+spTail;";eval(zstr);
    popUpMsg(eval(id+"Msg"));
    // read the myWeapon.masuk value and display it
    if (!zAcce.isNoAcce) {
        if(zAcce.engName.substring(0,4)=="acCN") {
            document.getElementById(id+'FormSpLife').value=zAcce.spLife;
            document.getElementById(id+'FormSpMana').value=zAcce.spMana;
            document.getElementById(id+'FormSpEne').value=zAcce.spEne;
            document.getElementById(id+'FormSpSta').value=zAcce.spSta;
        } else if(zAcce.engName.substring(0,4)=="acCR") {
            document.getElementById(id+'FormSpHelu').value=zAcce.spHelu;
            document.getElementById(id+'FormSpAthe').value=zAcce.spAthe;
            document.getElementById(id+'FormSpAlth').value=zAcce.spAlth;
            document.getElementById(id+'FormSpTita').value=zAcce.spTita;
            document.getElementById(id+'FormSpZeus').value=zAcce.spZeus;
        } else if(zAcce.engName.substring(0,4)=="acCO") {
            document.getElementById(id+'FormSpRenkin').value=zAcce.spRenkin;
            document.getElementById(id+'FormSpBouken').value=zAcce.spBouken;
        }
    }
}
// SPアクセサリ値範囲チェック
function submitCSpecial(zForm,id) {
    if(zForm.name=="idCNSForm") {
        var zAcce=eval('myAcce.'+id.charAt(3));
        var zSp="";
        zSp=isNumber2(eval("zForm."+zForm.name+"SpLife.value"));
        if (zSp<zAcce.spNecklessMin || zSp>zAcce.spNecklessMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpLife.focus()");
            eval("zForm."+zForm.name+"SpLife.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpMana.value"));
        if (zSp<zAcce.spNecklessMin || zSp>zAcce.spNecklessMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpMana.focus()");
            eval("zForm."+zForm.name+"SpMana.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpEne.value"));
        if (zSp<zAcce.spNecklessMin || zSp>zAcce.spNecklessMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpEne.focus()");
            eval("zForm."+zForm.name+"SpEne.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpSta.value"));
        if (zSp<zAcce.spNecklessMin || zSp>zAcce.spNecklessMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpSta.focus()");
            eval("zForm."+zForm.name+"SpSta.select()");return false;
        }
        var zstr="";
        zstr+='updateAcce("'+zForm.name.charAt(3)+'","S",'
            +eval("zForm."+zForm.name+"SpLife.value")+','
            +eval("zForm."+zForm.name+"SpMana.value")+','
            +eval("zForm."+zForm.name+"SpEne.value")+','
            +eval("zForm."+zForm.name+"SpSta.value")+','
            +'0);';
        eval(zstr);
        popOutFixed();
    } else if(zForm.name=="idCRSForm") {
        var zAcce=eval('myAcce.'+id.charAt(3));
        var zSp="";
        zSp=isNumber2(eval("zForm."+zForm.name+"SpHelu.value"));
        if (zSp<zAcce.spRingMin || zSp>zAcce.spRingMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpHelu.focus()");
            eval("zForm."+zForm.name+"SpHelu.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpAthe.value"));
        if (zSp<zAcce.spRingMin || zSp>zAcce.spRingMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpAthe.focus()");
            eval("zForm."+zForm.name+"SpAthe.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpAlth.value"));
        if (zSp<zAcce.spRingMin || zSp>zAcce.spRingMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpAlth.focus()");
            eval("zForm."+zForm.name+"SpAlth.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpTita.value"));
        if (zSp<zAcce.spRingMin || zSp>zAcce.spRingMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpTita.focus()");
            eval("zForm."+zForm.name+"SpTita.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpZeus.value"));
        if (zSp<zAcce.spRingZeusMin || zSp>zAcce.spRingZeusMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpZeus.focus()");
            eval("zForm."+zForm.name+"SpZeus.select()");return false;
        }
        var zstr="";
        zstr+='updateAcce("'+zForm.name.charAt(3)+'","S",'
            +eval("zForm."+zForm.name+"SpHelu.value")+','
            +eval("zForm."+zForm.name+"SpAthe.value")+','
            +eval("zForm."+zForm.name+"SpAlth.value")+','
            +eval("zForm."+zForm.name+"SpTita.value")+','
            +eval("zForm."+zForm.name+"SpZeus.value")+');';
        eval(zstr);
        popOutFixed();
    } else if(zForm.name=="idCOSForm") {
        var zAcce=eval('myAcce.'+id.charAt(3));
        var zSp="";
        zSp=isNumber2(eval("zForm."+zForm.name+"SpRenkin.value"));
        if (zSp<zAcce.spRenkinMin || zSp>zAcce.spRenkinMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpRenkin.focus()");
            eval("zForm."+zForm.name+"SpRenkin.select()");return false;
        }
        zSp=isNumber2(eval("zForm."+zForm.name+"SpBouken.value"));
        if (zSp<zAcce.spBoukenMin || zSp>zAcce.spBoukenMax) {
            alert("不正な値です");
            eval("zForm."+zForm.name+"SpBouken.focus()");
            eval("zForm."+zForm.name+"SpBouken.select()");return false;
        }
        var zstr="";
        zstr+='updateAcce("'+zForm.name.charAt(3)+'","S",'
            +eval("zForm."+zForm.name+"SpRenkin.value")+','
            +eval("zForm."+zForm.name+"SpBouken.value")+','
            +'0,'
            +'0,'
            +'0);';
        eval(zstr);
        popOutFixed();
    }
}
