var isIE = false;
if(navigator.userAgent.indexOf("MSIE")!=-1){
  isIE = true;
}


//**
//全角を半角に変換します
//**
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){
  //半角に変換
  zentohan(in_element);
  
  //値チェック
  aStr=in_element.value;
  if (aStr.length > 0) {
    if(isNaN(aStr)==false) {
      /*alert("数値です");*/
    } else {
      alert("半角数値で入力してください");
      if(isIE) {
        in_element.focus();
        in_element.select();
      } else {
        TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
      }
      return;
    }
  }
}

//**
//数字かどうかチェックします。桁数チェック付き（主に郵便番号用）
//**
function checkSuujiLength(in_element,length){
  //半角に変換
  zentohan(in_element);
  //値チェック
  aStr=in_element.value;
  if (aStr.length > 0) {
    if(checkNumeric(aStr)) {
      /*alert("数字です");*/
      
      if(aStr.length < length) {
        alert(length + "桁の数字で入力してください");
        if(isIE) {
          in_element.focus();
          in_element.select();
        } else {
          TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
        }
        return;
      }
    } else {
      alert("半角数字で入力してください");
      if(isIE) {
        in_element.focus();
        in_element.select();
      } else {
        TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
      }
      return;
    }
  }
}

//**
//指定範囲内の数値かどうかチェックします。
//**
function checkSuutiBetween(in_element,num_min,num_max){
  //半角に変換
  zentohan(in_element);
  
  //値チェック
  aStr=in_element.value;

  if (aStr.length > 0) {
    if(checkNumeric(aStr)) {
      /*alert("数字です");*/
      if(parseInt(aStr) <= num_min) {
        alert(num_min + "より大きい数字を入力してください");
        if(isIE) {
          in_element.focus();
          in_element.select();
        } else {
          TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
        }
        return;
      }
      if(parseInt(aStr) >= num_max) {
        alert(num_max + "より小さい数字を入力してください");
        in_element.focus();
        in_element.select();
        if(isIE) {
          in_element.focus();
          in_element.select();
        } else {
          TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
        }
        return;
      }
    } else {
      alert("半角数字で入力してください");
      in_element.focus();
      in_element.select();
      if(isIE) {
        in_element.focus();
        in_element.select();
      } else {
        TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
      }
      return;
    }
  }
}

//**
//ハイフンを含む数字文字列かどうかチェックします。最低桁数制限付き。主に電話番号用
//**
function checkSuujiBar(in_element,length){
  //半角に変換
  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) {
      alert("正しく入力してください");
      if(isIE) {
        in_element.focus();
        in_element.select();
      } else {
        TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
      }
      return;
    }
  }
}

var TimeID = null;
//**
//メールアドレス形式かどうかチェックします。
//**
function checkMail(in_element) {
  //半角に変換
  zentohan(in_element);
  
  //全角が含まれていたらエラー
  
  aStr=in_element.value;
  
  ml = /.+@.+\..+/; // チェック方式
  
  if(aStr.length > 0) {
    if(!aStr.match(ml) || !checkMailString(aStr) ) {
      alert("メールアドレスを正しく入力してください");
      if(isIE) {
        in_element.focus();
        in_element.select();
      } else {
        TimeID=setTimeout("setFocus('" + in_element.id + "')",100);
      }
      return;
    }
  }
}

function setFocus(id) {
  clearTimeout(TimeID);
  var in_element = document.getElementById(id);
  in_element.focus();
  in_element.select();
}

