var action = "";


//Netscape4.xでは下記が必要です。//
//if(KL_NS4){
//    document.captureEvents(Event.KEYPRESS);
//}

//ハンドラ関数の登録。Netscape6+,Mozillaではdocument.addEventListener使用。//
//if(KL_NS6){
//    document.addEventListener("keypress", onKeyPress, true);
//}else{
//   document.onkeypress = onKeyPress;
//}


if (document.all) {
	document.onkeypress = onKeyPress;
} else if (document.getElementById) {
	document.addEventListener("keypress", onKeyPress, true);
}



function changeCursor()
{
	document.body.style.cursor = "hand";
}
	
function clearCursor()
{
	document.body.style.cursor = "";
}

 function funcSubmit(dis_action) 
{
	if (dis_action == null) {
		return;
	}
	
  	form = document.forms[0];
  	form.action.value = dis_action;
  	form.submit();
}

  
  
  //入力チェック用オブジェクト
  function Validator() {
  
  	  this.str = "";
  	  this.error = false;
  	  
  	  this.append = function(message) {
  	  		this.str += "※" + message + "\n";
  	  		this.error = true;
  	  }
  	  
  	  
  	  this.appendText = function(message) {
  	  		this.str += message + "\n";
  	  } 
  	  
  	  this.alert = function() {
  	  	alert(this.str);
  	  }
  	  
  	  
  	  this.confirm = function() {
  	   	return confirm(this.str);
  	  }
  	  
  	  //nullもしくは空白文字の場合、
  	  //エラーメッセージにアペンドします。
  	  this.checkEmpty = function(str, targetName) {
		 if (str == null || str.length == 0) {
	  			this.append(targetName + "が入力されていません。");
	  	 }  	  
	  }
	  
	  //全角カタカナ以外の文字が含まれる場合、
	  //エラーメッセージにアペンドします。
	  this.checkKana = function(str, targetName) {
  		var chars = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポパピプペポャュョァィゥェォッー　";
  		for (var i = 0; i < str.length; i++) {
  			c = str.charAt(i);
			if (chars.indexOf(c) == -1) {
				this.append(targetName + "には全角カナ以外は入力できません。");
				return;
			} 
  		}	  
	  }

	  //半角英字以外の文字が含まれる場合、
	  //エラーメッセージにアペンドします。
	  this.checkAlphabet = function(str, targetName) {
  		var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  		for (var i = 0; i < str.length; i++) {
  			c = str.charAt(i);
			if (chars.indexOf(c) == -1) {
				this.append(targetName + "には英字以外は入力できません。");
				return;
			} 
  		}	  
	  }

	  //数字以外の文字が含まれる場合、
	  //エラーメッセージにアペンドします。
	  this.checkNumber = function(str, targetName) {
  		if (!this.isNumber(str)) {
			this.append(targetName + "には数字以外は入力できません。");
			return;
		} 
	  }
	  
	  //
	  this.isNumber = function(str, targetName) {
  		var chars = "0123456789-";
  		for (var i = 0; i < str.length; i++) {
  			c = str.charAt(i);
			if (chars.indexOf(c) == -1) {				
				return false;
			} 
  		}
  		return true;
	  }
	  
	  
	  //半角文字以外が含まれる場合


	  //エラーメッセージにアペンドします。	  
	  this.checkHankaku = function(str, targetName) {
  		var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-!#$%&'()=~|\\\"`[{}@:;+*_/?><,.";
  		for (var i = 0; i < str.length; i++) {
  			c = str.charAt(i);
			if (chars.indexOf(c) == -1) {
				this.append(targetName + "には半角文字以外は入力できません。");
				return;
			} 
  		}
	  }
	  
	  //指定した名前のcheckboxグループに複数チェックが入っていない場合、
	  //エラーメッセージにアペンドします。
	  this.validateMultiCheck = function(checkboxName, targetName) {
  		var obj = document.getElementsByName(checkboxName);
  		var ct = 0;	
  		for (var i = 0; i < obj.length; i++) {
  			if (obj[i].checked && ++ct > 1)  {
  				return;
  			}
  		}
  		this.append(targetName + "が複数選択されていません。");
	  }
	  
	  
	  //指定した名前のcheckboxグループにチェックが複数入っているかもしくは１個も入っていない場合


	  //エラーメッセージにアペンドします。
	  this.validateSingleCheck = function(checkboxName, targetName) {
  		var obj = document.getElementsByName(checkboxName);
  		var ct = 0;	
  		for (var i = 0; i < obj.length; i++) {
  			if (obj[i].checked && ++ct > 1)  {
  				this.append(targetName + "が複数選択されています。");
  				return;
  			}
  		}
  		
  		if (ct == 0) {
  			this.append(targetName + "が選択されていません。");
  		}	  
	  }
	  
	  //指定した名前のcheckboxグループにチェックが１つも入っていない場合、
	  //エラーメッセージにアペンドします。
	  this.validateNoCheck = function(checkboxName, targetName) {
  		var obj = document.getElementsByName(checkboxName);
		
  		var isChecked = false;	
  		for (var i = 0; i < obj.length; i++) {
  			if (obj[i].checked)  {
  				isChecked = true;
  				return;
  			}
  		}
  			  		
  		if (!isChecked) {
  			this.append(targetName + "が選択されていません。");
  		}
  	 } 
  	 
  	 this.validateDateFormat = function(value, input_name, delim) {
  	 	var message = input_name + "の入力値はYYYY/MM/DDの形式で入力してください。";
  	 	var incorrect_message = input_name + "の入力値は存在しない日付です。";
  	 	if (value.length != 10) {
  	 		this.append(message);
  	 		return;
  	 	}
  	 	
  	 	var tokens = value.split(delim);
  	 	if (tokens.length != 3 || tokens[0].length != 4 || tokens[1].length != 2 || tokens[2].length != 2) {
  	 		this.append(message);
  	 		return;
  	 	}
  	 	
  	 	if (!this.isNumber(tokens[0]) ||  !this.isNumber(tokens[1]) || !this.isNumber(tokens[2])) {
  	 		this.append(message);
  	 		return;
  	 	}  	 	
  	 	
  	    var in_Year = parseInt(tokens[0], 10);
  	    var in_Month = parseInt(tokens[1], 10) - 1;
  	    var in_Day = parseInt(tokens[2], 10);

	    // 月,日の妥当性チェック 
	    if(in_Month >= 0 && in_Month <= 11 && in_Day >= 1 && in_Day <= 32){ 
	        var vDt = new Date(in_Year, in_Month, in_Day); 
	        if (isNaN(vDt)) { 
	            this.append(incorrect_message);
	            return;
	        } else if(vDt.getFullYear() == in_Year && vDt.getMonth() == in_Month && vDt.getDate() == in_Day){ 
	            return; 
	        } else { 
	            this.append(incorrect_message);
	            return;
	        } 
	    } else { 
	         this.append(incorrect_message);
	         return;
	    } 
  	 	
  	 }
  	 

  	 
  	 
  	 this.validateDateFromTo = function(input_from, input_to, delim) {
  	 	var message = "FromにはToより前の日付を入力してください。"
  	 	
  	 	var tokens_from = input_from.split(delim);
  	 	var tokens_to = input_to.split(delim);
  	 	
  	 	var str_from_year = tokens_from[0];
  	 	var str_from_month = tokens_from[1];
  	 	var str_from_day = tokens_from[2];
  	 	var str_to_year = tokens_to[0];
  	 	var str_to_month = tokens_to[1];
  	 	var str_to_day = tokens_to[2];
  	 	
  	 	var from_year = parseInt(str_from_year, 10);
  	 	var from_month = parseInt(str_from_month, 10);
  	 	var from_day = parseInt(str_from_day, 10);
  	 	var to_year = parseInt(str_to_year, 10);
  	 	var to_month = parseInt(str_to_month, 10);
  	 	var to_day = parseInt(str_to_day, 10);
  	 	
  	 	// Fromの年がToの年よりも大きい場合


  	 	if (from_year > to_year) {
  	 		this.append(message);
  	 		return false;
  	 	}
  	 	// From Toの年が同じで、Fromの月がToの月よりも大きい場合


  	 	if (from_year == to_year && from_month > to_month) {
  	 		this.append(message);
  	 		return false;
  	 	}
  	 	
  	 	// From Toの年と月が同じで、Fromの日がToの日よりも大きい場合


   	 	if (from_year == to_year && from_month == to_month && from_day > to_day) {
   	 		this.append(message);
   	 		return false;
   	 	} 	 	
  	 }
  	 
  	 //@が先頭及び最後の場合


	  //エラーメッセージにアペンドします。	  
	  this.checkEmail = function(str, targetName) {
	  	var chars = "@";
	  	var index = str.indexOf(chars);
	  		  	
	  	//@で始まっている場合

	  	if (index <= 0) {
	  			this.append(targetName + "が記号で始まっています。");
				return;
	  	}
	  	
		//@で終了している場合

		if (index >= str.length - 1) {
				this.append(targetName + "が記号で終了しています。");
				return;
			}
		}
	  	
	  	//@が重複している場合

	  	this.checkMark = function(str, targetName) {
	  		var j = 0;
	  	
	  		for ( var i = 0 ; i < str.length ; i++) {
	  			if ( str.charAt(i) == "@" ) {
	  				j++ ;
	  			}
	  			if ( j == 2) {
	  				this.append(targetName + "に@が複数含まれます。");
	  				return;		
	  				}
	  			}
	  		}
  		} 
  
  
  
    
  //Enterキーが押された際に実行されます。
  function onKeyPress() {
  	if (action == null || action == "") {
  		return;
  	}
  
  	if (window.event.keyCode == 13) {
  		funcSubmit(action);
  	}
  }
  
  
  
  
  
  
  
  
  
  
  
