|
|
Line 1: |
Line 1: |
| /**
| |
| * Scrolling text
| |
| *
| |
| * Original from touhouwiki
| |
| */
| |
| function AutoScroll(objNotice) {
| |
| $(objNotice).find("ul:first").animate({
| |
| marginTop:"-25px"
| |
| },500,function(){
| |
| $(this).css({marginTop: "0px"}).find("li:first").appendTo(this);
| |
| });
| |
| }
| |
|
| |
|
| $(document).ready(function() {
| |
| setInterval('AutoScroll("#scrollDiv")',10000);
| |
| //image loading effect
| |
| $('img').on('load', function(e){
| |
| var target = $(this);
| |
| target.css('opacity', 0).animate({opacity: 1}, 1000);
| |
| });
| |
| });
| |
|
| |
| mw.hook( 'wikipage.content' ).add( createCollapseButtons );
| |
|
| |
| /**
| |
| Filterable Function
| |
| */
| |
| $(function() {
| |
| $(".showExtra").click(function() {
| |
| $(this).closest("table").find(".extraRow").fadeIn("slow");$(this).closest("tr").remove();
| |
| });
| |
| filterTable();
| |
| });
| |
|
| |
| // FilterTable
| |
| function filterTable(){
| |
| $("table.filterable").each(function(){
| |
| var i=0;
| |
| var cols;
| |
| $(this).find("tr:first-child th, tr:first-child td").each(function(){
| |
| if (!$(this).hasClass("unfilterable")){
| |
| cols=[];
| |
| $(this).closest("table").find("tr td:nth-child("+(i+1)+")").each(function(){
| |
| cols.push($(this).text());
| |
| });
| |
| cols = arrayUnique(cols);
| |
| l=0;
| |
| for (j=0; j<cols.length; j++){
| |
| t=charLength(cols[j]);
| |
| if (l<t) l=t;
| |
| }
| |
| $(this).css("position","relative");
| |
| $(this).html('<a href="javascript:void(0)" class="showFilterMenu">'+$(this).html()+'▼</a>');
| |
| $(this).append($('<div class="filterMenu hidden" style="position: absolute; top: '+$(this).height()+35+'px; left: 0; width: '+(50+l*7)+'px; text-align: left; padding: 5px; border: 1px #333333 solid; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; background: inherit; z-index: 1"></div>'));
| |
| for (j=0; j<cols.length; j++){
| |
| $(this).find(".filterMenu").append('<div><input type="checkbox" value="'+cols[j]+'" col="'+(i+1)+'" class="filterOption" checked>'+cols[j]+'</div>');
| |
| }
| |
| }
| |
| i++;
| |
| });
| |
| $(this).find("tr:nth-child(n+1)").attr("condition", 0);
| |
| });
| |
| $(".showFilterMenu").click(function(){
| |
| if ($(this).parent().find(".filterMenu:visible").length){
| |
| $(".filterMenu").slideUp(150);
| |
| }else{
| |
| $(".filterMenu").slideUp(150);
| |
| $(this).parent().find(".filterMenu").slideDown(150);
| |
| }
| |
| });
| |
| $(document).mouseup(function(e){
| |
| var container = $(".filterMenu");
| |
| if (!container.is(e.target) && container.has(e.target).length === 0){
| |
| container.slideUp(150);
| |
| }
| |
| });
| |
| $(".filterOption").click(function(){
| |
| col=$(this).attr("col");
| |
| val=$(this).val();
| |
| if ($(this).is(":checked")) chg=1; else chg=-1;
| |
| $(this).closest("table").find("tr:nth-child(n+1)").each(function(){
| |
| if ($(this).find("td:nth-child("+col+")").text()==val){
| |
| var cond=$(this).attr("condition");
| |
| cond=Number(cond)+chg;
| |
| $(this).attr("condition", cond);
| |
| if (cond==0) $(this).show();
| |
| else $(this).hide();
| |
| }
| |
| });
| |
| });
| |
| }
| |
|
| |
| function arrayUnique(a) {
| |
| return a.reduce(function(p, c) {
| |
| if (p.indexOf(c) < 0) p.push(c);
| |
| return p;
| |
| }, []);
| |
| }
| |
|
| |
| function charLength(s){
| |
| return s.length+(encodeURI(s).split(/%..|./).length-1-s.length)/2;
| |
| }
| |
|
| |
| /**
| |
| * Dynamic Navigation Bars (experimental)
| |
| *
| |
| * Description: See [[Wikipedia:NavFrame]].
| |
| * Maintainers: UNMAINTAINED
| |
| */
| |
|
| |
| /* set up the words in your language */
| |
| var NavigationBarHide = '[' + collapseCaption + ']';
| |
| var NavigationBarShow = '[' + expandCaption + ']';
| |
| var indexNavigationBar = 0;
| |
|
| |
| /**
| |
| * Shows and hides content and picture (if available) of navigation bars
| |
| * Parameters:
| |
| * indexNavigationBar: the index of navigation bar to be toggled
| |
| **/
| |
| window.toggleNavigationBar = function ( indexNavigationBar, event ) {
| |
| var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
| |
| var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
| |
| var NavChild;
| |
|
| |
| if ( !NavFrame || !NavToggle ) {
| |
| return false;
| |
| }
| |
|
| |
| /* if shown now */
| |
| if ( NavToggle.firstChild.data === NavigationBarHide ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarShow;
| |
|
| |
| /* if hidden now */
| |
| } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarHide;
| |
| }
| |
|
| |
| event.preventDefault();
| |
| };
| |
|
| |
| /* adds show/hide-button to navigation bars */
| |
| function createNavigationBarToggleButton( $content ) {
| |
| var NavChild;
| |
| /* iterate over all < div >-elements */
| |
| var $divs = $content.find( 'div' );
| |
| $divs.each( function ( i, NavFrame ) {
| |
| /* if found a navigation bar */
| |
| if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
| |
|
| |
| indexNavigationBar++;
| |
| var NavToggle = document.createElement( 'a' );
| |
| NavToggle.className = 'NavToggle';
| |
| NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
| |
| NavToggle.setAttribute( 'href', '#' );
| |
| $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
| |
|
| |
| var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
| |
| /**
| |
| * Check if any children are already hidden. This loop is here for backwards compatibility:
| |
| * the old way of making NavFrames start out collapsed was to manually add style="display:none"
| |
| * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
| |
| * the content visible without JavaScript support), the new recommended way is to add the class
| |
| * "collapsed" to the NavFrame itself, just like with collapsible tables.
| |
| */
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
| |
| if ( NavChild.style.display === 'none' ) {
| |
| isCollapsed = true;
| |
| }
| |
| }
| |
| }
| |
| if ( isCollapsed ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| }
| |
| var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
| |
| NavToggle.appendChild( NavToggleText );
| |
|
| |
| /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
| |
| for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
| |
| if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
| |
| NavToggle.style.color = NavFrame.childNodes[j].style.color;
| |
| NavFrame.childNodes[j].appendChild( NavToggle );
| |
| }
| |
| }
| |
| NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
| |
| }
| |
| } );
| |
| }
| |
|
| |
| mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
| |
|
| |
| /**
| |
| * Collapsible tables
| |
| *
| |
| * @version 2.0.2 (2014-03-14)
| |
| * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
| |
| * @author [[User:R. Koot]]
| |
| * @author [[User:Krinkle]]
| |
| * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
| |
| * is supported in MediaWiki core.
| |
| */
| |
| /*global $, mw */
| |
| var autoCollapse = 2;
| |
| var collapseCaption = 'hide';
| |
| var expandCaption = 'show';
| |
|
| |
| function collapseTable( tableIndex ) {
| |
| var Button = document.getElementById( 'collapseButton' + tableIndex );
| |
| var Table = document.getElementById( 'collapsibleTable' + tableIndex );
| |
|
| |
| if ( !Table || !Button ) {
| |
| return false;
| |
| }
| |
|
| |
| var Rows = Table.rows;
| |
| var i;
| |
|
| |
| if ( Button.firstChild.data === collapseCaption ) {
| |
| for ( i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = 'none';
| |
| }
| |
| Button.firstChild.data = expandCaption;
| |
| } else {
| |
| for ( i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = Rows[0].style.display;
| |
| }
| |
| Button.firstChild.data = collapseCaption;
| |
| }
| |
| }
| |
|
| |
| function createClickHandler( tableIndex ) {
| |
| return function ( e ) {
| |
| e.preventDefault();
| |
| collapseTable( tableIndex );
| |
| };
| |
| }
| |
| function createCollapseButtons()
| |
| {
| |
| var tableIndex = 0;
| |
| var NavigationBoxes = new Object();
| |
| var Tables = getElementsByClassName(document, "table", "collapsible");
| |
|
| |
| for ( var i = 0; i < Tables.length; i++ ) {
| |
| /* only add button and increment count if there is a header row to work with */
| |
| var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
| |
| if (!HeaderRow) continue;
| |
| var Header = HeaderRow.getElementsByTagName( "th" )[0];
| |
| if (!Header) continue;
| |
|
| |
| NavigationBoxes[ tableIndex ] = Tables[i];
| |
| Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
| |
|
| |
| var Button = document.createElement( "span" );
| |
| var ButtonLink = document.createElement( "a" );
| |
| var ButtonText = document.createTextNode( collapseCaption );
| |
|
| |
| Button.className = "collapseButton"; //Styles are declared in Common.css
| |
|
| |
| ButtonLink.style.color = Header.style.color;
| |
| ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
| |
| ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
| |
| ButtonLink.appendChild( ButtonText );
| |
|
| |
| Button.appendChild( document.createTextNode( "[" ) );
| |
| Button.appendChild( ButtonLink );
| |
| Button.appendChild( document.createTextNode( "]" ) );
| |
|
| |
| Header.insertBefore( Button, Header.childNodes[0] );
| |
| tableIndex++;
| |
| }
| |
|
| |
| var Tables = getElementsByClassName(document, "table", "collapsed");
| |
| for ( var i = 0; i < Tables.length; i++ ) {
| |
| collapseTable( i );
| |
| }
| |
|
| |
| var Tables = getElementsByClassName(document, "table", "autocollapse");
| |
| for ( var i = 0; i < Tables.length; i++ ) {
| |
| if ( i >= autoCollapse ) {
| |
| collapseTable( i );
| |
| }
| |
| }
| |
| }
| |
|
| |
| mw.hook( 'wikipage.content' ).add( createCollapseButtons );
| |
|
| |
| // Fix Table Header
| |
| var TableHeadFix = function () {
| |
| var obj, $table, $newtable, $win;
| |
| obj = this;
| |
|
| |
| this.clonehead = function () {
| |
| $newtable = $table.clone();
| |
| $newtable.find('tr:gt(0)').remove();
| |
|
| |
| $newtable.css('top', '0');
| |
| $newtable.css('position', 'fixed');
| |
| // Fixed by kk @ 2015-04-03
| |
| $newtable.css('margin-top', '0');
| |
| $newtable.hide();
| |
| };
| |
|
| |
|
| |
| this.check = function () {
| |
| if($table.size() == 0){
| |
| return;
| |
| }
| |
| var scrollTop = $win.scrollTop();
| |
| var start_offset = $table.offset();
| |
| if (scrollTop > start_offset.top && scrollTop <= (start_offset.top + $table.height())) {
| |
| $newtable.show();
| |
| } else {
| |
| $newtable.hide();
| |
| }
| |
| };
| |
|
| |
| this.event = function () {
| |
| $win.bind('scroll', obj.check);
| |
| };
| |
|
| |
| this.init = function (obj) {
| |
| $win = $(window);
| |
| $table = $(obj);
| |
| this.clonehead();
| |
| $table.after($newtable);
| |
|
| |
| this.event();
| |
| this.check();
| |
| };
| |
| }
| |
|
| |
| $(function () {
| |
| //Set table
| |
| $('.fixtable').each(function(){
| |
| var tableHeadFix = new TableHeadFix();
| |
| tableHeadFix.init(this);
| |
| });
| |
| });
| |