मिडियाविकि:Gadget-twinklexfd.js

विकिपिडिया बठेइ

टिप्पणी सङ्ग्रह गरेपछि, परिवर्तन हेर्नको लागि तपाईंले आफ्नो ब्राउजरको क्याच बाईपास गर्नु पर्ने हुनसक्छ।

  • फायरफक्स / सफारीमा: Shift कुञ्जी थिची राखेर Reload क्लिक गर्नुपर्छ, वा Ctrl-F5 वा Ctrl-R दबाउनुहोस् (म्याकमा ⌘-R)
  • गुगल क्रोम: Ctrl-Shift-R कुञ्जी दबाउनुहोस् (म्याकमा ⌘-R)
  • ओपेरा: Tools → Preferences मा गएर क्याश हटाउनुहोस्
  • इन्टरनेट एक्सप्लोरर: Ctrl लाई थिची राखेर Refresh क्लिक गर्नुहोस् वा Ctrl-F5 थिच्नुहोस्
// <nowiki>


(function($) {


/*
 ****************************************
 *** twinklexfd.js: XFD module
 ****************************************
 * Mode of invocation:     Tab ("लेमेछ")
 * Active on:              Existing, non-special pages, except for file pages with no local (non-Commons) file which are not redirects
 */

Twinkle.xfd = function twinklexfd() {
	// Disable on:
	// * special pages
	// * non-existent pages
	// * files on Commons, whether there is a local page or not (unneeded local pages of files on Commons are eligible for CSD F2, or R4 if it's a redirect)
	if (mw.config.get('wgNamespaceNumber') < 0 || !mw.config.get('wgArticleId') || (mw.config.get('wgNamespaceNumber') === 6 && document.getElementById('mw-sharedupload'))) {
		return;
	}

	Twinkle.addPortletLink(Twinkle.xfd.callback, 'लेमेछ', 'tw-xfd', 'मेटाउने छलफल सुरु गर्नुहोस्');
};

Twinkle.xfd.num2order = function twinklexfdNum2order(num) {
	switch (num) {
		case 1: return '';
		case 2: return 'दोस्रो';
		case 3: return 'तेस्रो';
		default: return num + 'औं';
	}
};

Twinkle.xfd.currentRationale = null;

// error callback on Morebits.status.object
Twinkle.xfd.printRationale = function twinklexfdPrintRationale() {
	if (Twinkle.xfd.currentRationale) {
		Morebits.status.printUserText(Twinkle.xfd.currentRationale, 'तपाईँको मेटाउने तर्क तल दिइएको छ, जुन तपाईँ नयाँ लेमेछ सम्वादमा प्रतिलिपि-साभार गर्न सक्नुहुन्छ यदि तपाईँ फेरि प्रयास गर्न चाहानुहुन्छ भने:');
		// only need to print the rationale once
		Twinkle.xfd.currentRationale = null;
	}
};

Twinkle.xfd.callback = function twinklexfdCallback() {
	var Window = new Morebits.simpleWindow(600, 350);
	Window.setTitle('मेटाउने छलफल सुरु गर्नुहोस् (लेमेछ)');
	Window.setScriptName('ट्विङ्कल');
	Window.addFooterLink('मेटाउने छलफलको बारेमा', 'वि:लेमेछ');
	Window.addFooterLink('ट्विङ्कल सहायता', 'वि:ट्विङ्कल/दस्तावेज#लेमेछ');

	var form = new Morebits.quickForm(Twinkle.xfd.callback.evaluate);
	var categories = form.append({
		type: 'select',
		name: 'category',
		label: 'मेटाउने छलफल स्थल:',
		tooltip: 'जब सक्रिय हुन्छ, तपाईँ कुन नामस्थानमा हुनुहुन्छ त्यसमा आधारित, एक पूर्वनिर्धारित छनौट गरिन्छ। यो पूर्वनिर्धारित अवस्थामै सबैभन्दा उपयुक्त हुनुपर्दछ; केहि अनुपयुक्त विकल्पहरू असक्षम हुन सक्छन्',
		event: Twinkle.xfd.callback.change_category
	});
	var namespace = mw.config.get('wgNamespaceNumber');

	categories.append({
		type: 'option',
		label: 'मेपले (मेटाउनु पर्ने लेखहरू)',
		selected: namespace === 0,  // Main namespace
		value: 'afd'
	});
	categories.append({
		type: 'option',
		label: 'ढाँसछ (ढाँचाहरू सम्बन्धि छलफलहरू)',
		selected: [ 10, 828 ].indexOf(namespace) !== -1,  // Template and module namespaces
		value: 'tfd',
		disabled: namespace === 10 && /-stub$/.test(Morebits.pageNameNorm) // Stub templates at CfD
	});
	categories.append({
		type: 'option',
		label: 'फासछ (फाइलहरू सम्बन्धि छलफलहरू)',
		selected: namespace === 6,  // File namespace
		value: 'ffd',
		disabled: namespace !== 6
	});
	categories.append({
		type: 'option',
		label: 'श्रेसछ (श्रेणीहरू सम्बन्धि छलफलहरू)',
		selected: namespace === 14 || (namespace === 10 && /-stub$/.test(Morebits.pageNameNorm)),  // Category namespace and stub templates
		value: 'cfd',
		disabled: [ 10, 14 ].indexOf(namespace) === -1 // Disabled outside category and templatespace
	});
	categories.append({
		type: 'option',
		label: 'श्रेसछ/शी (शीघ्र नामपरिर्वातन गर्नुपर्ने श्रेणीहरू)',
		value: 'cfds'
	});
	categories.append({
		type: 'option',
		label: 'मेपवि (मेटाउनु पर्ने विविध)',
		selected: [ 0, 6, 10, 14, 828 ].indexOf(namespace) === -1 || Morebits.pageNameNorm.indexOf('Template:User ', 0) === 0,
		// Other namespaces, and userboxes in template namespace
		value: 'mfd'
	});
	categories.append({
		type: 'option',
		label: 'असछ (अनुप्रेषणहरू सम्बन्धि छलफलहरू)',
		selected: Morebits.wiki.isPageRedirect(),
		value: 'rfd'
	});
	categories.append({
		type: 'option',
		label: 'साअ (सार्न अनुरोधित)',
		selected: false,
		value: 'rm',
		disabled: namespace === 14
	});

	form.append({
		type: 'checkbox',
		list: [
			{
				label: 'सम्भव भएमा पृष्ठ निर्मातालाई सूचित गर्नुहोस्',
				value: 'notify',
				name: 'notify',
				tooltip: "एक सूचना ढाँचा निर्माताको वार्ता पृष्ठमा राखिनेछ यदि यो सत्य हो भने।",
				checked: true
			}
		]
	});
	form.append({
		type: 'field',
		label: 'Work area',
		name: 'work_area'
	});

	var previewlink = document.createElement('a');
	$(previewlink).click(function() {
		Twinkle.xfd.callbacks.preview(result);  // |result| is defined below
	});
	previewlink.style.cursor = 'pointer';
	previewlink.textContent = 'पूर्वावलोकन';
	form.append({ type: 'div', id: 'xfdpreview', label: [ previewlink ] });
	form.append({ type: 'div', id: 'twinklexfd-previewbox', style: 'display: none' });

	form.append({ type: 'submit' });

	var result = form.render();
	Window.setContent(result);
	Window.display();
	result.previewer = new Morebits.wiki.preview($(result).find('div#twinklexfd-previewbox').last()[0]);

	// We must init the controls
	var evt = document.createEvent('Event');
	evt.initEvent('change', true, true);
	result.category.dispatchEvent(evt);
};

Twinkle.xfd.callback.change_category = function twinklexfdCallbackChangeCategory(e) {
	var value = e.target.value;
	var form = e.target.form;
	var old_area = Morebits.quickForm.getElements(e.target.form, 'work_area')[0];
	var work_area = null;

	var oldreasontextbox = form.getElementsByTagName('textarea')[0];
	var oldreason = oldreasontextbox ? oldreasontextbox.value : '';

	var appendReasonBox = function twinklexfdAppendReasonBox() {
		work_area.append({
			type: 'textarea',
			name: 'xfdreason',
			label: 'कारण: ',
			value: oldreason,
			tooltip: 'तपाईँ आफ्नो कारणमा विकिमार्कअप प्रयोग गर्न सक्नुहुनेछ। ट्विङ्कलले तपाईँको हस्ताक्षर स्वत: पोष्ट गर्दछ।'
		});
	};

	form.previewer.closePreview();

	switch (value) {
		case 'afd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'मेटाउनु पर्ने लेखहरू',
				name: 'work_area'
			});
			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: '<noinclud> का साथ मेटाउने चिनो बेर्नुहोस्',
						value: 'noinclude',
						name: 'noinclude',
						tooltip: 'चिनोहरूमा मेटाउने चिनोलाई &lt;noinclude&gt;ले बेर्नेछ, तब यो ट्रान्सक्लुड हुँदैन। यो विकल्प सामान्यतया आवश्यक छैन।'
					}
				]
			});
			var afd_category = work_area.append({
				type: 'select',
				name: 'xfdcat',
				label: 'यो नामाङ्कन कुन श्रेणीमा सम्बन्धित छ रोज्नुहोस्:'
			});

			afd_category.append({ type: 'option', label: 'अज्ञात', value: '?', selected: true });
			afd_category.append({ type: 'option', label: 'मिडिया तथा सङ्गीत', value: 'M' });
			afd_category.append({ type: 'option', label: 'सङ्गठन, निगम, वा उत्पादन', value: 'O' });
			afd_category.append({ type: 'option', label: 'जीवनी', value: 'B' });
			afd_category.append({ type: 'option', label: 'समाज शीर्षकहरू', value: 'S' });
			afd_category.append({ type: 'option', label: 'वेब वा इन्टरनेट', value: 'W' });
			afd_category.append({ type: 'option', label: 'खेल वा खेलकुद', value: 'G' });
			afd_category.append({ type: 'option', label: 'विज्ञान तथा प्रविधि', value: 'T' });
			afd_category.append({ type: 'option', label: 'कल्पना तथा कला', value: 'F' });
			afd_category.append({ type: 'option', label: 'स्थान तथा यातायात', value: 'P' });
			afd_category.append({ type: 'option', label: 'अस्पष्ट वा अवर्गीकृत शीर्षक', value: 'I' });
			afd_category.append({ type: 'option', label: 'क्रमबद्ध नगरिएको', value: 'U' });

			// delsort categories list copied off [[User:Enterprisey/delsort.js]], originally taken from [[WP:DS/C]]
			var delsortCategories = {
				'मानिस': ['मानिस', 'शिक्षाविद् र शिक्षकहरू', 'अभिनेता र चलचित्र निर्माताहरू', 'कलाकारहरू', 'लेखकहरू', 'साङ्गीतिक दल र सङ्गीतकारहरू', 'व्यापारीहरू', 'राजनीतिज्ञहरू', 'खेलाडीहरू', 'महिला', 'व्यक्तिहरूको सूची'],
				'कला': ['कला', 'काल्पनिक तत्वहरू', 'विज्ञान कथा र कल्पना'],
				'कला/पकवान': ['पकवान', 'पेय पदार्थहरू'],
				'कला/भाषा': ['भाषा', 'शैक्षिक पत्रिकाहरू', 'ग्रन्थसूचीहरू', 'पत्रकारिता', 'साहित्य', 'तर्क', 'समाचार मिडिया', 'दर्शन', 'कविता'],
				'कला/प्रदर्शन': ['एल्बमहरू र गीतहरू', 'नृत्य', 'चलचित्र', 'जादू', 'सङ्गीत', 'रेडियो', 'टेलिभिजन', 'थिएटर', 'भिडियो गेमहरू'],
				'कला/दृश्य कला': ['दृश्य कला', 'वास्तुकला', 'फेसन', 'फोटोग्राफी'],
				'कला/हास्य र एनिमेसन': ['हास्य र एनिमेसन', 'कार्टून', 'वेबकमिक्स'],
				'चासोका स्थानहरू': ['सङ्ग्रहालय र पुस्तकालयहरू', 'सपिङ्ग मल'],
				'प्रचलित': ['पशु', 'द्विपक्षीय सम्बन्ध', 'व्यवसाय', 'रूढिवाद', 'षडयन्त्र सिद्धान्त', 'अपराध', 'अक्षमता', 'भेदभाव', 'जातीय समूहहरू', 'घटनाहरू', 'खेलहरू', 'स्वास्थ्य र फिटनेस', 'इतिहास', 'कानून', 'सैन्य', 'सङ्गठनहरू', 'अलौकिक', 'चोरी', 'राजनीति', 'आतङ्कवाद'],
				'प्रचलित/व्यापार': ['व्यापार', 'विज्ञापन', 'कम्पनीहरू', 'व्यवस्थापन', 'वित्त'],
				'प्रचलित/संस्कृति': ['सौन्दर्य प्रतियोगिता', 'फेसन', 'पौराणिक कथा', 'लोकप्रिय संस्कृति', 'लैङ्गिक पहिचान'],
				'प्रचलित/शिक्षा': ['शिक्षा', 'भ्रातृत्व तथा महिलासङ्घ', 'विद्यालयहरू'],
				'प्रचलित/धर्म': ['धर्म', 'नास्तिकता', 'बाइबल', 'बौद्ध धर्म', 'ईसाई धर्म', 'इस्लाम', 'यहूदी धर्म', 'हिन्दू धर्म', 'मूर्तिपूजकवाद', 'सिख धर्म', 'आध्यात्मिकता'],
				'प्रचलित/विज्ञान': ['विज्ञान', 'पुरातत्व', 'खगोल विज्ञान', 'व्यवहार विज्ञान', 'अर्थशास्त्र', 'पर्यावरण', 'भूगोल', 'गणित', 'चिकित्सा', 'जीव', 'सामाजिक विज्ञान', 'यातायात'],
				'प्रचलित/खेलकुद': ['खेलकुद', 'अमेरिकी फुटबल', 'बेसबल', 'बास्केटबल', 'शरीरनिर्माण', 'बक्सिङ', 'क्रिकेट', 'साइकलयात्रा', 'फुटबल', 'गल्फ', 'घोडादौड', 'आइस हकी' , 'रग्बी युनियन', 'सफ्टबल', 'मार्शल आर्ट', 'कुश्ती'],
				'प्रचलित/प्रविधि': ['प्रविधि', 'उड्डयन', 'गणना', 'हातहतियार', 'इन्टरनेट', 'सफ्टवेयर', 'वेबसाइटहरू'],
				'विकिपिडिया पृष्ठ प्रकार': ['अस्पष्टताहरू', 'सूचीहरू'],
				'भौगोलिक/अफ्रीका': ['अफ्रीका', 'इजिप्ट', 'इथियोपिया', 'घाना', 'केन्या', 'लाओस', 'मौरिसस', 'मोरक्को', 'नाइजेरिया', 'सोमालिया', 'दक्षिण अफ्रीका', 'जिम्बावे'],
				'भौगोलिक/एसिया': ['एसिया', 'अफगानिस्तान', 'बङ्गलादेश', 'बहराइन', 'ब्रुनेई', 'कम्बोडिया', 'चीन', 'हङकङ', 'भारत', 'इन्डोनेसिया', 'जापान', 'कोरिया', 'मलेसिया', 'माल्दिभ्स', 'मङ्गोलिया', 'म्यानमार', 'नेपाल', 'पाकिस्तान', 'फिलिपिन्स', 'सिङ्गापुर', 'दक्षिण कोरिया', 'श्रीलंका', 'ताइवान', 'थाईल्याण्ड', 'भियतनाम'],
				'भौगोलिक/एसिया/मध्य एसिया': ['मध्य एशिया', 'कजाकिस्तान', 'किर्गिजस्तान', 'ताजिकिस्तान', 'तुर्कमेनिस्तान', 'उज्बेकिस्तान'],
				'भौगोलिक/एसिया/मध्य पूर्व': ['मध्य पूर्व', 'इरान', 'इराक', 'इजरायल', 'जोर्डन', 'कुवेत', 'लेबनान', 'लिबिया', 'प्यालेस्टाइन', 'साउदी अरेबिया', 'सिरिया', 'संयुक्त अरब इमिरेट्स', 'यमन', 'कतार'],
				'भौगोलिक/युरोप': ['युरोप', 'अल्बेनिया', 'आर्मेनिया', 'अष्ट्रिया', 'अजरबैजान', 'बेलारूस', 'बेल्जियम', 'बोस्निया र हर्जगोभिना', 'बुल्गारिया', 'क्रोएसिया', 'साइप्रस', 'चेक गणतन्त्र', 'डेनमार्क', 'एस्टोनिया', 'फिनल्यान्ड', 'फ्रान्स', 'जर्जिया (देश)', 'जर्मनी', 'ग्रीस', 'हङ्गेरी', 'आइसल्यान्ड', 'आयरल्याण्ड', 'इटली', 'जर्सी', 'कोसोभो', 'लाटभिया', 'लिथुआनिया', 'लक्जमबर्ग', 'म्यासेडोनिया', 'माल्टा', 'मोल्डोभा', 'मोन्टेनेग्रो', 'नेदरल्यान्ड्स', 'नर्वे', 'पोल्याण्ड', 'पोर्चुगल', 'रोमानिया', 'रूस', 'सर्बिया', 'स्लोभाकिया', 'स्लोभेनिया', 'स्पेन', 'स्विडेन', 'स्विजरल्याण्ड', 'टर्की', 'युक्रेन', 'युगोस्लाभिया'],
				'भौगोलिक/युरोप/संयुक्त अधिराज्य': ['संयुक्त अधिराज्य', 'इङ्ल्यान्ड', 'उत्तरी आयरल्यान्ड', 'स्कटल्यान्ड', 'वेल्स'],
				'भौगोलिक/ओशिनिया': ['ओशिनिया', 'अन्टार्कटिका', 'अष्ट्रेलिया', 'न्यूजील्याण्ड'],
				'भौगोलिक/अमेरिका/क्यानडा': ['क्यानडा', 'ब्रिटिश कोलम्बिया', 'मनिटोबा', 'नोभा स्कोटिया', 'ओन्टारियो', 'क्युबेक', 'अल्बर्टा'],
				'भौगोलिक/अमेरिका/ल्याटिन अमेरिका': ['ल्याटिन अमेरिका', 'क्यारिबियन', 'दक्षिण अमेरिका', 'अर्जेन्टिना', 'बार्बाडोस', 'बेलिज', 'बोलिभिया', 'ब्राजील', 'चिली', 'कोलम्बिया', 'क्युबा', 'इक्वेडर', 'एल साल्भाडोर', 'ग्वाटेमाला', 'हाईटी', 'मेक्सिको', 'निकारागुआ', 'पनामा', 'पराग्वे', 'पेरू', 'पोर्टो रिको', 'त्रिनिडाड र टोबियागो', 'उरुग्वे', 'भेनेजुएला', 'ग्रिनाडा'],
				'भौगोलिक/अमेरिका/संयुक्त राज्य अमेरिका': ['संयुक्त राज्य अमेरिका', 'अलाबामा', 'अलास्का', 'एरिजोना', 'अर्कान्सस', 'क्यालिफोर्निया', 'कोलोराडो', 'कनेक्टिकट', 'डेलावेयर', 'फ्लोरिडा', 'जर्जिया (संयुक्त राज्य)' , 'हवाई', 'इडाहो', 'इलिनोइस', 'इंडियाना', 'आयोवा', 'कन्सास', 'केन्टकी', 'लुइसियाना', 'माइन', 'मेरील्यान्ड', 'म्यासाचुसेट्स', 'मिशिगन', 'मिनिसोटा', 'मिसिसिपी', 'मिसौरी', 'मोन्टाना', 'नेब्रास्का', 'नेभाडा', 'न्यू ह्याम्प्सर', 'न्यू जर्सी', 'न्यू मेक्सिको', 'न्यू योर्क शहर', 'नर्थ क्यारोलिना', 'नर्थ डेकोटा', 'ओहायो', 'ओक्लाहोमा', 'ओरेगन', 'पेन्सिलभेनिया', 'रोड आइल्यान्ड', 'साउथ क्यारोलाइना', 'साउथ डेकोटा', 'टेनेसी', 'टेक्सास', 'युटा', 'भर्मांट', 'भर्जिनिया', 'वासिङ्टन', 'वासिङ्टन डी.सी.', 'वेस्ट भर्जिनिया', 'विस्कान्सिन', 'वायोमिङ'],
				'भौगोलिक/अवर्गीकृत': ['द्वीप']
			};

			var delsort = work_area.append({
				type: 'select',
				multiple: true,
				name: 'delsort',
				label: 'मेटाउने क्रमबद्ध श्रेणीहरू चयन गर्नुहोस्: ',
				tooltip: 'लेखको विषयसँग सम्बन्धित केही श्रेणीहरू चयन गर्नुहोस्'
			});

			$.each(delsortCategories, function(groupname, list) {
				var group = delsort.append({ type: 'optgroup', label: groupname });
				list.forEach(function(item) {
					group.append({ type: 'option', label: item, value: item });
				});
			});

			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);

			$(work_area).find('[name=delsort]')
				.attr('data-placeholder', 'मेटाउनेक्रमबद्ध पृष्ठहरू चयन गर्नुहोस्')
				.select2({
					width: '100%',
					matcher: Morebits.select2.matcher,
					templateResult: Morebits.select2.highlightSearchMatches,
					language: {
						searching: Morebits.select2.queryInterceptor
					}
				});

			mw.util.addCSS(
				// prevent dropdown from appearing behind the dialog, just in case
				'.select2-container { z-index: 10000; }' +

				// Remove black border
				'.select2-container--default.select2-container--focus .select2-selection--multiple { border: 1px solid #aaa; }' +

				// Reduce padding
				'.select2-results .select2-results__option { padding-top: 1px; padding-bottom: 1px; }' +
				'.select2-results .select2-results__group { padding-top: 1px; padding-bottom: 1px; } ' +

				// Adjust font size
				'.select2-container .select2-dropdown .select2-results { font-size: 13px; }' +
				'.select2-container .selection .select2-selection__rendered { font-size: 13px; }' +

				// Make the tiny cross larger
				'.select2-selection__choice__remove { font-size: 130%; }'
			);
			break;
		case 'tfd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'ढाँचाहरू सम्बन्धि छलफलहरू',
				name: 'work_area'
			});
			work_area.append({
				type: 'div',
				label: 'प्रयोगकर्ताबाकसहरू ढाँसछ का लागि योग्य छैनन्; तिनीहरू विसछ मा जान्छन्।'
			});
			var templateOrModule = mw.config.get('wgPageContentModel') === 'Scribunto' ? 'module' : 'template';
			var tfd_category = work_area.append({
				type: 'select',
				label: 'चाहेको कार्यको प्रकार छान्नुहोस्: ',
				name: 'xfdcat',
				event: function(e) {
					var target = e.target;
					// add/remove extra input box
					if (target.value === 'tfm' && !target.form.xfdtarget) { // $(target.parentNode).find("input[name='xfdtarget']").length === 0 ) {
						var xfdtarget = new Morebits.quickForm.element({
							name: 'xfdtarget',
							type: 'input',
							label: 'अन्य ' + templateOrModule + ' गाभ्न: ',
							tooltip: 'आवाश्यक ' + Morebits.string.toUpperCaseFirstChar(templateOrModule) + ': नामस्थान उपसर्ग समावेश गर्नु हुँदैन।',
							required: true
						});
						target.parentNode.appendChild(xfdtarget.render());
					} else {
						$(Morebits.quickForm.getElementContainer(target.form.xfdtarget)).remove();
						target.form.xfdtarget = null;
						// $(target.parentNode).find("input[name='xfdtarget']").remove();
					}
				}
			});
			tfd_category.append({ type: 'option', label: 'मेटाउन', value: 'tfd', selected: true });
			tfd_category.append({ type: 'option', label: 'गाभ्न', value: 'tfm' });

			var tfd_template_type = work_area.append({
				type: 'select',
				name: 'templatetype',
				label: 'मेटाउने चिनो प्रदर्शन शैली: ',
				tooltip: 'कुन <code>type=</code> मापदण्ड ढाँसछ चिनो ढाँचामा पास गर्न।'
			});
			if (templateOrModule === 'module') {
				tfd_template_type.append({ type: 'option', value: 'module', label: 'मोड्युल', selected: true });
			} else {
				tfd_template_type.append({ type: 'option', value: 'standard', label: 'स्तरीय', selected: true });
				tfd_template_type.append({ type: 'option', value: 'sidebar', label: 'साइडबार/जानकारीबाकस', selected: $('.infobox').length });
				tfd_template_type.append({ type: 'option', value: 'inline', label: 'इनलाइन ढाँचा' });
				tfd_template_type.append({ type: 'option', value: 'tiny', label: 'सानो इनलाइन' });
			}

			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: '(प्रतिस्थापित ढाँचाहरूको लागि मात्र) <noinclud> का साथ मेटाउने चिनो बेर्नुहोस्',
						value: 'noinclude',
						name: 'noinclude',
						tooltip: 'मेटाउने चिनोलाई &lt;noinclude&gt; चिनोमा लपेट्ने छ, ताकी यो ढाँचाको साथ प्रतिस्थापित हुनेछैन।',
						disabled: templateOrModule === 'module',
						checked: !!$('.box-Subst_only').length // Default to checked if page carries {{subst only}}
					}
				]
			});

			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
		case 'mfd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'मेटाउनु पर्ने विविध',
				name: 'work_area'
			});
			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: '<noinclud> का साथ मेटाउने चिनो बेर्नुहोस्',
						value: 'noinclude',
						name: 'noinclude',
						tooltip: 'चिनोहरूमा मेटाउने चिनोलाई &lt;noinclude&gt;ले बेर्नेछ, तब यो ट्रान्सक्लुड हुँदैन। प्रयोगकर्ताबाकसहरूको लागि यो विकल्प चयन गर्नुहोस्।'
					}
				]
			});
			if (mw.config.get('wgNamespaceNumber') === 2 /* User: */ || mw.config.get('wgNamespaceNumber') === 3 /* User talk: */) {
				work_area.append({
					type: 'checkbox',
					list: [
						{
							label: 'प्रयोगकर्ता पृष्ठको मालिकलाई पनि सूचित गर्नुहोस् यदि तिनीहरू पृष्ठ निर्माताहरू हैनन् भने।',
							value: 'notifyuserspace',
							name: 'notifyuserspace',
							tooltip: 'यदि प्रयोगकर्ता जसको प्रयोगकर्तास्थानमा यो पृष्ठ अवस्थित छ, पृष्ठ सिर्जनाकर्ता हैन (उदाहरणका लागि, पृष्ठ एक उद्धार गरिएको लेख हो जुन प्रयोगकर्तास्थानमा मस्यौदाको रूपमा भण्डार गरिएको छ), प्रयोगकर्तास्थानको मालिकलाई पनि सूचित गर्नुहोस्।',
							checked: true
						}
					]
				});
			}
			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
		case 'ffd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'फाईलहरूको छलफल स्थलहरू',
				name: 'work_area'
			});
			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
		case 'cfd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'श्रेणीहरू सम्बन्धि छलफलहरू',
				name: 'work_area'
			});
			var isCategory = mw.config.get('wgNamespaceNumber') === 14;
			var cfd_category;
			cfd_category = work_area.append({
				type: 'select',
				label: 'चाहेको कार्यको प्रकार छान्नुहोस्: ',
				name: 'xfdcat',
				event: function(e) {
					var value = e.target.value;
					var target = e.target.form.xfdtarget;
					// update enabled status
					if (value === 'cfd' || value === 'sfd-t') {
						target.disabled = true;
						target.required = false;
					} else {
						target.disabled = false;
						target.required = true;
					}
					if (isCategory) {
						// update label
						if (value === 'cfs') {
							target.previousSibling.textContent = 'लक्ष्य श्रेणीहरू: ';
						} else if (value === 'cfc') {
							target.previousSibling.textContent = 'लक्ष्य लेख: ';
						} else {
							target.previousSibling.textContent = 'लक्ष्य श्रेणी: ';
						}
						// add/remove extra input box
						if (value === 'cfs' && $(target.parentNode).find("input[name='xfdtarget2']").length === 0) {
							var xfdtarget2 = document.createElement('input');
							xfdtarget2.setAttribute('name', 'xfdtarget2');
							xfdtarget2.setAttribute('type', 'text');
							xfdtarget2.setAttribute('required', 'true');
							target.parentNode.appendChild(xfdtarget2);
						} else {
							$(target.parentNode).find("input[name='xfdtarget2']").remove();
						}
					} else { // Update stub template label
						target.previousSibling.textContent = 'लक्ष्य अपूर्ण ढाँचा: ';
					}
				}
			});

			if (isCategory) {
				cfd_category.append({ type: 'option', label: 'मेटाउन', value: 'cfd', selected: true });
				cfd_category.append({ type: 'option', label: 'गाभ्न', value: 'cfm' });
				cfd_category.append({ type: 'option', label: 'नामपरिर्वातन', value: 'cfr' });
				cfd_category.append({ type: 'option', label: 'विभाजन', value: 'cfs' });
				cfd_category.append({ type: 'option', label: 'लेखमा रूपान्तर', value: 'cfc' });
			} else {
				cfd_category.append({ type: 'option', label: 'अपूर्ण मेटाउन', value: 'sfd-t', selected: true });
				cfd_category.append({ type: 'option', label: 'अपूर्ण नामपरिर्वातन', value: 'sfr-t' });
			}

			work_area.append({
				type: 'input',
				name: 'xfdtarget',
				label: 'लक्ष्य श्रेणी: ', // default, changed above
				disabled: true,
				value: ''
			});
			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
		case 'cfds':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'शीघ्र नामपरिर्वातन गर्नुपर्ने श्रेणीहरू',
				name: 'work_area'
			});
			var cfds_category = work_area.append({
				type: 'select',
				label: 'श्रे२ उप-मापदण्ड: ',
				name: 'xfdcat',
				tooltip: 'पूर्ण व्याख्याको लागि वि:श्रेसछशी हेर्नुहोस्।'
			});
			cfds_category.append({ type: 'option', label: 'श्रे२क: मुद्रण तथा हिज्जे समाधानहरू', value: 'श्रे२क', selected: true });
			cfds_category.append({ type: 'option', label: 'श्रे२ख: नामकरण अधिवेशन तथा अस्पष्टताहरू', value: 'श्रे२ख' });
			cfds_category.append({ type: 'option', label: 'श्रे२ग: समान श्रेणीहरूको नामसँग एकरूपता', value: 'श्रे२ग' });
			cfds_category.append({ type: 'option', label: 'श्रे२घ: लेखको नाम मिलाउन नामपरिर्वातन गर्नुपर्ने', value: 'श्रे२घ' });
			cfds_category.append({ type: 'option', label: 'श्रे२ङ: लेखकको अनुरोध', value: 'श्रे२ङ' });
			cfds_category.append({ type: 'option', label: 'श्रे२च: एउटा विशिष्ट व्यक्ति-विषयक लेख', value: 'श्रे२च' });

			work_area.append({
				type: 'input',
				name: 'xfdtarget',
				label: 'नयाँ नाम: ',
				value: '',
				required: true
			});
			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
		case 'rfd':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'अनुप्रेषणहरू सम्बन्धि छलफलहरू',
				name: 'work_area'
			});

			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: 'सम्भव भएमा लक्षित पृष्ठलाई सूचित गर्नुहोस्',
						value: 'relatedpage',
						name: 'relatedpage',
						tooltip: "एक सूचना ढाँचा यो अनुप्रेषणको लक्ष्यको वार्ता पृष्ठमा राखिन्छ यदि यो सत्य हो भने।",
						checked: true
					}
				]
			});
			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;

		case 'rm':
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'सार्न अनुरोधित',
				name: 'work_area'
			});
			work_area.append({
				type: 'checkbox',
				list: [
					{
						label: 'अविवादास्पद प्राविधिक अनुरोध',
						value: 'rmtr',
						name: 'rmtr',
						tooltip: 'जब तपाईँ अविवादास्पद सार्ने कार्य प्राविधिक कारणले गर्दा असक्षम हुनुभएमा (उदाहरणका लागि नयाँ पृष्ठमा पृष्ठ पहिले नै अवस्थित छ, वा पृष्ठ सुरक्षित छ) भने यो विकल्प प्रयोग गर्नुहोस्।',
						checked: false,
						event: function() {
							form.newname.required = this.checked;
						}
					}
				]
			});
			work_area.append({
				type: 'input',
				name: 'newname',
				label: 'नयाँ शीर्षक: ',
				tooltip: 'प्राविधिक अनुरोधहरूको लागि आवश्यक। अन्यथा, यदि उपयुक्त शीर्षकको बारेमा अनिश्चित हुनुहुन्छ भने, तपाईँ यसलाई खाली छोड्न सक्नुहुन्छ।'
			});

			appendReasonBox();
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;

		default:
			work_area = new Morebits.quickForm.element({
				type: 'field',
				label: 'कुनै चीजको लागि केहि छैन',
				name: 'work_area'
			});
			work_area = work_area.render();
			old_area.parentNode.replaceChild(work_area, old_area);
			break;
	}

	// Return to checked state when switching, but no creator notification for CFDS or RM
	if (value === 'cfds' || value === 'rm') {
		form.notify.checked = false;
		form.notify.disabled = true;
	} else {
		form.notify.checked = true;
		form.notify.disabled = false;
	}
};

