/* *************************************************************** */
/*  京口                                                           */
/*  入力のチェック関数                                             */
/*   Last updated: <2006/11/20 21:30:04 +0900>                     */
/*                                                                 */
/*  未入力チェック                                   NullCheck     */
/*  E-Mailチェック                                   EmailCheck    */
/*  PassWordのチェック                               PassCheck     */
/*  桁数のチェック                                   KetaCheck     */
/*  空白文字のみの入力ではないかチェック             SpaceCheck    */
/*  コンボボックスが選択されているか                 SelCheck      */
/*   " , ' が入っているかのチェック                  LimitCheck    */
/*  電話番号･郵便番号チェック                        TelCheck      */
/*  全角のチェック                                   ZenCheck      */
/*  画像ファイルのチェック                           FileNMCheck   */
/*  地方を押された場合                               Check         */
/*  全国を押された場合                               Zenkoku       */
/*  数字のみかのチェック                             NumCheck      */
/*  入力の有無チェック(Msg無)                        NullCheck2    */
/*  コンボボックスが選択されているか(Msg無)          SelCheck2     */
/*  生年月日のチェック                               HapyCheck     */
/*  項目選択されているかチェック                     ChkCheck      */
/*  半角カタカナチェック用                           KanaCheck     */
/*  画像ファイル用チェック                           FileCheck     */
/*  PRポイントの数値取得用                           Combo_Check   */
/*  英数半角のチェック                               HanCheck      */
/*  空白文字のみの入力ではないかチェック(Msg無)      SpaceCheck2   */
/*  半角引用符のチェック                             QuotCheck     */
/*                                                                 */
/* *************************************************************** */

/* 未入力チェック */
function NullCheck(obj, Msg) {
  if (obj.value.length > 0)
    return true ;
  alert(Msg + "を入力してください。") ;
  return false ;
};

/* E-Mailチェック */
function EmailCheck(obj, Msg) {
  var adrs = obj.value ;
  var atmark = false ;
  for (var i = 0; i < adrs.length; i++) {
    var c = adrs.charAt(i) ;
    if (c == " ") {
      alert(Msg + "に空白が含まれています。") ;
      return false ;
    }
    atmark = atmark || (c == "@") ;
  }
  if (!atmark) {
    alert(Msg + "に'@'が含まれていません。") ;
    return false ;
  }
  if (adrs.match(/.*\.co\.jo|.*\.cojp|.*\.nejp|.*\.ne\.jo|.*\.o[cd]n\.jp/i)){
    alert(Msg + "は不正です。");
    return false;
  };
/*  } else {
    if (adrs.match(/.*hotmail\.com|.*geocities\.co\.jp|.*geocities\.com|.*infoseek\.jp|.*mail\.goo\.ne\.jp|.*freemail\.ne\.jp|.*24h\.co\.jp|.*domo39\.com|.*maido3\.net|.*nyanmail\.com|.*jmail\.co\.jp|.*lycos\.jp|.*msn\.com|.*curio-city\.com|.*nikkeimail\.ne\.jp|.*gariya\.net|.*cosmos-21\.com|.*clubaa\.com|.*mb\.dreammail\.ne\.jp|.*kobej\.zzn\.com|.*itpmail\.itp\.ne\.jp|.*tokyo24\.com|.*otegami\.com|.*fubako\.com|.*m\.walkerplus\.com|.*nekonohige\.net|.*goomail\.com|.*pub\.to/i)) {
      alert("フリーのメールアドレスは受け付けておりません。");
      return false;
    };
  };
  */
  return true ;
}

/* ************************************************************************************* */

/* PassWordのチェック */
function PassCheck(frm) {
  var passwd = frm.txtPassword.value ;
  if (passwd.length < 6) {
    alert("パスワードは6文字以上で入力してください。") ;
    return false ;
  }
  for (var i = 0; i < passwd.length; i++) {
    if (passwd.charAt(i) == " ") {
      alert("パスワードに空白が含まれています。") ;
      return false ;
    }
  }
  return true ;
}

