(function(d){d.fn.startPuzzle=function(g){for(var f=0;f<this.length;f++){e(this[f],g)}};var b={randomorder:false,width:600,height:220,margin:1,startatimage:false,fadetime:500,delaytime:100,movetime:100,shufflemoves:1000,showimageonbg:true,showtextonwin:"Nice!",loopimages:true,puzzlesettings:new Object()};function a(h,g){for(var f=0;f<g;f++){if(!h[f]){h[f]=new Object()}if(!h[f]["cols"]){h[f]["cols"]=4}if(!h[f]["rows"]){h[f]["rows"]=4}if(!h[f]["bgopacity"]){h[f]["bgopacity"]=0.3}}}function e(n,o){var u=d(n);var t=d.extend({},b,o);a(t.puzzlesettings,u.children().length);u.css({width:t.width,height:t.height});t.shufflemoves+=parseInt(Math.random()*2)-1;var v=new Array();u.children("img").each(function(i,y){v.push(y.src)});u.html("");var x=new Object();var h=false;var k=new Array();for(var q=0;q<v.length;q++){k.push(q)}if(t.randomorder){c(k)}var s=0;var f;if(t.startatimage==false){f=k[s]}else{f=t.startatimage%k.length;for(var q=0;q<k.length;q++){if(f==k[q]){s=q}}}p();function p(){var B=0;var A=t.puzzlesettings[f];for(var z=0;z<A.cols;z++){for(var y=0;y<A.rows&&!(z==A.cols-1&&y==A.rows-1);y++){B+=t.delaytime;fragment=d("<div class='fragment frag"+z+"_"+y+"'></div>");fragment.css({"background-image":"url("+v[f]+")",left:(t.margin+z*t.width/A.cols)+"px",top:(t.margin+y*t.height/A.rows)+"px","background-position":-1*(t.margin+z*t.width/A.cols)+"px "+-1*(t.margin+y*t.height/A.rows)+"px"}).width(t.width/A.cols-2*t.margin).height(t.height/A.rows-2*t.margin);fragment.hide();u.append(fragment);fragment.delay(B).fadeIn(t.fadetime)}}if(t.showimageonbg){fullPuzzle=d("<div class='bgpuzzle'></div>");fullPuzzle.css({"background-image":"url("+v[f]+")"}).width(t.width).height(t.height);fullPuzzle.hide();u.append(fullPuzzle);fullPuzzle.delay(B+t.delaytime).fadeTo(t.fadetime,A.bgopacity)}x=r();h=false;g(x)}function r(){var B=t.puzzlesettings[f];var E={x:B.cols-1,y:B.rows-1};var D;do{for(var A=0;A<t.shufflemoves;A++){D=new Array();if(E.x-1>=0){D.push({x:E.x-1,y:E.y})}if(E.x+1<B.cols){D.push({x:E.x+1,y:E.y})}if(E.y-1>=0){D.push({x:E.x,y:E.y-1})}if(E.y+1<B.rows){D.push({x:E.x,y:E.y+1})}var C=parseInt(Math.random()*D.length);var z=u.children(".frag"+D[C]["x"]+"_"+D[C]["y"]).last();z.attr("class","fragment frag"+E.x+"_"+E.y);E=D[C]}for(var A=0;A<B.cols;A++){for(var y=0;y<B.rows;y++){var z=u.children(".frag"+A+"_"+y).last();if(typeof z!=="undefined"){z.css({left:(t.margin+A*t.width/B.cols)+"px",top:(t.margin+y*t.height/B.rows)+"px"})}}}}while(l());return E}function g(){var z=x;var y=t.puzzlesettings[f];u.find(".fragment").unbind("click").css({cursor:"default"});var i=new Array();if(z.x-1>=0){i.push({x:z.x-1,y:z.y})}if(z.x+1<y.cols){i.push({x:z.x+1,y:z.y})}if(z.y-1>=0){i.push({x:z.x,y:z.y-1})}if(z.y+1<y.rows){i.push({x:z.x,y:z.y+1})}d.each(i,function(A,B){var C=u.children(".frag"+B.x+"_"+B.y).last();C.click(w).css({cursor:"pointer"})})}function w(){var y=t.puzzlesettings[f];if(!h){h=true;var i=this.className.split(" ").last().substr(4).split("_");this.className="fragment frag"+x.x+"_"+x.y;d(this).animate({left:(t.margin+x.x*t.width/y.cols)+"px",top:(t.margin+x.y*t.height/y.rows)+"px"},t.movetime,function(){h=false;g();if(l()){j()}});x={x:parseInt(i[0]),y:parseInt(i[1])}}}function j(){h=true;u.find(".fragment").unbind("click").css({cursor:"default"});fullPuzzle=u.children(".bgpuzzle").last();if(typeof fullPuzzle=="undefined"){fullPuzzle=d("<div class='bgpuzzle'></div>");fullPuzzle.css({"background-image":"url("+v[f]+")"}).width(t.width).height(t.height);fullPuzzle.hide();u.append(fullPuzzle)}fullPuzzle.fadeTo(t.fadetime,1,function(){if(t.showtextonwin!=false){var i=d("<div class='hovertext'><span>"+t.showtextonwin+"</span><div class='blackbg'></div></div>");i.hide();u.append(i);i.css({left:(t.width/2-i.width()/2)+"px",top:(t.height/2-i.height()/2)+"px"});i.children(".blackbg").width(i.width()).height(i.height());i.fadeIn(t.fadetime,function(){i.delay(500).fadeOut(t.fadetime,function(){i.remove()})})}setTimeout(m,(t.showtextonwin!=false)?t.fadetime*2+500:500)})}function m(){u.children(".fragment").remove();s++;if(t.loopimages){s%=k.length}if(k.length>s){f=k[s];u.children(".bgpuzzle").last().fadeOut(t.fadetime,function(){u.children(".bgpuzzle").last().remove();p()})}}function l(){var B=t.puzzlesettings[f];var C=u.children(".fragment");for(var A=0;A<B.cols;A++){for(var z=0;z<B.rows&&!(A==B.cols-1&&z==B.rows-1);z++){var y=C.get(A*B.rows+z).className.split(" ").last().substr(4).split("_");if(!(y[0]==A&&y[1]==z)){return false}}}return true}}function c(g){for(var h,f,k=g.length;k;h=parseInt(Math.random()*k),f=g[--k],g[k]=g[h],g[h]=f){}return g}Array.prototype.last=function(){return this[this.length-1]}})(jQuery);
