﻿//-----------------------------------------------------------------------
// 共通関数
//-----------------------------------------------------------------------
//----------------------------
// 引継数値の真偽を返す
//----------------------------
function mm_bChkNull2Num(szVal){
	var tmpVal = szVal;
	var newVal = '';

	//不要文字削除
	var compStr = '0123456789-,';
//	var compStr = '0123456789.-,';
	var szChar;

	//数字、ピリオドの入力を許可します
	for ( var i = 0; i < tmpVal.length; i++ ){
		szChar = tmpVal.substring( i, i + 1 );
		if ( compStr.indexOf( szChar ) == -1 ){
			return false;
		} else {
			if ( szChar != ','){
				newVal = newVal + szChar;
			}
		}
	}
	//入力値のチェック
	if ( isNaN(newVal) == true ){ return false; }

	return true;

}

//-------------------------------
// 文字列のバイト数取得
//-------------------------------
function mm_getByteCount(szVal){
	var szCnt = 0;
	for ( var i = 0; i < szVal.length; i++ ){
		var szTmp = szVal.substring( i, i + 1 );
		if ( checkIsZenkaku(szTmp) ){
			szCnt += 2;
		} else {
			szCnt += 1;
		}
	}
	return szCnt;
}

//--------------------------------------------------------------
// 入力チェック
// szPtn 1/数字のみ 2/英数字のみ 3/英数字＋記号 4/数値系 5/ｶﾅ系
//       6/Date(****/**/**) 7/Date(****/**)
//       8/数字+記号 9/数字+ハイフン 10/数字+ピリオド 11/メアド
//      12/全角電話
// szVal 精査対象データ
//--------------------------------------------------------------
function mm_bChkInputData(szPtn,szVal){
	var tmpVal = szVal;
	var newVal = "";
	var compStr1 = "0123456789";
	var compStr2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	var compStr3 = '-/_()[]@.&*';
//	var compStr4 = '.-,';
	var compStr4 = ',';
	var compStr5 = 'ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮﾟﾞ ｰ･';
	var compStr6 = "0123456789/";
	var compStr7 = '-';
	var compStr8 = '.';
	var compStr9 = '-_.:@';
	var compStr10 = '０１２３４５６７８９';
	var compStr11 = '-()';
	var compStr12 = '－（）';
	var compStr = "";
	var szChar;
	var i;

	if ( szPtn == 1 ){ compStr = compStr1; }
	if ( szPtn == 2 ){ compStr = compStr1 + compStr2; }
	if ( szPtn == 3 ){ compStr = compStr1 + compStr2 + compStr3; }
	if ( szPtn == 4 ){ compStr = compStr1 + compStr4; }
	if ( szPtn == 5 ){ compStr = compStr1 + compStr2 + compStr3 + compStr5; }
	if ( szPtn == 6 ){ compStr = compStr6; }
	if ( szPtn == 7 ){ compStr = compStr6; }
	if ( szPtn == 8 ){ compStr = compStr1 + compStr3; }
	if ( szPtn == 9 ){ compStr = compStr1 + compStr7; }
	if ( szPtn == 10 ){ compStr = compStr1 + compStr8; }
	if ( szPtn == 11 ){ compStr = compStr1 + compStr2 + compStr9; }
	if ( szPtn == 12 ){ compStr = compStr1 + compStr10 + compStr11 + compStr12; }

	for ( i = 0; i < tmpVal.length; i++ ){
		szChar = tmpVal.substring( i, i + 1 );
		if ( compStr.indexOf( szChar ) == -1 ){
			return false;
		}
	}

	return true;

}

//----------------------------
// 引継値を数値に変換
//----------------------------
function mm_nNull2Num(szVal)
{
	var tmpVal = szVal;
	var newVal = '';

	//不要文字削除
	var compStr = '0123456789.-';
	var szChar;

	//数字、ピリオドの入力を許可します
	for ( var i = 0; i < tmpVal.length; i++ ){
		szChar = tmpVal.substring( i, i + 1 );
		if ( compStr.indexOf( szChar ) == -1 ){
//			return false;
		} else {
			newVal = newVal + szChar;
		}
	}

	//入力値のチェック
	if ( isNaN(newVal) == true ){ return 0; }
	if ( newVal == '' ){ return 0; }

	return Number(newVal);

}

//----------------------------
// 数値３桁区切りセット
//----------------------------
function mm_sSet3KetaDeli(x){
	// 確実に文字列型に変換する
    var s = '' + x;
	// 小数点の位置を0オリジンで求める
    var p = s.indexOf('.');

	// 小数点が見つからなかった時
    if (p < 0) {
		// 仮想的な小数点の位置とする
        p = s.length;
    }

	// 小数点の桁と小数点より右側の文字列
    var r = s.substring(p, s.length);

	// (10 ^ i) の位について
    for (var i = 0; i < p; i++) {
		// (10 ^ i) の位のひとつの桁の数字
        var c = s.substring(p - 1 - i, p - 1 - i + 1);
		// 数字以外のもの(符合など)が見つかった
        if (c < '0' || c > '9') {
			// 残りを全部付加する
            r = s.substring(0, p - i) + r;
            break;
        }

		// 3 桁ごと、ただし初回は除く
        if (i > 0 && i % 3 == 0) {
			// カンマを付加する
            r = ',' + r;
        }
		// 数字を一桁追加する
        r = c + r;
    }
    return r;
}

//----------------------------------------
// 数値３桁区切りセット(数値チェック入り)
//----------------------------------------
function mm_format3KetaDeli(szObject){
	if ( szObject.value == '' ){ return; }
	if ( mm_bChkNull2Num(szObject.value) == false ){ szObject.value = ''; return;}
	szObject.value = sSet3KetaDeli(mm_nNull2Num(szObject.value));
}
