பயனர்:Kiran Gopi/twinklespeedy.js

கட்டற்ற கலைக்களஞ்சியமான விக்கிப்பீடியாவில் இருந்து.

குறிப்பு - சேமித்த பின்னர், நீங்கள் செய்த மாற்றங்களைக் காண்பதற்கு உங்கள் உலவியின் இடைமாற்று அகற்றப்பட வேண்டும்.

  • மொஸில்லா பயர்பாக்ஸ் / சபாரி: Shift+Reload, அல்லது Ctrl-F5 அல்லது Ctrl-R (⌘-R Mac ல்)
  • கூகிள் குரோம் Ctrl-Shift-R அழுத்தவும். (⌘-Shift-R Mac ல்) ;
  • இண்டர்நெட் எக்ஸ்ப்ளோரர்: Ctrl-Refresh அல்லது 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 = "";
}

/**
 TwinkleConfig.deletionSummaryAd (string)
 If ad should be added or not to deletion summary, default [[WP:TWINKLE|TWINKLE]]
 */
if( typeof( TwinkleConfig.deletionSummaryAd ) == 'undefined' ) {
	TwinkleConfig.deletionSummaryAd = "";
}

/**
 TwinkleConfig.watchSpeedyPages (array)
 What types of actions that should result in forced addition to watchlist
 */
if( typeof( TwinkleConfig.watchSpeedyPages ) == 'undefined' ) {
	TwinkleConfig.watchSpeedyPages = [ 'g3', 'g5', 'g10', 'g11', 'g12' ];
}

/**
 TwinkleConfig.markSpeedyPagesAsMinor (boolean)
 If, when applying speedy template to page, to mark the edit as minor, default true
 */
if( typeof( TwinkleConfig.markSpeedyPagesAsMinor ) == 'undefined' ) {
	TwinkleConfig.markSpeedyPagesAsMinor = false;
}

/**
 TwinkleConfig.markSpeedyPagesAsPatrolled (boolean)
 If, when applying speedy template to page, to mark the page as patrolled, default true
 */
if( typeof( TwinkleConfig.markSpeedyPagesAsPatrolled ) == 'undefined' ) {
	TwinkleConfig.markSpeedyPagesAsPatrolled = false;
}

/**
 TwinkleConfig.notifyUserOnSpeedyDeletionNomination (array of strings)
 What types of actions that should result that the author of the page should be notified of nomination
 */
