Война в Украине

Все мы знаем, какой пиздец сейчас происходит с Украиной и одной известной вам страной-победительницей-фашизма. Если вы хотите почитать об этом, помочь актуализировать информацию или высказать свое мнение — можете сделать это в статье Война в Украине и в обсуждении.

MediaWiki:Common.js

Материал из Urbanculture
Версия от 15:05, 21 февраля 2012; Munhgauzen (обсуждение | вклад) (Отмена правки 2867 участника Munhgauzen (обсуждение))

Перейти к: навигация, поиск

Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
  • Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
  • Opera: Выберите очистку кэша в меню Инструменты → Настройки
/** Misc common defines ****/
 
/** Frame ***
function frame_resize(){
    document.getElementById('frame').width='100%';
    document.getElementById('frame').height=document.getElementById('frame').contentWindow.document.body.scrollHeight;
}
*/
 
/* Неоднократно нужные проверки: */
/*** _is_editpage - я на странице редактирования? */
/*** _is_editable - у меня есть права на правку текущей страницы? */
/*** _is_autoconfirmed  */
var _is_editpage = wgAction == 'edit' || wgAction == 'submit';
var _is_editable = (function isEditable() {
	var restrict = (typeof wgRestrictionEdit !== 'undefined'?wgRestrictionEdit:wgRestrictionCreate);
    if (restrict.length < 1) return true;
    if (!wgUserGroups) return false;
    for(var g=0; g<wgUserGroups.length; g++) if ($.inArray(wgUserGroups[g], restrict)!=-1) return true;
    return false;
})();
var _is_autoconfirmed = wgUserGroups && ($.inArray('autoconfirmed', wgUserGroups) != -1);
var f5s=('localStorage' in window) && window['localStorage']!==null ? window['localStorage'] : false;
/** /Misc common defines ****/
 
 
/** Processing queue ****/
 
/**** Queue.addOnce(function(){}, condition = true) - adds function to run once on page load */
/**** Queue.addEachFragment(function(scope){}, condtion = true) - adds function to run on page load AND on each AJAX loaded fragment */
/****     Function must take a single parameter - currently processed fragment */
/**** Both functions take optional second parameter - if false, function won't be run on current page */
/**** Queue.runOnce - self-descriptive, shouldn't be run directly */
/**** Queue.runEachFragment(scope) - scope can be an html element or array of elements */
 
var Queue = {
    _once: [],
    _each: [],
    addOnce: function(f, pre) { if (pre !== false) this._once.push(f); return this; },
    addEachFragment: function(f, pre) { if (pre !== false) this._each.push(f); return this; },
 
    runOnce: function() {
        $.each(this._once, function(i, f) { f() })
        return this;
    },
    runEachFragment: function(sc) {
        var que = this._each, sc = sc || document;
 
        $(sc).each(function(x, e) { $.each(que, function(i, f) { f(e) }) });
        return this;
    }
};
 
addOnloadHook(function() { Queue.runOnce().runEachFragment(document); })
/** /Processing queue ****/
 
/** Collapsible tables ****/
/*  Description: Allows tables to be collapsed, showing only the header. */
/* Authors: rewrite by [[User:Tachikoma]] based on [[Wikipedia:NavFrame]] */
 
// Используется в коллапсерах
var autoCollapse = 2;
var collapseCaption = "скрыть";
var expandCaption = "показать";
 
function createTableCollapsers(scope) {
 
    function collapseTable(tbl) {
        var rows = $('tr', tbl).not('tr:first')
        var btn = $('a.collapselink', tbl)
 
        if (btn.text() == collapseCaption) {
            rows.hide(); btn.text(expandCaption)
        } else {
            rows.show(); btn.text(collapseCaption)
        }
    }
 
    var autocollapse_count = 0;
    $('table.collapsible', scope).each(function(i, e) {
        var header = $('tr th:first', e)
        if (!header.size()) return;
 
        autocollapse_count++;
 
        var collapselink = $('<a href="#" class="collapselink"/>').text(collapseCaption)
        collapselink.click(function(ev) { ev.preventDefault(); collapseTable(e) })
 
        var collapsebutton = $('<span style="float:right; text-align:right; width:6em; font-weight:normal">[<a></a>]</span>')
        $('a', collapsebutton).replaceWith(collapselink)
 
        header.prepend(collapsebutton)
 
        if ($(e).hasClass('collapsed') || ( autocollapse_count >= autoCollapse && $(e).hasClass('autocollapsible'))) collapseTable(e)
    });
};
 
Queue.addEachFragment( createTableCollapsers );
 
/** /Collapsible tables ****/
 
 
/** Dynamic Navigation Bars (experimental) *************************************
  *
  *  Description: See [[Wikipedia:NavFrame]].
  * Authors: rewrite by [[User:Tachikoma]] based on [[Wikipedia:NavFrame]]
  */
 
  function createHiderButtons(scope) {
      // set up the words in your language
      var NavigationBarHide = '[' + collapseCaption + ']';
      var NavigationBarShow = '[' + expandCaption + ']';
 
    $('div.NavFrame', scope).each(function(i, e) {
        var _ = $(this), head = _.children('.NavHead')
 
        if(!head.size()) return;
 
        var shown = true;
        var NavToggle = $('<a href="#"></a>').text(NavigationBarHide)
 
        function toggle() {
            shown = !shown;
            if(shown) {
                _.children('.NavContent').show(); _.children('.NavPic').show(); NavToggle.text(NavigationBarHide)
            } else {
                _.children('.NavContent').hide(); _.children('.NavPic').hide(); NavToggle.text(NavigationBarShow)
            };
        }
 
        NavToggle.click(function(ev) { ev.preventDefault(); toggle(); })
        head.append(NavToggle);
 
        if($(this).hasClass('NavHideByDefault')) toggle();
    })
  }
 
