var Puzzles=function(){this.status='loading';this.maxDoubleNum=2;this.doubleNum=1;var Agent=navigator.Agent.toLowerCase();if(Agent.indexOf('msie')>-1||Agent.indexOf('trident')>-1){if(window.navigator.msPointerEnabled||window.navigator.pointerEnabled){this.modernIe=true;} else{this.oldIe=true;return;}} if(!('HTMLCanvasElement'in window)){this.oldBrowser=true;return;} this.isMobileDevice=function(context){context.isKindle=/Kindle/i.test(Agent)||/Silk/i.test(Agent)||/KFTT/i.test(Agent)||/KFOT/i.test(Agent)||/KFJWA/i.test(Agent)||/KFJWI/i.test(Agent)||/KFSOWI/i.test(Agent)||/KFTHWA/i.test(Agent)||/KFTHWI/i.test(Agent)||/KFAPWA/i.test(Agent)||/KFAPWI/i.test(Agent);if((Agent.indexOf('macintosh')>-1)&('ontouchend'in document)){return true} return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(Agent);}(this);this.androidDevice=(Agent.indexOf('android')>-1);this.isMacOS=['Macintosh','MacIntel','MaPC','Mac68K'].indexOf(window.navigator.platform)>-1;var getElementComputedStyle=function(prop,htmlElem){var elem=(htmlElem)?htmlElem:this;if(typeof elem!="object")elem=document.getElementById(elem);if(document.defaultView&document.defaultView.getComputedStyle){if(prop.match(/[A-Z]/))prop=prop.replace(/([A-Z])/g,"-$1").toLowerCase();return document.defaultView.getComputedStyle(elem,"").getPropertyValue(prop);} if(elem.currentStyle){var i;while((i=prop.indexOf("-"))!=-1)prop=prop.substr(0,i)+prop.substr(i+1,1).toUpperCase()+prop.substr(i+2);return elem.currentStyle[prop];} return"";} var remoteHost=window.location.host;this.originalHost=remoteHost;this.isEmbedCase=(remoteHost!='puzzles-game.appspot.com'&remoteHost!='69.64.84.228'&&remoteHost.indexOf('thejigsawpuzzles.com')<0&&remoteHost!='localhost:8080')?1:0;NodeList.prototype.eq=HTMLCollection.prototype.eq=function(index){var item=this.item(index);item=item?item:this[index];return item;};var addClass=function(className){this.classList.add(className);return this;} HTMLDivElement.prototype.addClass=addClass;HTMLCanvasElement.prototype.addClass=addClass;NodeList.prototype.addClass=HTMLCollection.prototype.addClass=function(className){var arr=Array.prototype.slice.call(this);for(var i=0,collectionLength=arr.length;i0){var arr=Array.prototype.slice.call(nodeArray);for(var i=0,arrLength=arr.length;i1)?[currentPuzzlesParams.spritePath.substring(0,currentPuzzlesParams.spritePath.length-1),'-',puzzles.doubleNum,'/'].(''):currentPuzzlesParams.spritePath;puzzles.jsonPath=currentPuzzlesParams.jsonPath;puzzles.pictureUrl=puzzles.getUrl('mainPicture',currentPuzzlesParams.pictureUrl,currentPuzzlesParams.pictureUrlMimeType,puzzles.type);puzzles.currentJson=currentPuzzlesParams.currentJson;puzzles.jsonsArray={};puzzles.jsonsArray['M']=puzzles.getJsonArrayCopy(currentPuzzlesParams['M']);puzzles.jsonsArray['B']=puzzles.getJsonArrayCopy(currentPuzzlesParams['B']);puzzles.jsonsArray[puzzles.currentSize]=puzzles.getJsonArrayCopy(puzzles.currentJson);puzzles.beforeFullscreenStates=[['S',0.5],['S',0.6],['S',0.7],['S',0.8],['S',0.9],['S',1],['M',0.55],['M',0.6],['M',0.65],['M',0.7],['M',0.75]];puzzles.afterFullscreenStates=[['M',0.5],['M',0.6],['M',0.7],['M',0.8],['M',0.9],['M',1],['B',0.73333],['B',0.8],['B',0.86666],['B',0.93333],['B',1]];puzzles.minRangeIndex=0;puzzles.maxRangeIndex=puzzles.afterFullscreenStates.length-1;puzzles.scaleStatesArray=puzzles.beforeFullscreenStates;puzzles.currentScaleStateIndex=5;puzzles.fragmentsParamsArray={};puzzles.pictureCanvasCtxArray={};puzzles.pictureCanvasArray={};puzzles.sourceSpriteCtxArray={};puzzles.coloredSpriteCtxArray={};puzzles.coloredSpriteImgArray={};puzzles.ingDataArray={};var maxCount=puzzles.getMaxCount();puzzles.maxCount=maxCount;puzzles.ingDataArray['S']={'size':'S','imgSrc':puzzles.getUrl('S',puzzles.spritePath,'image/png',puzzles.type),'jsonSrc':puzzles.getUrl('S','','application/json',puzzles.type),'maxCount':maxCount};puzzles.ingDataArray['M']={'size':'M','imgSrc':puzzles.getUrl('M',puzzles.spritePath,'image/png',puzzles.type),'jsonSrc':puzzles.getUrl('M','','application/json',puzzles.type),'maxCount':maxCount};if(!puzzles.isMobileDevice){puzzles.ingDataArray['B']={'size':'B','imgSrc':puzzles.getUrl('B',puzzles.spritePath,'image/png',puzzles.type),'jsonSrc':puzzles.getUrl('B','','application/json',puzzles.type),'maxCount':maxCount};} else{puzzles.ingDataArray['B1']={'size':'B1','imgSrc':puzzles.getUrl('B1',puzzles.spritePath,'image/png',puzzles.type),'jsonSrc':puzzles.getUrl('B1','','application/json',puzzles.type),'maxCount':maxCount};puzzles.ingDataArray['B2']={'size':'B2','imgSrc':puzzles.getUrl('B2',puzzles.spritePath,'image/png',puzzles.type),'jsonSrc':puzzles.getUrl('B2','','application/json',puzzles.type),'maxCount':maxCount};} puzzles.ingDataArray['mainPicture']={'imgSrc':puzzles.pictureUrl,'maxCount':maxCount,'loadedSizeArray':[]};puzzles.MYSTERY_PICTURE_URL='/media/images/mystery_puzzle.jpg';puzzles.ingDataArray[puzzles.MYSTERY_MODE_NAME]={'size':puzzles.MYSTERY_MODE_NAME,'imgSrc':puzzles.getUrl(puzzles.MYSTERY_MODE_NAME,puzzles.MYSTERY_PICTURE_URL,currentPuzzlesParams.pictureUrlMimeType,puzzles.type),'maxCount':maxCount,'loadedSizeArray':[],} puzzles.sourceSpriteImgArray={};puzzles.pictureParamsArray={};puzzles.zoomRangeArray=[0,10];puzzles.scaleStateShift=6;puzzles.shadowParams={'shadowOffsetX':6,'shadowOffsetY':6,'shadowBlur':3,'shadowColor':'#000000','globalAlpha':0.5};puzzles.bigZIndex=10000000;puzzles.currentMaxZIndex=puzzles.currentJson.length+9;puzzles.partitioncontourArray=currentPuzzlesParams.partitioncontourArray;puzzles.bigGroupThreshold=currentPuzzlesParams.bigGroupThreshold;puzzles.partitionRectParams=currentPuzzlesParams.partitionRectParams.slice();puzzles.pauseSpriteImgArray={};puzzles.tPeriodicity=1000;puzzles.workersPath='js/';puzzles.workersArray={};puzzles.edgeOnlyMode=(edgeOnlyMode)?1:0;puzzles.previewMode=previewMode;puzzles.loadedBackImgArray={'0':1,'6':1};puzzles.currentBackImgIndex=0;puzzles.backImgQuantity=12;puzzles.backImgPath='images/backgrounds/';puzzles.touchesQuantity=0;puzzles.spriteApexArray={};puzzles.realSpriteApexArray={};puzzles.previewParamsArray={};puzzles.zoomCoef=1;puzzles.lastMovedCanvas=undefined;puzzles.hintMoveQuantity=4;puzzles.hintMoveDistanceArray={'noFullscreen':20,'fullscreen':40};puzzles.liftedHintArray={};puzzles.hintMode=0;puzzles.startAnimationQuantityArr=currentPuzzlesParams.startAnimationQuantityArr;puzzles.progressStepCount=puzzles.isMobileDevice?(maxCount+4):(maxCount+3);puzzles.progressStep=parseInt(100/puzzles.progressStepCount);puzzles.timeSum=0;puzzles.rectBevelArray=currentPuzzlesParams.rectBevelArray;puzzles.finalMenuTopArray={'1':{'top':2,'bottom':0},'-1':{'top':4,'bottom':0}};var puzzlesQuantity=currentPuzzlesParams['M'].length;var fadeInIterArray=[Math.max(Math.round(12*50/puzzlesQuantity),4),2];puzzles.startIterAnimArray=[{'fadeIn':[16,3],'fadeOut':[2,0]},{'fadeIn':fadeInIterArray,'fadeOut':[2,0]}];puzzles.caseSpiral=(puzzles.type.toLowerCase().indexOf('spiral')>-1);puzzles.capturingRectangleAdjunct=5;puzzles.capturingCornerLineWidth=3;puzzles.capturingCornerLength=20;if(!puzzles.muteOn){puzzles.muteOn=0;} puzzles.topmenuDownPos=-17;puzzles.timerStarted=0;};puzzles.getMaxCount=function(){var result=puzzles.isMobileDevice?5:4;result=puzzles.isMysteryMode()?result+1:result;return result;} puzzles.canCutoutDoubled=function(cutout){var allowedCutouts={'classic':'20|50|100|150|200|250|300|400|500','elegant':'20|50|100|150','mosaic':'20|50|100|150'};var currentCutoutArr=cutout.split(' ');var result=false;var currentCutoutType=currentCutoutArr[2].toLowerCase();if(allowedCutouts[currentCutoutType]){if(allowedCutouts[currentCutoutType].indexOf(currentCutoutArr[0])>-1){result=true;}} return result;} puzzles.getDoubleNum=function(maxDoubleNum){if(!puzzles.canCutoutDoubled(window.puzzleCutout)){return 1;} var result=parseInt(maxDoubleNum*Math.random())+1;result=Math.min(result,maxDoubleNum) return result;} window.errorHashArray=[];puzzles.errorHandler=function(msg,url,line,col,error){return true;try{var errorMsgArray={};msg=msg?msg:'';url=url?url:'';line=line?line:'';if(errorHashArray[msg+url+line]){return;} else{errorHashArray[msg+url+line]=1;} var stack='';if(error){stack=error.stack;} errorMsgArray['msg']=[msg,'errorStack: ',error.stack].(' ');errorMsgArray['url']=url;errorMsgArray['line']=line;errorMsgArray['puzzleId']=window.puzzleId;errorMsgArray['cutout']=window.puzzleCutout;errorMsgArray['gameClientType']=window.gameClientType;if('store'in window){errorMsgArray['storeEnabled']=store.enabled;} try{errorMsgArray['fullscreenMode']=(puzzles.fullscreenMode==1)?false:true;} catch(e){errorMsgArray['fullscreenMode']=false;};if('jscd'in window){errorMsgArray['os']=jscd.os+' '+jscd.osVersion;errorMsgArray['browser']=jscd.browser+' '+jscd.browserVersion;errorMsgArray['isMobile']=jscd.mobile;errorMsgArray['screenSize']=jscd.screen;} errorMsgArray['fullAgent']=navigator.Agent;var errorMsgStr='error_post='+JSON.stringify(errorMsgArray);var xhr=new XMLHttpRequest();xhr.open('POST','/_err',true);xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xhr.send(errorMsgStr);} catch(e){if(window.debug){console.error(e.name,e.stack,e.message);}}};window.onerror=puzzles.errorHandler;puzzles.fullscreenModeContainerResize=function(evt){puzzles.noActionDiv.css({'display':'block'});var fullscreenModeFlag=puzzles.fullscreenMode;var backgroundDiv=puzzles.backgroundDiv;var mainCanvas=puzzles.mainCanvas;var fullScreenWidth,fullscreenHeight;if(puzzles.isMobileDevice||window.chrome){fullScreenWidth='100%';fullscreenHeight='100%';} else{fullScreenWidth=screen.width+'px';fullscreenHeight=screen.height+'px';if(puzzles.ie10){fullScreenWidth=window.innerWidth+'px';fullscreenHeight=window.innerHeight+'px';}} if(fullscreenModeFlag==1){document.documentElement.style.overflow='hidden';document.body.style.overflow='hidden';backgroundDiv.style.width=fullScreenWidth;backgroundDiv.style.height=fullscreenHeight;mainCanvas.style.width=fullScreenWidth;mainCanvas.style.height=fullscreenHeight;puzzles.mainCanvasCtx.canvas.width=parseInt(mainCanvas.getElementComputedStyle('width'));puzzles.mainCanvasCtx.canvas.height=parseInt(mainCanvas.getElementComputedStyle('height'));try{document.getElementById('Button').style.display='none';} catch(e){};} if(fullscreenModeFlag==-1){document.documentElement.style.overflow='';document.body.style.overflow='';puzzles.setDomParams(backgroundDiv,0,{'width':puzzles.containerDivWidth,'height':puzzles.containerDivHeight});puzzles.setDomParams(mainCanvas,puzzles.mainCanvasCtx,{'width':puzzles.containerDivWidth,'height':puzzles.containerDivHeight});puzzles.escapeKeyDown();document.getElementById('Button').style.display='';} puzzles.mainCanvasCtx.strokeStyle='#3d9ff1';fullscreenModeFlag*=-1;puzzles.fullscreenMode=fullscreenModeFlag;puzzles.setStatesArray();puzzles.backgroundDiv.classList.toggle('fullscreenMode');setTimeout(function(){puzzles.doFragmentZoom(puzzles.currentScaleStateIndex,puzzles.currentScaleStateIndex,fullscreenModeFlag);},1) if(evt&!puzzles.svgClassFlag){puzzles.setActualSvgClass(document.querySelector('.rightBottom'),'fs');puzzles.svgClassFlag=false}} puzzles.escapeKeyDown=function(){var helpImageDiv=document.querySelector('.helpImageDiv');if(puzzles.fullscreenMode==-1&helpImageDiv.css('display')=='block'){helpImageDiv.style.width='';helpImageDiv.style.height='';puzzles.setDivToCenter(helpSmallImg);} if(puzzles.pauseMode){setTimeout(function(){puzzles.setDivToCenter(document.getElementById('pauseMessageDiv'));},0);}} puzzles.fullscreenButtonClick=function(evt){evt.stopPropagation();puzzles.processFullscreenMode();puzzles.p_buttonsArray.attr('disabled',false);} puzzles.makeFullScreenMode=function(){var divObj=puzzles.backgroundDiv;if(divObj.requestFullscreen){divObj.requestFullscreen();} else if(divObj.msRequestFullscreen){divObj.msRequestFullscreen();} else if(divObj.mozRequestFullScreen){divObj.mozRequestFullScreen();} else if(divObj.webkitRequestFullscreen){divObj.webkitRequestFullscreen();}} puzzles.resetFullScreenMode=function(){if(document.exitFullscreen){document.exitFullscreen();} else if(document.msExitFullscreen){document.msExitFullscreen();} else if(document.mozCancelFullScreen){document.mozCancelFullScreen();} else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen();}} puzzles.processFullscreenMode=function(){if(puzzles.fullscreenMode==1){puzzles.makeFullScreenMode();} else{puzzles.resetFullScreenMode();}};puzzles.addFullScreenModeEventListener=function(){if('onfullscreenchange'in document){document.addEventListener('fullscreenchange',puzzles.fullscreenModeContainerResize);document.addEventListener('fullscreenchange',puzzles.interfaceResize);} else if('onwebkitfullscreenchange'in document){document.addEventListener('webkitfullscreenchange',puzzles.fullscreenModeContainerResize);document.addEventListener('webkitfullscreenchange',puzzles.interfaceResize);} else if('onwebkitfullScreenchange'in document){document.addEventListener('webkitfullScreenchange',puzzles.fullscreenModeContainerResize);document.addEventListener('webkitfullScreenchange',puzzles.interfaceResize);} else if('onmozfullscreenchange'in document){document.addEventListener('mozfullscreenchange',puzzles.fullscreenModeContainerResize);document.addEventListener('mozfullscreenchange',puzzles.interfaceResize);} else if('onmsfullscreenchange'in document){document.addEventListener('MSFullscreenChange',puzzles.fullscreenModeContainerResize);document.addEventListener('MSFullscreenChange',puzzles.interfaceResize);}} puzzles.deleteFullScreenModeEventListener=function(){if('onfullscreenchange'in document){document.removeEventListener('fullscreenchange',puzzles.fullscreenModeContainerResize);document.removeEventListener('fullscreenchange',puzzles.interfaceResize);} else if('onwebkitfullscreenchange'in document){document.removeEventListener('webkitfullscreenchange',puzzles.fullscreenModeContainerResize);document.removeEventListener('webkitfullscreenchange',puzzles.interfaceResize);} else if('onmozfullscreenchange'in document){document.removeEventListener('mozfullscreenchange',puzzles.fullscreenModeContainerResize);document.removeEventListener('mozfullscreenchange',puzzles.interfaceResize);} else if('onmsfullscreenchange'in document){document.removeEventListener('MSFullscreenChange',puzzles.fullscreenModeContainerResize);document.removeEventListener('MSFullscreenChange',puzzles.interfaceResize);}} puzzles.setDefaultZoom=function(fullscreenModeFlag){if(puzzles.modernIe){return;} var currentZoom=window.devicePixelRatio;var backgroundDiv=puzzles.backgroundDiv;if(puzzles.backgroundDiv.css('zoom')&window.chrome){var webkitZoom;try{webkitZoom=(fullscreenModeFlag==1)?100/currentZoom:100;webkitZoom+='%';} catch(e){} backgroundDiv.css({'zoom':webkitZoom});if(fullscreenModeFlag==1){puzzles.getPageCoords=function(evt){return{'x':evt.screenX,'y':evt.screenY};}} else{puzzles.getPageCoords=function(evt){return{'x':evt.pageX,'y':evt.pageY};}}}} puzzles.myImage=function(){var img=new Image();img.crossOrigin="Anonymous";return img;} puzzles.getDomParams=function(div){var left,top,width,height;if(div.dataObj&div.dataObj.hasOwnProperty('jsonIndex')){left=div.dataObj['left'];top=div.dataObj['top'];width=div.dataObj['width'];height=div.dataObj['height'];} else{left=Math.round(parseFloat(div.getElementComputedStyle('left')));top=Math.round(parseFloat(div.getElementComputedStyle('top')));width=Math.round(parseFloat(div.getElementComputedStyle('width')));height=Math.round(parseFloat(div.getElementComputedStyle('height')));} return{'left':left,'top':top,'width':width,'height':height};};puzzles.setDomParams=function(canvas,ctx,styleObj){canvas.css(styleObj);if(ctx){if(styleObj['width']){if(!isNaN(styleObj['width'])){ctx.canvas.width=styleObj['width'];} else{ctx.canvas.width=Math.round(parseFloat(canvas.getElementComputedStyle('width')));}} if(styleObj['height']){if(!isNaN(styleObj['height'])){ctx.canvas.height=styleObj['height'];} else{ctx.canvas.height=MAth.round(parseFloat(canvas.getElementComputedStyle('height')));}}}};puzzles.calculatePartitionParams=function(sizeType){var json=puzzles.jsonsArray[sizeType];puzzles.angleMode=puzzles.getAngleMode();var quantity=json.length;var maxWidth=-1;var maxHeight=-1;var partitionSIzes=puzzles.getPartitionSizes(json);var sourcePartitionWidth=partitionSIzes.width;var sourcePartitionHeight=partitionSIzes.height;var partitionWidth,partitionHeight;if(puzzles.pictureOrientation){partitionWidth=sourcePartitionWidth;partitionHeight=sourcePartitionHeight;} else{partitionWidth=sourcePartitionHeight;partitionHeight=sourcePartitionWidth;} var actualPartitionRectParams=puzzles.getActualRectParams();var spriteColQuantity=actualPartitionRectParams[0];var spriteRowQuantity=actualPartitionRectParams[1];if(puzzles.angleMode){var correctedJson=[];var rotationFunc=puzzles.getRotationFunc(puzzles.angleMode);var maxObj={'maxWidth':maxWidth,'maxHeight':maxHeight};rotLoop:for(var row=0,index=0;row=quantity){break rotLoop;} rotationFunc(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,sourcePartitionWidth,sourcePartitionHeight);++index;}} maxWidth=maxObj.maxWidth;maxHeight=maxObj.maxHeight;json=correctedJson;puzzles.jsonsArray[sizeType]=json;} else{for(var i=0;i-maxHeight;spriteTop-=maxHeight){if(index>=quantity){break loop1;} var correctedSpriteLeft=spriteLeft+adjunctVector[0]*(maxWidth-json[index][2]);var correctedSpriteTop=spriteTop+adjunctVector[1]*(maxHeight-json[index][3]);if(sizeType=='B'&correctedSpriteTop>sprite1Height){correctedSpriteTop-=sprite1Height;} nextSpriteApexArray.push([correctedSpriteLeft,correctedSpriteTop]);realSpriteApexArray.push([spriteLeft,spriteTop]);++index;}}} else{loop1:for(var spriteLeft=0,index=0;spriteLeft-maxHeight;spriteTop-=maxHeight){if(index>=quantity){break loop1;} var correctedSpriteLeft=spriteLeft+adjunctVector[0]*(maxWidth-json[index][2]);var correctedSpriteTop=spriteTop+adjunctVector[1]*(maxHeight-json[index][3]);nextSpriteApexArray.push([correctedSpriteLeft,correctedSpriteTop]);realSpriteApexArray.push([spriteLeft,spriteTop]);++index;}}}} else{if(puzzles.isMobileDevice){loop1:for(var spriteTop=0,index=0;spriteTop=quantity){break loop1;} var correctedSpriteLeft=spriteLeft+adjunctVector[0]*(maxWidth-json[index][2]);var correctedSpriteTop=spriteTop+adjunctVector[1]*(maxHeight-json[index][3]);if(sizeType=='B'&index>sprite1PuzzlesNum){correctedSpriteTop-=sprite1Height;} nextSpriteApexArray.push([correctedSpriteLeft,correctedSpriteTop]);realSpriteApexArray.push([spriteLeft,spriteTop]);++index;}}} else{loop1:for(var spriteTop=0,index=0;spriteTop=quantity){break loop1;} var correctedSpriteLeft=spriteLeft+adjunctVector[0]*(maxWidth-json[index][2]);var correctedSpriteTop=spriteTop+adjunctVector[1]*(maxHeight-json[index][3]);nextSpriteApexArray.push([correctedSpriteLeft,correctedSpriteTop]);realSpriteApexArray.push([spriteLeft,spriteTop]);++index;}}}}} puzzles.getRotationFunc=function(angleMode){var rotationFunc;switch(angleMode){case'90':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=spriteColQuantity-1-column;var inColumn=row;var inIndex=inRow*spriteRowQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[partitionHeight-inFrag[1]-inFrag[3],inFrag[0],inFrag[3],inFrag[2]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[3]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[2]);};break;case'180':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=spriteRowQuantity-1-row;var inColumn=spriteColQuantity-1-column;var inIndex=inRow*spriteColQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[partitionWidth-inFrag[0]-inFrag[2],partitionHeight-inFrag[1]-inFrag[3],inFrag[2],inFrag[3]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[2]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[3]);};break;case'270':if(puzzles.caseSpiral){rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=column;var inColumn=spriteRowQuantity-1-row;var inIndex=inRow*spriteRowQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} var frag=json[index];correctedJson[index]=[frag[1],partitionWidth-frag[0]-frag[2],frag[3],frag[2]];maxObj.maxWidth=Math.max(maxObj.maxWidth,frag[3]);maxObj.maxHeight=Math.max(maxObj.maxHeight,frag[2]);};} else{rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=column;var inColumn=spriteRowQuantity-1-row;var inIndex=inRow*spriteRowQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[inFrag[1],partitionWidth-inFrag[0]-inFrag[2],inFrag[3],inFrag[2]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[3]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[2]);};} break;case's0':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=row;var inColumn=spriteColQuantity-1-column;var inIndex=inRow*spriteColQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[partitionWidth-inFrag[0]-inFrag[2],inFrag[1],inFrag[2],inFrag[3]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[2]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[3]);};break;case's90':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=spriteColQuantity-1-column;var inColumn=spriteRowQuantity-1-row;var inIndex=inRow*spriteRowQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[partitionHeight-inFrag[1]-inFrag[3],partitionWidth-inFrag[0]-inFrag[2],inFrag[3],inFrag[2]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[3]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[2]);};break;case's180':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=spriteRowQuantity-1-row;var inColumn=column;var inIndex=inRow*spriteColQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[inFrag[0],partitionHeight-inFrag[1]-inFrag[3],inFrag[2],inFrag[3]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[2]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[3]);};break;case's270':rotationFunc=function(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,partitionWidth,partitionHeight){var inRow=column;var inColumn=row;var inIndex=inRow*spriteRowQuantity+inColumn;var inFrag=json[inIndex];if(!maxObj){return correctedJson[index]=inFrag;} correctedJson[index]=[inFrag[1],inFrag[0],inFrag[3],inFrag[2]];maxObj.maxWidth=Math.max(maxObj.maxWidth,inFrag[3]);maxObj.maxHeight=Math.max(maxObj.maxHeight,inFrag[2]);};break;};return rotationFunc;} puzzles.getRotatedJsonParams=function(angleMode,json,inIndex,partitionWidth,partitionHeight){var inFrag=json[inIndex];if(!angleMode){return inFrag;} switch(angleMode){case'90':return[partitionHeight-inFrag[1]-inFrag[3],inFrag[0],inFrag[3],inFrag[2]];case'180':return[partitionWidth-inFrag[0]-inFrag[2],partitionHeight-inFrag[1]-inFrag[3],inFrag[2],inFrag[3]];case'270':return[inFrag[1],partitionWidth-inFrag[0]-inFrag[2],inFrag[3],inFrag[2]];case's0':return[partitionWidth-inFrag[0]-inFrag[2],inFrag[1],inFrag[2],inFrag[3]];case's90':return[partitionHeight-inFrag[1]-inFrag[3],partitionWidth-inFrag[0]-inFrag[2],inFrag[3],inFrag[2]];case's180':return[inFrag[0],partitionHeight-inFrag[1]-inFrag[3],inFrag[2],inFrag[3]];case's270':return[inFrag[1],inFrag[0],inFrag[3],inFrag[2]];}} puzzles.getRotatedIndex=function(angleMode,index){var spriteColQuantity=window.currentPuzzlesParams.partitionRectParams[0];var spriteRowQuantity=window.currentPuzzlesParams.partitionRectParams[1];var column=index%spriteColQuantity;var row=parseInt((index-column)/spriteColQuantity);var inIndex=index;switch(angleMode){case'90':var inRow=spriteColQuantity-1-column;var inColumn=row;inIndex=inRow*spriteRowQuantity+inColumn;break;case'180':var inRow=spriteRowQuantity-1-row;var inColumn=spriteColQuantity-1-column;inIndex=inRow*spriteColQuantity+inColumn;break;case'270':var inRow=column;var inColumn=spriteRowQuantity-1-row;inIndex=inRow*spriteRowQuantity+inColumn;break;case's0':var inRow=row;var inColumn=spriteColQuantity-1-column;inIndex=inRow*spriteColQuantity+inColumn;break;case's90':var inRow=spriteColQuantity-1-column;var inColumn=spriteRowQuantity-1-row;inIndex=inRow*spriteRowQuantity+inColumn;break;case's180':var inRow=spriteRowQuantity-1-row;var inColumn=column;inIndex=inRow*spriteColQuantity+inColumn;break;case's270':var inRow=column;var inColumn=row;inIndex=inRow*spriteRowQuantity+inColumn;break;} return inIndex;} puzzles.getPartitionSizes=function(json){if(puzzles.caseSpiral){var width=json[0][0]+json[0][2];var height=json[0][1]+json[0][3];for(var i=1,jsonLength=json.length;i=mainCanvasHeight);var modelScaleCoef;if(orientationFlag){modelScaleCoef=mainCanvasHeight/puzzles.containerDivHeight;} else{modelScaleCoef=mainCanvasWidth/puzzles.containerDivWidth;} puzzles.modelScaleCoef=modelScaleCoef;var getStatesRatio=function(beforeIndex,afterIndex){var afterState=puzzles.afterFullscreenStates[afterIndex][0];var afterCoef=puzzles.afterFullscreenStates[afterIndex][1];var beforeState=puzzles.beforeFullscreenStates[beforeIndex][0];var beforeCoef=puzzles.beforeFullscreenStates[beforeIndex][1];var result;if(orientationFlag){result=puzzles.fragmentsParamsArray[afterState]['partitionHeight']*afterCoef/(puzzles.fragmentsParamsArray[beforeState]['partitionHeight']*beforeCoef);} else{result=puzzles.fragmentsParamsArray[afterState]['partitionWidth']*afterCoef/(puzzles.fragmentsParamsArray[beforeState]['partitionWidth']*beforeCoef);} return result;} var middleStateIndex=parseInt(puzzles.beforeFullscreenStates.length*0.5);var scaleStateIndex=middleStateIndex;var currentScaleCoef=getStatesRatio(middleStateIndex,middleStateIndex);var diff=Math.abs(currentScaleCoef-modelScaleCoef);var length=puzzles.afterFullscreenStates.length;for(var i=0;iMath.abs(topDiff)){return leftDiff;} else{return topDiff;}} puzzles.sortByZIndex=function(arr){arr.sort(puzzles.compareByZIndex);return arr;} puzzles.getExactClickedCanvas=function(currentCanvas,pageX,pageY,allCanvasArray){if(!allCanvasArray){allCanvasArray=puzzles.edgeOnlyMode?document.getElementsByClassName('edgeFrag'):document.getElementsByClassName('fragmentsCanvasClass');} var yellowCanvas;var yellowZIndex=-1;var currentZIndex=(currentCanvas)?currentCanvas.css('z-index'):undefined;var getOnCanvasCoords=puzzles.getOnCanvasCoords;var isNonTranspPoint=puzzles.isNonTranspPoint;for(var i=0,allSize=allCanvasArray.size();icurrentZIndex){continue;} var nextCanvasCoords=getOnCanvasCoords(nextCanvas,pageX,pageY);if(isNonTranspPoint(nextCanvas.dataObj['ctx'],nextCanvasCoords.x,nextCanvasCoords.y)&yellowZIndex-1&&j-1-1&&i-1stepParamsObj.threshold){stepParamsObj.stepCallback(elem);}} else{elem.isAnimated=false;cssObj[aProperty]=finalValue;elem.css(cssObj);if(completeCallback){completeCallback(elem,lsPuzzlesArray);}}} puzzles.calculateGroupBounds=function(groupArray){var minLeft=1000000;var minTop=1000000;var minWidth=-1000000;var minHeight=-1000000;for(var i=0,size=groupArray.size();i=bigHeight){if(bigWidth/bigHeight>=smallWidth/smallHeight){paramsArray[3]=bigHeight;paramsArray[2]=bigHeight*(smallWidth/smallHeight);} else{paramsArray[2]=bigWidth;paramsArray[3]=bigWidth*(smallHeight/smallWidth);} paramsArray[0]=0.5*(bigWidth-paramsArray[2]);paramsArray[1]=0.5*(bigHeight-paramsArray[3]);} else{paramsArray[0]=0;paramsArray[1]=Math.max(0,0.5*(bigHeight-bigWidth*(smallHeight/smallWidth)));paramsArray[2]=bigWidth;paramsArray[3]=Math.min(bigHeight,bigWidth*(smallHeight/smallWidth));} return paramsArray;} puzzles.getActualRectParams=function(){if(puzzles.pictureOrientation){return puzzles.partitionRectParams;} else{return[puzzles.partitionRectParams[1],puzzles.partitionRectParams[0]];}} puzzles.setActualSvgClass=function(svgObject,className){svgObject.classList.toggle(className);} puzzles.callExternalFunc=function(funcName,funcArgs){var result;try{var result;if(window[funcName]){result=(Array.isArray(funcArgs))?window[funcName].apply(window,funcArgs):window[funcName].call(window,funcArgs);} else if(window.parent[funcName]){result=(Array.isArray(funcArgs))?window.parent[funcName].apply(window.parent,funcArgs):window.parent[funcName].call(window.parent,funcArgs);}} catch(e){if(window.debug){console.error('name: '+e.name+' message: '+e.message+' stack: '+e.stack);}} return result;} puzzles.getTargetSvgParent=function(targetSvg){var svgElement=targetSvg;try{do{var nodeName=svgElement.nodeName.toLowerCase();if(nodeName=='svg'){return svgElement.parentElement;} svgElement=svgElement.parentElement}while(svgElement);} catch(e){};return null;} puzzles.isMsTouchDevice=function(){return'msMaxTouchPoints'in navigator;} puzzles.isTouchDevice=function(){return('ontouchstart'in window)||puzzles.isMsTouchDevice();};puzzles.workerCapable=function(){var Agent=navigator.Agent.toLowerCase();if(Agent.indexOf('iphone')>-1||puzzles.isKindle||Agent.indexOf('huawei')>-1||Agent.indexOf('lenovo')>-1){return false;} var androidIndex=Agent.indexOf('android');if(androidIndex>-1){var versionIndex=Agent.indexOf(' ',androidIndex);var nextSpaceIndex=Agent.indexOf(' ',versionIndex+1);var version=Agent.substring(versionIndex,nextSpaceIndex);version=parseFloat(version);if(version==2.1||version>4.3){return true;} else{return false;}} else{if(Agent.indexOf('linux')>-1&Agent.indexOf('chrome')>-1){return false;}} return!!window.Worker;} puzzles.stackBoxBlurCanvasRGBA=function(context,imageData,top_x,top_y,offsetX,offsetY,width,height,radius,iterations){var mul_table=[1,171,205,293,57,373,79,137,241,27,391,357,41,19,283,265,497,469,443,421,25,191,365,349,335,161,155,149,9,278,269,261,505,245,475,231,449,437,213,415,405,395,193,377,369,361,353,345,169,331,325,319,313,307,301,37,145,285,281,69,271,267,263,259,509,501,493,243,479,118,465,459,113,446,55,435,429,423,209,413,51,403,199,393,97,3,379,375,371,367,363,359,355,351,347,43,85,337,333,165,327,323,5,317,157,311,77,305,303,75,297,294,73,289,287,71,141,279,277,275,68,135,67,133,33,262,260,129,511,507,503,499,495,491,61,121,481,477,237,235,467,232,115,457,227,451,7,445,221,439,218,433,215,427,425,211,419,417,207,411,409,203,202,401,399,396,197,49,389,387,385,383,95,189,47,187,93,185,23,183,91,181,45,179,89,177,11,175,87,173,345,343,341,339,337,21,167,83,331,329,327,163,81,323,321,319,159,79,315,313,39,155,309,307,153,305,303,151,75,299,149,37,295,147,73,291,145,289,287,143,285,71,141,281,35,279,139,69,275,137,273,17,271,135,269,267,133,265,33,263,131,261,130,259,129,257,1];var shg_table=[0,9,10,11,9,12,10,11,12,9,13,13,10,9,13,13,14,14,14,14,10,13,14,14,14,13,13,13,9,14,14,14,15,14,15,14,15,15,14,15,15,15,14,15,15,15,15,15,14,15,15,15,15,15,15,12,14,15,15,13,15,15,15,15,16,16,16,15,16,14,16,16,14,16,13,16,16,16,15,16,13,16,15,16,14,9,16,16,16,16,16,16,16,16,16,13,14,16,16,15,16,16,10,16,15,16,14,16,16,14,16,16,14,16,16,14,15,16,16,16,14,15,14,15,13,16,16,15,17,17,17,17,17,17,14,15,17,17,16,16,17,16,15,17,16,17,11,17,16,17,16,17,16,17,17,16,17,17,16,17,17,16,16,17,17,17,16,14,17,17,17,17,15,16,14,16,15,16,13,16,15,16,14,16,15,16,12,16,15,16,17,17,17,17,17,13,16,15,17,17,17,16,15,17,17,17,16,15,17,17,14,16,17,17,16,17,17,16,15,17,16,14,17,16,15,17,16,17,17,16,17,15,16,17,14,17,16,15,17,16,17,13,17,16,17,17,16,17,14,17,16,17,16,17,16,17,9];var pixels=imageData.data;var x,y,i,p,yp,yi,yw,a_sum,pa;var div=radius+radius+1;var w4=width<<2;var widthMinus1=width-1;var heightMinus1=height-1;var radiusPlus1=radius+1;var stackStart={'a':0,'next':null};var stack=stackStart;for(i=1;i0){yw=yi=0;for(y=height;--y>-1;){a_sum=radiusPlus1*(pa=pixels[yi+3]);stack=stackStart;for(i=radiusPlus1;--i>-1;){stack.a=pa;stack=stack.next;} for(i=1;i>>shg_sum;p=(yw+((p=x+radius+1)>>shg_sum;p=(x+(((p=y+radiusPlus1)0){yw=yi=0;for(y=height;--y>-1;){a_sum=radiusPlus1*(pa=pixels[yi+3]);stack=stackStart;for(i=radiusPlus1;--i>-1;){stack.a=pa;stack=stack.next;} for(i=1;i>>shg_sum;p=(yw+((p=x+radius+1)>>shg_sum;p=(x+(((p=y+radiusPlus1)>8){bevelR=255;} bevelG=mainImDataArray[maskIndex+1]+dif;if(bevelG>>8){bevelG=255;} bevelB=mainImDataArray[maskIndex+2]+dif;if(bevelB>>8){bevelB=255;}} bevel32Bit[bevelIndex]=(maskAlpha<<24)|(bevelB<<16)|(bevelG<<8)|bevelR;}} if(bevelData.data.set){bevelData.data.set(bevel8Bit);} else{bevelData.data=bevel8Bit;} return bevelData;};puzzles.msDrawBevel=function(mainImDataArray,maskImDataArray,json,maskWidth,maskHeight,bevelData){var w=maskWidth;var h=maskHeight;var dataLength=w*h;var pixels=bevelData.data;for(var bevelIndex=0,maskIndex=0,maskR=0,maskAlpha=0,maskG=0,dif=0,bevelR=0,bevelG=0,bevelB=0;bevelIndex>8){bevelR=255;} bevelG=mainImDataArray[maskIndex+1]+dif;if(bevelG>>8){bevelG=255;} bevelB=mainImDataArray[maskIndex+2]+dif;if(bevelB>>8){bevelB=255;}} pixels[maskIndex]=bevelR;pixels[maskIndex+1]=bevelG;pixels[maskIndex+2]=bevelB;pixels[maskIndex+3]=maskAlpha;}} if(bevelData.data.set){bevelData.data.set(pixels);} else{bevelData.data=pixels;} return bevelData;} puzzles.clearRectEdge=function(ctx,rectData){if(!rectData){return;} var rectLeft=rectData.rectLeft;var rectRight=rectData.rectRight;var rectTop=rectData.rectTop;var rectBottom=rectData.rectBottom;var diff=3;var diff2=diff*2;ctx.clearRect(rectLeft-diff,rectTop-diff,rectRight-rectLeft+diff2,diff2);ctx.clearRect(rectRight-diff,rectTop-diff,diff2,rectBottom-rectTop+diff2);ctx.clearRect(rectLeft-diff,rectBottom-diff,rectRight-rectLeft+diff2,diff2);ctx.clearRect(rectLeft-diff,rectTop-diff,diff2,rectBottom-rectTop+diff2);} puzzles.drawFinalCanvas=function(pictureWidth,pictureHeight,finalCanvasWidth,finalCanvasHeight,sizeType,finalCanvasCtx,picture){var pictureParamsArray=puzzles.getProportParams(pictureWidth,pictureHeight,finalCanvasWidth,finalCanvasHeight);var coef1=finalCanvasWidth/finalCanvasHeight;finalCanvasCtx.drawImage(picture,pictureParamsArray[0],pictureParamsArray[1],pictureParamsArray[2],pictureParamsArray[3],0,0,finalCanvasWidth,finalCanvasHeight);var mainImData=finalCanvasCtx.getImageData(0,0,finalCanvasWidth,finalCanvasHeight);var bevelData=puzzles.drawFinalBevel(mainImData.data,finalCanvasCtx.createImageData(finalCanvasWidth,finalCanvasHeight),mainImData.width,mainImData.height,sizeType);finalCanvasCtx.putImageData(bevelData,0,0);} puzzles.drawCapturingTray=function(capturingCtx){var capturingAdjunct=puzzles.capturingRectangleAdjunct;var cornerWidth=puzzles.capturingCornerLineWidth;var cornerWidthHalf=Math.ceil(0.5*cornerWidth);var capturingCornerLength=puzzles.capturingCornerLength;var fullCapturingAdjunct=capturingAdjunct+cornerWidth;var cornerColor='#647784';var trayColor='#bed2ee';capturingCtx.save();capturingCtx.fillStyle=trayColor;capturingCtx.globalAlpha=0.4;var canvasWidth=capturingCtx.canvas.width;var canvasHeight=capturingCtx.canvas.height;capturingCtx.fillRect(cornerWidth,cornerWidth,canvasWidth-2*cornerWidth,canvasHeight-2*cornerWidth);capturingCtx.restore();capturingCtx.save();capturingCtx.lineWidth=cornerWidth;capturingCtx.strokeStyle=cornerColor;capturingCtx.lineCap='round';capturingCtx.beginPath();capturingCtx.moveTo(cornerWidthHalf,cornerWidthHalf);capturingCtx.lineTo(cornerWidthHalf+capturingCornerLength,cornerWidthHalf);capturingCtx.moveTo(cornerWidthHalf,cornerWidthHalf);capturingCtx.lineTo(cornerWidthHalf,cornerWidthHalf+capturingCornerLength);capturingCtx.moveTo(canvasWidth-cornerWidthHalf,cornerWidthHalf);capturingCtx.lineTo(canvasWidth-capturingCornerLength-cornerWidthHalf,cornerWidthHalf);capturingCtx.moveTo(canvasWidth-cornerWidthHalf,cornerWidthHalf);capturingCtx.lineTo(canvasWidth-cornerWidthHalf,capturingCornerLength+cornerWidthHalf);capturingCtx.moveTo(canvasWidth-cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.lineTo(canvasWidth-cornerWidthHalf,canvasHeight-capturingCornerLength-cornerWidthHalf);capturingCtx.moveTo(canvasWidth-cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.lineTo(canvasWidth-capturingCornerLength-cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.moveTo(cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.lineTo(capturingCornerLength+cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.moveTo(cornerWidthHalf,canvasHeight-cornerWidthHalf);capturingCtx.lineTo(cornerWidthHalf,canvasHeight-capturingCornerLength-cornerWidthHalf);capturingCtx.stroke();capturingCtx.restore();} puzzles.MYSTERY_SIZE='S';puzzles.isMysteryMode=function(){return window.puzzleMode===puzzles.MYSTERY_MODE_NAME;} puzzles.prepareMysteryPictureCanvas=function(pictureImg){var realSize=puzzles.MYSTERY_SIZE;if(puzzles.mysteryCanvas){return;} puzzles.mysteryParams=new Array();var pictureWidth=pictureImg.width;var pictureHeight=pictureImg.height;console.log('prepareMysteryPictureCanvas',puzzles.fragmentsParamsArray[realSize]) var partitionWidth=puzzles.fragmentsParamsArray[realSize]['partitionWidth'];var partitionHeight=puzzles.fragmentsParamsArray[realSize]['partitionHeight'];puzzles.mysteryParams=puzzles.getProportParams(pictureWidth,pictureHeight,partitionWidth,partitionHeight);var pictureCanvas=document.createElement('CANVAS');var pictureCanvasCtx=pictureCanvas.getContext('2d');puzzles.setDomParams(pictureCanvas,pictureCanvasCtx,{'width':partitionWidth,'height':partitionHeight});pictureCanvasCtx.drawImage(pictureImg,puzzles.mysteryParams[0],puzzles.mysteryParams[1],puzzles.mysteryParams[2],puzzles.mysteryParams[3],0,0,partitionWidth,partitionHeight);puzzles.mysteryCanvas=pictureCanvas;};puzzles.drawMysterySprite=function(){var realSize=puzzles.MYSTERY_SIZE;var pictureCanvas=puzzles.mysteryCanvas;var pictureImg=new Image();var pictureImgBase64=pictureCanvas.toDataURL();pictureImg.onload=function(){var mainFragSpriteCanvas=document.createElement('CANVAS');var mainFragsSpriteCtx=mainFragSpriteCanvas.getContext('2d');var json=puzzles.jsonsArray[realSize];var sourceSpriteCanvasCtx=puzzles.sourceSpriteCtxArray[realSize];var coloredSpriteCanvasCtx=puzzles.coloredSpriteCtxArray[realSize];var maskWidth=sourceSpriteCanvasCtx.canvas.width;var maskHeight=sourceSpriteCanvasCtx.canvas.height;puzzles.setDomParams(mainFragSpriteCanvas,mainFragsSpriteCtx,{'width':maskWidth,'height':maskHeight});var spriteApexArray=puzzles.spriteApexArray[realSize];puzzles.drawMainRectFragments(json,pictureImg,spriteApexArray,mainFragsSpriteCtx);var mainImData=mainFragsSpriteCtx.getImageData(0,0,maskWidth,maskHeight);var mainImDataArray=mainImData.data;var maskImData=sourceSpriteCanvasCtx.getImageData(0,0,maskWidth,maskHeight);var maskImDataArray=maskImData.data;var bevelData=coloredSpriteCanvasCtx.createImageData(maskWidth,maskHeight);if(puzzles.vCapable){var worker=new Worker(puzzles.getUrl('worker',puzzles.workersPath+puzzles.workerFileName));puzzles.workersArray[puzzles.MYSTERY_MODE_NAME]=worker;worker.addEventListener('message',puzzles.mysteryWorkerOnMessage);worker.postMessage({'mainImDataArray':mainImDataArray,'maskImDataArray':maskImDataArray,'json':json,'maskWidth':maskWidth,'maskHeight':maskHeight,'bevelData':bevelData,'sizeType':puzzles.MYSTERY_MODE_NAME});} else{var newBevelData=puzzles.drawBevel(mainImDataArray,maskImDataArray,json,maskWidth,maskHeight,bevelData);puzzles.mysteryWorkerOnMessage({'data':{'sizeType':puzzles.MYSTERY_MODE_NAME,'bevelData':newBevelData}});}} pictureImg.src=pictureImgBase64;};puzzles.mysteryWorkerOnMessage=function(evt){puzzles.doProgressStep();var msgData=evt.data;var bevelData=msgData.bevelData;var realSize=puzzles.MYSTERY_SIZE;var coloredSpriteCanvasCtx=puzzles.coloredSpriteCtxArray[realSize];coloredSpriteCanvasCtx.putImageData(bevelData,0,0);var coloredSpriteImg=new Image();puzzles.coloredSpriteImgArray[puzzles.MYSTERY_MODE_NAME]=coloredSpriteImg;coloredSpriteImg.sizeType=puzzles.MYSTERY_MODE_NAME;coloredSpriteImg.onload=function(){var sizeType=this.sizeType;if(!puzzles.initAnimateStarted&realSize=='B'){puzzles.initAnimateStarted=1;window.requestAnimFrame(function(){puzzles.prepareInitAnimate();}) return;}};coloredSpriteImg.src=coloredSpriteCanvasCtx.canvas.toDataURL();} puzzles.drawInitSecondaryCanvas=function(initSecondaryCanvasCtx,contour,animatePictureLeft,animatePictureTop,partitionWidth,partitionHeight,initScaleCoef,initSizeType){if(puzzles.isMysteryMode()){initSecondaryCanvasCtx.drawImage(puzzles.MYSTERY_PICTURE,puzzles.mysteryParams[0]+contour,puzzles.mysteryParams[1]+contour,puzzles.mysteryParams[2]-2*contour,puzzles.mysteryParams[3]-2*contour,animatePictureLeft+contour,animatePictureTop+contour,partitionWidth*initScaleCoef-2*contour,partitionHeight*initScaleCoef-2*contour);}else{initSecondaryCanvasCtx.drawImage(puzzles.currentPicture,puzzles.pictureParamsArray[initSizeType][0]+contour,puzzles.pictureParamsArray[initSizeType][1]+contour,puzzles.pictureParamsArray[initSizeType][2]-2*contour,puzzles.pictureParamsArray[initSizeType][3]-2*contour,animatePictureLeft+contour,animatePictureTop+contour,partitionWidth*initScaleCoef-2*contour,partitionHeight*initScaleCoef-2*contour);}} puzzles.prepareMysterySprite=function(mysteryPictureImg){puzzles.prepareMysteryPictureCanvas(mysteryPictureImg);puzzles.drawMysterySprite();} puzzles.drawInitFragment=function(initSizeType,nextIndex,initScaleCoef,nextFragmentCtx,isMysteryFragment){var nextFramentParams=puzzles.jsonsArray[initSizeType][nextIndex];var spriteApexArray=puzzles.spriteApexArray[initSizeType];var spriteCoords=spriteApexArray[nextIndex];var coloredSpriteImg;if(!isMysteryFragment){coloredSpriteImg=puzzles.coloredSpriteImgArray[initSizeType];}else{coloredSpriteImg=puzzles.coloredSpriteImgArray[puzzles.MYSTERY_MODE_NAME];} puzzles.clearCanvas(nextFragmentCtx);puzzles.drawFragment(nextFramentParams,initScaleCoef,0,0,coloredSpriteImg,nextIndex,nextFragmentCtx,spriteCoords);} puzzles.setPreviewImg=function(previewImgOnload){var showPreviewPicture=document.getElementById('showPreviewPicture');showPreviewPicture.onload=previewImgOnload;showPreviewPicture.setAttribute('src',puzzles.isMysteryMode()?puzzles.mysteryCanvas.toDataURL():puzzles.pictureCanvasArray['S'].toDataURL());} puzzles.prepareMainPictureCanvas=function(pictureImg,sizeType){var realSize=sizeType.substring(0,1);if(puzzles.pictureCanvasArray[realSize]){return;} puzzles.pictureParamsArray[realSize]=new Array();var pictureWidth=pictureImg.width;var pictureHeight=pictureImg.height;var partitionWidth=puzzles.fragmentsParamsArray[realSize]['partitionWidth'];var partitionHeight=puzzles.fragmentsParamsArray[realSize]['partitionHeight'];puzzles.pictureParamsArray[realSize]=puzzles.getProportParams(pictureWidth,pictureHeight,partitionWidth,partitionHeight);var pictureCanvas=document.createElement('CANVAS');var pictureCanvasCtx=pictureCanvas.getContext('2d');puzzles.setDomParams(pictureCanvas,pictureCanvasCtx,{'width':partitionWidth,'height':partitionHeight});pictureCanvasCtx.drawImage(pictureImg,puzzles.pictureParamsArray[realSize][0],puzzles.pictureParamsArray[realSize][1],puzzles.pictureParamsArray[realSize][2],puzzles.pictureParamsArray[realSize][3],0,0,partitionWidth,partitionHeight);puzzles.pictureCanvasArray[realSize]=pictureCanvas;};puzzles.prepareSpriteCanvas=function(spriteImg,sizeType){var realSize=sizeType.substring(0,1);if(puzzles.pictureOrientation||realSize!='B'||!puzzles.isMobileDevice){var sourceSpriteCanvas=document.createElement('CANVAS');var coloredSpriteCanvas=document.createElement('CANVAS');var spriteWidth,spriteHeight;if(puzzles.pictureOrientation){spriteWidth=spriteImg.width;spriteHeight=spriteImg.height;} else{spriteWidth=spriteImg.height;spriteHeight=spriteImg.width;} var sourceSpriteCanvasCtx=sourceSpriteCanvas.getContext('2d');var coloredSpriteCanvasCtx=coloredSpriteCanvas.getContext('2d');puzzles.setDomParams(sourceSpriteCanvas,sourceSpriteCanvasCtx,{'width':spriteWidth,'height':spriteHeight});puzzles.setDomParams(coloredSpriteCanvas,coloredSpriteCanvasCtx,{'width':spriteWidth,'height':spriteHeight});sourceSpriteCanvasCtx.save();puzzles.rotateCtx(sourceSpriteCanvasCtx,puzzles.angleMode,spriteImg.width,spriteImg.height);sourceSpriteCanvasCtx.drawImage(spriteImg,0,0,spriteImg.width,spriteImg.height,0,0,spriteImg.width,spriteImg.height);sourceSpriteCanvasCtx.restore();var rotatedSizeType=sizeType;if(puzzles.isMobileDevice&realSize=='B'&&(puzzles.angleMode=='180'||puzzles.angleMode=='s180')){rotatedSizeType=(sizeType=='B1')?'B2':'B1';} puzzles.sourceSpriteCtxArray[rotatedSizeType]=sourceSpriteCanvasCtx;puzzles.coloredSpriteCtxArray[rotatedSizeType]=coloredSpriteCanvasCtx;spriteImg=null;} else{if(puzzles.coloredSpriteCtxArray['B1']){return;} var b1SourceCanvas=document.createElement('CANVAS');var b2SourceCanvas=document.createElement('CANVAS');var b1SourceCtx=b1SourceCanvas.getContext('2d');var b2SourceCtx=b2SourceCanvas.getContext('2d');var b1ColoredCanvas=document.createElement('CANVAS');var b2ColoredCanvas=document.createElement('CANVAS');var b1ColoredCtx=b1ColoredCanvas.getContext('2d');var b2ColoredCtx=b2ColoredCanvas.getContext('2d');var sprite1Height=puzzles.fragmentsParamsArray['B']['sprite1Height'];var actualPartitionRectParams=puzzles.getActualRectParams();var sprite2Height=actualPartitionRectParams[1]*puzzles.fragmentsParamsArray['B']['maxFragmentHeight']-sprite1Height;var spriteImg1=puzzles.sourceSpriteImgArray['B1'];var spriteImg2=puzzles.sourceSpriteImgArray['B2'];var spriteWidth=spriteImg1.height+spriteImg2.height;puzzles.setDomParams(b1SourceCanvas,b1SourceCtx,{'width':spriteWidth,'height':sprite1Height});puzzles.setDomParams(b1ColoredCanvas,b1ColoredCtx,{'width':spriteWidth,'height':sprite1Height});puzzles.setDomParams(b2SourceCanvas,b2SourceCtx,{'width':spriteWidth,'height':sprite2Height});puzzles.setDomParams(b2ColoredCanvas,b2ColoredCtx,{'width':spriteWidth,'height':sprite2Height});puzzles.coloredSpriteCtxArray['B1']=b1ColoredCtx;puzzles.coloredSpriteCtxArray['B2']=b2ColoredCtx;puzzles.sourceSpriteCtxArray['B1']=b1SourceCtx;puzzles.sourceSpriteCtxArray['B2']=b2SourceCtx;b1SourceCtx.save();b2SourceCtx.save();puzzles.rotateCtx(b1SourceCtx,puzzles.angleMode,sprite1Height,spriteWidth);puzzles.rotateCtx(b2SourceCtx,puzzles.angleMode,sprite2Height,spriteWidth);if(puzzles.angleMode=='270'||puzzles.angleMode=='s90'){b1SourceCtx.translate(-sprite2Height,0);} else{b2SourceCtx.translate(-sprite1Height,0);} b1SourceCtx.drawImage(spriteImg1,0,0);b1SourceCtx.drawImage(spriteImg2,0,0,spriteImg2.width,spriteImg2.height,0,spriteImg1.height,spriteImg2.width,spriteImg2.height);b2SourceCtx.drawImage(spriteImg1,0,0);b2SourceCtx.drawImage(spriteImg2,0,0,spriteImg2.width,spriteImg2.height,0,spriteImg1.height,spriteImg2.width,spriteImg2.height);b1SourceCtx.restore();b2SourceCtx.restore();}};puzzles.drawMainRectFragments=function(json,pictureImg,spriteApexArray,mainFragsSpriteCtx){for(var jsonIndex=0,jsonLength=json.length;jsonIndex=_this.height)?1:0;} if(currentSize&!loadedSizeArray[currentSize]){loadedSizeArray[currentSize]=1;} if(_this.counter['value']==dataingObj['maxCount']){if(window.debug){console.time('loadtime');} puzzles.createSiblingsArray();var sourceSpriteImgArray=puzzles.sourceSpriteImgArray;for(var nextSize in loadedSizeArray){var nextImg=sourceSpriteImgArray[nextSize];if(nextImg){puzzles.doProgressStep();if(nextSize!==puzzles.MYSTERY_MODE_NAME){puzzles.prepareColoredSpriteBySize(nextImg,nextSize);}else{puzzles.prepareMysterySprite(nextImg);}}}}};puzzles.setLoadingItemProps=function(type,size,counter,loadedSizeArray,startFlag){var realSize=size.substring(0,1);var loadingItem;switch(type){case'spriteImg':loadingItem=puzzles.myImage();puzzles.sourceSpriteImgArray[size]=loadingItem;loadingItem.src=puzzles.getLocalStorageImgUrl(size,puzzles.ingDataArray[size]['imgSrc']);break;case'mainPicture':loadingItem=puzzles.myImage();puzzles.currentPicture=loadingItem;loadingItem.src=puzzles.getLocalStorageImgUrl(size,puzzles.ingDataArray['mainPicture']['imgSrc']);break;case puzzles.MYSTERY_MODE_NAME:loadingItem=puzzles.myImage();puzzles.sourceSpriteImgArray[size]=loadingItem;puzzles.MYSTERY_PICTURE=loadingItem;loadingItem.src=puzzles.getLocalStorageImgUrl(size,puzzles.ingDataArray[puzzles.MYSTERY_MODE_NAME]['imgSrc']);break;} loadingItem.counter=counter;loadingItem.loadedSizeArray=loadedSizeArray;loadingItem.dataingObj=puzzles.ingDataArray[size];switch(type){case'spriteImg':case puzzles.MYSTERY_MODE_NAME:case'mainPicture':if(startFlag){loadingItem.onload=function(evt){puzzles.sourceSpriteImgOnload(evt,loadingItem);if(size==='S'&puzzles.isMysteryMode()){puzzles.setLoadingItemProps(puzzles.MYSTERY_MODE_NAME,puzzles.MYSTERY_MODE_NAME,counter,loadedSizeArray,1);}}} break;}} puzzles.setLoadProperty=function(){this.isLoaded=1;};puzzles.createMessageDiv=function(){var messageDiv=document.getElementById('waitMessageDiv');puzzles.messageDiv=messageDiv;puzzles.progressBar=document.getElementById('progressBarLine');puzzles.progressBarText=document.getElementById('progressBarText');puzzles.messageDiv.css({'display':'inline-block'});puzzles.setDivToCenter(messageDiv);puzzles.messageDiv.css({'visibility':'visible'});puzzles.progressBarValue=0;puzzles.progressBar.setAttribute('value',0);puzzles.progressBarText.textContent='0%';} puzzles.doProgressStep=function(){if(!puzzles.progressBar){return;} var newValue=parseInt(puzzles.progressBarValue+puzzles.progressStep+10*Math.random()-5);puzzles.progressBarValue=Math.min(100,newValue);puzzles.progressBar.setAttribute('value',puzzles.progressBarValue);puzzles.progressBarText.textContent=puzzles.progressBarValue+'%';} puzzles.hideProgressBar=function(){puzzles.messageDiv.css({'display':'none'});} puzzles.doFragmentZoom=function(prevScaleStateIndex,nextScaleStateIndex,fullscreenMode){if(puzzles.status=='ended'){puzzles.noActionDiv.css({'display':'none'});if(puzzles.startOverFlag){puzzles.startOverFlag=false;window.requestAnimFrame(function(){puzzles.regenerateScene(puzzles.edgeOnlyMode,puzzles.previewMode,window['currentPuzzlesParams'],puzzles.angleMode);});} return;} var prevScaleStatesArray,nextScaleStatesArray;if(parseInt(fullscreenMode)){if(fullscreenMode==-1){prevScaleStatesArray=puzzles.beforeFullscreenStates;nextScaleStatesArray=puzzles.afterFullscreenStates;} if(fullscreenMode==1){prevScaleStatesArray=puzzles.afterFullscreenStates;nextScaleStatesArray=puzzles.beforeFullscreenStates;}} else{prevScaleStatesArray=nextScaleStatesArray=puzzles.scaleStatesArray;} var minRangeIndex=puzzles.minRangeIndex;var maxRangeIndex=puzzles.maxRangeIndex;nextScaleStateIndex=Math.min(nextScaleStateIndex,maxRangeIndex);nextScaleStateIndex=Math.max(nextScaleStateIndex,minRangeIndex);var currentScaleParamsArray=prevScaleStatesArray[prevScaleStateIndex];var prevSize=currentScaleParamsArray[0];var prevScaleCoef=currentScaleParamsArray[1];puzzles.currentScaleStateIndex=nextScaleStateIndex;var nextScaleParamsArray=nextScaleStatesArray[nextScaleStateIndex];var pauseMode=puzzles.pauseMode;var nextSize=nextScaleParamsArray[0];puzzles.bSizeMode=(nextSize.indexOf('B')>-1);if(pauseMode&!puzzles.pauseSpriteImgArray[nextSize]){puzzles.createPauseSpriteCanvas(nextSize,function(){puzzles.doFragmentZoom(prevScaleStateIndex,nextScaleStateIndex,fullscreenMode);});return;} var nextScaleCoef=nextScaleParamsArray[1];if(prevSize+prevScaleCoef==nextSize+nextScaleCoef&fullscreenMode!='changeOrientation'){puzzles.noActionDiv.css({'display':'none'});return;} var spriteApexArray=puzzles.spriteApexArray[nextSize];var nextPartitionWidth=puzzles.fragmentsParamsArray[nextSize]['partitionWidth'];var zoomCoef=nextPartitionWidth*nextScaleCoef/(puzzles.fragmentsParamsArray['S']['partitionWidth']);puzzles.zoomCoef=zoomCoef;var nextJson=puzzles.jsonsArray[nextSize];var nextColoredSpriteImg=(pauseMode)?puzzles.pauseSpriteImgArray[nextSize]:puzzles.coloredSpriteImgArray[nextSize];var nextDivLeft;var nextDivTop;var mainDivLeft=0.5*puzzles.containerDivWidth;var mainDivTop=0.5*puzzles.containerDivHeight;var mainCanvas=puzzles.mainCanvas;var fullDivLeft=0.5*parseInt(mainCanvas.getElementComputedStyle('width'));var fullDivTop=0.5*parseInt(mainCanvas.getElementComputedStyle('height'));if(fullscreenMode){if(fullscreenMode==-1){nextDivLeft=fullDivLeft;nextDivTop=fullDivTop;} if(fullscreenMode==1){nextDivLeft=mainDivLeft;nextDivTop=mainDivTop;} if(fullscreenMode=='fullscreenZooming'||fullscreenMode=='changeOrientation'){nextDivLeft=fullDivLeft;nextDivTop=fullDivTop;}} else{nextDivLeft=mainDivLeft;nextDivTop=mainDivTop;} var setDomParams=puzzles.setDomParams;var clearCanvas=puzzles.clearCanvas;var drawFragment=puzzles.drawFragment;var transformCoords=puzzles.transformCoords;var allFragmentsArray=document.getElementsByClassName('fragmentsCanvasClass');for(var index=0,nextJsonLength=nextJson.length;index1||mainCanvas.dataObj['moveType']||!currentCanvas.is||!currentCanvas.is('.fragmentsCanvasClass')){return;} var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var canvasCoords=puzzles.getOnCanvasCoords(currentCanvas,onPageCoords.x,onPageCoords.y);var fragmentCtx=currentCanvas.dataObj['ctx'];if(!puzzles.isNonTranspPoint(fragmentCtx,canvasCoords.x,canvasCoords.y)){var yellowCanvas=puzzles.getExactClickedCanvas(currentCanvas,onPageCoords.x,onPageCoords.y);if(yellowCanvas){currentCanvas=yellowCanvas;canvasCoords=puzzles.getOnCanvasCoords(currentCanvas,onPageCoords.x,onPageCoords.y);fragmentCtx=currentCanvas.dataObj['ctx'];} else{puzzles.startCapturingGroup(evt);return;}} puzzles.prepareSingleMoving(currentCanvas,mainCanvas,onPageCoords,evt.timeStamp);} if(evt.stopImmediatePropagation()){evt.stopImmediatePropagation();} puzzles.defaultPreventer(evt);return false;};puzzles.prepareSingleMoving=function(currentCanvas,mainCanvas,onPageCoords,initTimestamp){puzzles.lastMovedCanvas=currentCanvas;var currentCanvasParams=puzzles.getDomParams(currentCanvas);var capturedObj=puzzles.liftCanvasGroup(currentCanvasParams.left,currentCanvasParams.top,currentCanvasParams.width,currentCanvasParams.height,'single',currentCanvas) var capturingCanvas=puzzles.capturingCanvas;mainCanvas.dataObj={'movingElems':capturingCanvas,'pageX':onPageCoords.x,'pageY':onPageCoords.y,'moveType':'single','capturedObj':capturedObj,'initTimestamp':initTimestamp};capturingCanvas.dataObj={};capturingCanvas.dataObj['left']=parseFloat(capturingCanvas.css('left'));capturingCanvas.dataObj['top']=parseFloat(capturingCanvas.css('top'));} puzzles.removeVirtualCoords=function(canvas){var controlClass=puzzles.getControlClassName(canvas);var controlCanvasArray=document.getElementsByClassName(controlClass);for(var i=0,length=controlCanvasArray.length;i1||!currentCanvas||!target.dataObj.moveType){return;} window.requestAnimFrame(function(){if(target.dataObj['moveType']=='single'||target.dataObj.moveType=='moveProection'){if(!currentCanvas||!currentCanvas.dataObj){return;} var initPageX=target.dataObj['pageX'];var initPageY=target.dataObj['pageY'];var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var diffX=onPageCoords.x-initPageX;var diffY=onPageCoords.y-initPageY;var elemLeft=currentCanvas.dataObj['left'];var elemTop=currentCanvas.dataObj['top'];var newElemLeft=elemLeft+diffX;var newElemTop=elemTop+diffY;currentCanvas.css({'left':newElemLeft,'top':newElemTop});}}});};puzzles.startCapturingGroup=function(evt,noClickCall){var mainCanvas=puzzles.mainCanvas;if(!noClickCall){if(puzzles.touchesQuantity>1||mainCanvas.dataObj['movingElems']||!evt.target.is||!evt.target.is('#p_background,#p_mainCanvas,.p_capturingCanvas,.fragmentsCanvasClass')||puzzles.hintMode){return;}} var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var mainCanvasCoords=puzzles.getOnCanvasCoords(mainCanvas,onPageCoords.x,onPageCoords.y);mainCanvas.dataObj={'movingElems':1,'moveType':'capturing','startX':mainCanvasCoords.x,'startY':mainCanvasCoords.y};mainCanvas.css({'z-index':puzzles.bigZIndex});} puzzles.defaultPreventer(evt);return false;};puzzles.mainCanvasCapturingMove=function(evt){var mainCanvas=puzzles.mainCanvas;if(puzzles.touchesQuantity>1||!mainCanvas.dataObj['movingElems']){return;} var mainCanvasCtx=puzzles.mainCanvasCtx;if(mainCanvas.dataObj['moveType']=='capturing'){var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var currentCoords=puzzles.getOnCanvasCoords(mainCanvas,onPageCoords.x,onPageCoords.y);var startX=mainCanvas.dataObj['startX'];var startY=mainCanvas.dataObj['startY'];var rectLeft=Math.min(startX,currentCoords.x);var rectTop=Math.min(startY,currentCoords.y);var rectRight=Math.max(startX,currentCoords.x);var rectBottom=Math.max(startY,currentCoords.y);var rectWidth=rectRight-rectLeft var rectHeight=rectBottom-rectTop if('rectData'in mainCanvas.dataObj){mainCanvasCtx.beginPath();puzzles.clearRectEdge(mainCanvasCtx,mainCanvas.dataObj['rectData']);mainCanvasCtx.rect(rectLeft,rectTop,rectWidth,rectHeight);mainCanvasCtx.stroke();} mainCanvas.dataObj['capturingRectParams']={'left':rectLeft,'top':rectTop,'width':rectWidth,'height':rectHeight};mainCanvas.dataObj['rectData']={'rectLeft':rectLeft,'rectTop':rectTop,'rectRight':rectRight,'rectBottom':rectBottom};var oldCapturedObj=('oldCapturedObj'in mainCanvas.dataObj)?mainCanvas.dataObj['oldCapturedObj']:undefined;puzzles.liftCanvasGroup(rectLeft,rectTop,rectWidth,rectHeight,'rectMoving',oldCapturedObj);}}};puzzles.mainCanvasCapturingMouseUp=function(evt){var mainCanvas=puzzles.mainCanvas;if(puzzles.touchesQuantity>1||!mainCanvas.dataObj['movingElems']||mainCanvas.dataObj['moveType']!='capturing'){return;} puzzles.clearCanvas(puzzles.mainCanvasCtx);if(mainCanvas.dataObj['moveType']=='capturing'){var capturingRectParams=mainCanvas.dataObj['capturingRectParams'];if(capturingRectParams){var capturedObj=puzzles.liftCanvasGroup(capturingRectParams.left,capturingRectParams.top,capturingRectParams.width,capturingRectParams.height,'waitingMoveProjection');if(capturedObj){mainCanvas.dataObj={};mainCanvas.dataObj['movingElems']=puzzles.capturingCanvas;mainCanvas.dataObj['moveType']='waitingMoveProjection';mainCanvas.dataObj['capturedObj']=capturedObj;return;}} mainCanvas.css({'z-index':-1});mainCanvas.dataObj={};}};puzzles.proectionCanvasMouseDown=function(evt){var mainCanvas=puzzles.mainCanvas;if(puzzles.touchesQuantity>1||(('moveType'in mainCanvas.dataObj)&mainCanvas.dataObj['moveType']!='waitingMoveProjection')){return;} var capturingCanvas=puzzles.capturingCanvas;var capturingCanvasCtx=puzzles.capturingCanvasCtx;var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var capturingCanvasCoords=puzzles.getOnCanvasCoords(capturingCanvas,onPageCoords.x,onPageCoords.y);var capturedObj=mainCanvas.dataObj['capturedObj'];if(!capturedObj){return;} mainCanvas.css({'z-index':-1});if(puzzles.isNonTranspPoint(capturingCanvasCtx,capturingCanvasCoords.x,capturingCanvasCoords.y)){mainCanvas.dataObj['pageX']=onPageCoords.x;mainCanvas.dataObj['pageY']=onPageCoords.y;mainCanvas.dataObj['moveType']='moveProection';mainCanvas.dataObj['initTimestamp']=evt.timeStamp;var minX=capturedObj.minX;var minY=capturedObj.minY;capturingCanvas.dataObj={'left':minX,'top':minY};} else{puzzles.resetCapturingCanvas();mainCanvas.dataObj={};document.getElementsByClassName('p_capturedFragment').css({'visibility':'visible'}).removeClass('p_capturedFragment');}}};puzzles.proectionCanvasMouseUp=function(evt){var mainCanvas=puzzles.mainCanvas;if(puzzles.touchesQuantity>1||!mainCanvas.dataObj['movingElems']){return;} window.requestAnimFrame(function(){if(mainCanvas.dataObj['moveType']=='moveProection'||mainCanvas.dataObj['moveType']=='single'){var initX=mainCanvas.dataObj['pageX'];var initY=mainCanvas.dataObj['pageY'];var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var canvasCoords=puzzles.getOnCanvasCoords(puzzles.backgroundDiv,onPageCoords.x,onPageCoords.y);var svgParent=puzzles.getTargetSvgParent(evt.target);var topAdjunct=0;if(svgParent){topAdjunct=puzzles.getTopAdjunct(svgParent,canvasCoords.y);} if(evt.type=='mouseleave'){topAdjunct=puzzles.getTopAdjunctAfterMouseleave(canvasCoords.y);} var difX=onPageCoords.x-initX;var difY=onPageCoords.y-initY+topAdjunct;var capturedArray=document.getElementsByClassName('p_capturedFragment');var timeDif=evt.timeStamp-mainCanvas.dataObj['initTimestamp'];var difSum=Math.abs(difX)+Math.abs(difY);var clickClickCondition=(!puzzles.isMobileDevice&timeDif>180||evt.type=='mouseleave');if((puzzles.isMobileDevice&difSum>0)||clickClickCondition){capturedArray.groupTranslate(difX,difY);puzzles.checkAdjacent();var capturedObj=mainCanvas.dataObj['capturedObj'];puzzles.correctAllCapturedPositions(capturedObj);if(puzzles.lastdGroup){puzzles.renewRealCoords(puzzles.lastdGroup);} puzzles.arrangeFragmentsDepths(capturedObj.capturedCanvasArray);} if(puzzles.isMobileDevice||clickClickCondition){puzzles.clearCanvas(puzzles.capturingCanvasCtx);capturedArray.css({'visibility':'visible'}).removeClass('p_capturedFragment');puzzles.capturingCanvas.css({'display':'none'});puzzles.capturingCanvas.dataObj={};mainCanvas.css({'z-index':-1});mainCanvas.dataObj={};if(puzzles.checkEdgeComplete()){puzzles.edgesButtonClick(undefined,true);} if(puzzles.absorbGroupArray&puzzles.absorbGroupArray.size()==puzzles.jsonsArray['S'].length){puzzles.finalAnimate();}}}}});} puzzles.containerLeave=function(evt){var mainCanvas=puzzles.mainCanvas;if(mainCanvas.dataObj['movingElems']){puzzles.proectionCanvasMouseUp(evt);return;} if(mainCanvas.dataObj['moveType']&mainCanvas.dataObj['moveType']=='capturing'){puzzles.mainCanvasCapturingMouseUp(evt);return;}} puzzles.getTopAdjunct=function(target,onCanvasY,groupNewPosition,groupHeight){var adjunct=0;var fragValue=target?0:20;var backgroundDivHeight=parseInt(puzzles.backgroundDiv.css('height'));if(target){if(target.is('.p_topContainer, .p_bottomContainer')){if(target.is('.p_topContainer')){adjunct=parseInt(target.css('top'))+parseInt(target.css('height'))-onCanvasY+fragValue;} if(target.is('.p_bottomContainer')){fragValue=Math.round(puzzles.fragmentsParamsArray[puzzles.currentSize]['maxFragmentWidth']*0.5);adjunct=-(onCanvasY-(backgroundDivHeight-parseInt(target.css('height')))+fragValue);}}} else{var controlElems=document.querySelectorAll('.p_topContainer, .p_bottomContainer');fragValue=Math.round(puzzles.fragmentsParamsArray[puzzles.currentSize]['maxFragmentWidth']*0.5);var backgroundDivWidth=parseInt(puzzles.backgroundDiv.css('width'));for(var i=0,controlElemsSize=controlElems.size();inextControlLeft-0.5*fragValue&groupNewPosition.left<=nextControlLeft+nextControlWidth){if(nextControl.is('.p_topContainer')){if(groupNewPosition.top+groupHeight-nextControlTop-nextControlHeight=nextControlTop){adjunct=-(fragValue+groupNewPosition.top-nextControlTop);}}}}} return adjunct;} puzzles.getTopAdjunctAfterMouseleave=function(canvasY){var maxControlHeight=50;var backgroundDivHeight=parseInt(puzzles.backgroundDiv.css('height'));var topAdjunct=0;if(!canvasY){topAdjunct=maxControlHeight;} if(canvasY==backgroundDivHeight){topAdjunct=-maxControlHeight;} return topAdjunct;} puzzles.getTouchPairDist=function(evt){var dist;var originalEvt=evt;var firstTouchArray,secondTouchArray;if(originalEvt.changedTouches.length==2){firstTouchArray=originalEvt.changedTouches[0];secondTouchArray=originalEvt.changedTouches[1];} else{firstTouchArray=originalEvt.touches[0];if(originalEvt.touches.length==2){secondTouchArray=originalEvt.touches[1];} else{secondTouchArray=originalEvt.changedTouches[0];}} dist=Math.abs(firstTouchArray.pageX-secondTouchArray.pageX)+Math.abs(firstTouchArray.pageY-secondTouchArray.pageY);return dist;} puzzles.dropOneTouchMoving=function(){var p_capturedArray=document.getElementsByClassName('p_capturedFragment');if(p_capturedArray.size()){puzzles.mainCanvas.dataObj={};puzzles.clearCanvas(puzzles.mainCanvasCtx);puzzles.capturingCanvas.css({'display':'none'});puzzles.capturingCanvas.dataObj={};puzzles.clearCanvas(puzzles.capturingCanvasCtx);p_capturedArray.css({'visibility':'visible'}).removeClass('p_capturedFragment');}} puzzles.twoPointsStart=function(evt){++puzzles.touchesQuantity;if(puzzles.touchesQuantity==2){puzzles.dropOneTouchMoving();var startDist=puzzles.getTouchPairDist(evt);if(!isNaN(startDist)){puzzles.mainCanvas.dataObj['startDist']=startDist;puzzles.mainCanvas.dataObj['moveType']=doubleTouch;puzzles.mainCanvas.css({'z-index':puzzles.bigZIndex});}}} puzzles.twoPointsMove=function(evt){if(puzzles.touchesQuantity!=2){return;} evt.preventDefault();var currentDist=puzzles.getTouchPairDist(evt);var startDist=puzzles.mainCanvas.dataObj['startDist'];if(!isNaN(startDist)&!isNaN(currentDist)){if((currentDist-startDist)*puzzles.fullscreenMode>0){puzzles.mainCanvas.dataObj={};puzzles.fullscreenButtonClick(evt);}}} puzzles.twoPointsUp=function(){--puzzles.touchesQuantity;if(!puzzles.touchesQuantity){puzzles.mainCanvas.dataObj['startDist']={};puzzles.mainCanvas.css({'z-index':-1});}} puzzles.touchCancelHandler=function(evt){puzzles.touchesQuantity=0;puzzles.dropOneTouchMoving();puzzles.defaultPreventer(evt);return false;} puzzles.cursorMouseMove=function(evt){var toggleCondition=false;var capturingCanvas=document.querySelector('.p_capturingCanvas');if(capturingCanvas.css('display')=='block'){if(!puzzles.backgroundDiv.is('.p_pointer')){toggleCondition=true;}} else{var onPageCoords=puzzles.getPageCoords(evt);if(onPageCoords){var allCanvasArray=puzzles.edgeOnlyMode?document.getElementsByClassName('edgeFrag'):document.getElementsByClassName('fragmentsCanvasClass');var yellowCanvas=puzzles.getExactClickedCanvas(undefined,onPageCoords.x,onPageCoords.y,allCanvasArray);toggleCondition=(!!yellowCanvas+!!puzzles.backgroundDiv.is('.p_pointer'))==1;}} if(toggleCondition){puzzles.backgroundDiv.classList.toggle('p_pointer');}} puzzles.isAdjacent=function(siblingIndex,movingCanvas,json,scaleCoef,allCanvasArray,visibleMaxWidth){var siblingCanvas=allCanvasArray.eq(siblingIndex);var siblingJsonParams=json[siblingIndex];var asocJsonParams=json[movingCanvas.dataObj['jsonIndex']];var asocLeft=siblingCanvas.dataObj['left']+scaleCoef*(asocJsonParams[0]-siblingJsonParams[0]);var asocTop=siblingCanvas.dataObj['top']+scaleCoef*(asocJsonParams[1]-siblingJsonParams[1]);var asocWidth=movingCanvas.css('width');var asocHeight=movingCanvas.css('height');var asocCenterX=asocLeft+0.5*asocWidth;var asocCenterY=asocTop+0.5*asocHeight;var movingCenterX=movingCanvas.css('left')+0.5*asocWidth;var movingCenterY=movingCanvas.css('top')+0.5*asocHeight;var radius=0.35*visibleMaxWidth;var res=Math.abs(asocCenterX-movingCenterX)+Math.abs(asocCenterY-movingCenterY)=followingSiblingsArray.size()){diffLeft=nextCapturedCanvas.css('left')+(json[followingJsonIndex][0]-json[nextJsonIndex][0])*currentScaleCoef-followingCanvas.css('left');diffTop=nextCapturedCanvas.css('top')+(json[followingJsonIndex][1]-json[nextJsonIndex][1])*currentScaleCoef-followingCanvas.css('top');absorbClass=nextCanvasControlClass;absorbGroupArray=nextCapturedGroup;groupToClass=followingControlClass;groupToArray=followingSiblingsArray;}else{diffLeft=followingCanvas.css('left')+(json[nextJsonIndex][0]-json[followingJsonIndex][0])*currentScaleCoef-nextCapturedCanvas.css('left');diffTop=followingCanvas.css('top')+(json[nextJsonIndex][1]-json[followingJsonIndex][1])*currentScaleCoef-nextCapturedCanvas.css('top');absorbClass=followingControlClass;absorbGroupArray=followingSiblingsArray;groupToClass=nextCanvasControlClass;groupToArray=nextCapturedGroup;} var absorbZIndex=absorbGroupArray.css('z-index');groupToArray.css({'z-index':absorbZIndex}).addClass(absorbClass).removeClass(groupToClass);if(absorbGroupArray.is('.edgeFrag')||groupToArray.is('.edgeFrag')){absorbGroupArray.addClass('edgeFrag');groupToArray.addClass('edgeFrag');} puzzles.changeGroupPosition(diffLeft,diffTop,groupToArray);absorbGroupArray=document.querySelectorAll('.'+absorbClass);puzzles.absorbGroupArray=absorbGroupArray;puzzles.lastdGroup=document.querySelectorAll('.p_capturedFragment,.'+groupToClass);if(absorbGroupArray.size()>bigGroupThreshold){absorbGroupArray.removeClass('smallGroupClass');} if(groupingCaseFlag&!puzzles.muteOn){puzzles.playSound();} return groupingCaseFlag;}}} puzzles.lastdGroup=document.querySelectorAll('.p_capturedFragment');puzzles.absorbGroupArray=undefined;return false;};puzzles.correctAllCapturedPositions=function(capturedCanvasObj,zoomMode){if(!capturedCanvasObj){return;} var capturedCanvasArray=capturedCanvasObj.capturedCanvasArray;var getControlClassName=puzzles.getControlClassName;var adjunct;var getTopAdjunct=puzzles.getTopAdjunct;var getCorrectPosition=puzzles.getCorrectPosition;var length=capturedCanvasArray.length;var capturedClassesArray={};var calculateGroupBounds=puzzles.calculateGroupBounds;var changeGroupPosition=puzzles.changeGroupPosition;for(var i=0;irectLeft-1&nextCanvasBottom>rectTop-1&&nextCanvasRight0){if(bevelR>>8){bevelR=255;}} bevelG=bevelB=bevelR;bevel32Bit[bevelIndex]=(maskAlpha<<24)|(bevelB<<16)|(bevelG<<8)|bevelR;}} if(bevelData.data.set){bevelData.data.set(bevel8Bit);} else{bevelData.data=bevel8Bit;} return bevelData;};puzzles.msDrawPauseBevel=function(maskImData,maskImWidth,maskImHeight,bevelData){var w=maskImWidth;var h=maskImHeight;var maskImDataArray=maskImData.data;var dataLength=w*h;var pixels=bevelData.data;for(var bevelIndex=0,maskIndex=0,maskR=0,maskAlpha=0,maskG=0,dif=0,bevelR=0,bevelG=0,bevelB=0;bevelIndex0){if(bevelR>>8){bevelR=255;}} bevelG=bevelB=bevelR;pixels[maskIndex]=bevelR;pixels[maskIndex+1]=bevelG;pixels[maskIndex+2]=bevelB;pixels[maskIndex+3]=maskAlpha;}} bevelData.data=pixels;return bevelData;};puzzles.pauseButonMouseDown=function(evt){puzzles.noActionDiv.css({'display':'block'});evt.stopPropagation();puzzles.setBlindDiv('pauseBlindDiv');window.requestAnimFrame(function(){puzzles.pauseMode=1;var pauseMessageDiv=document.getElementById('pauseMessageDiv');pauseMessageDiv.css({'display':'inline-block'});puzzles.setDivToCenter(pauseMessageDiv);if('timer'in puzzles){clearTimeout(puzzles.timer);} puzzles.timer=undefined;var scaleParamsArray=puzzles.scaleStatesArray[puzzles.currentScaleStateIndex];var currentSize=scaleParamsArray[0];var realSize=currentSize;if(currentSize=='B'&puzzles.isMobileDevice){currentSize='B1';} if(puzzles.pauseSpriteImgArray[currentSize]){puzzles.drawPausedFragments(puzzles.pauseSpriteImgArray);puzzles.noActionDiv.css({'display':'none'});} else{if(realSize!='B'||!puzzles.isMobileDevice){puzzles.createPauseSpriteCanvas(currentSize);} else{puzzles.createPauseSpriteCanvas('B1');puzzles.createPauseSpriteCanvas('B2');}}});} puzzles.stopProp=function(evt){evt.stopPropagation();var blindDiv=document.getElementsByClassName('blindDiv').eq(0);if(blindDiv&blindDiv.attr('id')=='pauseBlindDiv'){window.requestAnimFrame(function(){puzzles.pauseMode=0;document.getElementById('pauseMessageDiv').css({'display':'none'});puzzles.tStamp={'currentTime':(new Date()).getTime(),'timeSum':puzzles.timeSum};clearTimeout(puzzles.timer);puzzles.timer=setTimeout(puzzles.timerCallback,puzzles.tPeriodicity);puzzles.backgroundDiv.remove(blindDiv);puzzles.drawPausedFragments(puzzles.coloredSpriteImgArray);puzzles.p_buttonsArray.attr('disabled',false);});}} puzzles.startTimer=function(){if(puzzles.timerStarted){return;} puzzles.timerStarted=1;if(puzzles.timeSpan){puzzles.timeSpan.text('00:00');} puzzles.tStamp={'currentTime':(new Date()).getTime(),'timeSum':puzzles.timeSum};if(puzzles.timer){clearTimeout(puzzles.timer);} puzzles.timer=setTimeout(puzzles.timerCallback,puzzles.tPeriodicity);} puzzles.timerCallback=function(renewCall){puzzles.timeSum+=puzzles.tPeriodicity;var timeDiff=new Date(puzzles.timeSum);var timeZone=timeDiff.getTimezoneOffset()/60;var hours=timeDiff.getUTCHours() hours=(hours>9)?hours:('0'+hours);var minutes=timeDiff.getUTCMinutes();minutes=(minutes>9)?minutes:('0'+minutes);var secundes=timeDiff.getUTCSeconds();secundes=(secundes>9)?secundes:('0'+secundes);var timerMsgArray=(parseInt(hours)==0)?[minutes,secundes]:[hours,minutes,secundes];var currentTimeMessage=timerMsgArray.(':');puzzles.timeSpan.text(currentTimeMessage);if(renewCall!=1){clearTimeout(puzzles.timer);puzzles.timer=setTimeout(puzzles.timerCallback,puzzles.tPeriodicity);}} puzzles.renewTimerFocus=function(){try{if(!puzzles.pauseMode&puzzles.tStamp){puzzles.timeSum=puzzles.tStamp.timeSum+(new Date()).getTime()-puzzles.tStamp.currentTime;puzzles.timerCallback(1);if(puzzles.timer){clearTimeout(puzzles.timer);} puzzles.timer=setTimeout(puzzles.timerCallback,puzzles.tPeriodicity);}} catch(e){console.log(e.message)};} puzzles.timerWindowBlur=function(){if(puzzles.timer){clearTimeout(puzzles.timer);}} puzzles.proectionStartTimer=function(){if(('moveType'in puzzles.mainCanvas.dataObj)&puzzles.mainCanvas.dataObj['moveType']=='moveProection'){puzzles.startTimer();var touchstartArray=puzzles.getTouchEventName('touchstart');touchstartArray.forEach(function(evtName){document.querySelectorAll('.fragmentsCanvasClass, #p_hint, #p_edgesOnly, #p_pullApart').removeEventListener(evtName,puzzles.startTimer);document.getElementById('p_background').removeEventListener(evtName,puzzles.proectionStartTimer);});}} puzzles.edgesButtonClick=function(evt,noClickCall){if(evt){puzzles.defaultPreventer(evt);} if(evt||noClickCall){puzzles.setActualSvgClass(document.querySelector('.leftBottom'),'off');} puzzles.edgeOnlyMode=(puzzles.edgeOnlyMode+1)%2;if(puzzles.edgeOnlyMode){document.querySelectorAll('.fragmentsCanvasClass:not(.edgeFrag)').css({'display':'none'});} else{document.getElementsByClassName('fragmentsCanvasClass').css({'display':'block'});}} puzzles.checkEdgeComplete=function(){if(puzzles.edgeOnlyMode){var edgeFragArray=document.getElementsByClassName('edgeFrag');var firstEdgeFrag=edgeFragArray.eq(0);var firstControlClass=puzzles.getControlClassName(firstEdgeFrag);if(edgeFragArray.is('.'+firstControlClass)){return true;}} return false;} puzzles.getTopMenuTop=function(topMenuTop,interfaceResize){var topmenuDownPos=puzzles.topmenuDownPos;var topMenu=document.querySelector('#topMenuPane');if(topMenuTop>topmenuDownPos-1||interfaceResize){topMenuTop=-(parseInt(topMenu.css('height'))-parseInt(document.getElementById('topMenuContainer').css('height')));} else{topMenuTop=topmenuDownPos;} return topMenuTop;} puzzles.topMenuClick=function(evt){var topMenu=puzzles.topMenu;puzzles.noActionDiv.css({'display':'block'});var topMenuIterQuantity=(puzzles.isMobileDevice)?parseInt(20/(1.5*window.devicePixelRatio)):20 var topmenuDownPos=puzzles.topmenuDownPos;var topMenuTop=parseInt(topMenu.css('top'));topMenuTop=puzzles.getTopMenuTop(topMenuTop);puzzles.animate(topMenu,'top',topMenuTop,topMenuIterQuantity,0,function(){puzzles.noActionDiv.css({'display':'none'});});if(evt){puzzles.setActualSvgClass(document.querySelector('#topMenuPane'),'up');} puzzles.defaultPreventer(evt);return false;} puzzles.topMenuHide=function(evt){var topMenu=puzzles.topMenu;var topmenuDownPos=puzzles.topmenuDownPos var topMenuIterQuantity=(puzzles.isMobileDevice)?parseInt(20/(1.5*window.devicePixelRatio)):20 var topMenuTop=parseInt(topMenu.css('top'));if(topMenuTop>topmenuDownPos-1){puzzles.noActionDiv.css({'display':'block'});topMenuTop=puzzles.getTopMenuTop(topMenuTop);puzzles.animate(topMenu,'top',topMenuTop,topMenuIterQuantity,0,function(){puzzles.noActionDiv.css({'display':'none'});});if(evt){puzzles.setActualSvgClass(document.querySelector('#topMenuPane'),'up');}}} puzzles.setTopMenuTop=function(){var topMenu=document.querySelector('#topMenuPane');var topMenuTop=parseInt(topMenu.css('top'));topMenuTop=puzzles.getTopMenuTop(topMenuTop,true);topMenu.css({'top':topMenuTop});} puzzles.interfaceResize=function(){var svgContainersArray=document.querySelectorAll('.svgScalable');if(puzzles.fullscreenMode==-1){var modelScaleCoef=(puzzles.isMobileDevice)?puzzles.getDefaultResizeCoef(true):puzzles.modelScaleCoef;puzzles.setDefaultResize(svgContainersArray,modelScaleCoef,true);} else{for(var i=0,length=svgContainersArray.length;i0)?(sceneHeightHalf-margin):(margin-sceneHeightHalf);} if(virtualCenterY==0){newLeft=(virtualCenterX>0)?(sceneWidthHalf-margin):(margin-sceneWidthHalf);} if(virtualCenterX!=0&virtualCenterY!=0){var vCoef=Math.abs(virtualCenterY/virtualCenterX);if(virtualCenterX>0&virtualCenterY>0){if(Math.abs(virtualCenterX)>Math.abs(virtualCenterY*tCoef)){newLeft=rectWidthHalf;newTop=newLeft*vCoef;newLeft+=deviation;} else{newTop=rectHeightHalf;newLeft=newTop/vCoef;newTop+=deviation;}} if(virtualCenterX<1&virtualCenterY>0){if(Math.abs(virtualCenterX)>Math.abs(virtualCenterY*tCoef)){newLeft=-rectWidthHalf;newTop=rectWidthHalf*vCoef;newLeft+=deviation;} else{newTop=rectHeightHalf;newLeft=-rectHeightHalf/vCoef;newTop+=deviation;}} if(virtualCenterX<1&virtualCenterY<1){if(Math.abs(virtualCenterX)>Math.abs(virtualCenterY*tCoef)){newLeft=-rectWidthHalf;newTop=newLeft*vCoef;newLeft+=deviation;if(Math.abs(newTop)+0.5*nextCanvasHeight>sceneHeightHalf-buttonHeight){newTop+=buttonHeight;}} else{newTop=-rectHeightHalf;newLeft=newTop/vCoef;newTop+=(deviation+buttonHeight);}} if(virtualCenterX>0&virtualCenterY<1){if(Math.abs(virtualCenterX)>Math.abs(virtualCenterY*tCoef)){newLeft=rectWidthHalf;newTop=-newLeft*vCoef;newLeft+=deviation;if(Math.abs(newTop)+0.5*nextCanvasHeight>sceneHeightHalf-buttonHeight){newTop+=buttonHeight;}} else{newTop=-rectHeightHalf;newLeft=rectHeightHalf/vCoef;newTop+=(deviation+buttonHeight);}}} newLeft=newLeft+sceneWidthHalf-0.5*nextCanvasWidth;newTop=-newTop+sceneHeightHalf-0.5*nextCanvasHeight;var newPosition=getCorrectPosition(newLeft,newTop,partitionMargin,partitionMargin,nextCanvasWidth,nextCanvasHeight);nextCanvas.css(newPosition);nextCanvas.dataObj['left']=newPosition.left;nextCanvas.dataObj['top']=newPosition.top;} puzzles.renewRealCoords(smallGroupArray);} puzzles.changeBackgroundClick=function(evt){puzzles.defaultPreventer(evt);puzzles.noActionDiv.css({'display':'block'});var currentBackImgIndex=puzzles.currentBackImgIndex;currentBackImgIndex+=1;if(currentBackImgIndex>puzzles.backImgQuantity-1){currentBackImgIndex=0;} var nextBackImgPath=puzzles.getUrl('background',puzzles.backImgPath+'pattern'+currentBackImgIndex+'.gif','image/gif','');if(!puzzles.loadedBackImgArray[currentBackImgIndex]){var nextBackImg=puzzles.myImage();nextBackImg.onload=function(){puzzles.setBackground(currentBackImgIndex,nextBackImgPath);puzzles.loadedBackImgArray[currentBackImgIndex]=1;puzzles.currentBackImgIndex=currentBackImgIndex;puzzles.saveGameSettings('p_gameSettings','backgroundNum',currentBackImgIndex+1);puzzles.noActionDiv.css({'display':'none'});} nextBackImg.src=nextBackImgPath;} else{puzzles.setBackground(currentBackImgIndex,nextBackImgPath);puzzles.currentBackImgIndex=currentBackImgIndex;puzzles.saveGameSettings('p_gameSettings','backgroundNum',currentBackImgIndex+1);puzzles.noActionDiv.css({'display':'none'});}} puzzles.setBackground=function(backgroundNum,backgroundPath){var backgroundDiv=puzzles.backgroundDiv;if(backgroundNum==0){backgroundDiv.css({'background-image':''});backgroundDiv.css({'background':'#e5e6e5'});backgroundDiv.css({'background':'linear-gradient(0deg, #e5e6e5, #f6f6f6)'});return;} if(backgroundNum==6){backgroundDiv.css({'background-image':''});backgroundDiv.css({'background':'#4f4f4f'});backgroundDiv.css({'background':'linear-gradient(0deg,#444444,#4a4a4a,#4f4f4f,#545454,#595959, #5e5e5e,#636363,#686868,#6c6c6c,#717171,#757575,#7a7a7a,#7f7f7f,#7f7f7f,#7f7f7f,#7f7f7f,#7f7f7f,#7f7f7f, #7f7f7f,#7f7f7f,#7f7f7f)'});return;} var mainCanvas=puzzles.mainCanvas;mainCanvas.css({'background-image':'url('+backgroundPath+')'});setTimeout(function(){backgroundDiv.css({'background-image':'url('+backgroundPath+')'});mainCanvas.css({'background-image':''});},10)} puzzles.muteClick=function(evt){puzzles.setActualSvgClass(document.querySelector('#topMenuPane'),'on');puzzles.muteOn=(puzzles.muteOn+1)%2;puzzles.saveGameSettings('p_gameSettings','soundMuted',puzzles.muteOn);} puzzles.showHelpImgClick=function(evt){var helpImg=document.querySelector('.helpImageDiv');;puzzles.noActionDiv.css({'display':'block'});helpImg.css({'display':'block'});puzzles.setDivToCenter(helpImg);puzzles.animate(helpImg,'opacity',1,13,0,function(){puzzles.noActionDiv.css({'display':'none'});});puzzles.setBlindDiv('helpBlindDiv');puzzles.defaultPreventer(evt);return false;} puzzles.hideHelpImgMouseDown=function(evt){evt.preventDefault();var helpImgDiv=document.querySelector(".helpImageDiv");if(helpImgDiv.css('display')=='block'){helpImgDiv.css({'display':'none','opacity':0});puzzles.backgroundDiv.remove(document.getElementsByClassName('blindDiv'));puzzles.topMenuClick(evt);}} puzzles.setBlindDiv=function(blindDivId){var backgroundDiv=puzzles.backgroundDiv;var mainCanvas=puzzles.mainCanvas;var pauseBlindDiv=document.getElementById(blindDivId);if(!pauseBlindDiv){pauseBlindDiv=document.createElement('DIV');pauseBlindDiv.setAttribute('id',blindDivId);pauseBlindDiv.className='blindDiv';backgroundDiv.appendChild(pauseBlindDiv);var touchstartArray=puzzles.getTouchEventName('touchstart');touchstartArray.forEach(function(evtName){pauseBlindDiv.addEventListener(evtName,puzzles.hideHelpImgMouseDown);pauseBlindDiv.addEventListener(evtName,puzzles.stopProp);});} var backgroundDivWidth=backgroundDiv.css('width');var backgroundDivHeight=backgroundDiv.css('height');var backgroundDivPos=backgroundDiv.css('position');pauseBlindDiv.css({'left':0,'top':0,'position':backgroundDivPos,'z-index':puzzles.bigZIndex+2});pauseBlindDiv.style.width='100%';pauseBlindDiv.style.height='100%';} puzzles.loadScript=function(src,callback,appendTo){var script=document.createElement('script');if(!appendTo){appendTo=document.getElementsByTagName('head')[0];} if(script.readyState&!script.onload){script.onreadystatechange=function(){if(script.readyState=="loaded"||script.readyState=="complete"){script.onreadystatechange=null;callback();}}} else{script.onload=callback;} script.src=src;appendTo.appendChild(script);} puzzles.selectPartitionButtonClick=function(){if(!navigator.onLine){return;} var categorySelect=document.getElementById('selectCategory');var puzzlesCategory=categorySelect.options[categorySelect.selectedIndex].value;var quantitySelect=document.getElementById('selectQuantity');var puzzlesQuantity=quantitySelect.options[quantitySelect.selectedIndex].value;var puzzlesType=puzzlesCategory+'-'+puzzlesQuantity;var currentPuzzlesType=puzzles.type;if(currentPuzzlesType==puzzlesType){return;} document.getElementById('loadButton').setAttribute('disabled',true);var selectedParamsScriptUrl=puzzles.getUrl('','json/'+puzzlesCategory+'/'+puzzlesType+'/'+puzzlesType+'_params.js','application/json',puzzlesType);puzzles.loadScript(selectedParamsScriptUrl,function(){window.currentPuzzlesParams.pictureUrl=document.getElementsByClassName('p_currentPicture').eq(0).getAttribute('data-assoc-url');puzzles.regenerateScene(puzzles.edgeOnlyMode,puzzles.previewMode,window.currentPuzzlesParams,puzzles.angleMode);});} puzzles.changePictureClick=function(){if(this.is('.p_currentPicture')||!navigator.onLine){return false;} document.getElementsByClassName('p_currentPicture').removeClass('p_currentPicture');this.addClass('p_currentPicture');var currentPictureSrc=this.getAttribute('data-assoc-url');window.currentPuzzlesParams.pictureUrl=currentPictureSrc;puzzles.regenerateScene(puzzles.edgeOnlyMode,puzzles.previewMode,window.currentPuzzlesParams,puzzles.angleMode);} puzzles.morePuzzlesButtonClick=function(evt){if(puzzles.status!='ended'){return;} puzzles.finalFullscreenButtonClick(evt,true);if(puzzles.isEmbedCase){location.href=puzzles.originalHost;} else{puzzles.callExternalFunc('openMorePuzzles');}} puzzles.sendToFriendButtonClick=function(evt){if(puzzles.status!='ended'){return;} puzzles.finalFullscreenButtonClick(evt,true);if(puzzles.isEmbedCase){location.href=puzzles.originalHost;} else{puzzles.callExternalFunc('addthis_sendto','email');}} puzzles.startOverButtonClick=function(evt){if(puzzles.status!='ended'){return;} var fullscreenModeFlag=puzzles.fullscreenMode;if(fullscreenModeFlag==-1){puzzles.startOverFlag=true;puzzles.finalFullscreenButtonClick(evt,true);} else{window.requestAnimFrame(function(){puzzles.regenerateScene(puzzles.edgeOnlyMode,puzzles.previewMode,window['currentPuzzlesParams'],puzzles.angleMode);});}} puzzles.explorePuzzlesButtonClick=function(evt){if(puzzles.status!='ended'){return;} puzzles.finalFullscreenButtonClick(evt,true);if(puzzles.isEmbedCase){window.open('https://www.google.com/search?q='+window.puzzleName);} else{puzzles.callExternalFunc('explorePuzzle');}} puzzles.removeSoundAndEdgeClasses=function(){try{document.querySelector('#topMenuPane').classList.remove('on');document.querySelector('.leftBottom').classList.add('off');} catch(e){};} puzzles.calculatePreviewDivParams=function(sizeType,partitionWidth,partitionHeight){var previewParamsArray;previewParamsArray={'initWidth':0.56*partitionWidth,'initHeight':0.56*partitionHeight,'minWidth':0.16*partitionWidth,'minHeight':0.16*partitionHeight,'maxWidth':0.9*partitionWidth,'maxHeight':0.9*partitionHeight};puzzles.previewParamsArray[sizeType]=previewParamsArray;} puzzles.showPreviewPictureMouseDown=function(evt){evt.preventDefault();evt.stopPropagation();var puzzlesCanvasArray=puzzles.puzzlesCanvasArray;var mainCanvas=puzzles.mainCanvas;var target=evt.target;if(puzzles.touchesQuantity>1){return;} if(target.is){if(!target.is('#showPreviewPicture')){return;}} else{var targetClass=target.getAttribute('class');if(!targetClass||(targetClass.indexOf('rightPaneSvg')==-1&targetClass.indexOf('leftPaneSvg')==-1)){return;}} if(!mainCanvas.dataObj||!mainCanvas.dataObj['moveType']){var onPageCoords=puzzles.getPageCoords(evt);var getOnCanvasCoords=puzzles.getOnCanvasCoords;var isNonTranspPoint=puzzles.isNonTranspPoint;for(var i=puzzlesCanvasArray.length-1;i>-1;i--){var nextCanvas=puzzlesCanvasArray[i];var nextCtx=nextCanvas.dataObj['ctx'];var nextCanvasCoords=getOnCanvasCoords(nextCanvas,onPageCoords.x,onPageCoords.y);if(isNonTranspPoint(nextCtx,nextCanvasCoords.x,nextCanvasCoords.y)){puzzles.prepareSingleMoving(nextCanvas,mainCanvas,onPageCoords,evt.timeStamp);return;}} puzzles.startCapturingGroup(evt,true);} else{puzzles.proectionCanvasMouseDown(evt);}} puzzles.showPreviewButtonClick=function(){puzzles.previewMode=1;document.getElementById('showPreview').css({'z-index':-puzzles.bigZIndex,opacity:0});document.getElementById('showPreviewContainer').css({'display':'inline-block','z-index':(puzzles.bigZIndex+puzzles.jsonsArray['S'].length),'opacity':1});var previewParamsArray;var scaleCoef=1;if(puzzles.fullscreenMode==1){previewParamsArray=puzzles.previewParamsArray['S'];} else{previewParamsArray=puzzles.previewParamsArray['M'];scaleCoef=puzzles.scaleStatesArray[puzzles.currentScaleStateIndex][1];} var initWidth=previewParamsArray['initWidth'];var initHeight=previewParamsArray['initHeight'];if(initWidth&initHeight){puzzles.previewImg.css({'width':initWidth*scaleCoef,'height':initHeight*scaleCoef});previewParamsArray['initWidth']=false;} puzzles.showPreviewContainer.previewParamsArray=previewParamsArray;} puzzles.hidePreviewButtonClick=function(){puzzles.previewMode=0;document.getElementById('showPreview').css({'z-index':(puzzles.bigZIndex+puzzles.jsonsArray['S'].length),'opacity':1});document.getElementById('showPreviewContainer').css({'z-index':-puzzles.bigZIndex,opacity:0});} puzzles.resizePreviewMouseDown=function(evt){if(puzzles.showPreviewContainer.css('display')=='none'){return;} var target=evt.target;var mainCanvas=puzzles.mainCanvas;if(!target.is||!target.is('.resizeZone')){return;} if(target.is('#leftResizeZone')){mainCanvas.dataObj['moveType']='previewResizing';mainCanvas.dataObj['zone']='left';} if(target.is('#bottomResizeZone')){mainCanvas.dataObj['moveType']='previewResizing';mainCanvas.dataObj['zone']='bottom';} var pageCoords=puzzles.getPageCoords(evt);var onCanvasCoords=puzzles.getOnCanvasCoords(puzzles.showPreviewContainer,pageCoords.x,pageCoords.y);var previewDivHeight=parseFloat(puzzles.showPreviewContainer.css('height'));mainCanvas.dataObj['onCanvasCoords']={'left':pageCoords.x-puzzles.showPreviewContainer.offset().left,'bottom':previewDivHeight-onCanvasCoords.y};} puzzles.resizePreviewMouseMove=function(evt){var mainCanvas=puzzles.mainCanvas;if(puzzles.showPreviewContainer.css('display')=='none'||mainCanvas.dataObj['moveType']!='previewResizing'){return;} window.requestAnimFrame(function(){var zone=mainCanvas.dataObj['zone'];var startCanvasCoords=mainCanvas.dataObj['onCanvasCoords'];var mainCanvasWidth=mainCanvas.css('width');var mainCanvasHeight=mainCanvas.css('height');var newImgWidth,newImgHeight;var currentPageCoords=puzzles.getPageCoords(evt);var currentBackgroundCoords=puzzles.getOnCanvasCoords(mainCanvas,currentPageCoords.x,currentPageCoords.y);var previewParamsArray=puzzles.showPreviewContainer.previewParamsArray;if(zone=='left'){newImgWidth=mainCanvasWidth-currentBackgroundCoords.x+startCanvasCoords.left;newImgWidth=Math.min(newImgWidth,previewParamsArray['maxWidth']);newImgWidth=Math.max(newImgWidth,previewParamsArray['minWidth']);newImgHeight=newImgWidth/puzzles.imgProportion;} if(zone=='bottom'){newImgHeight=currentBackgroundCoords.y+startCanvasCoords.bottom;newImgHeight=Math.min(newImgHeight,previewParamsArray['maxHeight']);newImgHeight=Math.max(newImgHeight,previewParamsArray['minHeight']);newImgWidth=newImgHeight*puzzles.imgProportion;} puzzles.previewImg.css({'width':Math.round(newImgWidth),'height':Math.round(newImgHeight)});});} puzzles.resizePreviewMouseUp=function(evt){var mainCanvas=puzzles.mainCanvas;if(('moveType'in mainCanvas.dataObj)&mainCanvas.dataObj['moveType']=='previewResizing'){mainCanvas.dataObj={};}} puzzles.previewHoverIn=function(evt){if(this.isAnimated){this.stop=1;} puzzles.animate(this,'opacity',0.4,15,0);} puzzles.previewHoverOut=function(){if(this.isAnimated){this.stop=1;} this.css({'opacity':1});} puzzles.loadBlockMouseEnter=function(){this.style.background="url('images/templates/load_puzzle_over.png') 0 0 no-repeat";};puzzles.loadBlockMouseLeave=function(){this.style.background="url('images/templates/load_puzzle.png') 0 0 no-repeat";};puzzles.getClassNum=function(classStr){var num=classStr.substring(10);return parseInt(num);};puzzles.showSavedPazzleBlock=function(){document.getElementById('loadBlock').css({'display':'block'});var iconImg=document.getElementById('savedPuzzleThumb');var savedPictureData;try{savedPictureData=localStorage.getItem('p_savedPictureData');} catch(e){savedPictureData=puzzles.pictureUrl;} if(!savedPictureData){savedPictureData=puzzles.pictureUrl;} iconImg.setAttribute('src',savedPictureData);};puzzles.loadSavedPuzzle=function(puzzleState){puzzles.saveThisPuzzlesA.lspMode=puzzleState;puzzles.regenerateScene(puzzleState.edgeOnlyMode,puzzleState.previewMode,window['currentPuzzlesParams'],puzzleState.angleMode);};puzzles.getCurrentPuzzleParamsUrl=function(puzzleTypeObj,doubleNum){if(!doubleNum||doubleNum==1){doubleNum='';} else{doubleNum='-'+doubleNum;} var puzzleCategory=puzzleTypeObj[2].toLowerCase();var hyphenIndex=puzzleCategory.indexOf('-');if(hyphenIndex>-1){doubleNum=parseInt(puzzleCategory.substring(hyphenIndex+1));puzzleCategory=puzzleCategory.substring(0,hyphenIndex);puzzles.doubleNum=doubleNum;doubleNum='-'+doubleNum;} var puzzleQuantity=puzzleTypeObj[0];var resultJsonUrl=puzzles.getUrl(undefined,['json/',puzzleCategory,'/',puzzleCategory,'-',puzzleQuantity,doubleNum,'/',puzzleCategory,'-',puzzleQuantity,'_params.js'].(''),'application/json',undefined);return resultJsonUrl;};puzzles.saveImgToLocalStorage=function(imgSrc,size,counter,maxCount,savedSizeArray){var img=new Image();img.onload=function(){var nextCanvas=document.createElement('CANVAS');var nextCtx=nextCanvas.getContext('2d');puzzles.setDomParams(nextCanvas,nextCtx,{'width':this.width,'height':this.height});nextCtx.drawImage(this,0,0);var nextDataUrl=nextCanvas.toDataURL('image/webp');if(counter){savedSizeArray[size]=nextDataUrl;++counter.value;if(counter.value==maxCount){try{localStorage.setItem('p_savedSizeArray',JSON.stringify(savedSizeArray));} catch(e){localStorage.setItem('p_savedSizeArray','');} puzzles.showSavedPazzleBlock();puzzles.noActionDiv.css({'display':'none'});}} else{try{localStorage.setItem('p_savedPictureData',nextDataUrl);} catch(e){localStorage.setItem('p_savedPictureData','');} puzzles.noActionDiv.css({'display':'none'});}} img.src=imgSrc;};puzzles.getLocalStorageImgUrl=function(size,imgSrc){return imgSrc;};puzzles.getFlashGroupCoords=function(groupLeft,groupTop,realGroupLeft,realGroupTop,groupArray,jsonS,angleMode){var getRotatedIndex=puzzles.getRotatedIndex;var getRotatedJsonParams=puzzles.getRotatedJsonParams;var partitionSizes=puzzles.getPartitionSizes(jsonS);var jsonMinLeft=1000000;var jsonMinTop=1000000;var jsonParamsArr=[];for(var index in groupArray){var nextFragIndex;var fragIndex=parseInt(groupArray[index])-1;try{nextFragIndex=getRotatedIndex(angleMode,fragIndex);} catch(e){continue;} var jsonParams=getRotatedJsonParams(angleMode,jsonS,fragIndex,partitionSizes.width,partitionSizes.height);jsonParamsArr[nextFragIndex]=jsonParams;jsonMinLeft=Math.min(jsonMinLeft,jsonParams[0]);jsonMinTop=Math.min(jsonMinTop,jsonParams[1]);groupArray[index]=nextFragIndex;} var resultArray=[];for(var index in groupArray){var nextFragIndex=groupArray[index];if(isNaN(nextFragIndex)){continue;} var jsonParams=jsonParamsArr[nextFragIndex];var nextCoords={'left':groupLeft+jsonParams[0]-jsonMinLeft,'top':groupTop+jsonParams[1]-jsonMinTop};var nextRealCoords={'left':realGroupLeft+jsonParams[0]-jsonMinLeft,'top':realGroupTop+jsonParams[1]-jsonMinTop};resultArray.push({'coords':nextCoords,'realCoords':nextRealCoords,'elemNum':nextFragIndex});} return resultArray;};puzzles.parseFlashGameStateString=function(gameStateString,jsonS){var resultObj={};var gameStateArray=gameStateString.split(':&');var firstSetParams=gameStateArray[0].split(':');resultObj['stateVersion']=firstSetParams[0];resultObj['puzzleId']=firstSetParams[1];var cutout=firstSetParams[2];var hiphenIndex=cutout.indexOf('-');if(hiphenIndex>-1){cutout=cutout.substring(0,hiphenIndex);} resultObj['cutout']=cutout;resultObj['flip']=firstSetParams[3];var angleMode=puzzles.convertFlip2AngleMode(parseInt(resultObj['flip']));var secondSetParams=gameStateArray[1].split(':');resultObj['paused']=secondSetParams[0];resultObj['timer']=secondSetParams[1];resultObj['edgesOnly']=secondSetParams[2];resultObj['background']=secondSetParams[3];resultObj['soundMuted']=secondSetParams[4];resultObj['previewVisible']=secondSetParams[5];resultObj['previewSize']=secondSetParams[6];var groupCoordsArray=[];var getFlashGroupCoords=puzzles.getFlashGroupCoords;for(var i=2,gameStateArrayLength=gameStateArray.length;i5?nextGroupArr.splice(5):[groupNum];var nextFlashCoords=getFlashGroupCoords(groupLeft,groupTop,realGroupLeft,realGroupTop,groupIndexArray,jsonS,angleMode);groupCoordsArray.push(nextFlashCoords);} resultObj['groupCoords']=groupCoordsArray;return resultObj;};puzzles.convertFlashObj2Ls=function(gameStateString,currentPuzzlesParams){var puzzleState={};var flashStr=gameStateString;var parsedFlashState=puzzles.parseFlashGameStateString(flashStr,currentPuzzlesParams.currentJson);var lsPuzzlesArray=puzzles.convertFlashGroupCoords2LsPuzzlesArray(parsedFlashState['groupCoords'],currentPuzzlesParams.bigGroupThreshold);puzzleState['angleMode']=(currentPuzzlesParams.type.toLowerCase().indexOf('spiral')>-1)?0:puzzles.convertFlip2AngleMode(parsedFlashState['flip']);var correctedLsPuzzlesArray=[];correctedLsPuzzlesArray=lsPuzzlesArray;puzzleState['lsPuzzlesArray']=correctedLsPuzzlesArray;puzzleState['stateVersion']=parsedFlashState['stateVersion'];puzzleState['puzzleId']=parsedFlashState['puzzleId'];puzzleState['paused']=parseInt(parsedFlashState['paused']);puzzleState['timer']=parseInt(parsedFlashState['timer']);puzzleState['edgeOnlyMode']=parseInt(parsedFlashState['edgesOnly']);puzzleState['background']=parseInt(parsedFlashState['background']);puzzleState['soundMuted']=parseInt(parsedFlashState['soundMuted']);puzzleState['previewMode']=parseInt(parsedFlashState['previewVisible']);puzzleState['previewSize']=parsedFlashState['previewSize'];puzzleState['currentPuzzlesParams']=currentPuzzlesParams;return puzzleState;};puzzles.convertFlashGroupCoords2LsPuzzlesArray=function(flashGroupCoords,bigGroupThreshold){var lsPuzzlesArray=[];for(var i=0,flashGroupCoordsLength=flashGroupCoords.length;ibigGroupThreshold?0:1),undefined];lsPuzzlesArray[nextElem]={'coords':nextElemParams['coords'],'realCoords':nextElemParams['realCoords'],'classes':nextLSClasses,'z-index':(i+1),'groupArr':nextGroup};}} return lsPuzzlesArray;};puzzles.convertFlip2AngleMode=function(flip){flip=parseInt(flip);if(puzzles.pictureOrientation){switch(flip){case 0:return 0;case 1:return's0';case 3:return'180';case 2:return's180';}} else{switch(flip){case 0:return'270';case 1:return's90';case 3:return'90';case 2:return's270';}}};puzzles.convertAngleModeToFlip=function(){switch(puzzles.angleMode){case 0:return 0;case's0':return 1;case'90':return 3;case's90':return 1;case'180':return 3;case's180':return 2;case'270':return 0;case's270':return 2;}};puzzles.getFlashPuzzlesType=function(flashStr){flashStr=flashStr.toLowerCase();var pIndex=flashStr.indexOf('piece');var prevColonIndex=flashStr.lastIndexOf(':',pIndex);var nextColonIndex=flashStr.indexOf(':',pIndex);var resultStr=flashStr.substring(prevColonIndex+1,nextColonIndex);result=resultStr.split(' ');return result;};puzzles.getSavedPuzzleState=function(){var puzzleState;try{puzzleState=JSON.parse(localStorage.getItem('savedPuzzle'));puzzleState=puzzles.convertFlashObj2Ls(puzzleState['gameStateString'],window.currentPuzzlesParams);} catch(e){};return puzzleState;};puzzles.getState=function(){if(puzzles.status!='initialized'){return null;} var bool=function(val){return 0+!!val;} var doubleNum=(puzzles.doubleNum>1)?('-'+puzzles.doubleNum):'';var puzzleCutout=window.puzzleCutout.indexOf('-')>-1?window['puzzleCutout']:window['puzzleCutout']+doubleNum;var firstParamsArr=['2',window['puzzleId'],puzzleCutout,puzzles.convertAngleModeToFlip()];var previewWidth=parseInt(puzzles.previewImg.getElementComputedStyle('width'))?parseInt(puzzles.previewImg.getElementComputedStyle('width')):puzzles.previewParamsArray['S'].initWidth;var secondParamsArr=[bool(puzzles.pauseMode),puzzles.timeSum,bool(puzzles.edgeOnlyMode),puzzles.currentBackImgIndex+1,bool(puzzles.muteOn),bool(puzzles.previewMode),previewWidth];var prevDivLeft,prevDivTop,nextDivLeft,nextDivTop;var mainDivLeft=0.5*puzzles.containerDivWidth;var mainDivTop=0.5*puzzles.containerDivHeight;var zoomCoef=puzzles.zoomCoef;prevDivLeft=nextDivLeft=mainDivLeft;prevDivTop=nextDivTop=mainDivTop;var puzzlesCanvasArray=puzzles.puzzlesCanvasArray;var transformCoords=puzzles.transformCoords;var getControlClassName=puzzles.getControlClassName;var lsPuzzlesArray=[];var getCorrectPosition=puzzles.getCorrectPosition;var maxFragmentWidth=puzzles.fragmentsParamsArray['S']['maxFragmentWidth'];var maxFragmentHeight=puzzles.fragmentsParamsArray['S']['maxFragmentHeight'];var classFullStr='';var calculateGroupBounds=puzzles.calculateGroupBounds;var getGroupIndexArray=puzzles.getGroupIndexArray;var getRotatedIndex=puzzles.getRotatedIndex;var angleMode=puzzles.angleMode;for(var i=0,length=puzzlesCanvasArray.length;i-1){return true;}}catch(e){};return false;} puzzles.getHintSiblingClass=function(currentCanvas,currentControlClass,allPuzzlesArray){var currentCanvasIndex=currentCanvas.dataObj['jsonIndex'];var siblingsArray=puzzles.siblingsArray[currentCanvasIndex];var getControlClassName=puzzles.getControlClassName;var yellowSiblingClassArray=[];for(var siblingIndex in siblingsArray){var nextSiblingCanvas=allPuzzlesArray.eq(siblingIndex);var nextControlClass=getControlClassName(nextSiblingCanvas);if(nextControlClass!=currentControlClass){if(!puzzles.edgeOnlyMode||nextSiblingCanvas.is('.edgeFrag')){yellowSiblingClassArray.push(nextControlClass);}}} var yellowArrayLength=yellowSiblingClassArray.length;if(yellowArrayLength){var yellowIndex=parseInt((yellowArrayLength-0.0000001)*Math.random());return yellowSiblingClassArray[yellowIndex];} return undefined;} puzzles.getHintPair=function(lastMovedCanvas){var allPuzzlesArray=document.getElementsByClassName('fragmentsCanvasClass');var activePuzzlesArray=puzzles.edgeOnlyMode?document.getElementsByClassName('edgeFrag'):allPuzzlesArray;if(!lastMovedCanvas){lastMovedCanvas=puzzles.getRandomHintCanvas(activePuzzlesArray);} var lastMovedClass=puzzles.getControlClassName(lastMovedCanvas);var getHintSiblingClass=puzzles.getHintSiblingClass;var currentControlClass=lastMovedClass;if(activePuzzlesArray.is('.'+currentControlClass)){return false;} var currentCanvasArray=document.getElementsByClassName(currentControlClass);var currentArraySize=currentCanvasArray.size();var yellowSiblingClass;while(!yellowSiblingClass){var randomIndex=parseInt(Math.random()*(currentArraySize-0.0000001));var nextCanvas=currentCanvasArray.eq(randomIndex);yellowSiblingClass=getHintSiblingClass(nextCanvas,lastMovedClass,allPuzzlesArray);} return[lastMovedClass,yellowSiblingClass];} puzzles.getRandomHintCanvas=function(activePuzzlesArray){var randomIndex=parseInt(Math.random()*(activePuzzlesArray.size()-0.0000001));var lastMovedCanvas=activePuzzlesArray.eq(randomIndex);puzzles.lastMovedCanvas=lastMovedCanvas;return lastMovedCanvas;} puzzles.animateHintsCanvas=function(animateObj,moveQuantity,moveDistance){puzzles.animate(animateObj.canvasArray,'left',animateObj.canvasArray.css('left')+animateObj.direction*moveDistance,6,0,function(){if(animateObj.counter=quantity){break rotLoop;} rotationFunc(row,column,json,index,correctedJson,maxObj,spriteRowQuantity,spriteColQuantity,sourcePartitionWidth,sourcePartitionHeight);++index;}} maxWidth=maxObj.maxWidth;maxHeight=maxObj.maxHeight;json=correctedJson;puzzles.jsonsArray[sizeType]=json;} else{for(var i=0;ipuzzles.sprite1PuzzlesNum){coloredSpriteImg=puzzles.coloredSpriteImgArray['B2'];} else{coloredSpriteImg=puzzles.coloredSpriteImgArray['B1'];}} else{if(fragmentIndex>puzzles.sprite1PuzzlesNum){coloredSpriteImg=puzzles.pauseSpriteImgArray['B2'];} else{coloredSpriteImg=puzzles.pauseSpriteImgArray['B1'];}}} currentCtx.drawImage(coloredSpriteImg,spriteCoords[0],spriteCoords[1],initJsonParams[2],initJsonParams[3],currentCanvasX,currentCanvasY,scaleCoef*initJsonParams[2],scaleCoef*initJsonParams[3]);};puzzles.startSoundLoading=function(eventName){var audioSrc=puzzles.androidDevice?puzzles.getUrl('audio','audio/piece.ogg'):puzzles.getUrl('audio','audio/piece.mp3');if(puzzles.androidDevice&(window.AudioContext||window.webkitAudioContext)){var aContextConstruct,context;if(window.AudioContext){aContextConstruct=window.AudioContext;} else if(window.webkitAudioContext){aContextConstruct=window.webkitAudioContext;} context=new aContextConstruct();puzzles.context=context;var request=new XMLHttpRequest();request.open('GET',audioSrc,true);request.responseType='arraybuffer';request.onload=function(){try{context.decodeAudioData(request.response,function(buffer){puzzles.buffer=buffer;});} catch(e){}} request.send();} else{puzzles.creteAudioElement();} puzzles.backgroundDiv.removeEventListener(eventName.type,puzzles.startSoundLoading);} puzzles.creteAudioElement=function(){var audioElement=document.createElement('audio');puzzles.sound=audioElement;audioElement.setAttribute("preload","auto");audioElement.autobuffer=true;if(!audioElement.canPlayType){audioElement.setAttribute('src',puzzles.getUrl('audio','audio/piece.mp3'));} else{if(audioElement.canPlayType('audio/mpeg')){audioElement.setAttribute('src',puzzles.getUrl('audio','audio/piece.mp3'));} else if(audioElement.canPlayType('audio/ogg')){audioElement.setAttribute('src',puzzles.getUrl('audio','audio/piece.ogg'));}} audioElement.load();} puzzles.playSound=function(){if(puzzles.buffer){var s=puzzles.context.createBufferSource();s.buffer=puzzles.buffer;s.connect(puzzles.context.destination);(s.noteOn)?s.noteOn(0):s.start(0);} else{if(!puzzles.context&puzzles.sound.play){if(!window.chrome&&!(puzzles.sound.duration>0)){setTimeout(function(){puzzles.sound.load();},0);} puzzles.sound.play();}}} puzzles.mobFullscreenButtonClick=function(evt){evt.stopPropagation();if(evt){puzzles.svgClassFlag=true;puzzles.setActualSvgClass(document.querySelector('.rightBottom'),'fs');} window.requestAnimFrame(function(){if(puzzles.coloredSpriteImgArray['B1']&puzzles.coloredSpriteImgArray['B2']||puzzles.ie10){var mainCanvas=puzzles.mainCanvas;if(mainCanvas.css('position')=='absolute'){document.body.appendChild(document.getElementById('p_background'));document.querySelectorAll('#p_mainCanvas,#p_background').css({'position':'fixed'});} else{document.getElementById('p_mainContainer').appendChild(document.getElementById('p_background'));document.querySelectorAll('#p_mainCanvas,#p_background').css({'position':'absolute'});} puzzles.fullscreenModeContainerResize(evt);puzzles.interfaceResize();}});} puzzles.changeOrientation=function(evt){window.requestAnimFrame(function(){var mode=puzzles.fullscreenMode;var mainCanvas=puzzles.mainCanvas;if(mode==-1){var mainCanvasWidth=mainCanvas.css('width');puzzles.mainCanvasCtx.canvas.width=mainCanvasWidth;var mainCanvasHeight=mainCanvas.css('height');puzzles.mainCanvasCtx.canvas.height=mainCanvasHeight;puzzles.doFragmentZoom(puzzles.currentScaleStateIndex,puzzles.currentScaleStateIndex,'changeOrientation');}});} puzzles.arrangeButtons=function(){document.getElementById('showPreview').style.right=0+'px';document.getElementById('p_bottom').style.bottom=0+'px';} puzzles.mobDrawCapturedProection=function(capturedCanvasX,capturedCanvasY,capturedCanvasCtx,capturedObj){var scaleParamsArray=puzzles.scaleStatesArray[puzzles.currentScaleStateIndex];var size=scaleParamsArray[0];var scaleCoef=scaleParamsArray[1];var spriteApexArray=puzzles.spriteApexArray[size];var json=puzzles.jsonsArray[size];var coloredSprite=puzzles.coloredSpriteImgArray[size];var maxFragmentWidth=puzzles.fragmentsParamsArray[size]['maxFragmentWidth'];var maxFragmentHeight=puzzles.fragmentsParamsArray[size]['maxFragmentHeight'];var capturedCanvasArray=capturedObj.capturedCanvasArray;var capturedClassNameArray=capturedObj.capturedClassNameArray;var shadowParams=puzzles.shadowParams;var w=capturedCanvasCtx.canvas.width;var h=capturedCanvasCtx.canvas.height;if(capturedCanvasArray.length>1&capturedClassNameArray&&capturedClassNameArray.length>1){puzzles.drawCapturingTray(capturedCanvasCtx);} puzzles.drawProjectionWithoutShadow(capturedCanvasCtx,capturedCanvasArray,capturedCanvasX,capturedCanvasY,json,scaleCoef,coloredSprite,spriteApexArray);var partitionMargin=puzzles.fragmentsParamsArray[size]['margin'];capturedObj.visibleMaxFrgWidth=partitionMargin*scaleCoef;capturedObj.visibleMaxFrgHeight=partitionMargin*scaleCoef;} puzzles.drawFinalBevel=function(mainImDataArray,bevelData,mainW,mainH,sizeType){var w=mainW;var h=mainH;var pixels=bevelData.data;var rectBevelArray=puzzles.rectBevelArray[sizeType];var rectBevelSize=rectBevelArray['lighter'].length;for(var x=0;x-1){puzzles.ie10=true;puzzles.fullscreenButtonClick=puzzles.mobFullscreenButtonClick;}} puzzles.startLoadingData=function(){puzzles.noActionDiv=document.getElementById('noActionDiv');var mainCanvas=puzzles.mainCanvas;mainCanvas.dataObj={};document.querySelectorAll('#topMenuContainer,#p_bottomPaneGrd').css({'z-index':puzzles.bigZIndex});var mainCanvasCtx;try{mainCanvasCtx=mainCanvas.getContext('2d');} catch(e){return;} puzzles.mainCanvasCtx=mainCanvasCtx;puzzles.createMessageDiv();puzzles.setCompatibleFunctions();puzzles.capturingCanvas=document.getElementsByClassName('p_capturingCanvas').eq(0);puzzles.capturingCanvas.attr('id','capturing0');puzzles.capturingCanvasCtx=puzzles.capturingCanvas.getContext('2d');puzzles.mainCanvasCtx.strokeStyle='#3d9ff1';var containerDiv=document.getElementById('p_mainContainer');if(puzzles.modernIe){containerDiv.getElementComputedStyle=puzzles.getElementComputedStyle;} puzzles.containerDivWidth=parseFloat(containerDiv.getElementComputedStyle('width'));puzzles.containerDivHeight=parseFloat(containerDiv.getElementComputedStyle('height'));puzzles.previewImg=document.getElementById('showPreviewPicture');puzzles.showPreviewContainer=document.getElementById('showPreviewContainer');document.getElementById('showPreview').style.borderWidth=1;mainCanvas.dataObj['ctx']=mainCanvasCtx;puzzles.p_buttonsArray=document.getElementsByClassName('p_button');puzzles.bufferCanvas=document.createElement('CANVAS');puzzles.bufferCanvasCtx=puzzles.bufferCanvas.getContext('2d');if(!puzzles.isMobileDevice&!puzzles.isMacOS){puzzles.creteAudioElement();} puzzles.vCapable=puzzles.workerCapable();} puzzles.regenerateScene=function(edgeOnlyMode,previewMode,currentPuzzlesParams,angleMode){puzzles.status='initializing';puzzles.backgroundDiv=document.getElementById('p_background');if(!puzzles.backgroundDiv){console.log('HTML5 template was not found');return;} puzzles.disableButtons(undefined,true);if(!puzzles.isMobileDevice){puzzles.backgroundDiv.addClass('noMobile');} puzzles.backgroundDiv.remove(document.getElementsByClassName('blindDiv'));puzzles.p_fullScreenButton=document.getElementById('p_fullScreen');if(puzzles.timer){clearTimeout(puzzles.timer);} puzzles.backgroundDiv.remove(document.getElementsByClassName('fragmentsCanvasClass'));document.getElementsByClassName('p_interface').css({'display':'block','opacity':0});puzzles.topMenu=document.getElementById('topMenuPane');puzzles.topMenu.css({'top':0});document.getElementsByClassName('finalStateElements').css({'display':'none'});document.getElementById('pauseMessageDiv').css({'display':'none'});try{puzzles.backgroundDiv.removeChild(document.getElementById('p_finalCanvas'))} catch(e){if(window.debug){console.error(' name: '+e.name+' *** message: '+e.message+' *** stack: '+e.stack);}};puzzles.detachEvents();puzzles.initVars(edgeOnlyMode,previewMode,currentPuzzlesParams,angleMode);puzzles.mainCanvas=document.getElementById('p_mainCanvas');puzzles.startLoadingData();puzzles.timeSpan=document.querySelector('#timeDisplay');puzzles.timeSpan.text=function(msg){this.textContent=msg;} if(puzzles.timeSpan){puzzles.timeSpan.text('00:00');} var initLoadedSizeArray={};var initCounter={'value':0};document.querySelector('.helpImageDiv').css({'z-index':puzzles.bigZIndex});puzzles.setLoadingItemProps('mainPicture','mainPicture',initCounter,initLoadedSizeArray,1);puzzles.setLoadingItemProps('spriteImg','S',initCounter,initLoadedSizeArray,1);puzzles.setLoadingItemProps('spriteImg','M',initCounter,initLoadedSizeArray,1);if(!puzzles.isMobileDevice){puzzles.setLoadingItemProps('spriteImg','B',initCounter,initLoadedSizeArray,1);} else{puzzles.setLoadingItemProps('spriteImg','B1',initCounter,initLoadedSizeArray,1);puzzles.setLoadingItemProps('spriteImg','B2',initCounter,initLoadedSizeArray,1);} puzzles.removeSoundAndEdgeClasses();} puzzles.DOMContentLoadedHandler=function(){puzzles.saveThisPuzzlesA=document.getElementById('p_mainContainer');puzzles.contentIsLoaded=true;if(!puzzles.scriptIsLoaded){return;} puzzles.regenerateScene();} puzzles.main=function(){puzzles.scriptIsLoaded=true;window.currentPuzzlesParams.pictureUrl=window.puzzleImageURL;if(puzzles.contentIsLoaded){puzzles.DOMContentLoadedHandler();}} if(('gameClientType'in window)&window.gameClientType=='html5'){if(!puzzles.oldIe&&!puzzles.oldBrowser){if(puzzles.isMobileDevice){document.addEventListener('DOMContentLoaded',function(){puzzles.setDefaultResize();});} if(puzzles.callExternalFunc('checkLoadOnStart')){puzzles.status='loadState';try{var savedPuzzle=JSON.parse(localStorage.getItem('savedPuzzle'));var puzzleId=savedPuzzle['puzzleId'];var gameStateString=savedPuzzle['gameStateString'];if(puzzleId&gameStateString){document.addEventListener("DOMContentLoaded",function(){puzzles.saveThisPuzzlesA=document.getElementById('p_mainContainer');puzzles.loadState(puzzleId,gameStateString);})}} catch(e){if(window.debug){console.error('name: '+e.name+' message: '+e.message+' stack: '+e.stack);}}} else{document.addEventListener("DOMContentLoaded",puzzles.DOMContentLoadedHandler,false);puzzles.doubleNum=puzzles.getDoubleNum(puzzles.maxDoubleNum);var currentPuzzlesParamsUrl=puzzles.getCurrentPuzzleParamsUrl(window.puzzleCutout.split(' '),puzzles.doubleNum);puzzles.loadScript(currentPuzzlesParamsUrl,puzzles.main);}} else{window.onload=function(){var ieMessage=document.getElementById('ieMessage');ieMessage.style.display='block';var idArray=new Array('topMenuContainer','showPreview','p_bottomPaneGrd','p_hint','p_edgesOnly','p_pause','p_timer','p_fullScreen','topMenuPane');for(var i=0,length=idArray.length;i 33255p