/**
 * @version 1.2
 * @author K.Kamitani
 */
// 更新内容 00/06/01 parseInt時のradixの表記を完全にした。
/**
 * カンマ付き数値の入力チェックのときに噛ませて下さい
 * return boolean
 */
function removeCamma(value){
	return value.replace(/[,]/g,"");
}

// 入力値前後のスペースを取り除く
function removeSpace( value ){2005/03/03
	value = value.replace( /^[ 　]+/, "" );
	value = value.replace( /[ 　]+$/, "" );
	return value;
}

//切り捨て関数
// syosu : 残したい少数点位置（少数第3位切り捨て、少数第２位残す場合は「２」を指定
//
function kirisute(syosu){

    omomi = Math.pow(10,syosu);

    val = document.fff.ttt.value;
    ans = parseInt(val * omomi) / omomi;
    document.fff.ttt.value = ans;

}
/**
 * NULLチェック
 * このチェックメソッドのみ引数[mess]に空文字("")を送ると、メッセージが表示されません。
 * 表示させたくないときのみ空文字を引数[mess]に渡して下さい。
 * &lt;select&gt;タグや&lt;input type=&quot;radio&quot;&gt;で必要になると思われます。
 * return boolean
 */
function checkNeed(value,mess){
	var subValue = removeSpace(value);
	if(subValue == ""){
		if(mess != ""){
			alert(mess + "が入力されていません。");
		}
		return false;
	}
	return true;
}

/**
 * スペースの入力が許されていない領域に対してチェックを行なう。
 * return boolean
 */
function checkSpace(value,mess){
	var regExpression = new RegExp("[ 　]","g");
	if(regExpression.exec(value) != null){
		alert(mess + "にスペースが入力されています。");
		return false;
	}
	return true;
}

/**
 * FULL桁入力欄対応
 * return boolean
 */
function checkFullLength(value, maxlen, mess){
	var temp = removeSpace(value);
	if(temp.length == 0){
		return true;
	}else if(temp.length != maxlen){
		alert(mess + "は" + maxlen + "桁で入力して下さい。");
		return false;
	}

	return true;
}

/**
 * 半角、全角込みのバイト数としての桁数チェック
 * return boolean
 */
function checkLen(value, maxlen, mess) {
	var chk_str = value;
	var str_count = 0;
	var i;

	//全角文字の長さを取得
	char_length = ("あ".length);
	if(chk_str.length == 0) {
		value = "";
		return true;
	}

	for(i = 0; i < chk_str.length; i = i + char_length){
		char_target = chk_str.charCodeAt( i );
		if((char_target >= 0x0021 && char_target <= 0x007E) ||
			(char_target >= 0xFF61 && char_target <= 0xFF9F)){
			str_count ++;
		}else{
			str_count += 2;
		}
	}

	if(str_count > maxlen){
        if( mess != "" ){
		    alert(mess + "が入力可能桁数を超えています。\n\n" + mess + "は" + maxlen + "桁まで入力可能です。\n\n現在入力されているデータは、" + str_count + "桁です。");
        }
		return false;
	}
	return true;
}

/**
 * 半角、全角込みのバイト数としての指定桁数内チェック
 * return boolean
 */
function checkMinMaxLen(value, min,maxlen, mess) {
	var chk_str = value;
	var str_count = 0;
	var i;

	//全角文字の長さを取得
	char_length = ("あ".length);
	if(chk_str.length == 0) {
		value = "";
		return true;
	}

	for(i = 0; i < chk_str.length; i = i + char_length){
		char_target = chk_str.charCodeAt( i );
		if((char_target >= 0x0021 && char_target <= 0x007E) ||
			(char_target >= 0xFF61 && char_target <= 0xFF9F)){
			str_count ++;
		}else{
			str_count += 2;
		}
	}

	if(str_count > maxlen){
        if( mess != "" ){
		    alert(mess + "が入力可能桁数を超えています。\n\n" + mess + "は" + maxlen + "桁まで入力可能です。\n\n現在入力されているデータは、" + str_count + "桁です。");
        }
		return false;
	}else if(str_count < min){
	    if( mess != "" ){
		    alert(mess + "が入力指定桁数を下回っています。\n\n" + mess + "は" + maxlen + "桁まで入力可能です。\n\n現在入力されているデータは、" + str_count + "桁です。");
        }
        return false;
	}
	return true;
}


