تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

// If TwinkleConfig aint exist.
if( typeof( TwinkleConfig ) == 'undefined' ) {
	TwinkleConfig = {};
}

/**
 TwinkleConfig.summaryAd (string)
 If ad should be added or not to summary, default [[WP:TWINKLE|TWINKLE]]
 */
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
	TwinkleConfig.summaryAd = " باستخدام [[وب:لمح البصر|لمح البصر]]";
}

if( typeof( TwinkleConfig.watchxfdPages ) == 'undefined' ) {
TwinkleConfig.watchxfdPages = true;
}
function num2order( num ) {
	switch( num ) {
	case 1: return '';
	case 2: return '2';
	case 3: return '3';
	default: return num;
	}
}
function twinklexfd() {
	if( wgNamespaceNumber < 0 || wgCurRevisionId == false ) {
		return;
	}
	if (twinkleConfigExists)
	{
		mw.util.addPortletLink( 'p-cactions', "javascript:twinklexfd.callback()", "نامزدگی۔حذ", "tw-xfd", "نامزدگی برائے حذف", "");
	}
	else
	{
		mw.util.addPortletLink('p-cactions', 'javascript:alert("نئے کھاتے سے آپ لمح بصر استعمال نہیں کرسکتے۔");', 'نامزدگی۔حذ', 'tw-xfd', 'نامزدگی برائے حذف', '');
	}
}
$(twinklexfd);

twinklexfd.callback = function twinklexfdCallback() {

	var Window = new SimpleWindow( 600, 325 );
	Window.setTitle( "نامزدگی برائے حذف" );
	var form = new QuickForm( twinklexfd.callback.evaluate );
	var categories = form.append( {
			type: 'select',
			name: 'category',
			label: 'مناسب زمرہ منتخب کریں: ',
			tooltip: 'بوقت فعال کاری، صفحہ کے فضائے نام کے مطابق اختیار منتخب ہوتا ہے۔ اور یہ اختیار زیادہ مناسب ہے',
			event: twinklexfd.callback.change_category
		} );
	categories.append( {
			type: 'option',
			label: 'مضمون برائے حذف',
			selected: wgNamespaceNumber == Namespace.MAIN || QueryString.equals('redirect', 'no'),
			value: 'afd'
		} );
	categories.append( {
			type: 'option',
			label: 'سانچہ برائے حذف',
			disabled: true,
			value: 'tfd'
		} );
	categories.append( {
			type: 'option',
			label: 'ملف برائے حذف',
			disabled: true,
			value: 'ifd'
		} );
	categories.append( {
			type: 'option',
			label: 'زمرہ برائے حذف',
			disabled: true,
			value: 'cfd'
		} );
	categories.append( {
			type: 'option',
			label: 'دیگر صفحات برائے حذف',
			selected: [ Namespace.MAIN ].indexOf( wgNamespaceNumber ) == -1,
			value: 'mfd'
		} );
	categories.append( {
			type: 'option',
			label: 'رجوع مکرر برائے حذف',
			disabled: true,
			value: 'rfd'
		} );
	categories.append( {
			type: 'option',
			label: 'زمرۂ نامکمل برائے حذف',
			disabled: true,
			value: 'sfd'
		} );
	form.append( {
			type: 'checkbox',
			list: [
				{
					label: 'نبه عند الإمكان',
					value: 'notify',
					name: 'notify',
					tooltip: 'نبه منشئ الصفحة عندم يتيح الأمر للتنبيه',
					checked: true
				}
			]
		}
	);
	form.append( {
			type: 'field',
			label:'Work area',
			name: 'work_area'
		} );

	var result = form.render();
	Window.setContent( result );
	Window.display();

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

}

