// isbncheck: ISBN validation checker for javascript
// generated by femc.org
// ver 0.1 2005/07/12 test ver window.alertつき
// ver 1.0 2005/08/05 window.alertなし-チェック

function chkisbn() {
  var isbno = document.isbn.num.value.replace(/ /g,'');
  var isbnolen = isbno.length;
if(isbno.match(/-/g)){
  isbnomatch = (isbno.match(/-/g)).length;
}else{
isbnomatch = '0';
}
  isbnw = isbno.replace(/-/g, '');
  if (isbnw.length < 9) {
    window.alert('ISBN length short');
    return;
  }
  else if (isbnw.length > 10) {
    window.alert('ISBN length over');
    return;
}

  var isbn1 = isbnw.charAt(0);//1桁目
  var isbn2 = isbnw.charAt(1);//2桁目
  var isbn3 = isbnw.charAt(2);//3桁目
  var isbn4 = isbnw.charAt(3);//4桁目
  var isbn5 = isbnw.charAt(4);//5桁目
  var isbn6 = isbnw.charAt(5);//6桁目
  var isbn7 = isbnw.charAt(6);//7桁目
  var isbn8 = isbnw.charAt(7);//8桁目
  var isbn9 = isbnw.charAt(8);//9桁目

  var val = eval(isbn1) * 10;//10乗
  val = val + eval(isbn2) * 9;//9乗
  val = val + eval(isbn3) * 8;//8乗
  val = val + eval(isbn4) * 7;//7乗
  val = val + eval(isbn5) * 6;//6乗
  val = val + eval(isbn6) * 5;//5乗
  val = val + eval(isbn7) * 4;//4乗
  val = val + eval(isbn8) * 3;//3乗
  val = val + eval(isbn9) * 2;//2乗

  decimalval = Math.floor(val % 11); //11で割った余り小数点以下切捨て
  digitval = 11 - decimalval; //11から引いてやるとチェックデジットが出る

  if (digitval == 11) {//割り切れたのでチェックデジットは0
    digitval = '0';
  }
  else {
    if (digitval == 10) {//10の場合はXに置き換え
      digitval = 'X';
    }
    else {
      digitval = digitval.toString();
    }
  }

  var digit = isbnw.charAt(9);//10桁目
  if(digit == 'x'){digit = digit.toUpperCase();};//xが小文字のとき
  var MSGOK = "ISBN is OK";
  var MSGFAIL = "ISBN is failed";
  var MSGCHK = "CHECK start";
  if (digit == '') {
    document.isbn.message.value = MSGCHK;
  }else {
    if (digit == digitval) {
      document.isbn.message.value = MSGOK;
    }else {
      document.isbn.message.value = MSGFAIL;
    }
  }
  if (isbnomatch == '0'){//-がない場合
    if (isbnolen == '9'){//10桁であればdigitをくっつけるだけ
    isbnval = isbno + digitval;
    }else{//10桁であれば9桁だけ抜いてdigitをくっつけるだけ
    isbno = isbno.substr(0,9);
    isbnval = isbno + digitval;
    }
  }else if(isbnomatch == '3'){//-が3つの場合
    isbno = isbno.substr(0,11);//-込みで11桁抜く
    isbnval = isbno + '-' + digitval;//-とdigitをくっつける
  }else if(isbnomatch == '2'){//-が2つの場合
    isbnval = isbno + '-' + digitval;//-とdigitをくっつける
  }
  document.isbn.isbnval.value = isbnval;
}