/**
 * 半角のみ入力可能な領域に対してチェックを行なう。
 * return boolean
 */
function checkHankaku(value,mess){
	var chk_str = value;
	var str_count = 0;
	var i;

	//全角文字の長さを取得
	char_length = ("あ".length);
	if(chk_str.length == 0) {
		value = "";
		return true;
	}

	for(i = 0; i < chk_str.length; i = i + char_length){
		char_target = chk_str.charCodeAt( i );
		if((char_target >= 0x0021 && char_target <= 0x007E) ||
			(char_target >= 0xFF61 && char_target <= 0xFF9F)){
			str_count ++;
		}else{
			str_count += 2;
		}
	}

	if(str_count != chk_str.length){
        if( mess != "" ){
			alert(mess + "には半角のみ入力して下さい。");
        }
		return false;
	}
	return true;

}

/**
 * 半角カナと数値のみ入力可能な領域に対してチェックを行なう。
 * return boolean
 */
function checkHankakuKana(value,mess){
	var i;
	for(i = 0;i < value.length;i++){
		charS = value.charCodeAt(i);
		if(charS >= 0xFF66 && charS <= 0xFF9F ||
			charS >= 0x0030 && charS <= 0x0039 ||
				charS == 0x0020 || charS == 0x3000){
		}else{
			alert(mess + "には半角カナと数値のみ入力して下さい。");
			return false;
		}
	}
	return true;
}


/**
 * 半角英数のみ入力可能な領域に対してチェックを行なう。
 * return boolean
 */
function checkHankakuEisuu(value,mess){
	var i;
	for(i = 0;i < value.length;i++){
		charS = value.charCodeAt(i);
		if(charS >= 0x0041 && charS <= 0x005A ||
			charS >= 0x0061 && charS <= 0x007A ||
				charS >= 0x0030 && charS <= 0x0039) {
		}else{
			alert(mess + "には、半角英字もしくは数字のみを入力してください。");
			return false;
		}
	}
	return true;
}

/**
 * E-Mail Check
 */
function checkEmail( enterVal, msgLabel ) {
	var elm, obj, v, p, i, j, c, local_part, domain, words, word, invalid_msg;
	var invalid_atoms = ' ' + '(' + ')' + '<' + '>' + '@' + ',' + ';' + ':' + '\\' + '"' + '[' + ']';

	invalid_msg = 'の入力を確認して下さい。';

	if ( enterVal == '' ) {
		if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
		return false;
	}

	v = enterVal;

	p = v.indexOf('@');
	if ( p == -1 ) {
		if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
		return false;
	}

	local_part = v.substring(0,p);
	domain = v.substring(p+1,v.length);

	//if ( local_part.substring(0,1) == '.' || local_part.substring((local_part.length -1),local_part.length) == '.' ) {
    //2005/03/07 Mod Kamitani xxxx.@xxx.com のように@直前の「.」を許すように変更
	if ( local_part.substring(0,1) == '.' ){
		if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
		return false;
	}

	words = domain.split('.');

	if ( words.length <= 1 ) {
		if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
		return false;
	}

	words[words.length] = local_part;

	for ( i = 0; i < words.length; i++ ) {
		word = words[i];

		if ( word == '' ) {
			if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
			return false;
		}

		for ( j = 0; j < word.length; j++ ) {
			c = word.substring(j,(j+1));
			if ( invalid_atoms.indexOf(c) != -1 ) {
				if ( msgLabel != "" ) { alert( msgLabel + invalid_msg ); }
				return false;
			}
		}
	}
	return true;
}

/**
 * 郵便番号
 * return boolean
 */
