//-----
function open_window(s_url, s_name, s_prop) {
  if (!(s_prop)) s_prop = 'scrollbars=yes,resizable=yes,width=400,height=500'
  window.open(s_url, s_name, s_prop)
}
//-----
function copy_to_parent(s_elm, s_val) {
  eval('window.opener.frm.' + s_elm + ".value = '" + s_val + "'");
}
//-----
function confirm_action(vs_dialog, vs_href) {
  if (confirm(vs_dialog)) {
    document.location.href = vs_href;
  }
}
// return if is blank
function is_not_blank(o_ctl, s_msg) {
	if ("" == trim_str(o_ctl.value)) {
    return show_err(s_msg, o_ctl, true, true);
  }
  return true;
}
//-----
function is_valid_date(o_ctl, s_msg) {
  var b_temp =
    is_num(o_ctl[0], s_msg + ". Please enter numeric value between 1 and 31", 1, 31) &&
    is_selected(o_ctl[1], s_msg + ". Please select month") &&
    is_not_blank(o_ctl[2], s_msg + ". Please enter the year");
  if (!b_temp) return false;
  return true;
}

// return if is selected
function is_selected(o_ctl, s_msg) {
	if (o_ctl.selectedIndex == 0) {
    return show_err(s_msg, o_ctl, true, false);
  }
  return true;
}

// return if is numeric
function is_num(o_ctl, s_msg, n_low, n_high)
{
	if ("" != trim_str(o_ctl.value)) {
    if (!(is_int_in_range(o_ctl.value, n_low, n_high))) {
      return show_err(s_msg, o_ctl, true, true);
    }
  } else {
    return show_err(s_msg, o_ctl, true, true);
  }
  return true;
}

// trim string
function trim_str(s)
{
	var slen = ("" + s).length;
	for (var i = 0; i < slen && s.charAt(i) == " "; i++);
	for (var n = slen - 1; n > i && s.charAt(n) == " "; n--);
	return s.substring(i, n+1);
}

// string length
function is_str_in_range(s, lowBound, hiBound)
{
	var slen = ("" + s).length;
	return ((1 * slen >= 1* lowbound) && (1 * slen <= 1 * hiBound));
}

// integer in range
function is_int_in_range(u_var, n_lbound, n_hbound)
{
	var u_temp = "" + u_var, u_varInt = parseInt(u_var, 10);
	return (!isNaN(u_varInt) && ("" + u_varInt == u_temp) &&
    (1 * u_varInt >= 1 * n_lbound) && (1 * u_varInt <= 1 * n_hbound));
}
/*function is_int_in_range(chk, lowBound, hiBound)
{
	var chkStr = "" + chk, chkInt = parseInt(chk, 10);
	return (!isNaN(chkInt) && ("" + chkInt == chkStr) && 
    (1 * chkInt >= 1 * lowBound) && (1 * chkInt <= 1 * hiBound));
}*/

// floating in range
function is_float_in_range(chk, lowBound)
{
	var chkStr = "" + chk
	return (!isNaN(parseFloat(chk)) && ("" + parseFloat(chk) == chkStr) && (1 * parseFloat(chk) >= 1 * lowBound));
}

// cek banyak email dibatasi ';'
function is_valid_email(field) {
  var b_valid = true;
  chunk = field.split(";");
  for (var j=0; j<chunk.length; j++) {
    chunk[j] = trim_str(chunk[j]);
    b_valid = b_valid && valid_email(chunk[j]);
  }
  return b_valid;
}

// valid email
function valid_email(strchkEmail)
{
	var nullChar = 0
  var normChar = 1
  var dotChar = 2
  var atChar = 3
  var dashChar = 4
  var aChar
  var currentCharType = nullChar
  var atExist = false
  var dotExist = false
  var sLen = strchkEmail.length;

	if (sLen < 7) return false;

	strchkEmail = strchkEmail.toLowerCase();

	for (var i = 0; i < sLen; i++) {
		aChar = strchkEmail.charAt(i);
		if (aChar == "@") {
			if (atExist || (i < 1) || (i > sLen - 6) || (currentCharType == dotChar)) return false;
			atExist = true;
			currentCharType = atChar;
		}
		else if (aChar == ".") {
			if ((i > sLen - 3) || (currentCharType != normChar)) return false;
			dotExist = true;
			currentCharType = dotChar;
		}
		else if ((aChar == "_") || (aChar == "-")) {
			if (i > sLen - 5 || currentCharType != normChar) return false;
			currentCharType = dashChar;
		}
		else {
			if (("abcdefghijklmnopqrstuvwxyz01234567890").indexOf(aChar) == -1) return false;
			currentCharType = normChar;
		}
	}
	return (dotExist && atExist);
}

// minimal string length
function ValidLength(item, len) {
   return (item.length >= len);
} 

// show error
function error(s_err, o_elm, b_focus, b_select) {
   if (errfound) return;
   alert(s_err);
   if (b_focus) o_elm.focus();
	 if (b_select) o_elm.select();
   errfound = true;
}


//Format a number with grouped thousands
//With 2 decimal places.

function format(u_var) {
  //MEMFORMAT TOTAL HARGA UTK 1 ITEM
  u_var = String(u_var);
  len = u_var.length;
  b_dot = false;
  for (var i = 0; i < len; i++) {
		s_char = u_var.charAt(i);
		if (s_char == ".") {
			b_dot = true;
			n_current = i;
      break;
		}
  }
  
  
  chunkitem = u_var.split(".");

  //MEMFORMAT BAGIAN DESIMAL
  if (b_dot == true) {
    //chunkitem = u_var.split(".");
    if (chunkitem[1].length == 1) {
      s_dec = chunkitem[1] + "0"; 
    } else if (chunkitem[1].length == 2) {
      s_dec = chunkitem[1];
    } else if (chunkitem[1].length > 2) {
      with (Math) {
        s_dec = round(parseInt(chunkitem[1])/(pow(10,(chunkitem[1].length-2))));
      }
    }
  } else {
    s_dec = "00";
  }


  //MEMFORMAT BAGIAN BIL. BULAT
  s_round = "";
  x = parseInt(chunkitem[0].length/3);
  y = chunkitem[0].length % 3;

  if (y != 0) {
    s_round = s_round + chunkitem[0].substring(0,y);
  }

  for (i=0; i<x; i++) {
    if ((y==0) && (i==0)) {
      s_round = s_round + chunkitem[0].substring((y+i*3),(3+y+i*3));
    } else {
      s_round = s_round + "," + chunkitem[0].substring((y+i*3),(3+y+i*3));
    }
  }
  
  s_wanted = s_round + "." + s_dec;

  return s_wanted;
}

function valid_userpassword(s_string) {
  var n_len = s_string.length;
  for (var i=0; i<n_len; i++) {
    s_char = s_string.charAt(i);
    if (("_abcdefghijklmnopqrstuvwxyz01234567890").indexOf(s_char) == -1) return false;
  }
  return true;
}