Jump to content
Toggle menu
  • 915 articles
  • 3.8K files
  • 30.2K users
  • 279.2K edits
Catglobe Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Showing Answer Option in tab: Difference between revisions

From Catglobe Wiki
Nguyentrantri (talk | contribs)
No edit summary
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Challenge ==
== Showing answer option in tab ==
Showing answer option in Alphabetical tab


[[Image:Fetch)UID).INBOX.related_to_Questionnaire)2014.PNG]]
We have a single question which has a lot of answer options. We want to show answer options in Alphabetical tab
 
[[File:Tab20120116.png]]
 
== Solution ==


== Solution ==
Using Java Script property of question.
Using Java Script property of question.


There are 2 type of alphabetical tabs.
There are 2 type of alphabetical tabs.


# '''No tab is selected as default'''
#'''No tab is selected as default'''
# '''An extra tab showing all answer options which is selected as default'''
#'''An extra tab showing all answer options which is selected as default'''


== Code ==  
== Code 1: No tab is selected by default ==
There are 2 type of alphabetical tabs.


'''I. No tab is selected as default'''
<source lang="javascript">


<source lang="javascript">
/// Maximum number of column in tab.
var columnPerRow = 3;
var columnPerRow = 3;
//answer option list to display outside of the tabs
var excludeAOs = [998,999];
Array.prototype.contains = function(item)
{
var i;
for(i=0; i<this.length; i++)
{
if (this[i] == item)
return true;
}
return false;
}
//Overrider Array to find an item easier
Array.prototype.indexOf = function(character)
{
for (var i = 0; i < this.length; i++)
if (this[i] == character)
return i;
return -1;
}


quest.getHTML = function()
quest.getHTML = function()
{
{
    if (this.type != 1 && this.type != 2)
if (this.type != 1 && this.type != 2)
        return;
return;


    //This code used to set data to question.options
//This code used to set data to question.options
    ans = this.answer.split("_|_");
ans = this.answer.split("_|_");
    for (i = 0; i < ans.length; i++)
for (i = 0; i < ans.length; i++)  
    {
{
        ans[i] = ans[i].split("_:_");
ans[i] = ans[i].split("_:_");
    }
}


    for (i = 0; i < ans[0].length; i++)
for (i = 0; i < ans[0].length; i++)  
    {
{
        if (ans[0][i].length > 0)
if (ans[0][i].length > 0)  
        {
{
            for (j = 0; j < this.options.length; j++)
for (j = 0; j < this.options.length; j++)  
            {
{
                if (this.options[j].value == ans[0][i])
if (this.options[j].value == ans[0][i])  
                {
{
                    this.options[j].checked = true;
this.options[j].checked = true;
                    if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
                        this.options[j].open = ans[1][i];
this.options[j].open = ans[1][i];
                }
}
            }
}
        }
}
    }
}


    var optionType = this.type == 1 ? 1 : 3;
var optionType = this.type == 1 ? 1 : 3;


var sres = "";
sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
if (this.countdown > 0 && this.showcountdowndisplay)
{
sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
}
sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
sres += "<tr><td align=\"center\">";


    var sres = "";
//Generate list of tabs
    sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
var tabList = new Array();
    if (this.countdown > 0 && this.showcountdowndisplay)
tabList.push(" #");
    {
for (var i = 0; i < this.options.length; i++) {
        sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
    }
tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());
    sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
}
    sres += "<tr><td align=\"center\">";


    //Overrider Array to find an item easier
//Sort Alphabetical
    Array.prototype.indexOf = function(character)
tabList.sort();
    {
        for (var i = 0; i < this.length; i++)
            if (this[i] == character)
            return i;
        return -1;
    }


    //Generate list of tabs
sres += "<div id='example_tab' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>";
    var tabList = new Array();
//Generate tab header UI
    tabList.push(" #");
sres += "<ul class='ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all'>";
    for (var i = 0; i < this.options.length; i++)
for (var i = 0; i < tabList.length; i++) {
    {
var tabHeaderContent = document.createElement("li");
        if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
sres += "<li class='ui-state-default ui-corner-top'>";
            tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());
sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
    }
}
sres += "</ul>";


    //Sort Alphabetical
