var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"b981296083f22b6f1098ffde17b3bad980b839f664a7faf30041a9bb521c8b0e","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9641603fee8c5b3598a7621f10f33dc09ac39ef359bbc32f7a7ce04bd1f42a26","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ed003523935872fc6d46b541c67fdd5357ef8e86223005e6d10abbc37bde29ff","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"29fb659cbff843fe1f2f7e2bb5b2a19e97a7dd281282ea1c8ce8d086f1c872b1","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"ead3265249518c1f1bb4bac33b842429100e41ff2f03d96365cf05a5e80f4097","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"deb19ac2cae63d56cf487d7b8c554c2d3bf7d20115c8bfaaf701b0f5f6c5229d","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"16a58abb776aa02ce6051522533922bf46207dd98d0ecf745fea2f9340ec1c03","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9e52a6f5bd25d761b8ae78929c8536f19fa62a4bd1b35b962db384b931170c9a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"28cfb4619f82114cdedefad6ba7838b15b70fccb951b695cc5deb25110df52b3","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"dcb255b8036adedeb92f4dd0ab75897a35e181270dabf5943c1d0a3e85bb34df","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"fd9e404f349f1b99a20c3fb6e6b23a09b91aaaaa40c7ab1044f88b03a56a1f5e","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"08f2d945b4a46a6d8b2ba682a5ff911d21560b1d0596b844806cef5304b05fdb","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"17e7f9720796bdd83336bd321eef59d61fbed7614c11eb8277aa6339a9dc3a03","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"dd9111d3e0613de420222f88e8011f2862001e111c9c9d384227ffc7bcf7de58","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c470d459509b7974d17d8bcd5e245c6d4dca9fd3a55471b282fb350aec626883","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"03c342ae487c425c4486ba12965cf927b022cea8bfc2f58a0b59e44ed39bbffd","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"699560077cd5477705ba82c26d54361602dd4dec219cbfd221a1432d2f1ca525","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"6112e29e28b9b666ff4770ff38db153b73efa3ac267637b86e452023368cc52f","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"ae7d1545dbec0294d86dd265eaed971fa9c8814b151b034504f8b4e9a19e5457","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"61521316849b0706f0b1295916e3d15e5894b1e02aea223c35394b54ae836f09","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"04ecaa592c738a1676c63f7b83c1de95cd8ea97b0e1e88ee57a14c363648a323","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"50ebe72cc4736cd2b4dd4a09b631616ee3767ace235119bf3bdf29ce845fb4b5","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"c4e2bcdac8eb5e5c5b80f364e0307852b9d211e5c31d93417b75193ebda2c33f","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"48a2676dd34081641d270e993799215fd94f4e519d200f33f3845023e3a3f309","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"e81c0cdc0f5b2a719bced4a1cd9b0fe87a0e64ce29ca795fbe33b1b9363c6458","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"dc9c52096a7aa5e5899943a6b4a4bf587c63825e1461045e366aff1e22fd9a47","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"29b5e77c5d95aa2e266dd1a3fba5be7d578cbbd829d3efbf822e1063ab0bd28b","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"3d0e44b27bd8c4d3b863516b5edc107c2c421c2f20ef33e23913dc27f3db8142","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"01f3d9b4cb5f1925a993a27cfe53b060f4ad080063c8406a15785adeb42f452d","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b58a9f5ed060c08a3501b861e6489a22da6e4618009a13f45027a9f1b824412e","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"68a8b2ff8e1aa7074fde43063cb3da93cb32ef9bd3706edb5da1167074536b2e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6c1150bece0c5dd93cabb12f9c5c78f661c3b06d34f01118110ba23ede6fbf03","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ca5df3c4849cb8d4b3dbdcc157fdb675ecd6df1122aaddac6e6184a201acc3c2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"a4b882db7249548ed1891c82124e9f229732f66cc014900013765dbdcfc5a9cc","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"54aa034c827672c201d1d815778c0ec9885bd20c2db4d9943a7d4ea05480bb32","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"80b84aa5daccb6cea14f54d3255a6d679b22df26a9a5d10d27474035a973f272","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"d0350505fafc0bd79f45c7fb22952e9a5717dd6a264f64e5061ab56af223cf33","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d55475d98f1113fbed5feda2b7a0999717adf184c9e97f7b98078e44176e044e","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"fa9e9eccdb9c544250fba4cf0702bf4f5b3644684e0a28dbf9693e25ef1275bd","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"4a867ee66c188a1095ad018bc8538aaf581a5b21b1b4ea0635335f583d635faf","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"168b03ea3e7efda158b478c3403fb4bb7f4bdf9b2b748535725ee274879b154b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"92890a34af58a8998abd480277f32d72842ea0182151df5f13470f8da20a3a9f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"fb5a806f0cfa04e44d21cf2db6e5df1e560c8a391992c9fe4245ac1b8d29d716","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6d293bea2fff13d7af3025bf09c999b72376cdae71c97d2d77f2b79dd9a3f883","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"3d122941555f9e1787becd7287f37dae2fe389a72011f9bf566c78a87db574b9","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"8137cdfc6cf12af74e3135740a9b97172cfde519a71f44fcb4905a42d6df7602","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"9e69e5fbc53a407d2c35dcfad7854ac521c6839f62eca59ab1ed6e7591dfe47a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"894586e6af47805a03b28cc58c7985ab553b18f1af07bd0151e82511d9d2dc41","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"ba6ae21044c252c703e58d215dc3207c48d5b644b6330a6b0328d0f11c7bef0b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"72defe64fdb7c65175ead7810be1701e0109d78ca44c332490ffe2d1ddd01875","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"8924047f75c585165afd3ec53c9f0c8b5baf2a1cfb3060bde5e00ce6e09b2cde","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"4ed2ddbd6fc9d8f5eba83ef2e6d02b62d67ed88dd99a13f9e640291ca462ddee","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b37658f64fce3695a90ceb13a02f0880fb32a86846804e1951cce4357fae77de","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"6473c469035178e9edcef22cf4af7ca59889ae91abe672477bb37196304f73f8","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"23fdad4e16401ac83e337651726c264474a8cc71637cbd0849bc64156aebbbee","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"b673c9ae6c0b62e1198bed113ccf24a9c82cdd7fb7866b5d15ab08c003cce548","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"4d8cad74e36c8e94f1c1b1522c34a60e657f8ebcffe3f85fde165c88f47af414","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"10083a9088338edfd5b2091e376e261b2c3876dc0c2e26594fef68795d293038","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"6fc5ab3ac5d0be2386a7e85ee8aecfd6e30282938a0b32fd445c9062e5eb56cc","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"8f29ad0c63d06565698a190aa0fcef21b57dbae0151f716b9b8b8fc3414f69d4","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"a95fb16470322c9c42f396bd69df2fefef87e640f6ffdfe33215b278e09026e2","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"1eaeb00fec6058e9e7658dc48d81f77b5cac03610b7155cee0c5de45e52e99be","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"679ee381851f076c51f131142bb7bbe8b595dfc228a538d02bd4a067b40160d9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"5a5ffe1e42289b372b3291756b87ef2db58f1ae77a4418345e62315bfe833299","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"83c07ee4d779341a66b23eda202b236bf8e2e17a8c6aaba2a23e87ca0b09e58c","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"109895ba56c8f9f4de73eb3674e417cf30769c42ff85a8d5d2b69f6a5b8024cb","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"d1aaaf39215e1913730b7a89798f85c07f2f34f90752f15b161b22f00827cc7a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9f903325f1c37aa2d3a305fdb6dd79c6571ba092c14c347aa5f6bf3c929577ba","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"004d1e2fe852350d0e582164865027b0d53c74d7bf0bcb06e956be212928500c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"9ecf760b6bc74eb6c22ad19279b3c32364ad36a95a7c5aab93ec8340e2f5a62c","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"ec511f75b8bae746adf701bf0cfed98cbb43be45d41039525ec0450da597c958","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"b8b237e65ba71d1e24acf6da32b0eeeedefa7469a6e357f72a9e497469d153f3","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"a28797060cba32c2030ca6905389c382f6ade7fdf758b317d4803c04c49e63f8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"5afe6904d9c15af679c808f4370aa28d3dfee0d37e67722554118169bf30bd12","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"7a38d23d1fc80d541e3ccf3efe2d6baf86d6ad9a9a7d479793abca40c43552ef","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"56ce9a694f8bd8509da560c377cfe34ca08143521c5b777873bc9bb7f31cf37e","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"a924ce8e1905622a99251dfcd1b3951c19071e6f541323cfaa1179c62c896b79","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"d1c27d36dae2b9413316fe14a1677654be43413f82fb1edc776bf5e7725acb2f","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"59445807eb6d23156da8882c92474e9674956d7984f65275a7e41b8efa1bb5b2","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"3a95e5c1ef608ebcb68754b642d34622dada3d3479f5312af2ae63b38659620b","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"addf5a42765a016e9d0805b36c6f4572f44da6aa23a7c2828b9e24756c7e114a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"740b647d22f2432f5f6bcf0a0523561cad40ed33a6b4d49deb4b1cada911fd04","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"853f75f4223f18a603429ea1a8032292b4144bec94bfe6c0ee3ad22a1e205a12","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"3eaa50adc3b11fe7d053f8703bde1a23af8133a46511bac3e967c83dff7485f0","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"edf5a320c01478636ea75a13884980bdb84ecab8d88367bd793f6808b67e45c1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"7337ddb760fd3d05aa71124072ce65e9eb9f70b2cdacb91d38f2635b5915e1ef","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"7d587071b55014dd320def3f7b6ebe66ed20d718e2f21444fec9fc33c6873e2b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"9b54cb8c455d500a0c504b3eb2581b02d4c6a2751d434df2580e9f83210004b1","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"aa025a98a727f7f8688d57f175ced6f665bc60d39953f04b993b65542af68e13","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"9b2519fbd4af9ddff48d1d00a0058450ad57e96997758e2e5d2ebbd570e9256c","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"ee400ed1469f52a24217bdde5aa6ca7691ab3f6f223df9187847d22de0dc5f5e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"d9bc4b57a0d1416af37fd6956ce0b6a9eac44b2ad2219555ea8013cb43a0bcf9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"db9fc060a702647783314fa3005ea9bbe8218a73ee86c6506264205d5e4a08ed","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"87220e532e3a290d85df0f9febce332ce42763942836c7ce2789d0a9a6e7f1e4","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"6b244125115d331bb4c55a04236824eac87535a9a3ac3ad5c4d3c6ffa41ab8f6","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"5d4db438e5b2d5128c54c9b67d68f2a87de23b6c92cd4ab916c1f29783333405","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"29de5328acefdea0c4d869510a333157363bf4c6933e956d536b7d72267de84c","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"92affa1ce403176c8ea28f83dc1de2302d41865a1210843b405d4520c31f362a","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"1ca5c2b9fc055f77c1f209b103e9391e907f62bbe949993333ec0abbbc45e3f8","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"8a3cc22693f56f237c23a05294ed6d44530a05caabbe830c95772d06feab0cbe","length":6} ]; var sSalt = "0c05d6b03d4775ba5794285b0d68442531c2a9ff"; 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); } }; }