//convert value of a object to 1 byte
function convert_to_hankaku(obj){
	var cString = '';
	var value_str = obj.value;
	for (j = 0; j < value_str.length; j++) {
		nChar = value_str.charCodeAt(j)
		nChar = ((nChar >= 65281 && nChar <= 65392) ? nChar - 65248 : nChar)
		nChar = (nChar == 12540 ? 45 : nChar)
		cString += String.fromCharCode(nChar)
	}
	obj.value = cString;
}

//Check a string contain numbers only
//function is_numeric(v_sNumber) {
//	var pattern = /^[0-9]+$/;
//	return pattern.test(v_sNumber);
//}

//Check a string contain numbers only
function is_numeric(v_sNumber) {
	var pattern = /^(-)?[0-9]+$/;
	return pattern.test(v_sNumber);
}

//check a field is empty
function IsEmpty(aTextField) {
if ((aTextField.length==0) || (aTextField == null)) {
      return true;
   }
}

//check a field has whitespaces
function hasWhiteSpace(aTextField)
{
	reWhiteSpace = new RegExp(/^\s+$/);
  	if (reWhiteSpace.test(aTextField)) {
		return false;
	}
	return true;
} 


function isBlank(aTextField)
{
	aTextField = aTextField.replace(/^\s+|\s+$/g,"");
	if (aTextField.length==0)
		return true;
	return false;
} 

//check a string with min and max length
function is_string_length(v_String, v_minlength, v_maxlength) {
	s_length = v_String.length;
	return (s_length > v_minlength && s_length < v_maxlength) ? true : false;
}

//check a string is number with min and max length
function is_number_length(v_sNumber, v_minlength, v_maxlength) {
	var pattern = "/^[0-9]{" +  v_minlength + ","+ v_maxlength + "}$/";
	var reg = new RegExp(pattern);
	return reg.test('v_sNumber');
}

//check a string is a float
function is_float(v_sNumber) {
	var pattern = /^[0-9]+\.[0-9]+$/;
	return pattern.test(v_sNumber);
}

//check a string is float with length
function is_float_length(v_sNumber, v_length) {
	var pattern = "/^[0-9]\.[0-9]{" +  v_length + "}$/";
	var reg = new RegExp(pattern);
	return reg.test('v_sNumber');
}

//check a string is an email
function is_email(v_email) {
	var pattern = /^[A-z0-9._%-]+@([A-z0-9-]+\.)+[A-z]{2,4}$/;
	return pattern.test(v_email);
}

//check a string is an URL
function is_url(v_sURL) {
	var pattern = /((https?|ftp|gopher|telnet|file|notes|ms-help):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/;
	return pattern.test(v_sURL);
}

//check a string is date with specific format
function is_date(v_sDate, format) {
	format = format.toLowerCase();
	var pattern = get_date_format_pattern(format);
	return pattern.test(v_sDate);
}

function isTel(str) {
	if(isBlank(str)) 
		return false;
	var re = /^[0-9\s\-]+$/i
	return re.test(str);
}

//get pattern to check validation of date format
function get_date_format_pattern(v_format) {
	if (v_format == 'yyyy/mm/dd') {
		pattern = /^[0-9]{4}[\/](0?[1-9]|1[012])[\/](0?[1-9]|[12][0-9]|3[01])$/;
	}
	else if (v_format == 'dd/mm/yyyy') {
		pattern = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/][0-9]{4}$/;
	}
	else {
		pattern = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/][0-9]{4}$/;
	}
	return pattern;
}

//change mysql date to datetime
//input	: mysql_datetime
//output: datetime array component
function parse_mysql_2_datetime(sDatetime) {
	var date_time = str_datetime.split(" ");
	var date = date_time[0].split("-");
	var time = date_time[1].split(":");
	
	return [date[0], date[1], date[2], time[0], time[1], time[2]];
}

//Format a mysql datetime from parts (year, month, date, hour, minute, second)
function make_mysql_datetime(v_year, v_month, v_date, v_hour, v_min, v_sec) {
	return v_year + "-" + fillfullMin(v_month) + "-" + fillfullMin(v_date) + " " + fillfullMin(v_hour) + ":" + fillfullMin(v_min) + ":" + fillfullMin(v_sec);	
}

//get current datetime using for mysql
function now_in_mysql() {
	var now = new Date();
	return now.getFullYear() + "-" + fillfullMin(now.getMonth() + 1) + "-" + fillfullMin(now.getDate()) + " " + fillfullMin(now.getHours()) + ":" + fillfullMin(now.getMinutes()) + ":" + fillfullMin(now.getSeconds());
}

//split a time of HH:MM format into seperated hour, minute
//Assume that str is valid
function analyze_hour_min(v_str) {
	var tokens = v_str.split(":");
	return [tokens[0], parseInt(tokens[1])];	
}

function fillfullMin(v_str) {
	if (v_str.toString().length == 1) {
		return "0".concat(v_str);
	}
	else
		return v_str;
}

//Fill 0 to the beginning of v_str to ensure that the output have v_targetLength characters
function fill0(v_str, v_targetLength) {
	while (v_str.toString().length < v_targetLength) {
		v_str = "0".concat(v_str);
	}
	
	return v_str;
}

//check a string is hiragana character
function is_hiragana(v_str) {
	var pattern = /^[\u3040-\u309f]+$/;
	return pattern.test(v_str);
}

//check a string is katakana character
function is_katakana(v_str) {
	var pattern = /^[\u30a0-\u30ff]+$/;
	return pattern.test(v_str);
}

//check a string is kanji character
function is_kanji(v_str) {
	var pattern = /^[\u4e00-\u9fbf]+$/;
	return pattern.test(v_str);
}
