(function($){
	$.fn.captcha = function(options){
	var defaults = {  
		borderColor: "",
		captchaDir: "captcha",  
		url: "captcha/captcha.php",  
		formId: "myForm",  
		text: "Verify that you are a human,<br />drag <span>scissors</span> into the circle.",
		items: Array("pencil", "scissors", "notes", "heart", "note"),
		texts: Array("pencil", "scissors", "notes", "heart", "note")
	};	
	
	var options = $.extend(defaults, options); 
	
	var markup = '<div class="captcha-content"> \
		<div class="top"></div> \
		<div class="middle clearfix"> \
		<div class="left"> \
			<div class="text">'+options.text+'</div> \
			<ul class="items"> \
				<li class="ajax-fc-0"> \
					<img src="" alt="" /> \
				</li> \
				<li class="ajax-fc-1"> \
					<img src="" alt="" /> \
				</li> \
				<li class="ajax-fc-2"> \
					<img src="" alt="" /> \
				</li> \
				<li class="ajax-fc-3"> \
					<img src="" alt="" /> \
				</li> \
				<li class="ajax-fc-4"> \
					<img src="" alt="" /> \
				</li> \
			</ul> \
		</div> \
		<div class="right"> \
			<div class="drop_area"></div> \
		</div> \
		</div> \
		<div class="bottom"></div> \
		</div>';
	
	$(this).html(markup);
	var rand = $.ajax({url: options.url, async: false}).responseText;

	var used = Array();
	var pic = randomNumber();
	used.push(pic);
	$('.captcha-content .ajax-fc-'+rand+' img').attr('src', options.captchaDir+'/imgs/item-'+options.items[pic]+'.png');
	$('.captcha-content .text span').html(options.texts[pic]);
	$('.captcha-content .ajax-fc-'+rand).addClass('highlighted');
	$('.captcha-content .ajax-fc-'+rand).draggable({containment: '.captcha-content'});

	
	for (var i = 0; i < 5; i++) {
		if (i != rand) {
			for (var x = 0; x < 5; x++) {
				if (!in_array(x, used)) {
					used.push(x);
					break;
				}
			}
			$('.ajax-fc-'+i+' img').attr('src', options.captchaDir+'/imgs/item-'+options.items[x]+'.png');
		}
	}
	
	$(".captcha-content .drop_area").droppable({
		drop: function(event, ui) {
			$('.ajax-fc-'+rand).draggable('disable');
			$('#'+options.formId).append('<input type="hidden" name="captcha" value="'+rand+'">');
		},
		tolerance: 'touch'
	});	
	};

})(jQuery);

function randomNumber() {
	var chars = "01234";
	chars += ".";
	var size = 1;
	var i = 1;
	var ret = "";
	while ( i <= size ) {
		$max = chars.length-1;
		$num = Math.floor(Math.random()*$max);
		$temp = chars.substr($num, 1);
		ret += $temp;
		i++;
	}
	return ret;
}

function in_array (needle, haystack, argStrict) {
	var key = "";
	var strict = !!argStrict;
	
	if (strict) {
		for (key in haystack)
			if (haystack[key] === needle)
				return true;
    }
	else {
        for (key in haystack)
            if (haystack[key] == needle)
            	return true;
    }
	
	return false;
}