/* ************************************************************************************* */

/* 桁数のチェック */
function KetaCheck(value, MAX, Msg) {
  if(value.length <= MAX)
    return true ;
  alert(Msg + "の入力桁数オーバーです！\n" + MAX + "文字以下の文字数でお願いします．") ;
  return false ;
}

/* 桁数のチェック */
function KetaMinCheck(value, MIN, Msg) {
  if(MIN <= value.length)
    return true ;
  alert(Msg) ;
  return false ;
}

/* ************************************************************************************* */

/* 空白文字のみの入力ではないかチェック */
function SpaceCheck(value, Msg) {
  if (value.length == 0)
    return true ;
  for (var i = 0; i < value.length; i++)
    if (value.charAt(i) != " ")
      return true ;
  alert(Msg + "の入力が不正です。") ;
  return false ;
}

/* ************************************************************************************* */

/* コンボボックスが選択されているか */
function SelCheck(obj, Msg) {
  if (obj.selectedIndex > 0)
    return true ;
  alert(Msg + "を選択してください。") ;
  return false ;
}

/* コンボボックスが選択されているか 可変 */
function SelCheckIndex(obj, Msg, i) {
  if (obj.selectedIndex > i)
    return true ;
  alert(Msg + "を選択してください。") ;
  return false ;
}

/* ************************************************************************************* */

/*  " , ' が入っているかのチェック */
function LimitCheck(obj, Msg) {
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    if ((c == ",") || (c == "'") || (c == '"')) {
      alert(Msg + "の入力が不正です。(カンマ/シングルコーテーション/ダブルコーテションが含まれています)") ;
      return false ;
    }
  }
  return true ;
}
/*  " ' が入っているかのチェック */
function QuoteLimitCheck(obj, Msg) {
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    if ((c == "'") || (c == '"')) {
      alert(Msg + "の入力が不正です。(シングルコーテーション/ダブルコーテションが含まれています)") ;
      return false ;
    }
  }
  return true ;
}
/*  " が入っているかのチェック(URL用) */
function DquoteCheck(obj, Msg) {
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    if (c == '"') {
      alert(Msg + "の入力が不正です。(シングルコーテーション/ダブルコーテションが含まれています)") ;
      return false ;
    }
  }
  return true ;
}


/* ************************************************************************************* */

/* 電話番号･郵便番号チェック */
function TelCheck(obj, Msg) {
  //全角数字配列
  var char1 = new Array("１","２","３","４","５","６","７","８","９","０","−","ー","＋");
  //半角数字配列
  var char2 = new Array(1,2,3,4,5,6,7,8,9,0,'-','-','+');  
  var value = obj.value ;
  while(value.match(/[０-９−]/)){     	//入力データに全角数字がある場合
    for(count = 0; count < char1.length; count++){
      //入力データを全角数字から半角数字に置換する
      value = value.replace(char1[count], char2[count]);
    }
  }
  for (var i = 0; i < value.length; i++) {
    if ("0123456789-+".indexOf(value.charAt(i)) < 0) {
      alert(Msg +  "を正しく入力してください。") ;
      return false ;
    }
  }
  return true ;
}

/* ************************************************************************************* */