function checkPostCode(value, mess){
	var temp = value;
	var l_num = "1234567890";
	var l_hi = "-";
	var i;
    if( temp.length != 8 ){
			alert(mess + "が不正です。");
			return false;
    }
	for(i = 0;i < 3;i++){
		if(l_num.indexOf(temp.charAt(i),0) == -1){
			alert(mess + "が不正です。");
			return false;
		}
	}

	if(l_hi.indexOf(temp.charAt(3),0) == -1){
		alert(mess + "が不正です。");
		return false;
	}

	for(i = 4;i < 8;i++){
		if(l_num.indexOf(temp.charAt(i),0) == -1){
			alert(mess + "が不正です。");
			return false;
		}
	}
	return true;
}

/**
 * ＦＡＸ番号、電話番号等、のチェックを行ないます。
 * return boolean
 */
function checkTelNo(telnum){
	//電話番号は、「2〜5桁の数字 - 1〜4桁の数字 - 4桁の数字
	//正規表現ｵﾌﾞｼﾞｪｸﾄ 電話番号
	var tel_reg = new RegExp("^\\d{2,5}-\\d{1,4}-\\d{4}$");
	//携帯電話（11桁　ハイフンあり（13桁））
	var port_reg = new RegExp("^0[0-9]0-\\d{4}-\\d{4}$");

	//携帯電話形式[0?0]の場合
	if(telnum.substring(0,1)=="0" && telnum.substr(2,1)=="0"){
		if(!telnum.match(port_reg)){
			alert("電話番号(形式)に誤りがあります。");
			return false;
		}else{
			return true;
		}
	}else{
		//電話番号形式
		//桁数チェック(一般電話11桁または12桁（"-"含む))
		if(telnum.length==11 || telnum.length==12){
			//形式チェック
			if(!telnum.match(tel_reg)){
				alert("電話番号（形式）に誤りがあります。");
				return false;
			}else{
				return true;
			}
		}else{
				alert("電話番号(桁数)に誤りがあります。");
				return false;
		}

	}
}
//function checkTelNo(value, mess){
//	var temp = value;
//	var alfa = "1234567890-";
//	var l_hi = "-";
//	var i;
//
//    //if( temp.length == 0 ){
//	//		alert(mess + "が不正です。");
//	//		return false;
//    //}
//
//    //先頭「−」はおかしい
//	if(l_hi.indexOf(temp.charAt(0),0) != -1){
//		alert(mess + "が不正です。");
//		return false;
//	}
//
//    //最後「−」はおかしい
//	if(l_hi.indexOf(temp.charAt(temp.length - 1),0) != -1){
//		alert(mess + "が不正です。");
//		return false;
//	}
//
//	for(i = 0;i < temp.length;i++){
//		if(alfa.indexOf(temp.charAt(i),0) == -1){
//			alert(mess + "に不正な文字が入力されています。");
//			return false;
//		}
//	}
//	return true;
//}

/**
 * 半角数値チェック
 * return boolean
 */
function checkNumeric(value, mess) {
	var temp = value;
	if(!isNaN(temp)){
		if(temp.substring(0,1) == "+"){
			alert(mess + "は半角数値で入力して下さい。");
			return false;
		}else if(temp.substring(0,1) == "-"){
			alert(mess + "は半角数値で入力して下さい。");
			return false;
		}else if(!checkExponent(value)){
			alert(mess + "に小数点入力はできません。");
			return false;
		}else if(!checkSubNumeric(value,mess)){
			alert(mess + "は数値として正しくありません。");

			return false;
		}
		return true;
	}else{
		alert(mess + "は半角数値で入力して下さい。");
		return false;
	}
}

/**
 * Decimal , Currency Check などに使用するメッソド
 */
function checkDecimalNumeric(value,mess){
	var temp = value;
	if(!isNaN(temp)){
		if(temp.substring(0,1) == "+"){
			alert(mess + "は半角数値で入力して下さい。");
			return false;
		}else if(!checkSubNumeric(value,mess)){
			alert(mess + "は数値として正しくありません。");
			return false;
		}
		return true;
	}else{
		alert(mess + "は半角数値で入力して下さい。");
		return false;
	}
}

/**
 * Decimal , Currency Check などに使用するメッソド(+-不可)(.可)
 */
