\
"
return htmlString;
}
function createEntryHTMLArray(entries){
let htmlStrings = [];
entries.forEach(function(e) {
htmlStrings.push(createEntryHTML(e));
}, this);
return htmlStrings;
}
function createRandomName(){
let text = "";
let possible = "0123456789QWERTYUIOP_-ASDFGHJKLZXCVBNM";
for (var i = 0; i < 10; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
function createEntryArray(){
let entries = [];
for(i = 0; i < amountOfIps; i++){
entries.push(new Entry());
}
return entries;
}
function concatEntryHTMLArray(entries){
let htmlString = "";
entries.forEach(function(e) {
htmlString += e;
}, this);
return htmlString;
}
function renderEntries(htmlString){
document.getElementById('entry_table').innerHTML = htmlString;
}
function extractIpAddressFromElement(element){
ipAddress = element.getAttribute('data-ip-value');
return ipAddress;
}
function selectTargetIpAddress(entries){
let value = entries[randomInRange(0, entries.length - 1, 0)].value;
return value;
}
function compareIpAddress(value){
let levDis = new Levenshtein(value, targetIpAddress);
let similarCount = 10 - levDis.distance;
return similarCount;
}
//----------Business Logic--------
function beginRound(){
document.getElementById('entry_table').innerHTML = "";
ipAttempts = [];
let entryArray = createEntryArray();
let htmlArray = createEntryHTMLArray(entryArray);
let entryHTMLString = concatEntryHTMLArray(htmlArray);
let entryElements = document.getElementsByClassName('entry');
targetIpAddress = selectTargetIpAddress(entryArray);
renderEntries(entryHTMLString);
assignClickEvent(entryElements);
renderSuccessPrecentage(score * 100/winScore);
renderAttempts();
console.log(targetIpAddress);
}
function beginClicked(){
let messege = document.getElementById('messege');
messege.innerHTML = ""
messege.className = "hidden";
timeInterval = setInterval(countDown, 10);
beginRound();
}
function assignClickEvent(elements){
for(i = 0; i < elements.length; i++){
let entry = elements[i];
entry.onclick = function(){
clickedEntry(entry);
}
}
}
function clickedEntry(entry){
if(!lose && !win){
let ipDifference = compareIpAddress(extractIpAddressFromElement(entry));
if(ipDifference === 10){
targetIpAddressFound(entry);
}
else{
wrongEntrySelected(entry, ipDifference);
renderLockout();
renderSuccessPrecentage(score * 100/winScore);
checkStatus();
}
}
}
function targetIpAddressFound(entry){
score += 1;
if(score > winScore - 1){
gameWin();
}
else{
beginRound();
}
}
function wrongEntrySelected(entry, similarity){
let value = extractIpAddressFromElement(entry);
lockoutHits = lockoutHits + 1;
saveAttempt(value);
renderAttempts();
console.log(value + " was incorrect. Tries left: " + (lockoutMax - lockoutHits));
console.log(similarity + " characters were correct. Try Again!")
}
function renderSuccessPrecentage(percentage){
let successPercentage = document.getElementById('precentage');
successPercentage.innerHTML = Math.floor(percentage) + "%";
}
function renderLockout(){
let lockoutElement = document.getElementById('lockout');
lockoutElement.innerHTML = '';
for(i = 0; i < lockoutHits; i++){
lockoutElement.innerHTML = lockoutElement.innerHTML + " X ";
}
}
function saveAttempt(value){
ipAttempts.push(value);
}
function renderAttempts(){
let attemptsTable = document.getElementById('attempts_table');
attemptsTable.innerHTML = "";
ipAttempts.forEach(function(e) {
attemptsTable.innerHTML += "
" + formatIP(e) + "
\
" + compareIpAddress(e) + " similar chars
"
}, this);
}
function renderEndGame(){
document.getElementById('entry_table').innerHTML = "";
let messege = document.getElementById('messege');
messege.innerHTML = "
You have found her! It was not easy, but your diligence paid off. The data you have collected has been sent to the F.B.I. Please help actually fight human trafficking by donating to one of several private organizations or report tips to goverment agencies that do just that!