<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://eurovision.jobogamer.xyz/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-formWizard-core.js</id>
	<title>MediaWiki:Gadget-formWizard-core.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://eurovision.jobogamer.xyz/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-formWizard-core.js"/>
	<link rel="alternate" type="text/html" href="https://eurovision.jobogamer.xyz/index.php?title=MediaWiki:Gadget-formWizard-core.js&amp;action=history"/>
	<updated>2026-09-19T10:27:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.4</generator>
	<entry>
		<id>https://eurovision.jobogamer.xyz/index.php?title=MediaWiki:Gadget-formWizard-core.js&amp;diff=93&amp;oldid=prev</id>
		<title>Alfie: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://eurovision.jobogamer.xyz/index.php?title=MediaWiki:Gadget-formWizard-core.js&amp;diff=93&amp;oldid=prev"/>
		<updated>2026-03-19T09:58:26Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:58, 19 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Alfie</name></author>
	</entry>
	<entry>
		<id>https://eurovision.jobogamer.xyz/index.php?title=MediaWiki:Gadget-formWizard-core.js&amp;diff=92&amp;oldid=prev</id>
		<title>en&gt;Pppery: Per request on talk</title>
		<link rel="alternate" type="text/html" href="https://eurovision.jobogamer.xyz/index.php?title=MediaWiki:Gadget-formWizard-core.js&amp;diff=92&amp;oldid=prev"/>
		<updated>2025-03-17T23:49:48Z</updated>

		<summary type="html">&lt;p&gt;Per request on talk&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*  ______________________________________________________________________________________&lt;br /&gt;
 * |                                                                                     |&lt;br /&gt;
 * |                    === WARNING: GADGET FILE ===                                     |&lt;br /&gt;
 * |                  Changes to this page affect many users.                            |&lt;br /&gt;
 * | Please discuss changes on the talk page or on [[MediaWiki_talk:Gadgets-definition]] |&lt;br /&gt;
 * |	 before editing.                                                                 |&lt;br /&gt;
 * |_____________________________________________________________________________________|&lt;br /&gt;
 *&lt;br /&gt;
 * See https://meta.wikimedia.org/wiki/Meta:FormWizard for usage and description.&lt;br /&gt;