function checkPlusDecimalNumeric(value,mess){
	var temp = value;
	if(!isNaN(temp)){
		if(temp.substring(0,1) == "+"){
			alert(mess + "は半角数値で入力して下さい。");
			return false;
		}else if(temp.substring(0,1) == "-"){
			alert(mess + "は半角数値で入力して下さい。");
			return false;
		}else if(!checkSubNumeric(value,mess)){
			alert(mess + "は数値として正しくありません。");
			return false;
		}
		return true;
	}else{
		alert(mess + "は半角数値で入力して下さい。");
		return false;
	}
}

// 001,00.12などの入力を防ぐ
//これは直接使用しないで！！
function checkSubNumeric(value,mess){
	if(checkNeed(value,"")){
		// 文字列として比較する( 整数値 )
		if(checkExponent(value)){
			if(value == ("" + parseInt(value,10))){
				return true;
			}
		}else{
		// 小数点あり
			var decimalPoint = value.indexOf(".",0);
			var subValue = value.substring(0,decimalPoint);
			if(subValue == ("" + parseInt(subValue,10))){
				return true;
			}
		}
		return false
	}
	return true;
}

/**
 * 半角数字のみ入力可能な領域に対してチェックを行なう。（+-.も不可）
 * return boolean
 */
function checkHankakuSuuji(value,mess){
	if(!checkSpace(value,mess)){
		return false;
	}else if(isNaN(value)){
		alert(mess + "は半角数値のみ入力して下さい。");
		return false;
	}else{
		if(/[+-.]/g.exec(value) != null){
			alert(mess + "は半角数値のみ入力して下さい。");
			return false;
		}
	}
	return true;
}

/**
 * 引数
 * value	: 数値として認識されるもの
 * mess		: 項目名文字列
 * substract	: マイナス ( あり・なし ) フラグ
 * decimal	: 小数点   ( あり・なし ) フラグ
 * maxLength	: 数値項目の最大長 ( 小数点を抜いた値 )
 * decimalPoint	: 小数点以下桁 ( 0 入力時 小数点以下なし);
 */
function checkDecimal(value,mess,substract,maxLength,decimalPoint){
	if(!checkDecimalNumeric(value,mess)){
		return false;
	}else{
		if(!checkSubstract(value,mess,substract)) return false;
		if(!checkSubDecimal(value,mess,maxLength,decimalPoint)) return false;
	}
	return true;
}

/**
 * これ自体が本体ではないので直接使用しないで下さい。
 */
function checkSubstract(value,mess,substract){
	regExps = new RegExp("[-]","g");
	if(!substract){
		if(regExps.test(value)){
			alert(mess + "にはマイナス値は入力できません。");
			return false;
		}
	}
	return true;
}

/**
 * これ自体が本体ではないので直接使用しないで下さい。
 */
function checkSubDecimal(value,mess,maxLength,decimalPoint){
	var subValue = value.replace(/[-]/g,"");

	if(!checkExponent(subValue)){
		if(decimalPoint == 0){
			// 小数点を含まない
			alert(mess + "は小数点を入力できない数値項目です。");
			return false;
		}else{
			// 小数点を含む(位置のチェック)
			var point = subValue.indexOf(".",0);
			if(point != 0){
				if((subValue.substring(0,point)).length > (maxLength - decimalPoint)){
					alert(mess + "の整数部への入力は" + (maxLength - decimalPoint) + "桁です。");
					return false;
				}else if((value.substring(point + 1,subValue.length)).length == 0){
					alert(mess + "の小数点以下への入力が行なわれていません。");
					return false;
				}else if((value.substring(point + 1,subValue.length)).length > decimalPoint){
				alert(mess +"の小数点以下への入力は" + decimalPoint + "桁です。");
					return false;
				}
			}else{
				alert(mess + "は小数点から始まる数値は入力できません。");
				return false;
			}
		}
	}else{
		if(subValue.length > (maxLength - decimalPoint)){
			alert(mess + "の整数部への入力は" + (maxLength - decimalPoint) + "桁です。");
			return false;
		}
	}
	return true;
}