sres += "<div id='tab_" + 0 + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'></div>";
    tabList.sort();


    sres += "<div id='example_tab'>";
var answerOptionNotToIncluded = new Array();
    //Generate tab header UI
    sres += "<ul class='ui-tabs-nav'>";
    for (var i = 0; i < tabList.length; i++)
    {
        var tabHeaderContent = document.createElement("li");
        sres += "<li class='ui-tabs-selected'>";
        sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
    }
    sres += "</ul>";


sres += "<div id='tab_" + 0 + "' class='ui-tabs-panel'></div>";
for (var i = 1; i < tabList.length; i++) {
    for (var i = 1; i < tabList.length; i++)
var tabContent = "";
    {
tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'>";
        sres += "<div id='tab_" + i + "' class='ui-tabs-panel ui-tabs-hide'>";


        //generate content for tab
//generate content for tab
        sres += "<table><tbody><tr>";
tabContent += "<table><tbody><tr>";
        var indexOfItemInTab = 1;
var indexOfItemInTab = 1;
        var currentRow = 1;
var currentRow = 1;
        for (var j = 0; j < this.options.length; j++)
for (var j = 0; j < this.options.length; j++) {
        {
if (this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
            if (this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
continue;
                continue;


            sres += this.options[j].getHTML(optionType);
if (excludeAOs.contains(this.options[j].value)) {
            indexOfItemInTab++;
answerOptionNotToIncluded.push(this.options[j]);
            if (indexOfItemInTab > columnPerRow * currentRow)
continue;
            {
}
                sres += "</tr><tr>";
                currentRow++;
            }
        }


        if (this.options.lenght == 0)
tabContent += this.options[j].getHTML(optionType);
            sres = "<td>&nbsp;</td>";
indexOfItemInTab++;
        sres += "</tr></tbody></table></div>";
if (indexOfItemInTab > columnPerRow * currentRow) {
    }
tabContent += "</tr><tr>";
    sres += "</div></td></tr></table>";
currentRow++;
}
}


    return sres;
if (this.options.lenght == 0)
tabContent = "<td>&nbsp;</td>";
tabContent += "</tr></tbody></table></div>";
 
if ($(tabContent).find("input").length <= 0)
__emptyTabSearchString = "a[href*='tab_" + i + "']";
else
sres += tabContent;
}
if (answerOptionNotToIncluded.length > 0)
{
sres += "</div></td></tr><tr><td><table id='extra_options'>";
for(var i=0; i<answerOptionNotToIncluded.length; i++)
{
sres += "<tr>" + answerOptionNotToIncluded[i].getHTML(optionType) + "</tr>";
}
sres += "</table></td></tr></table>";
}
else
sres += "</div></td></tr></table>";
 
return sres;
};
};


