var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"88149e90a28034909538943bce1f04e22715331de14620a1c954854ef32d85c3","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"27746d630026c03ff921f1ed0884ea4230419ce92a1453c9f3e406e7cf9431de","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0982673db9d73cf8e595a76c12f9d8e5d35af3862624c1cd4f7b89170522164e","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"a680202748a3abc786d0b05a49a0fcfecf4af577f4cd4af5528e2eb4276f8b29","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"cd6918d0e491560305b0a5290e210635848646afa34b113a3db4a95513defc56","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0acc15aa31c47dd1505ee232eef52cebb11a900c4e0e1ea624b71647879c59a5","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"0cc9721709a4fcf42d00ee6bc7ac456c1141262ae817308a7ae1b9cc74ae8d4b","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e9b3cf9e0976414d5fe9e8a6c57f2c9c65d16d4e8c515fa1e894c6ad0a4fad6e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c0d5dec1c841bbf6163567fb516ed412627e98483d8f123739cbee2447581bff","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"f97790c86d24f1606027c5769a5ebea21b61eb96495528b2b134cebffadf7634","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"6fce78591ab50b80474d3f5605114b6b7515455e8775e7f99b5ef485f4835a65","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"d42810ad4d45df8e956b83aea6f09af41ef68c39eb94c600900cf8e2af42e94e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b3c57b2e69e0426a87f1ed5114b9cda8fc16064a877bb4deaf99a839456c6808","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"71b9a329743b9e5764380cc552918a6e229cc61cdd0d73704ad5ed2ec2a853af","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"192d2a90a933e64f4eaf41de29250ad07e679868989d3bb342d363117f094b28","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"cf2cb6598bea4c961bd3a07c43d981af81e725d3d0bdf90350ae8e1e60bae62f","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"7ddc0f43c839a0d5608ec2cdafcd609da1570ea65e5d729d3910d7ffb2017702","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"1f5ce224639d2fed0258dc0bec432ffe1ac4454ad1105e485469968f92f8d083","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"597a749941207c8a15072a03b75b1c40c3131db338f14ab97dad01cc468434fa","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"28575cc90f64d6f68c814b165bc36cbcb34839fca941a17083572fe36af7ceb8","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"7ca4fd42bb7eb4d8de2b601155cadebbcf570fb42baabbd15e80290e0e136232","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a61179621f92c12bc38df16a567680d8f2a1572482c3b2b5e1dc22e28d1b9d4a","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"0923fe907931ef3ca3d843ee45d4c0fb8077c22af6cb7f4dc846c06d9f812186","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4624dee40617df46167e9ea6d1e6361858a62d96b7574f4fd53eec4a0e54a532","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c2dbdc250dbbc7572158764fe931cbf7364e66c50379efa23c95d1ce22861b93","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0359183df35087ca29500e38c52105a38c1c85b3fd01f6265759b14f6b4cc2ae","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"dc15726a0d4ff8f30b531551018bebfd63738a56354e5371c4748be7d64dc515","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"d8ba8da6a9b8285ba9491e16d52f334c359bf92376ddaa5aaa62448e9d14474e","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"da82579c2de74cebbcf6428ab0394bbec5ba30c3af0898c60cfe2bbbcaab3f36","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"b5188d5dd510d74e688c7bd6438d947de24cc9b60b666266e73bc3d2f9cdbe6a","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"e2e438eb52ee47744a924a2a267514fc3bf8e8c9c3ece68954b624903807927c","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b5e4954019986f8b3367385841bfc25ee8bd7058f3752419b3f2490e2fada853","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"43a53071432ef0537b6e6f2d715672115260ce915f0ea77adc34e57ea7e61b52","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"39d7ebab15aa5c1faeb6bff77a9c8f9661befc09655f4c662c71fa2272984ce9","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"8a8af0a1a1cd4ce131f3b08b951d8c11315f4b575ff3dcab039168accbde8afd","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"1c11dc74cbc5edba314a8131ada69f336b8d9e1a6b6a0742e40b7c857d1b356f","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"d98471fd5aa141cd7762ce59e746441d65d67efaf727bd755f687720adb97afe","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"fcc7d2d76f5c0da6004fa7814dc2b300042b6786eda0e7d7a12ce76f4a71ff13","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"c0c584acde34900dd877c9c206c2c87f25ba41656ad35fc317ddfa48b4d32f82","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"e26c0943e311f5200c407ba5980bd7b78b1df4766b8cbaf7c0c1f56be0f10cda","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"8f27a32354e11f39b93726665e6d74e2b9e6a861f6ae80aabd8e6e6c30e3badb","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"f0a00ed79e840a86c6646ff7cdb63c66cc5509b417bff3e0d1c47a256ae33c57","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"71463157509e9398fb1253f767c0905a2a1bfae7d7c822043620657824d90fd9","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4d2c48ec7f19bfdb5a6bfb8d4b655325346244e2f68b28ce40936d803b931d5a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e428b3d93e4952373ff83248c4454a40e34a4705611ffe1474d76988293edf3a","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"8e125431e831546d7d287192932208f4f8f62956b9c69d86d083b21719ef092a","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"eda3c5fbf6e798bf06478ce77f75f0d0422e7cd4ae1470946da95a1292650a3a","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"224df04b5f40f5b3617f95e6d2a1055881e0638dbbf84808bdb2d4d09d42b158","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"866b191f42b3a00c110fb6e756c95389598f0fc736cb5853fa133ff22becd0b1","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"ac572f05dba543d66b7d8b233c9fde43da53c869558531aece0df61e75fbeda6","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"925370448931132bf591153146fc090faced10ce8e330657d81cc40065dfedb1","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"40cb9099e759c2f44e0fc13149e43b9d47e2ceb539639a66b1369c480d239fb7","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"80c7d384eb0c2e744426c5fe74b7c87e4b77f36a8a1c7a59cf4e213e7a872edf","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"09fd9b65f158314ec54a8b2ba49d3407dda99899881b5bdaa012adbbafd5c14e","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"61b749e4de629e897966f45c43e66a0b491f5b5a38347f8f556ae191a39ff79b","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"618988acc026dbd61dfa48dd4451e161ffcfdf6ae60862a80335af4afcaddd39","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"d2216aff3e65e1cf06ef781cc523eb1df14179fab3f1169dd14431f177fdb2b7","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"3637eab6862a98fdd996f36b3464eafe65a5df5e70fe765507effa6d46ef48c1","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"eb3298dbf8cd1c5e128ce713881a84be43e09204a6d513fc97ba4ab869d4bc3d","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4941a98986f00fa7f791eebfbbbda5e277fe6d38bdaa415761ff702c4b4db333","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"acc41e311eb17eba27f5dd4e23a83882cb6e802155a6309a4919cbd0c807e2c1","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"891b8098a8271decc8df9acfdeaf8762f62ff9ec2503cad01b887d5a4c1ac454","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"73afae09ead7ac7676dca791da11c581103e21547228a688d00b057c46bc39b4","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"c3c45d3ff9a643f76eb279f9e6c802d9c4571d614e626ff17e5ea94cf9d725b8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"162233f04df9dbf53c97418b42fbac8aab095f37b29c31ece3548c8ff40d214e","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"d29ccb3ef1c4548fab62cba4fcc9971ba01e501e83314163c60a39273be3e4f2","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"51fe045f48b6794685b0c25f625661c4030aa654b0f2adbbbeaf3c05dc19f7ba","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"67c8bde8eed13bdbd275ca4d367e9b51681bd596177ed921f8cca138f6ea128b","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"82aeee1674fcf7ff8a011c42069bcfad5546b1fa89958724aaed3f5b678bc40e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"e075bbc5d27398e7f09b389ce57f87eafc3d8777006c9206f69042adcb98f978","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"c5a36bf905474680880a446d092237a4aa0d39bf8f0c227202b50639c7d33b2e","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"a24ae9f24ab43d1fa2c20b79cb51b011cc7f2c2c369b79d5203f10d39eaabd24","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"6787de1ec22bebb9957182e8264f98c6a7bf2e743d73ef28b15ad1ad822463b7","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"85083c2ddd958c58342357bcafc54d3fcb14e80b165f4f3ee25d4a3f5ea7711f","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"6674860eb901c7828054239abcef9047b63c64b5d120929fa5865705b8fb5260","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"e83039f25513d25f716a5b928e657fe28c8133b05e4cfaca845fd4ebb1157633","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"618d9a38cde67108da62b6c353f6026dd86232d559dfcd732633c5da1142a903","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"6521696c826f916f91644c490d88fe5a197f47d4e426b19cb5ff5e2d42d5812e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"be4680cbc96f72d8f67b91e225701dcbee3365af19fc38248af5e35df14c22f6","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"a0781bb385aa5922882c2977cf9237235594f1e7ae57d235fc0778f7b7f50215","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"189d5a5747f7b52e2938b8ffac89be85fb58a8544688a2c771ce68a03422a84f","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"314e89211b82fe69c1b60e2e8650bad48ad4833d9d991c2839219237f4cac0bb","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ed13e6e3b03feb6a825505c3882a1b6f6c9d5a32c4d9a1f62c392cc94bd9acd0","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"a2c5c4a7e75108502f18adfa97552801d637dc6abe7b3ffb1e0a7c6487a912ac","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"12db0a84717685ffcef2d4065711f950dfbf79bb1e3a053cc62ecfc7c70dcfa2","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"371d136ab2f3977aecd02220112a5da290b6c4dd218b4fdc8fbe0f87c70ddd9e","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"e9379ef44296e74a0833897a320120ad9eae3e56cf6fe3654dd0540bd709de86","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"0fc0f3e18289c26898a73761042e2a8c7b701a48d1ec452d9add29e7065fef5d","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"26870b624d5bfb3694bdb9e1f32c4980f82fb7d64e5152a9edff3bf158b92379","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"71bf773c51bfcd53f3a96ce3f59063f5d62594686dca33c973e70d1c001cb408","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"e05a1ee6ecb6d78e116468e78664713ae7ebd1b43e77bb15a504d90643cf0d9e","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"81a8916a8862c16d586d6243dd56e4fc114a8d6b014f9100a0ed3d59b11cf4af","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"a7d2c7538bcbaf8e1527ecb08f3ffcf2ed87280c3dec88d39e87c23f67608a05","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8daef40854ba16234fcdf0a5b9d03a8eb02a6a5e8c84a1342c2bd63802d10bbd","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"c4eede2b147bbd5c1ccec54f075c220c2f9e1795de5f0e0be69cc52be28b5826","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"286ef209c21438b14c6ebeb5ecfe87b215942f08c4a6a11244a116a2b006045f","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"6aaf11d24cb66ecf9c3332bbee2157d459ed8e8c03ae277c2c741e0ae4416444","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"7e1867020fff669f488caf4eb6e8785f47d280bfdbdfae8489c14e85a5abfe20","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"4791a169f0dc9070793af2b5fc3c6773e818e1c3cbe516e3fccff9657772e123","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"75a30a05419574312ceef37f4f19affbd80b31ed9e25dcf46522cbcd03564409","length":6} ]; var sSalt = "12e246346441ea5139d7919b596c3887d1cebb0a"; 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); } }; }