8cd31beb-c3e5-4f80-83a6-e42670bce53d195c7575-c240-4707-8796-3ddc5e27e57aNewWriteReadTextFileTrueanata636208440801770000636213603675432565636213603708870000TrueFalse7False0SurveyToGo.UserLogic.Creator.SurveyLogicTempl<?xml version="1.0" encoding="utf-16"?>
<UserLogicContents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtExpression</QTp>
<Key>2</Key>
<Name>QuestionExpression_2</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEnd</QTp>
<Key>0</Key>
<Name>QuestionEnd_0</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
</Items>
<Source>// Question symbols
var Q_1 = null;var Q_2 = null;var Q_3 = null;var Q_4 = null;var Q_5 = null;var Q_6 = null;
function StartSurvey()
{
/*_@_SS_START_@*/
/*_@_SS_END_@*/
}
/*_@_USERCODE_START_@*/
function GetMainVersion (inVersion)
{
var retVal = "";
var versionSplit = inVersion.split(".");
if (versionSplit.length >= 3)
{
var retVal = versionSplit[2];
}
return retVal;
}
function isDeviceVersionUpdated (inUpdatedVersion)
{
var retVal = false;
var deviceVersion = GetMainVersion(DeviceVersion);
var mainVersion = GetMainVersion(inUpdatedVersion);
if (parseInt(mainVersion) <= parseInt(deviceVersion))
{
retVal = true;
}
return retVal
}
function GetChapterIdxFromName (inChapterName)
{
var retVal = -1;
var chapterInfos = GetAllChapters();
for(var i=0;i<chapterInfos.length;i++) {
if (chapterInfos[i].Name == inChapterName) {
retVal = chapterInfos[i].Idx;
break;
}
}
return retVal;
}
function dblSetDCBRRelationship(inQStatements,inQSubStatements){
var outText = "";
outText+= AnswerText(inQStatements,9) + "|" + AnswerText(inQSubStatements,9) + "|" + "9" + ";";
outText+= AnswerText(inQStatements,7) + "|" + AnswerText(inQSubStatements,7) + "|" + "7" + ";";
outText+= AnswerText(inQStatements,5) + "|" + AnswerText(inQSubStatements,5) + "|" + "5" + ";";
outText+= AnswerText(inQStatements,8) + "|" + AnswerText(inQSubStatements,8) + "|" + "8" + ";";
outText+= AnswerText(inQStatements,3) + "|" + AnswerText(inQSubStatements,3) + "|" + "3" + ";";
outText+= AnswerText(inQStatements,6) + "|" + AnswerText(inQSubStatements,6) + "|" + "6" + ";";
outText+= AnswerText(inQStatements,1) + "|" + AnswerText(inQSubStatements,1) + "|" + "1" + ";";
outText+= AnswerText(inQStatements,2) + "|" + AnswerText(inQSubStatements,2) + "|" + "2" + ";";
outText+= AnswerText(inQStatements,4) + "|" + AnswerText(inQSubStatements,4) + "|" + "4" + ";";
return outText;
}
function dblSetDCBRBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=1;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrands,intOrderArray[i]) + "|" + AnswerText(inQBrandsImages,intOrderArray[i]) + "|" + intOrderArray[i] + ";"
}
}
return outText;
}
function dblSetDCBRTexts(inQInfoText,inQFinishText,inQFinishedInfo,inQQuestionText){
var outText = "";
outText = GetText(inQInfoText) + "|" + GetText(inQFinishText) + "|" + GetText(inQFinishedInfo) + "|" + GetText(inQQuestionText);
return outText;
}
function dblSetDCBRAnswers(inQ,inQVars){
//reading inQVars and setting up inQ (which is a grid)
var i=0;
var j=0;
var result;
var answerDCBR = new Array();
answerDCBR = stringSplit(inQVars,";")
var tmpAnswer = new Array();
for(i=0;i<answerDCBR.length;i++){
if(answerDCBR[i]!=""){
tmpAnswer = stringSplit(answerDCBR[i],"|")
result = SetAnswerChoice(inQ,intParse(tmpAnswer[1]),intParse(tmpAnswer[0]));
}
}
}
function dblValidateDCBR(inQ,inQVars){
//check no. of brands qualified for DCBR are all answered
var retVal = false;
var brandCount = NumOfSelectedChoices(inQ);
var answerDCBR = stringSplit(inQVars,";")
if(brandCount !=answerDCBR.length){
retVal = true;
}
return retVal;
}
function setAnswerByParentAnswers(inQTarget, inQidsParent)
{
var numOfQues = inQidsParent.length;
var numOfAnswers = Parent.GetAnswerCount(inQidsParent[0]);
var contained;
var i;
var j;
for (i=1;i<= numOfAnswers;i++) {
contained = false;
for (j=0; j<numOfQues;j++) {
contained = Parent.Contains(inQidsParent[j],i);
if (contained) {
break;
}
}
if (contained) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
function dblSelectConXBrands(inQ,BrandArray){
//This function setup 3 brands to inQ randomly or based on BrandArray
var BrandsToSet = new Array();
var BrandPosArray = CreateRandomArray(BrandArray.length);
var i=0;
if(BrandArray.length >0){
//Setup using brand array
for(i=0;i<BrandArray.length;i++){
BrandsToSet[i] = BrandArray[BrandPosArray[i]-1];
if(i>2){
break;
}
}
}
SetAnswer(inQ,BrandsToSet);
}
function dblSetConXXP1Brands(inQBrands,BrandOrder,BrandOrderQ){
var outText = "";
var i=1;
var brandArray = new Array();
var selectedBrandOrder = ""
brandArray = stringSplit(BrandOrder,",");
for(i=1;i<GetAnswerCount(inQBrands);i++){
if(Contains(inQBrands,intParse(brandArray[i-1]))){
selectedBrandOrder = selectedBrandOrder + brandArray[i-1] + ",";
outText+= "<span class='mrGridQuestionText'>" + AnswerText(inQBrands,intParse(brandArray[i-1])) + "</span>";
}
}
outText+= "<span class='mrGridQuestionText'>" + AnswerText(inQBrands,GetAnswerCount(inQBrands)) + "</span>";
SetAnswer(BrandOrderQ,selectedBrandOrder);
return outText;
}
function dblSetConXXPs(inQXPs,XP_Order){
var outText = "";
var i=1;
var XPOrder = new Array();
XPOrder = stringSplit(XP_Order,",");
for(i=1;i<=GetAnswerCount(inQXPs);i++){
if(Contains(inQXPs,XPOrder[i-1])){
outText+= "<span class='mrGridCategoryText'>" + AnswerText(inQXPs,XPOrder[i-1]) + "</span>";
if(i>2){
break;
}
}
}
return outText;
}
/*
dblSetConX_XP1Answers(inQ,inQVars,BrandOrder,XPOrder)
inQ = Question to setup based on the Global Vars setup by CQRP. inQ question is Multiple Response Grid
inQVars = Global Variable setup by CQRP. The format would be: 0|0;0|1;0|2;1|1;2|3
in 0|1; 0 is the Topic number and 1 is the answer number NOTE: This is not the topic index or the answer index. We'll have to match this with the BrandOrder and XPOrder
XPOrder=Stores the topic index in the order in which the topics are shown at CQRP
The format would be: 30,28,1
BrandOrder: Stores the brand index in the order in which brands (answers)are shown at CQRP
The format would be: 1,5,7
*/
function dblSetConX_XP1Answers(inQ,inQVars,BrandOrder,XPOrder){
//reading inQVars and setting up inQ (which is a grid)
var i=0;
var j=0;
var result;
var BrandArray = new Array();
//Split the brand array to get the array of brands shown
BrandArray = stringSplit(BrandOrder,",");
var XPArray = new Array();
//Split the Topic array (XPOrder) to get the array of topics shown
XPArray = stringSplit(XPOrder,",");
var answerXP1 = new Array();
//Split the answer Array to get answer given for each topic this will give answerXP1[0] = 0|1 answerXP1[1] = 0|2 etc.
answerXP1 = stringSplit(inQVars,";");
var AnsArray = new Array();
var k=0;
var tmpXP=0;
var tmpAnswer = new Array();
//clear previous answers
ClearAnswer(inQ);
for(i=0;i<answerXP1.length;i++){
if(answerXP1[i]!=""){
//Split the answer by | to get topic and answer (brand)
tmpAnswer = stringSplit(answerXP1[i],"|")
//If the topic is same for example 0|0;0|1 we'll keep on updating AnsArray. Once the Topic number is different, we'll set the answer of multi response grid
// Set the value of j=Topic number
if(j!=intParse(tmpAnswer[0]))
{
j=intParse(tmpAnswer[0]);
//As the topics are shown in random order, we are using XPArray[TopicNumber] where XPArray contains the actual topic index at TopicNumber Location
result = SetAnswerChoice(inQ,intParse(XPArray[tmpXP]),AnsArray);
k=0;
AnsArray = new Array();
}
if(intParse(tmpAnswer[1])==3){
//If the answer is none (which will always be the last answer. We'll set it here
AnsArray[k] = GetAnswerCount(inQ);
}
else
{
//Else setup the answer array with Actual brand index from BrandArray
AnsArray[k] = intParse(BrandArray[intParse(tmpAnswer[1])]);
}
k = k + 1;
tmpXP = intParse(tmpAnswer[0]);
}
}
// To handle the last iteration / topic
result = SetAnswerChoice(inQ,intParse(XPArray[tmpXP]),AnsArray);
}
function dblAskXP3(inQ){
var retVal=0;
var i=0;
for(i=1;i<=GetTopicCount(inQ);i++){
if(ContainsChoice(inQ,i,11)==false && IsTopicVisible(inQ,i)){
retVal=1;
break;
}
}
return retVal;
}
function dblSetConX_XP1_Selected(inQ,resultQ){
var tempArray = new Array();
var resultArray = new Array();
var i=0;
var j=0;
var k=0;
for(i=1;i<=GetTopicCount(inQ);i++){
if(IsTopicVisible(inQ,i)){
tempArray = GetAnswersChoice(inQ,i)
for(j=0;j<tempArray.length;j++){
resultArray[k]=tempArray[j];
k++;
}
}
}
SetAnswer(resultQ,resultArray);
}
function dblGetXPs(inQ,resultQ,brandIndex){
var i=0;
var j=0;
var resultArray = new Array();
for(i=1;i<=GetTopicCount(inQ);i++){
if(ContainsChoice(inQ,i,brandIndex) && IsTopicVisible(inQ,i)){
resultArray[j] = i;
j++;
}
}
SetAnswer(resultQ,resultArray);
}
function dblSetupGlobalVarsFromEmpty(inQ){
return GetText(inQ);
};
function dblfnRenderConXDemo(inQArray,delimChar){
//This function generates global variable to be used to draw ConX demo
var retVal="";
var i=1;
for(i=0;i<inQArray.length;i++){
if(i==11){
//setting up the vertical text
retVal+=AnswerText(inQArray[i],1) + delimChar + AnswerText(inQArray[i],2) + delimChar + AnswerText(inQArray[i],3) + delimChar + AnswerText(inQArray[i],4) + delimChar;
}
else if (i==12){
//setting up the horizontal text
retVal+=AnswerText(inQArray[i],1) + delimChar + AnswerText(inQArray[i],2) + delimChar + AnswerText(inQArray[i],3) + delimChar + AnswerText(inQArray[i],4) + delimChar;
}
else{
retVal+=GetText(inQArray[i]) + delimChar;
}
}
return retVal;
}
function dblSetRBXBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=0;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrandsImages,intOrderArray[i]) + "|";
}
}
return outText;
}
function dblSetConXBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=0;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrands,intOrderArray[i]) + "|" + AnswerText(inQBrandsImages,intOrderArray[i]) + "|" + intOrderArray[i] + ";"
}
}
return outText;
}
function dblValidateAnswers(inQArray,minAnsCount)
{
var retVal=false;
var ansCount=0;
var i=0;
for(i=0;i<inQArray.length;i++){
if(Answered(inQArray[i])){
ansCount+=1;
}
}
if(ansCount < minAnsCount){
retVal = true;
}
return retVal;
}
function dblSetRBXAnswers(inQVars,inBrandVars,inTargetQues){
//reading inQVars and setting up inQ (which is a grid)
var numOfQues = inTargetQues.length;
var i=0;
var j=0;
var answerRBX = stringSplit(inQVars,";");
var brandArray = stringSplit(inBrandVars,";");
var tmpAnswer = new Array();
var tmpBrand = new Array();
for(i=0;i<answerRBX.length;i++){
if(answerRBX[i]!=""){
tmpAnswer = stringSplit(answerRBX[i],"|")
tmpBrand = stringSplit(brandArray[i],"|")
//Set pos X
SetAnswerIter(inTargetQues[0], intParse(tmpBrand[2]),tmpAnswer[1]);
//Set pos Y
SetAnswerIter(inTargetQues[1],intParse(tmpBrand[2]),tmpAnswer[2]);
//Set % X
SetAnswerIter(inTargetQues[2],intParse(tmpBrand[2]),tmpAnswer[3]);
//Set % Y
SetAnswerIter(inTargetQues[3],intParse(tmpBrand[2]),tmpAnswer[4]);
}
}
}
function dblValidateRBX(inQVars,inQBrands){
var retVal = false;
var answerRBX = stringSplit(inQVars,";")
var i=0;
var numOfBrands=0;
for(i=0;i<answerRBX.length;i++){
if(answerRBX[i]!=""){
numOfBrands++;
}
}
if(numOfBrands!=NumOfSelectedChoices(inQBrands)){
retVal = true;
}
return retVal;
}
function dblSetXPAsked(inQ){
//Used to set LST_XP
var i=0;
var resultArray = new Array();
for(i=1;i<=GetAnswerCount(inQ);i++){
resultArray[i-1] = i;
}
SetAnswer(inQ,resultArray);
}
function dblsbPosReturn(GridQx,QGridy,QAsk,TypeAsk){
var xMax = 0;
var yMax = 0;
var yArray = new Array(GetAnswerCount(QAsk));
var xArray = new Array(GetAnswerCount(QAsk));
var ansArray = new Array();
var tempAnsArray1 = new Array();
var tempAnsArray2 = new Array();
var index;
var k=0;
var i=0;
var j=0;
var x=0;
var y=0;
var z=0;
for(i=0;i<yArray.length;i++){
yArray[i] = new Array(2);
xArray[i] = new Array(2);
}
//Clears answers
ClearAnswer(QAsk);
if(TypeAsk==2){
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)>69 && AnswerIter(QGridy,i)>69){
if(AnswerIter(QGridy,i)>yMax){
yMax = AnswerIter(QGridy,i);
}
ansArray[k] = i;
yArray[k][0] = i;
yArray[k][1] = AnswerIter(QGridy,i);
xArray[k][0] = i;
xArray[k][1] = AnswerIter(GridQx,i);
k++;
}
}
//if more than 1 ans >69% i.e. k>1
if(k>1){
for(i=0;i<ansArray.length;i++){
if(yArray[i][1]>=yMax){
xMax = xArray[i][1];
tempAnsArray1[j] = ansArray[i];
j++;
}
}
if(j>1){
for(i=0;i<ansArray.length;i++){
for(y=0;y<tempAnsArray1.length;y++){
if(xArray[i][1]>=xMax && tempAnsArray1[y]==ansArray[i]){
tempAnsArray2[x] = tempAnsArray1[y];
x++;
}
}
}
if(x>1){
//more than 1 XP with highest rating
var finalBrandArray = RandomizeArray(tempAnsArray2);
SetAnswer(QAsk,finalBrandArray[0]);
}
else
{
SetAnswer(QAsk,tempAnsArray2[0]);
}
}
else{
SetAnswer(QAsk,tempAnsArray1);
}
}
else{
SetAnswer(QAsk,ansArray)
}
}
else{
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)>50 && AnswerIter(QGridy,i)>50){
ansArray[k] = i;
k++;
}
}
SetAnswer(QAsk,ansArray);
}
}
function dblsbNegReturn(GridQx,QGridy,QAsk,TypeAsk){
var xMin = 0;
var yMax = 0;
var yArray = new Array(GetAnswerCount(QAsk));
var xArray = new Array(GetAnswerCount(QAsk));
var ansArray = new Array();
var tempAnsArray1 = new Array();
var tempAnsArray2 = new Array();
var index;
var k=0;
var i=0;
var j=0;
var x=0;
var y=0;
var z=0;
for(i=0;i<yArray.length;i++){
yArray[i] = new Array(2);
xArray[i] = new Array(2);
}
//Clears answers
ClearAnswer(QAsk);
if(TypeAsk==2){
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)<31 && AnswerIter(QGridy,i)>69){
if(AnswerIter(QGridy,i)>yMax){
yMax = AnswerIter(QGridy,i);
}
ansArray[k] = i;
yArray[k][0] = i;
yArray[k][1] = AnswerIter(QGridy,i);
xArray[k][0] = i;
xArray[k][1] = AnswerIter(GridQx,i);
k++;
}
}
//if more than 1 ans >69% i.e. k>1
if(k>1){
for(i=0;i<ansArray.length;i++){
if(yArray[i][1]>=yMax){
xMin = xArray[i][1];
tempAnsArray1[j] = ansArray[i];
j++;
}
}
if(j>1){
for(i=0;i<ansArray.length;i++){
for(y=0;y<tempAnsArray1.length;y++){
if(xArray[i][1]<=xMin && tempAnsArray1[y]==ansArray[i]){
tempAnsArray2[x] = tempAnsArray1[y];
x++;
}
}
}
if(x>1){
//more than 1 XP with highest rating
var finalBrandArray = RandomizeArray(tempAnsArray2);
SetAnswer(QAsk,finalBrandArray[0]);
}
else
{
SetAnswer(QAsk,tempAnsArray2[0]);
}
}
else{
SetAnswer(QAsk,tempAnsArray1);
}
}
else{
SetAnswer(QAsk,ansArray)
}
}
else{
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)<50 && AnswerIter(QGridy,i)>50){
ansArray[k] = i;
k++;
}
}
SetAnswer(QAsk,ansArray);
}
}
function dblGetBrandText(inQ){
var retVal="";
var i=0;
for(i=1;i<=GetAnswerCount(inQ);i++){
if(Contains(inQ,i)){
retVal = AnswerText(inQ,i);
}
}
return retVal;
}
function dblSetMultipleAnswer(inQ,outQ){
var i;
var j=0;
var AnswerArray = new Array();
for(i=1;i<=GetAnswerCount(inQ);i++){
if(Contains(inQ,i)){
AnswerArray[j] = i;
j++;
}
}
SetAnswer(outQ,AnswerArray);
}
function RunOnAndroidOnly()
{
if (!IsPlatform(32))
{
Prompt("The survey should only be run on Android devices");
ExecutionMgr.CancelSubject();
}
}
function IsSetMultipleAnswers(IndiceQuestao, InAnswers, InCheck) {
for (var j=0;j<InAnswers.length;j++) {
dblSetSpecificAnswer(IndiceQuestao, InAnswers[j], InCheck);
}
}
function dblCheckAudioAttachmentLength(inQ,lenToCheck){
var retVal = true;
var FileNameArray = new Array();
var i=0;
FileNameArray = GetAttachedFilesNames(inQ);
for(i=0;i<FileNameArray.length;i++){
Prompt(FileNameArray[i]);
if(GetRecordingLengthInSeconds(FileNameArray[i]) < lenToCheck){
retVal = false;
}
}
return retVal;
}
//################################ Prince ######################################
function MultiSetVisible(curQues,Qsoc,tick,start,end,e)
{
if(Contains(Qsoc,tick))
{
for(var i = start ; i<=end ;i++)
{
SetAnswerVisible(curQues,true,false,i)
}
}
}
function SetAnswerVisibleByCode(qIdx,inShow,code)
{
if(inShow==true)
{
var l = arguments.length-1
var i
for( i=2 ; i<=l ; i++)
SetAnswerVisible(qIdx,true,false,GetAnswerChoiceIdxByCode(qIdx,arguments[i]))
}
else
{
var l = arguments.length-1
var i
for( i=2 ; i<=l ; i++)
SetAnswerVisible(qIdx,false,false,GetAnswerChoiceIdxByCode(qIdx,arguments[i]))
}
}
function CheckIDPSU()
{
Vars["idInvRegEx"]="^......$";
if (!dblIsRegEx(Vars["idInvRegEx"],Answer(CurrQues)))
{
return true;
}
}
// ใช้สำหรับดึงอื่นๆที่พิมพ์ 5 บรรทัดมาไว้ในข้อปัจจุบัน
function SetOther(other,openEnd,start)
{
SetAnswerVisible(CurrQues, false, false, start,start+1,start+2,start+3,start+4);
if (ContainsOneOf(QRef(other),start))
{
var topic;
var answer;
for (topic = 1, answer = start; topic <= 5; answer++, topic++)
{
var text = AnswerChoice(QRef(openEnd), topic);
if (text != "")
{
SetAnswerVisible(CurrQues, true, false, answer);
SetAnswerTextFormat(CurrQues, answer, text);
}
}
}
}
function SetOtherV2(other,openEnd,start)
{
SetAnswerVisible(CurrQues, false, false, start,start+1,start+2,start+3,start+4);
if (ContainsOneOf(QRef(other),start))
{
var topic;
var answer;
for (topic = 1, answer = start+1; topic <= 5; answer++, topic++)
{
var text = AnswerChoice(QRef(openEnd), topic);
if (text != "")
{
SetAnswerVisible(CurrQues, true, false, answer);
SetAnswerTextFormat(CurrQues, answer, text);
}
}
}
}
function SetTopicOther(other,openEnd,start)
{
SetTopicVisible(CurrQues, false, false, start,start+1,start+2,start+3,start+4);
if (ContainsOneOf(QRef(other),start))
{
var topic;
var answer;
for (topic = 1, answer = start; topic <= 5; answer++, topic++)
{
var text = AnswerChoice(QRef(openEnd), topic);
if (text != "")
{
SetTopicVisible(CurrQues, true, false, answer);
SetTopicTextFormat(CurrQues, answer, text);
}
}
}
}function SetTopicOther2(other,openEnd,start)
{
SetTopicVisible(CurrQues, false, false, start,start+1,start+2,start+3,start+4);
if (ContainsOneOf(QRef(other),start))
{
var topic;
var answer;
for (topic = 1, answer = start+1; topic <= 5; answer++, topic++)
{
var text = AnswerChoice(QRef(openEnd), topic);
if (text != "")
{
SetTopicVisible(CurrQues, true, false, answer);
SetTopicTextFormat(CurrQues, answer, text);
}
}
}
}
// วิธีใช้ ถ้าหน้า 1 ตอบโค้ด 998 999 ContainsOneOfByCode(Qref(1),["998","999"])
function ContainsOneOfByCode(qIdx, codeArr)
{
var retVal = false;
for(var i=1; i <=codeArr.length; i++)
{
if(ContainsByCode(qIdx,codeArr[i-1]))
{
retVal = true;
break;
}
}
return retVal;
}
function ContainsByCode(qIdx, code)
{
var retVal = Contains(qIdx,GetAnswerChoiceIdxByCode(qIdx,code));
return retVal;
}
//เอ๋ยเอง ไป โชว์การ์ด MultiContainsOneOf([QRef(20),QRef(21)....],1)
function MultiContainsOneOf(QRefArr,Idx)
{
var retVal = false;
for(var i=1 ; i<=QRefArr.length ; i++)
{
if(Contains(QRefArr[i-1],Idx))
{
retVal = true
return retVal
}
}
return retVal
}
// การดึงคำตอบโดยเรียงลำดับจากความถี่ ใช้ได้แค่กรณีที่ index ที่1 คือ ไปบ่อยสุด จนถึง ไม่ไปเลย
function FilterFrequency(curr,qref)
{
for(var i = 1; i <= GetAnswerCount(CurrQues) ; i++)
{
if(ContainsOneOf(QRef(qref),i))
{
FilterAnswersByTopics(QRef(curr),QRef(qref),i)
break
}
}
}
//Rotate answer ตามหมายเลขแบบสอบถาม EX AnswerRotateByNo(QRef(QnaNumber),[Other,noanswer])
function AnswerRotateByNo(Qne,cons)
{
var countMod = GetAnswerCount(CurrQues) - cons.length
var newAnswers=new Array();
var t = Answer(Qne)%countMod
var k
if(t == 0)
{
t = countMod;
}
for(k = t ; k <= countMod ; k++ )
{
newAnswers.push(k)
}
if(newAnswers.length != countMod)
{
for(var j = 1 ; j < t ; j++ )
{
newAnswers.push(j)
}
//newAnswers.push(1)
}
for(var i = 0 ; i+1 <= cons.length ; i++)
newAnswers.push(cons[i])
RandomizeAnswers(CurrQues,newAnswers);
}
function SortRotateByNo(Qin,cons) // Rotate Answer By No
{
var newAnswers=new Array();
if(Answer(Qin) % 2 == 1)
{
for(var i = 1; i <= GetAnswerCount(CurrQues) ; i++)
{
newAnswers.push(i);
}
RandomizeAnswers(CurrQues,newAnswers);
}
if(Answer(Qin) % 2 == 0)// sort descending
{
for(var i = GetAnswerCount(CurrQues)-cons.length ; i >= 1 ; i--)
{
newAnswers.push(i);
}
for(var i = 0 ; i+1 <= cons.length ; i++)
newAnswers.push(cons[i])
RandomizeAnswers(CurrQues,newAnswers);
}
}
function ConvertToDp(a1,a2)
{
for(var j = 0; j <=GetAnswerCount(QRef(a1));j++)
{
for (var i=0; i <=GetAnswerCount(QRef(a2)); i++)
{
if (ContainsOneOf(QRef(a1+i),j+1 ))
{
dblSetSpecificAnswer(QRef(a2+j),i+1,true);
}
}
}
}
function SetOsf(CurrQuee,QSouce,AnswerIndex)
{
var l = arguments.length-1
var i
for( i=2 ; i<=l ; i++)
SetAnswerText(CurrQuee,arguments[i],AdditionalAnswerText(QSouce,arguments[i]))
}
function SetOsfTopic(CurrQuee,QSouce,AnswerIndex)
{
var l = arguments.length-1
var i
for( i=2 ; i<=l ; i++)
SetTopicText(CurrQuee,arguments[i],AdditionalAnswerText(QSouce,arguments[i]))
}
function FilterAnswersByAnswersIncTopics(a)
{
FilterAnswersByAnswers(CurrQues,QRef(a))
var b = getNet()
var Ans = GetAnswers(a)
b[b.length] = GetAnswerCount(a)+1
for(var j = 0 ; j<=Ans.length ; j++)
for(var i = 0 ; i<=b.length-2 ; i++)
{
if(Ans[j]>b[i] && Ans[j]<b[i+1])
{
SetAnswerVisible(CurrQues,true,false,b[i])
}
}
}
function getNet()
{
var Net = []
var q=0
for(var i = 1 ; i <= GetAnswerCount(CurrQues) ; i++)
{
if(AnswerCode(CurrQues,i)=="0")
{
Net[q] = i
q++
}
}
return Net
}
//################################ End Prince ######################################
function dblToJSArray(inArray){
var retVal = new Array();
for(var i=0; i<inArray.length; i++){
retVal.push(inArray[i]);
}
return retVal;
}
function dblColorFromRGB(red, green, blue){
return (255<<24)+ (red<<16) + (green<<8) + blue;
}
function dblDistanceFromGPSFence (fenceLat, fenceLon)
{
var pi = Math.PI;
var fenceLatInRad=fenceLat* pi / 180;
var fenceLonInRad=fenceLon* pi / 180;
var targetLatInRad = GetGPSLocation().Latitude * pi / 180;
var targetLonInRad = GetGPSLocation().Longitude * pi / 180;
var dist = Math.acos(Math.sin(targetLatInRad) * Math.sin(fenceLatInRad) + Math.cos(targetLatInRad) * Math.cos(fenceLatInRad) * Math.cos(targetLonInRad - fenceLonInRad)) * 6371;
return dist;
}
function dblIsInGPSFence (fenceLat, fenceLon, distInKM)
{
var dist = dblDistanceFromGPSFence(fenceLat, fenceLon);
var retVal = false;
if(dist<distInKM){
retVal=true;}
else{
retVal=false;
}
return retVal;
}
function dblDistanceBetweenTwoLocations (firstLat, firstLon, secondLat, secondLon)
{
var pi = Math.PI;
var firstLatInRad=firstLat* pi / 180;
var firstLonInRad=firstLon* pi / 180;
var targetLatInRad = secondLat * pi / 180;
var targetLonInRad = secondLon * pi / 180;
var dist = Math.acos(Math.sin(targetLatInRad) * Math.sin(firstLatInRad) + Math.cos(targetLatInRad) * Math.cos(firstLatInRad) * Math.cos(targetLonInRad - firstLonInRad)) * 6371;
return dist;
}
function dblSumNumericGrid(inQ)
{
var retVal=0;
var numOfTopics=GetTopicCount(inQ);
var i;
for(i=1; i<=numOfTopics; i++)
{
if (IsTopicVisible(inQ,i)) {
retVal+=AnswerChoice(inQ,i);
}
}
return retVal;
}
function dblContainsOneOf(inQTarget,inAnswers)
{
var retVal = false;
var numOfAnswers = inAnswers.length;
var i;
for (i=0;i< numOfAnswers;i++) {
if (Contains(inQTarget,inAnswers[i])) {
retVal = true;
break;
}
}
return retVal;
}
//function dblContainsAll(inQTarget,inAnswers)
//{
// var retVal = true;
// var numOfAnswers = arguments.length-1;
// var i;
// for (i=0;i< numOfAnswers;i++) {
// retVal = retVal && Contains(inQTarget,arguments[i+1]);
// }
// return retVal;
//}
function dblContainsAllOf(inQTarget,inAnswers)
{
var retVal = true;
var numOfAnswers = inAnswers.length;
var i;
for (i=0;i< numOfAnswers;i++) {
retVal = retVal && Contains(inQTarget,inAnswers[i]);
}
return retVal;
}
function dblNumOfTopicsContains(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<=GetTopicCount(inQ);i++){
if (IsTopicVisible(inQ,i) && AnswerChoice(inQ,i) == inValueToCheck) {
retVal++;
}
}
return retVal;
}
function dblNumOfTopicsContainsChoice(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<=GetTopicCount(inQ);i++){
if (IsTopicVisible(inQ,i) && ContainsChoice(inQ,i,inValueToCheck)) {
retVal++;
}
}
return retVal;
}
function dblNumOfIterContains(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<IterationIndex;i++){
if (ContainsIter(inQ,inValueToCheck,i)) {
retVal++;
}
}
return retVal;
}
function dblSetSpecificTopic(inQ, inTopicIndex, inValue)
{
var curTopics = GetTopicCount(inQ);
var newAnswers=new Array();
var newArIdx=0;
var i;
for (i=0;i< curTopics;i++) {
var actualTopic = i+1;
if (actualTopic == inTopicIndex) {
newAnswers[i] = inValue;
}
else {
newAnswers[i] = AnswerChoice(inQ,actualTopic);
}
}
SetAnswer(inQ,newAnswers);
}
function dblSetSpecificTopicChoice(inQ, inTopicIndex, inValue)
{
var curTopics = GetTopicCount(inQ);
var newAnswers=new Array();
newAnswers.push(inValue);
var i;
var ansArr = GetAnswersChoice(inQ, inTopicIndex);
for (i=0;i < ansArr.length;i++)
{
newAnswers.push(ansArr[i]);
}
SetAnswerChoice(inQ, inTopicIndex, newAnswers);
}
function dblSetSpecificAnswer(inQ, inAnswerIdx, inChecked)
{
var curAnswers = GetAnswers(inQ);
var newAnswers=new Array();
var newArIdx=0;
var i;
for (i=0;i< curAnswers.length;i++) {
if (curAnswers[i] != inAnswerIdx) {
newAnswers[newArIdx] = curAnswers[i];
newArIdx++;
}
}
if (inChecked) {
newAnswers[newArIdx] = inAnswerIdx;
}
if (newAnswers.length > 0) {
SetAnswer(inQ,newAnswers);
}
else {
ClearAnswer(inQ);
}
}
function dblSetAnswersByAnswers(inQTarget,inQids)
{
var numOfQues = inQids.length;
var numOfAnswers = GetAnswerCount(inQids[0]);
var i;
for (i=1;i<= numOfAnswers;i++) {
var contained = false;
var j;
for (j=0; j<numOfQues;j++) {
contained = Contains(inQids[j],i);
if (contained) {
break;
}
}
if (contained) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
function dblSetAnswersByAnswersEx (inQTarget,inQids,inExcludeHiddenTargetAnswers)
{
var numOfQues = inQids.length;
var numOfAnswers = GetAnswerCount(inQids[0]);
var i;
// go over all answers and for each check if it exists in the source questions
for (i=1;i<= numOfAnswers;i++) {
var contained = false;
var j;
// go over all source questions and check if the answer is checked
for (j=0; j<numOfQues;j++) {
contained = Contains(inQids[j],i);
if (contained) {
break;
}
}
// in case it was contained check if need to add to target question
if (contained) {
var addAnswer = true;
if ((inExcludeHiddenTargetAnswers) && !IsAnswerVisible(inQTarget,i)) {
addAnswer = false;
}
if (addAnswer) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
}
function dblSumOfTopics (inQuesIdx)
{
var retVal = 0;
var i;
var numOfTopics = GetTopicCount(inQuesIdx);
for (i=0;i<numOfTopics;i++) {
var currTopic = i+1;
if (IsTopicVisible (inQuesIdx, currTopic)) {
var currValue = AnswerChoice(inQuesIdx, currTopic);
if (currValue != -99999) {
retVal += currValue;
}
}
}
return retVal;
}
function dblFormatNumberToCurrency(num) {
var retVal = "";
var num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
var sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
var cents = num%100;
num = Math.floor(num/100).toString();
var addZero = "";
if(cents<10) {
addZero = "0";
}
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
}
retVal = (((sign)?'':'-') + '$' + num + '.' +addZero+ cents)
return retVal;
}
function dblToFloat(inNumber)
{
var retVal = parseFloat(inNumber.toString().replace(",", "."));
return retVal;
}
function dblSetAnswerVisible(inQTarget,inValue,inReset,inAnswers)
{
var retVal = false;
var numOfAnswers = inAnswers.length;
var i;
if (inReset) {
SetAnswerVisible(inQTarget,true);
}
for (i=0;i< numOfAnswers;i++) {
SetAnswerVisible(inQTarget, inAnswers[i], inValue);
}
return retVal;
}
function dblContainsByText(inQIdx, inText)
{
var retVal = false;
var i=0;
for (i=0; i<GetAnswerCount(inQIdx); i++){
var idx = i+1;
var text = AnswerText(inQIdx,idx);
if (text == inText) {
if (Contains(inQIdx,idx)) {
retVal = true;
break;
}
}
}
return retVal;
}
function dblFilterAnswersByAnswersByText (inTargetQ, inShow,inSourceQ)
{
SetAnswerVisible(inTargetQ,!inShow);
var i =0;
for (i=0; i<GetAnswerCount(inTargetQ);i++){
var idx = i+1;
var text = AnswerText(inTargetQ,idx);
if (dblContainsByText(inSourceQ,text)) {
SetAnswerVisible(inTargetQ,idx,inShow);
}
}
return true;
}
function dblFilterTopicsByAnswersByText (inTargetQ, inShow, inSourceQ)
{
SetTopicVisible(inTargetQ,!inShow);
var i=0;
for (i=0; i<GetTopicCount(inTargetQ); i++){
var idx = i+1;
var text = GetTopicOriginalText(inTargetQ,idx);
if (dblContainsByText(inSourceQ,text)) {
SetTopicVisible(inTargetQ,idx,inShow);
}
}
return true;
}
function dblGetSubjectStoreRow(inStoreName,inIDColumnName,inID)
{
var retVal = null;
try {
var table = GetTableFromStore(inStoreName,"","@@"+inIDColumnName+"='"+inID+"'","");
if (table != null && table.RowCount >0) {
var row = table[0];
retVal = row;
}
}
catch(err)
{
retVal = null;
}
return retVal;
}
function dblIsRegEx (pattern,value) {
var pattern = new RegExp(pattern);
return pattern.test(value);
}
function dblDateToSQLDate(inDate)
{
var retVal = "";
retVal = inDate.Year+"-"+inDate.Month+"-"+inDate.Day;
return retVal;
}
function dblOrderArray(inOrderArray, inDataArray)
{
var retVal = CreateRandomArray(inOrderArray.length);
var i = 0;
for (i = 0; i < inOrderArray.length; i++) {
retVal[i] = inDataArray[inOrderArray[i]-1];
}
return retVal;
}
function dblRespondentID ()
{
var retVal = "".concat("D", SID, "-", DeviceIndex);
return retVal;
}
function OnReadFileTextResult(inFileName, inSuccess, inFileLines){
SetAnswer(QRef(5),inFileLines);
}
function OnWriteFileTextResult(inFileName, inSuccess, inAppended){
Prompt(inAppended); //you can use this to know when the writing function is finshed
}
/*_@_USERCODE_END_@*/
//_@_AddHandler_@{ Begin Add Handlers
//_@_AddHandler_@} End Add Handlers
//_@_HandlerZone_@{
function QuestionEnd_0()
{
if (Answer(CurrQues)==1)
{
WriteFileText("/storage/emulated/0/FileText.txt","1.Writing line 1 to file \r\n2.Writing Line 2 to File",true);
}
}
function QuestionExpression_2()
{
ReadFileText("/storage/emulated/0/FileText.txt");
}
//_@_HandlerZone_@}
function JSDBLInitAllScript()
{
}var eJumpQuestionResult = {ejqrNext:0, ejqrSubmit:1,ejqrCancel:2,ejqrFilter:3,ejqrNone:4,ejqrIndex:5,ejqrChapter:6};
var ePlatform = {None:0, Web:1, PC:2, PDA:4, MobileWeb:8, SmartPhone:16, Android:32, AllWindows:31, AllJSEnabled: 34, All:63};
var eAttachmentSource = {easDefault:0};
var eAskButtons = {OKCancel:0, YesNoCancel:1, YesNo:2};
var eAskResult = {None:0, OK:1, Yes:2, No:3, Cancel:4};
var eQuotaFilledResult = {Default:0,Filter:1,Cancel:2,Nothing:3};
var eExtraLabel = { MatrixLower:0, MatrixMiddle:1, MatrixUpper:2, MatrixIrrelevant:3, ScaleLower:4, ScaleMiddle:5, ScaleUpper:6, CountersTotal:7,CountersRemaining:8, NumericGridTotal:9, NumericGridRemaining:10 };
var eFontSize = {XSmall:-4,Smaller:-2,Small:-1,Regular:0,Large:2,Largest:8,XLarge:14};
var eULQuestionType = {eqtYesNo: 0,
eqtAmerican: 1,
eqtNumeric: 2,
eqtFreeText: 3,
eqtMultiSelect: 4,
eqtRating: 5,
eqtScale: 6,
eqtMatrix: 7,
eqtMultiTopics: 8,
eqtNoQuestion: 9,
eqtDateTime: 10,
eqtCounters: 11,
eqtStopper: 12,
eqtMassiveMultiSelect: 13,
eqtExpression: 14,
eqtMultiText: 15,
eqtMultiNumeric: 16,
eqtMultimedia: 17,
eqtMultiTopicsSelect: 18,
eqtGPSQuestion: 19,
eqtListSource: 20,
eqtPositionTopicsOnImage: 21,
eqtNumOfTypes: 22};
var eRenderGridAlignment = {Top: 0,
Center: 1,
Bottom: 2};
var eInterviewExtraField = {AttemptsPerCompletedInterview: 0,
AdherenceToMethodology: 1,
CustomData1: 2,
CustomData2: 3,
CustomData3: 4,
CustomData4: 5,
CustomData5: 6,
CustomData6: 7,
CustomDataInt1: 8,
CustomDataInt2: 9,
CustomDataInt3: 10,
CustomDataInt4: 11,
CustomDataInt5: 12,
CustomDataInt6: 13,
InterviewStopComment: 14};
</Source>
</UserLogicContents>FalseFalseFalse-101.32.0.0AAEAAAD/////AQAAAAAAAAAMAgAAAEdVc2VyTG9naWNDcmVhdG9yLCBWZXJzaW9uPTEuMC4xLjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAKVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuQXNzZW1ibHlEYXRhEAAAAAZtVGFibGUNbVN1cnZleUNvbnN0cw9tU3VydmV5U25pcHBldHMNbUNoYXB0ZXJUYWJsZQ1tTGFzdEJ1Y2tldElEEW1MYXN0TWV0YUJ1Y2tldElED21TdXJ2ZXlJbml0Q29kZRBtU3VydmV5QmxvY2tDb2RlEW1MYXN0TGlzdFNvdXJjZUlEE21MYXN0Q3VzdG9tQWN0aW9uSUQHbUZsYXZvcg5tVXNlR2xvYmFsQ29kZQttVXNlT3JnQ29kZQ5tU3RyaWN0SlNDaGVjaxdtTGFzdEF0dGFjaG1lbnRTb3VyY2VJRA5tU3VydmV5TmF2Q29kZQMDAwMAAAEBAAAEAAAAAAEeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHlN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGVbXQgICAgkU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5lRmxhdm9yAgAAAAEBAQgCAAAACQMAAAAJBAAAAAkFAAAACQYAAAABAAAAAgAAAAYHAAAAAAYIAAAAhwJmdW5jdGlvbiBPblJlYWRGaWxlVGV4dFJlc3VsdChpbkZpbGVOYW1lLCBpblN1Y2Nlc3MsIGluRmlsZUxpbmVzKXsNCglTZXRBbnN3ZXIoUVJlZig1KSxpbkZpbGVMaW5lcyk7CQ0KfQ0KDQpmdW5jdGlvbiBPbldyaXRlRmlsZVRleHRSZXN1bHQoaW5GaWxlTmFtZSwgaW5TdWNjZXNzLCBpbkFwcGVuZGVkKXsNCglQcm9tcHQoaW5BcHBlbmRlZCk7IC8veW91IGNhbiB1c2UgdGhpcyB0byBrbm93IHdoZW4gdGhlIHdyaXRpbmcgZnVuY3Rpb24gaXMgZmluc2hlZA0KfQEAAAABAAAABff///8kU3V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oIi9zdG9yYWdlL2VtdWxhdGVkLzAvRmlsZVRleHQudHh0Iik7AAVHAAAAK1N1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuUXVlc3Rpb25BY3Rpb24FAAAAGVF1ZXN0aW9uSW5mbyttUXVlc3Rpb25JZHgWUXVlc3Rpb25JbmZvK21IYXNFcnJvciJRdWVzdGlvbkluZm8rbVF1ZXN0aW9uRGVwZW5kZW5jaWVzIVF1ZXN0aW9uSW5mbyttQ2hhcHRlckRlcGVuZGVuY2llcwZBY3Rpb24AAAMDAQgBHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdAIAAAAAAAAAAAlLAAAACUwAAAAGTQAAAJABaWYgKEFuc3dlcihDdXJyUXVlcyk9PTEpDQp7DQoJV3JpdGVGaWxlVGV4dCgiL3N0b3JhZ2UvZW11bGF0ZWQvMC9GaWxlVGV4dC50eHQiLCIxLldyaXRpbmcgbGluZSAxIHRvIGZpbGUgXHJcbjIuV3JpdGluZyBMaW5lIDIgdG8gRmlsZSIsdHJ1ZSk7DQp9BEgAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdAMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBQAACAgJTgAAAAAAAAAAAAAAAUkAAABIAAAACU4AAAAAAAAAAAAAAAFLAAAASAAAAAlOAAAAAAAAAAAAAAABTAAAAEgAAAAJTgAAAAAAAAAAAAAAEE4AAAAAAAAACw==-11412726297721-111196011-1-165792-1-1-10-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