twinklexfd.callback.change_category = function twinklexfdCallbackChangeCategory(e) {
	var value = e.target.value;
	var root = e.target.form;
	var old_area;
	var childNodes = root.childNodes;
	for( var i = 0; i < childNodes.length; ++i ) {
		var node = childNodes[i];
		if( 
			node instanceof Element &&
			node.getAttribute( 'name' ) == 'work_area' 
		) {
			old_area = node;
			break;
		}
	}
	var work_area = null;

	switch( value ) {
	case 'afd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'مضمون برائے حذف',
				name: 'work_area'
			} );
		work_area.append( {
				type: 'checkbox',
				list: [
						{
							label: 'غلف بـ <noinclude>',
							value: 'noinclude',
							name: 'noinclude',
							tooltip: 'هذا الخيار سيضع قالب الحذف في <noinclude> تاکہ دیگر صفحات میں ظاہر نہ ہو'
						}
					]
		} );
		var afd_category = work_area.append( { 
				type:'select',
				name:'xfdcat',
				label:'Choose what category this nomination belongs in' 
			} );

		afd_category.append( { type:'option', label:'Unknown', value:'?', selected:true } );
		afd_category.append( { type:'option', label:'Media and music', value:'M' } );
		afd_category.append( { type:'option', label:'Organisation, corporation, or product', value:'O' } );
		afd_category.append( { type:'option', label:'Biographical', value:'B' } );
		afd_category.append( { type:'option', label:'Society topics', value:'S' } );
		afd_category.append( { type:'option', label:'Web or internet', value:'W' } );
		afd_category.append( { type:'option', label:'Games or sports', value:'G' } );
		afd_category.append( { type:'option', label:'Science and technology', value:'T' } );
		afd_category.append( { type:'option', label:'Fiction and the arts', value:'F' } );
		afd_category.append( { type:'option', label:'Places and transportation', value:'P' } );
		afd_category.append( { type:'option', label:'Indiscernible or unclassifiable topic', value:'I' } );
		afd_category.append( { type:'option', label:'Debate not yet sorted', value:'U' } );

		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	case 'tfd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'سانچہ برائے حذف',
				name: 'work_area'
			} );
		work_area.append( {
				type: 'checkbox',
				list: [
						{
							label: 'غلف بـ <noinclude>',
							value: 'noinclude',
							name: 'noinclude',
							tooltip: 'هذا الخيار سيضع قالب الحذف في <noinclude> تاکہ دیگر صفحات میں ظاہر نہ ہو',
							disabled: true,
							checked: false
						}
					]
		} );
		work_area.append( {
				type: 'checkbox',
				list: [
						{
							label: 'Inline template',
							value: 'tfdinline',
							name: 'tfdinline',
							tooltip: 'Use \{\{tfd-inline\}\} to tag the page instead of \{\{tfd\}\}.',
							checked: false
						}
					]
		} );
		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	case 'mfd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'دیگر صفحات برائے حذف',
				name: 'work_area'
			} );
		work_area.append( {
				type: 'checkbox',
				list: [
						{
							label: 'غلف بـ <noinclude>',
							value: 'noinclude',
							name: 'noinclude',
							tooltip: 'هذا الخيار سيضع قالب الحذف في <noinclude> تاکہ دیگر صفحات میں ظاہر نہ ہو'
						}
					]
		} );
		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	case 'ifd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'ملف برائے حذف',
				name: 'work_area'
			} );
		work_area.append( {
				type: 'checkbox',
				name: 'puf',
				list: [
					{
						label: 'Possibly unfree file',
						value: 'puf',
						tooltip: 'File has disputed source or licensing information'
					}
				]
			} );
		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	case 'cfd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'زمرہ برائے حذف',
				name: 'work_area'
			} );
		var cfd_category = work_area.append( {
				type: 'select',
				label: 'Choose type of action wanted: ',
				name: 'xfdcat',
				event: function(e) {
					var value = e.target.value;
					var target = e.target.form.xfdtarget;
					if( value == 'cfd' ) {
						target.disabled = true;
					} else {
						target.disabled = false;
					}
				}
			} );
		cfd_category.append( { type:'option', label: 'Deletion', value: 'cfd', selected:true } );
		cfd_category.append( { type:'option', label:'Merge', value:'cfm' } );
		cfd_category.append( { type:'option', label:'Renaming', value:'cfr' } );
		cfd_category.append( { type:'option', label:'Convert into article', value:'cfc' } );

		work_area.append( {
				type: 'input',
				name: 'xfdtarget',
				label: 'Target page: ',
				disabled: true,
				value: ''
			} );
		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	case 'rfd':
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'رجوع مکرر برائے حذف',
				name: 'work_area'
			} );
		work_area.append( {
				type: 'textarea',
				name: 'xfdreason',
				label: 'وجہ: '
			} );
		work_area.append( { type:'submit', label:'روانہ کریں' } );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	default:
		work_area = new QuickForm.element( { 
				type: 'field',
				label: 'Nothing for anything',
				name: 'work_area'
			} );
		work_area = work_area.render();
		old_area.parentNode.replaceChild( work_area, old_area );
		break;
	}
}

