// **********************************************************************************
//	comm_general.js - 汎用JavaScript
// **********************************************************************************
//************************************************************
// Removes leading whitespaces
//************************************************************
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

//************************************************************
// Removes ending whitespaces
//************************************************************
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

//************************************************************
// Removes leading and ending whitespaces
//************************************************************
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}

//************************************************************
// 文字列のレングス取得(バイト数を返す)
//************************************************************
function LengthB(str) {
    var ct;
    var size = 0;

    for(ct = 0; ct < str.length; ct++) {
        var c = str.charCodeAt(ct);
        if(c >= 128){
            size++;
        }
        size++;
    }
    return size;
}

//************************************************************
// 半角数字文字チェック
//************************************************************
function check_numstring(str) {
	var i = 0;
	var len = str.length;

	// Null OK
	if (len==0 || len==null)
		return true

	// 数値型(0潤ｵ9)以外はエラー
	for (i=0; i<len; i++) {
		if ( str.substring(i,i+1)<'0' || '9'<str.substring(i,i+1))
			return false;
	}
	return true;
}

//************************************************************
// 半角数字だけかどうかチェック
//************************************************************
function check_number(str) {
	str = str.toString().trim();
	if( str == ""){
		return true;
	}
	
	var i = 0;
	var len = str.length;
	
	if (len==0 || len==null)
		return true
	if(len !=  10 ){
		return false;
	}
	for (i=0; i<len; i++) {
		if ( str.substring(i,i+1)<'0'||'9'< str.substring(i,i+1) )
				return false;
	}
	return true;
}

//************************************************************
// 半角英字だけかどうかチェック
//************************************************************
function check_englishstring(str) {
	str = str.toString();
	if( str == "" ) {
		return true;
	}
	
	var i = 0;
	var len = str.length;

	// Null OK
	if (len==0 || len==null)
		return true
			
	for (i=0; i<len; i++) {
		if ( 	(str.substring(i,i+1)<'a' || 'z'<str.substring(i,i+1))
			 && (str.substring(i,i+1)<'A' || 'Z'<str.substring(i,i+1)))
				return false;
	}
	return true;
}

//************************************************************
// 半角英数字（記号なし）のチェック
//************************************************************
function isNumStringSpace(value){
//	var val = value.toString().trim();
	var val = trim(value.toString());
	var len = val.length;
	
	for(var i = 0; i < len; i ++){
		var ch = val.substring(i,i+1);		
		if( (ch != ' ') && (ch < '0' || ch > '9' ) && (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z' ) ){
			return false;
		}
	}
	return true;
}

//************************************************************
// 半角カナ文字チェック
//************************************************************
function check_kanastring(str) {
	var i = 0;
	var len = str.length;

	// Null OK
	if (len==0 || len==null)
		return true

	// 半角カナはエラー
	for (i=0; i<len; i++) {
		if ( str.substring(i,i+1)<'ﾝ' && 'ｱ'<str.substring(i,i+1))
			return false;
	}
	return true;
}

//************************************************************
// 文字列中の不正文字存在チェック
// ｢'｣ ｢,｣｢"｣｢<｣｢>｣｢$｣｢\｣が存在する場合はfalseを返却
//************************************************************
function check_iregstr(str) {
	if ((str.indexOf("'") == -1)
		&&(str.indexOf('.') == -1)
		&&(str.indexOf('"') == -1)
		&&(str.indexOf("<") == -1)
		&&(str.indexOf(">") == -1)
		&&(str.indexOf("$") == -1)
		&&(str.indexOf("\\") == -1))
		return true;
	else
		return false;
}

//************************************************************
// 電話番号の妥当性チェック
//************************************************************
function isTelNumber(val) {
	var isTelNumber = true;
   	var ValidChars = "0123456789().- ";
   	var Char;

   	for (idx=0; idx<val.length && isTelNumber == true; idx++) 
	{ 
		Char = val.charAt(idx); 
		if (ValidChars.indexOf(Char) == -1) 
		{
			isTelNumber = false;
		}
	}
	return isTelNumber;
}

//************************************************
// メールアドレス文字チェック
//************************************************
function check_mailstring(str) {

	if ( str.match("^[0-9A-Za-z._]+@[0-9A-Za-z.]+$") ) {
		return true;
	}
	else {
		return false;
	}

}

//************************************************************
// 大文字変換
//************************************************************
function upperMe(field) {
	var strWork = z2h_ascii(field.value, "");

	field.value = strWork.toUpperCase()

}

//**************************************************
// 半角文字を半角文字に変換
//**************************************************
function z2h_ascii(src, exc) {
  var str = new String;
  var len = src.length;
  for (var i = 0; i < len; i++) {
    var c = src.charCodeAt(i);
    if (exc.indexOf(src.charAt(i)) > -1) {
      str += src.charAt(i); /* 除外 */
    } else if (c >= 65281 && c <= 65374 && c != 65340) {
      str += String.fromCharCode(c - 65248);
    } else if (c == 8217) {
      str += String.fromCharCode(39);
    } else if (c == 8221) {
      str += String.fromCharCode(34);
    } else if (c == 12288) {
      str += String.fromCharCode(32);
    } else if (c == 65507) {
      str += String.fromCharCode(126);
    } else if (c == 65509) {
      str += String.fromCharCode(92);
    } else {
      str += src.charAt(i);
    } 
  }
  return str;
}

