wbotelhos/notify

View on GitHub
demo/javascripts/labs.js

Summary

Maintainability
A
0 mins
Test Coverage
var AntiBOT={init:function(t){this.form=$(t),this.field=this.form.find(".not-human input"),this.bot=$("#bot"),this.label=this.form.find(".not-human label"),this.submit=this.form.find(":submit"),this.binds(),this.lock()},binds:function(){var t=this;t.field.on("change",function(){t.field.is(":checked")?(t.label.text("S\xe9rio?"),t.lock()):t.unlock()})},lock:function(){var t=this;t.bot.val(!0),t.submit.on("click",function(e){e.preventDefault(),t.label.text("Hey! Me desmarque."),t.field.focus()})},unlock:function(){var t=this;t.submit.off("click"),t.bot.removeAttr("value"),t.label.text("Humanos! <3")}},CommentResponder={init:function(){this.body=$("#comment_body"),this.comments=$(".comments"),this.parent=$("#comment_parent_id"),this.cancel=$("#replying-cancel"),this.replying=$("#replying-to"),this.binds()},binds:function(){var t=this;t.comments.on("click",".reply",function(){var e=$(this),i=e.data("id"),n=e.data("name");t.setParent(i),t.write(n+",\n\n"),t.showReplying(i,n),t.showCancel(),t.focuz()}),t.cancel.on("click",function(){t.replying.css("visibility","hidden"),t.body.val(""),t.cancel.css("visibility","hidden"),t.parent.removeAttr("value"),t.focuz()})},focuz:function(){this.body.blur().focus()},setParent:function(t){this.parent.val(t)},showCancel:function(){this.cancel.css("visibility","visible")},showReplying:function(t,e){var i="#comment-"+t,n="#"+t;this.replying.css("visibility","visible").children("strong").html('<a href="'+i+'">'+n+"</a> "+e)},write:function(t){this.body.val(t)}};$(function(){var t=$("#donations");$(".i-heart").on("click",function(){t.slideToggle("fast")})}),function(t){var e={init:function(i){return this.each(function(){this.opt=t.extend({},t.fn.taby.defaults,i);var n=t(this).off(".taby");e._adjustTab.call(this),e._bind.call(this),n.data({settings:this.opt,taby:!0})})},_adjustTab:function(){this.opt.tab="";for(var t=0;t<this.opt.space;t++)this.opt.tab+=" "},_backspace:function(){var e=t(this).data("settings"),i=this.selectionStart;e.backspace&&this.value.slice(i-e.tab.length,i)==e.tab&&(this.evt.preventDefault(),this.value=this.value.slice(0,i-e.tab.length)+this.value.slice(i),this.selectionStart=i-e.tab.length,this.selectionEnd=i-e.tab.length)},_bind:function(){t(this).on(e._eventName(),function(t){var i=t.keyCode||t.which;t.metaKey||(this.evt=t,9==i?t.shiftKey?e._shiftTab.call(this):e._tab.call(this):8==i?e._backspace.call(this):46==i?e._del.call(this):37==i?e._left.call(this):39==i&&e._right.call(this))})},_del:function(){var e=t(this).data("settings"),i=this.selectionStart,n=this.selectionEnd;e.del&&this.value.slice(i,i+e.tab.length)==e.tab&&(this.evt.preventDefault(),this.value=this.value.slice(0,i)+this.value.slice(i+e.tab.length),this.selectionStart=i,this.selectionEnd=n)},_eventName:function(){return e._isFirefox()?"keypress.taby":"keydown.taby"},_isFirefox:function(){return/firefox/.test(navigator.userAgent.toLowerCase())},_left:function(){var e=t(this).data("settings"),i=this.selectionStart,n=this.selectionEnd;if(this.evt.shiftKey||(i=n),e.left===!0&&this.value.slice(i-e.tab.length,i)==e.tab){this.evt.preventDefault();var s=e.tab.length,l=e.tab.length;this.evt.shiftKey&&(l=0),this.selectionStart=i-s,this.selectionEnd=n-l}},_right:function(){var e=t(this).data("settings"),i=this.selectionStart,n=this.selectionEnd;this.evt.shiftKey||(n=i),e.right===!0&&this.value.slice(n,n+e.tab.length)==e.tab&&(this.evt.preventDefault(),this.selectionStart=i+(this.evt.shiftKey?0:e.tab.length),this.selectionEnd=n+e.tab.length)},_shiftTab:function(){this.evt.preventDefault();var e=t(this).data("settings"),i=this.selectionStart,n=this.selectionEnd;if(preselection=this.value.slice(0,i),selection=this.value.slice(i,n),postselection=this.value.slice(n),isMultipleLine=selection.indexOf("\n")>=0,lineStart=preselection.lastIndexOf("\n"),lineEnd=n+postselection.indexOf("\n"),isFirst=0==i,previousCharacter=isFirst?"":this.value.slice(i-1,i),0>lineStart?lineStart=0:lineStart++,0>lineEnd&&(lineEnd=this.value.length),isMultipleLine){selection.lastIndexOf("\n")==selection.length-1&&(lineEnd=n-1,postselection="\n"+postselection);var s=this.value.slice(lineStart,lineEnd),l=s;if(l=l.replace(new RegExp("^"+e.tab),"").replace(new RegExp("\n"+e.tab,"g"),"\n"),s==l)return;this.value=this.value.slice(0,lineStart)+l+this.value.slice(lineEnd);var a=s.length-l.length,h=i,c=n-a;isFirst||"\n"==previousCharacter||(h-=e.tab.length),lineStart>h&&(h=lineStart);var o=0>h?0:h,r=0>c?0:c;this.selectionStart=o,this.selectionEnd=r}else{var s=this.value.slice(lineStart,lineEnd),l=s;if(0==s.indexOf(e.tab)&&(l=s.slice(e.tab.length)),s==l)return;this.value=this.value.slice(0,lineStart)+l+this.value.slice(lineEnd);var u=takedEnd=e.tab.length;i-lineStart<e.tab.length&&(u=i-lineStart,i==n&&(takedEnd=u)),this.selectionStart=i-u,this.selectionEnd=n-takedEnd}},_tab:function(){this.evt.preventDefault();var e=t(this).data("settings"),i=this.selectionStart,n=this.selectionEnd,s=this.value.slice(0,i),l=this.value.slice(i,n),a=this.value.slice(n),h=s.lastIndexOf("\n"),c=n+a.indexOf("\n"),o=0==i,r=n==this.value.length,u=o?"":this.value.slice(i-1,i),f=r?"":this.value.slice(n,n+1);if(0>h?h=0:h++,0>c&&(c=this.value.length),l.indexOf("\n")>=0){l.lastIndexOf("\n")==l.length-1&&(c=n-1,a="\n"+a);var v=this.value.slice(h,c),d=v;if(d=e.tab+d.replace(new RegExp("\n","g"),"\n"+e.tab),v==d)return;this.value=this.value.slice(0,h)+d+this.value.slice(c);var b=d.length-v.length,g=i,p=n+b;o||"\n"==u||(g+=e.tab.length),this.selectionStart=g,this.selectionEnd=p}else if(!o&&"\n"!=u||!r&&"\n"!=f||""==l)this.value=s+e.tab+a,this.selectionStart=i+e.tab.length,this.selectionEnd=i+e.tab.length;else{var v=this.value.slice(h,c);this.value=s+e.tab+v+a,this.selectionStart=i,this.selectionEnd=n+e.tab.length}},goTo:function(t){return this.each(function(){this.focus(),this.selectionStart=t,this.selectionEnd=t})},select:function(t,e){return this.each(function(){this.focus(),this.selectionStart=t,this.selectionEnd=void 0===e?this.value.length:e})},set:function(e){return this.each(function(){var i=t(this),n=i.data("settings"),s=t.extend({},n,e);i.taby(s)})}};t.fn.taby=function(i){return e[i]?e[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?void t.error("Method "+i+" does not exist!"):e.init.apply(this,arguments)},t.fn.taby.defaults={backspace:!0,del:!0,left:!0,right:!0,space:2}}(jQuery);