/************************************************************************ ************************************************************************* @Name : QapTcha - jQuery Plugin @Revison : 3.0 @Date : 20/09/2011 @Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) @License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php @My site : www.webrelizz.com (SX2) 19/11/2011 ************************************************************************** *************************************************************************/ jQuery.QapTcha = { build : function(options) { var defaults = { txtLock : 'Заблокировано : перетащите ползунок', txtUnlock : 'Разблокировано : форма может быть использована', disabledSubmit : true, autoRevert : false, PHPfile : dle_root + 'engine/ajax/qaptcha.php' }; if(this.length>0) return jQuery(this).each(function(i) { /** Vars **/ var opts = $.extend(defaults, options), $this = $(this), form = $('form').has($this), Clr = jQuery('
',{'class':'clr'}), bgSlider = jQuery('
',{id:'bgSlider'}), Slider = jQuery('
',{id:'Slider'}), Icons = jQuery('
',{id:'Icons'}), TxtStatus = jQuery('
',{id:'TxtStatus','class':'dropError',text:opts.txtLock}), inputQapTcha = jQuery('',{name:'webrelizz',value:generatePass(),type:'hidden',id:'webrelizz'}); /** Disabled submit button **/ if(opts.disabledSubmit) form.find('button[type=\'submit\']').attr('disabled','disabled'); if(opts.disabledSubmit) form.find('textarea[name=\'comments\']').attr('disabled','disabled'); if(opts.disabledSubmit) form.find('textarea[name=\'addcomments\']').attr('disabled','disabled'); if(opts.disabledSubmit) form.find('textarea[name=\'short_story\']').attr('disabled','disabled'); if(opts.disabledSubmit) form.find('input[name=\'email\']').attr('disabled','disabled'); if(opts.disabledSubmit) form.find('input[name=\'title\']').attr('disabled','disabled'); /** Construct DOM **/ bgSlider.appendTo($this); Icons.insertAfter(bgSlider); Clr.insertAfter(Icons); TxtStatus.insertAfter(Clr); inputQapTcha.appendTo($this); Slider.appendTo(bgSlider); $this.show(); Slider.draggable({ revert: function(){ if(opts.autoRevert) { if(parseInt(Slider.css("left")) > 150) return false; else return true; } }, containment: bgSlider, axis:'x', stop: function(event,ui){ if(ui.position.left > 150) { // set the SESSION iQaptcha in PHP file $.post(opts.PHPfile,{ action : 'qaptcha' }, function(data) { if(!data.error) { Slider.draggable('disable').css('cursor','default'); inputQapTcha.val(""); TxtStatus.text(opts.txtUnlock).addClass('dropSuccess').removeClass('dropError'); Icons.css('background-position', '-16px 0'); form.find('button[type=\'submit\']').removeAttr('disabled'); form.find('textarea[name=\'comments\']').removeAttr('disabled'); form.find('input[name=\'editorcomm\']').removeAttr('disabled'); form.find('textarea[name=\'short_story\']').removeAttr('disabled'); form.find('input[name=\'email\']').removeAttr('disabled'); form.find('input[name=\'title\']').removeAttr('disabled'); } },'json'); } } }); function generatePass() { var chars = 'azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN'; var pass = ''; for(i=0;i<10;i++){ var wpos = Math.round(Math.random()*chars.length); pass += chars.substring(wpos,wpos+1); } return pass; } }); } }; jQuery.fn.QapTcha = jQuery.QapTcha.build;