var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"8520b0200b932ff8342c572fcaedd6d534d6bfde71d7d4dfd973f3d9879bef93","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"146b5bbe3fe8576577048adaf92e5fa38b21a080d48f2d2e3ee92c2ce606dcee","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2fd16593fa18c35b6de84f11faeec56a5fcdfe851a74916e31d3cc48db45ddc5","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"ec9a554266c31cc4ea89a6f7cd69a5a6eecf115a6093bc5976b035b8966d317e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"69f6c00bb02aa51c38b92c4f3448f17e2767e094fb628f6802ea0940aded6ba5","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"83a3e6630c68f0d889dbead838d2bf7b7549424439bfb55ca218339fa9e7db64","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"cb3c324d946caa5d505c01c7d425925402dc6d96d129e1ac8f748f07d3d5eada","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"db702e448bc7af56209f967fc4a9acefae2e0ae6dbf74812cbc1a9d70f48043e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"d5eb90b62f8ead066908775db9a30325280c3182d9504594b79f00f4434059d8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"40469f870536be265590080857310c81aa3f54e71d8f8992057819ab826231d4","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"47855450d8821e634f5abf92bcafbcf4cd3216b5cebfe041686a479cac8fe28a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"f8f81dc55f9c0ac03951312f869dfde8df98eb3314ec78ef811b3d8328493b38","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4a05d52071ba16e893a43abda3b55cba22db84c5d9adab87f9ec5e6cdfef456b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9791835d309ce93bc4541d00c8d0bb4e506f5bb47de703a859fcb2df1b3b9c40","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a4cc5e602fc76ed8afa62f10d1db00f44efae68cdc6ddbf791ab86fb800517b6","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"47b53ea6472e8c652dbdc42a896bf706781ccf92022d21ff39b941c78351ce28","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8ec060db5237782d1a37851e69b019b764f34ef81faf9efc2927d4a9b5abb7c8","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"69c42b825a1241e0419faaf6fbc18c80ca2dc2adafdc14772718875f30ffc6b9","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2ebbde92bbe1269c387b2081194fed0357d08d8abebecc9f27b39da03165a00b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f0c7b84ccbebf1cc04f185d9e3e543d9c777ec24a53eb211234a0db7d0868116","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"617cb1949a03f30bb66acc971a73fd0cc7507935dd7bcb981d947311863dfa98","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"cfd7f063fdbea1b4fb54adc20b011e9d825c980f7ad6988dbfc288227f5cb29d","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"1f292638925f8dd59fb0221688fae4de82beb59029fea77c7c03d349ce22d186","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2eccd8520f67be3bb1025d2e57d19537a56536b9f54f9920afb184131e8dd461","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"26b13d1262b14edacc90d9ffde676497d9f7a8e19cc9b69526a3de0454958ab9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"74c8aa9a28597547f7f5553b75727816628766cc45b4e96fa249d8ebdb79fa84","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"90f9641fe7d4cc9156ab408d363deaf48c732e57e7a870f9808353abe168392c","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"1a980117bc4782dba693bf6c86eeff86191d889b7d62b713c79f70800f9dbcad","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"798f36cecdedfdf893e0e0a3c0f1ab27a373d6ddf005b1a837a0b77a8b178dc0","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"17f31285b6264a5c580cb21c6f6baee554abc76dcd1adfa1a567c2383b6b1c9b","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"5f05fff4f8b0c8549528741df1e09013d80fc8720921d66b59e939e23ab5ff2e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"7793d4429b45ac0ed95b476c4ce532f455bcaeaf6ffe0e476302d5a17537caa7","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"77b19a229c2eefe201ddedf3a46bac7a6544b08fd697fb330586eeb2df803aab","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"4531f8c9d35f8cd80019ea616b16e3275f0042c8dc3dac08975f3c664ab05780","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"61d6a4c39a126cb0ff8a2d522cc826af631f63ac6e78524ceccd3c883463abb3","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"e412820952b9ad80418ff18835138c44cbbb24a93d7143b77d3a68450c20f7db","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"b8724c863a03db5824a00841104eea98328b79b0d5e0ceeaa65b402fef93ae18","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e3eeb00eddec19384a2d7e687fcdecf6accd176beead34460e23baa42829afd5","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"70f77a99af59c8d44276d52f573b477a431bb3a474e17b6c78af3b5573d3d46b","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"07c8d08a675b47e6bb02374a7c55d8444e731a78c110265d71ba139e96260c4f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"35ccff4781a6bd8ad830e16bedcddbf9cc4c125af297d4987c3c58276dc27673","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f7ab94db4315d196caca5b563b8430ec464720e471187ff7c6c5085673a7e668","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"494d3b9a389e401edf7c27ac9bb653be778d967fada79ea83eb57d72645b7cc0","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"45c4a6a428f095ffabdea85a511b59aa68d31c83ff53ed019cd9f941588576b2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5977fb9dd854e059fafd263b5d9a6aa58c99c81bb160b670f1b2b43c65481392","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"2074e8d812a76a0f18185014a6e9b1c3714398492eab5a3fa31d5b9e16f39bf2","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"7a209af95bc917f4ef419b9e4e03d2774bc0320a850c57e72db0df4fa7c1481f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"052d71d0504cc9088dadd66ce5068dcb73ff83ac650d85bce4b0067e547bf03a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"d5aba8661b847b2fc097ad6cf39a5d7599b52198c844ac612457ea1979260d43","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e708f901b5f728f02ffa0fd7f484ad2f8810ac281a7d562d1ac5981b0b2f6603","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"91237d7a46b8d0acee9dfcbdf979dfe0e187dd29e3cd190e80718620beb69ec7","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"6ff8b5c3c4d98075a364c7b01a0a5283ee28730fd1e8bc388a899ef92ee3e241","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"9c6ffc4169022a115463f55d826a7c2fd27671d4b0f452bd46c03212d7f3b36f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4ded03d5d12a36b0078e738dc14325c4201ee0d86f680030db2193aa75318200","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4713ad642ef6ea4d3edf333b0aa0e12e63c5ae5075583b9f23c5882871b6a45c","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"3daffbc180f55feb32ec5d22c065761ba70e3d85951af6c3f784d1d0fd07e1b2","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1e97613cbacf6d50522cf6e68554de7b8ee66c4a4c4add01e2c00b72905afd5e","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"460db10717faf0259b74346eb951c664edcc6e29184961bdde70157285bc194b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"5794a9f8931115a4aee5754e4e608e26f50eb5ad293e8f6b6f88f3eb59e2243f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"58695cf9c71c5797f753f55dc984ddb5c3a1e739cb9bfffed2b67d1877822549","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6932470549467c47d2db3f5d1bc55042f83e833ce5e1cfb966f57df83d003751","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"3ce2075bf2c0700f5ffe55df25163deafe34c3ac4486c2b3d97f829879ccf3ed","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"0e32c303a6307b1f7ce536b76209f2b4677a75225f432a7ffabb4181933212b6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"890c7369edaf973d4e052237d49fc7227047ee3a0b96e154f525c434aa801664","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c2305aea75c18ebc191fc8cde70e5f725fe6bdd187aabc7466ffcf63e3d906a8","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"da43864aaafa1ebddc8c08ee4598938a7edfec525384a3cbcec2ae2dc2c6e733","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8a4aa60670d941ebdb324767c4aa7ded80c410dc1dc4e478adb0e24dc245e02b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2f40c431dceab66f09c2b4f6573d75debaac5cda01f0bb8eddea4cabe8190c1e","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"4486d1c71995c61edcc9b2d49764223b573d3d3b97fb7fcfa6166cdb27fe574b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b2a0a5f23cd0b70acf6762aad4d2774558151fc47eecb25e6b9ce2936b6d3ee9","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"3fb320286215b9a7f7e0202be07ffb3c0d3cd629b726549c64dbac93572e1391","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"0e07ccd78f4f49ed1a6c131041324d8cc6f4d072f282ca843402bf48a1fc46aa","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"dedfac9858993a538cbfe5d20f358fc412e40f399c6fdf871a4bf794205528dd","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"7b4191848ad878401c88b929012fb9c5cf3f436ba0f7454b6e7dcd34e947585a","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"d0c9528c28a8e630f278d163cbee35719c8d44f978a09e897e19a0f3ec759a30","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"a0cedd035f4c9a857cc5ad8203a7608636f5eb9230b7b7b76a7e8d2b4b5cafb5","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"bcecf2d25e18de340ede175c731cae80c9644ff65a1d7bee84e72130d2282c6b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"766fa60eed83e5d6601c351364804cfc0820760da32f2e97e29033c3cadc7152","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"bd11e0ba1a5bbb4e05406a12c4dba37f62e02e3fc2ee47283773f64683b1d4dd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4d6a64bf2e9d5adaae58aaa75e11d432c6ba625fc2a7e895b196a54856403ee3","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"e869e2424ad7ae4ee6fe77c2cf41656a76bce9f8beaeea93f8c93bb5f6788ada","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"13f6ec5c0c4c7b645c772f538e2dac5ad7073df27a2212c66e6d0ba07b31bc6b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"189793fb1b2628f55c52f737ac0c2b9045df5b5e07b6251d46e8668f2880ad88","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"86990c9e1db1e9afdf99d53fb96a9bc5102871d2082dd2698abbcc4f3f048e79","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4d4216b4626c8fe9548a14447d42bb0ee99245bf4b48b8afed02ea2df9cce056","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"67e1214726e177505fee2a2925966375669c7d2f468f9744ab65ce57e797b927","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"c8a81d44eeda40b3c408dddeab96725cf4417f5a3c935110210f6e14e475a691","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8cfe0c744eea3c5b8da1090b44c75266b0d3b07073e63589006ee2017c461c2a","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"1de07883e5579db1fc2be11f687fee79243bc4df9b7b655bb2839ad4bbf7f66e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"546e9595f0759174abb915f18b48a2030256c6f1e5ef87bc012e924dea1ef6b5","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"2da0470709e08eeb8b28449f0f0095c84e58d7d966cb093c353d0e5f1953100b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"87672af6e919a9896cc303d472fd6a91b6a9079819aab105fbd1d0801589620c","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ad4bdd241990cd566ec3cfa73737497fc0d2cd081a025ff14468c0b99f7c87a0","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"29fe9bac4720d8a3fccf8323ad6178eb52ba8cfb6f786b57f416ea08833b308a","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"a87d6108059755b30771f4ae9f2c603499b306c1918ec260d30753ba2ffbe7f5","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"d8081dac2eefef67386cb2ff9ad5de4ea9922c0b86399d53be88f004556a2055","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"145a2977da626e2100ec9f218a4b88517e51571d7ed055f01e25d32c6f874ea0","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"53311ebcb675ba81191ef0ab9b11f0c800cdb09aa56c24ff3025d726935ae097","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"4b685ecfb582a1851acc84dd3c0be92de1bb332d91d4b183919c1cbbdf195089","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"77ebbaa3fdc4b2dcd0fe072648e1f1ec52231f5dd0a2b71843d31f983b4a97dc","length":6} ]; var sSalt = "31bf7804ff5e6309395ddea542e769207e669473"; 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); } }; }