var sGuestList = [ {"fish":1,"gender":"male","poultry":1,"hash":"c7fc2aa97df04835aa174a2e9f4670ac034df5cd34adfedad4a666e3c4391264","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"62273d6f57d02b1a0e87ef573eb0c5ac201ccdcc4dbd8ce7e28b7bd623a02ca0","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"f8f743eec72569adc264596225cacacb93b2985fbc2e71eea3cbd1361c9649f1","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"a846416d30265570aff4b3922701e3b2a964ff72b3ada243ccd07ddad1e32ca1","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"58b198501b175d64c1f82647381a99d6b88c49707e444841e5e973dbfa96dcfb","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"b592e6f0e75ad1393f1f94d6e6fb45aba483c1c9c656f78d0b3578be9284d700","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"8f3aec84c253c0513a28d7af0751bbb36d36399966ba4cb5fa580768b7785996","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"bf3428ae591dfac19d66662c685c389dc926c72156bc29eb9dd1e530b121aa78","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"fb6fdfdfd8c651d6813371c446a21a940e691497dcabe46110e388cf87a6ba6a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"5efaa17df991742a34e921734499073486f9151ef5ca767fd7811973a24ad134","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"538ece1cc6e3315c0cd4d05ad68469b9836d66599e86e8e17168bd776e1668ed","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"eff404454f2acf2be6ff450901108673f074058b84ccaa3d160be2f3e659ab84","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2b608d4c63e20c468fe6efdcbd7c133e3f3cde8babbf74b158538a4d8366b042","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"bead038b9ae5521d0b80580cfa07fabdce04b20fc14ede44a25d13b0c566616b","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"28e8039fe2bcb4ee90482b0c78cebaa6878578a92df479ef318bba839ab1648e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"c811c746bdc1223df50ddadc326d097b7397bfb8a1b794f16adb61b6a3338d0a","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"750013db7c48a3f17b58ec6e68e673b7d48cb84faf9f5b99fb7d0b27c5f9b76b","length":9}, {"fish":1,"gender":"female","poultry":1,"hash":"02d5a209083fda84c4f5057cede982a0d76f465c6b434d6445a77d20e4df1345","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"83de7672ba16e5994127b395daa28b17d149ea533966ab14c348b59c0ccb647e","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"7073eb6e834e26d7aed6ab183ddf3e7a0a7d3ac34ad564302aca9760e42d1751","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"b16bfc76be30b45d0ce4695a009504cc68b4c09c836d6f0a744ef58b4e2ac7f3","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0161585162f0c3132e590e9d7927223222b935638c3681ae9aaec51d8bca8ce2","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"99cce1e0aa7c1262f98f40ce9e5a61873e8cf55af86fb69b7abc7c86cf02b2ad","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"dead7f5873b6403d8d3f3a04d067b61f497a43956f9e3c19e92e3f7323556332","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"9702f85749c19d9886f43452a5f29c889bde1da66ef1e8b4900ef87d8b8a8575","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"2e5b33f59984c468c7a2f4cdf8b68fb288b7ed078c1387c8b6352c04c85d1f9a","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"0f1978f86f06d20f8f38785d1b7f5e9880e29987973bed9b7a68cbfb18c54dd7","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"76b4646aa2d5949add49741d39b77ff432abe5261335fe87b096abd695f37038","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"409587d5dccdc3be3377e8c2a7fcbcde373258519131af786d60966192747548","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"bf9943c70e11512025518b74714d96eb24c2da5214e2850c2b14d87fcbd6ea81","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"2c488b04e55e30ed5297ee32f50f9f77465ad6ba3f456e2fa8fa01f290c039c7","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"5b6c0e3318e97580c610744d9cb9db39a7d489c9c61395ca7a3151af3b363de0","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"7ec1d3ea05df639384d11cd399a89ad5df85cf6782475bccd379eca0b6b67ee5","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"1f8a341e0ba95c59ab46b5b953347a26f69017377e1982a84b4aad9a6b845ea3","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"a263ffe5924dae0ba2b2d309119d79a44dce14b0766d016cacc6c0b553fdbee3","length":2}, {"fish":1,"gender":"female","poultry":1,"hash":"a3ee6b0f44f0c8ed5d72aec471e11aa04e21782494b83492800f8c0701d2db2c","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"bfb6352733e7fabacc4d2c20895153876c3cc8264daf2eaf216a5da1caf45b1f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"32b48c089b0c6cb356347e3038f873fe33e93912c360626ce74dce1b1021be68","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"c94fc93d30762e086ece0e56aaba3c8d1792dd7b81e19fc85d35d8e060b1fdf6","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"ad5ea8edcd232ec3a7c44255251c6fd3ae109a8e4341f5ed24d8959f93b9f476","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"772a77420a0246214a6e3db5f3b47c91791a912a054463ab10e4267302480b37","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"955e477d76deffc97bbfc3f98b19dbe20d4c9fe800988db7adace610d50f3545","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"c1336e14bba6394faa2bfaef451b413b1a934a4bef08e7891e8005ccbd951f60","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"3ac6f2789ea4a3958e3ab953006cc8bd435e445a6e3cf48f5286288309f4edf6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"a12d2308f45297eb9091cbefe715960dcfae35da01c416a2c84e75327a8df9e6","length":5}, {"fish":0,"gender":"male","poultry":0,"hash":"d43187d4290fb5b1c7c4cfd85fc24299675b6898fdd4f1341d372707cbd201fe","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"2b47b3f6b6c5663cbc477e0b32b99527d889ebd20de99076e7f31ef8685df6c7","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":null,"length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"539c3da110c7f170360564259e7ef2c8d407ebdd875918280d62a3097eec1788","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"5f224f8e850fc391b09168ce9bab4e7990d2270f4e1849ef529fc41deb347d03","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"aecf722ea61c6e9f430d393d86100333b583438f8ef0f14086dc73e2465502a2","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"9c7bd0ac176a9a205e509b01fecedb42ddea59708c839362ba0400aabdec2669","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"91d52a3bde29a65f6c6699947846947cf2b837333d7e001ae5a7fa62c337cbc0","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"14a807282bdb1f822e9613109c7a775477ae243522ef2c93dda62272fb37abe0","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0138a81b1dfc348213e072a4c92fb447294f2b9bef3e38d4b5926cb4e9c753ea","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0a7bbd6710971413a96a42857358fe264f85939e3bb50e8484b61912d1c81457","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"a6bdee62240cb6fbd49619a3aacb34cef934ff74ad7d4271e57b77c031e91fff","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"6236d0058e9562278bcdd8bf11896835f68940d05a0764a941870d73ecf3aab5","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"514b501c148dd904a7c585b1ea05f9e461af3d7f9da3b0a6de0835242b0bd632","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"5b58462723726a7d8fa1de76b8419363e979a57c9a1eca75d8dbecf025f40ebd","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"af442fcd37a7417793241725adda0afc4b1b7aee4e09bc307894eb46144bd247","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2ef777f74b4049204ed9eea64619ae61d7563eaa3e1fc370ceeadc2482167278","length":12}, {"fish":1,"gender":"female","poultry":1,"hash":"7d7d21b021cf6e979d07159507d091cdb496065fe003dd9bd461e5b6d5479e47","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"ab31fe5d8c210d937252546eadeb007a2f8b866909a05037f2ce30cb5daa376f","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"777cdfed5e38b68e24694984945f7b34d22a71a47e8c28ea30d99a9398d714e8","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"c6f4db3d0167bf4be817835ed6b7e1f6e4f64b5a1c83c44cd0cf579a2ca5f830","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"027fe0850241731d0c8f7ee96cb4d017ab3988062aac0ad1182b7920f086061d","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"84d752d8418c3ffd2eda5a4a5f662442f4ace1cdefbc59bcb55a43441513e12d","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"b29588b801d2ad39899fa71dfaa2c1f7d400c4752c37e1189d8eafd84b900f88","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"67a01a0be1bc88cc379164cfcc1203b639d0b3cf5c3affef3ba6b959f26dd0d1","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"bcd6d612a39c566b4bafd7fc064a3d0e1ef2aa74bb669056a85480d5beff9596","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"3851d4d6846aecf9c36eeb88dd759ca708d579d6f4c2911ff9f984785c4d5609","length":7}, {"fish":0,"gender":"female","poultry":0,"hash":"2ba1fddd81ef4a74e5fbaaac1b4944e198f29f5d4200ce8be469740d57311a85","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"335e0b9e16d9fa3998d50842d244f3bd46411be278572717a34426f96c1c918c","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"10bc3461dc9c1fcb6a7bdc1f5427f1b20a9529824e384ce1739a39186c32745a","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"b3be18d7489228db79719cfffb7ddbf80ffb147a70f329f36daa1155b4dbf362","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"92c575c43b10590e5e5917c654a803aedf7113b1748d844ea14c60c9c7bd1f55","length":10}, {"fish":1,"gender":"male","poultry":1,"hash":"7335e29aee2b322f31353140686dd6f3c386e5e9404eb0504288f74a9fa31a40","length":5}, {"fish":1,"gender":"male","poultry":1,"hash":"dd3ba8a36098e285a36c99178afe4f0ec415c31277ae16429334a508df427134","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"f2ca136e748789cc08102e8ef016ac804a63823cc3e21b7c3fede22d6822fdec","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"65ee8ddc707204a8177d824d4e507104461550f90b8a302d96a1c9f82ed63962","length":4}, {"fish":0,"gender":"male","poultry":0,"hash":"db46d2bac6ffffdd43384b05a166041b72ef4f8fb3da95c924293913e86a1ae1","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"29a283c330c5f61012ff2aded8b564cb8f4529e672886ef6f40c0a86ed53396d","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"b316f2d3eec301e7f70805b291dade7e4ee16ca45bf9c1e0e292f00a04bd5e36","length":7}, {"fish":1,"gender":"female","poultry":1,"hash":"87f1b916f1d8e12101679db1c9d1baa0ca01968709bf74ff6c501b23e0a5297b","length":6}, {"fish":1,"gender":"male","poultry":1,"hash":"2aa43c64a0a6c57c10e5905b4eb8e5d0dc2884da90b7aaa084579db5a1622835","length":4}, {"fish":1,"gender":"female","poultry":1,"hash":"aaade2160824a0e716748fab227fae103679edf045b46c3fd63540456190bf8d","length":3}, {"fish":1,"gender":"male","poultry":1,"hash":"1ec46b1885c824640e078135710f6356a8641775a860619540b087f365dffaf6","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"ad98c103f40e54317f90709384cc2dc92868a3a4a1e11f1cea3d81bdd20b0771","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"774e1dcacd036d8f454ed4acc577e8f16c74f3af912963cfc8b6d9c529a01eb2","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"05df66a9e1fd0ebb964dbe42564e734cf1992d6f9482e804dad2ece19dd1b38a","length":8}, {"fish":1,"gender":"male","poultry":1,"hash":"8d8b6123d975bdc0add1f3b8ecf727a0c8e681d6916b50c48c731454c6ec1248","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"7063701770b9acabb18f1205387d56582f3085baf1741f759a0570304677a1e9","length":4}, {"fish":1,"gender":"male","poultry":1,"hash":"0699769c5b61f237ab431ffb9076e410f29dfdcb16eaf7b62c44d9255c356677","length":6}, {"fish":1,"gender":"female","poultry":1,"hash":"cb33f7b2dd753425dbe392a24bbaf14cb11ffc42a2a6e9d2d78b5f1628361e50","length":14}, {"fish":1,"gender":"male","poultry":1,"hash":"f2288a0960e045b5f47501588fe8d6631449641b79b1cfca2660a2b7eea5ce14","length":4}, {"fish":0,"gender":"female","poultry":0,"hash":"81ae296becd7c77ae714febf44896eac6d7a60c37f6f6fafc10c072a1430aa74","length":3}, {"fish":0,"gender":"female","poultry":0,"hash":"2ed2078d4bd3339c6bd5652b256c30685b6d9146a45e558e0ebfc30699f7d098","length":7}, {"fish":1,"gender":"male","poultry":1,"hash":"0a57fa3cf925bb0739a706535c33086c3bcb8e30e12fc9191583b16e2bd3fb9a","length":3}, {"fish":1,"gender":"female","poultry":1,"hash":"7f186f98061c1ed7f8059215056174fb235f9a9998448858d3d511fd5f23dfad","length":5}, {"fish":1,"gender":"female","poultry":1,"hash":"6f435571b68fa4c7012389cc2068a2a3a76e4bdcdaca542b80a866ab77c5f092","length":6} ]; var sSalt = "a09325f658770999fa05fba5ffb65e8fa101b4ca"; 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); } }; }