(function($) {
	$.fn.sorted = function(customOptions) {
		var options = {
			reversed: false,
			by: function(a) {
				return a.text();
			}
		};
		$.extend(options, customOptions);
	
		$data = $(this);
		arr = $data.get();
		arr.sort(function(a, b) {
			
		   	var valA = options.by($(a));
		   	var valB = options.by($(b));
			if (options.reversed) {
				return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;				
			} else {		
				return (valA < valB) ? -1 : (valA > valB) ? 1 : 0;	
			}
		});
		return $(arr);
	};

})(jQuery);


function init_quicksand() {
  
  var read_button = function(class_names) {
    var r = {
      selected: false,
      type: 0
    };
    for (var i=0; i < class_names.length; i++) {
      if (class_names[i].indexOf('selected-') == 0) {
        r.selected = true;
      }
      if (class_names[i].indexOf('segment-') == 0) {
        r.segment = class_names[i].split('-')[1];
      }
    };
    return r;
  };
  
  var determine_sort = function($buttons) {
    var $selected = $buttons.parent().filter('[class*="selected-"]');
    return $selected.find('a').attr('data-value');
  };
  
  var determine_kind = function($buttons) {
    var $selected = $buttons.parent().filter('[class*="selected-"]');
    return $selected.find('a').attr('data-value');
  };
  
  var $preferences_start = {
    duration: 0,
    easing: 'easeInOutQuad',
    adjustHeight: false
  };
  var $preferences = {
    duration: 800,
    easing: 'easeInOutQuad',
    adjustHeight: false
  };
  
  var $list = $('#list');
  var $data = $list.clone();
  
	// Get current kind
	var current_kind = $('ul.splitter ul').eq(1).find('a').parent().filter('[class*="selected-"]');
	var sorting_kind = current_kind.children('a').attr('data-value');
	if(sorting_kind != "all") {
		var $sorted_data = $data.find('li.' + sorting_kind);
		$list.quicksand($sorted_data, $preferences_start);
	}
  
  var $controls = $('ul.splitter ul');
  
  $controls.each(function(i) {
    
    var $control = $(this);
    var $buttons = $control.find('a');
	
    $buttons.bind('click', function(e) {
      var $button = $(this);
      var $button_container = $button.parent();
      var button_properties = read_button($button_container.attr('class').split(' '));      
      var selected = button_properties.selected;
      var button_segment = button_properties.segment;
      
	  if (!selected) {

        $buttons.parent().removeClass('selected-0').removeClass('selected-1').removeClass('selected-2').removeClass('selected-3').removeClass('selected-4').removeClass('selected-5').removeClass('selected-6').removeClass('selected-7').removeClass('selected-8');
        $button_container.addClass('selected-' + button_segment);
        
        var sorting_type = determine_sort($controls.eq(0).find('a'));
        var sorting_kind = determine_kind($controls.eq(1).find('a'));
        
		if (sorting_kind == 'external_blog') {
			//var answer = confirm("Ouvrir http://blog.actuvisu.fr/ ?")
			//if (answer){ window.location = "http://blog.actuvisu.fr/"; }
			window.location = "http://blog.actuvisu.fr/";
			return false;
        }
		
		$('#breadcrum_cat').html(sorting_kind);
		$('#breadcrum_cat').attr('href', sorting_kind);
		
        if (sorting_kind == 'all') {
          var $filtered_data = $data.find('li');
        } else {
          var $filtered_data = $data.find('li.' + sorting_kind);
        }
        
        if (sorting_type == 'size') {
          var $sorted_data = $filtered_data.sorted({
            by: function(v) {
              return parseFloat($(v).find('span').text());
            }
          });
        } else {
          var $sorted_data = $filtered_data.sorted({
            by: function(v) {
              return $(v).find('strong').text().toLowerCase();
            }
          });
        }
        
		$('#preview_visu_title').html("Visualisez !");
		$('#preview_visu_teaser').html("Cliquez sur l'aperçu pour afficher une description, puis cliquez sur Visualisez.<br /><br />");
		$('#btn_visualisez').css('display', 'none');
					
        $list.quicksand($sorted_data, $preferences,  function() {
			
			$('.grid-visu').each(function() {
				$(this).click(function() {
					$('#preview_visu_title').html($(this).attr('title'));
					$('#preview_visu_teaser').html($(this).attr('visu-teaser'));
					$('#btn_visualisez').css('display', 'block');
					$('#btn_visualisez').attr('href', $(this).attr('href'));
					return false;
				});
			});
			
		});
		
      }
      
	  //return false;
      e.preventDefault();
	  
    });
    
  });

}