Twinkle.xfd.setWatchPref = function twinklexfdsetWatchPref(pageobj, pref) {
	switch (pref) {
		case 'yes':
			pageobj.setWatchlist(true);
			break;
		case 'no':
			pageobj.setWatchlistFromPreferences(false);
			break;
		default:
			pageobj.setWatchlistFromPreferences(true);
			break;
	}
};

Twinkle.xfd.callbacks = {
	getDiscussionWikitext: function(venue, params) {
		if (venue === 'cfds') { // CfD/S takes a completely different style
			return '* [[:' + Morebits.pageNameNorm + ']] लाई [[:' + params.target + ']]\u00A0\u2013 ' +
				params.xfdcat + (params.reason ? ': ' + Morebits.string.formatReasonText(params.reason) : '।') + ' ~~~~';
			// U+00A0 NO-BREAK SPACE; U+2013 EN RULE
		}
		if (venue === 'rm') {
			// even if invoked from talk page, propose the subject page for move
			var pageName = new mw.Title(Morebits.pageNameNorm).getSubjectPage().toText();
			return (params.rmtr ?
				'{{subst:RMassist|1=' + pageName + '|2=' + params.newname :
				'{{subst:Requested move|current1=' + pageName + '|new1=' + params.newname)
				+ '|reason=' + params.reason + '}}';
		}

		var text = '{{subst:' + venue + '2';
		var reasonKey = venue === 'ffd' ? 'Reason' : 'text';
		// Add a reason unconditionally, so that at least a signature is added
		if (params.reason) {
			text += '|' + reasonKey + '=' + Morebits.string.formatReasonText(params.reason) + ' ~~~~';
		} else {
			text += '|' + reasonKey + '=~~~~';
		}

		if (venue === 'afd' || venue === 'mfd') {
			text += '|pg=' + Morebits.pageNameNorm;
			if (venue === 'afd') {
				text += '|cat=' + params.xfdcat;
			}
		} else if (venue === 'rfd') {
			text += '|redirect=' + Morebits.pageNameNorm;
		} else {
			text += '|1=' + mw.config.get('wgTitle');
			if (mw.config.get('wgPageContentModel') === 'Scribunto') {
				text += '|module=Module:';
			}
		}

		if (params.target) {
			if (venue === 'rfd') {
				text += '|target=' + params.target + (params.section ? '#' + params.section : '');
			} else if (venue !== 'cfd' && venue !== 'sfd-t') {
				text += '|2=' + params.target;
			}
		}
		if (params.target2) {
			text += '|3=' + params.target2;
		}
		if (params.uploader) {
			text += '|Uploader=' + params.uploader;
		}

		text += '}}';

		if (params.delsort_cats) { // Only for AFDs
			params.delsort_cats.forEach(function (cat) {
				text += '\n{{subst:delsort|' + cat + '|~~~~}}';
			});
		}

		return text;
	},
	showPreview: function(form, venue, params) {
		var templatetext = Twinkle.xfd.callbacks.getDiscussionWikitext(venue, params);
		if (venue === 'rm') { // RM templates are sensitive to page title
			form.previewer.beginRender(templatetext, params.rmtr ? 'विकिपिडिया:सार्न अनुरोधित/प्राविधिक अनुरोध' : mw.Title.newFromText(Morebits.pageNameNorm).getTalkPage().toText());
		} else {
			form.previewer.beginRender(templatetext, 'वि:ट्विङ्कल'); // Force wikitext
		}
	},
	preview: function(form) {
		var venue = form.category.value;
		var params = {
			reason: form.xfdreason.value
		};

		if (form.xfdcat) {
			params.xfdcat = form.xfdcat.value;
		}

		// Remove CfD or TfD namespace prefixes
		if (venue === 'tfd' || venue === 'cfd') {
			var namespace_re = new RegExp('^:?' + mw.config.get('wgCanonicalNamespace') + ':', 'i');
			if (form.xfdtarget) { // श्रेसछ वा ढाँसछ
				params.target = Morebits.string.toUpperCaseFirstChar(form.xfdtarget.value.replace(namespace_re, ''));
			}
			if (form.xfdtarget2) { // श्रेसछ
				params.target2 = Morebits.string.toUpperCaseFirstChar(form.xfdtarget2.value.replace(namespace_re, ''));
			}
		} else if (venue === 'cfds' && form.xfdtarget.value) { // श्रेसछ/शी मा नामस्थान थप्न 
			params.target = /^Category:/.test(form.xfdtarget.value) ? form.xfdtarget.value : 'Category:' + form.xfdtarget.value;
		}

		params.delsort_cats = $(form.delsort).val();
		if (form.rmtr) {
			params.rmtr = form.rmtr.checked;
		}
		if (form.newname) {
			params.newname = form.newname.value;
		}

		if (venue === 'ffd') {
			// Fetch the uploader
			var page = new Morebits.wiki.page(mw.config.get('wgPageName'));
			page.lookupCreation(function() {
				params.uploader = page.getCreator();
				Twinkle.xfd.callbacks.showPreview(form, venue, params);
			});
		} else if (venue === 'rfd') { // लक्ष्य खोज्नुहोस्
			Twinkle.xfd.callbacks.rfd.findTarget(params, function(params) {
				Twinkle.xfd.callbacks.showPreview(form, venue, params);
			});
		} else if (venue === 'cfd') { // श्रेसछ उप कार्यहरूमा बदल्नुहोस्
			Twinkle.xfd.callbacks.showPreview(form, params.xfdcat, params);
		} else {
			Twinkle.xfd.callbacks.showPreview(form, venue, params);
		}
	},
	afd: {
		main: function(apiobj) {
			var xmlDoc = apiobj.responseXML;
			var titles = $(xmlDoc).find('allpages p');

			// There has been no earlier entries with this prefix, just go on.
			if (titles.length <= 0) {
				apiobj.params.numbering = apiobj.params.number = '';
			} else {
				var number = 0;
				for (var i = 0; i < titles.length; ++i) {
					var title = titles[i].getAttribute('title');

					// First, simple test, is there an instance with this exact name?
					if (title === 'विकिपिडिया:मेटाउनु पर्ने लेखहरू/' + Morebits.pageNameNorm) {
						number = Math.max(number, 1);
						continue;
					}

					var order_re = new RegExp('^' +
						RegExp.escape('विकिपिडिया:मेटाउनु पर्ने लेखहरू/' + Morebits.pageNameNorm, true) +
						'\\s*\\(\\s*(\\d+)(?:(?:औं|दोस्रो|तेस्रो|पहिलो) ना(?:माङ्कन)?)?\\s*\\)\\s*$');
					var match = order_re.exec(title);

					// No match; A non-good value
					if (!match) {
						continue;
					}

					// A match, set number to the max of current
					number = Math.max(number, Number(match[1]));
				}
				apiobj.params.number = Twinkle.xfd.num2order(parseInt(number, 10) + 1);
				apiobj.params.numbering = number > 0 ? ' (' + apiobj.params.number + ' नामाङ्कन)' : '';
			}
			apiobj.params.discussionpage = 'विकिपिडिया:मेटाउनु पर्ने लेखहरू/' + Morebits.pageNameNorm + apiobj.params.numbering;

			Morebits.status.info('अर्को छलफल पृष्ठ', '[[' + apiobj.params.discussionpage + ']]');

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = apiobj.params.discussionpage;
			Morebits.wiki.actionCompleted.notice = 'नामाङ्कन सम्पन्न भयो, अब छलफल पृष्ठमा अनुप्रेषित गर्दै';

			// Tagging article
			var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'लेखमा मेटाउने चिनो थप्दै');
			wikipedia_page.setFollowRedirect(true);  // should never be needed, but if the article is moved, we would want to follow the redirect
			wikipedia_page.setCallbackParameters(apiobj.params);
			wikipedia_page.load(Twinkle.xfd.callbacks.afd.taggingArticle);
		},
		// Tagging needs to happen before everything else: this means we can check if there is an AfD tag already on the page
		taggingArticle: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			if (!pageobj.exists()) {
				statelem.error("यस्तो देखिन्छ कि पृष्ठ अवस्थित छैन; हुनसक्छ यो पहिले नै हटाईएको छ");
				return;
			}

			// Check for existing AfD tag, for the benefit of new page patrollers
			var textNoAfd = text.replace(/<!--.*AfD.*\n\{\{(?:Article for deletion\/dated|AfDM).*\}\}\n<!--.*(?:\n<!--.*)?AfD.*(?:\s*\n)?/g, '');
			if (text !== textNoAfd) {
				if (confirm('यस लेखमा एक मेपले चिनो भेटियो। हुनसक्छ कसैले तपाईँलाई उछिन्नुभयो।  \nहालको मेपले चिनो प्रतिस्थापन गर्न (सिफारिस नगरिएको) ठीक क्लिक गर्नुहोस्, वा तपाईँको नामाङ्कन छोड्नका लागि रद्द गर्नुहोस्।')) {
					text = textNoAfd;
				} else {
					statelem.error('लेखमा पहिले नै मेपले चिनो चिह्नित गरिएको छ, र तपाईँले परित्याग गर्न छनौट गर्नुभयो');
					window.location.reload();
					return;
				}
			}

			// Now we know we want to go ahead with it, trigger the other AJAX requests

			// Mark the page as curated/patrolled, if wanted
			if (Twinkle.getPref('markXfdPagesAsPatrolled')) {
				pageobj.triage();
			}

			// Starting discussion page
			var wikipedia_page = new Morebits.wiki.page(params.discussionpage, 'लेख मेटाउने छलफल पृष्ठ बनाउँदै');
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.afd.discussionPage);

			// Today's list
			var date = new Morebits.date(pageobj.getLoadTime());
			wikipedia_page = new Morebits.wiki.page('विकिपिडिया:मेटाउनु पर्ने लेखहरू/लग/' +
				date.format('YYYY MMMM D', 'utc'), "आजको सूचीमा छलफल थप्दै");
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.afd.todaysList);

			// Notification to first contributor
			if (params.usertalk) {
				var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'));
				thispage.setCallbackParameters(params);
				thispage.setLookupNonRedirectCreator(true); // Look for author of first non-redirect revision
				thispage.lookupCreation(Twinkle.xfd.callbacks.afd.userNotification);
			}

			// List at deletion sorting pages
			if (params.delsort_cats) {
				params.delsort_cats.forEach(function (cat) {
					var delsortPage = new Morebits.wiki.page('विकिपिडिया:विकिपरियोजना मेटाउने क्रमबद्ध/' + cat, 'मेटाउने छलफलहरू ' + cat + '-सम्बन्धित सूचीमा थप्दै');
					delsortPage.setFollowRedirect(true); // In case a category gets renamed
					delsortPage.setCallbackParameters({discussionPage: params.discussionpage});
					delsortPage.load(Twinkle.xfd.callbacks.afd.delsortListing);
				});
			}

			// Remove some tags that should always be removed on AfD.
			text = text.replace(/\{\{\s*(dated prod|dated prod blp|Prod blp\/dated|Proposed deletion\/dated|prod2|Proposed deletion endorsed|Userspace draft)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/ig, '');
			// Then, test if there are speedy deletion-related templates on the article.
			var textNoSd = text.replace(/\{\{\s*(db(-\w*)?|delete|(?:hang|hold)[- ]?on)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/ig, '');
			if (text !== textNoSd && confirm('यस पृष्ठमा एक शीघ्र मेटाउने चिनो भेटियो। के यो हटाउनु पर्छ?')) {
				text = textNoSd;
			}

			pageobj.setPageText((params.noinclude ? '<noinclude>{{' : '{{') + (params.number === '' ? 'subst:afd|help=off' : 'subst:afdx|' +
				params.number + '|help=off') + (params.noinclude ? '}}</noinclude>\n' : '}}\n') + text);
			pageobj.setEditSummary('मेटाउनका लागि नामाङ्कित; [[:' + params.discussionpage + ']] हेर्नुहोस्।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('nocreate');
			pageobj.save();
		},
		discussionPage: function(pageobj) {
			var params = pageobj.getCallbackParameters();

			pageobj.setPageText(Twinkle.xfd.callbacks.getDiscussionWikitext('afd', params));
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']]का लागि मेटाउने छलफल पृष्ठ सिर्जना गर्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('createonly');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},
		todaysList: function(pageobj) {
			var old_text = pageobj.getPageText() + '\n';  // MW strips trailing blanks, but we like them, so we add a fake one
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var text = old_text.replace(/(<!-- तलका सूचीको शीर्षमा नयाँ प्रविष्टिहरू थप्नुहोस्। -->\n+)/, '$1{{subst:afd3|pg=' + Morebits.pageNameNorm + params.numbering + '}}\n');
			if (text === old_text) {
				var linknode = document.createElement('a');
				linknode.setAttribute('href', mw.util.getUrl('विकिपिडिया:ट्विङ्कल/मेपले समाधान') + '?action=purge');
				linknode.appendChild(document.createTextNode('कसरी मेपले समाधान गर्ने'));
				statelem.error([ 'छलफलको लागि लक्ष्य स्थान फेला पार्न सकेन। यो समस्या समाधान गर्न, कृपया ', linknode, 'हेर्नुहोस्।' ]);
				return;
			}
			pageobj.setPageText(text);
			pageobj.setEditSummary('[[:' + params.discussionpage + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchList'));
			pageobj.setCreateOption('recreate');
			pageobj.save();
		},
		userNotification: function(pageobj) {
			var params = pageobj.getCallbackParameters();
			var initialContrib = pageobj.getCreator();

			// Disallow warning yourself
			if (initialContrib === mw.config.get('wgUserName')) {
				pageobj.getStatusElement().warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
				return;
			}

			var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')');
			var notifytext = '\n{{subst:Afd notice|1=' + Morebits.pageNameNorm + (params.numbering !== '' ? '|order=&#32;' + params.numbering : '') + '}} ~~~~';
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|नामाङ्कन]] को [[:' + Morebits.pageNameNorm + ']]  मा [[विकिपिडिया:मेटाउनु पर्ने लेखहरू|मेटाउनु पर्ने लेखहरू]]।' + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		},
		delsortListing: function(pageobj) {
			var discussionPage = pageobj.getCallbackParameters().discussionPage;
			var text = pageobj.getPageText().replace('सीधा यस रेखा मुनि -->', 'सीधा यस रेखा मुनि -->\n{{' + discussionPage + '}}');
			pageobj.setPageText(text);
			pageobj.setEditSummary('[[:' + discussionPage + ']] सूचीमा राख्दै।' + Twinkle.getPref('summaryAd'));
			pageobj.setCreateOption('nocreate');
			pageobj.save();
		}
	},


	tfd: {
		taggingTemplate: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var tableNewline = params.tfdtype === 'standard' || params.tfdtype === 'sidebar' ? '\n' : ''; // No newline for inline

			pageobj.setPageText((params.noinclude ? '<noinclude>' : '') + '{{subst:template for discussion|help=off' +
				(params.tfdtype !== 'standard' ? '|type=' + params.tfdtype : '') + (params.noinclude ? '}}</noinclude>' : '}}') + tableNewline + text);
			pageobj.setEditSummary('मेटाउनका लागि नामाङ्कित; [[:' + params.discussionpage + ']] हेर्नुहोस्।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			if (params.scribunto) {
				pageobj.setCreateOption('recreate'); // Module /doc might not exist
			}
			pageobj.save();
		},
		taggingTemplateForMerge: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var tableNewline = params.tfdtype === 'standard' || params.tfdtype === 'sidebar' ? '\n' : ''; // No newline for inline

			pageobj.setPageText((params.noinclude ? '<noinclude>' : '') + '{{subst:tfm|help=off|' +
				(params.tfdtype !== 'standard' ? 'type=' + params.tfdtype + '|' : '') + '1=' + params.otherTemplateName.replace(/^(?:Template|Module):/, '') +
				(params.noinclude ? '}}</noinclude>' : '}}') + tableNewline + text);
			pageobj.setEditSummary('गाभ्नको लागि सूचीबद्ध [[:' + params.otherTemplateName + ']]; [[:' + params.discussionpage + ']] हेर्नुहोस्।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			if (params.scribunto) {
				pageobj.setCreateOption('recreate'); // Module /doc might not exist
			}
			pageobj.save();
		},
		todaysList: function(pageobj) {
			var old_text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var added_data = Twinkle.xfd.callbacks.getDiscussionWikitext(params.xfdcat, params);

			var text = old_text.replace('-->', '-->\n' + added_data);
			if (text === old_text) {
				statelem.error('छलफलको लागि लक्षित स्थान फेला पार्न असफल भयो');
				return;
			}
			pageobj.setPageText(text);
			pageobj.setEditSummary('पृष्ठमा ' + (params.xfdcat === 'tfd' ? 'मेटाउने नामाङ्कन' : 'गाभ्न सूचीबद्ध') + ' [[:' + Morebits.pageNameNorm + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('recreate');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},
		userNotification: function(pageobj) {
			var initialContrib = pageobj.getCreator();
			var params = pageobj.getCallbackParameters();

			// Disallow warning yourself
			if (initialContrib === mw.config.get('wgUserName')) {
				pageobj.getStatusElement().warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
				return;
			}

			var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')');
			var notifytext = '\n';
			var modNotice = mw.config.get('wgPageContentModel') === 'Scribunto' ? '|module=yes' : '';
			switch (params.xfdcat) {
				case 'tfd':
					notifytext += '{{subst:Tfd notice|1=' + mw.config.get('wgTitle') + modNotice + '}} ~~~~';
					break;
				case 'tfm':
					notifytext += '{{subst:Tfm notice|1=' + mw.config.get('wgTitle') + '|2=' + params.target + modNotice + '}} ~~~~';
					break;
				default:
					alert('twinklexfd in userNotification: unknown TFD action');
					break;
			}

			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|सूचीबद्ध]] को [[:' + pageobj.getPageName() + ']] मा [[विकिपिडिया:ढाँचाहरू सम्बन्धि छलफलहरू|ढाँचाहरू सम्बन्धि छलफलहरू]]।' + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		}
	},


	mfd: {
		main: function(apiobj) {
			var xmlDoc = apiobj.responseXML;
			var titles = $(xmlDoc).find('allpages p');

			// There has been no earlier entries with this prefix, just go on.
			if (titles.length <= 0) {
				apiobj.params.numbering = apiobj.params.number = '';
			} else {
				var number = 0;
				for (var i = 0; i < titles.length; ++i) {
					var title = titles[i].getAttribute('title');

					// First, simple test, is there an instance with this exact name?
					if (title === 'विकिपिडिया:मेटाउनु पर्ने विविध/' + Morebits.pageNameNorm) {
						number = Math.max(number, 1);
						continue;
					}

					var order_re = new RegExp('^' +
							RegExp.escape('विकिपिडिया:मेटाउनु पर्ने विविध/' + Morebits.pageNameNorm, true) +
							'\\s*\\(\\s*(\\d+)(?:(?:औं|दोस्रो|तेस्रो|पहिलो) ना(?:माङ्कन)?)?\\s*\\)\\s*$');
					var match = order_re.exec(title);

					// No match; A non-good value
					if (!match) {
						continue;
					}

					// A match, set number to the max of current
					number = Math.max(number, Number(match[1]));
				}
				apiobj.params.number = Twinkle.xfd.num2order(parseInt(number, 10) + 1);
				apiobj.params.numbering = number > 0 ? ' (' + apiobj.params.number + ' नामाङ्कन)' : '';
			}
			apiobj.params.discussionpage = 'विकिपिडिया:मेटाउनु पर्ने विविध/' + Morebits.pageNameNorm + apiobj.params.numbering;

			apiobj.statelem.info('अर्को क्रममा [[' + apiobj.params.discussionpage + ']]');

			// Tagging page
			var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'मेटाउने चिनोको साथ पृष्ठ चिह्नित गर्दै');
			wikipedia_page.setFollowRedirect(true);  // should never be needed, but if the page is moved, we would want to follow the redirect
			wikipedia_page.setCallbackParameters(apiobj.params);
			wikipedia_page.load(Twinkle.xfd.callbacks.mfd.taggingPage);

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = apiobj.params.discussionpage;
			Morebits.wiki.actionCompleted.notice = 'नामाङ्कन सम्पन्न भयो, अब छलफल पृष्ठमा अनुप्रेषित गर्दै';

			// Discussion page
			wikipedia_page = new Morebits.wiki.page(apiobj.params.discussionpage, 'मेटाउने छलफल पृष्ठ बनाउँदै');
			wikipedia_page.setCallbackParameters(apiobj.params);
			wikipedia_page.load(Twinkle.xfd.callbacks.mfd.discussionPage);

			// Today's list
			wikipedia_page = new Morebits.wiki.page('विकिपिडिया:मेटाउनु पर्ने विविध', "आजको सूचीमा छलफल थप्दै");
			wikipedia_page.setPageSection(2);
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(apiobj.params);
			wikipedia_page.load(Twinkle.xfd.callbacks.mfd.todaysList);

			// Notification to first contributor, and notification to owner of userspace (if applicable and required)
			if (apiobj.params.usertalk) {
				var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'));
				thispage.setCallbackParameters(apiobj.params);
				thispage.lookupCreation(Twinkle.xfd.callbacks.mfd.userNotification);
			}
		},
		taggingPage: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();

			pageobj.setPageText((params.noinclude ? '<noinclude>' : '') + '{{' +
				(params.number === '' ? 'mfd' : 'mfdx|' + params.number) + '|help=off}}\n' +
				(params.noinclude ? '</noinclude>' : '') + text);
			pageobj.setEditSummary('मेटाउनका लागि नामाङ्कित; [[:' + params.discussionpage + ']] हेर्नुहोस्।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('nocreate');
			pageobj.save();
		},
		discussionPage: function(pageobj) {
			var params = pageobj.getCallbackParameters();

			pageobj.setPageText(Twinkle.xfd.callbacks.getDiscussionWikitext('mfd', params));
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']]का लागि मेटाउने छलफल पृष्ठ सिर्जना गर्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('createonly');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},
		todaysList: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var date = new Morebits.date(pageobj.getLoadTime());
			var date_header = date.format('===MMMM D, YYYY===\n', 'utc');
			var date_header_regex = new RegExp(date.format('(===[\\s]*MMMM[\\s]+D,[\\s]+YYYY[\\s]*===)', 'utc'));
			var new_data = '{{subst:mfd3|pg=' + Morebits.pageNameNorm + params.numbering + '}}';

			if (date_header_regex.test(text)) { // we have a section already
				statelem.info('Found today\'s section, proceeding to add new entry');
				text = text.replace(date_header_regex, '$1\n' + new_data);
			} else { // we need to create a new section
				statelem.info('No section for today found, proceeding to create one');
				text = text.replace('===', date_header + new_data + '\n\n===');
			}

			pageobj.setPageText(text);
			pageobj.setEditSummary('[[:' + params.discussionpage + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchList'));
			pageobj.setCreateOption('recreate');
			pageobj.save();
		},
		userNotification: function(pageobj) {
			var initialContrib = pageobj.getCreator();
			var params = pageobj.getCallbackParameters();

			// Disallow warning yourself
			if (initialContrib === mw.config.get('wgUserName')) {
				pageobj.getStatusElement().warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
			} else {
				// Really notify the creator
				Twinkle.xfd.callbacks.mfd.userNotificationMain(params, initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै');
			}

			// Also notify the user who owns the subpage if they are not the creator
			if (params.notifyuserspace) {
				var userspaceOwner = mw.config.get('wgTitle').indexOf('/') === -1 ? mw.config.get('wgTitle') : mw.config.get('wgTitle').substring(0, mw.config.get('wgTitle').indexOf('/'));
				if (userspaceOwner !== initialContrib) {
					Twinkle.xfd.callbacks.mfd.userNotificationMain(params, userspaceOwner, 'प्रयोगकर्तास्थानको मालिकलाई सूचित गर्दै');
				}
			}
		},
		userNotificationMain: function(params, initialContrib, actionName) {
			var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, actionName + ' (' + initialContrib + ')');
			var notifytext = '\n{{subst:Mfd notice|1=' + Morebits.pageNameNorm + (params.numbering !== '' ? '|order=&#32;' + params.numbering : '') + '}} ~~~~';
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|नामाङ्कन]] को [[:' + Morebits.pageNameNorm + ']] मा [[विकिपिडिया:मेटाउनु पर्ने विविध|मेटाउनु पर्ने विविध]]।' + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		}
	},


	ffd: {
		main: function(pageobj) {
			// this is coming in from lookupCreation...!
			var params = pageobj.getCallbackParameters();
			var initialContrib = pageobj.getCreator();
			params.uploader = initialContrib;

			// Adding discussion
			var wikipedia_page = new Morebits.wiki.page(params.logpage, "आजको सूचीमा छलफल थप्दै");
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.ffd.todaysList);

			// Notification to first contributor
			if (params.usertalk) {
				// Disallow warning yourself
				if (initialContrib === mw.config.get('wgUserName')) {
					pageobj.getStatusElement().warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
				} else {
					var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')');
					var notifytext = '\n{{subst:Ffd notice|1=' + mw.config.get('wgTitle') + '}}';
					usertalkpage.setAppendText(notifytext);
					usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|सूचीबद्ध]] को [[:' + Morebits.pageNameNorm + ']] मा [[विकिपिडिया:फाइलहरू सम्बन्धि छलफलहरू|फाइलहरू सम्बन्धि छलफलहरू]]।' + Twinkle.getPref('summaryAd'));
					usertalkpage.setCreateOption('recreate');
					Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
					usertalkpage.setFollowRedirect(true);
					usertalkpage.append();
				}
			}
		},
		taggingImage: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();

			text = text.replace(/\{\{(mtc|(copy |move )?to ?commons|move to wikimedia commons|copy to wikimedia commons)[^}]*\}\}/gi, '');

			pageobj.setPageText('{{ffd|log=' + params.date + '|help=off}}\n' + text);
			pageobj.setEditSummary('[[:' + params.discussionpage + ']]मा छलफलको लागि सूचीबद्ध गरियो।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('recreate');  // it might be possible for a file to exist without a description page
			pageobj.save();
		},
		todaysList: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();

			// add date header if the log is found to be empty (a bot should do this automatically, but it sometimes breaks down)
			if (!pageobj.exists()) {
				text = '{{subst:Ffd log}}';
			}

			pageobj.setPageText(text + '\n\n' + Twinkle.xfd.callbacks.getDiscussionWikitext('ffd', params));
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('recreate');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		}
	},


	cfd: {
		taggingCategory: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();

			var added_data = '{{subst:' + params.xfdcat;
			var editsummary = (mw.config.get('wgNamespaceNumber') === 14 ? 'Category' : 'अपूर्ण ढाँचा') +
				' को लागी विचार गरीरहेको ' + params.action;
			switch (params.xfdcat) {
				case 'cfd':
				case 'sfd-t':
					break;
				case 'cfc':
					editsummary += ' एउटा लेखमा';
					// falls through
				case 'cfm':
				case 'cfr':
				case 'sfr-t':
					added_data += '|' + params.target;
					break;
				case 'cfs':
					added_data += '|' + params.target + '|' + params.target2;
					break;
				default:
					alert('twinklexfd in taggingCategory(): unknown CFD action');
					break;
			}
			added_data += '}}';
			editsummary += '; [[:' + params.discussionpage + ']] हेर्नुहोस्।';

			pageobj.setPageText(added_data + '\n' + text);
			pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('recreate');  // since categories can be populated without an actual page at that title
			pageobj.save();
		},
		todaysList: function(pageobj) {
			var old_text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var added_data = Twinkle.xfd.callbacks.getDiscussionWikitext(params.xfdcat, params);
			var editsummary = 'पृष्ठमा ' + params.action + ' नामाङ्कन [[:' + Morebits.pageNameNorm + ']] थप्दै।';

			var text = old_text.replace('यस रेखा मुनि -->', 'यस रेखा मुनि -->\n' + added_data);
			if (text === old_text) {
				statelem.error('छलफलको लागि लक्षित स्थान फेला पार्न असफल भयो');
				return;
			}

			pageobj.setPageText(text);
			pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('recreate');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},
		userNotification: function(pageobj) {
			var initialContrib = pageobj.getCreator();
			var params = pageobj.getCallbackParameters();

			// Disallow warning yourself
			if (initialContrib === mw.config.get('wgUserName')) {
				pageobj.getStatusElement().warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
				return;
			}

			var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')');
			var notifytext = '\n{{subst:Cfd notice|1=' + Morebits.pageNameNorm + '|action=' + params.action + (mw.config.get('wgNamespaceNumber') === 10 ? '|stub=yes' : '') + '}} ~~~~';
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|सूचीबद्ध]] को [[:' + Morebits.pageNameNorm + ']] मा [[विकिपिडिया:श्रेणीहरू सम्बन्धि छलफलहरू|श्रेणीहरू सम्बन्धि छलफलहरू]]।' + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		}
	},


	cfds: {
		taggingCategory: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();

			pageobj.setPageText('{{subst:cfr-speedy|1=' + params.target.replace(/^:?Category:/, '') + '}}\n' + text);
			pageobj.setEditSummary('शीघ्र नामपरिवर्तनका लागि सूचीबद्ध; [[वि:श्रेसछशी|श्रेणीहरू सम्बन्धि छलफलहरू/शीघ्र]] हेर्नुहोस्।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('recreate');  // since categories can be populated without an actual page at that title
			pageobj.save();
		},
		addToList: function(pageobj) {
			var old_text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var text = old_text.replace('यो रेखा तल -->', 'यो रेखा तल -->\n' + Twinkle.xfd.callbacks.getDiscussionWikitext('cfds', params));
			if (text === old_text) {
				statelem.error('छलफलको लागि लक्षित स्थान फेला पार्न असफल भयो');
				return;
			}

			pageobj.setPageText(text);
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('recreate');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		}
	},


	rfd: {
		// This gets called both on submit and preview to determine the redirect target
		findTarget: function(params, callback) {
			// Used by regular redirects to find the target, but for all redirects,
			// avoid relying on the client clock to build the log page
			var query = {
				'action': 'query',
				'curtimestamp': true
			};
			if (document.getElementById('softredirect')) {
				// For soft redirects, define the target early
				// to skip target checks in findTargetCallback
				params.target = document.getElementById('softredirect').textContent.replace(/^:+/, '');
			} else {
				// Find current target of redirect
				query.titles = mw.config.get('wgPageName');
				query.redirects = true;
			}
			var wikipedia_api = new Morebits.wiki.api('अनुप्रेषणको लक्ष्य पत्ता लगाउँदै', query, Twinkle.xfd.callbacks.rfd.findTargetCallback(callback));
			wikipedia_api.params = params;
			wikipedia_api.post();
		},
		// This is a closure for the callback from the above API request, which gets the target of the redirect
		findTargetCallback: function(callback) {
			return function(apiobj) {
				var $xmlDoc = $(apiobj.responseXML);
				var curtimestamp = $xmlDoc.find('api').attr('curtimestamp');
				apiobj.params.curtimestamp = curtimestamp;
				if (!apiobj.params.target) { // Not a softredirect
					var target = $xmlDoc.find('redirects r').first().attr('to');
					if (!target) {
						var message = 'यो पृष्ठ एक अनुप्रेषण जस्तो देखिदैन, रद्द गर्दै';
						if (mw.config.get('wgAction') === 'history') {
							message += '। यदि यो नरम अनुप्रेषण हो भने, पृष्ठ ईतिहासबाट नभइ सामग्री पृष्ठबाट फेरि प्रयास गर्नुहोस्।';
						}
						apiobj.statelem.error(message);
						return;
					}
					apiobj.params.target = target;
					var section = $xmlDoc.find('redirects r').first().attr('tofragment');
					apiobj.params.section = section;
				}
				callback(apiobj.params);
			};
		},
		main: function(params) {
			var date = new Morebits.date(params.curtimestamp);
			params.logpage = 'विकिपिडिया:अनुप्रेषणहरू सम्बन्धि छलफलहरू/लग/' + date.format('YYYY MMMM D', 'utc');
			params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;

			// Tagging redirect
			var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'अनुप्रेषणमा मेटाउने चिनो थप्दै');
			wikipedia_page.setFollowRedirect(false);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.rfd.taggingRedirect);

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = params.logpage;
			Morebits.wiki.actionCompleted.notice = "नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै";

			// Adding discussion
			wikipedia_page = new Morebits.wiki.page(params.logpage, "आजको लगमा छलफल थप्दै");
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.rfd.todaysList);

			// Notifications
			if (params.usertalk || params.relatedpage) {
				var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'));
				thispage.setCallbackParameters(params);
				thispage.lookupCreation(Twinkle.xfd.callbacks.rfd.sendNotifications);
			}
		},
		taggingRedirect: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			pageobj.setPageText('{{subst:rfd|' + (mw.config.get('wgNamespaceNumber') === 10 ? 'showontransclusion=1|' : '') + 'content=\n' + text + '\n}}');
			pageobj.setEditSummary('[[:' + params.discussionpage + ']]मा छलफलको लागि सूचीबद्ध।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchPage'));
			pageobj.setCreateOption('nocreate');
			pageobj.save();
		},
		todaysList: function(pageobj) {
			var old_text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			// params.target + sectionHash + "}} ~~~~\n" );
			var added_data = Twinkle.xfd.callbacks.getDiscussionWikitext('rfd', params);
			var text = old_text.replace(/(<!-- यस रेखाको तल सीधै नयाँ प्रविष्टिहरू थप्नुहोस्\.? -->)/, '$1\n' + added_data);
			if (text === old_text) {
				statelem.error('छलफलको लागि लक्षित स्थान फेला पार्न असफल भयो');
				return;
			}

			pageobj.setPageText(text);
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.setCreateOption('recreate');
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},
		sendNotifications: function(pageobj) {
			var initialContrib = pageobj.getCreator();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			// Notifying initial contributor
			if (params.usertalk) {
				// Disallow warning yourself
				if (initialContrib === mw.config.get('wgUserName')) {
					statelem.warn('तपाईँले (' + initialContrib + ') यो पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
				} else {
					Twinkle.xfd.callbacks.rfd.userNotification(params, initialContrib);
				}
			}

			// Notifying target page's watchers, if not a soft redirect
			if (params.relatedpage) {
				var targetTalk = new mw.Title(params.target).getTalkPage();

				// On the offchance it's a circular redirect
				if (params.target === mw.config.get('wgPageName')) {
					statelem.warn('परिपत्र अनुप्रेषण; लक्ष्य पृष्ठ सूचना रद्द गर्दै');
				} else if (document.getElementById('softredirect')) {
					statelem.warn('नरम अनुप्रेषण; लक्ष्य पृष्ठ सूचना रद्द गर्दै');
				} else if (targetTalk.getNamespaceId() === 3) {
					// Don't issue if target talk is the initial contributor's talk or your own
					if (targetTalk.getNameText() === initialContrib) {
						statelem.warn('लक्ष्य प्रारम्भिक योगदानकर्ता हो; लक्ष्य पृष्ठ सूचना रद्द गर्दै');
					} else if (targetTalk.getNameText() === mw.config.get('wgUserName')) {
						statelem.warn('तपाईँ (' + mw.config.get('wgUserName') + ') लक्ष्य हो; लक्ष्य पृष्ठ सूचना रद्द गर्दै');
					}
				} else {
					Twinkle.xfd.callbacks.rfd.targetNotification(params, targetTalk);
				}
			}
		},
		userNotification: function(params, initialContrib) {
			var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')');
			var notifytext = '\n{{subst:Rfd notice|1=' + Morebits.pageNameNorm + '}} ~~~~';
			usertalkpage.setAppendText(notifytext);
			usertalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|सूचीबद्ध]] को [[:' + Morebits.pageNameNorm + ']] मा [[विकिपिडिया:अनुप्रेषणहरू सम्बन्धि छलफलहरू|अनुप्रेषणहरू सम्बन्धि छलफलहरू]]।' + Twinkle.getPref('summaryAd'));
			usertalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(usertalkpage, Twinkle.getPref('xfdWatchUser'));
			usertalkpage.setFollowRedirect(true);
			usertalkpage.append();
		},
		targetNotification: function(params, targetTalk) {
			var targettalkpage = new Morebits.wiki.page(targetTalk, 'छलफलको अनुप्रेषण लक्ष्य सूचित गर्दै');
			var notifytext = '\n{{subst:Rfd notice|1=' + Morebits.pageNameNorm + '}} ~~~~';
			targettalkpage.setAppendText(notifytext);
			targettalkpage.setEditSummary('सूचना: [[' + params.discussionpage + '|सूचीबद्ध]] को [[:' + Morebits.pageNameNorm + ']] मा [[विकिपिडिया:अनुप्रेषणहरू सम्बन्धि छलफलहरू|अनुप्रेषणहरू सम्बन्धि छलफलहरू]]।' + Twinkle.getPref('summaryAd'));
			targettalkpage.setCreateOption('recreate');
			Twinkle.xfd.setWatchPref(targettalkpage, Twinkle.getPref('xfdWatchRelated'));
			targettalkpage.setFollowRedirect(true);
			targettalkpage.append();
		}
	},

	rm: {
		listAtTalk: function(pageobj) {
			var params = pageobj.getCallbackParameters();

			pageobj.setAppendText('\n\n' + Twinkle.xfd.callbacks.getDiscussionWikitext('rm', params));
			pageobj.setEditSummary('सार्न' + (params.newname ? ' प्रस्ताव गर्दै [[:' + params.newname + ']]' : '') + Twinkle.getPref('summaryAd'));
			pageobj.setCreateOption('recreate'); // since the talk page need not exist
			Twinkle.xfd.setWatchPref(pageobj, Twinkle.getPref('xfdWatchDiscussion'));
			pageobj.append(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		},

		listAtRMTR: function(pageobj) {
			var text = pageobj.getPageText();
			var params = pageobj.getCallbackParameters();
			var statelem = pageobj.getStatusElement();

			var hiddenCommentRE = /---- र नयाँ लाइन मा प्रविष्ट गर्नुहोस्।* -->/;
			var newtext = text.replace(hiddenCommentRE, '$&\n' + Twinkle.xfd.callbacks.getDiscussionWikitext('rm', params));
			if (text === newtext) {
				statelem.error('प्रवेशका लागि लक्ष्य स्थान फेला पार्न असफल भयो');
				return;
			}
			pageobj.setPageText(newtext);
			pageobj.setEditSummary('[[:' + Morebits.pageNameNorm + ']] थप्दै।' + Twinkle.getPref('summaryAd'));
			pageobj.save(function() {
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki
			});
		}
	}
};



