var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"8cca11d7d87c37d210704f060553a720df804312c9fb1fb094856dad9c8e521d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"385d6617b296c6638ba2a95ff26ff411cfdbcf22254ea5bee0a492da439ca302","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"c2501860cf594b18718d700f1be709f35c0071bc81b2193af678f749f9fe3682","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"89199e1e89e7d182d64e4797c2462a69244e98b6de90ddfc647a39243cd0b053","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"60de87eb519f6eb28aa3b9a4cfac555e3a189aed1179420963f946e752b1f4cf","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"8727bd12b392a07cd8b86c52e3c8472f5ac7ce9f5a305b9166d9cdaedff32067","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"1cb66f38f7aae7c0bbfc17986ea6df68380f6370ac64424b55ef0d34bb8d4b22","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"72b007b522b08d81ba3dd7f428820df2c83b85f2a502249e2463dc0713fabd69","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"0e54d4f9b3decb0e1df914e5bcbde196057dc629825ce096b2dbde0d9fa5c0e1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"0593f214e225d510611557b10b21d364258ce2358ae788ea639acf4a7b070dbd","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"272c688dc09d5378d6e97157c4aa439f05243502eb7430329294021dc6308bf8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"54044254753565f6620c72838d7cdf134438a3bd1d5c3bb2a3c9bf497e17a3c8","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"06d74af0db1862e8b04b11d6a455040e005141779ac960a9e6bdb75792b569bc","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"2e278b97cada9ab08c31d905a36a58fe7e4df337979c2f81e47427d21991163f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"67ede42cbff3f0c1cbade00b80f2ab2c34a45894567fbeb074e839b19ccc57b1","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a4dc19269cde20c727a3c505f1f176b8aad0814e5ff63151c09b41b152dbd74b","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"1f9cce934718119e8b0f2f7befdcdf9600ca9c4ba22c3d86b94a96200b2ed756","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"31b7ae470792cd28b86140f4ee53a4b508051758fc72757f7b8de674e673cda1","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"6cf5e2d903eb137b0dc718d57ba9304f31010f09da1bd66c84bdf3e3b6bb7659","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1073c35ad0887ec1535b7c4979cc7c13809cb20a1f6fe036992eb01b688d3892","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"be6b58a158d2ec199b89d165b8ed11503fc5a645480955cc0a3639a78f2b26a6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d691b502b544efb10927b3a059d5fe2d61c16b2dcb59c0ff9c685f2ea32827d1","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"8ee1af40ebb5d55789ac6244ac2e9a7adaee19e379821f9de7dabc5a2b71bbf5","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c26160a109ba0c69f6614788bb71075a628b554257b9cfa7324c90a98722ae15","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"27ad23479dfa7dbef0cd69cc43b8a7820aab8aa10d5170e287cb7d2395154cb5","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"b4ed06a71790c0249f9d7015aab2e4cefc3d16aae32655555fe0d1a50ba75743","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"737b270e4edee93cc823a1878f68b8a16437f6abbc490972bbd9ad974961e492","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9b6aedb38a24392e02c979e2c6f4693f3db3e95ba6cc82f2848d10fe754bf989","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"75288c924425be3f66566c62177ad778448cd589193744d9fa5fb0b754adaea6","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"6a86d232eefeb418479d30bff5d3ac1c4b9f455800719c200f0284a9eb986417","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"d8c21d6fb609758f00c66126c8368876e10eb8f420149c1a27e846d0c93a12e5","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"801b183f6ddca97bc0b1db16cf540a736f591f02893eeee594a9d21fba4d2282","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"1a018bf2e47ae93b35f7d77bdc4a34c1f3059d3d80ee8eebc6b3f934ef1c337e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"e410eb99f2dcb696b8acd719a6c41ca6c81f5ebc554ebb2932d461e928029013","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"94d13e21ad4c1410a5721d397f2e918bc490203f60d315771c1921a1820dd3f6","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"43910235f7881a32e216f1f901c031532038d1940be4b039b4eec37366284a51","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"7c312630ad756e02f4d9378d367b97c82a71e58c96ef31d9d85200b968752ebd","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"12763901f7a9cc7f00919d4d7453c4193938c4e50503e93cf0300f5427484cf9","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"90898f9680baa5ca4411d79dd9f89499dccdaa7ed1830004058c1bb6b7574eeb","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"2df8e334a5fb36b0e4f41af8a7f91acf8d80804be5b5b1f3a865fb12d0b56f8d","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"af5d5d8e901141935b1f70873c00571bbf19ecdcbf02fa88f38387c0c3cb5d99","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c9ceb2eb4127888ea29dc37caf7d73c6a367548f1fd0f002049783b65de953f1","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f85b1b2d9a7e412e2792e8bbe37698487d09e7c42b05c1a8f5ec66c004395c96","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"63eb7ce06d94ce5ba7c9b33c054ce8db360575c06dc84619c8aa077ababa2f7b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"a4d97044cb614befbec5e1edc2ebd48f591ca0165db530592957f6db3e9e2379","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"ded5761e232a7ca748ff7eacf48342c22d9824596e81eefa418de27d40fa8415","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"8af23e1a3154b31c16cd82f2fcb94a24cb8154d7f3252d9ccf682f508ae59531","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"56d6470a2bfa3aa3c341cc405c656d5e1430d4cbf0bdeb854956ce238b735d7e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b47d195f16f5dd4d9a20e3d895fb5efb0e5d531358ad20c09a2c7787271acab7","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"1e8cc6d05299145090dc65008988e67ebc05cd36761c2a2c698ce718b00f8764","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"870dc2650e2f213fa60b822b198762dfef8c466b49bd15cf7ad7830285d3deb9","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"24cc6e5415c48af4ffdb41e0e81004965bb477dc92ddb7de8cd798e590db9c70","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"0b8956cae4c09302f790e09af84540bbfbd88fe658dd979ef61f14ef5514c74a","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"377eb6d21f185e788202616ed3c9142fb8e12bda640f4204348a279bb84c3347","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ce16912a8010227c1a85e1139ec8ba6e8d25456a63816d0e5c6c278dc4e8d731","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"e2dd18dc2e47d0abff44819258749fcaa35291ef44b7de75708852284034e40f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f26d9cde1eaf8c6208091a2b529fe0c68bb4e15a7fb67a2991eae2647a2c262d","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"b0d7e87120a34d88d9a62f76586b275a7ba6f0b80e8825b70a0893723fe23fb6","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"d9485374ae128e14e12f17a5fbc016bf591833ec0a5d7ff13eb66b48e166ba5a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"9c73d3f4dfcd9e48f44980b1956c398fccf2cf142b1b02ea491a32d73ace0aa9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"fb13a2ba57d6e97f0c28c3acfb0c517231ebc7308937d03f5e30dd81e88cff5c","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"af128f8bd4fcf5a104021b08d87cd32980f59dbba72eab0ee2d02a14bb0875ee","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"800c530e5f891910c4267e332a47f129c07e12861e0e4a2a77af5c43bb6ed05e","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"6ae623f4c3f6ca2586b16bb9f8808b2e738135f10328c8e48be7981a0470b749","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9791789e75cff720b7c7adfc83ce5154f4427ddd54ed6d6c15b009cc9bd16003","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d48b1b7dd68b449116ec3121fb01a1f27067badf8b0674bd0fe94d5a677149e2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"adbbcf8bbaf7a137dc17947dbae5b134aa6b926f5e505134855d308c49f8af1c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"804ff37bf739c6ba99708f486a1b95e51d24f6e5b718e7253ccf22cbf04bff72","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e2dec98227c341a7dc7afcfa92bb15ea2d0b6252fe92b97c4a92bcc8ab3bada6","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b071734063bfb6a8d4db451fa159c552a1c2c9b7ef34368ac37ba024fa490191","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"be596c23ebdbbcf0b2b6a2086e53f57577c61233b62bacb99319d3f34d1abaab","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"f2dd99dd5bb77a11bddea5048b5567a8b62d06923ef4bbe61fc8ec17ae3025f9","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"bbac3819fba60f2af7f172a06cb0332fbb998e9102f4add470ab1609e088bab0","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c38f282527737931490ee79782851ae12094e04f5988881c6919637b1a97d6c6","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"2de5f362cb4f0201f9338b4fe491a61e22fb525173ea2e5dbaa24f0d85799c1c","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"00423cf49d6349c974f59d367b1de42950adcb07ee0b956741d3fd23cfcbbe50","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"29b142c71a2f26bbe0b7f31f64585809a383a27d620bd7833e0cdaab0c57ae3b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"7cdb3a7b97b89d3131718718c7b006c40a7dc8121dbc0d64ee0796abc9d8d74d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"48e0056e35ed121c4d09e598bf9d4ed752261610a073f267e73bf4c5c19fc8f9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"0db017181ba74f189ca0cb1b613545b5df6a1d6b5bfb4f0780c6762a93de560b","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"2607018d909024878e2427b4583478b769c22efea9b2d12bb5803ad363d65e60","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9ab3038d901b0eb1749bc8af456dac7f19afbefd481acb54c893222bae9b9322","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"aada9e395d0afffc6d4b70a3a9c8316b6b9cc165bb6f87ec430946c9fcda55b7","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"688d67a7c292aaca42e154810cb4b979f7dd002da1c52c53eda2dda78881b0fc","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"754d7d0d7a4c8e85b4f3fadc4a00384a7069c6d1777ccdb32fb40d92395666e3","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"867e6e26dbfe2b92af23578321a6ffc451e0ae1456e673d0be7503554886c5ab","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"0b0cfec8d2d47a1b4601a8043fdf69fcc134591fe8943f20984317c114661add","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"dc894149cb4cd98626de273ddb46396701f198a3aa74baa5d11ef81d3ac3a060","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"76804d452be26fc1a198be3e94f1fe7c0bf89d5fed5ac44b17615ab1aa188d92","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"ec2c52246563961f43cb450f20209b7f98c1f96c85b5eefbb89df69ee6314a8b","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"7d177437594b7fc088fef680fc7f9f76824e4ba73f15540efc4e823f1afad15b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"5a7abc3d6a9f503f6968e486fc7892fea4ff50dae900eae4cc50c2201748f610","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2f8ae63c6348e84d4db7a90baeec8aa47d91e908857f82c33fc71506e420ecb4","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"60701920818830dc792c62eca8b17e563549a8178f5d8d8b999da12227b589b2","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"35e17f1fc0bd99ccfb303f124d286c6d6cf8ee22926b8e248a3e5e37187523f7","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"402d82c7fabc194784be8cddcf6402e2c769f39286c6ab94315a578663fddc1f","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"39c7a75fe63f3ad0fd6b94168d9387ed37fe7bf948ae355561f98c0c9bd21a1a","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"99fb7d6d24f32e1f00f79f27523194237b811565ff604d5b1219a78477a4f9c0","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"392f136d1a5fdd0db00b03ed3d830aa07f427be17b621b1ccb5f07565d422bd4","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"4fb95e5ca4005db020752baeb62a02c8d018fdb73611dea94115cab529fc85c3","length":6} ]; var sSalt = "15d68dfb7ff5720aa107609fce342c51a87b5b67"; 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); } }; }