(function( $ ){

	var methods = {
		init : function( options ) {
			
			return this.each(function(){
				
				var $this = $(this),
				data = $this.data('gridblock'),
				gridblock = $('', {});
				
				if ( ! data ) {
					$(this).data('gridblock', {
						target : $this,
						loaded : false
					});
				}
			});
		},
		
		destroy : function( ) {
			return this.each(function(){
			
				var $this = $(this),
				data = $this.data('gridblock');

				$(window).unbind('.gridblock');
				data.gridblock.remove();
				$this.removeData('gridblock');
			})
		},
		
		getLoadStatus : function() {
			return $(this).data('gridblock').loaded;
		},
		
		setLoadStatus : function( loaded, page ) {
			var $this = $(this);
			
			if( page )
			{
				$.get(page+"ajax", function(data) {
					var loading = $this.find('.loadingcontainer');
					if( loading.length > 0 )
					{
						loading.stop();
						loading.remove();
					}
					$this.find('.blockcontent .content').html(data);
					var evt = jQuery.Event('blockLoaded');
					evt.target = $this;
					$this.trigger(evt);
				});
			}
			$(this).data('gridblock').loaded = loaded;
		},
		
		startLoading : function()
		{
			var $this = $(this);
			var loading = $('<div class="loadingcontainer"><div class="loading"></div></div>');
			$this.find('.blockcontent').append(loading)
			loading.css({top:($this.find('.blockcontent').height()*.5) - 16, left:($this.find('.blockcontent').width()*.5)-16});
			
			var test = function()
			{
				loading.stop();
				if( $this.data('gridblock').loaded == true ) return;
				loading.find('.loading').animate({transform:'rotate(360deg)'}, 2000, 'easeInOutBack', test );
			}
			test();
		}
		
	};

	$.fn.gridblock = function( method ) {
		if ( methods[method] ) {
			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} else if ( typeof method === 'object' || ! method ) {
			return methods.init.apply( this, arguments );
		} else {
			$.error( 'Method ' +  method + ' does not exist on jQuery.gridblock' );
		}
	};

})( jQuery );
