/*! verify-v0.1.0 mit license by 大熊*/ ;(function($,window,document,undefined){var code=function(ele,opt){this.$element=ele,this.defaults={type:1,figure:100,arith:0,width:'200px',height:'60px',fontsize:'30px',codelength:6,btnid:'check-btn',ready:function(){},success:function(){},error:function(){}},this.options=$.extend({},this.defaults,opt)};var _code_chars=[0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];var _code_color1=['#fffff0','#f0ffff','#f0fff0','#fff0f0'];var _code_color2=['#ff0033','#006699','#993366','#ff9900','#66cc66','#ff33cc'];code.prototype={init:function(){var _this=this;this.loaddom();this.setcode();this.options.ready();this.$element[0].onselectstart=document.body.ondrag=function(){return false};this.$element.find('.verify-code, .verify-change-code').on('click',function(){_this.setcode()});this.htmldoms.code_btn.on('click',function(){_this.checkcode()})},loaddom:function(){var panelhtml='
';this.$element.append(panelhtml);this.isend=false;this.htmldoms={code_btn:$('#'+this.options.btnid),code:this.$element.find('.verify-code'),code_area:this.$element.find('.verify-code-area'),code_input:this.$element.find('.varify-input-code'),};this.htmldoms.code.css({'width':this.options.width,'height':this.options.height,'line-height':this.options.height,'font-size':this.options.fontsize});this.htmldoms.code_area.css({'width':this.options.width})},setcode:function(){if(this.isend==false){var color1num=math.floor(math.random()*3);var color2num=math.floor(math.random()*5);this.htmldoms.code.css({'background-color':_code_color1[color1num],'color':_code_color2[color2num]});this.htmldoms.code_input.val('');var code='';this.code_chose='';if(this.options.type==1){for(var i=0;i'+_code_chars[charnum]+''}}else{var num1=math.floor(math.random()*this.options.figure);var num2=math.floor(math.random()*this.options.figure);if(this.options.arith==0){var tmparith=math.floor(math.random()*3)}switch(tmparith){case 1:this.code_chose=parseint(num1)+parseint(num2);code=num1+' + '+num2+' = ?';break;case 2:if(parseint(num1)
';tmphtml='
'}panelhtml+='
'+this.options.explain+'
'+tmphtml+'
';this.$element.append(panelhtml);this.htmldoms={gap:this.$element.find('.verify-gap'),sub_block:this.$element.find('.verify-sub-block'),out_panel:this.$element.find('.verify-img-out'),img_panel:this.$element.find('.verify-img-panel'),bar_area:this.$element.find('.verify-bar-area'),move_block:this.$element.find('.verify-move-block'),left_bar:this.$element.find('.verify-left-bar'),msg:this.$element.find('.verify-msg'),icon:this.$element.find('.verify-icon'),refresh:this.$element.find('.verify-refresh')};this.status=false;this.isend=false;this.setsize=this.resetsize(this);this.$element.css('position','relative');if(this.options.mode=='pop'){this.htmldoms.out_panel.css({'display':'none','position':'absolute','bottom':'42px'});this.htmldoms.sub_block.css({'display':'none'})}else{this.htmldoms.out_panel.css({'position':'relative'})}this.htmldoms.gap.css({'width':this.options.blocksize.width,'height':this.options.blocksize.height});this.htmldoms.sub_block.css({'width':this.options.blocksize.width,'height':this.options.blocksize.height});this.htmldoms.out_panel.css('height',parseint(this.setsize.img_height)+this.options.vspace+'px');this.htmldoms.img_panel.css({'width':this.setsize.img_width,'height':this.setsize.img_height,'background':'url('+this.options.imgurl+this.options.imgname[this.img_rand]+')','background-size':this.setsize.img_width+' '+this.setsize.img_height});this.htmldoms.bar_area.css({'width':this.setsize.bar_width,'height':this.options.barsize.height,'line-height':this.options.barsize.height});this.htmldoms.move_block.css({'width':this.options.barsize.height,'height':this.options.barsize.height});this.htmldoms.left_bar.css({'width':this.options.barsize.height,'height':this.options.barsize.height});this.randset()},start:function(e){if(this.isend==false){this.htmldoms.msg.text('');this.htmldoms.move_block.css('background-color','#337ab7');this.htmldoms.left_bar.css('border-color','#337ab7');this.htmldoms.icon.css('color','#fff');e.stoppropagation();this.status=true}},move:function(e){if(this.status&&this.isend==false){if(this.options.mode=='pop'){this.showimg()}if(!e.touches){var x=e.clientx}else{var x=e.touches[0].pagex}var bar_area_left=slide.prototype.getleft(this.htmldoms.bar_area[0]);var move_block_left=x-bar_area_left;if(this.options.type!=1){if(move_block_left>=this.htmldoms.bar_area[0].offsetwidth-parseint(parseint(this.options.blocksize.width)/2)-2){move_block_left=this.htmldoms.bar_area[0].offsetwidth-parseint(parseint(this.options.blocksize.width)/2)-2}}else{if(move_block_left>=this.htmldoms.bar_area[0].offsetwidth-parseint(parseint(this.options.barsize.height)/2)+3){this.$element.find('.verify-msg:eq(1)').text('松开验证');move_block_left=this.htmldoms.bar_area[0].offsetwidth-parseint(parseint(this.options.barsize.height)/2)+3}else{this.$element.find('.verify-msg:eq(1)').text('')}}if(move_block_left<=0){move_block_left=parseint(parseint(this.options.blocksize.width)/2)}this.htmldoms.move_block.css('left',move_block_left-parseint(parseint(this.options.blocksize.width)/2)+"px");this.htmldoms.left_bar.css('width',move_block_left-parseint(parseint(this.options.blocksize.width)/2)+"px")}},end:function(){var _this=this;if(this.status&&this.isend==false){if(this.options.type!=1){var voffset=parseint(this.options.voffset);if(parseint(this.htmldoms.gap.css('left'))>=(parseint(this.htmldoms.move_block.css('left'))-voffset)&&parseint(this.htmldoms.gap.css('left'))<=(parseint(this.htmldoms.move_block.css('left'))+voffset)){this.htmldoms.move_block.css('background-color','#5cb85c');this.htmldoms.left_bar.css({'border-color':'#5cb85c','background-color':'#fff'});this.htmldoms.icon.css('color','#fff');this.htmldoms.icon.removeclass('icon-right');this.htmldoms.icon.addclass('icon-check');this.htmldoms.refresh.hide();this.isend=true;this.options.success(this)}else{this.htmldoms.move_block.css('background-color','#d9534f');this.htmldoms.left_bar.css('border-color','#d9534f');this.htmldoms.icon.css('color','#fff');this.htmldoms.icon.removeclass('icon-right');this.htmldoms.icon.addclass('icon-close');settimeout(function(){_this.refresh()},400);this.options.error(this)}}else{if(parseint(this.htmldoms.move_block.css('left'))>=(parseint(this.setsize.bar_width)-parseint(this.options.barsize.height)-parseint(this.options.voffset))){this.htmldoms.move_block.css('background-color','#5cb85c');this.htmldoms.left_bar.css({'color':'#4cae4c','border-color':'#5cb85c','background-color':'#fff'});this.htmldoms.icon.css('color','#fff');this.htmldoms.icon.removeclass('icon-right');this.htmldoms.icon.addclass('icon-check');this.htmldoms.refresh.hide();this.$element.find('.verify-msg:eq(1)').text('验证成功');this.isend=true;this.options.success(this)}else{this.$element.find('.verify-msg:eq(1)').text('');this.htmldoms.move_block.css('background-color','#d9534f');this.htmldoms.left_bar.css('border-color','#d9534f');this.htmldoms.icon.css('color','#fff');this.htmldoms.icon.removeclass('icon-right');this.htmldoms.icon.addclass('icon-close');settimeout(function(){_this.$element.find('.verify-msg:eq(1)').text('');_this.refresh()},400);this.options.error(this)}}this.status=false}},showimg:function(){this.htmldoms.out_panel.css({'display':'block'});this.htmldoms.sub_block.css({'display':'block'})},hideimg:function(){this.htmldoms.out_panel.css({'display':'none'});this.htmldoms.sub_block.css({'display':'none'})},resetsize:function(obj){var img_width,img_height,bar_width,bar_height;var parentwidth=obj.$element.parent().width()||$(window).width();var parentheight=obj.$element.parent().height()||$(window).height();if(obj.options.imgsize.width.indexof('%')!=-1){img_width=parseint(obj.options.imgsize.width)/100*parentwidth+'px'}else{img_width=obj.options.imgsize.width}if(obj.options.imgsize.height.indexof('%')!=-1){img_height=parseint(obj.options.imgsize.height)/100*parentheight+'px'}else{img_height=obj.options.imgsize.height}if(obj.options.barsize.width.indexof('%')!=-1){bar_width=parseint(obj.options.barsize.width)/100*parentwidth+'px'}else{bar_width=obj.options.barsize.width}if(obj.options.barsize.height.indexof('%')!=-1){bar_height=parseint(obj.options.barsize.height)/100*parentheight+'px'}else{bar_height=obj.options.barsize.height}return{img_width:img_width,img_height:img_height,bar_width:bar_width,bar_height:bar_height}},randset:function(){var rand1=math.floor(math.random()*9+1);var rand2=math.floor(math.random()*9+1);var top=rand1*parseint(this.setsize.img_height)/15+parseint(this.setsize.img_height)*0.1;var left=rand2*parseint(this.setsize.img_width)/15+parseint(this.setsize.img_width)*0.1;this.$element.find('.verify-gap').css({'top':top,'left':left});this.$element.find('.verify-sub-block').css({'top':'-'+(parseint(this.setsize.img_height)-top+this.options.vspace)+'px','background-image':'url('+this.options.imgurl+this.options.imgname[this.img_rand]+')','background-size':this.setsize.img_width+' '+this.setsize.img_height,'background-position-y':'-'+top+'px','background-position-x':'-'+left+'px'})},refresh:function(){this.htmldoms.refresh.show();this.$element.find('.verify-msg:eq(1)').text('');this.$element.find('.verify-msg:eq(1)').css('color','#000');this.htmldoms.move_block.animate({'left':'0px'},'fast');this.htmldoms.left_bar.animate({'width':'40px'},'fast');this.htmldoms.left_bar.css({'border-color':'#ddd'});this.htmldoms.move_block.css('background-color','#fff');this.htmldoms.icon.css('color','#000');this.htmldoms.icon.removeclass('icon-close');this.htmldoms.icon.addclass('icon-right');this.$element.find('.verify-msg:eq(0)').text(this.options.explain);this.randset();this.img_rand=math.floor(math.random()*this.options.imgname.length);this.$element.find('.verify-img-panel').css({'background':'url('+this.options.imgurl+this.options.imgname[this.img_rand]+')','background-size':this.setsize.img_width+' '+this.setsize.img_height});this.$element.find('.verify-sub-block').css({'background-image':'url('+this.options.imgurl+this.options.imgname[this.img_rand]+')','background-size':this.setsize.img_width+' '+this.setsize.img_height});this.isend=false},getleft:function(node){var left=$(node).offset().left;return left}};var points=function(ele,opt){this.$element=ele,this.defaults={mode:'fixed',defaultnum:4,checknum:3,vspace:5,imgurl:'images/',imgname:['1.jpg','2.jpg'],imgsize:{width:'400px',height:'200px',},barsize:{width:'400px',height:'40px',},ready:function(){},success:function(){},error:function(){}},this.options=$.extend({},this.defaults,opt)};points.prototype={init:function(){var _this=this;_this.loaddom();_this.refresh();_this.options.ready();this.$element[0].onselectstart=document.body.ondrag=function(){return false};if(this.options.mode=='pop'){this.$element.on('mouseover',function(e){_this.showimg()});this.$element.on('mouseout',function(e){_this.hideimg()});this.htmldoms.out_panel.on('mouseover',function(e){_this.showimg()});this.htmldoms.out_panel.on('mouseout',function(e){_this.hideimg()})}_this.$element.find('.verify-img-panel canvas').on('click',function(e){_this.checkposarr.push(_this.getmousepos(this,e));if(_this.num==_this.options.checknum){_this.num=_this.createpoint(_this.getmousepos(this,e));settimeout(function(){var flag=_this.comparepos(_this.fontpos,_this.checkposarr);if(flag==false){_this.options.error(_this);_this.$element.find('.verify-bar-area').css({'color':'#d9534f','border-color':'#d9534f'});_this.$element.find('.verify-msg').text('验证失败');settimeout(function(){_this.$element.find('.verify-bar-area').css({'color':'#000','border-color':'#ddd'});_this.refresh()},400)}else{_this.$element.find('.verify-bar-area').css({'color':'#4cae4c','border-color':'#5cb85c'});_this.$element.find('.verify-msg').text('验证成功');_this.$element.find('.verify-refresh').hide();_this.$element.find('.verify-img-panel').unbind('click');_this.options.success(_this)}},400)}if(_this.num<_this.options.checknum){_this.num=_this.createpoint(_this.getmousepos(this,e))}});_this.$element.find('.verify-refresh').on('click',function(){_this.refresh()})},loaddom:function(){this.fontpos=[];this.checkposarr=[];this.num=1;this.img_rand=math.floor(math.random()*this.options.imgname.length);var panelhtml='';var tmphtml='';this.setsize=slide.prototype.resetsize(this);panelhtml+='
';this.$element.append(panelhtml);this.htmldoms={out_panel:this.$element.find('.verify-img-out'),img_panel:this.$element.find('.verify-img-panel'),bar_area:this.$element.find('.verify-bar-area'),msg:this.$element.find('.verify-msg'),};this.$element.css('position','relative');if(this.options.mode=='pop'){this.htmldoms.out_panel.css({'display':'none','position':'absolute','bottom':'42px'})}else{this.htmldoms.out_panel.css({'position':'relative'})}this.htmldoms.out_panel.css('height',parseint(this.setsize.img_height)+this.options.vspace+'px');this.htmldoms.img_panel.css({'width':this.setsize.img_width,'height':this.setsize.img_height,'background-size':this.setsize.img_width+' '+this.setsize.img_height,'margin-bottom':this.options.vspace+'px'});this.htmldoms.bar_area.css({'width':this.options.barsize.width,'height':this.options.barsize.height,'line-height':this.options.barsize.height})},drawimg:function(obj,img){var canvas=this.$element.find('canvas')[0];var ctx=canvas.getcontext("2d");ctx.drawimage(img,0,0,parseint(this.setsize.img_width),parseint(this.setsize.img_height));var fontsizearr=['italic small-caps bold 20px microsoft yahei','small-caps normal 25px arial','34px microsoft yahei'];var fontstr='天地玄黄宇宙洪荒日月盈昃辰宿列张寒来暑往秋收冬藏闰余成岁律吕调阳云腾致雨露结为霜金生丽水玉出昆冈剑号巨阙珠称夜光果珍李柰菜重芥姜海咸河淡鳞潜羽翔龙师火帝鸟官人皇始制文字乃服衣裳推位让国有虞陶唐吊民伐罪周发殷汤坐朝问道垂拱平章爱育黎首臣伏戎羌遐迩体率宾归王';var fontchars=[];var avg=math.floor(parseint(this.setsize.img_width)/(parseint(this.options.defaultnum)+1));var tmp_index='';var color2num=math.floor(math.random()*5);for(var i=1;i<=this.options.defaultnum;i++){fontchars[i-1]=this.getchars(fontstr,fontchars);tmp_index=math.floor(math.random()*3);ctx.font=fontsizearr[tmp_index];ctx.fillstyle=_code_color2[color2num];if(math.floor(math.random()*2)==1){var tmp_y=math.floor(parseint(this.setsize.img_height)/2)+tmp_index*20+20}else{var tmp_y=math.floor(parseint(this.setsize.img_height)/2)-tmp_index*20}ctx.filltext(fontchars[i-1],avg*i,tmp_y);this.fontpos[i-1]={'char':fontchars[i-1],'x':avg*i,'y':tmp_y}}for(var i=0;i<(this.options.defaultnum-this.options.checknum);i++){this.shuffle(this.fontpos).pop()}var msgstr='';for(var i=0;i0){tmp_rand=tmp_rand-1}tmp_char=fontstr.charat(tmp_rand);if($.inarray(tmp_char,fontchars)==-1){return tmp_char}else{return points.prototype.getchars(fontstr,fontchars)}},shuffle:function(arr){var m=arr.length,i;var tmpf;while(m){i=(math.random()*m--)>>>0;tmpf=arr[m];arr[m]=arr[i];arr[i]=tmpf;}return arr},createpoint:function(pos){this.htmldoms.img_panel.append('
'+this.num+'
');return++this.num},comparepos:function(fontpos,checkposarr){var flag=true;for(var i=0;ifontpos[i].x&&parseint(checkposarr[i].x)-40fontpos[i].y&&parseint(checkposarr[i].y)-40