 /******************************************************************************
 * authors: Jan "Hlava" Hlavicka (avaloh@avaloh.cz)
 * created: 6.5.2008
 * last update: 7.2.2009
 * description: Table widget (javascript functions)
 * ***************************************************************************/


function ajaxTableSort(col, tableid, cb, maxpage) {
    var es = col.getElementsByTagName("div");
    col = es[0].getAttribute("id");
    var sort = es[1].innerHTML;
    if (sort.charCodeAt(0) == 8593) {
        sort = "dsc";
    } else {
        sort = "asc";
    }
    cols = 'title###@cid';
    var table = document.getElementById(tableid);
    ajaxProcess(table.parentNode, 'widgets/table/ajax.php', cb, col,
    sort,cols);

    refreshPager(tableid, maxpage);
}


function refreshPager(tableid, maxpage) {
    var pagerid = tableid + "_pager";
    var pager = document.getElementById(pagerid);

    if (!pager) return;
    var ps = pager.getElementsByTagName("p");

    var cn = (ps[1].getAttribute("className")) ? "className" : "class";

    for (var i = 1; (i<ps.length); i++) {
        if (i<=5) {
            ps[i].style.display="inline";
        } else {
            ps[i].style.display="none";
        }
        ps[i].setAttribute(cn,"pager-inactive");
    }
    ps[1].setAttribute(cn,"pager-active");
}


function ajaxTablePage(tableid, cb, page, hrefid, elm, maxpage) {
    var table = document.getElementById(tableid);
    var ths = table.getElementsByTagName("th");
    var div = null;
    var col = "";
    var sort = "";
    for (var i=0;i<ths.length;i++) {
        try {
            div = ths[i].getElementsByTagName('div');
            if (div[2].innerHTML) {
                col = div[1].getAttribute("id");
                sort = div[2].innerHTML;
                if (sort.charCodeAt(0) == 8593) {
                    sort = "asc";
                } else {
                    sort = "dsc";
                }
                break;
            }
        } catch (e) {
        }
    }

    var ps = elm.parentNode.getElementsByTagName("p");
    var start = page-2;
    var plusend = 0;

    if (start<1) {
        plusend = (-1*start)+1;
        start = 1;
    }
    var end = page+2+plusend;
    if(end>maxpage) {
        start -= (end-maxpage);
        end = maxpage;
    }

    if (start<1) start = 1;

    var cn = (ps[1].getAttribute("className")) ? "className" : "class";

    for (i=1; (i+1)<ps.length;i++) {
        if (i>=start && i<=end) {
            ps[i].style.display = "inline";
        } else {
            ps[i].style.display = "none";
        }
        if (i == page) {
            ps[i].setAttribute(cn,"pager-active");
        } else {
            ps[i].setAttribute(cn,"pager-inactive");
        }
    }
    if (col) ajaxProcess(table.parentNode, 'widgets/table/ajax.php',cb, col, sort, hrefid, page);
    else ajaxProcess(table.parentNode, 'widgets/table/ajax.php',cb,hrefid, page);
}


function ajaxTableCallback() {
    var argv = ajaxTableCallback.arguments;
    var argc = argv.length;

    if (argc < 3) {
        ajaxError();
        return;
    }

    var callback = argv[0];
    var tableid = argv[1];
    var cb = argv[2];
    var file = 'widgets/table/ajax.php';
    var table = document.getElementById(tableid).parentNode;
    var params = '';

    for (var i=3;i<argc;i++) {
        params = params + argv[i];
        if ((i+1) != argc) params = params + '+++';
    }
    ajaxProcess(table, file, cb, 'callbackaction', callback, params);
}
function tableChangeColor(tr, fix) {
    var cn;var old;
    cn = (tr.getAttribute("class")) ? "class" : "className";
    old = tr.getAttribute(cn);
    var strlen = old.length;
    if (old.substr((strlen-6),strlen) == 'select') return;
    cls = old + ' href';
    tr.setAttribute(cn, cls);
}
function tableChangeColorToDefault(tr) {
    var cn;var old;
    cn = (tr.getAttribute("class")) ? "class" : "className";
    old = tr.getAttribute(cn);
    var strlen = old.length;
    if (old.substr((strlen-6),strlen) == 'select') return;
    tr.setAttribute(cn, old.substr(0,(strlen-5)));
}
function tableChangeClass(id, cls) {
    var cn;
    var tb = document.getElementById(id);
    cn = (tb.getAttribute("class")) ? "class" : "className";
    var old = tb.getAttribute(cn);
    old += ' ' + cls;
    tb.setAttribute(cn, old);
}
function tableSetChecked(tr) {
  var cn; var old; var tmp;
  var isSelect = false;
  cn = (tr.getAttribute("class")) ? "class" : "className"
  old = tr.getAttribute(cn);
  old = old.substr(0,(old.length)-5);
  tmp = (tmp = tr.getAttribute(cn)).substr((tmp.length-6),6);
  if (tmp == 'select') {
      old = old.substr(0,(old.length)-2) + ' href';
      tr.setAttribute(cn, old);
  } else {
      isSelect = true;
      tr.setAttribute(cn, old + " select")
  }
  var chcks = tr.getElementsByTagName("input");
  if (!chcks) return;
  for (var i=0; i<chcks.length; i++) {
      if (chcks[i].getAttribute("type") == "checkbox") {
          if (isSelect) {
              chcks[i].checked = true;
          } else {
              chcks[i].checked = false;
          }
      }
  }
}
function tableSetCheckAll(tid) {
  var tb = document.getElementById(tid);
  var chcks = document.getElementsByTagName("input");
  var changeTo = false;
  var item;
  for (var i=0; i<chcks.length; i++) {
      if (i==0) {
          changeTo = chcks[i].checked;
          continue;
      }
      if (chcks[i].getAttribute("type") == "checkbox") {
        item=chcks[i];
        if (item.checked != changeTo) {
            tableSetChecked(item.parentNode.parentNode);
        }
      }
  }
}

