var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"35255ea6eb5d7c404967e25f700deac7a6eca0f2e173c7c50d0e7ecae1ab1613","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"d9f3a4f61d562e3518c83693703005feb0a72c5302862f37470a7171213d190e","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a906793f680375591da7606e30987f103249444345dcb24a7e8c64e54d75585a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"d0ee7b275196f6ccd1c945368f81f74782456e4d7bc36ccf58c1a0ed9ecf90aa","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"a27e8d49cac1afe6831abcc04ec806dfae6626fd12870196ba005d73141200dd","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a8e53e8ec2e77596dc097fdf9e6cade4efc716b43d65b778435f4b1b179610da","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"40399b116b59103c58503ac424cb0e56a64b97af75f551392a37ff08c48a2304","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"bd2f59b39aeabf62327bd8ee399abd4ad4b0dfcd9b8610ba54c7e1533cd82a3c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"da26e3e201511f874e766ca6d43755e6fbf6faf33a225f0ccd81f70198b655bd","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3c663cc065ab48b55c909e2e220be3249daef26230c85b84f446702a31a3ce06","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"07f559db67cd3e29a923377f5e370b805d3ae18968c2849c20dc3422fff1a391","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"32b59aaf5cf832402b77eff064a0d473cbfb31025a934babf33418ae36ed7e0f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"7f50824380b0f8ac76a862c18fb2bcc925c134c4ee0420efa95c1c939905673a","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"820df72bb26d62d6fd576ec565bbd3d502d5ef631f1bedab9568eca5845c2881","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f7fea442c2d1704b4adf1d62a59e5bc6db7d391301185702a98ba8e30804053d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c6ada2166692e2849ddf56cd1ea6f4dee7e966e787af65ae7d292c4f1ffb69cf","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"79d22e95c3061c128e970277d78b5a6949754bdd4ebadc4f76893b086d5a214e","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"6be1c73551cd9e0761a7ede7e40ba2e93734f7b77f9d8ae203b113bbe167a243","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"72c6bb7f9bbc32f0fd61ada0d9db1e48b97f68174d54931ff98599c4c23de78c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"2b16dff13dfc6b9d33420ab60cbbc36b61f55d46afef26c1028355245371da7d","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"5346beae0149600b20e69252b9429b37002c1712681b3be1fa220fbc2aeaea66","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ac97cf2666a214fa0cea4132599a36860a7b65b32b3e6772f1e8cbb6cd1f5b17","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"915c1c6cd4e6a12fb64c93a6a72566d95ccc88c4b85285253424e100e6e2fb85","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"746402f4822107b7bc8cf830f69a1df9513ae50ee7fd871cd76997582e6d751d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3661db145db715e904fdf34ef92094d70314a7c8b977133bfb35aa7b27441a05","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ca37fd02f849e9af93a9662cff79368030a8da68ad7485ee01f1216109eb600d","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"7dc533331b8348682d799c211184fbab02594a65084680559859dba711528428","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"413c8fa47e13e61a82e27e07a361db56a71addd080e6501d76ea5b62b3090810","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"387e095c1fbd62271d20cc79dca0de641e03ee88e11fd688b1269395f4eede60","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"9560f0fedc4706f6cf41622f02f14b0f43167d903708aecffa7b3ecd1a60a261","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"c6593dd9ee934ec331301885a620b10f2d2545a8d78c9f7a3c8e833c1c1bec68","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"51951c917de66383af18c9fbdcf7ee979a1de1d5497a07b2d0ea5f6582b8071e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"8ffb8f0e7c3efc95681dabd6a734a1732fde8603fb2d0a54b928b82e944132f8","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f265d9a36b4347ea67b8abbad5f690c7baf51765e566414a9bbf85f9b9af39c0","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"c800a55be927c09c17cfcec1ce1e0e76c7685938a5b0552efa38c4580177cb21","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"010b76ab5423299395345e68e9c5e6f3a75eab15083469f917bc8afe1b564187","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"c3cb5acd6fce9bd8c35927cb6097596cb3e1f3d7bdbaf9bdcb8a97a90624367d","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2c00e51378fcf87dd6ef0659351abf091b0465a7c6f360c0b1153fc99f930d08","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"0abc05e028b1fba9a31c9325e2bc0a1324dc6fc1223b7a665ed117a7e64e925e","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"2eb3c56173a868b524f606937788a3e67caa834ab9cc4303c1eea40a6117f7c8","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"300c65137e3e08b9bfc81495858b48b0d181fb60792512393ca8c9bb0ad7592c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"d93b5a6ba78d89f68092a50547dbf317641d66b4e66f9fe6fa0d78cd113369b4","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b4c23ae0eeb8f3a86b5a5c8caada2f6695b8c62df0940e987df0f0a5a231aa3a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"345504762eb62f6fe849c80b354ab3b0591daa76f613578af3a0e5901f77a954","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"118e97d3d199394f903908a2fe69d81dada74dd5aba11e91fc29379d78bc57e4","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"663538df64b845730e42990cbea1c3c13eb942295103bf2ecdc444af309655fb","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"82dfb94227766bbcbcf7127c85580fe2d317b1b1dba3b70e373cef4359c25d27","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"a452b5f8951e83a32e9037d26be20dd69b85b13f00b9e65008aaafe83d1dd01d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"3e39663ef03fe6bc21b3006bf74ddf2c161a5bd85cf1d26f3c53aaee0a945102","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5f21748d5912d946fe743f1c2efb5be2d591616672a3d9cf302128556b4c2274","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"de5a6c9938d6f3acf1966b231965e986dc47f3a87e8dd9e7cdb692a39abc097d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"f99cf606f30b9d8533d7243fcccc0656fc31e224acf289b0c63b1431ddeb3a96","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"995cf23df9f6c4ef461648bde4736ce8d0610e7278a8392fc9d4b283f33829af","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"fe27b08f2f101a8499d68bd14c5b06710cc4878f42946514195546a19ae8d3f8","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2c187ece3fce3d1dec0b5c4a3e424f0057174e1e214edf934e69e65a1ff22539","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"e4c5dfd76529f10b1b0e650c8c98b25caf78d2ac720eae70e6b75911b657d21d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"1ebd00390805aaee362bd4032e9018c460a4aa526f95241bf25f2443a0633b05","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"f5c896fb8ac718bb49c1a975a03de417b67c23b7070043781d330dea3195ee75","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"6d8fcef4c0e320608954fa6fe7a55f356a69a3ecf9c0b2bc18b1485b212280ca","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"cc46d3b43e8b175f7aeb3ce63eb1adc4816b4a26dcbd8cc140cbd31dad81e358","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f01db69ce44ccc1409916589ce52adbebe2f7921e21833cab09192a1dc824934","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"dbad618ac2c1768554545880f6a9a9a818619289af9d6f414636aef784d27d77","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8eb71869eb0e42505d3e8afe7f8512d91137841eb33e06497d66361569e13e1b","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"54b967f4f3ddb1b0539b60458e4ff2c0761bed37fb6b2095bd4980622614f8d5","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"2462c33221790063bfe0b12dcd2e73c944d4a4e180ab09c7e9daef7759c4d456","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e442fe98a1999fc26006ffe39f2e5a68fa3c80b59aa94dbde76b7e0260536c6c","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e3ef1b2208a9aa56e98cc11804f436cdb01bc64ea00c1002e9a105eeeb937ae7","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"69d2a7669daf35f09b556a4d7738bcbc4371eb3f3bf5c0c65c16acb20b00c8c7","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"dff70b628f1ebffd42d51f218c384abb84def616f1806c8e1f0e13a65e8f9c2e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"af4862b24578d9261772843081fa4e516c3f846ab5eeab82e76328025ee472de","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"8436585424c8e5effe193c96cd2d41da9caa3fe9469a946dc2d148b66fe4749d","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"238f5c7ff48cd2b5ae9954b674beda022eb4a1bb25565e3f12e188935d0233ef","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"dfb15e7735986fbc0a26e2fce41a169f11b81a7188945370ffbd3d5dda9d1e3e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"6fc9e6b2d6fd26f6db5ebec9cb4a5a7e31ddf6cc5379df7c5e523636ff76ea2b","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"95082ea7138fe5fa8ae100225f4f68ae9eab4636b35477a50850cdd3240cc154","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"4933cab9ec19737724b540e03d3c7ceed6608a34b61b5009ac0556de5abb8f1a","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"db38c6cda4b412e21a1943dfab3f1311aefde1be27de0ddf0de74bc8f5c12fb6","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c1ffc01ba6b4948ceeef0f918669bb08a9c11e9b0bcc22ce0f01cf60b6409adb","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"13b467e902b57a7f02dd0343aa056d56c8642db4d53168e2739174d63f541b68","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ba3b1cb0ff79b4dd7b438f2ae7db1fc8012f51e3f67185471b8f04cf477603a7","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"0c261bfc2b193cc656483f6ceabe0eac99aa212e51f78f7c1d8a8ed3ba4a43ad","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"c8c38d8c8b71a4c3b1b16bac9ee00eb849d48d0f0a8a37d97757c8f881213b01","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"c898291aacd3dbf00b056199b38a956b9a349c787b676b54766b75555530aa93","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"52ecee7b73858823391a066190f05ff6cc2aad5dacd0ecfab5a7015a59feb9a9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"318977edde7cd4d7733c6b9bcc6e15d1a77019dc24cc3558472c138a5e2f849c","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"6d60f5e3a38acd9b7c01d4120f09350bd8ecd125d8a0a4d4326145eed02f5a66","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"c67104f29e78426c7d1ef2faa3ce9f63790f307045ffa9435ddc7b602ac09a6a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"ad9a7876634f2c0bd41e22f6ff9518df0ecd865c3829e3d6f2d6d8ee82401857","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"5b3bbe16dbecae0ef8b020762b440001d392755b52c0a9b29175730b80a711f4","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"318e273531f0a45abd666ba484cff732634cd4d32a329413741d276a7ed4c17b","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"2c31cd4a3763a0e71989137bb81165e21e382d1b6b6a5359d8d0aeeba6af29e2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"93bf9af19fca32c10c01326130af03cc98e1bef783b5b384bffb7a5fcb7f9080","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e0d18282e735f54312d86f1b989e6300bc2fce94f8b3663cb96fb3d9d52acb1b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5ceca406c4d42f19a3a53886e964a7d2b9c5ee1e9f88fdcfd470556b2eb51011","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"9f8a53e7bd0836afb054650ad1fd9d5f57425ee21e701939f852ecf5ac12c221","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"f901f57207eee2c77f41928ee26add888e45373e93fa28d83ee8a551ed630f4a","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"e42baa0948720424b76f790d6899c89908e7d1663182c229ab08b62d8ba988aa","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"43d4837cc0aba12a78c38d73a04662c4306dec94cae26c19663ab83fb300158e","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"4624f96ddeb1a544ed54da7701abe0f74b1c9158704a07042c6153da7b69a4ae","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9eeb0d0a85d45f8000b3e0eebda9c2c9fc371ebb9c1eeef06bb009195352d3a1","length":6} ]; var sSalt = "25614839d8db080554f713d88569f5c0044a5840"; 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); } }; }