const getScript = document.querySelector(".serachSection") const letterLen = getScript.dataset.letter const ablank = getScript.dataset.ablank const siteUrl = getScript.dataset.url let errorMsg = document.querySelector('.errorMsg') let wordCount = document.querySelector('.wordCount') let main = document.querySelector('.main') const params = new URLSearchParams(window.location.search) let serachValue = params.get('search').toLowerCase() let prefixValue = params.get('prefix') let containsValue = params.get('contains') let suffixValue = params.get('suffix') let exculdeValue = params.get('exculde') let includeValue = params.get('include') let lengthValue = params.get('length') let dictonary = params.get('dictionary') let sortingFilter = document.querySelector("#select_dropDown"); // Scrabble Point Counts const ScrabbleScore = () => { let twl06_sowpods = { a: 1, e: 1, i: 1, o: 1, u: 1, l: 1, n: 1, r: 1, s: 1, t: 1, d: 2, g: 2, b: 3, c: 3, m: 3, p: 3, f: 4, h: 4, v: 4, w: 4, y: 4, k: 5, j: 8, x: 8, q: 10, z: 10, } let wwfScore = { a: 1, b: 4, c: 4, d: 2, e: 1, f: 4, g: 3, h: 3, i: 1, j: 10, k: 5, l: 2, m: 4, n: 2, o: 1, p: 4, q: 10, r: 1, s: 1, t: 1, u: 2, v: 5, w: 4, x: 8, y: 3, z: 10, } if (dictonary === 'wwf') { return wwfScore } else { return twl06_sowpods } } let tab_link_wrapper = document.querySelector('.tab_link_wrapper') tab_link_wrapper.style.display = "none" let home_page_search_result = document.querySelector("#home_page_search_result") let homePageSearchResult = `/?search=${serachValue}&dictionary=Dictionary&prefix=&contains=&suffix=&exculde=&inculde=&length=`; txtBox.value = serachValue if (ablank) { if (!serachValue.includes("?")) { if (serachValue.length <= letterLen || serachValue.length >= letterLen) { serachValue = serachValue + '?' txtBox.value = serachValue } } } if (serachValue) { letterCloseButton.style.display = "block" } var theSelect = document.getElementById('select_dropDown') const sortup = document.querySelector(".sortup-icon") let bool = false sortup.addEventListener("click", () => { if (bool) { theSelect.size = 0 bool = false theSelect.style.display = "none" } else { bool = true theSelect.size = 3 theSelect.style.display = "block" } }) document.querySelector('.select_dropDown2').value = dictonary const getDiff = (text1, text2) => { var diffRange = [] var currentRange = undefined for (var i = 0; i < text1.length; i++) { if (text1[i] != text2[i]) { if (currentRange == undefined) { currentRange = [i] } } if (currentRange != undefined && text1[i] == text2[i]) { currentRange.push(i) diffRange.push(currentRange) currentRange = undefined } } if (currentRange != undefined) { currentRange.push(i) diffRange.push(currentRange) } return diffRange } let featureContainer = document.querySelector("#featureContainer") let howContainer = document.querySelector("#howContainer") let faqsContainer = document.querySelector("#faqsContainer") let infographicsContainer = document.querySelector("#infographicsContainer") let authorsLists = document.querySelector(".authors-list") const getData = async (serachValue) => { try { document.querySelector(".main-header").style.background = "#fff" document.querySelector(".heading-h2").style.display = "none" errorMsg.innerHTML = "" wordCount.innerHTML = "" if (featureContainer) { featureContainer.remove() } if (howContainer) { howContainer.remove() } if (faqsContainer) { faqsContainer.remove() } if (infographicsContainer) { infographicsContainer.remove() } if (authorsLists) { authorsLists.remove() } home_page_search_result.innerHTML = "" let selectedDictionary = document.querySelector('.select_dropDown2').value main.innerHTML = `
`; if (serachValue) { response = await fetch(`/.netlify/functions/getWords?name=${serachValue}&selecteddictionary=${selectedDictionary}`); } else { response = await fetch(`/.netlify/functions/getData?&selecteddictionary=${selectedDictionary}`) } const data = await response.json() main.innerHTML = '' x_with_letters(data) } catch (error) { console.log(error) } } // calling function getData(serachValue.toLowerCase()) let quesMark = '' quesMark = "?" function logSubmit(event) { document.querySelector(".fillterWrapper").classList.add("hide") const scrollingElement = (document.scrollingElement || document.body); scrollingElement.scroll({ top: 0, behavior: 'smooth' }); if (ablank) { if (!txtBox.value.includes("?")) { txtBox.value = txtBox.value + quesMark } } let selectedDictionary = document.querySelector('.select_dropDown2').value event.preventDefault(); if (history.pushState) { var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + "search" + "=" + txtBox.value.toLowerCase() + '&' + 'dictionary' + '=' + selectedDictionary + '&' + 'prefix' + '=' + startsWith.value + '&' + 'contains' + '=' + mustInclude.value + '&' + 'suffix' + '=' + endsWith.value + '&' + 'exculde' + '=' + exculdeWith.value + '&' + 'include' + '=' + inculdeWith.value + '&' + 'length' + '=' + wordLength.value; window.history.pushState({ path: newurl }, '', newurl); const params = new URLSearchParams(window.location.search) serachValue = params.get('search') prefixValue = params.get('prefix') containsValue = params.get('contains') suffixValue = params.get('suffix') exculdeValue = params.get('exculde') includeValue = params.get('include') lengthValue = params.get('length') dictonary = params.get('dictionary') gtag('event', 'page_view', { page_location: window.location.pathname + location.search, }) } getData(txtBox.value.toLowerCase()) // addFilterCount() } let selectedDictionary = document.querySelector('.select_dropDown2') selectedDictionary.addEventListener("change", ((e) => { logSubmit(e) })) // applyBtn.addEventListener('submit', logSubmit) form.addEventListener('submit', logSubmit); sortingFilter.addEventListener("change", logSubmit); let moreData = [] let data_index = 25; function x_with_letters(data) { data_index = 25 moreData = [] document.querySelector(".sortingFilters").style.display = "flex" main.innerHTML = "" if (typeof data === 'string') { document.querySelector(".sortingFilters").style.display = "none" errorMsg.innerHTML = 'No words found' wordCount.innerHTML = `Found 0 words with letters ${serachValue.split( '' )}` } else { let newWordsLength = 0 let filterData = '' let dataArr = [] if (letterLen) { filterData = data.filter((item) => item.length == letterLen) } if (prefixValue) { filterData = filterData.filter((item2) => item2.startsWith(prefixValue.toLowerCase()) ) startsWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" startsWith.classList.add('tick') startsWith.value = prefixValue } else { startsWith.classList.remove('tick') } if (containsValue) { filterData = filterData.filter((item) => item.includes(containsValue.toLowerCase()) ) mustInclude.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" mustInclude.classList.add('tick') mustInclude.value = containsValue } else { mustInclude.classList.remove('tick') } if (suffixValue) { filterData = filterData.filter((item) => item.endsWith(suffixValue.toLowerCase()) ) endsWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" endsWith.classList.add('tick') endsWith.value = suffixValue } else { endsWith.classList.remove('tick') } if (exculdeValue) { let data = [] filterData.map((item) => { let check = false for (let e = 0; e < exculdeValue.length; e++) { const element = exculdeValue[e].toLowerCase() if (item.includes(element)) { check = true break } else { check = false } } if (check === false) { data.push(item) } }) exculdeWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" exculdeWith.classList.add('tick') exculdeWith.value = exculdeValue filterData = data } else { exculdeWith.classList.remove('tick') } if (includeValue) { let data = [] filterData.map((item) => { let check = false for (let e = 0; e < includeValue.length; e++) { const element = includeValue[e].toLowerCase() if (!item.includes(element)) { check = true break } else { check = false } } if (check === false) { data.push(item) } }) inculdeWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" inculdeWith.classList.add('tick') inculdeWith.value = includeValue filterData = data } else { inculdeWith.classList.remove('tick') } if (letterLen) { wordLength.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg" } if (filterData.length === 0) { main.innerHTML += '' errorMsg.innerHTML = 'No words Found with this length' } else { newWordsLength += filterData.length filterData = sortWords(filterData); moreData.push(filterData) let itemLength = '' let result = filterData.map((item) => { let itemHtml = ""; itemLength = item.length let ScrabbleLetterScore = ScrabbleScore() sum = 0 item = item.toLowerCase() for (let i = 0; i < item.length; i++) { sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters } wordLength.value = itemLength if (serachValue) { var text1 = serachValue.replace('?', '') var text2 = item var text3 = item function findIndex(str, char) { const strLength = str.length const indexes = [] let newStr = str while (newStr && newStr.indexOf(char) > -1) { indexes.push(newStr.indexOf(char) + strLength - newStr.length) newStr = newStr.substring(newStr.indexOf(char) + 1) newStr = newStr.substring(newStr.indexOf(char) + 1) } return indexes } let chars = text1.split('') let indexs = [] chars.map((i) => { let findIndexes = findIndex(text3, i) if (findIndexes.length > 0) { text3 = text3.split('') text3[findIndexes] = '$' text3 = text3.join('') indexs = [...indexs, ...findIndexes] } }) text2.split('').map((itemValue, index) => { let check = indexs.find((i) => i === index) if (check !== undefined) { itemHtml += `${itemValue}` } else { itemHtml += `${itemValue}` } }) } else { itemHtml = item } dataArr.push(item) return ` ${itemHtml} ${sum} ` }) home_page_search_result.href = homePageSearchResult home_page_search_result.innerHTML = `See words of any length with letters ${serachValue.split("")}` result = result.slice(0, 25) main.innerHTML += `

