MediaWiki:Common.js

From AquaPedia Case Study Database
Revision as of 04:34, 19 December 2012 by Dan Kass (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.

/* Any JavaScript here will be loaded for all users on every page load. */

(function($){var trailing_whitespace=true;$.fn.truncate=function(options){var opts=$.extend({},$.fn.truncate.defaults,options);$(this).each(function(){var content_length=$.trim(squeeze($(this).text())).length;if(content_length<=opts.max_length) return;var actual_max_length=opts.max_length-opts.more.length-3;var truncated_node=recursivelyTruncate(this,actual_max_length);var full_node=$(this).hide();truncated_node.insertAfter(full_node);findNodeForMore(truncated_node).append(' (<a href="#show more content">'+opts.more+'</a>)');findNodeForLess(full_node).append(' (<a href="#show less content">'+opts.less+'</a>)');truncated_node.find('a:last').click(function(){truncated_node.hide();full_node.show();return false;});full_node.find('a:last').click(function(){truncated_node.show();full_node.hide();return false;});});} $.fn.truncate.defaults={max_length:100,more:'…more',less:'less'};function recursivelyTruncate(node,max_length){return(node.nodeType==3)?truncateText(node,max_length):truncateNode(node,max_length);} function truncateNode(node,max_length){var node=$(node);var new_node=node.clone().empty();var truncatedChild;node.contents().each(function(){var remaining_length=max_length-new_node.text().length;if(remaining_length==0)return;truncatedChild=recursivelyTruncate(this,remaining_length);if(truncatedChild)new_node.append(truncatedChild);});return new_node;} function truncateText(node,max_length){var text=squeeze(node.data);if(trailing_whitespace)

text=text.replace(/^ /,);trailing_whitespace=!!text.match(/ $/);var text=text.slice(0,max_length);text=$('

').text(text).html();return text;}

function squeeze(string){return string.replace(/\s+/g,' ');} function findNodeForMore(node){var $node=$(node);var last_child=$node.children(":last");if(!last_child)return node;var display=last_child.css('display');if(!display||display=='inline')return $node;return findNodeForMore(last_child);};function findNodeForLess(node){var $node=$(node);var last_child=$node.children(":last");if(last_child&&last_child.is('p'))return last_child;return node;};})(jQuery);var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}

/* Inserts text at the cursor location in a textarea html element */ $.fn.extend({

 insertAtCaret: function(myValue){
 var obj;
 if( typeof this[0].name !='undefined' ) obj = this[0];
 else obj = this;
 if ($.browser.msie) {
   obj.focus();
   sel = document.selection.createRange();
   sel.text = myValue;
   obj.focus();
   }
 else if ($.browser.mozilla || $.browser.webkit) {
   var startPos = obj.selectionStart;
   var endPos = obj.selectionEnd;
   var scrollTop = obj.scrollTop;
   obj.value = obj.value.substring(0, startPos)+myValue+obj.value.substring(endPos,obj.value.length);
   obj.focus();
   obj.selectionStart = startPos + myValue.length;
   obj.selectionEnd = startPos + myValue.length;
   obj.scrollTop = scrollTop;
 } else {
   obj.value += myValue;
   obj.focus();
  }
}

})



function ModifySidebar(action, section, name, link) {

   try {
       switch (section) {
         case "languages":
           var target = "p-lang";
           break;
         case "toolbox":
           var target = "p-tb";
           break;
         case "navigation":
           var target = "p-navigation";
           break;
         default:
           var target = "p-" + section;
           break;
       }

       if (action == "add") {
           var node = document.getElementById(target)
                              .getElementsByTagName('div')[0]
                              .getElementsByTagName('ul')[0];

           var aNode = document.createElement('a');
           var liNode = document.createElement('li');

           aNode.appendChild(document.createTextNode(name));
           aNode.setAttribute('href', link);
           liNode.appendChild(aNode);
           liNode.className='plainlinks';
           node.appendChild(liNode);
       }

       if (action == "remove") {
           var list = document.getElementById(target)
                              .getElementsByTagName('div')[0]
                              .getElementsByTagName('ul')[0];

           var listelements = list.getElementsByTagName('li');

           for (var i = 0; i < listelements.length; i++) {
               if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                   listelements[i].getElementsByTagName('a')[0].href == link) {

                   list.removeChild(listelements[i]);
               }
           }
       }

   } catch(e) {
     // lets just ignore what's happened
     return;
   }

}

function CustomizeModificationsOfSidebar() {

   //to add to toolbox:  ModifySidebar("add", "toolbox", "...","http://..");
   //removes Special:SpecialPages from toolbox
   //ModifySidebar("remove", "toolbox", "Special Pages", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:SpecialPages");
  ModifySidebar("remove", "toolbox", "Related Changes", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:RecentChangesLinked/");

}

addOnloadHook(CustomizeModificationsOfSidebar);

jQuery(document).ready(function() {

 jQuery(".expSectionBody").hide();
 //toggle the component with class msg_body
 jQuery(".expSectionHeader").click( function() {
   jQuery(this).next(".expSectionBody").slideToggle(700);
   if (jQuery(this).hasClass('open')) {
       jQuery(this).removeClass('open').addClass('closed');
   } else if (jQuery(this).hasClass('closed')) {
       jQuery(this).removeClass('closed').addClass('open');
   } else {
       jQuery(this).addClass('open');
   }
 });
 jQuery(".ASI.expSectionHeader").mouseover(function () {
   jQuery(this).css("text-decoration","underline");
 });
 jQuery(".ASI.expSectionHeader").mouseout(function () {
   jQuery(this).css("text-decoration","none");
 });

});


/** Popup links -- Use Home **/ addOnloadHook( function() {

    var pops = function( elems ) {
        for (var i=0; i<elems.length; i++) {
            if ( !(' '+elems[i].className+' ').match( / pops / ) )

continue;

            var anchs = elems[i].getElementsByTagName('a');
            for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
        }
    };
    var bc = document.getElementById('bodyContent');
    var tags = ['span', 'div', 'table', 'td', 'th'];
    for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName(

tags[i] ) ); } );