/**
 * 金額入力値チェック
 * currencySize : ＤＢ定義サイズ
 * substract	: マイナス ( あり・なし ) フラグ
 * decimal	: 小数点	  ( あり・なし ) フラグ
 * decimalPoint : 小数点以下桁
 */
function checkCurrency(value,mess,substract,maxLength,decimalPoint){
	var subValue = removeCamma(value);

	if(!checkDecimalNumeric(subValue,mess)){
		return false;
	}else{
		// 金額がマイナスになる可能性がある場合のみ(必要になったら使って下さい)
		if(!checkSubstract(subValue,mess,substract)) return false;
		// 金額カンマの位置数
		var currency = value.replace(/[-]/g,"");
		if(currency.indexOf(".",0) != -1){
			currency = currency.substring(0,currency.indexOf(".",0));
		}
		if(!checkSubCurrency(currency,mess,(maxLength - decimalPoint))) return false;
		// 金額に小数点入力が必要な場合のみ
		if(!checkSubDecimal(removeCamma(value.replace(/[-]/g,"")),mess,maxLength,decimalPoint)) return false;


	}
	return true;
}

/**
 * これは自体が本体ではないので使用しないで下さい。
 */
function checkSubCurrency(value,mess,maxLength){
	// カンマの数を正しく入力(必要になったら使って下さい)
	var subValue = removeCamma(value);
	var regExpsArray = value.match(/[,]/g);
	var subLength = parseInt(((subValue.length - 1) / 3),10);

	if(subValue.length > maxLength){
		alert(mess + "の整数部入力は" + maxLength + "桁です。");
		return false;
	}

	if(regExpsArray != null){

		if(regExpsArray.length != subLength){
			alert(mess + "のカンマの数が正しくありません。");
			return false;
		}

		var j = 3;
		var total = 0;
		var i;
		for(i = 0;i < subLength;i++){
			if(value.substring(value.length - (j + 1),value.length - j) == ","){
				total++;
			}
			j += 4;
		}

		if(total != regExpsArray.length){
			alert("カンマを付ける位置が正しくありません。");
			return false;
		}
	}

	return true;
}

/**
 * 日付の妥当性チェック
 * 現段階でのメッセージの出力はテスト段階のメッセージです。
 * 気にしないでください。（また変更をかけます。);
 * return boolean
 */
function checkYYYYMMDD(value,mess){
	if(value == ""){
		return true;
	}

	var error = "";
	var ymd = value.replace(/[\/]/g,"");

	if(!checkExponent(value)){
		alert(mess + "にピリオドが入力されています。");
		return false;
	}

	var regExps = new RegExp("[/]","g");

	var srashArrayFirst = regExps.exec(value);
	var srashArrayLast = value.match(regExps);

	if(srashArrayLast == null){
		// YYYYMMDD
		var yyyy = ymd.substring(0,4);
		var mm   = ymd.substring(4,6);
		var dd   = ymd.substring(6,8);
	}else if(srashArrayLast.length == 2){
		// YYYY/MM/DD
		var yyyy = value.substring(0,srashArrayFirst.index);
		var mm   = value.substring(srashArrayFirst.lastIndex,srashArrayLast.index);
		var dd   = value.substring(srashArrayLast.lastIndex,value.length);
	}else{
		alert(mess + "のスラッシュの数が不正です。");
		return false;
	}

	if(!isNaN(ymd)){
		if(ymd.length == 8){
			if(mm < 13 && mm > 0){
				if(checkDayYmd(yyyy,mm,dd)){
					return true;
				}else{
					error = mess + " : " + yyyy + "年" + mm + "月/* " + dd + " */日は日付として認識できません。";
				}
			}else{
				error = mess + " : " + yyyy + "年" + mm + "月は日付として認識できません。";
			}
		}else{
			error = mess + "の入力が正しく行なわれていません。\n\n入力形式は、YYYY/MM/DD または YYYYMMDD です。";
		}
	}else{
		error = mess + "は半角数値で入力して下さい。";
	}
	alert(error);
	return false;

	/**
	 * 外部からは、参照できません。
	 * return boolean
	 */
	function checkDayYmd(yyyy,mm,dd){
		// 閏年の判定
		var check_flg;
		var urudosi_flg = (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0))? true : false;

		switch(eval(mm)){
			case 2:
				var check_day = ( urudosi_flg )? 29 : 28;
				check_flg = (dd > 0 && dd <= check_day)? true : false;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				check_flg = (dd > 0 && dd <= 30)? true : false;
				break;
			default:
				check_flg = (dd > 0 && dd <= 31)? true : false;
				break;
		}
		return check_flg;
	}
}

