(function($){
    $.fn.shuffle = function() {
        return this.each(function(){
            var items = $(this).children();
            return (items.length)
            ? $(this).html($.shuffle(items))
            : this;
        });
    }
 
    $.shuffle = function(arr) {
        for(
            var j, x, i = arr.length; i;
            j = parseInt(Math.random() * i),
            x = arr[--i], arr[i] = arr[j], arr[j] = x
        );
        return arr;
    }
})(jQuery);

$(function() {
    var projects = $('#projects');
    var data = projects.clone();
    
    $('a.categories').bind('click', function(e) {
        if($(this).parent().hasClass('active')) return;
        $('a.categories').parent().removeClass('active');
        $(this).parent().addClass('active');
        
        if ($(this).attr('id') == 'all') {
            var currentData = data.find('div.all');
            currentData = $.shuffle(currentData);
        } else {
            var currentData = new Array();
            var categoryId = $(this).attr('id');
            data.find('div.all').each(function (index, element) {
                if ($(element).hasClass(categoryId)) {
                    currentData.push(element);
                }
            });
        }
        
        projects.quicksand(currentData, {
            duration: 800,
            easing: 'easeInOutQuad'
        });
    });
    
    $('#all').click();
});
