// タイマー用変数
var hour = 0;
var minute = 0;
var second = 0;
var the_timeout;

// タイマー
function doTimer(){
  document.getElementById("timer").value = addzero(hour) + ":" + addzero(minute) + ":" + addzero(second);
  if(second != 59){   
    second += 1;
  } else {   
    second = 0;
    if(minute != 59){   
      minute += 1;
    } else {   
      minute = 0;
      hour += 1;
    }
  }   
  the_timeout = setTimeout("doTimer();", 1000);
}

// 2桁時間表示
function addzero(val){
  var str = "";
  if (val < 10)
  {
    str = "0"
  }

  return  str + val
}

// 一時停止
function waittime(){   
  clearTimeout(the_timeout);
  document.getElementById("continue").style.visibility = 'visible';
  changevisible('hidden');
}

// 再開
function starttime(){   
  the_timeout = setTimeout("doTimer();",1000);
  document.getElementById("continue").style.visibility = 'hidden';
  changevisible('visible');
}

// 画面表示チェンジ
function changevisible(vis){

  // ボタン
  document.getElementById("pause").style.visibility = vis;
  document.getElementById("commit").style.visibility = vis;
  document.getElementById("restart").style.visibility = vis;
  document.getElementById("newsdk").style.visibility = vis;
  // 数独欄
  for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        document.getElementById("sdk" + i + j).style.visibility = vis;
      } else if (document.getElementById("lab" + i + j))
      {
        document.getElementById("lab" + i + j).style.visibility = vis;
      }
    }
  }

}

// 右マウス無効化
function click(){
window.event.returnValue=false;return false;
}

document.oncontextmenu=function(e){return false;};

// リスタートボタンを押した。
function clearall(){

  if (checkallnull())
  {
    // タイマー初期化
    hour = 0;
    minute = 0;
    second = 0;
    //document.getElementById("continue").style.disabled = false;
    //document.getElementById("pause").style.disabled = false;
    return;
  }
  var cfm=window.confirm("ご入力したデータをクリアします。よろしいですか？");
  if (cfm)
  {
    for (var i = 1;i < 10;i++)
    {
      for (var j = 1;j < 10;j++ )
      {
        if (document.getElementById("sdk" + i + j))
        {
          document.getElementById("sdk" + i + j).value = "";
          document.getElementById("sdk" + i + j).style.background = "#FFFFFF";
          document.getElementById("td" + i + j).style.background = "#FFFFFF";
        }
      }
    }

    // タイマー初期化
    hour = 0;
    minute = 0;
    second = 0;
    //document.getElementById("pause").disabled = false;
  }
}

// 初期化処理
function init(){
  document.getElementById("continue").style.visibility = 'hidden';
  if (navigator.userAgent.indexOf("Firefox")>0){ 
    document.getElementById("timer").size = "6"; 
  }
  var timer = document.getElementById("timer").value;
  var arr = timer.split(":");
  hour = parseInt(arr[0], 10);
  minute = parseInt(arr[1], 10);
  second = parseInt(arr[2], 10);
  doTimer();
}

// 数字チェック処理
function checknum()
{
 
 ret = true;

 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val != "" && val.match(/[^1-9]+/))
        {
          document.getElementById("sdk" + i + j).style.background = "#FF0000";
          document.getElementById("td" + i + j).style.background = "#FF0000";
          ret = false;
        }
      }
    }
  }

  return ret;
}

// 入力項目がないこと(TRUEを返す)をチェックする
function checkallnull(){

 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val != "")
        {
          return false;
        }
      }
    }
  }

  return true;
}

// 未入力チェック処理
function checknull(){

 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val == "")
        {
          return false;
        }
      }
    }
  }

  return true;
}

// 完了チェック処理
function checkOK(){

  ret = checknull();

  if (!ret)
  {
    alert("未入力の項目があります。ご確認ください。");
    return ret;
  }

  //数字入力チェック
  ret = checknum();

  if (!ret)
  {
    alert("数字（1-9）以外の文字が入力されています。\n赤いセルをご確認ください。");
    return ret;
  }

  //重複チェック
  ret = checkdup()

  if (!ret)
  {
    alert("重複の入力があります。\n赤いセルをご確認ください。");
  } else {
    clearTimeout(the_timeout);
    readonlyall();
    doComplete();
  }

}

