User:Ditto Duck Penguin/global.js

//Plese re-arrange it like this. if (mw.config.get("wgCityId") && mw.config.get("wgCanonicalSpecialPageName") == "Chat") { //This is recommended if (mw.config.get("wgServer") == "http://steven-universe.wikia.com/"){ console.log('Not loading here!'); //This is not needed. } else { //Directly add this instead mw.loader.load(importScriptPage('User:Ditto_Creeper_Bot/chat.js','steven-universe')); mw.loader.load(importStylesheetPage('User:Ditto_Creeper_Bot/chat.css','steven-universe')); mw.loader.load(document.title = document.title.replace(" | Fandom powered by Wikia"," | Global JS loaded!")); } }  else { //Hell this is needed. window.ajaxRefresh = 1; window.ajaxPages = ["Special:RecentChanges", "Special:Watchlist", "Special:Log", "Special:Contributions", "User:Ditto_Creeper_Bot/IL", "Special:Images", "Special:Log/upload", "Special:WikiActivity" ]; window.AjaxRCRefreshText = 'Refresh'; window.AjaxRCRefreshHoverText = 'Refreshing'; massProtectDelay = 200; /* Update&Rename Modification */ PRAoptions = { editSummary: 'Updating page links' }; /* Quick Delete comments */ Advancedcomments = { defaultreason: "Inappropriate, Leak, or not needed." }; /* AdvancedOasisUI settings */ window.AdvancedOasisUI = { accountNavFollowedPages: true, accountNavWatchlist: true, categoryRedlink: true, RCHeader: true, DefaultSourceMode: true, lightbox: true, randomPageLimitedTo: '', activity2RC: false, userLang: true, }; /* MessageBlock settings */ var MessageBlock = { title: 'Block', message: 'You have been blocked for $2 because you have $1', autocheck: true }; /* Fast delete settings */ window.fdButtons = []; window.fdButtons.push({	summary: 'Vandalism/Spam',	label: 'V/S' }, {	summary: 'Housekeeping',	label: 'HK' }, {	summary: 'Inappropriate content',	label: 'Content' }, {	summary: 'Unused',	label: 'Unused' }); /* QuickModTools settings */ window.QuickModTools = { quickreasons: [ "Misbehaving in chat-please see the Chat guideines", "Spam/Flooding Chat", "Swearing", "Overusing Caps", "Trolling", "Intimidating behaviour/harassment/trolling", "Posting/Discussing leak content/topics", "Ban Evasion", "Underaged", "Hate speech/Slur", "Linking NSFW content", "Sockpuppetry", "Connection problem, please fix it and leave a message on my message wall" ],	defbanreason: "Misbehaving in chat", defbanlength: "1200" }; /* AutoEditDropdown settings */ window.AutoEditDropdownConfig = { expandedAreaContribute: true, expandedAreaEdit: false }; var qtEnableUserPageOverwrite = true; var qtEnableMessageWallGreetingOverwrite = true; var qtMessageWallGreetingTemplate = ''; var qtUserPageTemplate = ''; var replacements = 'again.'; massCategorizationDelay = 5000;

/* Get rid of this randomness.*/ document.title = document.title.replace(" | Fandom powered by Wikia", '');