/**
 * 日付の妥当性チェック(YYYYMM)
 * return boolean
 */
function checkYYYYMM(value,mess){
	if(value == ""){
		return true;
	}

	var error = "";
	var ymd = value.replace(/[\/]/g,"");

	if(!checkExponent(value)){
		alert(mess + "にピリオドが入力されています。");
		return false;
	}

	var regExps = new RegExp("[/]","g");

	var srashArrayFirst = regExps.exec(value);
	var srashArrayLast = value.match(regExps);

	if(srashArrayLast == null){
		// YYYYMM
		var yyyy = ymd.substring(0,4);
		var mm   = ymd.substring(4,6);
	}else if(srashArrayLast.length == 1){
		// YYYY/MM
		var yyyy = value.substring(0,srashArrayFirst.index);
		var mm   = value.substring(srashArrayFirst.lastIndex,value.length);
	}else{
		alert(mess + "のスラッシュの数が不正です。");
		return false;
	}

	if(!isNaN(ymd)){
		if(ymd.length == 6){
			if(mm < 13 && mm > 0){
				return true;
			}else{
				error = mess + " : " + yyyy + "年" + mm + "月は日付として認識できません。";
			}
		}else{
			error = mess + "の入力が正しく行なわれていません。\n\n入力形式は、YYYY/MM または YYYYMM です。";
		}
	}else{
		error = mess + "は半角数値で入力して下さい。";
	}
	alert(error);
	return false;
}

/**
 * 日付の妥当性チェック(MMDD)
 * return boolean
 */
function checkMMDD(value,mess){
	if(value == ""){
		return true;
	}

	var error = "";
	var md = value.replace(/[\/]/g,"");

	if(!checkExponent(md)){
		alert(mess + "にピリオドが入力されています。");
		return false;
	}
	if(!isNaN(md)){
		if(md.length == 4){
			var nowDate  = new Date()
			var nowYear  = nowDate.getYear();
			var nowMonth = nowDate.getMonth() + 1;

			if(parseInt(md.substring(0,2),10) < nowMonth){
				nowYear += 1;
			}

			var ymd = "" + nowYear + "" + md;
			if(checkYYYYMMDD(ymd,mess)){
				return true;
			}
		}else{
			alert(mess + "の入力が正しく行なわれていません。\n\n入力形式は、MM/DD または MMDD です。");
		}
	}else{
		alert(mess + "は半角数値で入力して下さい。");
	}
	return false;
}

/**
 * 時間の妥当性チェック(３０十分間隔入力対応)
 * return boolean
 */
function checkHHMM(value,mess,flag){
	// 空文字の場合スルー
	if(!checkNeed(value,"")){
		return true;
	}

	if(!checkExponent(value)){
		alert(mess + "にピリオドが入力されています。");
		return false;
	}

	if(isNaN(value.replace(/[:]/g,""))){
		alert(mess + "は半角数値で入力して下さい。");
		return false;
	}

	var coronPoint = value.indexOf(":",0);

	if(coronPoint == -1 || coronPoint == 0 || coronPoint == value.length){
		// コロン入力が無い場合
		if(value.length != 4){
			alert("コロンの入力を行なっていない場合は、必ず４桁で入力して下さい。");
			return false;
		}
		var hh = parseInt(value.substring(0,2),10);
		var mm = parseInt(value.substring(2,4),10);

	}else{
		// コロン入力がある場合
		var hh = parseInt(value.substring(0,coronPoint),10);
		var mm = parseInt(value.substring(++coronPoint,value.length),10);
	}

	if(hh > 24 || hh < 0){
		alert(hh + "時は時間として正しい入力値ではありません。");
		return false;
	}

	if(hh == 24){
		if(mm > 0){
			alert(hh + "時" + mm + "分は時間として正しい入力値ではありません。");
			return false;
		}
	}else{
		if(mm >= 60 || mm < 0){
			alert(mm + "分は時間として正しい入力値ではありません。");
			return false;
		}
	}

	if(flag){
		if(!checkHalfMinute(mm)){
			alert(mess + "は３０分間隔入力のみ可能です。");
			return false;
		}
	}

	return true;
}
function checkHalfMinute(mm){
	var minute = parseInt(mm,10);
	return (minute == 0 || minute == 30)? true : false;
}
/**
 * 時間(時)の値が正しいかどうかの確認
 * 小数点入力駄目にする
 */
