var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"450aaef676fdfee87e9e76b618ede19a2af139196753fce739a066becc32c210","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"fedb3c190acb5d244ed5ac4bc9c789d930339acc439a879c44f57012200d22b3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4559277492ef985b90ddb60332c064c78bf3714484aa3a2bc74678e3274c518d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"e5d3cfec48c4384b2cf7504a48f1ce3d1cb3f294affeff2623631bb4ceade3b7","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"543bc28c7b93c29ec6630ab0d760c0b4e92ba2c01f86825485310131ab834127","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"5dfeb67d7053a02ec80de645e0ab2658671654062de56c916b3e103b6081c332","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"8ec974162047202fea56293b69d4013b46e6a2e153a90a9fcc6bfb2095ee278d","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4fe732183a5a475a8b88aaa3347be6bdeeeae769028d7cefeb259dc64dfe68e9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"808e57d93a426f1ad07db9c34d7a86501abf2fc6fc1ddca48c20bdab3f2f6242","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"4f5cad3d56682ee764462c81f09f4a1e792e26f8cf60cb7580755db5dfd6b7de","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"4759da6e1db27b20cfc5f7edbca86d402c93ed01f88f95db07b4ec3dd7fd0e31","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8b207a7fd2e71057ad9cb81317825ed6aef6f5d013ff526821bedac564785da3","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ea2e3a073285727793e7f0a765a03a82ccf7bfe3549b70af0a30926cb259f1ea","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"b49075b3255c1b347d0b85c18486589cbeb0d76884ddea3a479eafb7b99b0af8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1bcf6d064c1d0a0eb754cc4fc1f7a91203e9c6a8b65f7c84c7c642f73d9b388f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"3a8885fab300ef09dfa2cada16fa4418f19038dadf18d16e72815be0dad9c4fe","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"77268a554b5559abef95dc1ad398e2172fe2f73642dba3e001d6d67bf055f16d","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"09b9e1c3af71636bb826ce7b07984566402ec8dd868363ad1515826dd62d0842","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"96a9b4688d2ed021df0e428c24ad32cb71ec38bde06a0185c7eaacad0e8faeae","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"8281b06c3926cebd7559770ccb5441faca5b35327e5fa777f61c484ad0eabc56","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"fbf16a0587777546e647d1f39c92fc17fc63bae4d82d581067bec4b30df1e230","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"dce025bd37ffbf6a39d4510c68890816bed2524bfc652d44d3fde77cf0e48b2e","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"6e9d789acc4745da8585fa19674185dd39af7aeab980f46ea4d32553f9817145","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b232dfa9f97829745d7811257547c1ed99fa5b5f4a0532e5be9beec43bd51ac3","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3465bb6cd32a1e822ebbd7951ccd5ad1ff4e89581097eefa623b38511a5aca6f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"6d7dc57fc158ff8da5cbedc277c00628c6cadab14452e238ac15fa68cd2a81f9","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"1bbd6fe66578e2a317db57e74802c9872ba6e69743718e8156e7a0c48d6fb512","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"94c08536a7b83cf8b74e8068f8e3350b6261b49bfd47a376cbc2b5a463968cfa","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"5cea5e076b7ace77319bed47a42c6a4811b5cfcd96280ffa68baa5d2d4ac032c","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b107614c003e611d2dda51eeea83808a41928761560a21d9975395fc443102dc","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"6facd5b2afa8f7e9e517136e0654d10723026f17a202ac266459397633a1f0ab","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f18a2273be1463613e648a3846a594e1b423a2b32b16216c18925dba8b50a8d2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"86b6036c3b4c7f3aaec945ae45649f83633d7c63aa6e775e672560b00bab2b86","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"8e3399a05e7657e564b99f5390eed9405a8f39de2d54396d138b01bb6017e0be","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"1080d84eb5b6b09821dbb986f29691e0f753e9ea95014ca36e664868e200b396","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"2350046004955048bd65dbc11ff51bbbc599e30f1783267ea564596f9fe0555a","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"ae8b5563fd6b795ca56701645b13553daba62dac88ce42bef2ca83b526c893b9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"cfad2f70890b8712e7299b5d38a8d3f335b7b321b35e29782afb918349307261","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"faa5f73997af00cf3427f577337f0bc19bede1d72085ce471b94600294defc98","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"456cee85dbb1474c659c275f26a506cb7a726df10159e8539ec80bb7068d1997","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"11066c6326e8691752e233cebdb655ce0a67d003f04ad5361215cd7b17fcbce8","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f01144a93f9e4aadcdcf2f0e1aacfc0a41c9ad891e1daab8c8b79df0ac176e07","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"122e7ef651b38019eac2854c5c51d9dcce2e6a8f5e96275928a9033677968853","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"d4cf1f8938bbe454aa6a7c531834ec8fb3b40436ba152c875c452dc5582ef542","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8a29dc365a85d94d72080b98857cb6d58cb8963290c5c8a8f68c5c3cb2652d32","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"cfa0ef0fa08ad035db5da26790b6770e2fac4af599ce200c83a21fc304b39f02","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"90129b6b5ec99c339582c2c84dccda2a098e235ad2f82ac3a516e3b349020933","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"565e9b61bdc05f41765d6141cf66a0470787dfecc9502eb2f428beaccdaa63c9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a929ab087956f5e039d0286293b2e25a0255311280fd4bef407252c6288da34d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"c7b263738e71ea18ab3b26dc14992c68bfede6f8416d552e99afd95d113b3102","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"9ace8ae6b3b6cf0ed60270ad5401deef1df1f42764d3f890ab55081d101bc775","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"d190318683f587d7560f24546e91e14182c704c5e7ae657041bb1f42a2df369f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b1fdcd4a9c1dce2d3347577df345a0df4fb713aa218890075f3a8ffa0ad26d86","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e143c90d8231ebc01b78a6d75e5a56ab2d576349aa073faad211ca49b07b4d21","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a7776d8bb8c44df1d5d6d6fe982f8efa3b7b0f0f8b38d02e7ac64822f5abff72","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"551b6962242d7a80f424847baa6d9bdb54c0b47da32bb2acc3f9b96484db2021","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2b7b748d077e93740176b4a4a4bf590e12da4c03f53c8be5d9263587b3077bc5","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"6c9b80d73b3a49856efa77bd2f3705c50e5da448cb1e0c2a17706582a256f581","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"260451bc01638b6f227341c2cc85135b8c2b15b92620053f36b3eec80176b20a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"d5aec7bc6080dc4e0a138c80c7808199a6ae1310d3ba166ca2ef168fa570d6d7","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"63d4f7ad255129d3a49aff6543c061727fe1ca24d08843bc0ecc5f12509f3af1","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"0c8f508779f2bf4fd0ab3706f6b62a7550293d4f9f8d2ba5529f0139693e9a32","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"fa39869a83e98084d69de2567db14169c5eebe0b7baa65754fbf2067879d9ac3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9036658752e2a99586ddd3395e883cbb8540274cf78765ad122a25e45428b307","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"37286f8790412585208da49f098fac6da81ef324fdf52d21153f4bfe3f2b0348","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ab878c2f41d4944caf155d883f2eea759edb91639ce2bafb0dd5a66bd9d01b46","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"dcb10db99dec362ff2db436a296a87698c2e1214f08f003e36115115f75b5a3b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"6a694eedb7229773ad118a39ca258bcbfbe25ec0b0fe05784fa7bc9ad56fa5d6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9682d6d181da4aadcb3b2ac9ea2793491bee02d701ba0599ffc89e933180a8e9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1a0201d6a6118908b29f5313f8fca521dfe8d5daaeee4f08e64617fab10449be","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"082226266b2f6d69410a54aff62f24f964d4d2aecaa31b698a23e5ede8bce4c1","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"d63dba94e01b816d3228487c1a2202a517b98bdbf9aa74b894313f9824b15b3b","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b072c18f96681f06e0d555733a49e75c486f3b3a5ff26e6d03c104ba3addb144","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a521e748ed02ad5cfdd9ef720e97495197938ac4122fcead656c35ac22db98d6","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"e2acefcb7f21f326e588277aa213ad3d86ec233c15365b50848c39e72ae6aa92","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"78ca21a95b756a7d63da5ddb81e428a21d4863676a3aeb4e76b118d276c8cf87","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"9e103f627a13bb2c6c2cd9b00deb1d01eb940f11b27349b25d44a7e1b75c5077","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b0f31989e55256fddd57d690866163cfcd33e651aa10984bd3a6f1ee3572cce9","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"36b0366083909c7bf784547aec9b7bbdcb918040e5ec0380f542f40208e02223","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"eaccb2fb8da7c0ede4cb9e2623ae805ba0c78bd8db014cf67c7ea9341c11592e","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"f4d1e271a1b0739970fec95f8d8f931bc680119b19847853ad69d577b2ac0ae5","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"954699f9cc892b7e714533d1fbab52591f8deed12493a3e955670c5a2164f3d1","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"620cdb53b8021a436697eeb47d4c6aa07ef9f04dcddb2ed5e953b4ed9d2974bc","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"73d1bccbc6d2c1b293cce914957a50339616731663ec5ee7f3a44e1f184bb77c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"22ceb48518dd8475cec1c22ac4be0d4c84bdfd50f2a8afe435b7cd1c737fe39f","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"e87bb6188cedbf847b03804dedaacb565728f6786eab7718c72c073eca958115","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"ae214b9f3add403c4a50195ebf524bbebf2cb6a6ceaed11f24c4c589197599b1","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"562e7d8a7713e04bf6599aeb4111fe2e14a40c8b4be076226efe6eb264528787","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"95d7436fc58fc3b014b4bfa7456c1bcb5ad6247ecc69245964644f6ed172ef6a","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"6ac1f9c6c38642d0e9e26755c1684c48d49a21bd2b34632d5945d63acaebbb5e","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"dd1b6478cac80a27ea5f1c3050c4e5fa3b6fa732ce65255631d11f75c957487f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"121b9d5873e82556d632beac5d73d35758d46ecfff1bf51f2b467abfd9c0cd8f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"99e20d6b3ffab83e01c528d6e08e12480b7aa58b2d823d8dbda16a53d41730ad","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"c10d67b8129cb3e02bd8683d6bf77f68a8485713aed87488a85533b5cfa47a79","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"820327e2a8d61e947f1896e37f5eab7841a2426ff28212bff7d1ac8870e7b287","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"1e3a6f6745277c380b48191a34f40763c805a2e9349fc0ab3822fa93dce6be7f","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"9eb81964d1a6c77fb61d4cdde688ed0466fe8725f78a32b38094e8e2ade47dd3","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b027e7a2b619166eba5bbcd18ed2dc5c952293245eecf9cd72309e94650ee8ed","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"cc421722891ce327c4ffea99e9d42a32fc4bd9315fc4816cc1baa2beea7ecebf","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f0fd3041031792045c7f5ab1f90ba1633df64a8b73a55de6605ad69a9ce4d12e","length":6} ]; var sSalt = "272505bba0c19ad4cae0b70327e2f9e64be42068"; 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); } }; }