/*------------------------------------------------------------------------------
 * ホテル会員管理システム　共通チェックJavaScriptファイル
 *
 * @author  Sat.Nakata
 * @version $Revision$ $Date$
 *-----------------------------------------------------------------------------*/
 
/***********************************************************
 *  エラーメッセージの定数
 ***********************************************************/
var ERRMSG_FORBIDDEN_CHAR  	= "禁止文字が使用されています。";
var ERRMSG_INVALID_DATE    	= "日付形式に誤りがあります。";
var ERRMSG_NOT_NUMBER 		= "数字ではありません。";
var ERRMSG_INVALID_LENGTH	= "文字数が正しくありません。";
var ERRMSG_REQUIRED			= "必須入力項目です。";
var ERRMSG_INVALID_TYPE    	= "形式に誤りがあります。";
var ERRMSG_UNMATCH			= "一致していません。";

/***********************************************************
 *  禁止文字チェック
 *　　禁止文字が使用されていないかチェックを行う
 *  引数: チェック対象の文字列
 *  戻り値: true：正常 false:エラー
 ***********************************************************/
function isValidStr(str) {

	if (str.match(/[']/i)) {
		return false;
	}

	if (str.match(/[−]/i)) {
		return false;
	}

	if (str.match(/[〜]/i)) {
		return false;
	}

    return true;

}
/***********************************************************
 *  日付チェック
 *　　日付として正しいかチェックを行う
 *　　引数が全てスペースの場合はtrueを返す
 *  引数1: 年
 *  引数2: 月
 *  引数3: 日
 *  戻り値: true：正常 false:エラー
 ***********************************************************/
function isDate(yyyy, mm, dd) {

    daysOfMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 29);

	if (yyyy == "" && mm == "" && dd == "") {
		return true;
	}

	var idxMonth = mm;

    // 年の範囲検証
    if (!(yyyy >= 1900 && yyyy <= 2099)) {
        return false;
    }

    // 月の範囲検証
    if (!(mm >= 1 && mm <= 12)) {
        return false;
    }

    // 閏年の判定
    if (!(yyyy % 4) && mm == 2) {
        idxMonth = 12;     // 閏年テーブル

        if (!(yyyy % 100)) {
            if (yyyy % 400) {
                idxMonth = 1;      // 通常の二月
            }
        }
    } else {
        idxMonth--;
    }

    // 日の範囲検証
    if (!(1 <= dd && daysOfMonth[idxMonth] >= dd)) {
        return false;
    }

    return true;
}
/***********************************************************
 *  数字チェック
 *　　数字かどうかチェックを行う
 *　　引数がスペースの場合はtrueを返す
 *  引数: チェック対象の文字列
 *  戻り値: true：正常 false:エラー
 ***********************************************************/
function isNumber(str) {

	if (str == "") {
		return true;
	}

	if (str.match(/[^0-9]/g)) {
		return false;
	}

    return true;
}
/***********************************************************
 *  数字チェック2
 *　　数字かどうかチェックを行う
 *　　ハイフンもOKとする
 *　　引数がスペースの場合はtrueを返す
 *  引数: チェック対象の文字列
 *  戻り値: true：正常 false:エラー
 ***********************************************************/
function isNumberHyphen(str) {

	if (str == "") {
		return true;
	}

	if (str.match(/[^0-9\-]/g)) {
		return false;
	}

    return true;
}
/***********************************************************
 *  バイト数チェック
 *　　指定された文字数かチェックを行う
 *  引数1: チェック対象の文字列
 *  引数2: 規定バイト数
 *  戻り値: true：正常 false:エラー
 ***********************************************************/
function checkLength(str, len) {

	if (str == "") {
		return true;
	}

	var strByte;
	
	Br=navigator.appName;
	Ver = navigator.appVersion;
	Ver = Ver.substring(0,1);
	char_len="あ".length;
	if (Br=="Netscape"&& Ver<4) {
		strByte = (str.length)/2;
	} else if (Br=="Netscape"&& Ver>4) {
		strByte = str.length - 1;
	} else {
		strByte = str.length;
	}
	
	if (strByte == len) {
		return true;
	}
	return false;
}
/***********************************************************
 *  RTrim
 *　　文字列の右側のスペースを取り除く
 *  引数1: 文字列
 *  戻り値: 右側のスペースを取り除いた文字列
 ***********************************************************/
function RTrim(str)
{
	var strFinal;
	var nLoop = 0;
	strTemp = str;
	strFinal = str;
	while (nLoop < strTemp.length)
	{
		if (strFinal.substring(strFinal.length - 1, strFinal.length) == " ") {
			strFinal = strTemp.substring(0, strTemp.length - (nLoop + 1));
		} else if (strFinal.substring(strFinal.length - 1, strFinal.length) == "　") {
			strFinal = strTemp.substring(0, strTemp.length - (nLoop + 1));
		} else {
			break;
		}
		nLoop++;
	}

	return strFinal;
}
/***********************************************************
 *  エラー共通処理
 *  引数1: フォームオブジェクト
 *  引数2: フォームアイテムオブジェクト
 *  引数3: エラーメッセージ
 *  引数4: ブタンオブジェクト
 *  戻り値: 無し
 ***********************************************************/
function handleErr(form, formObj, errMsg,buttonObj) {
	alert(errMsg);
	formObj.focus();

	if (formObj.type == "text" || formObj.type == "textarea" || formObj.type == "password") {
		formObj.select();
	}
	buttonObj.disabled = false;
}

