<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="he">
	<id>https://chabadpedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99%3AGadget-TemplateParamWizard.js</id>
	<title>מדיה ויקי:Gadget-TemplateParamWizard.js - היסטוריית גרסאות</title>
	<link rel="self" type="application/atom+xml" href="https://chabadpedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99%3AGadget-TemplateParamWizard.js"/>
	<link rel="alternate" type="text/html" href="https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;action=history"/>
	<updated>2026-04-10T04:12:56Z</updated>
	<subtitle>היסטוריית הגרסאות של הדף הזה בוויקי</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;diff=820024&amp;oldid=prev</id>
		<title>מ. רובין ב־13:29, 22 בינואר 2026</title>
		<link rel="alternate" type="text/html" href="https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;diff=820024&amp;oldid=prev"/>
		<updated>2026-01-22T13:29:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;amp;diff=820024&amp;amp;oldid=192608&quot;&gt;הצגת שינויים&lt;/a&gt;</summary>
		<author><name>מ. רובין</name></author>
	</entry>
	<entry>
		<id>https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;diff=192608&amp;oldid=prev</id>
		<title>שיע.ק: יצירת דף עם התוכן &quot;//Template parameters wizard //Written by User:קיפודנחש &quot;use strict&quot;; if(($.inArray(mw.config.get(&#039;wgAction&#039;), [&#039;edit&#039;, &#039;submit&#039;])+1) &amp;&amp; ( !$(&#039;#wpTex...&quot;</title>
		<link rel="alternate" type="text/html" href="https://chabadpedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:Gadget-TemplateParamWizard.js&amp;diff=192608&amp;oldid=prev"/>
		<updated>2015-01-19T05:03:15Z</updated>

		<summary type="html">&lt;p&gt;יצירת דף עם התוכן &amp;quot;//Template parameters wizard //Written by &lt;a href=&quot;/index.php?title=%D7%9E%D7%A9%D7%AA%D7%9E%D7%A9:%D7%A7%D7%99%D7%A4%D7%95%D7%93%D7%A0%D7%97%D7%A9&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;משתמש:קיפודנחש (הדף אינו קיים)&quot;&gt;User:קיפודנחש&lt;/a&gt; &amp;quot;use strict&amp;quot;; if(($.inArray(mw.config.get(&amp;#039;wgAction&amp;#039;), [&amp;#039;edit&amp;#039;, &amp;#039;submit&amp;#039;])+1) &amp;amp;&amp;amp; ( !$(&amp;#039;#wpTex...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;דף חדש&lt;/b&gt;&lt;/p&gt;&lt;div&gt;//Template parameters wizard&lt;br /&gt;