function checkHH(value,maxlength,mess){
	// 空文字の場合スルー
	if(!checkNeed(value,"")){
		return true;
	}

	if(!checkNumeric(value,mess)){
		return false;
	}

	if(!checkExponent(value)){
		alert(mess + "にピリオドが入力されています。");
		return false;
	}

	var regExps = new RegExp("[-]","g");
	if(regExps.test(value)){
		alert(mess + "にはマイナス入力できません。");
		return false;
	}

	if(value.length > maxlength){
		alert(mess + "の" + value + "時間は入力できる範囲を超えています。");
		return false;
	}

	//0時から24時
	hh = parseInt(value,10)
	if(hh > 24 || hh < 0){
		alert(hh + "時は時間として正しい入力値ではありません。");
		return false;
	}
	return true;
}
/**
 * [ − → ▲ ] + '円'
 */
function replaceNumToCell(value){
	if(value == ""){
		return value;
	}

	if(/[-]/g.test(value)){
		var sankaku = "▲";
	}else{
		var sankaku = "";
	}

	value = value.replace(/[-]/g,"");

	// カンマを付けます(正規表現版)
	value = removeCamma(value);
	value = value.split("");
	value = value.reverse();
	value = value.join("");
	var regExp = new RegExp("(\\d\\d\\d)","g");
	value = value.replace(regExp,"$1,");
	value = value.split("");
	value = value.reverse();
	value = value.join("");

	if(value.substring(0,1) == ","){
		value = value.substring(1,value.length);
	}

	return sankaku + value + "円";
}

/**
 * [ ▲ → − ]
 */
function replaceCellToNum(value){
	value = removeCamma(value);
	value = value.replace(/[▲]/g,"-");
	value = value.replace(/[円]/g,"");

	return value;
}
/**
 * 小数点があるかないかのチェック
 */
function checkExponent(value){
	var regExps = new RegExp("[.]","g");
	if(regExps.test(value)){
		return false;
	}
	return true;
}
/**
 * 計算用INT型値 返却メソッド
 * return 整数値
 */
function returnNumeric(value){
	if(value != ""){
		return parseInt(removeCamma(value),10);
	}else{
		return 0;
	}
}

/**
 * 日付の妥当性チェック(YYYYMMDD)
 * yyyy/mmの月とドロップダウンの日付をチェック
 * return boolean
 */
function checkYYYYMMDDWithDrop(ym,d,mess){

	//99=月末なので、年月だけチェック
	if(d == "99"){
		return checkYYYYMM(ym,mess);
	}else{
		if(d.length == 1){
			return checkYYYYMMDD(ym + "/0" + d,mess);
		}else{
			return checkYYYYMMDD(ym + "/" + d,mess);
		}
	}
	return true;
}

/**
 * 年・月から月末日を取得
 * return 整数値
 */
function getMatu(value){
	//yyyy/mm→yyyyとmm
	var ymd = value.replace(/[\/]/g,"");
	var yyyy = ymd.substring(0,4);
	var mm   = ymd.substring(4,6);
	// 閏年の判定
	var urudosi_flg = (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0))? true : false;
	var check_day;
	switch(eval(mm)){
		case 2:
			check_day = ( urudosi_flg )? 29 : 28;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			check_day = 30;
			break;
		default:
			check_day = 31;
			break;
	}
	return check_day;
}
/**
 * YYYY/MM/DD を数値(int型) にして返します。
 * return parseInt(YYYYMMDD,10)
 */
