var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"b14ffee58b7bf0066b6973838b3244cdb1aac4a26ac856798c8a49103206f3d4","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"bcd8d06b0b0ab3bf4d0382d71009fb826d1eb616783c696229b31642fd243e05","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"f15ebae9da334b3a53a2aa020ae72023ac24f8038526fe96e30cf108522993b9","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"71e9d3f96c0d467cd265ece6894b5c67ea75ca6005ab99a5fa12db552e882bae","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"4bcb95843e2ac665c2b7c3caafcf517f65e4eb70dd555c74921031ea6a677b36","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d16a0af47393d16bfba05bd10332c99ee5a2f4bceadce8150bb326fe51582e5a","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"94ea0a88607b87dc98bfe7f8374dba2ac7e2fba1b76b5555a3ff8b0522f10ff3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"00acef534ddf7fa8de9b7e8f9c6fd8b2fb8c7ccc7c12cc77e30bafce8002ba93","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bf2916ccdd9e46d80fb441119ec301da52910b4384d6238707f5f5e3133ff2e1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3b70f7549fce7317f68be43599358051dc59c26e78c9cb72b1492ef7a0026e29","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"50fde12e6a4f5dcb7f5bed0503433365ec03c6fcd72ad47affbaeb4e876cf4c9","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"e481197acab7c0d7b3d4ef54cc9f7b9880f8f74d51bdee25437246f89f174d99","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"d5362f66abcc3cae2b7eddb83a2d7d898bfaacdb5665ac66c07995efe36255af","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"530e4329377affed64ef3aa6de6e5bca70cb4f1c43562ec5d5b99ae7de7b11df","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"ac2630a4bfe0fadc0b03c31dcb7c913655d19d487eb5a92270e065aa5075b689","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b87685a99c2e6f9ad9abf614f38a72be2f40afd19063e13ef069f88c1b95b21c","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"10116fa972fddcf01c651a91ff95a97576a9751032f6698b56a854de93171a74","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"e4e6e654cf9501a8bad4558ffc6aad4d15e2a0215247375f494dfa7aad2a7bf5","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"65227ca1eb3011b8fd283a2e1bc25e6e252ff16ef0ba4ba8f2a927af58d0da8c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bf59278bdaeeba4b8db728d2b0a5a457794bd7c909d42e5757cf83bd95436abd","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"1cff42b674a4a8b3f699d144431608e199feb70d820b962aeaefc8d7339df8d6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"c4a42caac21779faa474836d4fc10088b8f2510856f9fec7195fde753a4da797","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f2862c8bd9e0cafecb333a3d8a3010a58298febd5a8534a048a79c3c3ad28d17","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e928c038f68821ec5c1a000cba68ad41d5368e674766ee0acd40b50a4eec1e56","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c4fd63e0bdf5971123d3a30217aca9d91d9a56337e46f5a2648794e3dfc1ec22","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"86cde38c459dfb335b2eed38957f3d76a0090399978918fe79fe286d1f3ce4f5","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"6a5ded7cb36fb348c69bd392c61ef19c9b74a2418a24142ec7a08b10f0c1f45c","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"ee56a6d02e54a97ce587d85aa0c044476768b215a47a7b89f78bbfb538e164db","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"6086f0db70b1b12513a8983b18952f166ff6bc17bfd7e53170e00ed2e87a210b","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"437c62d7a20cb1eea0530b8f83986caeb9add0d5fe31b65d73bfad3b7745d6a9","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f29fe9d2588196535f24ecf66547b921a41df9e589490711f39d6e18d22d00a4","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c432885bf1a9a8a1392a9101d8bb60020465a2e055abeb545f2b3ad6337fb668","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b11ce459c937659be238f4eed4081d00f763163aacf0adcadfe7d6308e3bdf9f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9320acaf8cc88565d8bbf1f7d6e2903403ec14816ac0baf3c3163247e12a1065","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"cd5e15a6d58594fb3d13f81f1d92fcba73df6b5349d412c339ee7819dda5ee82","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"91c3e8b09ce6252ba94ffedafb056d61f6167101c91d71298dd4bd3be1538385","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"e9b96166dbe72f8a66609f359f281263da0db9cc989e1f90ba89675cf8508feb","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"061f643fe48ab7de2215bf304d67864a7edde589b17f67f3c98772d2bc15928a","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"1a7a034413de36f8877a144c70996e4426006f6f76e77a1eac7db45ce14a0c93","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"6d477ced0670dd0fe2606cf401eb76e94572dd4156c2ebae20f928f1e43c2fdc","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"6dd68f95e247c5ac624af78fcd3b18e7357544e6d45cb1ce75c1699fb3273ed9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"8416ab39fceb01dd7ec46c149728ac8b0a8616f35c3968ab694fe868fa47826a","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"45267c3938752a49ce828ef0913a982fe3164aee3889d6f00f31ab54e684b3a0","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ade5d37d75bac880bb7b465aba39a14b6d81058f1c3f0f646b4ba4e7f4fdef4b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"a733a144f4c18b75982d588377632b9427d4304c8dd159d547b29e9157ac43d0","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"19d9383607c6a5a1c7e96dca27f825dfc780f1dc9f4c01e88ff43e5d1ec83471","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"9e3dca16551ab3512fa8ce4b9f3f908ce8230a529c86f5b03b31bdd9fa99f80a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"b4c08518d89b3a936bce3e517bd221ed64113b2eff8ab1bcca44e6861ef28693","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"826eb669aea886388499af993f3f4f270eeaa985ec46cf7e104541cf6c6ead4b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"25457d2033b3f1210bbd4ac84eb4b6d9e110a1615ca83c993ae1c5904bcaa88c","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"a44669e17a1ccacf70d5c30991a3466bd8dc2e121e85d3d1733ee871006ed7da","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8ffcccf399fe9c29e88e49f692ac785e41172bd9edbe0b11d0ca24f4f63b623f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"ce3c1ea2440a77c0e6ae7f5ae08d8ca055b43fd8b2e3173d4b23ad2dc48233ef","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4bb34913e6a0a0d2690942829cb923db852089dad5f35bbdbb55ce308f05bf3a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"24f1aad8aa3d42b88a97166102cc4fcdb3d6aaa9f329274623308293cada2b61","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"19c5827b6e3684d16bfe9ff3d323b294df1edadcbfff0c352bf2910e28db634e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"43b6cd4f6f09295d2888f28b7cbc50df0d0589166e812055039c293a20dcb739","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"bfc10ead4843846618be25fa27c4cb3113e7214de4727f23a31b6caf1b749981","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"dd0341fcfaa99ae56b6397d373319598048e7f8158f8da4523dd9bbb78535f71","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"3eb1fe9dbee844cb485585c4ea652a280370064cd37f8ac16c2631a9b1f7798f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c0fd94650d6b5d3439050cbdacb00c71207fb04315c31f749ab00b60150c507b","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"dc3334454cf73bc3baf9b1fb9ae8c8392a59fef4db9353b22ef4554bda01767c","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"db4e0fc0e542f37475a1e595bba5826b3edbd12db8f58412d0257a26f9af134a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9f342c96bd63665ff249defb3bcb3a92a3b8c3a33ad47a0d4b9542a42dfc6d74","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"957d99d57089fbb2987da45f7dd7895c17af97c7b55789ff74b4c5787bb70754","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"576b617b290840dddea02a48e10c41899bc4d6591b9dbe4a6b2232e399797ae5","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e03da5721a2be234b9a8794f45c260fca55fd3637e1053855f198c9702490495","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c39f45d86fb00b71feb3cb7b31015a7ab55549344306bb257ae64b546c21ceaa","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"dd1abace5fa730642b64d6054779b66d4d3fabb4a68614cd4409a469b328da4c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"87dc10e097a7f757aa789b51ca74d8ac2576dffbfc1409484b7d2b128b56243a","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"2f565aa52d44d11eddaff4addb425bd6402967afba818ea4c08bc1fb0bf7abb8","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"8cab8dd440c0db8b44a3954ef69c8b60793206bdca7f4429358ecad7d35ec1f9","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"af70b176e816c0ba60f93406eaf822ea91e24d0a27302128bd0b623c2d01cc87","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f5ec900583aa886d0a288b38ac21e4e357bd013cf04aadf40af1c817fad25ce7","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b7397ef56b0dafaaebec24ad0e8756a3dc4750a2c1e407b12a0382c0e92aa694","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"24d7f9ebd1641ae79d50828d585610849a428b6aa23b0bd7a56b36101d0f5b77","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"43b8dd3131a9fe56917367d217100fc692a9b9e1634583af144bedf4660564b5","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a4a76786cc10d11d269b7ffc18f9dd0c6d083c88a71f69b6efb7a8e1eb231dc0","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"2c4c86097a1e86cb5713896dfa80dc9aa4a69a8edddfbdb6c99a96b29c511024","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"050c1b77fdbc5936cc041b54ddb34591cc06b932678c8c073e265cb3cbcc5677","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"833e275c0b7f7159b7d4b6815e9865f2b788c64b1ff255029520e46a1e31ea0d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"62cd722b7aaa8411ca51f4c964568c46207e133c46a37220fd2a03c1faa78ae2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"369a3e3ef4a9bb5063a300bb24b36f7a317ed10f2de005a3fbb117890a5d679e","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"66267a064dcd6dd91c3a909de0b89a343046d3705fd5bac34a10692ebe49e4fe","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2cf075234377e7de4fb1ada75c613ae820eefd70ad6aa6b14234c99c3c3ba0e1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"fe04da41298425bde395b2d28b3e1ea6ed8021fd9dd433a7eaf01a56a4ca0cc5","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"2571e4bcd257a70b0bf7c48c7f2f31107cb34469c0642079253ee1d5497bac9e","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8db70ccf1849303a0685543938f199f3a403e44b2da7648def7e881d4f100ae0","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"19f566e3311f396dd979255e8a70017194d3d71919e8fe2682a69b2d80f806b8","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"694baa15448502202eff1307ec40ded75b7cba9d255b95a676d8aeb1ae073457","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"9c7ec52707692fa10cdddf1dbb31026f2e575b22c94f1f6557a5d80cac972cf5","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"ab8c817f31836692700e8c31f8ad7328691bd71985cbab438ad34d6ad6c4effa","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"608f031c48511cab6b8b8304d1bf2f9737695cb4b0e6fec6f30dd18e861118ef","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"398a8237c7cb0d9632c52f515008ef1381ecfaa1c1424d946611238cd8b645b5","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"75db49f6adac7e537d95d91dde3054eca95313d1c6d62a33fd26ff94de5600be","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"a53b4b3da951cb619f82c9738c11bf65e5103605af6acacfe385e2f549b554fe","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"1a68b206e9246ee030749380ab60d286bba73eb3f5cc2edd3748ed15c145ae09","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"cf2bebfa85e0b5e3422c4bde3f73525133bc5027a7ef1706fb22a50c4da19028","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"72eef0129d07dfbf537e6af62216964dda7544fdb75aeea4a916e2f723b85860","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f6107fa0c4579eb6626992f43d8df4c4da7d2fe379c6375ab686cfdc4b4b3f6f","length":6} ]; var sSalt = "8cbdcb10a0d007f2c531819b1357b42559d5388b"; 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); } }; }