aboutsummaryrefslogtreecommitdiff
path: root/vendors/dokuwiki/lib/scripts/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'vendors/dokuwiki/lib/scripts/script.js')
-rw-r--r--vendors/dokuwiki/lib/scripts/script.js561
1 files changed, 0 insertions, 561 deletions
diff --git a/vendors/dokuwiki/lib/scripts/script.js b/vendors/dokuwiki/lib/scripts/script.js
deleted file mode 100644
index 491794f13..000000000
--- a/vendors/dokuwiki/lib/scripts/script.js
+++ /dev/null
@@ -1,561 +0,0 @@
-/**
- * Some of these scripts were taken from wikipedia.org and were modified for DokuWiki
- */
-
-/**
- * Some browser detection
- */
-var clientPC = navigator.userAgent.toLowerCase(); // Get client info
-var is_macos = navigator.appVersion.indexOf('Mac') != -1;
-var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1) &&
- (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
-var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
-var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
-if (clientPC.indexOf('opera')!=-1) {
- var is_opera = true;
- var is_opera_preseven = (window.opera && !document.childNodes);
- var is_opera_seven = (window.opera && document.childNodes);
-}
-
-/**
- * Handy shortcut to document.getElementById
- *
- * This function was taken from the prototype library
- *
- * @link http://prototype.conio.net/
- */
-function DOKUid() {
- var elements = new Array();
-
- for (var i = 0; i < arguments.length; i++) {
- var element = arguments[i];
- if (typeof element == 'string')
- element = document.getElementById(element);
-
- if (arguments.length == 1)
- return element;
-
- elements.push(element);
- }
-
- return elements;
-}
-
-/**
- * Simple function to check if a global var is defined
- *
- * @author Kae Verens
- * @link http://verens.com/archives/2005/07/25/isset-for-javascript/#comment-2835
- */
-function isset(varname){
- return(typeof(window[varname])!='undefined');
-}
-
-/**
- * Select elements by their class name
- *
- * @author Dustin Diaz <dustin [at] dustindiaz [dot] com>
- * @link http://www.dustindiaz.com/getelementsbyclass/
- */
-function getElementsByClass(searchClass,node,tag) {
- var classElements = new Array();
- if ( node == null )
- node = document;
- if ( tag == null )
- tag = '*';
- var els = node.getElementsByTagName(tag);
- var elsLen = els.length;
- var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
- for (var i = 0, j = 0; i < elsLen; i++) {
- if ( pattern.test(els[i].className) ) {
- classElements[j] = els[i];
- j++;
- }
- }
- return classElements;
-}
-
-/**
- * Get the X offset of the top left corner of the given object
- *
- * @link http://www.quirksmode.org/index.html?/js/findpos.html
- */
-function findPosX(object){
- var curleft = 0;
- var obj = DOKUid(object);
- if (obj.offsetParent){
- while (obj.offsetParent){
- curleft += obj.offsetLeft;
- obj = obj.offsetParent;
- }
- }
- else if (obj.x){
- curleft += obj.x;
- }
- return curleft;
-} //end findPosX function
-
-/**
- * Get the Y offset of the top left corner of the given object
- *
- * @link http://www.quirksmode.org/index.html?/js/findpos.html
- */
-function findPosY(object){
- var curtop = 0;
- var obj = DOKUid(object);
- if (obj.offsetParent){
- while (obj.offsetParent){
- curtop += obj.offsetTop;
- obj = obj.offsetParent;
- }
- }
- else if (obj.y){
- curtop += obj.y;
- }
- return curtop;
-} //end findPosY function
-
-/**
- * Escape special chars in JavaScript
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function jsEscape(text){
- var re=new RegExp("\\\\","g");
- text=text.replace(re,"\\\\");
- re=new RegExp("'","g");
- text=text.replace(re,"\\'");
- re=new RegExp('"',"g");
- text=text.replace(re,'&quot;');
- re=new RegExp("\\\\\\\\n","g");
- text=text.replace(re,"\\n");
- return text;
-}
-
-/**
- * This function escapes some special chars
- * @deprecated by above function
- */
-function escapeQuotes(text) {
- var re=new RegExp("'","g");
- text=text.replace(re,"\\'");
- re=new RegExp('"',"g");
- text=text.replace(re,'&quot;');
- re=new RegExp("\\n","g");
- text=text.replace(re,"\\n");
- return text;
-}
-
-/**
- * Adds a node as the first childenode to the given parent
- *
- * @see appendChild()
- */
-function prependChild(parent,element) {
- if(!parent.firstChild){
- parent.appendChild(element);
- }else{
- parent.insertBefore(element,parent.firstChild);
- }
-}
-
-/**
- * Prints a animated gif to show the search is performed
- *
- * Because we need to modify the DOM here before the document is loaded
- * and parsed completely we have to rely on document.write()
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function showLoadBar(){
-
- document.write('<img src="'+DOKU_MEDIA+'lib/images/loading.gif" '+
- 'width="150" height="12" alt="..." />');
-
- /* this does not work reliable in IE
- obj = DOKUid(id);
-
- if(obj){
- obj.innerHTML = '<img src="'+DOKU_BASE+'lib/images/loading.gif" '+
- 'width="150" height="12" alt="..." />';
- obj.style.display="block";
- }
- */
-}
-
-/**
- * Disables the animated gif to show the search is done
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function hideLoadBar(id){
- obj = DOKUid(id);
- if(obj) obj.style.display="none";
-}
-
-/**
- * Adds the toggle switch to the TOC
- */
-function addTocToggle() {
- if(!document.getElementById) return;
- var header = DOKUid('toc__header');
- if(!header) return;
- var toc = DOKUid('toc__inside');
-
- var obj = document.createElement('span');
- obj.id = 'toc__toggle';
- obj.style.cursor = 'pointer';
- if (toc && toc.style.display == 'none') {
- obj.innerHTML = '<span>+</span>';
- obj.className = 'toc_open';
- } else {
- obj.innerHTML = '<span>&minus;</span>';
- obj.className = 'toc_close';
- }
-
- prependChild(header,obj);
- obj.parentNode.onclick = toggleToc;
- try {
- obj.parentNode.style.cursor = 'pointer';
- obj.parentNode.style.cursor = 'hand';
- }catch(e){}
-}
-
-/**
- * This toggles the visibility of the Table of Contents
- */
-function toggleToc() {
- var toc = DOKUid('toc__inside');
- var obj = DOKUid('toc__toggle');
- if(toc.style.display == 'none') {
- toc.style.display = '';
- obj.innerHTML = '<span>&minus;</span>';
- obj.className = 'toc_close';
- } else {
- toc.style.display = 'none';
- obj.innerHTML = '<span>+</span>';
- obj.className = 'toc_open';
- }
-}
-
-/**
- * Display an insitu footnote popup
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @author Chris Smith <chris@jalakai.co.uk>
- */
-function footnote(e){
- var obj = e.target;
- var id = obj.id.substr(5);
-
- // get or create the footnote popup div
- var fndiv = DOKUid('insitu__fn');
- if(!fndiv){
- fndiv = document.createElement('div');
- fndiv.id = 'insitu__fn';
- fndiv.className = 'insitu-footnote JSpopup dokuwiki';
-
- // autoclose on mouseout - ignoring bubbled up events
- addEvent(fndiv,'mouseout',function(e){
- if(e.target != fndiv){
- e.stopPropagation();
- return;
- }
- // check if the element was really left
- if(e.pageX){ // Mozilla
- var bx1 = findPosX(fndiv);
- var bx2 = bx1 + fndiv.offsetWidth;
- var by1 = findPosY(fndiv);
- var by2 = by1 + fndiv.offsetHeight;
- var x = e.pageX;
- var y = e.pageY;
- if(x > bx1 && x < bx2 && y > by1 && y < by2){
- // we're still inside boundaries
- e.stopPropagation();
- return;
- }
- }else{ // IE
- if(e.offsetX > 0 && e.offsetX < fndiv.offsetWidth-1 &&
- e.offsetY > 0 && e.offsetY < fndiv.offsetHeight-1){
- // we're still inside boundaries
- e.stopPropagation();
- return;
- }
- }
- // okay, hide it
- fndiv.style.display='none';
- });
- document.body.appendChild(fndiv);
- }
-
- // locate the footnote anchor element
- var a = DOKUid( "fn__"+id );
- if (!a){ return; }
-
- // anchor parent is the footnote container, get its innerHTML
- var content = new String (a.parentNode.parentNode.innerHTML);
-
- // strip the leading content anchors and their comma separators
- content = content.replace(/<sup>.*<\/sup>/gi, '');
- content = content.replace(/^\s+(,\s+)+/,'');
-
- // prefix ids on any elements with "insitu__" to ensure they remain unique
- content = content.replace(/\bid=\"(.*?)\"/gi,'id="insitu__$1');
-
- // now put the content into the wrapper
- fndiv.innerHTML = content;
-
- // position the div and make it visible
- var x; var y;
- if(e.pageX){ // Mozilla
- x = e.pageX;
- y = e.pageY;
- }else{ // IE
- x = e.offsetX;
- y = e.offsetY;
- }
- fndiv.style.position = 'absolute';
- fndiv.style.left = (x+2)+'px';
- fndiv.style.top = (y+2)+'px';
- fndiv.style.display = '';
-}
-
-/**
- * Add the event handlers to footnotes
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
- var elems = getElementsByClass('fn_top',null,'a');
- for(var i=0; i<elems.length; i++){
- addEvent(elems[i],'mouseover',function(e){footnote(e);});
- }
-});
-
-/**
- * Add the edit window size controls
- */
-function initSizeCtl(ctlid,edid){
- if(!document.getElementById){ return; }
-
- var ctl = DOKUid(ctlid);
- var textarea = DOKUid(edid);
- if(!ctl || !textarea) return;
-
- var hgt = DokuCookie.getValue('sizeCtl');
- if(hgt){
- textarea.style.height = hgt;
- }else{
- textarea.style.height = '300px';
- }
-
- var wrp = DokuCookie.getValue('wrapCtl');
- if(wrp){
- setWrap(textarea, wrp);
- } // else use default value
-
- var l = document.createElement('img');
- var s = document.createElement('img');
- var w = document.createElement('img');
- l.src = DOKU_MEDIA+'lib/images/larger.gif';
- s.src = DOKU_MEDIA+'lib/images/smaller.gif';
- w.src = DOKU_MEDIA+'lib/images/wrap.gif';
- addEvent(l,'click',function(){sizeCtl(edid,100);});
- addEvent(s,'click',function(){sizeCtl(edid,-100);});
- addEvent(w,'click',function(){toggleWrap(edid);});
- ctl.appendChild(l);
- ctl.appendChild(s);
- ctl.appendChild(w);
-}
-
-/**
- * This sets the vertical size of the editbox
- */
-function sizeCtl(edid,val){
- var textarea = DOKUid(edid);
- var height = parseInt(textarea.style.height.substr(0,textarea.style.height.length-2));
- height += val;
- textarea.style.height = height+'px';
-
- DokuCookie.setValue('sizeCtl',textarea.style.height);
-}
-
-/**
- * Toggle the wrapping mode of a textarea
- */
-function toggleWrap(edid){
- var textarea = DOKUid(edid);
- var wrap = textarea.getAttribute('wrap');
- if(wrap && wrap.toLowerCase() == 'off'){
- setWrap(textarea, 'soft');
- }else{
- setWrap(textarea, 'off');
- }
-
- DokuCookie.setValue('wrapCtl',textarea.getAttribute('wrap'));
-}
-
-/**
- * Set the wrapping mode of a textarea
- *
- * @author Fluffy Convict <fluffyconvict@hotmail.com>
- * @author <shutdown@flashmail.com>
- * @link http://news.hping.org/comp.lang.javascript.archive/12265.html
- * @link https://bugzilla.mozilla.org/show_bug.cgi?id=41464
- */
-function setWrap(textarea, wrapAttrValue){
- textarea.setAttribute('wrap', wrapAttrValue);
-
- // Fix display for mozilla
- var parNod = textarea.parentNode;
- var nxtSib = textarea.nextSibling;
- parNod.removeChild(textarea);
- parNod.insertBefore(textarea, nxtSib);
-}
-
-/**
- * Handler to close all open Popups
- */
-function closePopups(){
- if(!document.getElementById){ return; }
-
- var divs = document.getElementsByTagName('div');
- for(var i=0; i < divs.length; i++){
- if(divs[i].className.indexOf('JSpopup') != -1){
- divs[i].style.display = 'none';
- }
- }
-}
-
-/**
- * Looks for an element with the ID scroll__here at scrolls to it
- */
-function scrollToMarker(){
- var obj = DOKUid('scroll__here');
- if(obj) obj.scrollIntoView();
-}
-
-/**
- * Looks for an element with the ID focus__this at sets focus to it
- */
-function focusMarker(){
- var obj = DOKUid('focus__this');
- if(obj) obj.focus();
-}
-
-/**
- * Remove messages
- */
-function cleanMsgArea(){
- var elems = getElementsByClass('(success|info|error)',document,'div');
- if(elems){
- for(var i=0; i<elems.length; i++){
- elems[i].style.display = 'none';
- }
- }
-}
-
-/**
- * disable multiple revisions checkboxes if two are checked
- *
- * @author Anika Henke <anika@selfthinker.org>
- */
-addInitEvent(function(){
- var revForm = DOKUid('page__revisions');
- if (!revForm) return;
- var elems = revForm.elements;
- var countTicks = 0;
- for (var i=0; i<elems.length; i++) {
- var input1 = elems[i];
- if (input1.type=='checkbox') {
- addEvent(input1,'click',function(e){
- if (this.checked) countTicks++;
- else countTicks--;
- for (var j=0; j<elems.length; j++) {
- var input2 = elems[j];
- if (countTicks >= 2) input2.disabled = (input2.type=='checkbox' && !input2.checked);
- else input2.disabled = (input2.type!='checkbox');
- }
- });
- input1.checked = false; // chrome reselects on back button which messes up the logic
- } else if(input1.type=='submit'){
- input1.disabled = true;
- }
- }
-});
-
-/**
- * Add the event handler to the actiondropdown
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
- var selector = DOKUid('action__selector');
- if(!selector) return;
-
- addEvent(selector,'change',function(e){
- this.form.submit();
- });
-
- DOKUid('action__selectorbtn').style.display = 'none';
-});
-
-/**
- * Display error for Windows Shares on browsers other than IE
- *
- * @author Michael Klier <chi@chimeric.de>
- */
-function checkWindowsShares() {
- if(!LANG['nosmblinks']) return true;
- var elems = getElementsByClass('windows',document,'a');
- if(elems){
- for(var i=0; i<elems.length; i++){
- var share = elems[i];
- addEvent(share,'click',function(){
- if(document.all == null) {
- alert(LANG['nosmblinks']);
- }
- });
- }
- }
-}
-
-/**
- * Add the event handler for the Windows Shares check
- *
- * @author Michael Klier <chi@chimeric.de>
- */
-addInitEvent(function(){
- checkWindowsShares();
-});
-
-/**
- * Highlight the section when hovering over the appropriate section edit button
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
- var break_classes = new RegExp('secedit|toc|page');
- var btns = getElementsByClass('btn_secedit',document,'form');
- for(var i=0; i<btns.length; i++){
- addEvent(btns[i],'mouseover',function(e){
- var tgt = e.target;
- if(tgt.form) tgt = tgt.form;
- tgt = tgt.parentNode.previousSibling;
- if(tgt.nodeName != "DIV") tgt = tgt.previousSibling;
- while(!break_classes.test(tgt.className)) {
- tgt.className += ' section_highlight';
- if (tgt.tagName == 'H1') break;
- tgt = (tgt.previousSibling != null) ? tgt.previousSibling : tgt.parentNode;
- }
- });
-
- addEvent(btns[i],'mouseout',function(e){
- var secs = getElementsByClass('section_highlight');
- for(var j=0; j<secs.length; j++){
- secs[j].className = secs[j].className.replace(/section_highlight/,'');
- }
- var secs = getElementsByClass('section_highlight');
- });
- }
-});