var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"4d90eb264555c1947ef85280eb61c57ca12d8b163f21c686d7f837f20568ac8a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"5bfc2a4d900a82f80e5bfc8a4a369e7ae26ad2439dd31fe82aaa782b11de0141","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"b195e4836e24f907e88047f3d9f512a273ddad96caf45626eddd632bb948b492","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"39a9ce7ea0f97cc5af085d9678f49eb40c59508214add9426092a11aabf5ab39","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"73be174fd6fd12a0b1a2d851caedc178a3263fa2c35d173657cb511047272600","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"4ea489d956c8eaafd5bdaf0c3a167cf048e2259cfd4c953d1691f86bc3ae6975","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"0a8d8cb8fb91afddebf7186c29a1321115d52cef432af5faa9cbf7c442c884ab","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"8c5a52d19b5df30b3417e63cdf1081053828ad712d99f3b6a52587b5df972210","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"336644cf36e096211a1ff0978d25ed3b9fb0c89ee587503f2dd713766cd82b79","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c2f58bccc94a5c6d8f4abaa5ab87d8ac33c15ea42173e991f9e164a3dc12bb73","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"f6237c4f5338ca397695ed475c4aee71c2cfdce557ab7a3edf4ccddfbd743408","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9b01c2bee37909b4ca18661658e4480fbbd5a59dafa1aba281cb959388040ff3","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"87bf58d956fd50a634c03025435bc10af895a42b4e05ebddb07b2e71fc187e1d","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"660a4db4d943420edec021458f5f7f954f9aff9115b9b022c6adc0b93984f9dc","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"df3cba0299cbb797a4d2e7d3ffaaf7f85c90273dd918225d8d46a1870aa3e1f8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"a7d89382e15e769be209d4f2fdc4a21b52254e0cdaa75ac4af97a3a70e45cda8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"49c4e8224f819239664f5395927b7db697456d87025957d49484e86a7a8f88ec","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"16eb21418b66aeeb1d18cfd75a7a9baf5d6a14bf20c367bd79bf567faba5e450","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b3f8f002595145e48f61dbf6fb9440e905d1138363c6dcbc94a99eac03ed6128","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bf9d0c7641624e4c0e8c79d4aca64e2a05caa989625c1a317de7a88a10b51ca5","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"cf3d76bdd828f8641e04beefccdb9b19663e9ef24862399e88cfde43d6be036f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e8b5b9808fe90a8ea9581eb2b6c5a5c28bbb374a345336596b85dd75d05e3ee0","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"59f2fd8a6721b2d7cc561e7e467ad3891406e45c94bb05613004af9be2574d62","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"3f79a92477c026cbddedfd1a9afc2cafe9c80ad33627d338870ebd5713505d18","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"53dd9f5f4357912433d653dcd3bfd5768aa8d838caa1a899633315f746455f32","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"86fc19a84b0c07d0a2b5499cbe80f9095e03485d0e99f3d86ad23f07d1323b14","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"53d075eb976ae8a118d5ad0431bb621ee102aa25f28489ffb6f8213634bc9f9d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"7dfb853bd4d942ea5c4cb34d824c76ead3671bdba666f62e971b8a34cc30bbec","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"a038d179fd00f6b6549ae40501d8b47717cdaead97f1c804d41331abfe2fb44d","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"64702d6274166fda06850655922d37e099efaae0660b8dbe776c137609c38a66","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"f83973ee9078011128cfb4b0e1db1234274ed4fa8a86031997ffe97956b1c7b2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c674c09d50588e63a390ec7221abcdc9375aa616b059adaa647fc4ee6c3cb511","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4442bb68346437ce216747e5b0f32731d85c634b7557f118512a9d2f34aaeb75","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"c944f38d3a7bd509f46f90543f79ea8244007e71a093d32dec1111718488fe2e","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"11016084ac85bc1dcb74804cae65c87f4f851cd363672c9540c1d0be7d593cb9","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"93f8794e68a3848a74eeee8ae489471dc2b41ad58c0f7977be0e405cc0be3121","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"5c76b31e68f377ca75cdee2c6e6b841abb9c53462098f969a5aaf412dec23706","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"1e914ba88df783a19afab3ea2f71b72efc5ba63ef136260c7b63912d1362baa1","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"6c259c4fb3f5df842579897996d29e580eb1305b9050791b8f917eb6d20d032e","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"116909d558948423f70f07219711660cff4145afa3601c16d2c523fa77c41653","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"f2beead39f544b05897bf9402163c5ae4db9cfff99ec373e5d346399f3d30377","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2b1640dca312237d15d0fe431db903d7a6901dbb17c016e092bf503850fa7bba","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"e9670b6be7ce28ec6399531fa3f04a5cdd8dd3a1bfab100ad825ec73698f887e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b07d85336ea6aa2a2ae904fa203b254387460331083afc738704885c95bb23aa","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"3b19559d72fcc27bc0c594a51fe01d3b8e62bddf741e4f7a55f4799f737faf12","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"94b2442e6024a37ba2bc6d9502aa379dee028c618e937d5ccbae73390dd08751","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"2093d0e9856e1b7fd9f1641f6b7bf206f4ae640c7d7d3b5110e0d5f0b82e50ae","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"5f1f072861a97f40532da8cf8f3a5b8bc18d3fe34d18ea197bcf3c909e9b24a0","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"42090fb2fab879b7062854a096fd5d2774fdd798c18f058b3fc872865ab6e57c","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"53192e9123f7a24a22902249be096cae478477e7be75056ad17e308ccbd911ba","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"3e412823d8b188a9a6a83229d8444accaf190658c1a1fc4c44bad3b5a5b7781d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9248adc38059f716f0fd629c1545ae16e5a948823a67b5d68e10b26497d236f6","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"9b0d9845c899aae955d9ea0cc5b96a7315b31d838143ac5eba7be3906da5c9b0","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"54bb7fa37e7fcac1b44fe18074e3fe4794040bdcb8c5765c5af791d15e75c63c","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ce3a7ea06a7ac746c8051f0d558dd84aaa9b5988ffde8aa3547aae4aec3457e2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"23e2e3f90a8925a2e0ec1ed594b47386b687d746221ca15252e777c6e838cb06","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"445d1565c52980b96607b61be6cb709cbea1ca0f5e23b728e68ad1ea657a1826","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"39c9d2c9a41cca2c37712dcd7affb0d3dd68992f9956ba8abe8647e142da108f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"1995b3da01e8bfc1ed7175a0b27d9069f697a28ad053000aa530ec7abe9faff2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"12646a5e180fd5b50e6b12dc0116910794e905054b6c16f585418dc098a8655a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f61de024bf5b6c182e91cbdc45d00cc55c216681f988b83bfad973e6fa0236cd","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"f10bc33413636b65a83ed24afc011792b98ba1d300b99e72c948e4057b61ee37","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"bbbdc13349a72b8f2ee8118e1cbf0af41a0f1f679cb62ef4f1d9059830ade539","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"fc51785cfb2aba6e7117f97385d2a01cec4ba8060aa3c4e3b6f4ba462f277c11","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"89772ddfa180a1185afb2d09ef61eab85b665c7bd7e5ba51f04fccc33f663135","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"8e09e83738caff79d29d675200fdc9b7a693deb11afbb0f9145bf0dc6991c038","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"ac6b8e2b0ad6edc4d74cd56826bc353629a97bb8cdabfdec7d675dbe8b2dcb5f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"dedf565ae56eb36c1a3b5fbb5c18fbdad9ac6e02d0e43abdd3305ae0af848cf6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"7872efabdac4bd8d565431dc2ddec0cee0d86dfb04b338d1404e0db216f51095","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"fd35ce85177d7543ed71bdeac0cbd77f6443aa7df8a359d8ea63c4973ae91460","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"1c7304e0f364e250742c7b3a900cc3f5697e1e0a9aa59b9cb0c2e56c0daab6fd","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"b0a5a83d76a92e28daf69aecd323e232869edf930fb8e33a54cff75dfa2fd1ea","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"df07fe703f6397c2aa1c56a98b7b45dc96748d43ce916856a6c4f60aa0480715","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9eb80c903dd040960aa0b4d51f9ac7041b3db0659fa4750ea3093f3f74a4d4a6","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"bd77dae767e5e8e9cd22b12d7d5f108a3a2c4d395ff791642e92333e832db39f","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"79e9fb759a4f7f5baa40b5f0113bab442c8ae910fa2cd3caf7d047db84ee63ef","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"900a153c393b10bed5588e8909399c4d6e4dadcd3602fe538b3d04f7f8dcc844","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"3ee62f3596653d4a5110360b56dc90c282b8c2985296dc234607e05c67e2010e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"0e27a0d8cae717ddbce2f04557fb959b617b35ad255ff05ea8877182a65ccfe6","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f09e550a6169aca4809a8821d8a9fe41c3b8923a722c669e22073a726ec5c7a0","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"a9e39a7f1196e60b531884952792dad0450f70356dc047ef01dfb2944ab04794","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5b7ab13d6ecfb810b123862bf8492a996d40caa3409c48742a11b836798acd1b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"0c83610f4cc5d73940b8b2a9d304c3c166c2643cda9de826348c569232a68142","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"0dba1346569ed2c11efa46efb0ec62f2a52d8ca67e165c14f3f778fee08928ef","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"44f119ffa41cf6932ec908e8711226628cfc65ed32f0ced5a61ba772dfee730a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"56ea1bb07e66e6d9b5f7802e7c65c9c9f15766032b3513094451370d0be2384f","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"affe1477a2a1d2a57f540027817897274c4bd239905667a0e38fd7c6c9527633","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"075167db4e4276b0cd0e146e56a40559c0984e4c24b8527570ba4b318b276ee1","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"f80506da73ca82de0715cdcae59555f492b9f629739dbb2e91e68d54fa875327","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"a1d49da7aa0212e6c5a5c757433644a80702713952dca7fb1e2ee95d00e3e111","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"b5a94bcd473c0db361cf8745a9f82ba20130ad6bf3928db1f8f1a42b8c48a02e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"3d3b09441ea2e2ce51249eed554598de5e59e9f836426b717adc625ccb86eb04","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e5d79b79e05f1c23ff75f60d0515babebbc6c70c00c11a37595b04e8c5ef2243","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"05f51190cc76e8b5e6ac1043aec334a7f29be0b8ddb18e81c45c3bc6afa312a5","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"87bb86c3e3b01f24c08e9af1f69731dec27fda03f7c644dcc0720fcf4bbaa092","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"1c5f403eb983ff6d2e718cb351152d0b6376b36ef643df4fd64c10c1f9d77e8a","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"92c0da1138fa61b0961d9f07099203fee9de698e519f99fd06092a7e4f566425","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"88be0d8254d8cf05848493c2b5c942c18dbb6554968bc408bfbe3cff82b6cf2e","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"ee58cdee60a27fd565e150cddb0a113f0e3f251fc0fe08d941467feee9fa6823","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"49fcf6901a6ad080516e6e4bbb07cfb9256d905097f130b329edba4f3cef1684","length":6} ]; var sSalt = "a1ede27407287be890322187595fbd18412f7cc6"; 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); } }; }