/************************************************************************
*************************************************************************
@Name :         QapTcha - jQuery Plugin
@Revison :      1.0
@Date :         26/01/2011
@Author:         Surrel Mickael (www.myjqueryplugins.com - www.msconcept.fr) 
@License :       Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php
 
**************************************************************************
*************************************************************************/
jQuery.QapTcha = {
    build : function(options)
    {
        var defaults = {
            txtLock : 'Locked : form can\'t be submited',
            txtUnlock : 'Unlocked : form can be submited'
        };   
        
        if(this.length>0)
        return jQuery(this).each(function(i) {
            /** Vars **/
            var 
                opts = jQuery.extend(defaults, options),      
                $this = jQuery(this),
                form = jQuery('form').has($this),
                Clr = jQuery('<div>',{'class':'clr'}),
                bgSlider = jQuery('<div>',{id:'bgSlider'}),
                Slider = jQuery('<div>',{id:'Slider'}),
                Icons = jQuery('<div>',{id:'Icons'}),
                TxtStatus = jQuery('<div>',{id:'TxtStatus',text:opts.txtLock}),
                inputQapTcha = jQuery('<input>',{name:'iQapTcha',value:generatePass(),type:'hidden'});
            
            /** Disabled submit button **/
            form.find('input[type=\'submit\']').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({ 
                containment: bgSlider,
                axis:'x',
                stop: function(event,ui){
                    if(ui.position.left > 150)
                    {
                        // set the SESSION iQaptcha in PHP file
                        jQuery.post("/Qaptcha.jquery.php",{
                            action : 'qaptcha'
                        },
                        function(data) {
                            if(!data.error)
                            {
                                Slider.draggable('disable').css('cursor','default');
                                inputQapTcha.val("true");
                                TxtStatus.css({color:'#307F1F'}).text(opts.txtUnlock);
                                Icons.css('background-position', '-16px 0');
                                form.find('input[type=\'submit\']').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;

