/* イメージ切り替え関数 */
function Img_Mouseover(id, img){
	document.getElementById(id).src = img;
}

function Img_Mouseout(id, img){
	document.getElementById(id).src = img;
}

/* 入力チェック関数 */
function fnc_InputCheck(check_value,type,min,max,name){

	/* チェックの種類
	//type・・・
		1:文字列:
		2:PDFファイル名
		3:数値・整数
		4:数値・小数
		5:カナ＋全角スペース＋半角スペース
		6:数字型文字列
		7:HTTP/HTTPS/FTP/メールアドレス
		8:半角英数
		9:日付
		10:カード番号
		11:郵便番号
		12:電話番号
		13:全角・漢字、ひらがな、カタカナ
		14:日付
		15:カード有効期限
		16:特殊文字の制御
	*/
	
	//Nullチェック
	if(check_value =="" && min == 0){
		return false;
	}
	
	switch (type) {
		case 1: // 文字列型(何でもあり)
			if(check_value.length < min){
				alert(name+'は、半角' + min + '〜' + max + '文字、\n全角' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
			if(fnc_GetByte(check_value) > max){
				alert(name+'は、半角' + min + '〜' + max + '文字、\n全角' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
		break;
		case 2: // ファイル型(全角×)
			if(fnc_GetByte(check_value) != check_value.length){
				alert(name+'は、半角' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if(check_value.length < min){
				alert(name+'は、半角' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if(fnc_GetByte(check_value) > max){
				alert(name+'は、半角' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if(check_value.indexOf("/") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("\"") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("\'") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("\\") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf(":") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("*") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("?") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("<") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf(">") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
			if(check_value.indexOf("|") != -1){
				alert('ファイル名に次の文字は使えません。\n / \" \' \\ : * ? < > |');
				return true;
			}
		break;
		case 3: //整数
			// 文字列長長チェック
			if(check_value < min || check_value > max){
				alert(name+'は、半角数字' + min + '〜' + max + 'で入力して下さい。');
				return true;
			}
			// 数値チェック
			if (check_value.match(/[\D]/) != null){
				alert(name+'は整数（半角数字）を入力して下さい。');
				return true;
			}
		break;
		case 4: //小数
			// MIN〜MAXチェック
			if(check_value < min || check_value > max){
				alert(name+'は、半角数字' + min + '〜' + max + 'で入力して下さい。');
				return true;
			}
			// 数値チェック
			if (check_value.match(/[^0-9.]/) != null){
				alert(name+"は小数部2桁の数値を入力して下さい。");
				return true;
			}
			/* 小数点のチェック */
			// 先頭「.」チェック
			if (check_value.charAt(0) == '.'){
				alert(name+'は小数部2桁の数値を入力して下さい。');
				return true;
			}
			// 末尾「.」チェック
			if (check_value.charAt(check_value.length - 1) == '.'){
				alert(name+'は小数部2桁の数値を入力して下さい。');
				return true;
			}
			//「.」個数チェック
			var check_value_sp = check_value.split('.');
			if(check_value_sp.length > 2){
				alert(name+'は小数部2桁の数値を入力して下さい。');
				return true;
			}
			//2桁のチェック
			if(check_value_sp.length ==2 ){
				if(check_value_sp[1].length > 2){
					alert(name+'は小数部2桁の数値を入力して下さい。');
					return true;
				}
			}
		break;
		case 5: // カナ＋全角スペース＋半角スペース
			if(fnc_GetByte(check_value) < min || fnc_GetByte(check_value) > max){
				alert(name+'は、全角カタカナ' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
			if (!check_value.match(/^[\u30A0-\u30FF　\s]*$/)){
				alert(name+'は、全角カタカナ' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
		break;
		case 6: // 半角数字のみ
			// 文字列長長チェック
			if(check_value.length < min || check_value.length > max){
				alert(name+'は、半角数字' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			// 数値チェック
			if (check_value.match(/[\D]/) != null){
				alert(name+'は半角数字(1以上)を入力して下さい。');
				return true;
			}
		break;
		case 7: // E-Mail形式
			// Nullチェック
			if(min == 0 && check_value.length == 0){
				return false;
			}
			// 文字列長長チェック
			if(check_value.length < min || check_value.length > max){
				alert(name+'は、' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			
			if(check_value.indexOf("http://") != 0)
			{
				if(check_value.indexOf("https://") != 0)
				{
					if(check_value.indexOf("ftp://") != 0)
					{
						// E-Mail形式チェック
						if (check_value.match(/^[-\w.]+@[-\w.]+\.[-\w]+$/) == null)
						{
							alert(name+'はURLもしくはメール形式で入力して下さい。');
							return true;
						}
					}
				}
			}

		break;
		case 8: 
			// 半角チェック
			if(fnc_GetByte(check_value) != check_value.length){
				alert(name+'は、半角英数(記号除く)' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if(check_value.length < min){
				alert(name+'は、半角英数(記号除く)' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if(fnc_GetByte(check_value) > max){
				alert(name+'は、半角英数(記号除く)' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
			if (check_value.match(/[\W]/) != null){
				alert(name+'は、半角英数(記号除く)' + min + '〜' + max + '文字で入力して下さい。');
				return true;
			}
		break;
		case 9: //日付型
			var ary_YMD = check_value.split("/");
			if(ary_YMD[0].length != 4 || ary_YMD[1].length != 2 || ary_YMD[2].length !=2){
				alert(name+"は YYYY/MM/DD の形式で日付を入力してください。");
				return true;
			}
			//「年」部分のチェック
			if (isNaN(ary_YMD[0])){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			if (!fnc_Between(ary_YMD[0],1900,2100)){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			//「月」部分のチェック
			if (isNaN(ary_YMD[1])){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			if (!fnc_Between(parseInt(ary_YMD[1],10),1,12)){
				alert(parseInt(ary_YMD[1],10));
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			//日付チェック（閏年対応）
			objDate = new Date(ary_YMD[0],ary_YMD[1] - 1,ary_YMD[2]);
			if ((ary_YMD[1] != objDate.getMonth() + 1)
				|| (ary_YMD[2] != objDate.getDate())){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
		break;
		case 10: //カード番号
			if(check_value.length < min || check_value.length > max){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			var varArry = check_value.split("-");
			if(varArry.length != 4){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			if(varArry[0].length != 4 || varArry[1].length != 4  || varArry[2].length != 4  || varArry[3].length != 4 ){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			if (varArry[0].match(/[\D]/) != null){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			if (varArry[1].match(/[\D]/) != null){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			if (varArry[2].match(/[\D]/) != null){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
			if (varArry[3].match(/[\D]/) != null){
				alert(name+'は適切なカード番号を入力してください。');
				return true;
			}
		break;
		case 11: //郵便番号
			if(check_value.length < min || check_value.length > max){
				alert(name+'は適切な郵便番号を入力してください。');
				return true;
			}
			var varArry = check_value.split("-");
			if(varArry.length != 2){
				alert(name+'は適切な郵便番号を入力してください。');
				return true;
			}
			if(varArry[0].length != 3 || varArry[1].length != 4 ){
				alert(name+'は適切な郵便番号を入力してください。');
				return true;
			}
			if (varArry[0].match(/[\D]/) != null){
				alert(name+'は適切な郵便番号を入力してください。');
				return true;
			}
			if (varArry[1].match(/[\D]/) != null){
				alert(name+'は適切な郵便番号を入力してください。');
				return true;
			}
		break;
		case 12: //電話番号
			if(check_value.length < min || check_value.length > max){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			var varArry = check_value.split("-");
			if(varArry.length != 3){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if(varArry[0].length < 2 || varArry[0].length > 4 ){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if(varArry[1].length < 2 || varArry[1].length > 4 ){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if(varArry[2].length != 4 ){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if (varArry[0].match(/[\D]/) != null){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if (varArry[1].match(/[\D]/) != null){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
			if (varArry[2].match(/[\D]/) != null){
				alert(name+'は適切な電話番号を入力してください。');
				return true;
			}
		break;
		case 13: // 全角・漢字、ひらがな、カタカナ
			if(fnc_GetByte(check_value) < min || fnc_GetByte(check_value) > max){
				alert(name+'は、全角で漢字、ひらがな、カタカナ' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
			if (!check_value.match(/^[\u3040-\u309F\u4E00-\u9FFF\u30A0-\u30FF]*$/)){
				alert(name+'は、全角で漢字、ひらがな、カタカナ' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
		break;
		case 14: // 日付(MM/DD)
			var ary_YMD = check_value.split("/");
			if(ary_YMD.length != 2){
				alert(name+"は MM/DD の形式で日付を入力してください。");
				return true;
			}
			if(ary_YMD[0].length != 2 || ary_YMD[1].length != 2){
				alert(name+"は MM/DD の形式で日付を入力してください。");
				return true;
			}
			//「月」部分のチェック
			if (isNaN(ary_YMD[0])){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			if (!fnc_Between(parseInt(ary_YMD[0],10),1,12)){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}

			//「日」部分のチェック
			if (isNaN(ary_YMD[1])){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
			if (!fnc_Between(parseInt(ary_YMD[1],10),1,31)){
				alert(name+"は適切な日付を入力してください。");
				return true;
			}
		break;
		case 15: // カード有効期限
			aryTemp = check_value.split("/");
			varCheckMonth = String(aryTemp[0]);
			varCheckYear = String(aryTemp[1]);
			
			/* カード有効期限・月チェック */
			if(!(varCheckMonth >= "01" && varCheckMonth <= "12")){
				alert("クレジットカード有効期限(月)の入力が不正です。");
				return true;
			}
			
			/* カード有効期限・年チェック */
			if(varCheckYear.length != 2){
				alert("クレジットカード有効期限(年)の入力が不正です。");
				return true;
			}
			
			/* カード有効期限チェック */
			dateToday = new Date();
			varTempYear = String(dateToday.getYear().toString().substr(2,2));
			varTempMonth = String(dateToday.getMonth() + 1);
			if(varTempYear.length < 2){
				varTempYear = "0" + varTempYear;
			}
			if(varTempMonth.length < 2){
				varTempMonth = "0" + varTempMonth;
			}
			if(varCheckYear < varTempYear){
				alert("クレジットカードの有効期限が切れています。");
				return true;
			}else if(varCheckYear == varTempYear){
				if(varCheckMonth < varTempMonth){
					alert("クレジットカードの有効期限が切れています。");
					return true;
				}
			}
		break;
		case 16: //特殊文字の制御
			if(fnc_GetByte(check_value) < min || fnc_GetByte(check_value) > max){
				alert(name+'は、特殊文字を除く' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
			if (check_value.match(/[<>'"&]+/)){
				alert(name+'は、特殊文字を除く' + Math.ceil(min/2) + '〜' + Math.floor(max/2) + '文字で入力して下さい。');
				return true;
			}
		break;
	default:
	}
	return false;
}

/*
  バイト数取得関数
*/
function fnc_GetByte(text){
  count = 0;
  for (w_cnt=0; w_cnt<text.length; w_cnt++)
  {
    if(text.charAt(w_cnt).match(/[｡-ﾟ]/)) {
      count++;
      continue;
    }
    n = escape(text.charAt(w_cnt));
    if (n.length < 4) count++; else count+=2;
  }
  return count;
}

/*
  SQLの「BETWEEN」のような動作
*/
function fnc_Between(data,from,to){
  //範囲内
  if (from <= data && data <= to){
    return true;
    //範囲外
  }else{
    return false;
  }
}

/*
  全角チェック
*/
function fnc_CheckIsZenkaku(text) {
  for (var i = 0; i < value.length; ++i) {
    var c = value.charCodeAt(i);
    //  半角カタカナは不許可
    if(c < 256 || (c >= 0xff61 && c <= 0xff9f)) {
      return false;
    }
  }
  return true;
}

