MediaWiki:Wikia.js

/* */ //- //get content of the tutorial page //- var tutorial; $(function gettutorial {    $.ajax({ url: 'https://utaite.wikia.com/wiki/Utaite_Wiki:Tutorial', success: function (html) { tutorial = ' ' + $(html).find('#mw-content-text').html + ' '; }   }); });

//- // Loads the current source of the page "pagename" (as stored in the database) // and inserts it at the cursor position //- function doPreload(pagename) { var loader = new ContentLoader; loader.callback = onPreloadArrival; loader.send('/index.php?title=' + pagename + '&action=raw&ctype=text/plain'); }

function insertAtCursor(myField, myValue) { //IE support if (document.selection) { myField.focus; sel = document.selection.createRange; sel.text = myValue; }   //MOZILLA/NETSCAPE support else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); }   else { myField.value += myValue; }	//update textarea overlay on insert of templates handleInput; } /* end preload code */

/* Template Preloads * Original by User:Grunny * Source - w:c:starwars:MediaWiki:Wikia.js * Altered to replace Wiki's template preloads by runescape wiki */ function customPreloadTemplates {

if (( mw.config.get('wgAction') !== 'edit' && mw.config.get('wgCanonicalSpecialPageName') !== 'CreatePage' ) || !$('div.module_content').length) { return; }

var preloadOptionsHtml = '', $preloadOptionsList, preloadBaseHtml = ' Standard preloads: ' +           ' Custom preload pagename: '

$('span.cke_buttons.cke_toolbar_templates').replaceWith(preloadBaseHtml);

$.get(mw.config.get('wgScript'), {       title: 'Template:Stdpreloads',        action: 'raw',        ctype: 'text/plain'    }, function (data) {        var lines = data.split('\n');        for (var i = 0; i < lines.length; i++) {            var value = ( lines[i].indexOf('-- ') === 0 ) ? lines[i].substring(3) : " ";            preloadOptionsHtml += '' + lines[i] + ' ';        }        $preloadOptionsList = $(' ').attr('id', 'stdSummaries').html(preloadOptionsHtml).change(function  { var value = $(this).val; if (value !== '') { value = 'Template:' + value + '/preload'; value = value.replace(' ', '_'); $.get(mw.config.get('wgScript'), {title: value, action: 'raw', ctype: 'text/plain'}, function (data) {

if ($('#cke_wpTextbox1 #cke_contents_wpTextbox1 .cke_source').length) { insertAtCursor($('#cke_wpTextbox1 #cke_contents_wpTextbox1 .cke_source')[0], data); } else { insertAtCursor(document.getElementById('wpTextbox1'), data); }               });            }        });

$('div#lf-preload').append($preloadOptionsList); });

$('#lf-preload-pagename-w').html(''); $('#lf-preload-button-w').html('');

}

function doCustomPreloadOasis { var value = $('#lf-preload-pagename-w > input').val; value = value.replace(' ', '_'); $.get(mw.config.get('wgScript'), {title: value, action: 'raw', ctype: 'text/plain'}, function (data) {

if ($('#cke_wpTextbox1 #cke_contents_wpTextbox1 .cke_source').length) { insertAtCursor($('#cke_wpTextbox1 #cke_contents_wpTextbox1 .cke_source')[0], data); } else { insertAtCursor(document.getElementById('wpTextbox1'), data); }   }); }

//- //link to converter in editor, format, and video-> tutorial; thanks to UltimateSupreme with helping to put it for visual editors as well w:c:Thread:608344 //- function addfeatures { icon = "  Convert   Format    Tutorial   "; $('.cke_button.RTEImageButton.cke_button_big').append(icon); };

//- //Custom YT & TM player //- $(function loader {   if (document.querySelector('.ytvideo') !== null) {        load(".ytvideo", "<iframe width='300' height='200' src='https://www.youtube.com/embed/", "?version=3&hl=en_US&theme=dark&color=white&loop=1&showinfo=0&autohide=0&disablekb=1&autoplay=0' frameborder='0' allowfullscreen=0> ");   }    if (document.querySelector('.ytsample') !== null) {        load(".ytsample", "<div style='width: 202px; overflow: hidden; height: 21px; margin-top: 5px; margin-bottom: 5px; margin-right: 5px; position:relative; top:0; border: 3px solid #0f0f0f; border-radius:10px'><iframe width='202px' height='21' src='https://www.youtube.com/embed/", "?version=3&hl=en_US&theme=dark&color=white&loop=1&showinfo=0&autohide=0&disablekb=1&autoplay=0' frameborder='0' allowfullscreen=0> ");   }    if (document.querySelector('.tmsample') !== null) {        load(".tmsample", " ");   } });

function load(sample, template1, template2) { $(sample).first.ready(function {        var id = document.querySelector(sample).title;        $(sample).first.append(template1 + id + template2);    }); if ($(sample).length >= 2) { $(sample).eq(1).ready(function {            var id = document.querySelectorAll(sample)[1].title;            $(sample).eq(1).append(template1 + id + template2);        }); };   if ($(sample).length >= 3) { $(sample).eq(2).ready(function {            var id = document.querySelectorAll(sample)[2].title;            $(sample).eq(2).append(template1 + id + template2);        }); };   if ($(sample).length >= 4) { $(sample).eq(3).ready(function {            var id = document.querySelectorAll(sample)[3].title;            $(sample).eq(3).append(template1 + id + template2);        }); }; }

//- //stuff for the formatter //- function formatcaller { $('.tutorialicon').click(function {        if ($('.tutorialicon').hasClass('tutorialopen')) {            $('.tutorialicon').removeClass('tutorialopen');            $('#tutorialcontent').empty;            return;        }        $('.tutorialicon').addClass('tutorialopen');        $('#tutorialcontent').append(tutorial);    });

$('#formatter').click(function {        if ($('#formatter').hasClass('formatteropen')) {            $('#formatter').removeClass('formatteropen');            $('#formatcontent').empty;            return;        }        $('#formatter').addClass('formatteropen');        $('#formatcontent').html(" <img src='https://images.wikia.nocookie.net/__cb1481713639/common/skins/oasis/images/icon_close.png'>  NND mylists  <input type='text' name='nnd' placeholder='7359936 25396393 31424334 13892546 26633779'>  BB userspace  <input type='text' name='bb' placeholder='11073'>  YT usernames  <input type='text' name='ytun' placeholder='splendiferousfantasy'>  YT channels  <input type='text' name='ytch' placeholder='UCMsNS10PzxzEayT7UHS4p6g'>  YT playlists  <input type='text' name='ytpl' placeholder='PLOA7lc-qUd88NjN4adz8Di8ZHT6jwIFrS PLOA7lc-qUd8_mcFeaVAKWKbg9FSy35SIV'>  SoundCloud ID  <input type='text' name='sc' placeholder='sumashu missingnumber'>  <input type='button' value='Format!'> "); format; });   function song(title, yt, nnd, sc, bb, date) {        this.title = title;        this.yt = yt;        this.nnd = nnd;        this.sc = sc;        this.bb = bb;        this.date = date;    };

function format { $('#formatwindow input[type=button]').click(function {            var nnd = [];            var ytun = [];            var ytch = [];            var ytpl = [];            var sc = [];            var bb = [];            var list = [];            var listsc = [];

if (!$('input[name=nnd]').val == '') { nnd = $('input[name=nnd]').val.split(" "); for (var i = 0; i < nnd.length; i++) { var url = "https://query.yahooapis.com/v1/public/yql?q=select%20title%2CpubDate%2Clink%20from%20rss%20where%20url%3D'http%3A%2F%2Fwww.nicovideo.jp%2Fmylist%2F" + nnd[i] + "%2Fvideo%3Frss%3D2.0'&diagnostics=true"; $.ajax({                       type: "GET",                        url: url,                        dataType: "xml",                        success: function (xml) {                            $(xml).find('item').each(function  { list.push(new song($(this).find('title').text, , $(this).find('link').text.split("/watch/")[1], , '', $(this).find('pubDate').text.split(' ')[3] + '.' + getmon($(this).find('pubDate').text.split(' ')[2]) + '.' + $(this).find('pubDate').text.split(' ')[1])) });                       }                    });                }            }            ;            if (!$('input[name=bb]').val == '') { bb = $('input[name=bb]').val.split(" "); var token = " "; for (var i = 0; i < bb.length; i++) { //find number of pages then call bbformat on all pages console.log('calling bb ajax'); //changed to yquery var url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'http%3A%2F%2Fspace.bilibili.com%2Fajax%2Fmember%2FgetSubmitVideos%3Fmid%3D" + bb[i] + "'&diagnostics=true"; console.log('current url: '+url); $.ajax({                       type: "GET",                        url: url,                        dataType: "xml",                        success: function (xml) {                            console.log('bilibili ajax successful');                            var pages = $(xml).find('pages').text;                            for (var j = 0; j <= pages; j++) {                                bbformat("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'http%3A%2F%2Fspace.bilibili.com%2Fajax%2Fmember%2FgetSubmitVideos%3Fmid%3D" + $(xml).find('mid:eq(0)').text + "%26page%3D", j, list);                            }                        }                    }); }           }            ;            if (!$('input[name=ytch]').val == '') { ytch = $('input[name=ytch]').val.split(" "); var token = " "; for (var i = 0; i < ytch.length; i++) { ytchformat(ytch[i], '', list); }           }            ;            if (!$('input[name=ytun]').val == '') { ytun = $('input[name=ytun]').val.split(" "); var token = " "; for (var i = 0; i < ytun.length; i++) { ytunformat(ytun[i], '', list); }           }            ;            if (!$('input[name=ytpl]').val == '') { ytpl = $('input[name=ytpl]').val.split(" "); var token = " "; for (var i = 0; i < ytpl.length; i++) { ytplformat(ytpl[i], '', list); }           }            ;            if (!$('input[name=sc]').val == '') { sc = $('input[name=sc]').val.split(" "); var url = " "; for (var i = 0; i < sc.length; i++) { url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'http%3A%2F%2Fapi.soundcloud.com%2Fresolve.json%3Furl%3Dhttp%3A%2F%2Fsoundcloud.com%2F"+sc[i]+"%2Ftracks%26client_id%3D2t9loNQH90kzJcsFCODdigxfp325aq4z'&diagnostics=true" console.log('calling sc ajax'); $.ajax({						type: "GET",						url: url,						dataType: "xml",						success: function (xml) {							$(xml).find('json').find('json').each(function { listsc.push(new song($(this).find('title').text, , , $(this).find('permalink_url:eq(1)').text, '', $(this).find('created_at').text.split(' ')[0].replace('/', '.').replace('/', '.'))) });						}					});               }            }            ;            //$(document).ajaxStop(function{}) $(document).ajaxStop(function {                list.sort(function (a, b) { if (a.title < b.title) return -1; if (a.title > b.title) return 1; return 0; });               list.sort(function (a, b) { if (a.date < b.date) return -1; if (a.date > b.date) return 1; return 0; });               for (var i = 0; i < list.length - 1; i++) {                    if ((list[i + 1].title == list[i].title) && (list[i + 1].date == list[i].date)) {                        if (list[i + 1].nnd != '') {                            list[i].nnd = list[i + 1].nnd;                        } else {                            list[i].yt = list[i + 1].yt;                        }                        list.splice(i + 1, 1);                        i--;                    }                }                var rmv = ['【歌ってみた】', 'を歌ってみた', '歌ってみた', '(english cover)', 'english cover', 'cover', 'english', 'vers.', 'ver.', 'vers', 'ver', 'french', 'german', 'chinese', 'spanish', 'rap', 'screamo', 'piano', 'tv size', 'tv-size', 'acapella', 'a capella', 'short', 'band', 'acoustic', 'arrange', 'parody', '替え歌ってみた', '替え歌', '--', '- -'];                var out = '==List of Covered Songs==\n\n'); var outsc = '===Songs on SoundCloud===\n\n');               if (listsc.length <= 0) {                    outsc = '';                }

$('#formatcontent').html(" <img src='https://images.wikia.nocookie.net/__cb1481713639/common/skins/oasis/images/icon_close.png'> " + out + outsc + " "); $('#formatwindow .close').click(function {                    $('#formatcontent').empty;                }); })       })    }    function verformat(title) { var tmp = ' -'; var t = ''; if (title.toLowerCase.indexOf('english') > -1 || title.indexOf('英語') > -1 || title.indexOf('ENG') > -1) { tmp += 'English '; }       if (title.toLowerCase.indexOf('french') > -1 || title.toLowerCase.indexOf('français') > -1) { tmp += 'French '; }       if (title.toLowerCase.indexOf('german') > -1 || title.toLowerCase.indexOf('deutsch') > -1) { tmp += 'German '; }       if (title.toLowerCase.indexOf('chinese') > -1 || title.indexOf('中文') > -1) { tmp += 'Chinese '; }       if (title.toLowerCase.indexOf('spanish') > -1 || title.toLowerCase.indexOf('español') > -1) { tmp += 'Spanish '; }       if (title.toLowerCase.indexOf('indonesia') > -1) { tmp += 'Indonesian '; }       if (title.toLowerCase.indexOf('rap') > -1) { tmp += 'Rap '; }       if (title.toLowerCase.indexOf('screamo') > -1) { tmp += 'Screamo '; }       if (title.toLowerCase.indexOf('piano') > -1 || title.indexOf('ピアノ') > -1) { tmp += 'Piano '; }       if (title.toLowerCase.indexOf('tv size') > -1 || title.toLowerCase.indexOf('tv-size') > -1) { tmp += 'TV size '; }       if (title.toLowerCase.indexOf('acapella') > -1 || title.toLowerCase.indexOf('a capella') > -1) { tmp += 'Acapella '; }       if (title.toLowerCase.indexOf('short') > -1) { tmp += 'Short '; }       if (title.toLowerCase.indexOf('band') > -1 || title.indexOf('バンド') > -1) { if (title.toLowerCase.indexOf('band edition') > -1) { t = ' -Band edition-'; } else { tmp += 'Band '; }       }        if (title.toLowerCase.indexOf('acoustic') > -1) { tmp += 'Acoustic '; }       if (title.toLowerCase.indexOf('arrange') > -1 || title.indexOf('アレンジ') > -1) { tmp += 'Arrange '; }       if (title.toLowerCase.indexOf('parody') > -1 || title.indexOf('替え歌') > -1) { tmp += 'Parody '; }       if (tmp == ' -') { return '' + t;       } return tmp + 'ver.-' + t   } function ytunformat(url, token, list) { var u = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'https%3A%2F%2Fwww.googleapis.com%2Fyoutube%2Fv3%2Fchannels%3Fkey%3DAIzaSyD5bC5qiEP-_25Llg2ciYNM9sW-WP6a6ck%26part%3Did%26forUsername%3D"+url+"'&diagnostics=true"; console.log('calling yt ajax'); console.log('function url: '+url); console.log('current url: '+u); $.ajax({                       type: "GET",                        url: u,                        dataType: "xml",                        success: function (xml) {							console.log('yt username ajax successful');                            $(xml).find('items').each(function  { var id = $(this).find('id').text; var uu = id; if (token == '') { } else { uu = id + "%26pageToken%3D" + token; }								uu = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'https%3A%2F%2Fwww.googleapis.com%2Fyoutube%2Fv3%2Fsearch%3Forder%3Ddate%26part%3Dsnippet%26maxResults%3D50%26key%3DAIzaSyD5bC5qiEP-_25Llg2ciYNM9sW-WP6a6ck%26channelId%3D"+uu+"'&diagnostics=true"; console.log('calling yt chid ajax'); console.log('function url: '+url); console.log('current url: '+uu); $.ajax({									type: "GET",									url: uu,									dataType: "xml",									success: function (xml) {										var token = " ";										token = $(xml).find('nextPageToken').text;										console.log("token='"+token+"'");										$(xml).find('items').each(function { console.log("check if id=null"+$(this).find('videoId').text) var tmp = " "; tmp = $(this).find('videoId').text; if (tmp != " ") { list.push(new song($(this).find('title').text, $(this).find('videoId').text, , , '', $(this).find('publishedAt').text.split('T')[0].replace('-', '.').replace('-', '.'))); }										});										if (token != " ") {											ytchformat(id, token, list);											console.log("token='"+token+"'");											console.log("token not empty");										}									}								}); });                       }                    });    };    function ytchformat(url, token, list) { var u = url; if (token == '') { } else { u = url + "%26pageToken%3D" + token; }		u = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'https%3A%2F%2Fwww.googleapis.com%2Fyoutube%2Fv3%2Fsearch%3Forder%3Ddate%26part%3Dsnippet%26maxResults%3D50%26key%3DAIzaSyD5bC5qiEP-_25Llg2ciYNM9sW-WP6a6ck%26channelId%3D"+u+"'&diagnostics=true"; console.log('calling yt chid ajax'); console.log('function url: '+url); console.log('current url: '+u); $.ajax({			type: "GET",			url: u,			dataType: "xml",			success: function (xml) {				var token = " ";				token = $(xml).find('nextPageToken').text;				console.log("token='"+token+"'");				$(xml).find('items').each(function { console.log("check if id=null"+$(this).find('videoId').text) var tmp = " "; tmp = $(this).find('videoId').text; if (tmp != " ") { console.log($(this).find('title').text); console.log($(this).find('videoId').text); console.log($(this).find('publishedAt').text); list.push(new song($(this).find('title').text, $(this).find('videoId').text, , , '', $(this).find('publishedAt').text.split('T')[0].replace('-', '.').replace('-', '.'))); }				});				if (token != " ") {					ytchformat(url, token, list);					console.log("token='"+token+"'");					console.log("token not empty");				}			}		}); };   function ytplformat(url, token, list) { var u = url; if (token == '') { } else { u = url + "%26pageToken%3D" + token; }		u = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'https%3A%2F%2Fwww.googleapis.com%2Fyoutube%2Fv3%2FplaylistItems%3Fpart%3Dsnippet%26key%3DAIzaSyD5bC5qiEP-_25Llg2ciYNM9sW-WP6a6ck%26playlistId%3D"+u+"'&diagnostics=true"; console.log('calling yt chid ajax'); console.log('function url: '+url); console.log('current url: '+u); $.ajax({			type: "GET",			url: u,			dataType: "xml",			success: function (xml) {				var token = " ";				token = $(xml).find('nextPageToken').text;				console.log("token='"+token+"'");				$(xml).find('items').each(function { console.log("check if id=null"+$(this).find('videoId').text) var tmp = " "; tmp = $(this).find('videoId').text; if (tmp != " ") { list.push(new song($(this).find('title').text, $(this).find('videoId').text, , , '', $(this).find('publishedAt').text.split('T')[0].replace('-', '.').replace('-', '.'))); }				});				if (token != " ") {					ytplformat(url, token, list);					console.log("token='"+token+"'");					console.log("token not empty");				}			}		}); };

