function b_center(target_element, parent_element) {
	var parent_width;
	var parent_height;
	if (parent_element == null) {
		parent_width = $(window).innerWidth();
		parent_height = $(window).innerHeight();
	} else {
		parent_width = parent_element.innerWidth();
		parent_height = parent_element.innerHeight();
	}
	var element_width = target_element.innerWidth();
	var element_height = target_element.innerHeight();
	if (parent_element == null) {
		target_element.css("position", "fixed");
	} else {
		target_element.css("position", "relative");
	}
	target_element.css("left", ((parent_width - element_width) / 2) + "px");
	target_element.css("top", ((parent_height - element_height) / 2) + "px");
};
function b_elementCannotLoad(target_element) {
	target_element.html("
");
}
function b_elementLoading(target_element) {
	target_element.html(" ");
	b_center($("img#loading_image_anim_1"), $("div#login_container"));
}
function b_fullPageImage(target_element) {
	var parent_width = $(window).innerWidth();
	var parent_height = $(window).innerHeight();
	var parent_aspect_ratio = parent_width / parent_height;
	var element_width = target_element.innerWidth();
	var element_height = target_element.innerHeight();
	var element_aspect_ratio = element_width / element_height;
	var element_top = 0;
	var element_left = 0;
	if (element_aspect_ratio > parent_aspect_ratio) {
		element_height = parent_height;
		element_width = element_aspect_ratio * element_height;
		element_left = (parent_width - element_width) / 2;
	} else {
		element_width = parent_width;
		element_height = element_width / element_aspect_ratio;
		element_top = (parent_height - element_height) / 2;
	}
	target_element.css("width", element_width+"px");
	target_element.css("height", element_height+"px");
	target_element.css("left", element_left+"px");
	target_element.css("top", element_top+"px");
}
function b_keyEventEnter(evt) {
	if (evt.which == 13 || evt.keyCode == 13) {
        return true;
    }
	return false;
}
function b_keyEventEscape(evt) {
	if (evt.which == 27 || evt.keyCode == 27) {
        return true;
    }
	return false;
}
function b_numberFormat(num, decimal_places) {
	if (decimal_places == null) {
		decimal_places = "auto";
	}
		var decimal_mark = ".";
	var thousand_separator = ",";
	
	var num_str = num.toString();
	var decimal_value = "";
	var array_numstr = num_str.split(".");
	if (array_numstr.length > 1) {
		decimal_value = array_numstr[1];
	}
	num_str = array_numstr[0];
	
	var temp_str = "";
	var pos = 0;
	var len = num_str.length % 3;
	while (pos < num_str.length) {
		temp_str += num_str.substring(pos, pos+len);
		pos += len;
		len = 3;
		if (temp_str != "" && pos < num_str.length && temp_str != "-") {
			temp_str += thousand_separator;
		}
	}
	var decimal_intval;
	var max_decimal_places;
	var decimal_value_length;
	var maintained_position;
	var i;
	var temp_decimal_str;
	var add_number;
	var current_number;
	if (decimal_places == "auto") {
		decimal_intval = parseInt(decimal_value);
		maintained_position = -1;
		decimal_value_length = decimal_value.length;
		for (i=0; i < decimal_value_length; i++) {
			if (decimal_value.substring(i, i+1) != "0") {
				maintained_position = i;
			}
		}
		if (maintained_position > -1) {
			temp_str += decimal_mark + decimal_value.substring(0, maintained_position+1);
		}
	} else if (decimal_places.toString().indexOf("max") > -1) {
		max_decimal_places = decimal_places.substring(3);
		decimal_intval = parseInt(decimal_value);
		decimal_value_length = decimal_value.length;
		if (max_decimal_places > decimal_value_length) {
			pos = decimal_value_length-1;
		} else {
			pos = max_decimal_places-1;
		}
		temp_decimal_str = "";
		add_number = false;
		while (pos >= 0) {
			current_number = decimal_value.substring(pos, pos+1);
			if (!add_number && current_number != "0") {
				add_number = true;
			}
			if (add_number) {
				temp_decimal_str = current_number + temp_decimal_str;
			}
			pos--;
		}
		if (temp_decimal_str.length > 0) {
			temp_str += decimal_mark + temp_decimal_str;
		}
	} else if (decimal_places > 0) {
		temp_str += decimal_mark;
		decimal_value_length = decimal_value.length;
		for (i=0; i < decimal_places; i++) {
			if (decimal_value_length > i) {
				temp_str += decimal_value.substring(i, i+1);
			} else {
				temp_str += "0";
			}
		}
	}
	return temp_str;
}
function b_numberFormatForInput(obj) {
		var decimal_mark = ".";
	var thousand_separator = ",";
	var last_character = "";
	var leading_string = "";
	var decimal_value;
	var array_decimal_value;
	var temp_char;
	var i;
	var num = obj.value.toString();
	if (num.length > 0 && num != "-") {
		last_character = num.substring(num.length-1);
		if (num.length > 1) {
			leading_string = num.substring(0, num.length-1);
		}
		if (last_character == "," || last_character == ".") {
			i = leading_string.length-1;
			while (i >= 0) {
				temp_char = leading_string.substring(i);
				if (!isNaN(temp_char) || temp_char == "-") {
					i = -1;
				} else {
					leading_string = leading_string.substring(0, i);
				}
				i--;
			}
			if (leading_string.indexOf(decimal_mark) > -1) {
				obj.value = leading_string;
			} else {
				obj.value = leading_string + decimal_mark;
			}
		} else if (isNaN(last_character)) {
			i = num.length-1;
			while (i >= 0) {
				temp_char = num.substring(i);
				if (!isNaN(temp_char) || (i == 0 && temp_char == "-")) {
					i = -1;
				} else {
					num = num.substring(0, i);
				}
				i--;
			}
			obj.value = num;
		} else {
			array_decimal_value = num.split(decimal_mark);
			decimal_value = b_numberFormat(b_numberUnformat(array_decimal_value[0]));
			if (array_decimal_value.length > 1) {
				decimal_value += decimal_mark + array_decimal_value[1];
			}
			obj.value = decimal_value;
		}
	}
}
function b_numberUnformat(num, allow_empty_string) {
		var decimal_mark = ".";
	var thousand_separator = ",";
	num = num.split(thousand_separator).join("");
	if (decimal_mark != ".") {
		num = num.split(decimal_mark).join(".");
	}
	if (num == "" || num == "." || num == "-" || num == "-.") {
		if (num == "" && allow_empty_string != null && allow_empty_string == true) {
			return "";
		} else {
			return 0;
		}
	}
	return num;
}
function extractKeyAndSequence(key) {
	var array_key = key.split("_");
	var key1 = "";
	var sequence1 = "";
	if (array_key.length > 0) {
		for (var i=0; i < array_key.length-1; i++) {
			key1 += array_key[i] + (i < array_key.length-2 ? "_" : "");
		}
	}
	if (array_key.length > 1) {
		sequence1 = array_key[array_key.length-1];
	}
	return { key:key1, sequence:sequence1 };
}
function b_addClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var class_name_exists = false;
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] == class_name) {
			class_name_exists = true;
		}
	}
	if (!class_name_exists) {
		obj.className += " " + class_name;
	}
}
function b_hasClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var class_name_exists = false;
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] == class_name) {
			class_name_exists = true;
		}
	}
	return class_name_exists;
}
function b_removeClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var new_classes = "";
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] != class_name) {
			new_classes = (new_classes != "" ? " " : "") + array_class_names[i];
		}
	}
	obj.className = new_classes;
}
function b_arrayToTable(obj, table_class, table_style, recursive_call, use_table_tag) {
	if (table_class == null) {
		table_class = "";
	}
	if (table_style == null) {
		table_style = "";
	}
	if (recursive_call == null) {
		recursive_call = false;
	}
	if (use_table_tag == null) {
		use_table_tag = false;
	}
	if (table_class == "" && use_table_tag) {
		table_class = "b_f_table_1";
	}
	var keys = Object.keys(obj);
	var str_tmp = "";
	if (use_table_tag) {
		str_tmp += " " +
			"
");
	b_center($("img#loading_image_anim_1"), $("div#login_container"));
}
function b_fullPageImage(target_element) {
	var parent_width = $(window).innerWidth();
	var parent_height = $(window).innerHeight();
	var parent_aspect_ratio = parent_width / parent_height;
	var element_width = target_element.innerWidth();
	var element_height = target_element.innerHeight();
	var element_aspect_ratio = element_width / element_height;
	var element_top = 0;
	var element_left = 0;
	if (element_aspect_ratio > parent_aspect_ratio) {
		element_height = parent_height;
		element_width = element_aspect_ratio * element_height;
		element_left = (parent_width - element_width) / 2;
	} else {
		element_width = parent_width;
		element_height = element_width / element_aspect_ratio;
		element_top = (parent_height - element_height) / 2;
	}
	target_element.css("width", element_width+"px");
	target_element.css("height", element_height+"px");
	target_element.css("left", element_left+"px");
	target_element.css("top", element_top+"px");
}
function b_keyEventEnter(evt) {
	if (evt.which == 13 || evt.keyCode == 13) {
        return true;
    }
	return false;
}
function b_keyEventEscape(evt) {
	if (evt.which == 27 || evt.keyCode == 27) {
        return true;
    }
	return false;
}
function b_numberFormat(num, decimal_places) {
	if (decimal_places == null) {
		decimal_places = "auto";
	}
		var decimal_mark = ".";
	var thousand_separator = ",";
	
	var num_str = num.toString();
	var decimal_value = "";
	var array_numstr = num_str.split(".");
	if (array_numstr.length > 1) {
		decimal_value = array_numstr[1];
	}
	num_str = array_numstr[0];
	
	var temp_str = "";
	var pos = 0;
	var len = num_str.length % 3;
	while (pos < num_str.length) {
		temp_str += num_str.substring(pos, pos+len);
		pos += len;
		len = 3;
		if (temp_str != "" && pos < num_str.length && temp_str != "-") {
			temp_str += thousand_separator;
		}
	}
	var decimal_intval;
	var max_decimal_places;
	var decimal_value_length;
	var maintained_position;
	var i;
	var temp_decimal_str;
	var add_number;
	var current_number;
	if (decimal_places == "auto") {
		decimal_intval = parseInt(decimal_value);
		maintained_position = -1;
		decimal_value_length = decimal_value.length;
		for (i=0; i < decimal_value_length; i++) {
			if (decimal_value.substring(i, i+1) != "0") {
				maintained_position = i;
			}
		}
		if (maintained_position > -1) {
			temp_str += decimal_mark + decimal_value.substring(0, maintained_position+1);
		}
	} else if (decimal_places.toString().indexOf("max") > -1) {
		max_decimal_places = decimal_places.substring(3);
		decimal_intval = parseInt(decimal_value);
		decimal_value_length = decimal_value.length;
		if (max_decimal_places > decimal_value_length) {
			pos = decimal_value_length-1;
		} else {
			pos = max_decimal_places-1;
		}
		temp_decimal_str = "";
		add_number = false;
		while (pos >= 0) {
			current_number = decimal_value.substring(pos, pos+1);
			if (!add_number && current_number != "0") {
				add_number = true;
			}
			if (add_number) {
				temp_decimal_str = current_number + temp_decimal_str;
			}
			pos--;
		}
		if (temp_decimal_str.length > 0) {
			temp_str += decimal_mark + temp_decimal_str;
		}
	} else if (decimal_places > 0) {
		temp_str += decimal_mark;
		decimal_value_length = decimal_value.length;
		for (i=0; i < decimal_places; i++) {
			if (decimal_value_length > i) {
				temp_str += decimal_value.substring(i, i+1);
			} else {
				temp_str += "0";
			}
		}
	}
	return temp_str;
}
function b_numberFormatForInput(obj) {
		var decimal_mark = ".";
	var thousand_separator = ",";
	var last_character = "";
	var leading_string = "";
	var decimal_value;
	var array_decimal_value;
	var temp_char;
	var i;
	var num = obj.value.toString();
	if (num.length > 0 && num != "-") {
		last_character = num.substring(num.length-1);
		if (num.length > 1) {
			leading_string = num.substring(0, num.length-1);
		}
		if (last_character == "," || last_character == ".") {
			i = leading_string.length-1;
			while (i >= 0) {
				temp_char = leading_string.substring(i);
				if (!isNaN(temp_char) || temp_char == "-") {
					i = -1;
				} else {
					leading_string = leading_string.substring(0, i);
				}
				i--;
			}
			if (leading_string.indexOf(decimal_mark) > -1) {
				obj.value = leading_string;
			} else {
				obj.value = leading_string + decimal_mark;
			}
		} else if (isNaN(last_character)) {
			i = num.length-1;
			while (i >= 0) {
				temp_char = num.substring(i);
				if (!isNaN(temp_char) || (i == 0 && temp_char == "-")) {
					i = -1;
				} else {
					num = num.substring(0, i);
				}
				i--;
			}
			obj.value = num;
		} else {
			array_decimal_value = num.split(decimal_mark);
			decimal_value = b_numberFormat(b_numberUnformat(array_decimal_value[0]));
			if (array_decimal_value.length > 1) {
				decimal_value += decimal_mark + array_decimal_value[1];
			}
			obj.value = decimal_value;
		}
	}
}
function b_numberUnformat(num, allow_empty_string) {
		var decimal_mark = ".";
	var thousand_separator = ",";
	num = num.split(thousand_separator).join("");
	if (decimal_mark != ".") {
		num = num.split(decimal_mark).join(".");
	}
	if (num == "" || num == "." || num == "-" || num == "-.") {
		if (num == "" && allow_empty_string != null && allow_empty_string == true) {
			return "";
		} else {
			return 0;
		}
	}
	return num;
}
function extractKeyAndSequence(key) {
	var array_key = key.split("_");
	var key1 = "";
	var sequence1 = "";
	if (array_key.length > 0) {
		for (var i=0; i < array_key.length-1; i++) {
			key1 += array_key[i] + (i < array_key.length-2 ? "_" : "");
		}
	}
	if (array_key.length > 1) {
		sequence1 = array_key[array_key.length-1];
	}
	return { key:key1, sequence:sequence1 };
}
function b_addClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var class_name_exists = false;
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] == class_name) {
			class_name_exists = true;
		}
	}
	if (!class_name_exists) {
		obj.className += " " + class_name;
	}
}
function b_hasClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var class_name_exists = false;
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] == class_name) {
			class_name_exists = true;
		}
	}
	return class_name_exists;
}
function b_removeClass(obj, class_name) {
	var array_class_names = obj.className.split(" ");
	var new_classes = "";
	for (var i=0; i < array_class_names.length; i++) {
		if (array_class_names[i] != class_name) {
			new_classes = (new_classes != "" ? " " : "") + array_class_names[i];
		}
	}
	obj.className = new_classes;
}
function b_arrayToTable(obj, table_class, table_style, recursive_call, use_table_tag) {
	if (table_class == null) {
		table_class = "";
	}
	if (table_style == null) {
		table_style = "";
	}
	if (recursive_call == null) {
		recursive_call = false;
	}
	if (use_table_tag == null) {
		use_table_tag = false;
	}
	if (table_class == "" && use_table_tag) {
		table_class = "b_f_table_1";
	}
	var keys = Object.keys(obj);
	var str_tmp = "";
	if (use_table_tag) {
		str_tmp += " " +
			"";
	}
	
	for (i=0; i < keys.length; i++) {
		if (use_table_tag) {
			str_tmp += "" +
				"| " +
				keys[i] +
				"" +
				" | " +
				obj[keys[i]] +
				"" +
				" | 
";
		} else {
			str_tmp += (str_tmp.length == 0 ? "" : "
\r\n") +
				keys[i] +
				" = " +
				obj[keys[i]];
		}
	}
	
	if (use_table_tag) {
		str_tmp += "
";
	}
	return str_tmp;
}
function b_sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}