/* 全角のチェック */
/* 引数	obj		: フォームのオブジェクト */
/* 		Msg		: 項目名 */
/* 復帰値: */
/* 		true	: 半角無(全角のみ) */
/* 		false	: 半角有り */
function ZenCheck(obj, Msg) {
  var hankaku = new Array(
    " ", "!", "\"","#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/",
    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?",
    "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
    "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\","]", "^", "_",
    "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
    "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", " ",
    " ", "｡", "｢", "｣", "､", "･", "ｦ", "ｧ", "ｨ", "ｩ", "ｪ", "ｫ", "ｬ", "ｭ", "ｮ", "ｯ",
    "ｰ", "ｱ", "ｲ", "ｳ", "ｴ", "ｵ", "ｶ", "ｷ", "ｸ", "ｹ", "ｺ", "ｻ", "ｼ", "ｽ", "ｾ", "ｿ",
    "ﾀ", "ﾁ", "ﾂ", "ﾃ", "ﾄ", "ﾅ", "ﾆ", "ﾇ", "ﾈ", "ﾉ", "ﾊ", "ﾋ", "ﾌ", "ﾍ", "ﾎ", "ﾏ",
    "ﾐ", "ﾑ", "ﾒ", "ﾓ", "ﾔ", "ﾕ", "ﾖ", "ﾗ", "ﾘ", "ﾙ", "ﾚ", "ﾛ", "ﾜ", "ﾝ", "\""," "
    ) ;
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    for (var j = 0; j < hankaku.length; j++) {
      if (value.charAt(i) == hankaku[j]) {
        alert(Msg + "は全角文字で入力してください。") ;
        return false ;
      }
    }
  }
  return true ;
}

/* ************************************************************************************* */


/* 画像ファイルのチェック */
function FileNMCheck(obj, Msg) {
  var fileNM = obj.value ;

  /* 空白の場合は処理の終了 */
  if (fileNM.length == 0)
    return true ;

  /* 空白チェック */
  /*
		for (var i = 0; i < fileNM.length; i++) {
			if (fileNM.charAt(i) == ' ') {
				alert("フォルダ/ファイル名に空白は使えません。") ;
				return false ;
			}
		}
   */

  /* ファイルの拡張子 */
  var ext ;
  for (var i = fileNM.length - 1; i > 0; i--) {
    if (fileNM.charAt(i) == '.') {
      ext = fileNM.substr(i, fileNM.length).toLowerCase() ;
      break ;
    }
  }
  if ((ext == ".gif") || (ext == ".jpg")) {
    return true ;
  } else {
    alert(Msg + "はgif/jpgのみです。") ;
    return false ;
  }
}


/* ************************************************************************************* */

/* 地方を押された場合 */
function Check(Flg, Start, Suu) {
  for (var i = Start; i <= Suu; i++)
    window.document.forms['FrmKen'].elements['chkKen'][i].checked = Flg ;
  return ;
}

/* ************************************************************************************* */

/* 全国を押された場合 */
function Zenkoku(Flg) {
  var i ;
  for (i = 0; i <= 46; i++)
    window.document.forms['FrmKen'].elements['chkKen'][i].checked = Flg ;
  for (i = 0; i <= 8; i++)
    window.document.forms['FrmKen'].elements['chkTihou'][i].checked = Flg ;
  return ;
}

/* ************************************************************************************* */

/* 数字のみかのチェック */
function NumCheck(value, Msg){
  if (isNaN(value)) {
    alert(Msg + "は半角数値を入力してください。") ;
    return false ;
  }
  return true ;
}

/* ************************************************************************************* */

/* 入力の有無チェック(メッセージ無) */
function NullCheck2(obj) {
  return (obj.value.length > 0) ;
}

/* ************************************************************************************* */

/* コンボボックスが選択されているか(メッセージ無) */
function SelCheck2(obj) {
  return (obj.selectedIndex > 0) ;
}

/* ************************************************************************************* */

/* 生年月日のチェック */
/* 引数	year	: 年 */
/* 		objMM	: 月(リストメニュー) */
/* 		objDD	: 日(リストメニュー) */
/* 復帰値: */
/* 		true	: 正しい */
/* 		false	: 間違い */
function HapyCheck(year, objMM, objDD) {
  year = Number(year) ;

  if ((year <= 1581) || (year >= 2383)) {
    alert("年を西暦で入力して下さい。") ;
    return false ;
  }

  if (objMM.selectedIndex < 1) {
    alert("月を選択して下さい。") ;
    return false ;
  }
  if (objDD.selectedIndex < 1) {
    alert("日を選択して下さい。") ;
    return false ;
  }

  var mon = Number(objMM[objMM.selectedIndex].text) ;
  var day = Number(objDD[objDD.selectedIndex].text) ;

  var lastDay ;
  switch (mon) {
  case 2 :
    if ((year % 4) == 0) {
      if ((year % 100) == 0) {
        if ((year % 400) == 0) {
          lastDay = 29 ;
        } else {
          lastDay = 28 ;
        }
      } else {
        lastDay = 29 ;
      }
    } else {
      lastDay = 28 ;
    }
    break ;
  case 4 :
  case 6 :
  case 9 :
  case 11 :
    lastDay = 30 ;
    break ;
  default :
    lastDay = 31 ;
    break ;
  }
  if ((day < 1) || (day > lastDay)) {
    alert(mon + "月は" + lastDay + "日までです。") ;
    return false ;
  }

  return true ;
}

