﻿function ChangeJobnavigationFacets(showFacets, blockid) {
    
    var block = document.getElementById(blockid);

    // Hide all groups by default
    jqClix('ul li ul', block).each(function()
    {
        var item = this;
        var hasSelections = hasSelectedFacets(item);

        if (!hasSelections)
        {
            jqClix(item).hide();
        }
        else
        {
            switchOpenIcon(jqClix('a.closed', item.parentNode));
        }
    });

    // Hide limited facets
    if (showFacets < 0)
    {
        return;
    }

    jqClix('ul', block).not(jqClix('ul li ul', block)).each(function()
    {
        var list = this;
        var hasSelections = hasSelectedFacets(list);
        var hasGroupsAndSelections = hasFacetGroups(list) && hasSelections;

        if (hasGroupsAndSelections)
        {
            // Hide groups without selections
            jqClix('li.groupname', list).each(function()
            {
                var item = this;
                if (!hasSelectedFacets(item))
                {
                    jqClix(item).hide();
                }
            });

            jqClix('li.allfacets').hide();
            jqClix('li.lessfacets').hide();

            if (jqClix('li.groupname', list).length > 1)
            {
                jqClix('li.allgroups', list).show();
            }
        }
        else
        {
            if (hasSelections)
            {
                jqClix('li.facetaction', list).hide();
            }
            else
            {
                var liElements = jqClix('li', list).not(jqClix('li li', list));

                if (liElements.length <= (showFacets + 3))
                {
                    jqClix('li.facetaction', list).hide();
                }
                else
                {
                    liElements.slice(showFacets).hide();
                    jqClix('li.allfacets', list).show();
                }
            }
        }
    });
}

function hasFacetGroups(element)
{
    return jqClix('a.opensubitems', jqClix(element)).length > 0;
}

function hasSelectedFacets(element)
{
    return jqClix('a.selected', jqClix(element)).length > 0;
}

function isSelectedFacet(item)
{
    return jqClix('a.selected', item).length > 0;
}

function showAllGroups(e)
{
    jqClix('li.groupname', e.parentNode.parentNode).show(); // get the UL and hide
    jqClix(e.parentNode).hide(); // hide the LI
}

function ShowAllFacets(e)
{
    var parentList = e.parentNode.parentNode;

    jqClix('li', parentList)
        .not(jqClix('li li', parentList))
        .not(jqClix('li.facetaction', parentList))
        .show();

    jqClix('li.allfacets', parentList).hide();
    jqClix('li.lessfacets', parentList).show();
}

function HideAllFacets(e, showFacets)
{
    var parentList = e.parentNode.parentNode;

    jqClix('li', parentList)
        .not(jqClix('li li', parentList))
        .not(jqClix('li.facetaction', parentList))
        .slice(showFacets)
        .hide();

    jqClix('li.allfacets', parentList).show();
    jqClix('li.lessfacets', parentList).hide();
}

function openSubItems(element)
{
    switchOpenIcon(element);

    var listItem = element.parentNode;

    jqClix('ul', listItem).toggle();
}

function switchOpenIcon(aElement)
{
    var jqElement = jqClix(aElement);

    if (jqElement.hasClass('closed'))
    {
        jqElement.removeClass('closed');
        jqElement.addClass('opened');
    }
    else
    {
        jqElement.addClass('closed');
        jqElement.removeClass('opened');
    }
}