<?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=Phamngocsonopenid</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=Phamngocsonopenid"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/Special:Contributions/Phamngocsonopenid"/>
	<updated>2026-05-18T15:57:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:DashBoardOnloadSon.png&amp;diff=24491</id>
		<title>File:DashBoardOnloadSon.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:DashBoardOnloadSon.png&amp;diff=24491"/>
		<updated>2013-05-15T06:45:28Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Show_single_questions_as_dropdown_lists_in_their_own_pages&amp;diff=23986</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=23986"/>
		<updated>2012-02-09T08:23:14Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &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;
[[Image:Single default view.png]]&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
After &lt;br /&gt;
&lt;br /&gt;
[[Image: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;
*Create SingleQuestion class&lt;br /&gt;
&amp;lt;source lang=javascript&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=javascript&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;
== 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>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=23473</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=23473"/>
		<updated>2012-01-16T08:14:28Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: /* Showing answer option in tab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing answer option in tab == &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;
[[Image:Tab20120116.png]]&lt;br /&gt;
&lt;br /&gt;
== Solution == &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;
&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;
&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;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=23472</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=23472"/>
		<updated>2012-01-16T08:13:17Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: /* Showing answer option in tab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing answer option in tab == &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;
[[Image:Tab20120116.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Solution == &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;
&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;
&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;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=23471</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=23471"/>
		<updated>2012-01-16T08:12:33Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: /* Showing answer option in tab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing answer option in tab == &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;
[[Tab20120116.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Solution == &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;
&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;
&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;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tab20120116.png&amp;diff=23470</id>
		<title>File:Tab20120116.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tab20120116.png&amp;diff=23470"/>
		<updated>2012-01-16T08:11:39Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=23469</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=23469"/>
		<updated>2012-01-16T08:03:05Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: /* Showing_Answer_Option_in_tab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing answer option in tab == &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;
[[Image:Fetch)UID).INBOX.related_to_Questionnaire)2014.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Solution == &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;
&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;
&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;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Showing_Answer_Option_in_tab&amp;diff=23468</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=23468"/>
		<updated>2012-01-16T08:02:02Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Showing_Answer_Option_in_tab == &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;
[[Image:Fetch)UID).INBOX.related_to_Questionnaire)2014.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Solution == &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;
&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;
&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;
== Source ==&lt;br /&gt;
Questionnaire Resource Id on cg.catglobe.com site: 164079&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_User_template&amp;diff=18614</id>
		<title>Variable: User template</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_User_template&amp;diff=18614"/>
		<updated>2011-04-26T08:35:15Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: User template=====&lt;br /&gt;
&lt;br /&gt;
With this variable you can choose that returned users should belong to a specific user resource template. After having selected this template you can refine the requirements by adding properties of that template to the list of detailed requirements. For each added property you can demand values that fulfill specific criteria. The criteria you can specify depend on the property type. If you add a boolean property, you can choose that either all those that have the value set to true or all those that have the value set to false should be included. The criteria for date are that it is in a certain time interval. The criteria for single and multi, is that the user has the same choices as the variable. Similar value settings are possible for the other property types that exist as well.&lt;br /&gt;
&lt;br /&gt;
[[Image:6874.png]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 6873.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_User_information&amp;diff=18612</id>
		<title>Variable: User information</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_User_information&amp;diff=18612"/>
		<updated>2011-04-26T08:34:43Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: User information=====&lt;br /&gt;
&lt;br /&gt;
The user information variable selects users based on their information, such as their country, language and culture, whether they have an e-mail address (and further what domain this e-mail belongs to) or phone number(including selections of type of phone, country code and range of numbers), data about their points balance and finally a choice to exclude them if their e-mails exist in the list of invalid e-mails.&lt;br /&gt;
&lt;br /&gt;
[[Image:6869.png|700px|UserInfo57-1]]&lt;br /&gt;
&lt;br /&gt;
The e-mail and phone number detailed filters are only shown if you have clicked the &#039;Have phone number&#039; check box. It is not necessary to choose all of these elements of the variable. If you leave any of them blank they will not be included as part of the variable.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1652.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Sample_rule_belonging&amp;diff=18611</id>
		<title>Variable: Sample rule belonging</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Sample_rule_belonging&amp;diff=18611"/>
		<updated>2011-04-26T08:33:51Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Sample rule belonging=====&lt;br /&gt;
&lt;br /&gt;
The &#039;Sample rule belonging&#039; variable allows you to only include users who belong to a certain sample of a questionnaire. Before you will be presented to any sample choices you must select a questionnaire.&lt;br /&gt;
&lt;br /&gt;
[[Image:4285.png|831px|GB5-4-5]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 4283.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Questionnaire_participation&amp;diff=18610</id>
		<title>Variable: Questionnaire participation</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Questionnaire_participation&amp;diff=18610"/>
		<updated>2011-04-26T08:33:07Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Questionnaire participation=====&lt;br /&gt;
&lt;br /&gt;
The usage variable groups users who are related to one or more questionnaires available in your system. Each questionnaire offers 4 options about users answering of the questionnaire (based on the status of user’s answer sheets to the selected questionnaire) which you can check to apply to the rule you are creating. If you select more than 1 questionnaire, you should check the “Or” circle (ratio button) to alternate the variables or the “And” circle to combine them. You can also choose whether or not user who answered test answer sheets for the questionnaire will be included in the 4 main options. Checking the include test users alone is thus not allowed since it only works in collaboration with the other 4 rules!&lt;br /&gt;
&lt;br /&gt;
[[Image:1662.png]]&lt;br /&gt;
&lt;br /&gt;
The example above states that the users who fulfill the Variable 1 are those that:&lt;br /&gt;
&lt;br /&gt;
* Completed answering the questionnaire called &#039;SAS annonce&#039;&lt;br /&gt;
&lt;br /&gt;
AND&lt;br /&gt;
&lt;br /&gt;
* Completed or partly completed answering the questionnaire called &#039;CATINET 6110&#039;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1647.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Question_participation&amp;diff=18609</id>
		<title>Variable: Question participation</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Question_participation&amp;diff=18609"/>
		<updated>2011-04-26T08:32:33Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Question participation=====&lt;br /&gt;
&lt;br /&gt;
If you are interested in knowing whether or not a user has actually answered a certain question, rather than just asking what he answered to the question, then you can use the &amp;quot;Question participation&amp;quot; variable.&lt;br /&gt;
&lt;br /&gt;
[[Image:5812.png|800px|GB56-2]]&lt;br /&gt;
&lt;br /&gt;
It is possible to choose that the returned users can be from test answer sheets by setting the &amp;quot;Include test users&amp;quot; check box to true.&lt;br /&gt;
&lt;br /&gt;
Also you must choose the questionnaire and question that will be filtered on in the next two fields in the dialog.&lt;br /&gt;
&lt;br /&gt;
Finally you can decide whether those users you want to include are those that have already specified an answer to the question or those who have not yet had the chance to answer (or chosen not to).&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 5811.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Qualifications&amp;diff=18608</id>
		<title>Variable: Qualifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Qualifications&amp;diff=18608"/>
		<updated>2011-04-26T08:31:37Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Qualifications=====&lt;br /&gt;
&lt;br /&gt;
You can also choose as a variable to include users who have certain qualifications.&lt;br /&gt;
&lt;br /&gt;
[[Image:1661.png|800px|Qualification variable]]&lt;br /&gt;
&lt;br /&gt;
The variable above will include all users who have between level 3 and 4 (including both) in the language &#039;Swedish&#039; (=Svensk).&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1658.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Participation_period&amp;diff=18607</id>
		<title>Variable: Participation period</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Participation_period&amp;diff=18607"/>
		<updated>2011-04-26T08:30:55Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Participation period=====&lt;br /&gt;
&lt;br /&gt;
The &#039;Participation period&#039; variable selects users based on whether they answered an array of questionnaires between a specified start and end date.The start date check box specifies whether we compare the variable date with the users start date of answering the questionnaire or his end date (it may happen that a user took more than a day to answer a questionnaire). If &#039;start date&#039; is unchecked it means we will compare the date with the date the user finished answering the questionnaire. It is possible here to select more than one questionnaire and the variable is true for a user as long as he just fulffilled the participation criteria of at least one of them!&lt;br /&gt;
&lt;br /&gt;
[[Image:1373.jpg|689px|The rules tab 9]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1650.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Number_of_CATI_calls_received&amp;diff=18606</id>
		<title>Variable: Number of CATI calls received</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Number_of_CATI_calls_received&amp;diff=18606"/>
		<updated>2011-04-26T08:30:11Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Number of CATI calls received=====&lt;br /&gt;
&lt;br /&gt;
The number of CATU calls variable is used in relations with CATI questionnaires. It makes it possible to only include users in a group whom we called a certain number of times in connection with a questionnaire.&lt;br /&gt;
&lt;br /&gt;
The &#039;number of calls&#039; field can be defined with flexible arrays and use the following syntax&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Syntax to use = Numbers that are then included&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[1] = {1}&lt;br /&gt;
&lt;br /&gt;
[1-3] = {1,2,3}&lt;br /&gt;
&lt;br /&gt;
[1-3, 5] = {1,2,3,5}&lt;br /&gt;
&lt;br /&gt;
[1-3, 5-7] = {1,2,3,5,6,7}&lt;br /&gt;
&lt;br /&gt;
[[Image:4289.png|800px|GB5-4-9]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 4282.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Group_template&amp;diff=18604</id>
		<title>Variable: Group template</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Group_template&amp;diff=18604"/>
		<updated>2011-04-26T08:28:21Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Group template=====&lt;br /&gt;
&lt;br /&gt;
With this variable you can choose that returned users should be member of groups that belong to a specific group resource template. After having selected this template you can refine the requirements of which of those groups that they need to be member of by adding properties of that template to the list of detailed requirements. For each added property you can demand values that fulfill specific criteria. The criteria you can specify depend on the property type. If you add a boolean property, you can choose that either all those groups that have the value set to true or all those that have the value set to false should be included. The criteria for date are that it is in a certain time interval. The criteria for single and multi, is that the group has the same choices as the variable has been set with. Similar value settings are possible for the other property types that exist as well.&lt;br /&gt;
&lt;br /&gt;
[[Image:6876.png]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 6875.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Group_belonging&amp;diff=18603</id>
		<title>Variable: Group belonging</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Group_belonging&amp;diff=18603"/>
		<updated>2011-04-26T08:27:38Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Group belonging=====&lt;br /&gt;
&lt;br /&gt;
With this variable you can specify that users must belong (or not belong) to one or more groups in the system.&lt;br /&gt;
&lt;br /&gt;
[[Image:1371.jpg|721px|The rules tab 7]]&lt;br /&gt;
&lt;br /&gt;
You can choose to add multiple groups to the variable and state whether users who are in the group or not in the group fulfill the variable. You can also choose if they have to fulfill this for each group part or just one group part, if you have added more than one group part to the variable.&lt;br /&gt;
&lt;br /&gt;
The above variable will define that users fulfilling variable 1 are those that:&lt;br /&gt;
&lt;br /&gt;
* Are both in the group &#039;0000carl&#039; AND &#039;103_total_test&#039;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1648.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_E-mails_sent&amp;diff=18600</id>
		<title>Variable: E-mails sent</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_E-mails_sent&amp;diff=18600"/>
		<updated>2011-04-26T08:26:07Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: E-mails sent=====&lt;br /&gt;
&lt;br /&gt;
The e-mails sent variable selects users based on the number of e-mails we have sent to them in connection with a specific resource&#039;s communicator.&lt;br /&gt;
&lt;br /&gt;
[[Image:6871.png]]&lt;br /&gt;
&lt;br /&gt;
You can choose either to include users that have received less than a certain number of e mails from the system, a specific amount, or more than a certain number; using the &#039;operator&#039; and &#039;number&#039; fields.&lt;br /&gt;
&lt;br /&gt;
If we only want to check mails sent from the communicator of one specific resource we can specify that resource. If we do not specify a resource we need instead specify a group in the field there under. The group field will limit the users that may potentially be returned from the variable. The reason that either resource or group needs to be chosen is that the query else wise may get too heavy for the server.&lt;br /&gt;
&lt;br /&gt;
If we only want to check for number of mails received in a certain time frame we can use the data settings of the variable. There are three types of date searches available.&lt;br /&gt;
&lt;br /&gt;
* No limitation: Will not make dates a delimiting factor.&lt;br /&gt;
* Fixed time: Will define the delimiting time frame with an exact start date and time and end date and time.&lt;br /&gt;
* Floating time: This interval will depend on the date that the variable is being built. The &#039;&#039;start date&#039;&#039; is the date the variable is rebuilt minus &#039;Days before current date time&#039;The &#039;&#039;end date&#039;&#039; is is the date the variable is rebuilt minus &#039;Days before current date time&#039; plus &#039;Days span&#039;&lt;br /&gt;
&lt;br /&gt;
Finally we can choose if the number of received e-mails will only be of types normal mail, bulk mail or both.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1643.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_CATI_outcome_status&amp;diff=18599</id>
		<title>Variable: CATI outcome status</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_CATI_outcome_status&amp;diff=18599"/>
		<updated>2011-04-26T08:25:14Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: CATI outcome status=====&lt;br /&gt;
&lt;br /&gt;
The CATI outcome status variable will find those users who during the last call we had with them in regards to a specific questionnaire, were given a contacts status of a certain main type. To learn more on these main types please refer to the help files on [[_CATI_Outcome_Sets_|CATI outcome sets]].&lt;br /&gt;
&lt;br /&gt;
[[Image:7965.png|603px|GB58-12]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 4281.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Bulk_mail_receipt&amp;diff=18598</id>
		<title>Variable: Bulk mail receipt</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Bulk_mail_receipt&amp;diff=18598"/>
		<updated>2011-04-26T08:24:29Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Bulk mail receipt=====&lt;br /&gt;
&lt;br /&gt;
The bulk mail receipt variable selects users who have or have not received a certain bulk mail. You can search for the bulk mail in your system by clicking the “Search” button.&lt;br /&gt;
&lt;br /&gt;
[[Image:6870.png]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1651.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Answer_to_question&amp;diff=18596</id>
		<title>Variable: Answer to question</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Answer_to_question&amp;diff=18596"/>
		<updated>2011-04-26T08:23:12Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Answer to question=====&lt;br /&gt;
&lt;br /&gt;
The &#039;Answer to question&#039; variable is used to select users based on the data of users’ answer to an answer sheet. Please notice that you can choose to include test answer sheets by clicking the &#039;Include test users&#039; check box!&lt;br /&gt;
&lt;br /&gt;
The data variable asks you to choose a questionnaire from your system. Click the “search” button to find the one you want, then select one question in the drop down list and the answers that will define whom to include or exclude will appear. Note that there are many types of question which are displayed in different ways. For each method you can choose to include those who answered with the specifications that your set or those who did not. For each example below we will try to explain what this means in the specific question type context. Note that data variables do not support text, text grid, open and multimedia type questions.&lt;br /&gt;
&lt;br /&gt;
===&#039;Answer to question&#039; variable - Single, Multi, Single Grid and Multi Grid type questions===&lt;br /&gt;
&lt;br /&gt;
For single and multi questions you will be shown the possible answer options.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When answer logic is &amp;quot;Like below&amp;quot;: &#039;&#039;&#039;For both single and multi a user will be included if he has chosen ANY of the checked options. I.e. checking more in a multi question does not mean that he should have chosen the exact same options. To achieve such a &#039;rule&#039; you just add more data variables with the same multi question; and add each chosen option as an individual variable. This will achieve the required logic since there is always an &#039;AND&#039; between variables in a rule. Single grid and multi grid work in the same way as single and multi, except for the fact that you will be required to choose sub question to add the variable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When answer logic is &amp;quot;Not like below&amp;quot;:&#039;&#039;&#039; For both single and multi a user will be included if he has NOT chosen ANY of the checked options. I.e. checking more in a multi question does not mean that he should not have chosen the exact same combination of options; just having chosen one of them means that he does not fulfill the variable criteria. To achieve a &#039;rule&#039; where he should not have answered as a specific combination, you just add more data variables with the same multi question and add each chosen option as an individual variable. This will achieve the required logic since there is always an &#039;AND&#039; between variables in a rule. Single grid and multi grid work in the same way as single and multi, except for the fact that you will be required to choose sub question to add the variable.&lt;br /&gt;
&lt;br /&gt;
[[Image:7964.png|642px|GB58-11]]&lt;br /&gt;
&lt;br /&gt;
We have a special situation when users check none or all of the answer options when saving the data variable. The logic for what this means is shown in the table below.&lt;br /&gt;
[[Image:7963.png|668px|GB58-10]]&lt;br /&gt;
&lt;br /&gt;
In the above example any user who answered that they have between 0 and 5 (including both) or 10 and 15 (including both) will be seen as fulfilling the variable.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1645.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Variable:_Answer_sheet_status&amp;diff=18595</id>
		<title>Variable: Answer sheet status</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Variable:_Answer_sheet_status&amp;diff=18595"/>
		<updated>2011-04-26T08:22:17Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rule variables]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=====Variable: Answer sheet status=====&lt;br /&gt;
&lt;br /&gt;
When respondents answer a questionnaire their answer sheet may by questionnaire properties or CGScript be given one of 5 different states. It is possible to choose to only include into or exclude from a group those users who had a certain status to a specific questionnaire.&lt;br /&gt;
&lt;br /&gt;
[[Image:7962.png|618px|GB58-9]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 4280.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Manual_rebuild_warning_dialog&amp;diff=18594</id>
		<title>Manual rebuild warning dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Manual_rebuild_warning_dialog&amp;diff=18594"/>
		<updated>2011-04-26T08:21:45Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:The rules tab (Groupbuilder)]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Manual rebuild warning dialog====&lt;br /&gt;
&lt;br /&gt;
When doing a manual rebuild of a group -- i.e. when clicking the &amp;quot;Rebuild&amp;quot; button on the rules tab -- you will be shown a warning dialog. This dialog will first of all tell you that a rebuild cannot be undone. Once it has been carried out there is no way in which you can retrace who the earlier group members were. But it also has another more important purpose, namely to warn you if absolute or percentage targets for children rules do not add up to that of their parent. Below is shown an example of how this warning dialog may look.&lt;br /&gt;
&lt;br /&gt;
[[Image:8072.png|700px|GB581-1]]&lt;br /&gt;
&lt;br /&gt;
In this example there are, as you can see, 4 rules where targets of children do not add up to that of the parent. The inconsistencies that may happen in this regard are of three different types:&lt;br /&gt;
&lt;br /&gt;
* If the percentage targets for children rules of a parent rule do not add up to 100%, then the system assumes that you have made a calculation error. You will be offered the &amp;quot;Adjust&amp;quot; button, which will automatically adjust all existing percentage targets to make sure that they do in fact add up. The automatic adjustment is done by increasing or decreasing the size of percentage targets according to their existing importance. If, for example, existing percentage targets were &amp;quot;10,15,25&amp;quot; then executing an adjustment would result in new targets being &amp;quot;20,30,50&amp;quot;.&lt;br /&gt;
* If the sum of absolute targets of children rules add up to a lower number than that of the parent rule, you will just receive a warning. You may ignore this warning and continue rebuilding or you may cancel the rebuild action to make proper adjustments.&lt;br /&gt;
* If the sum of absolute targets of children rules add up to a higher number than that of the parent rule, then rebuild will be disallowed. The reason that the system disallows this scenario and not the one where the sum is lower, is that having added too many users to a group can be a lot more costly than the opposite scenario. If e.g. you by mistake ask too many people to join a survey, it is very difficult to recall such invitations. If you on the other hand invite too few, you can always just invite some more later on.&lt;br /&gt;
&lt;br /&gt;
In the shown example you will see that the Parent rule called United States is listed twice. A natural result of percentage targets being inconsistent will typically be that the absolute targets will then also be inconsistent. By adjusting the percentage targets in this example the inconsistency for absolute targets will most likely fix itself.&lt;br /&gt;
&lt;br /&gt;
When there are no inconsistencies that disallow rebuild, the rebuild button will be enabled.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 8070.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Button:_Save_to_XML&amp;diff=18593</id>
		<title>Button: Save to XML</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Button:_Save_to_XML&amp;diff=18593"/>
		<updated>2011-04-26T08:20:42Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:The rules tab (Groupbuilder)]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Button: Save to XML====&lt;br /&gt;
&lt;br /&gt;
If you would like to have your rules in an XML format you can use the &#039;Save to XML&#039; button, which will generate a small page for you with the rules of the group. Below is an example of how the rules look after export:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tableintopic&amp;quot; style=&amp;quot;border-collapse: collapse; border: 1px solid #010101&amp;quot; width=&amp;quot;1189&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;1189&amp;quot; |&lt;br /&gt;
Example of XML Exported&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;1189&amp;quot; |&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;scxml group-id=&amp;quot;1012&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;selection-criteria id=&amp;quot;1480&amp;quot; parent-selection-criteria-id=&amp;quot;&amp;quot; sequence-index=&amp;quot;1&amp;quot; target=&amp;quot;-1&amp;quot; include-deleted=&amp;quot;False&amp;quot; include-disabled=&amp;quot;False&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;qualification-variable qualification-id=&amp;quot;1&amp;quot; start-level=&amp;quot;0&amp;quot; end-level=&amp;quot;2&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/selection-criteria&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;selection-criteria id=&amp;quot;1482&amp;quot; parent-selection-criteria-id=&amp;quot;1480&amp;quot; sequence-index=&amp;quot;2&amp;quot; target=&amp;quot;25&amp;quot; include-deleted=&amp;quot;False&amp;quot; include-disabled=&amp;quot;False&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;sample-rule-variable questionnaire-id=&amp;quot;493&amp;quot; include-none-sample=&amp;quot;False&amp;quot;&amp;amp;gt;&amp;amp;lt;sample id=&amp;quot;595&amp;quot; /&amp;amp;gt;&amp;amp;lt;/sample-rule-variable&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/selection-criteria&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;selection-criteria id=&amp;quot;1481&amp;quot; parent-selection-criteria-id=&amp;quot;1480&amp;quot; sequence-index=&amp;quot;3&amp;quot; target=&amp;quot;25&amp;quot; include-deleted=&amp;quot;False&amp;quot; include-disabled=&amp;quot;False&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;qualification-variable qualification-id=&amp;quot;1&amp;quot; start-level=&amp;quot;3&amp;quot; end-level=&amp;quot;5&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/selection-criteria&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;/scxml&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;nowiki&amp;gt;* Target=&amp;quot;-1&amp;quot; means that &#039;all&#039; to be chosen for a rule&#039;s target; project-questionnaire is the same as a questionnaire; sub-question-index=&amp;quot;-1&amp;quot; means that question is NOT a grid&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Back to: [[ Button: Save ]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7948.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Button:_Add_rule_w/group&amp;diff=18591</id>
		<title>Button: Add rule w/group</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Button:_Add_rule_w/group&amp;diff=18591"/>
		<updated>2011-04-26T08:20:04Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:The rules tab (Groupbuilder)]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Button: Add rule w/group====&lt;br /&gt;
&lt;br /&gt;
This button is a short cut to creating a rule including one [[_Variable:_Group_belonging_|group belonging variable]]. It basically just immediately opens the resource search dialog, making it possible to search for and select the group to be used in the variable.&lt;br /&gt;
&lt;br /&gt;
[[Image:7956.png|800px|GB58-4]]&lt;br /&gt;
&lt;br /&gt;
Immediatly after adding a selected group, a new rule will appear with one group belonging variable, as shown below:&lt;br /&gt;
&lt;br /&gt;
[[Image:7959.png|800px|GB58-7]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1654.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Users_tab&amp;diff=18590</id>
		<title>Users tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Users_tab&amp;diff=18590"/>
		<updated>2011-04-26T08:17:57Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Groupmodule]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Users tab===&lt;br /&gt;
&lt;br /&gt;
Groups normally have users related to them. We can always go to the users tab to see what users currently belong to a group. But it is not only here that users can be added. Users can also be added on the rules tab (also known as the group-builder – click here to read more). When we add users from the rules tab we say that they have been added dynamically. This in short means that they have been added using rules and since the data on which these rules were made, the dynamically added users may over time also be removed from the group.&lt;br /&gt;
&lt;br /&gt;
[[Image:6812.png|750px|Group-users-tab57-1]]&lt;br /&gt;
&lt;br /&gt;
When we add users directly from this list (using the Add user button) they are not based on dynamic rules but are seen as static. That means that they will not be affected by a rebuild of the group. You can see in the user list which users were added statically from the static column. If some users were added dynamically and you wish to ensure that they in the future are not dynamically removed again, you can highlight these specific users and click the Convert button. This will change them to static users.&lt;br /&gt;
&lt;br /&gt;
As an alternative to adding users we can also create them in the same process as we add them. The &amp;quot;Create&amp;quot; user button is the green cross whereas the &amp;quot;Add&amp;quot; user button is the green cross with a small red arrow. The create button will open the new user resource dialog where we will then have to insert information for the new users. Once we click save the user will be create as well as added to the user tab of the group-&lt;br /&gt;
&lt;br /&gt;
If you want to remove any user from the group, just highlight him in this list and click remove. This does not delete the user from the database, just remove him from the group in question. The user may in fact be added dynamically again, although you removed him, if the rules are rebuild and the user is seen as still belonging to the group according to the rules.&lt;br /&gt;
&lt;br /&gt;
If you highlight a user in this list and click edit, you will open a user dialogue where you can update the users information.&lt;br /&gt;
&lt;br /&gt;
Finally you have a set protected date button, which makes it possible to make a date until which you want to avoid contacting respondents of interviews again. In group builder you can make a rule that excludes all users who are protected until a certain date. Please [[_The_rules_tab_(Groupbuilder)_|click here]] to learn more on group builder rules.&lt;br /&gt;
&lt;br /&gt;
Notice that if you do not have access to a specific user, then you may not see him in this list even though he is a member of the group. A small notice will be given so you are aware what this discrepancy between number of members in group and list of users you are shown is caused by.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1031.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Users_tab&amp;diff=18588</id>
		<title>Users tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Users_tab&amp;diff=18588"/>
		<updated>2011-04-26T08:14:49Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Group module]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Users tab===&lt;br /&gt;
&lt;br /&gt;
Groups normally have users related to them. We can always go to the users tab to see what users currently belong to a group. But it is not only here that users can be added. Users can also be added on the rules tab (also known as the group-builder – click here to read more). When we add users from the rules tab we say that they have been added dynamically. This in short means that they have been added using rules and since the data on which these rules were made, the dynamically added users may over time also be removed from the group.&lt;br /&gt;
&lt;br /&gt;
[[Image:6812.png|750px|Group-users-tab57-1]]&lt;br /&gt;
&lt;br /&gt;
When we add users directly from this list (using the Add user button) they are not based on dynamic rules but are seen as static. That means that they will not be affected by a rebuild of the group. You can see in the user list which users were added statically from the static column. If some users were added dynamically and you wish to ensure that they in the future are not dynamically removed again, you can highlight these specific users and click the Convert button. This will change them to static users.&lt;br /&gt;
&lt;br /&gt;
As an alternative to adding users we can also create them in the same process as we add them. The &amp;quot;Create&amp;quot; user button is the green cross whereas the &amp;quot;Add&amp;quot; user button is the green cross with a small red arrow. The create button will open the new user resource dialog where we will then have to insert information for the new users. Once we click save the user will be create as well as added to the user tab of the group-&lt;br /&gt;
&lt;br /&gt;
If you want to remove any user from the group, just highlight him in this list and click remove. This does not delete the user from the database, just remove him from the group in question. The user may in fact be added dynamically again, although you removed him, if the rules are rebuild and the user is seen as still belonging to the group according to the rules.&lt;br /&gt;
&lt;br /&gt;
If you highlight a user in this list and click edit, you will open a user dialogue where you can update the users information.&lt;br /&gt;
&lt;br /&gt;
Finally you have a set protected date button, which makes it possible to make a date until which you want to avoid contacting respondents of interviews again. In group builder you can make a rule that excludes all users who are protected until a certain date. Please [[_The_rules_tab_(Groupbuilder)_|click here]] to learn more on group builder rules.&lt;br /&gt;
&lt;br /&gt;
Notice that if you do not have access to a specific user, then you may not see him in this list even though he is a member of the group. A small notice will be given so you are aware what this discrepancy between number of members in group and list of users you are shown is caused by.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 1031.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Merge_duplicate_users&amp;diff=18586</id>
		<title>Merge duplicate users</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Merge_duplicate_users&amp;diff=18586"/>
		<updated>2011-04-26T08:14:08Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User module]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Merge duplicate users===&lt;br /&gt;
&lt;br /&gt;
In order to merge duplicate users that may exist in the system Catglobe offers the merge user feature, which can be accessed via&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Tools -&amp;amp;gt; Administration -&amp;amp;gt; HR -&amp;amp;gt; Duplicate user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reason for wanting to merge two users are many, but generally it can have been caused by errors or users who have signed up to be respondent more than once. In both cases we need to keep important information and move it to a new user and delete the rest.&lt;br /&gt;
&lt;br /&gt;
In order to do this we operate with some definitions important for the understanding of merging users.&lt;br /&gt;
&lt;br /&gt;
There are two user accounts that will be used for the merge process.&#039;&#039;&#039;Deleted User:&#039;&#039;&#039; the user that will be destroyed after being merged.&#039;&#039;&#039;Main User:&#039;&#039;&#039; the user whose values are chosen for the Merged User by default. This is the user account that is kept. After the merge-process is done, we can call it &#039;&#039;&#039;Merged User&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Since we normally will have no easy way of finding duplicate users, Catglobe offers a feature to do this. The page you will initially see is the duplicate list. This list identifies all the possible duplicates that exist on the database and list them side by side as shown below:&lt;br /&gt;
&lt;br /&gt;
[[Image:4311.png|800px|MergeUser5-4-1]]You may not immediately see all the duplicate users in your system since this page uses a scheduled approach to finding duplicates, since the query is very heavy and cannot be run every time opening this page.&lt;br /&gt;
&lt;br /&gt;
The list you see will feature information on the two users that are found to be possible duplicates. Besides this there is a “certainty” column which shows the percentage of similarity between the two users.&lt;br /&gt;
&lt;br /&gt;
Finally there is the status column showing three possible values:&lt;br /&gt;
&lt;br /&gt;
* Open: no action has been taken on this duplicate.&lt;br /&gt;
* Merged: the two users of this duplicate have been merged.&lt;br /&gt;
* Ignored: this duplicate has been marked as “Ignored”.&lt;br /&gt;
&lt;br /&gt;
A number of actions are possible from this page:&lt;br /&gt;
&lt;br /&gt;
* Ignore: highlighting and clicking ignore on a pair of users will ensure that they are never again seen as duplicates when we search for potential duplicates. Some duplicates can be caused by similar names and once we find that they are really different people we will never want them to appear in the list again.&lt;br /&gt;
* Merge: When highlighting a record and clicking the merge field we will then be introduced to the merge user dialogue, which is explained in more detail below.&lt;br /&gt;
* Search: Makes it possible to limit identified duplicates to only include users where both duplicates are members of a certain group.&lt;br /&gt;
* Recalculate duplicates: This is a dialogue for managing the duplicate search schedule and rules, which will be explained later in this help file.&lt;br /&gt;
* Manual merge (found under tools): A tool for manually choosing the users to merge is available through this button. Explained in detail below.&lt;br /&gt;
* Ignored data list: A list that identifies names or data that we want to exclude from being identified as duplicates. Explained in detail below.&lt;br /&gt;
&lt;br /&gt;
===Merge user===&lt;br /&gt;
&lt;br /&gt;
Once we choose to merge a pair of users we will be presented with the following dialog.&lt;br /&gt;
&lt;br /&gt;
[[Image:4312.png|800px|MergeUser5-4-2]]&lt;br /&gt;
&lt;br /&gt;
The screen contains a button to initiate merge of the two users, a reset button to undo any merge settings done in the dialog, and a button to close the dialog without taking any actions.&lt;br /&gt;
&lt;br /&gt;
A normal process to merge two users is to go through all the tabs and choose which information we want to keep. The chosen information will be displayed in the main tab area, where you can make some final adjustments if needed. Once you are satisfied with&lt;br /&gt;
&lt;br /&gt;
How the final main user will look you click merge. The following detailed guide will lead you through merging users.&lt;br /&gt;
&lt;br /&gt;
===Step 1: Choose main user===&lt;br /&gt;
&lt;br /&gt;
* Select one of the two option buttons to choose the Main User. Note that we can’t select a user account that has been deleted as a Main User. If a user has already been deleted, the corresponding radio button will be disabled.&lt;br /&gt;
* After the Main User has been chosen, all other controls are enabled.&lt;br /&gt;
* When one of the two users is selected as Main User, the Main User will get all values from the selected one, except for Address and Phone numbers.&lt;br /&gt;
* If both users have an address specified, the Main User will get the address values from the selected user. If only one of the two users has Address, the Main User will get the address values from that user. The same logic applies to phone numbers.&lt;br /&gt;
* By default, the “disabled” setting of the Main User is FALSE and “access expiration” is null.&lt;br /&gt;
* Points will always be the sum of all points of both users.&lt;br /&gt;
&lt;br /&gt;
===Step 2: Choose value for each attribute===&lt;br /&gt;
&lt;br /&gt;
Initially the value in the main user will be set to the chosen main user, but it is possibly to change this later either by manually changing the main user or by deciding on the other user’s radio button.&lt;br /&gt;
&lt;br /&gt;
[[Image:4314.png|800px|MergeUser5-4-3]]&lt;br /&gt;
&lt;br /&gt;
* After all the values are decided, click the “Merge” button to start the merging process.&lt;br /&gt;
* After the merge process is done, the dialog will close and you will be returned to the duplicate user list.&lt;br /&gt;
&lt;br /&gt;
===Set recalculate duplicates dialog===&lt;br /&gt;
&lt;br /&gt;
This dialog makes it possible to set criteria for how often the find duplicate query is run and the criteria for what users it finds. The dialogue looks like below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5301.png|500px|DuplicateUser5-5-1]]&lt;br /&gt;
&lt;br /&gt;
If you want to limit the search being made for users in a certain group you can select it here. This can e.g. make sure that you only search on panel members, since you do actually allow employees to have more than one user account.&lt;br /&gt;
&lt;br /&gt;
You can further specify when the query will start and how often it will be run (interval in days). There are three options; Start now, start later and recurring. Each of these have different settings to specify.&lt;br /&gt;
&lt;br /&gt;
If you want disabled users to also be compared for duplicates you can check the “Include disabled users?” check box. Finally, you can specify the criteria that will be compared between users to see if they are duplicates.  Save and wait to see the result of your settings.&lt;br /&gt;
&lt;br /&gt;
A number of other factors may also influence the business logic of how duplicates are found; these are only for administrators to set up via the web configuration file and you can read more about them by clicking here.&lt;br /&gt;
&lt;br /&gt;
===Manual merge===&lt;br /&gt;
&lt;br /&gt;
When you know of two users that need to be merged and these do not necessarily appear in the duplicate list, you can use the manual merge feature,&lt;br /&gt;
&lt;br /&gt;
[[Image:4316.png|450px|MergeUser5-4-5]] It basically gives you the option to merge two users by searching for their user using the small search dialog or by choosing their ID and clicking the related “Merge” details button. This will open the merge user dialog.&lt;br /&gt;
&lt;br /&gt;
===Ignored data list===&lt;br /&gt;
&lt;br /&gt;
This page displays the list of full names/addresses/phone numbers/e-mails/passwords that are ignored during the search for duplicate users. Please note that these ignored data are different from ignored duplicates. The values that are placed on this list are dependent on a setting in the web configuration, which you can read more about by clicking here. Basically it is a setting specifying the duplicate search to ignore any duplicates that exist in a large number. The reason for such a feature is that we have certain combinations (like empty full name or full names that are all “Respondent Respondent” due to import choices) and we do not wish to include these in our duplicate list. There is no manual choice of what these are; they are purely based on amount in existence. [[Image:4317.png|1094px|MergeUser5-4-6]]&lt;br /&gt;
&lt;br /&gt;
There are 6 buttons on the tool bar:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Full name: &#039;&#039;&#039;list of the top 30 ignored full names.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Password:&#039;&#039;&#039; list of the top 30 ignored passwords.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Phone number:&#039;&#039;&#039; list of the top 30 ignored phone numbers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail: &#039;&#039;&#039;list of the top 30 ignored e-mails.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Address:&#039;&#039;&#039; list of the top 30 ignored addresses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close: &#039;&#039;&#039;Will return you to the duplicate list page.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 900.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_points_tab&amp;diff=18584</id>
		<title>The points tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_points_tab&amp;diff=18584"/>
		<updated>2011-04-26T08:11:47Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User module]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The points tab===&lt;br /&gt;
&lt;br /&gt;
Points are normally something users get from finishing a questionnaire or use by buying products from the shopping page. From the points tab of any user it is possible to manually insert or withdraw points. This is also the place to get an overall look at what point transactions have been carried out for the user.&lt;br /&gt;
&lt;br /&gt;
[[Image:1258.png|800px|Points tab of a user]]&lt;br /&gt;
&lt;br /&gt;
In order to learn more about points please read the files on the web shop module.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 899.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_qualification_tab&amp;diff=18583</id>
		<title>The qualification tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_qualification_tab&amp;diff=18583"/>
		<updated>2011-04-26T08:11:01Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User module]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The qualification tab===&lt;br /&gt;
&lt;br /&gt;
The qualification tab allows us to specify capability levels the user has for a number of qualification types.&lt;br /&gt;
&lt;br /&gt;
[[Image:1362.jpg|848px|The qualification tab 1]]&lt;br /&gt;
&lt;br /&gt;
The drop down list states values where the lowest number specifies the least capability for the given qualification, and the highest the best capability. The ranges are specified in the qualification administration page, which you can read more about in the Work Planning files. Remember that you in order to save your changes need to click the save button placed directly above the drop down list. Saving the entire user dialogue will not actually save changes on the qualification tab.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 898.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_membership_tab&amp;diff=18582</id>
		<title>The membership tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_membership_tab&amp;diff=18582"/>
		<updated>2011-04-26T08:10:25Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User module]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The membership tab===&lt;br /&gt;
&lt;br /&gt;
This tab has two sub tabs.&lt;br /&gt;
&lt;br /&gt;
The first tab shows you all the groups at which you are specified to be a member.&lt;br /&gt;
&lt;br /&gt;
[[Image:5800.png|726px|Membership56-1]]&lt;br /&gt;
&lt;br /&gt;
It is here also possible to add users as members of any group in the system. Any user that is added to a group using this tab is added as a static user.&lt;br /&gt;
&lt;br /&gt;
The second tab shows the roles that the user normally has on projects or assignments. The specification of such roles are quite important to the logic for registration of time.&lt;br /&gt;
&lt;br /&gt;
[[Image:5801.png|718px|Memberships56-2]]&lt;br /&gt;
&lt;br /&gt;
To learn more on the logic for registering the roles that a user normally takes on in the company please [[_Role_|click here]].&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 897.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Resources_and_paths&amp;diff=18581</id>
		<title>Resources and paths</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Resources_and_paths&amp;diff=18581"/>
		<updated>2011-04-26T08:08:14Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Managing resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Resources and paths==&lt;br /&gt;
&lt;br /&gt;
In CATGLOBE there are many types of resources and each of them has the option of being the child of another resource. Some of the most notable resource types are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Projects&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Folders&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Tasks&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Questionnaires&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Reports&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Attachments&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Images&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Groups&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When we talk of this child / parent relationship we often talk of the path to a resource. A typical path would look something like below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;//System/Folder of Projects in 2003/Project for Nestle/Task: Send Invoice/Scanned Image of Invoice&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The “paths” do not always in themselves reveal what types of resources that the parents or parents of parents are – but e.g. in the above we can guess it from the name. There is in the above an image attached to a task. The task is part of the project “Nestle”. This project resides in the folder “Folder of Projects in 2003”. The folder is linked to a resource called “System”. System will always be the lowest level of a path (the root), since this is the resource where resources that are seen as primary entrances to other resources will be attached. You could compare it with the meaning of the “hard drive” or “C:” drive in Windows. All other applications and information are somehow children of the hard drive.&lt;br /&gt;
&lt;br /&gt;
Many of the resources have some shared extensions that can be used in relation to all the resources. Other resources are by system default limited, since the developers do not expect it to be used by our clients. An example is images. Images can be related to many other resources, but there are no resources that can be related to Images. It would rarely make sense to have e.g. a report as a child of an image.&lt;br /&gt;
&lt;br /&gt;
Another interesting case is that the path system is hierarchical and thus only specifies the location of the resources in the file system of Catglobe and not the relationship between all resources. You may have thought that a user was a child resource of a group, but it is not so. Users can be member of many groups and restricting them to belong to one group through the hierarchy of resources would not make sense.&lt;br /&gt;
&lt;br /&gt;
Some resources are very limited in regards to the parents they can belong to. For example user resources will always be children of the system resource. Other resource types have almost endless setup options. It is not impossible in CATGLOBE to have a project that is a child of a folder that again is a child of another project.&lt;br /&gt;
&lt;br /&gt;
Common for all resource names is that they must be at least 1 and at most 155 characters long and not contain a back-slash.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 863.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Folders&amp;diff=18580</id>
		<title>Folders</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Folders&amp;diff=18580"/>
		<updated>2011-04-26T08:07:32Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Managing resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Folders==&lt;br /&gt;
&lt;br /&gt;
Folders are the most used resource for administering security and organizational structure in the path system. Folders are a well known concept from most operating systems, where folders are generally the only resource that can define the path structure. In Catglobe we have gone beyond this limitation and folders can now also be children of other resource types.&lt;br /&gt;
&lt;br /&gt;
Since folders are the most basic type of resource, just containing information on name, path and access rights, it is the perfect foundation for creating new customer defined resource types. This can be done using resource templates with properties and parameters needed for defining what a new resource types should contain. To read more on resource templates please [[_Resource_templates_|click here]].&lt;br /&gt;
&lt;br /&gt;
To go to the folders list navigate through Tools -&amp;amp;gt; Projects and Folders -&amp;amp;gt; Folders and choose any of the folder resource template types in the submenu. This will bring up the folder resource list.&lt;br /&gt;
&lt;br /&gt;
[[Image:7068.png|800px|Folder57-1]]&lt;br /&gt;
&lt;br /&gt;
From here it is possible to add, edit, delete and give access to folder resources. To read more on the standard features in resource lists please [[_Understanding_resource_lists_|click here]].&lt;br /&gt;
&lt;br /&gt;
When adding and editing a folder you will open the folder resource dialog. To learn more on this dialog please [[_Understanding_resource_dialogues_|click here]].&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7065.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Parameters&amp;diff=18579</id>
		<title>Parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Parameters&amp;diff=18579"/>
		<updated>2011-04-26T08:06:54Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Managing resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The parameters feature helps store additional data about a resource that are not available in the normal interfaces. The following resources can have parameters applied:&lt;br /&gt;
&lt;br /&gt;
* Monitor&lt;br /&gt;
* Folder&lt;br /&gt;
* Group&lt;br /&gt;
* Paper questionnaire&lt;br /&gt;
* Products&lt;br /&gt;
* Project&lt;br /&gt;
* Questionnaire&lt;br /&gt;
* Report&lt;br /&gt;
* Task&lt;br /&gt;
* User&lt;br /&gt;
&lt;br /&gt;
In order to apply parameters to resources you need to take the following steps:&lt;br /&gt;
&lt;br /&gt;
From the “tools” menu in the lowest left corner of your screen, select &#039;&#039;Administration -&amp;amp;gt; System -&amp;amp;gt; Parameters&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You will be presented with an interface similar to the one shown in the image below:&lt;br /&gt;
&lt;br /&gt;
[[Image:1338.jpg|784px|Categorization 1]]&lt;br /&gt;
&lt;br /&gt;
This interface shows all the parameters which are available in your system as you can see in the first column. All these parameters are of level 1. In each parameter, there might be options. The second column indicates the resource type of each parameter.&lt;br /&gt;
&lt;br /&gt;
* If you want to add a new parameter you should click the “Add” button.&lt;br /&gt;
* If you want to edit a parameter you should highlight it in the list and click the “Edit” button.&lt;br /&gt;
* To open a parameter, click the cross button at the beginning of the record, you will be presented with the options which are designed for the parameter.&lt;br /&gt;
* To change the order of the options, you can use the “up” or “down” arrows.&lt;br /&gt;
* To delete a parameter, highlight a record in the list and click the “Delete” button. There are no restrictions on deleting parameters.&lt;br /&gt;
&lt;br /&gt;
When you would like to add or edit a Parameter, you will be presented with a dialogue which looks similar to the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:1339.jpg|631px|Categorization 2]]&lt;br /&gt;
&lt;br /&gt;
We will first describe the choice of language. Since a parameter can be seen by users speaking many different languages we will also need the flexibility to show the parameters in different languages. If users log in that are stated to have a different language than the ones for which you have specified values, they will be shown the default language value. The default value is chosen by clicking the “default” check box on the right.&lt;br /&gt;
&lt;br /&gt;
In this dialogue you must give your Parameter a name in a specific language in the “value” field. Then you must select a resource type in the drop down to which the parameter belongs. Finally, if you want that at least one option of the parameter must be selected, you should can set the parameter to “Required parameter” by checking the check box on the left.&lt;br /&gt;
&lt;br /&gt;
You can also add a new sub-parameter to a parameter by opening it, highlighting a record of the immediate level, then clicking the “add” button. You will be presented with a similar image as above, but the resource type is set the same as the parameter of the immediate level.&lt;br /&gt;
&lt;br /&gt;
When you would like to add or edit an option to a parameter or sub-parameter, you will be presented with the following dialogue:&lt;br /&gt;
&lt;br /&gt;
[[Image:1340.jpg|591px|Categorization 3]]&lt;br /&gt;
&lt;br /&gt;
Similarly, you can choose the language and give the option a unique name. If it is an option of a sub-parameter, you need to select its parent option in the drop down.&lt;br /&gt;
&lt;br /&gt;
When you would like to create a new record for a resource type, you will be presented with a dialog which contains the parameter(s) and sub-parameter(s) you have added. For example, when you create a new user, you can select one option for the parameter “Sex” as presented in the image below:&lt;br /&gt;
&lt;br /&gt;
[[Image:1341.jpg|436px|Categorization 4]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 895.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Teams_and_roles&amp;diff=18578</id>
		<title>Teams and roles</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Teams_and_roles&amp;diff=18578"/>
		<updated>2011-04-26T08:06:21Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Managing resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Teams and roles==&lt;br /&gt;
&lt;br /&gt;
Most resources in the system can have teams related to them. It is up to the users of Catglobe whether or not they believe it is important for them to relate a team to any specific resource type.&lt;br /&gt;
&lt;br /&gt;
On all resources that can have teams attached you will see a team tab in their resource dialogue. From this tab you can add members to the main team or add new team types to the resource. In order to understand the difference between “main team” and “other team types” we will give you some examples:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Company Resource&#039;&#039;&#039;   &#039;&#039;&#039;Main Team:&#039;&#039;&#039; Our companies Key Account Management team for a client company   &#039;&#039;&#039;Client Team:&#039;&#039;&#039; The main members of the client team that we take contact with&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Resource&#039;&#039;&#039;   &#039;&#039;&#039;Main Team:&#039;&#039;&#039; The employees of our company who work on this project   &#039;&#039;&#039;Supplier Team:&#039;&#039;&#039; A list of the people from a supplier that works with us on this project   &#039;&#039;&#039;Client Team:&#039;&#039;&#039; The main members of the client team that we take contact with&lt;br /&gt;
&lt;br /&gt;
So generally it depends on the resource type what kind of other teams that we want besides the main team. In order to specify team types we would like will go to the Team Type setup page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tools -&amp;amp;gt; Administration -&amp;amp;gt; HR -&amp;amp;gt; Team Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:3249.png|800px|Team type]]&lt;br /&gt;
&lt;br /&gt;
You do not need to add the “main team” to this list since it will always exist by default. For other team types you can add them by giving them a name and whether the team type in question can be identified as a group. Let us presume that you want a team type called “Client team” or “Customer team”. If all your client companies are registered as group resources, then the team tab will allow you to add a team in two steps. First, choose the group that is the client. Secondly, choose the employees from that group who are your contact points for this project.&lt;br /&gt;
&lt;br /&gt;
Let us look at the team tab to see how this works.&lt;br /&gt;
&lt;br /&gt;
First you can choose to add all the teams that are relevant for a specific project. Let us imagine that we have a project where we want a main team and a customer team. We will then first add the customer team by clicking the add button on the left and choosing ‘Customer Team’.&lt;br /&gt;
&lt;br /&gt;
[[Image:3246.png|800px|Team53_1]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the small search control where you can search for the group that you want as customer team.&lt;br /&gt;
&lt;br /&gt;
[[Image:3247.png|800px|Team53_2]]&lt;br /&gt;
&lt;br /&gt;
Once you have selected the team a new section will appear on the page.&lt;br /&gt;
&lt;br /&gt;
[[Image:3248.png|800px|Team53_3]]&lt;br /&gt;
&lt;br /&gt;
You now have two sections. The top one, where you can add members of your own company to the project team, and the bottom one, where you can add employees from the client company to the customer team.&lt;br /&gt;
&lt;br /&gt;
When adding members to the project team (Our team) you can click the [...] buttons to search for the user you want to insert into the team member column. You can also add the first letters of the team members name and if it exists in your list of favorite users it will be proposed for insert. The role field is a combined drop down of existing role options as well as can be used as a free text area where you can specify what that person does in relation to the project. Notice that the available roles will depend on the resource template used by the resource of the team tab. [[_Resource_templates_|Click here]] to read more on setting up applicable roles for resource templates.&lt;br /&gt;
&lt;br /&gt;
The final column (Man-hours) is the budgeted man-hours for the project of each user/role combination. These values can be summed up to specify the entire time budget for the resource the team is added to. [[_Time_management_|Click here]] to learn more on time budgets.&lt;br /&gt;
&lt;br /&gt;
If a user takes on more roles of if a role exists more than once for a team it is beneficial to add new members using the copy button. It will copy both team member and role of a row and you thus only need to change one of these afterwards.&lt;br /&gt;
&lt;br /&gt;
It is also possible to add roles without specifying the user who will take on that role yet. This is beneficial if you know that a certain role is needed for a project but you are still unsure of who will be responsible.&lt;br /&gt;
&lt;br /&gt;
When adding members to the customer team, you will be presented with a drop down in the team member field where you can choose among any employee registered at the external team (members of the group/company you chose for the external team).&lt;br /&gt;
&lt;br /&gt;
In order to set up some predefined roles for team types you must open the following page: &#039;&#039;Tools -&amp;amp;gt; Administration -&amp;amp;gt; HR -&amp;amp;gt; Roles. &#039;&#039;Here you will set the existing list of roles.&lt;br /&gt;
&lt;br /&gt;
[[Image:7737.png|800px|Role58-1]]&lt;br /&gt;
&lt;br /&gt;
The name of the role must be specified in at least the default language! If a role is the one that must be given to users who have their time registered via the fieldwork manager (typically Interviewers), then a checkbox for this exist to the right of the team type drop down.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 894.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Understanding_the_explorer_field_and_the_light_resource_search_dialog&amp;diff=18577</id>
		<title>Understanding the explorer field and the light resource search dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Understanding_the_explorer_field_and_the_light_resource_search_dialog&amp;diff=18577"/>
		<updated>2011-04-26T08:05:49Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Managing resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
==Understanding the explorer field and the light resource search dialog==&lt;br /&gt;
&lt;br /&gt;
There are many pages, lists and dialogs in which we need to choose a resource. Typical places are adding a user or group to the access tab, specifying the user who is responsible for a task, choosing the parent (path) of a new resource or adding users to the list of people to receive an e-mail.&lt;br /&gt;
&lt;br /&gt;
One of the most common fields you will see in the system for choosing a resource is the explorer field shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5773.png|800px|LRD56-1]]&lt;br /&gt;
&lt;br /&gt;
The buttons available for any specific explorer field may vary from place to place, but 4 of the most common buttons for the explorer control are the ones you see in the image. We will explain each of these in turn below. Three of them just need short explanations whereas the &amp;quot;Search for resource dialog&amp;quot; is explained in more detail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The &amp;quot;Set default resource&amp;quot; button: &#039;&#039;&#039;There may be fields in the system where you more or less always want to point to the same resource. You can therefore some places choose to always have a default value when creating a new object in that location. To create a personal default in resource fields just click the small Tablet button next to the explorer field.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The &amp;quot;Create resource&amp;quot; button:&#039;&#039;&#039; Sometimes the existing resource may not be the ones you need for the explorer field. Then you can click this button to create a whole new resource. When you save the new resource it will automatically be inserted into the explorer field.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The &amp;quot;Open resource&amp;quot; button:&#039;&#039;&#039; Once you have inserted a resource into the explorer field, you may want to edit it or investigate it further. This can be done by clicking the open resource button.&lt;br /&gt;
&lt;br /&gt;
===Light resource search dialog===&lt;br /&gt;
&lt;br /&gt;
This is probably the most used dialog in the system. It is the dialog that makes it possible for you to find and select the resource(s) you need to add to an explorer field as well as other lists and fields in the system. The dialog consists of two main areas as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5774.png|800px|LSD56-2]]&lt;br /&gt;
&lt;br /&gt;
Area 1 is the search criteria. On the left you have the available resource type and resource template type choices that exist. To make the search faster choose only those that cover the resources you need. On area 1&#039;s right side are the search criteria that apply to the resource types you choose on the left side. In the above example the user has chosen to search for only users, thus the available search criteria will be user name, first-, middle- and last name. If you had chosen to search for both users and groups the only common search criteria would have been &amp;quot;name&amp;quot; (used for user name as well as group name).&lt;br /&gt;
&lt;br /&gt;
Once you are satisfied with your search criteria you must click the &amp;quot;Search&amp;quot; button in area 2. This will start a search for the resources fulfilling your stated search criteria and show these in the area 2 list. You can now choose to highlight the resource that you were looking for. Notice that the option of multiple highlights depends on whether you are adding resources to a field or a list. If you are adding to a field that accepts just one entry, then you will be limited to only highlight one resource.&lt;br /&gt;
&lt;br /&gt;
The availability of the button &amp;quot;Add&amp;quot; will also depend on whether you are allowed to add one or more resources in the interface where the dialog was opened from - the &amp;quot;Add&amp;quot; button is hidden if you can just add one. If you on the other hand are adding multiple resources in the current session you can use the add button to insert the chosen resources in the background and then continue searching for other resources you need to add. When choosing the last resource you want to add you can click the &amp;quot;Add and close&amp;quot; button which will close down the dialog as well as insert currently highlighted resource(s).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Add as favorite&amp;quot; button will add a resource to your list of favorites. Please [[_Favorites_|click here]] to understand the use of favorites, which is a useful feature in relation to the explorer field.&lt;br /&gt;
&lt;br /&gt;
From version 5.6 we have added a number of keyboard shortcuts which should make the light resource search control quicker for experienced users. These are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tableintopic&amp;quot; style=&amp;quot;border-collapse: collapse; border: 1px solid #010101&amp;quot; width=&amp;quot;605&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Shortcut key&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Action&#039;&#039;&#039;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
TAB&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Move forward between buttons and list records in the control&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
SHIFT + TAB&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Move backwards between buttons in the dialog&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
CTRL + Q&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Click the close button&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
CTRL + ALT + PLUS SIGN&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Maximize when the dialog is restored, or Restore when the dialog is minimized&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
CTRL + ALT + MINUS SIGN&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Restore when the dialog is maximized, or Minimize when the dialog is restored&lt;br /&gt;
|- align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;227&amp;quot; |&lt;br /&gt;
ENTER&lt;br /&gt;
| style=&amp;quot;border: 1px solid #010101&amp;quot; width=&amp;quot;378&amp;quot; |&lt;br /&gt;
Start searching when the focus is on an input control to specify search criteria, or Add &amp;amp;amp; close the current resource when the focus is on the search result list&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 5772.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_sub-resource_tab&amp;diff=18576</id>
		<title>The sub-resource tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_sub-resource_tab&amp;diff=18576"/>
		<updated>2011-04-26T08:03:33Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource dialogues]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The sub-resource tab===&lt;br /&gt;
&lt;br /&gt;
The sub-resource tab shows us all the resources that are children of the resource we are looking at.&lt;br /&gt;
&lt;br /&gt;
[[Image:1245.png|800px|The sub resource tab on a resource dialogue]]&lt;br /&gt;
&lt;br /&gt;
As in any other resource list it is also here possible to add more resources (where the current resource will be the parent), to delete resources and to set access to resources.&lt;br /&gt;
&lt;br /&gt;
The types of resources you can find in this list are:&lt;br /&gt;
&lt;br /&gt;
* [[_Projects_|projects]]&lt;br /&gt;
* [[_Reports_|folders]]&lt;br /&gt;
* [[_Reports_|reports]]&lt;br /&gt;
* [[_Reports_-_Templates_-_Filters_-_Constants_|report templates]]&lt;br /&gt;
* [[_Tabulation_|tabulation scripts]]&lt;br /&gt;
* [[_Questionnaire_module_|questionnaires]]&lt;br /&gt;
* [[_Questionnaire_template_editor_|questionnaire templates]]&lt;br /&gt;
* [[_Tasks_|tasks]]&lt;br /&gt;
* [[_Task_sets_|task sets]]&lt;br /&gt;
* [[_Work_flows_using_CG_Script_|work flows]]&lt;br /&gt;
* [[_Diagrams_|diagrams]]&lt;br /&gt;
* [[_Dashboards_|dashboards]]&lt;br /&gt;
&lt;br /&gt;
To know more about each of these resource types please click on them to reach the relevant help files.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 886.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_image_tab&amp;diff=18575</id>
		<title>The image tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_image_tab&amp;diff=18575"/>
		<updated>2011-04-26T08:02:48Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource dialogues]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The image tab===&lt;br /&gt;
&lt;br /&gt;
Another thing that can belong to the resource is images. The image tab allows us to add and delete images. Editing images means that we can change the name or choose another image to belong to the record in the list. Images can belong to almost all types of resources and access to them is always inherited from the parent resource. The slide show viewer is similar to the one known from Windows. It allows us to see the images in original size and scroll through them manually or automatically.&lt;br /&gt;
&lt;br /&gt;
[[Image:3445.png|800px|Images tab]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 888.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_attachment_tab&amp;diff=18574</id>
		<title>The attachment tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_attachment_tab&amp;diff=18574"/>
		<updated>2011-04-26T08:02:04Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource dialogues]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The attachment tab===&lt;br /&gt;
&lt;br /&gt;
Another thing that can belong to the resource is attachments. The attachment tab allows us to add, delete and download attachments. Editing attachments means that we can change the name or choose another attachment to belong to the record in the list. Attachments can belong to almost all types of resources and access to them is always inherited from the parent resource.&lt;br /&gt;
&lt;br /&gt;
[[Image:5268.png|800px|Image1]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 887.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=The_access_tab&amp;diff=18573</id>
		<title>The access tab</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=The_access_tab&amp;diff=18573"/>
		<updated>2011-04-26T08:01:09Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource dialogues]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===The access tab===&lt;br /&gt;
&lt;br /&gt;
In order to give direct access to any resource we can go to the access tab of that resource. Here we will be presented with a list of users or groups that have direct access to this resource in the top, and a list of all users that have inherited AND direct access to the resource in the bottom part.&lt;br /&gt;
&lt;br /&gt;
[[Image:1244.png|800px|Resource access page]]&lt;br /&gt;
&lt;br /&gt;
By using the “Add” or “Remove” buttons we can edit the list of user and groups that have direct access to the resource. We cannot edit the inherited access list since this depends on access tabs on other resources.&lt;br /&gt;
&lt;br /&gt;
If we add a user or group to have access to a given resource he/they will initially be set as an observer. If we want to “upgrade” his/their access to manager or administrator we can click on the field where it says observer and a drop down will appear that makes it possible for us to change access rights for him/them.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 885.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Print_or_send_resource_information&amp;diff=18572</id>
		<title>Print or send resource information</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Print_or_send_resource_information&amp;diff=18572"/>
		<updated>2011-04-26T07:59:56Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource lists]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Print or send resource information===&lt;br /&gt;
&lt;br /&gt;
There are two features under the tools drop down on the resource list, that basically ensure the same thing. Namely that it is easy to take information from a resource and export it to external formats. These two features are the &amp;quot;Print resource information&amp;quot; and &amp;quot;Send resource information&amp;quot; options.&lt;br /&gt;
&lt;br /&gt;
[[Image:6810.png|800px|PrintSend57-1]]&lt;br /&gt;
&lt;br /&gt;
To use this feature, simply highlight one or more resources in a resource list, and then use one of the two buttons. Once you clicked the button a small dialog will appear where you can choose which information you want to include in the printed or sent page. As default the &amp;quot;Hide empty categories/fields&amp;quot; check box is checked, meaning that if any of the categories &#039;&#039;journal, properties, parameters, events or teams&#039;&#039; do not have any data related to them then these categories will not even be shown to be empty; simply just excluded from the final format. You can also choose to specifically exclude categories by using the other check boxes that are offered.&lt;br /&gt;
&lt;br /&gt;
When using the print resource information button, you will export all the information to a simple HTML page, which you can then easily print out on paper. This is useful for bringing the information of e.g. a project or task to a meeting, without having to open the Catglobe system.&lt;br /&gt;
&lt;br /&gt;
Alternatively you may also want to send the information from one or more resources to an e-mail, e.g. an external client you wish to inform of the current status of this resource. When using the send information feature you will open the e-mail editor with all the resource information pasted into the subject and main text area as shown in the example below. From here you simply fill in the remaining information and click the send button.&lt;br /&gt;
&lt;br /&gt;
[[Image:6811.png|800px|Mail57-1]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 5388.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Mass_update_of_resources&amp;diff=18570</id>
		<title>Mass update of resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Mass_update_of_resources&amp;diff=18570"/>
		<updated>2011-04-26T07:59:03Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource lists]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Mass update of resources===&lt;br /&gt;
&lt;br /&gt;
On all resource lists you will find a button called “Mass update”. If there are some specific resources you want to mass update then highlight these and click the button. If you want to update all the records that was returned from your  latest search on the specific resource list you should not highlight any records. It will then understand that you want to update the entire list of resources.&lt;br /&gt;
&lt;br /&gt;
When clicking the button you will be presented with a dialogue similar to below:&lt;br /&gt;
&lt;br /&gt;
[[Image:5299.png|800px|Image1]]&lt;br /&gt;
&lt;br /&gt;
On the left side you have the list of core information that you can change. When you click one of these information a field will appear on the right side in which you can choose what values you want the chosen records updated to.&lt;br /&gt;
&lt;br /&gt;
The values that can be updated using this dialogue differs from resource to resource, so to learn more about any given field please investigate the help files on that specific resource.&lt;br /&gt;
&lt;br /&gt;
Be aware that choosing a value, e.g. time registration, and then not clicking it, will update the database to false for time registration for all selected resources of the update. Not filling in fields or not checking them also constitutes an update, so if you do not want to update a specific field, please do not choose it in the left side check boxes.&lt;br /&gt;
&lt;br /&gt;
Depending on whether you have highlighted any records in the resource list you will be chosen one or two possible update types. You must be very careful which one you choose. If you choose “Update for selected resources” you will only update values relating to highlighted resources in the resource list you have in the background. If you on the other hand choose “Update from searching” you will update the entire list of resources that was the result of your latest search on the resource list in the background. This may cause you to update 100s or 1000s of records where you only intended to update two records that you highlighted.&lt;br /&gt;
&lt;br /&gt;
One of the noticeable possibilities is the chance to update path of resources. Notice that updating path of resources requires you to have administrator access to that resource. Also notice that you cannot update any resource to have as it&#039;s parent one of it&#039;s child resources.&lt;br /&gt;
&lt;br /&gt;
Another thing is that you are allowed to update the used resource templates of selected resources. This feature is a bit more tricky than the rest, so it is explained in detail below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5300.png|800px|Resourcetemplate5-5-2]]&lt;br /&gt;
&lt;br /&gt;
When we change the resource template for any resources that are currently using a different resource template, then all their earlier properties will be lost. If we on the other hand change a resource from using one resource template to the same one, then it is only the property changes that will be affected by the mass update. In this case, if a property already has a value it will not be overwritten, unless the use checks the &amp;quot;Change with value&amp;quot; next to the property.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 881.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Journal_viewer&amp;diff=18565</id>
		<title>Journal viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Journal_viewer&amp;diff=18565"/>
		<updated>2011-04-26T07:55:23Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Understanding resource lists]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
===Journal viewer===&lt;br /&gt;
&lt;br /&gt;
The journal viewer is a view where you can keep track of updates to the journals of multiple related resources. The journal viewer button is found under Tools -&amp;amp;gt; Journal Viewer in most resource lists. The first thing it will ask you is whether you want to open all the resources from your latest search or just the ones that you have highlighted on the current page for the list. Once you have chosen this you will see the main journal viewer window as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:5406.png|800px|JournalViewer551]]&lt;br /&gt;
&lt;br /&gt;
The viewer consist of a conditions area on the left side and a viewer area on the right.&lt;br /&gt;
&lt;br /&gt;
The conditions area lets you choose in more detail which journal entries you want to see. Initially you will see entries for all the resources you selected when opening the journal viewer, but this you can change under the condition &#039;Show entries of the following resources&#039;. The total list of conditions you will see are:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show read/unread entries:&#039;&#039;&#039; Whenever you open an entry in the journal viewer it will be set as read. This way you are not forced to reread journal entries more than once. By only selection to return unread entries you can always keep up to date on the newest things to be informed about for the resources.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show entries within a time range:&#039;&#039;&#039; Using these conditions you can ensure to only get returned entries which were created within a certain time range. You need to click the check box after the from and to choices in order to activate the conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show entries of the following types:&#039;&#039;&#039; All entries have a certain type specified for them, that depend on the matter in which the journal entry was added. To just see any type of journal entry simply click the header row check box and all the types will automatically be included.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show entries of the following resources:&#039;&#039;&#039; The initial list of resources included are all the resources you selected when opening the journal viewer. You can now reduce this list by un-checking the resources you are no longer interested in.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Including entries from sub-resources of the following types: &#039;&#039;&#039;Checking this will extend the returned journal to other types of resources that just the resource type you started on. The resources returned will be sub-resources of your selected resources in the &#039;Show entries of the following resources&#039; condition.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your conditions click the &#039;Update&#039; button to update the viewer are on the right.&lt;br /&gt;
&lt;br /&gt;
The viewer area consists of a tool bar, the list of journal inserts that are the result of the set conditions on the left side, and a single entry overview form in the bottom.&lt;br /&gt;
&lt;br /&gt;
To read any of the journal entries on the list, simply highlight it and the information will be fully shown in the bottom form. You can use the up and down buttons on your keyboard to easy read through the list. Whenever you have highlighted a journal entry, you will have set it as read. You can also quickly mark multiple records as read or unread by using the checkboxes on the list combined with the buttons &#039;Mark as read&#039; and &#039;Mark as unread&#039;.&lt;br /&gt;
&lt;br /&gt;
Two ways of exporting the information to external formats are the buttons &#039;Export to excel&#039; and &#039;View printable versions&#039;. The printable version will make a clean setup in an HTML page which you can then choose to export.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 5405.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_time_budget&amp;diff=18563</id>
		<title>Copy time budget</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_time_budget&amp;diff=18563"/>
		<updated>2011-04-26T07:52:19Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy time budget====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Tasks&lt;br /&gt;
* Projects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Time budget is the estimated time for a resource to be completed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Time budget of the source resource is set as default time budget in step 2 of the CRW, but can then be changed here if necessary.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7669.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_test_case_and_version&amp;diff=18561</id>
		<title>Copy test case and version</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_test_case_and_version&amp;diff=18561"/>
		<updated>2011-04-26T07:50:38Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy test case and version====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If your copied task should have a related test case, then it can be set here. You can both change the actual test case as well as the version where the bug occurred!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test case and version of the original task is set as defaults but can then be changed if necessary.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7670.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_task_supervisor&amp;diff=18557</id>
		<title>Copy task supervisor</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_task_supervisor&amp;diff=18557"/>
		<updated>2011-04-26T07:47:05Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy task supervisor====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The supervisor is the person who supervises the completion and progress of the task. To learn more about tasks please [[_Tasks_|click here]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Task supervisor of the original task is set as default supervisor in step 2 of the CRW, but can then be changed here if necessary.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7666.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_task_responsible&amp;diff=18556</id>
		<title>Copy task responsible</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_task_responsible&amp;diff=18556"/>
		<updated>2011-04-26T07:46:32Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy task responsible====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Tasks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Task responsible is the person who is responsible for completing the task. To learn more about tasks please [[_Tasks_|click here]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Task responsible of the original task is set as default responsible in step 2 of the CRW, but can then be changed here if necessary.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7665.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_style_sheet&amp;diff=18555</id>
		<title>Copy style sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_style_sheet&amp;diff=18555"/>
		<updated>2011-04-26T07:45:39Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy style sheet====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diagram&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If this option is checked then the copied diagram will have created a unique new style sheet resource that is related to it. If not checked then the new diagram will use the same style sheet as the source diagram it was copied from.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If style sheet is not copied then the foreign key for the diagram is simply kept with its original value. If we copy then a new style sheet will be copied in the same path as the original style sheet, but with a slightly different name, e.g. &amp;quot;sourceName_Copy1&amp;quot;.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7674.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Copy_stratifications&amp;diff=18553</id>
		<title>Copy stratifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Copy_stratifications&amp;diff=18553"/>
		<updated>2011-04-26T07:44:38Z</updated>

		<summary type="html">&lt;p&gt;Phamngocsonopenid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Copying resources]]&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
====Copy stratifications====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Types that have this copy option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Questionnaires&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Short description of the information of this option:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Stratification is used to restrict the number of interviews that need to be done on specific quotas. Stratification can be opened by opening the questionnaire in the questionnaire list, and navigate to the Samples tab, under which you will find stratification. [[_Quotas_and_stratification_|Click here]] to learn more on stratification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How this information is actually copied:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Copying stratification requires copying both quota and sample rule. Once the two check boxes for quota and sample rule are checked in the copy wizard, the check box for stratification can also be checked. Otherwise, the stratification check box will be disabled.&lt;br /&gt;
&lt;br /&gt;
An instance of stratification is a pointer to one or more quotas and one or more sample rules. Duplicating stratification requires changing the pointers from the original quotas to the new copied quotas and the pointer from the original sample rules to the new copied sample rules.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- imported from file: 7655.htm--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Phamngocsonopenid</name></author>
	</entry>
</feed>