// 画面表示チェンジ
function readonlyall(){

  // ボタン
  document.getElementById("pause").style.visibility = "hidden";
  if (document.getElementById("savesdk"))
  {
    document.getElementById("savesdk").style.visibility = "hidden";
  }
  document.getElementById("restart").style.visibility = "hidden";
  // 数独欄
  for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        document.getElementById("sdk" + i + j).readOnly = true;
      }
    }
  }

}

// 途中チェック処理
function checksdk(){

  //数字入力チェック
  ret = checknum();

  if (!ret)
  {
    alert("数字（1-9）以外の文字が入力されています。\n赤いセルをご確認ください。");
    return ret;
  }

  //重複チェック
  ret = checkdup()

  if (!ret)
  {
    alert("重複の入力があります。\n赤いセルをご確認ください。");
  } else {
    alert("今のところ問題がありません。");
  }

  return ret;
}

// 重複チェック
function checkdup(){
 
 ret = true;
 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (!checkcell(i, j))
      {
        ret = false
        document.getElementById("sdk" + i + j).style.background = "#FF0000";
        document.getElementById("td" + i + j).style.background = "#FF0000";
      } else if (document.getElementById("sdk" + i + j))
      {
        document.getElementById("sdk" + i + j).style.background = "#FFFFFF";
        document.getElementById("td" + i + j).style.background = "#FFFFFF";
      }
    }
  }

  return ret;
}

// 単独のセルをチェックする
function checkcell(i, j){
  if (document.getElementById("sdk" + i + j)){
    var cell = document.getElementById("sdk" + i + j).value;
    if (cell == "")
    {
     return true;
    }

   // 行チェック
    for (var x = 1;x < 10;x++)
    {
      var val = "";
      if (x == j)
      {
        continue;
      }
      if (document.getElementById("sdk" + i + x))
      {
        val = document.getElementById("sdk" + i + x).value;
      } else if (document.getElementById("lab" + i + x))
      {
        val = document.getElementById("lab" + i + x).value;
      }

      if (val == cell)
      {
        return false;
      }
    }

    // 列チェック
    for (var x = 1;x < 10;x++)
    {

      if (x == i)
      {
        continue;
      }
      var val = "";
      if (document.getElementById("sdk" + x + j))
      {
        val = document.getElementById("sdk" + x + j).value;
      } else if (document.getElementById("lab" + x + j))
      {
        val = document.getElementById("lab" + x + j).value;
      }

      if (val == cell)
      {
        return false;
      }
    }

    // 四角チェック
    
    // 開始点を算出する
    m = (parseInt((i - 1)/3))*3 + 1;
    n = (parseInt((j - 1)/3))*3 + 1;

    for (var x = m;x < m + 3;x++)
    {
      for (var y = n;y < n + 3;y++)
      {

        if (x == i && y == j)
        {
          continue;
        }
        var val = "";
        if (document.getElementById("sdk" + x + y))
        {
          val = document.getElementById("sdk" + x + y).value;
        } else if (document.getElementById("lab" + x + y))
        {
          val = document.getElementById("lab" + x + y).value;
        }

        if (val == cell)
        {
          return false;
        }
      }
    }
  }

  return true;
}

// 入力値変化するとき、色を戻す(廃棄)
/*
function recolor(name)
{
  id = "td" + name.substring(3);
  document.getElementById(id).style.background = "#FFFFFF";
  document.getElementById(name).style.background = "#FFFFFF";
}
*/

function onlyNum(e){
  var keynum;
  if(window.event) // IE
  {
    keynum = e.keyCode;
  }else if(e.which) // Netscape/Firefox/Opera
  {
    keynum = e.which;
  }
  if ((keynum >=49 && keynum<=57))
  {
   return true;
  }
  return false;
}

