if ( typeof FluidGrid == 'undefined' ) {
  var FluidGrid = {};
	FluidGrid.id = "fluid-grid";
	FluidGrid.min_cols = 2;
	FluidGrid.col_width = 180;
	FluidGrid.gap = 24;
	FluidGrid.offset_height = 9;
	FluidGrid.loaded = 0;
	FluidGrid.anime_delay = 300;

	FluidGrid.offx = 0;
	FluidGrid.offy = 0;
}

FluidGrid.int = function () {
	FluidGrid.maxy = new Array();

	$(document).ready(function(){
		FluidGrid.offy = $('#' + FluidGrid.id).offset().top + 10;
		FluidGrid.offx = $('#' + FluidGrid.id).offset().left + 20;
		FluidGrid.arrange();
		FluidGrid.loaded = 1;
	});

	// on window resize, call again
	$(window).resize( function() { FluidGrid.arrange(); } );
	//$(window).load( function() { FluidGrid.arrange(); FluidGrid.loaded = 1; } );
	//FluidGrid.arrange();
}

FluidGrid.arrange = function () {
	// how many columns fits here?
	var columns = Math.max(FluidGrid.min_cols, parseInt($('#' + FluidGrid.id).innerWidth() / (FluidGrid.col_width+FluidGrid.gap)));
	$('.size0').css('width',FluidGrid.col_width  + 'px');
	$('.size1').css('width', FluidGrid.col_width*2 + FluidGrid.gap);
	$('.size2').css('width', FluidGrid.col_width*3 + FluidGrid.gap*2);
	$('.size3').css('width', FluidGrid.col_width*4 + FluidGrid.gap*2);

	for (x=0; x < columns; x++) {
		FluidGrid.maxy[x] = 0;
	}

	// lets iterate over all posts
	$('.column').each(function(i) {

		var pos, cursor, w, altura= 0;

		w = (Math.floor($(this).outerWidth() / FluidGrid.col_width));
		cursor = 0;

		if (w>1) {
			for (x=0; x < columns-(w-1); x++) {
				cursor = FluidGrid.maxy[x] < FluidGrid.maxy[cursor] ? x : cursor;
			}
			pos = cursor;

			for (var x=0; x<w; x++) {
				altura = Math.max(altura, FluidGrid.maxy[pos+x]);
			}
			for (var x=0; x<w; x++) 
				FluidGrid.maxy[pos+x] = parseInt($(this).outerHeight()) + FluidGrid.gap + altura;

			$(this).css('left', pos*(FluidGrid.col_width+FluidGrid.gap) + FluidGrid.offx).css('top',altura + FluidGrid.offy);
			if ($(this).css("display") == 'none') $(this).fadeIn("slow");
		}
		else {
			for (x=0; x < columns; x++) {
				cursor = FluidGrid.maxy[x] < FluidGrid.maxy[cursor] ? x : cursor;
			}

			if (FluidGrid.loaded) {
				$(this).animate({'left' :  cursor*(FluidGrid.col_width+FluidGrid.gap) + FluidGrid.offx, 'top' : FluidGrid.maxy[cursor] + FluidGrid.offy}, FluidGrid.anime_delay);
				if ($(this).css("display") == 'none') $(this).fadeIn("slow");
			}
			else {
				$(this).css('left', cursor*(FluidGrid.col_width+FluidGrid.gap) + FluidGrid.offx).css('top',FluidGrid.maxy[cursor] + FluidGrid.offy);
				if ($(this).css("display") == 'none') $(this).fadeIn("slow");
			}

			FluidGrid.maxy[cursor] += $(this).outerHeight() + FluidGrid.gap - FluidGrid.offset_height;
		}
	});

	var max_height = $(window).height();
	for (x=0;x<columns;x++) {
		max_height = Math.max(max_height, FluidGrid.maxy[x]) + FluidGrid.offset_height;
	}
	$('#' + FluidGrid.id).css('height', max_height);
}

FluidGrid.int();