*/&lt;br /&gt;
//&amp;lt;nowiki&amp;gt;&lt;br /&gt;
var formsGadget = {&lt;br /&gt;
	&amp;#039;createDialog&amp;#039; : function(){&lt;br /&gt;
		var that = this;&lt;br /&gt;
		var dialogDict = {&lt;br /&gt;
							dialogClass: &amp;#039;formsGadget&amp;#039;,&lt;br /&gt;
							autoOpen: false,&lt;br /&gt;
							//title: that.formDict.config[&amp;#039;dialog-title&amp;#039;],&lt;br /&gt;
							width: &amp;#039;495px&amp;#039;,&lt;br /&gt;
							modal: true,&lt;br /&gt;
							closeOnEscape: true,&lt;br /&gt;
							resizable: false,&lt;br /&gt;
&lt;br /&gt;
							draggable: false,&lt;br /&gt;
					};&lt;br /&gt;
		var dialog = $(&amp;#039;#formsDialogExpand&amp;#039;);&lt;br /&gt;
		if(dialog.length){&lt;br /&gt;
			this.dialog = dialog.dialog(dialogDict);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			this.dialog = $(&amp;#039;&amp;lt;div id=&amp;quot;formsDialogExpand&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).dialog(dialogDict);&lt;br /&gt;
		}&lt;br /&gt;
		dialog.append(&amp;#039;&amp;lt;div class=&amp;quot;loading&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;dialog&amp;#039; : null,&lt;br /&gt;
	&amp;#039;openPanel&amp;#039;: function(){&lt;br /&gt;
		this.dialog.dialog(&amp;#039;open&amp;#039;);&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;openDialog&amp;#039; : function () {&lt;br /&gt;
		if (this.dialog === null){&lt;br /&gt;
			this.createDialog();&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			this.dialog.dialog(&amp;#039;open&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;cleanupDialog&amp;#039;: function (){&lt;br /&gt;
		if (this.dialog){&lt;br /&gt;
			this.dialog.dialog(&amp;#039;destroy&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
		this.dialog = null;&lt;br /&gt;
		$(&amp;#039;#formsDialogExpand&amp;#039;).text(&amp;#039;&amp;#039;);&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;utilities&amp;#039; : {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Path to the gadget config file&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;configPath&amp;#039; : &amp;#039;MediaWiki:Gadget-formWizard&amp;#039;,&lt;br /&gt;
		&amp;#039;apiUrl&amp;#039; : &amp;#039;//en.wikipedia.org/w/api.php?callback=?&amp;#039;,&lt;br /&gt;
		&amp;#039;gadgetNamespace&amp;#039; : function(){&lt;br /&gt;
			var grant = mw.config.get(&amp;#039;wgTitle&amp;#039;).replace(/ /g,&amp;#039;_&amp;#039;);&lt;br /&gt;
			return grant;&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
	 	 * To detect the users default language&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;userLanguage&amp;#039; : function(){&lt;br /&gt;
			return mw.config.get(&amp;#039;wgUserLanguage&amp;#039;);&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
		 * To detect the language of the page&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;contentLanguage&amp;#039; : function(){&lt;br /&gt;
			return mw.config.get(&amp;#039;wgContentLanguage&amp;#039;);&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
		 * Removes leading/trailing spaces &amp;amp; user signature&lt;br /&gt;
		 * ( It is added through the code)&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;cleanupText&amp;#039; : function(text){&lt;br /&gt;
				text = $.trim(text)+&amp;#039; &amp;#039;;&lt;br /&gt;
				var indexOf = text.indexOf(&amp;#039;~~~~&amp;#039;);&lt;br /&gt;
				if ( indexOf == -1 ){&lt;br /&gt;
					return text;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					return text.slice(0,indexOf)+text.slice(indexOf+4);&lt;br /&gt;
				}&lt;br /&gt;
		},&lt;br /&gt;
		/*&lt;br /&gt;
		 * The config files which can be translated with the help of the&lt;br /&gt;
		 * translation tool generates the dict with the values having a&lt;br /&gt;
		 * lot of space in the key value pairs. This function strips the&lt;br /&gt;
		 * whitespace.&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;stripWhiteSpace&amp;#039; : function(dict){&lt;br /&gt;
			for (key in dict){&lt;br /&gt;
				dict[key] = typeof(dict[key]) == &amp;#039;object&amp;#039; ? this.stripWhiteSpace(dict[key]) : $.trim(dict[key]);&lt;br /&gt;
			}&lt;br /&gt;
			return dict;&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;formElement&amp;#039; : {&lt;br /&gt;
		/*&lt;br /&gt;
		 * Elements being supported&lt;br /&gt;
		 * Small textbox&lt;br /&gt;
		 * Large textbox&lt;br /&gt;
		 * Checkbox list&lt;br /&gt;
		 * Radio button list&lt;br /&gt;
		 * Stepper list&lt;br /&gt;
		 * Image/s&lt;br /&gt;
		 * Dropdown&lt;br /&gt;
		 * Link&lt;br /&gt;
		 * Text&lt;br /&gt;
		 */&lt;br /&gt;
		&amp;#039;hiddenInfoboxFields&amp;#039; : [],&lt;br /&gt;
		&amp;#039;found&amp;#039; : false,&lt;br /&gt;
		&amp;#039;timestamp&amp;#039; : 0,&lt;br /&gt;
		&amp;#039;defaultTextBoxConfig&amp;#039;: {&lt;br /&gt;
			&amp;#039;type&amp;#039;: &amp;#039;smallTextBox&amp;#039;,&lt;br /&gt;
			&amp;#039;placeholder&amp;#039;: &amp;#039;Enter the text&amp;#039;,&lt;br /&gt;
			&amp;#039;title&amp;#039;: &amp;#039;Textbox&amp;#039;,&lt;br /&gt;
			&amp;#039;characterLength&amp;#039;:100,&lt;br /&gt;
			&amp;#039;mandatory&amp;#039;:false,&lt;br /&gt;
			&amp;#039;error-messageLength&amp;#039;: &amp;#039;Max length reached&amp;#039;,&lt;br /&gt;
			&amp;#039;error-notFilled&amp;#039;: &amp;#039;Mandatory field&amp;#039;,&lt;br /&gt;
			&amp;#039;value&amp;#039;: &amp;#039;&amp;#039;,&lt;br /&gt;
			&amp;#039;parent&amp;#039;: &amp;#039;&amp;#039;,&lt;br /&gt;
			&amp;#039;id&amp;#039;: null,&lt;br /&gt;
			&amp;#039;comment&amp;#039;: &amp;#039;&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;elementContainer&amp;#039; : function(){&lt;br /&gt;
			var div = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
			div.className = &amp;#039;elementContainer&amp;#039;;&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;addDescription&amp;#039;: function(dict,div){&lt;br /&gt;
			for (key in dict){&lt;br /&gt;
				if(key.indexOf(&amp;#039;text&amp;#039;) != -1){&lt;br /&gt;
					this.addText(div,dict[key],&amp;#039;text&amp;#039;);&lt;br /&gt;
					delete dict[key];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;checkTitle&amp;#039; : function(string,exists,titleStem,type){&lt;br /&gt;
			var that = this;&lt;br /&gt;
			//Url to the api&lt;br /&gt;
			var apiUrl = formsGadget.utilities.apiUrl;&lt;br /&gt;
			var title = titleStem + string;&lt;br /&gt;
			var searchDict = {&lt;br /&gt;
					&amp;#039;action&amp;#039;:&amp;#039;query&amp;#039;,&lt;br /&gt;
					&amp;#039;format&amp;#039;:&amp;#039;json&amp;#039;,&lt;br /&gt;
					&amp;#039;titles&amp;#039;:title,&lt;br /&gt;
					&amp;#039;prop&amp;#039;:&amp;#039;imageinfo&amp;#039;&lt;br /&gt;
				};&lt;br /&gt;
				var timestamp = Date.now();&lt;br /&gt;
				//console.log(&amp;#039;String before ajax&amp;#039;, string);&lt;br /&gt;
				return $.getJSON(apiUrl,searchDict,function(data){&lt;br /&gt;
					var query = data[&amp;#039;query&amp;#039;];&lt;br /&gt;
					var pages = data[&amp;#039;query&amp;#039;][&amp;#039;pages&amp;#039;];&lt;br /&gt;
					var pageId = Object.keys(pages);&lt;br /&gt;
					var pageExists = pageId != -1 ? true : false;&lt;br /&gt;
					var imageExists = pages[pageId][&amp;#039;imagerepository&amp;#039;] ? true : false;&lt;br /&gt;
					var value = 0;&lt;br /&gt;
					if (type == &amp;#039;image&amp;#039;){&lt;br /&gt;
						value = imageExists;&lt;br /&gt;
					}&lt;br /&gt;
					else{&lt;br /&gt;
						value = pageExists;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					if(that.timestamp &amp;lt; timestamp){&lt;br /&gt;
						that.timestamp = timestamp;&lt;br /&gt;
						that.found =  !(value ^ exists) ;&lt;br /&gt;
						//console.log(&amp;#039;String &amp;#039;,string, &amp;#039;found &amp;#039;,that.found);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
				});&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;inputList&amp;#039;: function(type,list,title,dict,role){&lt;br /&gt;
		 	var div = this.elementContainer();&lt;br /&gt;
			div = this.addText(div,title,&amp;#039;title&amp;#039;);&lt;br /&gt;
			this.addDescription(dict,div);&lt;br /&gt;
			for (elem in list){&lt;br /&gt;
				var label = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
				var input = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
				var key = list[elem][&amp;#039;key&amp;#039;];&lt;br /&gt;
				var value = list[elem][&amp;#039;value&amp;#039;];&lt;br /&gt;
				input.type = type;&lt;br /&gt;
				if (type == &amp;#039;number&amp;#039;){&lt;br /&gt;
					input.min = dict[&amp;#039;min&amp;#039;];&lt;br /&gt;
					input.max = dict[&amp;#039;max&amp;#039;];&lt;br /&gt;
				}&lt;br /&gt;
				input.value = value;&lt;br /&gt;
				input.setAttribute(&amp;#039;data-add-to&amp;#039;,dict[&amp;#039;add-to&amp;#039;]);&lt;br /&gt;
				if(role){&lt;br /&gt;
					input.setAttribute(&amp;#039;data-role&amp;#039;,true);&lt;br /&gt;
				}&lt;br /&gt;
				input.className = &amp;#039;inputListItem&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
				input.setAttribute(&amp;#039;data-add-to-attribute&amp;#039;,key);&lt;br /&gt;
				var descriptionText = key.replace(/_/g,&amp;#039; &amp;#039;);&lt;br /&gt;
				descriptionText = descriptionText.slice(0,1).toUpperCase() + descriptionText.slice(1);&lt;br /&gt;
				var description = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
				description.className = &amp;#039;inputListItemDescription&amp;#039;;&lt;br /&gt;
				description.textContent = descriptionText;&lt;br /&gt;
				label.appendChild(input);&lt;br /&gt;
				label.appendChild(description);&lt;br /&gt;
				div.appendChild(label);&lt;br /&gt;
			}&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;createTextBoxConfig&amp;#039;:function(defaultConfig,actualConfig){&lt;br /&gt;
			var config = {};&lt;br /&gt;
			for (key in defaultConfig){&lt;br /&gt;
				actualConfig[key] = key in actualConfig? actualConfig[key] : defaultConfig[key];&lt;br /&gt;
				if (key == &amp;#039;mandatory&amp;#039; &amp;amp;&amp;amp; (typeof(actualConfig[key]) == &amp;#039;string&amp;#039;)){&lt;br /&gt;
					if (actualConfig[key] == &amp;#039;true&amp;#039;){&lt;br /&gt;
						actualConfig[key] = true;&lt;br /&gt;
					}&lt;br /&gt;
					else{&lt;br /&gt;
						actualConfig[key] = false;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return actualConfig;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;textBox&amp;#039;: function(dict,type,callback,element){&lt;br /&gt;
			var config = this.createTextBoxConfig(this.defaultTextBoxConfig,dict);&lt;br /&gt;
	 		var className  = type == &amp;#039;small&amp;#039;? &amp;#039;smallTextBox&amp;#039;: &amp;#039;largeTextBox&amp;#039;;&lt;br /&gt;
	 		var div = this.elementContainer();&lt;br /&gt;
&lt;br /&gt;
	 		div = this.addText(div,config[&amp;#039;title&amp;#039;],&amp;#039;title&amp;#039;);&lt;br /&gt;
	 		this.addDescription(dict,div);&lt;br /&gt;
	 		if (type == &amp;#039;large&amp;#039;){&lt;br /&gt;
	 			var input = document.createElement(&amp;#039;textarea&amp;#039;);&lt;br /&gt;
	 		}&lt;br /&gt;
	 		else{&lt;br /&gt;
	 			var input = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
	 		}&lt;br /&gt;
	 		//cleanup&lt;br /&gt;
	 		if(dict[&amp;#039;visibility&amp;#039;] == &amp;#039;hidden&amp;#039;){&lt;br /&gt;
	 			div.style[&amp;#039;display&amp;#039;] = &amp;#039;none&amp;#039;;&lt;br /&gt;
	 			input.value = dict[&amp;#039;value&amp;#039;];&lt;br /&gt;
	 		}&lt;br /&gt;
	 		//Cleanup&lt;br /&gt;
	 		if(&amp;#039;page-title&amp;#039; in dict){&lt;br /&gt;
	 			input.setAttribute(&amp;#039;page-title&amp;#039;,true);&lt;br /&gt;
	 		}&lt;br /&gt;
	 		if (dict[&amp;#039;id&amp;#039;]){&lt;br /&gt;
	 			input.id = dict[&amp;#039;id&amp;#039;];&lt;br /&gt;
	 		}&lt;br /&gt;
	 		input.setAttribute(&amp;#039;type&amp;#039;,&amp;#039;text&amp;#039;);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;class&amp;#039;,className);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;placeholder&amp;#039;,config[&amp;#039;placeholder&amp;#039;]);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;maxlength&amp;#039;,config[&amp;#039;characterLength&amp;#039;]);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;data-mandatory&amp;#039;,config[&amp;#039;mandatory&amp;#039;]);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;data-comment&amp;#039;,config[&amp;#039;comment&amp;#039;]);&lt;br /&gt;
	 		input.setAttribute(&amp;#039;data-add-to&amp;#039;,config[&amp;#039;add-to&amp;#039;]);&lt;br /&gt;
	 		var conditionalAttr = config[&amp;#039;add-to&amp;#039;] == &amp;#039;infobox&amp;#039; ? config[&amp;#039;infobox-param&amp;#039;] : config[&amp;#039;section-header&amp;#039;];&lt;br /&gt;
	 		input.setAttribute(&amp;#039;data-add-to-attribute&amp;#039;,conditionalAttr);&lt;br /&gt;
			var that = this;&lt;br /&gt;
	 		/* Word limit */&lt;br /&gt;
	 		$(input).on(&amp;#039;change keyup paste&amp;#039;,function(){&lt;br /&gt;
	 			/* Checking if link/file/page exists */&lt;br /&gt;
	 			var inputTextBox = this;&lt;br /&gt;
	 			var enteredString = $(this).val();&lt;br /&gt;
	 			if(!enteredString &amp;amp;&amp;amp; !dict[&amp;#039;mandatory&amp;#039;]){&lt;br /&gt;
	 				$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;enableButtons&amp;#039;);&lt;br /&gt;
	 				$(inputTextBox).parent().removeClass(&amp;#039;entrySatisfying entryNotSatisfying&amp;#039;);&lt;br /&gt;
	 				that.timestamp = Date.now();&lt;br /&gt;
	 				that.found = true;&lt;br /&gt;
	 			}&lt;br /&gt;
	 			else{&lt;br /&gt;
	 				if( &amp;#039;validate&amp;#039; in dict &amp;amp;&amp;amp; enteredString){&lt;br /&gt;
		 				var exists = dict[&amp;#039;validate&amp;#039;] == &amp;#039;exists&amp;#039; ? 1:0;&lt;br /&gt;
		 				var titleStem = &amp;#039;image&amp;#039; in dict ? &amp;#039;&amp;#039; : that.formDict.config[&amp;#039;page-home&amp;#039;];&lt;br /&gt;
		 				$.when(that.checkTitle(enteredString,exists,titleStem,dict[&amp;#039;type&amp;#039;])).then(function(){&lt;br /&gt;
		 					//Cleanup &amp;amp; remove redundant code&lt;br /&gt;
		 					$(inputTextBox).removeClass(&amp;#039;entrySatisfying entryNotSatisfying&amp;#039;);&lt;br /&gt;
		 					$(inputTextBox).addClass(that.found ? &amp;#039;entrySatisfying&amp;#039; : &amp;#039;entryNotSatisfying&amp;#039;);&lt;br /&gt;
		 					$(inputTextBox).parent().removeClass(&amp;#039;entrySatisfying entryNotSatisfying&amp;#039;);&lt;br /&gt;
		 					$(inputTextBox).parent().addClass(that.found ? &amp;#039;entrySatisfying&amp;#039; : &amp;#039;entryNotSatisfying&amp;#039;);&lt;br /&gt;
		 					if (that.found){&lt;br /&gt;
		 						$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;enableButtons&amp;#039;);&lt;br /&gt;
			 					if(typeof(callback) === &amp;#039;function&amp;#039; &amp;amp;&amp;amp; that.found){&lt;br /&gt;
			 						//Api url&lt;br /&gt;
			 						var apiUrl = formsGadget.utilities.apiUrl;&lt;br /&gt;
			 						$.getJSON(apiUrl,{&amp;#039;action&amp;#039;:&amp;#039;parse&amp;#039;,&lt;br /&gt;
			 									&amp;#039;format&amp;#039;:&amp;#039;json&amp;#039;,&lt;br /&gt;
			 									&amp;#039;text&amp;#039;:&amp;#039;[[&amp;#039;+enteredString+&amp;#039;]]&amp;#039;&lt;br /&gt;
			 								},function(data){&lt;br /&gt;
			 									//console.log(data[&amp;#039;parse&amp;#039;][&amp;#039;text&amp;#039;][&amp;#039;*&amp;#039;]);&lt;br /&gt;
			 									var src = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).html(data[&amp;#039;parse&amp;#039;][&amp;#039;text&amp;#039;][&amp;#039;*&amp;#039;]).find(&amp;#039;img&amp;#039;).attr(&amp;#039;src&amp;#039;);&lt;br /&gt;
			 									if(src){&lt;br /&gt;
			 										callback(element, src);&lt;br /&gt;
			 									}&lt;br /&gt;
			 								});&lt;br /&gt;
			 					}&lt;br /&gt;
		 					}&lt;br /&gt;
		 					else{&lt;br /&gt;
		 						$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;disableButtons&amp;#039;);&lt;br /&gt;
		 					}&lt;br /&gt;
		 				});&lt;br /&gt;
	 				}&lt;br /&gt;
	 			}&lt;br /&gt;
	 		});&lt;br /&gt;
	 		//To show validation&lt;br /&gt;
&lt;br /&gt;
	 			inputElementWrapper = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
	 			$(inputElementWrapper).addClass(&amp;#039;inputElementWrapper&amp;#039;);&lt;br /&gt;
	 			if(&amp;#039;validate&amp;#039; in dict){&lt;br /&gt;
	 				$(inputElementWrapper).addClass(&amp;#039;validationContainer&amp;#039;);&lt;br /&gt;
	 			}&lt;br /&gt;
	 			if(dict[&amp;#039;mandatory&amp;#039;]){&lt;br /&gt;
	 				$(inputElementWrapper).addClass(&amp;#039;mandatoryContainer&amp;#039;);&lt;br /&gt;
	 			}&lt;br /&gt;
	 			inputElementWrapper.appendChild(input);&lt;br /&gt;
	 			div.appendChild(inputElementWrapper);&lt;br /&gt;
&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;smallTextBox&amp;#039;: function (dict,callback,element) {&lt;br /&gt;
			return this.textBox(dict,&amp;#039;small&amp;#039;,callback,element);&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;largeTextBox&amp;#039;: function (dict,callback,element) {&lt;br /&gt;
			return this.textBox(dict,&amp;#039;large&amp;#039;,callback,element);&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;checkboxList&amp;#039;: function (dict) {&lt;br /&gt;
			var list = dict[&amp;#039;choiceList&amp;#039;];&lt;br /&gt;
			var hidden = dict[&amp;#039;hidden&amp;#039;];&lt;br /&gt;
			if(&amp;#039;hidden&amp;#039; in dict){&lt;br /&gt;
				this.hiddenInfoboxFields = this.hiddenInfoboxFields.concat(dict[&amp;#039;hidden&amp;#039;]);&lt;br /&gt;
			}&lt;br /&gt;
			return this.inputList(&amp;#039;checkbox&amp;#039;,list,dict[&amp;#039;title&amp;#039;],dict);&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		&amp;#039;addText&amp;#039;: function(container,text,type){&lt;br /&gt;
			var textHolder = $(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;);&lt;br /&gt;
			textHolder.text(text);&lt;br /&gt;
			if (type == &amp;#039;title&amp;#039;){&lt;br /&gt;
				textHolder.addClass(&amp;#039;title&amp;#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else if (type == &amp;#039;text&amp;#039;){&lt;br /&gt;
				textHolder.addClass(&amp;#039;text&amp;#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				textHolder.addClass(type);&lt;br /&gt;
			}&lt;br /&gt;
			container.appendChild(textHolder[0]);&lt;br /&gt;
			return container;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;text&amp;#039;: function(dict){&lt;br /&gt;
			var textHolder = $(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;);&lt;br /&gt;
			return textHolder.text(dict[&amp;#039;string&amp;#039;])[0];&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;stepperList&amp;#039;: function (dict) {&lt;br /&gt;
			var list = dict[&amp;#039;choiceList&amp;#039;];&lt;br /&gt;
			if(&amp;#039;hidden&amp;#039; in dict){&lt;br /&gt;
				this.hiddenInfoboxFields = this.hiddenInfoboxFields.concat(dict[&amp;#039;hidden&amp;#039;]);&lt;br /&gt;
			}&lt;br /&gt;
			dict[&amp;#039;min&amp;#039;] = 0;&lt;br /&gt;
			if(!(&amp;#039;max&amp;#039; in dict)){&lt;br /&gt;
				dict[&amp;#039;max&amp;#039;] = 9;&lt;br /&gt;
			}&lt;br /&gt;
			return this.inputList(&amp;#039;number&amp;#039;,list,dict[&amp;#039;title&amp;#039;],dict,true);&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;dropdownList&amp;#039;: function(dict){&lt;br /&gt;
			var div = this.elementContainer();&lt;br /&gt;
			div = this.addText(div,dict[&amp;#039;title&amp;#039;],&amp;#039;title&amp;#039;);&lt;br /&gt;
			this.addDescription(dict,div);&lt;br /&gt;
			var values = dict[&amp;#039;values&amp;#039;];&lt;br /&gt;
			var select = document.createElement(&amp;#039;select&amp;#039;);&lt;br /&gt;
	 		select.setAttribute(&amp;#039;class&amp;#039;,&amp;#039;dropdown&amp;#039;);&lt;br /&gt;
	 		select.setAttribute(&amp;#039;data-placeholder&amp;#039;,dict[&amp;#039;placeholder&amp;#039;]);&lt;br /&gt;
	 		select.setAttribute(&amp;#039;data-add-to&amp;#039;,dict[&amp;#039;add-to&amp;#039;]);&lt;br /&gt;
	 		select.setAttribute(&amp;#039;data-add-to-attribute&amp;#039;,dict[&amp;#039;infobox-param&amp;#039;]);&lt;br /&gt;
			var option;&lt;br /&gt;
			for (elem in values){&lt;br /&gt;
				option = $(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;).attr(&amp;#039;value&amp;#039;,values[elem]).text(values[elem]);&lt;br /&gt;
				select.appendChild(option[0]);&lt;br /&gt;
			}&lt;br /&gt;
			div.appendChild(select);&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;link&amp;#039;: function(dict){&lt;br /&gt;
			var link = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
			link.href = &amp;#039;href&amp;#039; in dict? dict[&amp;#039;href&amp;#039;] : &amp;#039;//commons.wikimedia.org/wiki/Main_Page&amp;#039;;&lt;br /&gt;
			link.target = &amp;#039;_blank&amp;#039;;&lt;br /&gt;
			var innerText = &amp;#039;link&amp;#039; in dict? dict[&amp;#039;link&amp;#039;] : &amp;#039;Search Wikimedia Commons for an image&amp;#039;;&lt;br /&gt;
			$(link).text(innerText);&lt;br /&gt;
			return link;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;image&amp;#039;: function (dict) {&lt;br /&gt;
			var url = dict[&amp;#039;url&amp;#039;];&lt;br /&gt;
			var text = dict[&amp;#039;title&amp;#039;];&lt;br /&gt;
			dict[&amp;#039;add-to&amp;#039;] = &amp;#039;infobox&amp;#039;;&lt;br /&gt;
	  		dict[&amp;#039;infobox-param&amp;#039;] = &amp;#039;image&amp;#039;;&lt;br /&gt;
	  		dict[&amp;#039;validate&amp;#039;] = &amp;#039;exists&amp;#039;;&lt;br /&gt;
	  		//cleanup&lt;br /&gt;
	  		dict[&amp;#039;placeholder&amp;#039;] = &amp;#039;placeholder&amp;#039; in dict ? dict[&amp;#039;placeholder&amp;#039;] : &amp;#039;File:Test.png&amp;#039;;&lt;br /&gt;
			var div = this.elementContainer();&lt;br /&gt;
			this.addText(div,dict[&amp;#039;title&amp;#039;],&amp;#039;title&amp;#039;);&lt;br /&gt;
			this.addDescription(dict,div);&lt;br /&gt;
			var img = document.createElement(&amp;#039;img&amp;#039;);&lt;br /&gt;
			img.src = url;&lt;br /&gt;
			dict[&amp;#039;title&amp;#039;] = &amp;#039;imageTitleBox&amp;#039; in dict ? dict[&amp;#039;imageTitleBox&amp;#039;] : &amp;#039;Enter the file name&amp;#039;;&lt;br /&gt;
			//cleanup&lt;br /&gt;
			dict[&amp;#039;image&amp;#039;] = true;&lt;br /&gt;
			var textbox = this.smallTextBox(dict,function(elem,src){&lt;br /&gt;
					img.src = src;&lt;br /&gt;
				},img);&lt;br /&gt;
			div.appendChild(img);&lt;br /&gt;
			div.appendChild(textbox);&lt;br /&gt;
			var commonsLink = this.link(dict);&lt;br /&gt;
			div.appendChild(commonsLink);&lt;br /&gt;
			return div;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;button&amp;#039;: function(type,text){&lt;br /&gt;
			var a = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
			a.type=&amp;#039;submit&amp;#039;;&lt;br /&gt;
			a.setAttribute(&amp;#039;elemType&amp;#039;,&amp;#039;button&amp;#039;);&lt;br /&gt;
			if(type == &amp;#039;cancel&amp;#039; || type == &amp;#039;back&amp;#039;){&lt;br /&gt;
				a.className = &amp;#039;mw-ui-button cancel mw-ui-quiet&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				a.className = &amp;#039;mw-ui-button mw-ui-constructive&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			a.value = text;&lt;br /&gt;
			$(a).on(&amp;#039;disableButtons&amp;#039;,function(){&lt;br /&gt;
				$(this).attr(&amp;#039;disabled&amp;#039;,true);&lt;br /&gt;
			});&lt;br /&gt;
			$(a).on(&amp;#039;enableButtons&amp;#039;,function(){&lt;br /&gt;
				$(this).attr(&amp;#039;disabled&amp;#039;,false);&lt;br /&gt;
			});&lt;br /&gt;
			return a;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;cancelButton&amp;#039;: function(dict){&lt;br /&gt;
			var button = this.button(&amp;#039;cancel&amp;#039;,dict[&amp;#039;title&amp;#039;]);&lt;br /&gt;
			button.onclick = function(){&lt;br /&gt;
				formsGadget.dialog.dialog(&amp;#039;close&amp;#039;);&lt;br /&gt;
			};&lt;br /&gt;
			return button;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;doneButton&amp;#039;: function(dict){&lt;br /&gt;
			var that = this;&lt;br /&gt;
			var button = this.button(&amp;#039;done&amp;#039;,dict[&amp;#039;title&amp;#039;]);&lt;br /&gt;
			button.onclick = function(){&lt;br /&gt;
				that.validateForm();&lt;br /&gt;
			};&lt;br /&gt;
			return button;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;nextButton&amp;#039;: function(dict){&lt;br /&gt;
			var button = this.button(&amp;#039;next&amp;#039;,dict[&amp;#039;title&amp;#039;]);&lt;br /&gt;
			var that = this;&lt;br /&gt;
			button.onclick = function(){&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand [step]&amp;#039;).hide();&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand&amp;#039;+&amp;#039; #&amp;#039;+dict[&amp;#039;step&amp;#039;]).next().show();&lt;br /&gt;
			};&lt;br /&gt;
			return button;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;backButton&amp;#039;: function(dict){&lt;br /&gt;
			var button = this.button(&amp;#039;back&amp;#039;,dict[&amp;#039;title&amp;#039;]);&lt;br /&gt;
			var that = this;&lt;br /&gt;
			button.onclick = function(){&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand [step]&amp;#039;).hide();&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand&amp;#039;+&amp;#039; #&amp;#039;+dict[&amp;#039;step&amp;#039;]).prev().show();&lt;br /&gt;
			};&lt;br /&gt;
			return button;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;validateForm&amp;#039;: function(){&lt;br /&gt;
			var counter = 0;&lt;br /&gt;
			var firstElem;&lt;br /&gt;
			$(&amp;#039;#formsDialogExpand [data-mandatory=&amp;quot;true&amp;quot;]&amp;#039;).each(function(){&lt;br /&gt;
				var elem = $(this);&lt;br /&gt;
				if(!elem.val()){&lt;br /&gt;
					if (counter == 0){&lt;br /&gt;
						firstElem = elem;&lt;br /&gt;
					}&lt;br /&gt;
					counter++;&lt;br /&gt;
					elem.addClass(&amp;#039;mandatoryInput&amp;#039;);&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
			//Add mandatory filed Event &amp;amp; styling&lt;br /&gt;
			if(firstElem){&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand [step]&amp;#039;).hide();&lt;br /&gt;
				while(true){&lt;br /&gt;
					if (firstElem.attr(&amp;#039;step&amp;#039;)){&lt;br /&gt;
						firstElem.show();&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					firstElem = firstElem.parent();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				if (formsGadget.type == &amp;#039;create&amp;#039;){&lt;br /&gt;
					this.createWikiPage();&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					this.modifyWikiPage();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;infoboxString&amp;#039;: &amp;#039;&amp;#039;,&lt;br /&gt;
		&amp;#039;remainingSectionString&amp;#039;: &amp;#039;&amp;#039;,&lt;br /&gt;
		&amp;#039;extractInfobox&amp;#039; : function(markup, infoboxTemplate){&lt;br /&gt;
			var startIndex = markup.indexOf(&amp;#039;{{&amp;#039; + infoboxTemplate);&lt;br /&gt;
			var counter = 0;&lt;br /&gt;
			var endIndex = 0;&lt;br /&gt;
			for (i=startIndex;i&amp;lt;markup.length;i++){&lt;br /&gt;
				if(markup[i] == &amp;#039;}&amp;#039; &amp;amp;&amp;amp; markup[i+1] == &amp;#039;}&amp;#039;){&lt;br /&gt;
						counter++;&lt;br /&gt;
				}&lt;br /&gt;
				if(markup[i] == &amp;#039;{&amp;#039; &amp;amp;&amp;amp; markup[i+1] == &amp;#039;{&amp;#039;){&lt;br /&gt;
					counter--;&lt;br /&gt;
				}&lt;br /&gt;
				if(counter == 0){&lt;br /&gt;
					var endIndex = i+2;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (counter != 0){&lt;br /&gt;
				return &amp;#039;&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			var infobox = {&lt;br /&gt;
				&amp;#039;infobox&amp;#039; : markup.slice(startIndex,endIndex),&lt;br /&gt;
			    &amp;#039;before&amp;#039; : markup.slice(0,startIndex),&lt;br /&gt;
				&amp;#039;after&amp;#039; : markup.slice(endIndex),&lt;br /&gt;
			};&lt;br /&gt;
			return infobox;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;infoboxObjectify&amp;#039;: function(infoboxString){&lt;br /&gt;
			var paramRe = /( )*\|( )*[A-Za-z0-9_]+( )*=/gi;&lt;br /&gt;
			var units = infoboxString.split(&amp;#039;\n&amp;#039;);&lt;br /&gt;
			var infobox = [];&lt;br /&gt;
			var infoboxParams = {};&lt;br /&gt;
			var parts,line,param,value;&lt;br /&gt;
			for (unit in units){&lt;br /&gt;
				line = units[unit];&lt;br /&gt;
				if(line.search(paramRe) != -1){&lt;br /&gt;
					parts = line.split(&amp;#039;=&amp;#039;);&lt;br /&gt;
					param = $.trim(parts[0].replace(&amp;#039;|&amp;#039;,&amp;#039;&amp;#039;));&lt;br /&gt;
					value = $.trim(parts[1]);&lt;br /&gt;
					//infoboxParams[param] = value;&lt;br /&gt;
					infobox.push({&amp;#039;param&amp;#039;: param, &amp;#039;value&amp;#039;: value});&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					infobox.push($.trim(line));&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return infobox;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;modifyInfoboxParam&amp;#039;: function(infobox,param,newValue){&lt;br /&gt;
			var flag = true;&lt;br /&gt;
			for (elem in infobox){&lt;br /&gt;
				if(typeof(infobox[elem]) == &amp;#039;object&amp;#039; &amp;amp;&amp;amp; infobox[elem][&amp;#039;param&amp;#039;] == param){&lt;br /&gt;
					infobox[elem][&amp;#039;value&amp;#039;] = newValue;&lt;br /&gt;
					flag = false;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (flag){&lt;br /&gt;
				infobox.splice(-1,0,{&amp;#039;param&amp;#039;:param, &amp;#039;value&amp;#039;:newValue});&lt;br /&gt;
			}&lt;br /&gt;
			return infobox;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;stringifyInfobox&amp;#039; : function(infobox){&lt;br /&gt;
			var infoboxString = &amp;#039;&amp;#039;;&lt;br /&gt;
			for (elem in infobox){&lt;br /&gt;
				if (typeof(infobox[elem]) == &amp;#039;object&amp;#039;){&lt;br /&gt;
					if(infobox[elem][&amp;#039;value&amp;#039;]){&lt;br /&gt;
						infoboxString = infoboxString + &amp;#039;|&amp;#039; + infobox[elem][&amp;#039;param&amp;#039;] + &amp;#039;=&amp;#039; + infobox[elem][&amp;#039;value&amp;#039;] + &amp;#039;\n&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else{&lt;br /&gt;
						infoboxString = infoboxString + &amp;#039;|&amp;#039; + infobox[elem][&amp;#039;param&amp;#039;] + &amp;#039;=&amp;#039; + &amp;#039;\n&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					infoboxString = infoboxString + infobox[elem] +&amp;#039;\n&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return infoboxString;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;createEditSummary&amp;#039; : function(title,subcomment){&lt;br /&gt;
			var summary = &amp;#039;&amp;#039;;&lt;br /&gt;
			var formsConfig = formsGadget.formDict[&amp;#039;config&amp;#039;];&lt;br /&gt;
			if (formsConfig[&amp;#039;edit-comment-prefix&amp;#039;]){&lt;br /&gt;
				summary = formsConfig[&amp;#039;edit-comment-prefix&amp;#039;] + &amp;#039; &amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				summary = formsConfig[&amp;#039;edit-comment-default&amp;#039;] + &amp;#039; &amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if(subcomment){&lt;br /&gt;
				summary = summary + title + &amp;#039; (&amp;#039; + subcomment + &amp;#039;) &amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				summary = summary + title + &amp;#039; &amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if (formsConfig[&amp;#039;edit-comment-suffix&amp;#039;]){&lt;br /&gt;
				summary = summary + formsConfig[&amp;#039;edit-comment-suffix&amp;#039;];&lt;br /&gt;
			}&lt;br /&gt;
			return summary;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;modifyWikiPage&amp;#039; : function(){&lt;br /&gt;
			var that = this;&lt;br /&gt;
			var infobox = &amp;#039;&amp;#039;;&lt;br /&gt;
			var infoboxString = &amp;#039;&amp;#039;;&lt;br /&gt;
			var sections = &amp;#039;&amp;#039;;&lt;br /&gt;
			var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
			var roots = this.wikiSectionTree.roots;&lt;br /&gt;
&lt;br /&gt;
			for (elem in roots){&lt;br /&gt;
				//console.log(&amp;#039;---------&amp;#039;);&lt;br /&gt;
				this.wikiSectionTree.traverse([roots[elem]],1,function(id){&lt;br /&gt;
					var elem = $(&amp;#039;#formsDialogExpand #&amp;#039;+id);&lt;br /&gt;
					value = elem.val() ? elem.val() : &amp;#039;&amp;#039;;&lt;br /&gt;
					var heading = elem.attr(&amp;#039;data-add-to-attribute&amp;#039;);&lt;br /&gt;
					return { &amp;#039;heading&amp;#039;: heading, &amp;#039;value&amp;#039;: value};&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
			//Disabling buttons on ajax post&lt;br /&gt;
			$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;disableButtons&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			//refractor hardcoding &amp;#039;/Toolkit&amp;#039;&lt;br /&gt;
			var title = mw.config.get(&amp;#039;wgPageName&amp;#039;).replace(&amp;#039;/Toolkit&amp;#039;,&amp;#039;&amp;#039;);&lt;br /&gt;
			//Getting the infobox&lt;br /&gt;
			var gettingInfobox = api.get({&lt;br /&gt;
						&amp;#039;format&amp;#039;:&amp;#039;json&amp;#039;,&lt;br /&gt;
						&amp;#039;action&amp;#039;:&amp;#039;query&amp;#039;,&lt;br /&gt;
						&amp;#039;prop&amp;#039;:&amp;#039;revisions&amp;#039;,&lt;br /&gt;
						&amp;#039;rvprop&amp;#039;: &amp;#039;content&amp;#039;,&lt;br /&gt;
						&amp;#039;rvslots&amp;#039;: &amp;#039;main&amp;#039;,&lt;br /&gt;
						&amp;#039;rvsection&amp;#039;:0,&lt;br /&gt;
						&amp;#039;titles&amp;#039;: title,&lt;br /&gt;
					}).then(function(result){&lt;br /&gt;
						var pages = result.query.pages;&lt;br /&gt;
						var key = Object.keys(result.query.pages)[0];&lt;br /&gt;
						var content = pages[key][&amp;#039;revisions&amp;#039;][0][&amp;#039;slots&amp;#039;][&amp;#039;main&amp;#039;][&amp;#039;*&amp;#039;];&lt;br /&gt;
						var infoboxTemplate = formsGadget.formDict.config[&amp;#039;infobox&amp;#039;] ? formsGadget.formDict.config[&amp;#039;infobox&amp;#039;] : &amp;#039;Probox/Idealab&amp;#039;;&lt;br /&gt;
						var elements = that.extractInfobox(content, infoboxTemplate);&lt;br /&gt;
						var infobox = that.infoboxObjectify(elements[&amp;#039;infobox&amp;#039;]);&lt;br /&gt;
						var before = elements[&amp;#039;before&amp;#039;];&lt;br /&gt;
						var after = elements[&amp;#039;after&amp;#039;];&lt;br /&gt;
						$(&amp;#039;#formsDialogExpand [data-add-to]&amp;#039;).each(function(index,elem){&lt;br /&gt;
							var elem = $(elem);&lt;br /&gt;
							if(elem.attr(&amp;#039;data-add-to&amp;#039;) == &amp;#039;infobox&amp;#039; ){&lt;br /&gt;
								if(elem.attr(&amp;#039;type&amp;#039;) == &amp;#039;checkbox&amp;#039;){&lt;br /&gt;
									if (elem.is(&amp;#039;:checked&amp;#039;)){&lt;br /&gt;
										infobox = that.modifyInfoboxParam(infobox,elem.attr(&amp;#039;data-add-to-attribute&amp;#039;),elem.val());&lt;br /&gt;
									}&lt;br /&gt;
									else{&lt;br /&gt;
										infobox = that.modifyInfoboxParam(infobox,elem.attr(&amp;#039;data-add-to-attribute&amp;#039;),null);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
								else if(elem.attr(&amp;#039;data-role&amp;#039;)){&lt;br /&gt;
									for (var i=0;i&amp;lt;elem.val(); i++){&lt;br /&gt;
										infobox = that.modifyInfoboxParam(infobox,elem.attr(&amp;#039;data-add-to-attribute&amp;#039;)+(i+1), null);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
								else{&lt;br /&gt;
									infobox = that.modifyInfoboxParam(infobox,elem.attr(&amp;#039;data-add-to-attribute&amp;#039;),elem.val());&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						});&lt;br /&gt;
						/*&lt;br /&gt;
						* infobox entries&lt;br /&gt;
						*/&lt;br /&gt;
						var hiddenFields = that.hiddenInfoboxFields;&lt;br /&gt;
						for(entry in hiddenFields){&lt;br /&gt;
							infobox = infobox.push({&amp;#039;param&amp;#039;:hiddenFields[entry][&amp;#039;key&amp;#039;],&amp;#039;value&amp;#039;:hiddenFields[entry][&amp;#039;value&amp;#039;]});&lt;br /&gt;
						}&lt;br /&gt;
						modifiedSection = before + $.trim(that.stringifyInfobox(infobox)) + after;&lt;br /&gt;
						var formsConfig = formsGadget.formDict[&amp;#039;config&amp;#039;];&lt;br /&gt;
						api.post({&lt;br /&gt;
							&amp;#039;action&amp;#039; : &amp;#039;edit&amp;#039;,&lt;br /&gt;
							&amp;#039;title&amp;#039; : title,&lt;br /&gt;
							&amp;#039;text&amp;#039; : modifiedSection,&lt;br /&gt;
							&amp;#039;summary&amp;#039; : that.createEditSummary(title,&amp;#039;editing infobox parameters&amp;#039;),&lt;br /&gt;
							&amp;#039;section&amp;#039;: 0,&lt;br /&gt;
							&amp;#039;watchlist&amp;#039;:&amp;#039;watch&amp;#039;,&lt;br /&gt;
							&amp;#039;token&amp;#039; : mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)&lt;br /&gt;
						}).then(function(){&lt;br /&gt;
							var newSections = &amp;#039;\n&amp;#039; + that.wikiSectionTree.sections;&lt;br /&gt;
							api.post({&lt;br /&gt;
								&amp;#039;action&amp;#039; : &amp;#039;edit&amp;#039;,&lt;br /&gt;
								&amp;#039;title&amp;#039; : title,&lt;br /&gt;
								&amp;#039;summary&amp;#039; : that.createEditSummary(title,&amp;#039;editing section&amp;#039;),&lt;br /&gt;
								&amp;#039;appendtext&amp;#039;:newSections,&lt;br /&gt;
								&amp;#039;watchlist&amp;#039;:&amp;#039;watch&amp;#039;,&lt;br /&gt;
								&amp;#039;token&amp;#039; : mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)&lt;br /&gt;
							}).then(function(){&lt;br /&gt;
								// Redirecting to idea page&lt;br /&gt;
								//console.log(&amp;#039;Successfully Added new sections &amp;amp; modified the infobox&amp;#039;);&lt;br /&gt;
								var postEditMessage = formsGadget.formDict[&amp;#039;config&amp;#039;][&amp;#039;post-edit&amp;#039;];&lt;br /&gt;
								//Cleanup&lt;br /&gt;
								formsGadget.dialog.dialog(&amp;#039;close&amp;#039;);&lt;br /&gt;
								mw.cookie.set(&amp;#039;formsGadgetNotify&amp;#039;,postEditMessage);&lt;br /&gt;
								window.location.href = location.origin + &amp;#039;/wiki/&amp;#039; + title;&lt;br /&gt;
							});&lt;br /&gt;
						});&lt;br /&gt;
					});&lt;br /&gt;
		},&lt;br /&gt;
		&amp;#039;createWikiPage&amp;#039; :  function(){&lt;br /&gt;
			var that = this;&lt;br /&gt;
			var infobox = &amp;#039;&amp;#039;;&lt;br /&gt;
			var page = &amp;#039;&amp;#039;;&lt;br /&gt;
			var api = new mw.Api();&lt;br /&gt;
			var pageTitle = $(&amp;#039;#formsDialogExpand [page-title]&amp;#039;).val();&lt;br /&gt;
&lt;br /&gt;
			var roots = this.wikiSectionTree.roots;&lt;br /&gt;
&lt;br /&gt;
			for (elem in roots){&lt;br /&gt;
				//console.log(&amp;#039;---------&amp;#039;);&lt;br /&gt;
				this.wikiSectionTree.traverse([roots[elem]],1,function(id){&lt;br /&gt;
					var elem = $(&amp;#039;#formsDialogExpand #&amp;#039;+id);&lt;br /&gt;
					value = elem.val() ? elem.val() : &amp;#039;&amp;#039;;&lt;br /&gt;
					var heading = elem.attr(&amp;#039;data-add-to-attribute&amp;#039;);&lt;br /&gt;
					var comment = elem.attr(&amp;#039;data-comment&amp;#039;);&lt;br /&gt;
					return { &amp;#039;heading&amp;#039;: heading, &amp;#039;value&amp;#039;: value, &amp;#039;comment&amp;#039;: comment };&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$(&amp;#039;#formsDialogExpand [data-add-to]&amp;#039;).each(function(index,elem){&lt;br /&gt;
				var elem = $(elem);&lt;br /&gt;
				if(elem.attr(&amp;#039;data-add-to&amp;#039;) == &amp;#039;section&amp;#039; ){&lt;br /&gt;
					//var value = elem.val() ? elem.val() : &amp;#039;&amp;#039;;&lt;br /&gt;
					//var section = &amp;#039;==&amp;#039; + elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + &amp;#039;==&amp;#039; + &amp;#039;\n&amp;#039; + elem.val() + &amp;#039;\n&amp;#039;;&lt;br /&gt;
					//page = page + section;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					//Cleanup &amp;amp; Simplify&lt;br /&gt;
					if (elem.attr(&amp;#039;data-role&amp;#039;)){&lt;br /&gt;
						for (var i=0;i&amp;lt;elem.val(); i++){&lt;br /&gt;
							infobox = infobox + &amp;#039;|&amp;#039;+ elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + (i+1) + &amp;#039;=\n&amp;#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					else if(elem.attr(&amp;#039;type&amp;#039;) == &amp;#039;checkbox&amp;#039;){&lt;br /&gt;
						if (elem.is(&amp;#039;:checked&amp;#039;)){&lt;br /&gt;
							infobox = infobox + &amp;#039;|&amp;#039;+ elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + &amp;#039;=&amp;#039; + elem.val() + &amp;#039;\n&amp;#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else{&lt;br /&gt;
							infobox = infobox + &amp;#039;|&amp;#039;+ elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + &amp;#039;=\n&amp;#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					//Fix this hardcoding more elegantly&lt;br /&gt;
					else if(elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) == &amp;#039;image&amp;#039;){&lt;br /&gt;
						var image = elem.val() ? elem.val() : elem.attr(&amp;#039;placeholder&amp;#039;);&lt;br /&gt;
						infobox = infobox + &amp;#039;|&amp;#039;+ elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + &amp;#039;=&amp;#039; + image + &amp;#039;\n&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else{&lt;br /&gt;
						infobox = infobox + &amp;#039;|&amp;#039;+ elem.attr(&amp;#039;data-add-to-attribute&amp;#039;) + &amp;#039;=&amp;#039; + elem.val() + &amp;#039;\n&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
			/*&lt;br /&gt;
			* infobox entries&lt;br /&gt;
			*/&lt;br /&gt;
			var hiddenFields = this.hiddenInfoboxFields;&lt;br /&gt;
			for(entry in hiddenFields){&lt;br /&gt;
				infobox = infobox + &amp;#039;|&amp;#039; + hiddenFields[entry][&amp;#039;key&amp;#039;] + &amp;#039;=&amp;#039; + hiddenFields[entry][&amp;#039;value&amp;#039;] + &amp;#039;\n&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			//Hardcoding creator/timestamp&lt;br /&gt;
			infobox = infobox + &amp;#039;|&amp;#039; + &amp;#039;timestamp = ~~~~~&amp;#039; + &amp;#039;\n&amp;#039; ;&lt;br /&gt;
			infobox = infobox + &amp;#039;|&amp;#039; + &amp;#039;creator = &amp;#039; + mw.user.getName() + &amp;#039;\n&amp;#039; ;&lt;br /&gt;
&lt;br /&gt;
			var probox = this.formDict.config[&amp;#039;infobox&amp;#039;] ? this.formDict.config[&amp;#039;infobox&amp;#039;] : &amp;#039;Probox/Idealab&amp;#039;;&lt;br /&gt;
			infobox = &amp;#039;{{&amp;#039; + probox + &amp;#039;\n&amp;#039; + infobox + &amp;#039;}} \n&amp;#039;;&lt;br /&gt;
			page = infobox + this.wikiSectionTree.sections;&lt;br /&gt;
&lt;br /&gt;
			/*&lt;br /&gt;
			 * Creating a new page&lt;br /&gt;
			 *&lt;br /&gt;
			 */&lt;br /&gt;
&lt;br /&gt;
			var title = formsGadget.formDict[&amp;#039;config&amp;#039;][&amp;#039;page-home&amp;#039;] + pageTitle;&lt;br /&gt;
			//Disabling buttons on ajax post&lt;br /&gt;
			$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;disableButtons&amp;#039;);&lt;br /&gt;
						api.post({&lt;br /&gt;
						&amp;#039;action&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
						//Cleanup&lt;br /&gt;
						&amp;#039;title&amp;#039;: title,&lt;br /&gt;
						&amp;#039;summary&amp;#039;: that.createEditSummary(title),&lt;br /&gt;
						&amp;#039;text&amp;#039;: page,&lt;br /&gt;
						&amp;#039;watchlist&amp;#039;:&amp;#039;watch&amp;#039;,&lt;br /&gt;
						token: mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)&lt;br /&gt;
					}).then(function () {&lt;br /&gt;
						//Creating Idea Toolkit&lt;br /&gt;
						var formsConfig = formsGadget.formDict[&amp;#039;config&amp;#039;];&lt;br /&gt;
						var toolkit = formsConfig[&amp;#039;toolkit-name&amp;#039;];&lt;br /&gt;
						var toolkitContent = &amp;#039;{{&amp;#039; + formsConfig[&amp;#039;toolkit-template&amp;#039;] + &amp;#039;}}&amp;#039;;&lt;br /&gt;
						var createToolkit = true;&lt;br /&gt;
						if (toolkit &amp;amp;&amp;amp; toolkitContent){&lt;br /&gt;
							var toolkitTitle = title + &amp;#039;/&amp;#039; + toolkit;&lt;br /&gt;
							var summary = &amp;#039;Adding the toolkit for &amp;#039; + title;&lt;br /&gt;
							createToolkit = api.post({&lt;br /&gt;
								&amp;#039;action&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
								//Cleanup&lt;br /&gt;
								&amp;#039;title&amp;#039;: toolkitTitle,&lt;br /&gt;
								&amp;#039;summary&amp;#039;: summary,&lt;br /&gt;
								&amp;#039;text&amp;#039;: toolkitContent,&lt;br /&gt;
								&amp;#039;watchlist&amp;#039;:&amp;#039;watch&amp;#039;,&lt;br /&gt;
								token: mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)&lt;br /&gt;
							});&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// Redirecting to idea page&lt;br /&gt;
						//console.log(&amp;#039;Successfully created new page&amp;#039;);&lt;br /&gt;
						$.when(createToolkit).then(function(){&lt;br /&gt;
							formsGadget.dialog.dialog(&amp;#039;close&amp;#039;);&lt;br /&gt;
							var postEditMessage = formsGadget.formDict[&amp;#039;config&amp;#039;][&amp;#039;post-edit&amp;#039;];&lt;br /&gt;
							mw.cookie.set(&amp;#039;formsGadgetNotify&amp;#039;,postEditMessage);&lt;br /&gt;
							window.location.href = location.origin + &amp;#039;/wiki/&amp;#039; + title;&lt;br /&gt;
						},function(){&lt;br /&gt;
							$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;enableButtons&amp;#039;);&lt;br /&gt;
						});&lt;br /&gt;
					},function(){&lt;br /&gt;
						$(&amp;#039;#formsDialogExpand [elemType=&amp;quot;button&amp;quot;]&amp;#039;).trigger(&amp;#039;enableButtons&amp;#039;);&lt;br /&gt;
					});&lt;br /&gt;
&lt;br /&gt;
			//console.log(title,page);&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;createForm&amp;#039; : function(formDict){&lt;br /&gt;
		//cleanup fixing the fallbacks&lt;br /&gt;
		if( !formDict.config[&amp;#039;page-home&amp;#039;].match(/\/$/) ){&lt;br /&gt;
			formDict.config[&amp;#039;page-home&amp;#039;] = formDict.config[&amp;#039;page-home&amp;#039;] + &amp;#039;/&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		this.formDict = formDict;&lt;br /&gt;
		this.formElement.formDict = formDict;&lt;br /&gt;
		this.formElement.wikiSectionTree = this.wikiSectionTree;&lt;br /&gt;
		var dialogInternal = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
		//User not logged in&lt;br /&gt;
		if (! mw.user.getName()){&lt;br /&gt;
			var errorMessage = formDict[&amp;#039;config&amp;#039;][&amp;#039;error-not-logged-in&amp;#039;];&lt;br /&gt;
			var errorDiv = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
			errorDiv.className = &amp;#039;mw-ui-vform&amp;#039;;&lt;br /&gt;
			this.formElement.addText(errorDiv,errorMessage,&amp;#039;error&amp;#039;);&lt;br /&gt;
			dialogInternal.appendChild(errorDiv);&lt;br /&gt;
		}&lt;br /&gt;
		var counter = 0;&lt;br /&gt;
		for (step in formDict){&lt;br /&gt;
			if (step != &amp;#039;config&amp;#039;){&lt;br /&gt;
				counter++;&lt;br /&gt;
				var stepDict = formDict[step];&lt;br /&gt;
				var panel = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
				panel.id = step;&lt;br /&gt;
				if(counter != 1){&lt;br /&gt;
					panel.style[&amp;#039;display&amp;#039;] = &amp;#039;none&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
				panel.setAttribute(&amp;#039;step&amp;#039;,step);&lt;br /&gt;
				for (elem in stepDict){&lt;br /&gt;
					elemDict = stepDict[elem];&lt;br /&gt;
					elemDict[&amp;#039;elem&amp;#039;] = elem;&lt;br /&gt;
					elemDict[&amp;#039;step&amp;#039;] = step;&lt;br /&gt;
					elemDict[&amp;#039;id&amp;#039;] = elem;&lt;br /&gt;
					panel.appendChild(this.formElement[elemDict.type](elemDict));&lt;br /&gt;
					//Creating the hierarchial structure of the sections &amp;amp; subsections&lt;br /&gt;
					if (elemDict[&amp;#039;add-to&amp;#039;] == &amp;#039;section&amp;#039; ){&lt;br /&gt;
						var parent = &amp;#039;parent&amp;#039; in elemDict ? elemDict[&amp;#039;parent&amp;#039;] : null;&lt;br /&gt;
						var node = elem;&lt;br /&gt;
						if(parent){&lt;br /&gt;
							this.wikiSectionTree.addLink(parent,node);&lt;br /&gt;
						}&lt;br /&gt;
						else{&lt;br /&gt;
							this.wikiSectionTree.addLink(node);&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				dialogInternal.appendChild(panel);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		$(&amp;#039;#formsDialogExpand&amp;#039;).append(dialogInternal);&lt;br /&gt;
		$(&amp;#039;.formsGadget .dropdown&amp;#039;).chosen({&lt;br /&gt;
								disable_search: true,&lt;br /&gt;
								width: &amp;#039;50%&amp;#039;,&lt;br /&gt;
						});&lt;br /&gt;
		return true;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;#039;Tree&amp;#039; : function(){&lt;br /&gt;
		var rootList = {};&lt;br /&gt;
		var nodeList = {};&lt;br /&gt;
		this.sections = &amp;#039;&amp;#039;;&lt;br /&gt;
		this.roots = rootList;&lt;br /&gt;
		var Node = function(parent,child,id){&lt;br /&gt;
			this.parent = parent;&lt;br /&gt;
			this.id = id;&lt;br /&gt;
			this.child = child;&lt;br /&gt;
		};&lt;br /&gt;
		var getNode = function(id){&lt;br /&gt;
			if (id in nodeList){&lt;br /&gt;
				return nodeList[id];&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				var node = new Node(null,null,id);&lt;br /&gt;
				nodeList[id] = node;&lt;br /&gt;
				rootList[id] = node;&lt;br /&gt;
				return node;&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		this.addLink = function(startId,endId){&lt;br /&gt;
			if (endId){&lt;br /&gt;
				var startNode = getNode(startId);&lt;br /&gt;
				var endNode = getNode(endId);&lt;br /&gt;
				endNode.parent = startNode;&lt;br /&gt;
				if (startNode.child){&lt;br /&gt;
					startNode.child.push(endNode);&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					startNode.child = [endNode];&lt;br /&gt;
				}&lt;br /&gt;
				delete rootList[endNode.id];&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				getNode(startId);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		var sectionLevel = function(indent){&lt;br /&gt;
			var string = &amp;#039;&amp;#039;;&lt;br /&gt;
			for (var i=0;i&amp;lt;indent;i++){&lt;br /&gt;
				string = string + &amp;#039;=&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
			return string;&lt;br /&gt;
		};&lt;br /&gt;
		this.traverse = function(rootList,level,callback){&lt;br /&gt;
			if(!rootList){&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			level++;&lt;br /&gt;
			var wikiSectionHeaderMarkup = sectionLevel(level);&lt;br /&gt;
			for (elem in rootList){&lt;br /&gt;
				var root = rootList[elem];&lt;br /&gt;
				var sectionValues = callback(root.id);&lt;br /&gt;
				var section = wikiSectionHeaderMarkup + sectionValues[&amp;#039;heading&amp;#039;] + wikiSectionHeaderMarkup + &amp;#039;\n&amp;#039; ;&lt;br /&gt;
				var section = section + ( sectionValues[&amp;#039;comment&amp;#039;] ? sectionValues[&amp;#039;comment&amp;#039;] + &amp;#039;\n&amp;#039; : &amp;#039;&amp;#039; ) + sectionValues[&amp;#039;value&amp;#039;] + &amp;#039;\n&amp;#039;;&lt;br /&gt;
				this.sections = this.sections + section;&lt;br /&gt;
				root = root.child;&lt;br /&gt;
				this.traverse(root,level,callback);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$(function() {&lt;br /&gt;
	(function(){&lt;br /&gt;
			var api = new mw.Api();&lt;br /&gt;
			var utility = formsGadget.utilities;&lt;br /&gt;
&lt;br /&gt;
			//Retrieving the post edit feedback if any&lt;br /&gt;
			var postEditMessage = mw.cookie.get(&amp;#039;formsGadgetNotify&amp;#039;);&lt;br /&gt;
			if (postEditMessage){&lt;br /&gt;
				//clearing the cookie&lt;br /&gt;
				mw.cookie.set(&amp;#039;formsGadgetNotify&amp;#039;, null);&lt;br /&gt;
&lt;br /&gt;
           		//displaying the post edit message&lt;br /&gt;
				mw.notify(postEditMessage,{autoHide:false});&lt;br /&gt;
           	}&lt;br /&gt;
&lt;br /&gt;
			$(&amp;#039;.wp-formsGadget&amp;#039;).click(function(e){&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
&lt;br /&gt;
				formsGadgetNamespace = utility.gadgetNamespace();&lt;br /&gt;
				formsGadgetType = $(this).attr(&amp;#039;data-type&amp;#039;) || &amp;#039;Idea&amp;#039;;&lt;br /&gt;
				formsGadgetMode = $(this).attr(&amp;#039;data-mode&amp;#039;) || &amp;#039;create&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
				formsGadget.cleanupDialog();&lt;br /&gt;
				formsGadget.openDialog();&lt;br /&gt;
				formsGadget.openPanel();&lt;br /&gt;
&lt;br /&gt;
				$(&amp;#039;#formsDialogExpand .loading&amp;#039;).show();&lt;br /&gt;
&lt;br /&gt;
				var configFullPath = utility.configPath+&amp;#039;/&amp;#039;+formsGadgetNamespace+&amp;#039;/&amp;#039;+formsGadgetType;&lt;br /&gt;
				var configUrl = &amp;#039;//en.wikipedia.org/w/index.php?title=&amp;#039;+encodeURIComponent(configFullPath)+&amp;#039;&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;;&lt;br /&gt;
				var api = new mw.Api();&lt;br /&gt;
				var promise = api.get({&lt;br /&gt;
					&amp;#039;format&amp;#039;:&amp;#039;json&amp;#039;,&lt;br /&gt;
					&amp;#039;formatversion&amp;#039;: 2,&lt;br /&gt;
					&amp;#039;action&amp;#039;:&amp;#039;query&amp;#039;,&lt;br /&gt;
					&amp;#039;prop&amp;#039;:&amp;#039;revisions&amp;#039;,&lt;br /&gt;
					&amp;#039;rvprop&amp;#039;: &amp;#039;contentmodel&amp;#039;,&lt;br /&gt;
					&amp;#039;rvsection&amp;#039;:0,&lt;br /&gt;
					&amp;#039;titles&amp;#039;: configFullPath,&lt;br /&gt;
				});&lt;br /&gt;
				//Get the config for the language above&lt;br /&gt;
				$.when(jQuery.getScript(configUrl), promise).then(function(text, result){&lt;br /&gt;
					if ( result[0].query.pages[0].revisions[0].contentmodel == &amp;#039;javascript&amp;#039; ) {&lt;br /&gt;
						var config = utility.stripWhiteSpace(formsGadgetConfig[formsGadgetMode]);&lt;br /&gt;
						formsGadget[&amp;#039;formDict&amp;#039;] = config;&lt;br /&gt;
						//Cleanup&lt;br /&gt;
						$(&amp;#039;.formsGadget .ui-dialog-title&amp;#039;).text(config.config[&amp;#039;dialog-title&amp;#039;]);&lt;br /&gt;
						formsGadget[&amp;#039;wikiSectionTree&amp;#039;] = new formsGadget.Tree();&lt;br /&gt;
						formsGadget.openDialog();&lt;br /&gt;
						formsGadget.createForm(config);&lt;br /&gt;
						formsGadget.type = formsGadgetMode;&lt;br /&gt;
						formsGadget.openDialog();&lt;br /&gt;
						$(&amp;#039;#formsDialogExpand .loading&amp;#039;).hide();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
	})();&lt;br /&gt;
});&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>en&gt;Pppery</name></author>
	</entry>
</feed>