
/**
 * doSort
 */
function doSort(frm, fieldname) {
  if ( document.forms[frm].elements['orderby'].value == fieldname ) {
    document.forms[frm].elements['orderby'].value = fieldname;
    if ( document.forms[frm].elements['orderdirection'].value == 'asc' ) document.forms[frm].elements['orderdirection'].value = 'desc';
    else document.forms[frm].elements['orderdirection'].value = 'asc';
  }
  else {
    document.forms[frm].elements['orderby'].value = fieldname;
    document.forms[frm].elements['orderdirection'].value = 'asc';
  }

  gotoPage(frm, 1);
}

/**
 * gotoPage
 */
function gotoPage(frm, page) {
  document.forms[frm].elements['page'].value = page;
  document.forms[frm].submit();
}

/**
 * confirmDelete
 */
function confirmDelete(frm, delete_uri, s, s2) {
  c = cbCheckedCount(frm);
  if ( c > 0 ) {
    if ( confirm(s.replace("%js_count", c)) ) {
      document.forms[frm].action = delete_uri;
      document.forms[frm].submit();
    }
  }
  else alert(s2);
}

/* --- Checkboxes */

/**
 * cbInitHighlight
 */
function cbInitHighlight(frm) {
  var len = document.forms[frm].elements.length;
  for ( var i = 0; i < len; ++i ) {
    var e = document.forms[frm].elements[i];
    if ( e.name == 'cb_remove_id[]' && e.checked ) rowHighlight(e);
  }
  if ( document.forms[frm].elements['cb_toggleAll'] ) document.forms[frm].elements['cb_toggleAll'].checked = cbAllChecked(frm);
}

/**
 * cbToggle
 */
function cbToggle(frm, e) {
  if ( e.checked ) {
    rowHighlight(e);
    if ( document.forms[frm].elements['cb_toggleAll'] ) document.forms[frm].elements['cb_toggleAll'].checked = cbAllChecked(frm);
  }
  else {
    rowUnhighlight(e);
    if ( document.forms[frm].elements['cb_toggleAll'] ) document.forms[frm].elements['cb_toggleAll'].checked = false;
  }
}

/**
 * cbToggleAll
 */
function cbToggleAll(frm, e) {
  if ( e.checked ) cbCheckAll(frm);
  else cbClearAll(frm);
}

/**
 * cbCheckAll
 */
function cbCheckAll(frm) {
  var len = document.forms[frm].elements.length;
  for ( var i = 0; i < len; ++i ) {
    var e = document.forms[frm].elements[i];
    if ( e.name == 'cb_remove_id[]' ) {
      e.checked = true;
      rowHighlight(e);
    }
  }
  document.forms[frm].elements['cb_toggleAll'].checked = true;
}

/**
 * cbClearAll
 */
function cbClearAll(frm) {
  var len = document.forms[frm].elements.length;
  for ( var i = 0; i < len; ++i ) {
    var e = document.forms[frm].elements[i];
    if ( e.name == 'cb_remove_id[]' ) {
      e.checked = false;
      rowUnhighlight(e);
    }
  }
  document.forms[frm].elements['cb_toggleAll'].checked = false;
}

/**
 * cbAllChecked
 */
function cbAllChecked(frm) {
  if ( cbCheckedCount(frm) == 0 ) return false;
  var len = document.forms[frm].elements.length;
  for ( var i = 0; i < len; ++i ) {
    if ( document.forms[frm].elements[i].name == 'cb_remove_id[]' && !document.forms[frm].elements[i].checked ) return false;
  }
  return true;
}

/**
 * cbCheckedCount
 */
function cbCheckedCount(frm) {
  c = 0;
  var len = document.forms[frm].elements.length;
  for ( var i = 0; i < len; ++i ) {
    if ( document.forms[frm].elements[i].name == 'cb_remove_id[]' && document.forms[frm].elements[i].checked ) c++;
  }
  return c;
}



/* --- Row highlight */

/**
 * rowHighlight
 */
function rowHighlight(e) {
 var r = null;
 if ( e.parentNode && e.parentNode.parentNode ) r = e.parentNode.parentNode;
 else if (e.parentElement && e.parentElement.parentElement ) r = e.parentElement.parentElement;
 if ( r && r.className == 'odd' ) r.className = 'odd_hl';
 else if ( r && r.className == 'even' ) r.className = 'even_hl';
 else if ( r && r.className == 'edited' ) r.className = 'edited_hl';
}

/**
 * rowUnhighlight
 */
function rowUnhighlight(e) {
  var r = null;
  if( e.parentNode && e.parentNode.parentNode ) r = e.parentNode.parentNode;
  else if ( e.parentElement && e.parentElement.parentElement ) r = e.parentElement.parentElement;
  if ( r && r.className == 'odd_hl' ) r.className = 'odd';
  else if ( r && r.className == 'even_hl' ) r.className = 'even';
  else if ( r && r.className == 'edited_hl' ) r.className = 'edited';
}
