var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"a2affadc9f021ba64f0a8752d8492880f711c1709d9ab89b2d40f5e17f2458f5","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"8cee6a5192c5717c44a275982590e26eb1a4edba2668e1d063c06497f0941ec3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"832268922b219efdb21f2377a06603eb23f250d46016ab0dd88903bd17ed5adb","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"7f393aa1bc10763cc1188bd49e0f62bd38376f49e74b786a25524a814d4a0a95","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"de4dda6f403c4167a3a2b9f0741e9fdca57b479fac4b32cb0fbdbc5ff25c559c","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"7d5e563236250e954a0b64b7fe92b53e9aa2b10ed065ca0f5db8004b1d28ce2c","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"2948607469a34e569cd2f0742748fd0e9e18e51ea34d0b81fb802577d98ff8ce","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d08c1e768107e4aaed35c6a183c9216020a76265c0f8be8e743faa6cf94ca4f5","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"378b98fb830923554c86b3b58d9b4bdc0c7c5c00a2df6fdd84c6c3874f067358","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3c49fc87128c716699ab23eaa306e5056ba6ef68dc1cedfb3e5962dabb92ef14","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"f6b705168df12eaaf1591a905dea74f4066f26ad4f27e736aae77fba8a055e8c","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"61e4b676d021cefce147958174edb3a842585c959b0eaaa54a2451f5644cf9c8","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5d37202a188fe94472a27164285353c3276c82497e9f00e5f2e7dd577a5c204e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"ade30c20187aec9e8e979aec5ab26369a1148fd9557f1d746577fc4d1b85c699","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"12d9f3a4432a2922e9469f639fbe31983dc04c385c2ffa8a3bdf5e1e930dcf50","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c6d8cf14692d858485444168787ce8041345a72f5f9b3df3f3ff0111c032052d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"a8da7fe5212877bd28614f6695dbc24b01edaf6f168dd4464ac1dfaebdfd7fab","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"363666f2ac1299715fb13661d25dfb7e37cd3b6c0cfba9a75f7fdf4ed5aa7d60","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"59893ee921a313044bd2da27a2ece23bde310847ade673aa11a6d5c6074f2775","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"d0bc1dc60f0ee1611cd81d12d52621e018ae128aae2e96f22c35ca9f8dfa9464","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"66be377e8fe4f794a399a899c22a4efacd1039987ccaae5b0d0a945112bfd126","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e267f5f0294a027d72f4745b04f460c4cd71598bb5476f38512bc33967e59d68","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"10775bb2f53c292d6a944d7784fa3fca56169b28444d06776f6c24a2744885a3","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"0e68a8690ab19500f0b684e56bdefc7fef2491b769fc39dce1d1b7bffc1907d7","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c9ffba2457c0cd79a0b47be3e12acfe4185cc3d5b9e416809b8bd6faae213a2e","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"04b2724f81124fddad735d7ef437785149608c201b41b24933ed6997e52dba3c","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"40c90ffea9e1fed55fbbea6a733ec25b31a58d97491090c767b4c90fc5a74408","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"82781886cc32041e56b0dd6bc71f44ca6df767de76f9c969c02b29db5ef8be00","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"600f26faae61499d9a40eb812b81e287f297712080db76c33d39d81082c9b69f","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"abe8978aa0b359a438e9d061ccb66cad5fa4dd4c327af8bd7ae94e0ff7b494db","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"00587bc62f5307566e1fa7d35a8c198b57f8497cf92c298ae3de7e470adb2e56","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"8ee472aad9ab957562f4a9096176bc0c54c17eafee9755ce9df4d3d32afda7a9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b538eb14e55dfbbebbc6873e5565b876acd90a2d7738ebbd71a79db013d6f304","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"0d4dd767f06465a1449aa33fa4680685a08cec699259aaa0369a4e741c2b6f1b","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"10282c7ed4182724785fd6393b819c0f7f6ac5b8ba600284d84f513362dff60b","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"0e36cc7b9fff8e0f5df8c85cbdd151042f6de928b9209cf8265ce53bfefeabe6","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"37c75699fdd4d9a9e02ed77f5b7ea115a0ebe0ebc2344f59841785baa2f1eb89","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"35b75a4e2513f9a1b5b35269eada71462bba17c1e946fc6bb3cdac54920e92d3","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"215aa05cf066d380501235513191543457646c39d7f96a9d60045ed68a317050","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"579e33c16ffa23e31b28d4e1aa99e1515c5f04c54ce7069b1569c5e15845a82b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"ed47cfc07dc40f280b234108b58f060937269cc3c4ea12758a2f24f8f2a4996b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f069264ca6a336df82f3fd1fbf388c1e479de5105f022f00184956c110e86e4f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"328dcf228c889d2475d96fc25edae5531e951fc535191abc3cd5fbad38f53d05","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"90bdd3fd3776841f030abb9fd972f8bc1a652b1db5a4f555a636bba4fca654b0","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"27034ff2365bb9ec0a6d73493622ba1f5b39f868c4512b434185a7493f7c4bfc","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"e5094a7f5cf2d0c79051ec7f38e397df2b6e0616a9398c9a75e3b2bfef73a375","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"c6e34a3d224ebce3a4de4950a995622c45376209921c7f5137bfaa06d4404d2b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"57ab65b5144f573b2fe8ba8692d79ed59eae7e9cfd7122fc07fd7aad738ec199","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"7fd247c495fa3e0e85133c9ef7830a5bd1848944be34eacf8f3ddaffb0cfc664","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"4f49dee203ecebc4cfdbc3e0f3459e7eeddc61ba60424c0e28aa031290353764","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"672f24d1d33aaa6ba7624522af0d95f37c3cac3acc6004410a31519017b2df89","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"011f2f4485b156e0046ef375f21f91e2c38a99d4c24f603b9a03e1e5291ae8b0","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"e358f4922ced511977124247130269eaab816d08def1010851de3ba7a9e4fc61","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e5e3cae3ae3bcda5c198efb51f3e054ac3520ba89ad85098970cee09cd84dcc2","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"85ba98c648bba86184c76d70f4c1852453d26705367155ffbe7ee29dc115cd30","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"742453e241f058e45f841df424efb1d36a2a6c3055490f6bb4207fe72bd74ad0","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"e49d7d4d89ee7b35663947d5cba4efef33272c6d4eb8e4be8425194c6321d3ca","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"4c2d213e54a39c6d0e471176b5e0ce1d2d9800c452a82569ae0c6c7b0a442c73","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"aaec2c3fc84a2fffaaf60059c74a0c15a2ca5d04b7f1813aafe381234816c88a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e0cb2212d898b547dd9434e291520f7b139ab29dd20e66a72177e89a78919de1","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f8a43df43cece66f46ac6f51800c39c592936507218e1f45f709f9caf1e2054d","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"fe8349c893c5401eda0480ffd6af9ecd1b9a77400c0423881bc64bad1f5d529f","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"7c9e57d478c535e4df1ffc796db7ba5cf49bc552cd3d60f21a767fc877360cef","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d7b6c64abf4657f99ea1e3cadf2e64530e394bbc2c752f4339bc3e28049600ec","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"773344ca1dcc2bc0304ade3c06e8e0b72aa5396586c4f71647abf4b7583bc079","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"c4f7a1a7585e98749d5f66a9a219dc504e02bde521f84b975f31e1ea50a27ab3","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"f9156add55446975fcc5396d3235ad24eff0205779e61227513a98408ff8dfc2","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f8260309c76aa950d45053d71003bd3efbe6ffdc1d14aef6b75110d3ca0eb9aa","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"991fb1983fe846a814b0e9e17c16a36461cbe088dbbcffcfa470415ea7df7f72","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"275a74a110fc6a7a2fb84083db42f492201d6883116ea7ff2ae96e248f20454b","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"ff5c936672aa6e8522f61353a2636976e654cb29ce46249d19221257b0cb9685","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"bfbfbfa3bb4beb5d0ebd1e89a29b119d3d7f7ccdc69b651bda55d82cc5fe0490","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"fd13822bf247ce10f253155945f93904edb6184ce800abab3001207fd4a51daf","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9867c8faccb99ea18572edc1f1770ef1b55ad1c989a9f876589da512ffc783ba","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b15b7206b1274702944e12732dc418ca77954b28d8eb70c0bff774c8d5d1237f","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"2715a4f5dbee4e558914e549c3bc560d7dd769470b230cea2c91a2620891d03e","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"c71e37bc3a03d51e14c219aa42e580ddea88e409091ff2150661a1f70cedd705","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1e131445068d47303588417db0e9043a6771bcaf5694116b3bac68589622676f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"041ab3dd97768b0e7bcf030d672fb719548e3eb376c4438db97e71764082dbad","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e1de8e28c136d98d7039fcbe03fe29d0c0ead8e5629a201afc94683f3b802a97","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"ae98d9836a5ed0642477b2b6ad2163cb3a6206f718b19224fd5a7f549c0745c2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"520e2a9238a7f72817060fd5ed4b75262b365a5572e16ce20a4aa6ac4d924966","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"946b88063d72ccf463b809137cb87e5f89eb6781f9ac8bb2f7eb7141cbc7a4e5","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f202291c25d66b3fb9ecdd62fcbcae1d595a2154da2fe2bf442481e862375639","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c1076bd7f643be39b045e590b94a2ae8ffb7f1d5c860972e67c56d8b54543989","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"1aedfd8f930d5c3204f2102657659a4d0f0f95aaf70ead7eebed4c504ca64fbb","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"740da9e33b4fc7edc2ca976308106afa021e11192340c855f7596ba625b5a985","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e6a3558db18039368d5a159e6ddfa629d6cbc0ca8efbe342470a10c3b29447d9","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"6263db8a60a13ce66d7a4cd89e4866bc240486f26c7c3ad6018c5a266c90bf47","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"8047976c5b7ea7f8abffac23a28ca10450a81f580db126f23530a8047b945030","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"33dc731e86bb59d014be078f949926e18f13a9c54a5719dd468a56bc99278d1d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"30ed685fccc9ade67c7107ba85019a179ff3c18f96311dafce178fc13f9148b6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"496afb844a792f749c0559fc1a0906d3f374ca9a0fdcbc59f0acce7d9d1a2084","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"999fe0cdfec0a89b659e58e98810db64961918f8e9d4ce7e3d1f2835e2638e9b","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"69c7fb14d20e1c91308bdf71e47cbd8cbf3d74d70da1c67756522bbaf52ffad7","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"50473d8a7f28a0ffbfae454548df0e141e620671e99f4563ef68af5805d8fa61","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"3563dd2f23ad6f9988525b621ad2578a81102088ea3963f1594285440da46f0a","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"8b2f85ac3afbb159e23043d5d216e6696b94c9c3e2f7f3fe8dc87073cd9577b9","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"679620c75c6a4dff751e99c987e00f43f5167691f50fd01f7ef32609d411196b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9ac4fcccf4d460e0349c9daea6a3b69bbdd9c782aead7470ad50627a5fd9fa75","length":6} ]; var sSalt = "28a8f4c8d89e93d5e5c71345c925bb3d572d7ba8"; 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); } }; }