/* ************************************************************************************* */

/* 項目にチェックされているかのチェック */
/* 引数	obj		: チェックボックス･オブジェクト */
/* 		str		: for文開始値 */
/* 		end 	: 終了値 */
/* 		msg 	: 項目の名前 */
function ChkCheck(obj, str, end, Msg) {
  for(var i = str; i < end; i++)
    if (obj[i].checked)
      return true ;
  alert(Msg + "を選択してください。") ;
  return false ;
};

/* ************************************************************************************* */

/* 半角カタカナチェック用 */
/* 引数	obj		: フォームのオブジェクト */
/* 		Msg		: 項目名 */
/* 復帰値: */
/* 		true	: 半角無(全角のみ) */
/* 		false	: 半角有り */
function KanaCheck(obj, Msg) {
  if (navigator.appName.charAt(0) == 'M') {
    var kana = new Array(
      "ｦ", "ｧ", "ｨ", "ｩ", "ｪ", "ｫ", "ｬ", "ｭ", "ｮ", "ｯ",
      "ｰ", "ｱ", "ｲ", "ｳ", "ｴ", "ｵ", "ｶ", "ｷ", "ｸ", "ｹ", "ｺ", "ｻ", "ｼ", "ｽ", "ｾ", "ｿ",
      "ﾀ", "ﾁ", "ﾂ", "ﾃ", "ﾄ", "ﾅ", "ﾆ", "ﾇ", "ﾈ", "ﾉ", "ﾊ", "ﾋ", "ﾌ", "ﾍ", "ﾎ", "ﾏ",
      "ﾐ", "ﾑ", "ﾒ", "ﾓ", "ﾔ", "ﾕ", "ﾖ", "ﾗ", "ﾘ", "ﾙ", "ﾚ", "ﾛ", "ﾜ", "ﾝ"
      ) ;
    value = obj.value ;
    for (var i = 0; i < value.length; i++) {
      var c = value.charAt(i) ;
      for (var j = 0; j < kana.length; j++) {
        if (c == kana[j]) {
          alert(Msg + "は全角文字で入力してください。") ;
          return false ;
        }
      }
      if ((c == ",") || (c == "'") || (c == '"')) {
        alert(Msg + "の入力が不正です。(カンマ/シングルコーテーション/ダブルコーテションが含まれています)") ;
        return false ;
      }
    }
  }
  return true ;
}

/* ************************************************************************************* */

/* 画像ファイル用チェック */
/* 引数	obj		: フォームのオブジェクト */
/* 		Msg		: 項目名 */
/* 復帰値: */
/* 		true	: 全角無(半角のみ) */
/* 		false	: 全角有り */
function FileCheck(obj, Msg) {
  var kana = new Array(
    " ", "!", "\"","#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/",
    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?",
    "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
    "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\","]", "^", "_",
    "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
    "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", " ",
    " ", "｡", "｢", "｣", "､", "･", "ｦ", "ｧ", "ｨ", "ｩ", "ｪ", "ｫ", "ｬ", "ｭ", "ｮ", "ｯ",
    "ｰ", "ｱ", "ｲ", "ｳ", "ｴ", "ｵ", "ｶ", "ｷ", "ｸ", "ｹ", "ｺ", "ｻ", "ｼ", "ｽ", "ｾ", "ｿ",
    "ﾀ", "ﾁ", "ﾂ", "ﾃ", "ﾄ", "ﾅ", "ﾆ", "ﾇ", "ﾈ", "ﾉ", "ﾊ", "ﾋ", "ﾌ", "ﾍ", "ﾎ", "ﾏ",
    "ﾐ", "ﾑ", "ﾒ", "ﾓ", "ﾔ", "ﾕ", "ﾖ", "ﾗ", "ﾘ", "ﾙ", "ﾚ", "ﾛ", "ﾜ", "ﾝ", "\""," "
    ) ;
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    var err = true ;
    for (var j = 0 ; j < kana.length; j++) {
      if (c == kana[j]) {
        err = false ;
        break ;
      }
    }
    if (err) {
      alert(Msg + "名は半角文字で入力してください。") ;
      return false ;
    }
  }
  return true ;
}