//Written by [[User:קיפודנחש]]&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
if(($.inArray(mw.config.get(&amp;#039;wgAction&amp;#039;), [&amp;#039;edit&amp;#039;, &amp;#039;submit&amp;#039;])+1) &amp;amp;&amp;amp; ( !$(&amp;#039;#wpTextbox1&amp;#039;).prop( &amp;#039;readonly&amp;#039; ) ) )&lt;br /&gt;
$(function() {&lt;br /&gt;
	// template parameter is an object with the following fields:&lt;br /&gt;
	// desc: desciption string&lt;br /&gt;
	// defval: default value (optional)&lt;br /&gt;
	// options: object with optional fields:&lt;br /&gt;
	//// multiline: number of lines&lt;br /&gt;
	//// depends: another field&amp;#039;s name&lt;br /&gt;
	//// required: boolean&lt;br /&gt;
	//// date: use JS date widget&lt;br /&gt;
	//// choices: array of legal values for the field&lt;br /&gt;
	//// extended: this field will not show on initial screen, and will appear once the user selects &amp;quot;show all fields&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	var&lt;br /&gt;
	// templateParams is keyed by paramName.&lt;br /&gt;
		templateParams,&lt;br /&gt;
		paramsOrder,&lt;br /&gt;
	// which template are we working on&lt;br /&gt;
		template,&lt;br /&gt;
	// array of pairs - [paramName, inputField]&lt;br /&gt;
		dialogFields,&lt;br /&gt;
	// table rows keyed by paramName&lt;br /&gt;
		rowsBypName,&lt;br /&gt;
	// the fields, keyed by paramName&lt;br /&gt;
		fieldsBypName,&lt;br /&gt;
	// boolean, indicating we did not find &amp;quot;Parameters&amp;quot; page, so the parameters are extracted from template page itself.&lt;br /&gt;
		rawTemplate,&lt;br /&gt;
		rtl = $(&amp;#039;body&amp;#039;).is(&amp;#039;.rtl&amp;#039;),&lt;br /&gt;
	// test to see if a string contains wikiCode and hence needs parsing, or cen be used as is.&lt;br /&gt;
		wikiCodeFinder = /[\[\]\{\}\&amp;lt;\&amp;gt;]/,&lt;br /&gt;
		globalExplanation = &amp;#039;&amp;#039;,&lt;br /&gt;
		extendedParamCssRule,&lt;br /&gt;
		anyExtended = false,&lt;br /&gt;
		localStorageKey = &amp;#039;templateParamWizard&amp;#039;,&lt;br /&gt;
		emptiesKey = &amp;#039;writeEmpties&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	function addParam(name) {&lt;br /&gt;
		if ($.inArray(name, paramsOrder) == -1)&lt;br /&gt;
			paramsOrder.push(name);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function paramsFromSelection() {&lt;br /&gt;
		var selection = $(&amp;quot;#wpTextbox1&amp;quot;).textSelection(&amp;#039;getSelection&amp;#039;).replace(/^\s*\{\{|\}\}\s*$/g, &amp;#039;&amp;#039;); //scrap the first {{ and last }}&lt;br /&gt;
		var specials = [];&lt;br /&gt;
		while (true) { //extract inner links, inner templates and inner params - we don&amp;#039;t want to sptit those.&lt;br /&gt;
			var match = selection.match(/(\{\{[^\{\}\]\[]*\}\}|\[\[[^\{\}\]\[]*\]\]|\[[^\{\}\]\[]*\])/);&lt;br /&gt;
			if (! match || ! match.length)&lt;br /&gt;
				break;&lt;br /&gt;
			specials.push(match[0]);&lt;br /&gt;
			selection = selection.replace(match[0], &amp;quot;\0&amp;quot; + specials.length + &amp;quot;\0&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		var params = selection.split(/\s*\|\s*/);&lt;br /&gt;
		for (var i in params) {&lt;br /&gt;
			var param = params[i];&lt;br /&gt;
			while (true) {&lt;br /&gt;
				var match = param.match(/\0(\d+)\0/);&lt;br /&gt;
				if (! match || ! match.length)&lt;br /&gt;
					break;&lt;br /&gt;
				param = param.replace(match[0], specials[parseInt(match[1], 10)-1]);&lt;br /&gt;
			}&lt;br /&gt;
			var paramPair = param.split(&amp;quot;=&amp;quot;);&lt;br /&gt;
			var name = $.trim(paramPair.shift());&lt;br /&gt;
			if (name &amp;amp;&amp;amp; paramPair.length) {&lt;br /&gt;
				templateParams[name] = templateParams[name] || {options: {notInParamPage: 1}};&lt;br /&gt;
				addParam(name);&lt;br /&gt;
				$.extend(templateParams[name].options, {&amp;#039;defval&amp;#039;: paramPair.join(&amp;#039;=&amp;#039;)});&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function buildParamsRaw(data) {&lt;br /&gt;
		var&lt;br /&gt;
			paramExtractor = /{{3,}(.*?)[&amp;lt;|}]/mg,&lt;br /&gt;
			m;&lt;br /&gt;
		while (m = paramExtractor.exec(data)) {&lt;br /&gt;
			var paramName = $.trim(m[1]);&lt;br /&gt;
			templateParams[paramName] = {desc: &amp;#039;&amp;#039;, options: {multiline: 5}};&lt;br /&gt;
			addParam(paramName);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function buildParams(data) {&lt;br /&gt;
		var&lt;br /&gt;
			lines = data.split(&amp;quot;\n&amp;quot;),&lt;br /&gt;
			line;&lt;br /&gt;
&lt;br /&gt;
		function extractGlobalExplanation() {&lt;br /&gt;
			line = line.replace(/[!\|][^\|]*\|/, &amp;#039;&amp;#039;);&lt;br /&gt;
			if (wikiCodeFinder.test(line))&lt;br /&gt;
				$.post(&lt;br /&gt;
					mw.util.wikiScript(&amp;#039;api&amp;#039;),&lt;br /&gt;
					{action: &amp;#039;parse&amp;#039;, text: line, disablepp: 1, format: &amp;#039;json&amp;#039;},&lt;br /&gt;
					function(data) {&lt;br /&gt;
						var html = data.parse.text[&amp;#039;*&amp;#039;];&lt;br /&gt;
						globalExplanation = html;&lt;br /&gt;
						$(&amp;#039;#tpw_globalExplanation&amp;#039;).html(html).find(&amp;#039;a&amp;#039;).attr({target: &amp;#039;_blank&amp;#039;});&lt;br /&gt;
					}&lt;br /&gt;
				);&lt;br /&gt;
			else&lt;br /&gt;
				globalExplanation = line;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		while (lines &amp;amp;&amp;amp; lines.length) {&lt;br /&gt;
			line = lines.shift();&lt;br /&gt;
				if (!(/^\|-/.test(line))) // look for |- this is wikitext for table row.&lt;br /&gt;
					continue;&lt;br /&gt;
			line = lines.shift();&lt;br /&gt;
			if (line.indexOf(&amp;#039;globalExplanation&amp;#039;) + 1) {&lt;br /&gt;
				extractGlobalExplanation();&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
			if (! line || ! (/^\|/.test(line))) //wikitext for column&lt;br /&gt;
				continue;&lt;br /&gt;
			line = line.substr(1); // get rid of the leading |&lt;br /&gt;
			var fields = line.split(&amp;#039;||&amp;#039;);&lt;br /&gt;
			if (fields.length &amp;lt; 2)&lt;br /&gt;
				continue;&lt;br /&gt;
			var name = $.trim(fields[0]);&lt;br /&gt;
			if (! name)&lt;br /&gt;
				continue;&lt;br /&gt;
			var desc = $.trim(fields[1]);&lt;br /&gt;
			var pAttribs = {desc: desc};&lt;br /&gt;
			if (fields.length &amp;gt; 2)&lt;br /&gt;
				pAttribs.options = analyzeOptions($.trim(fields[2]));&lt;br /&gt;
&lt;br /&gt;
			templateParams[name] = pAttribs;&lt;br /&gt;
			addParam(name);&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function analyzeOptions(str) {&lt;br /&gt;
		var res = {},&lt;br /&gt;
			avail = [&amp;#039;multiline&amp;#039;, &amp;#039;required&amp;#039;, &amp;#039;depends&amp;#039;, &amp;#039;defval&amp;#039;, &amp;#039;choices&amp;#039;, &amp;#039;date&amp;#039;, &amp;#039;extended&amp;#039;], // maybe we&amp;#039;ll have more in the future&lt;br /&gt;
			tavail = $.map(avail, i18n),&lt;br /&gt;
			options = str.split(/\s*;\s*/);&lt;br /&gt;
		for (var i in options) {&lt;br /&gt;
			var option = options[i].split(/\s*=\s*/);&lt;br /&gt;
			var ind = $.inArray(option[0], tavail);&lt;br /&gt;
			if (ind + 1)&lt;br /&gt;
				res[avail[ind]] = option.length &amp;gt; 1 ? option[1] : true;&lt;br /&gt;
		}&lt;br /&gt;
		anyExtended = anyExtended || res.extended;&lt;br /&gt;
		return res;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function createWikiCode() {&lt;br /&gt;
		var par = [template],&lt;br /&gt;
			delim = $(&amp;#039;#oneLineTemplate&amp;#039;).prop(&amp;#039;checked&amp;#039;) ? &amp;#039;&amp;#039; : &amp;#039;\n&amp;#039;,&lt;br /&gt;
			createEmpties = $(&amp;#039;#createEmpties&amp;#039;).prop(&amp;#039;checked&amp;#039;);&lt;br /&gt;
		for (var i in dialogFields) {&lt;br /&gt;
			var&lt;br /&gt;
				field = dialogFields[i],&lt;br /&gt;
				name = $.trim(field[0]),&lt;br /&gt;
				f = field[1],&lt;br /&gt;
				hidden = f.parents(&amp;#039;.tpw_hidden&amp;#039;).length,&lt;br /&gt;
				val = $.trim(f.val());&lt;br /&gt;
			if (!createEmpties &amp;amp;&amp;amp; val === &amp;quot;&amp;quot; &amp;amp;&amp;amp; f.attr(&amp;#039;type&amp;#039;) != &amp;#039;checkbox&amp;#039;) &lt;br /&gt;
				continue;//skip parameters with no value&lt;br /&gt;
			if (f.attr(&amp;#039;type&amp;#039;) == &amp;#039;checkbox&amp;#039; &amp;amp;&amp;amp; ! f.prop(&amp;#039;checked&amp;#039;))&lt;br /&gt;
				val = &amp;quot;&amp;quot;;&lt;br /&gt;
			par.push(name + &amp;#039;=&amp;#039; + val);&lt;br /&gt;
		}&lt;br /&gt;
		return &amp;quot;{{&amp;quot; + par.join(delim + &amp;quot;|&amp;quot;) + delim + &amp;quot;}}&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function showPreview() {&lt;br /&gt;
		var temp = createWikiCode();&lt;br /&gt;
		$.post(mw.util.wikiScript(&amp;#039;api&amp;#039;),&lt;br /&gt;
			{action: &amp;#039;parse&amp;#039;,&lt;br /&gt;
				title: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
				prop: &amp;#039;text&amp;#039;,&lt;br /&gt;
				text: temp,&lt;br /&gt;
				format: &amp;#039;json&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			function(data) {&lt;br /&gt;
				if (data &amp;amp;&amp;amp; data.parse &amp;amp;&amp;amp; data.parse.text) {&lt;br /&gt;
					var buttons = [{text: i18n(&amp;#039;close&amp;#039;), click: function() {$(this).dialog(&amp;#039;close&amp;#039;);}}],&lt;br /&gt;
						div = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).html(data.parse.text[&amp;#039;*&amp;#039;]);&lt;br /&gt;
					$(&amp;#039;a&amp;#039;, div).attr(&amp;#039;target&amp;#039;, &amp;#039;_blank&amp;#039;); // we don&amp;#039;t want people to click on links in preview - they&amp;#039;ll lose their work.&lt;br /&gt;
					$(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
						.dialog(&lt;br /&gt;
							{title: i18n(&amp;#039;preview&amp;#039;),&lt;br /&gt;
							modal: true,&lt;br /&gt;
							position: [60, 60],&lt;br /&gt;
							buttons: buttons})&lt;br /&gt;
						.append(div);&lt;br /&gt;
					circumventRtlBug();&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function circumventRtlBug() {&lt;br /&gt;
		if (rtl)&lt;br /&gt;
			$(&amp;#039;.ui-dialog-buttonpane button&amp;#039;).css({float: &amp;#039;right&amp;#039;}); // jQuery has problems with rtl dialogs + ie is braindamaged.&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function i18n(key, param) {&lt;br /&gt;
		switch (mw.config.get(&amp;#039;wgUserLanguage&amp;#039;)) {&lt;br /&gt;
			case &amp;#039;ar&amp;#039;:&lt;br /&gt;
				switch (key) {&lt;br /&gt;
					case &amp;#039;explain&amp;#039;: return rawTemplate&lt;br /&gt;
						? &amp;#039;قالب &amp;quot;&amp;#039; + template + &amp;#039;&amp;quot; ليس له صفحة وسائط فرعية، لذلك فما من وصف لمعطياته.&amp;#039;&lt;br /&gt;
						: &amp;#039;الوسائط الضرورية محددة بالأحمر والبقية اختيارية.&amp;#039;;&lt;br /&gt;
					case &amp;#039;wizard dialog title&amp;#039;: return &amp;#039;وسائط &amp;#039; + &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + mw.util.getUrl(&amp;#039;قالب:&amp;#039; + template) + &amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;#039; + &amp;#039;قالب:&amp;#039; + template + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
					case &amp;#039;ok&amp;#039;: return &amp;#039;موافقة&amp;#039;;&lt;br /&gt;
					case &amp;#039;cancel&amp;#039;: return &amp;#039;إلغاء&amp;#039;;&lt;br /&gt;
					case &amp;#039;params subpage&amp;#039;: return &amp;#039;وسائط&amp;#039;;&lt;br /&gt;
					case &amp;#039;preview&amp;#039;: return &amp;#039;معاينة&amp;#039;;&lt;br /&gt;
					case &amp;#039;options select&amp;#039;: return &amp;#039;اختر معطى&amp;#039;;&lt;br /&gt;
					case &amp;#039;multiline&amp;#039;: return &amp;#039;عدد صفوف&amp;#039;;&lt;br /&gt;
					case &amp;#039;close&amp;#039;: return &amp;#039;أغلق&amp;#039;;&lt;br /&gt;
					case &amp;#039;required&amp;#039;: return &amp;#039;ضروري&amp;#039;;&lt;br /&gt;
					case &amp;#039;depends&amp;#039;: return &amp;#039;يلزمه&amp;#039;;&lt;br /&gt;
					case &amp;#039;defval&amp;#039;: return &amp;#039;غيابي&amp;#039;;&lt;br /&gt;
					case &amp;#039;choices&amp;#039;: return &amp;#039;خيارات&amp;#039;;&lt;br /&gt;
					case &amp;#039;date&amp;#039;: return &amp;#039;تاريخ&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended&amp;#039;: return &amp;#039;Extended&amp;#039;;&lt;br /&gt;
					case &amp;#039;button hint&amp;#039;: return &amp;#039;معالج وسائط القالب&amp;#039;;&lt;br /&gt;
					case &amp;#039;able templates category name&amp;#039;: return &amp;#039;قوالب صالحة لمعالج وسائط القالب&amp;#039;;&lt;br /&gt;
					case &amp;#039;template selector title&amp;#039;: return &amp;#039;اكتب اسم القالب:&amp;#039;;&lt;br /&gt;
					case &amp;#039;notInParamPage&amp;#039;: return &amp;#039;وسيط &amp;quot;&amp;#039; + param + &amp;#039;&amp;quot; ليس من وسائط القالب&amp;#039;;&lt;br /&gt;
					case &amp;#039;editParamPage&amp;#039;: return &amp;#039;عدل صفحة الوسائط&amp;#039;;&lt;br /&gt;
					case &amp;#039;unknown error&amp;#039;: return &amp;#039;وقع خطأ.\n&amp;#039; + param;&lt;br /&gt;
					case &amp;#039;please select template&amp;#039;: return &amp;#039;اسم القالب&amp;#039;;&lt;br /&gt;
					case &amp;#039;oneliner&amp;#039;: return &amp;#039;اجعله في صف واحد&amp;#039;;&lt;br /&gt;
					case &amp;#039;createempties&amp;#039;: return &amp;#039;Write empty parameters to page&amp;#039;;&lt;br /&gt;
					case &amp;#039;dateFormat&amp;#039;: return &amp;#039;d MM yy&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended labels&amp;#039;: return &amp;#039;Show all parameters&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
			case &amp;#039;he&amp;#039;:&lt;br /&gt;
				switch (key) {&lt;br /&gt;
					case &amp;#039;explain&amp;#039;: return rawTemplate&lt;br /&gt;
						? &amp;#039;לתבנית &amp;quot;&amp;#039; + template + &amp;#039;&amp;quot; אין דף פרמטרים, ולכן לשדות אין תיאור.&amp;#039;&lt;br /&gt;
						: &amp;#039;השדות המסומנים באדום הם חובה, השאר אופציונליים.&amp;#039;;&lt;br /&gt;
					case &amp;#039;wizard dialog title&amp;#039;: return &amp;#039;מילוי הפרמטרים עבור &amp;#039; + &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + mw.util.getUrl(&amp;#039;תבנית:&amp;#039; + template) + &amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;#039; + &amp;#039;תבנית:&amp;#039; + template + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
					case &amp;#039;ok&amp;#039;: return &amp;#039;אישור&amp;#039;;&lt;br /&gt;
					case &amp;#039;cancel&amp;#039;: return &amp;#039;ביטול&amp;#039;;&lt;br /&gt;
					case &amp;#039;params subpage&amp;#039;: return &amp;#039;פרמטרים&amp;#039;;&lt;br /&gt;
					case &amp;#039;preview&amp;#039;: return &amp;#039;תצוגה מקדימה&amp;#039;;&lt;br /&gt;
					case &amp;#039;options select&amp;#039;: return &amp;#039;בחרו ערך מהרשימה&amp;#039;;&lt;br /&gt;
					case &amp;#039;multiline&amp;#039;: return &amp;#039;מספר שורות&amp;#039;;&lt;br /&gt;
					case &amp;#039;close&amp;#039;: return &amp;#039;סגור&amp;#039;;&lt;br /&gt;
					case &amp;#039;required&amp;#039;: return &amp;#039;שדה חובה&amp;#039;;&lt;br /&gt;
					case &amp;#039;depends&amp;#039;: return &amp;#039;תלוי&amp;#039;;&lt;br /&gt;
					case &amp;#039;defval&amp;#039;: return &amp;#039;ברירת מחדל&amp;#039;;&lt;br /&gt;
					case &amp;#039;choices&amp;#039;: return &amp;#039;אפשרויות&amp;#039;;&lt;br /&gt;
					case &amp;#039;date&amp;#039;: return &amp;#039;תאריך&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended&amp;#039;: return &amp;#039;משני&amp;#039;;&lt;br /&gt;
					case &amp;#039;button hint&amp;#039;: return &amp;#039;אשף מילוי תבניות&amp;#039;;&lt;br /&gt;
					case &amp;#039;able templates category name&amp;#039;: return &amp;#039;תבניות הנתמכות על ידי אשף התבניות&amp;#039;;&lt;br /&gt;
					case &amp;#039;template selector title&amp;#039;: return &amp;#039;אנא הזינו את שם התבנית:&amp;#039;;&lt;br /&gt;
					case &amp;#039;notInParamPage&amp;#039;: return &amp;#039;השדה &amp;quot;&amp;#039; + param + &amp;#039;&amp;quot; לא מופיע ברשימת הפרמטרים של התבנית&amp;#039;;&lt;br /&gt;
					case &amp;#039;editParamPage&amp;#039;: return &amp;#039;לעריכת דף הפרמטרים&amp;#039;;&lt;br /&gt;
					case &amp;#039;unknown error&amp;#039;: return &amp;#039;טעות בהפעלת האשף.\n&amp;#039; + param;&lt;br /&gt;
					case &amp;#039;please select template&amp;#039;: return &amp;#039;שם התבנית&amp;#039;;&lt;br /&gt;
					case &amp;#039;oneliner&amp;#039;: return &amp;#039;תבנית בשורה אחת&amp;#039;;&lt;br /&gt;
					case &amp;#039;createempties&amp;#039;: return &amp;#039;רשום שדות ריקים&amp;#039;;&lt;br /&gt;
					case &amp;#039;dateFormat&amp;#039;: return &amp;#039;d בMM yy&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended labels&amp;#039;: return &amp;#039;הראה את כל הפרמטרים&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
			default:&lt;br /&gt;
				switch (key) {&lt;br /&gt;
					case &amp;#039;explain&amp;#039;: return &amp;#039;fields with red border are required, the rest are optional&amp;#039;;&lt;br /&gt;
					case &amp;#039;wizard dialog title&amp;#039;: return &amp;#039;Set up parameters for template: &amp;#039; + template;&lt;br /&gt;
					case &amp;#039;ok&amp;#039;: return &amp;#039;OK&amp;#039;;&lt;br /&gt;
					case &amp;#039;cancel&amp;#039;: return &amp;#039;Cancel&amp;#039;&lt;br /&gt;
					case &amp;#039;params subpage&amp;#039;: return &amp;#039;Parameters&amp;#039;;&lt;br /&gt;
					case &amp;#039;preview&amp;#039;: return &amp;#039;Preview&amp;#039;;&lt;br /&gt;
					case &amp;#039;options select&amp;#039;: return &amp;#039;Select one:&amp;#039;;&lt;br /&gt;
					case &amp;#039;multiline&amp;#039;: return &amp;#039;Multiline&amp;#039;;&lt;br /&gt;
					case &amp;#039;close&amp;#039;: return &amp;#039;Close&amp;#039;;&lt;br /&gt;
					case &amp;#039;required&amp;#039;: return &amp;#039;Required&amp;#039;;&lt;br /&gt;
					case &amp;#039;depends&amp;#039;: return &amp;#039;Depends on&amp;#039;;&lt;br /&gt;
					case &amp;#039;defval&amp;#039;: return &amp;#039;Default&amp;#039;;&lt;br /&gt;
					case &amp;#039;choices&amp;#039;: return &amp;#039;Choices&amp;#039;;&lt;br /&gt;
					case &amp;#039;date&amp;#039;: return &amp;#039;Date&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended&amp;#039;: return &amp;#039;Extended&amp;#039;;&lt;br /&gt;
					case &amp;#039;button hint&amp;#039;: return &amp;#039;Template parameters wizard&amp;#039;;&lt;br /&gt;
					case &amp;#039;able templates category name&amp;#039;: throw(&amp;#039;Must define category name for wizard-capable templates&amp;#039;);&lt;br /&gt;
					case &amp;#039;template selector title&amp;#039;: return &amp;#039;Please enter the template name&amp;#039;;&lt;br /&gt;
					case &amp;#039;notInParamPage&amp;#039;: return &amp;#039;field &amp;quot;&amp;#039; + param + &amp;#039;&amp;quot; does not appear in the template\&amp;#039;s parameters list&amp;#039;;&lt;br /&gt;
					case &amp;#039;editParamPage&amp;#039;: return &amp;#039;Edit paramters page&amp;#039;;&lt;br /&gt;
					case &amp;#039;unknown error&amp;#039;: return &amp;#039;Error occured: \n&amp;#039; + param;&lt;br /&gt;
					case &amp;#039;please select template&amp;#039;: return &amp;#039;Please enter template name&amp;#039;;&lt;br /&gt;
					case &amp;#039;oneliner&amp;#039;: return &amp;#039;Single-line template&amp;#039;;&lt;br /&gt;
					case &amp;#039;createempties&amp;#039;: return &amp;#039;Write empty parameters to page&amp;#039;;&lt;br /&gt;
					case &amp;#039;dateFormat&amp;#039;: return &amp;#039;MM d, yy&amp;#039;;&lt;br /&gt;
					case &amp;#039;extended labels&amp;#039;: return &amp;#039;Show all parameters&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		return key;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function paramPage() {return mw.config.get(&amp;#039;wgFormattedNamespaces&amp;#039;)[10] + &amp;#039;:&amp;#039; + $.trim(template) + &amp;#039;/&amp;#039; + i18n(&amp;#039;params subpage&amp;#039;);}&lt;br /&gt;
&lt;br /&gt;
	function templatePage() {return mw.config.get(&amp;#039;wgFormattedNamespaces&amp;#039;)[10] + &amp;#039;:&amp;#039; + $.trim(template);}&lt;br /&gt;
&lt;br /&gt;
	function updateRawPreview(){&lt;br /&gt;
		var canOK = &amp;#039;enable&amp;#039;;&lt;br /&gt;
		for (var i in dialogFields) {&lt;br /&gt;
			var df = dialogFields[i][1];&lt;br /&gt;
			var opts = df.data(&amp;#039;options&amp;#039;);&lt;br /&gt;
			if (opts &amp;amp;&amp;amp; opts.required &amp;amp;&amp;amp; $.trim(df.val()).length == 0)&lt;br /&gt;
				canOK = &amp;#039;disable&amp;#039;;&lt;br /&gt;
			if (opts &amp;amp;&amp;amp; opts.depends) {&lt;br /&gt;
				var dep = fieldsBypName[opts.depends];&lt;br /&gt;
				var depEmpty = (dep &amp;amp;&amp;amp; dep.val() &amp;amp;&amp;amp; $.trim(dep.val())) ? false : true;&lt;br /&gt;
				var row = rowsBypName[df.data(&amp;#039;paramName&amp;#039;)];&lt;br /&gt;
				if (row)&lt;br /&gt;
					row.toggleClass(&amp;#039;tpw_hidden&amp;#039;, depEmpty);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		$(&amp;quot;.ui-dialog-buttonpane button:contains(&amp;#039;&amp;quot; + i18n(&amp;#039;ok&amp;#039;) + &amp;quot;&amp;#039;)&amp;quot;).button(canOK);&lt;br /&gt;
		$(&amp;#039;#tpw_preview&amp;#039;).text(createWikiCode());&lt;br /&gt;
		localStorage.setItem(localStorageKey + &amp;#039;.&amp;#039; + emptiesKey, $(&amp;#039;#createEmpties&amp;#039;).prop(&amp;#039;checked&amp;#039;))&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function createInputField(paramName) {&lt;br /&gt;
		var options = templateParams[paramName].options || {},&lt;br /&gt;
			f,&lt;br /&gt;
			checkbox = false;&lt;br /&gt;
&lt;br /&gt;
		if (options.choices) {&lt;br /&gt;
			var choices = options.choices.split(/\s*,\s*/);&lt;br /&gt;
			if (choices.length &amp;gt; 1) {&lt;br /&gt;
				f = $(&amp;#039;&amp;lt;select&amp;gt;&amp;#039;).append($(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;, {text: i18n(&amp;#039;options select&amp;#039;), value: &amp;#039;&amp;#039;}));&lt;br /&gt;
				for (var i in choices)&lt;br /&gt;
					f.append($(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;, {text: choices[i], value: choices[i]}));&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				checkbox = true;&lt;br /&gt;
				f = $(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;, {type: &amp;#039;checkbox&amp;#039;, value: choices[0], text: choices[0]})&lt;br /&gt;
					.css({float: rtl ? &amp;#039;right&amp;#039; : &amp;#039;left&amp;#039;})&lt;br /&gt;
				f.prop(&amp;#039;checked&amp;#039;, options.defval &amp;amp;&amp;amp; options.defval == choices[0]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (options.multiline) {&lt;br /&gt;
			var rows = options.multiline;&lt;br /&gt;
			f = $(&amp;#039;&amp;lt;textarea&amp;gt;&amp;#039;, {rows: 1})&lt;br /&gt;
				.data({dispRows: isNaN(parseInt(rows)) ? 5 : rows})&lt;br /&gt;
				.focus(function(){this.rows = $(this).data(&amp;#039;dispRows&amp;#039;);})&lt;br /&gt;
				.blur(function(){this.rows = 1});&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
			f = $(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;, {type: &amp;#039;text&amp;#039;});&lt;br /&gt;
&lt;br /&gt;
		if (!checkbox &amp;amp;&amp;amp; f.autoCompleteWikiText) // teach the controls to autocomplete.&lt;br /&gt;
			f.autoCompleteWikiText({positionMy: rtl ? &amp;quot;left top&amp;quot; : &amp;quot;right top&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
		f.css({width: checkbox ? &amp;#039;1em&amp;#039; : &amp;#039;28em&amp;#039;})&lt;br /&gt;
			.data({paramName: paramName, options: options})&lt;br /&gt;
			.bind(&amp;#039;paste cut drop input change&amp;#039;, updateRawPreview);&lt;br /&gt;
&lt;br /&gt;
		if (options.defval)&lt;br /&gt;
			f.val(options.defval);&lt;br /&gt;
&lt;br /&gt;
		if (options.required)&lt;br /&gt;
			f.addClass(&amp;#039;tpw_required&amp;#039;).css({border: &amp;#039;1px red solid&amp;#039;});&lt;br /&gt;
&lt;br /&gt;
		if (options.date)&lt;br /&gt;
			f.datepicker({dateFormat: typeof options.date  == &amp;quot;string&amp;quot; ? options.date : i18n(&amp;#039;dateFormat&amp;#039;)});&lt;br /&gt;
		return f;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var&lt;br /&gt;
		timer = null,&lt;br /&gt;
		lastVisited = $(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	function enterTipsy() {&lt;br /&gt;
		clearTimeout(timer);&lt;br /&gt;
		$(this).attr(&amp;#039;inside&amp;#039;, 1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function leaveTipsy() {&lt;br /&gt;
		var $this = $(this);&lt;br /&gt;
		if ($this.attr(&amp;#039;master&amp;#039;) || $this.attr(&amp;#039;inside&amp;#039;)) {&lt;br /&gt;
			$this.attr(&amp;#039;inside&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
			timer = setTimeout(function(){lastVisited.tipsy(&amp;#039;hide&amp;#039;);}, 500);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function tipsyContent() {&lt;br /&gt;
		var&lt;br /&gt;
			paramName = $(this).text(),&lt;br /&gt;
			def = templateParams[paramName],&lt;br /&gt;
			desc = def.desc || &amp;#039;&amp;#039;;&lt;br /&gt;
		if (def.htmlDesc)&lt;br /&gt;
			return def.htmlDesc;&lt;br /&gt;
		if (def.options.notInParamPage)&lt;br /&gt;
			return $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
				.append(i18n(&amp;#039;notInParamPage&amp;#039;, paramName) + &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;)&lt;br /&gt;
				.append($(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;, {href: mw.util.getUrl(paramPage()) + &amp;#039;?action=edit&amp;#039;, target: &amp;#039;_blank&amp;#039;, text: i18n(&amp;#039;editParamPage&amp;#039;)}))&lt;br /&gt;
				.html();&lt;br /&gt;
		if (wikiCodeFinder.test(desc)) // does it need parsing?&lt;br /&gt;
			$.ajax({&lt;br /&gt;
				url: mw.util.wikiScript(&amp;#039;api&amp;#039;),&lt;br /&gt;
				async: false,&lt;br /&gt;
				type: &amp;#039;post&amp;#039;,&lt;br /&gt;
				data: {action: &amp;#039;parse&amp;#039;, text: desc, disablepp: 1, format: &amp;#039;json&amp;#039;}, // parse it.&lt;br /&gt;
				success: function(data) {&lt;br /&gt;
					var div = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).html(data.parse.text[&amp;#039;*&amp;#039;]);&lt;br /&gt;
					$(&amp;#039;a&amp;#039;, div).attr({target: &amp;#039;_blank&amp;#039;});&lt;br /&gt;
					def.htmlDesc = div.html();&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
		else&lt;br /&gt;
			def.htmlDesc = desc;&lt;br /&gt;
		return def.htmlDesc;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function addRow(paramName, table) {&lt;br /&gt;
		var&lt;br /&gt;
			def = templateParams[paramName],&lt;br /&gt;
			inputField = createInputField(paramName),&lt;br /&gt;
			nameColor = def.desc ? &amp;#039;blue&amp;#039; : (def.options.notInParamPage ? &amp;#039;red&amp;#039; : &amp;#039;black&amp;#039;),&lt;br /&gt;
			tr = $(&amp;#039;&amp;lt;tr&amp;gt;&amp;#039;)&lt;br /&gt;
				.append(&lt;br /&gt;
					$(&amp;#039;&amp;lt;td&amp;gt;&amp;#039;, {width: 120})&lt;br /&gt;
					.css({fontWeight: &amp;#039;bold&amp;#039;, color: nameColor})&lt;br /&gt;
					.text(paramName)&lt;br /&gt;
					.tipsy({html: true, trigger: &amp;#039;manual&amp;#039;, title: tipsyContent})&lt;br /&gt;
					.mouseenter(function() {&lt;br /&gt;
						clearTimeout(timer);&lt;br /&gt;
						$(&amp;#039;.tipsy&amp;#039;).remove();&lt;br /&gt;
						lastVisited = $(this);&lt;br /&gt;
						lastVisited.tipsy(&amp;#039;show&amp;#039;);&lt;br /&gt;
					})&lt;br /&gt;
					.mouseleave(leaveTipsy)&lt;br /&gt;
					.attr(&amp;#039;master&amp;#039;, &amp;#039;true&amp;#039;)&lt;br /&gt;
				)&lt;br /&gt;
				.append($(&amp;#039;&amp;lt;td&amp;gt;&amp;#039;).css({width: &amp;#039;30em&amp;#039;}).append(inputField));&lt;br /&gt;
		dialogFields.push([paramName, inputField]);&lt;br /&gt;
		if (def.options.extended)&lt;br /&gt;
			tr.addClass(&amp;#039;tpw_extended&amp;#039;);&lt;br /&gt;
		table.append(tr);&lt;br /&gt;
		rowsBypName[paramName] = tr;&lt;br /&gt;
		fieldsBypName[paramName] = inputField;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function injectResults() {&lt;br /&gt;
		$(&amp;quot;#wpTextbox1&amp;quot;).textSelection(&amp;#039;encapsulateSelection&amp;#039;, {replace: true, peri: createWikiCode()});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function createExtendedCheckBox() {&lt;br /&gt;
		return $(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;)&lt;br /&gt;
				.text(i18n(&amp;#039;extended labels&amp;#039;))&lt;br /&gt;
				.append($(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;, {type: &amp;#039;checkbox&amp;#039;})&lt;br /&gt;
					.change(function() {&lt;br /&gt;
						extendedParamCssRule.disabled = $(this).prop(&amp;#039;checked&amp;#039;);&lt;br /&gt;
					})&lt;br /&gt;
				);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function buildDialog(data) {&lt;br /&gt;
		$(&amp;#039;.tpw_disposable&amp;#039;).remove();&lt;br /&gt;
		if (rawTemplate)&lt;br /&gt;
			buildParamsRaw(data)&lt;br /&gt;
		else&lt;br /&gt;
			buildParams(data);&lt;br /&gt;
		paramsFromSelection();&lt;br /&gt;
		var	table = $(&amp;#039;&amp;lt;table&amp;gt;&amp;#039;);&lt;br /&gt;
		var dialog = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;, {&amp;#039;class&amp;#039;: &amp;#039;tpw_disposable&amp;#039;})&lt;br /&gt;
			.dialog({height: &amp;#039;auto&amp;#039;,&lt;br /&gt;
					title: i18n(&amp;#039;wizard dialog title&amp;#039;, template),&lt;br /&gt;
					width: &amp;#039;auto&amp;#039;,&lt;br /&gt;
					overflow: &amp;#039;auto&amp;#039;,&lt;br /&gt;
					position: [$(&amp;#039;body&amp;#039;).width() * 0.2, $(&amp;#039;body&amp;#039;).height() * 0.1],&lt;br /&gt;
					open: function() {$(this).css({&amp;#039;max-height&amp;#039;: Math.round($(&amp;#039;body&amp;#039;).height() * 0.7)});}&lt;br /&gt;
			})&lt;br /&gt;
			.append($(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;, {id: &amp;#039;tpw_globalExplanation&amp;#039;}).html(globalExplanation))&lt;br /&gt;
			.append($(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;).html(i18n(&amp;#039;explain&amp;#039;)))&lt;br /&gt;
			.append(anyExtended ? createExtendedCheckBox() : &amp;#039;&amp;#039;)&lt;br /&gt;
			.append(table)&lt;br /&gt;
			.append($(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;)&lt;br /&gt;
				.append(i18n(&amp;#039;oneliner&amp;#039;))&lt;br /&gt;
				.append($(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;, {type:&amp;#039;checkbox&amp;#039;, id:&amp;#039;oneLineTemplate&amp;#039;}).change(updateRawPreview)&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
			.append($(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;)&lt;br /&gt;
				.append(i18n(&amp;#039;createempties&amp;#039;))&lt;br /&gt;
				.append($(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;, {type:&amp;#039;checkbox&amp;#039;, id:&amp;#039;createEmpties&amp;#039;})&lt;br /&gt;
					.change(updateRawPreview)&lt;br /&gt;
					.prop(&amp;#039;checked&amp;#039;, localStorage.getItem(localStorageKey + &amp;#039;.&amp;#039; + emptiesKey) == &amp;quot;true&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
			.append($(&amp;#039;&amp;lt;pre&amp;gt;&amp;#039;, {id: &amp;#039;tpw_preview&amp;#039;})&lt;br /&gt;
				.css({backgroundColor: &amp;quot;lightGreen&amp;quot;, maxWidth: &amp;#039;40em&amp;#039;, maxHeight: &amp;#039;8em&amp;#039;, overflow: &amp;#039;auto&amp;#039;}));&lt;br /&gt;
&lt;br /&gt;
		while (paramsOrder.length)&lt;br /&gt;
			addRow(paramsOrder.shift(), table);&lt;br /&gt;
&lt;br /&gt;
		var buttons = {}; // we need to do it this way, because with literal object, the keys must be literal.&lt;br /&gt;
		buttons[i18n(&amp;#039;ok&amp;#039;)] = function() {injectResults(); dialog.dialog(&amp;#039;close&amp;#039;); };&lt;br /&gt;
		buttons[i18n(&amp;#039;cancel&amp;#039;)] = function() {dialog.dialog(&amp;#039;close&amp;#039;);}&lt;br /&gt;
		buttons[i18n(&amp;#039;preview&amp;#039;)] = showPreview;&lt;br /&gt;
		dialog.dialog(&amp;#039;option&amp;#039;, &amp;#039;buttons&amp;#039;, buttons);&lt;br /&gt;
		circumventRtlBug();&lt;br /&gt;
		updateRawPreview();&lt;br /&gt;
		$(&amp;#039;.tipsy&amp;#039;).hover(enterTipsy, leaveTipsy);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function init() {&lt;br /&gt;
		template = null;&lt;br /&gt;
		templateParams = {};&lt;br /&gt;
		paramsOrder = [];&lt;br /&gt;
		dialogFields = [];&lt;br /&gt;
		rowsBypName = {};&lt;br /&gt;
		fieldsBypName = {};&lt;br /&gt;
		mw.util.addCSS(&amp;quot;.tpw_hidden{display:none;}&amp;quot;);&lt;br /&gt;
		anyExtended = false;&lt;br /&gt;
		extendedParamCssRule = extendedParamCssRule || mw.util.addCSS(&amp;quot;.tpw_extended{display:none;}&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function reportError(a,b,error) {&lt;br /&gt;
		var key;&lt;br /&gt;
		if (typeof console != &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
			for (key in a)&lt;br /&gt;
				if (typeof a[key] != &amp;#039;function&amp;#039;)&lt;br /&gt;
					console.log(key + &amp;#039;=&amp;gt;&amp;#039; + a[key]);&lt;br /&gt;
			console.log(b);&lt;br /&gt;
			console.log(error);&lt;br /&gt;
		}&lt;br /&gt;
		alert(i18n(&amp;#039;unknown error&amp;#039;, error));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function pickTemplate(item) {&lt;br /&gt;
		function okButtonPressed(e, ui) {&lt;br /&gt;
			template = ui ? ui.item.value : selector.val();&lt;br /&gt;
			fireDialog();&lt;br /&gt;
			templateSelector.dialog(&amp;quot;close&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		var selector = $(&amp;#039;&amp;lt;input&amp;gt;&amp;#039;)&lt;br /&gt;
			.css({width: &amp;#039;28em&amp;#039;})&lt;br /&gt;
			.autocomplete({&lt;br /&gt;
				source: function(request, response) {&lt;br /&gt;
					$.getJSON(&lt;br /&gt;
						mw.util.wikiScript(&amp;#039;api&amp;#039;),&lt;br /&gt;
						{action:&amp;#039;opensearch&amp;#039;, search: request.term, namespace: 10},&lt;br /&gt;
						function(data){&lt;br /&gt;
							if(data[1])&lt;br /&gt;
								response($(data[1]).map(function(index,item){return item.replace(/.*:/, &amp;#039;&amp;#039;);}));&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
				},&lt;br /&gt;
				select: okButtonPressed&lt;br /&gt;
			});&lt;br /&gt;
		var templateSelector = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).dialog({&lt;br /&gt;
			title: i18n(&amp;#039;template selector title&amp;#039;),&lt;br /&gt;
			height: &amp;#039;auto&amp;#039;,&lt;br /&gt;
			width: &amp;#039;auto&amp;#039;,&lt;br /&gt;
			modal: true,&lt;br /&gt;
			buttons: [&lt;br /&gt;
				{text: i18n(&amp;#039;ok&amp;#039;), click: okButtonPressed},&lt;br /&gt;
				{text: i18n(&amp;#039;cancel&amp;#039;), click: function(){templateSelector.dialog(&amp;quot;close&amp;quot;)}}&lt;br /&gt;
			]&lt;br /&gt;
		}).append(selector);&lt;br /&gt;
		circumventRtlBug();&lt;br /&gt;
		selector.focus();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function fireDialog() {&lt;br /&gt;
		rawTemplate = false;&lt;br /&gt;
		$.ajax({&lt;br /&gt;
			url: mw.util.wikiScript(),&lt;br /&gt;
			data: {title: paramPage(), action: &amp;#039;raw&amp;#039;},&lt;br /&gt;
			dataType: &amp;#039;text&amp;#039;,&lt;br /&gt;
			success: buildDialog,&lt;br /&gt;
			cache: false,&lt;br /&gt;
			error: function() {&lt;br /&gt;
				rawTemplate = true;&lt;br /&gt;
				$.ajax({&lt;br /&gt;
					url: mw.util.wikiScript(),&lt;br /&gt;
					data: {title: templatePage(), action: &amp;#039;raw&amp;#039;},&lt;br /&gt;
					dataType: &amp;#039;text&amp;#039;,&lt;br /&gt;
					success: buildDialog,&lt;br /&gt;
					error: reportError&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function doIt() {&lt;br /&gt;
		mw.loader.using([&amp;#039;jquery.ui.widget&amp;#039;,&amp;#039;jquery.tipsy&amp;#039;,&amp;#039;jquery.textSelection&amp;#039;, &amp;#039;jquery.ui.autocomplete&amp;#039;, &amp;#039;jquery.ui.dialog&amp;#039;, &amp;#039;jquery.ui.datepicker&amp;#039;], function() {&lt;br /&gt;
			init();&lt;br /&gt;
			var match = $(&amp;quot;#wpTextbox1&amp;quot;).textSelection(&amp;#039;getSelection&amp;#039;).match(/^\{\{([^|}]*)/);&lt;br /&gt;
			template = match ? $.trim(match[1]) : null;&lt;br /&gt;
			if (template)&lt;br /&gt;
				fireDialog();&lt;br /&gt;
			else&lt;br /&gt;
				pickTemplate();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.user.options.get(&amp;#039;usebetatoolbar&amp;#039;))&lt;br /&gt;
		mw.loader.using([&amp;#039;jquery.wikiEditor&amp;#039;,&amp;#039;jquery.wikiEditor.toolbar.config&amp;#039;,&amp;#039;ext.wikiEditor.toolbar&amp;#039;], function() {&lt;br /&gt;
			if(typeof $.wikiEditor != &amp;#039;undefined&amp;#039; &amp;amp;&amp;amp; $.wikiEditor.isSupported())&lt;br /&gt;
				$(&amp;#039;#wpTextbox1&amp;#039;).wikiEditor(&amp;#039;addToToolbar&amp;#039;, {&lt;br /&gt;
					section: &amp;#039;advanced&amp;#039;,&lt;br /&gt;
					groups: {&lt;br /&gt;
						&amp;#039;wizards&amp;#039;: {&lt;br /&gt;
							tools: {&lt;br /&gt;
								&amp;#039;linkTemplatewizard&amp;#039;: {&lt;br /&gt;
									label: i18n(&amp;#039;button hint&amp;#039;),&lt;br /&gt;
									type: &amp;#039;button&amp;#039;,&lt;br /&gt;
									icon: &amp;#039;//upload.wikimedia.org/wikipedia/commons/d/dd/Vector_toolbar_template_button.png&amp;#039;,&lt;br /&gt;
									action: {type: &amp;#039;callback&amp;#039;, execute: doIt}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		else&lt;br /&gt;
			$(&amp;#039;div #toolbar&amp;#039;).append( // &amp;quot;old style&amp;quot;&lt;br /&gt;
				$(&amp;#039;&amp;lt;img&amp;gt;&amp;#039;, {src: &amp;#039;//upload.wikimedia.org/wikipedia/commons/e/eb/Button_plantilla.png&amp;#039;, title: i18n(&amp;#039;button hint&amp;#039;), &amp;#039;class&amp;#039;: &amp;#039;mw-toolbar-editbutton&amp;#039;})&lt;br /&gt;
				.css({cursor: &amp;#039;pointer&amp;#039;})&lt;br /&gt;
				.click(doIt)&lt;br /&gt;
			);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>שיע.ק</name></author>
	</entry>
</feed>