var isIE = false;
if(navigator.userAgent.indexOf("MSIE")!=-1){
  isIE = true;
}
var errFlg = new Object();
var TimeID = null;

//*********************************************
//全角を半角に変換します
//*********************************************
function zentohan(obj){
  if(typeof(obj.value)!="string")return false;
  var han= '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@----.,:';
  var zen= '１２３４５６７８９０ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ＠ー‐－―．，：';
  var word = obj.value;
  for(i=0;i<zen.length;i++){
    var regex = new RegExp(zen.charAt(i),"gm");
    word = word.replace(regex,han.charAt(i));
  }
  obj.value = word;
}

//*********************************************
//数字かどうかチェックします
//*********************************************
function checkNumeric(str){
  var num= '1234567890';
  var word = str;
  for(i=0;i<num.length;i++){
    var regex = new RegExp(num.charAt(i),"gm");
    word = word.replace(regex,"");
  }
  if(word.length > 0) {
    return false;
  }
  return true;
}

//*********************************************
//メールアドレスに使用できる文字かどうかチェックします
//*********************************************
function checkMailString(str){
  var num= '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@-_';
  var word = str;
  for(i=0;i<num.length;i++){
    var regex = new RegExp(num.charAt(i),"gm");
    word = word.replace(regex,"");
  }
  if(word.length > 0) {
    word = word.split(".").join("");
  }
  if(word.length > 0) {
    return false;
  }
  return true;
}

//*********************************************
//数値かどうかチェックします
//*********************************************
function checkSuuti(in_element){
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  
  //値チェック
  aStr=in_element.value;
  if (aStr.length > 0) {
    if(isNaN(aStr)==false) {
    } else {
      setError(in_element,"半角数値で入力してください");
      return;
    }
  }
  setNonError(in_element);
}

//*********************************************
//数字かどうかチェックします。桁数チェック付き（主に郵便番号用）
//*********************************************
function checkSuujiLength(in_element,length){
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  //値チェック
  aStr=in_element.value;
  if (aStr.length > 0) {
    if(checkNumeric(aStr)) {
      if(aStr.length < length) {
        setError(in_element,length + "桁の数字で入力してください");
        return;
      }
    } else {
      setError(in_element,"半角数字で入力してください");
      return;
    }
  }
  setNonError(in_element);
}

//*********************************************
//指定範囲内の数値かどうかチェックします。
//*********************************************
function checkSuutiBetween(in_element,num_min,num_max){
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  
  //値チェック
  aStr=in_element.value;

  if (aStr.length > 0) {
    if(checkNumeric(aStr)) {
      if(parseInt(aStr) <= num_min) {
        setError(in_element,num_min + "より大きい数字を入力してください");
        return;
      }
      if(parseInt(aStr) >= num_max) {
        setError(in_element,num_max + "より小さい数字を入力してください");
        return;
      }
    } else {
      setError(in_element,"半角数字で入力してください");
      return;
    }
  }
  setNonError(in_element);
}

//*********************************************
//ハイフンを含む数字文字列かどうかチェックします。最低桁数制限付き。主に電話番号用
//*********************************************
function checkSuujiBar(in_element,length){
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  
  aStr=in_element.value;
  error = false;
  if (aStr.length > 0) {
    //ハイフンが2連続であったらエラーにする
    if(aStr.indexOf("--") >= 0) {
      error = true;
    }
    //ピリオドであったらエラーにする
    if(aStr.indexOf(".") >= 0) {
      error = true;
    }
    
    //最初か最後がハイフンだったらエラーとする
    if(aStr.indexOf("-") == 0 || aStr.lastIndexOf("-") == aStr.length-1) {
      error = true;
    }
    
    //ハイフン削除
    aStr = aStr.replace(new RegExp("-","gm"),"");
    
    //数値チェック
    //+は数値チェックが通る範囲で許可する
    if (aStr.length > 0) {
      if(isNaN(aStr)==false) {
      } else {
        error = true;
      }
      //桁数チェック 指定桁数以下はエラーにする
      if (aStr.length < length) {
        error = true;
      }
    }
    
    if(error) {
      setError(in_element,"正しく入力してください");
      return;
    }
  }
  setNonError(in_element);
}

//*********************************************
//メールアドレス形式かどうかチェックします。
//*********************************************
function checkMail(in_element) {
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  
  aStr=in_element.value;
  ml = /.+@.+\..+/; // チェック方式
  
  if(aStr.length > 0) {
    if(!aStr.match(ml) || !checkMailString(aStr) ) {
      setError(in_element,"メールアドレスを正しく入力してください");
      return;
    }
  }
  setNonError(in_element);
}

//*********************************************
//URL形式かどうかチェックします。
//*********************************************
function checkUrl(in_element) {
  $("#button").attr("disabled","disabled");
  //半角に変換
  zentohan(in_element);
  
  aStr=in_element.value;
  
  if(aStr.length > 0) {
    //if(!aStr.match(ml) || !checkMailString(aStr) ) {
    //  setError(in_element,"URLを正しく入力してください");
    //  return;
    //}
  }
  setNonError(in_element);

}

//*********************************************
//フォーカスを強制します
//*********************************************
function forceFocus(in_element) {
  if(isIE) {
    in_element.focus();
    in_element.select();
  } else {
    TimeID=setTimeout("setFocus('" + in_element.id + "')",50);
  }
}

//*********************************************
//フォーカスをセットします
//*********************************************
function setFocus(id) {
  clearTimeout(TimeID);
  var in_element = document.getElementById(id);
  in_element.focus();
  in_element.select();
}

//*********************************************
//エラーをセットします
//*********************************************
function setError(in_element,text) {
  //エラー表示オブジェクト
  errObj = "#error_" + in_element.id;

  $(errObj).text(text);
  $(errObj).css("display","block");
  errFlg[errObj] = true;
  checkHasError();
  //forceFocus(in_element);
}

//*********************************************
//非エラーにします
//*********************************************
function setNonError(in_element) {
  //エラー表示オブジェクト
  errObj = "#error_" + in_element.id;

  $(errObj).text("");
  $(errObj).css("display","none");
  errFlg[errObj] = false;
  checkHasError();
}

//*********************************************
//エラーがあるかどうかチェックして、ボタンの有効・無効を制御します
//*********************************************
function checkHasError() {
  for(key in errFlg) {
    if(errFlg[key]) {
      $("#button").attr("disabled","disabled");
      return;
    }
  }
  $("#button").attr("disabled","");
}


