MediaWiki:Common.js
Från Utforska Bibeln Nu
Version från den 11 maj 2017 kl. 10.39 av Jonasmikaelkvamfordell (Diskussion | bidrag)
OBS: Efter du sparat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.
- Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck antingen Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
- Google Chrome: Tryck Ctrl-Skift-R (⌘-Shift-R på Mac)
- Internet Explorer: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
- Opera: Rensa cachen i Verktyg → Inställningar
/* JavaScript som skrivs här körs varje gång en användare laddar en sida. */ /*Bible Gateway Ref Tag Tool*/ /*<script src="https://www.biblegateway.com/public/link-to-us/tooltips/bglinks.js" type="text/javascript"></script> Denna kopierades in nedan:*/ <script> var BGLinks = (function() { var that = {}; // can be set like BGLinks.parameter that.version = 'NIV'; that.clickTooltip = false; that.apocrypha = false; that.showTooltips = true; that.host = 'www.biblegateway.com'; var showTimer = 0; var hideTimer = 0; var container; var addedCSS = false; var setupRun = false; var delay = 1000; var bgHost; var toolsHost; var cdHost; var browser = navigator.appVersion; var book_string = 'Genesis|Gen?|Gn|Exodus|Exod?|Ex|Leviticus|Le?v|Numbers|Nu?m|Nu|Deuteronomy|Deut?|Dt|Josh?ua|Josh?|Jsh|Judges|Ju?dg|Jg|Ru(?:th)?|Ru?t|(?:1|i|2|ii) ?Samuel|(?:1|i|2|ii) ?S(?:a|m)|(?:1|i|2|ii) ?Sam|(?:1|i|2|ii) ?Kin(?:gs?)?|(?:1|i|2|ii) ?Kgs|(?:1|i|2|ii) ?Chronicles|(?:1|i|2|ii) ?Chr(?:o?n)?|(?:1|i|2|ii) ?Cr|Ezra?|Nehemiah|Neh?|Esther|Esth?|Jo?b|Psalms?|Psa?|Proverbs|Pro?v?|Ecclesiastes|Ec(?:cl?)?|Song (?:O|o)f Solomon|Song (?:O|o)f Songs?|Son(?:gs?)?|SS|Isaiah?|Isa?|Jeremiah|Je?r|Lamentations|La(?:me?)?|Ezekiel|Eze?k?|Daniel|Da?n|Da|Hosea|Hos?|Hs|Jo(?:el?)?|Am(?:os?)?|Obadiah|Ob(?:ad?)?|Jon(?:ah?)?|Jnh|Mic(?:ah?)?|Mi|Nah?um|Nah?|Habakkuk|Hab|Zephaniah|Ze?ph?|Haggai|Hagg?|Hg|Zechariah|Ze?ch?|Malachi|Ma?l|Matthew|Matt?|Mt|Mark|Ma(?:r|k)|M(?:r|k)|Luke?|Lk|Lu?c|John|Jn|Ac(?:ts?)?|Romans|Ro?m|(?:1|i|2|ii) ?Corinthians|(?:1|i|2|ii) ?C(?:or?)?|Galatians|Gal?|Gl|Ephesians|Eph?|Philippians|Phil|Colossians|Co?l|(?:1|i|2|ii) ?Thessalonians|(?:1|i|2|ii) ?Th(?:e(?:ss?)?)?|(?:1|i|2|ii) ?Timothy|(?:1|i|2|ii) ?Tim|(?:1|i|2|ii) ?T(?:i|m)|Ti(?:tus)?|Ti?t|Philemon|Phl?m|Hebrews|Heb?|Jam(?:es)?|Jms|Jas|(?:1|i|2|ii) ?Peter|(?:1|i|2|ii) ?Pe?t?|(?:1|i|2|ii|3|iii) ?J(?:oh)?n?|Jude?|Revelations?|Rev|R(?:e|v)'; var apoc_books = '|Tobit?|To?b|Judi(?:th?)?|Jdt|(?:1|2) ?Mac(?:cabees)?|(?:1|2) ?Ma?|Wi(?:sdom)?|Wi?s|Sir(?:ach)?|Ba(?:ruc?h)?|Ba?r'; that.linkVerses = function() { updateURLs(); insertBiblerefs(document.body); if (that.showTooltips === true) { addBiblerefListeners(); } setup(); } var updateURLs = function() { bgHost = 'https://' + that.host; toolsHost = bgHost + '/share/tooltips/data'; cdHost = bgHost + '/public/link-to-us/tooltips'; } var insertBiblerefs = function(node) { var new_nodes; if (node.nodeType === 3) { new_nodes = searchNode(node,0); return new_nodes; } else if (node.tagName != undefined && node.tagName.match(/^(?:a|h\d|img|pre|input|option)$/i)) { return null; } else { var children = node.childNodes; var i = 0; while(i<children.length) { new_nodes = insertBiblerefs(children[i]); i += new_nodes +1; } } return null; } var searchNode = function(node, inserted_nodes) { var newTxtNode; var apoc_string = that.apocrypha === true ? apoc_books : ''; var unicode_space = '[\\u0020\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u202f\\u205f\\u3000]' //finds book and chapter for each verse that been separated by &,and,etc... var book_chap = '((?:('+book_string+apoc_string+')(?:\.)?'+unicode_space+'*?)?(?:(\\d*):)?(\\d+(?:(?:ff|f|\\w)|(?:\\s?(?:-|–|—)\\s?\\d+)?)))([^a-z0-9]*)'; var regex_string = '(?:'+book_string+apoc_string+')(?:\.)?'+unicode_space+'*?\\d+:\\d+(?:ff|f|\\w)?(?:\\s?(?:(?:(?:-|–|—)\\s?(?:(?:'+book_string+apoc_string+')(?:\.)?\\s)?)|(?:(?:,|;|&|&|and|cf\\.|cf)))\\s?(?:(?:(?:vv.|vs.|vss.|v.) ?)?\\d+\\w?)(?::\\d+\\w?)?)*'; var regex = new RegExp(regex_string,'i'); var verse_match = node.nodeValue.match(regex); if (verse_match == null) { return inserted_nodes; } else { var text = node.nodeValue; var before_text = text.substr(0,text.indexOf(verse_match[0])); var after_text = text.substr(text.indexOf(verse_match[0])+verse_match[0].length); if (before_text.length > 0) { newTxtNode = document.createTextNode(before_text); node.parentNode.insertBefore(newTxtNode, node); inserted_nodes++; } var book_chap_regex = new RegExp(book_chap, 'gi'); var book; var chapter; var verse; var matched; while (matched = book_chap_regex.exec(verse_match[0])) { // break up what may be multiple references into links. if (matched[2] != '' && matched[2] != null) { book = matched[2]; } if (matched[3] != '' && matched[3] != null) { chapter = matched[3]; } verse = matched[4]; var newLinkNode = document.createElement("a"); newLinkNode.className = 'bibleref'; newLinkNode.target = '_BLANK'; var passage = book+' '+chapter+':'+verse; newLinkNode.href = bgHost+'/passage/?search='+passage+'&version='+that.version+'&src=tools'; newLinkNode.innerHTML = matched[1]; if (that.clickTooltip === true) { newLinkNode.onclick=function() {return false}; } node.parentNode.insertBefore(newLinkNode, node); inserted_nodes++; if (matched[6] != '') { newTxtNode = document.createTextNode(matched[5]); node.parentNode.insertBefore(newTxtNode, node); // do we need to update inserted_nodes with this? } } if (after_text.length > 0) { newTxtNode = document.createTextNode(after_text); node.parentNode.insertBefore(newTxtNode, node); node.parentNode.removeChild(node); inserted_nodes = searchNode(newTxtNode,inserted_nodes+1); } else { node.parentNode.removeChild(node); } } return inserted_nodes; } var addCSS = function() { if (!addedCSS) { var css = document.createElement('link'); css.type = "text/css"; css.rel = "stylesheet"; if (browser.search('MSIE 6.0') != -1) { browser = 'ie6'; css.href = cdHost+'/theme/bglinks-ie.css'; } else { css.href = cdHost+'/theme/popover.css'; } css.media = "screen"; var n1 = document.getElementsByTagName("head")[0].childNodes[0] n1.parentNode.insertBefore(css,n1); addedCSS = true; } } var addBiblerefListeners = function() { var links = document.getElementsByTagName('a'); for ( var i = 0;i< links.length;i++) { var link = links[i] if (link.className && link.className == 'bibleref') { if (that.clickTooltip !== true) { addListener(link,'mouseover', linkMouseover); addListener(link,'mouseout', linkMouseout); } else { addListener(link,'click', toggleTooltip); } } } } var addListener = function (listen_object, action, callback) { if (listen_object.addEventListener) { if (action == 'mouseover') { listen_object.addEventListener("mouseover",callback,false); } else if (action == 'mouseout') { listen_object.addEventListener("mouseout",callback,false); } else if (action == 'click') { listen_object.addEventListener("click",callback,false); } } else if (listen_object.attachEvent) { if (action == 'mouseover') { listen_object.attachEvent("onmouseover",callback); } else if (action == 'mouseout') { listen_object.attachEvent("onmouseout",callback); } else if (action == 'click') { listen_object.attachEvent("onclick",callback); } } else { if (action == 'mouseover') { listen_object.onmouseover = callback; } else if (action == 'mouseout'){ listen_object.onmouseout = callback; } else if (action == 'click') { listen_object.onclick = callback; } } } var toggleTooltip = function(e) { if (!e) { e = window.event; } var link = e.target || e.srcElement; var reference; var bibleref; if (bibleref = link.getAttribute('data-bibleref')) { reference = bibleref; } else { reference = link.href.match(/search=(.*?)(?:&.*)?$/)[1]; } var id = reference.replace(/%20| /g, ''); id = reference.replace(/:/g, '_'); var tooltip = document.getElementById('bg_popup-'+id); if (tooltip === null || tooltip.style.display == 'none') { showTooltip(e); } else { hideTooltip(e); } } var showTooltip = function(e) { if (!e) { e = window.event; } var link = e.target || e.srcElement; var reference; var bibleref; var tooltip_loc; if (bibleref = link.getAttribute('data-bibleref')) { reference = bibleref; } else { reference = decodeURIComponent(link.href.match(/search=(.*?)(?:&.*)?$/)[1]); } var id = reference.replace(/%20| |[^\x00-\x80]/g, ''); id = id.replace(/:/g, '_'); id = id.replace(/ /g, ''); var tooltip = document.getElementById('bg_popup-'+id); hideAllTooltips(e); if (tooltip === null) { tooltip = getTooltip(reference, link); } else { tooltip_loc = tooltipLocation(link); tooltip.style.left = tooltip_loc.offsetX+'px'; tooltip.style.top = tooltip_loc.offsetY+'px'; tooltip.style.display = 'block'; } } var hideTooltip = function(e) { if (!e) { e = window.event; } var link = e.target || e.srcElement; var reference; var bibleref; if (bibleref = link.getAttribute('data-bibleref')) { reference = bibleref; } else { reference = link.href.match(/search=(.*?)(?:&.*)?$/)[1]; } reference = reference.replace(/%20| /g, ''); reference = reference.replace(/:/g, '_'); var tooltip = document.getElementById('bg_popup-'+reference); if (tooltip) { tooltip.style.display = 'none'; } } var hideAllTooltips = function(e) { var divs = container.children; for (var i = 0;i < divs.length;i++) { divs[i].style.display = 'none'; } } var linkMouseover = function(e) { if (!e) { e = window.event; } if (e.target.nodeName.toLowerCase() == 'a') { window.clearTimeout(showTimer); showTimer = window.setTimeout(function() {showTooltip(e)}, delay); } } var linkMouseout = function(e) { if (!e) { e = window.event; } if (e.target.nodeName.toLowerCase() == 'a' && showTimer) { window.clearTimeout(showTimer); window.clearTimeout(hideTimer); hideTimer = window.setTimeout(function() {hideTooltip(e)}, delay); } } var tooltipMouseover = function(e) { if (!e) { e = window.event; } var relNode = e.relatedTarget || e.fromElement; while (relNode && relNode != null && (!relNode.className || relNode.className.indexOf('bg_popup-outer') == -1) && relNode.nodeName.toLowerCase() != 'body') { relNode = relNode.parentNode; } if (relNode && relNode.className && relNode.className.indexOf('bg_popup-outer') != -1) return; window.clearTimeout(showTimer); window.clearTimeout(hideTimer); } var tooltipMouseout = function(e) { if (!e) { e = window.event; } var relNode = e.relatedTarget || e.toElement; while (relNode && relNode != null && (!relNode.className || relNode.className.indexOf('bg_popup-outer') == -1) && relNode.nodeName.toLowerCase() != 'body') { relNode = relNode.parentNode; } if (relNode && relNode.className && relNode.className.indexOf('bg_popup-outer') != -1) return; window.clearTimeout(hideTimer); hideTimer = window.setTimeout(function() {hideAllTooltips(e)}, delay); } var createContainer = function() { container = document.createElement('div'); container.id = 'bg_popup-container'; document.body.appendChild(container); } var getTooltip = function(reference, link) { var tooltip = document.createElement('div'); tooltip.style.display='none'; tooltip.className = 'bg_popup bg_popup-outer'; var tooltip_loc = tooltipLocation(link); tooltip.style.top = tooltip_loc.offsetY+'px'; tooltip.style.left = tooltip_loc.offsetX+'px'; var id = 'bg_popup-'+reference.replace(/(?:%20)|[^\x00-\x80]/g, ''); id = id.replace(/:/g, '_'); id = id.replace(/ /g, ''); tooltip.id=id; tooltip.innerHTML = '<div class="bg_popup-header"><div class="bg_popup-header_title"><strong>'+reference.replace(/%20/g, ' ')+'</strong></div></div><div class="bg_popup-content"><div class="bg_popup-spinner"><img alt="loading" src="'+cdHost+'/theme/images/tools/spinner.gif"/></div></div><div class="bg_popup-footer"><a class="bg_popup-bglogo" href="'+bgHost+'/" target="_blank"></a></div>'; tooltip.style.display = 'block'; addCloseButton(tooltip); tooltip = container.appendChild(tooltip); if (that.clickTooltip !== true) { addListener(tooltip,'mouseover', tooltipMouseover); addListener(tooltip,'mouseout', tooltipMouseout); } var remote_passage = document.createElement('script'); remote_passage.type = 'text/javascript'; remote_passage.src = toolsHost+'/?search='+reference+'&version='+that.version+'&callback=BGLinks.updateTooltip'; remote_passage.id = 'bg_remote_passage_script-'+reference.replace(/(?:%20)|[^\x00-\x80]/g, ''); remote_passage.id = remote_passage.id.replace(/:/g, '_'); remote_passage.id = remote_passage.id.replace(/ /g, ''); var hook = document.getElementsByTagName('script')[0]; hook.parentNode.insertBefore(remote_passage, hook); return tooltip; } that.updateTooltip = function(tooltip_content) { var id; id = 'bg_popup-'+tooltip_content.reference.replace(/:/g, '_'); id = id.replace(/ |[^\x00-\x80]/g, ''); var tooltip = document.getElementById(id); var reference_display = tooltip_content.reference_display.replace(/%20/g,' '); if (tooltip_content.text == undefined) { if (tooltip.text == undefined) { tooltip_content.text = 'Retrieving Passage...' } else { tooltip_content.text = tooltip.text; reference_display = tooltip.reference_display; } } tooltip.innerHTML = '<div class="bg_popup-header"><div class="bg_popup-header_title"><strong>'+reference_display+' '+tooltip_content.version+'</strong></div></div><div class="bg_popup-content"><div class="bg_popup-content-bible"><p>'+tooltip_content.text+' <a class="bg_popup-copyright" href="'+bgHost+tooltip_content.version_url+'" target="_blank">('+tooltip_content.version+')</a> <a class="bg_popup-more" href="'+bgHost+'/passage/?search='+tooltip_content.reference+'&version='+tooltip_content.version+'&src=tools" target="_blank">More</a></p></div></div><div class="bg_popup-footer"><a class="bg_popup-bglogo" href="'+bgHost+'/" rel="nofollow" target="_blank"></a></div>'; addCloseButton(tooltip); } var addCloseButton = function(tooltip) { var divs = tooltip.getElementsByTagName('div'); for (var i = 0; i < divs.length;i++) { if (divs[i].className == 'bg_popup-header_right') { addListener(divs[i], 'click', hideAllTooltips); } } } var tooltipLocation = function(link) { var width, height; var tooltip_height = 234; var tooltip_width = 362; if (typeof(window.innerWidth) == 'number') { width = window.innerWidth; height = window.innerHeight; } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { width = document.documentElement.clientWidth; height = document.documentElement.clientHeight; } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { width = document.body.clientWidth; height = document.body.clientHeight; } var display_loc = {}; var offsetPos = getOffsetPos(link); var leftPos = offsetPos.leftPos; var topPos = offsetPos.topPos; if (link.offsetWidth/link.parentNode.offsetWidth > 0.5) { leftPos = getOffsetPos(link.parentNode); leftPos = leftPos.leftPos; } if ((leftPos + tooltip_width+5) > width) { leftPos -= tooltip_width; if ((leftPos + tooltip_width + link.offsetWidth) <= width) leftPos += link.offsetWidth; if (leftPos + tooltip_width + 25 <= width) leftPos += 25; if (leftPos - (link.offsetWidth/2) >= 0) leftPos -= (link.offsetWidth/2); } else { if (leftPos + (link.offsetWidth/2) <= width && link.offsetWidth/link.parentNode.offsetWidth <= 0.5) leftPos += (link.offsetWidth/2); if (leftPos - 35 >= 0) { leftPos -= 35; } } var scrollY = window.pageYOffset || document.documentElement.scrollTop || 0; if ((topPos+link.offsetHeight+tooltip_height+15) <= height +scrollY || topPos-tooltip_height+5 <0) { topPos += link.offsetHeight + 10; } else { topPos -= tooltip_height + 10; } display_loc.offsetY = topPos; display_loc.offsetX = leftPos; return (display_loc); } var getOffsetPos = function(linkObj) { var topPos, leftPos; topPos = leftPos = 0; do { topPos += linkObj.offsetTop; leftPos += linkObj.offsetLeft; if(document.all) { topPos+=linkObj.clientTop; leftPos+=linkObj.clientLeft; } } while ((linkObj = linkObj.offsetParent) != null); return {'topPos' : topPos, 'leftPos' : leftPos}; } var setup = function() { if (!setupRun) { if (that.showTooltips === true) { addCSS(); addListener(document, 'click', hideAllTooltips); } createContainer(); setupRun = true; } } return that; })(); </script> /*End - slutet på kopierad js*/ <script type="text/javascript"> BGLinks.version = "CEB"; BGLinks.linkVerses(); </script> /*END - Bible Gateway Ref Tag Tool*/