// グローバル変数 takahashi
var agt=navigator.userAgent.toLowerCase();
var is_firefox = (agt.indexOf("firefox") != -1);

////////////////
//id による文字列取得
////////////////
function getTextById(id) {
  if (is_firefox) {
    return document.getElementById(id).textContent;
  } else {
    return document.getElementById(id).innerText;
  }
}

////////////////
//id による文字列設定
////////////////
function setTextById(id, text) {
  if (is_firefox) {
    document.getElementById(id).textContent = text;
  } else {
    document.getElementById(id).innerText = text;
  }
}

////////////////
//等級チェック
////////////////
function getRating(obj){
  if(obj.selectedIndex == 0){                       // 「等級」が未選択
    document.estimate.carInsurance[0].checked = false; // 「ある」を解除
    document.estimate.carInsurance[1].checked = true;  // 「ない」を選択
  } else {                                             // 「等級」が選択済み
    document.estimate.carInsurance[0].checked = true;  // 「ある」を選択
    document.estimate.carInsurance[1].checked = false; // 「ない」を解除
  }
}

////////////////
//等級の選択を解除
////////////////
function setRating(obj){
  obj[0].selected = true; // 「▼選択」に変更
}

////////////////
//メールアドレスチェック
////////////////
function check_mailaddress() {
  if (document.inquiry.mail.value == "") { // 「メールアドレス」の入力をチェック
    window.alert("メールアドレスを入力してください");
    return false;
  }
  
  if (!document.inquiry.mail.value.match(/.+@.+\..+/)) { // 「メールアドレス」の形式をチェック
    window.alert("メールアドレスが正しくありません");
    return false;
  }
  
  if (document.inquiry.mail2.value == "") { // 「メールアドレス確認用再入力」の入力をチェック
    window.alert("確認用のメールアドレスを入力してください");
    return false;
  }
  
  if (!document.inquiry.mail2.value.match(/.+@.+\..+/)) { // 「メールアドレス確認用再入力」の形式をチェック
    window.alert("確認用のメールアドレスが正しくありません");
    return false;
  }
  
  if (document.inquiry.mail.value != document.inquiry.mail2.value) {
    window.alert("二つのメールアドレスが合致しません");
    return false;
  }
  
  return true;
}

////////////////
//一回だけリロード
////////////////
function reload_window() {
  if (window.name != "end") {
    location.reload();
    window.name = "end";
  }
}

////////////////
//画像切り替え
////////////////
function change_button(target, source) {
  document.getElementById(target).src = source;
}

////////////////
//ミニウィンドウを開く
////////////////
function mini_window(url) {
  switch (url) {
    case "../mini1.html":
      window.open(url, "window_help", "width=400, height=530, scrollbars=yes");
      break;
    case "mini2.html":
      window.open(url, "window_help", "width=600, height=200, scrollbars=no");
      break;
    case "../mini3.html":
      window.open(url, "window_help", "width=600, height=350, scrollbars=no");
      break;
  }
}

////////////////
//注目表示チェック（期限は表示後一ヶ月）
////////////////
function check_new(limit) {
  var date = new Date();
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  if (String(month).length == 1) {
    month = "0" + String(month);
  }
  var day = date.getDate();
  if (String(day).length == 1) {
    day = "0" + String(day);
  }
  var now = String(year) + String(month) + String(day);
  
  if (Number(limit) > Number(now)) {
    document.write('<div class="linkTitleNew" style="display: inline"><img src="../images/new.gif" /></div>');
  } else {
    document.write('<div class="linkTitleNew" style="display: none;"><img src="../images/new.gif" /></div>');
  }
}

////////////////
//項目詳細欄開閉
////////////////
function show_hide(id) {
  var disp = document.all(id).style.display;
  if (disp == "block") {
    document.all(id).style.display = "none";
    document.all(id + "_open").style.display = "inline";
    document.all(id + "_close").style.display = "none";
  } else {
    document.all(id).style.display = "block";
    document.all(id + "_open").style.display = "none";
    document.all(id + "_close").style.display = "inline";
  }
}