function direcmove(e, n){
  var keynum;
  if(window.event) // IE
  {
    keynum = e.keyCode;
  }else if(e.which) // Netscape/Firefox/Opera
  {
    keynum = e.which;
  }
  var i = parseInt(n.substring(3,4));
  var j = parseInt(n.substring(4,5));
  var x = i;
  var y = j;
  if (keynum >=49 && keynum<=57 && document.getElementById("sdk" + x + y).value != "")
  {
    document.getElementById("sdk" + x + y).value = keynum -48;
  }
  switch(keynum){
    case 8://BackSpace 
    case 46://Delete
      document.getElementById("sdk" + x + y).value = "";
      break;
    case 37://
      while (y > 0)
      {
        y--;
        if (document.getElementById("sdk" + x + y))
        {
          break;
        }
      }
      if (y == 0)
      {
        y = j;
      }
     document.getElementById("sdk" + x + y).focus(); 
     //document.getElementById("sdk" + x + y).select(); 
     break;
    case 38:
      while (x > 0)
      {
        x--;
        if (document.getElementById("sdk" + x + y))
        {
          break;
        }
      }
      if (x == 0)
      {
        x = i; 
      }
     document.getElementById("sdk" + x + y).focus(); 
     //document.getElementById("sdk" + x + y).select(); 
     break;
    case 13://Enter
    case 39:
      while (y < 10)
      {
        y++;
        if (document.getElementById("sdk" + x + y))
        {
          break;
        }
      }
      if (y == 10)
      {
        y = j;
      }
     document.getElementById("sdk" + x + y).focus(); 
     //document.getElementById("sdk" + x + y).select(); 
     break;
    case 40:
      while (x < 10)
      {
        x++;
        if (document.getElementById("sdk" + x + y))
        {
          break;
        }
      }
      if (x == 10)
      {
        x = i;
      }
     document.getElementById("sdk" + x + y).focus(); 
     //document.getElementById("sdk" + x + y).select(); 
     break;
    default:
     break;
    }
}

/************************************↓数独解答用↓*****************************************/
function clear6(){

  if (checkallnull())
  {
    return;
  }
  var cfm=window.confirm("ご入力したデータをクリアします。よろしいですか？");
  if (cfm)
  {
    for (var i = 1;i < 10;i++)
    {
      for (var j = 1;j < 10;j++ )
      {
        if (document.getElementById("sdk" + i + j))
        {
          document.getElementById("sdk" + i + j).value = "";
          document.getElementById("sdk" + i + j).style.background = "#FFFFFF";
          document.getElementById("td" + i + j).style.background = "#FFFFFF";
          document.getElementById("sdk" + i + j).readOnly = false;
        }
      }
    }
    document.getElementById("solve").style.visibility = 'visible';
    document.getElementById("msg6").value = "数独問題をご入力ください。";
  }
}

function checkdupagua(){
 ret = true;
 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j) && document.getElementById("sdk" + i + j).value == "")
      {
        document.getElementById("sdk" + i + j).style.background = "#FFFFFF";
        document.getElementById("td" + i + j).style.background = "#FFFFFF";
      } else if (!checkcell(i, j))
      {
        ret = false
        document.getElementById("sdk" + i + j).style.background = "#FF0000";
        document.getElementById("td" + i + j).style.background = "#FF0000";
      } else if (document.getElementById("sdk" + i + j).value != "")
      {
        document.getElementById("sdk" + i + j).style.background = "#99FFFF";
        document.getElementById("td" + i + j).style.background = "#99FFFF";
      }
    }
  }

  return ret;
}

function checkdupnocolor(){
 ret = true;
 for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
    if (!checkcell(i, j))
      {
        ret = false
      }
    }
  }
  return ret;
}

function getsdknum(){
  num = 0;
  for (var i = 1;i < 10;i++)
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val != "")
        {
          num++;
        }
      }
    }
  }

  return num;
}
/************************************↑数独解答用↑*****************************************/
function getAnswer()
{
  var str ="";
  for (var i = 1;i < 10;i++ )
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        str += document.getElementById("sdk" + i + j).value;
      } else if (document.getElementById("lab" + i + j))
      {
        str += document.getElementById("lab" + i + j).value;
      }
    }
  }
  return str;
}


function getSavQues()
{
  var str ="";
  for (var i = 1;i < 10;i++ )
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        if (document.getElementById("sdk" + i + j).value == "")
        {
          str += "-";
        }else{
          str += document.getElementById("sdk" + i + j).value;
        }
      } else {
        str += "0";
      }
    }
  }
  return str;
}

function getQuestion()
{
  var str ="";
  for (var i = 1;i < 10;i++ )
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val == "")
        {
          str +="0";
        } else {
          str +=val;
        }
      } 
    }
  }
  return str;
}


function setAnswer(str)
{
  for (var i = 1;i < 10;i++ )
  {
    for (var j = 1;j < 10;j++ )
    {
      if (document.getElementById("sdk" + i + j))
      {
        val = document.getElementById("sdk" + i + j).value;
        if (val == "")
        {
          document.getElementById("sdk" + i + j).value = str.substring((i-1)*9 + j-1, (i-1)*9 + j);
        }
        document.getElementById("sdk" + i + j).readOnly = true;
      } 
    }
  }
}

