- Welcome to Touhou Wiki!
- Registering is temporarily disabled. Check in our Discord server to request an account and for assistance of any kind.
MediaWiki:Mobile.js
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)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for users using the mobile site */
/*
* Lazy Load - jQuery plugin for lazy loading images
*
* Copyright (c) 2007-2009 Mika Tuupola
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* http://www.appelsiini.net/projects/lazyload
*
* Version: 1.5.0
*
*/
(function($) {
$.fn.lazyload = function(options) {
var settings = {
threshold : 0,
failurelimit : 0,
event : "scroll",
effect : "show",
container : window
};
if(options) {
$.extend(settings, options);
}
/* Fire one scroll event per scroll. Not one scroll event per image. */
var elements = this;
if ("scroll" == settings.event) {
$(settings.container).bind("scroll", function(event) {
var counter = 0;
elements.each(function() {
if ($.abovethetop(this, settings) ||
$.leftofbegin(this, settings)) {
/* Nothing. */
} else if (!$.belowthefold(this, settings) &&
!$.rightoffold(this, settings)) {
$(this).trigger("appear");
} else {
if (counter++ > settings.failurelimit) {
return false;
}
}
});
/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function(element) {
return !element.loaded;
});
elements = $(temp);
});
}
this.each(function() {
var self = this;
/* Save original only if it is not defined in HTML. */
if (undefined == $(self).attr("original")) {
$(self).attr("original", $(self).attr("src"));
}
if ("scroll" != settings.event ||
undefined == $(self).attr("src") ||
settings.placeholder == $(self).attr("src") ||
($.abovethetop(self, settings) ||
$.leftofbegin(self, settings) ||
$.belowthefold(self, settings) ||
$.rightoffold(self, settings) )) {
if (settings.placeholder) {
$(self).attr("src", settings.placeholder);
} else {
$(self).removeAttr("src");
}
self.loaded = false;
} else {
self.loaded = true;
}
/* When appear is triggered load original image. */
$(self).one("appear", function() {
if (!this.loaded) {
$("<img />")
.bind("load", function() {
$(self)
.hide()
.attr("src", $(self).attr("original"))
[settings.effect](settings.effectspeed);
self.loaded = true;
})
.attr("src", $(self).attr("original"));
};
});
/* When wanted event is triggered load original image */
/* by triggering appear. */
if ("scroll" != settings.event) {
$(self).bind(settings.event, function(event) {
if (!self.loaded) {
$(self).trigger("appear");
}
});
}
});
/* Force initial check if images should appear. */
$(settings.container).trigger(settings.event);
return this;
};
/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
$.belowthefold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).height() + $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top + $(settings.container).height();
}
return fold <= $(element).offset().top - settings.threshold;
};
$.rightoffold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).width() + $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left + $(settings.container).width();
}
return fold <= $(element).offset().left - settings.threshold;
};
$.abovethetop = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top;
}
return fold >= $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left;
}
return fold >= $(element).offset().left + settings.threshold + $(element).width();
};
/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() */
$.extend($.expr[':'], {
"below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
"above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
"right-of-fold" : "$.rightoffold(a, {threshold : 0, container: window})",
"left-of-fold" : "!$.rightoffold(a, {threshold : 0, container: window})"
});
})(jQuery);
jQuery(document).ready(
function($) {
$("img").lazyload({
placeholder : "",
effect : "fadeIn",
threshold : 200
});
}
);
function tabContentCreate () {
var group1 = $('.tab_content_container'), group1l = group1.length;
for(var i = 0; i < group1l; i++){
var group = group1.eq(i);
var container = group.find('.tab_content_button_container').eq(0);
var default_div = group.find('.tab_content_default').eq(0);
var width = default_div.attr('data-width');
var group2 = group.find('.tab_content_button'), group2l = group2.length;
for(var j = 0; j < group2l; j++){
group2.eq(j).appendTo(container);
}
var group2 = group.find('.tab_content_button'), group2l = group2.length;
for(var j = 0; j < group2l; j++){
group2.eq(j).css('width', width);
group2.eq(j).on('click', function(){
var a = $(this);
var key = a.attr('data-index');
var tab = a.parents('.tab_content_container').find('.tab_content_content[data-index="' + key + '"]');
a.parents('.tab_content_container').find('.tab_content_content').css('display', 'none');
a.parents('.tab_content_button_container').find('.tab_content_button').css({
'cursor' : 'pointer',
'background-color' : '#eee',
'box-shadow' : '0 0 3px 0 #000'
});
tab.css('display', 'block');
a.css({
'cursor' : 'default',
'background-color' : '#fff',
'box-shadow' : '0 0 2px 0 #000 inset, 0 0 2px 0 #000 inset'
})
});
}
var default_value = default_div.attr('data-value');
if(default_value === '0'){
group.find('.tab_content_button').eq(0).trigger('click');
} else {
group.find('.tab_content_button[data-index="' + default_value + '"]').eq(0).trigger('click');
}
}
}
/*New Table_content that works on mobile*/
var tabContentButtons = document.querySelectorAll(".tab_content_button");
var tabContentContents = document.querySelectorAll(".tab_content_content");
for (var i = 0; i < tabContentButtons.length; i = i+1) {
tabContentButtons[i].addEventListener("click", function() {
tab = event.target.id;
var tabParent = event.target.parentNode.parentNode;
var thisContentContainer = tabParent.querySelector(".tab_content_content_container");
var thisContentContents = thisContentContainer.children
for (var j = 0; j < tabContentButtons.length; j = j+1) {
thisContentContents[j].style.display="none";
tabParent.querySelector("#"+tab+".tab_content_content").style.display="block";
};
});
}
/* Fixes edit button */
var wgScript = mw.config.get("wgScript");
var wgPageName = mw.config.get("wgPageName");
var wgRevisionId = mw.config.get("wgRevisionId");
var wgCurRevisionId = mw.config.get("wgCurRevisionId");
var edit_button = document.getElementById("ca-edit");
var edit_link_new = wgScript+"?title="+wgPageName+"&action=edit"
if (wgRevisionId != wgCurRevisionId) {
edit_link_new = edit_link_new+"&oldid="+wgRevisionId;
};
edit_button.setAttribute("href", edit_link_new);