//*Slowly Cleaning up*// importScriptPage('MediaWiki:VSTFReport/code.js','kocka'); //Kocka's Vandal reporter importScriptPage("MediaWiki:Torus.js","monchbox"); //Chat remaker importScriptURI('http://botcentral.wikia.com/index.php?title=User:Ditto_Creeper_Bot/test&action=raw&ctype=text/javascript'); //Custom UndoTool and MassCat importScriptURI('http://botcentral.wikia.com/index.php?title=User:Ditto_Creeper_Bot/AjaxUndo&action=raw&ctype=text/javascript'); //Ajax Undo, under construction importScriptURI('http://botcentral.wikia.com/index.php?title=User:Ditto_Creeper_Bot/revert&action=raw&ctype=text/javascript'); //Loads Chat JS Globally. Hail Monochomon! importScriptURI('http://botcentral.wikia.com/index.php?title=User:Ditto_Creeper_Bot/test2&action=raw&ctype=text/javascript'); importScriptPage('FixWantedFiles/code.js', 'dev'); //WantedFile Fix importScriptPage('MediaWiki:RedirectManagement/code.js', 'dev'); //Fixes redirects importScriptPage('MediaWiki:QuickTools/advanced.js', 'dev'); //QuickTools with epic functions. importScriptPage('User:K6ka/scripts/Gadget-HotCat.js', 'k6ka-test' ); importScriptPage('MediaWiki:Common.js/spreport.js', 'runescape' ); importScriptPage('Mediawiki:AjaxUndo/code.js', 'dev'); importScriptPage('MediaWiki:ImageNotification/code.js', 'kocka'); //I know, why don't I ever do it in one little importarticle string? It's because I'm lazy as hell XP

//*Slowly Cleaning up*//

