anchor.diff:  		$("form.scrypto").each( function() {
   			var crypto = new $.fn.scrypto
   			var form = $(this)
  -			
  -			var fields = { }
  -			
  -			form.find(".scrypto-encrypt").each( function() {
  -				fields[$(this).attr("id")] = $(this).val()
  -			})
  -			
  +	
   			var public_keys = {}
   			
   			try {
   				form.bind('submit', function(event) {
  +					var progress = sjcl.random.getProgress(10)
  +	
  +					if(progress !== undefined && progress != 1) {
  +						alert("insufficient entropy")
  +						return false
  +					}
  +					
  +					if($(".scrypto-output").length == 0) {
  +						alert("no output field")
  +						return false
  +					}
  +					
  +					var fields = { }
  +					
  +					form.find(".scrypto-encrypt").each( function() {
  +						fields[$(this).attr("id")] = $(this).val()
  +					})
  +					
  +					if($(".scrypto-lookup").length > 0) {
  +						var lookup_url = $(".scrypto-lookup").first().attr("lookup-url")
  +						var query = $(".scrypto-lookup").first().val()
  +						
  +						form.attr("data-scrypto-recipients", crypto.get_recipient_ids(lookup_url, query))				
  +					}
  +					
   					if(!form.attr("data-scrypto-recipients")) {
   						alert("no recipients")
   						return false
  
positive.code: 					
  					var message = crypto.encrypt_fields(form.attr("data-scrypto-recipients"), fields)
  
  					alert(JSON.stringify(message))
  					return true
  				})
  			} catch (e) {
  
negative.code: 
  (function( $ ) {	
  	$(document).ready( function() {
  		$(".scrypto-passphrase").each( function() {
  			$(this).html(	"<label for='scrypto-passphrase'>Passphrase</label>" +
  							"<input id='scrypto-passphrase' type='password' />")
  			
  			if($(".scrypto-decrypt").length > 0) {
  				var crypto = new $.fn.scrypto
  				var key_attribute = $(this).attr("data-scrypto-key-attribute")
  				
  				$(this).html($(this).html() + "<a href='#' id='scrypto-decrypt'>Decrypt</a>")
  				
  				$("#scrypto-decrypt").bind('click', function() {
  					var keys = JSON.parse(window[key_attribute])
  					var decryption_key = crypto.decrypt_decryption_key($("#scrypto-passphrase").val(), Base64.decode(keys.decryption))
  					
  					$(".scrypto-decrypt").each( function() {
  						var message = JSON.parse(Base64.decode($(this).text()))
  						var accessible_message_key = sjcl.decrypt(decryption_key, message.recipient_message_keys[keys.id])
  						$(this).text(sjcl.decrypt(JSON.parse(accessible_message_key), message.encrypted_fields.message_body))
  					})
  				})
  			}
  		})
  		
  		$(".scrypto-entropy").each( function() {
  			var crypto = new $.fn.scrypto
  			
  			$(this).html("<span>Entropy: </span><span id='entropy'>0%</span>")
  			
  			$(window).bind('mousemove', crypto.collect_entropy)
  			sjcl.random.startCollectors()
  		})
  		
  		$(".scrypto-key-fields").each( function() {
  			var crypto = new $.fn.scrypto
  			
  			$(this).html("" + 
  				"<input type='hidden' id='secured_decryption' name='key_ring[secured_decryption]' />" +
  				"<input type='hidden' id='encryption' name='key_ring[encryption]' />" +
  				"<input type='hidden' id='secured_signing' name='key_ring[secured_signing]' />" +
  				"<input type='hidden' id='verification' name='key_ring[verification]' />")
  			
  			$(this).parents("form").bind('submit', function (event) {			
  				var k = crypto.generate_keys()
  				k = crypto.encrypt_keys($("#scrypto-passphrase").val(), k)
  				
  