var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"a0d502c31c2487f8279e2a87a7755354abc9542adbf7660ba2394089f2d8ae7d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"0647abc116ef1a2efd4b52748855b01d7f2f6bb33343a0b98e648c5a4b01eefa","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"00a995ace101ddbbdd8e8f5f3d5da28dc048106ca6b429c5eefd304e2a3889f0","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"949bd3a3f116af5fd7c0e8c00d963880745ed90a14b0dc97e0e5cd6dbdc2354d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"b09c40ce66b856169ebfeec85e3cb9fa4c1d2839e600cd6b0b2bc485ba19fc2a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"6db7f07c572f9b1a0e83b4b9ea6035f7c473f249e41028b189de4433fcf47ae8","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"3d8ac64963432ab96c04eec63cca3facb9955ac74c6c0eb1bff459f515d07402","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"abf14c8c138eba4d5db71a8681ab70b91235c31ba20c9e8eb8a76eef15e94876","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"71b5cb78a15a5ce93d3ea0fc01d861c93bf71904d431d95543303ce99defa75b","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"44543a880ecc73f6ba83f1085d57983f638d9387e739e2c403a171c8ed2f668c","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"71e8c33ae40a8af8ffb7a839b530ce846a7d1f85817142b22565b3946125a30e","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"deb5f4c3160fdef071c8d0813b72a3b813963f4bea041c0540a541114293e002","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"3027b8c3508147924d0f33321a9a8b7966219c81c453aaf80bfd8c8cccd41db2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"d0bf4676a16a64291c49439112d1a1e40aee98ebee9684f931e67ef3fba812d8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"8926d1048e133a737807fbd33e0e15db9a278f9466b409a2299c26d474220813","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"68f649c39481b1bf76a1c4215e5193e3c8313afba8127a73181cf91e049d657f","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8f98e742f57291d66da6fb4a516e84269a77b1c1e43bd26a3cbe474491cd79f2","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"54f59f7d01b0c6b273ee5fa4e77cc0350acb4764731efa9ad73e0c191455fd25","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"5bae566a182b5f3fa266339a5d43e5d36cc0b9ad116ee5c6454ac5c2ce98152d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bf6e905efd16be3b6cc66b5bbd98e19750d08544fd9923ba79fa778f4843a3fa","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"1a7645f3a3aaee585c1e6c1a326cd75a8ec72d7d03e89ac9144713ca3276341a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"1be8aaa7215c43828b58d6f405c3f49e4ea9880b598911ad30b103d45aaf3033","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"c632b5472c1c49b8708eecd5d14908d409671b0c200c2a80c3058b4ad04e217b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"cd5fd3db147496acfe8d9250e1383e7700f01fbe85341c3baa09fef96f3619b1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"a6bb59cc74fafd44c867449109109f0c9a4786d693785870c7d60d2ee9178b00","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9e1be6f1b1b2e481ffd704371f2766beba436f969374b2b82c49a567705852ef","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"85cdebc63250e48aa06a1be452854f25b00601fba013323654d7d84a73ac6f82","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"d61835e7a3c8844eae3cf55ad181e69f602e947df298343bf074108f81df7fc8","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"97029bc2a25bba404b0ea99ba827dd4c42db07dfc430bbbddc9ac6cb3a3b197b","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"7853e8cb81c92c1e1ee3e0f1188cf31f716244f6b0d42ffd11c8779b9371034f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"9da17439d830d13f3a11d253255e8de9c5d1497daa96894b69177e52e715669b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ba508aaebc5ef4954070a932851d722a93b157b2f1a3f72e0144f1bf3decef66","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"968018ca4353c5cae2d6a7036f6eb37f1ed9ec0a6a1123b3706894056740edb7","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"56f7c526f81c42d607aaa2fe8e1b1211e4c2cb599dcc56f556db974b03c710d7","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"ed8e21b9aa35de38e30ca98e866347af02cf6a5e1d9ef9a007434f227f89d670","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"9f2fa2b4e9f0d84ce9ccef35c1d2f39d8e96393fd5d88563c8c5f6a7a3418a41","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"72a000e1ae08028bac133f0a966ea3521014949c929a1b2c067b4f48779e8bdd","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"f5da5191343e40bbaa9f88b1ab3f0838ecaa1802f3e00db0119ae05b5597d38e","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"e6af337b916ceb3056f69c9cec49a4661f771d24d88967c538f81008310dfb2f","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"d53a0cfd704d65d893bf6fab16d12a40e344f91661a31da810e46576e6a8c72a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"d7046b54ea06a212d56ee5af178ee048c4878ba30b5ef32905031a9fd315a055","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"09a85f6596a8542e6a341069c7d343c8a245e99e67bb6edba02e8aa22e079081","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"e44b74434763524c33c3954d14c4598cb6ef0441fbb0c175360ee514636d4c06","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e0c4af39e2fee20ebae267d65cc4fdef6ecde6260aa0f7c24aa6de2219c46ec6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"cb50d6c8d876e889fad8fe5b7d409d33d21cdffc7076e56f2f2e4f52a532ac2d","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"d871c35194a85520211ff9fb06e6300c03b04ef16b8d325a06e08ec53dc311cb","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"4cf46b724fc1432adfd09ea5bb88295db8017f45af71a38ad1ed1acf4bbe5ea1","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"931a97f8f47f80f57aef5be5af1efaacf3cf23bf9eb5163228ae9b3649c96748","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f9e3325a84761410499d00330bab0be699596a652025244603a92941a3354035","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"81aade92eb95ace5f8cfa4602d2b3af81f385774210eff7c976b66281f1d5be4","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"eba374f70d098f56506ddecfeac41798207077fb811b55f86b9aba770b7d118f","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"b51edff62c5bd6ef38400497fa293a60c553d799244b372bcdef1b9cd4aa75a3","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"a2b7757483770766ba65c5da5bdd3a7abea3fe369f0a8b5ebcb1a8fce4b52a84","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"dffc3bb445aa3553103879b7b69dd4ee04a9703e61e756f62dfd39ab6649050a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"fe7995d25a2223592e808f2bddbb32e02c28c34e7005ed19d62b2749585c043d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"15ce7f89aae2c4cc6a2c9862cc0f72691e6c73a1c8739902cdd9b2b66fff0ec9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"e88bb1173118aef11fbe6b8415f78002fa14809ccadb40be554b438de88fe103","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"aa9a13999965ff2125f3979644cebe14a2a70628e857e5956e97eb5c43424123","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"690658951503eb2babe7f4a0d8db2eab12c112db5b265c5cf35523a7b0c6df73","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"014da5684d59c3d8bb2c4c9eb8ae93935db02b6d5e766f928a08cd6f60608bd4","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"cae770f30fc6c48de5a9976c058da8138dad2fd8a58b6eadcb92cd7ecac672de","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"7428efad1b6ca0a745ebc30159a548e8f1c3e8eb3c13a26a43f4a5f32f74b927","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"b3623885eb42060c93d30647682c52e1bdccb00df449d1046bd05695f338b70a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"7d8912426ebd4dd8afde3cf25fe79b656a787cfa0a7db1d1e561f800a9c63b20","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"fb5402fd94cf48ba619db5894d7df8c0786272ba76adad3e95debd8d4b2985f5","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"565364aa4bd037a5b6f71b07fcaac1cc59ac9d59f0550ac9425a420d2cd793e6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5001fe22de33a7ab841e906752edb0401e6e4aaf1207ea15131b77e59ab47a06","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"15c1509d070fb73eb44f161383fc5d4f647756f435cbee5c9079adf2b88179f2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"161299c13090cfe972c96fb28bb111bc5704e6cf390d55e6c682704574078c01","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"412794099ac8900bf22da73f80ae066b7110e026b8de87462bd7983836139480","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"4d0ec13866891f31795666238db22dc966ce442d5bf11f459cdcbb5c9c6f1c50","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"5129beccabedfb6192a2b9413600dbf3cad0170ee3527f560bf00b11eb17ccc7","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"d2e4be72ff837bd75719bf4b62f589ec523a1b41bb6e173fc3b5776fac42aaf2","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"97eb91c6195254dbf30e182bcb9c283c40ec67a777b07a3ce4757a94fa7fcd01","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"d246d2be6e2b32b664c5e9ab68501ef790add741a6613ee7ca208d43a20ac5ea","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5c57a1f46bf03f721df46d8d31f229c67074f06804251bd6f8689394c9c32cd1","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"dcd4ec73f59e03178354e2710bb5688bf8a06d704eea78403bbf5cbecbb1a932","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c68516d6d3a687dd686a69050eaa5a279426b02cc101487183e380d62a38da24","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"5d8bc83f13070bb138d23a085c601e1ace0915b86fe96a5905a601ae059efac9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"57993d0eb40d336533be4386a45fae1c153f277e5949f4e13c248934a647b0a9","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"562d8a3ec4cd3aaa35d3af6c2796cf247fdd967818aabd403e0b536879529a16","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9d1c349deb50ccddc7ed6ad0533e36a6e488e344c2cc61f49a369805efb2708f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"dd1d75ef31a8a69762f6031f3cbe61bff1b225644055501584f5eb95d3abbefe","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"32f55c4e4b14b872aa197e484727b219ea095517f1d22b2d1bde679e16abce62","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"d393cae2d8afdc1596e4b0986c8a4e4abbe7f43e6390d8edac0957751cef3e06","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8e1f78c4eae7ef1ab7ab68e93d9249e98fbcfbd2d4b37042f52dbf00fe0ef94b","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"17fdf5c7d10c99d775fd11d237717b7c4618c0253e11571c541d746c6fb0ad87","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"23e9cddcbd9e307c8afbb8deba934d00529ce398e0e6cf05bd8bebc88fc56e83","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"402c4956a79fa64392cf970c7a3ea808a33e096c167b2aee016cfed8bdad9c5f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"44b94ab2b16e9e1ed142e34e346a56c50d72ac62642f8264ea8f0de81f39276e","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"621ec3cf050575faa4be684b3494b925dc71d82800d1ca82e1d5bb83f5dc8584","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"eef1f44e35497c34f32987adbcda046e16030710dd2a9458dc3f672955a41db2","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a377063c127f7fd1418f4bee7d77cbb7603ad09c981689296f689724f58b9d26","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"d48b2ceb201ba00c347923e3266cfc85af878cde719e389752842876952a18ec","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"a5cc8d3dee5aec5d2ddc4453996f76c5b4251b9ae5ae75fabbd9aca3e639a038","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"c2ac9d15189b16203f1fe57661a162b710a771793535038c6e536d0731f8cab7","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"27892c12aeda5deb9bf1edf32dc27111e2e332d8bfe7d18328fcc6534d1b5ce3","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"1952fc196e39f0b200c09ff79d2dda699cd4a5ef3ef76139e623b2048bb2abaa","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"243673ecde0d0ac13531f43d04793393e8c571db309cf1da6a9f74f9b9befd1d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"44bbd235006ed64ab466965b45423639b7af8ffa255c1aee850e9d042d368102","length":6} ]; var sSalt = "94ecf792f3b14d6730660cc34ea9306222e8eb7d"; function PersonSection(id) { this.sectionID = id; this.userEdited = false; PersonSection.prototype.addCheckboxesRow = function(parentNode, person) { var tr = document.createElement("tr"); var td = document.createElement("td"); var label = document.createElement("label"); label.innerText = "Diet"; td.appendChild(label); tr.appendChild(td); td = document.createElement("td"); var labels = ["Fish", "Poultry"]; var ids = ["fish", "poultry"]; var _this = this; for (var i = 0; i < labels.length; i++) { var checkboxID = ids[i] + this.sectionID; var input = document.createElement("input"); input.addEventListener("change", function() { _this.userEdited = true; }, true); input.setAttribute("id", checkboxID); input.setAttribute("name", checkboxID); input.setAttribute("type", "checkbox"); if (person[ids[i]] == 1) { input.setAttribute("checked", "1"); } td.appendChild(input); var checkboxLabel = document.createElement("label"); checkboxLabel.setAttribute("for", checkboxID); checkboxLabel.innerText = labels[i]; td.appendChild(checkboxLabel); var lineBreak = document.createElement("br"); td.appendChild(lineBreak); } tr.appendChild(td); parentNode.appendChild(tr); }; PersonSection.prototype.addDOMElements = function(parentNode, person) { var _this = this; var nameField = this.addTextFieldRow(parentNode, "Name", "name"); nameField.addEventListener("input", function() { _this.handleNameChange(this.value); }, true); if (person.name) { nameField.setAttribute("value", person.name); } var genderField = this.addTextFieldRow(parentNode, "Gender", "gender"); genderField.addEventListener("input", function() { _this.userEdited = true; }, true); if (person.gender) { genderField.setAttribute("value", person.gender); } this.addCheckboxesRow(parentNode, person); this.addTextAreaRow(parentNode, "Notes", "comments"); }; PersonSection.prototype.addTextAreaRow = function(parentNode, labelText, id) { var tr = document.createElement("tr"); tr.setAttribute("class", id + "_row"); var td = document.createElement("td"); var label = document.createElement("label"); label.innerText = labelText; td.appendChild(label); tr.appendChild(td); td = document.createElement("td"); var fieldID = id + this.sectionID; var textarea = document.createElement("textarea"); textarea.setAttribute("id", fieldID); textarea.setAttribute("name", fieldID); textarea.setAttribute("rows", "4"); td.appendChild(textarea); tr.appendChild(td); parentNode.appendChild(tr); return textarea; } // Kicking it old-school PersonSection.prototype.addTextFieldRow = function(parentNode, labelText, id) { var tr = document.createElement("tr"); tr.setAttribute("class", id + "_row"); var td = document.createElement("td"); var label = document.createElement("label"); label.innerText = labelText; td.appendChild(label); tr.appendChild(td); td = document.createElement("td"); var fieldID = id + this.sectionID; var input = document.createElement("input"); input.setAttribute("autocomplete", "off"); input.setAttribute("id", fieldID); input.setAttribute("name", fieldID); input.setAttribute("spellcheck", "false"); input.setAttribute("type", "text"); td.appendChild(input); tr.appendChild(td); parentNode.appendChild(tr); return input; }; PersonSection.prototype.handleNameChange = function(name) { // Only perform automatic behavior if user has not edited other fields if (!this.userEdited) { name = name.replace(" ", ""); name = name.replace("-", ""); name = name.toLowerCase(); for (var i = 0; i < sGuestList.length; i++) { var candidate = sGuestList[i]; if (name.length >= candidate.length) { var namePortion = name.substring(0, candidate.length); var hash = CryptoJS.SHA256(namePortion + sSalt); if (hash == candidate.hash) { this.showPerson(candidate); break; } } } } }; PersonSection.prototype.showPerson = function(person) { var genderField = document.getElementById('gender' + this.sectionID); genderField.value = person.gender; var checkboxes = [ "fish", "poultry" ]; for (var cb = 0; cb < checkboxes.length; cb++) { var box = document.getElementById(checkboxes[cb] + this.sectionID); box.checked = (person[checkboxes[cb]] == 1); } }; }