
(function($) {
	$.fn.darmaCrypter = function(options) {

	var defaults = {			
		numelem: 10
	};

	this.each(function() {
		var obj = $(this);
		var o = $.extend(defaults, options);
        var original = obj.html();
        var counter = 0;
	
		function changestr(){
			if(counter <= 1000){
			    var str = getstr(obj.html());
				obj.html(str);
				counter++;
			}else{
				clearInterval(timer);
				obj.html(original);	
			}	
		}
		function getstr(current){
		    if((current == original) && (counter > 0)){
			    clearInterval(timer);
				return;
			}
			var str = '';
			var chars = new Array('#', '{', '}', '=', '+', '.', '(', '$', ')', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '/', '%', '!', '[', ']');
			for(var i=0; i<original.length; i++){
			    if((current.charAt(i) == original.charAt(i)) && (counter > 0)){
					str+= current.charAt(i);
				}else{
				    var prop = Math.floor(Math.random() * 5);
					if(prop == 2){
						str+= original.charAt(i);														
					}else{
						var j = Math.floor(Math.random() * chars.length);
						if(j<0) j=0;
						if(j>=chars.length) j = chars.length-1;
						str+= chars[j];
					}	
				}	
			}
			return str;
		}
        var timer = setInterval(function(){changestr();}, 50);			
		
	});
	
}})(jQuery);