////////////////
//簡易見積＆詳細見積
////////////////
function next_window(val) {
  var carId = document.getElementById("37code").value;
  
  for (var i = 0; i < document.bodyColor.elements.length; i ++) {
    if (document.bodyColor.elements[i].checked) {
      break;
    }
  }
  
  if (i == document.bodyColor.elements.length) {
    alert("ボディカラーを選択してください。");
    return false;
  }
  
  set_cookie(carId + "bodyColor", document.bodyColor.elements[i].value);

  var priceRate = "priceRate_" + String(i + 1);  //据置価格率
  set_cookie(carId + "priceRate", getTextById(priceRate));
  
  if (val == "simple") {  //簡易見積
    window.open("../data/" + carId + "simple.html");  //簡易見積画面へ
  } else if (val == "detail") {  //詳細見積
    window.open("https://www.j-cic.net/37/data/" + carId + "detail.html");  //詳細見積画面へ
// takahashi
//    window.open("../data/" + carId + "detail.html");  //詳細見積画面へ
  }
}

////////////////
//Cookie書き出し
////////////////
function set_cookie(key, val) {
  document.cookie = key + "=" + escape(val);  //変数名＝値
}

////////////////
//Cookie読み込み
////////////////
function get_cookie(val) {
  if (document.cookie == "") {
    alert("Cookieがブロックされているのでお見積機能はご利用になれません。");
    return false;
  }
  
  var startIndex;
  startIndex = document.cookie.indexOf(val + "=");
  
  if (startIndex == -1) {
    return "";
  }
  
  startIndex = startIndex + val.length + 1;
  var endIndex;
  endIndex = document.cookie.indexOf(";", startIndex);
  
  if (endIndex == -1) {
    endIndex = document.cookie.length;
  }
  
  var res;
  res = document.cookie.substring(startIndex, endIndex);
  
  return unescape(res);
}

////////////////
//画面項目初期化
////////////////
function init_element(val) {
  var carId = document.getElementById("37code").value;
  var bodyColor = get_cookie(carId + "bodyColor");
  
  if (bodyColor == false) {  // Cookieが使えない！
    location.href = location.href.substr(0, location.href.length - (val.length + 5)) + ".html"
    return;
  }
  
  if (bodyColor == "") {  // ボディカラーが選択されていない！
    alert("ボディカラーを選択してください。");
    location.href = location.href.substr(0, location.href.length - (val.length + 5)) + ".html"
    return;
  }
  
  var initialPayment = get_cookie(carId + "initialPayment");  //頭金
  var bonusPayment = get_cookie(carId + "bonusPayment");  //ボーナス加算額
  
  setTextById("pageName_bodyColor", bodyColor);
  setTextById("content_bodyColor", bodyColor);
  
  if (initialPayment != "") {  //クッキーに過去の頭金情報があれば
    document.getElementById("initialPayment").value = initialPayment;
  } else {
    document.getElementById("initialPayment").value = "0";
    initialPayment = 0;
  }
  
  if (bonusPayment != "") {  //クッキーに過去のボーナス加算額情報があれば
    document.getElementById("bonusPayment").value = bonusPayment;
  } else {
    document.getElementById("bonusPayment").value = "0";
    bonusPayment = 0;
  }
  
  var c = new CalcPrice(carId);
  var snmrPrice = c.snmrPrice;  //37マイラーク価格
  
  setTextById("snmrPrice", String(num2fig(c.snmrPrice)));  //37マイラーク価格更新
//  setTextById("priceRate", String(c.priceRate));  //据置価格率更新
  
  if (val == "simple") {  //簡易見積画面
    var carTax = get_carTax();  //自動車税算出
    setTextById("carTax", String(num2fig(carTax)));  //自動車税更新
    
    var charge = get_charge();  // 諸費用
    
    var totalPrice = snmrPrice + charge;
    setTextById("totalPrice", String(num2fig(totalPrice)));  // 合計金額更新
    
    var monthlyAmount = check_monthlyAmount(charge);  // 月々お支払い金額チェック
    setTextById("monthlyAmount", String(num2fig(monthlyAmount)));  // 月々お支払い金額更新
  }
  
  if (val == "detail") {  //詳細見積画面
// takahashi
//    document.getElementById("title_37Price").value = String(num2fig(snmrPrice));  // hidden37マイラーク価格更新
    document.estimate.title_37Price.value = String(num2fig(snmrPrice));  // hidden37マイラーク価格更新
    document.getElementById("title_bodyColor").value = bodyColor;  // hiddenボディカラー更新
    document.getElementById("title_priceRate").value = String(c.priceRate);  // hidden据置価格率更新
  }
}

