// return if is blank
function is_not_blank(o_ctl, s_name) {
	if ("" == trim_str(o_ctl.value)) {
    return show_err(s_name + ' should be filled.', o_ctl, true, true);
  }
  return true;
}

// if is valid email
function is_valid_email(o_ctl) {
  if ((trim_str(o_ctl.value) != "") && (!(valid_email(o_ctl.value))))
  {
    //return false;
    return show_err('The email is not valid.', o_ctl, true, true);
  }
  return true;
}

// trim string
function trim_str(s)
{
	var n_len = ("" + s).length;
	for (var i = 0; i < n_len && s.charAt(i) == " "; i++);
	for (var n = n_len - 1; n > i && s.charAt(n) == " "; n--);
	return s.substring(i, n+1);
}

// valid email
function valid_email(u_var)
{
	var n_null = 0
  var n_norm = 1
  var n_dot = 2
  var n_at = 3
  var n_dash = 4
  var s_char
  var n_current = n_null
  var b_at = false
  var b_dot = false
  var n_len = u_var.length;

	if (n_len < 7) return false;

	u_var = u_var.toLowerCase();

	for (var i = 0; i < n_len; i++) {
		s_char = u_var.charAt(i);
		if (s_char == "@") {
			if (b_at || (i < 1) || (i > n_len - 6) || (n_current == n_dot)) return false;
			b_at = true;
			n_current = n_at;
		}
		else if (s_char == ".") {
			if ((i > n_len - 3) || (n_current != n_norm)) return false;
			b_dot = true;
			n_current = n_dot;
		}
		else if ((s_char == "_") || (s_char == "-")) {
			if (i > n_len - 5 || n_current != n_norm) return false;
			n_current = n_dash;
		}
		else {
			if (("abcdefghijklmnopqrstuvwxyz01234567890").indexOf(s_char) == -1) return false;
			n_current = n_norm;
		}
	}
	return (b_dot && b_at);
}

// show error
function show_err(s_err, o_elm, b_focus, b_select)
{
	if (b_focus) o_elm.focus();
	if (b_select) o_elm.select();
	alert(s_err);
	return false;
}