Queue.addEachFragment( createHiderButtons );
 
/** /Dynamic Navigation Bars ****/
 
 
/** NSFW Gallery Items ****/
/* Description: Hides images with |NSFW in description from galleries */
/* Authors: [[User:Anotubus]], [[User:Obvious]] */
 
function processNSFWGalleryItems(scope) {
    $('div.gallerytext', scope).each(function(i, el) {
        var descP = $('p:first', el)
        if (!descP.size()) return;
 
        var desc = descP.html()
        if (desc.match(/(?:\|NSFW|NSFW\||^NSFW\s$)/i)) {
            descP.html(desc.replace(/(.*)(?:\|NSFW|NSFW\||^NSFW\s$)(.*)/i,'$1$2'));
            var NSFWFrame = $(el).parent().find('div:first')
            NSFWFrame.children().css('visibility', 'hidden')
            NSFWFrame.css({'background':'url(/skins/common/images/nsfw.png) no-repeat center center', 'cursor':'pointer'})
            NSFWFrame.click(function(e) {
                NSFWFrame.css({'background':'none', 'cursor':'default'})
                NSFWFrame.children().css('visibility', 'visible')
            })
        }
    })
};
 
Queue.addEachFragment(processNSFWGalleryItems);
 
/** /NSFW Gallery Items ****/
 
 
/** 0sectionedit ****/
function Sect0Edit(){
  var editlink = $("#ca-edit a")
  if (!editlink.size()) return;
  var spansect0span = $('<span class="editsection">[<a>править</a>]</span>')
  $('a', spansect0span).attr('href', editlink.attr('href')+"&section=0")
  $(".firstHeading").append(spansect0span)
};
 
Queue.addOnce(Sect0Edit, wgIsArticle == true && skin!='impetus')
/** /0sectionedit ****/
 
/** Morph LM Edition *************************************
  *
  *  Description: слайдер скрытого контента
  *  Stolen^W Made by:  hikki-zadrot, Tachikoma, Anotubus
  */
 
function createMorphObjects(scope) {
    $('.morphcontainer', scope).each(function() {
        var _this = this, all = $('*', this)
 
        var containers = $('* .morphcontainer', this);
        containers.each(function() { all = all.not($('*', this)) })
 
        var morphlinks = all.filter('.morphlink')
        var morphcontents = all.filter('.morphcontent')
        var morphlink_hilight = $(_this).children('.morphlink_hilight').size()? $(_this).children('.morphlink_hilight').eq(0).attr('style'):'color:blue; text-decoration:underline; cursor: pointer;',
            morphlink_default = $(_this).children('.morphlink_default').size()? $(_this).children('.morphlink_default').eq(0).attr('style'):'color:blue; cursor: pointer;',
            selmethod = $(_this).hasClass('hover') ? 'mouseover' : 'click',
            currentsel = 0;
        $(morphcontents).hide();
        $(_this).children('.morphlink_hilight, .morphlink_default').remove();
        $(morphlinks).attr('style', morphlink_default).each(function(i, e) {
            var assocmorphcontents = $('');
            if ($(_this).hasClass('manualsort')) {
                var morphlinkers = $(e).attr('class').replace(/(.*)morphlink(.*)/, '$1$2').match(/morph\S+/g);
                for (x in morphlinkers)
                assocmorphcontents = $(assocmorphcontents).add($(morphcontents).filter('.' + morphlinkers[x]));
            } else {
                assocmorphcontents = $(assocmorphcontents).add($(morphcontents).eq(i));
            }
            $(e).bind(selmethod, function() {
                $(morphlinks).attr('style', morphlink_default);
                $(e).attr('style', morphlink_hilight);
                $(morphcontents).hide();
                $(assocmorphcontents).show();
                currentsel = i;
            });
        });
        all.filter('.morphprev, .morphnext').click(function() {
            var totrigger = $(this).hasClass('morphprev') ? (currentsel - 1) : ((currentsel + 1));
            if (totrigger < 0) totrigger = morphlinks.size() - 1;
            if (totrigger > morphlinks.size() - 1) totrigger = 0;
            $(morphlinks).eq(totrigger).triggerHandler(selmethod);
        });
        $(morphlinks).eq(currentsel).triggerHandler(selmethod);
    });
}
 
Queue.addEachFragment(createMorphObjects);
 
/** /Morph LM Edition ****/
 
/** Tabbed Edittools **************************************/
 