/***************************ユーザー系********************************/
function checkusrnm(usrnm){

  if (usrnm == "")
  {
    alert("ユーザー名を入力してください。");
    return false;
  }

  if (usrnm.trim() != usrnm)
  {
    alert("ユーザー名の前後スペース入力しないでください。");
    return false;
  }

  if (!isHalfCharacter(usrnm))
  {
    alert("ユーザー名は英数字を入力してください。");
    return false;
  }

  if (usrnm.length < 3 || usrnm.length > 20)
  {
    alert("ユーザー名は 3 字以上 20 字以下ににしてください。");
    return false;
  }
  return true;
}

function checkpwd(pwd){
  return checkpwd2(pwd, "パスワード");
}

function checkpwd2(pwd, text){

  if (pwd == "")
  {
    alert(text + "を入力してください。");
    return false;
  }

  if (pwd.length < 3 || pwd.length > 30)
  {
    alert(text +"は 3 字以上 20 字以下にしてください。");
    return false;
  }
  return true;
}

function checkmail(mail){

  if (mail == "")
  {
    alert("メールアドレスを入力してください。");
    return false;
  }

  if(! /^[_\.\d\w\-]+@([\d\w][\d\w\-]+\.)+[\w]{2,3}$/.test(mail)) 
  { 
    alert("メールアドレスをチェックしてください。"); 
    return false; 
  }
  return true;

}

function chg_user_birth_m(idx, bd){
  var day = 0;
  if (idx == "1" || idx == "3" || idx == "5" || idx == "7" || idx == "8" || idx == "10" || idx == "12")
  {
    day = 31;
  } else if (idx == "4" || idx == "6" || idx == "9" || idx == "11")
  {
    day = 30;
  } else if (idx == "2")
  {
    day = 29;
  }
  var obj  = document.all["user_birth_d"]; 
  obj.length = day + 1;
  obj.options[0] = new Option("日を選択", "");

  for(var i=1; i<= day; i++) {
    obj.options[i] = new Option("" +i+ "日", "" + i);
    if (bd != "" && bd == i)
    {
      obj.options[i].selected = true;
    }
  }
}

function checkurg(){
  //ユーザー名
  usrname = document.getElementById("user_name").value;
  usrnamemsg = document.getElementById("user_name_msg").value;

  if (usrnamemsg != "")
  {
    alert("ユーザー名は既に登録されております。");
    document.getElementById("user_name").style.background = "#ff0000";
    document.getElementById("user_name").focus();
    document.getElementById("user_name").value = document.getElementById("user_name").value;
    return false;
  }
  if (!checkusrnm(usrname))
  {
    document.getElementById("user_name").style.background = "#ff0000";
    document.getElementById("user_name").focus();
    document.getElementById("user_name").value = document.getElementById("user_name").value;
    return false;
  }

  usrnickname = document.getElementById("user_nick_name").value;
  if (usrnickname.Blength() > 20)
  {
    alert("ニックネームは1小文字から10全角文字以内入力してください。");
    document.getElementById("user_nick_name").style.background = "#ff0000";
    document.getElementById("user_nick_name").focus();
    document.getElementById("user_nick_name").value = document.getElementById("user_nick_name").value;

    return false;
  }
  pwd = document.getElementById("user_password").value;
  pwd2 = document.getElementById("user_password2").value;

  if (!checkpwd(pwd))
  {
    document.getElementById("user_password").style.background = "#ff0000";
    document.getElementById("user_password").focus();
    document.getElementById("user_password").value = document.getElementById("user_password").value;
    return false;
  }

  if (pwd != pwd2)
  {
    alert("パスワードは不一致でした。");
    document.getElementById("user_password2").style.background = "#ff0000";
    document.getElementById("user_password2").focus();
    document.getElementById("user_password2").value = document.getElementById("user_password2").value;
    return false;
  }

  gdobj = document.all.user_gender;
  usrgender = "";
  for(var i=0;i<gdobj.length;i++){
    if(gdobj[i].checked){
     usrgender = gdobj[i].value;
     break;
    }
  }
  if (usrgender != "f" && usrgender != "m")
  {
    alert("性別を選択してください。");
    document.getElementById("user_gender").focus();
    return false;
  }

  usrmail = document.getElementById("user_email").value;
  usrmailmsg = document.getElementById("user_email_msg").value;
  usrmail2 = document.getElementById("user_email2").value;

  if (usrmailmsg != "")
  {
    alert("メールアドレスは既に登録されております。");
    document.getElementById("user_email").style.background = "#ff0000";
    document.getElementById("user_email").focus();
    document.getElementById("user_email").value = document.getElementById("user_email").value;
    return false;
  }
  if (!checkmail(usrmail))
  {
    document.getElementById("user_email").style.background = "#ff0000";
    document.getElementById("user_email").focus();
    document.getElementById("user_email").value = document.getElementById("user_email").value;
    return false;
  }

  if (usrmail != usrmail2)
  {
    alert("メールアドレスは不一致でした。");
    document.getElementById("user_email2").style.background = "#ff0000";
    document.getElementById("user_email2").focus();
    document.getElementById("user_email2").value = document.getElementById("user_email2").value;
    return false;
  }

  usrpref = document.getElementById("user_pref").value;
  usrcity = document.getElementById("user_city").value;

  if (usrpref == "")
  {
    alert("都道府県を選択してください。");
    document.getElementById("user_pref").focus();
    return false;
  }

  if (usrcity == "")
  {
    alert("市町村を選択してください。");
    document.getElementById("user_city").focus();
    return false;
  }

  usrbm = document.getElementById("user_birth_m").value;
  usrbd = document.getElementById("user_birth_d").value;


  if (usrbm == "")
  {
    alert("お誕生日の月を選択してください。");
    document.getElementById("user_birth_m").focus();
    return false;
  }

  if (usrbd == "")
  {
    alert("お誕生日の日を選択してください。");
    document.getElementById("user_birth_d").focus();
    return false;
  }

  return true;
}

