typ = 0;    //新車(0)・中古車(1)

function calcSum()
{
  n=0;m=0;z=0;
  //車両価格
  if (document.loan.hontai.value == "") document.loan.hontai.value = "0";
  if (!NumCheck(document.loan.hontai.value)){
    alert("車両価格は半角数字で入力してください");
    document.loan.hontai.focus();
    return;
  }
  n+=eval(document.loan.hontai.value);
  //自賠責
  if (document.loan.jibaiseki.value == "") document.loan.jibaiseki.value = "0";
  if (!NumCheck(document.loan.jibaiseki.value)){
    alert("自賠責保険料は半角数字で入力してください");
    document.loan.jibaiseki.focus();
    return;
  }
  m+=eval(document.loan.jibaiseki.value);
  //登録料
  if (document.loan.torokuryo.value == "") document.loan.torokuryo.value = "0";
  if (!NumCheck(document.loan.torokuryo.value)){
    alert("登録料は半角数字で入力してください");
    document.loan.torokuryo.focus();
    return;
  }
  n+=eval(document.loan.torokuryo.value);
  //重量税
  if (document.loan.juryozei.value == "") document.loan.juryozei.value = "0";
  if (!NumCheck(document.loan.juryozei.value)){
    alert("重量税は半角数字で入力してください");
    document.loan.juryozei.focus();
    return;
  }
  m+=eval(document.loan.juryozei.value);
  //印紙代
  if (document.loan.innsidai.value == "") document.loan.innsidai.value = "0";
  if (!NumCheck(document.loan.innsidai.value)){
    alert("印紙代は半角数字で入力してください");
    document.loan.innsidai.focus();
    return;
  }
  m+=eval(document.loan.innsidai.value);
  //整備料
  if (document.loan.seibiryo.value == "") document.loan.seibiryo.value = "0";
  if (!NumCheck(document.loan.seibiryo.value)){
    alert("納車整備料は半角数字で入力してください");
    document.loan.seibiryo.focus();
    return;
  }
  n+=eval(document.loan.seibiryo.value);
  //排気ガス検査費用
  if (document.loan.gaskenhiyou.value == "") document.loan.gaskenhiyou.value = "0";
  if (!NumCheck(document.loan.gaskenhiyou.value)){
    alert("排気ガス検査費用は半角数字で入力してください");
    document.loan.gaskenhiyou.focus();
    return;
  }
  n+=eval(document.loan.gaskenhiyou.value);
  //配送料
  if (document.loan.haisoryo.value == "") document.loan.haisoryo.value = "0";
  if (!NumCheck(document.loan.haisoryo.value)){
    alert("配送料は半角数字で入力してください");
    document.loan.haisoryo.focus();
    return;
  }
  n+=eval(document.loan.haisoryo.value);
  //その他
  if (document.loan.etc.value == "") document.loan.etc.value = "0";
  if (!NumCheck(document.loan.etc.value)){
    alert("その他金額は半角数字で入力してください");
    document.loan.etc.focus();
    return;
  }
  n+=eval(document.loan.etc.value);
  //各計算
  z=Math.floor(n*0.05);
  document.loan.zeikin.value=z;
  document.loan.gokei.value=n+m+z;
  if (document.loan.kb[0].checked){
    document.loan.ritu.value = "7.5";
  }else{
    document.loan.ritu.value = "9.5";
  }
  document.loan.atama.value = "0";
  document.loan.bonus.value = "0";
  
}

function chkRitu(v)
{
  typ = v;
  var s = document.loan.kaisu.selectedIndex;
  //alert(v + " - " + s);
  //alert(document.loan.kaisu.options[0].value);
  ChgRitu(document.loan.kaisu.options[s].value);
}

function ChgRitu(cnt)
{
  //alert(typ + " - " + cnt);
  if (typ == 0){
    ritu = 7.5; //新車用
    switch(cnt)
    {
      case "6": ritu = 2.91; break;
      case "10": ritu = 4.59; break;
      case "12": ritu = 5.44; break;
      case "15": ritu = 6.73; break;
      case "18": ritu = 8.02; break;
      case "20": ritu = 8.89; break;
      case "24": ritu = 10.64; break;
      case "30": ritu = 13.29; break;
      case "36": ritu = 15.99; break;
      case "42": ritu = 18.73; break;
      case "48": ritu = 21.51; break;
      default: ritu = 9.9;
    }
  }else{
    ritu = 10.5; //中古車用
    switch(cnt)
    {
      case "6": ritu = 2.91; break;
     case "10": ritu = 4.59; break;
      case "12": ritu = 5.44; break;
      case "15": ritu = 6.73; break;
      case "18": ritu = 8.02; break;
      case "20": ritu = 8.89; break;
      case "24": ritu = 10.64; break;
      case "30": ritu = 13.29; break;
      case "36": ritu = 15.99; break;
      case "42": ritu = 18.73; break;
      case "48": ritu = 21.51; break;
      default: ritu = 9.9;
    }
  }
  document.loan.ritu.value = ritu;
}