${itemLength} Letter Words

${result.join("")}
`; showMoreLimit() } if (serachValue) { wordCount.innerHTML = `Found ${newWordsLength} words with letters with ${serachValue.split( '' )}` } else { let startwithMsg = "" let endwithMsg = "" let containsMsg = "" let lengthMsg = "" let inputVal = "" if (serachValue) { inputVal = `${input.value.split("")} ` } if (prefixValue) { startwithMsg = `starting with ${prefixValue.split("")}` } if (suffixValue) { endwithMsg = `ending with ${suffixValue.split("")} ` } if (containsValue) { containsMsg = `containing with ${containsValue.split("")} ` } if (lengthValue) { lengthMsg = `with ${lengthValue} letter words` } let msg = ` Found ${newWordsLength} words with letters ${lengthMsg} ${inputVal} ${startwithMsg} ${endwithMsg} ${containsMsg} ` wordCount.innerHTML = `${msg} ` } } } async function getMoreWords() { let flattenedArray = moreData.flat(); let uniqueArray = [...new Set(flattenedArray)]; return uniqueArray } async function showMoreWords(e) { try { let showmore = e.parentElement.children[0]; let id = showmore.id; document.getElementById(id).innerHTML = `Loading...`; let content_area = document.getElementById("alpha_" + id).getElementsByClassName("wordList")[0]; const result = await getMoreWords(); let full_words = result.filter((item) => item.length === Number(id)); console.log(data_index); if (data_index < full_words.length) { for (let d = data_index; d < data_index + 25; d++) { if (full_words[d] != undefined) { let itemHtml = ""; if (serachValue) { var text1 = serachValue.replace("?", ""); var text2 = full_words[d]; var text3 = full_words[d]; let chars = text1.split(""); let indexs = []; chars.map((i) => { let findIndexes = findIndex(text3, i); if (findIndexes.length > 0) { text3 = text3.split(""); text3[findIndexes] = "$"; text3 = text3.join(""); indexs = [...indexs, ...findIndexes]; } }); text2.split("").map((itemValue, index) => { let check = indexs.find((i) => i === index); if (check !== undefined) { itemHtml += `${itemValue}`; } else { itemHtml += `${itemValue}`; } }); } else { itemHtml = full_words[d] } let ScrabbleLetterScore = ScrabbleScore(); let points = 0; full_words[d] = full_words[d].toLowerCase(); for (let i = 0; i < full_words[d].length; i++) { points += ScrabbleLetterScore[full_words[d][i]] || 0; // for unknown characters } let span = document.createElement("span"); span.setAttribute("class", "points"); span.setAttribute("value", `${points}`); span.innerHTML = `${points}`; let a = document.createElement("a"); a.setAttribute("class", "anchor__style"); a.setAttribute("target", "_blank"); a.setAttribute("href", "/word-meaning?search=" + full_words[d].replace(/<\/?[^>]+>/gi, '')); a.setAttribute("data-original-title", `Lookup ${full_words[d].replace(/<\/?[^>]+>/gi, '')} in Dictionary`) a.innerHTML = ` ${itemHtml} `; a.appendChild(span) content_area.appendChild(a); } } document.getElementById(id).innerHTML = `More Words`; data_index += 25; } else { data_index = 25 document.getElementById(id).style.display = "none"; } } catch (error) { console.error("Error fetching or processing data:", error); } } function showMoreLimit() { let tableFooter = document.querySelector(".btn-container"); let wordList = document.querySelector(".wordList"); let final_data = wordList.getElementsByClassName("anchor__style"); if (final_data.length < 25) { tableFooter.style.display = "none"; } } function sortWords(data) { if (sortingFilter.selectedIndex == 0) { return data; } else if (sortingFilter.selectedIndex == 1) { return data.sort(); } else if (sortingFilter.selectedIndex == 2) { return data.reverse(); } else if (sortingFilter.selectedIndex == 3) { var tempArr = []; var newArray = []; data.map((item) => { let newWordsLength = 0; if (item.length === 1) { ok = false; newWordsLength = newWordsLength - 1; } else { let ScrabbleLetterScore = ScrabbleScore(); let points = 0; item = item.toLowerCase(); for (let i = 0; i < item.length; i++) { points += ScrabbleLetterScore[item[i]] || 0; // for unknown characters } const value = { words: item, points: points, }; newArray.push(value); } }); newArray.sort(function (a, b) { return b.points - a.points; }); newArray.map((ele) => { tempArr.push(ele.words); }); return tempArr; } } function findIndex(str, char) { const strLength = str.length; const indexes = []; let newStr = str; while (newStr && newStr.indexOf(char) > -1) { indexes.push(newStr.indexOf(char) + strLength - newStr.length); newStr = newStr.substring(newStr.indexOf(char) + 5); newStr = newStr.substring(newStr.indexOf(char) + 5); } return indexes; }