(function($) {

    var ImageWall = function(element, options){
		var settings = $.extend({}, $.fn.imageWall.defaults, options);
		
		var imagewall = $(element);
		var wallitems = imagewall.find('.post-item');
		var wallitems_total = wallitems.size();
		if (wallitems_total < 2) {
			settings.highlight = false;
		}
		
		if (settings.highlight) {
			var animwait = settings.wait;
			var timer = '';
			var randnr = '';
			fadr_interval();
		}
		
		function fadr_run() {
			var oldrandnr = randnr;
			while (randnr == oldrandnr) {
				randnr = $.random(0,wallitems_total-1);
			}
			wallitems.find('img').stop().animate({
				opacity: 0.3
			}, 1000);
			wallitems.find('img').eq(randnr).stop().animate({
				opacity: 1
			}, 1000);
		}
		
		function fadr_interval() {
			timer = setInterval(function(){ fadr_run(); }, animwait);
		}
		
		wallitems.hover(
			function () {
				if (settings.highlight) {
					clearInterval(timer);
					timer = '';
					$(this).find('img').stop().animate({
						opacity: 1
					}, 200);
				}
				$(this).children('.item-content').show();
			},
			function () {
				if (settings.highlight){
					if (timer == '') fadr_interval();
					$(this).find('img').stop().animate({
						opacity: 0.6
					}, 500);
				}
				$(this).children('.item-content').hide();
			}
		);
		if (settings.highlight) wallitems.find('img').css({ opacity: 0.6 });
	};
	
	$.fn.imageWall = function(options) {
    
        return this.each(function(){
            var element = $(this);
            if (element.data('imagewall')) return;
            var imagewall = new ImageWall(this, options);
            element.data('imagewall', imagewall);
        });

	};
	
	//Default settings
	$.fn.imageWall.defaults = {
		wait: 3000,
		highlight: true
	};
	
	$.fn._reverse = [].reverse;
	
})(jQuery);
