/**
 * [関数名] isNum
 * [機　能] 数値チェック（正規表現）
 * [説　明] 数値（0-9）以外の文字が含まれているか正規表現を使用して調べる
 *
 *　　　　　/文字/ のように / で検索対象の文字を囲む
 *　　　　　^ は否定、[^0-9] は 0〜9 の数値以外を意味する
 *　　　　　/g を付けるとマッチした全ての文字をカンマ区切りで返す
 *　　　　　(この場合は数値以外の文字が返される)
 *
 * @param str 入力された文字列
 * @return true(数値のみの場合) | false(数値以外が含まれている場合）
*/
function isNum(str){
	if(str.match(/[^0-9]/g)){
		return false;
	}
	return true;
}

/**
 * [関数名] isHanAlpha
 * [機　能] 半角英字チェック
 * [説　明] 文字列の中に半角英字（a-z,A-Z）以外の文字が含まれているか調べる
 *　　　　　半角スペースも半角英字とみなす
 * [引　数]
 * @param  str 入力された文字列
 * @return true(含まれていない) | false(含まれている)
*/
function isHanAlpha(str){
	for(var i=0 ; i<str.length; i++){
		var code=str.charCodeAt(i);
		if((65<=code && code<=90) || (97<=code && code<=122) || str.substr(i,1)==' ') {
				/* 半角英字（a-z,A-Z）の文字コード範囲 */
				/* 半角スペースも許容 */
		}else{
			return false;
		}
	}
	return true;
}

/**
 * [関数名] isHanNumAlpha
 * [機　能] 半角英数字チェック
 * [説　明] 文字列中に半角英数字以外が含まれているか正規表現を使用して調べる
 * [引　数] 
 * @param  str 入力された文字列
 * [返り値]
 * @return true(半角英数字のみの場合) | false(半角英数字以外が含まれている場合)
*/ 
function isHanNumAlpha(str){
	return /^[a-zA-Z0-9]+$/.test(str); 
}

/**
 * [関数名] chkEmail
 * [機　能] 正規表現によるメールアドレス（E-mail）チェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true(E-mail形式である場合) | false(E-mail形式でない場合)
*/
function chkEmail(str){
	var Seiki=/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;
	if(str != ''){
		if(str.match(Seiki)){
			return true;
		}
	}
	return false;
}

/**
 * [関数名] chkPhone
 * [機　能] 正規表現による電話番号チェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true | false
*/
function chkPhone(str){
	if(str != ''){
		if(!str.match(/[^0-9|-]+/)){
			return true;
		}
	}
	return false;
}

/**
 * [関数名] chkZip
 * [機　能] 正規表現による郵便番号チェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true | false
*/
function chkZip(str){
	if(str != ''){
		if(str.match( /^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/ )){
			return true;
		}
	}
	return false;
}

/**
 * [関数名] chkFurigana
 * [機　能] 正規表現によるフリガナチェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true | false
*/
function chkFurigana(str){
	if(str != ''){
		if(!str.match( /[^ァ-ン　\s]+/ )){
			return true;
		}
	}
	return false;
}

/**
 * [関数名] chkUrl
 * [機　能] 正規表現によるURLチェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true | false
*/
function chkUrl(str){
	if(str != ''){
		if(str.match(/(http|ftp):\/\/[!#-9A-~]+\.+[a-z0-9]/i)){
			return true;
		}
	}
	return false;
}

/**
 * [関数名] chkDate
 * [機　能] 正規表現による日付チェック
 * [引　数]
 * @param str 入力された文字列
 * [返り値]
 * @return true | false
*/
function chkDate(str){ 
	// 正規表現による書式チェック 
	if(!str.match(/^\d{4}\/\d{2}\/\d{2}$/)){
		return false;
	}
	var vYear = str.substr(0, 4) - 0; 
	var vMonth = str.substr(5, 2) - 1; // Javascriptは、0-11で表現 
	var vDay = str.substr(8, 2) - 0; 

	// 月,日の妥当性チェック 
	if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
		var vDt = new Date(vYear, vMonth, vDay);
		if(isNaN(vDt)){
			return false;
		}
		else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
			return true;
		}
	}
	return false; 
} 

function getNum(str){
	if(str == '' || str.match(/[^0-9]/g)){
		return 0;
	}
	return parseInt(str);
}

function comma(num) {
	return num.toString().replace(/([\d]+?)(?=(?:\d{3})+$)/g, function (t) { return t+","; });
}

function delComma(str) {
	while(true){
		dummy = str;
		str = dummy.replace(',', '');
    if(str == dummy){
			break;
		}
	}
	return str;
}

function numInput(obj){
	num = getNum(obj.value);
	obj.value = (num >0? num: '');
}