Twinkle.xfd.callback.evaluate = function(e) {
	var form = e.target;

	var type = form.category.value;
	var usertalk = form.notify.checked;
	var reason = form.xfdreason.value;
	var delsort_cats = $(form.delsort).val(); // afd
	var xfdcat = form.xfdcat && form.xfdcat.value; // afd, cfd, cfds, tfd
	var xfdtarget = form.xfdtarget && form.xfdtarget.value; // cfd, cfds, tfd
	var xfdtarget2 = form.xfdtarget2 && form.xfdtarget2.value; // cfd
	var noinclude = form.noinclude && form.noinclude.checked; // afd, mfd, tfd
	var tfdtype = form.templatetype && form.templatetype.value; // tfd
	var notifyuserspace = form.notifyuserspace && form.notifyuserspace.checked; // mfd
	var relatedpage = form.relatedpage && form.relatedpage.checked; // rfd
	var newname = form.newname && form.newname.value; // rm
	var rmtr = form.rmtr && form.rmtr.checked; // rm

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(form);

	Twinkle.xfd.currentRationale = reason;
	Morebits.status.onError(Twinkle.xfd.printRationale);

	if (!type) {
		Morebits.status.error('त्रुटि', 'कुनै कार्य दिइएको छैन');
		return;
	}

	var query, wikipedia_page, wikipedia_api, logpage, params;
	var date = new Morebits.date(); // XXX: avoid use of client clock, still used by TfD, FfD and CfD
	switch (type) {

		case 'afd': // AFD
			query = {
				'action': 'query',
				'list': 'allpages',
				'apprefix': 'मेटाउनु पर्ने लेखहरू/' + Morebits.pageNameNorm,
				'apnamespace': 4,
				'apfilterredir': 'nonredirects',
				'aplimit': 'max' // 500 is max for normal users, 5000 for bots and sysops
			};
			wikipedia_api = new Morebits.wiki.api('मेटाउने चिनोका साथ लेख चिह्नित गर्दै', query, Twinkle.xfd.callbacks.afd.main);
			wikipedia_api.params = { usertalk: usertalk, reason: reason, noinclude: noinclude,
				xfdcat: xfdcat, delsort_cats: delsort_cats };
			wikipedia_api.post();
			break;

		case 'tfd': // TFD
			Morebits.wiki.addCheckpoint();
			if (xfdtarget) {
				var tfdNamespace_re = new RegExp('^:?' + mw.config.get('wgCanonicalNamespace') + ':', 'i');
				xfdtarget = Morebits.string.toUpperCaseFirstChar(xfdtarget.replace(tfdNamespace_re, ''));
			} else {
				xfdtarget = '';
			}

			logpage = 'विकिपिडिया:ढाँचाहरू सम्बन्धि छलफलहरू/लग/' + date.format('YYYY MMMM D', 'utc');

			params = { tfdtype: tfdtype, logpage: logpage, noinclude: noinclude, xfdcat: xfdcat, target: xfdtarget, reason: reason };
			params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;

			// Modules can't be tagged, TfD instructions are to place
			// on /doc subpage, so need to tag and watch specially
			params.scribunto = mw.config.get('wgPageContentModel') === 'Scribunto';
			var watch_query = {
				action: 'watch',
				titles: mw.config.get('wgPageName'),
				token: mw.user.tokens.get('watchToken')
			};
			// Tagging template(s)/module(s)
			if (xfdcat === 'tfm') { // Merge
				var wikipedia_otherpage;

				// Tag this template/module
				if (params.scribunto) {
					wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName') + '/doc', 'गाभ्ने चिनोका साथ यो मोड्युल दस्तावेज चिह्नित गर्दै');
					params.otherTemplateName = 'Module:' + xfdtarget;
					wikipedia_otherpage = new Morebits.wiki.page(params.otherTemplateName + '/doc', 'गाभ्ने चिनोका साथ अर्को मोड्युल दस्तावेज चिह्नित गर्दै');

					// Watch tagged module pages as well
					if (Twinkle.getPref('xfdWatchPage') !== 'no') {
						watch_query.titles += '|' + params.otherTemplateName;
						new Morebits.wiki.api('अवलोकन सूचीमा मोड्युल थप्दै', watch_query).post();
					}
				} else {
					wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'गाभ्ने चिनोका साथ यो ढाँचा चिह्नित गर्दै');
					params.otherTemplateName = 'Template:' + xfdtarget;
					wikipedia_otherpage = new Morebits.wiki.page(params.otherTemplateName, 'गाभ्ने चिनोका साथ अर्को ढाँचा चिह्नित गर्दै');
				}
				wikipedia_page.setFollowRedirect(true);
				wikipedia_page.setCallbackParameters(params);
				wikipedia_page.load(Twinkle.xfd.callbacks.tfd.taggingTemplateForMerge);

				// Tag other template/module
				wikipedia_otherpage.setFollowRedirect(true);
				var otherParams = $.extend({}, params);
				otherParams.otherTemplateName = Morebits.pageNameNorm;
				wikipedia_otherpage.setCallbackParameters(otherParams);
				wikipedia_otherpage.load(Twinkle.xfd.callbacks.tfd.taggingTemplateForMerge);
			} else { // delete
				if (params.scribunto) {
					wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName') + '/doc', 'मेटाउने चिनोका साथ यो मोड्युल दस्तावेज चिह्नित गर्दै');

					// Watch tagged module page as well
					if (Twinkle.getPref('xfdWatchPage') !== 'no') {
						new Morebits.wiki.api('अवलोकन सूचीमा मोड्युल थप्दै', watch_query).post();
					}
				} else {
					wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'मेटाउने चिनोका साथ यो ढाँचा चिह्नित गर्दै');
				}
				wikipedia_page.setFollowRedirect(true);  // should never be needed, but if the page is moved, we would want to follow the redirect
				wikipedia_page.setCallbackParameters(params);
				wikipedia_page.load(Twinkle.xfd.callbacks.tfd.taggingTemplate);
			}

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = logpage;
			Morebits.wiki.actionCompleted.notice = "नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै";

			// Adding discussion
			wikipedia_page = new Morebits.wiki.page(logpage, "आजको लगमा छलफल थप्दै");
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.tfd.todaysList);

			// Notification to first contributors
			if (usertalk) {
				var involvedpages = [];
				var seenusers = [];
				involvedpages.push(new Morebits.wiki.page(mw.config.get('wgPageName')));
				if (xfdcat === 'tfm') {
					if (params.scribunto) {
						involvedpages.push(new Morebits.wiki.page('Module:' + xfdtarget));
					} else {
						involvedpages.push(new Morebits.wiki.page('Template:' + xfdtarget));
					}
				}
				involvedpages.forEach(function(page) {
					page.setCallbackParameters(params);
					page.lookupCreation(function(innerpage) {
						var username = innerpage.getCreator();
						if (seenusers.indexOf(username) === -1) {
							seenusers.push(username);
							Twinkle.xfd.callbacks.tfd.userNotification(innerpage);
						}
					});
				});
			}

			Morebits.wiki.removeCheckpoint();
			break;

		case 'mfd': // मेपवि
			query = {
				'action': 'query',
				'list': 'allpages',
				'apprefix': 'मेटाउनु पर्ने विविध/' + Morebits.pageNameNorm,
				'apnamespace': 4,
				'apfilterredir': 'nonredirects',
				'aplimit': 'max' // 500 is max for normal users, 5000 for bots and sysops
			};
			wikipedia_api = new Morebits.wiki.api('यस पृष्ठको पूर्व नामाङ्कनहरूको खोजी गर्दै', query, Twinkle.xfd.callbacks.mfd.main);
			wikipedia_api.params = { usertalk: usertalk, notifyuserspace: notifyuserspace, reason: reason, noinclude: noinclude, xfdcat: xfdcat };
			wikipedia_api.post();
			break;

		case 'ffd': // FFD
			var dateString = date.format('YYYY MMMM D', 'utc');
			logpage = 'विकिपिडिया:फाइलहरू सम्बन्धि छलफलहरू/' + dateString;
			params = { usertalk: usertalk, reason: reason, date: dateString, logpage: logpage };
			params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;

			Morebits.wiki.addCheckpoint();

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = logpage;
			Morebits.wiki.actionCompleted.notice = 'नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै';

			// Tagging file
			wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'फाइल पृष्ठमा मेटाउने ट्याग थप्दै');
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.ffd.taggingImage);

			// Contributor specific edits
			wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'));
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.lookupCreation(Twinkle.xfd.callbacks.ffd.main);

			Morebits.wiki.removeCheckpoint();
			break;

		case 'cfd':
			Morebits.wiki.addCheckpoint();

			var cfdNamespace_re = new RegExp('^:?' + mw.config.get('wgCanonicalNamespace') + ':', 'i');
			if (xfdtarget) {
				xfdtarget = xfdtarget.replace(cfdNamespace_re, '');
			} else {
				xfdtarget = '';
			}
			if (xfdtarget2) {
				xfdtarget2 = xfdtarget2.replace(cfdNamespace_re, '');
			}

			logpage = 'विकिपिडिया:श्रेणीहरू सम्बन्धि छलफलहरू/लग/' + date.format('YYYY MMMM D', 'utc');

			params = { reason: reason, xfdcat: xfdcat, target: xfdtarget, target2: xfdtarget2, logpage: logpage };
			params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;

			// Useful for customized actions in edit summaries and the notification template
			var summaryActions = {
				cfd: 'deletion',
				'sfd-t': 'deletion',
				cfm: 'merging',
				cfr: 'renaming',
				'sfr-t': 'renaming',
				cfs: 'splitting',
				cfc: 'conversion'
			};
			params.action = summaryActions[params.xfdcat];

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = logpage;
			Morebits.wiki.actionCompleted.notice = "नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै";

			// Tagging category
			wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'श्रेणी चिह्नित गर्दै ' + params.action + ' tag');
			wikipedia_page.setFollowRedirect(true); // should never be needed, but if the page is moved, we would want to follow the redirect
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.cfd.taggingCategory);

			// Adding discussion to list
			wikipedia_page = new Morebits.wiki.page(logpage, "आजको सूचीमा छलफल थप्दै");
			wikipedia_page.setPageSection(2);
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.cfd.todaysList);

			// Notification to first contributor
			if (usertalk) {
				wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'));
				wikipedia_page.setCallbackParameters(params);
				wikipedia_page.lookupCreation(Twinkle.xfd.callbacks.cfd.userNotification);
			}

			Morebits.wiki.removeCheckpoint();
			break;

		case 'cfds':
			xfdtarget = /^Category:/.test(xfdtarget) ? xfdtarget : 'Category:' + xfdtarget;

			logpage = 'विकिपिडिया:श्रेणीहरू सम्बन्धि छलफलहरू/शीघ्र';
			params = { reason: reason, xfdcat: xfdcat, target: xfdtarget };

			// Updating data for the action completed event
			Morebits.wiki.actionCompleted.redirect = logpage;
			Morebits.wiki.actionCompleted.notice = 'नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै';

			// Tagging category
			wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'नामपरिवर्तन चिनोका साथ श्रेणी चिह्नित गर्दै');
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.cfds.taggingCategory);

			// Adding discussion to list
			wikipedia_page = new Morebits.wiki.page(logpage, 'सूचीमा छलफल थप्दै');
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);
			wikipedia_page.load(Twinkle.xfd.callbacks.cfds.addToList);

			break;

		case 'rfd':
			params = { usertalk: usertalk, relatedpage: relatedpage, reason: reason };
			// find target and pass main as the callback
			Twinkle.xfd.callbacks.rfd.findTarget(params, Twinkle.xfd.callbacks.rfd.main);
			break;

		case 'rm':
			params = { reason: reason, newname: newname, rmtr: rmtr };
			var nomPageName = rmtr ?
				'विकिपिडिया:सार्न अनुरोधित/प्राविधिक अनुरोध' :
				new mw.Title(Morebits.pageNameNorm).getTalkPage().toText();

			Morebits.wiki.actionCompleted.redirect = nomPageName;
			Morebits.wiki.actionCompleted.notice = 'नामाङ्कन सम्पन्न भयो, अब आजको लगमा अनुप्रेषित गर्दै';

			wikipedia_page = new Morebits.wiki.page(nomPageName, rmtr ? 'वि:साअ/ढाँना मा प्रविष्टि थप्दै:' : 'वार्ता पृष्ठमा प्रविष्टि थप्दै');
			wikipedia_page.setFollowRedirect(true);
			wikipedia_page.setCallbackParameters(params);

			if (rmtr) {
				wikipedia_page.setPageSection(2);
				wikipedia_page.load(Twinkle.xfd.callbacks.rm.listAtRMTR);
			} else {
				// listAtTalk uses .append(), so no need to load the page
				Twinkle.xfd.callbacks.rm.listAtTalk(wikipedia_page);
			}
			break;

		default:
			alert('twinklexfd: unknown XFD discussion venue');
			break;
	}
};
})(jQuery);


// </nowiki>