/************************************************************************
*************************************************************************
@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
 
**************************************************************************
*************************************************************************/

$(document).ready(function() {
    // Simple call
    $('#QapTcha').QapTcha();
});

jQuery.QapTcha = {
    build: function(options) {
        var defaults = {
            txtLock: 'Sleep naar rechts voordat u de gegevens kan verzenden.',
            txtUnlock: 'U kunt de gegevens nu opsturen.',
            disabledSubmit: true
        };

        if (this.length > 0)
            return jQuery(this).each(function(i) {
                /** Vars **/
                var 
				opts = $.extend(defaults, options),
				$this = $(this),
				form = $('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 **/
                if (opts.disabledSubmit) {
                    form.find('input[type=\'submit\']').attr('disabled', 'disabled');
                    form.find('#bitSubmitButton, #bitSubmitUrl').attr('disabled', 'disabled');
                    form.find('#bitUnsubscribeButton, #bitUnsubscribeUrl').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) {
                            Slider.draggable('disable').css('cursor', 'default');
                            inputQapTcha.val("");
                            TxtStatus.css({ color: '#307F1F' }).text(opts.txtUnlock);
                            Icons.css('background-position', '-16px 0');
                            if (opts.disabledSubmit) {
                                form.find('input[type=\'submit\']').removeAttr('disabled');
                                form.find('#bitSubmitButton, #bitSubmitUrl').removeAttr('disabled');
                                form.find('#bitUnsubscribeButton, #bitUnsubscribeUrl').removeAttr('disabled');
                                
                            }
                        }

                    }
                });

                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;
