(function(a){a.fn.jqPuzzle=function(s,b){var k={rows:4,cols:4,hole:16,shuffle:false,numbers:true,language:"en",control:{shufflePieces:true,confirmShuffle:true,toggleOriginal:true,toggleNumbers:true,counter:true,timer:true,pauseTimer:false},success:{fadeOriginal:true,callback:undefined,callbackTimeout:300},animation:{shuffleRounds:3,shuffleSpeed:800,slidingSpeed:200,fadeOriginalSpeed:600},style:{gridSize:2,overlap:true,backgroundOpacity:0.1}};var l={en:{shuffleLabel:"Shuffle",toggleOriginalLabel:"Original",toggleNumbersLabel:"Numbers",confirmShuffleMessage:"Do you really want to shuffle?",movesLabel:"moves",secondsLabel:"seconds",tooSmallForDoD:"This image is too small for a puzzle at that Degree of Difficulty.\nTry an easier level, or try a larger image.",justTooSmall:"This image is not big enough to form a puzzle.\nPlease try a larger image."},es:{shuffleLabel:"Barajar",toggleOriginalLabel:"Original",toggleNumbersLabel:"Numeros",confirmShuffleMessage:"Realmente quieres barajar?",movesLabel:"pasos",secondsLabel:"segundos",tooSmallForDoD:"Esta imagen NO es suficientemente grande por la dificultad elegida.\nTrata una dificultad mas baja, o una imagen mas grande.",justTooSmall:"Esta imagen NO es suficientemente grande para formar un rompecabezas.\nPor favor trata una imagen mas grande."},fr:{shuffleLabel:"MÃ©langer",toggleOriginalLabel:"Original",toggleNumbersLabel:"Nombres",confirmShuffleMessage:"Veux-tu vraiment mÃ©langer?",movesLabel:"mouvements",secondsLabel:"secondes"},de:{shuffleLabel:"Mischen",toggleOriginalLabel:"Original",toggleNumbersLabel:"Nummern",confirmShuffleMessage:"Willst du wirklich mischen?",movesLabel:"ZÃ¼ge",secondsLabel:"Sekunden"},pt:{shuffleLabel:"Embaralhar",toggleOriginalLabel:"Original",toggleNumbersLabel:"Números",confirmShuffleMessage:"Tem certeza que deseja reembralhar?",movesLabel:"movimentos",secondsLabel:"segundos"}};if(s&&!s.hole&&(s.rows||s.cols)){s.hole=(s.rows||k.rows)*(s.cols||k.cols)}s=a.extend(true,{},k,s);b=a.extend((l[s.language]||l[k.language]),b);var j=s.rows,m=s.cols,n=s.hole;var i=s.control,f=s.success,r=s.animation,q=s.style;if(j<3||j>10){j=k.rows}if(m<3||m>10){m=k.rows}if((n>(j*m))||(n<1)){n=j*m}n--;if(r.slidingSpeed<1){r.slidingSpeed=1}if(r.shuffleSpeed<1){r.shuffleSpeed=1}if(r.fadeOriginalSpeed<1){r.fadeOriginalSpeed=1}if(r.shuffleRounds<1){r.shuffleRounds=1}var h=function(v){for(var t=0;t<v.length;t++){var u=(t<n)?t:t+1;if(v.eq(t).attr("current")!=u){return false}}return true};var d=function(w,x){for(var t=0;t<w.length;t++){var u=(t<n)?t:t+1;var v=w.eq(u);if(v.attr("current")==x){return v}}return null};var e=function(v){var w=1;for(var u=1;u<=(j*m-1);u++){for(var t=(u+1);t<=(j*m);t++){w*=((v[u-1]-v[t-1])/(u-t))}}return Math.round(w)==1};var p=function(u,t){return parseInt(u)*m+parseInt(t)};var g=function(t){return{row:(Math.floor(t/m)),col:(t%m)}};var c=function(t){var u=t.css("border-left-width");if(t.css("border-left-style")!="none"){switch(u){case"thin":return 2;case"medium":return 4;case"thick":return 6;default:return parseInt(u)||0}}return 0};var o=function(t,A){var v;var w;var u=0;var x;var y=function(){z(new Date().getTime());x=setTimeout(y,t)};var z=function(B){A(B-u-v)};this.start=function(){if(v){return false}v=new Date().getTime();y()};this.stop=function(){if(!v){return false}clearTimeout(x);var B=new Date().getTime();if(w){u+=B-w}z(B);v=w=undefined;u=0};this.pause=function(){if(!v||w){return false}clearTimeout(x);w=new Date().getTime()};this.resume=function(){if(!w){return false}u+=new Date().getTime()-w;w=undefined;y()}};return this.filter("img").each(function(){var z=a(this);var E=false;var t=0;var D=0;var B;var u=s.shuffle;var v;var y=n;var C=a("<div/>").addClass("jqp-piece");var F=a("<div/>").addClass("jqp-wrapper").append(C);var A=a("<div/>").attr("class",z.attr("class")||"").addClass("jqPuzzle").append(F);z.replaceWith(A);A.attr("id",z.attr("id")||"");var x={gui:{border:c(A),padding:{left:parseInt(A.css("padding-left"))||0,right:parseInt(A.css("padding-right"))||0,top:parseInt(A.css("padding-top"))||0,bottom:parseInt(A.css("padding-bottom"))||0}},wrapper:{border:c(F),padding:parseInt(F.css("padding-left"))||0},piece:{border:c(C)}};A.removeAttr("id");A.replaceWith(z);z.one("load",function(){var av=(q.gridSize===0&&q.overlap);var al=m*(2*x.piece.border)+(m-1)*q.gridSize;var ar=j*(2*x.piece.border)+(j-1)*q.gridSize;if(av){al-=(m-1)*x.piece.border;ar-=(j-1)*x.piece.border}z.css({width:"auto",height:"auto",visibility:"visible"});var G=Math.floor((z.width()-al)/m);var I=Math.floor((z.height()-ar)/j);if(G<30||I<30){if(j==3||m==3){alert(b.justTooSmall)}else{alert(b.tooSmallForDoD)}return false}var T=m*G+al;var N=j*I+ar;var ah=z.attr("src");var H=G+2*x.piece.border+q.gridSize;var W=I+2*x.piece.border+q.gridSize;var U={piece:a.boxModel?0:2*x.piece.border,wrapper:a.boxModel?0:2*(x.wrapper.border+x.wrapper.padding),gui:{width:a.boxModel?0:2*x.gui.border+x.gui.padding.left+x.gui.padding.right,height:a.boxModel?0:2*x.gui.border+x.gui.padding.top+x.gui.padding.bottom}};var P=function(ay,aw){var ax={left:x.wrapper.padding+aw*H,top:x.wrapper.padding+ay*W};if(av){ax.left-=aw*x.piece.border;ax.top-=ay*x.piece.border}return ax};var ae=function(aG,aw){if(aw){if(L.is(".jqp-disabled")){return false}if(E){return false}if(i.confirmShuffle&&(t>0)&&!window.confirm(b.confirmShuffleMessage)){return false}E=true;if(B){Z.removeClass("jqp-solved");X.fadeTo(r.fadeOriginalSpeed,q.backgroundOpacity,function(){X.remove().prependTo(M);R.removeClass("jqp-disabled")})}}if(v){v.stop()}B=false;u=true;t=0;D=0;if(O){O.removeClass("jqp-disabled")}if(an){an.val(t)}if(K){K.val(D)}var aA=[];var aB=0;while(aB<aG){var aI=[];for(var az=0;az<j*m;az++){aI[az]=az}aI.splice(n,1);aA[aB]=[];for(var az=0;az<j*m;az++){if(az==n){aA[aB][az]=n;continue}var aE=Math.floor(Math.random()*aI.length);aA[aB][az]=aI[aE];aI.splice(aE,1)}if(((aB+1)<aG)||e(aA[aB])){aB++}}var aC=0;for(var aB=0;aB<aG;aB++){var aF=((aB+1)==aG);for(var az=0;az<aA[aB].length;az++){if(az==n){if(aF){y=n}continue}var ax=aA[aB][az];if(ax>n){ax-=1}var aH=au.eq(ax);var aD=g(az);var ay=P(aD.row,aD.col);if(aF){aH.attr("current",az.toString())}if(aw===undefined){aH.css({left:ay.left,top:ay.top})}else{aH.animate({left:ay.left,top:ay.top},aw,null,function(){aC++;if(aC==r.shuffleRounds*(j*m-1)){E=false;aC=0}})}}}resetScore();setTimeout(function(){if(V.is(".jqp-disabled")){return false}if(numbersShowing==false){return false}if(V.is(".jqp-toggle")){V.removeClass("jqp-toggle");au.children().hide();numbersShowing=false}else{V.addClass("jqp-toggle");au.children().show();numbersShowing=true}},4000)};var M=a("<div/>").addClass("jqp-wrapper").css({width:T+U.wrapper,height:N+U.wrapper,borderWidth:x.wrapper.border,padding:x.wrapper.padding,margin:0,position:"relative",overflow:"hidden",display:"block",visibility:"inherit"});var at=a("<div/>").addClass("jqp-piece").css({width:G+U.piece,height:I+U.piece,backgroundImage:"url("+ah+")",borderWidth:x.piece.border,margin:0,padding:0,position:"absolute",overflow:"hidden",display:"block",visibility:"inherit",cursor:"default"}).append(a("<span/>"));var au=a([]);for(var ao=0;ao<j;ao++){for(var am=0;am<m;am++){var aa=p(ao,am);if(aa==n){continue}var af=P(ao,am);var S=-1*(am*H+x.piece.border);var Q=-1*(ao*W+x.piece.border);if(av){S+=am*x.piece.border;Q+=ao*x.piece.border}au=au.add(at.clone().css({left:af.left,top:af.top,backgroundPosition:(S+"px "+Q+"px")}).attr("current",String(aa)).appendTo(M).children().text(aa+1).end())}}if(s.shuffle){ae(1)}var X=a("<div/>").css({width:T,height:N,left:x.wrapper.padding,top:x.wrapper.padding,backgroundImage:"url("+ah+")",borderWidth:0,margin:0,padding:0,position:"absolute",opacity:q.backgroundOpacity}).prependTo(M);var ak=a("<div/>").addClass("jqp-controls").css({visibility:"inherit",display:"block",position:"static"});var L,ai,V;var Y=a("<a/>").css("cursor","default");if(i.shufflePieces){L=Y.clone().text(b.shuffleLabel).appendTo(ak)}if(i.toggleOriginal){ai=Y.clone().text(b.toggleOriginalLabel).appendTo(ak)}if(i.toggleNumbers){V=Y.clone().text(b.toggleNumbersLabel).appendTo(ak);if(s.numbers){V.addClass("jqp-toggle")}}var R=ak.children();var O,an,K;if(i.counter||i.timer){O=a("<span/>").css("cursor","default").appendTo(ak);var ag=a("<input/>").val(0).css({width:"5ex",cursor:"default"}).attr("readonly","readonly");if(i.counter){an=ag.clone().appendTo(O).after(b.movesLabel+" ")}if(i.timer){K=ag.clone().appendTo(O).after(b.secondsLabel)}if(!s.shuffle){O.addClass("jqp-disabled")}}var J=a("<a/>").text("jqPuzzle").attr("href","http://www.2meter3.de/jqPuzzle/").css({"float":"right",fontFamily:"Verdana, Arial, Helvetica, sans-serif",fontSize:"9px",lineHeight:"12px",textDecoration:"none",color:"#FFFFFF",backgroundColor:"#777777",backgroundImage:"none",borderBottom:"1px dotted #FFFFFF",padding:"1px 3px 2px",marginRight:x.wrapper.border,position:"static",display:"inline",visibility:"hidden"});var ap=a("<div/>").css({width:T+2*(x.wrapper.padding+x.wrapper.border),position:"absolute",display:"block",visibility:"inherit",margin:"0px",padding:"0px",backgroundColor:"transparent"}).append(J).append(ak);var Z=a("<div/>").attr("class",z.attr("class")||"").addClass("jqPuzzle").css({width:T+2*(x.wrapper.padding+x.wrapper.border)+U.gui.width,height:N+2*(x.wrapper.padding+x.wrapper.border)+U.gui.height,textAlign:"left",overflow:"hidden",display:"block"}).append(M).append(ap);z.replaceWith(Z);var ad=z.attr("id");if(ad){Z.attr("id",ad)}if(!s.numbers){au.children().hide()}if(O){O.children("input").val(0)}var aj=Z.height();var ab=ap.height();Z.height(Z.height()+ap.height());if(a.browser.msie){Z[0].onselectstart=function(){return false}}else{Z.mousedown(function(){return false})}R.mousedown(function(){if(!a(this).is(".jqp-disabled")){a(this).addClass("jqp-down")}});R.mouseout(function(){a(this).removeClass("jqp-down")});R.mouseup(function(){a(this).removeClass("jqp-down")});au.click(function(){if(E){return false}if(B){return false}E=true;var aE=a(this);var aC=aE.attr("current");var aw=g(aC);var aD=g(y);var aB=false;var ay=false;if(Math.abs(aw.row-aD.row)==0){ay=true}if(Math.abs(aw.col-aD.col)==0){aB=true}if(Math.abs(aw.row-aD.row)!=0&&Math.abs(aw.col-aD.col)!=0){E=false;return false}var ax;if(ay){var aA=Math.abs(aw.col-aD.col);for(ao=(aA-1);ao>=0;ao--){if(y>aC){ax=parseInt(aC)+ao}else{ax=parseInt(aC)-ao}$pieceToMove=d(au,ax);aD=g(y);var az=P(aD.row,aD.col);$pieceToMove.attr("current",String(y));y=ax;$pieceToMove.animate({left:az.left,top:az.top},r.slidingSpeed,null,function(){E=false})}}else{if(aB){var aA=Math.abs(aw.row-aD.row);for(ao=(aA-1);ao>=0;ao--){if(y>aC){ax=parseInt(aC)+ao*m}else{ax=parseInt(aC)-ao*m}$pieceToMove=d(au,ax);aD=g(y);var az=P(aD.row,aD.col);$pieceToMove.attr("current",String(y));y=ax;$pieceToMove.animate({left:az.left,top:az.top},r.slidingSpeed,null,function(){E=false})}}}if(u){t++;updateScore(t,D)}if(an){an.val(t)}if(t==1){if(!v){v=new o(333,function(aF){D=Math.floor(aF/1000);if(K){K.val(D)}updateScore(t,D)})}v.start()}if(t==2){is_plyd()}if(u){B=h(au);if(B){if(v){v.stop()}u=false;Z.addClass("jqp-solved");window.setTimeout(aq,100)}else{E=false}}else{E=false}});if(i.shufflePieces){L.click(function(){ae(r.shuffleRounds,r.shuffleSpeed)})}a("#shuf2start").click(function(){ae(r.shuffleRounds,r.shuffleSpeed);a("#shuf2start").blur()});if(i.toggleOriginal){ai.click(function(){if(ai.is(".jqp-disabled")){return false}if(E){return false}E=true;if(ai.is(".jqp-toggle")){if(i.shufflePieces){L.removeClass("jqp-disabled")}if(i.toggleNumbers){V.removeClass("jqp-disabled")}ai.removeClass("jqp-toggle");X.fadeTo(r.fadeOriginalSpeed,q.backgroundOpacity,function(){a(this).prependTo(M);if(i.pauseTimer&&v){v.resume()}E=false})}else{if(i.shufflePieces){L.addClass("jqp-disabled")}if(i.toggleNumbers){V.addClass("jqp-disabled")}ai.addClass("jqp-toggle");if(i.pauseTimer&&v){v.pause()}score=score-50;X.appendTo(M).fadeTo(r.fadeOriginalSpeed,1,function(){E=false})}return false})}if(i.toggleNumbers){V.click(function(){if(V.is(".jqp-disabled")){return false}if(V.is(".jqp-toggle")){V.removeClass("jqp-toggle");au.children().hide();numbersShowing=false}else{V.addClass("jqp-toggle");au.children().show();numbersShowing=true}})}var aq=function(){if(f.fadeOriginal){if(i.toggleOriginal){ai.addClass("jqp-disabled")}if(i.toggleNumbers){V.addClass("jqp-disabled")}X.appendTo(M).fadeTo(r.fadeOriginalSpeed,1,function(){E=false;ac()})}else{E=false;ac()}};var ac=function(){if(a.isFunction(f.callback)){setTimeout(function(){f.callback({moves:t,seconds:D})},f.callbackTimeout)}}});var w=setInterval(function(){if(z[0].complete){clearInterval(w);z.trigger("load")}},333)}).end()};a(document).ready(function(){a("img.jqPuzzle").each(function(){var d=/\bjqp(-[a-z]{2})?-r(\d)-c(\d)(-h(\d+))?(-s(\d+))?(-[A-Z]+)?\b/;var b=d.exec(this.className);var c;if(b){c={rows:parseInt(b[2]),cols:parseInt(b[3]),hole:parseInt(b[5])||null,shuffle:b[8]&&b[8].indexOf("S")!=-1,numbers:b[8]?b[8].indexOf("N")==-1:true,language:b[1]&&b[1].substring(1)};if(b[7]){c.animation={};c.animation.shuffleRounds=parseInt(b[7])}if(b[8]&&b[8].search(/[ABCDE]/)!=-1){c.control={};c.control.shufflePieces=b[8].indexOf("A")==-1;c.control.toggleOriginal=b[8].indexOf("B")==-1;c.control.toggleNumbers=b[8].indexOf("C")==-1;c.control.counter=b[8].indexOf("D")==-1;c.control.timer=b[8].indexOf("E")==-1}}a(this).jqPuzzle(c)})})})(jQuery);