importArticles({   type: "script",    articles: [        "u:dev:ListFiles/code.js", // ListFiles from Dev Wiki        'u:josephhawk:User:Josephyr/categorycleanup.js', //Cleans those unwanted categories        'u:josephhawk:User:Josephyr/file.js', //Lists mroe files.        'u:josephhawk:User:Josephyr/filecleanup.js', //Cleans fules        'u:josephhawk:User:Josephyr/linksweeper.js', //Well, sweeps the unwanted links        'u:josephhawk:User:Josephyr/redirects.js',        'u:josephhawk:User:Josephyr/tc.js',    ] });

importArticles( {	type: "script",	articles: ['u:dev:Mediawiki:AjaxRC/code.js',		//Hola, the creator of this is my buddy.		'u:elderscrolls:MediaWiki:Common.js/DiscussionsFeed.js',		//This tool is the bomb. Shows an RC for a discussion feed. Perfect for DC mods.		'u:dev:MediaWiki:AdvancedOasisUI/code.js',		//Adds extra features.		'u:dev:Mediawiki:AjaxThreadUnfollow/code.js',		//Quick Unfollow a thread.		'u:dev:Mediawiki:AutoEditDropdown/code.js',		//Edit Drop downs.		'u:dev:MediaWiki:ColoredColors/code.js',		//Hex colors will represent themselves by their hex.		'u:dev:Mediawiki:DisplayClock/code.js',		//UTC Clocks.		'u:dev:Mediawiki:FastDelete/code.js',		//Quick Delete.		'u:dev:Mediawiki:MassBlock/code.js',		//Quick Blocks those damn vandals.		'u:dev:Mediawiki:MassNullEdit/code.js',		//Mass Null Edit, the most useless thing for me.		'u:dev:Mediawiki:MassRedirect/code.1.js',		//Mass Redirect for pages. 'u:dev:Mediawiki:MassUserRights/code.js', //Pfft, I'll use it when I need it. 'u:dev:MediaWiki:AjaxBatchDelete/code.2.js', //For deleting alot o stuff. 'u:dev:MediaWiki:AjaxBatchUndelete.js', //For undeleting alot o stuff. 'u:dev:MediaWiki:AjaxBatchUndelete/code.js', //Secondary coding. 'u:dev:MediaWiki:AjaxBlock/code.js', //Ajax blocking with a loader. 'u:dev:MediaWiki:AjaxPatrol/code.js', //Ajax Patrolling with Loader. 'u:dev:MediaWiki:AjaxRedirect/code.js', //Ajax redirect with loader. 'u:dev:MediaWiki:AjaxRename/code.js', //Rename pages with a loader. 'u:dev:MediaWiki:AntiUnicruft/code.js', //Fixes bugs. 'u:dev:MediaWiki:AutoEditPages/code.js', //I don't even know. 'u:dev:MediaWiki:CacheCheck/code.js', //Checks my cache for anything. 'u:dev:MediaWiki:CategoryRenameAuto-update/code.js', //Rename categories in an ease. 'u:dev:MediaWiki:ContribsLink/code.js', //Contribs link instead of profile with diffs. 'u:dev:MediaWiki:DisplayTimer/code.js', 'u:dev:MediaWiki:DupImageList/code.js', //DPL. 'u:dev:MediaWiki:EditcountTag/code.js', 'u:dev:MediaWiki:EditIntroButton/code.js', //For admins only. Edit 'edit' messages. 'u:dev:MediaWiki:ExternalImageLoader/code.js', //For loading cross world images. [NSFW images are prohibited, use wisely.] 'u:dev:MediaWiki:FastDelete/code.js', //Delete within seconds. 'u:dev:MediaWiki:FasterBanModule/code.js', //I don't even use this. 'u:dev:MediaWiki:FileUsageAuto-update/code.js', 'u:dev:MediaWiki:FindAndReplace/code.js', 'u:dev:MediaWiki:FloatingToc/code.js', 'u:dev:MediaWiki:HeaderLinks/code.js', 'u:dev:MediaWiki:LastEdited/code.js', 'u:dev:MediaWiki:MarkForDeletion/code.js', 'u:dev:MediaWiki:MassBlock/code.js', 'u:dev:MediaWiki:MassProtect/code.js', 'u:dev:MediaWiki:MassRenameRevert/code.js', 'u:dev:MediaWiki:MultipleFileDelete/code.js', //Pfft, got my own wiki hidden boi. 'u:dev:MediaWiki:Nuke/code.js', //Damn em vandals, they don't know what's coming ;D 'u:dev:MediaWiki:PortableCSSPad/code.js', //Portable css notepad,efficient for testing css live. [Thanks Sophie] 'u:admintools:MediaWiki:Common.js/Maintenance.js', //Creating an extra layer for reporting. /*'u:dev:MediaWiki:PrivateMessageAlert/code.js',*/ //Private Message Alert for chatroom only. /*		'u:dev:MediaWiki:QuickCreateMessageWallGreeting/code.js', 'u:dev:MediaWiki:QuickCreateUserPage/code.js', Script made by Ditto Creeper Bot is located down. 'u:dev:MediaWiki:QuickToolsv2/code.js', //Quick tools made by Shining Armor, a brilliant coder. 'u:dev:MediaWiki:Quick_Management/code.js', //God damn thing ain't loading bruh. 'u:dev:MediaWiki:RelocateEditDiscussionButtons/code.js', //As the title says. 'u:dev:MediaWiki:ReplyAndClose/code.js', //This is holy molly 'u:dev:MediaWiki:RevealAnonIP/code.js', //Reveals IP of an IP User 'u:dev:MediaWiki:SearchSuggest/code.js', 'u:dev:MediaWiki:ThreadIndicator/code.js', 'u:dev:MediaWiki:UnsafeScripts/code.js', //Huh??? 'u:dev:MediaWiki:ViewRemoved/code.js', //As the title, view removed pages in the RC		'u:dev:MediaWiki:View_Source/code.js', //View the raw format of a page. 'u:dev:MediaWiki:WallGreetingButton/code.js', //Allows quick Message Wall Edit through a button 'u:dev:MediaWiki:WHAM/code.2.js', //Wham thy enemies. 'u:dev:Mediawiki:Message/code.js', //This goddamn script ain't working bro. 'u:dev:Mediawiki:MessageBlocker/code.js', //Blocks Message wall messages from Trolls 'u:dev:Mediawiki:NullEditButton/code.js', //Artificial page volume nullifier. [I think] 'u:dev:Mediawiki:PageRenameAuto-update/code.js', //Bots all the pages after renamed. 'u:dev:Mediawiki:PurgeButton/code.js', //Auto Purge Button. 'u:dev:Mediawiki:QQX/code.js', //Changing the skins. 'u:dev:Mediawiki:QuickComments/code.js', //Deletes alot o comments fast. 'u:dev:Mediawiki:QuickDelete/code.js', //Deletes alot o files fast 'u:dev:Mediawiki:QuickThreads/code.js', //Ajax Remove threads. 'u:dev:Mediawiki:RevealAnonIP/usercode.js', //Reveals IP of an IP User 'u:dev:Mediawiki:SignatureCheck/code.js', //Alerts me if I didn't add a signature 'u:kocka:MediaWiki:AjaxCommentDelete/code.js', 'u:kocka:MediaWiki:AjaxThreadDelete/code.js', 'u:kocka:MediaWiki:RedirectMessageWall/code.js', /*'u:navid:MediaWiki:BadWords.js',*/ //Swears set as pings [Only works for chat] /*'u:runescape:User:Joeytje50/tabinsert.js',*/ //TabInsert Usernames [For chatroom Only] 'u:starmanw:MediaWiki:QuickLogs/code.js', //Logs through the contribs itself. 'u:starmanw:MultiUpload/code.js', //Upload several thousand pics at once, is not recommended by Wiki Staff. 'u:dev:LastEdited/code.js', //View last editor of a page with it's volume. 'u:dev:MediaWiki:RecentChangesMultiple/code.2.js' //Multiple Recent changes feed. ] });
 * /		'u:dev:MediaWiki:QuickModTools/loader.js',

//*End of Script*//

$('a').each(function {  if ( $(this).attr('href') == '/wiki/Special:RecentChanges' ) {      $(this).attr('href', '/wiki/Special:RecentChanges?limit=50');   } });

//*Navigation*// var username = mw.config.get('wgUserName'); page = mw.config.get("wgPageName"); /* $(function {   var username = mw.config.get('wgUserName'),    page = mw.config.get("wgPageName"),    globalLinks = {        "User": "User:" + username,        "Wall": "User_talk:" + username,        "RC": "Special:RecentChanges?hidebots=0&limit=10",        "Admins": "Special:ListAdmins",        "Contribs": "Special:Contributions/" + username,        "Raw": page + "?action=raw",        "edit": page + "?action=edit"    }, linksContent = "";    if(mw.config.get("wgCityId") === "177") globalLinks.AL = "Special:AbuseLog";    for(var prop in globalLinks) linksContent += "" + prop + "";    $(".wds-global-navigation").append(linksContent);    // Empty delete reason    if(mw.config.get('wgAction') && mw.config.get('wgAction') === 'delete') $("#wpReason").val(""); });

http://beta.pastee.com/api/get/s2mh9/raw // Fixed version of a better header.

$(function {   $( ' User  ' ).insertAfter('.wds-global-navigation__search:first');   $( ' Wall  ' ).insertAfter('.wds-global-navigation__search:first');   $( ' RC  ' ).insertAfter('.wds-global-navigation__search:first');   $( ' Admins  ' ).insertAfter('.wds-global-navigation__search:first');   $( ' Contribs </a> ' ).insertAfter('.wds-global-navigation__search:first');   $( '<div class="wds-global-navigation__user-menu wds-dropdown"> Raw </a> ' ).insertAfter('.wds-global-navigation__search:first');   $( '<div class="wds-global-navigation__user-menu wds-dropdown"> Edit </a> ' ).insertAfter('.wds-global-navigation__search:first');   //You win this time Wikia but next time...I'll give you a hug.    $( '<div class="wds-global-navigation__user-menu wds-dropdown"> Bot  ' ).insertAfter('.wds-global-navigation__search:first'); });

/*Adds stuff to Advance Tools*/

/* Adds link to userpage in account naviagtion menu */

$(function { $('<li> Uploaders Multi-Upload</a>Super Uploader</a>  </li><li> Report Vandalism</a>Spam</a>Wiki</a>Headers</a>Blogs</a>Check</a>  </li><li> JS and CSS Common JS</a>Common CSS</a>Wiki JS</a>Wiki CSS</a>Chat JS</a>Chat CSS</a><a href= \'http://community.wikia.com/wiki/User:Ditto_Creeper_Bot/global.js\'>Global JS</a><a href= \'http://community.wikia.com/wiki/User:Ditto_Creeper_Bot/global.css\'>Global CSS</a>  </li><li> Tools <a href= "?action=edit">Edit Page</a><a href= "?action=raw">Raw Format</a><a href= "?action=purge">Purge the Page</a><a href= \'http://community.wikia.com/wiki/Template:User:Ditto_Creeper_Bot\'>Global Template</a><a href= \'http://www.botcentral.wikia.com/wiki/User:Ditto_Creeper_Bot/Archives\'>Archives</a><a href= \'http://botcentral.wikia.com/wiki/Special:BlankPage?blankspecial=MultiUpload\'>BotCentral Upload</a>  </li><li> Wanted Files <a href= "/wiki/Special:WantedPages">Wanted Pages</a><a href= "/wiki/Special:WantedFiles">Wanted Files</a><a href= "/wiki/Special:WantedCategories">Wanted Categories</a><a href= "/Special:WantedTemplates">Wanted Templates</a>  </li><li> Unused Files <a href= "/wiki/Special:UnusedFiles">Unused Files</a><a href= "/wiki/Special:UnusedPages">Unused Pages</a><a href= "/wiki/Special:UnusedFiles">Unused Files</a><a href= "/wiki/Special:UnusedCategories">Unused Categories</a><a href= "/Special:UnusedTemplates">Unused Templates</a><a href= "/Special:UnusedVideos">Unused Videos</a>  </li><li> Uncat Files <a href= "/wiki/Special:UncategorizedPages">Uncat Pages</a><a href= "/wiki/Special:UncategorizedFiles">Uncat Files</a><a href= "/Special:UncategorizedCategories">Uncat Categories</a>  </li>').insertBefore('.wds-list.wds-is-linked'); }); $(function { $('<li> Content MNGR. <a href="/wiki/c:steven-universe:User:Ditto_Creeper_Bot/DPL">Duplicates</a><a href="/wiki/c:steven-universe:User:Ditto_Creeper_Bot/IL">Uncategorized</a><a href= "/wiki/Special:UnusedFiles">Unused Files</a><a href= "/wiki/Project:ListFiles">List Files</a><a href= "/wiki/Special:BlankPage?blankspecial=MultiUpload">Super Uploader</a><a href="/wiki/Special:BlankPage/Images">Images</a><a href= "/wiki/Special:Specialpages">Special Pages</a><a href="/wiki/c:w:User:Ditto_Creeper_Bot/RC">Recent Changes</a> </li>').insertBefore('.wds-list.wds-is-linked'); }); //Replica of that dropdown menu. $(function { $('<li> Settings <a href="/wiki/Special:Following">Following</a><a href="/wiki/Special:Preferences">Settings</a><a href="/wiki/Special:DiscussionsFeed">Discussion Feed</a><a href="#">Null</a> </li>').insertBefore('.wds-list.wds-is-linked'); }); /*$(function { if ( wgNamespaceNumber == 6 && !$('.categories').hasClass('ui-sortable')) { $('.wikinav2 .WikiaPageHeader').css('padding-right', '0'); $('#WikiaPageHeader .comments').after( '<button class="wikia-button" id="hide-stuff" title="Hides">Hide '); */ //Please don't use this unless you know what you're doing. //Add profile template to wall and userpage via click. //Next update will be auto bot adding user pages...Probably /*               var wallconfig = { minor: true, bot: true, format: "json", summary: "Bot Edit", action: "edit", title: "Message Wall Greeting:" + username, token: mw.user.tokens.get("editToken"), watchlist: "nochange", text: "" };               var profileconfig = { minor: true, bot: true, format: "json", summary: "Bot Edit", action: "edit", title: "User:" + username, token: mw.user.tokens.get("editToken"), watchlist: "nochange", text: "" };

var saveNewContent = function (data) { if (data && data.edit && data.edit.result === "Success" && !data.edit.nochange) { console.log("added"); } else { console.log(data.error); }               };

//Performs query on wiki servers function processAction(type, actionConfig, successMsg, failMsg, runMethod) { var mwApi = (new mw.Api); var promise; if (actionConfig) { if (type === "post") { promise = mwApi.post(actionConfig); } else { promise = mwApi.get(actionConfig); }           promise.then(function (data) {                if (!runMethod) {                    if (!data.error) {                        sendMsg(successMsg);                    } else {                        failMsg = failMsg || "Failed : " + data.error.info + " ";                        sendMsg(failMsg);                    }                } else {                    runMethod(data, successMsg, failMsg);                }            }).fail(function (data) {                sendMsg(data.statusText);            }); }       return promise; }   processAction("post", profileconfig, "", "", saveNewContent); processAction("post", wallconfig, "", "", saveNewContent); ///Create UserPage and Message Wall in one click Script. ///@Author Ditto Creeper Bot, stuff guided by Ozank Cx ///Adds a button "Bot" to complete both edits at once. $(function { $('.profile-add').click(function { $.ajax( {				type: 'POST',				url: mw.util.wikiScript( 'api' ),				dataType: 'json',				data: {                   minor: true,                    bot: true,                    summary: "Bot Edit",                    action: "edit",                    title: "User:" + username,                    token: mw.user.tokens.get("editToken"),                    watchlist: "nochange",                    format: 'json',                    text: ""				}			} ) $.ajax( {				type: 'POST',				url: mw.util.wikiScript( 'api' ),				dataType: 'json',				data: {			minor: true,           bot: true,            format: "json",                    summary: "Bot Edit",                    action: "edit",                    title: "Message Wall Greeting:" + username,                    token: mw.user.tokens.get("editToken"),                    watchlist: "nochange",                    text: ""				}			} ); }); });
 * ///Thanks Ozank

/////////////////////////////////////////// /* Reporting to threads and walls script */ /*     Author: Ditto Creeper Bot        */ /*   Buds: KockaAdmiralac[Rule Module]  */ /*         Dorumin[Image report script] */ /*         Sophiedp   [Beta Testing]    */ /////////////////////////////////////////// //I'll plan to set the values to raw HTML// /////////////////////////////////////////// $(document).keydown(function(event) { 	if ((event.altKey || event.metaKey) && event.which == 83) { 		$('textarea#WallMessageTitle, textarea#WallMessageBody').click; 		var rp = mw.config.get('wgPageName'); 		var olasoy = rp.split(":"); 		var bud = olasoy[1].replace('_', ' ').replace('_', ' ').replace('_', ' ').replace( '_', ' ').replace('_', ' ').replace('_', ' '); 		var warninglabel = prompt("Please enter a valid label", "rb-warning"); 		switch (warninglabel) { 			case "wall-report": 				setTimeout(function { $('textarea#WallMessageTitle').val('Dear ' + bud + ',').trigger( 						jQuery.Event('keydown', { which: 13 })); 					$('textarea#WallMessageBody').val('').trigger(jQuery.Event( 'keydown', { which: 13 })); 				}, 500); 				break; 			case "thread-report": 				$('textarea.replyBody').click; 				setTimeout(function { $('textarea#WallMessageTitle').val('Dear ' + bud + ',').trigger( 						jQuery.Event('keydown', { which: 13 })); 					$('html > body #Wall textarea').val('').trigger(jQuery.Event( 'keydown', { which: 13 })); 				}, 500); 				break; 			case "rb-warning": 				setTimeout(function { $('textarea#WallMessageTitle').val('Dear ' + bud + 						', (Peaceful-Warning)').trigger(jQuery.Event('keydown', { which: 13 })); 					$('textarea#WallMessageBody').val('').trigger(jQuery.Event('keydown', { which: 13 })); 				}, 500); 				break; 			case "leaks": 				setTimeout(function { $('textarea#WallMessageTitle').val('Dear ' + bud + 						', (Illegal Links/Upload)').trigger(jQuery.Event('keydown', { which: 13 })); 					$('textarea#WallMessageBody').val( 						'Please do not upload illegal links onto the wikia, as they are against the rules here. If you continue to this, you will be blocked from the wikia for a period of time. Please read our regulations for further details and other rules.

 T h a t R a i n b o w  H u g g i n g  B u d  ^ - ^  ' ).trigger(jQuery.Event('keydown', { 						which: 13 					})); 				}, 500); break; case "swears": setTimeout(function { 					$('textarea#WallMessageTitle').val('Dear ' + bud + ', (Swearing)').trigger( jQuery.Event('keydown', { 							which: 13 						})); 					$('textarea#WallMessageBody').val( 'Please do not swear anywhere on the wikia even if it\'s censored. If you continue to do this, you will be blocked from the wikia. Please read our regulations here on the wikia so this may not happen again.

 T h a t R a i n b o w  H u g g i n g  B u d  ^ - ^  ' ).trigger(jQuery.Event('keydown', { 						which: 13 					})); 				}, 500); break; case "necroposting": setTimeout(function { 					$('textarea#WallMessageTitle').val('Dear ' + bud + ', (Necroposting)') 						.trigger(jQuery.Event('keydown', { 							which: 13 						})); 					$('textarea#WallMessageBody').val( '

 T h a t R a i n b o w  H u g g i n g  B u d  ^ - ^  ' ).trigger(jQuery.Event('keydown', { 						which: 13 					})); 				}, 500); break; } 	} }); /* Removes Footer */ $(function { $('footer').remove; });

/* Quick Access to EditCount */ if ( $('.tally').length ) { var $tally = $('.tally'); $tally.attr('title', 'EditCount'); $tally.click(function {       window.location.href = wgServer + '/wiki/Special:EditCount/' + wgPageName.split('User:')[1];    }); } /* Redirect to base page if ends with '/' */ if (wgPageName.match("/$")) { wgNewPageName = wgPageName.slice(0, -1); window.location.href = wgServer + '/' + wgNewPageName; } //*End for Navigation*//

/* Ana's Petals (SHH! I first gotta test this before tellin her ;-;)*/ if (mw.config.get("wgPageName") == "User:Piierogii"){ (function ($) {   /** Polyfills and prerequisites **/

// requestAnimationFrame Polyfill var lastTime   = 0; var vendors    = ['webkit', 'o', 'ms', 'moz', '']; var vendorCount = vendors.length;

for (var x = 0; x < vendorCount && ! window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; }

if ( ! window.requestAnimationFrame) { window.requestAnimationFrame = function(callback) { var currTime  = new Date.getTime; var timeToCall = Math.max(0, 16 - (currTime - lastTime));

var id  = window.setTimeout(function { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall;

return id; };   }

if ( ! window.cancelAnimationFrame) { window.cancelAnimationFrame = function(id) { clearTimeout(id); };   }

// Prefixed event check $.fn.prefixedEvent = function(type, callback) { for (var x = 0; x < vendorCount; ++x) { if ( ! vendors[x]) { type = type.toLowerCase; }

el = (this instanceof jQuery ? this[0] : this); el.addEventListener(vendors[x] + type, callback, false); }

return this; };

// Test if element is in viewport function elementInViewport(el) {

if (el instanceof jQuery) { el = el[0]; }

var rect = el.getBoundingClientRect;

return (           rect.top >= 0 &&                rect.left >= 0 &&                rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&                rect.right <= (window.innerWidth || document.documentElement.clientWidth)            ); }

// Random array element function randomArrayElem(arr) { return arr[Math.floor(Math.random * arr.length)]; }

// Random integer function randomInt(min, max) { return Math.floor(Math.random * (max - min + 1)) + min; }

/** Actual plugin code **/ $.fn.sakura = function (event, options) {

// Target element var target = this.selector == "" ? $('body') : this;

// Defaults for the option object, which gets extended below var defaults = { blowAnimations: ['blow-soft-left', 'blow-medium-left', 'blow-soft-right', 'blow-medium-right'], className: 'sakura', fallSpeed: 1, maxSize: 14, minSize: 10, newOn: 300, swayAnimations: ['sway-0', 'sway-1', 'sway-2', 'sway-3', 'sway-4', 'sway-5', 'sway-6', 'sway-7', 'sway-8'] };

var options = $.extend({}, defaults, options);

// Default or start event if (typeof event === 'undefined' || event === 'start') {

// Set the overflow-x CSS property on the target element to prevent horizontal scrollbars target.css({ 'overflow-x': 'hidden' });

// Function that inserts new petals into the document var petalCreator = function { if (target.data('sakura-anim-id')) { setTimeout(function {                        requestAnimationFrame(petalCreator);                    }, options.newOn); }

// Get one random animation of each type and randomize fall time of the petals var blowAnimation = randomArrayElem(options.blowAnimations); var swayAnimation = randomArrayElem(options.swayAnimations); var fallTime = ((document.documentElement.clientHeight * 0.007) + Math.round(Math.random * 5)) * options.fallSpeed;

// Build animation var animations = 'fall ' + fallTime + 's linear 0s 1' + ', ' + blowAnimation + ' ' + (((fallTime > 30 ? fallTime : 30) - 20) + randomInt(0, 20)) + 's linear 0s infinite' + ', ' + swayAnimation + ' ' + randomInt(2, 4) + 's linear 0s infinite';

// Create petal and randomize size var petal = $('<div class="' + options.className + '" />'); var height = randomInt(options.minSize, options.maxSize); var width = height - Math.floor(randomInt(0, options.minSize) / 3);

// Apply Event Listener to remove petals that reach the bottom of the page petal.prefixedEvent('AnimationEnd', function {                    if ( ! elementInViewport(this)) {                       $(this).remove;                    }                }) // Apply Event Listener to remove petals that finish their horizontal float animation .prefixedEvent('AnimationIteration', function (ev) {                   if ( (                           $.inArray(ev.animationName, options.blowAnimations) != -1 ||                            $.inArray(ev.animationName, options.swayAnimations) != -1                        ) && ! elementInViewport(this) ) {                       $(this).remove;                    }                }) .css({                   '-webkit-animation': animations,                    animation: animations,                    'border-radius': randomInt(options.maxSize, (options.maxSize + Math.floor(Math.random * 10))) + 'px ' + randomInt(1, Math.floor(width / 4)) + 'px',                    height: height + 'px',                    left: (Math.random * document.documentElement.clientWidth - 100) + 'px',                    'margin-top': (-(Math.floor(Math.random * 20) + 15)) + 'px',                    width: width + 'px'                });

target.append(petal); };

// Finally: Start adding petals target.data('sakura-anim-id', requestAnimationFrame(petalCreator));

}       // Stop event, which stops the animation loop and removes all current blossoms else if (event === 'stop') {

// Cancel animation var animId = target.data('sakura-anim-id');

if (animId) { cancelAnimationFrame(animId); target.data('sakura-anim-id', null); }

// Remove all current blossoms setTimeout(function {               $('.' + options.className).remove;            }, (options.newOn + 50));

}   }; }(jQuery));

$(document).ready(function {   $('body').sakura; });

} }