Line 127: Line 161:
this.optclick = function(slbl, lidx, blnk)
this.optclick = function(slbl, lidx, blnk)
{
{
    var inputType = quest.type == 1 ? "radio" : "checkbox";
var currentAOValue = quest.options[lidx].value;
 
var inputType = quest.type == 1 ? "radio" : "checkbox";
    var qao, i, cb, o1, openInput, currentAOInput, val;
    cb = new Array();
    o1 = document["query"][slbl];
    cb = o1;
    qao = quest.options;
    currentAOInput = $("input[type='" + inputType + "'][value='" + quest.options[lidx].value + "']")[0];
    val = currentAOInput.value;


    //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
var openInput, currentAOInput;
    if (blnk && currentAOInput.type == "checkbox")
        currentAOInput.checked = !currentAOInput.checked;
currentAOInput = $("input[type='" + inputType + "'][value='" + currentAOValue + "']")[0];
    else if (blnk)
        currentAOInput.checked = true;


    openInput = document["query"][slbl + ".Open." + val];
if (excludeAOs.contains(currentAOValue))
    if ((typeof openInput) != "undefined")
return normaloptClick(slbl, lidx, blnk);
    {
        if (currentAOInput.checked)
        {
            openInput.disabled = false;
            openInput.focus();
        } else
        {
            openInput.value = "";
            openInput.disabled = true;
        }
    }


    // Singleoption
//If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
    if (quest.type == 1)
if (blnk && currentAOInput.type == "checkbox")
    {
currentAOInput.checked = !currentAOInput.checked;
        for (var i = 0; i < cb.length; i++)
else if (blnk)
        {
currentAOInput.checked = true;
            if (cb[i].value == val)
                continue;
            cb[i].checked = false;
        }
    }


openInput = document["query"][slbl + ".Open." + currentAOValue];
if ((typeof openInput) != "undefined")
{
if (currentAOInput.checked)
{
openInput.disabled = false;
openInput.focus();
}
else
{
openInput.value = "";
openInput.disabled = true;
}
}
var o;
for(var i=0; i<quest.options.length; i++)
{
o = quest.options[i];
if (o.single && currentAOValue != o.value)
{
$("input[type='" + inputType + "'][value='" + o.value + "']").attr("checked", false);
}
}
}
}


quest.onInit = function()
quest.onInit = function()
{
{
    $("#example_tab > ul").tabs();
if (typeof(__emptyTabSearchString) != "undefined")
    $("li[class='ui-tabs-selected']").css("display", "none");
$(__emptyTabSearchString).parent().remove();
 
$("#example_tab").tabs();
$("a[href='#tab_0']").parent().css("display", "none");
// set Next invisible onload
//setVisibility(false);
$("#extra_options").hide();
};
};
</source>
</source>


'''II.An extra tab showing all answer options which is selected as default'''
== Code 2: Extra tab showing all answer options ==
 
<source lang="javascript">
<source lang="javascript">
/// Maximum number of column in tab.
var columnPerRow = 3;
var columnPerRow = 3;


quest.getHTML = function()
 
//answer option list to display outside of the tabs
var excludeAOs = [998,999];
 