function reurgcolor(name){
  document.getElementById(name).style.background = "#FFFFFF";
}

function initurg(urp, uc, ubm, ubd, ug, chkflg){
  setSelVal("user_pref", urp);
  setSelVal("user_birth_m", ubm);
  chg_user_birth_m(ubm, ubd);
  
  if (chkflg == "2" || chkflg == "3")
  {
    document.getElementById("user_email").style.background = "#ff0000";
    document.getElementById("user_email_msg").value = "既に登録されております。";
    document.getElementById("user_email").focus();
    document.getElementById("user_email").value = document.getElementById("user_email").value;
  }

  if (chkflg == "1" || chkflg == "3")
  {
    document.getElementById("user_name").style.background = "#ff0000";
    document.getElementById("user_name_msg").value = "既に登録されております。";
    document.getElementById("user_name").focus();
    document.getElementById("user_name").value = document.getElementById("user_name").value;
  }
  setgender(ug);
  setTimeout(function(){chg_user_pref(urp, uc);}, 100);
}

function setgender(str)   
{   
  var objs=document.getElementsByName("user_gender");
  for(var   i=0;i<objs.length;i++)   
  {   
    if(objs[i].value==str)   
    {   
      objs[i].checked=true   
      break;   
    }   
  }   
}

function setSelVal(name, val){
  var obj  = document.all[name]; 
  var len = obj.length;
  for(i=0; i<len; i++) {
    if (obj.options[i].value == val)
    {
      obj.options[i].selected = true;
      break;
    }
  }
}

function initued(urp, urc, chkflg){
  setSelVal("user_pref", urp);
  setTimeout(function(){chg_user_pref(urp, urc);}, 100);
}

function checkued(){
  usrnickname = document.getElementById("user_nick_name").value;
  if (usrnickname.Blength() > 20)
  {
    alert("ニックネームは1小文字から10全角文字以内入力してください。");
    document.getElementById("user_nick_name").style.background = "#ff0000";
    document.getElementById("user_nick_name").focus();
    document.getElementById("user_nick_name").value = document.getElementById("user_nick_name").value;

    return false;
  }

  usrmail = document.getElementById("user_email").value;
  usrmailmsg = document.getElementById("user_email_msg").value;

  if (usrmailmsg != "")
  {
    alert("メールアドレスは既に登録されております。");
    document.getElementById("user_email").style.background = "#ff0000";
    document.getElementById("user_email").focus();
    document.getElementById("user_email").value = document.getElementById("user_email").value;
    return false;
  }
  if (!checkmail(usrmail))
  {
    document.getElementById("user_email").style.background = "#ff0000";
    document.getElementById("user_email").focus();
    document.getElementById("user_email").value = document.getElementById("user_email").value;
    return false;
  }

  usrpref = document.getElementById("user_pref").value;
  usrcity = document.getElementById("user_city").value;

  if (usrpref == "")
  {
    alert("都道府県を選択してください。");
    document.getElementById("user_pref").focus();
    return false;
  }

  if (usrcity == "")
  {
    alert("市町村を選択してください。");
    document.getElementById("user_city").focus();
    return false;
  }

  pwd = document.getElementById("user_password").value;

  if (!checkpwd(pwd))
  {
    document.getElementById("user_password").style.background = "#ff0000";
    document.getElementById("user_password").focus();
    document.getElementById("user_password").value = document.getElementById("user_password").value;
    return false;
  }

  return true;
}