////////////////
//37マイラーク価格算出
////////////////
function CalcPrice(carId) {
  this.carId = carId;
  this.taxRate = 5;  //消費税率5%
//  this.interestPartition = 7.57;  //金利分割部分7.57%
  this.interestPartition = 9.19;  //金利分割部分9.19%  // 11月6日改定
  this.makerPrice = parseInt(fig2num(getTextById("makerPrice")));  //メーカー小売希望価格
  this.priceRate = parseInt(get_cookie(this.carId + "priceRate"));  //据置価格率
//  this.interestDeferred = 14.8;  //金利据置部分14.8%
  this.interestDeferred = 17.88;  //金利据置部分17.88%  // 11月6日改定
  this.consumptionTax = Math.floor(this.makerPrice / (100 + this.taxRate) * this.taxRate);  //消費税
  this.deferredPrice = (this.makerPrice - this.consumptionTax) / 100 * this.priceRate;  //据置価格
  this.snmrPrice = Math.floor((this.makerPrice - this.deferredPrice) / 1000) * 1000;  //37マイラーク価格
}

////////////////
//数字文字列に入った3桁毎のカンマを削除する
////////////////
function fig2num(FigureNum) {
  var Numeric = FigureNum;
  
  //カンマをすべて消す
  var Separator = Numeric.indexOf(',',0);
  while (Separator != -1) {
      Numeric = Numeric.substring(0, Separator) + Numeric.substring(Separator+1, Numeric.length);
      Separator = Numeric.indexOf(',',0);
  }
  //カンマ消去後の数値を返して終了！
  return Numeric;
}

////////////////
//数値を3桁区切にする
////////////////
function num2fig(Numeric) {
  Numeric += '';
  
  //うっかり入っていたカンマを消す(=fig2num())
  var Separator = Numeric.indexOf(',',0);
  while (Separator != -1) {
      Numeric = Numeric.substring(0, Separator) + Numeric.substring(Separator+1, Numeric.length);
      Separator = Numeric.indexOf(',',0);
  }
  
  //小数点を探し、小数点以下と整数部を分割して保持する
  var DecimalPoint = Numeric.lastIndexOf('.');
  if (DecimalPoint == -1) {
      var Decimals = '';
      var Integers = Numeric + '';
  } else {
      var Decimals = Numeric.substring(DecimalPoint,Numeric.length) + '';
      var Integers = Numeric.substring(0,DecimalPoint) + '';
  }
  //整数部の文字列長を3の倍数にする。足りない分は手前に' 'を埋め込む
  Blanks = Integers.length % 3;
  if (Blanks != 0) {
      for (var i = 0; 3-Blanks > i ; i++) {
          Integers = ' ' + Integers;
      }
  }
  
  //整数文字列先頭から3文字おきにカンマを挿入する
  //先頭がマイナス符号の時は負数として処理する
  FigureInteger = Integers.substring(0,3);
  var j = 2;
  if (Integers.charAt(2) == '-') {
      FigureInteger = FigureInteger + Integers.substring(3,6);
      j=4;
  }
  for (i = j; Integers.length > i ; i++) {
      if (i % 3 == 0) {
          FigureInteger = FigureInteger + ',' + Integers.substring(i,i+3);
      }
  }
  
  //臨時に入れておいた' 'を削除する
  while (FigureInteger.charAt(0) == ' ') {
      FigureInteger = FigureInteger.substring(1,FigureInteger.length);
  }
  
  //整形済みの整数部と、待避してあった小数部を連結。連結した文字列を返して終了！
  CommaNumber = FigureInteger + Decimals;
  return CommaNumber;
}