(function() {
   $('#toolbar').before($('.mw-editTools'));
   $('ul.tabs').delegate('li:not(.current)', 'click', function() {
     $(this).addClass('current').siblings().removeClass('current')
       .parents('div.section').find('div.box').hide().eq($(this).index()).fadeIn(150)
   })
   $('#close-all').click(function() {
	   $('div.box').hide();
	   $('ul.tabs li.current').removeClass('current');
   })
 
   $('.subchar').hide()
   $('.subchar').before('<span class="openchar">+</span>')
   $('.openchar').click(function() {
      $('.openchar').show()
      $(this).hide()
      $('.subchar').hide()
      $(this).next('.subchar').fadeIn()
   });
})();
 
/** /Tabbed Edittools ****/
 
/** Ref tooltips******************************************
  *
  *  Description: Replace references with JQuery-based tooltips
  *  Made by:  Tachikoma
  */
 
Queue.addOnce(function() {
    $(window).click(function(e) {
        if (!($(e.target).hasClass('areference') || $(e.target).parents().andSelf().hasClass('tooltip'))) {
            $('.tooltip').hide(250); $('.curreference').removeClass('curreference')
        }
    })
}).addEachFragment(function(scope) {
    var refs = $('ol.references', scope)
    if (!refs.size()) return;
    refs.before($('<a href="#">[показать примечания]</a>').click(function(e) { e.preventDefault(); refs.toggle() } )).hide()
    $('.reference a', scope).click(function(e) {
        e.preventDefault();
        var x = $(this), iscurrent = x.hasClass('curreference'), i = $('.tooltip').hide(250)
        $('.curreference').removeClass('curreference');
        if (iscurrent) return;
 
        var par = x.parent(), o = par.offset(), l = o.left, t = o.top+13
        var b = $('body'), mh = b.height(), mw = b.width()
        var c=$(x.attr('href'), refs).clone().find('a:first').remove().end().html()
 
        x.addClass('areference').addClass('curreference')
        if (!i.size()) i = $('<div/>').addClass('tooltip')
        i.appendTo(b).queue(function() {
            i.empty().append(c).css({ 'left': l-((l+i.width() >= mw) && i.width()), 'top': t-((t+i.height() >= mh) && (i.height()+26)) }).dequeue()
        }).show(250)
    })
})
/** /Ref tooltips****************************************/
 
 
/** Linkchecker **********************************************************/
 
function linkchecker(scope) {
    $('.linkchecker', scope).each(function(i, e) {
        var lc_if = $(".linkcheckerif a", this)
        var lc_then = $(".linkcheckerthen", this)
        var lc_else = $(".linkcheckerelse", this)
 
        if (lc_if.size() && lc_then.size()) {
            if (lc_if.hasClass('new')) lc_then.hide(); else lc_else.hide();
            lc_if.parent().hide()
        } else $(this).hide()
    })
};
 
Queue.addEachFragment(linkchecker);
/** /Linkchecker ****/
 
 
/** ShortDiffURL ****/
function shortdiffurl() {
	if ($("#ca-history").size() > 0 ){
		$("#ca-history").after('<li><a href="'+location.href.replace(/^(.+\?).*&?(diff=(?:\d+|prev|next|curr)).*?(&oldid=\d+)?.*$/,"$1$2$3")+'" title="Короткая ссылка на дифф">url</a></li>');
	}
};
 
Queue.addOnce(shortdiffurl, location.href.indexOf("diff=") != -1)
/** /ShortDiffURL ****/
 
 
/** Needed page **/
Queue.addOnce(function() {
      $('.mw-redirect').addClass('neededpagerdrcts');
      $('ul').addClass('neededpagelist');
}, wgPageName == 'Urbanculture:R')
/** /Needed page **/
 
/** Wikificator  ************************************* */
if (wgAction == "edit" || wgAction == "submit" || wgPageName == "Special:Upload") //scripts specific to editing pages
{
    importScriptURI("/skins/common/wikificator.js");
}
 
function wikification() {
    $('<button id="Wikifybutton" onclick="Wikify();" type="button">Викифицировать</button>').insertBefore($('#wpSave'));
    if(wgNamespaceNumber==-1 || wgNamespaceNumber==102) {$('#Wikifybutton').attr('disabled','disabled');}
    $('#editpage-copywarn').insertAfter('.editOptions');
}
Queue.addOnce(wikification);
/** /Wikificator  ************************************* */
 
 
/** Image Categorizer  ************************************* */
/** Author: Anotubus   */
if ( (wgCanonicalNamespace == 'File' || wgNamespaceNumber == 6) && _is_autoconfirmed && _is_editable ) importScriptURI("/skins/common/imgcat.js");
/** Image Categorizer  ************************************* */
 
 
/** Section menus ****************************************** */
/* Authors: [[User:Tachikoma]], [[User:T_kns]], [[User:Мопец Ципельман]] */
 
// SectionToolbar.addButton(function(elt, out) { var button = $(elt).find('something'); $(out).doAnythingWith(button); })
// SectionToolbar.appendButton(function(elt) { var button = $(elt).find('something'); return button; }
var SectionToolbar = {
    _buttons: [],
    addButton: function(fn) { this._buttons.push(fn); return this },
    appendButton: function(fn) { this._buttons.push(function(elt, out) { $(out).append(fn(elt)) }); return this },
    _run: function(elt, out) { var btn = this._buttons; for(var i in btn) btn[i](elt, out) }
}
 
