var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"701d3aa4f398fba246d75ecb5a8ae0b565fbe92f33c6c882b23c2a002aa4a755","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"98c46a80563ef020c6837e7dd026425eec4de6125bb254977400ce59c5b935f3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ad1b1258f896e37d1cd8aa0c69748b9c0466df9915a94aae7fe60fbc9dfe3339","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3616a220856caacff84c83a119842b89411e1caa1a1cbd09996ca2bf2471d4b8","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"681ff07b64bb876755c9ef6bad0c8d72c9ff4bfc2481c765893f24a611bf4013","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"01d57ac52c9b4e7380b900306ad0abb4441bc152115e601fb229b015dfa440fb","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"8082ccb0c75d0b9153a10f47b140407d3c52d74ff44e5dedf5e9e1d47d5fb83c","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"1e1ad5baf3a0886e3a51a4deeb6e7bf0d9ee55284aa2b92c3226c5802e048b4a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"8a7d10aa151750188f002747f914638e8272ecd2dfccdf3474b91fbd284ffbbe","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"b677f11b4658ca4a26817565803f73a8645eb515609624572a7e16a7d6a8a047","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"e9ef2a5450c31f411432aeaed38b5eabcbabb5ac221601b1f14805c14d6b5d16","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"388d13a075dce008a257bc085f554dd49aff092a4d6ef41103bf0ac08b181277","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"96519d1081fbdb07c1149ea6b20be94a663cb93f98dc6f7f7d27da62bf464243","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"945b50fa6cd5dd978ee0612fd6f754c7c758b5439b2c256da4ca60bba17c0e1c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"edc7f39e47210771597e54ae418cf791210b114ff24bc8f7e7c4ab8bd8e0111d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9946cc2719e169e3abc31669e1e80f6a7898f9695efe51cd84640c71e6a272ab","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"159000706e4bcc8bdc38a5cbf91aaaec5005175243ec679320645d528aeb8335","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"e392b29a0d32811f77b8637b0c2556499ccd5a84b8a9ded1208eecc7107aa3a9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"505607f46e97e1c7133349ea1b1215f298918d081e4f88ac395aa6fe39dc8464","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"631a9dee72c89bf72c8393a24f67a35930ac093c09b032a8ae7929be97330972","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"a67c31033ea8defcb87ea669e10344f73322afb47c56344c497ebe1825a726f4","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d58e9e77c8b22e825a45ec54b7ac36e9254cfa9019a113bc7651448a03451786","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f86a6ce5e245afff6e91fa72dd2e03ae77075551d16a64fba07ccafed1531bbc","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"1bd604616561f28dcc3c5edade777f1e198f2dbbefbcbff0f661edcd5f3da4ee","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"828653cd70a630851be25a38b9e657f09e87e9cd27db30bd21e9e380d18c874d","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4e301b22c85036eb35defe456896be8244271161d5b91bd960c56f251a97e787","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"110be76e1fe85d273ded66e1a1891e002fe8bbd1ac8b455738a34fabc16934b6","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"6119fbd7ef40fea4bcf0f6ad71ff94b7f19d6d9f85a647a9cbdc6795f971aa9e","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"11ccbe4a10672132b3517b74b362941296455feb664d37444d1b5d137f25b0e3","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"48ddf659fd916588412307f7cb56217c7becf591b0d4c3a5e991b6fe0cd6a7bd","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"6cb423483bf6915cfc558c1ea2b2831fa5237999b38f5aac4c84ee47c20fbaa1","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b6d9f66d96a9b0b4b4e7fe7d52efda646edb7f653b96b6fd6531afc205902e2a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6d803168ec337988a0f1c6b7f5c999ef9ca71a99afcd45b8226cbb6681504407","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"78670a4f30ca47d0d5c4e7b136d79da450696ece8a6ff23d07c2bca9b3c29c37","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"8115c1c0f4f288444a10b895a4328c5f7e3e514f5c59bdd9fcebbd5f489bdf63","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"0c65f1c1425546e2726c6c3a4b55a6924cc3c321a14d817891b2f4e4138caf4c","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"c617acb7308edb0088568c25e0720d9d6916401c080c4b92d574a5761a6c2e4a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"22b47912be6644d02d16b8730d9787a1f05ed2613b17bb1ddc7ee859376512b4","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"4c7632a16a2039a4674a7774aebfe553094de11dbe29e5a2a98f1195440efcf6","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"a90fe840f9007a06ed63969dff0c111e49786ab803f4deadd771aa337b8ef720","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"d562bcfdf029e5c6b3360f0544ea9ceea0a02476a5e33b3ea26d3eace9af9aad","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"7e5231801b4d7352f8e12b90c4c582ff112b14ed43767c42ad65a3c951c1f103","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"fe3f30aedd948a4fd553cd73330e3d699cabdb91d745d610f1a71f6b342b0f7c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"348c11385a32ac973ed07dc2483c9fa0a2e6d40cccbecc06768a880c352fe719","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"d97c9836a5ddf425f63287c914cb5ef88c592d81048de140dd4bfd7f01a2cffc","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"d8aeee5d141dba0bc6fb5d3c38684bfcd101e07589057695573b6f9311f5c725","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"4fe7fb2e1408fbcbc815b404013502f6302ed5e0d370a34b9fc3b94e52b8be5d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"4a73b06b2e0aca5c48edd2c20eaebcdc647edd24e69d4d8e7c819986b9f6e4c9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"27df82797bc3ef2e9b8be11d8d41816006bccaab4d6e91b0ccbf512316e869fd","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"58a5268b818f8955b5b8983db683f93939749e59f8d2e261fccf8d0e9a096ff1","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"c6bf26036ffa105d61beea0d93bca1d944893d742aa88bbdcc2233eee7445b60","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"bc8fc5ca447a4ef01a19209f46e78cc4b93f4ae5ac0b4026cb53f8b3e380a2b5","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"519021a48b94d34f95f07d816f618b57b8840b21866505ffa17b6d5b1865f9bf","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"833213442ef40340d5679eb2abc49868336dbfd373303b3a6319e95807f69010","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"f90060761677d941b3c5356ccc4f84053a0b08cd593c9a5350b6efcd9c183d11","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"d2edc78353ddbdb1b487b14d54a79a32a4c6bb72efaff9f6594dff26bfe26e0e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"54b34a26d218fe778dcbcc830e23a60d9a085e3ef5304f8f8c2c81fe2dd7753d","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"d53ccbae5f2d69ce212dc6b10409036eaf146cf37b03937130cf1f81d27432d4","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"d6d603154c3515ff23ff901c897ddb14ef3e1ae78f21d15da0d76eef14b53fee","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"932a79bcae7cf11e35e241cd6e5530482fb873a39df40c6e6d58f0f36f3d0f20","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6d6b7f2e1d554c09a4f3235716ea40f3471764b010b2a4349dbdeadfb9fd250c","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"51e0c0e72f24e2a26b1553861832c39b5688dd2fcd7cc86cae566919c5c337f9","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"eb934ab989bc3810f281a33eb037fd38b63dc324a86d35b337743aca0ce09cf8","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"99c9436d594205024fc48969c58b6a19d520a7d1e4bc2216d67f171dafd99257","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"64d23b339e41b90953d2633db30e24e39d9bc1b7fe92947850c9cab60e1787c6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"8d9097363e09158f3566b52672b5afc1abb38237e7c5007ed78de404c9004ba3","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e974c730c27f8a7009596181321799225dccf3531cb93220db5d60a390cff8a8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"81fd62e7bd4843e574fedf9c8ec386343daa422fe023604a03588689d931794e","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9828adf433d24a8bbb4a26cff5108a0be6f8a43255e250c2dd442867bf0fa3b5","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c8719c75b1c45dce27c6f88c24b7476773b210b883b1a16503478a80dee69114","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"b02fec5dd49d989d3c9d08c618597e90f2da8135889df8b2def54fcff08522c9","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"affbd0dbdc88a2c8ac3ddaadc797ec469c6d87c1d4d64547e206dadfa98fdf4e","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b761e733586f3a3b6ff3d5afa530227c00cad5689818be0be6dcb9ae21365bc0","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"da0a591a41121c5774f9dabad34a932115bb745fbef3e0597f4d348632e4e46c","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"55f5a21b53c22a218256d176f4b60771e8bd0b2701f5bc069cbe58b4712a4d79","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"52caa817d2ead645e6e21e344f53642a6da0b6b23bdde71562c50e7175a0ab6f","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"9b8c140d3f8d337afc411698bc02af3381c20a2d158050c57ea58bdfb1bfae18","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"54f75b54a92f8a4f79dea9e136a41692e0a22c8d83b55a8f2b34b1bd48c8c5a4","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"da531679d598731623c614ba28c8f8abfcfc82bdd350452366779934c095fc6c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"551e472d732a9f36b5d7f4a9349f2269101aefe121d9861d89ffa06d0fafc949","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"ce6d24b892ebd5cf20c0dd9606ffeb99ddb4648ec24d1ea3798dd3a9f93d8995","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"1939d508c00911204c559a72733182815f11e90bea10608f49033429619a64cd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"1e44fcb9c6482d3493b166c4a44a1f54b13587a256b5f370899d6baa644fcee3","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"9c5270a9a713ac2ac2edd85014c8c5eb39c594213b10fb4cda6f001af70ec1f0","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"7857a3032e4d5309b72416112ae4a90fe20e39b06d3e485fb8895b57f4ef8cbd","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c9d9130cd1beaef97b36edb518ac1c08cf2a84fd28f5d89b0f1cbe1791b70891","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"74335293475e1ca0b5af1757e512467bb05119732a21bdd8cec41604f0915229","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"30344bd939339bb5941c6022e9f1b71b2467de7c3705e6d46aecbbbafc15120a","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"b058dcf45b4f2f27be36a66f946fdf2a605c73020cc27bcd9462b1ca76b5698c","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"cc31f499eeb1751c3cbb9da0c6a5d8452d4f328ec77c57561ae2cc5a72802856","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"2ac9b8f32fd832dd2f18f54a265d46f067be5bb6719a6a0750f354cefe30521a","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"594357172bcb2af85fd8c206fb19e58e2cee8e4f15fb4708ce647f5557fe0ce9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a9d7dd496058d0dd22f9fd496bb570c2289da4997228b037c9dee6a0ad059076","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"6174d74491aec373514bdaeec7de05914e1e71f1df51384221d48122b8f139f5","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"c1346449f68cee80059c1ff96ac09e5dfb1b2da18af43c09318788e8df956623","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"a1695ae773a0f97202c422558a1ec0d4d349d62ebc8f64050154b1298f1db418","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"c3ce0bc5b1877b5f7adbdb39ed0382fe09adff6654b84488eb1b2d62f4539e9b","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"9c0ae11107b1a34bf611d69910934e30e94d622878838aac545da84fd4405e8c","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"0ba771825fc63471db178a4da541b8e9522e7dff9ea13b4e72d8f4887d31be9f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f11bd1efefc7d8969150163424a4770dce4b21eb807eefa3f75614c32a392a4f","length":6} ]; var sSalt = "66b345459b4cc522f6cf6b53f778a34e07bfb8e0"; 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); } }; }