////////////////
// 自動車税算出
// 翌月登録として見積り算出
// 修正者：高塚
// 修正日：2007.3.27
////////////////
function get_carTax() {
  var myDate = new Date();
  var month = myDate.getMonth() + 1;  // 今月
  month = month + 1;  // 翌月
  if (month == 13) {month = 1;}
  
  var taxType = document.getElementById("taxType").value;
  var arrayType;
  
  switch (taxType) {
    case "A":
      /* 四月、五月、六月、七月、八月、九月、十月、十一月、十二月、一月、二月、三月 */
      arrayType = new Array(27000,24500,22100,19600,17200,14700,12200,9800,7300,4900,2400,0);
      break;
    case "B":
      arrayType = new Array(31600,28700,25800,23000,20100,17200,14300,11500,8600,5700,2800,0);
      break;
    case "C":
      arrayType = new Array(36200,32900,29600,26300,23000,19700,16400,13100,9800,6500,3200,0);
      break;
    case "D":
      arrayType = new Array(41200,37500,33700,30000,26200,22500,18700,15000,11200,7500,3700,0);
      break;
    case "E":
      arrayType = new Array(46700,42500,38200,34000,29700,25500,21200,17000,12700,8500,4200,0);
      break;
    case "F":
      arrayType = new Array(53100,48300,43500,38600,33800,29000,24100,19300,14500,9600,4800,0);
      break;
    case "G":
      arrayType = new Array(60900,55400,49800,44300,38700,33200,27700,22100,16600,11000,5500,0);
      break;
    case "H":
      arrayType = new Array(70100,63700,57300,51000,44600,38200,31800,25500,19100,12700,6300,0);
      break;
    case "I":
      arrayType = new Array(80600,73300,66000,58600,51300,44000,36600,29300,22000,14600,7300,0);
      break;
    case "J":
      arrayType = new Array(101700,92500,83200,74000,64700,55500,46200,37000,27700,18500,9200,0);
      break;
    case "K":
      arrayType = new Array(31600,28700,25800,23000,20100,17200,14300,11500,8600,5700,2800,0);
      break;
    case "L":
      arrayType = new Array(36200,32900,29600,26300,23000,19700,16400,13100,9800,6500,3200,0);
      break;
    case "Z":  //軽自動車
      arrayType = new Array(0,0,0,0,0,0,0,0,0,0,0,0);
      break;
  }
  
//  month = 4;  // DEBUG
  var simple = location.href.indexOf("simple.html");  // URLから"simple.html"が見つかった位置
  if (simple > -1) {  // 簡易見積画面
    setTextById("month", month);  // 登録月表示を変更
  }
  
  if (month < 4) {
    month += 12;
  }
  var carTax = arrayType[month - 4];
  
  return carTax;
}