function checkchgpwd(){

  if (document.getElementById("user_password")){
    pwd = document.getElementById("user_password").value;

    if (!checkpwd2(pwd, "現在のパスワード"))
    {
      document.getElementById("user_password").style.background = "#ff0000";
      document.getElementById("user_password").focus();
      document.getElementById("user_password").value = document.getElementById("user_password").value;
      return false;
    }
  }

  pwdn = document.getElementById("user_new_password").value;
  pwdn2 = document.getElementById("user_new_password2").value;

  if (!checkpwd2(pwdn, "新しいパスワード"))
  {
    document.getElementById("user_new_password").style.background = "#ff0000";
    document.getElementById("user_new_password").focus();
    document.getElementById("user_new_password").value = document.getElementById("user_new_password").value;
    return false;
  }

  if (pwdn != pwdn2)
  {
    alert("新しいパスワードは不一致でした。");
    document.getElementById("user_new_password2").style.background = "#ff0000";
    document.getElementById("user_new_password2").focus();
    document.getElementById("user_new_password2").value = document.getElementById("user_new_password2").value;
    return false;
  }

  return true;
}

function checkcont(){

  usrmail = document.getElementById("email").value;
  if (!checkmail(usrmail))
  {
    document.getElementById("email").focus();
    document.getElementById("email").value = document.getElementById("email").value;
    return false;
  }

  kind = document.getElementById("kind").value;

  if (kind == "")
  {
    alert("種類を選択してください。");
    document.getElementById("kind").focus();
    return false;
  }

  contact_body = document.getElementById("contact_body").value;
  if (contact_body == "")
  {
    alert("お問い合わせ内容を入力してください。");
    document.getElementById("contact_body").focus();
    return false;
  }

  if (contact_body.Blength() > 2000)
  {
    alert("お問い合わせ内容は1000文字以内でください。\n1000文字超える場合、直接メールで送信してください。");
    document.getElementById("contact_body").focus();
    return false;
  }
  return true;
}

function bookmark()
{
  title = "楽しい数独";
  url = "http://www.happysudoku.com";
  if (window.sidebar) { 
    window.sidebar.addPanel(title, url,""); 
  } else if( document.all) {
    window.external.AddFavorite(url, title);
  } else if(window.opera && window.print) {
    return true;
  }
}

function setHomepage()
{
    if (document.all)
    {
        document.body.style.behavior='url(#default#homepage)';
        document.body.setHomePage('http://www.happysudoku.com');
    }
    else if (window.sidebar)
    {
        if(window.netscape)
        {
            try
            {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            }
            catch(e)
            {
            }
         }
         var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
         prefs.setCharPref('browser.startup.homepage','http://www.happysudoku.com');
     }
}

function closeme()       
{       
  window.opener=null;       
  window.open('','_self');       
  window.close();       
}   

/*------------------------------------------------------
*関数名：半角チェック
*概要：    すべての文字が半角かのチェック。全角が含まれている場合はエラーとする
*引数：    value        チェックする値
*戻り値：true = チェック成功.    false = チェック失敗
------------------------------------------------------*/
function isHalfCharacter(value){

    for(i=0; i<value.length; i++) {
        if(escape(value.charAt(i)).length>=4)
            return false;
    }
    return true;
}


// 文字列trim操作
String.prototype.trim = function() { 
  return this.replace(/(^\s*)|(\s*$)/g, "");
} 
String.prototype.lTrim = function() {
  return this.replace(/(^\s*)/g, "");
} 
String.prototype.rTrim = function() {
  return this.replace(/(\s*$)/g, "");
} 
String.prototype.Blength = function() {    
    var arr = this.match(/[^\x00-\xff]/ig);    
    return  arr == null ? this.length : this.length + arr.length;    
}
