var sSELECTEDSERVER='';
var sACTIVESERVERTAB='cronlogs';
var bSETADDRESSBAR=false;


/**
 * get query parameters from url as object
 * @returns {object}
 */
function getQueryParams() {
    qs = document.location.search.split('+').join(' ');
 
    var params = {},
            tokens,
            re = /[?&]?([^=]+)=([^&]*)/g;
 
    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
    }
 
    return params;
}

/**
 * make an ajax-request and put response content into given div id
 * @param {string} id  id of the div to be filled
 * @returns {undefined}
 */
function getPageItem(id, sData) {
	// $('#'+id).html('reading ...');
        if(!$('#'+id).hasClass('active')){
            $('#errorlog').html('#'+id+' is not active') ;
            return false;
        }
        var phpscript='get.php';
        $('#'+id).css('opacity', '0.2');
        
        if(!sData){
            sData='item='+id+'&server='+sSELECTEDSERVER;
        }
        setAdressbar();
	jQuery.ajax({
		url: phpscript,
		data: sData,
		type: "GET",
		success:function(data){
                    $('#'+id).css('opacity', '1');
                    $('#'+id).html(data);
		},
		error:function(){
                    $('#'+id).css('opacity', false);
                    $('#'+id).html('Failed :-/');
                    $('#errorlog').html(
                        $('#errorlog').html('AJAX error: <a href="'+phpscript+'?' + sData+'">'+phpscript+'?' + sData+'</a>')
                    );
		}
	});
}

/**
 * refresh content with ajax requests
 * @returns {undefined}
 */
function refreshPage(){
    getPageItem('selectserver');
    getPageItem(sACTIVESERVERTAB);
}

/**
 * manipulate url in the browser address bar
 * 
 * @returns {undefined}
 */
function setAdressbar() {
    // console.log("--- setAdressbar()"); console.log(aViewFilters);
    // ?server=neon&tab=graph&q=backup
    if(!bSETADDRESSBAR){
        return false;
    }
    var url = '?'
        + 'server=' + sSELECTEDSERVER
        + '&tab=' + sACTIVESERVERTAB
        + '&q=' // + $('#datatable1_filter label input').val()+$('#datatable2_filter label input').val()
        ;
    window.history.pushState('dummy', 'Title', url);
}
/**
 * set server (show its navigation)
 * this action is used after clicking a servername in the navigation
 * 
 * @param {string} sServer
 * @returns {undefined}
 */
function setServer(sServer){
    if(!sServer){
        return false;
    }
    sSELECTEDSERVER=sServer;
    $('#lblServername').html('<i class="far fa-hdd"></i> '+sSELECTEDSERVER);
    getPageItem(sACTIVESERVERTAB);
}

/**
 * onclick callback for tabs crontable, crontabs, graph
 * @param {object} oLink  clicked link
 * @returns {undefined}
 */
function setTab(oLink){
    sTabid=$(oLink).attr('href').replace(/^#/, '');
    sACTIVESERVERTAB=sTabid;

    $('nav.tabs a').each(function(){
        $(this).removeClass('active');
    });
    $(oLink).addClass('active');
    $('#tabcontent div').each(function(){
        $(this).removeClass('active');
    });
    $('#'+sTabid).addClass('active');

    setServer(sSELECTEDSERVER);
}

function showFile(sLogfile){
    getPageItem(sACTIVESERVERTAB, 'item=showlog&logfile='+sLogfile);
}
function showFileBack(){
    getPageItem(sACTIVESERVERTAB);
}

function updateFilterFields(q){
    if($('#datatable1_filter label input')){
        $('#datatable1_filter label input').val(q); 
        $('#datatable1').dataTable().fnFilter(q);
        // $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
    }
    if($('#datatable2_filter label input')){
        $('#datatable2_filter label input').val(q); 
        $('#datatable2').dataTable().fnFilter(q);
        // $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
    }
}


// ----------------------------------------------------------------------
// MAIN
// ----------------------------------------------------------------------

$(document).ready( function () { 

    // draw navigation with servers

    // check query params and set filter
    // ?server=neon&tab=crontable&q=123

    var oQuery=getQueryParams();
    var sServer=oQuery.server ? oQuery.server : 'ALL';
    var q=oQuery.q            ? oQuery.q      : '';
    var sTab=oQuery.tab       ? oQuery.tab    : '';

    setServer(sServer);
    getPageItem('selectserver');

    if(sTab){
        var oLink=$('a[href="#'+sTab+'"]').first();
        setTab(oLink);
    }
    console.log('suchfield ' + q);
    if (q) {
        // window.setTimeout("$('#datatable1_filter label input').val('"+q+"'); $('#datatable1').dataTable().fnFilter('"+q+"')" , 500);
        window.setTimeout("updateFilterFields('"+q+"');" , 500);
    }
    bSETADDRESSBAR=true;
    // window.setInterval('refreshPage()', 60000);
});