let xrx52m = {"seo":[],"pjt":"il_tc9vwy2sqkkyh5b7","code":"U2FsdGVkX18v25%2Fjrj%2B7wKzR39oXAABdZRz96CaVi20S5LnKUe0AVVZenjPY0PLvM45vKokc%2B5iwPLuVWmhaHlQtNnnYyR%2FCuZY%2BqsV%2Bmt%2F1sWfi2Y9xAo8v%2Fgi66nfAqBa9Ul4LarGkqglpZhn7UatPRSZ7641pLX0S0zO8RgH%2F7sToZ8yUt9lmezWEf5BWStIzwj2AER1nPajLx8dqsb7OqO%2Ba6moI2FTfrKHDi9syEejdCF6fJFqcJAR9D7P%2FAtC1enJUUQgnSjaND10pLip7I8%2Fqj37Dm1LnGAQwrS8%3D","menu":{"bg":"white","color":"black","dark":false,"flags":true,"short":false,"pos":"embed"},"origLang":"HU","languages":["DE","EN-US"],"all":["DE","EN-US","CO"],"baseUrl":"api.inilingo.com","xlang":"","wp":"true"} const xrxiniLingoBeforeLoad = (basics)=>{ // handle it at the very beginning before anything loads // return false to stop loading IniLingo // you can use the following data: // let basics = {"pjt": string, "origLang": string,"languages":string[]} const pathname = new URL(document.location.href).pathname if (pathname.includes("/category/") || pathname.includes("/tag/") || pathname.includes("/author/") || pathname.includes("/publikaciok/") || pathname.includes("a-haszonberleti-dij-emelese-de-hogyan-kell-szabalyosan-alkalmazni/") || pathname.includes("termofold-haszonberleti-dij-emeleserol-szolo-uj-szabalyokrol/") || pathname.includes("az-uj-videkfejlesztesi-programok-eseteben")){ return false } return true } const xrxiniLingoAfterLoad = (iniLingo, currentLang, languages, menu) => { // run this when the iniLingo script already loaded // iniLingo.setLang("") console.log(currentLang) if (currentLang){ document.getElementById("menu-item-115").remove() if (document.getElementById("Filters")){ document.getElementById("Filters").innerHTML="" } } } // delay running above script by x milliseconds const xrxiniAfterLoadDelay = 500 const xrxIniLingoHandleHref = (href) => { // incoming hrefs for links return the transformed href return false } const xrxIniLingoFilterElement = (transElements) => { // return false if not to be translated } // css selector of element to insert language menu into const xrxIniLingoMenuSelector = [".top_bar_left"] const xrxIniLingoMenuEmptyParent = false; const xrxIniLingoMenuStyle = "position: absolute;display: flex;scale: 0.8;right: -14px;bottom: -42px;background: rgba(255,255,255,0.5);padding-top: 3px;padding-left: 6px;z-index:5000;border-radius:3px;" // add image replacements here per language const imgx2list = [ ["https://drjobbagykrisztina.hu/wp-content/uploads/2015/11/logo.png", { "DE": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogo.png", "EN-US": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogoen.png" }], ["https://drjobbagykrisztina.hu/wp-content/uploads/2015/11/logo.png", { "DE": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogo.png", "EN-US": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogoen.png" }], ["https://drjobbagykrisztina.hu/wp-content/uploads/2015/11/logo.png", { "DE": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogo.png", "EN-US": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogoen.png" }], ["https://drjobbagykrisztina.hu/wp-content/uploads/2015/11/logo.png", { "DE": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogo.png", "EN-US": "https://storage.googleapis.com/inilingo0.appspot.com/anwlogoen.png" }] ] function xrmftStyleAdd(lang){var xrmftgstyle = document.createElement('style');xrmftgstyle.innerHTML = ``;xrmftgstyle.id='xrtmfg';document.getElementsByTagName('head')[0].appendChild(xrmftgstyle); if (lang){var xrmftgstyleLang = document.createElement('style');xrmftgstyleLang.innerHTML = `body { background: blue} #slider-1-slide-8-layer-2 { scale: 0.85 !important; } #slider-1-slide-11-layer-2 { scale: 0.85 !important; margin-left: 55px !important; } #slider-1-slide-3-layer-2 { scale: 0.85 !important; } #slider-1-slide-3-layer-5 { scale: 0.85 !important; } #slider-1-slide-11-layer-3 { scale: 0.85 !important; } #slider-1-slide-2-layer-2 { margin-left: -30px !important; } @media (min-width: 757px){ #slider-1-slide-2-layer-2 { margin-left: -40px !important; } } #slider-1-slide-3-layer-2 { margin-left: 56px !important; } #slider-1-slide-8-layer-0 { padding-left: 10px !important; padding-right: 5px !important; } `;xrmftgstyleLang.id='xrtmfglang';document.getElementsByTagName('head')[0].appendChild(xrmftgstyleLang); }} function xrmUnDim() { const lElement = document.getElementById("grxrm") if (lElement) { lElement.disabled = true; lElement.parentNode.removeChild(lElement); } } // const imgx2list = [ // ["https://www.nemzetkoziszallitas.eu/nmztkzszllts17/wp-content/uploads/sebestyenbt-logo1-1.png", { "EN-US": "https://www.nemzetkoziszallitas.eu/nmztkzszllts17/wp-content/uploads/sebestyenbt-logo-english.png" }] // ] if (new URL(document.location.href).pathname === "/penztar/" && localStorage.getItem("inilingo-lang") && xrx52m.wp) { document.location.href = document.location.href.replace("/penztar/", "/" + localStorage.getItem("inilingo-lang").toLowerCase().substring(0, 2) + "/penztar/") } function iniLingoX2rm(firstTime = false) { const url = new URL(document.location.href) const baseUrl = url.host.replace(/^..(-..)?\./, "") + url.pathname + url.search const wpBaseUrlLang = "https://" + url.host + "/" + xrx52m.xlang.toLowerCase().substring(0, 2) + "/" const wpBaseUrl = "https://" + url.host + "/" const langObj = { "CO": { "language": "CO", "raw": "Counter" }, "BG": { "language": "BG", "raw": "Български" }, "CS": { "language": "CS", "raw": "Česky" }, "DA": { "language": "DA", "raw": "Dansk" }, "DE": { "language": "DE", "raw": "Deutsch" }, "EL": { "language": "EL", "raw": "Ελληνική" }, "EN-GB": { "language": "EN-GB", "raw": "English (British)" }, "EN-US": { "language": "EN-US", "raw": "English (American)" }, "ES": { "language": "ES", "raw": "Español" }, "ET": { "language": "ET", "raw": "Eesti" }, "FI": { "language": "FI", "raw": "Suomalainen" }, "FR": { "language": "FR", "raw": "Français" }, "HU": { "language": "HU", "raw": "Magyar" }, "ID": { "language": "ID", "raw": "Bahasa Indonesia" }, "IT": { "language": "IT", "raw": "Italiano" }, "JA": { "language": "JA", "raw": "日本語" }, "KO": { "language": "KO", "raw": "한국어" }, "LT": { "language": "LT", "raw": "Lietuvių kalba" }, "LV": { "language": "LV", "raw": "Latviešu" }, "NB": { "language": "NB", "raw": "Norsk" }, "NL": { "language": "NL", "raw": "Nederlands" }, "PL": { "language": "PL", "raw": "Polski" }, "PT-BR": { "language": "PT-BR", "raw": "Português (brasileiro)" }, "PT-PT": { "language": "PT-PT", "raw": "Português" }, "RO": { "language": "RO", "raw": "Românesc" }, "RU": { "language": "RU", "raw": "Русский" }, "SK": { "language": "SK", "raw": "Slovenská" }, "SL": { "language": "SL", "raw": "Slovinčina" }, "SV": { "language": "SV", "raw": "Svenska" }, "TR": { "language": "TR", "raw": "Türkçe" }, "UK": { "language": "UK", "raw": "Українська" }, "ZH": { "language": "ZH", "raw": "中文(简体)" } }; const restoreOpacity = () => { setTimeout(() => { document.documentElement.classList.remove("zero") xrmUnDim() }, 25) } const addHrefLang = (lang) => { const s = document.createElement("link") s.hreflang = lang s.rel = "alternate" const url = new URL(document.location.href) let baseUrl = url.protocol + "//" + url.host.replace(/^..(-..)?\./, "") + url.pathname if (xrx52m.wp) { const split = url.pathname.split("/") if (split[1] === xrx52m.xlang.toLowerCase().substring(0, 2)) { baseUrl = url.protocol + "//" + url.host + (xrx52m.origLang.toLowerCase() !== lang ? ("/" + lang.toLowerCase().substring(0, 2) + "/") : "/") + split.slice(2).join("/") } else { baseUrl = url.protocol + "//" + url.host + (xrx52m.origLang.toLowerCase() !== lang ? ("/" + lang.toLowerCase().substring(0, 2) + "/") : "/") + split.slice(1).join("/") } } else { if (xrx52m.origLang.toLowerCase() !== lang) { baseUrl = baseUrl.replace(/^https:\/\//, "https://" + lang + ".") } } s.href = baseUrl document.head.appendChild(s) } const addCanonical = () => { const s = document.createElement("link") s.rel = "canonical" const url = new URL(document.location.href) const baseUrl = url.protocol + "//" + url.host + url.pathname s.href = baseUrl document.head.appendChild(s) } if (xrx52m.wp) { [...xrx52m.languages.map(item => item.toLowerCase()), xrx52m.origLang.toLowerCase()].forEach(item => addHrefLang(item)) } else { [...xrx52m.seo.map(item => item.toLowerCase().substring(0, 2)), xrx52m.origLang.toLowerCase().substring(0, 2)].forEach(item => addHrefLang(item)) } function deNumber(text) { //console.log(text) const foundNumbers = text.match(/\d+(?!\/?>)/g) if (!foundNumbers) { return [text, {}] } const numbers = Array.from(foundNumbers) const list = text.split(/\d+(?!\/?>)/g) let orig = {} let newText = "" for (let n = 0; n < list.length - 1; n++) { newText += list[n] + (123 + n + "") orig[123 + n + ""] = numbers[n] } newText += list[list.length - 1] return [newText, orig] } function reNumber(text, orig) { const foundNumbers = text.match(/\d+(?!\/?>)/g) if (!foundNumbers) { return text } const numbers = Array.from(foundNumbers) const list = text.split(/\d+(?!\/?>)/g) let newText = "" for (let n = 0; n < list.length - 1; n++) { newText += list[n] + (orig[numbers[n]] || numbers[n]) } newText += list[list.length - 1] return newText } function verifyEmail(value) { var emailRex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (emailRex.test(value)) { return true; } return false; }; function getCookie(name) { var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); if (match) return match[2]; } function getCoords(elem) { // crossbrowser version var box = elem.getBoundingClientRect(); var body = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop; var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft; var clientTop = docEl.clientTop || body.clientTop || 0; var clientLeft = docEl.clientLeft || body.clientLeft || 0; var top = box.top + scrollTop - clientTop; var left = box.left + scrollLeft - clientLeft; return { top: Math.round(top), left: Math.round(left) }; } function getOneUrl() { let newUrl = new URL(document.location.href).pathname if (xrx52m.wp && currentLang && (newUrl.indexOf("/" + currentLang.toLowerCase().substring(0, 2) + "/") === 0 || newUrl === "/" + currentLang.toLowerCase().substring(0, 2))) { newUrl = newUrl.substring(3) if (!newUrl) { newUrl = "/" } } newUrl = newUrl.replace(/\//g, "x2F") return newUrl; } let currentItems = new WeakMap() var origLang = xrx52m.origLang var iCode = xrx52m.code var inirxhands = [] var inirxhandlingItems = false; var inirxprocessing = false; var apiKey = xrx52m.pjt let inirxfullTranslation = {} let cantranslate = true; let addedNodes = new Map() let rsSlices = new Map() var fullFile = {} var currentLang = "" var count = 1 var pendingTranslations = {} var origNodes = new Map(); var sentenceNodes = new Map(); var handledNodes = new WeakMap(); var markup = {}; var markupElement = null; var menu = xrx52m.menu || { position: "bottomleft", short: false, flags: true } var memory = {} var testing = decodeURIComponent(new URL(document.location.href).searchParams.get("testing") || sessionStorage["inilingo-testing"] || "") let languages = [] if (testing) { sessionStorage["inilingo-testing"] = testing } languages = testing || document.location.href.includes("customers.inilingo.com") ? xrx52m.all : xrx52m.languages if (languages.length === 0) { return; } markup.markup = new URL(document.location.href).searchParams.get("mrkup") if (markup.markup) { // document.cookie = "inilingo-markup=" + markup.markup } let nUrl = new URL(document.location.href) currentLang = localStorage.getItem("inilingo-lang") if (nUrl.searchParams.get("lang") && langObj[nUrl.searchParams.get("lang").toUpperCase()]) { currentLang = (nUrl.searchParams.get("lang").split("?")[0] || "").toUpperCase() } if (langObj[nUrl.hostname.split(".")[0].toUpperCase()]) { currentLang = nUrl.hostname.split(".")[0].toUpperCase() } if (xrx52m.seo.length && (xrx52m.seo.length === xrx52m.languages.length) && !langObj[nUrl.hostname.split(".")[0].toUpperCase()] && currentLang !== "CO" && !xrx52m.all.includes(currentLang)) { currentLang = "" } if (!testing && !languages.includes(currentLang)) { currentLang = "" } if (xrx52m.xlang && languages.includes(xrx52m.xlang)) { currentLang = xrx52m.xlang } else { if (xrx52m.wp) { currentLang = "" } } localStorage.setItem("inilingo-lang", currentLang) xrmftStyleAdd(currentLang) var currentUrl = getOneUrl() if (currentLang && nUrl.hostname.split(".")[0].toUpperCase() === currentLang) { if (!document.querySelector("link[rel='canonical'")) { addCanonical() } } if (currentLang) { inirxloadTranslation(currentLang) } else { restoreOpacity() } function ixImgHanding(currentLang) { if (imgx2list) imgx2list.forEach(item => { const orig = item[0] imgx2 = document.querySelector("img[src='" + orig + "']") if (imgx2) { imgx2.src = currentLang ? item[1][currentLang] : item[0] imgx2.setAttribute("data-xrset", orig) } }) } var isReady = false document.addEventListener('DOMContentLoaded', () => { isReady = true; inirxhandleItems() }) var css = '[data-mkup]:hover { outline: 2px solid yellow; }' var head = document.head || document.getElementsByTagName('head')[0] var style = document.createElement('style'); head.appendChild(style); if (style.styleSheet) { // This is required for IE8 and below. style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } function isInside(e, box) { let x = e.x let y = e.y if (x > box.x && y > box.y && x < box.x + box.width && box.y < box.y + box.height) { return true } } const compareTags = (left, right) => { const leftTags = left.matchAll(/<\/?k\/?>/g); const rightTags = right.matchAll(/<\/?k\/?>/g); let leftArray = Array.from(leftTags).map((item) => item[0]); let rightArray = Array.from(rightTags).map((item) => item[0]); if (leftArray.length !== rightArray.length) { return false; } for (let i = 0; i < leftArray.length; i++) { if (leftArray[i] !== rightArray[i]) { return false; } } return true; }; function escapeHtml(unsafe) { unsafe = unsafe || "" return unsafe.replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function inirxgetDisplayType(element) { if (!element || ["LI", "BUTTON"].includes(element.tagName)) { return "" } if (["SPAN"].includes(element.tagName) && xrx52m.pjt === "il_yf6b55qp4duh6pya") { return "inline" } var cStyle = element.currentStyle || window.getComputedStyle(element, ""); return cStyle.display; } const observerOptions = { characterData: true, subtree: true, childList: true, attributes: true, attributeFilter: ["content", "placeholder"] }; const title = document.querySelector("title") const description = document.head.querySelector("meta[name='description']") if (title) { inirxhands.push(title) } if (description) { inirxhands.push(description) } ixImgHanding(currentLang) //inirxhands.push(description) const logChanges = function (mutations) { let baci = 0 if (!currentLang) { return; } if (document.documentElement.classList.contains("translated-ltr") || document.documentElement.classList.contains("translated-rtl")) { return; } mutations.forEach(function (mutation) { if (mutation.target.tagName === "TITLE") { if (handledNodes.has(mutation.target)) { handledNodes.delete(mutation.target) } else { translateTitle(inirxfullTranslation, mutation.target) } } // if (mutation.target.getAttribute && mutation.target.getAttribute("placeholder")) { // if (handledNodes.has(mutation.target)) { // handledNodes.delete(mutation.target) // } else { // inirxhands.push(mutation.target) // } // } if (mutation.target.tagName === "META") { if (mutation.target.name === "description") { if (handledNodes.has(mutation.target)) { handledNodes.delete(mutation.target) } else { translateMeta(inirxfullTranslation, mutation.target) } } } if (mutation.addedNodes.length) { for (let l = 0; l < mutation.addedNodes.length; l++) { let node = mutation.addedNodes[l] if (!document.body || !document.body.contains(node) || node === document.body) { return } if (["SCRIPT", "IFRAME", "STYLE", "G"].includes(node.tagName)) { return; } if (node.nodeType === Node.ELEMENT_NODE) { inirxhands.push(node) } } } if (mutation.type === "characterData") { let node = mutation.target if (node.nodeType === Node.TEXT_NODE && (node.parentNode && !["SCRIPT", "STYLE", "HEAD", "IFRAME"].includes(node.parentNode.tagName))) { if (handledNodes.has(node)) { handledNodes.delete(node) } else { console.log("baki") if (!origNodes.has(node) && node.textContent.replace(/<.*?>/g, "").replace(/[\d,. ?!-(){}]/g, "").trim()) { origNodes.delete(node) inirxhands.push(node) baci++ } } } } }) if (!inirxhandlingItems) { inirxhandlingItems = true inirxhandleItems() } } const observer = new MutationObserver(logChanges); observer.observe(document.documentElement, observerOptions); function replaceNodes(transElements, translation, orig = "") { const reps = {} //console.log(translation) // if (translation.includes("HUF")) { // console.log(translation) // console.log(transElements) // } Array.from(translation.matchAll(/<([^>]+)>([^<]+)?/g)).forEach((item) => { reps[item[1].replace("/", "xxm")] = (item[2] || "").replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&") }) let newArray = [] // if (transElements[0][0].nodeType === Node.ELEMENT_NODE && translation.match(/^([^<]+)/)) { // const t = document.createTextNode("") // transElements[0][0].before(t) // newArray.push(t,"text",translation.match(/^([^<]+)/)[1]) // } //console.log(translation) const p = translation.replace(/<([^/>]+)>/g, "<$1llhlmx>").replace(/>/g, ">gzzzm").replace(/<\//g, "/g, "xxm>").split(/[<>]/g).map(item => { if (item.startsWith("xxm")) { return [item, "close"] } else if (item.endsWith("xxm")) { return [item, "fixed"] } else if (item.includes("gzzzm")) { return [item.replace("gzzzm", ""), "text"] } else if (item.includes("llhlmx")) { return [item.replace("llhlmx", ""), "newparent"] } else { return [item, "text"] } } ).filter(item => item[0].trim()) let xc = 0 //console.log(translation) //console.log([...transElements]) if (p.length > 1) { //console.log(transElements) //console.log("----------") let transElements2 = [...transElements] let frontText = null; for (let n = 0; n < p.length; n++) { const el = p[n] if (!transElements2[n]) { const xt = document.createTextNode("") transElements2.push([xt, "text", ""]) handledNodes.set(xt, true) origNodes.set(xt, true) continue } if (transElements2[n][1] === "deadtext") { transElements2[n][0].textContent = "" handledNodes.set(transElements2[n][0], true) origNodes.set(transElements2[n][0], true) transElements2.splice(n, 1) continue } if (el[1] === "text") { //console.log(xc) //console.log(p) //console.log(transElements2) if (transElements2[n][1] !== "text") { const t = document.createTextNode("") if (n > 0) { if (transElements2[n - 1][1] === "newparent") { transElements2[n - 1][0].prepend(t) } else { transElements2[n - 1][0].after(t) } } else { frontText = t; } origNodes.set(t, true) transElements2.splice(n, 0, [t, "text", el[0]]) // const nextTextIndex = transElements2.findIndex((item,index)=>item[1]==="text" && index>xc) // const newPart = transElements2.slice(nextTextIndex,nextTextIndex+1) // transElements2.splice(nextTextIndex,newPart.length) // transElements2.splice(xc,0,...newPart) } xc++ continue } //console.log(p[n]) // while (transElements2[xc] && ["text","deadtext"].includes(transElements2[xc][1])){ // xc++ // } if (el[1] === "newparent") { // console.log(xc) // console.log(el[0]) // console.log(transElements2[xc]) // console.log("----------") //console.log(transElements2[xc]) if (el[0] === transElements2[xc][2]) { xc++ continue } if (n == 0) { transElements2[0][0].before(transElements2.find(item => item[2] === el[0])[0]) } else { if (transElements2[n - 1][1] === "newparent") { // console.log([...p]) // console.log(n) // console.log([...transElements2]) // console.log(transElements2[n - 1]) // console.log(transElements2.find(item => item[2] === el[0])[0]) // console.log(el[0]) transElements2[n - 1][0].prepend(transElements2.find(item => item[2] === el[0])[0]) } else { transElements2[n - 1][0].after(transElements2.find(item => item[2] === el[0])[0]) } } //console.log("cutting") const startIndex = transElements2.findIndex(item => item[2] === el[0]) let endIndex = transElements2.findIndex(item => item[2] === "xxm" + el[0]) // while(transElements2[endIndex+1] && transElements2[endIndex+1][1].includes("text")){ // endIndex++ // } const newPart = transElements2.slice(startIndex, endIndex + 1) //console.log([...transElements2]) //console.log(startIndex) //console.log(endIndex) //console.log(el) //console.log([...transElements2]) transElements2.splice(startIndex, endIndex - startIndex + 1) //console.log([...transElements2]) transElements2.splice(n, 0, ...newPart) //console.log([...transElements2]) //console.log("----------") xc += endIndex - startIndex - 1 } if (el[1] === "fixed") { //console.log(el[0]) //console.log(transElements2[xc]) if (el[0] === transElements2[n][2]) { xc++ continue } const startIndex = transElements2.findIndex(item => item[2] === el[0]) let endIndex = startIndex // while(transElements2[endIndex+1] && transElements2[endIndex+1][1].includes("text")){ // endIndex++ // } const newPart = transElements2.slice(startIndex, endIndex + 1) transElements2.splice(startIndex, newPart.length) transElements2.splice(n, 0, ...newPart) xc++ } if (el[1] === "close") { if (el[0] === transElements2[xc][2]) { xc++ continue } let myEl = transElements2.find(item => item[2] === el[0])[0] const endPoint = transElements2.findIndex(item => item[2] === el[0]) const ps = [] for (let b = endPoint; b < transElements2.length; b++) { if (ps.length) { } else { if (transElements2[b][1] === "newparent") { ps.push(transElements2[b][2]) } else if (transElements2[b][1] === "close") { ps.pop() } else { myEl.after(transElements2[b][0]) myEl = transElements2[b][0] } } } //console.log("cutting") const startIndex = transElements2.findIndex(item => item[2] === el[0]) const newPart = transElements2.slice(startIndex, startIndex + 1) //console.log([...transElements2]) //console.log(startIndex) //console.log(endIndex) //console.log(el) //console.log([...transElements2]) transElements2.splice(startIndex, 1) //console.log([...transElements2]) transElements2.splice(n, 0, ...newPart) //console.log([...transElements2]) //console.log("----------") xc++ } } if (frontText) { //console.log("aaaachim") //console.log(frontText) transElements2[1][0].before(frontText) } for (let k = p.length; k < transElements2.length; k++) { if (transElements2[k][1] === "text") { transElements2[k][0].textContent = "" handledNodes.set(transElements2[k][0], true) origNodes.set(transElements2[k][0], true) } } transElements = [...transElements2.slice(0, p.length)] } if (transElements[0][1] !== "text" && p[0][1] === "text") { const t = document.createTextNode("") transElements[0][0].before(t) origNodes.set(t, { text: "", element: t }) newArray.push([t, "text", p[0][0]]) } // for (let n=0;n").replace(/&/g, "&") } else { if (primer) { el[0].textContent = "" } else { el[0].textContent = translation.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&") } } } else { el[0].textContent = "" } } } } if (lastTagEl && reps[tag]) { if (lastTagEl.nextSibling && lastTagEl.nextSibling.nodeType === Node.TEXT_NODE) { lastTagEl.nextSibling.textContent = reps[tag] handledNodes.set(lastTagEl.nextSibling, true) origNodes.set(lastTagEl.nextSibling, { text: reps[tag], element: lastTagEl.nextSibling }) } else { console.log("asdasdf") lastTagEl.after(document.createTextNode(reps[tag])) let t = lastTagEl.nextSibling handledNodes.set(t, true) origNodes.set(t, { text: reps[tag], element: t }) } } } // 25,000HUF19,900HUF // 25,000 HUF HUF 19,900 // const p = translation.split("<").map(item => item.replace(/^\//g,"xxm").replace(/>$/g,"xxm")) // del0 open del0 open // span1 open span1 open // bdi2 open bdi2 open // text, text text, text // span4, open span4, open // text, text // span4, close // bdi2, close // bdi2 close // span1, close // del0, close // ins10, open // span11, open // bdi12, open // text, text // span14, open // text, text // span14, close // bdi12, close // span11, close // ins10, close // text text function findBlockParent(element) { if (element.nodeType === Node.TEXT_NODE) { element = element.parentElement } while (inirxgetDisplayType(element).includes("inline")) { element = element.parentElement } return element } function isInline(element) { if (element.nodeType !== Node.ELEMENT_NODE) { return true } if (element.tagName === "IMG") { return true } if (!element || ["LI", "BUTTON", "BR", "HR"].includes(element.tagName)) { return false } var cStyle = element.currentStyle || window.getComputedStyle(element, ""); return cStyle.display.includes("inline"); } let transElements = [] let myElements = [] let countx = 0 const we = new WeakMap() function readElements(element) { // element = document.createTreeWalker(element, NodeFilter.SHOW_TEXT).nextNode() // if (!element) { return } // if (element.nodeType === Node.TEXT_NODE) { // element = findBlockParent(element) // } //
text this here this can be good
const top = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT) let elementParts = [] let parents = [] let transList = [] let topParent = null; while (top.nextNode()) { let node = top.currentNode if (topParent && findBlockParent(node.parentNode) !== topParent) { topParent = findBlockParent(node); for (let n = parents.length - 1; n >= 0; n--) { elementParts.push([parents.pop(), "close"]) } parents = [] if (elementParts.length) { transList.push([...elementParts]) } elementParts = [] } while (["SCRIPT", "STYLE", "SVG", "IFRAME", "PRE", "NOSCRIPT", "G"].includes(node.tagName)) { node = top.nextSibling() if (!node) { node = top.nextNode() } if (!node) { break; } } while (node && node.id === "criteo-tags-div") { node = top.nextSibling() if (!node) { node = top.nextNode() } if (!node) { break; } } if (!node) { break; } if (node.nodeType === Node.ELEMENT_NODE) { if (node.placeholder) { inirxhands.push(node) } if (node.type === "submit" && node.value) { inirxhands.push(node) } //document.querySelectorAll("[type=submit][value]").forEach((item) => inirxhands.push(item)) if (xrx52m.wp && node.tagName === "A" && node.href && !node.id.includes("xrvxrv") && !node.href.includes("wp-admin") && !node.href.includes("/wp-content/")) { if (node.href.indexOf("//") == 0) { node.href = node.href.replace(/^\/\//, wpBaseUrl) } const href = node.href const langString = xrx52m.xlang.toLowerCase().substring(0, 2) if (href.indexOf(wpBaseUrl) === 0 && href.indexOf(wpBaseUrlLang) === -1) { node.href = href.replace(wpBaseUrl, wpBaseUrlLang) } else if (href.indexOf("/") === 0 && href.indexOf("/" + langString + "/")) { node.href = "/" + langString + href } } if (xrx52m.wp && node.tagName === "FORM" && node.action && !node.action.includes("wp-admin")) { if (node.action.indexOf("//") == 0) { node.action = node.action.replace(/^\/\//, wpBaseUrl) } const action = node.action const langString = xrx52m.xlang.toLowerCase().substring(0, 2) if (action.indexOf(wpBaseUrl) === 0 && action.indexOf(wpBaseUrlLang) === -1) { node.action = action.replace(wpBaseUrl, wpBaseUrlLang) } else if (action.indexOf("/") === 0 && action.indexOf("/" + langString + "/")) { node.action = "/" + langString + action } } if (!isInline(node)) { topParent = node; for (let n = parents.length - 1; n >= 0; n--) { elementParts.push([parents.pop(), "close"]) } parents = [] if (elementParts.length) { transList.push([...elementParts]) } elementParts = [] continue; } if (parents.length) { for (let n = parents.length - 1; n >= 0; n--) { if (node.parentNode !== parents[n]) { elementParts.push([parents.pop(), "close"]) } else { break; } } } if (node.childNodes.length) { //if (node.childNodes.length>1 || node.childNodes[0].nodeType===Node.TEXT_NODE){ elementParts.push([node, "newparent"]) parents.push(node) // } } else { if (elementParts.length) { elementParts.push([node, "fixed"]) } } } if (node.nodeType === Node.TEXT_NODE) { if (parents.length) { for (let n = parents.length - 1; n >= 0; n--) { if (node.parentNode !== parents[n]) { elementParts.push([parents.pop(), "close"]) } else { break } } } if (elementParts.length && elementParts[elementParts.length - 1][1] == "text") { elementParts.push([node, "deadtext"]) } else if (node.textContent.trim().length) { elementParts.push([node, "text"]) } } } if (elementParts.length) { for (let n = parents.length - 1; n >= 0; n--) { elementParts.push([parents.pop(), "close"]) } transList.push([...elementParts]) } //console.log("running") let currentRSId = null; for (let n = 0; n < transList.length; n++) { if (transList[n].length < 5) { // console.log("alfa") //console.log(transList[n]) } while (transList[n].length > 1 && (transList[n][0][0] === transList[n][transList[n].length - 1][0]) && transList[n][1][1] !== "deadtext") { transList[n].pop() transList[n].shift() } while (transList[n].length && transList[n][0][1] === "fixed") { transList[n].shift() } while (transList[n].length && transList[n][transList[n].length - 1][1] === "fixed") { transList[n].pop() } while (transList[n].length > 1 && (transList[n][0][0] === transList[n][transList[n].length - 1][0]) && transList[n][1][1] == "deadtext") { transList[n].pop() transList[n].shift() } if (transList[n].length < 5) { //console.log(transList[n]) } let text = "" const newMain = [] //console.log(transList[n]) let isNew = false let rs = false; transList[n].forEach(([node, type], index) => { const tagName = node.tagName ? node.tagName.toLowerCase() : "" if (node.nodeType === Node.TEXT_NODE && !origNodes.has(node)) { isNew = true const rs = node.parentElement.closest(".rs-layer") if (rs) if (rsSlices.get(rs.id) && rs.id !== currentRSId) { isNew = false } else { rsSlices.set(rs.id, true); currentRSId = rs.id; } } if (type == "newparent") { text = text + "<" + tagName + index + ">" newMain.push([node, type, tagName + index]) we.set(node, tagName + index) } else if (type == "close") { text = text + "" newMain.push([node, type, "xxm" + we.get(node)]) } else if (type == "fixed") { text = text + "<" + tagName + index + "/>" newMain.push([node, type, tagName + index + "xxm"]) } else if (type == "text") { text = text + escapeHtml(node.textContent.replace(/[\v\s]+/g, " ")) newMain.push([node, type, escapeHtml(node.textContent)]) } else if (type == "deadtext") { text = text + escapeHtml(node.textContent.replace(/[\v\s]+/g, " ")) newMain.push([node, type, escapeHtml(node.textContent.replace(/[\v\s]+/g, " "))]) } }) if (!isNew) { continue } if (rs) { console.log(newMain) } if (text.replace(/<[^>]+>/g, "").trim()) { myElements.push([text.trim(), [...newMain]]) } if (text.includes("<")) { //console.log(text) //console.log(text) } } return myElements } function translateElement1(inirxfullTranslation, element) { let newItems = [] if (element.nodeType === Node.TEXT_NODE) { element = findBlockParent(element) } //console.log("translateelemnt") myElements = [] transElements = [] if (element) { readElements(element) } else { return [] } for (let v = 0; v < myElements.length; v++) { let t = myElements[v][0] transElements = myElements[v][1] if (!t.replace(/<.*?>/g, "").trim()) { continue } const firstTextItem = transElements.find(item => item[1] === "text") if (!firstTextItem) { continue } //console.log(firstTextItem[0]) if (currentItems.has(firstTextItem[0])) { continue } else { currentItems.set(firstTextItem[0], true) } if (transElements[0][0].parentElement.closest("[data-notrans]")) { continue } if (xrxIniLingoFilterElement(transElements)) { continue } if (!t.replace(/<.*?>/g, "").replace(/[\d,. ?!-(){}]/g, "").trim()) { continue } if (t.replace(/<.*?>/g, "").includes("@") && verifyEmail(t)) { continue } // console.log(transElements) // console.log(t) // const [trText, origNumbers] = deNumber(t) //const hash = encodeURIComponent(trText) let hash = encodeURIComponent(t) if (inirxfullTranslation[hash]) { // istranslated //replaceNodes(transElements, reNumber(inirxfullTranslation[hash][0], origNumbers), t) replaceNodes(transElements, inirxfullTranslation[hash][0], t) } else { if (!hash.trim) { continue } if (t.replace(/<.*?>/g, "").match(/\d/)) { const [trText, origNumbers] = deNumber(t) if (inirxfullTranslation[encodeURIComponent(trText)]) { replaceNodes(transElements, reNumber(inirxfullTranslation[encodeURIComponent(trText)][0], origNumbers), t) continue } } //console.log("not translated", decodeURIComponent(hash)) newItems.push([hash, count++, firstTextItem[0]]) if (pendingTranslations[hash]) { pendingTranslations[hash].push(firstTextItem[0]) } else { pendingTranslations[hash] = [] } } } return newItems } const translateTitle = (translation, e) => { if (e.textContent && translation[encodeURIComponent(e.en || e.textContent)]) { if (!e.en) { e.en = e.textContent } handledNodes.set(e, true) e.textContent = translation[encodeURIComponent(e.en || e.textContent)][0] return [] } else { return [[encodeURIComponent(e.en || e.textContent), ++count, e, 1]] } } const translateMeta = (translation, e) => { if (translation[encodeURIComponent(e.en || e.content)]) { if (!e.en) { e.en = e.content } handledNodes.set(e, true) e.content = translation[encodeURIComponent(e.en || e.content)][0] return [] } else { return [[encodeURIComponent(e.en || e.content), ++count, e, 1]] } } // const translateSrc = (translation, e) => { // if (translation[encodeURIComponent(e.en || e.src)]) { // if (!e.en) { e.en = e.src } // handledNodes.set(e, true) // e.src = translation[encodeURIComponent(e.en || e.content)][0] // return [] // } else { // return [[encodeURIComponent(e.en || e.src), ++count, e, 1]] // } // } const translatePlaceholder = (translation, e) => { if (translation[encodeURIComponent(e.en || e.placeholder)]) { if (!e.en) { e.en = e.placeholder } handledNodes.set(e, true) e.placeholder = translation[encodeURIComponent(e.en || e.placeholder)][0] return [] } else { return [[encodeURIComponent(e.en || e.placeholder), ++count, e]] } } const translateSubmitValue = (translation, e) => { if (translation[encodeURIComponent(e.en || e.value)]) { if (!e.en) { e.en = e.value } handledNodes.set(e, true) e.value = translation[encodeURIComponent(e.en || e.value)][0] return [] } else { return [[encodeURIComponent(e.en || e.value), ++count, e]] } } async function inirxhandleItems() { if (!inirxprocessing) { return; } pendingTranslations = {} //console.log("processing") //console.log("handling items") let newUrl = getOneUrl() if (newUrl !== currentUrl) { const editorBox = document.getElementById("xrmxrm77fk") if (editorBox) { editorBox.remove() } currentUrl = newUrl console.log("new url") document.cookie = 'inilingo-markup=;-1; path=/'; markup.markup = "" if (!currentLang) { inirxhands = [] inirxprocessing = false; inirxhandlingItems = false; restoreOpacity() return; } const slug = getOneUrl() if (memory[slug]) { inirxfullTranslation = memory[slug] } else { // document.documentElement.classList.add("zero") xrmDim() document.documentElement.classList.add("xrmxnxmr") document.documentElement.classList.add("zero") if (!markup.markup) { try { const resP = await fetch("https://cdn.inilingo.com/new/" + apiKey + "/" + currentLang + "/" + slug + ".json", { method: "GET", mode: "cors" }) const res = await resP.json() inirxfullTranslation = { ...res } memory[slug] = inirxfullTranslation } catch (e) { console.log("starts with body") inirxhands = [document.body] inirxfullTranslation = {} restoreOpacity() inirxhandleItems() return; } } else { try { const resa = await fetch("https://europe-west4-inilingo0.cloudfunctions.net/api", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ fn: "getChangesPlus", lang: currentLang, code: markup.markup, path: slug }) }) const resi = await resa.text() if (resi === "wrong code" || resi === "timed out") { document.cookie = 'inilingo-markup=;-1; path=/'; restoreOpacity() return; } const tempFile = JSON.parse(resi) fullFile = tempFile.trans Object.keys(tempFile.trans).forEach(item => { inirxfullTranslation[item] = [tempFile.trans[item][0]] }) memory[slug] = inirxfullTranslation } catch (e) { console.log(e) // inirxfullTranslation = {} } } restoreOpacity() } } let translatable = [] let redoElements = [] let repeatObj = {} currentItems = new WeakMap() let xParents = new WeakMap() let newItems = [] //console.log("coming here") inirxhands.forEach(item => { if (item) { if (xParents.has(item.parentNode)) { xParents.set(item, true) return; } else { newItems.push(item) xParents.set(item, true) } } }) inirxhands = [...newItems] while (inirxhands.length > 0) { let e = inirxhands.shift() if (!e) { continue } if (e.closest && e.closest("[data-notrans]")) { continue } let moreToTranslate = [] if (e.placeholder) { moreToTranslate = translatePlaceholder(inirxfullTranslation, e) } else if (e.value && e.type && e.type.toLowerCase() === "submit") { moreToTranslate = translateSubmitValue(inirxfullTranslation, e) } else if (e.tagName === "TITLE") { moreToTranslate = translateTitle(inirxfullTranslation, e) } else if (e.tagName === "META") { moreToTranslate = translateMeta(inirxfullTranslation, e) } else if (e.nodeType === Node.TEXT_NODE) { moreToTranslate = translateElement1(inirxfullTranslation, e) } else { moreToTranslate = translateElement1(inirxfullTranslation, e) } //console.log(moreToTranslate) if (moreToTranslate.length) { // console.log(moreToTranslate) let newTranslation = [] moreToTranslate.forEach(item => { if (!repeatObj[item[0]]) { repeatObj[item[0]] = true; newTranslation.push(item); } }) moreToTranslate = [...newTranslation]; if (!isReady) { // let tempLastItem = moreToTranslate.pop() // if (lastItem && lastItem[3]) { // moreToTranslate = [lastItem, ...moreToTranslate] // } // lastItem = tempLastItem } redoElements = [...redoElements, ...moreToTranslate.map(item => item[2])] } translatable = [...translatable, ...moreToTranslate.map(item => [item[0], item[1], item[3]])] } if (!currentLang) { translatable = [] } translatable = translatable.filter(item => item[0].trim()) // console.log(translatable) if (translatable.length && cantranslate) { inirxprocessing = false; console.log("translating") // console.log(translatable) cantranslate = false; fetch("https://api.inilingo.com", { mode: "cors", method: "POST", headers: { "Content-Type": "application/json", ["CF-IP-" + ((Math.random(0) * 100000) + "").split(".")[0]]: "386" }, body: JSON.stringify({ code: iCode, trans: translatable, url: getOneUrl(), new: true, language: currentLang, novel: true, version: 2 }) }).then(resa => resa.json()).then(resi => { if (resi.error === "nochars") { cantranslate = false; inirxprocessing = true; inirxhandleItems() restoreOpacity() return; } if (document.documentElement.classList.contains("translated-ltr") || document.documentElement.classList.contains("translated-rtl")) { cantranslate = false; inirxprocessing = true; inirxhandleItems() restoreOpacity() return; } const newx = resi //console.log(newx) inirxfullTranslation = { ...inirxfullTranslation, ...newx }; //redoElements.forEach((item, i) => inirxhands.push(item)); inirxhands.push(document.body) const slug = getOneUrl() // console.log(slug) memory[slug] = inirxfullTranslation Object.keys(pendingTranslations).forEach((item) => inirxhands.push(...pendingTranslations[item])) restoreOpacity() inirxprocessing = true; inirxhandleItems() }) } inirxhandlingItems = false } function inirxGetOrigLanguage() { const lang = document.documentElement.lang if (lang) { return lang } return "en" } async function inirxloadTranslation(lang, click = false) { addedNodes.forEach((item, key) => { addedNodes.get(item).remove() }) addedNodes.clear() handledNodes = new WeakMap() if (!click) { xrmDim() document.documentElement.classList.add("xrmxnxmr") document.documentElement.classList.add("zero") } lang = lang || inirxGetOrigLanguage() localStorage.setItem("inilingo-lang", lang) inirxprocessing = false; if (lang === origLang) { currentLang = "" localStorage.setItem("inilingo-lang", "") if (document.querySelector("meta[name='description']")) { document.querySelector("meta[name='description']").content = document.querySelector("meta[name='description']").en } if (document.querySelector("title")) { document.querySelector("title").textContent = document.querySelector("title").en } document.querySelectorAll("[placeholder]").forEach((item) => item.placeholder = item.en) document.querySelectorAll("[type=submit][value]").forEach((item) => item.value = item.en) origNodes.forEach(item => { item.element.textContent = item.text; //handledNodes.set(item.element, true) }) restoreOpacity() return; } else { currentLang = lang const slug = getOneUrl() // console.log(slug) try { if (!markup.markup) { const resP = await fetch("https://cdn.inilingo.com/new/" + apiKey + "/" + currentLang + "/" + slug + ".json", { method: "GET", mode: "cors" }) const res = await resP.json() inirxfullTranslation = { ...res } memory[slug] = inirxfullTranslation } else { const resa = await fetch("https://europe-west4-inilingo0.cloudfunctions.net/api", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ fn: "getChangesPlus", lang: currentLang, code: markup.markup, path: slug }) }) const resi = await resa.text() if (resi === "wrong code" || resi === "timed out") { document.cookie = 'inilingo-markup=;-1; path=/'; restoreOpacity() return; } const tempFile = JSON.parse(resi) fullFile = tempFile.trans Object.keys(tempFile.trans).forEach(item => { inirxfullTranslation[item] = [tempFile.trans[item][0]] }) memory[slug] = inirxfullTranslation restoreOpacity() } } catch (e) { console.log(e) inirxfullTranslation = {} } } if (document.body) { inirxhands.push(document.body) const title = document.querySelector("title") const description = document.head.querySelector("meta[name='description']") if (title) { inirxhands.push(title) } if (description) { inirxhands.push(description) } ixImgHanding(currentLang) document.querySelectorAll("[placeholder]").forEach((item) => inirxhands.push(item)) document.querySelectorAll("[type=submit][value]").forEach((item) => inirxhands.push(item)) restoreOpacity() } inirxprocessing = true; inirxhandleItems() } async function setUpMenu(loaded = false) { console.log("setting up") const flagDiv = document.createElement("div") flagDiv.id = "xrxmxflag" flagDiv.style = xrxIniLingoMenuStyle || "display:flex;align-items:center;justify-content:center;" const mainDiv = document.createElement("div") const langDiv = document.createElement("div") const menuDiv = document.createElement("div") mainDiv.style.border = "1px solid lightgray" menuDiv.style.border = "1px solid lightgray" mainDiv.style.borderRadius = "4px" mainDiv.style.overflow = "hidden" // menuDiv.style.background = menu.bg || "white" // mainDiv.style.background = menu.bg || "white" // mainDiv.style.color = menu.color || "black" // menuDiv.style.color = menu.color || "black" const icon = document.createElement("div") icon.style = "height:23px;position:absolute;bottom:5px;right:5px;z-index:5000;color:" + (menu.color || "#cccccc") icon.innerHTML = '' icon.style.transition = "all 0.3s" mainDiv.style.position = "relative" menuDiv.style.display = "none" menuDiv.style.maxHeight = "350px" menuDiv.style.overflowY = "auto" const docClick = (e) => { menuDiv.style.display = "none"; icon.style.transform = ""; document.removeEventListener("click", docClick) } mainDiv.addEventListener("click", (e) => { e.preventDefault() e.stopPropagation() if (menuDiv.style.display === "block") { menuDiv.style.display = "none"; icon.style.transform = ""; } else { menuDiv.style.display = "block"; icon.style.transform = "rotate(-90deg)"; console.log("click now") document.addEventListener("click", docClick) } }) langDiv.setAttribute("data-notrans", true) langDiv.style.minWidth = menu.short ? "100px" : "183px" langDiv.style.userSelect = "none" langDiv.style.fontFamily = "Tahoma" langDiv.style.minHeight = "32px" langDiv.style.zIndex = 500000 // langDiv.style.background = menu.bg || "white" // langDiv.style.color = menu.color || "black" const langFlagEn = document.createElement("div") langFlagEn.style = "padding:2px;" flagDiv.appendChild(langFlagEn) const langEn = document.createElement("div") const langName = langObj[origLang][menu.short ? "language" : "raw"].substring(0, menu.short ? 2 : 1000) langEn.classList.add("inirxmenuitem") langEn.style.color = menu.color || "black" langEn.style.background = menu.bg || "white" if (xrx52m.seo.length) { let add = "" if (xrx52m.seo.length !== xrx52m.languages.length) { add = "?lang=" + origLang } langEn.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langName + "
" langFlagEn.innerHTML = "" } else { if (xrx52m.wp) { let urlParts = baseUrl.split("/") let link = urlParts[0] + '/' if (currentLang && currentLang.toLowerCase().substring(0, 2) === urlParts[1]) { link = link + "/" + urlParts.slice(2).join("/") } else { link = link + "/" + urlParts.slice(1).join("/") } link = link.replace(/\/\/$/, "/").replace(/\/\//g, "/") langEn.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langName + "
" langFlagEn.innerHTML = "" // langEn.addEventListener("click", (e) => { // localStorage.setItem("inilingo-lang", "") // }) // langFlagEn.addEventListener("click", (e) => { // localStorage.setItem("inilingo-lang", "") // }) } else { const url = new URL(window.location.href) let link = url.origin + url.pathname + url.search.replace(/\&?lang=[a-z-]{2,5}/i, "").replace(/&&/, "&").replace(/&$/, "") if (link.match(/\?./)) { link = link + "&lang=" + origLang } else if (link.match(/\?/)) { link = link + "lang=" + origLang } else { link = link + "?lang=" + origLang } langEn.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langName + "
" // langEn.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langName + "
" langFlagEn.innerHTML = "" } } langEn.style.padding = "5px 8px" langEn.setAttribute("inrxlang", "true") const langEdit = document.createElement("div") langEdit.id = "xrmxrm77fk" langEdit.style.display = "flex"; langEdit.style.alignItems = "center" const exitIcon = '' langEdit.innerHTML = "
Stop Editing
" + exitIcon + "
" langEdit.style.padding = "4px" langEdit.firstChild.style.paddingLeft = "5px" langEdit.style.fontSize = "13px" langEdit.style.background = "pink" langEdit.style.color = "black" langEdit.style.color = "black" markup.action = true; langEdit.lastChild.addEventListener("click", (e) => { e.stopPropagation() window.close() }) langEdit.addEventListener("click", () => { if (markup.action) { markup.action = false; langEdit.firstChild.innerHTML = "Start Editing" langEdit.style.background = "yellow" langEdit.style.color = "black" } else { markup.action = true; langEdit.firstChild.innerHTML = "Stop Editing" langEdit.style.background = "pink" langEdit.style.color = "black" } }) if (markup.markup) { langDiv.appendChild(langEdit) } if (!currentLang) { langEdit.style.display = "none" } // if (!xrx52m.seo.length && !xrx52m.wp) { // const origClick = (el) => { // if (currentLang !== "") { // const editorBox = document.getElementById("xrmxrm77fk") // if (editorBox) { // editorBox.remove() // } // markup.action = false; // ixImgHanding("") // langEdit.style.display = "none" // mainDiv.childNodes[0].before(langEn) // menuDiv.appendChild(mainDiv.childNodes[1]) // menuDiv.style.display = "none" // icon.style.transform = "" // inirxloadTranslation(origLang, true) // } // } // langEn.addEventListener("click", origClick) // langFlagEn.addEventListener("click", origClick) // } if (currentLang) { menuDiv.appendChild(langEn) } else { mainDiv.appendChild(langEn) } languages.forEach(item => { const langFlagLang = document.createElement("div") langFlagLang.style = "padding:2px;" flagDiv.appendChild(langFlagLang) let el = document.createElement("div") if (xrx52m.seo.length) { let add = baseUrl + "?lang=" + item if (xrx52m.seo.includes(item)) { add = item.toLowerCase() + "." + baseUrl } el.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langObj[item][menu.short ? "language" : "raw"] + "
" langFlagLang.innerHTML = "" } else { if (xrx52m.wp) { let urlParts = baseUrl.split("/") let link = urlParts[0] + '/' + item.toLowerCase().substring(0, 2) if (currentLang.toLowerCase().substring(0, 2) === urlParts[1]) { link = link + "/" + urlParts.slice(2).join("/") } else { link = link + "/" + urlParts.slice(1).join("/") } el.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langObj[item][menu.short ? "language" : "raw"] + "
" langFlagLang.innerHTML = "" } else { const url = new URL(window.location.href) let link = url.origin + url.pathname + url.search.replace(/\&?lang=[a-z-]{2,5}/i, "").replace(/&&/, "&").replace(/&$/, "") if (link.match(/\?./)) { link = link + "&lang=" + item } else if (link.match(/\?/)) { link = link + "lang=" + item } else { link = link + "?lang=" + item } el.innerHTML = "
" + (menu.flags ? "" : "") + "
" + langObj[item][menu.short ? "language" : "raw"] + "
" langFlagLang.innerHTML = "" } } el.style.padding = "5px 8px" el.setAttribute("inrxlang", "true") el.classList.add("inirxmenuitem") el.style.background = menu.bg || "white" el.style.color = menu.color || "black" // if (!xrx52m.seo.includes(item)) { // const langClick = () => { // if (currentLang !== item) { // inirxhands = [document.body, document.querySelector("title"), document.querySelector("meta[name='description']")] // document.querySelectorAll("[placeholder]").forEach((item) => inirxhands.push(item)) // document.querySelectorAll("[type=submit][value]").forEach((item) => inirxhands.push(item)) // ixImgHanding(item) // langEdit.style.display = "block" // const editorBox = document.getElementById("xrmxrm77fk") // if (editorBox) { // editorBox.remove() // } // mainDiv.childNodes[0].before(el) // menuDiv.appendChild(mainDiv.childNodes[1]) // menuDiv.style.display = "none" // icon.style.transform = "" // inirxloadTranslation(item, true) // } // } // el.addEventListener("click", langClick) // langFlagLang.addEventListener("click", langClick) // } if (currentLang === item) { mainDiv.appendChild(el) } else { menuDiv.appendChild(el) } }) // const markmeUp = document.createElement("div") langDiv.id = "xrxmx" langDiv.classList.add("inirxmenu" + menu.pos) // langDiv.style.backgroundColor = menu.bg || "white" // langDiv.style.color = menu.color || "black" langDiv.style.cursor = "pointer" // markmeUp.addEventListener("click", () => { // if (currentLang) { // markupAll() // } // }) mainDiv.appendChild(icon) if (menu.pos.includes("top")) { langDiv.appendChild(mainDiv) langDiv.appendChild(menuDiv) } else if (menu.pos.includes("bottom")) { langDiv.appendChild(menuDiv) langDiv.appendChild(mainDiv) } if (document.readyState === "loading") { // Loading hasn't finished yet document.addEventListener("DOMContentLoaded", () => { if (menu.pos.includes("embed") && xrxIniLingoMenuSelector) { if (!Array.isArray(xrxIniLingoMenuSelector)) { xrxIniLingoMenuSelectorTemp = [xrxIniLingoMenuSelector] } else { xrxIniLingoMenuSelectorTemp = xrxIniLingoMenuSelector } setTimeout(() => { xrxIniLingoMenuSelectorTemp.forEach(xitem => { const emb = document.querySelector(xitem) console.log(emb) const newDiv = flagDiv.cloneNode(true) if (xrxIniLingoMenuEmptyParent) { emb.childNodes.forEach(item => item.remove()) } if (emb.tagName === "IMG") { emb.after(newDiv) } else { emb.appendChild(newDiv) } }) }, 1000) } else { setTimeout(() => { document.body.appendChild(langDiv); }, 1000) } }) } else { // `DOMContentLoaded` has already fired console.log("lodedit") if (menu.pos.includes("embed") && xrxIniLingoMenuSelector) { if (!Array.isArray(xrxIniLingoMenuSelector)) { xrxIniLingoMenuSelectorTemp = [xrxIniLingoMenuSelector] } else { xrxIniLingoMenuSelectorTemp = xrxIniLingoMenuSelector } setTimeout(() => { xrxIniLingoMenuSelectorTemp.forEach(xitem => { const emb = document.querySelector(xitem) if (xrxIniLingoMenuEmptyParent) { emb.childNodes.forEach(item => item.remove()) } emb.appendChild(flagDiv) }) }, 1000) } else { setTimeout(() => { document.body.appendChild(langDiv); }, 1000) } } let modal; if (markup.markup) { document.addEventListener("click", (e) => { if (modal) { return; } if (e.target.id === "idrxkokowe") { e.target.remove(); markupElement.classList.remove("inirxhl") return; } if (!markup.action || e.target.closest("[data-notrans]")) { return; } e.stopPropagation(); e.preventDefault() const a = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT) a.currentNode = e.target var range = document.createRange(); let startNode = null; let endNode = null; let orig = "" const inlineClick = isInline(e.target) while (a.nextNode()) { range.selectNode(a.currentNode) if (isInside(e, range.getBoundingClientRect())) { console.log("barmi") if (!sentenceNodes.get(a.currentNode)) { continue; } const myNode = sentenceNodes.get(a.currentNode) startNode = sentenceNodes.get(a.currentNode)[0] endNode = sentenceNodes.get(a.currentNode)[1] editedNode = startNode // console.log(origNodes.get(a.currentNode)) let deNumbered = {} if (inirxfullTranslation[encodeURIComponent(myNode[2])]) { console.log(inirxfullTranslation[encodeURIComponent(myNode[2])]) orig = myNode[2] deNumbered = [myNode[2], {}] } else { deNumbered = deNumber(myNode[2]) orig = deNumbered[0] } console.log(deNumbered) if (markupElement) { markupElement.classList.remove("inirxhl") } markupElement = startNode.parentElement while (inirxgetDisplayType(markupElement).includes("inline")) { markupElement = markupElement.parentElement } markupElement.classList.add("inirxhl") modal = document.createElement("div") modal.setAttribute("data-notrans", "true") modal.id = "idrxkokowe" modal.style = "position: fixed; inset:0;background: rgba(0,0,0,0.3);z-index:100000;display:flex;align-items:center;justify-content:center;opacity:0;transition: all 0.2s;font-family:Tahoma;font-size:15px;" modal.innerHTML = "
Edit Translation...
X
" + langObj[origLang].raw + "
" + langObj[currentLang].raw + "
Save
" document.body.appendChild(modal) setTimeout(() => modal.style.opacity = 1, 0) document.getElementById('inrxcloser').addEventListener("click", () => { modal.remove(); markupElement.classList.remove("inirxhl"); modal = null; }) document.getElementById("inrxtransta").addEventListener("input", (e) => { if (compareTags(orig, e.target.value)) { document.getElementById("inrxnote").style.display = "none" document.getElementById('inrxsaver').style.opacity = 1 } else { document.getElementById("inrxnote").style.display = "block" document.getElementById('inrxsaver').style.opacity = 0.3 } }) if (compareTags(orig, inirxfullTranslation[encodeURIComponent(orig)][0])) { document.getElementById("inrxnote").style.display = "hidden" document.getElementById('inrxsaver').disabled = true } else { document.getElementById("inrxnote").style.display = "block" document.getElementById('inrxsaver').disabled = false } document.getElementById('inrxsaver').addEventListener("click", () => { const english = orig; const foreign = reNumber(document.getElementById("inrxtransta").value, deNumbered[1]) if (!markup.markup) { alert("You are not authenticated for this") return; } if (!compareTags(english, foreign)) { return; } fetch("https://europe-west4-inilingo0.cloudfunctions.net/api", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ fn: "correctItem", english: english, foreign: foreign, xdata: fullFile[encodeURIComponent(english)], code: markup.markup, language: currentLang }) }).then(resa => resa.text()).then(resi => { if (resi === "wrong code") { document.cookie = 'inilingo-markup=;-1; path=/'; } else { document.cookie = 'inilingo-markup=' + resi; markup.markup = resi; inirxfullTranslation[encodeURIComponent(english)] = [foreign] fullFile[encodeURIComponent(english)][0] = foreign document.location.href = document.location.href.replace(/\&random\=0\.[\d]+/g, "") + "&random=" + Math.random() //inirxhands.push(editedNode) inirxprocessing = true; inirxhandleItems() } }) markupElement.classList.remove("inirxhl") modal.remove(); modal = null; markupElement.classList.remove("inirxsaver") }) document.getElementById('inrxtransta').focus() break; } } }, true) } console.log("morg") setTimeout(() => { xrxiniLingoAfterLoad(iniLingo, currentLang, languages, xrx52m.menu) }, xrxiniAfterLoadDelay) } //document.addEventListener('DOMContentLoaded', () => specialSetup(inirxloadTranslation)) return { setLang: inirxloadTranslation, init: setUpMenu, readElements: readElements } } function xrmDim() { if (document.getElementById("grxrm")) { return } var lElement = document.createElement('style') lElement.id = "grxrm" document.head.appendChild(lElement); var sheetnewxrm = lElement.sheet; console.log(" newdim") sheetnewxrm.insertRule("html body * {color: transparent !important; text-shadow: none !important; }") sheetnewxrm.insertRule("body ::placeholder {color: transparent !important;}") sheetnewxrm.insertRule(".page-id-49 .main_color h6 {display: block !important;}") sheetnewxrm.insertRule(".home.home .template-page .entry-content-wrapper h1 {text-shadow: none !important; color: transparent !important;}") sheetnewxrm.insertRule("html body .content.content.content.content h3 {text-shadow: none !important; color: transparent !important;}") } //xrmDim() const testingxrmni = decodeURIComponent(new URL(document.location.href).searchParams.get("testing") || sessionStorage["inilingo-testing"] || "") const pageTest = new URL(document.location.href).searchParams.get("wbxm") const validxrmni = pageTest || (testingxrmni && xrx52m.languages.length === 0) || xrx52m.languages.length if (validxrmni && xrxiniLingoBeforeLoad(xrx52m)) { try { var gElement = document.createElement('style') gElement.id = "praxi" document.head.appendChild(gElement); let sheetxrm = gElement.sheet; sheetxrm.insertRule(".inirxhl { outline: 2px solid orange !important; }"); sheetxrm.insertRule(".inirxmenutopleft { position:fixed; top: 0px; left: 0px; }"); sheetxrm.insertRule(".inirxmenubottomleft { position:fixed; bottom: 0px; left: 0px; }"); sheetxrm.insertRule(".inirxmenutopright { position:fixed; top: 0px; right: 0px; }"); sheetxrm.insertRule(".inirxmenuhide { display: hidden; }"); sheetxrm.insertRule(".inirxmenubottomright { position:fixed; bottom: 0px; right: 0px; }"); sheetxrm.insertRule(".inirxmenuembed { position:absolute; }"); sheetxrm.insertRule(".inirxmymenu {position: relative; overflow: visible, height: 32px; }"); sheetxrm.insertRule(".inirxmymenu > div {overflow: visible; }"); sheetxrm.insertRule(".inirxmenuitem:hover {background: #eeeeee; }") sheetxrm.insertRule("html.xrmxnxmr.zero * {color: transparent !important; text-shadow: none !important; }") //sebi sheetxrm.insertRule(".page-id-49 .main_color h6 {display: block !important;}") sheetxrm.insertRule(".entry a.more_button {display: block !important;}") sheetxrm.insertRule("html.xrmxnxmr.zero ::placeholder {color: transparent !important;}") sheetxrm.insertRule("#xrxmx a {all: revert; color: unset; text-decoration: none;}") sheetxrm.insertRule("html.xrmxnxmr.zero :-ms-input-placeholder {color: transparent !important;}") sheetxrm.insertRule("html.xrmxnxmr.zero ::-ms-input-placeholder {color: transparent !important;}") } catch (e) { } var iniLingo = iniLingoX2rm(true) setTimeout(() => iniLingo.init(), 0) }