/************************************************************************
*************************************************************************
@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
 
**************************************************************************
*************************************************************************/
jQuery.QapTcha = {
	build : function(options)
	{
        var defaults = {
			txtLock : 'Перетащите слайдер направо',
		txtUnlock : 'Теперь вы можете записаться на приём',
			disabledSubmit : true,
			autoRevert : false,
			PHPfile : '/ajax/iqaptcha/'
        };   
		
		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 class="bgSlider">'),
				Slider = jQuery('<div class="Slider">'),
				Icons = jQuery('<div class="Icons">'),
				TxtStatus = jQuery('<div class="TxtStatus dropError" data-lock="' + opts.txtLock + '">' + opts.txtLock + '</div>'),
				inputQapTcha = jQuery('<input>',{name:'iQapTcha',value:generatePass(),type:'hidden'});
			
			/** Disabled submit button **/
			if(opts.disabledSubmit) 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({ 
				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)
					{
						$.ajax({
							url: opts.PHPfile,
							type: 'post',
							dataType: 'text',
							success: function() {
								Slider.draggable('disable').css('cursor','default');
								inputQapTcha.val("");
								//TxtStatus.text(opts.txtUnlock).addClass('dropSuccess').removeClass('dropError');
								TxtStatus.slideUp();
								Icons.css('background-position', '-16px 0');
								form.find('input[type=\'submit\']').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;
		    }
			
		});
	},
	
	lock: function() {
		var $this = $(this);
		$this.find('.Slider').draggable('enable').css({'cursor' : 'e-resize', 'left' : '0px'});
		$this.find('.TxtStatus').show();
		//var status = $this.find('.TxtStatus');
		//status.text(status.attr('data-lock')).removeClass('dropSuccess').addClass('dropError');
		$this.find('.Icons').css('background-position', '0 0');
		$this.find('.iQapTcha').val(+new Date);
		$('form').has($this).find(':submit').attr('disabled', true);
	}
}; jQuery.fn.QapTcha = jQuery.QapTcha.build; jQuery.fn.QapTchaLock = jQuery.QapTcha.lock;
