﻿function ChangeJobnavigationFacets(showFacets, blockid) {
    if (showFacets > 0) {
        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();
                jqClix('li.allgroups').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');
    }
}