////////////////
//諸費用算出
////////////////
function get_charge() {
  var charge;
  var simple = location.href.indexOf("simple.html");  // URLから"simple.html"が見つかった位置
  var detail = location.href.indexOf("detail.html");  // URLから"detail.html"が見つかった位置
  
  if (simple > -1) {  // 簡易見積画面
    charge =
      get_carTax()  //自動車税
      + parseInt(fig2num(getTextById("exciseTax")))  //自動車取得税
      + parseInt(fig2num(getTextById("weightTax")))  //自動車重量税
      + parseInt(fig2num(getTextById("jibaiseki")))  //自賠責保険料（37ヶ月）
      + parseInt(fig2num(getTextById("registration")))  //登録手続費用
      + parseInt(fig2num(getTextById("recycleLaw")))  //リサイクル法関連費用
    ;
  } else if (detail > -1) {  // 詳細見積画面
    charge =
      get_carTax()  //自動車税
      + parseInt(fig2num(document.getElementById("exciseTax").value))  //自動車取得税
      + parseInt(fig2num(document.getElementById("weightTax").value))  //自動車重量税
      + parseInt(fig2num(document.getElementById("jibaiseki").value))  //自賠責保険料（37ヶ月）
      + parseInt(fig2num(document.getElementById("registration").value))  //登録手続費用
      + parseInt(fig2num(document.getElementById("recycleLaw").value))  //リサイクル法関連費用
    ;
  }
  
  return charge;
}

////////////////
//月々お支払い金額チェック
////////////////
function check_monthlyAmount(charge) {
  var carId = document.getElementById("37code").value;
  var initialPayment = parseInt(document.getElementById("initialPayment").value) * 10000;  //頭金
  var bonusPayment = parseInt(document.getElementById("bonusPayment").value) * 10000;  //ボーナス加算額
  
  var c = new CalcPrice(carId);
  
  var interestPrice = Math.floor((c.snmrPrice + charge - initialPayment) * (c.interestPartition / 100)) + Math.floor(c.deferredPrice * (c.interestDeferred / 100));  //金利合計
  var monthlyAmount = Math.floor((((c.snmrPrice + charge + interestPrice) - initialPayment) - (bonusPayment * 6)) / 36 / 100) * 100;  //月々のお支払い金額
  
  if (monthlyAmount < 0) {
    monthlyAmount = 0;
  }
  
  return monthlyAmount;
}

////////////////
//月々お支払い金額更新
////////////////
function mod_monthlyAmount() {
  if (check_initialPayment() == false) {  //頭金チェック
    return false;
  }
  if (check_bonusPayment() == false) {  //ボーナス加算額チェック
    return false;
  }
  
  var charge = get_charge();  // 諸費用
  
  var monthlyAmount = check_monthlyAmount(charge);
  if (monthlyAmount < 5000) {
    alert("月々のお支払い金額が5,000円以上になるように頭金、ボーナス加算額を修正してください。");
  }
  setTextById("monthlyAmount", String(num2fig(monthlyAmount)));  //月々お支払い金額
}

////////////////
//頭金チェック
////////////////
function check_initialPayment() {
  if (document.getElementById("initialPayment").value == "") {
    document.getElementById("initialPayment").value = "0";
  } else if (document.getElementById("initialPayment").value.match(/\D/)) {
      alert("頭金の欄は1万円単位を半角数字で入力してください。");
      return false;
  }
  
  var makerPrice = parseInt(fig2num(getTextById("makerPrice")));  // メーカー小売希望価格
  var initialPayment = document.getElementById("initialPayment").value * 10000;  // 頭金
  var initialLimit = makerPrice / 100 * 25 + get_charge();  // 頭金限度額＝メーカー希望小売価格×25%＋諸費用
//alert("諸費用" + get_charge());
//alert("限度額" + initialLimit);
  if (initialPayment > initialLimit) {
    alert("頭金は" + Math.floor(initialLimit / 10000) + "万円までです。");
    document.getElementById("initialPayment").value = Math.floor(initialLimit / 10000);
    return false;
  }
  return true;
}

////////////////
//ボーナス加算額チェック
////////////////
function check_bonusPayment() {
  if (document.getElementById("bonusPayment").value == "") {
    document.getElementById("bonusPayment").value = "0";
  } else if (document.getElementById("bonusPayment").value.match(/\D/)) {
      alert("ボーナス加算額の欄は1万円単位を半角数字で入力してください。");
      return false;
  }
  
  return true;
}

