var pq_table_fullStat = false;
var pq_table_doEven = true;

function pq_table_getOverall() {

    pq_loading(true);

    var overall = 0;

    if (pq_table_fullStat) {
        var stat = new Array();
        $$('#pq_table .tableStat').each( function(k) {
            var field = k.readAttribute('field');
            stat.push(field);
            $('table_stat_'+field).innerHTML = 0;
        });
    }

    $$('#tableBody .tableData').each( function(k) {
        if (k.getStyle('display')!='none') {
            overall++;

            if (pq_table_fullStat) {
                stat.each( function(s) {
                    $('table_stat_'+s).innerHTML = parseInt($('table_stat_'+s).innerHTML) + parseInt(k.select('.table_'+s)[0].innerHTML);
                });
            }

            if (pq_table_doEven) {
                if (overall % 2) k.addClassName('even');
                else k.removeClassName('even');
            }
        }
    });
    
    $('tableOverall').innerHTML = overall;

    pq_loading(false);
}

function pq_table_startFullStat() {
    if ($('pq_table_statRow') == undefined) return;

    pq_table_fullStat = true;

    $('pq_table_statRow').show();
    $('pq_table_startFullStat').hide();
}

function pq_table_even() {
    if (!pq_table_doEven) {
        return;
    }

    var overall = 0;

    $$('#tableBody .tableData').each( function(k) {
        if (k.getStyle('display')!='none') {
            overall++;

            if (overall % 2) k.addClassName('even');
            else k.removeClassName('even');
        }
    });
}

function pq_table_searchEach()
{
    pq_loading(true);

    //hideClass('tableData');
    $$('#tableBody .tableData').each( function(k) {
        var display = true;
        $(k.childElements()).each( function(e) {
            if ($('table_input_'+e.readAttribute('field')).value != '' &&
                e.innerHTML.toLowerCase().search($('table_input_'+e.readAttribute('field')).value.toLowerCase()) == -1) {
                display = false;
            }
        });
        if (display) k.show();
        else k.hide();
    });

    pq_loading(false);
}

var pq_tableSort_field;
var pq_tableSort_desc = true;

function pq_table_orderBy(field)
{
    //hideClass('tableData');

    pq_loading(true);

    if (pq_tableSort_field == field && !pq_tableSort_desc) {
        pq_tableSort_desc = true;
    }
    else {
        pq_tableSort_desc = false;
    }
    pq_tableSort_field = field;

    var data = $$('.tableData');
    data.sort(pq_table_sortFunction);
    if (pq_tableSort_desc) data.reverse();

    var out = '';
    data.each( function(e) {
       out += getOuterHTML(e)+"\n";
    });

    $('tableBody').innerHTML = out;

    pq_table_even();
    pq_loading(false);
}

alerttime = 5;

function pq_table_sortFunction(a,b) {

	var e = a.getElementsByClassName(pq_tableSort_field)[0];
	if (e.readAttribute('orderwith') != null && e.readAttribute('orderwith').indexOf('###') == -1)
            a = e.readAttribute('orderwith');
	else
            a = e.innerHTML;

	var f = b.getElementsByClassName(pq_tableSort_field)[0];
	if (f.readAttribute('orderwith') != null && f.readAttribute('orderwith').indexOf('###') == -1)
            b = f.readAttribute('orderwith');
	else
            b = f.innerHTML;


        a = parseInt(a);
        b = parseInt(b);

        //if (alerttime > 0) {
        //    alert(a+' '+b);
        //    alerttime--;
        //}

	return a > b ? 1 : a < b ? -1 : 0;
}

function pq_table_hide(fields) {
    fields = fields.split(',');
    fields.each(function(e) {
        $('check_'+e).checked = false;
        $$('.view_'+e).each(function(r){r.hide()});
    });
}
