//  /*jshint undef:true */ /*global jQuery, mw */ (function(){ 'use strict';  var api = new mw.Api();  function el(tag, child, attr, events) { 	var key, node = document.createElement(tag);   	if (child) { 		if (typeof child !== 'object') 			child = [child]; 		for (var i = 0; i < child.length; ++i) { 			var ch = child[i]; 			if ((ch === void(null)) || (ch === null)) 				continue; 			else if (typeof ch !== 'object') 				ch = document.createTextNode(String(ch)); 			node.appendChild(ch); 		} 	}   	if (attr) for (key in attr) { 		node.setAttribute(key, String(attr[key])); 	}   	if (events) for (key in events) { 		node.addEventListener(key, events[key], false); 	}   	return node; }  function fmtDate(date) { 	// XXX: uses browser's time zone instead of preferences 	date = new Date(date);  	switch (mw.user.options.get('date')) { 	case 'dmy'     : return date.toLocaleTimeString() + ', ' + date.getDate() + ' ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getFullYear(); 	case 'mdy'     : return date.toLocaleTimeString() + ', ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getFullYear() + ', ' + date.getDate(); 	case 'ymd'     : return date.toLocaleTimeString() + ', ' + date.getFullYear() + ' ' + mw.language.months.genitive[date.getMonth()] + ' ' + date.getDate(); 	case 'default' : return date.toLocaleString(); 	case 'ISO 8601': return date.toISOString();  	} }  var wd2iw = { 	'metawiki': 'm' };  function buildList(user, callback) { 	var isAnon = mw.util.isIPv4Address(user) || mw.util.isIPv6Address(user);  	var rq = api.get({ 		action: 'query', 		list: 'blocks' + (isAnon ? '|globalblocks' : '|globalallusers'), 		 		// blocks 		bkip: isAnon ? user : void(window.warranty), 		bkusers: isAnon ? void(window.warranty) : user, 		bkprop: 'id|user|range|timestamp|expiry|by|reason|flags', 		bkdir: 'older', 		 		// globalblocks 		bgip: isAnon ? user : void(window.warranty), 		bgprop: isAnon ? 'id|address|range|timestamp|expiry|by|reason' : void(window.warranty), 		bgdir: isAnon ? 'older' : void(window.warranty), 		 		// globalallusers 		agufrom: !isAnon ? user : void(window.warranty), 		aguto: !isAnon ? user : void(window.warranty), 		agulimit: !isAnon ? 1 : void(window.warranty), 		aguprop: !isAnon ? 'lockinfo' : void(window.warranty) 	}); 	 	rq.then(function (result) { 		var list = el('ul'), item, i;  		if (result.query.globalallusers && result.query.globalallusers[0] && ('locked' in result.query.globalallusers[0])) { 			list.appendChild(el('li', [ 				"এই অ্যাকাউন্টটি বৈশ্বিকভাবে তালাবদ্ধ করা",  				" (", el('a', "বৈশ্বিকপ্রমাণী লগ", { href: mw.util.getUrl('m:Special:Log/globalauth', { page: 'User:' + user + '@global' }) }), ")।" 			])); 		} 		 		for (i = 0; i < result.query.blocks.length; ++i) { 			item = result.query.blocks[i]; 			list.appendChild(el('li', [ 				fmtDate(item.timestamp), 				': ', el('a', item.by, { href: mw.util.getUrl('User:' + item.by) }), 				" ", el('b', item.user), 				" কে বাধাদান করেছেন (", el('a', 'বাধাদান লগ', { href: mw.util.getUrl('Special:Log/block', { page: 'User:' + item.user }) }), "),", 				' যার মেয়াদ শেষ হওয়ার তারিখ ', el('b', item.expiry === 'infinity' ? 'কখনো না' : fmtDate(item.expiry)), 				item.reason && " (", item.reason, item.reason && ")", 			])); 		} 	 		if (result.query.globalblocks) 		for (i = 0; i < result.query.globalblocks.length; ++i) { 			item = result.query.globalblocks[i]; 			list.appendChild(el('li', [ 				fmtDate(item.timestamp), 				': ', el('a', item.by, { href: mw.util.getUrl(wd2iw[item.bywiki] + ':User:' + item.by) }), 				"  ", el('code', item.bywiki), 				" বৈশ্বিকভাবে বাধাপ্রাপ্ত ", el('b', item.address), 				" (", el('a', "gblblock log", { href: mw.util.getUrl(wd2iw[item.bywiki] + ':Special:Log/gblblock', { page: 'User:' + item.address }) }), "),", 				" expiring ", el('b', item.expiry === 'infinity' ? "never" : fmtDate(item.expiry)), 				item.reason && " (", item.reason, item.reason && ")", 			])); 		} 		 		callback(list); 	}); 	 	return rq; }  function makeBox(user, relTo) { 	if (!user) 		return; 	relTo = relTo || document.getElementById('mw-content-text');  	var afterList, box = el('div', [ 		el('p', [el('strong', user), ' বর্তমানে বাধাপ্রাপ্ত।']), 		afterList = el('small', [ 			el('a', "বাধাদান লগ"        , { href: mw.util.getUrl('Special:Log/block', { page: 'User:' + user }) }) 		]) 	], { 		'class': 'mw-warning-with-logexcerpt' 	});  	relTo.rq = buildList(user, function (list) { 		relTo.rq = null; 		if (!list.hasChildNodes()) 			return;  		box.insertBefore(list, afterList); 		relTo.parentNode.insertBefore(box, relTo); 	});  	return box; }  var user;  var wgNamespaceNumber = mw.config.get('wgNamespaceNumber'); var wgNamespaceIds = mw.config.get('wgNamespaceIds'); var wgTitle = mw.config.get('wgTitle');  if ((wgNamespaceNumber & ~1) === wgNamespaceIds.user) { 	makeBox(wgTitle.replace(/\/.*$/, )); } else if ((mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') || (mw.config.get('wgCanonicalSpecialPageName') === 'DeletedContributions')) { 	makeBox(wgTitle.indexOf('/') !== -1 ? wgTitle.replace(/^.*?\//, ) : mw.util.getParamValue('target')); } else if (mw.config.get('wgCanonicalSpecialPageName') === 'Log') { 	user = mw.util.getParamValue('user'); 	if (/^[^\/]+\/(block|delete)$/.test(wgTitle)) 		return; 	if (wgTitle.indexOf('/') !== -1) 		user = wgTitle.replace(/^.*\//, ''); 	makeBox(user); } else if (mw.config.get('wgCanonicalSpecialPageName') === 'Block') { 	var ipinput = document.getElementById('mw-bi-target'); 	var relTo = ipinput.form.getElementsByTagName('legend')[0].nextSibling; 	var warnnode = null;  	var refresh = function () { 		if (relTo.rq) 			relTo.rq.abort();  		if (warnnode && warnnode.parentNode) { 			warnnode.parentNode.removeChild(warnnode); 			warnnode = null; 		}  		if (!ipinput.value) 			return;  		warnnode = makeBox(ipinput.value, relTo); 	};  	var tmout; 	ipinput.addEventListener('input', function () { 		clearTimeout(tmout); 		tmout = setTimeout(refresh, 500); 	}, false); 	ipinput.addEventListener('change', function () { 		refresh(); 	}, false); 	refresh(); 	return; }  })();