/*!
 * jQuery.buttonCaptcha - plugin that protects your site from robots using jQuery.
 * http://www.gobwas.com/bcaptcha
 * Version: 1.1
 *
 * Copyright 2011, Sergey Kamardin.
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Date: Mon Jun 7 17:15:07 2011 +0300.
 * Location: Moscow, Russia.
 * Contact: gobwas[a]gobwas.com
 */

(function(a){a.fn.buttonCaptcha=function(n){var c={codeWord:"gbws",codeZone:"com",hideButton:!0,hideCaptcha:!1,lockButton:!0,scrollToButton:!1,verifyInput:!0,verifyName:"gbws_captcha_input",verifyMustBe:!1,verifyMustName:"gbws_captcha_must_input",captchaHeader:"Are you a robot?",captchaTip:'Drag letters from left to right, to get word "%code_word%". Thanks!',captchaUnlocked:"Unlocked!"};a.extend(c,n);var j=["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","1","2","3","4","5","6","7","8","9","0"];if(typeof c.codeWord=="number"){n=c.codeWord;c.codeWord="";for(var p=0;p<n;p++)c.codeWord+=j[Math.floor(Math.random()*(j.length-1-0+1))+0]}c.captchaTip=c.captchaTip.replace("%code_word%","<b>"+c.codeWord+"</b>");c.letters=c.codeWord.length;var d={structure:{outer:{top:a("<div/>").attr("class","captcha_top"),lock:a("<div/>").attr("class","captcha_lock"),captcha:a("<div/>").attr("class","captcha_gbws")},inner:{left:a("<div/>").attr("class","captcha_left"),
blue:a("<div/>").attr("class","captcha_blue").html('<div class="captcha_delshadow"></div>'),white:a("<div/>").attr("class","captcha_white"),right:a("<div/>").attr("class","captcha_right"),end:a("<div/>").css("clear","both")},buttons:{retake:a("<div/>").attr("class","captcha_retake"),showtip:a("<div/>").attr("class","captcha_showtip").html(c.captchaHeader)},contains:{tip:a("<div/>").attr("class","captcha_tip").html(c.captchaTip),end:a("<div/>").css("clear","both"),zone:a("<div/>").attr("class","captcha_zone")}},
lettersDivs:[],lettersSprite:{}};d.lettersSprite=function(){var a={},c;for(c in j)a[j[c]]=c*-18;return a}();d.lettersDivs=function(){if(c.codeWord.match(/[a-zA-Z0-9]+/)!=null){for(var e=c.codeWord,l=[],f=0;f<e.length;f++){findLetter=e.charAt(f).toLowerCase();var i=d.lettersSprite[findLetter],i=a("<div/>").attr("class","letter").attr("bcCode",e.charCodeAt(f)).css("background-position",i+"px 0");l.push(i)}return l}}();(function(){if(c.codeZone!==!1&&c.codeZone.match(/[a-zA-Z0-9]{2,4}/)!=null){var e=
c.codeZone;a("<div/>").attr("class","zone_dot").appendTo(d.structure.contains.zone);for(var l=12,f=0;f<e.length;f++){findLetter=e.charAt(f).toLowerCase();var i=d.lettersSprite[findLetter];a("<div/>").attr("class","zone_letter").css("background-position",i+"px 0").appendTo(d.structure.contains.zone);l+=18}d.structure.contains.zone.css("width",l+"px")}})();for(var m=0;m<this.length;m++)(function(e){function l(c,g){for(var f=a("<div/>").attr("id","letters_"+b.captchas).attr("class","letters"),h=[];h.length<
d.lettersDivs.length;){var k=Math.floor(Math.random()*(d.lettersDivs.length-1-0+1))+0;a.inArray(k,h)==-1&&(a(d.lettersDivs[k]).clone().attr("id","letter_"+d.lettersDivs[k].attr("bccode")+"_"+k+"_"+b.captchas).appendTo(f).draggable({revert:!0,revertDuration:300,cursor:"pointer",cursorAt:{top:12,left:9},containment:"#"+g,scroll:!1,snap:".basket",snapMode:"inner"}),h.push(k))}a(f).appendTo(c)}function f(f){var g=a("<div/>").attr("id","baskets_"+b.captchas).attr("class","baskets"),e;for(e in d.lettersDivs){var h=
a("<div/>").attr("id","basket_"+d.lettersDivs[e].attr("bccode")+"_"+e+"_"+b.captchas).attr("class","basket");Number(e)!=d.lettersDivs.length-1&&h.css("border-right","none");a(h).droppable({hoverClass:"basket-hover",drop:function(d,f){if(!a(this).droppable("option","disabled")){var h=a(f.draggable).clone().css({left:0,top:0});a(f.draggable).draggable({revert:!1}).css({left:0,top:0}).animate({width:0,opacity:0},600);a(this).droppable({disabled:!0}).attr("class","basket_closed").append(h);var e=a(f.draggable).attr("id"),
e=e.split("_"),g=a(this).attr("id"),g=g.split("_");e[1]==g[1]&&e[3]==g[3]?(a(this).fadeOut(100,function(){a(this).fadeIn(500)}),a(h).attr("class","letter_blue"),b.goodLetters++):(a(this).effect("pulsate",100),a(h).attr("class","letter_red"));c.verifyInput===!0&&(b.stepsLength++,b.steps[g[2]]=e[2],b.stepsLength==c.letters&&i());b.goodLetters==c.letters&&j()}}}).appendTo(g)}c.codeZone!=!1&&a(d.structure.contains.zone).clone().appendTo(g);a(d.structure.contains.end).clone().appendTo(g);a(g).appendTo(f).css("width",
d.lettersDivs.length*18+d.lettersDivs.length*2+d.structure.contains.zone.css("width")+"px")}function i(){for(var d in b.steps)a(b.verify).val(a(b.verify).val()+c.codeWord.charAt(b.steps[d]))}function j(){c.lockButton===!0&&a(b.button).removeAttr("disabled");c.hideCaptcha===!0?a(b.captcha).fadeOut(1E3,function(){c.hideButton===!0&&a(b.button).fadeIn(600,function(){c.scrollToButton===!0&&a.scrollTo(b.button,500)})}):(a("<div/>").attr("class","captcha_human").append(b.lock).appendTo(b.blue),b.lock.attr("class",
"captcha_unlock"),b.top.html(c.captchaUnlocked),b.retake.remove(),c.hideButton===!0&&a(b.button).fadeIn(300,function(){c.scrollToButton===!0&&a.scrollTo(b.button,500)}))}var b={captchas:m,button:e,captcha:null,verify:null,steps:[],stepsLength:0,goodLetters:0,blue:null,white:null,captcha:null,lock:null,top:null,showTip:null,retake:null};(function(e){var g=a("<div/>").attr("class","captcha_gbws_wrap").attr("id","captcha_gbws_wrap_"+b.captchas),i=d.structure.outer.captcha.clone().attr("id","captcha_gbws_"+
b.captchas),h=d.structure.buttons.showtip.clone().attr("id","captcha_gbws_top_showtip_"+b.captchas).bind("click",function(){k.toggle("blind",300)}),k=d.structure.contains.tip.clone().attr("id","captcha_gbws_top_tip_"+b.captchas),j=d.structure.outer.lock.clone(),m=d.structure.outer.top.clone().attr("id","captcha_gbws_top_"+b.captchas).append(j).append(h).append(d.structure.contains.end.clone()).append(k),n=d.structure.buttons.retake.clone().bind("click",function(){for(var c=a(b.captcha).find(".letter, .letter_blue, .letter_red, .basket, .basket_closed"),
d=0,e=0;e<c.length;e++)d+=150,function(b,d){setTimeout(function(){a(c[d]).stop().hide("shake",150,function(){a(c[d]).remove()})},b)}(d,e);setTimeout(function(){a("#"+a(b.blue).attr("id")+" .letters").remove();a("#"+a(b.white).attr("id")+" .baskets").remove();f(b.white);l(b.blue);b.steps=[];b.stepsLength=0;b.goodLetters=0},d+150)});b.top=m;b.lock=j;b.showTip=h;b.retake=n;for(var o in d.structure.inner)if(h=a(d.structure.inner[o]).clone().attr("id","captcha_"+o+"_"+b.captchas).appendTo(i),o=="blue")b.blue=
h,l(h,"captcha_gbws_"+b.captchas);else if(o=="white")b.white=h,h.append(n),f(h);m.appendTo(g);i.appendTo(g);d.structure.contains.end.clone().appendTo(g);g.insertBefore(e);k.toggle("blind",1);m.css("width",i.width());g.find(" > *").disableSelection();b.captcha=g;if(c.verifyInput===!0&&a(b.button).parents("form:first").length>0)e=a("<input/>",{type:"hidden",name:c.verifyName,id:"input_gbws_"+b.captchas}).attr("class","input_gbws"),a(b.button).parents("form:first").append(e),b.verify=e;if(c.verifyMustBe===
!0)e=a("<input/>",{type:"hidden",name:c.verifyMustName,id:"input_gbws_must_"+b.captchas,value:c.codeWord}).attr("class","input_gbws"),a(b.button).parents("form:first").append(e),b.must=e})(b.button);c.hideButton===!0&&a(b.button).fadeOut(300);c.lockButton===!0&&a(b.button).attr("disabled","true")})(this[m]);return this}})(jQuery);