if( typeof( TwinkleConfig.notifyUserOnSpeedyDeletionNomination ) == 'undefined' ) {
	TwinkleConfig.notifyUserOnSpeedyDeletionNomination = [ 'g1', 'g2', 'g3', 'g4', 'g10', 'g11', 'g12', 'a1', 'a2', 'a3', 'a5', 'a7', 'a9', 'a10', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f9', 'f10', 'f11', 'u3', 't2', 't3', 'p2' ];
}

/**
 TwinkleConfig.welcomeUserOnSpeedyDeletionNotification (array of strings)
 On what types of speedy deletion notifications shall the user be welcomed
 with a {{firstarticle}} notice if his talk page has not yet been created.
 */
if( typeof( TwinkleConfig.welcomeUserOnSpeedyDeletionNotification ) == 'undefined' ) {
	TwinkleConfig.welcomeUserOnSpeedyDeletionNotification = TwinkleConfig.notifyUserOnSpeedyDeletionNomination;
}

/**
 TwinkleConfig.openUserTalkPageOnSpeedyDelete (array of strings)
 What types of actions that should result user talk page to be opened when speedily deleting (admin only)
 */
if( typeof( TwinkleConfig.openUserTalkPageOnSpeedyDelete ) == 'undefined' ) {
	TwinkleConfig.openUserTalkPageOnSpeedyDelete = [ 'g1', 'g2', 'g3', 'g4', 'g5', 'g10', 'g11', 'g12', 'a1', 'a3', 'a7', 'a9', 'a10', 'f3', 'f4', 'f5', 'f6', 'f7', 'f9', 'f11', 'u3', 't2' ];
}

/**
 TwinkleConfig.userTalkPageMode may take arguments:
 'window': open a new window, remember the opened window
 'tab': opens in a new tab, if possible.
 'blank': force open in a new window, even if a such window exist
 */
if( typeof( TwinkleConfig.userTalkPageMode ) == 'undefined' ) {
	TwinkleConfig.userTalkPageMode = 'tab';
}

/**
 TwinkleConfig.deleteTalkPageOnDelete (boolean)
 If talk page if exists should also be deleted (CSD G8) when spedying a page (admin only)
 */
if( typeof( TwinkleConfig.deleteTalkPageOnDelete ) == 'undefined' ) {
	TwinkleConfig.deleteTalkPageOnDelete = false;
}

/**
 TwinkleConfig.orphanNormalPagesOnSpeedyDelete (hash)
 Defines if all backlinks to a page should be removed.
 property 'exclude' defined actions not to orphan
 */
if( typeof( TwinkleConfig.orphanBacklinksOnSpeedyDelete ) == 'undefined' ) {
	TwinkleConfig.orphanBacklinksOnSpeedyDelete = { exclude: ['g6'], orphan:false };
}

/**
 TwinkleConfig.speedyWindowWidth (integer)
 Defines the width of the Twinkle SD window in pixels
 */
if( typeof( TwinkleConfig.speedyWindowWidth ) == 'undefined' ) {
	TwinkleConfig.speedyWindowWidth = 800;
}

/**
 TwinkleConfig.speedyWindowHeight (integer)
 Defines the height of the Twinkle SD window in pixels
 */
if( typeof( TwinkleConfig.speedyWindowHeight ) == 'undefined' ) {
	TwinkleConfig.speedyWindowHeight = 500;
}


function twinklespeedy() {
	if( wgNamespaceNumber < 0 || wgCurRevisionId == false ) {
		return;
	}
	if( userIsInGroup( 'sysop' ) ) {
		mw.util.addPortletLink( 'p-cactions', "javascript:twinklespeedy.callback()", "விரைந்து", "tw-csd", "പെട്ടെന്ന് മായ്ക്കുക", "");
	} else if (twinkleConfigExists) {
		mw.util.addPortletLink( 'p-cactions', "javascript:twinklespeedy.callback()", "விரைந்து", "tw-csd", "പെട്ടെന്ന് മായ്ക്കാൻ നിർദ്ദേശിക്കുക", "");
	}
	else
	{
		mw.util.addPortletLink('p-cactions', 'javascript:alert("താങ്കൾക്ക് ട്വിങ്കിൾ ഉപയോഗിക്കാൻ സാധിക്കില്ല.");', 'விரைந்து', 'tw-csd', 'പെട്ടെന്ന് മായ്ക്കാൻ നിർദ്ദേശിക്കുക', '');
	}
}
$(twinklespeedy);

twinklespeedy.callback = function twinklespeedyCallback() {
	var Window = new SimpleWindow( TwinkleConfig.speedyWindowWidth, TwinkleConfig.speedyWindowHeight );
	Window.setTitle( "விரைந்து நீக்குவதற்கான காரணத்தைத் தெரிவு செய்" );

	var form = new QuickForm( userIsInGroup( 'sysop' ) ? twinklespeedy.callback.evaluateSysop : twinklespeedy.callback.evaluateUser, 'change' );
	if( userIsInGroup( 'sysop' ) ) {
		form.append( {
				type: 'checkbox',
				list: [
					{
						label: 'നിർദ്ദേശം മാത്രം - മായ്ക്കേണ്ടതില്ല',
						value: 'tag_only',
						name: 'tag_only',
						tooltip: 'താൾ സ്വയം മായ്ക്കാതെ പെട്ടെന്ന് മായ്ക്കാൻ നിർദ്ദേശിക്കുക മാത്രം ചെയ്യുക',
                                                checked:true,
						event: function( event ) {
							event.target.form.notify.disabled = !event.target.checked;
							event.target.form.notify.checked = event.target.checked;
							event.stopPropagation();
						}
					},
					{
						label: 'കണ്ണികളെ അനാഥമാക്കുക',
						value: 'orphan_backlinks',
						name: 'orphan_backlinks',
						tooltip: 'ഈ താളിലേക്കുള്ള കണ്ണികളെ അനാഥമാക്കുക',
						checked: TwinkleConfig.orphanBacklinksOnSpeedyDelete.orphan,
						event: function( event ) {
							TwinkleConfig.orphanBacklinksOnSpeedyDelete.orphan = event.target.checked;
							event.stopPropagation();
						}
					}
				]
			} );
	}

	form.append( {
			type: 'checkbox',
			list: [
				{
					label: 'பயனருக்குத் தகவல் அளிக்க',
					value: 'notify',
					name: 'notify',
					tooltip: 'சாத்தியமெனில் பயனருக்குத் தகவல் அளிக்க',
					checked: !userIsInGroup( 'sysop' ),
					disabled: userIsInGroup( 'sysop' ),
					event: function( event ) {
						event.stopPropagation();
					}
				}
			]
		}
	);
	if( wgNamespaceNumber ==  Namespace.IMAGE ) {
		form.append( {type:'header', label:'படிமங்கள்' } );
		form.append ( {
				type: 'radio',
				name: 'csd',
				list: [
					{ 
						label: 'இன்னொரு கோப்பு உள்ளது',
						value: 'இன்னொரு கோப்பு உள்ளது',
						tooltip: 'വിക്കിപീഡിയയിൽ നിലവിലുള്ള പ്രമാണത്തിന്റെ അതേ ഗുണമുള്ളതോ ഗുണം കുറവായതോ ആയ പകർപ്പ്. വിക്കിമീഡിയ കോമൺസിലേക്ക് നീക്കിയിട്ടുള്ള ചിത്രങ്ങളെ പകർപ്പവകാശത്തിനായ കാര്യങ്ങൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്താതെ ഇപ്രകാരം മായ്ക്കരുത്.' 
					},
					{ 
						label: 'முறையற்ற படிமம்',
						value: 'முறையற்ற படிமம்', 
						tooltip: 'സാങ്കേതികതകരാറുകൾ മൂലം ഉപയോഗിക്കാൻ സാധ്യമല്ലാത്തതോ ശൂന്യമായതോ ആയ പ്രമാണം. ഇത് നീക്കം ചെയ്യും മുമ്പ് തീർത്തും ഉപയോഗശൂന്യമെന്ന് ഉറപ്പുവരുത്തേണ്ടതാണ്‌' 
					},
					{ 
						label: 'விக்கிப்பீடியாவில் ஏற்றுக்கொள்ளத்தக்க உரிமம் அல்ல',
						value: 'விக்கிப்பீடியாவில் ஏற்றுக்கொள்ளத்தக்க உரிமம் அல்ல',
						tooltip: '2005 മേയ് 19-നു ശേഷം "കമേഴ്ഷ്യൽ ഉപയോഗം പാടില്ല", "ഡെറിവേറ്റിവ് വർക്സ് പാടില്ല" മുതലായ അനുബന്ധങ്ങളുമായി വിക്കിപീഡിയയിൽ ചേർക്കപ്പെട്ട പ്രമാണങ്ങൾ. 2005 മേയ് 19-ന്‌ മുമ്പ് ചേർക്കപ്പെട്ട പ്രമാണങ്ങളും താളുകളിൽ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ നീക്കം ചെയ്യാവുന്നതാണ്‌'
					},
					{
						label: 'പകർപ്പവകാശ വിവരങ്ങൾ ചേർത്തിട്ടില്ല', 
						value: 'പകർപ്പവകാശ വിവരങ്ങൾ ചേർത്തിട്ടില്ല',
						tooltip: 'വിക്കിപീഡിയയിലേക്ക് അപ്‌ലോഡ് ചെയ്ത് ഒരാഴ്ച്ചയായ ശേഷവും പകർപ്പവകാശ വിവരങ്ങൾ ചേർക്കപ്പെട്ടിട്ടില്ലാത്ത പ്രമാണങ്ങൾ'
					},
					{
						label: 'താളുകളിലെങ്ങും ഉപയോഗിക്കാത്ത ന്യായോപയോഗപ്രമാണം',
						value: 'താളുകളിലെങ്ങും ഉപയോഗിക്കാത്ത ന്യായോപയോഗപ്രമാണം',
						tooltip: 'സ്വതന്ത്രമല്ലാത്തതും ന്യായോപയോഗകാരണം മൂലം വിക്കിയിൽ അപ്‌ലോഡ് ചെയ്തവയുമായതും ലേഖനങ്ങളിലൊന്നും ഉപയോഗിക്കപ്പെടാത്തതുമായ പ്രമാണങ്ങൾ' 
					},
					{
						label: 'ന്യായോപയോഗ റേഷണൽ ഇല്ലാത്ത സ്വതന്ത്രമല്ലാത്ത പ്രമാണം',
						value: 'ന്യായോപയോഗ റേഷണൽ ഇല്ലാത്ത സ്വതന്ത്രമല്ലാത്ത പ്രമാണം',
						tooltip: 'സ്വതന്ത്രമല്ലാത്തതും അതേ സമയം ന്യായോപയോഗ റേഷണൽ നൽകിയിട്ടില്ലാത്തതുമായ പ്രമാണം'
					},
					{ 
						label: 'അസാധുവായ ന്യായോപയോഗകാരണം',
						value: 'അസാധുവായ ന്യായോപയോഗകാരണം', 
						tooltip: 'അസാധുവായ ന്യായോപയോഗകാരണം നൽകിയിട്ടുള്ള സ്വതന്ത്രമല്ലാത്ത പ്രമാണം' 
					},
					{
						label: 'കോമൺസിലെ പ്രമാണത്തിന്റെ പകർപ്പ്',
						value: 'കോമൺസിലെ പ്രമാണത്തിന്റെ പകർപ്പ്',
						tooltip: 'താഴെപ്പറയുന്ന കാര്യങ്ങൾ ഉറപ്പായിട്ടുള്ള കോമൺസ് പ്രമാണത്തിന്റെ പകർപ്പ് : 1. കോമൺസിൽ ലൈസൻസ് അംഗീകരിക്കപ്പെട്ടതാണ്‌. കോമൺസിലെ ലൈസൻസ്, ഉറവിടം എന്നിവ ശരിയാണ്‌ 2. പ്രമാണത്താളിലുള്ള വിവരങ്ങളെല്ലാം കോമൺസ് താലിലുമുണ്ട് (ഇതിൽ എല്ലാ പൂർവ്വചരിത്രവും ഉപയോക്താവിന്റെ താളിലേക്കുള്ള കണ്ണികളും ഉൾപ്പെടുന്നു) 3. പ്രമാണം സംരക്ഷിതമോ കോമൺസിലേക്ക് നീക്കാനുള്ള അഭ്യർത്ഥനയുള്ള ഫലകമുള്ളതോ അല്ല 4. കോമൺസിൽ പ്രമാണത്തിന്റെ പേര്‌ വേറെയാണെങ്കിൽ നിലവിൽ ഉപയോഗിക്കപ്പെടുന്ന സ്ഥലത്തെല്ലാം പേര്‌ മാറ്റിയിട്ടുണ്ടാകണം'
					},
					{
						label: 'ഉറപ്പായ പകർപ്പവകാശ ലംഘനം',
						value: 'ഉറപ്പായ പകർപ്പവകാശ ലംഘനം',
						tooltip: 'വിക്കിപീഡിയയുടെ ലൈസൻസിങ്ങ് നയവുമായി ഒത്തുപോകാത്ത വെബ്സൈറ്റുകൾ, മറ്റ് ഉറവിടങ്ങൾ എന്നിവിടങ്ങളിൽ നിന്നുള്ള ഉറപ്പായ പകർപ്പ്'
					},
					{
						label: 'ഉപയോഗശൂന്യം',
						value: 'ഉപയോഗശൂന്യം',
						tooltip: 'ചിത്രം/വീഡിയോ/ഓഡിയോ ഇവയിൽ പെടാത്തതോ താളുകളിലൊന്നും ഉപയോഗിക്കാത്തതും ഉപയോഗിക്കാൻ സാധ്യതയില്ലാത്തതുമായതോ ആയ പ്രമാണം'
					},
					{
						label: 'അനുമതിയില്ല',
						value: 'അനുമതിയില്ല',
						tooltip: 'ഉറവിടം മൂന്നാം കക്ഷിയായി നൽകിയിട്ടുള്ളതും എന്നാൽ ഉപയോഗത്തിന്‌ മൂന്നാം കക്ഷിയുടെ അനുമതി ലഭിച്ചിട്ടില്ലാത്തതുമായ പ്രമാണം. അപ്‌ലോഡ് ചെയ്തയാളെ അറിയിച്ച് ഒരാഴ്ച കഴിഞ്ഞാൽ നീക്കം ചെയ്യാം'
					}
				]
			} );
	}

	if( wgNamespaceNumber ==  0 || wgNamespaceNumber == 1 ) {
		form.append( { type:'header', label:'ലേഖനങ്ങൾ' } );
		form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{
					label: 'ആവശ്യത്തിന്‌ വിവരങ്ങളില്ല',
					value: 'ആവശ്യത്തിന്‌ വിവരങ്ങളില്ല',
					tooltip: 'വിഷയം എന്തെന്ന് ധാരണ നൽകാനാവശ്യമായ ഉള്ളടക്കം പോലുമില്ലാത്ത ലേഖനം'
				},
				{
					label: 'ഉള്ളടക്കം മലയാളമല്ല',
					value: 'ഉള്ളടക്കം മലയാളമല്ല',
					tooltip: 'മലയാളമല്ലാത്ത ഭാഷയിലുള്ള ലേഖനം'
				},
				{
					label: 'ഉള്ളടക്കം യൂനികോഡല്ല',
					value: 'ഉള്ളടക്കം യൂനികോഡല്ല',
					tooltip: 'യൂനികോഡ് ഇതര ഉള്ളടക്കമുള്ള മലയാളലേഖനം'
				},
				{
					label: 'ശൂന്യം',
					value: 'ശൂന്യം',
					tooltip: 'കണ്ണികളും വർഗ്ഗങ്ങളും മറ്റും മാത്രം നൽകിയിട്ടുള്ളതും ലേഖനപരമായ ഉള്ളടക്കമില്ലാത്തതുമായ താൾ'
				},
				{
					label: 'ശ്രദ്ധേയതയില്ല',
					value: 'ശ്രദ്ധേയതയില്ല',
					tooltip: 'വിക്കിയിൽ ലേഖനം വരാൻ മാത്രം ശ്രദ്ധേയതയില്ലെന്ന് പ്രഥമദൃഷ്ട്യാ തന്നെ ഉറപ്പാക്കാനാകുന്ന വിഷയം'
				},
				{
					label: 'നിലവിലുള്ള ലേഖനത്തിന്റെ പകർപ്പ്',
					value: 'നിലവിലുള്ള ലേഖനത്തിന്റെ പകർപ്പ്',
					tooltip: 'നിലവിലുള്ള ലേഖനം പ്രതിപാദിക്കുന്ന വിഷയത്തെക്കുറിച്ച് കൂടുതലായി വിവരങ്ങളൊന്നും നൽകാത്ത പുതിയ ലേഖനം'
				},
				{
					label: 'വിജ്ഞാനകോശസ്വഭാവമില്ല',
					value: 'വിജ്ഞാനകോശസ്വഭാവമില്ല',
					tooltip: 'തീർത്തും വിജ്ഞാനകോശസ്വഭാവമില്ലാത്ത ലേഖനം'
				}
			]
		} );
	}
	if( wgNamespaceNumber ==  14 || wgNamespaceNumber == 15 ) {
		form.append( { type:'header', label: 'വർഗ്ഗങ്ങൾ' } );
		form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{ 
					label: 'ശൂന്യമായ വർഗ്ഗം',
					value: 'ശൂന്യമായ വർഗ്ഗം',
					tooltip: 'താളുകളോ ഉപവർഗ്ഗങ്ങളോ ഇല്ലാത്ത വർഗ്ഗം'
				}
			]
		} );
	} if( wgNamespaceNumber ==  2 || wgNamespaceNumber == 3 ) {
		form.append( { type:'header', label: 'ഉപയോക്തൃതാളുകൾ' } );
		form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{
					label: 'ഉപയോക്താവിന്റെ അഭ്യർത്ഥന',
					value: 'ഉപയോക്താവിന്റെ അഭ്യർത്ഥന',
					tooltip: 'സ്വന്തം ഉപയോക്തൃതാളോ ഉപതാളോ മായ്ക്കാനുള്ള ഉപയോക്താവിന്റെ അഭ്യർത്ഥന'
				},
				{
					label: 'ഉപയോക്താവ് നിലവിലില്ല',
					value: 'ഉപയോക്താവ് നിലവിലില്ല',
					tooltip: 'നിലവിലില്ലാത്ത ഉപയോക്താവിന്റെ ഉപയോക്തൃതാൾ അഥവാ ഉപതാൾ'
				},
				{
					label: 'സ്വതന്ത്രമല്ലാത്ത ചിത്രശാല',
					value: 'സ്വതന്ത്രമല്ലാത്ത ചിത്രശാല',
					tooltip: 'സ്വതന്ത്രമല്ലാത്തതോ ന്യായോപയോഗപരിധിയിൽ വരുന്നതോ ആയ പ്രമാണങ്ങളുടെ ഉപയോക്തൃനെയിംസ്പേസിലെ ചിത്രശാല'
				},
			]
		} );
	} if( wgNamespaceNumber ==  10 || wgNamespaceNumber == 11 ) {
		form.append( { type:'header', label: 'ഫലകങ്ങൾ' } );
		form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{
					label: 'നയങ്ങൾക്ക് എതിരായുള്ള ഫലകം',
					value: 'നയങ്ങൾക്ക് എതിരായുള്ള ഫലകം',
					tooltip: 'വിക്കിപീഡിയ നയങ്ങൾക്ക് എതിരായുള്ള ഫലകം'
				},
				{
					label: 'ഉപയോഗമില്ലാത്ത ഫലകം',
					value: 'ഉപയോഗമില്ലാത്ത ഫലകം',
					tooltip: 'ഉപയോഗമില്ലാത്ത ഫലകം'
				}
			]
		} );
	} if( wgNamespaceNumber ==  100 || wgNamespaceNumber == 101 ) {
		form.append( { type:'header', label: 'കവാടങ്ങൾ' } );
		form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{
					label: 'ആവശ്യത്തിന്‌ ലേഖനങ്ങളില്ല',
					value: 'ആവശ്യത്തിന്‌ ലേഖനങ്ങളില്ല',
					tooltip: 'വിഷയത്തിന്റെ കീഴിൽ ആവശ്യത്തിന്‌ ലേഖനങ്ങളില്ലാത്ത കവാടം'
				}
			]
		} ); }

	form.append( { type:'header', label:'പൊതുവായവ' } );
	form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{ 
					label: 'യാതൊരു അർത്ഥവുമില്ലാത്തത്', 
					value: 'യാതൊരു അർത്ഥവുമില്ലാത്തത്', 
					tooltip: 'അർത്ഥശൂന്യമായ താൾ' 
                                },
				{ 
					label: 'പരീക്ഷണം',
					value: 'പരീക്ഷണം',
					tooltip: 'പരീക്ഷണമായി നിർമ്മിച്ച താൾ' 
				},
				{ 
					label: 'വാൻഡലിസം',
					value: 'വാൻഡലിസം',
					tooltip: 'ശുദ്ധമായ വാൻഡലിസം'
				},
				{
					label: 'മുമ്പ് മായ്ച്ചത്',
					value: 'മുമ്പ് മായ്ച്ചത്',
					tooltip: 'ചർച്ചയ്ക്ക് ശേഷം നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സമാനമായ പുനഃസൃഷ്ടി'
				},
				{
					label: 'നിരോധിതനായ ഉപയോക്താവ്', 
					value: 'നിരോധിതനായ ഉപയോക്താവ്',
					tooltip: 'നിരോധിതനായ ഉപയോക്താവ് നിരോധിതനായിരിക്കെ സൃഷ്ടിച്ച താൾ'
				},
				{
					label: 'നാൾവഴി ലയനം', 
					value: 'നാൾവഴി ലയനം',
					tooltip: 'രണ്ട് താളുകളുടെ നാൾവഴികളെ ലയിപ്പിക്കാനായി ഒന്ന് താത്കാലികമായി നീക്കം ചെയ്യുക' 
				},
				{
					label: 'തലക്കെട്ട് മാറ്റൽ', 
					value: 'തലക്കെട്ട് മാറ്റൽ',
					tooltip: 'നിലവിലുള്ള താളിന്റെ തലക്കെട്ട് മാറ്റാനായി ഈ താൾ നീക്കം ചെയ്യുക' 
				},
				{
					label: 'ഒഴിവാക്കൽ ചർച്ചയുടെ ഫലം',
					value: 'ഒഴിവാക്കൽ ചർച്ചയുടെ ഫലം',
					tooltip: 'ഒഴിവാക്കാൻ സാധ്യതയുള്ള ലേഖനങ്ങളുടെ താളിൽ നടന്ന ചർച്ചയുടെ ഫലമായി ഒഴിവാക്കാൻ സമവായമായ താൾ"'
				},
				{
					label: 'നിലവിലില്ലാത്ത താളിനെ ആശ്രയിക്കുന്ന താൾ',
					value: 'നിലവിലില്ലാത്ത താളിനെ ആശ്രയിക്കുന്ന താൾ',
					tooltip: 'നിലവിലില്ലാത്ത താളിനെ ആശ്രയിക്കുന്ന താൾ'
				},
				{
					label: 'നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സംവാദത്താൾ',
					value: 'നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സംവാദത്താൾ',
					tooltip: 'നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സംവാദത്താൾ'
				},
				{
					label: 'മാതൃതാളില്ലാത്ത ഉപതാൾ',
					value: 'മാതൃതാളില്ലാത്ത ഉപതാൾ',
					tooltip: 'മാതൃതാളില്ലാത്ത ഉപതാൾ'
				},
				{
					label: 'നിലവിലില്ലാത്ത താളിലേക്കുള്ള തിരിച്ചുവിടൽ',
					value: 'നിലവിലില്ലാത്ത താളിലേക്കുള്ള തിരിച്ചുവിടൽ',
					tooltip: 'നിലവിലില്ലാത്ത താളിലേക്കുള്ള തിരിച്ചുവിടൽ'
				},
				{ 
					label: 'വ്യക്തിപരമായ ആക്രമണം',
					value: 'വ്യക്തിപരമായ ആക്രമണം', 
					tooltip: 'വിക്കിപീഡിയ എഡിറ്റർമാരെയോ മറ്റ് വ്യക്തികളെയോ ആക്രമിക്കാൻ ലക്ഷ്യം വച്ചുള്ള താൾ'
				},
				{ 
					label: 'പരസ്യം',
					value: 'പരസ്യം', 
					tooltip: 'തീർത്തും പരസ്യസ്വഭാവമുള്ള താൾ'
				},
				{ 
					label: 'പകർപ്പവകാശ ലംഘനം', 
					value: 'പകർപ്പവകാശ ലംഘനം', 
					tooltip: 'പകർപ്പവകാശ ലംഘനം' 
				}
			]
		});

	form.append( { type:'header', label: 'തിരിച്ചുവിടലുകൾ' } );
	form.append( {
			type: 'radio',
			name: 'csd',
			list: [
				{ 
					label: 'മുഖ്യ നെയിംസ്പേസിൽ നിന്ന് മറ്റ് നെയിംസ്പേസിലേക്കുള്ള തിരിച്ചുവിടൽ', 
					value: 'മുഖ്യ നെയിംസ്പേസിൽ നിന്ന് മറ്റ് നെയിംസ്പേസിലേക്കുള്ള തിരിച്ചുവിടൽ', 
					tooltip: 'വർഗ്ഗം, ഫലകം, വിക്കിപീഡിയ, സഹായം, കവാടം എന്നിവയൊഴികെ മറ്റേതെങ്കിലും നെയിംസ്പേസിലേക്ക് മുഖ്യ നെയിംസ്പേസിൽ നിന്നുള്ള തിരിച്ചുവിടൽ'
				},
				{ 
					label: 'തലക്കെട്ടിൽ അസാധ്യമായ അക്ഷരപ്പിശക്', 
					value: 'തലക്കെട്ടിൽ അസാധ്യമായ അക്ഷരപ്പിശക്', 
					tooltip: 'അസാധ്യമായ അക്ഷരപ്പിശകിൽ നിന്നുള്ള തിരിച്ചുവിടൽ'
				},
                                { 
					label: 'അനാവിശ്യമായ തിരിച്ചുവിടൽ', 
					value: 'അനാവിശ്യമായ തിരിച്ചുവിടൽ', 
					tooltip: 'ഈ തിരിച്ചുവിടൽ ആവിശ്യമില്ല'
				},
			]
		} );
	var result = form.render();
	Window.setContent( result );
	Window.display();
}

