(function() { 'use strict'; var ParticipantForm = {}; var PASSPHRASE_LENGTH = 4; function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; } function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); } ParticipantForm.generatePassword = function() { var password = []; for (var i = 0; i < PASSPHRASE_LENGTH; i++) { var passwordFragment = words()[getRandomInt(0, words().length)]; password.push(capitalizeFirstLetter(passwordFragment)); } this.password = password.join(getRandomInt(0,9)); }; ParticipantForm.createPasswordFields = function() { if($("#password-value").length == 0) { $('#password-form-group').append( '' + '' + '' ); } }; ParticipantForm.setPasswordFields = function() { $('#password-value').val(this.password); $('#password-confirmation-value').val(this.password); }; ParticipantForm.displayPassword = function() { $('#password-display').html(this.password); }; $(document).on('ready page:change', function() { $('#password-generator').on('click', function(event) { event.preventDefault(); ParticipantForm.generatePassword(); ParticipantForm.createPasswordFields(); ParticipantForm.setPasswordFields(); ParticipantForm.displayPassword(); }); }); function words() { return [ 'abash', 'abate', 'above', 'acorn', 'adapt', 'adore', 'after', 'again', 'alarm', 'album', 'aloft', 'alone', 'alpha', 'among', 'angle', 'antic', 'anvil', 'apart', 'apple', 'apron', 'arena', 'armor', 'aside', 'atlas', 'attic', 'avian', 'awoke', 'bacon', 'bagel', 'baron', 'basic', 'basin', 'basis', 'batch', 'baton', 'beard', 'beget', 'bingo', 'blank', 'blaze', 'bless', 'blues', 'blunt', 'blurb', 'boast', 'boost', 'booth', 'boots', 'bound', 'boxer', 'brand', 'bread', 'break', 'brick', 'brine', 'broad', 'brood', 'brook', 'brown', 'bugle', 'bulky', 'bylaw', 'cabin', 'cable', 'caddy', 'camel', 'canon', 'capes', 'cargo', 'catch', 'cedar', 'chair', 'chant', 'chase', 'check', 'chest', 'chewy', 'child', 'chips', 'chomp', 'chore', 'cigar', 'clamp', 'class', 'clerk', 'climb', 'cling', 'cloak', 'coach', 'comic', 'coral', 'couch', 'craft', 'crate', 'creek', 'cried', 'curse', 'cycle' ]; } })();