////////////////
//簡易見積から詳細見積へ
////////////////
function to_detail() {
  var initialPayment = document.getElementById("initialPayment").value;
  if (check_initialPayment() == false) {  //頭金チェック
    return false;
  }
  
  var bonusPayment = document.getElementById("bonusPayment").value;
  if (check_bonusPayment() == false) {  //ボーナス加算額チェック
    return false;
  }
  
  var charge = get_charge();  // 諸費用
  var monthlyAmount = check_monthlyAmount(charge);  //月々お支払い金額チェック
  if (monthlyAmount < 5000) {
    alert("月々のお支払い金額が5,000円以上になるように頭金、ボーナス加算額を修正してください。");
    return false;
  }
  
  var carId = document.getElementById("37code").value;
  
  set_cookie(carId + "initialPayment", initialPayment);
  set_cookie(carId + "bonusPayment", bonusPayment);
  
  location.href = "https://www.j-cic.net/37/data/" + carId + "detail.html";
// takahashi
//  location.href = "../data/" + carId + "detail.html";
}

////////////////
//郵便番号→住所変換
////////////////
var xmlhttp;  // グローバル変数
function init_addr(page) {
  xmlhttp = this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
  document.getElementById("code2addr").onclick = function() {
    if (document.getElementById("postCode").value.length != 7) {
      alert("郵便番号は7桁の半角数字でご入力ください。");
      return;
    }
    if (document.getElementById("postCode").value.match(/\D/)) {
      alert("郵便番号は7桁の半角数字でご入力ください。");
      return;
    }

    xmlhttp.onreadystatechange = function() {
      var result = document.getElementById("address");
      try {
        if (xmlhttp.readyState == 4) {  // 通信完了
          if (xmlhttp.status == 200) {  // 正常
            result.value = xmlhttp.responseText;
            if (result.value == "") {
              result.value = "該当する住所がありません。";
            }
          }
        }
      } catch(e) {
        result.value = "エラー";
      }
    }
    
    if (xmlhttp.readyState > 0) xmlhttp.abort();
    var url;
    if (page == "detail") {
      url = "../cgi-bin/code2addr.cgi?postcode=" + document.getElementById("postCode").value;
    } else {
      url = "cgi-bin/code2addr.cgi?postcode=" + document.getElementById("postCode").value;
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
  }
}

////////////////
//メール送信フォーム
////////////////
function send_form() {
  if (check_initialPayment() == false) {  // 頭金チェック
    return false;
  }
  
  if (check_bonusPayment() == false) {  // ボーナス加算額チェック
    return false;
  }
  
  var monthlyAmount = check_monthlyAmount();
  if (monthlyAmount < 5000) {
    alert("頭金、ボーナス加算額が上限を超えています。");
    return false;
  }
  
  if (document.getElementById("title_bodyColor").value == "") {  // ボディカラー未選択チェック
    alert("ボディカラーを選択してください。");
    location.href = location.href.substr(0, location.href.length - (val.length + 5)) + ".html";
    return false;
  }
  
  window.blur();
  window.open("../cgi-bin/estimation.cgi", "window_send", "width=400, scrollbars=yes, resizable=no"); 
}


////////////////
//送信する
////////////////
function send_mail() {
  window.close();
  window.opener.close();
  window.alert("送信いたしました。\nご利用ありがとうございました。");
}


////////////////
//入力画面に戻る
////////////////
function back_form() {
  window.opener.focus();
  window.close();
}

////////////////
//コメントを表示
////////////////
function on_comment(num) {
  for (i=1; i<=9; i++) {
    document.getElementById("b_" + i).style.visibility = "hidden";
  }
  document.getElementById(num).style.visibility = "visible";
  document.getElementById("click1").style.visibility = "hidden";
  document.getElementById("click2").style.visibility = "hidden";
}

////////////////
//コメントを非表示
////////////////
function off_comment(num) {
  document.getElementById(num).style.visibility = "hidden";
  document.getElementById("click1").style.visibility = "visible";
  document.getElementById("click2").style.visibility = "visible";
}