/* ************************************************************************************* */
/* PRポイントの数値取得用 */
function Combo_Check(obj) {
  for (var i = 0; i < obj.length; i++)
    if (obj.options[i].selected)
      return obj.options[i].text ;
  return 0 ;
}

/* ************************************************************************************* */

/* 英数半角のチェック */
/* 引数	obj		: フォームのオブジェクト */
/* 		Msg		: 目名 */
/* 復帰値: */
/* 		true	: 全角無(半角のみ) */
/* 		false	: 全角有り */
function HanCheck(obj, Msg) {
  var kana = new Array(
    " ", "!", "\"","#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/",
    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?",
    "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
    "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\","]", "^", "_",
    "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
    "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", " ",
    " ", "｡", "｢", "｣", "､", "･", "\""," "
    ) ;
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    var err = true ;
    for (var j = 0 ; j < kana.length; j++) {
      if (c == kana[j]) {
        err = false ;
        break ;
      }
    }
    if (err) {
      alert(Msg + "は英数半角文字で入力してください。") ;
      return false ;
    }
  }
  return true ;
}

/* ************************************************************************************* */

/* 空白文字のみの入力ではないかチェック(Msg無し) */
function SpaceCheck2(value, Msg) {
  if (value.length == 0)
    return true ;
  for (var i = 0; i < value.length; i++)
    if (value.charAt(i) != " ")
      return true ;
  return false ;
}

/* ************************************************************************************* */

/*  半角引用符のチェック */
function QuotCheck(obj, Msg) {
  var value = obj.value ;
  for (var i = 0; i < value.length; i++) {
    var c = value.charAt(i) ;
    if ((c == '"') || (c == "'")) {
      alert(Msg + "の入力が不正です。(半角の引用符が含まれています)") ;
      return false ;
    }
  }
  return true ;
}

/* ************************************************************************************* */


/* Cookieを取得 */
function getCookie(name) {
	var key = name + "=" ;
	var value = "" ;
	var cookies = window.document.cookie.split(";") ;
	for (var i = 0; i < cookies.length; ++i) {
		var pos = cookies[i].indexOf(key) ;
		if (pos >= 0) {
			value = cookies[i].substring(pos + key.length) ;
			if (value) break ;
		}
	}
	return unescape(value) ;
}

/* Cookieを登録 */
function setCookie(name, value, expires, path, domain, secure) {
	window.document.cookie =
		name + "=" + escape(value) +
		(expires ?	("; expires=" + expires.toGMTString()) : "") +
		(path ?		("; path=" + path) : "") +
		(domain ?	("; domain=" + domain) : "") +
		(secure ?	("; secure") : "") ;
	return ;
}

/* デッドロックを防止 */
function checkDeadLock(className, message, second) {
	var name = "CHECK_DEADLOCK_" + className ;
	if (getCookie(name)) {
		if (message) alert(message) ;
		return false ;
	}
	
	second = parseInt(second) ;
	if (isNaN(second)) second = 0 ;
	if (second <= 0) second = 5 ;
	
	var expires = new Date() ;
	expires.setTime(expires.getTime() + 1000 * second) ;
	setCookie(name, expires, expires, "/") ;
	return true ;
}