function addSectionMenus() {
    if (!wgIsArticle) return;
 
    var editimg = '<img src="/skins/Impetus/pencil.png" width="16" height="16" alt="Править" title="Править"/>'
    var viewimg = '<img src="/skins/Impetus/magnifier.png" width="16" height="16" alt="Просмотр" title="Просмотр"/>'
 
    var new_header = $('<h1 class="firstHeading" id="firstHeading"></h1>')
    var headline = $('<span></span>').text($('#firstHeading').text()).appendTo(new_header)
    var toolbar = $('<div class="showmenu"/>').appendTo(new_header).hide()
    var toolsline = $('<div class="toolsline"/>')
    var headtext = $('<span class="headtext"/>').html(headline.html())
    var
        div = $('<div class="redact"/>'),
        link = $('<a/>').attr('href', wgScript+'?'+$.param({ title: wgPageName, action: 'edit', section: 0 }))
 
    $('.firstHeading').replaceWith(new_header);
    toolbar.append(toolsline.append(headtext).append(div.append(link.append(_is_editable ? editimg : viewimg))))
    $(toolbar).css({'position': 'fixed', 'left':0, 'top':0})
    $(new_header).hover(
         function() {
             var pos = headline.offset();
             toolbar.show().offset({left:pos.left-6, top:pos.top-6})
         }, function() { toolbar.hide() })
 
    $(':header:has(.mw-headline)').each(function(i, e) {
        var new_header = $(e).clone(true);
        new_header.children().remove(':not(.mw-headline)')
 
        var headline = $('.mw-headline', new_header)
        var toolbar = $('<div class="showmenu"/>').appendTo(new_header).hide()
        var toolsline = $('<div class="toolsline"/>')
        var headtext = $('<span class="headtext"/>').html(headline.html())
 
        toolsline.append(headtext)
 
        var original_link = $('.editsection a',e)
        if (original_link.size()) {
            var
                div = $('<div class="redact"/>'),
                link = $('<a/>').attr('href', $('.editsection a',e).attr('href'))
            toolsline.append(div.append(link.append(original_link.hasClass('viewlink')? viewimg : editimg)))
        }
        toolbar.append(toolsline)
 
        var buttons = $('<div class="buttons-line"/>').appendTo(toolsline)
        SectionToolbar._run(e, toolsline);
 
        $(e).replaceWith(new_header);
 
        toolbar.css({'position': 'fixed', 'left':0, 'top':0}).attr('rel','noClick');
 
        var timer;
        var interval;
        $(new_header).hover(
            function() {
                if(toolbar.attr('rel') == 'hoverout') { clearInterval(interval); toolbar.attr('rel','hoverin');}
                timer = setTimeout(function(){ var pos = headline.offset(); toolbar.show().offset({left:pos.left-6, top:pos.top-6}); }, 300);
            },
            function() {
                clearTimeout(timer);
                toolbar.attr('rel','hoverout');
                interval = setInterval(function(){ if(toolbar.attr('rel') == 'hoverout') {clearInterval(interval); toolbar.hide();} else {toolbar.attr('rel','hoverout');}}, 1000);
            }
         )
        });
    $(window).scroll(function(){$('.showmenu').hide()})
}
 
