﻿function Common_BrowseApplication_Register(context) {
    var wrapper = $('#' + context.wrapperId);

    $('.table-header-column', wrapper).click(
        function()
        {
            if ($('a', this).css('display') != 'none')
            {
                $('a', this).click();

                if ($('a', this).hasClass('sort-ascending'))
                    $('a', this).removeClass().addClass('internal-link sort-descending');
                else
                    $('a', this).removeClass().addClass('internal-link sort-ascending');
            }
        }
    );

    $('.table-header-column a', wrapper).click(
        function(e)
        {
            if (e.stopPropagation)
                e.stopPropagation();
            else
                e.cancelBubble = true;

            if (e.preventDefault)
                e.preventDefault();
            else
                e.returnValue = false;

            return false;
        }
    );

    var $browseContainer = $('.table-list', wrapper).eq(0);
    var $tableRows = $('tr', $browseContainer);
    var maxRowWidth = 0;
    
    for (var i = 0; i < $tableRows.length; i++)
    {
        if (maxRowWidth < $tableRows.eq(i).width())
            maxRowWidth = $tableRows.eq(i).width();
    }
    
    if (maxRowWidth > $browseContainer.width())
        $browseContainer.attr({ 'style': 'overflow: scroll;' });

    $('#searchText', wrapper).keyup(function(e) {
        context.parameter.lastKeyCode = e.keyCode;

        if (context.parameter.timeout) 
            clearTimeout(context.parameter.timeout);

        context.parameter.timeout = setTimeout(function() { Common_BrowseApplication_Search(context); }, 500);

        if (context.parameter.lastKeyCode > 8 && context.parameter.lastKeyCode < 46)
            return;
    });
}

function Common_BrowseApplication_Search(context) {
    var searchText = $('#searchText', $('#' + context.parameter.parentContainerId)).val();
    if (searchText == '')
        context.parameter.pageIndex = 0;

    var postData = 'searchtext:' + encodeURIComponent(searchText) + ',pageindex:' + context.parameter.pageIndex;
    
    if ($('.loading', $('#' + context.parameter.parentContainerId)).length < 1)
        $('.table-list tbody', $('#' + context.parameter.parentContainerId)).eq(0).html(context.parameter.loadingMessage);
    window.setTimeout(new Function('window.' + context.parameter.delayedContentId + '.Reload("' + postData + '")'), 100);
}

function Common_BrowseApplication_ClearSearch(context) {
    if ($('#searchText', $('#' + context.parameter.parentContainerId)).val() == context.parameter.filterText) {
        context.parameter.pageIndex = 0;
        $('#searchText', $('#' + context.parameter.parentContainerId)).val('');
    }
}

function Common_BrowseApplication_Sort(context) {
    $('#searchText', $('#' + context.parameter.parentContainerId)).val(context.parameter.filterText);

    var postData = 'sortby:' + encodeURIComponent(context.parameter.sortBy) + ',sortorder:' + encodeURIComponent(context.parameter.sortOrder) + ',pageindex:' + context.parameter.pageIndex + ',reversesort:' + context.parameter.reverseSortOrder;

    if ($('.loading', $('#' + context.parameter.parentContainerId)).length < 1)
        $('.table-list tbody', $('#' + context.parameter.parentContainerId)).eq(0).html(context.parameter.loadingMessage);
    window.setTimeout(new Function('window.' + context.parameter.delayedContentId + '.Reload("' + postData + '")'), 100);
}

function Common_BrowseApplication_PageNext(context) {
    var searchText = $('#searchText', $('#' + context.parameter.parentContainerId)).val();
    if (searchText == context.parameter.filterText || searchText == '') {
        context.parameter.pageIndex += 1;
        Common_BrowseApplication_Sort(context);
    }
    else {
        context.parameter.pageIndex += 1;
        Common_BrowseApplication_Search(context);
    }
}

function Common_BrowseApplication_PagePrevious(context) {
    var searchText = $('#searchText', $('#' + context.parameter.parentContainerId)).val();
    if (searchText == context.parameter.filterText || searchText == '') {
        context.parameter.pageIndex -= 1;
        Common_BrowseApplication_Sort(context);
    }
    else {
        context.parameter.pageIndex -= 1;
        Common_BrowseApplication_Search(context);
    }

    if (context.parameter.pageIndex == -1)
        context.parameter.pageIndex = 0;
}