﻿/* 
    using the quicksand jquery plugin for fancy animated filtering on employee list
    by balazs.suhajda@valtech.dk
*/
var sbv = sbv || {};
sbv.quicksand = (function($) {
    //	config
    var listSelector = '.filtering-employee-list',
		navSelector = '#employee-navigation',
		duration = 750;

    var $cont,
		emps;

    var init = function() {
        emps = $(listSelector).children();
        //	create clones for quicksanding
        emps = emps.clone();
        $(navSelector).find('a').click(filter);
    }

    var filter = function(e) {
        e.preventDefault();
        //	toggle 'selected' class
        $(this).addClass('selected').siblings().removeClass('selected');
        //	match group parameter from href
        var group = this.href.match(/[\\?&]group=([^&#]*)/)[1] || false;
        //	show all = no group
        group = group == 'all' ? false : group;
        //	create filtered elements
        var tmp = emps.filter(function(i, el) {
            return (!group)
				? true
				: $(el).children().hasClass('group-' + group);
        });

        //	toggle overflow on #main to avoid flash of scrollbars
        $('#main').css('overflow', 'hidden');
        //	use quicksand plugin for animation if available, or just replace elements
        if (typeof $.fn.quicksand == 'function') {
            $(listSelector).quicksand(tmp, {
                adjustHeight: 'dynamic',
                attribute: function(el) {
                    return $(el).find('a').attr('href');
                },
                duration: duration
            }, function() {
                $('#main').css('overflow', 'auto');
            });
        } else {
            $(listSelector).html(tmp);
        }

    };

    return init;
})(jQuery);

jQuery(sbv.quicksand);