SectionToolbar.addButton(function(elt, out) {
    var
        div = $('<div class="shorturl" />'),
        input = $('<input class="shortlink" type="text" value="http://tinyurl.com/..." readonly="readonly" />').css('color', '#bbb').mousedown(function(e) {if(e.which == 3) {$(this).parent().parent().parent('.showmenu').attr('rel','rightClick');}}).hide(),
        url_out = $('<a href="#"><img src="/skins/Impetus/url_out.png" width="16" height="16" alt="TinyURL" title="TinyURL"></a>'),
        url_in = $('<a href="#"><img src="/skins/Impetus/url_in.png" width="16" height="16" alt="Внутренняя ссылка" title="Внутренняя ссылка"></a>')
 
 
    function gentlyEncode(string) {
        return ( encodeURIComponent
        ? encodeURIComponent(string).replace(/%20(\D)?/g, "+$1").replace(/'/g, escape("'"))
        : escape(string).replace(/\+/g, "%2B").replace(/%20/g, "+") );
    }
    var href = /^([^#]+)#?.*$/.exec(location.href)[1]+'#'+$('.mw-headline',elt).attr('id')
 
    function getTinyLink(evt) {
        evt.preventDefault()
 
        $.ajax({
            url:"http://json-tinyurl.appspot.com/?callback=?&url=" + gentlyEncode(href),
            dataType: 'json',
            success: function(data) {
                var tinyurl = data.tinyurl;
                input.val(tinyurl).css('color', 'black').show().select()
                url_out.click(function(e) { e.preventDefault(); input.val(tinyurl).show().select() })
                url_out.attr('href', tinyurl)
            },
            error: function() {
                url_out.one('click', getTinyLink); input.val("http://tinyurl.com/... :(((").show()
            }
        })
    }
 
    url_out.one('click', getTinyLink)
 
    var Url={decode:function(string){return this._utf8_decode(unescape(string));},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}return string;}}
    url_in.click(function(e) {
        e.preventDefault()
        input.val('[['+wgPageName.replace(/_/g, ' ')+'#'+Url.decode( $('.mw-headline',elt).attr('id').replace(/\.([0-9A-F]{2})/g, '%$1').replace(/_/g, ' ') )+']]').css('color', 'black').show().select()
    })
    url_in.attr('href', href)
 
    input.select().focus(function(e){ this.select() })
    $('.buttons-line', out).append(url_out).append(url_in)
    $(out).append(div.append(input))
})
 
Queue.addOnce(addSectionMenus, skin=='impetus');
/** /Section menus ***************************************** */
 
 
/** Autochange skin ***************************************** */
function addcurskintolinks() {
	$('a:not([href*="useskin"])').each(function(i){
		var hd = /^([^\#]*)(\#?.*)$/.exec($(this).attr('href'));
		var h = hd[1];
		if (/^(?:\/|http:\/\/urbanculture\.in)/.test(h)) {
			h += (h.indexOf("?") == -1)?'?':'&';
			h += 'useskin=' + skin.toLowerCase();
			$(this).attr('href',h+hd[2]);
		}
	});
}
 
Queue.addOnce(addcurskintolinks, location.href.indexOf("useskin=") > 0)
/** /Autochange skin ***************************************** */
 
 
/** collapsibledivs *****/
;(function(){
    function fromStorage() {
        var items = {};
        var saved = f5s && typeof localStorage.clpsd !== 'undefined' && localStorage.clpsd != null && localStorage.clpsd;
        if (saved) {
            if (saved.indexOf(':')!=-1) { saved = saved.replace(/(.+?):\d+/g, '$1'); localStorage.clpsd = saved; }
            $.each(saved.split('|'), function(i, e) { items[e] = true })
        }
        return items;
    }
    function toStorage(items) {
        var t = [];
        $.each(items, function(i, e) { if (e) t.push(i); })
 
        t = t.join('|').replace(/(?:^[\s\|]*|\|{2,}|[\s\|]*$)/g,'')
        if (t!='') localStorage.clpsd = t; else delete localStorage.clpsd;
    }
 
    var saved = fromStorage();
 
 
    function togglest(th) {
        saved[th.attr('id')] = !(saved[th.attr('id')] === true);
        th.children('.pBody').slideToggle();
        th.children('h5').attr('class',(saved[th.attr('id')]===true)?'portlet-title-minimized':'portlet-title-maximized');
        toStorage(saved);
    }
 
    function maxiorminiicon(cur) {
        return (cur)?'/skins/common/images/Maximize.png':'/skins/common/images/Minimize.png';
    }
 
    function maxiorminiclass(cur) {
        return (cur)?'maximinibutton maximinibutton-minimized':'maximinibutton maximinibutton-maximized';
    }
 
    function minimizediv(o, tdv, save) {
        tdv.slideToggle('fast');
        var itval = o.attr('src').indexOf('Maximize')==-1;
        o.attr('src',maxiorminiicon(itval));
        o.attr('class',maxiorminiclass(itval));
 
        if (save && f5s) {
            var id1 = tdv.attr('id').replace(/\:/g,' ');
            saved[id1] = itval;
 
            toStorage(saved)
        }
    }
 
    Queue.addOnce(function() {
        $('div.collapsiblediv').each(function(i) {
            var _this = $(this), id = _this.attr('id');
            var save = !(id === undefined || id.length == 0)
            if(save) id = id.replace(/\:/g,' ');
            var itval = save && saved && saved[id] === true;
 
            var img = $('<img alt="_"></img>').attr('src', maxiorminiicon(itval)).attr('class',maxiorminiclass(itval)).click(function(){minimizediv(img, _this, save); return false;})
            $(this).before($('<div class="maximinipanel"></div>').append(img));
 
            if (itval) $(this).hide();
        });
    })
 
    Queue.addOnce(function() {
        $('div.portlet').each(function() {
            if($.inArray($(this).attr('id'),['p-categories','p-navigation','p-tb','p-lang','p-Autors']) != -1) {
                var _this = $(this);
                $('h5',this).css('cursor','pointer').click(function(){togglest(_this);return false;});
                if(saved[$(this).attr('id')] === true) {$('.pBody',this).hide();$('h5',this).attr('class','portlet-title-minimized');} else {$('h5',this).attr('class','portlet-title-maximized');}
            }
        });
    },skin != 'impetusmobile');
 
})()
/** /collapsibledivs ****/
 
/* empty pagename ****/
Queue.addOnce(function() {
    $('#bodySearch').submit(function(e) {
        var wrap = $(this).children(".bodySearchWrap")
        if(/^\s*$/.test(wrap.children('#bodySearchInput').val())) {
            if(wrap.children('.pagenameneeded').size() == 0) {
                wrap.append($('<p class="pagenameneeded">Введите имя статьи</p>').delay(1500).fadeOut('slow',function() {$(this).remove();}));
            }
            return false;
        }
    });
}, wgPageName == "Urbanculture:Новая_статья");
 
/* /empty pagename ****/
 
/* b-yauser ****/
Queue.addEachFragment(function(sc) { $('.b-yauser a', sc).each(function(i) { $(this).html($(this).html().replace(/^([^<])/,'<b>$1</b>')); }); });
/* /b-yauser ****/
 
 
/** Ajaxed ****
  *
  *  Description: динамическая подгрузка произвольных страниц
  *  Authors: [[User:Tachikoma]], [[User:T_kns]]
  */
Queue.addEachFragment(function(scope) {
    var placeholder = $('<div style="text-align:center;"><img src="/skins/common/images/ajax-loader.gif" alt="l" /></div>')
 
    $(".ajaxed", scope).each(function(i, links){
        var contcl = /\bajaxtarget(\S+?)(?:\s|$)/.exec(this.className)
        if(!contcl) return;
        contcl[1] = contcl[1].replace(/(:|\.|\\|\/)/g,'\\$1');
 
        var lastshown, add_hider = false;
        if($(this).hasClass('ajax_addhider')) { add_hider = $(".ajax_addhider.ajaxhide"+contcl[1], scope).eq(0); if(!add_hider.length) add_hider = false; }
        var target = $(".ajaxcont"+contcl[1], scope).eq(0)
 
        function show(cont, tgt) {
            if(lastshown == cont[0]) { if(!tgt.is(':visible')) tgt.show(); return };
 
            lastshown = cont[0]
 
            var d = cont.data('remote');
            if(!d) return;
 
            tgt.empty().append( d.clone() )
            if(add_hider)
                tgt.append( $('<div style="clear:both;"/>').append( add_hider.clone().click(function(e) { e.preventDefault(); target.toggle(); if ( window.pageYOffset > ($(links).offset().top+$(links).height())) $('html,body').animate({scrollTop:$(links).offset().top}, 350); })) );
            Queue.runEachFragment(tgt);
            tgt.show()
        }
 
        $("a:not(.external):not(.new)", this).addClass('ajaxlink').one('click', function(e) {
			$('.ajaxinclude'+contcl[1]).css("display","block");
            e.preventDefault()
 
            var $this = $(this)
 
            $this.data('remote', placeholder.clone())
            target.empty().append(placeholder.clone());
 
            $.ajax({
                url:wgScriptPath+'/api.php'+'?action=parse&format=json&redirects&prop=text&page='+encodeURIComponent($(this).attr('title')),
                dataType: 'json',
                success: function(data) {
                    var d = $(data.parse.text["*"]).wrap('<p/>'), inc;
                    inc = $('.ajaxinclude'+contcl[1], d); inc = inc.length ? inc : $('.ajaxinclude', d)
                    if(inc.length) d = inc;
                    $this.data('remote', d)
                    show($this, target)
                }
            })
            $this.click(function(e){ e.preventDefault(); show($this, target); })
        })
        $(".ajaxhide"+contcl[1], scope).click(function(e) { e.preventDefault(); target.toggle(); })
    })
});
/** /Ajaxed ****/
 
/* prettyPhoto ****/
 
Queue.addOnce(function() {
        var wpisid = (wgVersion=='1.17')?'#wpImageSize':'#mw-input-thumbsize';
        $(wpisid).parent().parent().parent().append('<tr class="mw-htmlform-field-HTMLSelectField"><td class="mw-label"></td><td class="mw-input"><input type="checkbox" id="mw-gallery-slide-show">&nbsp;<label for="mw-gallery-slide-show">Использовать улучшенную галерею и предпросмотр миниатюр (требуется JavaScript)</label></td></tr>');
 
         if (localStorage.getItem('gallery_slideshow') != 'false') { $('#mw-gallery-slide-show').prop("checked", true); };
 
        var wpsbtnid = (wgVersion=='1.17')?'input.btnSavePrefs':'#prefcontrol';
 
        $(wpsbtnid).click( function () {
            if ( $('#mw-gallery-slide-show:checked').size() > 0 ) { localStorage.setItem('gallery_slideshow', 'true'); }
              else { localStorage.setItem('gallery_slideshow', 'false'); };
        });
}, f5s && wgCanonicalSpecialPageName == "Preferences");
 
function gallerySlideshow(scope) {
    $.ajax({
        url:'/skins/common/jquery.prettyPhoto.js',
        dataType: 'script',
        cache:true,
        success: function() {
            var usecoralcdn = false;
            var imagepath = 'http://urbanculture.in'+(usecoralcdn?'.nyud.net':'')+'/images/';
 
            $('a.internal[href^="/images/"]', scope).each(function() {
                if(/\.(?:jpe?g|png|gif|svg)$/i.test($(this).attr('href'))) {
                    $(this)
                        .attr({'rel':'prettyPhoto','alt':$(this).attr('href')})
                        .addClass('mediafile')
                        .data('htmlDesc',(/^(?:Media|Медиа):/i.test($(this).text()) || $(this).text() == $(this).attr('title'))?'':$(this).html());
                }
            });
 
            $('div.thumbinner > a.image > img[src^="/images/"]', scope).each(function() {
                var src;
 
                if($(this).parent('a').hasClass('image') && (src=/^\/images(?:\/thumb)?\/(.\/..\/[^\/]+)/.exec($(this).attr('src'))[1])) {
                    var descr;
                    title = ((descr=$(this).parent().parent().children('div.thumbcaption')).size()>0?descr.text().replace(/\s*(?:\|NSFW|NSFW\||^NSFW\s$|\[\d+\])\s*/g,''):'');
 
                    desc = descr.clone();
                    desc.children('div.magnify,sup.reference').remove();
 
                    $(this).parent('a')
                        .data('htmlDesc',desc.html())
                        .attr({
                            'title':title,
                            'alt':imagepath+src,
                            'rel':'prettyPhoto'
                        });
                }
            });
 
            $('table.gallery, div.morphfileimages', scope).each(function(galnum) {
                $('a.image > img[src^="/images/"]',this).each(function() {
                    var src;
                    var descr;
                    var title;
 
                    if($(this).parent('a').hasClass('image')
                            && (src=/^\/images(?:\/thumb)?\/(.\/..\/[^\/]+)/.exec($(this).attr('src'))[1])
                            && (title = ((descr =$(this).closest('div.gallerybox, div.morphcontent').children('div.gallerytext')).children('p').size()>0?descr.children('p').text().replace(/\s*(?:\|NSFW|NSFW\||^NSFW\s$|\[\d+\])\s*/g,''):''))!==false) {
 
                        desc = descr.children('p').clone();
                        desc.children('sup.reference').remove();
 
                        descr.prepend('<div class="magnify"><a href="'+$(this).parent('a').attr('href')+'" class="internal" title="Увеличить"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt=""></a></div>')
 
                        $(this).parent('a')
                            .data('htmlDesc',desc.html())
                            .attr({
                                'title':title,
                                'alt':imagepath+src,
                                'rel':'prettyPhoto[gallery_'+galnum+']'
                            });
                    }
                });
            });
 
            $("a[rel^='prettyPhoto']", scope).prettyPhoto({
                modal:false,
                deeplinking:false,
                animation_speed: 'fast',
                opacity:0,
                gallery_markup:'',
                social_tools:false,
                ie6_fallback: false,
                show_title:false,
 
                changepicturecallback: function(){
                    var desc = (arguments[1]=='prettyPhoto')?arguments[0].data('htmlDesc'):$('a.image[rel="'+arguments[1].replace(/([\]\[])/g,'\\$1')+'"]',scope).eq(arguments[3]).data('htmlDesc');
 
                    var fname = decodeURIComponent(/images\/.\/..\/(.+)$/.exec($('#fullResImage').attr('src'))[1])
                    var edesc = $('<div class="imagepagelink"/>')
                                    .append($('<a/>')
                                                .attr('href','/Файл:'+fname)
                                                .text(/^(.{0,30})/
                                                        .exec(fname)[1]
                                                    //  .replace(/\.([^\.]+)$/,'')
                                                        .replace(/_/g,' ')));
 
                    $('.pp_description')
                        .html($('.pp_description').is(':hidden')?'':desc)
                        .append(edesc).show();
 
                    if($('#fullResImage').width() < 145) {
                        $('.pp_pic_holder,.pp_default,.ppt,.pp_hoverContainer,.pp_details')
                            .css('width','+=200'); // jQuery 1.6
                    }
                }
            });
        }
    });
}
 
Queue.addEachFragment( gallerySlideshow, f5s && localStorage.getItem('gallery_slideshow') != 'false' );
/* /prettyPhoto ****/
 
/* By ****/
Queue.addOnce(function() {
    $('body').addClass('ns-talk');
},wgPageName == "Urbanculture:Вниманию_участников");
/* /By ****/
 
/* Spoilers ****/
Queue.addEachFragment(function(scope) {
    $('.spoiler',scope).click(function() {
        $(this).toggleClass('spoilered');
    });
});
/* /Spoilers ****/
 
/* new gallerytemplate ****/
function newgallerytemplate(scope) {
    $('table.gallerytemplate table.gallery > tbody,table.gallerytemplate table.videogallery > tbody',scope).each(function() {
 
        var params = {
            'min_visible_rows':1,
            'max_visible_rows':2,
            'collapsible':true,
            'expand_caption':'Показать',
            'collapse_caption':'Скрыть',
            'rows_in_table':$('> tr',this).size(),
            'collapsible_rows':{}
        }
 
/*******************************************
*******************************************/
 
        if($(this).parent().parent('td').size() > 0
            && ($(this).parent().parent('td').attr('class') == 'gallerytemplate-preview'
                || $(this).parent().parent('td').attr('class') == 'gallerytemplate-content')) {
 
            var paramblock = $(this).parent().parent().parent().parent().children('tr[class="gallerytemplate-params"]');
 
            $('td',paramblock).each(function() {
                params[$(this).attr('title')] = $(this).text();
            });
 
            if(params['min_visible_rows'] < 1) {params['min_visible_rows'] = 1}
            if(params['collapsible'] == 'no'
                    || params['collapsible'] == 'false'
                    || params['collapsible'] == 0) {
                params['collapsible'] = false;
            } else {
                params['collapsible'] = true;
            }
 
        } else {
/************************/
            return true;
/************************/
        }
 
/*******************************************
*******************************************/
    if(params['rows_in_table'] < params['max_visible_rows']
            || params['rows_in_table'] <= params['min_visible_rows']
/*            || params['min_visible_rows'] > params['max_visible_rows'] */
            || params['collapsible'] == false) {
        return true;
    }
/*******************************************
*******************************************/
 
        var expandgal = $('<th/>')
            .attr({'colspan':$('tr:first > td',this).size(),'class':'galpreview-showhidebutton'})
            .append($('<span/>').text(params['expand_caption']))
            .click(function() {
 
                if($('span',this).text() == params['expand_caption']) {
                    params['collapsible_rows'].show();
                    $('span',this).text(params['collapse_caption'])
                } else {
                    params['collapsible_rows'].hide();
                    $('span',this).text(params['expand_caption'])
                }
            });
 
        $('> tr',this)
            .slice(0,params['min_visible_rows'])
            .attr('class','galpreview');
 
        $('tr.galpreview:last',this).after($('<tr class="galpreview"/>').append(expandgal));
 
        params['collapsible_rows'] = $('> tr:not(.galpreview)',this);
 
        params['collapsible_rows'].hide();
 
    });
 
}
 
 
Queue.addEachFragment(newgallerytemplate);
 
/* /new gallerytemplate ****/
 
/*** Scroll menu ***/
 
var scrollmenu=false;
$(document).ready(function() {
	$(document).scroll(function () {
		if((scrollmenu==false) && ($(window).scrollTop()>112)){
			$(".editbox").css('position','fixed');
			$(".editbox").css('top','0');
			scrollmenu=true;
		}else if((scrollmenu==true) && ($(window).scrollTop()<113)){
			$(".editbox").css('position','absolute');
			$(".editbox").css('top','');
			scrollmenu=false;
		}
	});
});
 
/*** /Scroll menu ***/
 
/*** Resize textarea ***/
 
$(document).ready(function($){  
    $.fn.autoResize = function(options) {  
        var settings = $.extend({  
            onResize : function(){  
            },  
            animate : true,  
            animateDuration : 150,  
            animateCallback : function(){},  
            extraSpace : 20,  
            limit: 500  
        }, options);  
        this.filter('textarea').each(function(){ 
            var textarea = $(this).css({resize:'none','overflow-y':'auto'}), 
                origHeight = textarea.height(), 
                clone = (function(){ 
                    var props = ['height','width','lineHeight','textDecoration','letterSpacing'], 
                        propOb = {}; 
                    $.each(props, function(i, prop){ 
                        propOb[prop] = textarea.css(prop); 
                    }); 
                    return textarea.clone().removeAttr('id').removeAttr('name').css({ 
                        position: 'absolute', 
                        top: 0, 
                        left: -9999 
                    }).css(propOb).attr('tabIndex','-1').insertBefore(textarea); 
                })(), 
                lastScrollTop = null, 
                updateSize = function() { 
                    clone.height(0).val($(this).val()).scrollTop(10000); 
                    var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace, 
                        toChange = $(this).add(clone); 
                    if (lastScrollTop === scrollTop) { return; } 
                    lastScrollTop = scrollTop; 
                    if ( scrollTop >= settings.limit ) { 
                        $(this).css('overflow-y',''); 
                        return; 
                    } 
                    settings.onResize.call(this); 
                   settings.animate && textarea.css('display') === 'block' ? 
                        toChange.stop().animate({height:scrollTop}, settings.animateDuration, settings.animateCallback) 
                        : toChange.height(scrollTop); 
 
                }; 
            textarea 
                .unbind('.dynSiz') 
                .bind('keyup.dynSiz', updateSize) 
                .bind('keydown.dynSiz', updateSize) 
                .bind('change.dynSiz', updateSize); 
        }); 
        return this; 
    }; 
$(function(){ 
    $('textarea').autoResize({  
        extraSpace:0  
    });  
})  
}); 
 
/*** AddThis ***/
var addthis_config = {
 "ui_click":true,
 "data_track_clickback":true,
 services_custom:{
 name: "my.ya.ru",
 url: "http://my.ya.ru/posts_add_link.xml?URL={{URL}}&title={{TITLE}}&body=",
 icon: "/skins/Impetus/Ya.png"}
};
var addthis_share = {"url":"http://urbanculture.in"+"/"+encodeURIComponent(wgPageName),"title":wgTitle,templates:{twitter: "{{title}} {{url}} from @Urbanculture_ru"}};
 
/*** Title page ***/
$('#write-article a').click(function () {
  $(this).hide();
  $('#create-page-lay').fadeIn();
  $('#create-page-lay .createboxInput').focus();
	$("#create-page-lay .createboxInput").focusout(function () {
		if ($(this).val() == "") {
		$('#create-page-lay').hide(),
		$('#write-article a').fadeIn() }
	});
  return false;
});
 
/*** Blog page ***/
$('div.news.old').first().before("<div id='oldnews'></div>");
$('div.news.old').appendTo($('#oldnews'));
$('#oldnews').after("<div id='showarchive'><a id='show-link' href='#' class='showarchive'><span>Показать архив</span></a></div>");
$('#show-link').toggle( function() {
	$('#oldnews').fadeIn();
	$(this).html('<span>Скрыть архив</span>')
	.stop();
	}, function() {
	$('#oldnews').hide();
	$(this).html('<span>Показать архив</span>')
	.stop();
});