(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() {
  
  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 = {
    duration: 800,
    easing: 'easeInOutQuad',
    adjustHeight: 'dynamic',
    enhancement: function() {
        Cufon.refresh('.post .title');
        Cufon.refresh('.post .date');
        $(".maincolumn .front-img").show();
        $(".maincolumn .date").hide();
        $(".maincolumn .title").hide();
        $(".maincolumn .post").hover(function() {
            $(" .front-img", this).stop().fadeTo("slow", 1.0);
            $(" .title", this).stop().fadeTo("slow", 0.9);
            $(" .date", this).stop().fadeTo("slow", 0.9);
        },
        function() {
            $(" .front-img", this).stop().fadeTo("slow", 0.6);
            $(" .title", this).stop().fadeTo("slow", 0);
            $(" .date", this).stop().fadeTo("slow", 0);
        });
    }
  };
  
  var $list = $('#content');
  var $data = $list.clone();
  
  var $controls = $('#nav ul.splitter');
  
  $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');
        $button_container.addClass('selected-' + button_segment);
        
        var sorting_type = determine_sort($controls.eq(1).find('a'));
        var sorting_kind = determine_kind($controls.eq(0).find('a'));
        
        if (sorting_kind == 'all') {
          var $filtered_data = $data.find('div');
        } else {
          var $filtered_data = $data.find('div[data-type=' + sorting_kind + ']');
        }
        
        if (sorting_type == 'year') {
          var $sorted_data = $filtered_data.sorted({
            by: function(v) {
              return $(v).find('small[data-type=year]span').text();
            }
          });
        } else {
          var $sorted_data = $filtered_data.sorted({
            by: function(v) {
              return $(v).find('span[data-type=title]').text().toLowerCase();
            }
          });
        }
        $list.quicksand($sorted_data, $preferences); 
      }
      e.preventDefault();
    });
  }); 
});

//Sequential Fade In
 (function(jQuery) {
    jQuery.fn.fadeInSequence = function(fadeInTime, timeBetween)
    {
        timeBetween = typeof(timeBetween) == 'undefined' ? 0: timeBetween;
        fadeInTime = typeof(fadeInTime) == 'undefined' ? 800: fadeInTime;
        var remainingTime = jQuery(this).size() * (fadeInTime + timeBetween);
        var i = 0;
        return jQuery(this).each(function()
        {
            jQuery(this).delay(i++*(fadeInTime + timeBetween));
            remainingTime -= (fadeInTime + timeBetween);
            if (jQuery(this).css('display') == 'none')
            {
                jQuery(this).fadeIn(fadeInTime);
            }
            else
            {
                jQuery(this).animate({
                    'opacity': 1
                },
                fadeInTime);
            }
            jQuery(this).delay(remainingTime + timeBetween);
        });
    };
})(jQuery);


//Set up Elements
$(document).ready(function() {
    $(".maincolumn .date").hide()
    $(".maincolumn .title").hide()
    $(".nav li").hide().fadeInSequence();
    $("#upper").children().hide().fadeInSequence();
    $("#upper .box").hover(function() {
        $(this).stop().fadeTo("slow", 1);
       
    },
    function() {
        $(this).stop().fadeTo("slow", 0.5);

    });
    
});




