var v_timeOut=Date.parse(new Date()); function imgVer(Config) { var el = eval(Config.el); var w = Config.width; var h = Config.height; var PL_Size = 48; var padding = 20; var MinN_X = padding + PL_Size; var MaxN_X = w - padding - PL_Size - PL_Size / 6; var MaxN_Y = padding; var MinN_Y = h - padding - PL_Size - PL_Size / 6; function RandomNum(Min, Max) { var Range = Max - Min; var Rand = Math.random(); if (Math.round(Rand * Range) == 0) { return Min + 1; } else if (Math.round(Rand * Max) == Max) { return Max - 1; } else { var num = Min + Math.round(Rand * Range) - 1; return num; } } var imgSrc = "https://cdn.yimian.ac.cn/easyVer/image.php?df="+Math.floor(Math.random()*10); v_timeOut=Date.parse(new Date()); var X = RandomNum(MinN_X, MaxN_X); var Y = RandomNum(MinN_Y, MaxN_Y); var left_Num = -X + 10; var html = '
'; html += '
'; html += '
'; html += ''; html += ''; html += '
'; html += '
'; html += ''; html += ''; html += '
'; html += '

'; html += '
'; html += '
'; html += '
'; html += '
'; html += '
'; html += '
'; html += '

Slide block to finish the jigsaw..

'; html += '
'; html += '
'; html += '
'; el.html(html); var d = PL_Size / 3; var c = document.getElementById("puzzleBox"); var ctx = c.getContext("2d"); ctx.globalCompositeOperation = "xor"; ctx.shadowBlur = 10; ctx.shadowColor = "#fff"; ctx.shadowOffsetX = 3; ctx.shadowOffsetY = 3; ctx.fillStyle = "rgba(0,0,0,0.7)"; ctx.beginPath(); ctx.lineWidth = "1"; ctx.strokeStyle = "rgba(0,0,0,0)"; ctx.moveTo(X, Y); ctx.lineTo(X + d, Y); ctx.bezierCurveTo(X + d, Y - d, X + 2 * d, Y - d, X + 2 * d, Y); ctx.lineTo(X + 3 * d, Y); ctx.lineTo(X + 3 * d, Y + d); ctx.bezierCurveTo(X + 2 * d, Y + d, X + 2 * d, Y + 2 * d, X + 3 * d, Y + 2 * d); ctx.lineTo(X + 3 * d, Y + 3 * d); ctx.lineTo(X, Y + 3 * d); ctx.closePath(); ctx.stroke(); ctx.fill(); var c_l = document.getElementById("puzzleLost"); var c_s = document.getElementById("puzzleShadow"); var ctx_l = c_l.getContext("2d"); var ctx_s = c_s.getContext("2d"); var img = new Image(); img.src = imgSrc; img.onload = function() { ctx_l.drawImage(img, 0, 0, w, h); } ctx_l.beginPath(); ctx_l.strokeStyle = "rgba(0,0,0,0)"; ctx_l.moveTo(X, Y); ctx_l.lineTo(X + d, Y); ctx_l.bezierCurveTo(X + d, Y - d, X + 2 * d, Y - d, X + 2 * d, Y); ctx_l.lineTo(X + 3 * d, Y); ctx_l.lineTo(X + 3 * d, Y + d); ctx_l.bezierCurveTo(X + 2 * d, Y + d, X + 2 * d, Y + 2 * d, X + 3 * d, Y + 2 * d); ctx_l.lineTo(X + 3 * d, Y + 3 * d); ctx_l.lineTo(X, Y + 3 * d); ctx_l.closePath(); ctx_l.stroke(); ctx_l.shadowBlur = 10; ctx_l.shadowColor = "black"; ctx_l.clip(); ctx_s.beginPath(); ctx_s.lineWidth = "1"; ctx_s.strokeStyle = "rgba(0,0,0,0)"; ctx_s.moveTo(X, Y); ctx_s.lineTo(X + d, Y); ctx_s.bezierCurveTo(X + d, Y - d, X + 2 * d, Y - d, X + 2 * d, Y); ctx_s.lineTo(X + 3 * d, Y); ctx_s.lineTo(X + 3 * d, Y + d); ctx_s.bezierCurveTo(X + 2 * d, Y + d, X + 2 * d, Y + 2 * d, X + 3 * d, Y + 2 * d); ctx_s.lineTo(X + 3 * d, Y + 3 * d); ctx_s.lineTo(X, Y + 3 * d); ctx_s.closePath(); ctx_s.stroke(); ctx_s.shadowBlur = 20; ctx_s.shadowColor = "black"; ctx_s.fill(); var moveStart = ''; $(".slider-btn").mousedown(function(e) { e = e || window.event; $(this).css({ "background-position": "0 -216px" }); moveStart = e.pageX; }); $(".slider-btn").on("touchstart",function(e) { e = e || window.event; $(this).css({ "background-position": "0 -216px" }); moveStart = e.targetTouches[0].pageX; }); onmousemove = function(e) { e = e || window.event; var moveX = e.pageX; var d = moveX - moveStart; if (moveStart == '') {} else { if (d < 0 || d > (w - padding - PL_Size)) {} else { $(".slider-btn").css({ "left": d + 'px', "transition": "inherit" }); $("#puzzleLost").css({ "left": d + 'px', "transition": "inherit" }); $("#puzzleShadow").css({ "left": d + 'px', "transition": "inherit" }); } } }; //add var for touchend to get location var touch_pageX; $(".slider-btn").on("touchmove", function(e) { e = e || window.event; var moveX = e.targetTouches[0].pageX; touch_pageX=moveX; var d = moveX - moveStart; if (moveStart == '') {} else { if (d < 0 || d > (w - padding - PL_Size)) {} else { $(".slider-btn").css({ "left": d + 'px', "transition": "inherit" }); $("#puzzleLost").css({ "left": d + 'px', "transition": "inherit" }); $("#puzzleShadow").css({ "left": d + 'px', "transition": "inherit" }); } } }); onmouseup = function(e) { e = e || window.event; var moveEnd_X = e.pageX - moveStart; var ver_Num = X - 10; var deviation = 4; var Min_left = ver_Num - deviation; var Max_left = ver_Num + deviation; if (moveStart == '') {} else { if (Max_left > moveEnd_X && moveEnd_X > Min_left) { $(".ver-tips").html('Authority Confimed! Only use '+(Date.parse(new Date())-v_timeOut)/1000+'s!'); $(".ver-tips").addClass("slider-tips"); $(".puzzle-lost-box").addClass("hidden"); $("#puzzleBox").addClass("hidden"); setTimeout(function() { $(".ver-tips").removeClass("slider-tips"); imgVer(Config);easyVer_off(); }, 2000); Config.success(); } else { $(".ver-tips").html('Verification Failure!Please drag block to the right position!'); $(".ver-tips").addClass("slider-tips"); setTimeout(function() { $(".ver-tips").removeClass("slider-tips"); document.getElementById("scream").src="https://cdn.yimian.ac.cn/easyVer/image.php?df="+Math.floor(Math.random()*10); imgVer(Config);v_timeOut=Date.parse(new Date()); }, 2000); Config.error(); } } setTimeout(function() { $(".slider-btn").css({ "left": '0', "transition": "left 0.5s" }); $("#puzzleLost").css({ "left": '0', "transition": "left 0.5s" }); $("#puzzleShadow").css({ "left": '0', "transition": "left 0.5s" }); }, 1000); $(".slider-btn").css({ "background-position": "0 -84px" }); moveStart = ''; $(".re-btn a").on("click", function() { imgVer(Config); }) } $(".slider-btn").on("touchend", function(e) { e = e || window.event; var moveEnd_X = touch_pageX - moveStart; var ver_Num = X - 10; var deviation = 4; var Min_left = ver_Num - deviation; var Max_left = ver_Num + deviation; if (moveStart == '') {} else { if (Max_left > moveEnd_X && moveEnd_X > Min_left) { $(".ver-tips").html('Authority Confimed! Only use '+(Date.parse(new Date())-v_timeOut)/1000+'s!'); $(".ver-tips").addClass("slider-tips"); $(".puzzle-lost-box").addClass("hidden"); $("#puzzleBox").addClass("hidden"); setTimeout(function() { $(".ver-tips").removeClass("slider-tips"); imgVer(Config);easyVer_off(); }, 2000); Config.success(); } else { $(".ver-tips").html('Verification Failure!Please drag block to the right position!'); $(".ver-tips").addClass("slider-tips"); setTimeout(function() { $(".ver-tips").removeClass("slider-tips"); document.getElementById("scream").src="https://cdn.yimian.ac.cn/easyVer/image.php?df="+Math.floor(Math.random()*10); imgVer(Config);v_timeOut=Date.parse(new Date()); }, 2000); Config.error(); } } setTimeout(function() { $(".slider-btn").css({ "left": '0', "transition": "left 0.5s" }); $("#puzzleLost").css({ "left": '0', "transition": "left 0.5s" }); $("#puzzleShadow").css({ "left": '0', "transition": "left 0.5s" }); }, 1000); $(".slider-btn").css({ "background-position": "0 -84px" }); moveStart = ''; $(".re-btn a").on("click", function() { imgVer(Config); }) }); } var callBackFunctionName = ""; $(".verBox").html("
"); function easyVer() { $(".verBox").css({ "left": "404px", "opacity": "0", "z-index":"9999" }) imgVer({ el: '$("#imgVer")', width: '260', height: '116', success: function() { if (callBackFunctionName) eval(callBackFunctionName + "()") }, error: function() {} }) } function easyVer_off() { $(".verBox").css({ "left": "404px", "opacity": "0", "z-index":"-100" }) $(".verBox").css({ "left": "0px", "opacity": "0" }) } console.log('\n' + ' %c easyVer Vertification Plugin %c https://github.com/hhCandy/easyVer ' + '\n', 'color: #00FFFF; background: #030307; padding:5px 0;', 'background: #4682B4; padding:5px 0;'); function show_easyVer() { $(".verBox").css({ "left": "0", "opacity": "1" }) }