twinklespeedy.normalizeHash = {
	'യാതൊരു അർത്ഥവുമില്ലാത്തത്': 'g1',
	'പരീക്ഷണം': 'g2',
	'വാൻഡലിസം': 'g3',
	'hoax': 'g3',
	'pagemove': 'g3',
	'മുമ്പ് മായ്ച്ചത്': 'g4',
	'നിരോധിതനായ ഉപയോക്താവ്': 'g5',
	'നാൾവഴി ലയനം': 'g6',
	'തലക്കെട്ട് മാറ്റൽ': 'g6',
	'ഒഴിവാക്കൽ ചർച്ചയുടെ ഫലം': 'g6',
	'g6': 'g6',
	'author': 'g7',
	'blanked': 'g7',
	'നിലവിലില്ലാത്ത താളിനെ ആശ്രയിക്കുന്ന താൾ': 'g8',
	'നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സംവാദത്താൾ': 'g8',
	'മാതൃതാളില്ലാത്ത ഉപതാൾ': 'g8',
	'നിലവിലില്ലാത്ത താളിലേക്കുള്ള തിരിച്ചുവിടൽ': 'g8',
	'templatecat': 'g8',
	'വ്യക്തിപരമായ ആക്രമണം': 'g10',
	'പരസ്യം': 'g11',
	'പകർപ്പവകാശ ലംഘനം': 'g12',
	'ആവശ്യത്തിന്‌ വിവരങ്ങളില്ല': 'a1',
	'ഉള്ളടക്കം മലയാളമല്ല': 'a2',
	'ശൂന്യം': 'a3', 
	'transwiki': 'a5',
	'ശ്രദ്ധേയതയില്ല': 'a7',
	'person': 'a7',
	'corp': 'a7',
	'web': 'a7',
	'band': 'a7',
	'club': 'a7',
	'a9': 'a9',
	'നിലവിലുള്ള ലേഖനത്തിന്റെ പകർപ്പ്': 'a10',
	'മുഖ്യ നെയിംസ്പേസിൽ നിന്ന് മറ്റ് നെയിംസ്പേസിലേക്കുള്ള തിരിച്ചുവിടൽ': 'r2',
	'അസാധ്യമായ അക്ഷരപ്പിശക്': 'r3',
	'നിലവിലുള്ള ഫയലിന്റെ പകർപ്പ്': 'f1',
	'അസാധുവായ പ്രമാണം': 'f2',
	'വിക്കിപീഡിയയിൽ ഉപയോഗിക്കാനാകാത്ത ലൈസൻസ്': 'f3',
	'പകർപ്പവകാശ വിവരങ്ങൾ ചേർത്തിട്ടില്ല': 'f4',
	'താളുകളിലെങ്ങും ഉപയോഗിക്കാത്ത ന്യായോപയോഗപ്രമാണം': 'f5',
	'ന്യായോപയോഗ റേഷണൽ ഇല്ലാത്ത സ്വതന്ത്രമല്ലാത്ത പ്രമാണം': 'f6',
	'അസാധുവായ ന്യായോപയോഗകാരണം': 'f7',
	'കോമൺസിലെ പ്രമാണത്തിന്റെ പകർപ്പ്': 'f8',
	'ഉറപ്പായ പകർപ്പവകാശ ലംഘനം': 'f9',
	'ഉപയോഗശൂന്യം': 'f10',
	'അനുമതിയില്ല': 'f11',
	'ശൂന്യമായ വർഗ്ഗം': 'c1',
	'ഉപയോക്താവിന്റെ അഭ്യർത്ഥന': 'u1',
	'ഉപയോക്താവ് നിലവിലില്ല': 'u2',
	'സ്വതന്ത്രമല്ലാത്ത ചിത്രശാല': 'u3',
	'നയങ്ങൾക്ക് എതിരായുള്ള ഫലകം':'t2',
	'ഉപയോഗമില്ലാത്ത ഫലകം':'t3',
	'ആവശ്യത്തിന്‌ ലേഖനങ്ങളില്ല': 'p2'
};

