(function($){
    $.fn.shuffle = function() {
        var allElems = this.get(),
            getRandom = function(max) {
                return Math.floor(Math.random() * max);
            },
            shuffled = $.map(allElems, function(){
                var random = getRandom(allElems.length),
                    randEl = $(allElems[random]).clone(true)[0];
                allElems.splice(random, 1);
                return randEl;
           });
        this.each(function(i){
            $(this).replaceWith($(shuffled[i]));
        });
        return $(shuffled);
    }
	
	$.fn.thumbnails = function(o, p) {
		var defaults = {
			target: "",
			activeClass: "active",
			speed: 400
		}
		if (typeof o == "string" && typeof p == "string") {
			defaults[o] = p;
			o = {};
		}
		o = $.extend(defaults, o || {});
		
		if(o.target == "") return this;
		var defaultSrc = $(o.target).find("img")[0].src;
		
		return this.each(function() {
			var a = $(this).find("a"),
			running = false;
			$(a).each(function() {
				$("<img>").attr("src", this.href);//preload
				if(this.href == defaultSrc) $(this).addClass(o.activeClass);
			});
			$(a).click(function() {
				if (!running && !$(this).hasClass(o.activeClass)) {
					running = true;
					var href = this.href,
					img = $(o.target).find("img");
					
					$(o.target).css("background-image", "url(" + href + ")");
					
					$(a).removeClass(o.activeClass);
					$(this).addClass(o.activeClass);
					$(img).fadeOut(o.speed, function(){
						$(img).attr("src", href).css("display", "block");
						running = false;
					})
				}
				return false;
			});
		});
	}
})(jQuery);

function setupThumbTemplate() {
	var html = "";
	for(var i = 0; i < 9; i++) html += "<a><img></a>";
	$("#thumbnails-template").html(html);
	var row1 = 0, row2 = 3, row3 = 6, col1 = 0, col2 = 1, col3 = 2;
	for (var i = 0; i < 3; i++) {
		$("#thumbnails-template img").eq(row1).addClass("row1");
		$("#thumbnails-template img").eq(row2).addClass("row2");
		$("#thumbnails-template img").eq(row3).addClass("row3");
		$("#thumbnails-template img").eq(col1).addClass("col1");
		$("#thumbnails-template img").eq(col2).addClass("col2");
		$("#thumbnails-template img").eq(col3).addClass("col3");
		row1++;
		row2++;
		row3++;
		col1 += 3;
		col2 += 3;
		col3 += 3;
	}
}
function panelAction(){
	if($("#panel li.current").length == 0) {
		$("#panel li").eq(0).addClass("current");
		var current = 0;
	}
	else {
		var li = $("#panel li");
		for(var current = 0; current < li.length; current++) {
			if ($(li[current]).hasClass("current")) break;
		}
	}
	function pick(){
		setupThumbTemplate();//clear slate
		$("#panel li:eq(" + current + ") a").shuffle();
		var row1 = 0, row2 = 3, row3 = 6;
		$("#panel li:eq(" + current + ") a").each(function() {
			var src = $(this).find("img")[0].src;
			var href = this.href;
			$("#thumbnails-template img").eq(row1).attr("src", src);
			$("#thumbnails-template img").eq(row2).attr("src", src);
			$("#thumbnails-template img").eq(row3).attr("src", src);
			$("#thumbnails-template a").eq(row1).attr("rel", href);
			$("#thumbnails-template a").eq(row2).attr("rel", href);
			$("#thumbnails-template a").eq(row3).attr("rel", href);
			row1++;
			row2++;
			row3++;
		})
		
		for (var i = 1; i <= 3; i++) {
			(function(incr){
				var n = $("#thumbnails-template img:not(.pick)").length;
				var random = Math.floor(Math.random() * n);//0-whatever
				//alert(random);
				var img = $("#thumbnails-template img:not(.pick):eq(" + random + ")");
				img.addClass("pick" + incr);
				if(img.hasClass("row1")) $(".row1").addClass("pick");
				if(img.hasClass("row2")) $(".row2").addClass("pick");
				if(img.hasClass("row3")) $(".row3").addClass("pick");
				if(img.hasClass("col1")) $(".col1").addClass("pick");
				if(img.hasClass("col2")) $(".col2").addClass("pick");
				if(img.hasClass("col3")) $(".col3").addClass("pick");
				return random;
			})(i);
		}
		current++;
		if(current == $("#panel li").length) current = 0;
		$("#panel li").removeClass("current");
		$("#panel li").eq(current).addClass("current");
	}
	function kaboom(){
		$("#thumbnails-template img").css("visibility", "hidden");
		setTimeout(function(){
			var that = $("#thumbnails-template .pick1");
			var what = that.parents("#thumbnails-template>a");
			that.css("visibility", "visible");
			what[0].href = what[0].rel;
		}, 250);
		setTimeout(function(){
			var that = $("#thumbnails-template .pick2");
			var what = that.parents("#thumbnails-template>a");
			that.css("visibility", "visible");
			what[0].href = what[0].rel;
		}, 500);
		setTimeout(function(){
			var that = $("#thumbnails-template .pick3");
			var what = that.parents("#thumbnails-template>a");
			that.css("visibility", "visible");
			what[0].href = what[0].rel;
		}, 750);
	}
	pick(false);
	kaboom();
	return current;
}
