forked from kbwood/realperson
/
jquery.realperson.min.js
7 lines (7 loc) · 4.93 KB
/
jquery.realperson.min.js
1
2
3
4
5
6
7
/* http://keith-wood.name/realPerson.html
Real Person Form Submission for jQuery v1.0.1.
Written by Keith Wood (kwood{at}iinet.com.au) June 2009.
Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
Please attribute the author if you use it. */
(function($){var f='realPerson';function RealPerson(){this._defaults={length:6,includeNumbers:false,regenerate:'Click to change',hashName:'{n}Hash'}}var g='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';var h=[[' * ',' * * ',' * * ',' * * ',' ***** ','* *','* *'],['****** ','* *','* *','****** ','* *','* *','****** '],[' ***** ','* *','* ','* ','* ','* *',' ***** '],['****** ','* *','* *','* *','* *','* *','****** '],['*******','* ','* ','**** ','* ','* ','*******'],['*******','* ','* ','**** ','* ','* ','* '],[' ***** ','* *','* ','* ','* ***','* *',' ***** '],['* *','* *','* *','*******','* *','* *','* *'],['*******',' * ',' * ',' * ',' * ',' * ','*******'],[' *',' *',' *',' *',' *','* *',' ***** '],['* *','* ** ','* ** ','** ','* ** ','* ** ','* *'],['* ','* ','* ','* ','* ','* ','*******'],['* *','** **','* * * *','* * *','* *','* *','* *'],['* *','** *','* * *','* * *','* * *','* **','* *'],[' ***** ','* *','* *','* *','* *','* *',' ***** '],['****** ','* *','* *','****** ','* ','* ','* '],[' ***** ','* *','* *','* *','* * *','* * ',' **** *'],['****** ','* *','* *','****** ','* * ','* * ','* *'],[' ***** ','* *','* ',' ***** ',' *','* *',' ***** '],['*******',' * ',' * ',' * ',' * ',' * ',' * '],['* *','* *','* *','* *','* *','* *',' ***** '],['* *','* *',' * * ',' * * ',' * * ',' * * ',' * '],['* *','* *','* *','* * *','* * * *','** **','* *'],['* *',' * * ',' * * ',' * ',' * * ',' * * ','* *'],['* *',' * * ',' * * ',' * ',' * ',' * ',' * '],['*******',' * ',' * ',' * ',' * ',' * ','*******'],[' *** ',' * * ','* *','* *','* *',' * * ',' *** '],[' * ',' ** ',' * * ',' * ',' * ',' * ','*******'],[' ***** ','* *',' *',' * ',' ** ',' ** ','*******'],[' ***** ','* *',' *',' ** ',' *','* *',' ***** '],[' * ',' ** ',' * * ',' * * ','*******',' * ',' * '],['*******','* ','****** ',' *',' *','* *',' ***** '],[' **** ',' * ','* ','****** ','* *','* *',' ***** '],['*******',' * ',' * ',' * ',' * ',' * ','* '],[' ***** ','* *','* *',' ***** ','* *','* *',' ***** '],[' ***** ','* *','* *',' ******',' *',' * ',' **** ']];$.extend(RealPerson.prototype,{markerClassName:'hasRealPerson',setDefaults:function(a){$.extend(this._defaults,a||{});return this},_attachRealPerson:function(a,b){a=$(a);if(a.hasClass(this.markerClassName)){return}a.addClass(this.markerClassName);var c={settings:$.extend({},this._defaults)};$.data(a[0],f,c);this._changeRealPerson(a,b)},_changeRealPerson:function(a,b,c){a=$(a);if(!a.hasClass(this.markerClassName)){return}b=b||{};if(typeof b=='string'){var d=b;b={};b[d]=c}var e=$.data(a[0],f);$.extend(e.settings,b);a.prevAll('.realperson-challenge,.realperson-hash').remove().end().before(this._generateHTML(a,e))},_generateHTML:function(a,b){var c='';for(var i=0;i<b.settings.length;i++){c+=g.charAt(Math.floor(Math.random()*(b.settings.includeNumbers?36:26)))}var d='<div class="realperson-challenge"><div class="realperson-text">';for(var i=0;i<h[0].length;i++){for(var j=0;j<c.length;j++){d+=h[g.indexOf(c.charAt(j))][i].replace(/ /g,' ')+' '}d+='<br>'}d+='</div><div class="realperson-regen">'+b.settings.regenerate+'</div></div><input type="hidden" class="realperson-hash" name="'+b.settings.hashName.replace(/\{n\}/,a.attr('name'))+'" value="'+this._hash(c)+'">';return d},_destroyRealPerson:function(a){a=$(a);if(!a.hasClass(this.markerClassName)){return}a.removeClass(this.markerClassName).prevAll('.realperson-challenge,.realperson-hash').remove();$.removeData(a[0],f)},_hash:function(a){var b=5381;for(var i=0;i<a.length;i++){b=((b<<5)+b)+a.charCodeAt(i)}return b}});$.fn.realperson=function(a){var b=Array.prototype.slice.call(arguments,1);return this.each(function(){if(typeof a=='string'){$.realperson['_'+a+'RealPerson'].apply($.realperson,[this].concat(b))}else{$.realperson._attachRealPerson(this,a||{})}})};$.realperson=new RealPerson();$('.realperson-challenge').live('click',function(){$(this).next().next().realperson('change')})})(jQuery);