twinklespeedy.callbacks = {
	sysop: {
		main: function( self ) {
			var xmlDoc = self.responseXML;
			var normal = xmlDoc.evaluate( '//normalized/n/@to', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			if( normal ) {
				wgPageName = normal;
			}
			var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;

			if( ! exists ) {
				self.statelem.error( "താൾ നിലവിലില്ലെന്ന് തോന്നുന്നു. ഒരുപക്ഷെ നീക്കം ചെയ്യപ്പെട്ടിട്ടുണ്ടാകാം" );
				return;
			}

			if( self.params.openusertalk ) {
				// Open talk page of first contributor
				var query = {
					'action': 'query',
					'prop': 'revisions',
					'titles': wgPageName,
					'rvlimit': 1,
					'rvprop': 'user',
					'rvdir': 'newer'
				}

				var wikipedia_api = new Wikipedia.api( 'താളിന്റെ സ്രഷ്ടാവിനെ തിരയുന്നു', query, twinklespeedy.callbacks.sysop.openUserTalkPage );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
			
			var query = { 
				'title': wgPageName, 
				'action': 'delete'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'താൾ മായ്ക്കുന്നു', query, twinklespeedy.callbacks.sysop.deletePage );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.followRedirect = false;
			wikipedia_wiki.get();

			if( 
				TwinkleConfig.deleteTalkPageOnDelete && 
				self.params.normalized != 'f8' &&
				wgNamespaceNumber % 2 == 0 && 
				wgNamespaceNumber != Namespace.USER && 
				document.getElementById( 'ca-talk' ).className != 'new' 
			) {
				var talk_page = namespaces[ wgNamespaceNumber  + 1 ] + ':' + wgTitle;
				var query = query = {
					'title': talk_page,
					'action': 'delete'
				};
				var wikipedia_wiki = new Wikipedia.wiki( 'സംവാദത്താൾ നീക്കുന്നു', query, twinklespeedy.callbacks.sysop.deleteTalkPage );
				wikipedia_wiki.params = self.params;
				wikipedia_wiki.followRedirect = false;
				wikipedia_wiki.get();
			}

			if( wgNamespaceNumber == 6 && self.params.normalized != 'f8' ) {
				var query = {
					'action': 'query',
					'list': 'imageusage',
					'titles': wgPageName,
					'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
				};
				var wikipedia_api = new Wikipedia.api( 'കണ്ണികൾ കണ്ടെത്തുന്നു', query, twinklespeedy.callbacks.sysop.unlinkImageInstancesMain );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
			var doOrphan = TwinkleConfig.orphanBacklinksOnSpeedyDelete;
			if( 
				doOrphan.orphan && 
				doOrphan.exclude.indexOf( self.params.normalized.toLowerCase() ) == -1 
			) {
				var query = {
					'action': 'query',
					'list': 'backlinks',
					'blfilterredir': 'nonredirects',
					'bltitle': wgPageName,
					'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500, // 500 is max for normal users, 5000 for bots and sysops
					'blnamespace': [0, 100] // Main namespace and portal namespace only, keep on talk pages.
				};
				var wikipedia_api = new Wikipedia.api( 'കണ്ണികൾ കണ്ടെത്തുന്നു', query, twinklespeedy.callbacks.sysop.unlinkBacklinksMain );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
			var query = {
				'action': 'query',
				'list': 'backlinks',
				'blfilterredir': 'redirects',
				'bltitle': wgPageName,
				'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
			};
			var wikipedia_api = new Wikipedia.api( 'തിരിച്ചുവിടലുകൾ കണ്ടെത്തുന്നു', query, twinklespeedy.callbacks.sysop.deleteRedirectsMain );
			wikipedia_api.params = self.params;
			wikipedia_api.post();

		},
		openUserTalkPage: function( self ) {
			var xmlDoc = self.responseXML;
			var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
			var statusIndicator = new Status(user, ' എന്ന ഉപയോക്താവിന്റെ സംവാദത്താൾ തുറക്കുന്നു');
			
			var query = {
				'title': 'User talk:' + user,
				'action': 'edit',
				'preview': 'yes',
				'vanarticle': wgPageName.replace(/_/g, ' ')
			};
			switch( TwinkleConfig.userTalkPageMode ) {
			case 'tab':
				window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_tab' );
				break;
			case 'blank':
				window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_blank', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
				break;
			case 'window':
				default :
				window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), 'twinklewarnwindow', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
				break;
			}
			
			statusIndicator.info( 'പൂർത്തിയായി' );
		},
		unlinkBacklinksMain: function( self ) {
			var xmlDoc = self.responseXML;
			var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

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

			var statusIndicator = new Status('Removing backlinks', '0%');

			var total = snapshot.snapshotLength * 2;

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

			var onloading = function( self ) {}


			Wikipedia.addCheckpoint();
			if( snapshot.snapshotLength == 0 ) {
				statusIndicator.info( '100% (completed)' );
				Wikipedia.removeCheckpoint();
				return;
			}

			var params = clone( self.params );
			params.current = 0;
			params.total = total;
			params.obj = statusIndicator;
			params.page = wgPageName;


			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( "Unlinking on " + title, query, twinklespeedy.callbacks.sysop.unlinkBacklinks );
				wikipedia_wiki.params = params;
				wikipedia_wiki.onloading = onloading;
				wikipedia_wiki.onloaded = onloaded;
				wikipedia_wiki.onsuccess = onsuccess;
				wikipedia_wiki.get();
			}
		},
		unlinkBacklinks: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var text = form.wpTextbox1.value;
			var old_text = text;
			var wikiPage = new Mediawiki.Page( text );
			wikiPage.removeLink( self.params.page );

			text = wikiPage.getText();
			if( text == old_text ) {
				// Nothing to do, return
				self.onsuccess( self );
				Wikipedia.actionCompleted( self );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': 'പെട്ടെന്ന് നീക്കം ചെയ്യപ്പെട്ട ' + self.params.page + " എന്ന താളിലേക്കുള്ള കണ്ണികൾ നീക്കുന്നു",
				'wpTextbox1': text
			};
			self.post( postData );
		},
		deleteRedirectsMain: function( self ) {
			var xmlDoc = self.responseXML;
			var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

			var total = snapshot.snapshotLength * 2;

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

			var statusIndicator = new Status('Deleting redirects', '0%');

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

			var onloading = function( self ) {}


			Wikipedia.addCheckpoint();
			if( snapshot.snapshotLength == 0 ) {
				statusIndicator.info( '100% (completed)' );
				Wikipedia.removeCheckpoint();
				return;
			}

			var params = clone( self.params );
			params.current = 0;
			params.total = total;
			params.obj = statusIndicator;


			for ( var i = 0; i < snapshot.snapshotLength; ++i ) {
				var title = snapshot.snapshotItem(i).value;
				var query = {
					'title': title,
					'action': 'delete'
				}
				var wikipedia_wiki = new Wikipedia.wiki( "Deleting " + title, query, twinklespeedy.callbacks.sysop.deleteRedirects );
				wikipedia_wiki.params = params;
				wikipedia_wiki.onloading = onloading;
				wikipedia_wiki.onloaded = onloaded;
				wikipedia_wiki.onsuccess = onsuccess;
				wikipedia_wiki.followRedirect = false;
				wikipedia_wiki.get();
			}
		},
		deleteRedirects: function( self ) {
			var form = this.responseXML.getElementById( 'deleteconfirm' );
			if( ! form ) { // Hell, file deletion is b0rked :(
				form = this.responseXML.getElementsByTagName( 'form' )[0];
				var postData = {
					'wpDeleteReasonList': 'other',
					'wpReason': "പെട്ടെന്ന് മായ്ച്ചു : നീക്കം ചെയ്യപ്പെട്ട താളിന്റെ സംവാദത്താൾ",
					'wpEditToken': form.wpEditToken.value
				}
			} else {

				var postData = {
					'wpWatch': form.wpWatch.checked ? '' : undefined,
					'wpDeleteReasonList': 'other',
					'wpReason': "പെട്ടെന്ന് മായ്ച്ചു : നീക്കം ചെയ്യപ്പെട്ട താളിലേക്കുള്ള തിരിച്ചുവിടൽ",
					'wpEditToken': form.wpEditToken.value
				}
			}
			self.post( postData );
		},
		unlinkImageInstancesMain: function( self ) {
			var xmlDoc = self.responseXML;
			var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

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

			var statusIndicator = new Status('Unlinking file instances ', '0%');

			var total = snapshot.snapshotLength * 2;

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

			var onloading = function( self ) {}


			Wikipedia.addCheckpoint();
			if( snapshot.snapshotLength == 0 ) {
					statusIndicator.info( '100% (completed)' );
					Wikipedia.removeCheckpoint();
					return;
			}

			var params = clone( self.params );
			params.current = 0;
			params.total = total;
			params.obj = statusIndicator;
			params.image = wgTitle;

			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( "Unlinking on " + title, query, twinklespeedy.callbacks.sysop.unlinkImageInstances );
				wikipedia_wiki.params = params;
				wikipedia_wiki.onloading = onloading;
				wikipedia_wiki.onloaded = onloaded;
				wikipedia_wiki.onsuccess = onsuccess;
				wikipedia_wiki.get();
			}
		},
		unlinkImageInstances: function( self ) {
			var form = self.responseXML.getElementById('editform');
			var text = form.wpTextbox1.value;
			var old_text = text;
			var wikiPage = new Mediawiki.Page( text );
			wikiPage.commentOutImage( self.params.image, 'മായ്ക്കപ്പെട്ട ചിത്രം മറയ്ക്കുന്നു' );

			text = wikiPage.getText();
			if( text == old_text ) {
				// Nothing to do, return
				self.onsuccess( self );
				Wikipedia.actionCompleted( self );
				return;
			}
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': 'മായ്ക്കപ്പെട്ട ' + self.params.image + " എന്ന ചിത്രം നീക്കുന്നു",
				'wpTextbox1': text
			};
			self.post( postData );
		},
		deletePage: function( self ) {
			var form = this.responseXML.getElementById( 'deleteconfirm' );
			if( ! form ) { // Hell, file deletion is b0rked :(
				form = this.responseXML.getElementsByTagName( 'form' )[0];
				var postData = {
					'wpDeleteReasonList': 'other',
					'wpReason': "പെട്ടെന്ന് മായ്ച്ചു : " + self.params.value,
					'wpEditToken': form.wpEditToken.value
				}
				self.post( postData );
			} else {

				var postData = {
					'wpWatch': (self.params.watch || form.wpWatch.checked) ? '' : undefined,
					'wpDeleteReasonList': 'other',
					'wpReason': "പെട്ടെന്ന് മായ്ച്ചു : " + self.params.value,
					'wpEditToken': form.wpEditToken.value
				}
				self.post( postData );
			}
		},
		deleteTalkPage: function( self ) {
			form = this.responseXML.getElementById( 'deleteconfirm' );

			var postData = {
				'wpWatch': (self.params.watch || form.wpWatch.checked) ? '' : undefined,
				'wpDeleteReasonList': 'other',
				'wpReason': "Speedy deleted per [[WP:CSD#G8|CSD G8]], was a talk page or redirect of a deleted or nonexistent page." + TwinkleConfig.deletionSummaryAd,
				'wpEditToken': form.wpEditToken.value
			}
			self.post( postData );
		}
	},
	user: {
		main: function( self ) {
			var xmlDoc = self.responseXML;

			var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;

			if( ! exists ) {
				self.statelem.error( "താൾ നിലവിലില്ലെന്ന് തോന്നുന്നു. ഒരുപക്ഷെ നീക്കം ചെയ്യപ്പെട്ടിട്ടുണ്ടാകാം" );
				return;
			}
			var query = { 
				'title': wgPageName, 
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( 'Tagging page', query, twinklespeedy.callbacks.user.tagPage );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.followRedirect = false;
			wikipedia_wiki.get();
		},
		tagPage: function( self ) {
			form = this.responseXML.getElementById( 'editform' );

			var text = form.wpTextbox1.value;

			self.statelem.status( 'Checking for tags on the page...' );

			var tag = /(\{\{(?:മായ്ക്കുക?|SD)\|?.*?\}\})/.exec( text );

			if( tag ) {
				self.statelem.error( [ htmlNode( 'strong', tag[0] ) , " ഇപ്പോൾ തന്നെ താളിലുണ്ട്." ] )
				return;
			}

			var xfd = /(\{\{(?:[rsaitcm]fd|md1)[^{}]*?\}\})/i.exec( text );

			if( xfd && !confirm( "The deletion related template " + xfd[0] + " is already present on the page, do you still want to apply CSD template?" ) ) {
				return;
			}
			var code;
			switch( self.params.normalized ) {
				case 'u1':
					var rationale = prompt( 'ഈ താൾ മായ്ക്കപ്പെടാനുള്ള കാരണം വിശദീകരിക്കുക:' );
					if (rationale == null || rationale == '') {
						self.statelem.error( 'Aborted by user.' );
						return;
					}
					code = "\{\{Db|" +  self.params.value + "|rationale=" + rationale + "\}\}";
					break;
				case 'f8':
					var filename = prompt( 'കോമൺസിലെ പ്രമാണത്തിന്റെ പേര്‌ നൽകുക:', wgPageName.replace( '_', ' ' ) );
					if (filename == null)
					{
						self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
						return;
					}
					if( filename == '' ) {
						filename = wgPageName.replace( '_', ' ' );
					}
					var date = new Date();
					var code = "\{\{Db|" + self.params.value + "|1=" + filename + "\}\}";
					break;
				case 'g6':
					switch( self.params.value ) {
						case 'നാൾവഴി ലയനം':
							var title = prompt( 'ലയിപ്പിക്കാനുള്ള താളിന്റെ പേര്‌ നൽകുക:' );
							if (title == null)
							{
								self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
								return;
							}
							code = "\{\{Db|" +  self.params.value + "|1=" + title + "\}\}";
							break;
						default:
							code = "\{\{Db|" +  self.params.value + "\}\}";
							break;
					}
					break;
				case 'g10':
					text = ''; //blank attack pages.
					code = "\{\{Db|" +  self.params.value + "|blanked=yes\}\}";
					break; 
				case 'f9':
				case 'g12':
					var url = prompt( 'ഉറവിടത്തിന്റെ യു ആർ എൽ നൽകുക :' );
					if (url == null)
					{
						self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
						return;
					}
					code = "\{\{Db|" +  self.params.value + "|url=" + url + "\}\}";
					break;
				case 'a10':
					var title = prompt( 'പകർപ്പായ ലേഖനത്തിന്റെ പേര്‌ നൽകുക:' );
					if (title == null)
					{
						self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
						return;
					}
					code = "\{\{Db|" +  self.params.value + "|article=" + title + "\}\}";
					self.params.key1 = "article";
					self.params.value1 = title;
					break;
				case 'f1':
					var img = prompt( 'പകർപ്പായ പ്രമാണത്തിന്റെ പേര്‌ നൽകുക:' );
					if (img == null)
					{
						self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
						return;
					}
					code = "\{\{Db|" +  self.params.value + "|1=" + img + "\}\}";
					break;
				case 't3':
					var template = prompt( 'പകർപ്പായ ഫലകത്തിന്റെ പേര്‌ നൽകുക:' );
					if (template == null)
					{
						self.statelem.error( 'ഉപയോക്താവ് റദ്ദാക്കിയിരിക്കുന്നു.' );
						return;
					}
					code = "\{\{Db|" + self.params.value + "|\~\~\~\~\~|2=" + template + "\}\}";
					break;
				default:
					code = "\{\{Db|" +  self.params.value + "\}\}";
					break;
			}

			if( TwinkleConfig.markSpeedyPagesAsPatrolled && self.params.rcid != '' ) {
				var query = {
					'title': wgPageName,
					'action': 'markpatrolled',
					'rcid': self.params.rcid
				};

				var wikipedia_wiki = new Wikipedia.wiki( 'റോന്ത് ചുറ്റിയതായി രേഖപ്പെടുത്തുന്നു', query );
				wikipedia_wiki.post();
			}

			// 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;
				if( wgPageName != ( 'User talk:' + user ) ) {
					var query = {
						'title': 'User talk:' + user,
						'action': 'submit'
					};
					var wikipedia_wiki = new Wikipedia.wiki( 'താളിന്റെ സ്രഷ്ടാവിനെ അറിയിക്കുന്നു (' + user + ')', query, twinklespeedy.callbacks.user.userNotification );
					wikipedia_wiki.params = self.params;
					wikipedia_wiki.get();
				} else {
					Status.info( 'Info', 'Current page is initial contributor\'s talk page, aborting notification' );
				}
			}

			if( self.params.usertalk ) {
				var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}

			//wrap SD template in noinclude tags if we are in template space.
			//won't work with userboxes in userspace, or any other transcluded page outside template space
			if (self.params.wgCanonicalNamespace == "Template") code = "<noinclude>" + code + "</noinclude>";

			var postData = {
				'wpMinoredit': TwinkleConfig.markSpeedyPagesAsMinor ? '' : undefined,
				'wpWatchthis': (self.params.watch || form.wpWatchthis.checked ) ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': "പെട്ടെന്ന് മായ്ക്കുക : " + self.params.value,
				'wpTextbox1': code + "\n" + text
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var nowelcome = TwinkleConfig.welcomeUserOnSpeedyDeletionNotification.indexOf( self.params.normalized ) == -1;
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\n\{\{subst:Db/Notice|ലേഖനം=" + wgPageName + "|കാരണം=" + self.params.value + "\}\} \~\~\~\~";
			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': '',
				'wpSummary': 'അറിയിപ്പ് :  \[\[' + wgPageName + '\]\] പെട്ടെന്ന് മായ്ക്കാൻ നിർദ്ദേശിച്ചിരിക്കുന്നു' + TwinkleConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
	}
}

twinklespeedy.callback.evaluateSysop = function twinklespeedyCallbackEvaluateSysop(e) {

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

	var tag_only = e.target.form.tag_only;
	if( tag_only && tag_only.checked ) {
		return twinklespeedy.callback.evaluateUser(e);
	}

	var value = e.target.value;
	var normalized = twinklespeedy.normalizeHash[ value ];

	var params = {
		value: value,
		normalized: normalized,
		watch: TwinkleConfig.watchSpeedyPages.indexOf( normalized ) != -1,
		reason: value,
		openusertalk: TwinkleConfig.openUserTalkPageOnSpeedyDelete.indexOf( normalized ) != -1
	};
	Status.init( e.target.form );

	var query = {
		'action': 'query',
		'titles': wgPageName
	}
	var wikipedia_api = new Wikipedia.api( 'Checking if page exists', query, twinklespeedy.callbacks.sysop.main );
	wikipedia_api.params = params;
	wikipedia_api.post();
}

twinklespeedy.callback.evaluateUser = function twinklespeedyCallbackEvaluateUser(e) {
	wgPageName = wgPageName.replace( /_/g, ' ' ); // for queen/king/whatever and country!
	var value = e.target.value;
	var normalized = twinklespeedy.normalizeHash[ value ];

	var params = {
		value: value,
		normalized: normalized,
		watch: TwinkleConfig.watchSpeedyPages.indexOf( normalized ) != -1,
		usertalk: TwinkleConfig.notifyUserOnSpeedyDeletionNomination.indexOf( normalized ) != -1 && e.target.form.notify.checked,
		rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : '',
		wgCanonicalNamespace : wgCanonicalNamespace
	};

	Status.init( e.target.form );

	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "Tagging complete";

	var query = {
		'action': 'query',
		'titles': wgPageName
	}

	var wikipedia_api = new Wikipedia.api( 'Checking if page exists', query, twinklespeedy.callbacks.user.main );
	wikipedia_api.params = params;
	wikipedia_api.post();

}
"https://ta.wikipedia.org/w/index.php?title=பயனர்:Kiran_Gopi/twinklespeedy.js&oldid=3325689" இலிருந்து மீள்விக்கப்பட்டது