function bbformat(url, page, list) { console.log('calling bb ajax'); //console.log('bbformat called with url:'+url+page); console.log('function url: '+url+page+"'&diagnostics=true"); $.ajax({           type: "GET",            url: url + page + "'&diagnostics=true",            dataType: "xml",            success: function (xml) {				$(xml).find('vlist').each(function  { var d = new Date(parseInt($(this).find('created').text) * 1000) list.push(new song($(this).find('title').text, , , '', 'av'+ $(this).find('aid').text, d.getFullYear + "." + ("0" + d.getMonth).slice(-2) + "." + ("0" + d.getDate).slice(-2))) });           }        });    };

function getmon(mon) { switch (mon) { case 'Jan': return '01'; break; case 'Feb': return '02'; break; case 'Mar': return '03'; break; case 'Apr': return '04'; break; case 'May': return '05'; break; case 'Jun': return '06'; break; case 'Jul': return '07'; break; case 'Aug': return '08'; break; case 'Sep': return '09'; break; case 'Oct': return '10'; break; case 'Nov': return '11'; break; case 'Dec': return '12'; break; }   } }

//tutorial hints - WIP: still more things to do, but concept is done var $textarea; var $highlights;

$(function {	$('#mw-content-text').prepend(" ");	$textarea = $('#wpTextbox1');	$highlights = $('#textareaoverlay');	bindEvents;	handleInput; });