function addComma(x) { // 引数の例としては 95839285734.3245
    var s = "" + x; // 確実に文字列型に変換する。例では "95839285734.3245"
    var p = s.indexOf("."); // 小数点の位置を0オリジンで求める。例では 11
    if (p < 0) { // 小数点が見つからなかった時
        p = s.length; // 仮想的な小数点の位置とする
    }
    var r = s.substring(p, s.length); // 小数点の桁と小数点より右側の文字列。例では ".3245"
    for (var i = 0; i < p; i++) { // (10 ^ i) の位について
        var c = s.substring(p - 1 - i, p - 1 - i + 1); // (10 ^ i) の位のひとつの桁の数字。例では "4", "3", "7", "5", "8", "2", "9", "3", "8", "5", "9" の順になる。
        if (c < "0" || c > "9") { // 数字以外のもの(符合など)が見つかった
            r = s.substring(0, p - i) + r; // 残りを全部付加する
            break;
        }
        if (i > 0 && i % 3 == 0) { // 3 桁ごと、ただし初回は除く
            r = "," + r; // カンマを付加する
        }
        r = c + r; // 数字を一桁追加する。
    }
    return r; // 例では "95,839,285,734.3245"
}

//毎月返済額計算メインルーチン
function calc(){
    //入力チェックへ
    if (!(Acheck() && Icheck())){
    return;
    }

    //基本部分
    var At = document.loan.atama.value;           //頭金
    var Am = document.loan.gokei.value - At;      //借入元金
    var Bo = document.loan.bonus.value;           //ボーナス加算月額
    var Bd = 6;                                   //ボーナスまでの月数
    var Rr = document.loan.ritu.value / 100;      //借入利率
    var s = document.loan.kaisu.selectedIndex;
    var Nn = document.loan.kaisu.options[s].value;   //支払回数
    //if (Nn < 6) Bd = 1;
    //alert (Nn + " - " + Bd)
    var Bn = 0;
    if (Bo == 0){
      Bn = 0;
    }else{
      //Bn = Math.floor((Nn + 6 - Bd) / 6);         //ボーナス支払回数
      Bn = Math.floor(Nn / 6);         //ボーナス支払回数
    }
    //alert (Nn + " - " + Bn)
    if (Am < (Bn * Bo * 2)){
      alert("ボーナス返済合計額はローン対象金額の50％以下にしてください");
        document.loan.bonus.focus();
        return;
    }

    var Tr = Math.floor(Am * Rr);                 //金利手数料
    var Pall = Am + Tr;                           //支払総額
    var Mp = Pall - (Bo * Bn);                    //毎月の支払総額
    var Mpay = Math.floor(Mp / Nn);               //毎月の支払額(概算)
    var Mpay2 = Math.floor(Mpay / 100) * 100;     //２回目以降の支払額
    var Mplus = Mp - (Mpay2 * Nn);                //初回の支払増分
    var Mpay1 = Mpay2 + Mplus;                    //初回の支払額
    

    //出力エリアに結果出力
    subWin = window.open("","result","width=450,height=280,left=100,top=100,resizable=yes,scrollbars=yes,location=no,menubar=no");
    with(subWin.document)
    {
      open();
      write("<TABLE width=400 cellpadding=4 cellspacing=2>");
      write("<tr bgcolor=#000099><td colspan=2 align=center><FONT size=+1><B><FONT color=#ffffff>シミュレーション結果</FONT></B></FONT></td></tr>");
      write("<TR><TD><FONT size=-1>頭金</FONT></TD><TD align=right><FONT size=-1>"+addComma(At)+"円</FONT></TD></TR>");
      write("<TR bgcolor=#c4ffff><TD><FONT size=-1>ローン対象金額(借入額)</FONT></TD><TD align=right><FONT size=-1>"+addComma(Am)+"円</FONT></TD></TR>");
      write("<TR><TD><FONT size=-1>ご返済回数</FONT></TD><TD align=right><FONT size=-1>"+addComma(Math.floor(Nn))+"回</FONT></TD></TR>");
      //write("<TR bgcolor=#c4ffff><TD><FONT size=-1>金利</FONT></TD><TD align=right><FONT size=-1>"+addComma(Rr*100)+"％</FONT></TD></TR>");
      write("<TR bgcolor=#c4ffff><TD><FONT size=-1>初回分割支払額</FONT></TD><TD align=right><FONT size=-1>"+addComma(Math.floor(Mpay1))+"円</FONT></TD></TR>");
      write("<TR><TD><FONT size=-1>２回目以降分割支払額</FONT></TD><TD align=right><FONT size=-1>"+addComma(Math.floor(Mpay2))+"円 × " + (Nn-1) + "回</FONT></TD></TR>");
      if (Bo == 0){
        write("<TR bgcolor=#c4ffff><TD><FONT size=-1>ボーナス月支払加算額</FONT></TD><TD align=right width=152><FONT size=-1>無し</FONT></TD></TR>");
      }else{
        write("<TR bgcolor=#c4ffff><TD><FONT size=-1>ボーナス月支払加算額</FONT></TD><TD align=right width=152><FONT size=-1>"+addComma(Math.floor(Bo))+"円 × " + Bn + "回</FONT></TD></TR>");
      }
      write("<TR><TD colspan=2>　</TD></TR>");
      write("<TR><TD colspan=2 align=center><INPUT type=button value=閉じる onClick='window.close()'></TD></TR>");
      write("</TABLE>");
      close();
    }
//メインルーチンここまで
}

