User:Soxra/monobook.js: Difference between revisions

From the Kingdom Hearts Wiki, the Kingdom Hearts encyclopedia
Jump to navigationJump to search
No edit summary
(Kay, legit srs, that code is way more than we need, lol.)
Line 10: Line 10:
     });
     });
});
});


/* ***************************************** */
/* ***************************************** */


 
$(document).ready(function() {
$(document).ready(function () {
$(".morphMaster").each(function() {
    /* Force input boxes to have input box class */
var $master = $(this);
    $(":text, input[type='text'], input[type='password'], input[type='search'], textarea, input#wpSummary").addClass("input-text-box");
var $tabs = $master.find(".morphTabBox");
 
var $container = $master.find(".morphTabContainer");
    /* Improvement Box Tabber */
    $(".improvementBox").find(".improveTabLinkBox a").click(function () {
$tabs.find(".morphLink").click(function() {
        $(".improvementBox").find("#improveTabs > div").hide();
var id = $(this).attr("id");
        $(".improvementBox").find("#improveTabs > div" + $(this).attr("href")).show();
id = id.substr(0, id.length - 4);
        return false;
$container.find("div.morphContent").hide();
    });
$container.find("div#"+id+"Content").show();
});
});
});
});
/* ***************************************** */
/********************** OnloadHooks **********************/
var hooks_custom = new Array();
/* Funzioni generali */
function hooks_common() {
    Script_Import();
    hooks_common_render();
    createPurgeButton();
    return;
}
addOnloadHook(hooks_common);
/* Funzioni del rendering - separate per richiamarle in anteprima rapida */
var __test_js__ = false;
function hooks_common_render() {
    randomlist();
    createCollapseButtons();
    createNavigationBarToggleButton();
    createToggleLinks();
    createMorphLinks();
    multislide_startup();
    multifade_startup();
    UserNameReplace();
    ref_tooltip();
    alertLink();
    setTimeout(alertLoad, 1);
    alertUnload();
    import_script((/\&lt\;((test)|(abc))(.*)\&gt\;/.test(document.getElementById('bodyContent').innerHTML) && !__test_js__), "Nonciclopedia:Script/Test.js");
    target_blank();
    hiddencats_IE();
    return;
}
/* Funzioni dell'editor */
function hooks_common_edit() {
    if (wgAction != 'edit' && wgAction != 'submit') return;
    charinsert_anon_hack();
    return;
}
addOnloadHook(hooks_common_edit);
/* Importazione script */
function Script_Import() {
    /*
Sintassi: import_script(CONDIZIONE, SCRIPT);
Es.: import_script((wgPageName == "Esempio"), "Esempio.js");
*/
    import_script((wgPageName == "Speciale:WidgetDashboard"), "Nonciclopedia:Script/Shoutbox.js");
    import_script((wgPageName == "Giochi:CasiNonci/Slot_machine"), "Nonciclopedia:Script/SlotMachine.js");
    import_script((wgPageName == "Nonciclopedia:Storia/Pagine commemorative/Pesci d'aprile/4"), "Nonciclopedia:Script/Pesce aprile 2010.js");
    import_script((wgPageName == "Utente:Zaza/Sandbox/Monabooktor"), "Nonciclopedia:Script/Monabooktor.js");
    return;
}
function import_script(condition, script) {
    if (!condition) return;
    var scriptElem = document.createElement('script');
    scriptElem.type = 'text/javascript';
    scriptElem.language = 'javascript';
    scriptElem.src = '/index.php?title=' + script + '&action=raw&ctype=text/javascript&smaxage=8400';
    document.getElementsByTagName('head')[0].appendChild(scriptElem);
    return;
}
/************* Funzioni di utilità generale *************/
/* Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: User:Mike Dillon, User:R. Koot, User:SG
*/
var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
})();
function getElementsByClass(node, className, tagName) {
    if (node.getElementsByClassName && (tagName == undefined || tagName == null || tagName == '*')) return node.getElementsByClassName(className);
    var list = node.getElementsByTagName(tagName ? tagName : '*');
    var array = new Array();
    var i = 0;
    for (i in list) {
        if (hasClass(list[i], className)) array.push(list[i]);
    }
    return array;
}
/* Creates the method getElementsByClass, if unsupported from the browser */
if (!document.getElementsByClass) document.getElementsByClass = function (className) {
    return getElementsByClass(document, className, '*');
};
function getElementsByName(name, root) {
    if (root == undefined) root = document;
    var e = root.getElementsByTagName('*');
    var r = new Array();
    for (var i = 0; i < e.length; i++) {
        if (e[i].getAttribute('name') == name) r[r.length] = e[i];
    }
    return r;
}
function getText(e) {
    if (e.textContent) return e.textContent;
    else if (e.innerText) return e.innerText;
    else return null;
}
function setText(e, t) {
    if (e.textContent) e.textContent = t;
    else if (e.innerText) e.innerText = t;
    else {
        e.textContent = t;
        e.innerText = t;
    } // entrambi nulli, non si può discriminare
    return;
}
function appendText(e, t) {
    if (e.textContent) e.textContent += t;
    else if (e.innerText) e.innerText += t;
    else {
        e.textContent = t;
        e.innerText = t;
    }
    return;
}
/* Crea una request Ajax */
function createRequest() {
    if (window.XMLHttpRequest) { // Mozilla, Safari...
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IEmmerda
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return
}
/* Restituisce il valore di un cookie */
function getCookie(name) {
    if (document.cookie.length == 0) return null;
    var start = document.cookie.indexOf(name);
    if (start == -1) return null;
    start += name.length + 1;
    var end = document.cookie.indexOf(';', start);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(start, end));
}
/* Aggiunge uno zero alle cifre minori di 10 nella rappresentazione testuale */
function addzero(n) {
    if (n < 10) return '0' + n.toString();
    else return n.toString();
}
function addEvent(el, ev, f, capt) {
    if (capt == undefined) capt = false;
    if (el.addEventListener) el.addEventListener(ev, f, capt);
    else if (el.attachEvent) el.attachEvent('on' + ev, f);
    return;
}
function removeEvent(el, ev, f, capt) {
    if (capt == undefined) capt = false;
    if (el.removeEventListener) el.removeEventListener(ev, f, capt);
    else if (el.detachEvent) el.detachEvent('on' + ev, f);
    return;
}
var noFade = false;
function Fade(element, delay, i, rev, ratio) {
    if (noFade) return;
    /* rev = sparizione; se !rev, ratio = opacità finale; se rev, ratio = opacità iniziale*/
    var start_time = new Date().getTime();
    var start_value = rev ? ratio : 0;
    element.style.filter = "alpha(opacity=" + start_value * 100 + ")";
    element.style.opacity = start_value;
    if (!parseInt(element.style.width) && navigator.appName == "Microsoft Internet Explorer") element.style.width = element.offsetWidth + 'px';
    setTimeout(function () {
        Do()
    }, i);
    return;
    function Do() {
        var cur_time = new Date().getTime();
        var past_time = cur_time - start_time;
        if (past_time >= delay) { /* ultima chiamata */
            var final_value = rev ? 0 : ratio;
            element.style.filter = "alpha(opacity=" + final_value * 100 + ")";
            element.style.opacity = final_value;
            return;
        }
        var progress = past_time / delay;
        var new_value = rev ? ratio * (1 - progress) : ratio * progress;
        element.style.filter = "alpha(opacity=" + new_value * 100 + ")";
        element.style.opacity = new_value;
        setTimeout(function () {
            Do();
        }, i);
        return;
    }
}
var noSlide = false;
function Slide(element, param, final_value, final_size, delay, i) {
    if (noSlide) return;
    /* NB: Il valore finale deve avere la stessa unità di misura di quello iniziale! */
    var start_time = new Date().getTime();
    var unit = 'px';
    if (typeof (final_value) == 'string') {
        final_value = final_value.split(/\D/);
        if (final_value.length > 1) unit = final_value[1];
        final_value = parseFloat(final_value[0]);
    }
    var start_value = Get();
    var sub = (start_value > final_value) ? true : false;
    var diff = Math.abs(start_value - final_value);
    var start_size;
    if (param == 'top' || param == 'bottom') start_size = element.parentNode.offsetHeight;
    else if (param == 'left' || param == 'right') start_size = element.parentNode.offsetWidth;
    var diff_size = Math.abs(start_size - final_size);
    setTimeout(function () {
        Do();
    }, i);
    return;
    function Do() {
        var cur_time = new Date().getTime();
        var past_time = cur_time - start_time;
        if (past_time >= delay) { /* ultima chiamata */
            Set(final_value);
            if (param == 'top' || param == 'bottom') element.parentNode.style.height = final_size + unit;
            else if (param == 'left' || param == 'right') element.parentNode.style.width = final_size + unit;
            return;
        }
        var progress = diff * past_time / delay;
        new_value = (sub) ? start_value - progress : start_value + progress;
        Set(new_value);
        new_size = (sub) ? start_size - diff_size * past_time / delay : start_size + diff_size * past_time / delay;
        if (param == 'top' || param == 'bottom') element.parentNode.style.height = new_size + unit;
        else if (param == 'left' || param == 'right') element.parentNode.style.width = new_size + unit;
        setTimeout(function () {
            Do();
        }, i);
        return;
    }
    function Get() {
        var ret;
        switch (param) {
        case 'top':
            ret = element.style.top;
            break;
        case 'bottom':
            ret = element.style.bottom;
            break;
        case 'left':
            ret = element.style.left;
            break;
        case 'right':
            ret = element.style.right;
            break;
        default:
            return false;
        }
        if (/em/i.test(ret)) return parseFloat(ret);
        return (/\d+/.test(ret)) ? parseInt(ret) : 0;
    }
    function Set(v) {
        switch (param) {
        case 'top':
            element.style.top = v + unit;
            return;
        case 'bottom':
            element.style.bottom = v + unit;
            return;
        case 'left':
            element.style.left = v + unit;
            return;
        case 'right':
            element.style.right = v + unit;
            return;
        default:
            return false;
        }
    }
}
/************* Funzioni applicative ***************/
/** Codice sostituzione Username ([[template:USERNAME]]) *******************************
* Inserts user name into <span id="insertusername"></span>
* By [[wikia:User:Splarka|Splarka]]
*/
var disableUsernameReplace = false;
function UserNameReplace() {
    if (disableUsernameReplace) return;
    var list = getElementsByClass(document.getElementsByTagName('body')[0], "insertusername", 'span');
    if (list.length < 1) return;
    if (wgUserName) {
        for (var i = 0; UserName = list[i]; i++) {
            setText(UserName, wgUserName);
        }
        return;
    }
    var defaultText = "<tuo nome>";
    var userpage = document.getElementById("pt-anonuserpage");
    if (userpage != null) {
        var IP = getText(userpage.getElementsByTagName('a')[0]);
        if (IP == null) return;
        for (var i = 0; UserName = list[i]; i++) {
            if (getText(UserName) == defaultText) setText(UserName, IP);
        }
        return;
    }
    var httpRequest;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    var id = setTimeout(function () {
        httpRequest.abort();
    }, 30000);
    httpRequest.onreadystatechange = function () {
        if (httpRequest.readyState != 4) return;
        clearTimeout(id);
        if (httpRequest.status != 200) return;
        if (httpRequest.responseXML == null) return;
        var IP = httpRequest.responseXML.getElementsByTagName('userinfo')[0].getAttribute("name");
        if (IP == null) return;
        for (var i = 0; UserName = list[i]; i++) {
            if (getText(UserName) == defaultText) setText(UserName, IP);
        }
        return;
    }
    httpRequest.open('GET', wgServer + wgScriptPath + "/api.php?action=query&meta=userinfo&format=xml", true);
    httpRequest.send('');
    return;
}
/* Generatori di alert */
/* Carica un alert su un link prima di caricare la nuova pagina, oppure su un link "fasullo", senza caricare nessuna nuova pagina*/
function alertLink() {
    for (var i = 0; Elem = document.getElementsByTagName("span")[i]; i++) {
        if ((Elem.getAttribute('id') == "alert-link") || (Elem.getAttribute('id') == "alert-nolink")) {
            var Link = Elem.firstChild;
            var Testo = Elem.title;
            Link.setAttribute('onclick', 'alert("' + Testo + '");');
            if (Elem.getAttribute('id') == "alert-nolink") {
                Link.removeAttribute('href', 0);
            }
        }
    }
}
/* Carica uno o più alert al caricamento della pagina */
var disablealertLoad = 0;
function alertLoad() {
    if (disablealertLoad) return;
    for (var i = 0; Elem = document.getElementsByTagName("span")[i]; i++) {
        if (Elem.getAttribute('id') == "alert-load") {
            var Testo = Elem.innerText || Elem.textContent;
            alert(Testo);
        }
    }
}
/* Carica uno o più alert all'uscita dalla pagina */
function alertUnload() {
    if (disablealertLoad) return;
    for (var i = 0; Elem = document.getElementsByTagName("span")[i]; i++) {
        if (Elem.getAttribute('id') == "alert-unload") {
            var Testo = Elem.innerText || Elem.textContent;
            var temp = document.getElementsByTagName("body")[0].getAttribute('onUnload');
            if (temp) document.getElementsByTagName("body")[0].setAttribute('onUnload', temp + 'alert("' + Testo + '");');
            else document.getElementsByTagName("body")[0].setAttribute('onUnload', 'alert("' + Testo + '");');
        }
    }
}
/* Elenchi random */
function randomlist() {
    if (document.getElementsByClass('randomlist') && document.getElementsByClass('randomcontent') && document.getElementsByClass('randomtext')) {
        var listNumber = document.getElementsByClass('randomlist').length;
        for (var k = 0; k < listNumber; k++) {
            var max = parseInt(document.getElementsByClass('randomlist')[k].title);
            var List = document.getElementsByClass('randomcontent')[k].getElementsByTagName('li');
            var Text = document.getElementsByClass('randomtext')[k];
            var N = new Array();
            if (max == 1) var dot = '';
            else var dot = '• ';
            Text.innerHTML = '';
            for (var i = 0; i < max; i++) {
                do {
                    n = Math.round(Math.random() * (List.length - 1));
                    for (var j = 0; j < i && n != -1; j++) {
                        if (N[j] == n) n = -1;
                    }
                } while (n == -1)
                N[i] = n;
                var Item = document.createElement('div');
                Item.innerHTML = dot + List[n].innerHTML;
                Text.appendChild(Item);
            }
        }
    }
}
/* Hook that enables collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Improved with multiMorph and galleryMorph by MFH
* Enhanced with fading effect by Sanjilops
* Uses publicly available code in one function, where noted. */
var noMorphSFX = true;
/* Function that toggles collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted. */
function tableOrNot(objId) {
    if (document.getElementById(objId).tagName == "TABLE") return "table";
    else return "block";
}
var toggleLinkDelay = 700;
var toggleLinkInterval = 10;
function toggleCollapse(objToToggle) {
    var objToToggle = this.parentNode.id.replace(/Link$/, '');
    var linkText = "";
    var targetObject = returnObjById(objToToggle);
    if (!targetObject) return;
    var collapseText = returnObjById(objToToggle + "CollapseText").innerHTML;
    var expandText = returnObjById(objToToggle + "ExpandText").innerHTML;
    var slide = !hasClass(returnObjById(objToToggle + "Link"), "no-slide") && !noMorphSFX;
    var fade = !hasClass(returnObjById(objToToggle + "Link"), 'no-fade') && !noMorphSFX;
    if (targetObject.style.display == "none") {
        targetObject.style.display = tableOrNot(objToToggle);
        linkText = collapseText;
        if (slide) Slide(targetObject, false);
        if (fade) {
            if (!parseInt(targetObject.style.width) && navigator.appName == "Microsoft Internet Explorer") targetObject.style.width = targetObject.offsetWidth + 'px';
            targetObject.style.filter = "alpha(opacity=0)";
            targetObject.style.opacity = 0;
            setTimeout(function () {
                Fade(targetObject, toggleLinkDelay, toggleLinkInterval, false, 1);
            }, 1);
        }
    } else {
        if (slide) {
            Slide(targetObject, true);
            setTimeout(function () {
                targetObject.style.display = "none";
            }, toggleLinkDelay + toggleLinkInterval);
            if (fade) setTimeout(function () {
                Fade(targetObject, toggleLinkDelay, toggleLinkInterval, true, 0.8);
            }, 1);
        } else {
            if (fade) {
                setTimeout(function () {
                    Fade(targetObject, toggleLinkDelay, toggleLinkInterval, true, 0.8);
                }, 1);
                setTimeout(function () {
                    targetObject.style.display = "none";
                }, toggleLinkDelay + toggleLinkInterval);
            } else targetObject.style.display = "none";
        }
        linkText = expandText;
    }
    var toggleLink = returnObjById(objToToggle + "Link-");
    toggleLink.innerHTML = linkText;
    function Slide(element, close) {
        if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.userAgent[navigator.userAgent.indexOf("MSIE") + 5]) >= 8) return;
        var start_time = new Date().getTime();
        var size = element.offsetHeight;
        var start_value = close ? 0 : 0 - size;
        var final_value = close ? 0 - size : 0;
        element.style.marginTop = start_value + 'px';
        element.style.width = 'auto';
        setTimeout(function () {
            Do();
        }, toggleLinkInterval);
        return;
        function Do() {
            var cur_time = new Date().getTime();
            var past_time = cur_time - start_time;
            if (past_time >= NavigationBarSlideDelay) {
                element.style.marginTop = final_value + 'px';
                return;
            }
            var progress = past_time / toggleLinkDelay;
            var new_value = close ? final_value * progress : start_value * (1 - progress);
            element.style.marginTop = new_value + 'px';
            setTimeout(function () {
                Do();
            }, toggleLinkInterval);
            return;
        }
    }
}
function createToggleLinks() {
    var toggleLinkCollection = document.getElementsByClass("toggleLink");
    for (var i = 0; i < toggleLinkCollection.length; i++) {
        var spanID = toggleLinkCollection[i].getAttribute("id");
        var targetID = spanID.substr(0, spanID.length - 4);
        var collapseText = returnObjById(targetID + "CollapseText").innerHTML;
        var expandText = returnObjById(targetID + "ExpandText").innerHTML;
        var initialState = returnObjById(targetID + "InitialState").innerHTML;
        var toggleLink = document.createElement("a");
        toggleLinkCollection[i].appendChild(toggleLink);
        if (initialState == "0") {
            returnObjById(targetID).style.display = "none";
            toggleLink.innerHTML = expandText;
        } else {
            returnObjById(targetID).style.display = tableOrNot(targetID);
            toggleLink.innerHTML = collapseText;
        }
        toggleLink.onclick = toggleCollapse;
        //toggleLink.className = "morphLink";
        toggleLink.id = targetID + "Link-";
    }
}
/* Functions that performs the morph operation.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted. */
var MorphFadeDelay = 800;
var MorphFadeInterval = 50;
function performMorph(targetID, targetNumber) {
    var counter = 1;
    while (returnObjById(targetID + "Content" + counter)) {
        if (counter == targetNumber) {
            returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
            if (!hasClass(returnObjById(targetID + "Master"), 'no-fade') && !noMorphSFX) Fade(returnObjById(targetID + "Content" + counter), MorphFadeDelay, MorphFadeInterval, false, 1);
        } else returnObjById(targetID + "Content" + counter).style.display = "none";
        counter++;
    }
    returnObjById(targetID + "Master").innerHTML = targetNumber;
}
function morphForward() {
    var targetID = this.getAttribute('name').replace(/LinkNext$/, '');
    var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
    if (returnObjById(targetID + "Content" + nextPane)) performMorph(targetID, nextPane);
    else performMorph(targetID, "1");
}
function morphBackward() {
    var targetID = this.getAttribute('name').replace(/LinkPrev$/, '');
    var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
    if (prevPane > 0) performMorph(targetID, prevPane);
    else {
        var maxIndex = 1;
        while (returnObjById(targetID + "Content" + maxIndex))
        maxIndex++;
        performMorph(targetID, maxIndex - 1);
    }
}
/* Special functions for the galleryMorph,
* created by MFH */
function performGalleryMorph(targetID, targetNumber) {
    var counter = 1;
    while (returnObjById(targetID + "Content" + counter)) {
        if (counter == targetNumber) {
            returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
            if (!hasClass(returnObjById(targetID + "Master"), 'no-fade') && !noMorphSFX) Fade(returnObjById(targetID + "Content" + counter), MorphFadeDelay, MorphFadeInterval, false, 1);
        } else returnObjById(targetID + "Content" + counter).style.display = "none";
        counter++;
    }
    if (targetNumber == 1) {
        returnObjById(targetID + "LinkPrev").style.display = "none";
    } else {
        returnObjById(targetID + "LinkPrev").style.display = tableOrNot(targetID + "LinkPrev");
    }
    if (targetNumber == counter - 1) {
        returnObjById(targetID + "LinkNext").style.display = "none";
    } else {
        returnObjById(targetID + "LinkNext").style.display = tableOrNot(targetID + "LinkNext");
    }
    galleryCounter = returnObjById(targetID + "Master").getAttribute("counter");
    returnObjById(targetID + "Counter").innerHTML = "(" + targetNumber + "/" + galleryCounter + ")";
    returnObjById(targetID + "Master").innerHTML = targetNumber;
}
function galleryMorphForward() {
    var targetID = this.getAttribute('name').replace(/LinkNext$/, '');
    var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
    if (returnObjById(targetID + "Content" + nextPane)) performGalleryMorph(targetID, nextPane);
    else performGalleryMorph(targetID, "1");
}
function galleryMorphBackward() {
    var targetID = this.getAttribute('name').replace(/LinkPrev$/, '');
    var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
    if (prevPane > 0) performGalleryMorph(targetID, prevPane);
    else {
        var maxIndex = 1;
        while (returnObjById(targetID + "Content" + maxIndex))
        maxIndex++;
        performGalleryMorph(targetID, maxIndex - 1);
    }
}
/* Function that creates ED's collapsing objects and toggle links.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted.
*
* Updated: 1/11/2008 by WhiteMystery to add new Morphing Objects
* functionality.
* Updated: 23/5/2009 by MFH to add 2 new kinds of morph:
* multiMorph and galleryMorph */
function createMorphLinks() {
    var morphMasterCollection = document.getElementsByClass("morphMaster");
    var multiMorphMasterCollection = document.getElementsByClass("multiMorphMaster");
    var galleryMorphMasterCollection = document.getElementsByClass("galleryMorphMaster");
    for (var i = 0; i < morphMasterCollection.length; i++) {
        var spanID = morphMasterCollection[i].getAttribute("id");
        var targetID = spanID.substr(0, spanID.length - 6);
        var counter = 1;
        // Create forward and backward paging if the paging elements exist
        if (returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1")) {
            // Create the forward link
            var nextLink = document.createElement("div");
            nextLink.innerHTML = returnObjById(targetID + "LinkNext").innerHTML;
            nextLink.setAttribute('name', targetID + "LinkNext");
            nextLink.onclick = morphForward;
            nextLink.className = "morphLink";
            returnObjById(targetID + "LinkNext").innerHTML = "";
            returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
            // Create the backward link
            var prevLink = document.createElement("div");
            prevLink.innerHTML = returnObjById(targetID + "LinkPrev").innerHTML;
            prevLink.setAttribute('name', targetID + "LinkPrev");
            prevLink.onclick = morphBackward;
            prevLink.className = "morphLink";
            returnObjById(targetID + "LinkPrev").innerHTML = "";
            returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
            // Initialize content panes
            while (returnObjById(targetID + "Content" + counter)) {
                if (counter == 1) returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
                else returnObjById(targetID + "Content" + counter).style.display = "none";
                counter++;
            }
        }
        counter = 1;
        // Whether or not there is paging, generate normal links
        while (returnObjById(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter)) {
            var morphLink = document.createElement("div");
            morphLink.innerHTML = returnObjById(targetID + "Link" + counter).innerHTML;
            returnObjById(targetID + "Link" + counter).innerHTML = "";
            returnObjById(targetID + "Link" + counter).appendChild(morphLink);
            morphLink.className = "morphLink";
            morphLink.setAttribute('name', targetID + "Link" + counter);
            morphLink.onclick = function () {
                var targetID = this.getAttribute('name').replace(/Link\d+$/, '');
                var targetNumber = this.parentNode.id.replace(/.+Link/, '');
                performMorph(targetID, targetNumber);
                return
            };
            // Initialize content panes
            if (counter == 1) returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
            else returnObjById(targetID + "Content" + counter).style.display = "none";
            counter++;
        }
        morphMasterCollection[i].innerHTML = "1";
        morphMasterCollection[i].style.display = "none";
    }
    for (var i = 0; i < multiMorphMasterCollection.length; i++) {
        var spanID = multiMorphMasterCollection[i].getAttribute("id");
        var targetID = spanID.substr(0, spanID.length - 6);
        var counter = 1;
        // Create forward and backward paging if the paging elements exist
        if (document.getElementsByClass(targetID + "LinkNext") && document.getElementsByClass(targetID + "LinkPrev") && document.getElementsByClass(targetID + "Content1")) {
            // Create the forward link
            var nextLinkCollection = document.getElementsByClass(targetID + "LinkNext");
            for (j = 0; j < nextLinkCollection.length; j++) {
                var nextLink = document.createElement("div");
                nextLink.innerHTML = nextLinkCollection[j].innerHTML;
                nextLink.setAttribute('name', targetID + "LinkNext");
                nextLink.onclick = morphForward;
                nextLink.className = "morphLink";
                nextLinkCollection[j].innerHTML = "";
                nextLinkCollection[j].appendChild(nextLink, 0);
            }
            // Create the backward link
            var prevLinkCollection = document.getElementsByClass(targetID + "LinkPrev");
            for (j = 0; j < prevLinkCollection.length; j++) {
                var prevLink = document.createElement("div");
                prevLink.innerHTML = prevLinkCollection[j].innerHTML;
                prevLink.setAttribute('name', targetID + "LinkPrev");
                prevLink.onclick = morphBackward;
                prevLink.className = "morphLink";
                prevLinkCollection[j].innerHTML = "";
                prevLinkCollection[j].appendChild(prevLink, 0);
            }
            // Initialize content panes
            while (returnObjById(targetID + "Content" + counter)) {
                if (counter == 1) returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
                else returnObjById(targetID + "Content" + counter).style.display = "none";
                counter++;
            }
        }
        counter = 1;
        // Whether or not there is paging, generate normal links
        while (document.getElementsByClass(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter)) {
            var morphLinkCollection = document.getElementsByClass(targetID + "Link" + counter);
            for (j = 0; j < morphLinkCollection.length; j++) {
                var morphLink = document.createElement("div");
                morphLink.innerHTML = morphLinkCollection[j].innerHTML;
                morphLinkCollection[j].innerHTML = "";
                morphLink.setAttribute('name', targetID + "Link" + counter);
                morphLinkCollection[j].appendChild(morphLink, 0);
                morphLink.onclick = function () {
                    var targetID = this.getAttribute('name').replace(/Link\d+$/, '');
                    var targetNumber = this.getAttribute('name').replace(/.+Link/, '');
                    performMorph(targetID, targetNumber);
                    return
                };
                morphLink.className = "morphLink";
            }
            // Initialize content panes
            if (counter == 1) returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
            else returnObjById(targetID + "Content" + counter).style.display = "none";
            counter++;
        }
        multiMorphMasterCollection[i].innerHTML = "1";
        multiMorphMasterCollection[i].style.display = "none";
    }
    for (var i = 0; i < galleryMorphMasterCollection.length; i++) {
        var spanID = galleryMorphMasterCollection[i].getAttribute("id");
        var targetID = spanID.substr(0, spanID.length - 6);
        var counter = 1;
        // Create forward and backward paging if the paging elements exist
        if (returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1")) {
            // Create the forward link
            var nextLink = document.createElement("div");
            nextLink.innerHTML = returnObjById(targetID + "LinkNext").innerHTML;
            nextLink.setAttribute('name', targetID + "LinkNext");
            nextLink.onclick = galleryMorphForward;
            nextLink.className = "morphLink";
            returnObjById(targetID + "LinkNext").innerHTML = "";
            returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
            // Create the backward link
            var prevLink = document.createElement("div");
            prevLink.innerHTML = returnObjById(targetID + "LinkPrev").innerHTML;
            prevLink.setAttribute('name', targetID + "LinkPrev");
            prevLink.onclick = galleryMorphBackward;
            prevLink.className = "morphLink";
            returnObjById(targetID + "LinkPrev").innerHTML = "";
            returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
            // Initialize content panes
            while (returnObjById(targetID + "Content" + counter)) {
                if (counter == 1) returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
                else returnObjById(targetID + "Content" + counter).style.display = "none";
                counter++;
            }
            if (counter == 2) {
                returnObjById(targetID + "LinkNext").style.display = "none";
            }
            galleryCounter = counter - 1;
            returnObjById(targetID + "Master").setAttribute("counter", galleryCounter);
            if (returnObjById(targetID + "Counter")) {
                returnObjById(targetID + "Counter").innerHTML = "(1/" + galleryCounter + ")";
            }
        }
        galleryMorphMasterCollection[i].innerHTML = "1";
        galleryMorphMasterCollection[i].style.display = "none";
    }
}
/* Function that toggles ED's collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Taken from http://www.netlobo.com/javascript_get_element_id.html */
function returnObjById(id) {
    if (document.getElementById) var returnVar = document.getElementById(id);
    else if (document.all) var returnVar = document.all[id];
    else if (document.layers) var returnVar = document.layers[id];
    return returnVar;
}
/* Attiva il charinsert per gli anonimi nel box "newarticleintro" */
function charinsert_anon_hack() {
    if (!(wgAction == "edit" && wgArticleId == 0 && wgUserName == null)) return;
    var box = getElementsByClass(document.getElementById("bodyContent"), "mw-newarticletextanon", 'div')[0];
    if (!box) return;
    var link = '<' + 'a href="#" onclick="insertTags(&#39;$1&#39;,&#39;&#39;,&#39;&#39;);return false">$1<' + '/a>';
    box.innerHTML = box.innerHTML.replace(/&lt;charinsert&gt;(.+?)&lt;\/charinsert&gt;/, link);
    return;
}
/* Function to add a "purge" button at the top of the page,
* usefull for dpl, random and similar things that need the
* cache of the server.
*
* Created by MFH */
var buttonPurge = 0;
function createPurgeButton() {
    if (buttonPurge == 0 || wgCanonicalNamespace == 'Special') return;
    if (document.getElementById('ca-report-problem')) { /* Modifies the "report a problem" button, that is already invisible */
        document.getElementById('ca-report-problem').getElementsByTagName('a')[0].innerHTML = 'Purge';
        document.getElementById('ca-report-problem').getElementsByTagName('a')[0].href = wgServer + wgScriptPath + '/index.php?title=' + wgPageName + '&action=purge';
        document.getElementById('ca-report-problem').setAttribute('id', 'ca-purge');
    } else {
        var menuList = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
        var newLi = document.createElement('li');
        newLi.setAttribute('id', 'ca-purge');
        newLi.innerHTML = '<a href="' + wgServer + wgScriptPath + '/index.php?title=' + wgPageName + '&action=purge">Purge</a>';
        menuList.appendChild(newLi);
    }
}
/* Visualizza correttamente categorie nascoste in IE */
function hiddencats_IE() {
    if (navigator.appName != "Microsoft Internet Explorer") return;
    var div = document.getElementById("mw-hidden-catlinks");
    if (div == null) return;
    var span = document.createElement('span');
    span.id = 'mw-hidden-catlinks-switch';
    span.innerHTML = "&gt;&gt;";
    div.insertBefore(span, div.firstChild);
    return;
}
/* Class che aggiunge "target= '_blank'" ai link */
function target_blank() {
    var tags = getElementsByClass(document.getElementsByTagName('body')[0], "target-blank");
    if (tags == null) return;
    var i, j, links;
    for (i = 0; i < tags.length; i++) {
        links = tags[i].getElementsByTagName('a');
        for (j = 0; j < links.length; j++) links[j].target = '_blank';
    }
    return;
}
/* Visualizza note come tooltip */
/* by Sanjilops - http://nonciclopedia.wikia.com/wiki/Utente:Sanjilops */
var disablereftooltip = false;
function ref_tooltip() {
    if (disablereftooltip) return;
    var refs = getElementsByClass(document.getElementById('bodyContent'), "reference", 'sup');
    if (!refs) return;
    for (var i = 0; i < refs.length; i++) Do(refs[i]);
    return;
    function Do(ref) {
        var span = document.createElement('span');
        var id = ref.id.substr('cite_ref-'.length);
        span.className = "reference-tt";
        span.id = "cite_tt-" + id;
        var li = document.getElementById('cite_note-' + id.replace(/_(\d+)-\d+$/, '-$1'));
        if (!li) return;
        var temp = li.innerHTML;
        temp = temp.split(/^.+a href=\"#cite_ref-.+\" title=\"\">.+?<\/a>(<\/sup>)? /);
        span.innerHTML = (temp.length) ? temp[temp.length - 1] : temp;
        if (ref.offsetLeft < document.getElementById('bodyContent').offsetWidth / 2) span.style.left = (ref.offsetWidth - 1) + 'px';
        else span.style.right = (ref.offsetWidth - 1) + 'px';
        temp = getText(span);
        temp = temp.length * 12;
        span.style.width = (temp < 400) ? temp + 'px' : "400px";
        ref.appendChild(span);
        return;
    }
}
/* Funzione che imposta il tasto "modifica" sulla versione corrente nella schermata delle differenze; non attiva di default.
* Per attivarla inserire nel proprio monobook.js il codice:
  addOnloadHook(editcurrentid);
*/
function editcurrentid() {
    var b = document.getElementById('ca-edit');
    if (!b) return;
    if (getElementsByClass(document, 'diff', 'table').length == 0) return;
    var l = b.firstChild;
    l.href = l.href.replace(/&oldid=\d+/, '');
    appendText(l, '*');
    return;
}
/* multiSFX */
var multislide_time = 1000;
var multislide_interval = 10;
var noMultislide = false;
var multislide_state = new Object();
var multislide_master = new Object();
function multislide_startup() {
    if (noMultislide) return;
    var toggles = getElementsByClass(document, "multislideToggle");
    if (!toggles.length) return;
    var names = new Array();
    var id = '',
        i, elements, master;
    for (var I = 0; I < toggles.length; I++) {
        id = toggles[I].title;
        if (String(names).indexOf(id) != -1) continue;
        names[names.length] = id;
        multislide_state[id] = false;
        master = document.getElementById(id + "Master");
        if (master) {
            multislide_master[id] = new Object();
            multislide_master[id].onload = hasClass(master, "slideOnload");
            multislide_master[id].time = (/slideTime-\d+/.test(master.className)) ? parseInt(master.className.match(/slideTime-(\d+)/)[1]) : -1;
            multislide_master[id].fade = hasClass(master, "slideFade");
        } else multislide_master[id] = null;
    }
    var dom, n;
    for (I = 0; I < names.length; I++) {
        id = names[I];
        n = 0;
        dom = document.getElementsByTagName('body')[0].getElementsByTagName('*');
        for (i = 0; i < dom.length; i++) {
            if (dom[i].title == id && dom[i].nodeName.toUpperCase() != 'A') {
                if (hasClass(dom[i], "multislideToggle")) {
                    dom[i].setAttribute('name', id + "-Toggle");
                    CreateToggle(dom[i], id, n);
                    n++;
                } else {
                    dom[i].setAttribute('name', id + "-Content");
                    SetStartPosition(dom[i]);
                }
                dom[i].removeAttribute('title');
            }
        }
        if (multislide_master[id] && multislide_master[id].onload) multislide_toggle(id, multislide_master[id].time);
    }
    return;
    function CreateToggle(el, id, n) {
        var time = (/slideTime-\d+/.test(el.className)) ? parseInt(el.className.match(/slideTime-(\d+)/)[1]) : -1;
        var fade = hasClass(el, "slideFade");
        if (hasClass(el, "slideHover")) {
            el.onmouseover = function () {
                multislide_toggle(id, time, fade, true);
                return;
            }
            el.onmouseout = function () {
                multislide_toggle(id, time, fade, false);
                return;
            }
        } else el.onclick = function () {
            multislide_toggle(id, time, fade);
            return;
        };
        var On = getElementsByClass(el, "slideOn")[0];
        if (!On) return;
        var toggle;
        if (el.firstChild.nodeType != 1) {
            toggle = document.createElement('span');
            toggle.innerHTML = el.firstChild.nodeValue;
            el.replaceChild(toggle, el.firstChild);
        } else toggle = el.firstChild;
        toggle.id = id + "-toggle" + n; /* dato che n è i, gli id possono non essere consecutivi */
        On.id = id + "-toggle" + n + "-on";
        var Off = getElementsByClass(el, "slideOff")[0];
        if (!Off) {
            Off = toggle.cloneNode(true);
            Off.style.display = 'none';
            el.appendChild(Off);
        }
        Off.id = id + "-toggle" + n + "-off";
        return;
    }
    function SetStartPosition(el) {
        var height = el.offsetHeight;
        var width = el.offsetWidth;
        if (hasClass(el, "slideFromTop")) {
            el.style.top = '-' + height + 'px';
            return;
        }
        if (hasClass(el, "slideFromBottom")) {
            el.style.bottom = '-' + height + 'px';
            return;
        }
        if (!hasClass(el.parentNode, "slideNoResize") && (el.parentNode.style == undefined || !el.parentNode.style.height)) el.parentNode.style.height = height + 'px';
        if (hasClass(el, "slideFromLeft")) {
            el.style.left = '-' + width + 'px';
            return;
        }
        if (hasClass(el, "slideFromRight")) el.style.right = '-' + width + 'px';
        return;
    }
}
function multislide_toggle(id, toggle_time, toggle_fade, hoverWantedState) {
    if (hoverWantedState != undefined && hoverWantedState == multislide_state[id]) return;
    var contents = getElementsByName(id + "-Content");
    var el, time, fade;
    for (var i = 0; i < contents.length; i++) {
        el = contents[i];
        if (/slideTime-\d+/.test(el.className)) time = parseInt(el.className.match(/slideTime-(\d+)/)[1]);
        else {
            if (toggle_time != -1) time = toggle_time;
            else {
                if (multislide_master[id] && multislide_master[id].time != -1) time = multislide_master[id].time;
                else time = multislide_time;
            }
        }
        fade = hasClass(el, "slideFade") || toggle_fade || (multislide_master[id] && multislide_master[id].fade);
        var dir = el.className.match(/slideFrom(Top|Bottom|Left|Right)/)[0].substr(9).toLowerCase();
        var framesize;
        if (!multislide_state[id]) {
            if (dir == 'top' || dir == 'bottom') framesize = el.parentNode.offsetHeight + el.offsetHeight;
            else if (dir == 'left' || dir == 'right') framesize = el.parentNode.offsetWidth + el.offsetWidth;
            Slide(el, dir, 0, framesize, time, multislide_interval);
        } else {
            var size;
            if (dir == 'top' || dir == 'bottom') {
                size = el.offsetHeight;
                framesize = el.parentNode.offsetHeight - size;
            } else if (dir == 'left' || dir == 'right') {
                size = el.offsetWidth;
                framesize = el.parentNode.offsetWidth - size;
            }
            Slide(el, dir, 0 - size, framesize, time, multislide_interval);
        }
        if (fade) _fade(el, time, multislide_state[id]);
    }
    var toggles = getElementsByName(id + "-Toggle");
    for (var i = 0; i < toggles.length; i++) {
        var el = document.getElementById(id + "-toggle" + i);
        if (!el) continue;
        el.innerHTML = (multislide_state[id]) ? document.getElementById(id + "-toggle" + i + "-off").innerHTML : document.getElementById(id + "-toggle" + i + "-on").innerHTML;
    }
    multislide_state[id] = !multislide_state[id];
    return;
    function _fade(el, time, rev) {
        setTimeout(function () {
            Fade(el, time, multislide_interval, rev, (rev ? 0.8 : 1));
        }, 1);
        setTimeout(function () {
            el.style.filter = "alpha(opacity=100)";
            el.style.opacity = 1;
        }, time + 5 * multislide_interval);
        return;
    }
}
var multifade_time = 1000;
var multifade_interval = 10;
var multifade_state = new Object();
var multifade_master = new Object();
var noMultifade = false;
function multifade_startup() {
    if (noMultifade) return;
    var toggles = getElementsByClass(document, "multifadeToggle");
    if (!toggles.length) return;
    var names = new Array();
    var id = '',
        i, elements, master;
    for (var I = 0; I < toggles.length; I++) {
        id = toggles[I].title;
        if (String(names).indexOf(id) != -1) continue;
        names[names.length] = id;
        multifade_state[id] = false;
        master = document.getElementById(id + "Master");
        if (master) {
            multifade_master[id] = new Object();
            multifade_master[id].onload = hasClass(master, "fadeOnload");
            multifade_master[id].time = (/fadeTime-\d+/.test(master.className)) ? parseInt(master.className.match(/fadeTime-(\d+)/)[1]) : -1;
        } else multifade_master[id] = null;
    }
    var dom, n;
    for (I = 0; I < names.length; I++) {
        id = names[I];
        n = 0;
        dom = document.getElementsByTagName('body')[0].getElementsByTagName('*');
        for (i = 0; i < dom.length; i++) {
            if (dom[i].title == id && dom[i].nodeName.toUpperCase() != 'A') {
                if (hasClass(dom[i], "multifadeToggle")) {
                    dom[i].setAttribute('name', id + "-Toggle");
                    CreateToggle(dom[i], id, n);
                    n++;
                } else {
                    dom[i].setAttribute('name', id + "-Content");
                    dom[i].style.opacity = 0;
                    dom[i].style.filter = 'alpha(opacity=0)';
                }
                dom[i].removeAttribute('title');
            }
        }
        if (multifade_master[id] && multifade_master[id].onload) multifade_toggle(id, multifade_master[id].time);
    }
    return;
    function CreateToggle(el, id, n) {
        el.setAttribute('name', id + "-Toggle");
        var time = (/fadeTime-\d+/.test(el.className)) ? parseInt(el.className.match(/fadeTime-(\d+)/)[1]) : -1;
        if (hasClass(el, "fadeHover")) {
            el.onmouseover = function () {
                multifade_toggle(id, time, true);
                return;
            }
            el.onmouseout = function () {
                multifade_toggle(id, time, false);
                return;
            }
        } else el.onclick = function () {
            multifade_toggle(id, time);
            return;
        };
        var On = getElementsByClass(el, "fadeOn")[0];
        if (!On) return;
        var toggle;
        if (el.firstChild.nodeType != 1) {
            toggle = document.createElement('span');
            toggle.innerHTML = el.firstChild.nodeValue;
            el.replaceChild(toggle, el.firstChild);
        } else toggle = el.firstChild;
        toggle.id = id + "-toggle" + n; /* dato che n è i, gli id possono non essere consecutivi */
        On.id = id + "-toggle" + n + "-on";
        var Off = getElementsByClass(el, "fadeOff")[0];
        if (!Off) {
            Off = toggle.cloneNode(true);
            Off.style.display = 'none';
            el.appendChild(Off);
        }
        Off.id = id + "-toggle" + n + "-off";
        return;
    }
}
function multifade_toggle(id, general_time, hoverWantedState) {
    if (hoverWantedState != undefined && hoverWantedState == multifade_state[id]) return;
    var contents = getElementsByName(id + "-Content");
    var el, time;
    for (var i = 0; i < contents.length; i++) {
        el = contents[i];
        if (/fadeTime-\d+/.test(el.className)) time = parseInt(el.className.match(/fadeTime-(\d+)/)[1]);
        else {
            if (general_time != -1) time = general_time;
            else {
                if (multifade_master[id] && multifade_master[id].time != -1) time = multifade_master[id].time;
                else time = multifade_time;
            }
        }
        Fade(el, time, multifade_interval, multifade_state[id], multifade_state[id] ? 0.8 : 1);
    }
    var toggles = getElementsByName(id + "-Toggle");
    for (var i = 0; i < toggles.length; i++) {
        var el = document.getElementById(id + "-toggle" + i);
        if (!el) continue;
        el.innerHTML = (multifade_state[id]) ? document.getElementById(id + "-toggle" + i + "-off").innerHTML : document.getElementById(id + "-toggle" + i + "-on").innerHTML;
    }
    multifade_state[id] = !multifade_state[id];
    return;
}
/* Parser for simple math expressions
  Created by MFH for Nonciclopedia */
function opSolve(opArray, posArray) {
    var opDivided = new Array(Array(opArray[posArray[0]][0]));
    var posDivided = new Array(Array(posArray[0], 0)); /* Position, length-1*/
    var opDivInd = 0;
    for (var i = 1; i < posArray.length; i++) { /* Separates the different brackets*/
        if (posArray[i] == posArray[i - 1] + 1) {
            opDivided[opDivInd].push(opArray[posArray[i]][0]);
            posDivided[opDivInd][1] = posDivided[opDivInd][1] + 1;
        } else {
            opDivInd = opDivInd + 1;
            posDivided.push(Array(posArray[i], 1));
        }
    }
    for (var i = 0; i <= opDivInd; i++) {
        for (var j = 1; j < opDivided[opDivInd].length - 1; j++) {
            if (opDivided[i][j] == '^') {
                opDivided[i][j - 1] = Math.pow(parseFloat(opDivided[i][j - 1]), parseFloat(opDivided[i][j + 1]));
                opDivided[i].splice(j, 2);
                j = j - 1;
            }
        }
        for (var j = 1; j < opDivided[opDivInd].length - 1; j++) {
            if (opDivided[i][j] == '*') {
                opDivided[i][j - 1] = parseFloat(opDivided[i][j - 1]) * parseFloat(opDivided[i][j + 1]);
                opDivided[i].splice(j, 2);
                j = j - 1;
            }
            if (opDivided[i][j] == '/') {
                opDivided[i][j - 1] = parseFloat(opDivided[i][j - 1]) / parseFloat(opDivided[i][j + 1]);
                opDivided[i].splice(j, 2);
                j = j - 1;
            }
        }
        for (var j = 1; j < opDivided[opDivInd].length - 1; j++) {
            if (opDivided[i][j] == '+') {
                opDivided[i][j - 1] = parseFloat(opDivided[i][j - 1]) + parseFloat(opDivided[i][j + 1]);
                opDivided[i].splice(j, 2);
                j = j - 1;
            }
            if (opDivided[i][j] == '-') {
                opDivided[i][j - 1] = parseFloat(opDivided[i][j - 1]) - parseFloat(opDivided[i][j + 1]);
                opDivided[i].splice(j, 2);
                j = j - 1;
            }
        }
    }
    for (var i = posDivided.length - 1; i >= 0; i--) {
        opArray[posDivided[i][0]] = Array(opDivided[i][0], opArray[posDivided[i][0]][1] - 1);
        opArray.splice(posDivided[i][0] + 1, posDivided[i][1]);
    }
    return opArray;
}
function math_parser(operation, xValue) {
    var opArray = new Array();
    var brInd = 0; /* Bracket index */
    var brIndMax = 0;
    for (var i = 0; i < operation.length; i++) { /* Divides the string in single characters */
        var textChunk = operation.substr(i, 1);
        if (textChunk != ' ') { /* Removes useless spaces */
            if (textChunk == '(') { /* Removes brackets, conserving the information */
                brInd = brInd + 1;
                if (brInd > brIndMax) {
                    brIndMax = brInd;
                }
            } else if (textChunk == ')') {
                brInd = brInd - 1;
            } else if (textChunk == 'x') {
                opArray.push(Array(xValue, brInd));
            } else {
                opArray.push(Array(textChunk, brInd));
            }
        }
    }
    i = 0;
    while (i < opArray.length - 1) { /* Puts numbers together again */
        if ((opArray[i][0].match(/[0-9\.]/) || (opArray[i][0].match(/-/) && (i == 0 || opArray[i - 1][1] < opArray[i][1]))) && opArray[i + 1][0].match(/[0-9\.]/)) {
            /* If is a number or a comma, or if is a minus at the beginnig of a bracket; and the following is a number or a comma */
            opArray[i][0] = opArray[i][0] + opArray[i + 1][0];
            opArray.splice(i + 1, 1);
        } else {
            i++;
        }
    }
    for (var i = brIndMax; i >= 0; i--) {
        var posArray = new Array();
        for (var j = 0; j < opArray.length; j++) {
            if (opArray[j][1] == i) {
                posArray.push(j);
            }
        }
        opArray = opSolve(opArray, posArray);
    }
    return opArray[0][0];
}
/*Analisi delle visite*/
function init() {
    codice = document.createElement('script');
    codice.type = 'text/javascript';
    if (wgUserName) {
        codice.innerHTML = "var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-17496928-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();";
    } else {
        codice.innerHTML = "var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-17496918-1']); _gaq.push(['_trackPageview']); (function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();";
    }
    headTag = document.getElementsByTagName("head")[0];
    headTag.appendChild(codice);
}
addOnloadHook(init);
function facebooklikeboxTEST() {
    window.fbAsyncInit = function () {
        FB.init({
            appId: '331743818234',
            status: true,
            cookie: true,
            xfbml: true
        });
    };
    (function () {
        var e = document.createElement('script');
        e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
    addOnloadHook(facebooklikeboxTEST);
}
importScript("MediaWiki:Ticker2.js");
importScript("MediaWiki:Tabber.js");
importScript("MediaWiki:Calendar.js");
importScript("MediaWiki:ExtraButtons.js");
function clearMainPage() {
    if (wgTitle == 'Main Page') {
        var h1tags = document.getElementsByTagName("h1");
        var h = h1tags[0];
        var parent = h.parentNode;
        parent.removeChild(h);
    }
}
addOnloadHook(clearMainPage);

Revision as of 04:23, 3 July 2012

$(document).ready(function () {
    /* Force input boxes to have input box class */
    $(":text, input[type='text'], input[type='password'], input[type='search'], textarea, input#wpSummary").addClass("input-text-box");

    /* Improvement Box Tabber */
    $(".improvementBox").find(".improveTabLinkBox a").click(function () {
        $(".improvementBox").find("#improveTabs > div").hide();
        $(".improvementBox").find("#improveTabs > div" + $(this).attr("href")).show();
        return false;
    });
});

/* ***************************************** */

$(document).ready(function() {
	$(".morphMaster").each(function() {
		var $master = $(this);
		var $tabs = $master.find(".morphTabBox");
		var $container = $master.find(".morphTabContainer");
		
		$tabs.find(".morphLink").click(function() {
			var id = $(this).attr("id");
			id = id.substr(0, id.length - 4);
			$container.find("div.morphContent").hide();
			$container.find("div#"+id+"Content").show();
		});
	});
});