// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function clear_ftxt_srch()
{ document.forms[0]["ftxt_srch:string"].value = "";
}
function set_ftxt_srch(p_obj_id)
{ document.forms[0]["ftxt_srch:string"].value = p_obj_id;
}
function clear_fdate_srch()
{ document.forms[0]["fdate_frm_srch:string"].value = "";
  document.forms[0]["fdate_too_srch:string"].value = "";
}
function reset_fdate_srch()
{ var d = new Date();
  var tag = (("" + d.getDate()).length == 1 ? ("0" + d.getDate()) : ("" + d.getDate()));
  var mnt = (("" + (d.getMonth()+1)).length == 1 ? ("0" + (d.getMonth()+1)) : ("" + (d.getMonth()+1)));
  var jar = d.getFullYear();
  // wow, what is javascript? a language? nope! whoever designed this kind of a stuff???
  document.forms[0]["fdate_frm_srch:string"].value = tag + "." + mnt + "." + jar;
  document.forms[0]["fdate_too_srch:string"].value = "";
}
function reset_kat_srch()
{ document.forms[0]["kat_srch_cbox_head"].checked = true;
  invert_kat_srch_cbox_list();
}
function set_kat_srch(p_obj_id)
{ reset_kat_srch();
  for (var i=0; i < document.forms[0]["kat_srch_cbox_list:list"].length; i++)
    if (document.forms[0]["kat_srch_cbox_list:list"][i].value == p_obj_id)
    { document.forms[0]["kat_srch_cbox_list:list"][i].checked = true;
      set_kat_srch_cbox_list(document.forms[0]["kat_srch_cbox_list:list"][i]);
    }
}
function reset_reg_srch()
{ document.forms[0]["reg_srch_cbox_head"].checked = true;
  invert_reg_srch_cbox_list();
}
function set_reg_srch(p_obj_id)
{ reset_reg_srch();
  for (var i=0; i < document.forms[0]["reg_srch_cbox_list:list"].length; i++)
    if (document.forms[0]["reg_srch_cbox_list:list"][i].value == p_obj_id)
    { document.forms[0]["reg_srch_cbox_list:list"][i].checked = true;
      set_reg_srch_cbox_list(document.forms[0]["reg_srch_cbox_list:list"][i]);
    }
}
function reset_sgl_day_srch()
{ document.forms[0]["sgl_day_srch_cbox"].checked = false;
}
function reset_pager_size_srch()
{ document.forms[0]["pager_size_srch:int"].selectedIndex = 0;
}
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function dom_bullshit2array(p_obj)
{ var arr = new Array();
  if (p_obj != null)
  { if (p_obj.length != null)
      for (var i=0; i < p_obj.length; i++)
        arr[i] = p_obj[i];
    else
      arr[0] = p_obj;
  }
  return arr;
}
function invert_data_cbox_list()
{ var arr = dom_bullshit2array(document.forms[0]["data_cbox_list:list"]);
  for (var i=0; i < arr.length; i++)
    arr[i].checked = document.forms[0].data_cbox_list_head.checked;
}
function open_tmn_floater(p_obj, p_rdm)
{ var csv = '';
  var arr = dom_bullshit2array(document.forms[0]["data_cbox_list:list"]);
  for (var i=0; i < arr.length; i++)
  {  if (arr[i].checked)
    {  if ((csv != '') && (i > 0)) { csv = csv + ',' }
      csv = csv + arr[i].value;
    }
  }
  if (csv != '')
  { if (p_obj == "__PR_SHORT__")
      open_tmn_floater_win('tmn_floater_pr_short', csv, p_rdm);
    else if (p_obj == "__PR_DETAIL__")
      open_tmn_floater_win('tmn_floater_pr_detail', csv, p_rdm);
    else if (p_obj == "__CVS_EXP__")
      open_tmn_floater_win('tmn_floater_cvs_exp', csv, p_rdm);
  }
  else
    alert('Bitte treffen Sie zuvor eine Auswahl.');
}
function open_tmn_floater_win(p_url, p_tmn_id, p_rdm)
{ var newWindow = window.open(
    p_url + '?p_tmn_id=' + p_tmn_id + '&rdm=' + p_rdm,
    'tmn_floater',
    'left=50,top=50,width=800,height=600,toolbar=0,location=0,directories=0,status=0,menuBar=1,scrollBars=1,resizable=1');
  newWindow.focus();
}
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function controller_submit_srch(p_dir, p_query_id)
{ if (p_dir == "__NEW__")
  { document.forms[0]["g_query_id:int"].value = 0;
    document.forms[0]["g_query_page:int"].value = 0;
  }
  else
  { document.forms[0]["g_query_id:int"].value = p_query_id;
    if (p_dir == "__FWD__")
      document.forms[0]["g_query_page:int"].value = parseInt(document.forms[0]["g_query_page:int"].value) + 1;
    else if (p_dir == "__RWD__")
      document.forms[0]["g_query_page:int"].value = parseInt(document.forms[0]["g_query_page:int"].value) - 1;
  } 
  document.forms[0].submit();
}
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function show_dom_obj(p_type, p_id, p_top, p_left)
{ var obj = document.getElementById(p_id);
  if (p_type == "__DIV__")
  { obj.style.visibility = "visible";
    obj.style.display = "block";
    if (p_top != null) obj.style.top = p_top + "px";
    if (p_left != null) obj.style.left = p_left + "px";
  }
  else if (p_type == "__TR__")
  { obj.className = "tr_sel_visible";
  }
}
function hide_dom_obj(p_type, p_id)
{ var obj = document.getElementById(p_id);
  if (p_type == "__DIV__")
  { obj.style.visibility = "hidden";
    obj.style.display = "none";
  }
  else if (p_type == "__TR__")
  { obj.className = "tr_sel_hidden";
  }
}
// -------------------------------------------------------------------------------------------------
function flip_data_sheet_item_detail(p_type, p_id)
{ var obj = document.getElementById(p_id);
  if ((obj.style.visibility.length == 0) || (obj.style.visibility == "hidden"))
    show_dom_obj(p_type, p_id);
  else
    hide_dom_obj(p_type, p_id);
}
// -------------------------------------------------------------------------------------------------
function get_element_right(p_this)
{ var left = 0;
  var obj = p_this;
  var objWidth = obj.offsetWidth;
  while (obj != null) {
    left+= obj.offsetLeft;
    obj = obj.offsetParent;
  }
  return parseInt((left + objWidth));
}
function get_element_bottom(p_this)
{ var top = 0;
  var obj = p_this;
  var objHeight = obj.offsetHeight;
  while (obj != null) {
    top+= obj.offsetTop;
    obj = obj.offsetParent;
  }
  return parseInt((top + objHeight));
}
// -------------------------------------------------------------------------------------------------
function show_div_sel_reg_act(p_this)
{ hide_dom_obj('__DIV__', 'div_sel_kat_act');
  hideCalendarControl();
  var shifted_bottom = parseInt(get_element_bottom(p_this)) - 300;
  show_dom_obj('__DIV__', 'div_sel_reg_act', shifted_bottom, 150 /*get_element_right(p_this)*/);
}
function hide_div_sel_reg_act()
{ hide_dom_obj('__DIV__', 'div_sel_reg_act');
}
function show_div_sel_kat_act(p_this)
{ hide_dom_obj('__DIV__', 'div_sel_reg_act');
  hideCalendarControl();
  var shifted_bottom = parseInt(get_element_bottom(p_this)) - 300;
  show_dom_obj('__DIV__', 'div_sel_kat_act', shifted_bottom, 150 /*get_element_right(p_this)*/);
}
function hide_div_sel_kat_act()
{ hide_dom_obj('__DIV__', 'div_sel_kat_act');
}
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function invert_srch_cbox_list(p_name, p_id)
{ if (document.forms[0][p_name + "_head"].checked)
    for (var i=0; i < document.forms[0][p_name + "_list:list"].length; i++)
      document.forms[0][p_name + "_list:list"][i].checked = (!document.forms[0][p_name + "_head"].checked);
  else
    document.forms[0][p_name + "_head"].checked = true;
}
function set_srch_cbox_list(p_name, p_id, p_obj)
{ if (p_obj.checked && document.forms[0][p_name + "_head"].checked)
    document.forms[0][p_name + "_head"].checked = false;
  if (!p_obj.checked)
  { var checked_any = false;
    for (var i=0; i < document.forms[0][p_name + "_list:list"].length; i++)
      if (document.forms[0][p_name + "_list:list"][i].checked)
        checked_any = true;
    if (!checked_any)
      document.forms[0][p_name + "_head"].checked = true;
  }
}
function flip_srch_row_display(p_name, p_id)
{ for (var i=0; i < document.forms[0][p_name + "_list:list"].length; i++)
    if (document.forms[0][p_name + "_list:list"][i].checked)
      show_dom_obj("__TR__", p_id + "_" + document.forms[0][p_name + "_list:list"][i].value);
    else
      hide_dom_obj("__TR__", p_id + "_" + document.forms[0][p_name + "_list:list"][i].value);
  if (document.forms[0][p_name + "_head"].checked)
    show_dom_obj("__TR__", p_id + "_head");
  else
    hide_dom_obj("__TR__", p_id + "_head");
}
// -------------------------------------------------------------------------------------------------
function invert_reg_srch_cbox_list()
{ invert_srch_cbox_list("reg_srch_cbox", "tr_sel_reg");
  flip_srch_row_display("reg_srch_cbox", "tr_sel_reg")
}
function set_reg_srch_cbox_list(p_obj)
{ set_srch_cbox_list("reg_srch_cbox", "tr_sel_reg", p_obj)
  flip_srch_row_display("reg_srch_cbox", "tr_sel_reg")
}
function invert_kat_srch_cbox_list()
{ invert_srch_cbox_list("kat_srch_cbox", "tr_sel_kat");
  flip_srch_row_display("kat_srch_cbox", "tr_sel_kat")
}
function set_kat_srch_cbox_list(p_obj)
{ set_srch_cbox_list("kat_srch_cbox", "tr_sel_kat", p_obj)
  flip_srch_row_display("kat_srch_cbox", "tr_sel_kat")
}
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
function str2date(p_str)
{ if ((p_str == null) || (p_str.length == 0)) return null;
  var result = new Date(0);
  var temp = p_str.split(".");
  // 1. learned that stupid js counts months from 0 to 11
  //  -> note the -1 below
  // 2. learned that stupid js parses int-strings prefixed with 0 to an octal number
  //  -> note the explicit number base parameter below
  result.setFullYear(parseInt(temp[2], 10), parseInt(temp[1], 10)-1, parseInt(temp[0], 10));
  result.setHours(0);
  return result;
}
function form_fields_date_chk(chk_field_1, chk_field_2, chk_oper)
{ var ts_frm = str2date(document.forms[0][chk_field_1].value);
  var ts_too = str2date(document.forms[0][chk_field_2].value);
  if ((ts_frm != null) && (ts_too != null))
  { if (chk_oper == ">=")
    { if (ts_frm.valueOf() >= ts_too.valueOf())
      { alert(unescape("Das angegebene Enddatum ist kleiner / gleich dem Startdatum."));
        return false;
      }
    }
    if (chk_oper == ">")
    { if (ts_frm.valueOf() > ts_too.valueOf())
      { alert(unescape("Das angegebene Enddatum ist kleiner dem Startdatum."));
        return false;
      }
    }
  }
  return true;
}