//借入元金入力チェック
function Acheck(){
    var gankin = document.loan.gokei.value;
    var atamakin = document.loan.atama.value;
    if (gankin == ""){
        alert("合計金額が入力されていません");
        document.loan.gokei.focus();
        return false;
    }
    if (!NumCheck(gankin)){
        alert("合計金額は半角数字で入力してください");
        document.loan.hontai.focus();
        return false;
    }
    if (gankin < 50000 || gankin > 2000000){
        alert("合計金額には50,000〜2,000,000円以内で入力してください");
        document.loan.hontai.focus();
        return false;
    }
    if (!NumCheck(atamakin)){
        alert("頭金は半角数字で入力してください");
        document.loan.atama.focus();
        return false;
    }
    if (eval(atamakin) > eval(gankin)){
      alert("頭金は合計金額より少なくなるように入力してください");
      document.loan.atama.focus();
      return false;
    }
    
    return true;
}

//借入利率入力チェック
function Icheck(){
    
    var s = document.loan.kaisu.selectedIndex;
    ChgRitu(document.loan.kaisu.options[s].value);    
    //alert(s + " - " + document.loan.kaisu.options[s].value);
    var rate = document.loan.ritu.value;
    if (rate == ""){
        alert("借入利率が入力されていません");
        document.loan.ritu.focus();
        return false;
    }

    if (!NumCheck(rate) || rate < 0.001 || rate > 30.000){
        alert("借入利率には0.001〜30.000までの数値を入力してください");
        document.loan.ritu.focus();
        return false;
    }
    return true;
}    

//入力が数値かチェック
function NumCheck(n){
    var i = 0;
    for (i = 0; i < n.length; i++){
        var s = n.substring(i, i + 1);
        if (s == "0"  ||  s == "1" ||  s == "2" || s == "3" || s == "4" || s == "5" || s == "6" || s == "7" || s == "8" || s == "9" || s == "."){
            continue;
        }
        else{
            return false;
        }
    }
    return true;
}

//入力エリアのクリア
function ClearIP(){
    document.loan.kb[0].checked = true;
    document.loan.hontai.value = "";
    document.loan.jibaiseki.value = "";
    document.loan.torokuryo.value = "";
    document.loan.juryozei.value = "";
　　document.loan.innsidai.value == "";
    document.loan.seibiryo.value = "";
　　document.loan.gaskenhiyou.value == "";
    document.loan.haisoryo.value = "";
    document.loan.etc.value = "";
    document.loan.zeikin.value = "";
    document.loan.gokei.value = "";
    document.loan.atama.value = "";
    document.loan.bonus.value = "";
    document.loan.kaisu.selectedIndex = 1;
    document.loan.ritu.value = "";
    document.loan.hontai.focus();
}