twinklexfd.callbacks = {
	afd: {
		main: function ( self ) {
			var xmlDoc = self.responseXML;
			var titles = xmlDoc.evaluate( '//allpages/p/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

			// There has been no earlier entries with this prefix, just go on.
			if( titles.snapshotLength <= 0 ) {
				self.params.numbering = self.params.number = '';
				numbering = number = '';
			} else {
				var number = 0;
				for( var i = 0; i < titles.snapshotLength; ++i ) {
					var title = titles.snapshotItem(i).value;

					// First, simple test, is there an instance with this exact name?
					if( title == 'منصوبہ:صفحات برائے حذف/' + wgPageName ) {
						number = Math.max( number, 1 );
						continue;
					}

					var order_re = new RegExp( '^' +
							RegExp.escape( 'منصوبہ:صفحات برائے حذف/' + wgPageName, true ) +
							'\\s*\\(\\s*(?:نامزدگی )?(\\d+)\\s*\\)\\s*$'
					);
					var match = order_re.exec( title );

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

					// A match, set number to the max of current
					number = Math.max( number, Number(match[1]) );
				}
				self.params.number = num2order( parseInt( number ) + 1);
				self.params.numbering = number > 0 ? ' (نامزدگی' + self.params.number + ')' : '';
			}

			Status.info( 'دیگر صفحۂ نامزدگی","[[منصوبہ:صفحات برائے حذف/' + wgPageName + self.params.numbering + ']]' );

			// Tagging article
			var query = {
				'title': wgPageName,
				'action': 'submit'
			};
			var wikipedia_wiki = new Wikipedia.wiki( 'مضمون میں سانچہ حذف لگ رہا ہے', query, twinklexfd.callbacks.afd.article );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Discussion page
			query = {
				'title': 'منصوبہ:صفحات برائے حذف/' + wgPageName + self.params.numbering,
				'action': 'submit'
			};

			// Updating data for the action completed event
			Wikipedia.actionCompleted.redirect = query['title'];
			Wikipedia.actionCompleted.notice = "تکمیل، رجوع مکرر برائے تبادلۂ خیال صفحہ تخلیق ہورہا ہے";

			var wikipedia_wiki = new Wikipedia.wiki( 'تبادلۂ خیال صفحہ برائے حذف تخلیق ہورہا ہے', query, twinklexfd.callbacks.afd.discussionPage );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Today's list
			var date = new Date();

			query = {
				'title': 'منصوبہ:صفحات برائے حذف/وثق/' + date.getUTCMonthName() + ' ' + date.getUTCFullYear(),
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'اس مہینہ کے وثق میں نامزدگی کا اضافہ ہورہا ہے', query, twinklexfd.callbacks.afd.todaysList );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Notification to first contributor

			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				var query = {
					'title': 'User talk:' + user,
					'action': 'submit'
				};
				var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.afd.userNotification );
				wikipedia_wiki.params = self.params;
				wikipedia_wiki.get();
			}
			
			if( self.params.usertalk ) {
				var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
		},
		article: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per memo
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "نامزدگی برائے حذف؛ ملاحظہ فرمائیں [[منصوبہ:صفحات برائے حذف/" + wgPageName + self.params.numbering + ']].'+ TwinkleConfig.summaryAd,
				'wpTextbox1': ( self.params.noinclude ? "<noinclude>" : "" ) + "\{\{حذف/تاریخ|1=|تاریخ={\{trans:MONTHNAME}\}\ {\{trans:general}\}" + ( self.params.number == '' ? "\}\}\n" : '|2=' + self.params.number + "}}\n" ) + ( self.params.noinclude ? "</noinclude>" : "" ) + form.wpTextbox1.value
			};
			self.post( postData );
		},
		discussionPage: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "مضمون کے لیے صفحۂ تبادلۂ خیال برائے حذف تخلیق کریں \[\[" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{subst:صفحۂ تبادلۂ خیال برائے حذف|صفحہ=" + wgPageName + "|cat=" + self.params.xfdcat + "|وجہ=" + self.params.reason + " }\}\n"
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var old_text = form.wpTextbox1.value;

			var text = old_text.replace( /(<!--آغاز وثق-->\n+)/, "$1\{\{حذف/برائے حذف|" + wgPageName + self.params.numbering + "|\{\{نسخ:يوم\}\} \{\{نسخ:اسم_شهر\}\} \{\{نسخ:عام\}\}\}\}\n");
			if( text == old_text ) {
				self.statelem.error( 'فشلت في العثور على المكان المستهدف للنقاش' );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "اضافہ\[\[منصوبہ:صفحات برائے حذف/" + wgPageName + self.params.numbering + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:AFDWarning|1=" + wgPageName + ( self.params.numbering != '' ? '|order=&#32;' + self.params.numbering : '' ) + "\}\} \~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'انتباہ برائے نامزدگیٔ حذف \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	},
	tfd: {
		taggingTemplate: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per memo
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "نامزدگی برائے حذف; ملاحظہ فرمائیں \[\[منصوبہ:صفحات برائے حذف/" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{حذف/تاريخ|1=|تاريخ={\{نسخ:اسم_شهر}\}\ {\{نسخ:عام}\}" + "\}\}\n" + form.wpTextbox1.value
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var old_text = form.wpTextbox1.value;
			text = old_text.replace( /(<!--أضف المقالات تحت هذا السطر-->\n+)/, "$1\{\{حذف/للحذف|" + wgPageName + self.params.numbering + "|\{\{نسخ:يوم\}\} \{\{نسخ:اسم_شهر\}\} \{\{نسخ:عام\}\}\}\}\n"); 

			if( text == old_text ) {
				self.statelem.error( 'فشلت في العثور على المكان المستهدف للنقاش' );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "اضافہ[[سانچہ:" + wgTitle + ']].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:AFDWarning|1=" + wgPageName + "\}\} \~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'تنبيه ترشيح \[\[سانچہ:' + wgTitle + '\]\] برائے حذف.' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	},
	mfd: {
		main: function ( self ) {
			var xmlDoc = self.responseXML;
			var titles = xmlDoc.evaluate( '//allpages/p/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

			// There has been no earlier entries with this prefix, just go on.
			if( titles.snapshotLength <= 0 ) {
				self.params.numbering = self.params.number = '';
				numbering = number = '';
			} else {
				var number = 0;
				for( var i = 0; i < titles.snapshotLength; ++i ) {
					var title = titles.snapshotItem(i).value;

					// First, simple test, is there an instance with this exact name?
					if( title == 'منصوبہ:صفحات برائے حذف/' + wgPageName ) {
						number = Math.max( number, 1 );
						continue;
					}

					var order_re = new RegExp( '^' +
							RegExp.escape( 'منصوبہ:صفحات برائے حذف/' + wgPageName, true ) +
							'\\s*\\(\\s*(?:الترشيح )?(\\d+)\\s*\\)\\s*$'
					);
					var match = order_re.exec( title );

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

					// A match, set number to the max of current
					number = Math.max( number, Number(match[1]) );
				}
				self.params.number = num2order( parseInt( number ) + 1);
				self.params.numbering = number > 0 ? ' (نامزدگی' + self.params.number + ')' : '';
			}

			Status.info( 'صفحة الترشيح التالية","[[منصوبہ:صفحات برائے حذف/' + wgPageName + self.params.numbering + ']]' );

			// Tagging article
			var query = {
				'title': wgPageName,
				'action': 'submit'
			};
			var wikipedia_wiki = new Wikipedia.wiki( 'يتم وسم الصفحة بقالب الحذف', query, twinklexfd.callbacks.afd.article );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Discussion page
			query = {
				'title': 'منصوبہ:صفحات برائے حذف/' + wgPageName + self.params.numbering,
				'action': 'submit'
			};

			// Updating data for the action completed event
			Wikipedia.actionCompleted.redirect = query['title'];
			Wikipedia.actionCompleted.notice = "تم الوسم، يتم تحويلك لصفحة النقاش";

			var wikipedia_wiki = new Wikipedia.wiki( 'يتم إنشاء صفحة نقاش الحذف', query, twinklexfd.callbacks.afd.discussionPage );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Today's list
			var date = new Date();

			query = {
				'title': 'منصوبہ:صفحات برائے حذف/وثق/' + date.getUTCMonthName() + ' ' + date.getUTCFullYear(),
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.afd.todaysList );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Notification to first contributor

			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				var query = {
					'title': 'User talk:' + user,
					'action': 'submit'
				};
				var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.afd.userNotification );
				wikipedia_wiki.params = self.params;
				wikipedia_wiki.get();
			}
			
			if( self.params.usertalk ) {
				var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
		},
		article: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per memo
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "ترشيح للحذف؛ ملاحظہ فرمائیں [[منصوبہ:صفحات برائے حذف/" + wgPageName + self.params.numbering + ']].'+ TwinkleConfig.summaryAd,
				'wpTextbox1': ( self.params.noinclude ? "<noinclude>" : "" ) + "\{\{حذف/تاريخ|1=|تاريخ={\{نسخ:اسم_شهر}\}\ {\{نسخ:عام}\}" + ( self.params.number == '' ? "\}\}\n" : '|2=' + self.params.number + "}}\n" ) + ( self.params.noinclude ? "</noinclude>" : "" ) + form.wpTextbox1.value
			};
			self.post( postData );
		},
		discussionPage: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "إنشاء صفحة نقاش الحذف لمقالة \[\[" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{subst:نقاش الحذف|الصفحة=" + wgPageName + "|cat=" + self.params.xfdcat + "|وجہ=" + self.params.reason + " }\}\n"
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var old_text = form.wpTextbox1.value;

			var text = old_text.replace( /(<!--أضف المقالات تحت هذا السطر-->\n+)/, "$1\{\{حذف/للحذف2|" + wgPageName + self.params.numbering + "|\{\{نسخ:يوم\}\} \{\{نسخ:اسم_شهر\}\} \{\{نسخ:عام\}\}\|" + wgCanonicalNamespace + "|" + wgTitle + "}\}\n");
			if( text == old_text ) {
				self.statelem.error( 'فشلت في العثور على المكان المستهدف للنقاش' );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "اضافہ\[\[منصوبہ:صفحات برائے حذف/" + wgPageName + self.params.numbering + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:AFDWarning|1=" + wgPageName + ( self.params.numbering != '' ? '|order=&#32;' + self.params.numbering : '' ) + "\}\} \~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'تنبيه لترشح حذف \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	},
	ifd: {
		main: function( self ) {
			var xmlDoc = self.responseXML;
			var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			self.params.uploader = user;
			var query = {
				'title': 'Wikipedia:Files for deletion/' + self.params.date,
				'action': 'submit'
			};

			wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.ifd.todaysList );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Updating data for the action completed event
			Wikipedia.actionCompleted.redirect = query['title'];
			Wikipedia.actionCompleted.notice = "تم الوسم، يتم تحويلك لصفحة النقاش";

			// Notification to first contributor

			if( self.params.usertalk ) {
				var query = {
					'title': 'User talk:' + self.params.uploader,
					'action': 'submit'
				};
				wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + self.params.uploader + ')', query, twinklexfd.callbacks.ifd.userNotification );
				wikipedia_wiki.get();
			}
		},
		taggingImage: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per 
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "This file is being considered for deletion in accordance with Wikipedia's [[Wikipedia:Deletion policy|Deletion policy]]; See \[\[Wikipedia:Files for deletion#" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{ifd|log=" + self.params.date + "\}\}\n" + form.wpTextbox1.value
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "Adding discussion for \[\[:" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': form.wpTextbox1.value + "\n\{\{subst:ifd2|1=" + wgTitle + "|Uploader=" + self.params.uploader + "|Reason=" + self.params.reason + "\}\} \~\~\~\~"
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:idw|1=" + wgTitle + "\}\}";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Notification: FfD nomination of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		tagInstancesMain: function( self ) {
			var xmlDoc = self.responseXML;
			var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
			var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, nsResolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

			if( snapshot.snapshotLength == 0 ) {
				return;
			}

			var statusIndicator = new Status('Tagging file instances ', '0%');
			var total = snapshot.snapshotLength * 2;

			var date = new Date();
			var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();

			imageTaggingCounter = 0;
			var onsuccess = function( self ) {
				var obj = self.params.obj;
				var total = self.params.total;
				var now = parseInt( 100 * ++imageTaggingCounter/total ) + '%';
				obj.update( now );
				self.statelem.unlink();
				if( imageTaggingCounter == total ) {
					obj.info( now + ' (completed)' );
					Wikipedia.removeCheckpoint();
				}
			}

			var onloaded = onsuccess;

			var onloading = function( self ) {}


			Wikipedia.addCheckpoint();
			for ( var i = 0; i < snapshot.snapshotLength; ++i ) {
				var title = snapshot.snapshotItem(i).value;
				var query = {
					'title': title,
					'action': 'submit'
				}
				var wikipedia_wiki = new Wikipedia.wiki( "Tagging of " + title, query, twinklexfd.callbacks.ifd.tagInstances );
				wikipedia_wiki.params = { title:title, total:total, obj:statusIndicator, date:dateString };
				wikipedia_wiki.onloading = onloading;
				wikipedia_wiki.onloaded = onloaded;
				wikipedia_wiki.onsuccess = onsuccess;
				wikipedia_wiki.get();
			}
		},
		tagInstances: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var text = form.wpTextbox1.value;
			var old_text = text;
			var wikiPage = new Mediawiki.Page( text );

			var tag = "\{\{ifdc|1=" + wgTitle + "|log=" + self.params.date + "\}\}";
			wikiPage.addToImageComment( wgTitle, tag );

			text = wikiPage.getText();
			if( text == old_text ) {
				// Nothing to do, return
				self.onsuccess( self );
				Wikipedia.actionCompleted();
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Tagging [[:File:' + wgTitle + "]] which is up for deletion at [[WP:FFD|Files for deletion]]" + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	},
	puf: {
		taggingImage: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per 
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "This file has been listed on [[Wikipedia:Possibly unfree files]] because the information on its source or copyright status is disputed; See \[\[Wikipedia:Possibly unfree files#" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{puf|log=" + self.params.date + "\}\}\n" + form.wpTextbox1.value
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "Adding discussion for \[\[:" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': form.wpTextbox1.value + "\n\{\{subst:puf2|image=" + wgTitle + "|reason=" + self.params.reason + "\}\} \~\~\~\~"
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:idw-puf|1=" + wgTitle + "\}\} --\~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Notification: PUF posting of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		tagInstancesMain: function( self ) {
			var xmlDoc = self.responseXML;
			var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
			var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, nsResolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

			if( snapshot.snapshotLength == 0 ) {
				return;
			}
			var statusIndicator = new Status('Tagging file instances', '0%');
			var total = snapshot.snapshotLength * 2;

			var date = new Date();
			var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();

			imageTaggingCounter = 0;
			var onsuccess = function( self ) {
				var obj = self.params.obj;
				var total = self.params.total;
				var now = parseInt( 100 * ++imageTaggingCounter/total ) + '%';
				obj.update( now );
				self.statelem.unlink();
				if( imageTaggingCounter == total ) {
					obj.info( now + ' (completed)' );
					Wikipedia.removeCheckpoint();
				}
			}
			var onloaded = onsuccess;

			var onloading = function( wikipedia_wiki ) {}


			Wikipedia.addCheckpoint();
			for ( var i = 0; i < snapshot.snapshotLength; ++i ) {
				var title = snapshot.snapshotItem(i).value;
				var query = {
					'title': title,
					'action': 'submit'
				}
				var wikipedia_wiki = new Wikipedia.wiki( "Tagging " + title, query, twinklexfd.callbacks.puf.tagInstances );
				wikipedia_wiki.params = { title:title, total:total, obj:statusIndicator, date:dateString };
				wikipedia_wiki.onloading = onloading;
				wikipedia_wiki.onloaded = onloaded;
				wikipedia_wiki.onsuccess = onsuccess;
				wikipedia_wiki.get();
			}
		},
		tagInstances: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var text = form.wpTextbox1.value;
			var old_text = text;
			var wikiPage = new Mediawiki.Page( text );

			var tag = "\{\{pufc|1=" + wgTitle + "|log=" + self.params.date + "\}\}";
			wikiPage.addToImageComment( wgTitle, tag );

			text = wikiPage.getText();
			if( text == old_text ) {
				// Nothing to do, return
				self.onsuccess( self );
				Wikipedia.actionCompleted();
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Tagging [[:File:' + wgTitle + "]] which has been listed on [[WP:PUF|Possible unfree files]]" + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}

	},
	cfd: {
		taggingCategory: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var added_data = "";
			var summary = "";
			switch( self.params.xfdcat ) {
			case 'cfd':
				added_data = "\{\{subst:cfd\}\}";
				summary = "This category is being considered for deletion in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfm':
				added_data = "\{\{subst:cfm|" + self.params.target.replace('Category:','') + "\}\}";
				summary = "This category is being considered for merging in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfr':
				added_data = "\{\{subst:cfr|" + self.params.target.replace('Category:','') + "\}\}";
				summary = "This category is being considered for renaming in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfc':
				added_data = "\{\{subst:cfc|" + self.params.target + "\}\}";
				summary = "This category is being considered for conversion in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
				break;
			}
			var postData = {
				'wpMinoredit': undefined, // Per the cabal
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': summary,
				'wpTextbox1': added_data + "\n" + form.wpTextbox1.value
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var added_data = "";
			var summary = "";
			switch( this.params.xfdcat ) {
			case 'cfd':
				added_data = "\{\{subst:cfd2|1=" + wgTitle + "|text=" + self.params.reason + " \~\~\~\~\}\}";
				summary = "Added delete nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfm':
				added_data = "\{\{subst:cfm2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
				summary = "Added merge nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfr':
				added_data = "\{\{subst:cfr2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
				summary = "Added rename nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
				break;
			case 'cfc':
				added_data = "\{\{subst:cfc2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
				summary = "Added convert nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
				break;
			}
			var old_text = form.wpTextbox1.value;

			text = old_text.replace( '-->', "-->\n" + added_data );
			if( text == old_text ) {
				self.statelem.error( 'فشلت في العثور على المكان المستهدف للنقاش' );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': summary,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			var intext = "";
			switch( self.params.xfdcat ) {
			case 'cfd':
				intext = 'for deletion';
				break;
			case 'cfm':
				intext = 'for merging into \{\{lc|' + self.params.target + "\}\}" ;
				break;
			case 'cfr':
				intext = 'for renaming to \{\{lc|' + self.params.target + "\}\}" ;
				break;
			case 'cfc':
				intext = 'for converting into an article named \{\{lc|' + self.params.target + "\}\}" ;
				break;
			}
			text += "\n==CfD nomination of [[:" + wgPageName + "]]==\nI have nominated \{\{lc|" + wgTitle + "\}\} " + intext + ". Your opinions on the matter are welcome; please participate in the discussion by adding your comments at [[" + self.params.todaysPage + "#" + wgPageName + "|the discussion page]]. Thank you. \~\~\~\~";

			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Notification: CfD nomination of \[\[:' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	},
	rfd: {
		main: function( self ) {
			var xmlDoc = self.responseXML;
			var target = xmlDoc.evaluate( '//redirects/r/@to', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			if( !target ) {
				self.statelem.error( 'no target of this redirect, aborting' );
				return;
			}
			self.params.target = target;

			// Tagging redirect
			var query = {
				'title': wgPageName,
				'action': 'submit'
			};

			wikipedia_wiki = new Wikipedia.wiki( 'يتم وسم التحويل بقالب الحذف', query, twinklexfd.callbacks.rfd.taggingRedirect );
			wikipedia_wiki.followRedirect = false;
			wikipedia_wiki.get();

			var date = new Date();
			var today = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
			var query = {
				'title': 'Wikipedia:Redirects for discussion/Log/' + today,
				'action': 'submit'
			};

			wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.rfd.todaysList );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();

			// Updating data for the action completed event
			Wikipedia.actionCompleted.redirect = query['title'];
			Wikipedia.actionCompleted.notice = "تم الوسم، يتم تحويلك لصفحة النقاش";

			self.params.todaysPage = query['title'];

			// Notifying initial contributor
			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				var query = {
					'title': 'User talk:' + user,
					'action': 'submit'
				};
				var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.rfd.userNotification );
				wikipedia_wiki.params = self.params;
				wikipedia_wiki.get();
			}
			
			if( self.params.usertalk ) {
				var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
		},
		taggingRedirect: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var postData = {
				'wpMinoredit': undefined, // Per 
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "This redirect has been listed on \[\[Wikipedia:Redirects for discussion\]\]." + TwinkleConfig.summaryAd,
				'wpTextbox1': "\{\{rfd\}\}\n" + form.wpTextbox1.value
			};
			self.post( postData );
		},
		todaysList: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var old_text = form.wpTextbox1.value;
			var text = old_text.replace( /(<\!-- Add new entries directly below this line -->\n+)/, "$1\{\{subst:rfd2|redirect="+ wgPageName + "|target=" + self.params.target + "|text=" + self.params.reason.toUpperCaseFirstChar() +"\}\} \~\~\~\~\n" );
			if( text == old_text ) {
				self.statelem.error( 'فشلت في العثور على المكان المستهدف للنقاش' );
				return;
			}
 
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': "Adding [[" + wgPageName + ']].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n==RfD nomination of [[:" + wgPageName + "]]==\nI have nominated " + ln( wgNamespaceNumber, wgTitle ) + " for discussion. Your opinions on the matter are welcome; please participate in the discussion by adding your comments at [[" + self.params.todaysPage + "#" + wgPageName + "|the discussion page]]. Thank you. \~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': form.wpSection.value,
				'wpSummary': 'Notification: RFD posting of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	}
}

twinklexfd.callback.evaluate = function(e) {

	wgPageName = wgPageName.replace( /_/g, ' ' ); // for queen/king/whatever and country!

	var type =  e.target.category.value;
	var usertalk = e.target.notify.checked;
	var reason = e.target.xfdreason.value;
	if( type in {'afd':'','cfd':''} ) {
		var xfdcat = e.target.xfdcat.value;
	}
	if( type == 'ifd' ) {
		var puf = e.target.puf.checked;
	}
	if( type in {'afd':'','mfd':''} ) {
		var noinclude = e.target.noinclude.checked;
	}
	if( type == 'tfd' ) {
		var tfdinline = e.target.tfdinline.checked;
	}

	Status.init( e.target );

	if( type == null ) {
		Status.error( 'Error', 'no action given' );
		return;
	}

	switch( type ) {
	case 'afd': // AFD
		var query = {
			'action': 'query',
			'list': 'allpages',
			'apprefix': 'Articles for deletion/' + wgPageName,
			'apnamespace': 4,
			'apfilterredir': 'nonredirects',
			'aplimit': userIsInGroup( 'sysop' ) ? 5000 : 500
		};
		var wikipedia_api = new Wikipedia.api( 'يتم وسم المقالة بقالب الحذف', query, twinklexfd.callbacks.afd.main );
		wikipedia_api.params = { usertalk:usertalk, reason:reason, noinclude:noinclude, xfdcat:xfdcat };
		wikipedia_api.post();
		break;
	case 'tfd': // TFD
		Wikipedia.addCheckpoint();
		// Tagging article
		var query = {
			'title': wgPageName,
			'action': 'submit'
		};
		wikipedia_wiki = new Wikipedia.wiki( 'يتم وسم القالب بقالب الحذف', query, twinklexfd.callbacks.tfd.taggingTemplate );
		wikipedia_wiki.params = { tfdinline:tfdinline };
		wikipedia_wiki.get();

		// Adding discussion
		var date = new Date();

		query = {
			'title': 'ويكيبيديا:نقاش الحذف/أرشيف/' + date.getUTCMonthName() + ' ' + date.getUTCFullYear(),
			'action': 'submit',
			'section': 1
		};

		// Updating data for the action completed event
		Wikipedia.actionCompleted.redirect = query['title'];
		Wikipedia.actionCompleted.notice = "Nomination completed, redirecting now to the list of today";

		wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.tfd.todaysList );
		wikipedia_wiki.params = { reason:reason };
		wikipedia_wiki.get();

		var query = {
			'action': 'query',
			'prop': 'revisions',
			'titles': wgPageName,
			'rvlimit': 1,
			'rvprop': 'user',
			'rvdir': 'newer'
		}
		var callback = function( self ) {
			var xmlDoc = self.responseXML;
			var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			var query = {
				'title': 'User talk:' + user,
				'action': 'submit'
			};
			var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.tfd.userNotification );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();
		}
		if( usertalk ) {
			var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
			wikipedia_api.params = self.params;
			wikipedia_api.post();
		}

		Wikipedia.removeCheckpoint();
		break;
	case 'mfd': // MFD

		var query = {
			'action': 'query',
			'list': 'allpages',
			'apprefix': 'Miscellany for deletion/' + wgPageName,
			'apnamespace': 4,
			'apfilterredir': 'nonredirects',
			'aplimit': userIsInGroup( 'sysop' ) ? 5000 : 500
		};
		var wikipedia_api = new Wikipedia.api( 'Querying allpages', query, twinklexfd.callbacks.mfd.main );
		wikipedia_api.params = { usertalk:usertalk, reason:reason, noinclude:noinclude, xfdcat:xfdcat };
		wikipedia_api.post();
		break;
	case 'ifd': // IFD

		var date = new Date();
		var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
		var params = { usertalk: usertalk, reason: reason, date: dateString };

		Wikipedia.addCheckpoint();
		if( puf ) {
			// Tagging file
			var query = {
				'title': wgPageName,
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'Tagging file with PUF tag', query, twinklexfd.callbacks.puf.taggingImage );
			wikipedia_wiki.params = params;
			wikipedia_wiki.get();
			// Adding discussion

			query = {
				'title': 'Wikipedia:Possibly unfree files/' + dateString,
				'action': 'submit'
			};

			// Updating data for the action completed event
			Wikipedia.actionCompleted.redirect = query['title'];
			Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to today\'s list";

			wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.puf.todaysList );
			wikipedia_wiki.params = params;
			wikipedia_wiki.get();

			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				var query = {
					'title': 'User talk:' + user,
					'action': 'submit'
				};
				var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.puf.userNotification );
				wikipedia_wiki.params = self.params;
				wikipedia_wiki.get();
			}
			if( usertalk ) {
				var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
				wikipedia_api.params = params;
				wikipedia_api.post();
			}

			Wikipedia.removeCheckpoint();

			// adding tag to captions
			var query = {
				'action': 'query',
				'list': 'imageusage',
				'iutitle': wgPageName,
				'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
			};

			//var wikipedia_api = new Wikipedia.api( 'Grabbing file links', query, twinklexfd.callbacks.puf.tagInstancesMain );
			//wikipedia_api.post();

		} else {
			// Tagging file
			var query = {
				'title': wgPageName,
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'يتم وسم الملف بقالب الحذف', query, twinklexfd.callbacks.ifd.taggingImage );
			wikipedia_wiki.params = params;
			wikipedia_wiki.get();

			// Contributor specific edits
			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, twinklexfd.callbacks.ifd.main );
			wikipedia_api.params = params;
			wikipedia_api.post();

			// adding tag to captions
			var query = {
				'action': 'query',
				'list': 'imageusage',
				'iutitle': wgPageName,
				'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
			};

			var wikipedia_api = new Wikipedia.api( 'Grabbing file links', query, twinklexfd.callbacks.ifd.tagInstancesMain );
			wikipedia_api.post();
		}
		Wikipedia.removeCheckpoint();
		break;
	case 'cfd':
		Wikipedia.addCheckpoint();
		if( e.target.xfdtarget ) {
			var target = e.target.xfdtarget.value.replace( /^\:?Category\:/, '' );
		} else {
			var target = '';
		}

		var date = new Date();
		var todaysPage = 'Wikipedia:Categories for discussion/Log/' + date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();

		// Updating data for the action completed event
		Wikipedia.actionCompleted.redirect = todaysPage;
		Wikipedia.actionCompleted.notice = "تم الوسم، يتم تحويلك لصفحة النقاش";

		// Tagging category

		var query = {
			'title': wgPageName,
			'action': 'submit'
		};
		var params = { reason:reason, xfdcat:xfdcat, target:target };

		var wikipedia_wiki = new Wikipedia.wiki( 'يتم وسم التصنيف بقالب الحذف', query, twinklexfd.callbacks.cfd.taggingCategory );
		wikipedia_wiki.params = params;
		wikipedia_wiki.get();

		// Today's list
		var query = {
			'title': todaysPage,
			'action': 'submit',
			'section': 2
		};

		var wikipedia_wiki = new Wikipedia.wiki( 'يتم إضافة النقاش إلى أرشيف هذ الشهر', query, twinklexfd.callbacks.cfd.todaysList );
		wikipedia_wiki.params = params;
		wikipedia_wiki.get();

		// Notification to first contributor
		var query = {
			'action': 'query',
			'prop': 'revisions',
			'titles': wgPageName,
			'rvlimit': 1,
			'rvprop': 'user',
			'rvdir': 'newer'
		}
		var callback = function( self ) {
			var xmlDoc = self.responseXML;
			var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			var query = {
				'title': 'User talk:' + user,
				'action': 'submit'
			};
			var wikipedia_wiki = new Wikipedia.wiki( 'يتم تنبيه المساهم الأول (' + user + ')', query, twinklexfd.callbacks.cfd.userNotification );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.get();
		}
		if( usertalk ) {
			var wikipedia_api = new Wikipedia.api( 'يتم سحب بيانات المساهم الأول', query, callback );
			wikipedia_api.params = { xfdcat:xfdcat, target:target, todaysPage:todaysPage };
			wikipedia_api.post();
		}

		Wikipedia.removeCheckpoint();
		break;
	case 'rfd':
		var query = {
			'action': 'query',
			'titles': wgPageName,
			'redirects': true
		};
		var wikipedia_api = new Wikipedia.api( 'Querying redirect', query, twinklexfd.callbacks.rfd.main );
		wikipedia_api.params = { usertalk:usertalk, reason:reason };
		wikipedia_api.post();
		break;
	}
}