<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nguyentrantri</id>
	<title>Catglobe Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nguyentrantri"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/Special:Contributions/Nguyentrantri"/>
	<updated>2026-05-10T04:32:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Microsoft_login_Customer_Admin&amp;diff=241040</id>
		<title>Microsoft login Customer Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Microsoft_login_Customer_Admin&amp;diff=241040"/>
		<updated>2025-10-31T07:26:58Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Guides]]&lt;br /&gt;
Documentation for Customer admins: &lt;br /&gt;
&lt;br /&gt;
= Configure your Entra to login to Catglobe =&lt;br /&gt;
&lt;br /&gt;
Congratulations, instead of having to deal with usernames and password on your Catglobe based application you can now use Microsoft Entra login to access.&lt;br /&gt;
&lt;br /&gt;
== Information you need ==&lt;br /&gt;
&lt;br /&gt;
Your Catglobe contact should have given you:&lt;br /&gt;
&lt;br /&gt;
1. The url to the Catglobe powered application.&lt;br /&gt;
&lt;br /&gt;
2. A list of roles you need to give to your users&lt;br /&gt;
&lt;br /&gt;
==== Configuration steps ====&lt;br /&gt;
&lt;br /&gt;
1. Open the Url and click &amp;quot;Login with Microsoft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;br /&gt;
&lt;br /&gt;
2. You should see a page informing you that your Tenant is new. Complete the registration process by clicking &amp;quot;Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:regisTenant.png]]&lt;br /&gt;
&lt;br /&gt;
3. If it says your tenant is already pending approval, someone else already did step 2.&lt;br /&gt;
&lt;br /&gt;
4. The Catglobe application now appears in your list of Enterprise applications in your tenant configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:CustommerAdmin.jpg]]&lt;br /&gt;
&lt;br /&gt;
5. Add groups as you desire and assign them a Catglobe App role as instructed.&lt;br /&gt;
&lt;br /&gt;
[[File:customeradmin202.png]]&lt;br /&gt;
&lt;br /&gt;
6. Add users to your groups.&lt;br /&gt;
&lt;br /&gt;
7. Your users can now click the &#039;Login with Microsoft&#039; button on the login page and will get the roles you have assigned to them.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:CustommerAdmin.jpg&amp;diff=241039</id>
		<title>File:CustommerAdmin.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:CustommerAdmin.jpg&amp;diff=241039"/>
		<updated>2025-10-31T07:23:27Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=ResourceEdit_class&amp;diff=241038</id>
		<title>ResourceEdit class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=ResourceEdit_class&amp;diff=241038"/>
		<updated>2025-09-09T07:47:22Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;ResourceEdit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Generic class for editing resources&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;CalculatedManHours&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set calculated man hours flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;HasResourceTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Indicates if resource can be templated&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;InheritAccess&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set inherit access flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the resource name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ParentId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the parent resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ResourceManHours&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set resource man hours&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ResourceTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set resource template id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;TimeregEnabled&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set timereg enabled flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239037</id>
		<title>Upload images in questionnaire</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239037"/>
		<updated>2019-04-05T11:11:11Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: /* Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
We have a client who wants respondents to be able to upload images in a questionnaire&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
&lt;br /&gt;
When the recipient open the answer sheet to answer, we will create the new folder whose name is recipient&#039;s name under the questionnaire then store the images that the he uploads in the image tab of this new created folder.&lt;br /&gt;
&lt;br /&gt;
= How to do it  =&lt;br /&gt;
&lt;br /&gt;
== Requirement  ==&lt;br /&gt;
&lt;br /&gt;
*The user template of the recipients must have the navigation access to open the Image tab of the Folder and upload the images in this image tab.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Preparation ==&lt;br /&gt;
&lt;br /&gt;
* In the group list, create the group containing the recipients and grant the needed navigation accesses to this group &lt;br /&gt;
&lt;br /&gt;
* In the folder list, create the folder containing all the recipient&#039;s folder.&lt;br /&gt;
&lt;br /&gt;
* Check the folder template resource id that the folder will use. &lt;br /&gt;
&lt;br /&gt;
== Step 2: Create the new folder for the recipient ==&lt;br /&gt;
&lt;br /&gt;
(You can see the script in the workflow whose resource id is 45408 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
array para = Workflow_getParameters();&lt;br /&gt;
number userId = para[0];&lt;br /&gt;
&lt;br /&gt;
number ImageFolderResourceId = 45406;&lt;br /&gt;
number FolderTemplateResourceId = 2071;&lt;br /&gt;
&lt;br /&gt;
array newFolder ;&lt;br /&gt;
number userResourceId = User_getResourceIdFromUserId(userId);&lt;br /&gt;
array userinfo = User_getUserByResourceId(userResourceId);&lt;br /&gt;
string ExistedFolderName = getNameFromResourceUniqueId(ImageFolderResourceId) + &amp;quot;\\&amp;quot;+ userinfo[USER_NAME];&lt;br /&gt;
array ExistedFolder = Folder_getFolderByName(ExistedFolderName);&lt;br /&gt;
&lt;br /&gt;
if (ExistedFolder == empty) &lt;br /&gt;
{&lt;br /&gt;
newFolder = Folder_new(userinfo[USER_NAME],FolderTemplateResourceId ,ImageFolderResourceId); &lt;br /&gt;
Folder_save(newFolder);&lt;br /&gt;
}&lt;br /&gt;
else &lt;br /&gt;
{&lt;br /&gt;
newFolder = ExistedFolder ;&lt;br /&gt;
}&lt;br /&gt;
array permissions = {{userId , &amp;quot;FullControl&amp;quot;}};&lt;br /&gt;
updateUserPermission(newFolder[FOLDER_RESOURCE_ID], permissions);&lt;br /&gt;
string guid = getResourceGuid(newFolder[FOLDER_RESOURCE_ID]);&lt;br /&gt;
return getResourceIdFromGuid(guid);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up the questionnaire ==&lt;br /&gt;
&lt;br /&gt;
(You can see the questionnaire whose resource id is 1219174 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
=== Step 3.1 : Create the dummy question for storing the folder id ===&lt;br /&gt;
&lt;br /&gt;
We will call the workflow in step 2 to get the new created folder id of recipient&lt;br /&gt;
&lt;br /&gt;
=== Step 3.2 : Add the following script to the questionnaire ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of the questionnaire &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	Server info&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ServerInfo =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;rootPath&amp;quot; : window.location.protocol+&amp;quot;//&amp;quot;+window.location.host&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	ResourceType enumeration&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ResourceType =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;Folder&amp;quot;:&amp;quot;Folder&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// IFrame&lt;br /&gt;
//&lt;br /&gt;
function IFrame(parentElement)  &lt;br /&gt;
{  &lt;br /&gt;
   // Create the iframe which will be returned  &lt;br /&gt;
   var iframe = document.createElement(&amp;quot;iframe&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
   // If no parent element is specified then use body as the parent element  &lt;br /&gt;
   if(parentElement == null)  &lt;br /&gt;
      parentElement = document.body;  &lt;br /&gt;
  &lt;br /&gt;
   // This is necessary in order to initialize the document inside the iframe  &lt;br /&gt;
   parentElement.appendChild(iframe);  &lt;br /&gt;
&lt;br /&gt;
   // Get the document object of the IFrame&lt;br /&gt;
   iframe.getDocument = function()&lt;br /&gt;
   {&lt;br /&gt;
      // Depending on browser platform get the iframe&#039;s document, this is only  &lt;br /&gt;
      // available if the iframe has already been appended to an element which  &lt;br /&gt;
      // has been added to the document  &lt;br /&gt;
&lt;br /&gt;
      var doc;&lt;br /&gt;
&lt;br /&gt;
      if(this.contentDocument)  &lt;br /&gt;
         // Firefox, Opera  &lt;br /&gt;
         doc = this.contentDocument;  &lt;br /&gt;
      else if(this.contentWindow)  &lt;br /&gt;
         // Internet Explorer  &lt;br /&gt;
         doc = this.contentWindow.document;  &lt;br /&gt;
      else if(this.document)  &lt;br /&gt;
         // Others?  &lt;br /&gt;
         doc = this.document;&lt;br /&gt;
&lt;br /&gt;
      // If we did not succeed in finding the document then throw an exception  &lt;br /&gt;
      if(doc == null)  &lt;br /&gt;
         throw &amp;quot;Document not found, append the parent element to the DOM before creating the IFrame&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      return doc;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Set iframe source&lt;br /&gt;
   iframe.setSource = function(src)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the source&lt;br /&gt;
      this.src = src;&lt;br /&gt;
&lt;br /&gt;
      // Initialize the iframe&#039;s document&lt;br /&gt;
      this.doc = this.getDocument();&lt;br /&gt;
 &lt;br /&gt;
      // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
      // the iframe&#039;s contents by script&lt;br /&gt;
      iframe.doc.open();  &lt;br /&gt;
      iframe.doc.close();  &lt;br /&gt;
   }&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setWidth = function(width)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the width&lt;br /&gt;
      this.width = width;&lt;br /&gt;
   }	&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setHeight = function(height)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the height&lt;br /&gt;
      this.height = height;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Initiate the iframe&#039;s document property&lt;br /&gt;
   iframe.doc = iframe.getDocument();&lt;br /&gt;
  &lt;br /&gt;
   // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
   // the iframe&#039;s contents by script&lt;br /&gt;
   iframe.doc.open();  &lt;br /&gt;
   iframe.doc.close();  &lt;br /&gt;
  &lt;br /&gt;
   // Return the iframe, now with an extra property iframe.doc containing the  &lt;br /&gt;
   // iframe&#039;s document  &lt;br /&gt;
   return iframe;  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	AttachmentList question control&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
function ImageList(elementContainer, width,height,viewimage)&lt;br /&gt;
{&lt;br /&gt;
   this._elementContainer = elementContainer;&lt;br /&gt;
this._iframe = new IFrame(this._elementContainer);&lt;br /&gt;
$(this._iframe)&lt;br /&gt;
.attr(&amp;quot;id&amp;quot;, &amp;quot;ImageListIFrame&amp;quot;)&lt;br /&gt;
.bind(&amp;quot;load&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
	{&lt;br /&gt;
		if(this.src == &#039;&#039;)&lt;br /&gt;
			return;&lt;br /&gt;
if (viewimage == &amp;quot;off&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_main&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_1&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_3&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_c_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_1_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_2_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_3_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_4_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_5_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_6_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_7_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_8_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_9_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_10_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_11_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_12_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_13_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_14_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_15_2&#039;).hide();&lt;br /&gt;
}&lt;br /&gt;
	});&lt;br /&gt;
if (width != null)&lt;br /&gt;
   this._iframe.setWidth(width);&lt;br /&gt;
if (height != null)&lt;br /&gt;
   this._iframe.setHeight(height);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ImageList.prototype =&lt;br /&gt;
{&lt;br /&gt;
   &lt;br /&gt;
   createImageListUrl: function(type, id)&lt;br /&gt;
   {&lt;br /&gt;
      return ImageList.path&lt;br /&gt;
         .replace(&amp;quot;{rootPath}&amp;quot;, ServerInfo.rootPath)&lt;br /&gt;
         .replace(&amp;quot;{type}&amp;quot;, type)&lt;br /&gt;
         .replace(&amp;quot;{id}&amp;quot;, id);&lt;br /&gt;
   },&lt;br /&gt;
   &lt;br /&gt;
   setFolderId: function(FolderId)&lt;br /&gt;
   {&lt;br /&gt;
       $(this._iframe)&lt;br /&gt;
         .attr(&amp;quot;src&amp;quot;, this.createImageListUrl(ResourceType.Folder, FolderId));&lt;br /&gt;
   },&lt;br /&gt;
&lt;br /&gt;
   getImages: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 1;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
&lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         &lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
            &lt;br /&gt;
            nameList.push(grid.Rows.rows[rowIndex].getCell(Name).getValue());&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   },&lt;br /&gt;
  /* getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
      &lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
         var guidtext;&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
           guid = grid.Rows.rows[rowIndex].getCell(Name).getValue();&lt;br /&gt;
            nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   }&lt;br /&gt;
*/&lt;br /&gt;
   getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
       with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
      guid = &#039;{{D_GUID}}&#039;;&lt;br /&gt;
      alert(&amp;quot;nham&amp;quot;+guid);&lt;br /&gt;
      nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
      }&lt;br /&gt;
      return nameList;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	End JAVA_SCRIPT of QUESTIONNAIRE&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3.3 : Create the question for showing the upload form  ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of that question &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Question.bind(&#039;afterShowQuestion&#039;, function(question, answerSheet, element) {&lt;br /&gt;
  $(&#039;.cg-ui-input&#039;).hide();&lt;br /&gt;
var folderid = &#039;{{D_Current_Folder_Id}}&#039;;&lt;br /&gt;
var dlg;  &lt;br /&gt;
   $.getScript(&amp;quot;../../Script/ServerMethods/ServerMethods.js&amp;quot;, function(){&lt;br /&gt;
   		$.getScript(&amp;quot;../../Script/XmlParser/xmlp.js&amp;quot;, function(){&lt;br /&gt;
    		ServerMethods.registerMethod(new Method(TYPE_ARRAY,&#039;GetImageInfo&#039;,false,null,&#039;~/Common/Resources/View/ImagesTab.ascx&#039;,new Parameter(TYPE_INT, &#039;imagepk&#039;)));&lt;br /&gt;
    		openImagedialog();&lt;br /&gt;
  		});&lt;br /&gt;
   });//END getScript LV1&lt;br /&gt;
//SUB FUNCTION&lt;br /&gt;
  function openImagedialog() {&lt;br /&gt;
    window.getActiveDialog = function(body) {&lt;br /&gt;
      var strBody = $(body).prop(&#039;outerHTML&#039;);&lt;br /&gt;
      var imageId = parseInt(strBody.substring(strBody.lastIndexOf(&amp;quot;addList(&amp;quot;)+8,strBody.lastIndexOf(&amp;quot;,&#039;Add&#039;)&amp;quot;)));&lt;br /&gt;
      //console.log(imageId);&lt;br /&gt;
      Question.attr(&#039;answer&#039;, imageId);&lt;br /&gt;
      //console.log(Question);&lt;br /&gt;
      $(parent.document).find(&#039;.ui-widget-overlay&#039;).remove();&lt;br /&gt;
      $(parent.document).find(&#039;.ui-dialog&#039;).remove();&lt;br /&gt;
      $(&#039;#comUp&#039;).text(&#039;An Image has just been uploaded. Please click &amp;quot;Next&amp;quot; button to continue&#039;);&lt;br /&gt;
     &lt;br /&gt;
      return {papa: {}};&lt;br /&gt;
    };&lt;br /&gt;
	var virtualAppHost = window.location.origin;&lt;br /&gt;
    var url = virtualAppHost + &amp;quot;/Common/ResourceExplorer/EditImagePage.aspx?afn=Images/Resources&amp;amp;parenttype=6&amp;quot; +&lt;br /&gt;
		&amp;quot;&amp;amp;parentid=&amp;quot; + folderid;&lt;br /&gt;
	var $dialog = $(&#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
               .html(&#039;&amp;lt;iframe style=&amp;quot;border: 0px; &amp;quot; src=&amp;quot;&#039; + url + &#039;&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&#039;)&lt;br /&gt;
               .dialog({&lt;br /&gt;
                   	autoOpen: false,&lt;br /&gt;
                   	modal: true,&lt;br /&gt;
                   	height: 190,&lt;br /&gt;
                   	width: 463,&lt;br /&gt;
                 	title: &amp;quot;Add new image&amp;quot;&lt;br /&gt;
               });&lt;br /&gt;
	$dialog.dialog(&#039;open&#039;); &lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
 });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 1219174&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239036</id>
		<title>Upload images in questionnaire</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239036"/>
		<updated>2019-04-05T11:10:14Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: Update for new viewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
We have a client who wants respondents to be able to upload images in a questionnaire&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
&lt;br /&gt;
When the recipient open the answer sheet to answer, we will create the new folder whose name is recipient&#039;s name under the questionnaire then store the images that the he uploads in the image tab of this new created folder.&lt;br /&gt;
&lt;br /&gt;
= How to do it  =&lt;br /&gt;
&lt;br /&gt;
== Requirement  ==&lt;br /&gt;
&lt;br /&gt;
*The user template of the recipients must have the navigation access to open the Image tab of the Folder and upload the images in this image tab.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Preparation ==&lt;br /&gt;
&lt;br /&gt;
* In the group list, create the group containing the recipients and grant the needed navigation accesses to this group &lt;br /&gt;
&lt;br /&gt;
* In the folder list, create the folder containing all the recipient&#039;s folder.&lt;br /&gt;
&lt;br /&gt;
* Check the folder template resource id that the folder will use. &lt;br /&gt;
&lt;br /&gt;
== Step 2: Create the new folder for the recipient ==&lt;br /&gt;
&lt;br /&gt;
(You can see the script in the workflow whose resource id is 45408 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
array para = Workflow_getParameters();&lt;br /&gt;
number userId = para[0];&lt;br /&gt;
&lt;br /&gt;
number ImageFolderResourceId = 45406;&lt;br /&gt;
number FolderTemplateResourceId = 2071;&lt;br /&gt;
&lt;br /&gt;
array newFolder ;&lt;br /&gt;
number userResourceId = User_getResourceIdFromUserId(userId);&lt;br /&gt;
array userinfo = User_getUserByResourceId(userResourceId);&lt;br /&gt;
string ExistedFolderName = getNameFromResourceUniqueId(ImageFolderResourceId) + &amp;quot;\\&amp;quot;+ userinfo[USER_NAME];&lt;br /&gt;
array ExistedFolder = Folder_getFolderByName(ExistedFolderName);&lt;br /&gt;
&lt;br /&gt;
if (ExistedFolder == empty) &lt;br /&gt;
{&lt;br /&gt;
newFolder = Folder_new(userinfo[USER_NAME],FolderTemplateResourceId ,ImageFolderResourceId); &lt;br /&gt;
Folder_save(newFolder);&lt;br /&gt;
}&lt;br /&gt;
else &lt;br /&gt;
{&lt;br /&gt;
newFolder = ExistedFolder ;&lt;br /&gt;
}&lt;br /&gt;
array permissions = {{userId , &amp;quot;FullControl&amp;quot;}};&lt;br /&gt;
updateUserPermission(newFolder[FOLDER_RESOURCE_ID], permissions);&lt;br /&gt;
string guid = getResourceGuid(newFolder[FOLDER_RESOURCE_ID]);&lt;br /&gt;
return getResourceIdFromGuid(guid);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up the questionnaire ==&lt;br /&gt;
&lt;br /&gt;
(You can see the questionnaire whose resource id is 1219174 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
=== Step 3.1 : Create the dummy question for storing the folder id ===&lt;br /&gt;
&lt;br /&gt;
We will call the workflow in step 2 to get the new created folder id of recipient&lt;br /&gt;
&lt;br /&gt;
=== Step 3.2 : Add the following script to the questionnaire ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of the questionnaire &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	Server info&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ServerInfo =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;rootPath&amp;quot; : window.location.protocol+&amp;quot;//&amp;quot;+window.location.host&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	ResourceType enumeration&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ResourceType =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;Folder&amp;quot;:&amp;quot;Folder&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// IFrame&lt;br /&gt;
//&lt;br /&gt;
function IFrame(parentElement)  &lt;br /&gt;
{  &lt;br /&gt;
   // Create the iframe which will be returned  &lt;br /&gt;
   var iframe = document.createElement(&amp;quot;iframe&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
   // If no parent element is specified then use body as the parent element  &lt;br /&gt;
   if(parentElement == null)  &lt;br /&gt;
      parentElement = document.body;  &lt;br /&gt;
  &lt;br /&gt;
   // This is necessary in order to initialize the document inside the iframe  &lt;br /&gt;
   parentElement.appendChild(iframe);  &lt;br /&gt;
&lt;br /&gt;
   // Get the document object of the IFrame&lt;br /&gt;
   iframe.getDocument = function()&lt;br /&gt;
   {&lt;br /&gt;
      // Depending on browser platform get the iframe&#039;s document, this is only  &lt;br /&gt;
      // available if the iframe has already been appended to an element which  &lt;br /&gt;
      // has been added to the document  &lt;br /&gt;
&lt;br /&gt;
      var doc;&lt;br /&gt;
&lt;br /&gt;
      if(this.contentDocument)  &lt;br /&gt;
         // Firefox, Opera  &lt;br /&gt;
         doc = this.contentDocument;  &lt;br /&gt;
      else if(this.contentWindow)  &lt;br /&gt;
         // Internet Explorer  &lt;br /&gt;
         doc = this.contentWindow.document;  &lt;br /&gt;
      else if(this.document)  &lt;br /&gt;
         // Others?  &lt;br /&gt;
         doc = this.document;&lt;br /&gt;
&lt;br /&gt;
      // If we did not succeed in finding the document then throw an exception  &lt;br /&gt;
      if(doc == null)  &lt;br /&gt;
         throw &amp;quot;Document not found, append the parent element to the DOM before creating the IFrame&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      return doc;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Set iframe source&lt;br /&gt;
   iframe.setSource = function(src)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the source&lt;br /&gt;
      this.src = src;&lt;br /&gt;
&lt;br /&gt;
      // Initialize the iframe&#039;s document&lt;br /&gt;
      this.doc = this.getDocument();&lt;br /&gt;
 &lt;br /&gt;
      // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
      // the iframe&#039;s contents by script&lt;br /&gt;
      iframe.doc.open();  &lt;br /&gt;
      iframe.doc.close();  &lt;br /&gt;
   }&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setWidth = function(width)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the width&lt;br /&gt;
      this.width = width;&lt;br /&gt;
   }	&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setHeight = function(height)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the height&lt;br /&gt;
      this.height = height;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Initiate the iframe&#039;s document property&lt;br /&gt;
   iframe.doc = iframe.getDocument();&lt;br /&gt;
  &lt;br /&gt;
   // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
   // the iframe&#039;s contents by script&lt;br /&gt;
   iframe.doc.open();  &lt;br /&gt;
   iframe.doc.close();  &lt;br /&gt;
  &lt;br /&gt;
   // Return the iframe, now with an extra property iframe.doc containing the  &lt;br /&gt;
   // iframe&#039;s document  &lt;br /&gt;
   return iframe;  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	AttachmentList question control&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
function ImageList(elementContainer, width,height,viewimage)&lt;br /&gt;
{&lt;br /&gt;
   this._elementContainer = elementContainer;&lt;br /&gt;
this._iframe = new IFrame(this._elementContainer);&lt;br /&gt;
$(this._iframe)&lt;br /&gt;
.attr(&amp;quot;id&amp;quot;, &amp;quot;ImageListIFrame&amp;quot;)&lt;br /&gt;
.bind(&amp;quot;load&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
	{&lt;br /&gt;
		if(this.src == &#039;&#039;)&lt;br /&gt;
			return;&lt;br /&gt;
if (viewimage == &amp;quot;off&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_main&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_1&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_3&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_c_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_1_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_2_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_3_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_4_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_5_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_6_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_7_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_8_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_9_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_10_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_11_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_12_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_13_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_14_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_15_2&#039;).hide();&lt;br /&gt;
}&lt;br /&gt;
	});&lt;br /&gt;
if (width != null)&lt;br /&gt;
   this._iframe.setWidth(width);&lt;br /&gt;
if (height != null)&lt;br /&gt;
   this._iframe.setHeight(height);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ImageList.prototype =&lt;br /&gt;
{&lt;br /&gt;
   &lt;br /&gt;
   createImageListUrl: function(type, id)&lt;br /&gt;
   {&lt;br /&gt;
      return ImageList.path&lt;br /&gt;
         .replace(&amp;quot;{rootPath}&amp;quot;, ServerInfo.rootPath)&lt;br /&gt;
         .replace(&amp;quot;{type}&amp;quot;, type)&lt;br /&gt;
         .replace(&amp;quot;{id}&amp;quot;, id);&lt;br /&gt;
   },&lt;br /&gt;
   &lt;br /&gt;
   setFolderId: function(FolderId)&lt;br /&gt;
   {&lt;br /&gt;
       $(this._iframe)&lt;br /&gt;
         .attr(&amp;quot;src&amp;quot;, this.createImageListUrl(ResourceType.Folder, FolderId));&lt;br /&gt;
   },&lt;br /&gt;
&lt;br /&gt;
   getImages: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 1;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
&lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         &lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
            &lt;br /&gt;
            nameList.push(grid.Rows.rows[rowIndex].getCell(Name).getValue());&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   },&lt;br /&gt;
  /* getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
      &lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
         var guidtext;&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
           guid = grid.Rows.rows[rowIndex].getCell(Name).getValue();&lt;br /&gt;
            nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   }&lt;br /&gt;
*/&lt;br /&gt;
   getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
       with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
      guid = &#039;{{D_GUID}}&#039;;&lt;br /&gt;
      alert(&amp;quot;nham&amp;quot;+guid);&lt;br /&gt;
      nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
      }&lt;br /&gt;
      return nameList;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	End JAVA_SCRIPT of QUESTIONNAIRE&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3.3 : Create the question for showing the upload form  ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of that question &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Question.bind(&#039;afterShowQuestion&#039;, function(question, answerSheet, element) {&lt;br /&gt;
  $(&#039;.cg-ui-input&#039;).hide();&lt;br /&gt;
var folderid = &#039;{{D_Current_Folder_Id}}&#039;;&lt;br /&gt;
var dlg;  &lt;br /&gt;
   $.getScript(&amp;quot;../../Script/ServerMethods/ServerMethods.js&amp;quot;, function(){&lt;br /&gt;
   		$.getScript(&amp;quot;../../Script/XmlParser/xmlp.js&amp;quot;, function(){&lt;br /&gt;
    		ServerMethods.registerMethod(new Method(TYPE_ARRAY,&#039;GetImageInfo&#039;,false,null,&#039;~/Common/Resources/View/ImagesTab.ascx&#039;,new Parameter(TYPE_INT, &#039;imagepk&#039;)));&lt;br /&gt;
    		openImagedialog();&lt;br /&gt;
  		});&lt;br /&gt;
   });//END getScript LV1&lt;br /&gt;
//SUB FUNCTION&lt;br /&gt;
  function openImagedialog() {&lt;br /&gt;
    window.getActiveDialog = function(body) {&lt;br /&gt;
      var strBody = $(body).prop(&#039;outerHTML&#039;);&lt;br /&gt;
      var imageId = parseInt(strBody.substring(strBody.lastIndexOf(&amp;quot;addList(&amp;quot;)+8,strBody.lastIndexOf(&amp;quot;,&#039;Add&#039;)&amp;quot;)));&lt;br /&gt;
      //console.log(imageId);&lt;br /&gt;
      Question.attr(&#039;answer&#039;, imageId);&lt;br /&gt;
      //console.log(Question);&lt;br /&gt;
      $(parent.document).find(&#039;.ui-widget-overlay&#039;).remove();&lt;br /&gt;
      $(parent.document).find(&#039;.ui-dialog&#039;).remove();&lt;br /&gt;
      $(&#039;#comUp&#039;).text(&#039;An Image has just been uploaded. Please click &amp;quot;Next&amp;quot; button to continue&#039;);&lt;br /&gt;
     &lt;br /&gt;
      return {papa: {}};&lt;br /&gt;
    };&lt;br /&gt;
	var virtualAppHost = window.location.origin;&lt;br /&gt;
    var url = virtualAppHost + &amp;quot;/Common/ResourceExplorer/EditImagePage.aspx?afn=Images/Resources&amp;amp;parenttype=6&amp;quot; +&lt;br /&gt;
		&amp;quot;&amp;amp;parentid=&amp;quot; + folderid;&lt;br /&gt;
	var $dialog = $(&#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
               .html(&#039;&amp;lt;iframe style=&amp;quot;border: 0px; &amp;quot; src=&amp;quot;&#039; + url + &#039;&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&#039;)&lt;br /&gt;
               .dialog({&lt;br /&gt;
                   	autoOpen: false,&lt;br /&gt;
                   	modal: true,&lt;br /&gt;
                   	height: 190,&lt;br /&gt;
                   	width: 463,&lt;br /&gt;
                 	title: &amp;quot;Add new image&amp;quot;&lt;br /&gt;
               });&lt;br /&gt;
	$dialog.dialog(&#039;open&#039;); &lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
 });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 75216&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239035</id>
		<title>Upload images in questionnaire</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Upload_images_in_questionnaire&amp;diff=239035"/>
		<updated>2019-04-05T11:08:31Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: Update for new viewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
We have a client who wants respondents to be able to upload images in a questionnaire&lt;br /&gt;
&lt;br /&gt;
= Solution =&lt;br /&gt;
&lt;br /&gt;
When the recipient open the answer sheet to answer, we will create the new folder whose name is recipient&#039;s name under the questionnaire then store the images that the he uploads in the image tab of this new created folder.&lt;br /&gt;
&lt;br /&gt;
= How to do it  =&lt;br /&gt;
&lt;br /&gt;
== Requirement  ==&lt;br /&gt;
&lt;br /&gt;
*The user template of the recipients must have the navigation access to open the Image tab of the Folder and upload the images in this image tab.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Preparation ==&lt;br /&gt;
&lt;br /&gt;
* In the group list, create the group containing the recipients and grant the needed navigation accesses to this group &lt;br /&gt;
&lt;br /&gt;
* In the folder list, create the folder containing all the recipient&#039;s folder.&lt;br /&gt;
&lt;br /&gt;
* Check the folder template resource id that the folder will use. &lt;br /&gt;
&lt;br /&gt;
== Step 2: Create the new folder for the recipient ==&lt;br /&gt;
&lt;br /&gt;
(You can see the script in the workflow whose resource id is 45408 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
array para = Workflow_getParameters();&lt;br /&gt;
number userId = para[0];&lt;br /&gt;
&lt;br /&gt;
number ImageFolderResourceId = 45406;&lt;br /&gt;
number FolderTemplateResourceId = 2071;&lt;br /&gt;
&lt;br /&gt;
array newFolder ;&lt;br /&gt;
number userResourceId = User_getResourceIdFromUserId(userId);&lt;br /&gt;
array userinfo = User_getUserByResourceId(userResourceId);&lt;br /&gt;
string ExistedFolderName = getNameFromResourceUniqueId(ImageFolderResourceId) + &amp;quot;\\&amp;quot;+ userinfo[USER_NAME];&lt;br /&gt;
array ExistedFolder = Folder_getFolderByName(ExistedFolderName);&lt;br /&gt;
&lt;br /&gt;
if (ExistedFolder == empty) &lt;br /&gt;
{&lt;br /&gt;
newFolder = Folder_new(userinfo[USER_NAME],FolderTemplateResourceId ,ImageFolderResourceId); &lt;br /&gt;
Folder_save(newFolder);&lt;br /&gt;
}&lt;br /&gt;
else &lt;br /&gt;
{&lt;br /&gt;
newFolder = ExistedFolder ;&lt;br /&gt;
}&lt;br /&gt;
array permissions = {{userId , &amp;quot;FullControl&amp;quot;}};&lt;br /&gt;
updateUserPermission(newFolder[FOLDER_RESOURCE_ID], permissions);&lt;br /&gt;
string guid = getResourceGuid(newFolder[FOLDER_RESOURCE_ID]);&lt;br /&gt;
return getResourceIdFromGuid(guid);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up the questionnaire ==&lt;br /&gt;
&lt;br /&gt;
(You can see the questionnaire whose resource id is 1219174 in cg.catglobe.com)&lt;br /&gt;
&lt;br /&gt;
=== Step 3.1 : Create the dummy question for storing the folder id ===&lt;br /&gt;
&lt;br /&gt;
We will call the workflow in step 2 to get the new created folder id of recipient&lt;br /&gt;
&lt;br /&gt;
=== Step 3.2 : Add the following script to the questionnaire ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of the questionnaire &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	Server info&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ServerInfo =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;rootPath&amp;quot; : window.location.protocol+&amp;quot;//&amp;quot;+window.location.host&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	ResourceType enumeration&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
var ResourceType =&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;Folder&amp;quot;:&amp;quot;Folder&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// IFrame&lt;br /&gt;
//&lt;br /&gt;
function IFrame(parentElement)  &lt;br /&gt;
{  &lt;br /&gt;
   // Create the iframe which will be returned  &lt;br /&gt;
   var iframe = document.createElement(&amp;quot;iframe&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
   // If no parent element is specified then use body as the parent element  &lt;br /&gt;
   if(parentElement == null)  &lt;br /&gt;
      parentElement = document.body;  &lt;br /&gt;
  &lt;br /&gt;
   // This is necessary in order to initialize the document inside the iframe  &lt;br /&gt;
   parentElement.appendChild(iframe);  &lt;br /&gt;
&lt;br /&gt;
   // Get the document object of the IFrame&lt;br /&gt;
   iframe.getDocument = function()&lt;br /&gt;
   {&lt;br /&gt;
      // Depending on browser platform get the iframe&#039;s document, this is only  &lt;br /&gt;
      // available if the iframe has already been appended to an element which  &lt;br /&gt;
      // has been added to the document  &lt;br /&gt;
&lt;br /&gt;
      var doc;&lt;br /&gt;
&lt;br /&gt;
      if(this.contentDocument)  &lt;br /&gt;
         // Firefox, Opera  &lt;br /&gt;
         doc = this.contentDocument;  &lt;br /&gt;
      else if(this.contentWindow)  &lt;br /&gt;
         // Internet Explorer  &lt;br /&gt;
         doc = this.contentWindow.document;  &lt;br /&gt;
      else if(this.document)  &lt;br /&gt;
         // Others?  &lt;br /&gt;
         doc = this.document;&lt;br /&gt;
&lt;br /&gt;
      // If we did not succeed in finding the document then throw an exception  &lt;br /&gt;
      if(doc == null)  &lt;br /&gt;
         throw &amp;quot;Document not found, append the parent element to the DOM before creating the IFrame&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      return doc;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Set iframe source&lt;br /&gt;
   iframe.setSource = function(src)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the source&lt;br /&gt;
      this.src = src;&lt;br /&gt;
&lt;br /&gt;
      // Initialize the iframe&#039;s document&lt;br /&gt;
      this.doc = this.getDocument();&lt;br /&gt;
 &lt;br /&gt;
      // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
      // the iframe&#039;s contents by script&lt;br /&gt;
      iframe.doc.open();  &lt;br /&gt;
      iframe.doc.close();  &lt;br /&gt;
   }&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setWidth = function(width)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the width&lt;br /&gt;
      this.width = width;&lt;br /&gt;
   }	&lt;br /&gt;
  // Set iframe source&lt;br /&gt;
   iframe.setHeight = function(height)&lt;br /&gt;
   {&lt;br /&gt;
      // Set the height&lt;br /&gt;
      this.height = height;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Initiate the iframe&#039;s document property&lt;br /&gt;
   iframe.doc = iframe.getDocument();&lt;br /&gt;
  &lt;br /&gt;
   // Open and close the iframe&#039;s document, this will allow us to manipulate&lt;br /&gt;
   // the iframe&#039;s contents by script&lt;br /&gt;
   iframe.doc.open();  &lt;br /&gt;
   iframe.doc.close();  &lt;br /&gt;
  &lt;br /&gt;
   // Return the iframe, now with an extra property iframe.doc containing the  &lt;br /&gt;
   // iframe&#039;s document  &lt;br /&gt;
   return iframe;  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	AttachmentList question control&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
function ImageList(elementContainer, width,height,viewimage)&lt;br /&gt;
{&lt;br /&gt;
   this._elementContainer = elementContainer;&lt;br /&gt;
this._iframe = new IFrame(this._elementContainer);&lt;br /&gt;
$(this._iframe)&lt;br /&gt;
.attr(&amp;quot;id&amp;quot;, &amp;quot;ImageListIFrame&amp;quot;)&lt;br /&gt;
.bind(&amp;quot;load&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
	{&lt;br /&gt;
		if(this.src == &#039;&#039;)&lt;br /&gt;
			return;&lt;br /&gt;
if (viewimage == &amp;quot;off&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_main&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_1&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar_Item_3&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#Imagesxtoolbar&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_c_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_0_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_1_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_2_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_3_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_4_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_5_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_6_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_7_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_8_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_9_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_10_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_11_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_12_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_13_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_14_2&#039;).hide();&lt;br /&gt;
$(&#039;#ImageListIFrame&#039;).contents().find(&#039;#ImagesximageGrid_rc_15_2&#039;).hide();&lt;br /&gt;
}&lt;br /&gt;
	});&lt;br /&gt;
if (width != null)&lt;br /&gt;
   this._iframe.setWidth(width);&lt;br /&gt;
if (height != null)&lt;br /&gt;
   this._iframe.setHeight(height);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
ImageList.path = &amp;quot;{rootPath}/Common/Resources/View/ContainerPage.aspx?tabtype=Images&amp;amp;type={type}&amp;amp;id={id}&amp;amp;isportal=false&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ImageList.prototype =&lt;br /&gt;
{&lt;br /&gt;
   &lt;br /&gt;
   createImageListUrl: function(type, id)&lt;br /&gt;
   {&lt;br /&gt;
      return ImageList.path&lt;br /&gt;
         .replace(&amp;quot;{rootPath}&amp;quot;, ServerInfo.rootPath)&lt;br /&gt;
         .replace(&amp;quot;{type}&amp;quot;, type)&lt;br /&gt;
         .replace(&amp;quot;{id}&amp;quot;, id);&lt;br /&gt;
   },&lt;br /&gt;
   &lt;br /&gt;
   setFolderId: function(FolderId)&lt;br /&gt;
   {&lt;br /&gt;
       $(this._iframe)&lt;br /&gt;
         .attr(&amp;quot;src&amp;quot;, this.createImageListUrl(ResourceType.Folder, FolderId));&lt;br /&gt;
   },&lt;br /&gt;
&lt;br /&gt;
   getImages: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 1;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
&lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         &lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
            &lt;br /&gt;
            nameList.push(grid.Rows.rows[rowIndex].getCell(Name).getValue());&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   },&lt;br /&gt;
  /* getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
      &lt;br /&gt;
      with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         var grid = getCGExecuter().getGridUtilities().getGrid(__gridClientId);&lt;br /&gt;
         var guidtext;&lt;br /&gt;
         for (var rowIndex = 0; rowIndex &amp;lt;grid.Rows.length; rowIndex ++)&lt;br /&gt;
         {&lt;br /&gt;
           guid = grid.Rows.rows[rowIndex].getCell(Name).getValue();&lt;br /&gt;
            nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return nameList;&lt;br /&gt;
   }&lt;br /&gt;
*/&lt;br /&gt;
   getGUIDs: function()&lt;br /&gt;
   {&lt;br /&gt;
      var Name = 2;&lt;br /&gt;
      var nameList = new Array();&lt;br /&gt;
       with(this._iframe.contentWindow)&lt;br /&gt;
      {&lt;br /&gt;
&lt;br /&gt;
      guid = &#039;{{D_GUID}}&#039;;&lt;br /&gt;
      alert(&amp;quot;nham&amp;quot;+guid);&lt;br /&gt;
      nameList.push(jQuery.trim(guid.split(&#039;&amp;lt;a&#039;)[0]));&lt;br /&gt;
      }&lt;br /&gt;
      return nameList;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	End JAVA_SCRIPT of QUESTIONNAIRE&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3.3 : Create the question for showing the upload form  ===&lt;br /&gt;
&lt;br /&gt;
Paste this code below into Javascript tab of that question &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
/*-------------------------------------------------------------------------&lt;br /&gt;
	Set initial information for the uploading image&lt;br /&gt;
-------------------------------------------------------------------------*/&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
	quest.ImageList = new ImageList($(&amp;quot;#attachmentContainer&amp;quot;).get(0), &amp;quot;800px&amp;quot;,&amp;quot;400px&amp;quot; );&lt;br /&gt;
	quest.ImageList.setFolderId(&#039;{{D_Current_Folder_Id}}&#039;);&lt;br /&gt;
        $(&amp;quot;#attachmentContainer&amp;quot;).append($(&amp;quot;&amp;lt;input name=&#039;QUESTION.D_Image_Guid&#039; type=&#039;hidden&#039;&amp;gt;&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*-------------------------------------------------------------------------&lt;br /&gt;
	- Validate the question. Automaticaly called.&lt;br /&gt;
	- You must upload at least 1 image&lt;br /&gt;
-------------------------------------------------------------------------*/&lt;br /&gt;
function questioncheck()&lt;br /&gt;
{&lt;br /&gt;
   // Subscription form valid variable&lt;br /&gt;
	var valid = true;&lt;br /&gt;
    ErrorMessages.getInstance().clearErrorMessages();&lt;br /&gt;
	var list = quest.ImageList.getImages();&lt;br /&gt;
	if (list.length &amp;lt; 1)&lt;br /&gt;
	{&lt;br /&gt;
		ErrorMessages.getInstance().showErrorMessage(&#039;You must upload at least 1 image.&#039;);&lt;br /&gt;
		valid = false;&lt;br /&gt;
	}&lt;br /&gt;
   // Return result of validation&lt;br /&gt;
    var getGuid = quest.ImageList.getGUIDs();&lt;br /&gt;
   $(&amp;quot;input[name$=&#039;QUESTION.D_Image_Guid&#039;]&amp;quot;).val(getGuid);&lt;br /&gt;
   return valid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------------------------------------------------------&lt;br /&gt;
	End JAVA_SCRIPT of QUESTION Insert_Image&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 75216&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=SetResource&amp;diff=238631</id>
		<title>SetResource</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=SetResource&amp;diff=238631"/>
		<updated>2018-07-27T05:09:49Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: fix text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Resource_Functions]]&lt;br /&gt;
&lt;br /&gt;
{{HelpFiles}} __FORCETOC__&lt;br /&gt;
&lt;br /&gt;
It is used to set the resource used in&lt;br /&gt;
       getBoolConstant,&lt;br /&gt;
       getBooleanConstant,&lt;br /&gt;
       getNumberConstant,&lt;br /&gt;
       getStringConstant,&lt;br /&gt;
       getDateTimeConstant,&lt;br /&gt;
       getSingleConstant,&lt;br /&gt;
       getSingleConstantSelectedText,&lt;br /&gt;
       getMultiConstant,&lt;br /&gt;
       getMultiConstantSelectedTexts,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
setResource(string resourceGUID);&lt;br /&gt;
&lt;br /&gt;
== Arguments ==&lt;br /&gt;
&#039;&#039;resourceGUID&#039;&#039;: string.&lt;br /&gt;
&lt;br /&gt;
== Return type ==&lt;br /&gt;
Empty&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setResource(&amp;quot;F04731D2-23A7-4877-BE75-6E8C027E3B4E&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Category:Import_module&amp;diff=25955</id>
		<title>Category:Import module</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Category:Import_module&amp;diff=25955"/>
		<updated>2016-12-23T10:04:33Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Help_Files]]&lt;br /&gt;
==Import module==&lt;br /&gt;
&lt;br /&gt;
The import module of Catglobe can do two things&lt;br /&gt;
&lt;br /&gt;
# Add and update user information into Catglobe&lt;br /&gt;
# Add and update data of questionnaire in Catglobe&lt;br /&gt;
&lt;br /&gt;
To access the Import Module you should go to&lt;br /&gt;
&lt;br /&gt;
Tools-&amp;amp;gt; Data -&amp;amp;gt; Data Import Wizard&lt;br /&gt;
&lt;br /&gt;
The wizard can import both new user and questionnaire data, or a combination of both. It can also update existing users’ information and data if you know the required foreign keys of the places to which you want to import.&lt;br /&gt;
&lt;br /&gt;
The following file will lead you through the 5 steps of the import wizard. If you wish to learn more on the rules of importing specific user information and data you can look at the detailed help files under this file! Links will be show where applicable in the text.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Choosing the data you will import ==&lt;br /&gt;
&lt;br /&gt;
In this step we can choose a source file containing the user and questionnaire data we want to import. The only format that is currently supported for import is MS excel (97-2015 formats).&lt;br /&gt;
&lt;br /&gt;
[[File:5849.png|500px|Import1]]&lt;br /&gt;
&lt;br /&gt;
Choose file to import from: Click browse to select a file containing data we want to import. This file must be an .xls or .xlsx file. If not, we will receive an error message and must choose a file of the correct format.&lt;br /&gt;
&lt;br /&gt;
Work sheet: This drop down list will display all the work sheets in the MS excel file we have selected. In other words it is only possible for us to import from one work sheet at a time.&lt;br /&gt;
&lt;br /&gt;
Source Data Preview: Whenever we select a work sheet, the grid below source data preview will show the data inside this work sheet. As it is only for previewing, it will display no more than 20 rows.&lt;br /&gt;
&lt;br /&gt;
Header row: If this check box is checked, the system will understand that the first row of the import file is the header, and the real data is from the second row to end. Otherwise, the system will create headers F1, F2, etc. and all of the content of the work sheet will be imported.&lt;br /&gt;
&lt;br /&gt;
User id column (optional): This drop down list displays all the headers of the file. In case we want to use existing user in the import job, we have to select a column containing users’ id. Otherwise, we should leave it blank. Already in this step we have to decide whether we are importing data to existing users or new users. It is NOT possible to import to both new and existing users in the same import. Please click here to read more on the “User Id” column.&lt;br /&gt;
&lt;br /&gt;
==Step 2: Choosing where to import the data to==&lt;br /&gt;
&lt;br /&gt;
This step allows us to specify some general filters on what we want to import and where the data should be imported to.&lt;br /&gt;
&lt;br /&gt;
[[Image:5850.png|500px|ImportWiza2]]&lt;br /&gt;
&lt;br /&gt;
Choose a group to import users to (optional): When importing users we can choose one group into which the users can be added no matter whether they are new users or existing users. We can search for an existing group by using Search function or create a new group by clicking the Add button (the plus sign). By clicking the Reset button we can clear this field.&lt;br /&gt;
&lt;br /&gt;
If this field does not have a value the system may instead look for group id’s in our imported MS excel data to find out if the imported users should be attached to some group. Using the MS excel gives us the added flexibility of importing each user to different groups. To read more on importing users to groups, please [[_Field:_Group_|click here]].&lt;br /&gt;
&lt;br /&gt;
User name mask: Makes it possible for us to specify how the user name of new created users will look. Please [[_Field:_User_Username_|click here]] to read more on the import of user names.&lt;br /&gt;
&lt;br /&gt;
Import user information: Checking this check box allows us to add core information to new users or to update existing users’ core information. The core information that will be allowed you to import in the next step is:&lt;br /&gt;
&lt;br /&gt;
* User name: [[_Field:_User_Username_|click here]] to learn more!&lt;br /&gt;
* Password: [[_Field:_User_Password_|click here]] to learn more!&lt;br /&gt;
* First name: [[_Field:_First_name_|click here]] to learn more!&lt;br /&gt;
* Middle name: [[_Field:_Middle_name_|click here]] to learn more!&lt;br /&gt;
* Last name: [[_Field:_Last_name_|click here]] to learn more!&lt;br /&gt;
* E-mail address: [[_Field:_User_Email_|click here]] to learn more!&lt;br /&gt;
* Language: [[_Field:_Language_|click here]] to learn more!&lt;br /&gt;
* Currency: [[_Field:_Currency_|click here]] to learn more!&lt;br /&gt;
* Culture: [[_Field:_Culture_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Import phone number information: Checking this check box allow us to import/update users’ phone numbers and fax numbers. [[_Field:_Phone_number_types_|Click here]] to read more on what columns in Catglobe you can import these numbers to.&lt;br /&gt;
&lt;br /&gt;
Import address information: Checking this check box allow us to add address information to new users or to update existing users’ address information. The address information that will be allowed you to import in the next step is:&lt;br /&gt;
&lt;br /&gt;
* Address: [[_Field:_User_Address_|click here]] to learn more!&lt;br /&gt;
* City: [[_Field:_User_City_|click here]] to learn more!&lt;br /&gt;
* Region: [[_Field:_User_Region_|click here]] to learn more!&lt;br /&gt;
* Zip code: [[_Field:_User_Zipcode_|click here]] to learn more!&lt;br /&gt;
* Postbox: [[_Field:_Postbox_|click here]] to learn more!&lt;br /&gt;
* Web site: [[_Field:_Website_|click here]] to learn more!&lt;br /&gt;
* Country: [[_Field:_User_CountryId_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Import points information: Checking this check box allow us to insert or withdraw points to new or existing users points accounts in Catglobe. The point information that will be allowed you to import in the next step is:&lt;br /&gt;
&lt;br /&gt;
* Points: [[_Field:_User_Points_|click here]] to learn more!&lt;br /&gt;
* Points timestamp: [[_Field:_Points_timestamp_|click here]] to learn more!&lt;br /&gt;
* Points description: [[_Field:_Points_description_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Import qualifications: Checking this check box allow us to insert or update qualification of new or existing users. The qualification information that will be allowed you to import in the next step is:&lt;br /&gt;
&lt;br /&gt;
* Qualification: [[_Field:_Qualification_|click here]] to learn more!&lt;br /&gt;
* Qualification Level: [[_Field:_Qualification_level_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Generate passwords: If the check box is checked, the system will create random passwords for users. Since you may also choose to import passwords specified in excel and passwords can also be fixed password, please refer to the [[_Field:_User_Password_|following file]] to learn more.&lt;br /&gt;
&lt;br /&gt;
Choose a questionnaire to import data to (optional): If you wish to also import data for the existing or new users you have specified, you need to choose the questionnaire into which this data will be placed. This of course means that you will need to make sure that the data you import fits with the questions available in the questionnaire. It is possible using the import function to add and update data for users, so be careful what you do. Use the button with the magnifying glass to find the questionnaire you wish to import to.&lt;br /&gt;
&lt;br /&gt;
Import multi questions from comma separated format: When this column is checked, then the format of multi questions will be expected to have all true answer options listed by their answer option id, rather than by the traditional binary format. E.g. instead of the format &amp;quot;0101&amp;quot; it should get &amp;quot;2,4&amp;quot; or &amp;quot;4,2&amp;quot;. The advantage of the comma separated format is, that the import can also include the users&#039; selection order as part of the information. &amp;quot;4,2&amp;quot; would mean that the user, when answering the multi question, first chose 4 then 2. &amp;quot;2,4&amp;quot; would have meant the opposite, namely that the user first chose 2 then 4, when checking these two options for the multi question.&lt;br /&gt;
&lt;br /&gt;
If you are importing to existing users you must then choose one of three options. These options specify what will happen with existing questionnaire answer sheet of the questionnaire when importing data.&lt;br /&gt;
&lt;br /&gt;
The three options are:&lt;br /&gt;
&lt;br /&gt;
Option 1: To be chosen when you know that each user has only zero or one questionnaire answer sheet for this questionnaire. By selecting this option, system users must be sure that every imported User has only zero or one questionnaire answer sheet for the selected questionnaire. An error will be shown during the validation step if any users have more than one, when you in the final step of the wizard will try to import and the option is not adhered to in Catglobe.&lt;br /&gt;
&lt;br /&gt;
Option 2: To be chosen when you want to delete all existing questionnaire answer sheet for this questionnaire of the user for whom you are importing data. This option is only available if the current user has the necessary navigation access to do this. If not, the option will be disabled and only options 1 and 3 will be available.&lt;br /&gt;
&lt;br /&gt;
Option 3: Select this option if you have a column specified in the MS excel file you stating the id of the questionnaire answer sheet you will be importing to (Resource_Project_Questionnaire_Id in Catglobe database). If you choose this, a drop down list will appear asking you to specify the column where this data exists. If the user to which you are importing has more answer sheets for the questionnaire of course these will not be affected. If any imported record does not have values in this column it will be seen as an error and the import cannot be carried out. If any ID is not recognized when importing, the row in question will be ignored.&lt;br /&gt;
&lt;br /&gt;
When we import we choose specific questions in the questionnaire to import to. The logic of how the data needs to be set up in our import file depends on the question types we are importing to. The different question types that we have are:&lt;br /&gt;
&lt;br /&gt;
* Text question: [[_Question_type:_Text_question_|click here]] to learn more!&lt;br /&gt;
* Number question: [[_Question_type:_Number_question_|click here]] to learn more!&lt;br /&gt;
* Single question: [[_Question_type:_Single_question_|click here]] to learn more!&lt;br /&gt;
* Multi question: [[_Question_type:_Multi_question_|click here]] to learn more!&lt;br /&gt;
* Scale question: [[_Question_type:_Grid_scale_question_|click here]] to learn more!&lt;br /&gt;
* Grid single question: [[_Question_type:_Grid_single_question_|click here]] to learn more!&lt;br /&gt;
* Grid multi question: [[_Question_type:_Grid_multi_question_|click here]] to learn more!&lt;br /&gt;
* Grid scale question: [[_Question_type:_Grid_scale_question_|click here]] to learn more!&lt;br /&gt;
* Grid text question: [[_Question_type:_Text_question_|click here]] to learn more!&lt;br /&gt;
* Multimedia question: [[_Question_type:_Multimedia_question_|click here]] to learn more!&lt;br /&gt;
* Open question: [[_Question_type:_Open_question_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Auto map: When this check box is checked, the system will automatically map the import file’s columns with those in the system if the headers are exactly the same. Each of the help files that you can find related to this guide tells you what that header must be. If any header is not auto-mapped, columns must be mapped one by one.&lt;br /&gt;
&lt;br /&gt;
If we, for example, want to import the following file into the system for an array of users, we will see two different scenarios in step 3 of the wizard depending on whether we chose auto-map or not.&lt;br /&gt;
&lt;br /&gt;
[[Image:487.gif]]&lt;br /&gt;
&lt;br /&gt;
Below is shown how it will look if auto-map is enabled.&lt;br /&gt;
&lt;br /&gt;
[[Image:5853.png|600px|ImportWiz56-2]]&lt;br /&gt;
&lt;br /&gt;
If auto-map is not enabled nothing will be mapped as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5854.png|500px|ImportNoAutoMap]]&lt;br /&gt;
&lt;br /&gt;
Advanced mode: Check this check box led us to the advanced mode containing more detailed information that you may import to users. Generally most of the columns require that you know exactly what you are doing or you may cause some serious problems to the database. If you are not a super-user, we generally advice you not to use this advanced mode feature. The available columns when clicking this check box are:&lt;br /&gt;
&lt;br /&gt;
* Timereg_Enabled: [[_Field:_Timereg_Enabled_|click here]] to learn more!&lt;br /&gt;
* Resource_ManHour: [[_Field:_Resource_Manhour_|click here]] to learn more!&lt;br /&gt;
* Disabled_Date: [[_Field:_Disabled_|click here]] to learn more!&lt;br /&gt;
* Access_Expiration: [[_Field:_Access_Expiration_|click here]] to learn more!&lt;br /&gt;
* Protected_Until_Date: [[_Field:_Protected_Until_Date_|click here]] to learn more!&lt;br /&gt;
* Discount_Id: [[_Field:_Discount_Id_|click here]] to learn more!&lt;br /&gt;
* Work_Setting_Id: [[_Field:_Work_Setting_Id_|click here]] to learn more!&lt;br /&gt;
* Timezone_Id: [[_Field:_Timezone_Id_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
Some advanced columns that you can import to the questionnaire answer sheets are:&lt;br /&gt;
&lt;br /&gt;
* Next_Contact_Datetime: [[_Field:_Next_Contact_Datetime_|click here]] to learn more!&lt;br /&gt;
* Question_Index_Sequence: [[_Field:_Question_Index_Sequence_|click here]] to learn more!&lt;br /&gt;
* Sample_Rule_Id: [[_Field:_Sample_Rule_Id_|click here]] to learn more!&lt;br /&gt;
* Status: [[_Field:_Status_|click here]] to learn more!&lt;br /&gt;
* Priority: [[_Field:_Priority_|click here]] to learn more!&lt;br /&gt;
* Dedicated_User_Id: [[_Field:_Dedicated_User_Id_|click here]] to learn more!&lt;br /&gt;
* Estimated_Completed_Time_Seconds: [[_Field:_Estimated_Completion_Time_Seconds_|click here]] to learn more!&lt;br /&gt;
&lt;br /&gt;
===Step 3: Set group access for newly imported users===&lt;br /&gt;
&lt;br /&gt;
This step allows the logged-in user to set group access for newly imported users. These users must be new and imported to database. In order to import new users, user_id in step 1 must be selected. In addition, the logged-in user is required to select at least one of the following options: &amp;quot;import user information&amp;quot;, &amp;quot;Import phone number information&amp;quot;, &amp;quot;Import address information&amp;quot;, &amp;quot;Import point information&amp;quot;, &amp;quot;Import qualifications&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The logged in user could reach this step if he has had group navigation access already.&lt;br /&gt;
&lt;br /&gt;
This grid below allows user to add one or more groups. Each group could have one of three permission level: Administrator, Manager or Observer.&lt;br /&gt;
&lt;br /&gt;
[[Image:5851.png|500px|ImportWiz3]]&lt;br /&gt;
&lt;br /&gt;
The newly imported users (non-anonymous users) have to be managed by at least one group. There must be at least one administrator in the selected groups. The current user must belong to at least one of the selected groups.System would show an error message and user could not move to next step if the selected groups are not correct.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Add&#039;&#039;&#039;: Click Add to open a search control to select groups managing these imported users. These group are added with observer level as default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remove&#039;&#039;&#039;: Click Remove to remove highlighted groups out of the group access list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set level for each group&#039;&#039;&#039;: Click on level column to pull down access level list to select one of them.&lt;br /&gt;
&lt;br /&gt;
[[Image:2662.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set as default&#039;&#039;&#039;: Click &amp;quot;Set as default&amp;quot; to set group access default.&lt;br /&gt;
&lt;br /&gt;
An alert will tell him that old his defaults will be replaced by the current records. If he says YES&lt;br /&gt;
&lt;br /&gt;
* No record selected : all will be his defaults (save to his preferences)&lt;br /&gt;
&lt;br /&gt;
* Records selected : all selected records will be his defaults (save to his preferences)&lt;br /&gt;
&lt;br /&gt;
* No record there : it means that user intends to clean up his defaults (save to his preferences)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Use default&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
An alert tell him that current records will be cleaned and replaced by his defaults. If he says YES&lt;br /&gt;
&lt;br /&gt;
* His defaults will be loaded and bound to the grid.&lt;br /&gt;
&lt;br /&gt;
User&#039;s defaults will be loaded at the same time the page is loaded.&lt;br /&gt;
&lt;br /&gt;
===Step 4: Choosing the User Information you will import===&lt;br /&gt;
&lt;br /&gt;
What will default have been mapped and what destination columns are available in step 3 depends fully on the actions you took in step 2. This step is only used for importing the data for user information. All data to import for questionnaires will come in step 5. Please be careful to go through all columns to make sure that they are mapped correctly. You can map more columns by choosing the source column (columns in your MS Excel file) with destination columns (the place the information will go in Catglobe). All destination columns are explained in help files for this guide so please refer to them if you are not sure how to map your data.&lt;br /&gt;
&lt;br /&gt;
[[Image:5855.png|500px|Imp3]]&lt;br /&gt;
&lt;br /&gt;
Beware that it is here possible to map anything with anything. But if the data do not make sense you will in the last step of the wizard be presented with an error and disallowed execution of the import job.&lt;br /&gt;
&lt;br /&gt;
==Step 5: Choosing the questionnaire answers to import==&lt;br /&gt;
&lt;br /&gt;
Step 5 behaves exactly the same as Step 4. The only difference between them is that step 4 is used for specifying what user information to import while step 5 is used for specifying what questionnaire data to import.&lt;br /&gt;
&lt;br /&gt;
[[Image:5857.png|500px|Imp4]]&lt;br /&gt;
&lt;br /&gt;
==Step 6: Validation of import and final execution==&lt;br /&gt;
&lt;br /&gt;
Step 5 will validate all the data given the validation rules supplied for each importable column. If there are no error (although warning message may exist) the finish button will be activated and the import job can be executed. However, if there are any error messages the finish button will be deactivated and you must correct your import rules or import file accordingly.&lt;br /&gt;
&lt;br /&gt;
[[Image:5858.png|500px|ImpFinal]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 482.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_sub_question&amp;diff=25150</id>
		<title>Random sub question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_sub_question&amp;diff=25150"/>
		<updated>2015-10-05T10:44:15Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:x-large;&amp;quot;&amp;gt;Random sub question&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_SUB_QUESTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Properties]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_sub_question&amp;diff=25149</id>
		<title>Random sub question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_sub_question&amp;diff=25149"/>
		<updated>2015-10-05T10:43:54Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: Created page with &amp;quot;= &amp;lt;span style=&amp;quot;font-size:x-large;&amp;quot;&amp;gt;Random sub question&amp;lt;/span&amp;gt; =  {| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellsp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:x-large;&amp;quot;&amp;gt;Random sub question&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_SUB_QUESTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25148</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25148"/>
		<updated>2015-10-05T10:41:28Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:x-large;&amp;quot;&amp;gt;Random answer option&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Properties]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25147</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25147"/>
		<updated>2015-10-05T10:40:19Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:x-large;&amp;quot;&amp;gt;Random answer option&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25146</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25146"/>
		<updated>2015-10-05T10:39:38Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size: 12px;&amp;quot;&amp;gt;Random answer option&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25145</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25145"/>
		<updated>2015-10-05T10:39:11Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
= Random answer option =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25144</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25144"/>
		<updated>2015-10-05T10:38:37Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Random answer option =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Properties]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25142</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25142"/>
		<updated>2015-10-05T10:36:35Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Random answer option =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
[[File:8153.png]][[File:8152.png]]&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25141</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25141"/>
		<updated>2015-10-05T10:35:17Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Random answer option =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders cke_show_border&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; | &lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Property name:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
RANDOMIZE_ANSWER_OPTION&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
http://wiki.catglobe.com/images/a/af/8153.pnghttp://wiki.catglobe.com/images/d/d8/8152.png&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;84&amp;quot; | &lt;br /&gt;
http://wiki.catglobe.com/images/a/af/8153.pnghttp://wiki.catglobe.com/images/d/d8/8152.png&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;66&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Types:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;577&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
http://wiki.catglobe.com/images/a/af/8153.pnghttp://wiki.catglobe.com/images/d/d8/8152.png&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
http://wiki.catglobe.com/images/a/af/8153.pnghttp://wiki.catglobe.com/images/d/d8/8152.png&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; | &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25140</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25140"/>
		<updated>2015-10-05T10:32:39Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25139</id>
		<title>Random answer option</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Random_answer_option&amp;diff=25139"/>
		<updated>2015-10-05T10:31:59Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: Created page with &amp;quot;&amp;lt;div&amp;gt;= No multi =&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;= No multi =&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;{| width=&amp;quot;907&amp;quot; class=&amp;quot;tableintopic FCK__ShowTableBorders&amp;quot; style=&amp;quot;border-collapse: collapse;&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|-&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; height=&amp;quot;0&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;84&amp;quot; height=&amp;quot;0&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;66&amp;quot; height=&amp;quot;0&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;576&amp;quot; height=&amp;quot;0&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Purpose:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Property name:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;NO_MULTI&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Type:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Used for questionnaire:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;File:8153.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;amp;#x5B;&amp;amp;#x5B;File:8152.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Used for questions:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;84&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;File:8153.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;amp;#x5B;&amp;amp;#x5B;File:8152.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;66&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Types:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;577&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Used for sub-questions:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;File:8153.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;amp;#x5B;&amp;amp;#x5B;File:8152.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Used for answer options:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;File:8153.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;amp;#x5B;&amp;amp;#x5B;File:8152.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;180&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&#039;&#039;&#039;Example:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;| width=&amp;quot;727&amp;quot; colspan=&amp;quot;4&amp;quot; |&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;|}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=GetRandomNumber&amp;diff=24948</id>
		<title>GetRandomNumber</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=GetRandomNumber&amp;diff=24948"/>
		<updated>2014-05-28T08:13:28Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{HelpFiles}}&lt;br /&gt;
&lt;br /&gt;
==== getRandomNumber ====&lt;br /&gt;
&lt;br /&gt;
Generates a random number.&lt;br /&gt;
&lt;br /&gt;
The random number will be within the range specified(min value &amp;lt;= random number &amp;lt; max value), where 0 is the minimum value for a random number if only a maximum value is given as argument to the function.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
getRandomNumber(maximum_value);&lt;br /&gt;
&lt;br /&gt;
getRandomNumber(minimum_value, maximum_value);&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arguments&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
minimum_value: Is an expression with the type of number&lt;br /&gt;
&lt;br /&gt;
maximum_value: Is an expression with the type of number&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Return type&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
number&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Examples&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;print(&amp;quot;Random number 1: &amp;quot;);&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;print(getRandomNumber(100, 200)); //Return a random number &amp;gt;= 100 and &amp;lt; 200&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;print(&amp;quot;Random number 2: &amp;quot;);&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;print(getRandomNumber(200)); //Return a random number &amp;lt; 200&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Availability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version 4.8 __NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 414.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Questionnaire_-_Javascript_Fun_Tips&amp;diff=24939</id>
		<title>Questionnaire - Javascript Fun Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Questionnaire_-_Javascript_Fun_Tips&amp;diff=24939"/>
		<updated>2014-04-01T04:54:44Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Basic Hints|Basic Hints]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Show more than one questions in the same page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Add answer options of the close questions to the open questions]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Validate the questions by using the questioncheck() function]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Show a text grid and a single question in the same page|Show a text grid question and a single question in the same page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Show more than one singe grid in the same page|Show more than one single grid in the same page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Show more than one singe question in the same page|Show more than one single question in the same page]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Show single questions as dropdown lists in their own pages]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Insert a TextGrid question into a SingleGrid Question]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Some special questions on COOP Site]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;[[Showing Answer Option in tab]]&lt;br /&gt;
&lt;br /&gt;
[[Rotate answer options/sub questions]]&lt;br /&gt;
&lt;br /&gt;
[[Randomize answer options/sub questions]]&lt;br /&gt;
&lt;br /&gt;
[[Drag and drop answer option values]]&lt;br /&gt;
&lt;br /&gt;
[[Change Impsys mages]]&lt;br /&gt;
&lt;br /&gt;
[[Add an extra row before a sub question in a grid]]&lt;br /&gt;
&lt;br /&gt;
[[Hide sub question text column in a grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Change stylesheet of an answer option column in a single grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Add an extra column before an answer option column in single grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Both horizontal and vertical single grid]]&lt;br /&gt;
&lt;br /&gt;
[[Disable sub questions in text grids]]&lt;br /&gt;
&lt;br /&gt;
[[Number grid]]&lt;br /&gt;
&lt;br /&gt;
[[Close to URL]]&lt;br /&gt;
&lt;br /&gt;
[[Double columns in text grids]]&lt;br /&gt;
&lt;br /&gt;
[[Count down with invisible counter]]&lt;br /&gt;
&lt;br /&gt;
[[Fold in/out texts in question text]]&lt;br /&gt;
&lt;br /&gt;
[[Force email address]]&lt;br /&gt;
&lt;br /&gt;
[[Force number of characters]]&lt;br /&gt;
&lt;br /&gt;
[[Change text box size]]&lt;br /&gt;
&lt;br /&gt;
[[Set focus on question text in the top]]&lt;br /&gt;
&lt;br /&gt;
[[Maximum text length]]&lt;br /&gt;
&lt;br /&gt;
[[Next button count down]]&lt;br /&gt;
&lt;br /&gt;
[[Mark answer option with keyboard]]&lt;br /&gt;
&lt;br /&gt;
[[Show flash movies on questionnaire viewer|Play a list of movies in questionnaire]] &amp;lt;!--[[Play a commercial and automatically go next when it is over in questionnaire]] : doesnt not work --&amp;gt;[[Show a single question as a dropdown list inside another text grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Hide Next button in n seconds]]&lt;br /&gt;
&lt;br /&gt;
[[Show datepicker in text/text grid questions]]&lt;br /&gt;
&lt;br /&gt;
[[Show column header in text grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Prioritize sub questions in a text grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Align min/max texts in scale grid questions]]&lt;br /&gt;
&lt;br /&gt;
[[Add text before answer option of single question]]&lt;br /&gt;
&lt;br /&gt;
[[Show language selector page]]&lt;br /&gt;
&lt;br /&gt;
[[Reverse single grid between sub questions and answer options]]&lt;br /&gt;
&lt;br /&gt;
[[Script for making a text grid numerical summing to a specific value]]&lt;br /&gt;
&lt;br /&gt;
[[Convert closed question TextBox into TextArea]]&lt;br /&gt;
&lt;br /&gt;
[[Validate email specified as an open text of a single question]]&lt;br /&gt;
&lt;br /&gt;
[[Require only one check for grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Change non-multi option in Multi question to Radio button]]&lt;br /&gt;
&lt;br /&gt;
[[Make whole cell clickable in single and multi grids]]&lt;br /&gt;
&lt;br /&gt;
[[AutoSum numerical text grid]]&lt;br /&gt;
&lt;br /&gt;
[[Show open textbox in a grid question]]&lt;br /&gt;
&lt;br /&gt;
[[Change progress bar images of questionnaire]]&lt;br /&gt;
&lt;br /&gt;
[[Add CKEditor to an Open question]]&lt;br /&gt;
&lt;br /&gt;
[[Upload images in questionnaire]]&lt;br /&gt;
&lt;br /&gt;
[[Check whether values of open parts of a close question are positive numbers or not]]&lt;br /&gt;
&lt;br /&gt;
[[Reverse the position of the subquestion texts with their textboxes in the text-grid question]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=JQuery_-_Tips&amp;diff=24851</id>
		<title>JQuery - Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=JQuery_-_Tips&amp;diff=24851"/>
		<updated>2013-10-23T09:39:29Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
[[Category:Miscellaneous]]&lt;br /&gt;
== JQuery Tips ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Optimize performance of complex selectors&#039;&#039;&#039;&amp;lt;br/&amp;gt;var subset = $(&amp;quot;&amp;quot;); $(&amp;quot;input[value^=&#039;&#039;]&amp;quot;, subset);&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;2. Set Context and improve the performance&#039;&#039;&#039;&amp;lt;br/&amp;gt;On the core jQuery function, specify the context parameter when. Specifying the context parameter allows jQuery to start from a deeper branch in the DOM, rather than from the DOM root. Given a large enough DOM, specifying the context parameter should translate to performance gains. $(&amp;quot;input:radio&amp;quot;, document.forms[0]);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;3. Live Event Handlers&#039;&#039;&#039;&amp;lt;br/&amp;gt;Set an event handler for any element that matches a selector, even if it gets added to the DOM after the initial page load: $(&#039;button.someClass&#039;).live(&#039;click&#039;, someFunction);&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;4. To show / hide element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;a&amp;quot;).hide();&lt;br /&gt;
 $(&amp;quot;a&amp;quot;).show();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;5. Check element exists&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 if ($(&amp;quot;#someDiv&amp;quot;).length) {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&#039;&#039;&#039;6. Back to top button/link&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $(&#039;#top&#039;).click(function() {  &lt;br /&gt;
 $(document).scrollTo(0,500);  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;7. Change width of item on many browser&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $(&#039;#input:text[name=QUESTION.Q12.1]).width(500);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;var error_message = &amp;quot;The error was happened&amp;quot; var oldCheck = questioncheck; questioncheck = function() {&lt;br /&gt;
&lt;br /&gt;
   //QUESTION.Label1&lt;br /&gt;
  if (checkLength(&amp;quot;QUESTION.Label1&amp;quot;,5)){&lt;br /&gt;
     ErrorMessages.getInstance().clearErrorMessages();&lt;br /&gt;
     ErrorMessages.getInstance().showErrorMessage(error_message);&lt;br /&gt;
     return;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function checkLength(objname,maxlength) {&lt;br /&gt;
&lt;br /&gt;
   var ao=$(&amp;quot;input:text[name=&amp;quot;+objname+&amp;quot;]&amp;quot;);&lt;br /&gt;
  if (ao.val().length&amp;gt;maxlength)&lt;br /&gt;
     return true;&lt;br /&gt;
  return false&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&#039;&#039;&#039;8. Get value of question in javascript&#039;&#039;&#039;&amp;lt;br/&amp;gt;from_Q8= &amp;quot;{{Q8[0].value}}&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=CGScript_-_Coding_guideline&amp;diff=24791</id>
		<title>CGScript - Coding guideline</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=CGScript_-_Coding_guideline&amp;diff=24791"/>
		<updated>2013-10-18T04:45:58Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Main:MyGroup&amp;lt;/accesscontrol&amp;gt;&lt;br /&gt;
= Objects =&lt;br /&gt;
&lt;br /&gt;
Objects in cgscript can be created by doing following this guideline.&lt;br /&gt;
&lt;br /&gt;
First an object must be created. The normal name for this is xxxCGO where xxx is the name of the object in cgscript.&lt;br /&gt;
&lt;br /&gt;
This object must inherit from &amp;lt;code&amp;gt;CgScriptObject&amp;lt;/code&amp;gt; and it must have a &amp;lt;code&amp;gt;CgAttribute&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, here is the absolute minimal class:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
[Cg(OBJECT_TYPE_NAME, &amp;quot;write the documentation for the class here&amp;quot;)]&lt;br /&gt;
internal class MyObjectCGO&amp;amp;nbsp;: CgScriptObject&lt;br /&gt;
{&lt;br /&gt;
   private const string OBJECT_TYPE_NAME = &amp;quot;MyObject&amp;quot;;&lt;br /&gt;
   public override string ObjectTypeName&lt;br /&gt;
   {&lt;br /&gt;
      get { return OBJECT_TYPE_NAME; }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The class must be internal or public, and non-abstract, and must not play with generics. The exception is that it may inherit from a generic baseclass (which then inherits from CgScriptObject), or implement a generic interface.&lt;br /&gt;
&lt;br /&gt;
=== Inheritance ===&lt;br /&gt;
&lt;br /&gt;
A CgScriptObject may utilize inheritance as a normal .NET object. CgScript will not be aware of this, it just sees all inherited methods, properties, etc. as belonging to the class.&lt;br /&gt;
&lt;br /&gt;
== Object functions ==&lt;br /&gt;
&lt;br /&gt;
Functions are exposed as cgscript functions by marking them with the CgAttribute and also marking all the parameters with the CgAttribute (see [[#Parameters]]).&lt;br /&gt;
&lt;br /&gt;
The function must be internal or public, and non-abstract, and must not play with generics.&lt;br /&gt;
&lt;br /&gt;
Overloads are supported, so the same name can be defined multiple times with different parameters. The rules for this is similar to C#s overload resolution (but not identical). If in doubt, don&#039;t use fancy parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;ContainsKey&amp;quot;, &amp;quot;Determines whether the dictionary contains the specified key with type is a string.&amp;quot;)]&lt;br /&gt;
public bool ContainsKey([Cg(&amp;quot;key&amp;quot;, &amp;quot;Check with specific key&amp;quot;)]string key)&lt;br /&gt;
{&lt;br /&gt;
   return _dict.ContainsKey(key);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
A function may be static, but from inside cgscript it will be exposed as a member function.&lt;br /&gt;
&lt;br /&gt;
== Object properties ==&lt;br /&gt;
&lt;br /&gt;
Properties have almost the same requirements as methods.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;Count&amp;quot;, &amp;quot;Gets the number of key/value pairs contained in the dictionary.&amp;quot;)]&lt;br /&gt;
public int Count&lt;br /&gt;
{&lt;br /&gt;
   get { return _dict.Count; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The getter and setter may have different visibility, e.g. the getter may be public and the setter may be private. In that case, only the getter is accessible from CgScript.&lt;br /&gt;
&lt;br /&gt;
However, note that this alternative marking of the getter/setter may not do what you expect:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
public int Count&lt;br /&gt;
{&lt;br /&gt;
   [Cg(&amp;quot;Count&amp;quot;, &amp;quot;Gets the number of key/value pairs contained in the dictionary.&amp;quot;)]&lt;br /&gt;
   get { return _dict.Count; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will register the getter as a function (ie. from cgscript you would have to call o.Count() instead of o.Count)&lt;br /&gt;
&lt;br /&gt;
== Object indexer ==&lt;br /&gt;
&lt;br /&gt;
Indexers are a special construction in C# (and VB). They look a little bit like both Properties and Methods. So the syntax for registering them in CgScript is a little special.&lt;br /&gt;
&lt;br /&gt;
The indexer must be marked with a CgAttribute, and the getter/setter must be marked with a CgAttribute also, the name must be &amp;lt;code&amp;gt;get_Item/set_Item&amp;lt;/code&amp;gt; respectively in order to use it as an indexer inside CgScript. Furthermore the setter must use the very special &amp;quot;param:&amp;quot; prefix on the CgAttribute to document the value.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
public IConstant this[[Cg(&amp;quot;key&amp;quot;, &amp;quot;The key used to lookup the value.&amp;quot;)] string key]&lt;br /&gt;
{&lt;br /&gt;
   [Cg(&amp;quot;get_Item&amp;quot;, &amp;quot;Get an item based on a key.&amp;quot;)]&lt;br /&gt;
   get { return _dict[key]; }&lt;br /&gt;
   [Cg(&amp;quot;set_Item&amp;quot;, &amp;quot;Set an item based on a key and a value.&amp;quot;)]&lt;br /&gt;
   [param:Cg(&amp;quot;value&amp;quot;, &amp;quot;The value to set.&amp;quot;)]&lt;br /&gt;
   set { _dict[key] = value; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
CgScript objects support a number of types, that are automatically converted when calling the function and returning from the function:&lt;br /&gt;
&lt;br /&gt;
*Void (For return values only) - Constant.Empty is returned&lt;br /&gt;
*string - Automatically converted to and from a StringConstant&lt;br /&gt;
*double - Automatically converted to and from a NumberConstant&lt;br /&gt;
*int - Automatically converted to and from a NumberConstant&lt;br /&gt;
*bool - Automatically converted to and from a BooleanConstant&lt;br /&gt;
*CGDateTime - Automatically converted to and from a DateTimeConstant&lt;br /&gt;
*Any type that implement IConstant - No conversion is done&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
[Cg(&amp;quot;Add&amp;quot;, &amp;quot;Adds the specified key and value to the dictionary with type of key is a string.&amp;quot;)]&lt;br /&gt;
public bool Add([Cg(&amp;quot;key&amp;quot;, &amp;quot;Add with specific key&amp;quot;)] string key,&lt;br /&gt;
                [Cg(&amp;quot;value&amp;quot;, &amp;quot;Add with specific value&amp;quot;)] IConstant constant)&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are some special parameter types, that must all NOT be marked with a CgAttribute:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;Interpreter&amp;lt;/code&amp;gt; - If you require the interpreter to do something, you can get it by adding a Interpreter parameter. You are probably doing something wrong if you need this. If you do need it, then you should be aware that your object may be shared among several interpreters, and you should therefore NOT store the value anywhere.&lt;br /&gt;
*&amp;lt;code&amp;gt;IList&amp;amp;lt;IConstant&amp;amp;gt;&amp;lt;/code&amp;gt; - This is roughly equivalent to a normal C# method that takes a &amp;lt;code&amp;gt;&amp;quot;params object[]&amp;quot;&amp;lt;/code&amp;gt;. This enables you to do advanced scenarios where the parameters from cgscript cannot be predicted. For obvious reasons there can be no other parameters marked with CgAttribute.&lt;br /&gt;
*other - If a parameter is not marked with a CgAttribute, it is presumed it is a IoC type that must be resolved when calling the function. This works for Constructors, Methods and Properties.&lt;br /&gt;
&lt;br /&gt;
== Overload resolution ==&lt;br /&gt;
&lt;br /&gt;
To find the right overload, a score is calculated.&lt;br /&gt;
&lt;br /&gt;
A function that takes an &amp;lt;code&amp;gt;IList&amp;amp;lt;IConstant&amp;amp;gt;&amp;lt;/code&amp;gt; as parameter is always a match, but the lowest priority match.&lt;br /&gt;
&lt;br /&gt;
A function that takes the exact type (or a type with a known conversion) will be a better match than a function that takes a very generic superclass. For example, a function x that has two overloads, one takes an IConstant and another that takes an ArrayConstant, when called with an ArrayConstant, the second overload takes precedence.&lt;br /&gt;
&lt;br /&gt;
Due to the automapping some constructs may have the same overload. For example a function x that has two overloads, one takes an NumberConstant and another that takes an int. These are considered equivalent, and it is totally random which is called.&lt;br /&gt;
&lt;br /&gt;
= Namespace =&lt;br /&gt;
&lt;br /&gt;
Objects as such do not have a namespace, but we decided to simulate it by having namespace objects.&lt;br /&gt;
&lt;br /&gt;
In the symbol table a variable called &amp;quot;Catglobe&amp;quot; is registered, this is an instance of GlobalNamespace.&lt;br /&gt;
&lt;br /&gt;
If you want to add some global function, then implement another class in &amp;lt;code&amp;gt;CatGlobe.Framework.Runtime.Library.GlobalFunctions&amp;lt;/code&amp;gt;. It must be a normal &amp;lt;code&amp;gt;CgScriptObject&amp;lt;/code&amp;gt;. The class must have no member variables since the instance is shared among all interpreters, and only static getters/setters/methods (although if you forgot to mark them static they will still work).&lt;br /&gt;
&lt;br /&gt;
You then register the class in the namespace you want it to appear. For instance here is the registration of Json in the GlobalNamespace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
private static readonly JsonNamespace JsonNamespace = new JsonNamespace();&lt;br /&gt;
[Cg(&amp;quot;Json&amp;quot;, &amp;quot;The json namespace&amp;quot;)]&lt;br /&gt;
public static JsonNamespace Json { get { return JsonNamespace; } }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can call the functions in this namespace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
return Catglobe.Json.Parse(Catglobe.Json.Encode({1, &amp;quot;&amp;quot;Hejsa&amp;quot;&amp;quot;}));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And because they are objects, you can also do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
object n = Catglobe.Json;&lt;br /&gt;
return n.Parse(n.Encode({1, &amp;quot;&amp;quot;Hejsa&amp;quot;&amp;quot;}));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
&lt;br /&gt;
Normal non-object functions - Yet to be written &lt;br /&gt;
&lt;br /&gt;
[[Category:Technical_guidelines]]&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24673</id>
		<title>Add text before answer option of single question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24673"/>
		<updated>2013-10-17T03:27:50Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to add text before answer option of single question&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
I want to add text before answer option of single question&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have a single question.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[File:OneColumnBefore.JPG|none]]&amp;lt;br/&amp;gt;&lt;br /&gt;
| [[File:MultiColumnBefore.JPG|none]]&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;I want to add an text before answer option like this image&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[File:OneColumnAfter.jpg|none]]&amp;lt;br/&amp;gt;&lt;br /&gt;
| [[File:MultiColumnAfter.jpg|none]]&amp;lt;br/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Add a Single question to Questionaire editor&lt;br /&gt;
*Go to menu Properties -&amp;gt; Question scripts -&amp;gt; Java script tab -&amp;gt; Input script&lt;br /&gt;
&lt;br /&gt;
[[File:AddTextBeforeAOOfSingleQuestion.jpg|none]]&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
quest.insertTextBefore = function(aoIndex, text)&lt;br /&gt;
{&lt;br /&gt;
 var that = this;&lt;br /&gt;
 $(&amp;quot;.option_row&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 {&lt;br /&gt;
 if (i == aoIndex)&lt;br /&gt;
 {&lt;br /&gt;
 var tr = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;).addClass(&amp;quot;customized_text&amp;quot;)&lt;br /&gt;
 .append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(text).attr(&amp;quot;colSpan&amp;quot;,that.cols)); &lt;br /&gt;
 $(this).before(tr);&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 var text = &amp;quot;My Text&amp;quot;;&lt;br /&gt;
 this.insertTextBefore(2, text);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Question stylesheet ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.customized_text&lt;br /&gt;
{&lt;br /&gt;
 background-color:white;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg site: 159730&lt;br /&gt;
&lt;br /&gt;
Question: Q_OS_Single_AddTextBeforeAO&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24672</id>
		<title>Show a single question as a dropdown list inside another text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24672"/>
		<updated>2013-10-17T03:25:10Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to restrict the value entered in a text grid question&amp;lt;br/&amp;gt;As a questionnaire creator&amp;lt;br/&amp;gt;I want to show a dropdown list inside the text grid&lt;br /&gt;
&lt;br /&gt;
http://wiki.catglobe.com/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&lt;br /&gt;
&lt;br /&gt;
== Solution&amp;lt;br/&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
*Create a text grid question (Q3)&lt;br /&gt;
*Create a dummy single question with the same answer options as we want to show inside the text grid question (Q3x)&lt;br /&gt;
*Add javascript code to the text grid question to include the single question inside&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function SingleQuestion(q, selectedValue, even)&lt;br /&gt;
{&lt;br /&gt;
 this.label = &amp;quot;QUESTION.&amp;quot; + q.label;&lt;br /&gt;
 this.text = q.text;&lt;br /&gt;
 this.aoValues = q.aoValues;&lt;br /&gt;
 this.aoTexts = q.aoTexts; &lt;br /&gt;
 this.selectedValue = selectedValue; &lt;br /&gt;
 this.even = even;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.getHTML =function()&lt;br /&gt;
{&lt;br /&gt;
 var n = this.aoValues.length;&lt;br /&gt;
 var list = $(&amp;quot;&amp;lt;select&amp;gt;&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
 var selected=&amp;quot;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
 { &lt;br /&gt;
 if (this.aoValues[i] == this.selectedValue)&lt;br /&gt;
 selected = &amp;quot;true&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 selected = &amp;quot;&amp;quot;;&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(this.aoValues[i])&lt;br /&gt;
 .text(this.aoTexts[i])&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, selected)&lt;br /&gt;
 );&lt;br /&gt;
 }&lt;br /&gt;
 //handle change event to change the value of the single question&lt;br /&gt;
 var s_label = this.label;&lt;br /&gt;
 list.change(&lt;br /&gt;
 function()&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input:hidden&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 { &lt;br /&gt;
 if ($(this).attr(&amp;quot;name&amp;quot;) == s_label)&lt;br /&gt;
 $(this).val(list.val());&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 var row = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);&lt;br /&gt;
 var s;&lt;br /&gt;
 &lt;br /&gt;
 if (this.even)&lt;br /&gt;
 s = &amp;quot;even&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 s = &amp;quot;odd&amp;quot;;&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(this.text).addClass(&amp;quot;grid_subquestion_text grid_subquestion_&amp;quot;+s));&lt;br /&gt;
 row.append(&lt;br /&gt;
 $(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).addClass(&amp;quot;grid_subquestion_&amp;quot;+ s)&lt;br /&gt;
 .append(list)&lt;br /&gt;
 )&lt;br /&gt;
 if (this.selectedValue == &amp;quot;&amp;quot;)&lt;br /&gt;
 this.selectedValue = this.aoValues[0];&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;input type = \&amp;quot;hidden\&amp;quot;&amp;gt;&amp;quot;).attr(&amp;quot;name&amp;quot;, this.label).val(this.selectedValue));&lt;br /&gt;
&lt;br /&gt;
 return row;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 //question in JSON format&lt;br /&gt;
 var q3x = {&amp;quot;label&amp;quot;:&amp;quot;Q3x&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;Titel&amp;quot;,&amp;quot;aoValues&amp;quot;:[1,2,3],&amp;quot;aoTexts&amp;quot;:[&amp;quot;Ejer&amp;quot;,&amp;quot;Adm. direktør&amp;quot;,&amp;quot;Økonomichef&amp;quot;]};&lt;br /&gt;
&lt;br /&gt;
 //get the previous selected value&lt;br /&gt;
 var selectedValue = &amp;quot;{{Q3x.Value}}&amp;quot;; &lt;br /&gt;
 var q = new SingleQuestion(q3x, selectedValue, true);&lt;br /&gt;
 //append the single question inside the grid&lt;br /&gt;
 $(&amp;quot;.grid_inner&amp;quot;).append(q.getHTML());&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input:text&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code sample ==&lt;br /&gt;
&lt;br /&gt;
Open the qnaire &amp;quot;Js demo - some js samples&amp;quot; (Resource Id: 159684). View the sub question &amp;quot;Q1[0]&amp;quot; on the text grid &amp;quot;Q1&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24671</id>
		<title>Show a single question as a dropdown list inside another text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24671"/>
		<updated>2013-10-17T03:24:32Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to restrict the value entered in a text grid question&amp;lt;br/&amp;gt;As a questionnaire creator&amp;lt;br/&amp;gt;I want to show a dropdown list inside the text grid&lt;br /&gt;
&lt;br /&gt;
http://wiki.catglobe.com/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution&amp;lt;br/&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
*Create a text grid question (Q3)&lt;br /&gt;
*Create a dummy single question with the same answer options as we want to show inside the text grid question (Q3x)&lt;br /&gt;
*Add javascript code to the text grid question to include the single question inside&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function SingleQuestion(q, selectedValue, even)&lt;br /&gt;
{&lt;br /&gt;
 this.label = &amp;quot;QUESTION.&amp;quot; + q.label;&lt;br /&gt;
 this.text = q.text;&lt;br /&gt;
 this.aoValues = q.aoValues;&lt;br /&gt;
 this.aoTexts = q.aoTexts; &lt;br /&gt;
 this.selectedValue = selectedValue; &lt;br /&gt;
 this.even = even;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.getHTML =function()&lt;br /&gt;
{&lt;br /&gt;
 var n = this.aoValues.length;&lt;br /&gt;
 var list = $(&amp;quot;&amp;lt;select&amp;gt;&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
 var selected=&amp;quot;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
 { &lt;br /&gt;
 if (this.aoValues[i] == this.selectedValue)&lt;br /&gt;
 selected = &amp;quot;true&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 selected = &amp;quot;&amp;quot;;&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(this.aoValues[i])&lt;br /&gt;
 .text(this.aoTexts[i])&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, selected)&lt;br /&gt;
 );&lt;br /&gt;
 }&lt;br /&gt;
 //handle change event to change the value of the single question&lt;br /&gt;
 var s_label = this.label;&lt;br /&gt;
 list.change(&lt;br /&gt;
 function()&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input:hidden&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 { &lt;br /&gt;
 if ($(this).attr(&amp;quot;name&amp;quot;) == s_label)&lt;br /&gt;
 $(this).val(list.val());&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 var row = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);&lt;br /&gt;
 var s;&lt;br /&gt;
 &lt;br /&gt;
 if (this.even)&lt;br /&gt;
 s = &amp;quot;even&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 s = &amp;quot;odd&amp;quot;;&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(this.text).addClass(&amp;quot;grid_subquestion_text grid_subquestion_&amp;quot;+s));&lt;br /&gt;
 row.append(&lt;br /&gt;
 $(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).addClass(&amp;quot;grid_subquestion_&amp;quot;+ s)&lt;br /&gt;
 .append(list)&lt;br /&gt;
 )&lt;br /&gt;
 if (this.selectedValue == &amp;quot;&amp;quot;)&lt;br /&gt;
 this.selectedValue = this.aoValues[0];&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;input type = \&amp;quot;hidden\&amp;quot;&amp;gt;&amp;quot;).attr(&amp;quot;name&amp;quot;, this.label).val(this.selectedValue));&lt;br /&gt;
&lt;br /&gt;
 return row;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 //question in JSON format&lt;br /&gt;
 var q3x = {&amp;quot;label&amp;quot;:&amp;quot;Q3x&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;Titel&amp;quot;,&amp;quot;aoValues&amp;quot;:[1,2,3],&amp;quot;aoTexts&amp;quot;:[&amp;quot;Ejer&amp;quot;,&amp;quot;Adm. direktør&amp;quot;,&amp;quot;Økonomichef&amp;quot;]};&lt;br /&gt;
&lt;br /&gt;
 //get the previous selected value&lt;br /&gt;
 var selectedValue = &amp;quot;{{Q3x.Value}}&amp;quot;; &lt;br /&gt;
 var q = new SingleQuestion(q3x, selectedValue, true);&lt;br /&gt;
 //append the single question inside the grid&lt;br /&gt;
 $(&amp;quot;.grid_inner&amp;quot;).append(q.getHTML());&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input:text&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code sample ==&lt;br /&gt;
&lt;br /&gt;
Open the qnaire &amp;quot;Js demo - some js samples&amp;quot; (Resource Id: 159684). View the sub question &amp;quot;Q1[0]&amp;quot; on the text grid &amp;quot;Q1&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24670</id>
		<title>Show a single question as a dropdown list inside another text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24670"/>
		<updated>2013-10-17T03:22:14Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to restrict the value entered in a text grid question&amp;lt;br/&amp;gt;As a questionnaire creator&amp;lt;br/&amp;gt;I want to show a dropdown list inside the text grid&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;lt;img src=&amp;quot;/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&amp;quot; _fck_mw_filename=&amp;quot;QuestionnaireTips SingleQuestionAsDropdownList.png&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
BEFORE&amp;amp;lt;br/&amp;amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;File:/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&amp;amp;#x5D;&amp;amp;#x5D;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;AFTER&amp;amp;lt;br/&amp;amp;gt;&amp;amp;#x5B;&amp;amp;#x5B;QuestionnaireTips SingleQuestionAsDropdownList.png&amp;amp;#x5D;&amp;amp;#x5D;&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Create a text grid question (Q3)&lt;br /&gt;
*Create a dummy single question with the same answer options as we want to show inside the text grid question (Q3x)&lt;br /&gt;
*Add javascript code to the text grid question to include the single question inside&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function SingleQuestion(q, selectedValue, even)&lt;br /&gt;
{&lt;br /&gt;
 this.label = &amp;quot;QUESTION.&amp;quot; + q.label;&lt;br /&gt;
 this.text = q.text;&lt;br /&gt;
 this.aoValues = q.aoValues;&lt;br /&gt;
 this.aoTexts = q.aoTexts; &lt;br /&gt;
 this.selectedValue = selectedValue; &lt;br /&gt;
 this.even = even;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.getHTML =function()&lt;br /&gt;
{&lt;br /&gt;
 var n = this.aoValues.length;&lt;br /&gt;
 var list = $(&amp;quot;&amp;lt;select&amp;gt;&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
 var selected=&amp;quot;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
 { &lt;br /&gt;
 if (this.aoValues[i] == this.selectedValue)&lt;br /&gt;
 selected = &amp;quot;true&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 selected = &amp;quot;&amp;quot;;&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(this.aoValues[i])&lt;br /&gt;
 .text(this.aoTexts[i])&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, selected)&lt;br /&gt;
 );&lt;br /&gt;
 }&lt;br /&gt;
 //handle change event to change the value of the single question&lt;br /&gt;
 var s_label = this.label;&lt;br /&gt;
 list.change(&lt;br /&gt;
 function()&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input:hidden&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 { &lt;br /&gt;
 if ($(this).attr(&amp;quot;name&amp;quot;) == s_label)&lt;br /&gt;
 $(this).val(list.val());&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 var row = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);&lt;br /&gt;
 var s;&lt;br /&gt;
 &lt;br /&gt;
 if (this.even)&lt;br /&gt;
 s = &amp;quot;even&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 s = &amp;quot;odd&amp;quot;;&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(this.text).addClass(&amp;quot;grid_subquestion_text grid_subquestion_&amp;quot;+s));&lt;br /&gt;
 row.append(&lt;br /&gt;
 $(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).addClass(&amp;quot;grid_subquestion_&amp;quot;+ s)&lt;br /&gt;
 .append(list)&lt;br /&gt;
 )&lt;br /&gt;
 if (this.selectedValue == &amp;quot;&amp;quot;)&lt;br /&gt;
 this.selectedValue = this.aoValues[0];&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;input type = \&amp;quot;hidden\&amp;quot;&amp;gt;&amp;quot;).attr(&amp;quot;name&amp;quot;, this.label).val(this.selectedValue));&lt;br /&gt;
&lt;br /&gt;
 return row;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 //question in JSON format&lt;br /&gt;
 var q3x = {&amp;quot;label&amp;quot;:&amp;quot;Q3x&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;Titel&amp;quot;,&amp;quot;aoValues&amp;quot;:[1,2,3],&amp;quot;aoTexts&amp;quot;:[&amp;quot;Ejer&amp;quot;,&amp;quot;Adm. direktør&amp;quot;,&amp;quot;Økonomichef&amp;quot;]};&lt;br /&gt;
&lt;br /&gt;
 //get the previous selected value&lt;br /&gt;
 var selectedValue = &amp;quot;{{Q3x.Value}}&amp;quot;; &lt;br /&gt;
 var q = new SingleQuestion(q3x, selectedValue, true);&lt;br /&gt;
 //append the single question inside the grid&lt;br /&gt;
 $(&amp;quot;.grid_inner&amp;quot;).append(q.getHTML());&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input:text&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code sample ==&lt;br /&gt;
&lt;br /&gt;
Open the qnaire &amp;quot;Js demo - some js samples&amp;quot; (Resource Id: 159684). View the sub question &amp;quot;Q1[0]&amp;quot; on the text grid &amp;quot;Q1&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Prioritize_sub_questions_in_a_text_grid_question&amp;diff=24669</id>
		<title>Prioritize sub questions in a text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Prioritize_sub_questions_in_a_text_grid_question&amp;diff=24669"/>
		<updated>2013-10-17T03:17:45Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to let the respondent prioritize a list of products&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
I want to allow him to enter only values in a list of priorities for each product (one priority is only used once)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&amp;lt;br/&amp;gt;[[File:PrioritizeSQInTextGrid.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Add a Text grid question to Questionnaire editor like below&lt;br /&gt;
*Go to menu Properties -&amp;gt; Question scripts -&amp;gt; Java script tab -&amp;gt; Input script&lt;br /&gt;
&lt;br /&gt;
[[File:PrioritizeSQInTextGrid Code.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function isNumeric_LessThan6(sText)&lt;br /&gt;
{&lt;br /&gt;
 var ValidChars = &amp;quot;12345&amp;quot;;&lt;br /&gt;
 if (sText.length != 1)&lt;br /&gt;
 return false;&lt;br /&gt;
 &lt;br /&gt;
 if (ValidChars.indexOf(sText) == -1) &lt;br /&gt;
 return false; &lt;br /&gt;
 &lt;br /&gt;
 return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var normalQuestionCheck = questioncheck;&lt;br /&gt;
&lt;br /&gt;
function extendedQuestionCheck()&lt;br /&gt;
{&lt;br /&gt;
 var valid = normalQuestionCheck();&lt;br /&gt;
 if (!valid)&lt;br /&gt;
 return false;&lt;br /&gt;
 &lt;br /&gt;
 var usedNumbers = &amp;quot;&amp;quot;;&lt;br /&gt;
 ErrorMessages.getInstance().clearErrorMessages();&lt;br /&gt;
 var msg = &amp;quot;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input:text&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 {&lt;br /&gt;
 if ($(this).attr(&amp;quot;name&amp;quot;).indexOf(&amp;quot;QUESTION.&amp;quot;) == 0)&lt;br /&gt;
 {&lt;br /&gt;
 //check the value&lt;br /&gt;
 var v = $(this).val();&lt;br /&gt;
 if (!isNumeric_LessThan6(v))&lt;br /&gt;
 {&lt;br /&gt;
 msg = &amp;quot;Only 1-5 are allowed as input&amp;quot;;&lt;br /&gt;
 valid = false;&lt;br /&gt;
 return;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if (usedNumbers.indexOf(v) != -1)&lt;br /&gt;
 {&lt;br /&gt;
 valid = false;&lt;br /&gt;
 msg = &amp;quot;One value can only be specified for one row&amp;quot;;&lt;br /&gt;
 return;&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 usedNumbers = usedNumbers + v;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 if (!valid)&lt;br /&gt;
 ErrorMessages.getInstance().showErrorMessage(msg); &lt;br /&gt;
 &lt;br /&gt;
 return valid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
questioncheck = extendedQuestionCheck;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg site: 159730&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24668</id>
		<title>Show a single question as a dropdown list inside another text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24668"/>
		<updated>2013-10-17T03:16:55Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to restrict the value entered in a text grid question&amp;lt;br/&amp;gt;As a questionnaire creator&amp;lt;br/&amp;gt;I want to show a dropdown list inside the text grid&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;lt;img src=&amp;quot;/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&amp;quot; _fck_mw_filename=&amp;quot;QuestionnaireTips SingleQuestionAsDropdownList.png&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Create a text grid question (Q3)&lt;br /&gt;
*Create a dummy single question with the same answer options as we want to show inside the text grid question (Q3x)&lt;br /&gt;
*Add javascript code to the text grid question to include the single question inside&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function SingleQuestion(q, selectedValue, even)&lt;br /&gt;
{&lt;br /&gt;
 this.label = &amp;quot;QUESTION.&amp;quot; + q.label;&lt;br /&gt;
 this.text = q.text;&lt;br /&gt;
 this.aoValues = q.aoValues;&lt;br /&gt;
 this.aoTexts = q.aoTexts; &lt;br /&gt;
 this.selectedValue = selectedValue; &lt;br /&gt;
 this.even = even;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.getHTML =function()&lt;br /&gt;
{&lt;br /&gt;
 var n = this.aoValues.length;&lt;br /&gt;
 var list = $(&amp;quot;&amp;lt;select&amp;gt;&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
 var selected=&amp;quot;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
 { &lt;br /&gt;
 if (this.aoValues[i] == this.selectedValue)&lt;br /&gt;
 selected = &amp;quot;true&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 selected = &amp;quot;&amp;quot;;&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(this.aoValues[i])&lt;br /&gt;
 .text(this.aoTexts[i])&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, selected)&lt;br /&gt;
 );&lt;br /&gt;
 }&lt;br /&gt;
 //handle change event to change the value of the single question&lt;br /&gt;
 var s_label = this.label;&lt;br /&gt;
 list.change(&lt;br /&gt;
 function()&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input:hidden&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 { &lt;br /&gt;
 if ($(this).attr(&amp;quot;name&amp;quot;) == s_label)&lt;br /&gt;
 $(this).val(list.val());&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 var row = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);&lt;br /&gt;
 var s;&lt;br /&gt;
 &lt;br /&gt;
 if (this.even)&lt;br /&gt;
 s = &amp;quot;even&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 s = &amp;quot;odd&amp;quot;;&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(this.text).addClass(&amp;quot;grid_subquestion_text grid_subquestion_&amp;quot;+s));&lt;br /&gt;
 row.append(&lt;br /&gt;
 $(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).addClass(&amp;quot;grid_subquestion_&amp;quot;+ s)&lt;br /&gt;
 .append(list)&lt;br /&gt;
 )&lt;br /&gt;
 if (this.selectedValue == &amp;quot;&amp;quot;)&lt;br /&gt;
 this.selectedValue = this.aoValues[0];&lt;br /&gt;
 row.append($(&amp;quot;&amp;lt;input type = \&amp;quot;hidden\&amp;quot;&amp;gt;&amp;quot;).attr(&amp;quot;name&amp;quot;, this.label).val(this.selectedValue));&lt;br /&gt;
&lt;br /&gt;
 return row;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 //question in JSON format&lt;br /&gt;
 var q3x = {&amp;quot;label&amp;quot;:&amp;quot;Q3x&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;Titel&amp;quot;,&amp;quot;aoValues&amp;quot;:[1,2,3],&amp;quot;aoTexts&amp;quot;:[&amp;quot;Ejer&amp;quot;,&amp;quot;Adm. direktør&amp;quot;,&amp;quot;Økonomichef&amp;quot;]};&lt;br /&gt;
&lt;br /&gt;
 //get the previous selected value&lt;br /&gt;
 var selectedValue = &amp;quot;{{Q3x.Value}}&amp;quot;; &lt;br /&gt;
 var q = new SingleQuestion(q3x, selectedValue, true);&lt;br /&gt;
 //append the single question inside the grid&lt;br /&gt;
 $(&amp;quot;.grid_inner&amp;quot;).append(q.getHTML());&lt;br /&gt;
 &lt;br /&gt;
 $(&amp;quot;input:text&amp;quot;).width(&amp;quot;400px&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code sample ==&lt;br /&gt;
&lt;br /&gt;
Open the qnaire &amp;quot;Js demo - some js samples&amp;quot; (Resource Id: 159684). View the sub question &amp;quot;Q1[0]&amp;quot; on the text grid &amp;quot;Q1&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24667</id>
		<title>Show a single question as a dropdown list inside another text grid question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_a_single_question_as_a_dropdown_list_inside_another_text_grid_question&amp;diff=24667"/>
		<updated>2013-10-17T03:16:33Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt; Challenge  &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order to restrict the value entered in a text grid question &amp;lt;br /&amp;gt;&lt;br /&gt;
As a questionnaire creator&amp;lt;br /&amp;gt;&lt;br /&gt;
I want to show a dropdown list inside the text grid&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;/images/1/1c/QuestionnaireTips_SingleQuestionAsDropdownList.png&amp;quot; _fck_mw_filename=&amp;quot;QuestionnaireTips SingleQuestionAsDropdownList.png&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt; Solution &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Create a text grid question (Q3)&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Create a dummy single question with the same answer options as we want to show inside the text grid question (Q3x)&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Add javascript code to the text grid question to include the single question inside&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Code&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;fck_mw_source&amp;quot; _fck_mw_customtag=&amp;quot;true&amp;quot; _fck_mw_tagname=&amp;quot;source&amp;quot; lang=&amp;quot;javascript&amp;quot;&amp;gt;fckLRfunction SingleQuestion(q, selectedValue, even)fckLR{fckLR   this.label = &amp;amp;quot;QUESTION.&amp;amp;quot; + q.label;fckLR   this.text = q.text;fckLR   this.aoValues = q.aoValues;fckLR   this.aoTexts = q.aoTexts;		fckLR   this.selectedValue = selectedValue;	fckLR   this.even = even;fckLR}fckLRfckLRSingleQuestion.prototype.getHTML =function()fckLR{fckLR   var n = this.aoValues.length;fckLR   var list = $(&amp;amp;quot;&amp;amp;lt;select&amp;amp;gt;&amp;amp;quot;).width(&amp;amp;quot;400px&amp;amp;quot;);fckLR   var selected=&amp;amp;quot;&amp;amp;quot;;fckLR   for(var i=0; i&amp;amp;lt;n; i++)fckLR   {		fckLR      if (this.aoValues[i] == this.selectedValue)fckLR         selected = &amp;amp;quot;true&amp;amp;quot;;fckLR      elsefckLR         selected = &amp;amp;quot;&amp;amp;quot;;fckLR      list.append($(&amp;amp;quot;&amp;amp;lt;option&amp;amp;gt;&amp;amp;quot;)fckLR         .val(this.aoValues[i])fckLR         .text(this.aoTexts[i])fckLR         .attr(&amp;amp;quot;selected&amp;amp;quot;, selected)fckLR      );fckLR   }fckLR   //handle change event to change the value of the single questionfckLR   var s_label = this.label;fckLR   list.change(fckLR      function()fckLR      {fckLR         $(&amp;amp;quot;input:hidden&amp;amp;quot;).each(fckLR            function(i)fckLR            {                        fckLR               if ($(this).attr(&amp;amp;quot;name&amp;amp;quot;) == s_label)fckLR                  $(this).val(list.val());fckLR                  fckLR            }fckLR         );fckLR         fckLR      }fckLR   );fckLR   var row = $(&amp;amp;quot;&amp;amp;lt;tr&amp;amp;gt;&amp;amp;quot;);fckLR   var s;fckLR   fckLR   if (this.even)fckLR      s = &amp;amp;quot;even&amp;amp;quot;;fckLR   elsefckLR      s = &amp;amp;quot;odd&amp;amp;quot;;fckLR   row.append($(&amp;amp;quot;&amp;amp;lt;td&amp;amp;gt;&amp;amp;quot;).text(this.text).addClass(&amp;amp;quot;grid_subquestion_text grid_subquestion_&amp;amp;quot;+s));fckLR   row.append(fckLR      $(&amp;amp;quot;&amp;amp;lt;td&amp;amp;gt;&amp;amp;quot;).addClass(&amp;amp;quot;grid_subquestion_&amp;amp;quot;+ s)fckLR      .append(list)fckLR   )fckLR   if (this.selectedValue == &amp;amp;quot;&amp;amp;quot;)fckLR      this.selectedValue = this.aoValues[0];fckLR   row.append($(&amp;amp;quot;&amp;amp;lt;input type = \&amp;amp;quot;hidden\&amp;amp;quot;&amp;amp;gt;&amp;amp;quot;).attr(&amp;amp;quot;name&amp;amp;quot;, this.label).val(this.selectedValue));fckLRfckLR   return row;fckLR}fckLRfckLRquest.onInit = function()fckLR{fckLR   //question in JSON formatfckLR	var q3x = {&amp;amp;quot;label&amp;amp;quot;:&amp;amp;quot;Q3x&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:&amp;amp;quot;Titel&amp;amp;quot;,&amp;amp;quot;aoValues&amp;amp;quot;:[1,2,3],&amp;amp;quot;aoTexts&amp;amp;quot;:[&amp;amp;quot;Ejer&amp;amp;quot;,&amp;amp;quot;Adm. direktør&amp;amp;quot;,&amp;amp;quot;Økonomichef&amp;amp;quot;]};fckLRfckLR   //get the previous selected valuefckLR	var selectedValue = &amp;amp;quot;{{Q3x.Value}}&amp;amp;quot;;	fckLR   var q = new SingleQuestion(q3x, selectedValue, true);fckLR	//append the single question inside the gridfckLR	$(&amp;amp;quot;.grid_inner&amp;amp;quot;).append(q.getHTML());fckLR	fckLR	$(&amp;amp;quot;input:text&amp;amp;quot;).width(&amp;amp;quot;400px&amp;amp;quot;);fckLR}fckLR&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt; Code sample &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Open the qnaire &amp;quot;Js demo - some js samples&amp;quot; (Resource Id: 159684). View the sub question &amp;quot;Q1[0]&amp;quot; on the text grid &amp;quot;Q1&amp;quot;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Mark_answer_option_with_keyboard&amp;diff=24666</id>
		<title>Mark answer option with keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Mark_answer_option_with_keyboard&amp;diff=24666"/>
		<updated>2013-10-17T03:16:13Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to allow the respondent to be able to answer a question by hitting a button on his keyboard.&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
I want to specify both which key on the keyboard that should be used, and which answer option that should be answered&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
[[File:MakeAnswerOptionWithKeyboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Add a Single question to Questionnaire editor like below&lt;br /&gt;
*Go to menu Properties -&amp;gt; Question scripts -&amp;gt; Java script tab -&amp;gt; Input script&lt;br /&gt;
&lt;br /&gt;
[[File:MakeAnswerOptionWithKeyboard Code.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//which key on the keyboard that should mark the answer option. The code 32 refers to the space key&lt;br /&gt;
var keyCodetoReactOn = 32;&lt;br /&gt;
&lt;br /&gt;
//enabels you to find out which numerical codes that belongs to which keys on the keyboard.&lt;br /&gt;
//Change false into true, and you will have a dialog that shows you the key code each time you hit a key. &lt;br /&gt;
//When you have found out which code that should mark the answer option, you change true back to false (mostly use for debugging)&lt;br /&gt;
var displayKeyCode = false;&lt;br /&gt;
&lt;br /&gt;
//information on which answer option that should be marked when the respondent uses his keyboard. &lt;br /&gt;
//The answer option list has an index starting with zero when you are referring to answer options with this script. &lt;br /&gt;
//The number 0 therefore refers to the answer option with the value 1. &lt;br /&gt;
//If you want to refer to an answer option with the value 99, you write 98 in the script.&lt;br /&gt;
var answerOptionIndexToCheck = 0;&lt;br /&gt;
&lt;br /&gt;
//the question label of the question where you run the script.&lt;br /&gt;
var qLabel = &amp;quot;Q_Single_MakeAOWithKeyboard&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//the text that should be on the Next button. &lt;br /&gt;
//Note that this text will be the same for all languages if your questionnaire is programmed in multiple languages.&lt;br /&gt;
var buttonText = &amp;quot;Recognize&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//It is advisable that you hide the Next button on questions where you use this script.&lt;br /&gt;
// Otherwise the respondent will have two buttons, which can be confusing&lt;br /&gt;
&lt;br /&gt;
function myHandler(e)&lt;br /&gt;
{&lt;br /&gt;
 if (displayKeyCode)&lt;br /&gt;
 alert(e.keyCode);&lt;br /&gt;
 if (e.keyCode == keyCodetoReactOn)&lt;br /&gt;
 recognize();&lt;br /&gt;
}&lt;br /&gt;
function recognize()&lt;br /&gt;
{&lt;br /&gt;
 quest.options[answerOptionIndexToCheck].checked = true;&lt;br /&gt;
 document[&amp;quot;query&amp;quot;][&amp;quot;QUESTION.&amp;quot; + qLabel][answerOptionIndexToCheck].checked = true;&lt;br /&gt;
 moveForward();&lt;br /&gt;
}&lt;br /&gt;
function moveForward()&lt;br /&gt;
{&lt;br /&gt;
 document[&amp;quot;query&amp;quot;][&amp;quot;dir&amp;quot;].value = &amp;quot;next&amp;quot;;&lt;br /&gt;
 document[&amp;quot;query&amp;quot;].submit();&lt;br /&gt;
}&lt;br /&gt;
question.prototype.getNavigationPanel = function()&lt;br /&gt;
{&lt;br /&gt;
 var sres = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 if (this.backvisible) sres += &amp;quot;&amp;lt;input type=\&amp;quot;button\&amp;quot; name=\&amp;quot;back\&amp;quot; value=\&amp;quot;&amp;quot; + this.backtext + &amp;quot;\&amp;quot; tabindex=1000 onclick=\&amp;quot;&amp;quot; + this.reference + &amp;quot;.back();\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
 if (this.resetvisible) sres += &amp;quot;&amp;lt;input type=\&amp;quot;button\&amp;quot; name=\&amp;quot;reset\&amp;quot; value=\&amp;quot;&amp;quot; + this.resettext + &amp;quot;\&amp;quot; tabindex=1001 onclick=\&amp;quot;&amp;quot; + this.reference + &amp;quot;.reset();\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
 if (this.closevisible) sres += &amp;quot;&amp;lt;input type=\&amp;quot;button\&amp;quot; name=\&amp;quot;close\&amp;quot; value=\&amp;quot;&amp;quot; + this.closetext + &amp;quot;\&amp;quot; tabindex=1002 onclick=\&amp;quot;&amp;quot; + this.reference + &amp;quot;.close();\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;input type=\&amp;quot;button\&amp;quot; name=\&amp;quot;spaceHandler\&amp;quot; onclick=\&amp;quot;recognize();\&amp;quot; onkeydown=\&amp;quot;return myHandler(event)\&amp;quot; value=\&amp;quot;&amp;quot; + buttonText + &amp;quot;\&amp;quot; tabindex=0&amp;gt;&amp;quot;;&lt;br /&gt;
 if (this.nextvisible) sres += &amp;quot;&amp;lt;input type=\&amp;quot;submit\&amp;quot; name=\&amp;quot;next\&amp;quot; onkeydown=\&amp;quot;return myHandler(event)\&amp;quot; value=\&amp;quot;&amp;quot; + this.nexttext + &amp;quot;\&amp;quot; tabindex=0&amp;gt;&amp;quot;;&lt;br /&gt;
 return sres;&lt;br /&gt;
}&lt;br /&gt;
question.prototype.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 document[&amp;quot;query&amp;quot;][&amp;quot;spaceHandler&amp;quot;].focus();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg site: 159730&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Add_an_extra_row_before_a_sub_question_in_a_grid&amp;diff=24665</id>
		<title>Add an extra row before a sub question in a grid</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Add_an_extra_row_before_a_sub_question_in_a_grid&amp;diff=24665"/>
		<updated>2013-10-17T03:13:29Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Add an extra row before a sub question in a grid ==&lt;br /&gt;
&lt;br /&gt;
In order to categorize sub questions in a grid question&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
I want to add extra rows to the grid&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
I have a single grid question.&lt;br /&gt;
&lt;br /&gt;
[[File:AddExtraRow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
I want to have an extra row to group some sub questions together.&lt;br /&gt;
&lt;br /&gt;
[[File:AddExtraRow2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Solution ====&lt;br /&gt;
&lt;br /&gt;
*Add a Single grid question to Questionnaire editor&lt;br /&gt;
*Go to menu Properties -&amp;gt; Question scripts -&amp;gt; Add code to Java script tab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:AddExtraRowCode.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//add a row before a sub question in the grid&lt;br /&gt;
//subQuestionIndex: the index of sub question which we should add a row before&lt;br /&gt;
//cssClass: the stylesheet that would be applied to the new row&lt;br /&gt;
//text: name of the sub question group&lt;br /&gt;
//includeAnswerOptionTexts: if it is true, answer option texts will be included in the new row&lt;br /&gt;
quest.addRowBefore = function(subQuestionIndex, cssClass, text, includeAnswerOptionTexts)&lt;br /&gt;
{ &lt;br /&gt;
 //get number of columns &lt;br /&gt;
 var n = $(&amp;quot;.grid_inner&amp;quot;)[0].rows[0].cells.length; &lt;br /&gt;
 $(&amp;quot;.grid_inner&amp;quot;).find(&amp;quot;tr&amp;quot;).each( &lt;br /&gt;
 function(i) &lt;br /&gt;
 { &lt;br /&gt;
 if (i == subQuestionIndex + 1) &lt;br /&gt;
 { &lt;br /&gt;
 if (!includeAnswerOptionTexts) &lt;br /&gt;
 { &lt;br /&gt;
 $(this).before( $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;)&lt;br /&gt;
 .append($(&amp;quot;&amp;lt;td colspan=&amp;quot;+n+&amp;quot;&amp;gt;&amp;quot;).text(text).addClass(cssClass))&lt;br /&gt;
 ); &lt;br /&gt;
 } &lt;br /&gt;
 else &lt;br /&gt;
 { &lt;br /&gt;
 var tr = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;).append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(text).addClass(cssClass)); &lt;br /&gt;
 for (var j=0; j&amp;lt;quest.questions[0].options.length; j++) &lt;br /&gt;
 { &lt;br /&gt;
 tr.append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(quest.questions[0].options[j].text).addClass(cssClass)); &lt;br /&gt;
 } &lt;br /&gt;
 $(this).before(tr); &lt;br /&gt;
 } &lt;br /&gt;
 } &lt;br /&gt;
 } &lt;br /&gt;
 )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{ &lt;br /&gt;
 //insert a cell before Don&#039;t know on header &lt;br /&gt;
 var dontKnow_value = 3; &lt;br /&gt;
 this.addRowBefore(2, &amp;quot;extra_row_header&amp;quot;, &amp;quot;Alcohol drinks&amp;quot;, true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Source ====&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg site: 159730&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=24664</id>
		<title>Showing Answer Option in tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=24664"/>
		<updated>2013-10-17T03:10:57Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing answer option in tab ==&lt;br /&gt;
&lt;br /&gt;
We have a single question which has a lot of answer options. We want to show answer options in Alphabetical tab&lt;br /&gt;
&lt;br /&gt;
[[File:Tab20120116.png]]&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
Using Java Script property of question.&lt;br /&gt;
&lt;br /&gt;
There are 2 type of alphabetical tabs.&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;&#039;No tab is selected as default&#039;&#039;&#039;&lt;br /&gt;
#&#039;&#039;&#039;An extra tab showing all answer options which is selected as default&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Code 1: No tab is selected by default ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/// Maximum number of column in tab.&lt;br /&gt;
var columnPerRow = 3;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//answer option list to display outside of the tabs&lt;br /&gt;
var excludeAOs = [998,999];&lt;br /&gt;
&lt;br /&gt;
Array.prototype.contains = function(item)&lt;br /&gt;
{&lt;br /&gt;
 var i;&lt;br /&gt;
 for(i=0; i&amp;lt;this.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 if (this[i] == item)&lt;br /&gt;
 return true;&lt;br /&gt;
 }&lt;br /&gt;
 return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 //Overrider Array to find an item easier&lt;br /&gt;
Array.prototype.indexOf = function(character)&lt;br /&gt;
{&lt;br /&gt;
 for (var i = 0; i &amp;lt; this.length; i++)&lt;br /&gt;
 if (this[i] == character)&lt;br /&gt;
 return i;&lt;br /&gt;
 return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.getHTML = function()&lt;br /&gt;
{&lt;br /&gt;
 if (this.type != 1 &amp;amp;&amp;amp; this.type != 2)&lt;br /&gt;
 return;&lt;br /&gt;
&lt;br /&gt;
 //This code used to set data to question.options&lt;br /&gt;
 ans = this.answer.split(&amp;quot;_|_&amp;quot;);&lt;br /&gt;
 for (i = 0; i &amp;lt; ans.length; i++) &lt;br /&gt;
 {&lt;br /&gt;
 ans[i] = ans[i].split(&amp;quot;_:_&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 for (i = 0; i &amp;lt; ans[0].length; i++) &lt;br /&gt;
 {&lt;br /&gt;
 if (ans[0][i].length &amp;gt; 0) &lt;br /&gt;
 {&lt;br /&gt;
 for (j = 0; j &amp;lt; this.options.length; j++) &lt;br /&gt;
 {&lt;br /&gt;
 if (this.options[j].value == ans[0][i]) &lt;br /&gt;
 {&lt;br /&gt;
 this.options[j].checked = true;&lt;br /&gt;
 if (ans.length &amp;gt; 1 &amp;amp;&amp;amp; typeof this.options[j].open != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; typeof ans[1][i] != &amp;quot;undefined&amp;quot;)&lt;br /&gt;
 this.options[j].open = ans[1][i];&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 var optionType = this.type == 1 ? 1 : 3;&lt;br /&gt;
&lt;br /&gt;
 var sres = &amp;quot;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;table border=&amp;quot; + this.bordersize + &amp;quot; class=\&amp;quot;question_outer\&amp;quot; cellpadding=\&amp;quot;0\&amp;quot; cellspacing=\&amp;quot;0\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
 if (this.countdown &amp;gt; 0 &amp;amp;&amp;amp; this.showcountdowndisplay) &lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div id=\&amp;quot;countdowndisplay\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td id=\&amp;quot;question_text\&amp;quot;&amp;gt;&amp;quot; + this.text + &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td align=\&amp;quot;center\&amp;quot;&amp;gt;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
 //Generate list of tabs&lt;br /&gt;
 var tabList = new Array();&lt;br /&gt;
 tabList.push(&amp;quot; #&amp;quot;);&lt;br /&gt;
 for (var i = 0; i &amp;lt; this.options.length; i++) {&lt;br /&gt;
 if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)&lt;br /&gt;
 tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 //Sort Alphabetical&lt;br /&gt;
 tabList.sort();&lt;br /&gt;
&lt;br /&gt;
 sres += &amp;quot;&amp;lt;div id=&#039;example_tab&#039; class=&#039;ui-tabs ui-widget ui-widget-content ui-corner-all&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 //Generate tab header UI&lt;br /&gt;
 sres += &amp;quot;&amp;lt;ul class=&#039;ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 for (var i = 0; i &amp;lt; tabList.length; i++) {&lt;br /&gt;
 var tabHeaderContent = document.createElement(&amp;quot;li&amp;quot;);&lt;br /&gt;
 sres += &amp;quot;&amp;lt;li class=&#039;ui-state-default ui-corner-top&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;a href=&#039;#tab_&amp;quot; + i + &amp;quot;&#039;&amp;gt;&amp;lt;span&amp;gt;&amp;quot; + tabList[i] + &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 sres += &amp;quot;&amp;lt;div id=&#039;tab_&amp;quot; + 0 + &amp;quot;&#039; class=&#039;ui-tabs-panel ui-widget-content ui-corner-bottom&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 var answerOptionNotToIncluded = new Array();&lt;br /&gt;
&lt;br /&gt;
 for (var i = 1; i &amp;lt; tabList.length; i++) {&lt;br /&gt;
 var tabContent = &amp;quot;&amp;quot;;&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;div id=&#039;tab_&amp;quot; + i + &amp;quot;&#039; class=&#039;ui-tabs-panel ui-widget-content ui-corner-bottom&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 //generate content for tab&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;table&amp;gt;&amp;lt;tbody&amp;gt;&amp;lt;tr&amp;gt;&amp;quot;;&lt;br /&gt;
 var indexOfItemInTab = 1;&lt;br /&gt;
 var currentRow = 1;&lt;br /&gt;
 for (var j = 0; j &amp;lt; this.options.length; j++) {&lt;br /&gt;
 if (this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])&lt;br /&gt;
 continue;&lt;br /&gt;
&lt;br /&gt;
 if (excludeAOs.contains(this.options[j].value)) {&lt;br /&gt;
 answerOptionNotToIncluded.push(this.options[j]);&lt;br /&gt;
 continue;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 tabContent += this.options[j].getHTML(optionType);&lt;br /&gt;
 indexOfItemInTab++;&lt;br /&gt;
 if (indexOfItemInTab &amp;gt; columnPerRow * currentRow) {&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;quot;;&lt;br /&gt;
 currentRow++;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 if (this.options.lenght == 0)&lt;br /&gt;
 tabContent = &amp;quot;&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 if ($(tabContent).find(&amp;quot;input&amp;quot;).length &amp;lt;= 0)&lt;br /&gt;
 __emptyTabSearchString = &amp;quot;a[href*=&#039;tab_&amp;quot; + i + &amp;quot;&#039;]&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 sres += tabContent;&lt;br /&gt;
 }&lt;br /&gt;
 if (answerOptionNotToIncluded.length &amp;gt; 0)&lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;table id=&#039;extra_options&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;answerOptionNotToIncluded.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; + answerOptionNotToIncluded[i].getHTML(optionType) + &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 return sres;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var normaloptClick = optclick;&lt;br /&gt;
this.optclick = function(slbl, lidx, blnk)&lt;br /&gt;
{&lt;br /&gt;
 var currentAOValue = quest.options[lidx].value;&lt;br /&gt;
 var inputType = quest.type == 1 ? &amp;quot;radio&amp;quot; : &amp;quot;checkbox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 var openInput, currentAOInput; &lt;br /&gt;
 &lt;br /&gt;
 currentAOInput = $(&amp;quot;input[type=&#039;&amp;quot; + inputType + &amp;quot;&#039;][value=&#039;&amp;quot; + currentAOValue + &amp;quot;&#039;]&amp;quot;)[0];&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 if (excludeAOs.contains(currentAOValue))&lt;br /&gt;
 return normaloptClick(slbl, lidx, blnk);&lt;br /&gt;
&lt;br /&gt;
 //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox&lt;br /&gt;
 if (blnk &amp;amp;&amp;amp; currentAOInput.type == &amp;quot;checkbox&amp;quot;)&lt;br /&gt;
 currentAOInput.checked = !currentAOInput.checked;&lt;br /&gt;
 else if (blnk)&lt;br /&gt;
 currentAOInput.checked = true;&lt;br /&gt;
&lt;br /&gt;
 openInput = document[&amp;quot;query&amp;quot;][slbl + &amp;quot;.Open.&amp;quot; + currentAOValue];&lt;br /&gt;
 if ((typeof openInput) != &amp;quot;undefined&amp;quot;) &lt;br /&gt;
 {&lt;br /&gt;
 if (currentAOInput.checked) &lt;br /&gt;
 {&lt;br /&gt;
 openInput.disabled = false;&lt;br /&gt;
 openInput.focus();&lt;br /&gt;
 } &lt;br /&gt;
 else &lt;br /&gt;
 {&lt;br /&gt;
 openInput.value = &amp;quot;&amp;quot;;&lt;br /&gt;
 openInput.disabled = true;&lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
 var o;&lt;br /&gt;
 for(var i=0; i&amp;lt;quest.options.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 o = quest.options[i];&lt;br /&gt;
 if (o.single &amp;amp;&amp;amp; currentAOValue != o.value)&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input[type=&#039;&amp;quot; + inputType + &amp;quot;&#039;][value=&#039;&amp;quot; + o.value + &amp;quot;&#039;]&amp;quot;).attr(&amp;quot;checked&amp;quot;, false); &lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 if (typeof(__emptyTabSearchString) != &amp;quot;undefined&amp;quot;)&lt;br /&gt;
 $(__emptyTabSearchString).parent().remove();&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;#example_tab&amp;quot;).tabs();&lt;br /&gt;
 $(&amp;quot;a[href=&#039;#tab_0&#039;]&amp;quot;).parent().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // set Next invisible onload&lt;br /&gt;
 //setVisibility(false);&lt;br /&gt;
 $(&amp;quot;#extra_options&amp;quot;).hide();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code 2: Extra tab showing all answer options ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/// Maximum number of column in tab.&lt;br /&gt;
var columnPerRow = 3;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//answer option list to display outside of the tabs&lt;br /&gt;
var excludeAOs = [998,999];&lt;br /&gt;
&lt;br /&gt;
Array.prototype.contains = function(item)&lt;br /&gt;
{&lt;br /&gt;
 var i;&lt;br /&gt;
 for(i=0; i&amp;lt;this.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 if (this[i] == item)&lt;br /&gt;
 return true;&lt;br /&gt;
 }&lt;br /&gt;
 return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 //Overrider Array to find an item easier&lt;br /&gt;
Array.prototype.indexOf = function(character)&lt;br /&gt;
{&lt;br /&gt;
 for (var i = 0; i &amp;lt; this.length; i++)&lt;br /&gt;
 if (this[i] == character)&lt;br /&gt;
 return i;&lt;br /&gt;
 return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.getHTML = function()&lt;br /&gt;
{&lt;br /&gt;
 if (this.type != 1 &amp;amp;&amp;amp; this.type != 2)&lt;br /&gt;
 return;&lt;br /&gt;
&lt;br /&gt;
 //This code used to set data to question.options&lt;br /&gt;
 ans = this.answer.split(&amp;quot;_|_&amp;quot;);&lt;br /&gt;
 for (i = 0; i &amp;lt; ans.length; i++) &lt;br /&gt;
 {&lt;br /&gt;
 ans[i] = ans[i].split(&amp;quot;_:_&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 for (i = 0; i &amp;lt; ans[0].length; i++) &lt;br /&gt;
 {&lt;br /&gt;
 if (ans[0][i].length &amp;gt; 0) &lt;br /&gt;
 {&lt;br /&gt;
 for (j = 0; j &amp;lt; this.options.length; j++) &lt;br /&gt;
 {&lt;br /&gt;
 if (this.options[j].value == ans[0][i]) &lt;br /&gt;
 {&lt;br /&gt;
 this.options[j].checked = true;&lt;br /&gt;
 if (ans.length &amp;gt; 1 &amp;amp;&amp;amp; typeof this.options[j].open != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; typeof ans[1][i] != &amp;quot;undefined&amp;quot;)&lt;br /&gt;
 this.options[j].open = ans[1][i];&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 var optionType = this.type == 1 ? 1 : 3;&lt;br /&gt;
&lt;br /&gt;
 var sres = &amp;quot;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;table border=&amp;quot; + this.bordersize + &amp;quot; class=\&amp;quot;question_outer\&amp;quot; cellpadding=\&amp;quot;0\&amp;quot; cellspacing=\&amp;quot;0\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
 if (this.countdown &amp;gt; 0 &amp;amp;&amp;amp; this.showcountdowndisplay) &lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div id=\&amp;quot;countdowndisplay\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td id=\&amp;quot;question_text\&amp;quot;&amp;gt;&amp;quot; + this.text + &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td align=\&amp;quot;center\&amp;quot;&amp;gt;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
 //Generate list of tabs&lt;br /&gt;
 var tabList = new Array();&lt;br /&gt;
 tabList.push(&amp;quot; All&amp;quot;);&lt;br /&gt;
 for (var i = 0; i &amp;lt; this.options.length; i++) {&lt;br /&gt;
 if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)&lt;br /&gt;
 tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 //Sort Alphabetical&lt;br /&gt;
 tabList.sort();&lt;br /&gt;
&lt;br /&gt;
 sres += &amp;quot;&amp;lt;div id=&#039;example_tab&#039; class=&#039;ui-tabs ui-widget ui-widget-content ui-corner-all&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 //Generate tab header UI&lt;br /&gt;
 sres += &amp;quot;&amp;lt;ul class=&#039;ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 for (var i = 0; i &amp;lt; tabList.length; i++) {&lt;br /&gt;
 var tabHeaderContent = document.createElement(&amp;quot;li&amp;quot;);&lt;br /&gt;
 sres += &amp;quot;&amp;lt;li class=&#039;ui-state-default ui-corner-top&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 sres += &amp;quot;&amp;lt;a href=&#039;#tab_&amp;quot; + i + &amp;quot;&#039;&amp;gt;&amp;lt;span&amp;gt;&amp;quot; + tabList[i] + &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 var answerOptionNotToIncluded = new Array();&lt;br /&gt;
&lt;br /&gt;
 for (var i = 0; i &amp;lt; tabList.length; i++) {&lt;br /&gt;
 var tabContent = &amp;quot;&amp;quot;;&lt;br /&gt;
 if(i==0)tabContent += &amp;quot;&amp;lt;div id=&#039;tab_&amp;quot; + i + &amp;quot;&#039; class=&#039;ui-tabs-panel ui-widget-content ui-corner-bottom&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 else tabContent += &amp;quot;&amp;lt;div id=&#039;tab_&amp;quot; + i + &amp;quot;&#039; class=&#039;ui-tabs-panel ui-tabs-hide&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 //generate content for tab&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;table&amp;gt;&amp;lt;tbody&amp;gt;&amp;lt;tr&amp;gt;&amp;quot;;&lt;br /&gt;
 var indexOfItemInTab = 1;&lt;br /&gt;
 var currentRow = 1;&lt;br /&gt;
 for (var j = 0; j &amp;lt; this.options.length; j++) {&lt;br /&gt;
 if (i != 0 &amp;amp;&amp;amp; this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])&lt;br /&gt;
 continue;&lt;br /&gt;
 var optionInput = this.options[j].getHTML(optionType);&lt;br /&gt;
 if (i == 0) {&lt;br /&gt;
 while (optionInput.indexOf(this.label) != -1) {&lt;br /&gt;
 optionInput = optionInput.replace(this.label, &amp;quot;TabAllAnswer&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 if (i!=0 &amp;amp;&amp;amp; excludeAOs.contains(this.options[j].value)) {&lt;br /&gt;
 answerOptionNotToIncluded.push(this.options[j]);&lt;br /&gt;
 continue;&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 tabContent += this.options[j].getHTML(optionType);&lt;br /&gt;
 indexOfItemInTab++;&lt;br /&gt;
 if (indexOfItemInTab &amp;gt; columnPerRow * currentRow) {&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;quot;;&lt;br /&gt;
 currentRow++;&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 if (this.options.lenght == 0)&lt;br /&gt;
 tabContent = &amp;quot;&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
 tabContent += &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 if ($(tabContent).find(&amp;quot;input&amp;quot;).length &amp;lt;= 0)&lt;br /&gt;
 __emptyTabSearchString = &amp;quot;a[href*=&#039;tab_&amp;quot; + i + &amp;quot;&#039;]&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 sres += tabContent;&lt;br /&gt;
 }&lt;br /&gt;
 if (answerOptionNotToIncluded.length &amp;gt; 0)&lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;table id=&#039;extra_options&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;answerOptionNotToIncluded.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 sres += &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; + answerOptionNotToIncluded[i].getHTML(optionType) + &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else&lt;br /&gt;
 sres += &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 return sres;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var normaloptClick = optclick;&lt;br /&gt;
this.optclick = function(slbl, lidx, blnk)&lt;br /&gt;
{&lt;br /&gt;
 var currentAOValue = quest.options[lidx].value;&lt;br /&gt;
 var inputType = quest.type == 1 ? &amp;quot;radio&amp;quot; : &amp;quot;checkbox&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 var openInput, currentAOInput; &lt;br /&gt;
 &lt;br /&gt;
 currentAOInput = $(&amp;quot;input[type=&#039;&amp;quot; + inputType + &amp;quot;&#039;][value=&#039;&amp;quot; + currentAOValue + &amp;quot;&#039;]&amp;quot;)[0];&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 if (excludeAOs.contains(currentAOValue))&lt;br /&gt;
 return normaloptClick(slbl, lidx, blnk);&lt;br /&gt;
&lt;br /&gt;
 //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox&lt;br /&gt;
 if (blnk &amp;amp;&amp;amp; currentAOInput.type == &amp;quot;checkbox&amp;quot;)&lt;br /&gt;
 currentAOInput.checked = !currentAOInput.checked;&lt;br /&gt;
 else if (blnk)&lt;br /&gt;
 currentAOInput.checked = true;&lt;br /&gt;
&lt;br /&gt;
 openInput = document[&amp;quot;query&amp;quot;][slbl + &amp;quot;.Open.&amp;quot; + currentAOValue];&lt;br /&gt;
 if ((typeof openInput) != &amp;quot;undefined&amp;quot;) &lt;br /&gt;
 {&lt;br /&gt;
 if (currentAOInput.checked) &lt;br /&gt;
 {&lt;br /&gt;
 openInput.disabled = false;&lt;br /&gt;
 openInput.focus();&lt;br /&gt;
 } &lt;br /&gt;
 else &lt;br /&gt;
 {&lt;br /&gt;
 openInput.value = &amp;quot;&amp;quot;;&lt;br /&gt;
 openInput.disabled = true;&lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
 var o;&lt;br /&gt;
 for(var i=0; i&amp;lt;quest.options.length; i++)&lt;br /&gt;
 {&lt;br /&gt;
 o = quest.options[i];&lt;br /&gt;
 if (o.single &amp;amp;&amp;amp; currentAOValue != o.value)&lt;br /&gt;
 {&lt;br /&gt;
 $(&amp;quot;input[type=&#039;&amp;quot; + inputType + &amp;quot;&#039;][value=&#039;&amp;quot; + o.value + &amp;quot;&#039;]&amp;quot;).attr(&amp;quot;checked&amp;quot;, false); &lt;br /&gt;
 }&lt;br /&gt;
 } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 if (typeof(__emptyTabSearchString) != &amp;quot;undefined&amp;quot;)&lt;br /&gt;
 $(__emptyTabSearchString).parent().remove();&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;#example_tab&amp;quot;).tabs();&lt;br /&gt;
 //$(&amp;quot;a[href=&#039;#tab_0&#039;]&amp;quot;).parent().css(&amp;quot;display&amp;quot;, &amp;quot;none&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // set Next invisible onload&lt;br /&gt;
 //setVisibility(false);&lt;br /&gt;
 $(&amp;quot;#extra_options&amp;quot;).hide();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079 (Questions: Q_1_No_tab_is_selected_by_default &amp;amp; Q_2_Extra_tab_showing_all_answer_options)&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24663</id>
		<title>Add text before answer option of single question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24663"/>
		<updated>2013-10-17T03:10:12Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
In order to add text before answer option of single question&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
I want to add text before answer option of single question&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have a single question.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;lt;img src=&amp;quot;/images/a/a3/OneColumnBefore.JPG&amp;quot; _fck_mw_filename=&amp;quot;OneColumnBefore.JPG&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
| &amp;amp;lt;img src=&amp;quot;/images/0/08/MultiColumnBefore.JPG&amp;quot; _fck_mw_filename=&amp;quot;MultiColumnBefore.JPG&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;I want to add an text before answer option like this image&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;lt;img src=&amp;quot;/images/2/2f/OneColumnAfter.jpg&amp;quot; _fck_mw_filename=&amp;quot;OneColumnAfter.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
| &amp;amp;lt;img src=&amp;quot;/images/6/69/MultiColumnAfter.jpg&amp;quot; _fck_mw_filename=&amp;quot;MultiColumnAfter.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Add a Single question to Questionaire editor&lt;br /&gt;
*Go to menu Properties -&amp;gt; Question scripts -&amp;gt; Java script tab -&amp;gt; Input script&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;img src=&amp;quot;/images/5/56/AddTextBeforeAOOfSingleQuestion.jpg&amp;quot; _fck_mw_filename=&amp;quot;AddTextBeforeAOOfSingleQuestion.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
quest.insertTextBefore = function(aoIndex, text)&lt;br /&gt;
{&lt;br /&gt;
 var that = this;&lt;br /&gt;
 $(&amp;quot;.option_row&amp;quot;).each(&lt;br /&gt;
 function(i)&lt;br /&gt;
 {&lt;br /&gt;
 if (i == aoIndex)&lt;br /&gt;
 {&lt;br /&gt;
 var tr = $(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;).addClass(&amp;quot;customized_text&amp;quot;)&lt;br /&gt;
 .append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).text(text).attr(&amp;quot;colSpan&amp;quot;,that.cols)); &lt;br /&gt;
 $(this).before(tr);&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 var text = &amp;quot;My Text&amp;quot;;&lt;br /&gt;
 this.insertTextBefore(2, text);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Question stylesheet ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
.customized_text&lt;br /&gt;
{&lt;br /&gt;
 background-color:white;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire Resource Id on cg site: 159730&lt;br /&gt;
&lt;br /&gt;
Question: Q_OS_Single_AddTextBeforeAO&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24661</id>
		<title>Add text before answer option of single question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Add_text_before_answer_option_of_single_question&amp;diff=24661"/>
		<updated>2013-10-17T03:09:49Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt; Challenge &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In order to add text before answer option of single question&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;As a questionnaire creator&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I want to add text before answer option of single question&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I have a single question.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/images/a/a3/OneColumnBefore.JPG&amp;quot; _fck_mw_filename=&amp;quot;OneColumnBefore.JPG&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;img src=&amp;quot;/images/0/08/MultiColumnBefore.JPG&amp;quot; _fck_mw_filename=&amp;quot;MultiColumnBefore.JPG&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
I want to add an text before answer option like this image&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;/images/2/2f/OneColumnAfter.jpg&amp;quot; _fck_mw_filename=&amp;quot;OneColumnAfter.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;img src=&amp;quot;/images/6/69/MultiColumnAfter.jpg&amp;quot; _fck_mw_filename=&amp;quot;MultiColumnAfter.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt; Solution &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Add a Single question to Questionaire editor&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Go to menu Properties -&amp;amp;gt; Question scripts -&amp;amp;gt; Java script tab -&amp;amp;gt; Input script&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;img src=&amp;quot;/images/5/56/AddTextBeforeAOOfSingleQuestion.jpg&amp;quot; _fck_mw_filename=&amp;quot;AddTextBeforeAOOfSingleQuestion.jpg&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt; Code  &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;fck_mw_source&amp;quot; _fck_mw_customtag=&amp;quot;true&amp;quot; _fck_mw_tagname=&amp;quot;source&amp;quot; lang=&amp;quot;javascript&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;fckLRquest.insertTextBefore = function(aoIndex, text)fckLR{fckLR	var that = this;fckLR	$(&amp;amp;quot;.option_row&amp;amp;quot;).each(fckLR		function(i)fckLR		{fckLR			if (i == aoIndex)fckLR			{fckLR				var tr = $(&amp;amp;quot;&amp;amp;lt;tr&amp;amp;gt;&amp;amp;quot;).addClass(&amp;amp;quot;customized_text&amp;amp;quot;)fckLR						.append($(&amp;amp;quot;&amp;amp;lt;td&amp;amp;gt;&amp;amp;quot;).text(text).attr(&amp;amp;quot;colSpan&amp;amp;quot;,that.cols)); fckLR				$(this).before(tr);fckLR			}fckLR		}fckLR	);fckLRfckLR}fckLRfckLRquest.onInit = function()fckLR{fckLR   var text = &amp;amp;quot;My Text&amp;amp;quot;;fckLR	this.insertTextBefore(2, text);fckLR}fckLR&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt; Question stylesheet &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;fck_mw_source&amp;quot; _fck_mw_customtag=&amp;quot;true&amp;quot; _fck_mw_tagname=&amp;quot;source&amp;quot; lang=&amp;quot;css&amp;quot;&amp;gt;fckLR.customized_textfckLR{fckLR   background-color:white;fckLR}fckLR&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Source&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Questionnaire Resource Id on cg site: 159730 &lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Question: Q_OS_Single_AddTextBeforeAO&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_single_questions_as_dropdown_lists_in_their_own_pages&amp;diff=24660</id>
		<title>Show single questions as dropdown lists in their own pages</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Show_single_questions_as_dropdown_lists_in_their_own_pages&amp;diff=24660"/>
		<updated>2013-10-17T03:09:36Z</updated>

		<summary type="html">&lt;p&gt;Nguyentrantri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Challenge ==&lt;br /&gt;
&lt;br /&gt;
As a questionnaire creator&lt;br /&gt;
&lt;br /&gt;
In order&amp;amp;nbsp;not to have&amp;amp;nbsp;the answer option list taking much space when viewing the question&lt;br /&gt;
&lt;br /&gt;
I want to show answer options as a drop down list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
&lt;br /&gt;
[[File:Single default view.png]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After&lt;br /&gt;
&lt;br /&gt;
[[File:Single as drop down.png]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
*Hide answer option rows&lt;br /&gt;
*Create a drop down list containing all answer options, add it to the option table&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
*Create SingleQuestion class&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function SingleQuestion(q, selectedValue)&lt;br /&gt;
{&lt;br /&gt;
 if (q.label.indexOf(&amp;quot;QUESTION.&amp;quot;) != -1)&lt;br /&gt;
 this.label = q.label;&lt;br /&gt;
 else&lt;br /&gt;
 this.label = &amp;quot;QUESTION.&amp;quot; + q.label;&lt;br /&gt;
 &lt;br /&gt;
 this.aoValues = q.aoValues;&lt;br /&gt;
 this.aoTexts = q.aoTexts; &lt;br /&gt;
 this.selectedValue = selectedValue; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.createDropDownList = function()&lt;br /&gt;
{&lt;br /&gt;
 var n = this.aoValues.length;&lt;br /&gt;
 var list = $(&amp;quot;&amp;lt;select id=&#039;dropDownList&#039;&amp;gt;&amp;quot;);&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(&amp;quot;&amp;quot;)&lt;br /&gt;
 .text(&amp;quot;Select...&amp;quot;)&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, &amp;quot;true&amp;quot;));&lt;br /&gt;
 var selected=&amp;quot;&amp;quot;;&lt;br /&gt;
 for(var i=0; i&amp;lt;n; i++)&lt;br /&gt;
 { &lt;br /&gt;
 if (this.aoValues[i] == this.selectedValue)&lt;br /&gt;
 selected = &amp;quot;true&amp;quot;;&lt;br /&gt;
 else&lt;br /&gt;
 selected = &amp;quot;&amp;quot;;&lt;br /&gt;
 list.append($(&amp;quot;&amp;lt;option&amp;gt;&amp;quot;)&lt;br /&gt;
 .val(this.aoValues[i])&lt;br /&gt;
 .text(this.aoTexts[i])&lt;br /&gt;
 .attr(&amp;quot;selected&amp;quot;, selected)&lt;br /&gt;
 );&lt;br /&gt;
 }&lt;br /&gt;
 //handle change event to change the value of the single question&lt;br /&gt;
 var s_label = this.label;&lt;br /&gt;
 list.change(&lt;br /&gt;
 function()&lt;br /&gt;
 { &lt;br /&gt;
 $(&amp;quot;input[name=&#039;&amp;quot; + s_label + &amp;quot;&#039;]&amp;quot;).val($(this).val());&lt;br /&gt;
 }&lt;br /&gt;
 );&lt;br /&gt;
 return list;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SingleQuestion.prototype.validate = function()&lt;br /&gt;
{&lt;br /&gt;
 ErrorMessages.getInstance().clearErrorMessages();&lt;br /&gt;
 if ($(&amp;quot;input[name=&#039;&amp;quot; + this.label + &amp;quot;&#039;]&amp;quot;).val() == &amp;quot;&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
 ErrorMessages.getInstance().showErrorMessage(quest.requiredtext);&lt;br /&gt;
 return false;&lt;br /&gt;
 }&lt;br /&gt;
 return true;&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add the drop down list to the option table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
quest.onInit = function()&lt;br /&gt;
{&lt;br /&gt;
 $(&amp;quot;.option_row&amp;quot;).remove();&lt;br /&gt;
 var q = {&#039;label&#039;:&#039;Q3&#039;, &#039;aoTexts&#039;:[&#039;C2&#039;,&#039;C3&#039;,&#039;C4&#039;,&#039;C5&#039;,&#039;C6&#039;,&#039;C7&#039;,&#039;C8&#039;,&#039;T1&#039;,&#039;T2&#039;,&#039;T3&#039;,&#039;T4&#039;,&#039;T5&#039;,&#039;T6&#039;,&#039;T7&#039;,&#039;T8&#039;,&#039;T9&#039;,&#039;T10&#039;,&#039;T11&#039;,&#039;T12&#039;,&#039;L1&#039;,&#039;L2&#039;,&#039;L3&#039;,&#039;L4&#039;,&#039;L5&#039;,&#039;S1&#039;,&#039;S2&#039;,&#039;S3&#039;,&#039;S4&#039;,&amp;quot;Don&#039;t know&amp;quot;], &#039;aoValues&#039;:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29&lt;br /&gt;
]};&lt;br /&gt;
 var qS = new SingleQuestion(q, &amp;quot;{{Q3.Value}}&amp;quot;);&lt;br /&gt;
 var oldValue = &amp;quot;{{Q3.Value}}&amp;quot;;&lt;br /&gt;
 $(&amp;quot;input[name=&#039;&amp;quot; + qS.label + &amp;quot;&#039;]&amp;quot;).val(oldValue);&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;.option_table&amp;quot;).append($(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;).append($(&amp;quot;&amp;lt;td&amp;gt;&amp;quot;).append(qS.createDropDownList())).addClass(&amp;quot;option_row&amp;quot;));&lt;br /&gt;
 $(&amp;quot;#dropDownList&amp;quot;).val(oldValue);&lt;br /&gt;
 quest.qS = qS;&lt;br /&gt;
&lt;br /&gt;
 $(&amp;quot;.QuestionSpace &amp;gt;p&amp;quot;).attr(&amp;quot;align&amp;quot;, &amp;quot;center&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
questioncheck = function()&lt;br /&gt;
{&lt;br /&gt;
 return quest.qS.validate();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Questionnaire resource id on cg site: 164079(Question: Q_Show_single_questions_as_dropdown_lists_in_their)&lt;/div&gt;</summary>
		<author><name>Nguyentrantri</name></author>
	</entry>
</feed>