//-----
function getURL(url,query) {
	window.location = url+'?'+query;
}

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;
}

// valid password
function valid_userpassword(s_string) {
  s_string = s_string.toLowerCase();
  var n_len = s_string.length;
  b_value = true;
  for (var n_loop=0; n_loop<n_len; n_loop++) {
    s_char = s_string.charAt(n_loop);
    if (("_abcdefghijklmnopqrstuvwxyz0123456789").indexOf(s_char) == -1) {
		b_value = false;
		break;
	}
  }
  return b_value;
}

function valid_code(s_string) {
  s_string = s_string.toLowerCase();
  var n_len = s_string.length;
  b_value = true;
  for (var n_loop=0; n_loop<n_len; n_loop++) {
    s_char = s_string.charAt(n_loop);
    if (("_abcdefghijklmnopqrstuvwxyz0123456789- ").indexOf(s_char) == -1) {
		b_value = false;
		break;
	}
  }
  return b_value;
}

function checkDate(d, m, y) {
  	var myDayStr = d.value;
	var myMonthStr = m.value;
	var myYearStr = y.value;
	var myDateStr = myDayStr + ' ' + myMonthStr + ' ' + myYearStr;

	var myDate = new Date( myDateStr );

	var myDate_string = myDate.toGMTString();

	var myDate_array = myDate_string.split( ' ' );
	if ( myDate_array[2] != myMonthStr ) {
	  alert( 'I\'m sorry, but "' + myDateStr + '" is NOT a valid date.' );
	  return false;
	}
}
/***********************************************
* Highlight Table Cells Script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* Visit http://www.dynamicDrive.com for hundreds of DHTML scripts
* This notice must stay intact for legal use
***********************************************/

//Specify highlight behavior. "TD" to highlight table cells, "TR" to highlight the entire row:
var highlightbehavior="TR"

var ns6=document.getElementById&&!document.all
var ie=document.all

function changeto(e,highlightcolor){
	source=ie? event.srcElement : e.target
	if (source.tagName=="TABLE")
		return

	while(source.tagName!=highlightbehavior && source.tagName!="HTML")
		source=ns6? source.parentNode : source.parentElement

	if (source.style.backgroundColor!=highlightcolor&&source.id!="ignore")
		source.style.backgroundColor=highlightcolor
}

function contains_ns6(master, slave) { //check if slave is contained by master
	while (slave.parentNode)
		if ((slave = slave.parentNode) == master) return true;

	return false;
}

function changeback(e,originalcolor){
	if (ie&&(event.fromElement.contains(event.toElement)||source.contains(event.toElement)||source.id=="ignore")||source.tagName=="TABLE")
		return
	else if (ns6&&(contains_ns6(source, e.relatedTarget)||source.id=="ignore"))
		return

	if (ie&&event.toElement!=source||ns6&&e.relatedTarget!=source)
		source.style.backgroundColor=originalcolor
}