$j(document).ready(function () {
    if (!wgVectorEnabledModules.collapsiblenav) {
        return true;
    }
    var map = {
        'ltr': {
            'msie': [
                ['>=', 7]
            ],
            'opera': [
                ['>=', 9.6]
            ],
            'konqueror': [
                ['>=', 4.0]
            ],
            'blackberry': false,
            'ipod': false,
            'iphone': false,
            'ps3': false
        },
        'rtl': {
            'msie': [
                ['>=', 7]
            ],
            'opera': [
                ['>=', 9.6]
            ],
            'konqueror': [
                ['>=', 4.0]
            ],
            'blackberry': false,
            'ipod': false,
            'iphone': false,
            'ps3': false
        }
    };
    if (!mw.usability.testBrowser(map)) {
        return true;
    }
    var version = 1;
    if (wgCollapsibleNavForceNewVersion) {
        version = 2;
    } else {
        if (wgCollapsibleNavBucketTest) {
            version = $j.cookie('vector-nav-pref-version');
            if (version == null) {
                version = Math.round(Math.random() + 1);
                $j.cookie('vector-nav-pref-version', version, {
                    'expires': 30,
                    'path': '/'
                });
            }
        }
    }
    if (version == 2) {
        var limit = 5;
        var threshold = 3;
        $j('#p-lang ul').addClass('secondary').before('<ul class="primary"></ul>');
        var languages = ['en', 'fr', 'de', 'es', 'pt', 'it', 'ru', 'ja', 'nl', 'pl', 'zh', 'sv', 'ar', 'tr', 'uk', 'fi', 'no', 'ca', 'ro', 'hu', 'ksh', 'id', 'he', 'cs', 'vi', 'ko', 'sr', 'fa', 'da', 'eo', 'sk', 'th', 'lt', 'vo', 'bg', 'sl', 'hr', 'hi', 'et', 'mk', 'simple', 'new', 'ms', 'nn', 'gl', 'el', 'eu', 'ka', 'tl', 'bn', 'lv', 'ml', 'bs', 'te', 'la', 'az', 'sh', 'war', 'br', 'is', 'mr', 'be-x-old', 'sq', 'cy', 'lb', 'ta', 'zh-classical', 'an', 'jv', 'ht', 'oc', 'bpy', 'ceb', 'ur', 'zh-yue', 'pms', 'scn', 'be', 'roa-rup', 'qu', 'af', 'sw', 'nds', 'fy', 'lmo', 'wa', 'ku', 'hy', 'su', 'yi', 'io', 'os', 'ga', 'ast', 'nap', 'vec', 'gu', 'cv', 'bat-smg', 'kn', 'uz', 'zh-min-nan', 'si', 'als', 'yo', 'li', 'gan', 'arz', 'sah', 'tt', 'bar', 'gd', 'tg', 'kk', 'pam', 'hsb', 'roa-tara', 'nah', 'mn', 'vls', 'gv', 'mi', 'am', 'ia', 'co', 'ne', 'fo', 'nds-nl', 'glk', 'mt', 'ang', 'wuu', 'dv', 'km', 'sco', 'bcl', 'mg', 'my', 'diq', 'tk', 'szl', 'ug', 'fiu-vro', 'sc', 'rm', 'nrm', 'ps', 'nv', 'hif', 'bo', 'se', 'sa', 'pnb', 'map-bms', 'lad', 'lij', 'crh', 'fur', 'kw', 'to', 'pa', 'jbo', 'ba', 'ilo', 'csb', 'wo', 'xal', 'krc', 'ckb', 'pag', 'ln', 'frp', 'mzn', 'ce', 'nov', 'kv', 'eml', 'gn', 'ky', 'pdc', 'lo', 'haw', 'mhr', 'dsb', 'stq', 'tpi', 'arc', 'hak', 'ie', 'so', 'bh', 'ext', 'mwl', 'sd', 'ig', 'myv', 'ay', 'iu', 'na', 'cu', 'pi', 'kl', 'ty', 'lbe', 'ab', 'got', 'sm', 'as', 'mo', 'ee', 'zea', 'av', 'ace', 'kg', 'bm', 'cdo', 'cbk-zam', 'kab', 'om', 'chr', 'pap', 'udm', 'ks', 'zu', 'rmy', 'cr', 'ch', 'st', 'ik', 'mdf', 'kaa', 'aa', 'fj', 'srn', 'tet', 'or', 'pnt', 'bug', 'ss', 'ts', 'pcd', 'pih', 'za', 'sg', 'lg', 'bxr', 'xh', 'ak', 'ha', 'bi', 've', 'tn', 'ff', 'dz', 'ti', 'ki', 'ny', 'rw', 'chy', 'tw', 'sn', 'tum', 'ng', 'rn', 'mh', 'ii', 'cho', 'hz', 'kr', 'ho', 'mus', 'kj'];
        var acceptLangCookie = $j.cookie('accept-language');
        if (acceptLangCookie != null) {
            if (acceptLangCookie != '') {
                languages = acceptLangCookie.split(',').concat(languages);
            }
        } else {
            $j.getJSON(wgScriptPath + '/api.php?action=query&meta=userinfo&uiprop=acceptlang&format=json', function (data) {
                var langs = [];
                if (typeof data.query != 'undefined' && typeof data.query.userinfo != 'undefined' && typeof data.query.userinfo.acceptlang != 'undefined') {
                    for (var j = 0; j < data.query.userinfo.acceptlang.length; j++) {
                        if (data.query.userinfo.acceptlang[j].q != 0) {
                            langs.push(data.query.userinfo.acceptlang[j]['*']);
                        }
                    }
                }
                $j.cookie('accept-language', langs.join(','), {
                    'path': '/',
                    'expires': 30
                });
            });
        }
        var $primary = $j('#p-lang ul.primary');
        var $secondary = $j('#p-lang ul.secondary');
        if ($secondary.children().length < limit + threshold) {
            limit += threshold;
        }
        var count = 0;
        for (var i = 0; i < languages.length; i++) {
            var $link = $secondary.find('.interwiki-' + languages[i]);
            if ($link.length) {
                if (count++ < limit) {
                    $link.appendTo($primary);
                } else {
                    break;
                }
            }
        }
        if (count < limit) {
            $secondary.children().each(function () {
                if (count++ < limit) {
                    $j(this).appendTo($primary);
                } else {
                    return false;
                }
            });
        }
        if ($secondary.children().length == 0) {
            $secondary.remove();
        } else {
            $j('#p-lang').after('<div id="p-lang-more" class="portal"><h5></h5><div class="body"></div></div>');
            $j('#p-lang-more h5').text(mw.usability.getMsg('vector-collapsiblenav-more'));
            $secondary.appendTo($j('#p-lang-more div.body'));
        }
        $j('#p-lang').addClass('persistent');
    }
    $j('#mw-panel > div.portal:first').addClass('first persistent');
    $j('#mw-panel').addClass('collapsible-nav');
    $j('#mw-panel > div.portal:not(.persistent)').each(function (i) {
        var id = $j(this).attr('id');
        var state = $j.cookie('vector-nav-' + id);
        if (state == 'true' || (state == null && i < 1) || (state == null && version == 1 && id == 'p-lang')) {
            $j(this).addClass('expanded').find('div.body').show();
        } else {
            $j(this).addClass('collapsed');
        }
        if (state != null) {
            $j.cookie('vector-nav-' + $j(this).attr('id'), state, {
                'expires': 30,
                'path': '/'
            });
        }
    });

    function toggle($element) {
        $j.cookie('vector-nav-' + $element.parent().attr('id'), $element.parent().is('.collapsed'), {
            'expires': 30,
            'path': '/'
        });
        $element.parent().toggleClass('expanded').toggleClass('collapsed').find('div.body').slideToggle('fast');
    }
    var $headings = $j('#mw-panel > div.portal:not(.persistent) > h5');
    var tabIndex = mw.usability.getMaxTabIndex() + 1;
    $j('#searchInput').attr('tabindex', tabIndex++);
    $headings.each(function () {
        $j(this).attr('tabindex', tabIndex++);
    });
    $headings.keydown(function (event) {
        if (event.which == 13 || event.which == 32) {
            toggle($j(this));
        }
    }).mousedown(function () {
        toggle($j(this));
        $j(this).blur();
        return false;
    });
});
$j(document).ready(function () {
    if (!wgVectorEnabledModules.collapsibletabs) {
        return true;
    }
    var rtl = $j('body').is('.rtl');
    $j.collapsibleTabs.moveToCollapsed = function (ele) {
        var $moving = $j(ele);
        var data = $j.collapsibleTabs.getSettings($moving);
        if (!data) {
            return;
        }
        var expContainerSettings = $j.collapsibleTabs.getSettings($j(data.expandedContainer));
        if (!expContainerSettings) {
            return;
        }
        expContainerSettings.shifting = true;
        var target = data.collapsedContainer;
        $moving.css("position", "relative").css((rtl ? 'left' : 'right'), 0).animate({
            width: '1px'
        }, "normal", function () {
            $j(this).hide();
            $j('<span class="placeholder" style="display:none;"></span>').insertAfter(this);
            $j(this).remove().prependTo(target).data('collapsibleTabsSettings', data);
            $j(this).attr('style', 'display:list-item;');
            var data = $j.collapsibleTabs.getSettings($j(ele));
            if (!data) {
                return;
            }
            var expContainerSettings = $j.collapsibleTabs.getSettings($j(data.expandedContainer));
            if (!expContainerSettings) {
                return;
            }
            expContainerSettings.shifting = false;
            $j.collapsibleTabs.handleResize();
        });
    };
    $j.collapsibleTabs.moveToExpanded = function (ele) {
        var $moving = $j(ele);
        var data = $j.collapsibleTabs.getSettings($moving);
        if (!data) {
            return;
        }
        var expContainerSettings = $j.collapsibleTabs.getSettings($j(data.expandedContainer));
        if (!expContainerSettings) {
            return;
        }
        expContainerSettings.shifting = true;
        var $target = $j(data.expandedContainer).find('span.placeholder:first');
        var expandedWidth = data.expandedWidth;
        $moving.css("position", "relative").css((rtl ? 'right' : 'left'), 0).css('width', '1px');
        $target.replaceWith($moving.remove().css('width', '1px').data('collapsibleTabsSettings', data).animate({
            width: expandedWidth + "px"
        }, "normal", function () {
            $j(this).attr('style', 'display:block;');
            var data = $j.collapsibleTabs.getSettings($j(ele));
            if (!data) {
                return;
            }
            var expContainerSettings = $j.collapsibleTabs.getSettings($j(data.expandedContainer));
            if (!expContainerSettings) {
                return;
            }
            expContainerSettings.shifting = false;
            $j.collapsibleTabs.handleResize();
        }));
    };
    $j('#p-views ul').bind("beforeTabCollapse", function () {
        if ($j('#p-cactions').css('display') == 'none') $j("#p-cactions").addClass("filledPortlet").removeClass("emptyPortlet").find('h5').css('width', '1px').animate({
            'width': '26px'
        }, 390);
    }).bind("beforeTabExpand", function () {
        if ($j('#p-cactions li').length == 1) $j("#p-cactions h5").animate({
            'width': '1px'
        }, 370, function () {
            $j(this).attr('style', '').parent().addClass("emptyPortlet").removeClass("filledPortlet");
        });
    }).collapsibleTabs({
        expandCondition: function (eleWidth) {
            if (rtl) {
                return ($j('#right-navigation').position().left + $j('#right-navigation').width() + 1) < ($j('#left-navigation').position().left - eleWidth);
            } else {
                return ($j('#left-navigation').position().left + $j('#left-navigation').width() + 1) < ($j('#right-navigation').position().left - eleWidth);
            }
        },
        collapseCondition: function () {
            if (rtl) {
                return ($j('#right-navigation').position().left + $j('#right-navigation').width()) > $j('#left-navigation').position().left;
            } else {
                return ($j('#left-navigation').position().left + $j('#left-navigation').width()) > $j('#right-navigation').position().left;
            }
        }
    });
});
$j(document).ready(function () {
    if (!wgVectorEnabledModules.editwarning || $j('#wpTextbox1').size() == 0) {
        return true;
    }
    $j('#wpTextbox1, #wpSummary').each(function () {
        $j(this).data('origtext', $j(this).val());
    });
    var fallbackWindowOnBeforeUnload = window.onbeforeunload;
    var ourWindowOnBeforeUnload = function () {
        var fallbackResult = undefined;
        var retval = undefined;
        var thisFunc = arguments.callee;
        if (fallbackWindowOnBeforeUnload) {
            fallbackResult = fallbackWindowOnBeforeUnload();
        }
        if (fallbackResult !== undefined) {
            retval = fallbackResult;
        } else {
            if (wgAction == 'submit' || $j('#wpTextbox1').data('origtext') != $j('#wpTextbox1').val() || $j('#wpSummary').data('origtext') != $j('#wpSummary').val()) {
                retval = mw.usability.getMsg('vector-editwarning-warning');
            }
        }
        window.onbeforeunload = null;
        if (retval !== undefined) {
            setTimeout(function () {
                window.onbeforeunload = thisFunc;
            });
            return retval;
        }
    };
    var pageShowHandler = function () {
        window.onbeforeunload = ourWindowOnBeforeUnload;
    };
    pageShowHandler();
    if (window.addEventListener) {
        window.addEventListener('pageshow', pageShowHandler, false);
    } else if (window.attachEvent) {
        window.attachEvent('pageshow', pageShowHandler);
    }
    $j('form').submit(function () {
        window.onbeforeunload = fallbackWindowOnBeforeUnload;
    });
});
var fallbackWindowOnBeforeUnload = null;
if (wgVectorEnabledModules.simplesearch && skin == 'vector' && typeof os_autoload_inputs !== 'undefined' && os_autoload_forms !== 'undefined') {
    os_autoload_inputs = [];
    os_autoload_forms = [];
}
$j(document).ready(function () {
    if (!wgVectorEnabledModules.simplesearch || wgVectorPreferences.simplesearch.disablesuggest || skin != 'vector') {
        return true;
    }
    var mod = {
        'browsers': {
            'ltr': {
                'opera': [
                    ['>=', 9.6]
                ],
                'docomo': false,
                'blackberry': false,
                'ipod': false,
                'iphone': false
            },
            'rtl': {
                'opera': [
                    ['>=', 9.6]
                ],
                'docomo': false,
                'blackberry': false,
                'ipod': false,
                'iphone': false
            }
        }
    };
    if (!$j.wikiEditor.isSupported(mod)) {
        return true;
    }
    if ('placeholder' in document.createElement('input')) {
        $j('div#simpleSearch > input#searchInput').attr('placeholder', mw.usability.getMsg('vector-simplesearch-search'));
    } else {
        $j('div#simpleSearch > input#searchInput').each(function () {
            var $input = $j(this);
            $input.bind('blur', function () {
                if ($input.val().length == 0) {
                    $input.val(mw.usability.getMsg('vector-simplesearch-search')).addClass('placeholder');
                }
            }).bind('focus', function () {
                if ($input.hasClass('placeholder')) {
                    $input.val('').removeClass('placeholder');
                }
            }).parents('form').bind('submit', function () {
                if ($input.hasClass('placeholder')) {
                    $input.val('').removeClass('placeholder');
                }
            });
            if ($input.val() == '') {
                $input.trigger('blur');
            }
        });
    }
    $j('#searchInput, #searchInput2, #powerSearchText, #searchText').suggestions({
        fetch: function (query) {
            var $this = $j(this);
            var request = $j.ajax({
                url: wgScriptPath + '/api.php',
                data: {
                    'action': 'opensearch',
                    'search': query,
                    'namespace': 0,
                    'suggest': ''
                },
                dataType: 'json',
                success: function (data) {
                    if (data && 1 in data) {
                        $this.suggestions('suggestions', data[1]);
                    }
                }
            });
            $j(this).data('request', request);
        },
        cancel: function () {
            var request = $j(this).data('request');
            if (request && typeof request.abort == 'function') {
                request.abort();
                $j(this).removeData('request');
            }
        },
        result: {
            select: function ($textbox) {
                $textbox.closest('form').submit();
            }
        },
        delay: 120,
        positionFromLeft: $j('body').is('.rtl'),
        highlightInput: true
    }).bind('paste cut', function (e) {
        $j(this).trigger('keypress');
    });
    $j('#searchInput').suggestions({
        result: {
            select: function ($textbox) {
                $textbox.closest('form').submit();
            }
        },
        special: {
            render: function (query) {
                if ($j(this).children().size() == 0) {
                    $j(this).show()
                    $label = $j('<div />').addClass('special-label').text(mw.usability.getMsg('vector-simplesearch-containing')).appendTo($j(this));
                    $query = $j('<div />').addClass('special-query').text(query).appendTo($j(this));
                    $query.autoEllipsis();
                } else {
                    $j(this).find('.special-query').empty().text(query).autoEllipsis();
                }
            },
            select: function ($textbox) {
                $textbox.closest('form').append($j('<input />').attr({
                    'type': 'hidden',
                    'name': 'fulltext',
                    'value': 1
                }));
                $textbox.closest('form').submit();
            }
        },
        $region: $j('#simpleSearch')
    });
});
