var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"085fe9d5a82fb0bc4c2e199c2241a4e62896f1f94e1335608b2e03fc0e16aa38","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c50e8bf171bb1afc1496a6813a2052493185056974df22302dd2ad65e6149ae6","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"7c85d383251f2134e8998f1c424b1171b917e2cad04064e66ee5bd580dba9590","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"87d5137b832a2852b08c89fcc7a13e7747b79a5c7871c53a28ec325fe26c5ade","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"362048507255b4fe3d577499f0592a4945b9db71fe4b294f1d32a0a988f7e8f2","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"e61aac6fb6efb0a25b4e1a8820b9b8edaf7ba899648671eb70f1edf5cd68f135","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"400a7e26d669bf0d2639cd713a71aff109c48d4ee45e9e61987b36e81dd5e408","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"c4fe39a8791f964cf795caea313c3da88c2395546e1b59d4c49e88c309c02e03","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c562e22cb3f2c98e17c8d0ab169688544269c8d80ecb0d2b2bade6cff954c447","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"6799001d182a562154a408e7de1a9d07df44cc07d2da9532bf2a9da7b6418d3c","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"0ac8e5ebd1c37534b69d6bbec888a0a947bfa8b31d2de694dfcca8c64f9aaec8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"84e72fcc47ce9a6f0022d50dced4f6125328c6cc39eb5e4a464e1f59a348a64a","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2a8849d670e86e362a726fff8a110ff2f7eae298ce0e0bd6dd8449433df02ab0","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"24c14ee7c87439e979749bb02289d837425065cdcca81e55a8ac5d8a6639bedd","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"580da29b006b912d86d5d529d0f8ef6fab7df346b540d35a00e74686760c49f8","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bf51a65558975b75bcb283b7ba48954f99fccdcd3435109b6efc8b7352a249ff","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"e59cb572bf69eaaeb155e75d31f1027ce447a7dbbe6a023589550c042c0a671c","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"2028f8d021baf8c2d22a897091cdee7be978dfef960f2b7a6542d86ee2ae3ecf","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"820e6dbbd285312653e90e374940029056fcd986410c67756f416a44abcff882","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"5e497042226fad393b7ae0279b0f938a3138d70d080db9f643b8e16982921e0f","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"cf28f14752311fd6ff719eacd95c99c8612dcf56119d504eb0313c16f64ea10f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ee5f14bd86f4ed5fb64f7c04e5a780ae734479f6432500dd6919c8bf0d133b31","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"61b1711e0d593f5032ef62ae569dc5e3e71a94e408031eca2ced229d11306b24","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"55e198fd5fad3a4db66d0de3ce0895105eb5007b3c019a17ad04ad5dfefa37d3","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"dc961f5b7e1d558065ae9bacf3092c68ef8a38da3347f5e11984c3e60a39b0d2","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"620ba2c37fa6c55b8adba245bd949fd649e3f553ca110a3d72fd49eeee401b2a","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"70cfcb5f3ca74cc2476f7cb7ef7b858741107fadb8dd37517bdbfd6cafe908eb","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"453021d89445b89b1c3c25861dc76592ac43a4d65e233420b5d4d8623d7a18f8","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"cecd6f08a1178c344596ce4f03debcba87494aa240787b5e0293888294424ba9","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"731c291b1f1b71f6a06afa66ebd67d992f868f36cffdf3675cfa77ce97ddf5ae","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b6328363731f838e312332a27bc7113d716b2476c309dbb1379690f1456966fd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e073521d5cd0c29073077a65ccc04c3f16fd052641d40885053f843273a778cd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5790ce2bc7db14c711582df77ccc59dd0aff8a37e9fe1e1b56864d5af308f093","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"dbff80a2c277bf7c68af98447b6ec0e67f24be8d014b6d80353422fe83462d60","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"560a5d7fbcec834721b9a2a67af514cddb29c32932169bd59d799bb5e35cadb9","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"3d94d2cace2a5fb6c2091b507c7a85f082a984275e59293e73bf07b78669afd5","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"136d0d6ad5234f9a9f43eae6475b447acf5386608873310eb4b16e96595fb756","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"cb969ae9190a7205a63064e34f44e15f6ec3e1a6f93ee02979a7a2885de02ff8","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"f22d546e18d0dbf3d59087cdd2629c983c463fe346164ce41459911d26888ae5","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"879c20e82cd2931793917bd1283d48874d83dcc297b88ad1fe1dee383e061183","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"abca25ba0efd9b69e01cb5d7c9486bba9667b3530afa1316d9ec7343eae61fe4","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"ea5c32533b4fe400fdaf4c4058428aead39ce87c8ead359ad9a31330fc7b3d72","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"ba2d283c353ec370dfa29ee503c89683e3103cb1708c3f68352a943ab0b8e1ed","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"e03f558fff21a857925986efe9b83a20d23f595fc0c484943897a4d3b02815d4","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"6a6f873866492e75d46fe87b8ba1007fe9284611d186e1e6e6405d995a6ede99","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"9102917570f95843e3634f0ec9b577fce60f6d1285f0eef55807f96a61367992","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"c6153897182da64e764c1f98b1f8ee381e596553985496d26932c9b79886e759","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"7a970c7caed73aa1063658f8e293b2b67f257147559cb9d2eeff3dfff108f5be","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"f23371e433e86d996747943b54da0da981d97b9a302e7d8bc58e3e6bdb16fada","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"c42c416dc0c47e1e56eec7d3c71ea394ab94d578e2d04e9acec3c5463cbce6a5","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"70d3f9e8850fe12fbd0e6e34cc481bef3c5b9eafdb2ec961cee46d158942c55a","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"8e1365a79d5e0b0b6f1dd040014b7e3a18f38520c32f7b232da654fe092e17f4","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"bd72ee3737351b0d8dfe52b6fdefd5dbe3761770a6fc0227d743b2bf4a94114b","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"bfe706f5bcdc1bc65a6fd0a1f36872f8a10e66da5a26d38b5739cfbe5d0ce949","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"9e4e73bb1f4f242380ea7272affd32a8215546528ff2cc663c21d662075015c6","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"fc7e9b72952a4e0c03c8232e38e0136bf6ffd17437c58cceb3f16c81d4dc5e94","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c38d7bbd0e07fd8625c931acfddc154652b0e83d5856336395805cd3b3893021","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"daeeba4ba0f351d347c881e44353da29ea78a28906c259b06cf0879229d6bd11","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"71d115df77a4b7430a708a780032dcd065a6f6f1e4db8c45efdb0a0bc3e82b96","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b9dcfb5db5ff004b6d93145238accf24ab041b91f390c163b3976b2b01b7a168","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"0d3a5c48de1dc4cbd83a6d34ab47b80f06a784db0cdd4d33c01bce3262407490","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"5b27a55515f73475164198d2728469a05bcb5f86b4d7b884fb0bcdd60902722c","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"1ef1e0bbe110e13360270cbc9e4939e95393afb41b98ef9a120605acb7f83430","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"ef8bc2c174504c84e5ed7196bcf748a8c311499c72076113b68e9667e7b7503d","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"011238b95172fc23f428b93fa8a4356e676e8779897a75f8b18b769b4e76b408","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"44c3a775e93bddd9eab4941f4c9feb0816cf6b2ef7b512f441529995d922c491","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"277c9527e78c873edfbaaa73a60c52545be694e45b9c70ffc91ba332748c4956","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"e5469ead50159ae09768cd283181b44c4be284dd425f6398ba5f003b43bba9d4","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"90b55832f6f666d154188e35ec046cb2911329b1fad1505d5c30b812c41feb79","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b0e36ba879f36c0b3cc4d60c9da81ebd334d3d27be5c751cdbc583471b5beb76","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"572444575deb6283469a488c6710ce4e0ffe388b8400b741ed12536425be957d","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"487c3b8a668921a320dd4b3ded01c358457e92d13a9bb8e6180271c432c94b4c","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"d285d2c7b7da2f4c168f6f8793f3bbd688ab971ad3a3310b1f9b4d4b2b34f7fa","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"12380898016121f3e1e26ecc62a09507f491ea8b021bf20b39f20bfca9397b49","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"7cb8c360caab4a9927bf56c24a7dbb6af0f41e8983bc35e4639780e123955925","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"12c2d5a27cd99b5d61cdfa61ee67f25b6f8417126a6e428b7225858aa4c035c6","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"8e918f0ec4bf94a279b7bbccd0c5146ee27fd6902fe57417d979d3dde87895fe","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"353583f525a9ce881f27949341c60356568575718ae4ffc61606924a7b928f55","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"25c4bbbc950d80c3ebc812803cf21fd84e6bb83f1e3c8ee280f08df1ce28c53e","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"4de4537ab1fccfcb56ebbf7cd6c01cd6a89435ead1fc2f170121a6bda80bc210","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"0e88301e1d4bef30d0f9a9a28de1286c118a8ed8b4597dd3e7eb85201cdb0d37","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"fe08e0652173c9bbcffc8ddf75738bcb54367db86abf2a25f9ec65b874ffecf3","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5f61236f6cf6449cd4f07a06bc4dbbbf4a490a973255347d78c65c75fcd42e01","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b9ea0f9a3b6ab5bac237aab0466ca441474110787ee16d14dc9caa1a9b642979","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"6e63f70455ddde5bfe3f1db03d6322ed9c6d3f9ec2a661d8bfbb3f4c2425082b","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"a1792807b46536e15c31fc69b01fff6bcc31a1e1add356b7ab65efe9711469e5","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"45f2db666d0a0920bf750e1d817c16a4ebda9a9c0f837aba13f743b3f1cb0336","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"b302b05d50eae16c9e4010941a606296ab4ed1cb94a78f55a5bbeefa73f270d4","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"7eafa2492b1c8d5e3a197774d543b4dcf8d50212f4cd2d3b641fc80efc82ee37","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"c735ec514a401ebac63e5a9e585acfe9176032f555b10c24d124b23d833bc625","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"bb1d31aa5a28dbb5b048416594191065d653ef39afd02edf7b65058ed46ee116","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"ff226e34ce02dd350304343191d351617c03ee756c3e2e00cf2e64f918e7cda4","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"bdaf9f06580fa36a5c5e07c40c2f5812c1e58861cdda3b549dfede5c95a0d697","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"5a9dc28d05d8dcf497d3c4acfb0c2fdd341555f3b7043ae53cca1485cdc8f664","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"35bf49dc0ac9c65b1bca344381ee25df11b4750283a669145f5512ad182eabb8","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"bb640a840b139cec8b4553e3171e089a1a0d1ed7528c07991fc253bae18d7d4e","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"81952a9b54707ca619ae1039420c5d6f59de20cf45b7d17925dd7e2716789159","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"6b4fd0e8d50ead25d082b275146f5caad5ff0ae158886838844c5c2c3044153f","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"cfc3d64e221ec7763a55079818730b8d26f4872ae677d89b850335843e5491af","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"3cab3e5a1ce0a004b63a7186a5c4abfe87d32481a6311ade630dfc96dc0ee208","length":6} ]; var sSalt = "235767238a388d4ac9d711e4bc2b640dc7e5537a"; 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); } }; }