function parseIntYMD(value){
	// スラッシュを取り除く
	if(value == ""){
		return true;
	}

	var ymd = value.replace(/[\/]/g,"");

	var regExps = new RegExp("[/]","g");

	var srashArrayFirst = regExps.exec(value);
	var srashArrayLast = value.match(regExps);

	if(srashArrayLast == null){
		// YYYYMMDD
		var yyyy = ymd.substring(0,4);
		var mm   = ymd.substring(4,6);
		var dd   = ymd.substring(6,8);
	}else if(srashArrayLast.length == 2){
		// YYYY/MM/DD
		var yyyy = parseInt(value.substring(0,srashArrayFirst.index),10);
		var mm   = parseInt(value.substring(srashArrayFirst.lastIndex,srashArrayLast.index),10);
		var dd   = parseInt(value.substring(srashArrayLast.lastIndex,value.length),10);
	}

	mm = (mm < 10)? "0" + mm:mm;
	dd = (dd < 10)? "0" + dd:dd;

	return parseInt(yyyy + "" + mm + "" + dd,10);
}

/**
 * JavaScript版（getCurrency）
 */
function replaceNumToText(value){
	if(value == ""){
		return value;
	}

	if(/[-]/g.test(value)){
		var fugou = "-";
	}else{
		var fugou = "";
	}

	value = value.replace(/[-]/g,"");

	// カンマを付けます(正規表現版)
	value = removeCamma(value);
	value = value.split("");
	value = value.reverse();
	value = value.join("");
	var regExp = new RegExp("(\\d\\d\\d)","g");
	value = value.replace(regExp,"$1,");
	value = value.split("");
	value = value.reverse();
	value = value.join("");

	if(value.substring(0,1) == ","){
		value = value.substring(1,value.length);
	}

	return fugou + value;
}



// 日付妥当性チェック
// 引数：yyyymmddの文字列
//function checkDate(number,msgLabel) {
//    yy = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 29);
//
//    wYear  = number.substr(0, 4);
//    wMonth = wMChk = number.substr(4, 2);
//    wDay   = number.substr(6, 2);
//
//    // 年の範囲検証
//    if (!(wYear >= 1940 && wYear <= 2100)) {
//		if ( msgLabel != "" ) { alert( msgLabel + "の年の指定が正しくありません"); }
//        return false;
//    }
//
//    // 月の範囲検証
//    if (!(wMonth >= 1 && wMonth <= 12)) {
//		if ( msgLabel != "" ) { alert( msgLabel + "の月の指定が正しくありません"); }
//        return false;
//    }
//
//    // 閏年の判定
//    if (!(wYear % 4) && wMonth == 2) {
//        wMChk = 12;     // 閏年テーブル
//
//        //if (!(!(wYear % 100) && (wYear % 400))) {
//        if (!(wYear % 100)) {
//            if (wYear % 400) {
//                wMChk = 1;      // non閏年テーブル
//            }
//        }
//    } else {
//        wMChk--;
//    }
//
//    // 日の範囲検証
//    if (!(1 <= wDay && yy[wMChk] >= wDay)) {
//		if ( msgLabel != "" ) { alert( msgLabel + "の日付の指定が間違ってます"); }
//        return false;
//    }
//
//    return true;
//}
//
///**
// * 半角小文字英数のみ入力可能な領域に対してチェックを行なう。
// * return boolean
// */
//function checkHankakuminEisuu(value,mess){
//	var i;
//	for(i = 0;i < value.length;i++){
//		charS = value.charCodeAt(i);
//		if(charS >= 0x0061 && charS <= 0x007A ||
//				charS >= 0x0030 && charS <= 0x0039) {
//		}else{
//			alert(mess + "には、半角小文字英字数字のみを入力してください。");
//			return false;
//		}
//	}
//	return true;
//}