Array.prototype.contains = function(item)
{
{
    if (this.type != 1 && this.type != 2)
var i;
        return;
for(i=0; i<this.length; i++)
{
if (this[i] == item)
return true;
}
return false;
}


    //This code used to set data to question.options
//Overrider Array to find an item easier
    ans = this.answer.split("_|_");
Array.prototype.indexOf = function(character)
    for (i = 0; i < ans.length; i++)
{
    {
for (var i = 0; i < this.length; i++)
        ans[i] = ans[i].split("_:_");
if (this[i] == character)
    }
return i;
return -1;
}


    for (i = 0; i < ans[0].length; i++)
quest.getHTML = function()
    {
{
        if (ans[0][i].length > 0)
if (this.type != 1 && this.type != 2)
        {
return;
            for (j = 0; j < this.options.length; j++)
            {
                if (this.options[j].value == ans[0][i])
                {
                    this.options[j].checked = true;
                    if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
                        this.options[j].open = ans[1][i];
                }
            }
        }
    }


    var optionType = this.type == 1 ? 1 : 3;
//This code used to set data to question.options
ans = this.answer.split("_|_");
for (i = 0; i < ans.length; i++)
{
ans[i] = ans[i].split("_:_");
}


for (i = 0; i < ans[0].length; i++)
{
if (ans[0][i].length > 0)
{
for (j = 0; j < this.options.length; j++)
{
if (this.options[j].value == ans[0][i])
{
this.options[j].checked = true;
if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
this.options[j].open = ans[1][i];
}
}
}
}


    var sres = "";
var optionType = this.type == 1 ? 1 : 3;
    sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
    if (this.countdown > 0 && this.showcountdowndisplay)
    {
        sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
    }
    sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
    sres += "<tr><td align=\"center\">";


    //Override Array to find an item easier
var sres = "";
    Array.prototype.indexOf = function(character)
sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
    {
if (this.countdown > 0 && this.showcountdowndisplay)  
        for (var i = 0; i < this.length; i++)
{
            if (this[i] == character)
sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
            return i;
}
        return -1;
sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
    }
sres += "<tr><td align=\"center\">";  


    //Generate list of tabs
//Generate list of tabs
    var tabList = new Array();
var tabList = new Array();
    tabList.push(" All");
tabList.push(" All");
    for (var i = 0; i < this.options.length; i++)
for (var i = 0; i < this.options.length; i++) {
    {
if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
        if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());
            tabList.push(this.options[i].text.trim().substr(0, 1));
}
    }


    //Sort Alphabetical
//Sort Alphabetical
    tabList.sort();
tabList.sort();


    sres += "<div id='example_tab'>";
sres += "<div id='example_tab' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>";
    //Generate tab header UI
//Generate tab header UI
    sres += "<ul class='ui-tabs-nav'>";
sres += "<ul class='ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all'>";
    for (var i = 0; i < tabList.length; i++)
for (var i = 0; i < tabList.length; i++) {
    {
var tabHeaderContent = document.createElement("li");
        var tabHeaderContent = document.createElement("li");
sres += "<li class='ui-state-default ui-corner-top'>";
        sres += "<li class='ui-tabs-selected'>";
sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
        sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
}
    }
sres += "</ul>";
    sres += "</ul>";


    for (var i = 0; i < tabList.length; i++)
var answerOptionNotToIncluded = new Array();
    {
        if (i == 0)
            sres += "<div id='tab_" + i + "' class='ui-tabs-panel'>";
        else
            sres += "<div id='tab_" + i + "' class='ui-tabs-panel ui-tabs-hide'>";


        //generate content for tab
for (var i = 0; i < tabList.length; i++) {
        sres += "<table><tbody><tr>";
var tabContent = "";
        var indexOfItemInTab = 1;
if(i==0)tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'>";
        var currentRow = 1;
else tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-tabs-hide'>";
//generate content for tab
tabContent += "<table><tbody><tr>";
var indexOfItemInTab = 1;
var currentRow = 1;
for (var j = 0; j < this.options.length; j++) {
if (i != 0 && this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
continue;
var optionInput = this.options[j].getHTML(optionType);
if (i == 0) {
while (optionInput.indexOf(this.label) != -1) {
optionInput = optionInput.replace(this.label, "TabAllAnswer");
}
}
if (i!=0 && excludeAOs.contains(this.options[j].value)) {
answerOptionNotToIncluded.push(this.options[j]);
continue;
}


        for (var j = 0; j < this.options.length; j++)
tabContent += this.options[j].getHTML(optionType);
        {
indexOfItemInTab++;
            if (i != 0 && this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
if (indexOfItemInTab > columnPerRow * currentRow) {
                continue;
tabContent += "</tr><tr>";
currentRow++;
}
}


            var optionInput = this.options[j].getHTML(optionType);
if (this.options.lenght == 0)
            if (i == 0)
tabContent = "<td>&nbsp;</td>";
            {
tabContent += "</tr></tbody></table></div>";
                while (optionInput.indexOf(this.label) != -1)
                {
                    optionInput = optionInput.replace(this.label, "TabAllAnswer");
                }
            }
            sres += optionInput;
            indexOfItemInTab++;
            if (indexOfItemInTab > columnPerRow * currentRow)
            {
                sres += "</tr><tr>";
                currentRow++;
            }
        }


        if (this.options.lenght == 0)
if ($(tabContent).find("input").length <= 0)
            sres = "<td>&nbsp;</td>";
__emptyTabSearchString = "a[href*='tab_" + i + "']";
        sres += "</tr></tbody></table></div>";
else
    }
sres += tabContent;
    sres += "</div></td></tr></table>";
}
if (answerOptionNotToIncluded.length > 0)
{
sres += "</div></td></tr><tr><td><table id='extra_options'>";
for(var i=0; i<answerOptionNotToIncluded.length; i++)
{
sres += "<tr>" + answerOptionNotToIncluded[i].getHTML(optionType) + "</tr>";
}
sres += "</table></td></tr></table>";
}
else
sres += "</div></td></tr></table>";


    return sres;
return sres;
};
};


Line 299: Line 369:
this.optclick = function(slbl, lidx, blnk)
this.optclick = function(slbl, lidx, blnk)
{
{
    var inputType = quest.type == 1 ? "radio" : "checkbox";
var currentAOValue = quest.options[lidx].value;
    other_slbl = slbl == "TabAllAnswer" ? quest.label : "TabAllAnswer";
var inputType = quest.type == 1 ? "radio" : "checkbox";
    var val = quest.options[lidx].value;
    var currentAOInput = $("input[type='" + inputType + "'][name='" + slbl + "'][value='" + val + "']")[0];
    var other_currentAOInput = $("input[type='" + inputType + "'][name='" + other_slbl + "'][value='" + val + "']")[0];


    // Singleoption
var openInput, currentAOInput;
    if (quest.type == 1)
    {
currentAOInput = $("input[type='" + inputType + "'][value='" + currentAOValue + "']")[0];
        var InputNeedToBeUnCheck = $("input:" + inputType + "[value!='" + val + "']:checked");
        for (var i = 0; i < InputNeedToBeUnCheck.length; i++)
        {
            InputNeedToBeUnCheck[i].checked = false;
        }
    }


    //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
if (excludeAOs.contains(currentAOValue))
    if (blnk && currentAOInput.type == "checkbox")
return normaloptClick(slbl, lidx, blnk);
        currentAOInput.checked = !currentAOInput.checked;
    else if (blnk)
        currentAOInput.checked = true;


    other_currentAOInput.checked = currentAOInput.checked;
//If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
if (blnk && currentAOInput.type == "checkbox")
currentAOInput.checked = !currentAOInput.checked;
else if (blnk)
currentAOInput.checked = true;
 
openInput = document["query"][slbl + ".Open." + currentAOValue];
if ((typeof openInput) != "undefined")
{
if (currentAOInput.checked)
{
openInput.disabled = false;
openInput.focus();
}
else
{
openInput.value = "";
openInput.disabled = true;
}
}
var o;
for(var i=0; i<quest.options.length; i++)
{
o = quest.options[i];
if (o.single && currentAOValue != o.value)
{
$("input[type='" + inputType + "'][value='" + o.value + "']").attr("checked", false);  
}
}
}
}


quest.onInit = function()
quest.onInit = function()
{
{
    $("#example_tab > ul").tabs();
if (typeof(__emptyTabSearchString) != "undefined")
$(__emptyTabSearchString).parent().remove();
 
$("#example_tab").tabs();
//$("a[href='#tab_0']").parent().css("display", "none");
// set Next invisible onload
//setVisibility(false);
$("#extra_options").hide();
};
};
</source>
</source>
== Source ==
Questionnaire Resource Id on cg.catglobe.com site: 164079 (Questions: Q_1_No_tab_is_selected_by_default & Q_2_Extra_tab_showing_all_answer_options)

Latest revision as of 03:10, 17 October 2013

Showing answer option in tab

We have a single question which has a lot of answer options. We want to show answer options in Alphabetical tab

Solution

Using Java Script property of question.

There are 2 type of alphabetical tabs.

  1. No tab is selected as default
  2. An extra tab showing all answer options which is selected as default

Code 1: No tab is selected by default

/// Maximum number of column in tab.
var columnPerRow = 3;


//answer option list to display outside of the tabs
var excludeAOs = [998,999];

Array.prototype.contains = function(item)
{
 var i;
 for(i=0; i<this.length; i++)
 {
 if (this[i] == item)
 return true;
 }
 return false;
}

 //Overrider Array to find an item easier
Array.prototype.indexOf = function(character)
{
 for (var i = 0; i < this.length; i++)
 if (this[i] == character)
 return i;
 return -1;
}

quest.getHTML = function()
{
 if (this.type != 1 && this.type != 2)
 return;

 //This code used to set data to question.options
 ans = this.answer.split("_|_");
 for (i = 0; i < ans.length; i++) 
 {
 ans[i] = ans[i].split("_:_");
 }

 for (i = 0; i < ans[0].length; i++) 
 {
 if (ans[0][i].length > 0) 
 {
 for (j = 0; j < this.options.length; j++) 
 {
 if (this.options[j].value == ans[0][i]) 
 {
 this.options[j].checked = true;
 if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
 this.options[j].open = ans[1][i];
 }
 }
 }
 }

 var optionType = this.type == 1 ? 1 : 3;

 var sres = "";
 sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
 if (this.countdown > 0 && this.showcountdowndisplay) 
 {
 sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
 }
 sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
 sres += "<tr><td align=\"center\">"; 

 //Generate list of tabs
 var tabList = new Array();
 tabList.push(" #");
 for (var i = 0; i < this.options.length; i++) {
 if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
 tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());
 }

 //Sort Alphabetical
 tabList.sort();

 sres += "<div id='example_tab' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>";
 //Generate tab header UI
 sres += "<ul class='ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all'>";
 for (var i = 0; i < tabList.length; i++) {
 var tabHeaderContent = document.createElement("li");
 sres += "<li class='ui-state-default ui-corner-top'>";
 sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
 }
 sres += "</ul>";

 sres += "<div id='tab_" + 0 + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'></div>";

 var answerOptionNotToIncluded = new Array();

 for (var i = 1; i < tabList.length; i++) {
 var tabContent = "";
 tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'>";

 //generate content for tab
 tabContent += "<table><tbody><tr>";
 var indexOfItemInTab = 1;
 var currentRow = 1;
 for (var j = 0; j < this.options.length; j++) {
 if (this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
 continue;

 if (excludeAOs.contains(this.options[j].value)) {
 answerOptionNotToIncluded.push(this.options[j]);
 continue;
 }

 tabContent += this.options[j].getHTML(optionType);
 indexOfItemInTab++;
 if (indexOfItemInTab > columnPerRow * currentRow) {
 tabContent += "</tr><tr>";
 currentRow++;
 }
 }

 if (this.options.lenght == 0)
 tabContent = "<td>&nbsp;</td>";
 tabContent += "</tr></tbody></table></div>";

 if ($(tabContent).find("input").length <= 0)
 __emptyTabSearchString = "a[href*='tab_" + i + "']";
 else
 sres += tabContent;
 }
 if (answerOptionNotToIncluded.length > 0)
 {
 sres += "</div></td></tr><tr><td><table id='extra_options'>";
 for(var i=0; i<answerOptionNotToIncluded.length; i++)
 {
 sres += "<tr>" + answerOptionNotToIncluded[i].getHTML(optionType) + "</tr>";
 }
 sres += "</table></td></tr></table>";
 }
 else
 sres += "</div></td></tr></table>";

 return sres;
};

var normaloptClick = optclick;
this.optclick = function(slbl, lidx, blnk)
{
 var currentAOValue = quest.options[lidx].value;
 var inputType = quest.type == 1 ? "radio" : "checkbox";

 var openInput, currentAOInput; 
 
 currentAOInput = $("input[type='" + inputType + "'][value='" + currentAOValue + "']")[0];
 

 if (excludeAOs.contains(currentAOValue))
 return normaloptClick(slbl, lidx, blnk);

 //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
 if (blnk && currentAOInput.type == "checkbox")
 currentAOInput.checked = !currentAOInput.checked;
 else if (blnk)
 currentAOInput.checked = true;

 openInput = document["query"][slbl + ".Open." + currentAOValue];
 if ((typeof openInput) != "undefined") 
 {
 if (currentAOInput.checked) 
 {
 openInput.disabled = false;
 openInput.focus();
 } 
 else 
 {
 openInput.value = "";
 openInput.disabled = true;
 }
 } 
 var o;
 for(var i=0; i<quest.options.length; i++)
 {
 o = quest.options[i];
 if (o.single && currentAOValue != o.value)
 {
 $("input[type='" + inputType + "'][value='" + o.value + "']").attr("checked", false); 
 }
 } 
}

quest.onInit = function()
{
 if (typeof(__emptyTabSearchString) != "undefined")
 $(__emptyTabSearchString).parent().remove();

 $("#example_tab").tabs();
 $("a[href='#tab_0']").parent().css("display", "none");
 
 // set Next invisible onload
 //setVisibility(false);
 $("#extra_options").hide();
};

Code 2: Extra tab showing all answer options

/// Maximum number of column in tab.
var columnPerRow = 3;


//answer option list to display outside of the tabs
var excludeAOs = [998,999];

Array.prototype.contains = function(item)
{
 var i;
 for(i=0; i<this.length; i++)
 {
 if (this[i] == item)
 return true;
 }
 return false;
}

 //Overrider Array to find an item easier
Array.prototype.indexOf = function(character)
{
 for (var i = 0; i < this.length; i++)
 if (this[i] == character)
 return i;
 return -1;
}

quest.getHTML = function()
{
 if (this.type != 1 && this.type != 2)
 return;

 //This code used to set data to question.options
 ans = this.answer.split("_|_");
 for (i = 0; i < ans.length; i++) 
 {
 ans[i] = ans[i].split("_:_");
 }

 for (i = 0; i < ans[0].length; i++) 
 {
 if (ans[0][i].length > 0) 
 {
 for (j = 0; j < this.options.length; j++) 
 {
 if (this.options[j].value == ans[0][i]) 
 {
 this.options[j].checked = true;
 if (ans.length > 1 && typeof this.options[j].open != "undefined" && typeof ans[1][i] != "undefined")
 this.options[j].open = ans[1][i];
 }
 }
 }
 }

 var optionType = this.type == 1 ? 1 : 3;

 var sres = "";
 sres += "<table border=" + this.bordersize + " class=\"question_outer\" cellpadding=\"0\" cellspacing=\"0\">";
 if (this.countdown > 0 && this.showcountdowndisplay) 
 {
 sres += "<tr><td><div id=\"countdowndisplay\"></div></td></tr>";
 }
 sres += "<tr><td id=\"question_text\">" + this.text + "</td></tr>";
 sres += "<tr><td align=\"center\">"; 

 //Generate list of tabs
 var tabList = new Array();
 tabList.push(" All");
 for (var i = 0; i < this.options.length; i++) {
 if (tabList.indexOf(this.options[i].text.trim().substr(0, 1).toUpperCase()) == -1)
 tabList.push(this.options[i].text.trim().substr(0, 1).toUpperCase());
 }

 //Sort Alphabetical
 tabList.sort();

 sres += "<div id='example_tab' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>";
 //Generate tab header UI
 sres += "<ul class='ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all'>";
 for (var i = 0; i < tabList.length; i++) {
 var tabHeaderContent = document.createElement("li");
 sres += "<li class='ui-state-default ui-corner-top'>";
 sres += "<a href='#tab_" + i + "'><span>" + tabList[i] + "</span></a></li>";
 }
 sres += "</ul>";

 var answerOptionNotToIncluded = new Array();

 for (var i = 0; i < tabList.length; i++) {
 var tabContent = "";
 if(i==0)tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-widget-content ui-corner-bottom'>";
 else tabContent += "<div id='tab_" + i + "' class='ui-tabs-panel ui-tabs-hide'>";
 
 //generate content for tab
 tabContent += "<table><tbody><tr>";
 var indexOfItemInTab = 1;
 var currentRow = 1;
 for (var j = 0; j < this.options.length; j++) {
 if (i != 0 && this.options[j].text.trim().substr(0, 1).toUpperCase() != tabList[i])
 continue;
 var optionInput = this.options[j].getHTML(optionType);
 if (i == 0) {
 while (optionInput.indexOf(this.label) != -1) {
 optionInput = optionInput.replace(this.label, "TabAllAnswer");
 }
 }
 if (i!=0 && excludeAOs.contains(this.options[j].value)) {
 answerOptionNotToIncluded.push(this.options[j]);
 continue;
 
 }

 tabContent += this.options[j].getHTML(optionType);
 indexOfItemInTab++;
 if (indexOfItemInTab > columnPerRow * currentRow) {
 tabContent += "</tr><tr>";
 currentRow++;
 }
 }

 if (this.options.lenght == 0)
 tabContent = "<td>&nbsp;</td>";
 tabContent += "</tr></tbody></table></div>";

 if ($(tabContent).find("input").length <= 0)
 __emptyTabSearchString = "a[href*='tab_" + i + "']";
 else
 sres += tabContent;
 }
 if (answerOptionNotToIncluded.length > 0)
 {
 sres += "</div></td></tr><tr><td><table id='extra_options'>";
 for(var i=0; i<answerOptionNotToIncluded.length; i++)
 {
 sres += "<tr>" + answerOptionNotToIncluded[i].getHTML(optionType) + "</tr>";
 }
 sres += "</table></td></tr></table>";
 }
 else
 sres += "</div></td></tr></table>";

 return sres;
};

var normaloptClick = optclick;
this.optclick = function(slbl, lidx, blnk)
{
 var currentAOValue = quest.options[lidx].value;
 var inputType = quest.type == 1 ? "radio" : "checkbox";

 var openInput, currentAOInput; 
 
 currentAOInput = $("input[type='" + inputType + "'][value='" + currentAOValue + "']")[0];
 

 if (excludeAOs.contains(currentAOValue))
 return normaloptClick(slbl, lidx, blnk);

 //If user click on the link instead of the radiobutton/checkbox then check/uncheck the radio/checkbox
 if (blnk && currentAOInput.type == "checkbox")
 currentAOInput.checked = !currentAOInput.checked;
 else if (blnk)
 currentAOInput.checked = true;

 openInput = document["query"][slbl + ".Open." + currentAOValue];
 if ((typeof openInput) != "undefined") 
 {
 if (currentAOInput.checked) 
 {
 openInput.disabled = false;
 openInput.focus();
 } 
 else 
 {
 openInput.value = "";
 openInput.disabled = true;
 }
 } 
 var o;
 for(var i=0; i<quest.options.length; i++)
 {
 o = quest.options[i];
 if (o.single && currentAOValue != o.value)
 {
 $("input[type='" + inputType + "'][value='" + o.value + "']").attr("checked", false); 
 }
 } 
}

quest.onInit = function()
{
 if (typeof(__emptyTabSearchString) != "undefined")
 $(__emptyTabSearchString).parent().remove();

 $("#example_tab").tabs();
 //$("a[href='#tab_0']").parent().css("display", "none");
 
 // set Next invisible onload
 //setVisibility(false);
 $("#extra_options").hide();
};

Source

Questionnaire Resource Id on cg.catglobe.com site: 164079 (Questions: Q_1_No_tab_is_selected_by_default & Q_2_Extra_tab_showing_all_answer_options)