var tips = { "|sampleimage1": [ " Usage ", "|sampleimage1 = artistnamesample.png ", "",     " Information ", " ・ Name the picture artistnamesample.png", " ・ It must be 100 x 100 pixels", " ・ Choose an image of a singer the illustrator often draws for, with a focus on the face " ],     "|illustratorname1": [ " Usage ", "|illustratorname1 = XXXXXX ", "",     " Examples ", "|illustratorname1 = Ohagi" ],     "|illustratornamejap1": [ " Usage ", "|illustratornamejap1 = XXXXXX ", "",     " Examples ", "|illustratornamejap1 = おはぎ " ],     "|sites1": [ " Usage ", "|sites1 = XXXXXX ", "",     " Examples ", "|sites1 = pixiv, Twitter, Blog, The Interviews", "",     " Information ", " ・ Link to sites the artist has an account on" ],     "|utaite1": [ " Usage ", "|utaite1 = XXX, XXX] ", "",     " Examples ", "|utaite1 = Akiakane, clear, Dasoku, PointFive .5", "",     " Information ", " ・ The singers that the illustrator draws for frequently " ], "{{Uptodate": [ " Usage ", "{{uptodate| Month XX, 20XX }}", "{{empty}}", "{{WIP| XXX }}", "{{complete}}", "",   " Examples ", "{{uptodate|August 03, 2013}}", "{{empty}}", "{{WIP}}", "{{WIP|songlist}}", "{{WIP|description}}", "{{complete}}", "",   " Information ", " ・ Use {{uptodate|...}} if List of Covered Songs is complete", " ・ Date = date of latest update of List of Covered Songs", " ・ Remove whole template if List of Covered Songs isn't up to date", "",   "  ・ Use {{empty}} if page has barely any content on it", " ・ Remove otherwise", "",   "  ・ Use {{WIP}} if page is rather incomplete (short description, not complete songlist, etc.)", " ・ Use {{WIP|songlist}} if List of Covered Songs isn't complete, but rest of page (description, gallery, trivia, etc.) is", " ・ Use {{WIP|description}} if description isn't up to par, but rest of page (gallery, songlist, trivia, etc.) is complete", " ・ Remove otherwise", "",   "Use {{complete}} if you believe page is 100% complete", " ・ Remove otherwise" ],   "{{uptodate": [ " Usage ", "{{uptodate| Month XX, 20XX }}", "{{empty}}", "{{WIP| XXX }}", "{{complete}}", "",   " Examples ", "{{uptodate|August 03, 2013}}", "{{empty}}", "{{WIP}}", "{{WIP|songlist}}", "{{WIP|description}}", "{{complete}}", "",   " Information ", " ・ Use {{uptodate|...}} if List of Covered Songs is complete", " ・ Date = date of latest update of List of Covered Songs", " ・ Remove whole template if List of Covered Songs isn't up to date", "",   "  ・ Use {{empty}} if page has barely any content on it", " ・ Remove otherwise", "",   "  ・ Use {{WIP}} if page is rather incomplete (short description, not complete songlist, etc.)", " ・ Use {{WIP|songlist}} if List of Covered Songs isn't complete, but rest of page (description, gallery, trivia, etc.) is", " ・ Use {{WIP|description}} if description isn't up to par, but rest of page (gallery, songlist, trivia, etc.) is complete", " ・ Remove otherwise", "",   "Use {{complete}} if you believe page is 100% complete", " ・ Remove otherwise" ], "{{empty": [ " Usage ", "{{uptodate| Month XX, 20XX }}", "{{empty}}", "{{WIP| XXX }}", "{{complete}}", "",   " Examples ", "{{uptodate|August 03, 2013}}", "{{empty}}", "{{WIP}}", "{{WIP|songlist}}", "{{WIP|description}}", "{{complete}}", "",   " Information ", " ・ Use {{uptodate|...}} if List of Covered Songs is complete", " ・ Date = date of latest update of List of Covered Songs", " ・ Remove whole template if List of Covered Songs isn't up to date", "",   "  ・ Use {{empty}} if page has barely any content on it", " ・ Remove otherwise", "",   "  ・ Use {{WIP}} if page is rather incomplete (short description, not complete songlist, etc.)", " ・ Use {{WIP|songlist}} if List of Covered Songs isn't complete, but rest of page (description, gallery, trivia, etc.) is", " ・ Use {{WIP|description}} if description isn't up to par, but rest of page (gallery, songlist, trivia, etc.) is complete", " ・ Remove otherwise", "",   "Use {{complete}} if you believe page is 100% complete", " ・ Remove otherwise" ], "{{WIP": [ " Usage ", "{{uptodate| Month XX, 20XX }}", "{{empty}}", "{{WIP| XXX }}", "{{complete}}", "",   " Examples ", "{{uptodate|August 03, 2013}}", "{{empty}}", "{{WIP}}", "{{WIP|songlist}}", "{{WIP|description}}", "{{complete}}", "",   " Information ", " ・ Use {{uptodate|...}} if List of Covered Songs is complete", " ・ Date = date of latest update of List of Covered Songs", " ・ Remove whole template if List of Covered Songs isn't up to date", "",   "  ・ Use {{empty}} if page has barely any content on it", " ・ Remove otherwise", "",   "  ・ Use {{WIP}} if page is rather incomplete (short description, not complete songlist, etc.)", " ・ Use {{WIP|songlist}} if List of Covered Songs isn't complete, but rest of page (description, gallery, trivia, etc.) is", " ・ Use {{WIP|description}} if description isn't up to par, but rest of page (gallery, songlist, trivia, etc.) is complete", " ・ Remove otherwise", "",   "Use {{complete}} if you believe page is 100% complete", " ・ Remove otherwise" ], "{{complete": [ " Usage ", "{{uptodate| Month XX, 20XX }}", "{{empty}}", "{{WIP| XXX }}", "{{complete}}", "",   " Examples ", "{{uptodate|August 03, 2013}}", "{{empty}}", "{{WIP}}", "{{WIP|songlist}}", "{{WIP|description}}", "{{complete}}", "",   " Information ", " ・ Use {{uptodate|...}} if List of Covered Songs is complete", " ・ Date = date of latest update of List of Covered Songs", " ・ Remove whole template if List of Covered Songs isn't up to date", "",   "  ・ Use {{empty}} if page has barely any content on it", " ・ Remove otherwise", "",   "  ・ Use {{WIP}} if page is rather incomplete (short description, not complete songlist, etc.)", " ・ Use {{WIP|songlist}} if List of Covered Songs isn't complete, but rest of page (description, gallery, trivia, etc.) is", " ・ Use {{WIP|description}} if description isn't up to par, but rest of page (gallery, songlist, trivia, etc.) is complete", " ・ Remove otherwise", "",   "Use {{complete}} if you believe page is 100% complete", " ・ Remove otherwise" ], "|site": [ " Usage ", "|site = XX ", "",   " Examples ", "|site = nnd", "|site = yt", "|site = bb", "",    " Information ", " ・ choose nnd, yt, or bb based on which site singer is most active on", " ・ This also adds appropriate category to page" ], "|imagesong": [ " Usage ", "|imagesong = XXX ", "",   " Examples ", "|imagesong = magnet", "|imagesong = magnet", "|imagesong = magnet {{nnd|1234567}}", "",   " Information ", " ・ If image is from a song cover, write song name here. You may link to song cover" ],   "|imagegroup": [ " Usage ", "|imagegroup = XXX ", "",     " Examples ", "|imagegroup = his Twitter account", "|imagegroup = Sorairo Muffler", "",     " Information ", " ・ If image is from an official collaboration group, write group name here" ], "|image ": [ " Usage ", "|image = XXX ", "",   " Examples ", "|image = sorarutwitter.png", "",   " Information ", " ・ For singers, use a decent looking image for main avatar", " ・ For singers, refrain from using a face-avatar (icon-size)", " ・ Only use fanart, if no high quality official art can be found", "",   " Important ", " ・ Definitely cite illustrator no matter if image is fanart or official (see officialillustrator or otherillustrator)" ],   "|officialillustrator": [ " Usage ", "|officialillustrator = XXX ", "",     " Examples ", "|officialillustrator = MACCO", "|officialillustrator = Ohagi (おはぎ)", "|officialillustrator = Funota (ふのた)", "|officialillustrator = {{VW|Haruyo|Haruyo (春夜)}}", "",     " Information ", " ・ If image is an official image, link illustrator here", " ・ Use Illustratornameromaji (Illustratornamejapanese) where I is letter, illustrator's name begins with, for artists featured on Avatar Illustrators", " ・ Use Illustratornameromaji (Illustratornamejapanese) to link to illustrator's website", " ・ Use {{VW|Pagename|Illustratornameromaji (Illustratornamejapanese)}} where Pagename is pagename of article on VOCALOID wiki, to link to VOCALOID wiki", "",     " Important ", " ・ Add artist to our list of artist permissions, if not already present", "If artist frequently draws for certain utaite, add them to Avatar Illustrators page. Fanart doesn't count" ],   "|otherillustrator": [ " Usage ", "|otherillustrator = XXX ", "",     " Examples ", "|otherillustrator = Funota (ふのた)", "|otherillustrator = {{VW|Haruyo|Haruyo (春夜)}}", "",     " Information ", " ・ If image is a fan image, link illustrator here", " ・ Use Illustratornameromaji (Illustratornamejapanese) to link to illustrator's website", " ・ Use {{VW|Pagename|Illustratornameromaji (Illustratornamejapanese)}} where Pagename is pagename of article on VOCALOID wiki, to link to VOCALOID wiki", "",     " Important ", " ・ Add artist to our list of artist permissions, if not already present" ],   "|officialjapname": [ " Usage ", "|officialjapname = XXX ", "",     " Examples ", "|officialjapname = そらる", "|officialjapname = 完全体セル", "",     " Information ", " ・ If singer's original name is japanese, write it here in japanese symbols", "",     " Important ", " ・ Also write romaji in officialromajiname", " ・ If using officialjapname, don't use officialchinname or officialengname" ],   "|officialromajiname": [ " Usage ", "|officialromajiname = XXX ", "",     " Examples ", "|officialromajiname = soraru", "|officialromajiname = kanzentai seru", "",     " Information ", " ・ romaji transcription of japanese name", "",     " Important ", " ・ Also write japanese in officialjapname" ],   "|officialchinname": [ " Usage ", "|officialchinname = XXX ", "",     " Examples ", "|officialchinname = YUKI裏式", "",     " Information ", " ・ If singer's original name is chinese, write it here in chinese symbols", "",     " Important ", " ・ Also write pinyin in officialpinyinname", " ・ If using officialchinname, don't use officialjapname or officialengname" ],   "|officialpinyinname": [ " Usage ", "|officialpinyinname = XXX ", "",     " Examples ", "|officialpinyinname = YUKI-Lǐ Shì", "",     " Information ", " ・ pinyin transcription of chinese name", "",     " Important ", " ・ Also write chinese in officialchinname" ],   "|officialengname": [ " Usage ", "|officialengname = XXX ", "",     " Examples ", "|officialengname = JubyPhonic", "",     " Information ", " ・ If singer's original name is non-japanese and non-chinese", " ・ If using officialengname, don't use officialchinname or officialjapname" ],   "|officialnameinfo": [ " Usage ", "|officialnameinfo = XXX ", "",     " Examples ", "|officialnameinfo =, lit. perfect cell", "",     "",      " Information ", " ・ Field can be filled with direct translation of singer's official name." ],   "|aka": [ " Usage ", "|aka = XXX ", "",     " Examples ", "|aka = Screaming Cinderella", "",     " Information ", " ・ Field can be filled with singer's fan nickname, other usernames, or fan titles" ],   "country": [ " Usage ", "|country = XXX ", "",     " Examples ", "|country = France", "",     "",      " Information ", " ・ Country of origin of singer, if not from Japan" ],   "|birthday": [ " Usage ", "|birthday = XX |birthmonth = XX |birthyear = XXXX |birthref = XXX ", "",     " Examples ", "|birthday = 06|birthmonth = 04|birthyear = 1996|birthref = ", "",     " Information ", " ・ Use double digits for birthday and birthmonth", "",     " Important ", " ・ Citation for birthday source is a must. See tutorial for how to cite", " ・ Don't fill age if birthday, birthmonth and birthyear are all filled out" ],   "|age": [ " Usage ", "|age = XX ", "",     " Examples ", "|age = 32", "",     " Important ", " ・ Don't fill age if birthday, birthmonth and birthyear are all filled out" ],   "|status": [ " Usage ", "|status = XXX ", "",     " Examples ", "|status = Active", "|status = Inactive", "|status = Inactive as Utaite Active as professional singer" ],   "|years": [ " Usage ", "|years = 20XX-20XX ", "",     " Examples ", "|years = 2012-present", "|years = 2012-2015", "",     " Information ", " ・ Years in which singer has been active", " ・ Use present if they are still active to date", " ・ Singers with no new covers as of one year are considered inactive" ],   "|BBuserspace": [ " Usage ", "|BBuserspace = XXX ", "",     " Examples ", "|BBuserspace = 11073", "",     " Information ", " ・ If singer has a Bilibili account", " ・ For the user space https://space.bilibili.com/11073 use 11073" ],   "|BBuserspaceinfo": [ " Usage ", "|BBuserspaceinfo = XXX ", "",     " Examples ", "|BBuserspaceinfo = main", "",     " Information ", " ・ Additional info on user space if needed" ],   "|YTusername": [ " Usage ", "|YTusername = XXX ", "",     " Examples ", "|YTusername = Lollialolitachan", "",     " Information ", " ・ Use if singer has a YT account with username", " ・ For https://www.youtube.com/user/Lollialolitachan use Lollialolitachan", "",     " Important ", " ・ Doesn't work if singer has YT account without username" ],   "|YTinfo": [ " Usage ", "|YTinfo = XXX ", "",     " Examples ", "|YTinfo = secondary", "",     " Information ", " ・ Additional info on the account if needed" ],   "|YTchannel": [ " Usage ", "|YTchannel = XXX ", "",     " Examples ", "|YTchannel = UCP_PHPuynkNUM6Cezwx2m6g 詩人のぴやっほゃチャンネル", "",     " Information ", " ・ Use if singer has a YT account without username", " ・ For https://www.youtube.com/channel/UCP_PHPuynkNUM6Cezwx2m6g (called \"詩人のぴやっほゃチャンネル\" use UCP_PHPuynkNUM6Cezwx2m6g 詩人のぴやっほゃチャンネル"      ],    "|YTchannelinfo": [      " Usage ",      "|YTchannelinfo = XXX ",      "",      " Examples ",      "|YTchannelinfo = secondary",      "",      " Information ",      "  ・ Additional info on the account if needed"      ],    "|NNDuserpage": [      " Usage ",      "|NNDuserpage = XXX ",      "",      " Examples ",      "|NNDuserpage = 28385",      "",      " Information ",      "  ・ If the singer as a NND account",      "  ・ For https://www.nicovideo.jp/user/28385 use 28385"      ],    "|NNDuserpageinfo": [      " Usage ",      "|NNDuserpageinfo = XXX ",      "",      " Examples ",      "|NNDuserpageinfo = main",      "",      " Information ",      "  ・ Additional info on the account if needed"      ],    "|mylist1": [      " Usage ",      "|mylist1 = XXX ", "",     " Examples ", "|mylist1 = 20876482", "",     " Information ", " ・ For https://www.nicovideo.jp/mylist/20876482 use 20876482" ],   "|mylist1info": [ " Usage ", "|mylist1info = XXX ", "",     " Examples ", "|mylist1info = collabs", "",     " Information ", " ・ Additional info on the mylist if needed" ],   "|nicommu1": [ " Usage ", "|nicommu1 = XXX ", "",     " Examples ", "|nicommu1 = co28059", "",     " Information ", " ・ For https://com.nicovideo.jp/community/co28059 use co28059" ],   "|nicommu1info": [ " Usage ", "|nicommu1info = XXX ", "",     " Examples ", "|nicommu1info = private", "",     " Information ", " ・ Additional info on the nicommu" ],   "|NNDchannel1": [ " Usage ", "|NNDchannel1 = XXX ", "",     " Examples ", "|NNDchannel1 = recogch", "",     " Information ", " ・ For https://ch.nicovideo.jp/recogch use recogch" ],   "|NNDchannel1info": [ " Usage ", "|NNDchannel1info = XXX ", "",     " Examples ", "|NNDchannel1info = announcements", "",     " Information ", " ・ Additional info on the NND channel" ],   "|partner": [ " Usage ", "|partner = XXX ", "",     " Examples ", "|partner = Soraru, Lon, Mafumafu", "",     " Information ", " ・ List singers that singer has collaborated with 2+ times, excluding large group collaborations" ],   "|otheractivity": [ " Usage ", "|otheractivity = XXX ", "",     " Examples ", "|otheractivity = gamer, illustrator, mixer, producer", "",     " Information ", " ・ Other activities singer is known for" ],   "{{YTsample": [ " Usage ", "{{YTsample|\" XXX \", composed by XXX | XXX }}", "",     " Examples ", "{{YTsample|\"ECHO\", composed by {{VW|Crusher-P}}|zSOuXCZVvc4}}", "",     " Information ", " ・ Link a sample cover (solo preferrably) on YT here", " ・ For https://www.youtube.com/watch?v=zSOuXCZVvc4 use zSOuXCZVvc4 as YT id", "",     " Important ", " ・ If the singer has forbidden reprints, don't link to reprints, but if the singer has a YT account themselves, use a cover on there and paste this note above the YT sample: Note: This sample is linked to the utaite's own upload on YouTube, as he has forbidden reprints to video sharing sites outside of Nico Nico Douga and his own channel on YouTube." ],   "==Affiliations and Collaboration Projects": [ " Usage ", "==Affiliations and Collaboration Projects==", "# XXX ", "",     " Examples ", "==Affiliations and Collaboration Projects==", "# Member of Groupnameromaji (Group1namejap)", "# Member of Group1nameromaji (Group1namejap) (vocals & XXX) with Othersinger1name (XXX & XXX) and Othersinger3name (XXX)", "# Albumname with Othersingername (Released on Month XX, 20XX)", "# Albumname withOthersingername (Released on Month XX, 20XX)", "# {{CD|Albumname}} (Released on Month XX, 20XX)", "# Albumname (Producername album) {Released on Month XX, 20XX)",     "",      " Information ",      "  ・ Use # Member of Groupnameromaji (Group1namejap) for doujin circles and groups",      "  ・ Use # Member of Group1nameromaji (Group1namejap) (vocals & XXX) with Othersinger1name (XXX & XXX) and Othersinger3name (XXX) for doujin circles and groups. XXX are the different roles",      "  ・ Use # Albumname with Othersingername (Released on Month XX, 20XX) to link to a duet album on the same page",      "  ・ Use # Albumname withOthersingername (Released on Month XX, 20XX) to link to an album on another singer's page (for e.g. a feature role)",      "  ・ Use # {{CD|Albumname}} (Released on Month XX, 20XX) to link to a collaboration album on a collaboration page",      "  ・ Use # Albumname (Producername album) {Released on Month XX, 20XX) to link to an external website. (Producername album) is optional to include",     "",      " Important ",      "  ・ Don't link to Anime OST compilation albums",      "  ・ Only list band albums, if more than one person sings in it"      ],    "==Collaboration Units": [      " Usage ",      "==Collaboration Units==",      "# Unitnameromaji (Unitnamejap) with Otherutaitename ",      "",      " Examples ",      "# Lemoc Raros with Komeru"      ],    "==List of Covered Songs": [      " Usage ",      "{{Playlist| ... }}",     "",      " Examples ",      "{{Playlist|notice = forbid|content = ",      "# \"Songtitle\" {{nnd|nndid}} (Translation) (Notes) -XXX ver.- feat. Singer1, Singer2 and Singer3 (YYYY.MM.DD) (Additional notes)",     "# \n\"Suji Chigai\n\" {{nnd|sm234567}} (Misguidance) (Parody of Suki Kirai) -Arrange ver.- feat. Kogeinu, Faneru and ASK (guest appearance) (2011.05.08)",     "}}",      "",      "{{Playlist|content = ...",      "# \"Songtitle\" {{nnd|nndid}} (Translation) (Notes) -XXX ver.- feat. Singer1, Singer2 and Singer3 (YYYY.MM.DD) (Additional notes)",     "# \n\"Suji Chigai\n\" {{nnd|sm234567}} (Misguidance) (Parody of Suki Kirai) -Arrange ver.- feat. Kogeinu, Faneru and ASK (guest appearance) (2011.05.08)",     "}}",      "",      " Information ",      "  ・ If singer forbids reprinting of their covers, use {{Playlist|notice = forbid|content = ...}}",      "",      "  ・ Use romanization of song titles. If song is romanized to an English title use that. Ex.) Ikasama Life Game instead of Ikasama Raifu Geimu",     "  ・ You can link to reprints of songs by writing Songtitle",      "  ・ Use {{nnd|nndid}} to link to the original on NND. The ID often begins with sm or nm",      "  ・ Provide translations of the song title (optional). Ex.) (Slowly getting faster and faster) for Dandan Hayaku Naru",      "  ・ Notes include additional infos. Ex.) (Parody of \"Songname\"), (Original), (Original with GigaP), (Anime OP/ED/Insert song/OST), (Bandname song)",     "  ・ Use hyphens (-) to note particular arranges or versions. Capitalize version titles. Ex.) -Band edition-, -Piano ver.-, -English ver.-, -Screamo Rearrange-",      "If song features vocals of several singers use feat. to denote that. Ex.) feat. Soraru and Mafumafu",     "  ・ If song features a lot of (i.e. more than 9) different singers, alternatively you can write (XX singers collab) in place of feat. XX, XX, XX and XX",      "  ・ Add the year in a (YYYY.MM.DD) format. Don't use reprint dates as those are usually incorrect",      "  ・ If needed add addiitonal notes such as (Deleted), (Not in Mylist), (Community & YT only), {{example|(Private) or (Unlisted)",      "",      "  ・ You may add subsections for e.g. TmBox or Soundcloud covers. Use {{Playlist|notice = sitename|content = ...}}. Replace sitename with tmbox, koebu, voiceblog or soundcloud",      "",      " Important ",      "  ・ If you're adding songs to a playlist, add the song to the song page as well, if it exists!"      ],    "==List of Songs": [      " Usage ",      "{{Playlist| ... }}",      "",      " Examples ",      "{{Playlist|notice = forbid|content = ", "# \"Songtitle\" {{nnd|nndid}} (Translation) (Notes) -XXX ver.- feat. Singer1, Singer2 and Singer3 (YYYY.MM.DD) (Additional notes)", "# \n\"Suji Chigai\n\" {{nnd|sm234567}} (Misguidance) (Parody of Suki Kirai) -Arrange ver.- feat. Kogeinu, Faneru and ASK (guest appearance) (2011.05.08)", "}}",     "",      "{{Playlist|content = ...", "# \"Songtitle\" {{nnd|nndid}} (Translation) (Notes) -XXX ver.- feat. Singer1, Singer2 and Singer3 (YYYY.MM.DD) (Additional notes)", "# \n\"Suji Chigai\n\" {{nnd|sm234567}} (Misguidance) (Parody of Suki Kirai) -Arrange ver.- feat. Kogeinu, Faneru and ASK (guest appearance) (2011.05.08)", "}}",     "",      " Information ", " ・ If singer forbids reprinting of their covers, use {{Playlist|notice = forbid|content = ...}}", "",     "  ・ Use romanization of song titles. If  song is romanized to an English title use that. Ex.) Ikasama Life Game instead of Ikasama Raifu Geimu",      "  ・ You can link to reprints of songs by writing Songtitle",      "  ・ Use {{nnd|nndid}} to link to the original on NND. The ID often begins with sm or nm",      "  ・ Provide translations of the song title (optional). Ex.) (Slowly getting faster and faster) for Dandan Hayaku Naru", " ・ Notes include additional infos. Ex.) (Parody of \"Songname\"), (Original), (Original with GigaP), (Anime OP/ED/Insert song/OST), (Bandname song)",      "  ・ Use hyphens (-) to note particular arranges or versions. Capitalize version titles. Ex.) -Band edition-, -Piano ver.-, -English ver.-, -Screamo Rearrange-", "If song features vocals of several singers use feat. to denote that. Ex.) feat. Soraru and Mafumafu",     "  ・ If song features a lot of (i.e. more than 9) different singers, alternatively you can write (XX singers collab) in place of feat. XX, XX, XX and XX",      "  ・ Add the year in a (YYYY.MM.DD) format. Don't use reprint dates as those are usually incorrect",      "  ・ If needed add addiitonal notes such as (Deleted), (Not in Mylist), (Community & YT only), {{example|(Private) or (Unlisted)",      "",      "  ・ You may add subsections for e.g. TmBox or Soundcloud covers. Use {{Playlist|notice = sitename|content = ...}}. Replace sitename with tmbox, koebu, voiceblog or soundcloud",      "",      " Important ",      "  ・ If you're adding songs to a playlist, add the song to the song page as well, if it exists!"      ],    "==Commercially Featured Works": [ " Usage ", "{{Commercially featured", "|\" XXXXXX \"| Month XX, 20XX ", "| XXXXXX of XXXXX ", "}}",     "",      " Examples ", "{{Commercially featured", "|\"Fast End\" with Mafumafu|January 09, 2016", "|Opening of te TV anime Reikenzan: Hoshikuzu-tachi no Utage", "}}",     "",      " Information ", " ・ This section is optional, and belongs right before the Albums section, but if the singer has sung openings, endings, insert songs, etc. for commercial products such as anime series, movies, or games include them here", "",     " Important ", " ・ Voice acting roles, MCing, mixing, composing or such activities don't belong here" ],   "==Discography": [ " Usage ", "{{Album|type= ... }}", "",     " Examples ", "{{Album|type=collab", "|albumtitle =Romaji (Translation) (with Singer) (by Groupname)", "|image = Filename.png", "|datereleased = Month XX, 20XX", "|crossfadeyt = ytid", "|crossfadennd = nndid", "|albumartist = Artistnameromaji (Artistnamejap)", "|shops = {{l|shopname|id|additional notes|JP}}", "|trackXinfo = {{nnd|nndid}} (Translation) (Notes) -XXX ver.- (Bonus track)", "|trackXutaite = Singer1, Singer2", "}}",     "",      " Information ", " ・ Albums can be used on singer pages, collaboration album pages, and group pages", "",     "For album title use (with Singer) if the album is a duet album with another singer; Use (by Groupname) if the album is by a band or group", "For shops: These websites require the ID code only, instead of the full link: 7net, actfamily, akibaoo, amazon, animate, bunkyodo, cdjapan, d-stage, due, fasic, gamers, hmv, itunes, joysound, melonbooks, nicochokuhan, three, toranoana, tower, tsutaya, rakuten, recochoku, vvstore. They are lowercase: {{l|amazon|123456|-Limited ver.-}}", "Other shops: Need to be provided with the full URL and proper capitalization: {{l|Shopname|https://www.othershopname.com|-Limited ver.-}}", "Shops that don't ship internationally, should be marked with a JP. If not provided, the link would be falsely put into the internationally shipping section", "For non-japanese Amazon and iTunes use: {{l|Amazon|www.amazon.com/dp/123456}}, {{l|iTunes|https://itunes.apple.com/us/album/id123456}}", "",     "Notes include additional infos. Ex.) (Parody of \"Songname\"), (Original), (Original with GigaP), (Anime OP/ED/Insert song/OST), (Bandname song)",      "Use hyphens (-) to note particular arranges or versions. Capitalize version titles. Ex.) -Band edition-, -Piano ver.-, -English ver.-, -Screamo Rearrange- ", "",     "  ・ If an album has different version where some tracks vary or if the album has multiple discs, use tabbers", " ",     "   XXX ver. =", "  {{Album", "  ...",      "   }}",      "   |-|",      "   XXX ver.-", "  {{Album", "  ...",      "   }}",      "   ",      "",      " Important ", " ・ If you're adding an album, be sure to add the songs to the song pages as well, if they exist!", " ・ If you are adding collaboration albums to collaboration album pages, add the album to the List of Collaboration Albums table too!" ],   "==Gallery": [ " Usage ", "==Gallery==", "{{Gallery", "| XXX | XXX ", "| XXX | XXX ", "}}",     "",      " Examples ", "==Gallery==", "{{Gallery", "|imagename1.png|Singername's avatar in XXX", "|imagename2.png|Singername as seen in XXX", "|imagename3.png|Singername as seen in his cover of \"Songname\"", "|imagename4.png|Singername as seen on Twitter", "|imagename5.png|Singername as seen in XXX{{AI|A|akka}}", "|imagename6.png|Singername as seen in XXX{{AI|B|Benichiru (べにちる)}}", "|imagename7.png|Singername as seen in ...{{pixiv|1149660|Kurono Kuro (くろのくろ)}}", "|imagename8.png|Singername as seen in XXX Illust. by Kirei na Ossan (綺麗なおっさん)", "}}",     "",      " Information ", " ・ Use {{AI|I|Illustratornameromaji (Illustratornamejapanese)}} if artist has entry on Avatar Illustrators", " ・ Use {{pixiv|123456|Illustratornameromaji (Illustratornamejapanese)}} to link to artist's pixiv", " ・ Use Illustratornameromaji (Illustratornamejapanese) to link to artist's website", "",     "  ・ Keep the maximum of real life photos to 3", " ・ OK real life photos: snapshots of public (not private!) concert, official promotional photoshoots (for shows/projects/singles/album/official homepage, etc.), screenshots from PVs, photos uploaded by the singer themselves, pictures with the utaite blocking their face are okay", " ・ Bad real life photos: purikura (photo booth) pictures, inappropriate photos, \"standing in front of mirror\" pictures, pictures of pictures", "",     " Important ", " ・ If website has an \"=\" sign, substitute with \"{{=}}\". Else the template breaks!", " ・ Do not post pictures of singers that do not like reprints of their photos.", " ・ Do not forget to cite the source!", " ・ Do not post pictures of singers from magazines for purchase (except for official uploads)!" ],   "==Trivia": [ " Usage ", "==Trivia==", " * XXX ", "",     " Examples ", "==Trivia==", " * His favorite VOCALOID song is Wanderlast by {{VW|sasakure.UK}}. ", " * His height is 175.7 cm (5'7\"). ",     " * He was born in the year of the Dragon and he is a Scorpio.{{cite}} ",      " * He was inspired to become an utaite by fellow utaite Gazelle and Shachou. ",     "",      " Important ",      "  ・ All Trivia needs to be cited! See tutorial on how to cite"     ],    "==External Links": [      " Usage ",      "==External Links==",      " * Websitename ",      "",      " Examples ",      "==External Links==",      " * Twitter ",      "",      " Information ",      "  ・ Only link to official accounts and websites of the singer such as Twitter, Ameblo, other blogs, Blomaga, TmBox, ask.fm, etc"      ],    "==Links": [      " Usage ",      "==External Links==",      " * Websitename ",      "",      " Examples ",      "==External Links==",      " * Twitter ",      "",      " Information ",      "  ・ Only link to official accounts and websites of the singer such as Twitter, Ameblo, other blogs, Blomaga, TmBox, ask.fm, etc"      ],    "{{Song": [      " Important ",      "  ・ Keep in mind, the requirements for song pages", " ・ If you are creating new song pages, add the song to the List of Songs table too!" ],   "|songtitle": [ " Usage ", "|songtitle = Songnameromaji (Songnamejapanese) (Translation) ", "",     " Information ", " ・ For Nicollabo, put the version name here: Original ver., ✽ Xmas edition ✽" ],   "|nnd": [ " Usage ", "|nnd = XXXXXX "//|yt = XXXXXX ",     //"",      //" Information ",      //"  ・ For Song pages: these fields should link to the original song (usually the VOCALOID version)",      //"  ・ The NND id often begins with sm or nm. The YT id is the part after watch?v= in the link"     ],    "|producer": [      " Usage ",      "|producer = Music, Guitar & Movie - Producername Illustration - Illustratorname ",      "",      " Information ",      "  ・ This field should be filled with the persons involved in the original song, and their roles "      ],    "|yt1": [      " Usage ",      "|yt1 = XXXXXX ",      "",      " Information ",      "  ・ The yt id is the part after watch?v= in the link"      ],    "|nnd1": [      " Usage ",      "|nnd1 = XXXXXX ",      "",      " Information ",      "  ・ The nnd ID often begins with sm or nm"      ],    "|bb": [      " Usage ",      "|bb1 = XXXXXX ",      "",      " Information ",      "  ・ For bilibili songs. The ID is the part after /video/ in the link"     ],    "|koe": [      " Usage ",      "|koe1 = XXXXXX ",      "",      " Information ",      "  ・ For Koebu songs. The ID is the part after /koe/ in the link"     ],    "|tm": [      " Usage ",      "|tm1 = XXXXXX ",      "",      " Information ",      "  ・ For TmBox songs. The ID is the part after /pl/ in the link"     ],    "|sc": [      " Usage ",      "|sc1 = XXXXXX ",      "",      " Information ",      "  ・ For SoundCloud songs. The ID is the part after /tracks/ in the embed link, not the normal link!"     ],    "|box": [      " Usage ",      "|box1 = XXXXXX ",      "",      " Information ",      "  ・ For box songs. The ID is the part after /s/ in the link"     ],    "|cd": [      " Usage ",      "|cd1 = Pagename#Albumname ",      "",      " Examples ",      "|cd5 = Asamack#Tobidase! Asamack Radio",     "",      " Information ",      "  ・ For album only songs, that are featured on the wiki. Pagename is the page the album is featured on, Albumname is the name of the album as written on the page"     ],    "|url": [      " Usage ",      "|url1 = https://www.websitelinkname.com Websitename ",      "",      " Example ",      "|url4 = https://www.voiceblog.jp/devilneko/1644160.html Voiceblog",      "",      " Information ",      "  ・ For websites on which not frequently covers are posted, or for websites of albums, that aren't featured on the wiki yet"      ],    "|title": [      " Usage ",      "|title1 = Alternative Albumname ",      "",      " Information ",      "  ・ If the albumname for cdX differs from the one that should be displayed, or if urlX links to an album, the album name shall be put in here"      ],    "|singer1": [      " Usage ",      "|singer1 = Singername (YT singer) -XX ver.- (Note) ",      "",      " Information ",      "  ・ If the singer is a YT singer, note it by writing (YT singer) after the Singername", " ・ Use hyphens (-) to note particular arranges or versions. Capitalize version titles. Ex.) -Band edition-, -Piano ver.-, -English ver.-, -Screamo Rearrange-",      "  ・ If the song is a parody, lable it with -parody-",      "  ・ If the song features vocals of several singers use Singer1 x Singer2 to denote that",      "  ・ If you want to list both the collabgroup and the singers, use Groupname Name1 x Name2 ",      "  ・ Notes include: (deleted), (commu), (private), (muted), {{AC|Season|20XX}}, {{UT|Tournameenglish|20XX}}, {{YTB|YTbattlename}} (for linking to Shinsaku Anime no Kyoku wo Matomete Collabo, Utattemita Tours, or YouTube Battle pages)"      ],    "|malesingers": [      " Usage ",      "|malesingers = XXX, ... ",      "",      " Examples ",      "|femalesingers = Prico, Valshe, Mitani, Hong Kong "      ],    "|creator": [      " Usage ", "|creator = Mixernameromaji (Mixernamejapanese) " ],   "|number": [ " Usage ", "|number = XX ", "",     " Information ", " ・ Number is the number of singers featured in the chorus" ],   "|singer": [ " Usage ", "|singer = Singer1name, Singer2name, Singer3name ", "",     " Examples ", "| = ",     "",      " Information ", " ・ ",      "",      " Important ", " ・ "      ],    "":,      "{{Category|NND Groups}}": [ " Usage ", "{{Category|NND Groups}}", "{{Category|YT Groups}}", "",     " Information ", " ・ Select either NND Groups or YT Groups and remove the other" ],     "==Participating Groups": [ " Usage ", "==Participating Groups==", "* Groupname (Member1, Member2, Member3 and Member4) ", "* Groupname (Member1, Member2, Member3 and Member4) ", "* Groupnameromaji (Groupnamekanji) ", "",     " Information ", " ・ If the group doesn't have a channel, you can put the group name in plain text, without linking to any channel", " ・ If the group doesn't have a channel, but all entries are uploaded by a single person, and compiled into a playlist by the same person, that playlist may, but doesn't have to, be linked to the group name", " ・ Usually group names won't be in Japanese, if there are though, be sure to put it like usage 3", " ・ If the group contains non-singing members, don't link to them, as they'll never have a page on Utaite wiki" ],     "|namejap": [ " Usage ", "|namejap = XXX ", "",     " Examples ", "|namejap = などなどツアー", "",     " Information ", " ・ Write the tour name here in Japanese characters. Not romaji!" ],     "|nameeng": [ " Usage ", "|nameeng = XXX ", "",     " Examples ", "|nameeng = Something Something Tour", "",     " Information ", " ・ Write the translation of the Tour name here. Not Romaji!" ],     "|date": [ " Usage ", "|date = Month XX, 20XX - Month XX, 20XX ", "",     " Information ", " ・ For Utattemita Tours: mark the dates the tour has been running here (begin and end date) as indicated on the first and last song", " ・ For Anikora: Date of upload of the compilation on nnd" ],     "|openingyt": [ " Usage ", "|openingyt = XXXXXX ", "|openingnnd = XXXXXX ", "|endingyt = XXXXXX ", "|endingnnd = XXXXXX ", "",     " Information ", " ・ Some Tours have an opening and ending video. If available, link here. The nnd ID often begins with sm or nm. The yt ID is the part after watch?v= in the link" ],     "|track1nnd": [ " Usage ", "|track1nnd = XXXXXX ", "",     " Information ", " ・ Link the nnd link of the song here. The nnd ID often begins with sm or nm" ],     "|track1about": [ " Usage ", "|track1about = (Translation) " ],     "|track1original": [ " Usage ", "|track1original = XXXXx ", "",     " Examples ", "|track1original = Durarara!! OP", "|track1original = \"Telephone\" by Lady Gaga", "",     " Information ", " ・ ",      "",      " Important ", " ・ "      ],      "|track1utaite": [ " Usage ", "|track1utaite = Singer1, Singer2 " ],     "|season": [ " Usage ", "|season = Spring", "|season = Summer", "|season = Autumn", "|season = Winter" ],     "|year": [ " Usage ", "|year = 20XX " ],     "|part1title": [ " Usage ", "|part1title = Songname ", "",     " Information ", " ・ Put the song name in romaji an link to the upload on YT" ],     "|part1original": [ " Usage ", "|part1original = Animename OP ", "|part1original = Animename ED ", "|part1original = Animename Insert Song " ],     "|part1utaite": [ " Usage ", "|part1utaite = [Singer1]], Singer2 " ],     "|caption": [ " Usage ", "|caption = XXX ", "",     " Examples ", "|caption = Twitter ", "",     " Information ", " ・ Write here, where you got the image from" ],     "|exampletitle": [ " Usage ", "|exampletitle = Songtitle ", ""     ],      "|examplennd": [ " Usage ", "|examplennd = XXXXXX ", "",     " Information ", " ・ These fields should link to the example song. The nnd ID often begins with sm or nm " ],     "|exampleyt": [ " Usage ", "|exampleyt = XXXXXX ", "",     " Information ", " ・ These fields should link to the example song. The yt ID is the part after watch?v= in the link " ],     "{{AC|": [ " Usage ", "{{AC| Season | 20XX }}", "",     " Information ", " ・ For linking to the Shinsaku Anime no Kyoku wo Matomete Collabo page", " ・ Used in the List of Covered Songs section and on Song pages" ],     "{{AI|": [ " Usage ", "{{AI| I | Illustratorname }}", "",     " Information ", " ・ Where I is the illustrator's first letter", " ・ For linking to the Avatar Illustrators page" ],     "{{CD|": [ " Usage ", "{{CD| Albumname | Displayalbumname }}", "",     " Information ", " ・ For linking to collaboration albums", " ・ Dispalyalbumname is optional" ],     "{{pixiv|": [ " Usage ", "{{pixiv| pixivid | Illustratornameromaji (Illustratornamejap) }}", "",     " Information ", " ・ For linking to pixiv links", " ・ Used in the Gallery section" ],     "{{TH|": [ " Usage ", "{{TH| Albumname | Displayalbumname }}", "",     " Information ", " ・ For linking collaboration albums on the external (non-fandom) Touhou Wiki", " ・ Albumname is identical to the pagename on Touhou wiki", " ・ Dispalyalbumname is optional" ],     "{{UT|": [ " Usage ", "{{UT| Tournameenglish | 20XX }}", "",     " Information ", " ・ For linking to Utattemita Tours", " ・ Used in the List of Covered Songs section and on Song pages" ],     "{{VW|": [ " Usage ", "{{VW| Pagename | Displayname }}", "",     " Information ", " ・ For linking to VOCALOID wiki", " ・ Dispalyname is optional" ],     "{{YTB|": [ " Usage ", "{{YTB| YTbattlename }}", "",     " Information ", " ・ For linking to a YouTube Battle page", " ・ Used in the List of Covered Songs section and on Song pages" ] } ////////////////////////////////////////////////////////////////////////////////////////////////

function applyHighlights(text) { if (!text) { return } text = " ! " +text .replace(/</g, '&lt;') .replace(/\n/g, "\n ! ") +"\r\n"; for (i in tips) { if (tips.hasOwnProperty(i)) { text = text.replace(		new RegExp( "(^|\n)<span class='(.*)tutorialinfo'>! (.*) (.*)" + i.replace(/[.*+?^${}|[\]\\]/g, '\\$&') + "(.*)\n", "g" ),		"$1 ! $3"+tips[i].join('\n') .replace(/'/g, "&#39") .replace(/"/g, "&quot;") .replace(" ", "&lt;small&gt;") .replace(" ", "&lt;ref&gt;") .replace(" ", "&lt;tabber&gt;") +" $4"+i+"$5\n"	) .replace (new RegExp(" ", "g"), " ") .replace (new RegExp(" ", "g"), " ") .replace (new RegExp(" ", "g"), " ") .replace (new RegExp(" ", "g"), " ") .replace (new RegExp(" ", "g"), " ");

}   }  return text; }

function handleInput { var text = $textarea.val; var highlightedText = applyHighlights(text); $highlights.html(highlightedText); }

function handleScroll { var scrollTop = $textarea.scrollTop; $highlights.scrollTop(scrollTop); }

function bindEvents { $textarea.on({   'input': handleInput,    'scroll': handleScroll  }); $textarea.on({   'scroll': function(e){e.preventDefault}  }); }

//execute scripts when visual editor is loaded or when document.ready $(function {    if (window.CKEDITOR) {        CKEDITOR.on("instanceReady", function  { //if visual editor, switch to source editor by default $("#cke_1_contents").ready( function{				$(".cke_button__modesource").eq(0).trigger('click');			}); customPreloadTemplates; addfeatures; formatcaller; });   } else {		customPreloadTemplates;		addfeatures;		formatcaller;	} });

/* */