var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"d5c38411566fe68c2abdf0a088be643176667714770ced87e90dea581cb52ca2","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9942fc508c0a79cab0c68829c9105a03c3abe1fd2296a7d9e18c3f4d5ad49a95","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"f2c5f6a3fa0692643cbeb3f1dc2e56c9f083ad172e901f868bb61b6a29086fd9","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9460b0e080a0b5b202db1f699ec3f6df34f9e1c29289c79d936b52a6e0a147e2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"39fbe749fae2dde1dedb72affd5ed8d99fe56d582e6909c7e352ac18dd6d7244","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"fe2eb628d61d42a2d7102c327793828aff97778856233161d536ada8adda8a0c","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"615ac2d716bf7c81e84eac5b2c975dea57fef8c3b887ea9159fcbb84e1035d6b","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"3e89ae10d1acabc7e120e3eeb57630f89adccabf49eb1dd613fef7056013b01d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"026e5ffc754b1ebcebe79554f771b46b6d3c0e8faa5b725b90449b05b297837d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"4d3700df4782a311787f80c1b9a457ba73bcd383130f080fb9d67700324fcf29","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"0c3058df0468ba7fb06762c2b6cf0f5fcfeac308a0bf05baec777316d6655d26","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"1b8dd9e74526d5671da03e7d7dc8429476801226a242511c5825488a7f0a6cc2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"dcabb8b89f3bec5e28e99c2b319710e660e944bee665b928e3c9900ed8b460c8","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"fdc5f5ec1cf80d3ac354b9dbb3be91f26f321bd54ebc52a1057c876530785706","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"e74ca9d45d721fbb05a8f189cff5dbb34a1cb526ca2b5d6a16b78874fb0a064c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"0858af9d9d433fd1bcf06374fd6357cfdb58fecc16a345a3698b601501749470","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"af17e56e6adbe7663dcafda49da2f375c6a6fa6220c3133dde3da7f0c86ef43b","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"1dc4df4a2efead5fbd8e04cb36c1618ccfdc3db22ca88e41d40d7fb0e7f71081","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c0daeee9e9818b48a27dce2f081ce9367dec8097232917c4425f17b66d549bff","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"09db634ca0892905e72eaa1e0990ee4ed83878700237202ff662d2e5b328a6b2","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"39f1954e7b2a8d0717fee1299aab9efc866ee75a69563240e86e62b71d681d72","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"bd50b8ede138df5df920458f2e392b795668c8507292abacb43d3a8b2e2e5b5c","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"53d2c537047255544645cc29485597e96ff6811006c25edeaee533f83efa935c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"31e2abf163925424bdc1afad0b9e1cd71679b52f276f3995ad5acae782881859","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8989d16d97c2890378cda5c40e03f51b6fd1f891ddd576312d6894b38fabccb6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ce14f2123e4d6ad3faf936f3fd9cf61ceff116ab412ea3d3ae72882ff99ca974","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"a1cede8e6748e155aef1bdf90a71ae242f5427612d24affe290307306bc71d03","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"05d9872cc50e1238d7848e4b104cb044553ea65d797954366c738d28e6edb43d","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"fd91e1cb73d37a7ab61247ac01be1badb4f9983d8017703891ad10256a39e169","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"fdb0d86c3e031fd59846cd4a2e90bf4c5bae858d35fe30e391cb74e913c75192","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"a7b06d79211c165d2b21059399ea0eb6c931f807cb912cea42cfc7d69353b521","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"1ae9343d363e499001f1ff9e3640144e8ea139cf382fc7baad120dd5972ea17f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5a8fbb16f71f151da6f51493d73efe0c5264b938928e6897a147535c3eb24012","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"037285c9471c549967cf75dff469298aad4698e665c448b220cd164b9521b9a1","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"0b708636813f5849008835700dc59381654f3bc883e07413ca3cd6245f82a0ad","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"adadff5d38bf102d2053cac0dc881c44c51d0b903796f06267856047a5a66cf0","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"9aca7b05c5fbb55f6b4d1d8907b50d6fa80d32fd56e7e54f721a87979c93565a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a5d8a692bf0b1f3b67e68e619257e3c5db82cd323593ac682f3f559d92b2b906","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"eba9b79b25f3d80d2d17d6da47f68817146873735204f08b3396b03aca42e3ce","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"fc703ae21330492213ba4ee77972b766583754e771f7ab39cd91d200d7e75063","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"6efd176cb7621f06508b8321546437d30e24c75162f39fc35af5f478bf1e38cd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c298b9ad4538db9dba0bd125b0d60aa1a54c9616bdd0920bff784d06deb393d1","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"59fe41826fc63ac6dbff888db5a3c24fa60b8f93112f6da5f2876dc3d464e36f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5ea97ef5836d8c9aa588bd9bd7bd1f03d5153169340a38f497a4efbe7f744662","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"3ef28ff0a62ece56477c528d5012ecd76dbf1e7f7846b9ea70b57c2f691bb9a5","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"913ff1932db53bfdbb7aee49511c8fcb3c66997990df911df87a4a195a10d0a5","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"fe25adb8da249254579a861a550a3458e6c2d613adf0733a2e3447857a1c7e99","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"f0212fc0b215d18d382f3863c89e089f5015f25c677f6e5a7b1e037097359282","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"47eb7d7a0f102417031a54c56baa72edbe8b70b348a971e4039cdf313c8df47b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"0ae7c7787933dc90942073517468dc0fdcceccde23de7d227eb0567e84f29c12","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"fba138f642677517935aedbd55d917eda4649ae8944d3ec41848516b418403a9","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"1d3714d18a7c22f3cf308a1bae8c5fe59110dfa618d470d3167e85ae22e88c35","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"14276cf645eb4fd57c973ba0ae9350af78877bc8f7ea3fb4e2aabea7bb0d5e91","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9919517988681b1a832d5ab7e37baa8009a01df15c49e70c5f244439f55b1f04","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2b6e8c466dbc71ac4754fdbb8354254a498a8244899f1cf4a1036afb8c2cf1b5","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"2d6c94ae4e71d2d590260cbe71de4d45c0a8f67c6a11fe0b8ec1c96d054930bf","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9bae5aaf39c2deb7dda835d1eee8ffa0d756cce64dcac88bc541056c5084ba95","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"9d307b8f665ac80398048363a9792d0b9b34227d4b8de4c999a62dd85f10e4f1","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"e55d1326dcd7712772db014eb9128a8f41cfad49e97c69dfc011e1f02f657879","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"03acfc6fc23375730f7473cc46eccd82242b9e34c0bc074a3a6ebc28af09befc","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"fc9c12118b1bfb81a294792fbb70dbb55b7d94f066d957a092e27f52e015b602","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"a6bef31719d9abf58d7e06dd73881def8b428d759f6ce4044cc8a6932264a0f2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"fb2ade3e26f0db8cd2ecae5ef93ba9593b9196801d20b53a9cbc8ae632326ded","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"3bf7b63d2294b47b47d4ca02238f7ef82fdc095f99beb4aa1d60b9ddd66a55d7","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"bcb5342212fad016a07c176ad800bf46d760ccd13c4dc11303c48131629dc1a6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"50461efec08e64a33ef6a4758f03bdf906c243596cd0b38cbc714d60c926fe4a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"d6a24fa1f94a597a74a168e64eb60d44cd9efc6f38a541996d300f794ec714a4","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"afaf54582d0f9300ef93e435d74a5f6c00db4f1dcf7859de3a2fbc88ccb6784d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"18915034c31d5d09893fc2c85c1b5902c3053bf770eb97f1008019045dd0a0ce","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"45e04ca3f49b3d0de22214df564ff0ef9dd0dc781e4213cb7ab756ac2b65944e","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"b108fdbcd842dc15d0567291686a2c7f6e4ccf2091700a99f49d0c2bb1e98847","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"1eeb1b71c7622b4a4c2aabd7c98277759c3086bac9403c34c16db4de93cd4453","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"90d9ebaa9430e7fc35782ff827a5ef553dee2f9a4eadb7d492defa65c05a145a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2ff7f0151776054041c4d8389a3e492cef2c7c4880a05440f74900b523a5a2a8","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"7207658c33520364ac5ecb82f056d574df0e7c1008d729bfc28b1ddadf229e4a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"3b0f63d8acf11b669e981a310dd749e3423f035b0546503c7eb421064020a766","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"0e1e48ca9d9e82fb429d1f9036d6cbf773e24ffd8cc585e827b305c49a655562","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2ce058a272f89ad9b63f28fc03d5e438049232055caaddd618113585bc615000","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"c9d64e249604f0badbdb15be6df1f80d5793a790d6bf06040f2cf59393f79476","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f14d701d4748ed6e41b0a5f540b646fb041e3d5bdcd2611509ebb50b861d35ba","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"6ff80d82c8e32e884a6b334785dfaa5f68091f1ac57001e05df4142f04a70705","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"f265edfedd51e375a6fb33dd0561391f9aee4dc9930af16c23032d3323956305","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"9b28f874458af5f56700a3870bd7ee51892fd248f8233ca463bf04c9bb154faa","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"42f7e79069e66fd5992d17ac75d74029d441da43d0d62b2355fe9568d684f645","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ce83ad4f620bf883a218a1abe5cebf41bb869ed0d5b20a8aaed5e00fe8d94357","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"dd1c80626af38c0e9289e325acff24b6c50cf8e03946362b6922752436e65d99","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"fe52aae177cc7db7c72e6c218639f9db713cf08236870fe2d3623cb5641f7083","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"0b2cd59b8b5d199e6bc8f619f4bc19d8bc6299f1ac25c856d840d0fdef2a2763","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"335ec0accf2832d87424b2b1ee1a2538fd876e4cb487659b3c8109cf8dc813dd","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9e7c856cda024c0916ebd77125dcb9db3301d1eeb265b10be37457b8c6eb2a66","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"5702f468a641cc5ae642d324da163001403bbfd6e01e47501c36ef34a75c46ab","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"4add9fa50dbe1b795629d9b08cefa8064b773dbeef475ecdb6f62a8a1be5b302","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"75247f03f290312f6ae59939737c9a911fa4deaa2468b734c7c382c96388afcd","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"fde914f8feae35728cdcf5dba4aa9f449c81120a132e307c5601c45bdff46da9","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"38ffcfb20cabed5ec35818117bb4ae6b71e71bd47612c48901d03380076ebe89","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"ee128f0d999b2a3076a8e50ec41efe98589d7346c798782da4bf6da3a2128d3e","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"061ef6f9f8e7c174fc1d5e00becd6f5939fa953a3bfabe7cfcf6fdf6b2eaf88f","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"90d7dd72fd233f6d58ff32f1d82b1e999ec4b3cc37ed2b76cba61d48f50a64c0","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"56c496a8bea3201382eb4e98b6984ca9b8cc40e39532e5b7313025be9473ebd0","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f31ae08cbe649cec7018e329119f86f27884b55b755a3e0873108e079f5dfd61","length":6} ]; var sSalt = "658aebe0d651100ff845fcd195c87c8855556233"; 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); } }; }