49a0d166-5993-4e18-96a8-2bf707e2eda9195c7575-c240-4707-8796-3ddc5e27e57aCAWI Multi Panel RedirectsTrueanata637499277497700000637500915887630792637500915880400000TrueFalse9False0SurveyToGo.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>eqhtEntranceRule</QTp>
<Key>4</Key>
<Name>HandleQuestionEnter_4</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>2</int>
<int>3</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEntranceRule</QTp>
<Key>3</Key>
<Name>HandleQuestionEnter_3</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>2</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtExpression</QTp>
<Key>5</Key>
<Name>QuestionExpression_5</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>1</int>
<int>6</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtStart</QTp>
<Key>0</Key>
<Name>QuestionStart_0</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>1</int>
</QDep>
<CDep />
</HData>
</Items>
<Source>// Question symbols
var Q_1 = null;var QPanel = null;var QFinish = null;var QFilter = null;var QQuota = null;var QExp = null;var EndDummy = null;var Q_8 = null;
function StartSurvey()
{
/*_@_SS_START_@*/
/*_@_SS_END_@*/
}
/*_@_USERCODE_START_@*/
function OnValidationTextRequired(inQuestionIndex, inValidationID, inMessage) {
return inMessage;
}
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 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 ######################################
//TNS
function TNS_SelectedAnswersByCodeIter (question, inIter) {
var array = [];
for (var i = 1; i <=NumOfSelectedChoicesIter(question, inIter); i++) {
array.push(AnswerCode(question, AnswerChoiceIter(question,i,inIter)));
}
return array;
}
function TNS_GetIdByCodeArr (questionID, questionAnsCode) {
var array = [], arrId=[];
array=TNS_SelectedAnswersByCode(questionAnsCode);
for (var i = 0; i < array.length; i++) {
arrId.push(GetAnswerChoiceIdxByCode(questionID, array[i]));
}
return arrId;
}
function TNS_GetIdByCodeArr2 (questionID, arrName) {
var array = [], arrId=[];
array=arrName;
for (var i = 0; i < array.length; i++) {
arrId.push(GetAnswerChoiceIdxByCode(questionID, array[i]));
}
return arrId;
}
function getRandomArbitary(min, max)
{
return Math.random() * (max - min) + min;
};
/**
* Создаёт временной штамп в формате YYYYMMDDhhmmss и кодирует его в вопрос с меткой <tsVarName>
* Возвращает получившийся штамп
* Если вопрос уже имел значение, добавляет очередное через ";"
*
* Пример: PV_setTS(TS00); // -> 20160112193559
*
* ques {int} - метка вопроса, куда будет закодирован ответ
*/
function PV_setTS(ques)
{
ques=VRef(VarName(ques));
var date=Now;
var array=[date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second];
for (var i=1;i<array.length;i++)
array[i]=N03_addLeadingZeroes(array[i],2);
if (IterationIndex==-1)
SetAnswer(ques,String(Answer(ques)).concat(Answer(ques).toString()!=""?";":"",array.join("")));
else
if (GetQuestionType(ques)==eULQuestionType.eqtMultiText)
{
var arr=[];
for (var i=1;i<=GetTopicCount(ques);arr.push(AnswerChoice(ques,i++)));
arr[IterationIndex-1]=String(AnswerChoice(ques,IterationIndex)).concat(AnswerChoice(ques,IterationIndex).toString()!=""?";":"",array.join(""));
SetAnswer(ques,arr);
//SetAnswerChoice(ques,IterationIndex,String(AnswerChoice(ques,IterationIndex)).concat(AnswerChoice(ques,IterationIndex).toString()!=""?";":"",array.join("")));
}
else if (GetQuestionType(ques)==eULQuestionType.eqtFreeText)
SetAnswer(ques,String(Answer(ques)).concat(Answer(ques).toString()!=""?";":"",array.join("").concat("(",String(IterationIndex),")")));
return array.join("");
}
function PV_setTSi(ques,inIter)
{
ques=VRef(VarName(ques));
var date=Now;
var array=[date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second];
for (var i=1;i<array.length;i++)
array[i]=N03_addLeadingZeroes(array[i],2);
if (inIter==-1)
SetAnswer(ques,String(Answer(ques)).concat(Answer(ques).toString()!=""?";":"",array.join("")));
else
if (GetQuestionType(ques)==eULQuestionType.eqtMultiText)
{
var arr=[];
for (var i=1;i<=GetTopicCount(ques);arr.push(AnswerChoice(ques,i++)));
arr[inIter-1]=String(AnswerChoice(ques,inIter)).concat(AnswerChoice(ques,inIter).toString()!=""?";":"",array.join(""));
SetAnswer(ques,arr);
//SetAnswerChoice(ques,inIter,String(AnswerChoice(ques,inIter)).concat(AnswerChoice(ques,inIter).toString()!=""?";":"",array.join("")));
}
else if (GetQuestionType(ques)==eULQuestionType.eqtFreeText)
SetAnswer(ques,String(Answer(ques)).concat(Answer(ques).toString()!=""?";":"",array.join("").concat("(",String(inIter),")")));
return array.join("");
}
//для аудио вопроса проставляет значение в вопрос <audioVarname> для дальнейшего подсчета количества отвеченных аудио вопросов
function SM_audio()
{
var audio = String("audio"+VarName(CurrQues));
IterationIndex==-1 ? SetAnswer(VRef(audio),1) : N03_SetExactAnswerChoice(VRef(audio),IterationIndex,1);
};
function PV_SelectedAnswerText(ques,idx)
{
ques=VRef(VarName(ques));
return IsOtherSpec(ques,idx)?AdditionalAnswerText(ques,idx):SelectedAnswerText(ques);
}
/*
Возвращает массив ответов Grid-вопроса.
*/
function PV_GetGridAnswers(ques)
{
ques=VRef(VarName(ques));
var arr=[];
for (var i=1;i<=GetTopicCount(ques);i++)
arr.push(AnswerChoice(ques,i)==-99999?0:AnswerChoice(ques,i));
return arr;
}
function _ids(ques,anstext)
{
ques=VRef(VarName(ques));
return GetAnswerChoiceIdx(ques,anstext);
}
/**
* Создаёт временной штамп в формате YYYYMMDDhhmmss и кодирует его в вопрос с меткой <tsVarName>
* Возвращает получившийся штамп
* Если вопрос уже имел значение, добавляет очередное через ";"
*
* Пример: PV_setTimestamp("TS00"); // -> 20160112193559
*
* tsVarName {string} - метка вопроса, куда будет закодирован ответ
*/
function PV_setTimestamp(tsVarName)
{
var date=Now;
var array=[date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second];
for (var i=1;i<array.length;i++)
array[i]=N03_addLeadingZeroes(array[i],2);
SetAnswer(VRef(tsVarName),String(Answer(VRef(tsVarName))).concat(Answer(VRef(tsVarName)).toString()!=""?";":"",array.join("")));
return array.join("");
}
function PV_setTimestampIter(tsVarName,inIter)
{
var date=Now;
var array=[date.Year,date.Month,date.Day,date.Hour,date.Minute,date.Second];
for (var i=1;i<array.length;i++)
array[i]=N03_addLeadingZeroes(array[i],2);
SetAnswerIter(VRef(tsVarName),inIter,String(Answer(VRef(tsVarName))).concat(Answer(VRef(tsVarName)).toString()!=""?";":"",array.join("")));
return array.join("");
}
/* inStr="Qx,x,y,..,z"
Qx - VarName вопроса;
x,y,..,z - индексы ответов;
return true, если содержится хотя бы один.
*/
function PV_Contains(inStr)
{
var arr=String(inStr).split(',');
if (arr.length<=1) return false;
var arrans=[];
for (var i=1;i<arr.length;arrans.push(toInt(arr[i++])));
return ContainsOneOf(VRef(String(arr[0])),arrans);
}
function PV_ContainsIter(inStr)
{
var arr=String(inStr).split(',');
if (arr.length<=1) return false;
var arrans=[];
for (var i=1;i<arr.length;arrans.push(toInt(arr[i++])));
return ContainsIterOneOf(VRef(String(arr[0])),IterationIndex,arrans);
}
/**
* Проверяет что текущая дата не больше <date>
* Возвращает true|false
*/
function PV_checkOverdue(date /*dd.mm.yyyy*/)
{
if (date=="") date=Now.Day.toString().concat(".",Now.Month.toString(),".",Now.Year.toString());
var dt1=String(date).split('.');
var dt2=[Now.Day.toString(),Now.Month.toString(),Now.Year.toString()];
return (toInt(dt1[2])*10000+toInt(dt1[1])*100+toInt(dt1[0]))-(toInt(dt2[2])*10000+toInt(dt2[1])*100+toInt(dt2[0]))<0;
}
function PV_ArrayToIntArray(arr)
{
for (var i=0;i<arr.length;i++)
arr[i]=toInt(arr[i]);
return arr;
}
function PV_GetAnswers(Ques)
{
var arr=[];
for (var i=1;i<=GetAnswerCount(Ques);i++)
if (Contains(Ques,i)) arr.push(i);
return arr;
}
function PV_GetAnswersIter(Ques,inIter)
{
var arr=[];
for (var i=1;i<=GetAnswerCount(Ques);i++)
if (ContainsIter(Ques,i,inIter)) arr.push(i);
return arr;
}
/**
* Специальные функции для темплейта 'template_n03'
*/
/**
* Автоматически подставляет инструкцию в вопрос в зависимости от типа вопроса
*/
function N03_Autoinstruction (question) {
var instructions = {
'eqtAmerican' : 'Один ответ.',
'eqtMultiTopics' : 'Один ответ по строке.',
'eqtMultiSelect' : 'Возможно несколько ответов.',
'eqtMultiTopicsSelect' : 'Возможно несколько ответов по строке.',
'eqtNumeric' : 'Введите число.',
'eqtMultimedia' : 'Интервьюер, включите аудиозапись и после зачитайте вопрос, запишите полный ответ респондента и выключите запись.'
};
var qType = String(GetQuestionType(question));
if (instructions[qType]) {
SetInstructionsText(
question,
[instructions[qType], GetInstructionsOriginalText(question)].join(' ')
);
}
Trace('question type: ' + qType);
Trace('instruction: ' + instructions[qType]);
}
function N03_RandomizeAnswersCode (question, arrayOfCodes) {
var arrayOfIndexes = [];
for (var i = 0; i < arrayOfCodes.length; i++) {
arrayOfIndexes.push(
GetAnswerChoiceIdxByCode(question, arrayOfCodes[i])
);
}
Trace(arrayOfIndexes);
return RandomizeAnswers(question, arrayOfIndexes);
}
function N03_ContainsCode (question, code) {
var idx = GetAnswerChoiceIdxByCode(question, code);
return Contains(question, idx);
}
function N03_ContainsOneOfCode (question, codes) {
for (var i = 0; i < codes.length; i++) {
var idx = GetAnswerChoiceIdxByCode(question, codes[i]);
if (Contains(question, idx)) {
return true;
}
}
return false;
}
/**
* Сверяет <code> с первыми n-1 символами кода каждого ответа
* из <question> и делает эти варианты ответа видимыми, скрывая
* остальные
*
* question {string} - номер вопроса
* code {int} - код для сверки
* checkArray {array|false} - дополнительная проверка наличия кодов
* вариантов ответа вопроса <question> в checkArray
*/
function N03_FilterCigarettesByCode (question, code, checkArray) {
var code = parseInt(code, 10);
var visible = [];
SetAnswerVisible(question, false);
if (checkArray === false) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -1);
if (code == checkCode) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
} else {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -1);
if (code == checkCode && TNS_contains(checkArray, AnswerCode(question, i))) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
}
return visible;
}
function N03_FilterCigarettesByCode2 (question, code, checkArray) {
var code = parseInt(code, 10);
var visible = [];
SetAnswerVisible(question, false);
if (checkArray === false) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -2);
if (code == checkCode) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
} else {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -2);
if (code == checkCode && TNS_contains(checkArray, AnswerCode(question, i))) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
}
return visible;
}
function N03_FilterCigarettesByCode3 (question, code, checkArray) {
var code = parseInt(code, 10);
var visible = [];
SetAnswerVisible(question, false);
if (checkArray === false) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -3);
if (code == checkCode) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
} else {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -3);
if (code == checkCode && TNS_contains(checkArray, AnswerCode(question, i))) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
}
return visible;
}
function N03_FilterCigarettesByCodes (question, codes, checkArray) {
var visible = [];
for (var i = 0; i < codes.length; i++) {
codes[i] = parseInt(codes[i], 10);
}
SetAnswerVisible(question, false);
if (checkArray === false) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -1);
if (TNS_contains(codes, checkCode)) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
} else {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -1);
if (TNS_contains(codes, checkCode) && TNS_contains(checkArray, AnswerCode(question, i))) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
}
return visible;
}
//Функция отображает SKU по кодам, отличным от HOUSE предыдущего вопроса
function N03_reFilterCigarettesByCodes (question, codes) {
var visible = [];
//создает массив с кодами ответов предыдущего вопроса(вставить перед функцией и поменять переменные вопросов)
/*var codes = [];
for(var i = 0; i<=GetAnswerCount(VRef('S19')); i++){
codes[i] = AnswerCode(VRef('S19'), i);
}*/
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -2);
if (TNS_contains(codes, checkCode)) {
SetAnswerVisible(question, i, false);
visible.push(i);
}
}
return visible;
}
function N03_FilterCigarettesByCodes2 (question, codes, checkArray) {
var visible = [];
for (var i = 0; i < codes.length; i++) {
codes[i] = parseInt(codes[i], 10);
}
SetAnswerVisible(question, false);
if (checkArray === false) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -2);
if (TNS_contains(codes, checkCode)) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
} else {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var checkCode = String(AnswerCode(question, i)).slice(0, -2);
if (TNS_contains(codes, checkCode) && TNS_contains(checkArray, AnswerCode(question, i))) {
SetAnswerVisible(question, i, true);
visible.push(i);
}
}
}
return visible;
}
/**
* Кодирует в <question> ответ, у которого текст ответа совпадает с <label>
*
* question {string} - номер вопроса
* label {string} - текст для сверки
*/
function N03_SetAnswerByLabel (question, label) {
label = String(label);
for (var i = 0; i <= GetAnswerCount(question); i++ ) {
if (String(AnswerText(question, i)) == label) return SetAnswer(question, i);
}
}
/**
* Добавляет ответ или массив ответов в малтипл вопрос
*
* question {string} - номер вопроса
* answer {int|arr} - индекс ответа, или массив индексов
*/
function N03_AddAnswers (question, answer) {
var answers = [];
for (var i = 1; i <= GetAnswerCount(question); i++) {
if (Contains(question, i)) answers.push(i);
}
answers = answers.concat(answer);
return SetAnswer(question, answers);
}
/**
* Заменяет в тексте ##varName## на значения из переменных Vars[varName];
*
* question {string} - номер вопроса
*/
function N03_hashQuestion (question)
{
var text = String(GetText(question));
var reg = /##[a-zA-Z\d]+##/g;
var result = text.match(reg);
var varname;
if (result == null) return false;
result = N03_uniqueArray(result);
for (var i = 0; i < result.length; i++)
{
varname = result[i].replace(/#/g, '');
Trace('replacing (question text) ' + result[i] + ' with "' + Vars[varname] + '"');
text = text.replace(new RegExp(result[i], 'g'), Vars[varname]);
}
return SetText(question, text);
}
function N03_hashInstruction (question)
{
var text = String(GetInstructionsText(question));
var reg = /##[a-zA-Z\d]+##/g;
var result = text.match(reg);
var varname;
if (result == null) return false;
result = N03_uniqueArray(result);
for (var i = 0; i < result.length; i++)
{
varname = result[i].replace(/#/g, '');
Trace('replacing (instruction text) ' + result[i] + ' with "' + Vars[varname] + '"');
text = text.replace(new RegExp(result[i], 'g'), Vars[varname]);
}
return SetInstructionsText(question, text);
}
function N03_hashAnswer (question, answer)
{
var text = String(AnswerText(question, answer));
var reg = /##[a-zA-Z\d]+##/g;
var result = text.match(reg);
var varname;
if (result == null) return false;
result = N03_uniqueArray(result);
for (var i = 0; i < result.length; i++)
{
varname = result[i].replace(/#/g, '');
Trace('replacing (answer'+String(answer)+' text) ' + result[i] + ' with "' + Vars[varname] + '"');
text = text.replace(new RegExp(result[i], 'g'), Vars[varname]);
}
return SetAnswerText(question, answer, text);
}
function N03_hashTopic (question, topic) {
var text = String(TopicText(question, topic));
var reg = /##[a-zA-Z\d]+##/g;
var result = text.match(reg);
var varname;
if (result == null) return false;
result = N03_uniqueArray(result);
for (var i = 0; i < result.length; i++) {
varname = result[i].replace(/#/g, '');
Trace('replacing ' + result[i] + ' with "' + Vars[varname] + '"');
text = text.replace(new RegExp(result[i], 'g'), Vars[varname]);
}
return SetTopicText(question, topic, text);
}
/**
* Разделяет строку с соответствием переменных и их отсечек на части.
* Возвращает массив массивов
*
* string {string} - строка формата S1:TS11;Q2:TS21...Qn:TSm
*/
function N03_parseTS(string)
{
var array = String(string).split(";");
var splitted;
var ts = [];
var questions = [];
for (var i = 0; i < array.length; i++)
{
splitted = array[i].split(":");
if (splitted.length > 1)
{
ts.push(splitted[0]);
questions.push(splitted[1]);
}
}
return [ts, questions];
}
/**
* Возвращает массив только с уникальными элементами
*/
function N03_uniqueArray (array) {
var resArray = [];
for (var i = 0; i < array.length; i++) {
if (indexOf(resArray, array[i]) == -1) resArray.push(array[i]);
}
return resArray;
}
/**
* Проверяет массив названий переменных. Возвращает массив названий, вопросов для которых нет в скриптею
*/
function N03_checkQuestions (array) {
var check = [];
for (var i = 0; i < array.length; i++) {
if (VRef(array[i]) == -1) check.push(array[i]);
}
return check;
}
/**
* Устанавливает конктретный AnswerChoice в переданное значение answerIdx
*/
function N03_SetExactAnswerChoice (question, choiceIdx, answerIdx) {
var array = [];
var ansCount = GetTopicCount(question);
for (var i = 1; i <= ansCount; i++) {
if (i == choiceIdx) {
array.push(answerIdx);
} else {
array.push(AnswerChoice(question, i));
}
}
return SetAnswer(question, array);
}
/**
* Генерирует уникальный код интервью.
* Возвращает массив со следующими элементами:
*
* 0 - число, по которому генерировалась КС
* 1 - уникальный код для интервьюера
* 2 - буквенный набор, по которому генерировалось число для КС
* 3, 4, 5 - <srvNum>, <gender>, <age>
*
* Пример: N03_generateUC(345, 1, 23); // -> ["070500130103", "ПКЕГАСББЛ", "КЕАСБГЛ", 345, 1, 23]
*
* srvNum {integer} - трёхзначный номер интервью
* gender {integer} - пол респондента (1 - мужчина, 2 - женщина)
* age {integer} - возраст респондента
*/
function N03_generateUC (srvNum, gender, age) {
var sortOrder = ["1325467", "7542361", "3721654", "2631475", "3412756", "4761532", "6413275", "6734521", "5623417", "1257364", "2345176", "1263457", "1347265", "6432751", "7532641", "4613527", "2564713", "5374261", "2547163", "5147632"];
var sortIdx = Math.round(Math.random() * (sortOrder.length - 1));
var sort = sortOrder[sortIdx].split("");
var alphabet = ["А", "Б", "В", "Г", "Ж", "Е", "И", "К", "Л", "М", "О", "П", "Р", "С", "У", "Ф", "Ш", "Э", "Ю", "Я"];
var sortLetters = [alphabet[sortIdx], sortIdx + 10 > alphabet.length - 1 ? alphabet[(sortIdx + 10) % (sortOrder.length - 1) - 1] : alphabet[sortIdx + 10]];
var genderRnd = [[0, 1], [2, 3]];
var cSrvNum, cDay, cGenderAge;
var letters = [];
var lettersSorted = [];
var numbers = [];
srvNum = parseInt(srvNum, 10);
cGenderAge = genderRnd[parseInt(gender, 10) - 1][Math.round(Math.random())];
age = parseInt(age, 10);
cDay = FormatNumber(TimeDiffDays(Now, CreateDate(String(Now.Year).concat("-01-01"))), 0, true);
cSrvNum = (srvNum - 200);
cGenderAge = (cGenderAge * 100 + age);
Trace("Coded srv params:");
Trace(" cDay = " + cDay);
Trace(" cSrvNum = " + cSrvNum);
Trace(" cGenderAge = " + cGenderAge);
numbers = [Math.floor(cSrvNum / 20), cSrvNum % 20, Math.floor(cDay / 20), cDay % 20, Math.floor(cGenderAge / 20), cGenderAge % 20];
Trace("Result numbers:");
Trace(" " + numbers.join(", "));
for (var i = 0; i < numbers.length; i++) {
letters.push( alphabet[numbers[i]] );
numbers[i] = N03_addLeadingZeroes(numbers[i], 2);
}
letters.push(alphabet[ generateCheckSum(numbers.join("")) ]);
for (var j = 0; j < 7; j++) {
lettersSorted.push(letters[parseInt(sort[j], 10) - 1]);
}
lettersSorted.splice(6, 0, sortLetters[1]);
lettersSorted.splice(0, 0, sortLetters[0]);
return [numbers.join(""), lettersSorted.join(""), letters.join(""), srvNum, gender, age];
}
/**
* Разбирает уникальный код интервью на составные части.
* Возвращает массив, где:
*
* 0 - true|false флаг, верна ли контрольная сумма
* 1 - трёхзначный номер интервью
* 2 - кол-во дней от начала года
* 3 - пол респондента
* 4 - возраст респондента
*
* UC {string} - уникальный код интервью
*/
function N03_parseUC (UC) {
var alphabet = ["А", "Б", "В", "Г", "Ж", "Е", "И", "К", "Л", "М", "О", "П", "Р", "С", "У", "Ф", "Ш", "Э", "Ю", "Я"];
var sortOrder = ["1325467", "7542361", "3721654", "2631475", "3412756", "4761532", "6413275", "6734521", "5623417", "1257364", "2345176", "1263457", "1347265", "6432751", "7532641", "4613527", "2564713", "5374261", "2547163", "5147632"];
var ucArray = UC.split("");
var sort = sortOrder[indexOf(alphabet, ucArray[0])].split("");
var ucArraySorted = [];
var numbers = [];
var checksum = false;
var day, age, gender, srvNum;
ucArray.splice(0, 1);
ucArray.splice(6, 1);
for (var i = 0; i < ucArray.length; i++) {
ucArraySorted[parseInt(sort[i], 10) - 1] = ucArray[i];
}
for (var j = 0; j < ucArraySorted.length; j++) {
if (j < ucArraySorted.length - 1) {
numbers.push( N03_addLeadingZeroes(indexOf(alphabet, ucArraySorted[j]), 2) );
} else {
numbers.push( indexOf(alphabet, ucArraySorted[j]) );
}
}
checksum = TNS_CheckSum(numbers.join(""));
srvNum = parseInt(numbers[0], 10) * 20 + parseInt(numbers[1], 10) + 200;
day = parseInt(numbers[2], 10) * 20 + parseInt(numbers[3], 10);
gender = parseInt(numbers[4], 10) * 20 + parseInt(numbers[5], 10);
age = parseInt((gender / 100).toFixed(2).split('.')[1], 10);
gender = parseInt((gender / 100).toFixed(2).split('.')[0], 10);
if (gender <= 1) {
gender = 1;
} else if (gender >= 2) {
gender = 2;
}
return [checksum, srvNum, day, gender, age];
}
/**
* Меняет стандартный текст отказа по фильтру на указанный. Сбрасывает его на стандартный, если <condition> == false.
* Возвращает <condition>, можно использовать прямо в jump rules
*
* Пример: N03_customRejectText(Answer(CurrQues) == 3, "К сожалению, люди, работающие в данной области, не могут принимать участие в нашем опросе");
*
* condition {boolean} - условие по которому либо текст будет изменён, либо проставится стандартный текст
* text {string} - текст, который подставится в вопрос 'REJECT_TEXT'
*/
function N03_customRejectText (condition, text) {
var question = VRef("REJECT_TEXT");
var defaultText = Vars["DEFAULT_FAIL_TEXT"];
if (condition) {
SetText(question, text);
} else {
SetText(question, defaultText);
}
return condition;
}
/**
* Добавляет к <str> нули в начало строки, пока длина строки не будет <max>
* Возвращает получившуюся строку
*
* Пример: N03_addLeadingZeroes('1', 5); // -> '00001'
*
* str {string} - строка
* max {integer} - итоговая длина строки
*/
function N03_addLeadingZeroes (str, max) {
var string = String(str);
for (var i = string.length; i < max; i++) {
string = String("0").concat(string);
}
return string;
}
/**
* Сравнивает две версии ПО в semver формате
* Если <isEmu> == true, сразу возвращает 0. Если версия <a> больше <b>, возвращает 1. Если <b> больше <a>, возвращает -1. Если <a> равно <b>, возвращает 0.
*
* Author: James Halliday <substack@gmail.com>
* Git: https://github.com/substack/semver-compare
* This software is released under the MIT license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
function N03_compareVersions (a, b, isEmu) {
var pa = String(a).split('.');
var pb = String(b).split('.');
if (isEmu == true) return 0;
for (var i = 0; i < pa.length; i++) {
var na = Number(pa[i]);
var nb = Number(pb[i]);
if (na > nb) return 1;
if (nb > na) return -1;
if (!isNaN(na) && isNaN(nb)) return 1;
if (isNaN(na) && !isNaN(nb)) return -1;
}
return 0;
}
/**
* Проверяет что текущая дата не больше <date>
* Возвращает true|false
*
* date {string} - дата, от которой считается количество дней до сегодня
*/
function N03_checkOverdue (date) {
var dateNow = "";
var dateThen = "";
dateNow = String(Now.Year).concat('.', Now.Month, '.', Now.Day);
if (date == "") {
dateThen = dateNow;
} else {
dateThen = date;
}
Trace("check date: " + dateNow);
Trace("overdue date: " + dateThen);
var result = N03_compareVersions(dateThen, dateNow, false);
Trace("overdue check: " + result);
return result < 0;
}
/**
* Создаёт временной штамп в формате YYYYMMDDhhmmss и кодирует его в вопрос с меткой <tsVarName>
* Возвращает получившийся штамп
*
* Пример: N03_setTimestamp("TS00"); // -> 20160112193559
*
* tsVarName {string} - метка вопроса, куда будет закодирован ответ
*/
function N03_setTimestamp (tsVarName) {
var date = Now;
var array = [date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second];
for (var i = 1; i < array.length; i++) {
array[i] = N03_addLeadingZeroes(array[i], 2);
}
SetAnswer(VRef(tsVarName), array.join(""));
return array.join("");
}
/**
* Проставляет ответ в Single/Multiple Choice вопрос по его коду (массиву кодов)
*
* question {Question} - вопрос
* answers {integer|array} - код ответа или массив кодов
*/
function N03_SetAnswerByCode (question, answers) {
var ansConverted;
if (Object.prototype.toString.call(answers) == "[object Array]") {
ansConverted = [];
for (var i = 0; i < answers.length; i++) {
ansConverted.push(GetAnswerChoiceIdxByCode(question, parseInt(answers[i], 10)));
}
} else {
ansConverted = GetAnswerChoiceIdxByCode(question, parseInt(answers, 10));
}
return [SetAnswer(question, ansConverted), ansConverted];
}
// индекс элемента массива
function indexOf(arr,element)
{
var i;
for (i=0;i<arr.length && arr[i]!=element;i++);
return i!=arr.length?i:-1;
}
function TNS_SelectedAnswers (question) {
var array = [];
for (var i = 1; i <= GetAnswerCount(question); i++) {
if (Contains(question, i)) {
array.push(i);
}
}
return array;
}
function TNS_SelectedAnswersByCode (question) {
var array = [];
for (var i = 1; i <= GetAnswerCount(question); i++) {
if (Contains(question, i)) {
array.push(AnswerCode(question, i));
}
}
return array;
}
function SM_used (question) {
return TNS_SelectedAnswers(question).length;
}
function TNS_SetAnswerTextByIterName (question) {
var labels = IterationName.split("|");
SetAnswerText(question, 1,
GetAnswerOriginalText(question, 1) + " - " + labels[0]
);
SetAnswerText(question, 5,
GetAnswerOriginalText(question, 5) + " - " + labels[1]
);
}
function TNS_replaceAll(str, lookFor, replaceWith) {
while (stringContains(str, lookFor)) {
str = str.replace(lookFor, replaceWith);
}
return str;
}
function TNS_between (num, min, max) {
return (num <= max && num >= min);
}
function TNS_isEmailValid(email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email);
}
function TNS_GetAnswersAsString(QuestionIdx) {
var question = QuestionIdx;
var strAns = "";
for (var i = 1; i <= GetAnswerCount(question); i++) {
if (Contains(question, i)) {
strAns = strAns + String(GetAnswerOriginalText(question, i)) + ", "
}
}
strAns = strAns.substr(0, strAns.length - 2);
return strAns;
}
function _mcode(question,i)
{
return AnswerCode(question,i);
}
function _scode(question)
{
return AnswerCode(question,Answer(question));
}
function _scodeM(question, AnswerChoiceN)
{
return AnswerCode(question,AnswerChoice(question,AnswerChoiceN));
}
function _idx(question, code)
{
return GetAnswerChoiceIdxByCode(VRef(question),code);
}
function _idy(question, code)
{
return GetAnswerChoiceIdxByCode(question,code);
}
function _idz(code)
{
return _idy(CurrQues,code);
}
function PV_SetAnswerVisibleByText(question,arrayOfTexts)
{
SetAnswerVisible(question,false);
for (var i=1;i<=GetAnswerCount(question);i++)
SetAnswerVisible(question,i,TNS_contains(arrayOfTexts,AnswerText(question,i)));
}
function TNS_SetAnswerVisibleByCode(question,visible,reset,arrayOfCodes,checkArray)
{
var visibleArr=[];
if (checkArray===false)
{
for (var i=GetAnswerCount(question),ansLen=i;i>0;i--)
{
var ansCode=AnswerCode(question,i);
if (TNS_contains(arrayOfCodes,ansCode))
{
visibleArr.push(i);
SetAnswerVisible(question,i,visible);
}
else if (reset)
{
SetAnswerVisible(question,i,!visible);
}
}
}
else
{
for (var i=GetAnswerCount(question),ansLen=i;i>0;i--)
{
var ansCode=AnswerCode(question,i);
if (TNS_contains(arrayOfCodes,ansCode) && TNS_contains(checkArray,ansCode))
{
visibleArr.push(i);
SetAnswerVisible(question,i,visible);
}
else if (reset)
{
SetAnswerVisible(question,i,!visible);
}
}
}
return visibleArr;
}
function TNS_FilterByCode(question, code, checkArray){
var visible = [],
codeLen = String(code).length;
if (checkArray === false) {
for (var i = GetAnswerCount(question), ansLen = i; i > 0; i--) {
var codeToCompare = String(AnswerCode(question, i)).substr(0, codeLen);
if (parseInt(codeToCompare, 10) == parseInt(code, 10)) {
visible.push(i);
SetAnswerVisible(question, i, true);
} else {
SetAnswerVisible(question, i, false);
}
}
} else {
for (var i = GetAnswerCount(question), ansLen = i; i > 0; i--) {
var codeToCompare = String(AnswerCode(question, i)).substr(0, codeLen);
if ((parseInt(codeToCompare, 10) == parseInt(code, 10)) && TNS_contains(checkArray, AnswerCode(question, i))) {
visible.push(i);
SetAnswerVisible(question, i, true);
} else {
SetAnswerVisible(question, i, false);
}
}
}
return visible;
}
/*
function SetAnswerVisibleByCode(Question){
var ids = Array.prototype.slice.call(arguments);
ids = ids.splice(1, ids.length);
SetAnswerVisible(Question, false);
for (var i = 1; i <= GetAnswerCount(Question); i++){
if (TNS_contains(ids, AnswerCode(Question, i))){
SetAnswerVisible(Question, i, true);
}
}
}
*/
function TNS_CheckSum(number){
var d=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
];
var p=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
[7, 0, 4, 6, 9, 1, 3, 2, 5, 8]
];
function invArray(array){
if (Object.prototype.toString.call(array) == "[object Number]"){
array = String(array);
}
if (Object.prototype.toString.call(array) == "[object String]"){
array = array.split("");//.map(Number);
for (var i = 0; i < array.length; i++) {
array[i] = parseInt(array[i], 10);
}
}
return array.reverse();
}
var c = 0;
var invertedArray = invArray(number);
for (var i = 0; i < invertedArray.length; i++){
c=d[c][p[(i % 8)][invertedArray[i]]];
}
return (c === 0);
}
function TNS_CheckTabNum(number){
var d=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
];
var p=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
[7, 0, 4, 6, 9, 1, 3, 2, 5, 8]
];
function invArray(array){
if (Object.prototype.toString.call(array) == "[object Number]"){
array = String(array);
}
if (Object.prototype.toString.call(array) == "[object String]"){
array = array.split("");//.map(Number);
for (var i = 0; i < array.length; i++) {
array[i] = parseInt(array[i], 10);
}
}
return array.reverse();
}
var c = 0;
var invertedArray = invArray(number);
for (var i = 0; i < invertedArray.length - 1; i++){
c=d[c][p[(i % 8)][invertedArray[i]]];
}
return (c === 0);
};
function TNS_addCodes(question){
//var arr = String(Vars[arrayName]).split("|");
//if (TNS_contains(arr, VarName(question))) {
for (var i = 1; i <= GetAnswerCount(question); i++) {
var text = AnswerText(question, i)
if (AnswerCode(question, i) < 100 && isNaN(parseInt(text.charAt(0), 10))) {
SetAnswerText(question, i,
String(AnswerCode(question, i)).concat(" - " + text)
);
}
}
//}
}
function TNS_addCodesUni(question, symbol)
{
//var arr = String(Vars[arrayName]).split("|");
//if (TNS_contains(arr, VarName(question))) {
for (var i = 1; i <= GetAnswerCount(question); i++)
{
var text = AnswerText(question, i)
//if (AnswerCode(question, i) < 100 && isNaN(parseInt(text.charAt(0), 10)))
if (text.indexOf(String(AnswerCode(question, i)).concat(symbol))!=0)
{
SetAnswerText(question, i,String(AnswerCode(question, i)).concat(symbol + text));
}
}
//}
}
function toInt(number)
{
return number && + number | 0 || null;
}
function TNS_random(min,max)
{
return Math.floor(Math.random()*(max-min+1)+min);
}
/*
Генерирует трёхзначное случайное число (от 100 до 999)
*/
function TNS_rand(){
return Math.floor(Math.random()*(999-100+1)+100);
}
function TNS_rand3()
{
return TNS_rand();
}
/*
Генерирует случайное 4х значное число
*/
function TNS_listID(){
var id = Math.floor(Math.random()*(9999-1000+1)+1000);
return id;
}
function TNS_rand4()
{
return TNS_listID();
}
function TNS_rand2()
{
var id = Math.floor(Math.random()*(1-0+1)+0);
return id;
}
/*
Перемешиваем массив
*/
function TNS_shuffle(o)
{
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
/*
Перемешивание элементов массива случайным образом
*/
function TNS_RandomizeArray(inputarray)
{
var currentIndex = inputarray.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex)
{
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = inputarray[currentIndex];
inputarray[currentIndex] = inputarray[randomIndex];
inputarray[randomIndex] = temporaryValue;
}
return inputarray;
}
/*
Этот скрипт показывает (и скрывает все остальные) или скрывает
определённую последовательность ответов (от "chainStart" до "chainStop")
для определённого ответа ("answerIdx") в другом вопросе ("controlQuestion").
Может использоваться только в Question Start Script.
Пример: Demo Customer -> Temp -> big_list_visibility_test
*/
function TNS_ChainVisibility(controlQuestion,answerIdx,chainStart,chainStop,tOrF) {
var retVal=false
if (Answer(controlQuestion)==answerIdx) {
SetAnswerVisible(CurrQues,!tOrF);
for (var i=chainStart;i<=chainStop;i++) {
SetAnswerVisible(CurrQues,i,tOrF)
}
retVal=true
}
return retVal
}
/*Для клиники пытаюсь отображать ответы в нужном порядке*/
function TNS_SetQuesOrder(controlQuestion,variant0)
{
var retVal=false;
if (variant0==8)
{
switch(Answer(controlQuestion).ToInt())
{
case 1: RandomizeAnswers(CurrQues,[1,2,3,4,5,6,7,8]); break;
case 2: RandomizeAnswers(CurrQues,[4,1,2,3,5,6,7,8]); break;
case 3: RandomizeAnswers(CurrQues,[3,4,1,2,5,6,7,8]); break;
case 4: RandomizeAnswers(CurrQues,[2,3,4,1,5,6,7,8]); break;
case 5: RandomizeAnswers(CurrQues,[4,5,6,7,1,2,3,8]); break;
case 6: RandomizeAnswers(CurrQues,[7,4,5,6,1,2,3,8]); break;
case 7: RandomizeAnswers(CurrQues,[6,7,4,5,1,2,3,8]); break;
case 8: RandomizeAnswers(CurrQues,[5,6,7,4,1,2,3,8]); break;
}
retVal=true;
}
if (variant0==7)
{
switch(Answer(controlQuestion).ToInt())
{
case 1: RandomizeAnswers(CurrQues,[1,2,3,4,5,6,7]); break;
case 2: RandomizeAnswers(CurrQues,[4,1,2,3,5,6,7]); break;
case 3: RandomizeAnswers(CurrQues,[3,4,1,2,5,6,7]); break;
case 4: RandomizeAnswers(CurrQues,[2,3,4,1,5,6,7]); break;
case 5: RandomizeAnswers(CurrQues,[4,5,6,7,1,2,3]); break;
case 6: RandomizeAnswers(CurrQues,[7,4,5,6,1,2,3]); break;
case 7: RandomizeAnswers(CurrQues,[6,7,4,5,1,2,3]); break;
case 8: RandomizeAnswers(CurrQues,[5,6,7,4,1,2,3]); break;
}
retVal=true;
}
return retVal;
}
function TNS_SetQuesOrderEx(whatQuestion,controlQuestion,variant0)
{
var retVal=false;
if (variant0==8)
{
switch(Answer(controlQuestion).ToInt())
{
case 1: RandomizeAnswers(whatQuestion,[1,2,3,4,5,6,7,8]); break;
case 2: RandomizeAnswers(whatQuestion,[4,1,2,3,5,6,7,8]); break;
case 3: RandomizeAnswers(whatQuestion,[3,4,1,2,5,6,7,8]); break;
case 4: RandomizeAnswers(whatQuestion,[2,3,4,1,5,6,7,8]); break;
case 5: RandomizeAnswers(whatQuestion,[4,5,6,7,1,2,3,8]); break;
case 6: RandomizeAnswers(whatQuestion,[7,4,5,6,1,2,3,8]); break;
case 7: RandomizeAnswers(whatQuestion,[6,7,4,5,1,2,3,8]); break;
case 8: RandomizeAnswers(whatQuestion,[5,6,7,4,1,2,3,8]); break;
}
retVal=true;
}
if (variant0==7)
{
switch(Answer(controlQuestion).ToInt())
{
case 1: RandomizeAnswers(whatQuestion,[1,2,3,4,5,6,7]); break;
case 2: RandomizeAnswers(whatQuestion,[4,1,2,3,5,6,7]); break;
case 3: RandomizeAnswers(whatQuestion,[3,4,1,2,5,6,7]); break;
case 4: RandomizeAnswers(whatQuestion,[2,3,4,1,5,6,7]); break;
case 5: RandomizeAnswers(whatQuestion,[4,5,6,7,1,2,3]); break;
case 6: RandomizeAnswers(whatQuestion,[7,4,5,6,1,2,3]); break;
case 7: RandomizeAnswers(whatQuestion,[6,7,4,5,1,2,3]); break;
case 8: RandomizeAnswers(whatQuestion,[5,6,7,4,1,2,3]); break;
}
retVal=true;
}
return retVal;
}
/*
Скрывает или показывает определённую последовательность вариантов ответов
*/
function TNS_ChainVisibilityUni(QuestionIdx,chainStart,chainStop,tOrF) {
var retVal=false
for (var i=chainStart;i<=chainStop;i++) {
SetAnswerVisible(QuestionIdx,i,tOrF)
}
retVal=true
return retVal
}
/*
Для Nokia хитрый фильтр
*/
function TNS_tryCorE(start,end,q1,q2,q3){
var retVal = false;
for (var i=start;i<=end;i++){
if (ContainsAnyIter(q1,i)) {
retVal = true;
break;
};
if (Contains(q2,i)) {
retVal = true;
break;
};
if (Contains(q3,i)) {
retVal = true;
break;
};
}
return retVal;
};
/*
Этот скрипт фильтрует ответы по первым n символам ("symbolN") ответа
в другом вопросе ("controlQuestion"). Например список с марками
сигарет (Kent, Marlboro), а в следующем вопросе различные вариации
(Kent HD, Kent SuperSlims, Marlboro Classic, Marlboro Mint)
Может использоваться только в Question Start Script.
Пример: Demo Customer -> Temp -> FF Moscow & Spb TEST вопрос (21)
*/
function TNS_TextControl(controlQuestion,symbolN) {
var retVal=false
SetAnswerVisible(CurrQues,false)
var currCount=GetAnswerCount(CurrQues)
var ansText=AnswerText(controlQuestion,Answer(controlQuestion)).substring(0,symbolN)
for (var i=1;i<=currCount;i++) {
var currText=AnswerText(CurrQues,i).substring(0,symbolN)
SetAnswerVisible(CurrQues,i,ansText==currText)
if (ansText==currText) retVal=true
}
return retVal
}
/*
Тоже самое, только круче (сам находитн нужный отрезок текста, требуется только указать вопрос)
Пример: Demo Customer -> Temp -> FF Moscow & Spb TEST вопрос (21)
*/
function TNS_TextControlAuto(controlQuestion) {
var retVal = [];
SetAnswerVisible(CurrQues,false)
var currCount=GetAnswerCount(CurrQues)
var ansText=AnswerText(controlQuestion,Answer(controlQuestion))
var divider=['/','-'] //список можно дополнять
for (var i=0;i<=divider.length;i++) {
if (ansText.indexOf(divider[i])!=-1) {
ansText=ansText.slice(0,ansText.indexOf(divider[i])-1)
}
}
for (var i=1;i<=currCount;i++) {
var currText=AnswerText(CurrQues,i).substring(0,ansText.length)
SetAnswerVisible(CurrQues,i,ansText==currText)
if (ansText==currText) retVal.push(i);
}
return retVal
}
/*
Тоже самое, только только без учёта регистра
Пример: Demo Customer -> Temp -> FF Moscow & Spb TEST вопрос (21)
*/
function TNS_TextControlAutoNotCaseSensitive(controlQuestion)
{
var retVal = [];
SetAnswerVisible(CurrQues,false);
var currCount=GetAnswerCount(CurrQues);
var ansText=AnswerText(controlQuestion,Answer(controlQuestion)).toUpperCase();
var divider=['/','-']; //список можно дополнять
for (var i=0;i<=divider.length;i++)
{
if (ansText.indexOf(divider[i])!=-1)
{
ansText=ansText.slice(0,ansText.indexOf(divider[i])-1);
}
}
for (var i=1;i<=currCount;i++)
{
var currText=AnswerText(CurrQues,i).substring(0,ansText.length).toUpperCase();
SetAnswerVisible(CurrQues,i,ansText==currText);
if (ansText==currText) retVal.push(i);
}
return retVal;
}
/*
Функция для сортировки ответов в данном вопросе по AnswerCode ответа в RefQues.
Очень удобно для сигаретных опросов.
*/
function TNS_AnsCodeFilter(RefQues) {
SetAnswerVisible(CurrQues,false)
var retVal = [];
var CurrAnsCount=GetAnswerCount(CurrQues)
var RefQuesAnsCode=AnswerCode(RefQues,Answer(RefQues))
for (var i=1;i<=CurrAnsCount;i++) {
var CurrAnsCode=AnswerCode(CurrQues,i).substring(0,RefQuesAnsCode.length)
SetAnswerVisible(CurrQues,i,CurrAnsCode==RefQuesAnsCode)
if (CurrAnsCode==RefQuesAnsCode) retVal.push(i);
}
return retVal
}
/*Скрипт для генерации контрольного числа Верхуффа*/
function generateCheckSum(array){
var c=0;
var invertedArray=[];
var d=[
[0,1,2,3,4,5,6,7,8,9],
[1,2,3,4,0,6,7,8,9,5],
[2,3,4,0,1,7,8,9,5,6],
[3,4,0,1,2,8,9,5,6,7],
[4,0,1,2,3,9,5,6,7,8],
[5,9,8,7,6,0,4,3,2,1],
[6,5,9,8,7,1,0,4,3,2],
[7,6,5,9,8,2,1,0,4,3],
[8,7,6,5,9,3,2,1,0,4],
[9,8,7,6,5,4,3,2,1,0]
];
var p=[
[0,1,2,3,4,5,6,7,8,9],
[1,5,7,6,2,8,3,0,9,4],
[5,8,0,3,7,9,6,1,4,2],
[8,9,1,6,0,4,3,5,2,7],
[9,4,5,3,1,2,6,8,7,0],
[4,2,8,6,5,7,3,9,0,1],
[2,7,9,3,8,0,6,4,1,5],
[7,0,4,6,9,1,3,2,5,8]
];
var inv=[0, 4, 3, 2, 1, 5, 6, 7, 8, 9];
for (var i=array.length-1;i>=0;i--){
invertedArray.push(array[i]);
}
for (var i=0;i<invertedArray.length;i++){
c=d[c][p[((i+1)%8)][invertedArray[i]]];
}
// array.push(c);
return inv[c];
}
/*Скрипт для кодирования временного промежутка для уникального кода интервью*/
function returnTimeDiff(timeDiff){
var timeCode=[
["К","Б","А"],
["У","Э"],
["Е","И"],
["Р","Т"],
["Л","С","Я"]
];
var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
var rndTimeIdx=Math.floor((Math.random()*100)+1);
var rndLetterIdx=Math.floor(Math.random()*10);
var text=new String();
var i,j;
if (timeDiff<1){
i=0;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
} else if (timeDiff>=1 && timeDiff<3){
i=1;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=3 && timeDiff<4){
i=2;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=4 && timeDiff<5){
i=3;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=5){
i=4;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
};
text=rndLetter[rndLetterIdx]+timeCode[i][j];
return text;
}
function returnTimeDiff_BLM(timeDiff){
var timeCode=[
["К","Б","А"],
["У","Э"],
["Е","И"],
["Р","Т"],
["Л","С","Я"]
];
var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
var rndTimeIdx=Math.floor((Math.random()*100)+1);
var rndLetterIdx=Math.floor(Math.random()*10);
var text=new String();
var i,j;
if (timeDiff<1){
i=0;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
} else if (timeDiff>=1 && timeDiff<3){
i=1;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=3 && timeDiff<6){
i=2;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=6 && timeDiff<10){
i=3;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=10){
i=4;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
};
text=rndLetter[rndLetterIdx]+timeCode[i][j];
return text;
}
/*
***********************************************************************
** Универсальный скрипт для генерации кода, использовать ТОЛЬКО его! **
***********************************************************************
*/
function returnTimeDiff_Uni1(timeDiff){
var timeCode=[
["К","Б"],
["У","Э"],
["Е","И"],
["Р","Т"],
["Л","С"],
["А","Я"]
];
var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
var rndTimeIdx=Math.floor((Math.random()*100)+1);
var rndLetterIdx=Math.floor(Math.random()*10);
/*3,7,12,17,25,*/
var t1=3;
var t2=7;
var t3=12;
var t4=17;
var t5=25;
var text=new String();
var i,j;
if (timeDiff<t1){
i=0;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t1 && timeDiff<t2){
i=1;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t2 && timeDiff<t3){
i=2;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t3 && timeDiff<t4){
i=3;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
}else if (timeDiff>=t4 && timeDiff<t5){
i=4;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
}
else if (timeDiff>=t5){
i=5;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
};
text=rndLetter[rndLetterIdx]+timeCode[i][j];
return text;
}
function returnTimeDiff_Uni(timeDiff,t1,t2,t3,t4){
var timeCode=[
["К","Б","А"],
["У","Э"],
["Е","И"],
["Р","Т"],
["Л","С","Я"]
];
var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
var rndTimeIdx=Math.floor((Math.random()*100)+1);
var rndLetterIdx=Math.floor(Math.random()*10);
var text=new String();
var i,j;
if (timeDiff<t1){
i=0;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
} else if (timeDiff>=t1 && timeDiff<t2){
i=1;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t2 && timeDiff<t3){
i=2;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t3 && timeDiff<t4){
i=3;
if (rndTimeIdx<=50){
j=0;
} else if (rndTimeIdx>50) {
j=1;
};
} else if (timeDiff>=t4){
i=4;
if (rndTimeIdx<33){
j=0;
} else if (rndTimeIdx>=33 && rndTimeIdx<66) {
j=1;
} else if (rndTimeIdx>=66) {
j=2;
};
};
text=rndLetter[rndLetterIdx]+timeCode[i][j];
return text;
}
/*Скрипт для декодирования уникального кода интервью*/
function decodeArray(text){
var array=[];
var dcArray=[];
var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
var letter = /^[А-Я]/;
var number = /^[0-9]/;
var flag=false;
for (var i=0;i<=text.length-1;i++){
if (text.charAt(i).match(letter)||text.charAt(i).match(number)){
array.push(text.charAt(i).toString());
};
};
for (var i=0;i<=array.length-1;i++){
if (array[i].match(number)){
dcArray.push(array[i]);
} else if (array[i].match(letter)) {
if (!flag) {
for (var j=0;j<=rndLetter.length-1;j++){
if (array[i]==rndLetter[j]){
dcArray.push(j);
break;
};
};
flag=true;
} else {
switch (array[i]) {
case "К":
case "Б":
case "А":
dcArray.push(1);
break;
case "У":
case "Э":
dcArray.push(2);
break;
case "Е":
case "И":
dcArray.push(3);
break;
case "Р":
case "Т":
dcArray.push(4);
break;
case "Л":
case "С":
case "Я":
dcArray.push(5);
break;
default:
dcArray.push(0);
break;
};
};
};
};
return dcArray;
}
/*
Выдаётся индекс модели по букве (CarClinic)
*/
function TNS_GetModelCodeByLetter(ModelLetter)
{
var ModelCode=0;
ModelCode=ModelLetter=="K"?1:ModelCode;
ModelCode=ModelLetter=="U"?2:ModelCode;
ModelCode=ModelLetter=="L"?3:ModelCode;
ModelCode=ModelLetter=="N"?4:ModelCode;
ModelCode=ModelLetter=="R"?5:ModelCode;
ModelCode=ModelLetter=="P"?6:ModelCode;
return ModelCode
}
/*скрипт для кодировки промежутков (типа age_code)*/
function TNS_intCoder(QIndex,Arr){
//////////////////////
}
/* содержится ли элемент n в массиве arr */
function TNS_contains(arr,n) {
var i = arr.length;
while (i--) {
if (arr[i] == n) {
return true;
}
}
return false;
}
function TNS_betweenArr(arr,n)
{
// Правильно передавать массив из двух лишь значений TNS_between([0,2],1)
return n>=arr[0] && n<=arr[arr.length-1];
}
function TNS_CurrAnsBetween(min,max)
{
// Правильно передавать массив из двух лишь значений TNS_CurrAnsBetween([0,2])
return Answer(CurrQues)>=min && Answer(CurrQues)<=max;
}
function TNS_CurrAnsToQx(Qx,arr)
{
var i=0;
var age=0;
for (;i<arr.length;i++)
{
if (Answer(CurrQues)>=age && Answer(CurrQues)<arr[i])
{
SetAnswer(Qx,i+1);
age=arr[i];
}
}
if (Answer(CurrQues)>=arr[i-1]) SetAnswer(Qx,i+1);
}
/*** Для GSC ***/
function TNS_GCS_isinSKU(skuQuestion,xQuestion,i) {
var xcode=AnswerCode(xQuestion,i).toString();
var retVal=false;
for (var j=1;j<=GetAnswerCount(skuQuestion);j++)
{
if (xcode==AnswerCode(skuQuestion,j).toString().substring(0,3) && Contains(skuQuestion,j))
{
retVal=true;
continue;
}
}
return retVal;
}
/*** Для GSC первычисление кодов из sku в house ***/
function TNS_RecalcSKU(inCode) {
var retVal = -1;
if (inCode=9003) retVal=1;
if (inCode=9001) retVal=2;
if (inCode=9002) retVal=2;
if (inCode=9253) retVal=3;
if (inCode=9329) retVal=4;
if (inCode=1011) retVal=5;
if (inCode=1012) retVal=5;
if (inCode=1013) retVal=5;
if (inCode=1015) retVal=5;
if (inCode=1021) retVal=5;
if (inCode=1031) retVal=5;
if (inCode=9398) retVal=6;
if (inCode=9021) retVal=7;
if (inCode=9022) retVal=7;
if (inCode=9004) retVal=8;
if (inCode=9023) retVal=9;
if (inCode=9383) retVal=10;
if (inCode=9351) retVal=11;
if (inCode=9352) retVal=11;
if (inCode=1111) retVal=12;
if (inCode=1112) retVal=12;
if (inCode=1113) retVal=12;
if (inCode=1121) retVal=12;
if (inCode=1122) retVal=12;
if (inCode=1131) retVal=12;
if (inCode=1141) retVal=12;
if (inCode=9364) retVal=13;
if (inCode=9254) retVal=14;
if (inCode=9255) retVal=15;
if (inCode=9005) retVal=16;
if (inCode=9298) retVal=17;
if (inCode=9006) retVal=18;
if (inCode=9007) retVal=18;
if (inCode=9008) retVal=18;
if (inCode=9009) retVal=19;
if (inCode=9010) retVal=19;
if (inCode=9011) retVal=19;
if (inCode=9012) retVal=19;
if (inCode=9380) retVal=19;
if (inCode=9013) retVal=20;
if (inCode=9014) retVal=20;
if (inCode=9015) retVal=20;
if (inCode=1311) retVal=21;
if (inCode=1312) retVal=21;
if (inCode=1313) retVal=21;
if (inCode=1314) retVal=21;
if (inCode=1321) retVal=21;
if (inCode=1322) retVal=21;
if (inCode=9291) retVal=22;
if (inCode=9016) retVal=23;
if (inCode=9017) retVal=23;
if (inCode=9018) retVal=23;
if (inCode=9019) retVal=24;
if (inCode=9020) retVal=25;
if (inCode=9256) retVal=26;
if (inCode=9257) retVal=26;
if (inCode=9233) retVal=27;
if (inCode=9373) retVal=28;
if (inCode=9386) retVal=28;
if (inCode=1411) retVal=29;
if (inCode=1413) retVal=29;
if (inCode=1414) retVal=29;
if (inCode=9210) retVal=30;
if (inCode=9226) retVal=31;
if (inCode=9024) retVal=32;
if (inCode=9025) retVal=33;
if (inCode=9026) retVal=34;
if (inCode=9361) retVal=35;
if (inCode=9372) retVal=35;
if (inCode=9238) retVal=36;
if (inCode=9343) retVal=37;
if (inCode=1511) retVal=38;
if (inCode=1512) retVal=38;
if (inCode=1513) retVal=38;
if (inCode=1531) retVal=38;
if (inCode=1541) retVal=38;
if (inCode=1551) retVal=38;
if (inCode=1552) retVal=38;
if (inCode=1561) retVal=38;
if (inCode=1562) retVal=38;
if (inCode=9258) retVal=39;
if (inCode=9307) retVal=40;
if (inCode=9309) retVal=41;
if (inCode=9310) retVal=41;
if (inCode=9311) retVal=41;
if (inCode=9312) retVal=41;
if (inCode=9313) retVal=41;
if (inCode=9027) retVal=42;
if (inCode=9028) retVal=42;
if (inCode=9029) retVal=42;
if (inCode=7311) retVal=43;
if (inCode=7312) retVal=43;
if (inCode=9033) retVal=44;
if (inCode=9397) retVal=45;
if (inCode=6111) retVal=46;
if (inCode=6113) retVal=46;
if (inCode=6114) retVal=46;
if (inCode=9234) retVal=47;
if (inCode=9259) retVal=48;
if (inCode=9235) retVal=49;
if (inCode=9196) retVal=50;
if (inCode=9197) retVal=50;
if (inCode=6411) retVal=51;
if (inCode=6412) retVal=51;
if (inCode=6413) retVal=51;
if (inCode=6414) retVal=51;
if (inCode=6421) retVal=51;
if (inCode=6422) retVal=51;
if (inCode=6423) retVal=51;
if (inCode=6431) retVal=51;
if (inCode=6432) retVal=51;
if (inCode=6433) retVal=51;
if (inCode=6441) retVal=51;
if (inCode=6442) retVal=51;
if (inCode=6443) retVal=51;
if (inCode=6451) retVal=51;
if (inCode=6461) retVal=51;
if (inCode=6471) retVal=51;
if (inCode=6472) retVal=51;
if (inCode=6473) retVal=51;
if (inCode=6481) retVal=51;
if (inCode=6482) retVal=51;
if (inCode=6491) retVal=51;
if (inCode=6492) retVal=51;
if (inCode=6493) retVal=51;
if (inCode=7001) retVal=52;
if (inCode=7002) retVal=52;
if (inCode=7003) retVal=52;
if (inCode=6511) retVal=53;
if (inCode=6512) retVal=53;
if (inCode=6513) retVal=53;
if (inCode=6514) retVal=53;
if (inCode=6515) retVal=53;
if (inCode=6521) retVal=53;
if (inCode=6522) retVal=53;
if (inCode=6523) retVal=53;
if (inCode=6524) retVal=53;
if (inCode=6531) retVal=53;
if (inCode=6532) retVal=53;
if (inCode=6533) retVal=53;
if (inCode=6534) retVal=53;
if (inCode=6541) retVal=53;
if (inCode=6542) retVal=53;
if (inCode=6543) retVal=53;
if (inCode=6551) retVal=53;
if (inCode=6552) retVal=53;
if (inCode=6561) retVal=53;
if (inCode=6562) retVal=53;
if (inCode=9289) retVal=54;
if (inCode=9290) retVal=54;
if (inCode=6221) retVal=55;
if (inCode=6222) retVal=55;
if (inCode=6223) retVal=55;
if (inCode=6311) retVal=56;
if (inCode=6312) retVal=56;
if (inCode=6313) retVal=56;
if (inCode=6321) retVal=56;
if (inCode=6322) retVal=56;
if (inCode=6323) retVal=56;
if (inCode=6324) retVal=56;
if (inCode=6331) retVal=56;
if (inCode=6332) retVal=56;
if (inCode=6341) retVal=56;
if (inCode=6342) retVal=56;
if (inCode=9260) retVal=57;
if (inCode=9287) retVal=58;
if (inCode=9213) retVal=59;
if (inCode=9261) retVal=60;
if (inCode=9363) retVal=61;
if (inCode=9236) retVal=62;
if (inCode=9095) retVal=63;
if (inCode=9096) retVal=63;
if (inCode=9088) retVal=64;
if (inCode=2711) retVal=65;
if (inCode=2712) retVal=65;
if (inCode=2713) retVal=65;
if (inCode=2714) retVal=65;
if (inCode=2722) retVal=65;
if (inCode=2723) retVal=65;
if (inCode=2731) retVal=65;
if (inCode=2732) retVal=65;
if (inCode=2733) retVal=65;
if (inCode=2734) retVal=65;
if (inCode=2751) retVal=65;
if (inCode=2752) retVal=65;
if (inCode=2811) retVal=66;
if (inCode=2812) retVal=66;
if (inCode=2813) retVal=66;
if (inCode=9262) retVal=67;
if (inCode=9089) retVal=68;
if (inCode=9090) retVal=69;
if (inCode=9091) retVal=69;
if (inCode=9092) retVal=69;
if (inCode=9330) retVal=70;
if (inCode=9083) retVal=71;
if (inCode=9084) retVal=71;
if (inCode=9085) retVal=71;
if (inCode=9093) retVal=72;
if (inCode=9094) retVal=72;
if (inCode=9359) retVal=73;
if (inCode=9263) retVal=74;
if (inCode=2101) retVal=75;
if (inCode=2102) retVal=75;
if (inCode=2134) retVal=75;
if (inCode=2135) retVal=75;
if (inCode=2151) retVal=75;
if (inCode=2152) retVal=75;
if (inCode=2153) retVal=75;
if (inCode=2161) retVal=75;
if (inCode=2162) retVal=75;
if (inCode=2163) retVal=75;
if (inCode=2171) retVal=75;
if (inCode=2172) retVal=75;
if (inCode=2181) retVal=75;
if (inCode=2182) retVal=75;
if (inCode=2183) retVal=75;
if (inCode=2191) retVal=75;
if (inCode=2192) retVal=75;
if (inCode=2011) retVal=76;
if (inCode=2012) retVal=76;
if (inCode=9371) retVal=77;
if (inCode=9323) retVal=78;
if (inCode=2411) retVal=79;
if (inCode=2412) retVal=79;
if (inCode=2413) retVal=79;
if (inCode=2414) retVal=79;
if (inCode=2421) retVal=79;
if (inCode=2422) retVal=79;
if (inCode=2423) retVal=79;
if (inCode=2424) retVal=79;
if (inCode=9396) retVal=80;
if (inCode=9237) retVal=81;
if (inCode=9360) retVal=82;
if (inCode=9314) retVal=83;
if (inCode=9316) retVal=84;
if (inCode=9337) retVal=85;
if (inCode=9336) retVal=86;
if (inCode=2341) retVal=87;
if (inCode=2342) retVal=87;
if (inCode=2343) retVal=87;
if (inCode=2344) retVal=87;
if (inCode=2351) retVal=87;
if (inCode=9230) retVal=88;
if (inCode=9054) retVal=89;
if (inCode=9239) retVal=90;
if (inCode=9055) retVal=91;
if (inCode=9056) retVal=91;
if (inCode=9057) retVal=92;
if (inCode=9058) retVal=92;
if (inCode=9368) retVal=92;
if (inCode=9059) retVal=93;
if (inCode=9060) retVal=93;
if (inCode=9061) retVal=93;
if (inCode=9240) retVal=94;
if (inCode=2211) retVal=95;
if (inCode=2212) retVal=95;
if (inCode=2221) retVal=95;
if (inCode=9264) retVal=96;
if (inCode=9367) retVal=97;
if (inCode=9065) retVal=98;
if (inCode=9358) retVal=99;
if (inCode=9319) retVal=100;
if (inCode=2511) retVal=101;
if (inCode=2512) retVal=101;
if (inCode=2513) retVal=101;
if (inCode=2514) retVal=101;
if (inCode=2515) retVal=101;
if (inCode=2516) retVal=101;
if (inCode=2517) retVal=101;
if (inCode=2518) retVal=101;
if (inCode=2519) retVal=101;
if (inCode=2520) retVal=101;
if (inCode=2521) retVal=101;
if (inCode=2531) retVal=101;
if (inCode=2532) retVal=101;
if (inCode=2541) retVal=101;
if (inCode=2542) retVal=101;
if (inCode=2543) retVal=101;
if (inCode=2544) retVal=101;
if (inCode=2545) retVal=101;
if (inCode=2551) retVal=101;
if (inCode=2552) retVal=101;
if (inCode=9292) retVal=102;
if (inCode=9087) retVal=103;
if (inCode=9382) retVal=103;
if (inCode=9204) retVal=104;
if (inCode=9205) retVal=104;
if (inCode=9206) retVal=104;
if (inCode=9203) retVal=105;
if (inCode=6811) retVal=106;
if (inCode=6812) retVal=106;
if (inCode=6813) retVal=106;
if (inCode=6814) retVal=106;
if (inCode=6911) retVal=107;
if (inCode=6912) retVal=107;
if (inCode=9201) retVal=108;
if (inCode=9202) retVal=108;
if (inCode=9344) retVal=109;
if (inCode=9097) retVal=110;
if (inCode=9098) retVal=110;
if (inCode=2611) retVal=111;
if (inCode=2612) retVal=111;
if (inCode=2613) retVal=111;
if (inCode=2621) retVal=111;
if (inCode=9265) retVal=112;
if (inCode=9099) retVal=113;
if (inCode=9306) retVal=114;
if (inCode=9100) retVal=115;
if (inCode=9101) retVal=115;
if (inCode=9102) retVal=115;
if (inCode=9103) retVal=115;
if (inCode=9304) retVal=116;
if (inCode=9305) retVal=116;
if (inCode=9104) retVal=117;
if (inCode=9105) retVal=118;
if (inCode=9362) retVal=119;
if (inCode=9334) retVal=120;
if (inCode=9328) retVal=121;
if (inCode=9266) retVal=122;
if (inCode=9106) retVal=123;
if (inCode=9107) retVal=123;
if (inCode=9108) retVal=123;
if (inCode=1711) retVal=124;
if (inCode=1712) retVal=124;
if (inCode=9109) retVal=125;
if (inCode=9110) retVal=125;
if (inCode=9111) retVal=125;
if (inCode=9034) retVal=126;
if (inCode=9035) retVal=126;
if (inCode=9036) retVal=126;
if (inCode=9037) retVal=126;
if (inCode=9038) retVal=126;
if (inCode=9315) retVal=127;
if (inCode=2921) retVal=128;
if (inCode=2922) retVal=128;
if (inCode=2923) retVal=128;
if (inCode=2931) retVal=128;
if (inCode=2932) retVal=128;
if (inCode=2933) retVal=128;
if (inCode=2934) retVal=128;
if (inCode=2941) retVal=128;
if (inCode=2942) retVal=128;
if (inCode=2943) retVal=128;
if (inCode=2944) retVal=128;
if (inCode=2951) retVal=128;
if (inCode=2952) retVal=128;
if (inCode=2953) retVal=128;
if (inCode=2961) retVal=128;
if (inCode=2962) retVal=128;
if (inCode=2963) retVal=128;
if (inCode=2971) retVal=128;
if (inCode=2972) retVal=128;
if (inCode=2981) retVal=128;
if (inCode=2982) retVal=128;
if (inCode=3011) retVal=129;
if (inCode=3012) retVal=129;
if (inCode=3013) retVal=129;
if (inCode=3014) retVal=129;
if (inCode=3031) retVal=129;
if (inCode=3032) retVal=129;
if (inCode=3033) retVal=129;
if (inCode=3021) retVal=129;
if (inCode=3022) retVal=129;
if (inCode=3023) retVal=129;
if (inCode=3024) retVal=129;
if (inCode=9321) retVal=130;
if (inCode=9045) retVal=131;
if (inCode=9267) retVal=132;
if (inCode=9112) retVal=133;
if (inCode=9211) retVal=134;
if (inCode=9376) retVal=134;
if (inCode=9338) retVal=135;
if (inCode=9046) retVal=136;
if (inCode=9047) retVal=136;
if (inCode=9048) retVal=136;
if (inCode=9049) retVal=136;
if (inCode=9050) retVal=136;
if (inCode=9051) retVal=136;
if (inCode=9052) retVal=136;
if (inCode=9053) retVal=136;
if (inCode=7511) retVal=137;
if (inCode=7512) retVal=137;
if (inCode=7513) retVal=137;
if (inCode=7514) retVal=137;
if (inCode=9308) retVal=138;
if (inCode=9113) retVal=139;
if (inCode=9374) retVal=140;
if (inCode=9381) retVal=141;
if (inCode=9391) retVal=142;
if (inCode=1611) retVal=143;
if (inCode=1612) retVal=143;
if (inCode=1613) retVal=143;
if (inCode=1631) retVal=143;
if (inCode=1632) retVal=143;
if (inCode=1633) retVal=143;
if (inCode=1641) retVal=143;
if (inCode=1642) retVal=143;
if (inCode=1811) retVal=144;
if (inCode=1812) retVal=144;
if (inCode=1813) retVal=144;
if (inCode=1814) retVal=144;
if (inCode=9119) retVal=145;
if (inCode=9241) retVal=146;
if (inCode=3411) retVal=147;
if (inCode=3412) retVal=147;
if (inCode=3421) retVal=147;
if (inCode=3422) retVal=147;
if (inCode=9268) retVal=148;
if (inCode=3201) retVal=149;
if (inCode=3202) retVal=149;
if (inCode=3211) retVal=149;
if (inCode=3212) retVal=149;
if (inCode=3213) retVal=149;
if (inCode=3214) retVal=149;
if (inCode=3221) retVal=149;
if (inCode=3222) retVal=149;
if (inCode=3223) retVal=149;
if (inCode=3261) retVal=149;
if (inCode=3262) retVal=149;
if (inCode=3271) retVal=149;
if (inCode=3272) retVal=149;
if (inCode=3273) retVal=149;
if (inCode=3281) retVal=149;
if (inCode=3282) retVal=149;
if (inCode=3291) retVal=149;
if (inCode=9121) retVal=150;
if (inCode=9122) retVal=150;
if (inCode=9116) retVal=151;
if (inCode=9117) retVal=151;
if (inCode=9118) retVal=151;
if (inCode=9270) retVal=152;
if (inCode=9120) retVal=153;
if (inCode=9327) retVal=154;
if (inCode=9269) retVal=155;
if (inCode=9209) retVal=156;
if (inCode=9217) retVal=156;
if (inCode=9218) retVal=156;
if (inCode=9365) retVal=156;
if (inCode=9366) retVal=156;
if (inCode=3171) retVal=157;
if (inCode=3172) retVal=157;
if (inCode=3173) retVal=157;
if (inCode=3174) retVal=157;
if (inCode=3175) retVal=157;
if (inCode=3151) retVal=157;
if (inCode=3161) retVal=157;
if (inCode=3121) retVal=157;
if (inCode=3122) retVal=157;
if (inCode=3131) retVal=157;
if (inCode=3132) retVal=157;
if (inCode=3141) retVal=157;
if (inCode=3142) retVal=157;
if (inCode=9123) retVal=158;
if (inCode=9124) retVal=159;
if (inCode=9271) retVal=160;
if (inCode=3311) retVal=161;
if (inCode=3312) retVal=161;
if (inCode=9114) retVal=162;
if (inCode=9115) retVal=162;
if (inCode=9125) retVal=163;
if (inCode=9126) retVal=163;
if (inCode=9388) retVal=164;
if (inCode=9389) retVal=164;
if (inCode=9272) retVal=165;
if (inCode=3811) retVal=166;
if (inCode=3812) retVal=166;
if (inCode=3821) retVal=166;
if (inCode=3822) retVal=166;
if (inCode=3823) retVal=166;
if (inCode=3831) retVal=166;
if (inCode=3841) retVal=166;
if (inCode=3851) retVal=166;
if (inCode=3852) retVal=166;
if (inCode=3611) retVal=167;
if (inCode=3614) retVal=167;
if (inCode=3615) retVal=167;
if (inCode=3616) retVal=167;
if (inCode=3617) retVal=167;
if (inCode=3621) retVal=167;
if (inCode=3622) retVal=167;
if (inCode=3631) retVal=167;
if (inCode=3632) retVal=167;
if (inCode=3633) retVal=167;
if (inCode=3641) retVal=167;
if (inCode=3642) retVal=167;
if (inCode=3651) retVal=167;
if (inCode=3652) retVal=167;
if (inCode=3711) retVal=168;
if (inCode=3712) retVal=168;
if (inCode=3721) retVal=168;
if (inCode=3722) retVal=168;
if (inCode=3511) retVal=169;
if (inCode=3521) retVal=169;
if (inCode=3522) retVal=169;
if (inCode=3523) retVal=169;
if (inCode=3524) retVal=169;
if (inCode=3531) retVal=169;
if (inCode=3542) retVal=169;
if (inCode=3551) retVal=169;
if (inCode=3552) retVal=169;
if (inCode=3561) retVal=169;
if (inCode=3562) retVal=169;
if (inCode=3571) retVal=169;
if (inCode=9130) retVal=170;
if (inCode=9131) retVal=170;
if (inCode=9214) retVal=170;
if (inCode=9286) retVal=171;
if (inCode=9288) retVal=172;
if (inCode=9273) retVal=173;
if (inCode=9132) retVal=174;
if (inCode=9133) retVal=174;
if (inCode=9242) retVal=175;
if (inCode=9134) retVal=176;
if (inCode=9331) retVal=177;
if (inCode=9384) retVal=177;
if (inCode=9390) retVal=177;
if (inCode=9135) retVal=178;
if (inCode=9136) retVal=179;
if (inCode=9137) retVal=179;
if (inCode=9138) retVal=179;
if (inCode=9225) retVal=180;
if (inCode=9139) retVal=181;
if (inCode=9140) retVal=182;
if (inCode=9141) retVal=182;
if (inCode=9142) retVal=182;
if (inCode=3911) retVal=183;
if (inCode=3912) retVal=183;
if (inCode=3913) retVal=183;
if (inCode=3921) retVal=183;
if (inCode=3922) retVal=183;
if (inCode=3931) retVal=183;
if (inCode=3932) retVal=183;
if (inCode=3941) retVal=183;
if (inCode=9143) retVal=184;
if (inCode=4011) retVal=185;
if (inCode=4012) retVal=185;
if (inCode=4013) retVal=185;
if (inCode=4021) retVal=185;
if (inCode=4022) retVal=185;
if (inCode=4023) retVal=185;
if (inCode=9145) retVal=186;
if (inCode=9146) retVal=186;
if (inCode=9147) retVal=186;
if (inCode=9148) retVal=186;
if (inCode=4111) retVal=187;
if (inCode=4112) retVal=187;
if (inCode=4121) retVal=187;
if (inCode=4122) retVal=187;
if (inCode=4123) retVal=187;
if (inCode=9144) retVal=188;
if (inCode=9297) retVal=189;
if (inCode=9243) retVal=190;
if (inCode=9149) retVal=191;
if (inCode=4211) retVal=192;
if (inCode=4212) retVal=192;
if (inCode=4213) retVal=192;
if (inCode=4231) retVal=192;
if (inCode=4232) retVal=192;
if (inCode=4233) retVal=192;
if (inCode=4241) retVal=192;
if (inCode=4242) retVal=192;
if (inCode=4251) retVal=192;
if (inCode=9231) retVal=193;
if (inCode=9150) retVal=194;
if (inCode=9151) retVal=194;
if (inCode=4311) retVal=195;
if (inCode=4312) retVal=195;
if (inCode=4313) retVal=195;
if (inCode=9274) retVal=196;
if (inCode=9152) retVal=197;
if (inCode=4411) retVal=198;
if (inCode=4412) retVal=198;
if (inCode=4413) retVal=198;
if (inCode=4414) retVal=198;
if (inCode=4415) retVal=198;
if (inCode=9295) retVal=199;
if (inCode=9244) retVal=200;
if (inCode=9161) retVal=201;
if (inCode=9162) retVal=201;
if (inCode=9163) retVal=201;
if (inCode=9164) retVal=201;
if (inCode=9153) retVal=202;
if (inCode=9283) retVal=203;
if (inCode=4611) retVal=204;
if (inCode=4612) retVal=204;
if (inCode=4613) retVal=204;
if (inCode=4614) retVal=204;
if (inCode=4621) retVal=204;
if (inCode=4622) retVal=204;
if (inCode=4631) retVal=204;
if (inCode=4632) retVal=204;
if (inCode=4641) retVal=204;
if (inCode=4651) retVal=204;
if (inCode=9276) retVal=205;
if (inCode=9154) retVal=206;
if (inCode=9155) retVal=207;
if (inCode=9332) retVal=208;
if (inCode=4711) retVal=209;
if (inCode=4712) retVal=209;
if (inCode=4713) retVal=209;
if (inCode=4714) retVal=209;
if (inCode=9300) retVal=210;
if (inCode=9245) retVal=211;
if (inCode=9349) retVal=212;
if (inCode=9350) retVal=212;
if (inCode=9165) retVal=213;
if (inCode=9357) retVal=214;
if (inCode=9277) retVal=215;
if (inCode=9246) retVal=216;
if (inCode=9166) retVal=217;
if (inCode=9167) retVal=217;
if (inCode=9168) retVal=217;
if (inCode=9247) retVal=218;
if (inCode=9284) retVal=219;
if (inCode=4811) retVal=220;
if (inCode=4812) retVal=220;
if (inCode=4813) retVal=220;
if (inCode=4821) retVal=220;
if (inCode=4831) retVal=220;
if (inCode=4832) retVal=220;
if (inCode=9278) retVal=221;
if (inCode=9377) retVal=222;
if (inCode=9378) retVal=222;
if (inCode=9169) retVal=223;
if (inCode=9170) retVal=223;
if (inCode=9171) retVal=223;
if (inCode=9279) retVal=224;
if (inCode=9156) retVal=225;
if (inCode=9157) retVal=225;
if (inCode=9158) retVal=225;
if (inCode=9159) retVal=225;
if (inCode=9160) retVal=225;
if (inCode=4511) retVal=226;
if (inCode=4512) retVal=226;
if (inCode=4513) retVal=226;
if (inCode=4521) retVal=226;
if (inCode=4522) retVal=226;
if (inCode=4531) retVal=226;
if (inCode=4532) retVal=226;
if (inCode=4533) retVal=226;
if (inCode=4541) retVal=226;
if (inCode=4542) retVal=226;
if (inCode=4543) retVal=226;
if (inCode=4544) retVal=226;
if (inCode=4545) retVal=226;
if (inCode=4546) retVal=226;
if (inCode=4943) retVal=227;
if (inCode=4944) retVal=228;
if (inCode=4951) retVal=229;
if (inCode=4952) retVal=230;
if (inCode=4953) retVal=231;
if (inCode=4954) retVal=232;
if (inCode=4912) retVal=233;
if (inCode=4921) retVal=234;
if (inCode=4922) retVal=235;
if (inCode=4931) retVal=236;
if (inCode=4932) retVal=237;
if (inCode=4941) retVal=238;
if (inCode=4942) retVal=239;
if (inCode=9223) retVal=240;
if (inCode=9392) retVal=241;
if (inCode=5011) retVal=242;
if (inCode=5012) retVal=242;
if (inCode=5013) retVal=242;
if (inCode=5021) retVal=242;
if (inCode=5022) retVal=242;
if (inCode=5031) retVal=242;
if (inCode=5032) retVal=242;
if (inCode=5041) retVal=242;
if (inCode=5051) retVal=242;
if (inCode=9172) retVal=243;
if (inCode=9282) retVal=243;
if (inCode=9320) retVal=244;
if (inCode=9173) retVal=245;
if (inCode=9174) retVal=245;
if (inCode=9175) retVal=246;
if (inCode=9219) retVal=247;
if (inCode=9296) retVal=247;
if (inCode=5141) retVal=248;
if (inCode=5142) retVal=248;
if (inCode=5151) retVal=248;
if (inCode=5152) retVal=248;
if (inCode=5161) retVal=248;
if (inCode=9385) retVal=249;
if (inCode=5211) retVal=250;
if (inCode=5212) retVal=250;
if (inCode=5213) retVal=250;
if (inCode=5221) retVal=250;
if (inCode=9345) retVal=251;
if (inCode=9346) retVal=251;
if (inCode=9347) retVal=251;
if (inCode=9348) retVal=251;
if (inCode=9176) retVal=252;
if (inCode=9177) retVal=252;
if (inCode=9178) retVal=252;
if (inCode=9248) retVal=253;
if (inCode=9249) retVal=253;
if (inCode=9179) retVal=254;
if (inCode=9180) retVal=254;
if (inCode=5411) retVal=255;
if (inCode=5421) retVal=255;
if (inCode=5422) retVal=255;
if (inCode=5431) retVal=255;
if (inCode=5432) retVal=255;
if (inCode=9339) retVal=256;
if (inCode=9181) retVal=257;
if (inCode=9182) retVal=257;
if (inCode=9220) retVal=258;
if (inCode=9183) retVal=259;
if (inCode=9184) retVal=259;
if (inCode=9185) retVal=259;
if (inCode=9208) retVal=260;
if (inCode=9227) retVal=260;
if (inCode=9294) retVal=260;
if (inCode=9302) retVal=260;
if (inCode=9250) retVal=261;
if (inCode=9280) retVal=262;
if (inCode=9251) retVal=263;
if (inCode=5511) retVal=264;
if (inCode=5512) retVal=264;
if (inCode=5521) retVal=264;
if (inCode=5522) retVal=264;
if (inCode=5523) retVal=264;
if (inCode=5524) retVal=264;
if (inCode=5531) retVal=264;
if (inCode=5541) retVal=264;
if (inCode=5551) retVal=264;
if (inCode=9394) retVal=265;
if (inCode=9395) retVal=265;
if (inCode=9039) retVal=266;
if (inCode=9040) retVal=266;
if (inCode=9041) retVal=267;
if (inCode=9042) retVal=267;
if (inCode=9043) retVal=267;
if (inCode=9044) retVal=267;
if (inCode=7211) retVal=268;
if (inCode=7212) retVal=268;
if (inCode=5611) retVal=269;
if (inCode=5612) retVal=269;
if (inCode=5613) retVal=269;
if (inCode=5614) retVal=269;
if (inCode=5631) retVal=269;
if (inCode=5641) retVal=269;
if (inCode=5661) retVal=269;
if (inCode=5671) retVal=269;
if (inCode=5672) retVal=269;
if (inCode=5673) retVal=269;
if (inCode=5674) retVal=269;
if (inCode=5681) retVal=269;
if (inCode=5682) retVal=269;
if (inCode=5683) retVal=269;
if (inCode=5691) retVal=269;
if (inCode=5692) retVal=269;
if (inCode=5693) retVal=269;
if (inCode=5711) retVal=270;
if (inCode=5712) retVal=270;
if (inCode=1211) retVal=271;
if (inCode=1212) retVal=271;
if (inCode=9379) retVal=272;
if (inCode=9281) retVal=273;
if (inCode=9275) retVal=274;
if (inCode=5911) retVal=275;
if (inCode=5912) retVal=275;
if (inCode=5913) retVal=275;
if (inCode=5914) retVal=275;
if (inCode=5921) retVal=275;
if (inCode=5922) retVal=275;
if (inCode=5923) retVal=275;
if (inCode=5924) retVal=275;
if (inCode=5931) retVal=275;
if (inCode=5932) retVal=275;
if (inCode=9221) retVal=276;
if (inCode=9340) retVal=277;
if (inCode=9187) retVal=278;
if (inCode=9188) retVal=278;
if (inCode=9189) retVal=279;
if (inCode=9215) retVal=280;
if (inCode=5811) retVal=281;
if (inCode=5812) retVal=281;
if (inCode=9232) retVal=282;
if (inCode=5311) retVal=283;
if (inCode=5312) retVal=283;
if (inCode=5313) retVal=283;
if (inCode=5314) retVal=283;
if (inCode=9393) retVal=284;
if (inCode=9207) retVal=285;
if (inCode=9222) retVal=286;
if (inCode=9369) retVal=287;
if (inCode=7411) retVal=288;
if (inCode=7412) retVal=288;
if (inCode=9252) retVal=289;
if (inCode=9318) retVal=290;
if (inCode=9192) retVal=291;
if (inCode=9190) retVal=292;
if (inCode=9191) retVal=292;
if (inCode=6011) retVal=293;
if (inCode=6012) retVal=293;
if (inCode=9370) retVal=294;
if (inCode=9193) retVal=295;
if (inCode=9194) retVal=295;
if (inCode=9195) retVal=296;
if (inCode=9333) retVal=297;
if (inCode=7111) retVal=298;
if (inCode=9072) retVal=299;
if (inCode=9073) retVal=299;
if (inCode=9074) retVal=299;
if (inCode=9075) retVal=299;
if (inCode=9076) retVal=299;
if (inCode=9229) retVal=300;
if (inCode=9228) retVal=301;
if (inCode=9335) retVal=302;
if (inCode=9293) retVal=303;
if (inCode=9077) retVal=304;
if (inCode=9078) retVal=304;
if (inCode=9079) retVal=304;
if (inCode=9080) retVal=305;
if (inCode=9081) retVal=305;
if (inCode=9375) retVal=306;
if (inCode=9387) retVal=306;
if (inCode=9301) retVal=307;
if (inCode=9285) retVal=308;
if (inCode=9224) retVal=309;
if (inCode=1911) retVal=310;
if (inCode=1912) retVal=310;
if (inCode=1913) retVal=310;
if (inCode=1921) retVal=310;
if (inCode=1931) retVal=310;
if (inCode=1932) retVal=310;
if (inCode=9353) retVal=311;
if (inCode=9354) retVal=311;
if (inCode=9355) retVal=311;
if (inCode=9356) retVal=311;
if (inCode=9186) retVal=312;
if (inCode=9062) retVal=313;
if (inCode=9063) retVal=313;
if (inCode=9064) retVal=313;
if (inCode=9066) retVal=314;
if (inCode=9067) retVal=314;
if (inCode=9068) retVal=314;
if (inCode=9069) retVal=314;
if (inCode=9070) retVal=315;
if (inCode=9071) retVal=315;
if (inCode=6711) retVal=316;
if (inCode=6712) retVal=316;
if (inCode=6713) retVal=316;
if (inCode=6714) retVal=316;
if (inCode=6715) retVal=316;
if (inCode=6721) retVal=316;
if (inCode=6722) retVal=316;
if (inCode=6723) retVal=316;
if (inCode=6611) retVal=317;
if (inCode=6612) retVal=317;
if (inCode=6613) retVal=317;
if (inCode=6614) retVal=317;
if (inCode=6621) retVal=317;
if (inCode=6622) retVal=317;
if (inCode=6631) retVal=317;
if (inCode=6632) retVal=317;
return retVal
}
function FDPP(qf)
{
var tm = GetQuestionDuration(qf) / 60;
var mnt = tm | 0;
var sec = Round((tm - mnt) * 60);
return stringReplace(("A" + (mnt < 10 ? '0' : '').toString() + mnt.toString()) + ":" + ("A" + (sec < 10 ? '0' : '').toString() + sec.toString()),"A","");
}
function RT(qf, mnA, mxA, iU)
{
//Total topic answered included rank 1 and 100 is a must
var rV = true;
var tc = GetVisibleTopicCount(qf);
var cnt = 0;
var ck = 0;
for(var i=1;i<=tc;i++)
{
if(AnsweredChoice(qf, i))
{
cnt++;
}
if(AnswerChoice(qf,i) == 1 || AnswerChoice(qf,i) == 100)
{
ck++;
}
}
if(iU == false && ck == 2 && ((tc >= mnA && cnt >= mnA && cnt <= mxA) || (tc < mnA && cnt == tc)))
{
rV = false;
}
else if(iU == true && ck == 2 && ((tc >= mnA && cnt >= mnA && cnt <= mxA) || (tc < mnA && cnt == tc)))
{
rV = false;
for(var i=1;i<=tc;i++)
{
for(var j=(i+1);j<=tc;j++)
{
if(ck == 2 && AnswerChoice(qf,i) > 0 && AnswerChoice(qf,j) > 0 && AnswerChoice(qf, i) == AnswerChoice(qf, j))
{
rV = true;
break;
}
}
}
}
if(cnt == 0)
{
rV = true;
}
return rV;
}
function cAQ(qf,count,ext)
{
var a = GetAttachedFilesCount(qf);
var b = GetAttachedFilesNames(qf);
var cnt = 0;
var tf = false;
for(var f=0;f<ext.length;f++)
{
ext[f] = stringToUpper(ext[f]);
}
for(var c=0;c<b.length;c++)
{
var d = b[c].split(".");
var e = stringToUpper(d[d.length-1]);
if(IndexOf(e,ext) > -1)
{
cnt++;
}
}
if(cnt != b.length)
{
tf = true;
}
if(count != a)
{
tf = true;
}
return tf;
}
function cAG(count,ext)
{
var a = GetAttachedFilesCount();
var b = GetAttachedFilesNames();
var cnt = 0;
var tf = false;
for(var f=0;f<ext.length;f++)
{
ext[f] = stringToUpper(ext[f]);
}
for(var c=0;c<b.length;c++)
{
var d = b[c].split(".");
var e = stringToUpper(d[d.length-1]);
if(IndexOf(e,ext) > -1)
{
cnt++;
}
}
if(cnt != b.length)
{
tf = true;
}
if(count != a)
{
tf = true;
}
return tf;
}
function SM(qf)
{
var n = [];
if(Answer(qf) > 0)
{
n.push(AnswerCode(qf,Answer(qf)));
}
else
{
var a = GetAnswers(qf);
for(var b=0;b<a.length;b++)
{
n.push(AnswerCode(qf,a[b]));
}
}
return n;
}
function SMI(qf,iter)
{
var n = new Array();
var b = GetRI(iter);
for(var c=0;c<b.length;c++)
{
b[c] = parseInt(b[c]);
if(AnswerIter(qf,b[c]) > 0)
{
if(IndexOfInt(AnswerIter(qf,b[c]),n) == -1)
{
n.push(AnswerCode(qf,AnswerIter(qf,b[c])));
}
}
else
{
var d = GetAnswersIter(qf,b[c]);
for(var e=0;e<d.length;e++)
{
if(IndexOfInt(d[e],n) == -1)
{
n.push(AnswerCode(qf,d[e]));
}
}
}
}
return n;
}
function SMC(qf,ac,ao)
{
var i = GetReturnIndexes(qf,ac);
var j = false;
var k = 0;
var l = 0;
for(var a=0;a<i.length;a++)
{
i[a] = parseInt(i[a]);
var m = Contains(qf,i[a]);
var n = (Answer(qf) == i[a]);
if(n)
{
l++;
break;
}
else if(m)
{
k++;
}
}
if(ao == true && k == i.length)
{
j = true;
}
else if(ao == false && k > 0)
{
j = true;
}
else if(l > 0)
{
j = true;
}
return j;
}
function GetDay()
{
var ct = Now.Hour * 100 + Now.Minute;
if(ct >= 301 && ct <= 1030)
{
return "pagi";
}
else if(ct >= 1031 && ct <= 1500)
{
return "siang";
}
else if(ct >= 1501 && ct <= 1830)
{
return "sore";
}
else if(ct >= 1831 || ct <= 300)
{
return "malam";
}
else
{
return "'Mohon periksa kembali pengaturan tanggal dan waktu device anda!'"
}
}
function GetAgeCategory(age,arrayages)
{
var agecat=0;
for(var a=0;a<arrayages.length;a++)
{
if(age>=arrayages[a])
{
agecat=a+1;
}
}
return agecat;
}
function GetAge(date,month,year)
{
var res=0;
var lday=Today.Day;
var lmonth=Today.Month;
var lyear=Today.Year;
if(lmonth>month){res=lyear-year;}
if(lmonth<month){res=lyear-year-1;}
if(lmonth==month && lday>=date){res=lyear-year;}
if(lmonth==month && lday<date){res=lyear-year-1;}
return res;
}
function GetScoringQuestion(qidxmaster,qidxset,arrayscorecodes)
{
SetAnswer(qidxset,arrayscorecodes[Answer(qidxmaster)-1]);
}
function GetRI(arrayidxbrdcodes)
{
var result=[];
var codes1=stringSplit(arrayidxbrdcodes,"/");
for(var b=0;b<codes1.length;b++)
{
var codes2=stringSplit(codes1[b],"-");
for(var c=codes2[0];c<=codes2[codes2.length-1];c++)
{
result.push(c);
}
}
return result;
}
function GetReturnIndexes(qidxcheck,arraycodes)
{
var arr=[];
var chkcodes=GetRI(arraycodes);
for(var a=0;a<chkcodes.length;a++)
{
arr[a]=GetAnswerChoiceIdxByCode(qidxcheck,intParse(chkcodes[a]));
}
return arr;
}
function AnswersOneOf(qidx,arraycodes)
{
var chk=false;
var idx=GetReturnIndexes(qidx,arraycodes);
for(var a=0;a<idx.length;a++)
{
if(Equals(qidx,idx[a])){chk=true; break;}
}
return chk;
}
function GetShowBrandUmbrellas(qidxfiltered,arrayidxbrdcodes,type,randomize)
{
var ansmulti=GetAnswers(qidxfiltered);
var chk=false;
if(type=="Topic"){SetTopicVisible(CurrQues,false);}
else{SetAnswerVisible(CurrQues,false);}
for(var a=0;a<arrayidxbrdcodes.length;a++)
{
var chkcodes=GetReturnIndexes(qidxfiltered,arrayidxbrdcodes[a]);
for(var b=0;b<chkcodes.length;b++)
{
if(IndexOfInt(intParse(chkcodes[b]),ansmulti)>=0){chk=true;break;}
}
if(chk==true)
{
if(type=="Topic"){SetTopicVisible(CurrQues,(a+1),true);}
else{SetAnswerVisible(CurrQues,(a+1),true);}
chk=false;
}
}
if(randomize==true && type=="Topic"){RandomizeTopics(CurrQues);}
else if(randomize==true && type=="Answer"){RandomizeAnswers(CurrQues);}
}
/* Winner Global Function
By Denny */
function Win_AnswersOneOf(qidx,arraycodes)
{
var chk=false;
for(var a=0;a<arraycodes.length;a++)
{
if(Equals(qidx,arraycodes[a])){chk=true; break;}
}
return chk;
}
function Win_ContainsOneOf(qidxcheck,arraycodes)
{
var chk=false;
var idx=Win_ReturnIndexes(qidxcheck,arraycodes);
for(var a=0;a<idx.length;a++)
{
if(Contains(qidxcheck,idx[a])){chk=true; break;}
}
return chk;
}
function Win_CheckChoicesOneOf(qidx,arraytopics,arraycodes,sorm)
{
var chk=false;
if(sorm=="s")
{
for(var a=0;a<arraytopics.length;a++)
{
if(IndexOfInt(AnswerChoice(qidx,arraytopics[a]),arraycodes)>=0){chk=true; break;}
}
}
else
{
for(var a=0;a<arraytopics.length;a++)
{
if(ContainsChoiceOneOf(qidx,arraytopics[a],arraycodes)){chk=true; break;}
}
}
return chk;
}
function Win_CheckBrandTwoQues(qidx1,qidx2,questype,booltype,arraycodes)
{
var fbtype,lbtype,vld=false;
var idx=Win_ReturnIndexes(qidx1,arraycodes);
if(booltype=="ttof"){fbtype=true; lbtype=false;}
if(booltype=="ftot"){fbtype=false; lbtype=true;}
if(questype=="stos")
{
if(Win_AnswersOneOf(qidx1,idx)==fbtype && Win_AnswersOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="stom")
{
if(Win_AnswersOneOf(qidx1,idx)==fbtype && ContainsOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="mtos")
{
if(ContainsOneOf(qidx1,idx)==fbtype && Win_AnswersOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="mtom")
{
if(ContainsOneOf(qidx1,idx)==fbtype && ContainsOneOf(qidx2,idx)==lbtype){vld=true;}
}
return vld;
}
function Win_CatAge(age,arrayages)
{
var agecat=0;
for(var a=0;a<arrayages.length;a++)
{
if(age>=arrayages[a])
{
agecat=a+1;
}
}
return agecat;
}
function Win_GetAge(date,month,year)
{
var res=0;
var lday=Today.Day;
var lmonth=Today.Month;
var lyear=Today.Year;
if(lmonth>month){res=lyear-year;}
if(lmonth<month){res=lyear-year-1;}
if(lmonth==month && lday>=date){res=lyear-year;}
if(lmonth==month && lday<date){res=lyear-year-1;}
return res;
}
function Win_ScoreQuestion(qidxmaster,qidxset,arrayscorecodes)
{
SetAnswer(qidxset,arrayscorecodes[Answer(qidxmaster)-1]);
}
/*
function Win_CombineTomSpontAided(qidxtom,qidxspont,qidxaided,arrayothers,arrayunspecified)
{
var h=[];
var i = Win_ReturnIndexes(qidxaided,arrayothers);
var j = Win_ReturnIndexes(qidxaided,arrayunspecified);
SetAnswerVisible(CurrQues,false,false,i);
SetAnswerVisible(CurrQues,false,false,j);
for(var a=0;a<arrayothers.length;a++)
{
if(Answer(qidxtom)==i[a] || Contains(qidxspont,i[a]))
{
SetAnswerVisible(qidxaided,i[a],true);
}
}
Win_OthersAnswerAided(qidxtom,qidxspont,arrayothers);
for(var b=1;b<=GetAnswerCount(qidxaided);b++)
{
if((Answer(qidxtom)==b || Contains(qidxspont,b)))
{
dblSetSpecificAnswer(CurrQues,b,true);
}
}
}
*/
function Win_OthersAnswer(qidxcheck,type,arrayothercodes)
{
var otcd=Win_ReturnIndexes(qidxcheck,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if (type=="answer")
{
if(Answer(qidxcheck)==otcd[a])
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
if (type=="contains")
{
if(Contains(qidxcheck,otcd[a]))
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
}
return otcd;
}
function Win_OthersAnswerAided(qidxtom,qidxspont,arrayothercodes)
{
var otcd=Win_ReturnIndexes(qidxtom,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if(Answer(qidxtom)==otcd[a])
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxtom,otcd[a]));
}
if(Contains(qidxspont,otcd[a]))
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
return otcd;
}
function Win_OthersTopic(qidxcheck,type,arrayothercodes)
{
var otcd=Win_ReturnIndexes(qidxcheck,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if (type=="answer")
{
if(Answer(qidxcheck)==otcd[a])
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
if (type=="contains")
{
if(Contains(qidxcheck,otcd[a]))
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
}
return otcd;
}
function Win_OthersTopicAided(qidxtom,qidxspont,arrayothercodes)
{
var otcd=Win_ReturnIndexes(qidxtom,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if(Answer(qidxtom)==otcd[a])
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxtom,otcd[a]));
}
if(Contains(qidxspont,otcd[a]))
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
return otcd;
}
function Win_RI(arrayidxbrdcodes)
{
var result=[];
var codes1=stringSplit(arrayidxbrdcodes,"/");
for(var b=0;b<codes1.length;b++)
{
var codes2=stringSplit(codes1[b],"-");
for(var c=codes2[0];c<=codes2[codes2.length-1];c++)
{
result.push(c);
}
}
return result;
}
function Win_ReturnIndexes(qidxcheck,arraycodes)
{
var arr=[];
var chkcodes=Win_RI(arraycodes);
for(var a=0;a<chkcodes.length;a++)
{
arr[a]=GetAnswerChoiceIdxByCode(qidxcheck,intParse(chkcodes[a]));
}
return arr;
}
function Win_ValidationBrandDisposition(qidx)
{
var check=false;
var at1=0;
var at2=0;
for(var a=1;a<=GetAnswerCount(qidx);a++)
{
if(ContainsChoice(qidx,1,a)){at1+=1;}
if(ContainsChoice(qidx,2,a)){at2+=1;}
}
if(at1>1 || at2 < 2 || at2>3)
{
check=true;
}
return check;
}
function Win_Unspecified(qidxcheck,type,arrayothercodes)
{
var otcd=Win_ReturnIndexes(qidxcheck,arrayothercodes);
if (type=="true")
{
SetAnswerVisible(CurrQues,false);
}
if (type=="false")
{
SetAnswerVisible(CurrQues,true);
}
for (var a=0;a<otcd.length;a++)
{
if (type=="true")
{
SetAnswerVisible(CurrQues,true,false,otcd[a]);
}
if (type=="false")
{
SetAnswerVisible(CurrQues,false,false,otcd[a]);
}
}
return otcd;
}
function dblSumNumericGrid2(inQ)
{
var retVal=0;
var numOfTopics=GetTopicCount(inQ);
var i;
for(i=1; i<=numOfTopics; i++)
{
if (IsTopicVisible(inQ,i) && AnswerChoice(inQ,i)>=0) {
retVal+=AnswerChoice(inQ,i);
}
}
return retVal;
}
/* Nome da Função: IpsChekTrim
Programador: alphacrux
Data: 15-02-2014
Descrição: Essa função verifica se os valores digitados em uma questão aberta ou semi-aberta
são apenas espaços, apenas números ou ambas as situações e retorna erro.
Tipo Quest: Aberta e Addictional Text
Exemplo: IpsChekTrim(true,true,false) | IpsChekTrim(false,false,true)&&Contains(CurrQues,1)
Descrição do comando: IpsTrimTeste( ; nome da função
true, ; aceita true/false. Se for true retorna erro caso a questão estiver apenas com espaços, se for false não aplica a checagem de espaços.
true, ; aceita true/false. Se for true retorna erro caso a questão estiver apenas com números, se for false não aplica a checagem de números.
false) ; aceita true/false. Faz a checagem de números e espaços para o Addictional Text. se estiver com false não checa o Addictional.
Observação: Quando usar essa função para questões Addictional precisa vincular ao código fechado de outros.
*/
function IpsChekTrim(chkTxt,chkNum,chkAdd){
var retVal = false;
if (chkTxt){
var txt = Answer(CurrQues).ToString()
txt = txt.replace(/\s/g,'')
if (txt == ''){
retVal = true;
return retVal;
}
}
if (chkNum){
var num = Answer(CurrQues).ToString()
num = num.replace(/1|2|3|4|5|6|7|8|9|0|\s/g,'')
if (num == ''){
retVal = true;
return retVal;
}
}
if (chkAdd){
var add = AdditionalText(CurrQues).ToString()
add = add.replace(/1|2|3|4|5|6|7|8|9|0|\s/g,'')
if (add == ''){
retVal = true;
return retVal;
}
}
}
/* Nome da Função: acSetVisibleOther
Programador: AlphaCrux
Data: 03-03-2014
Descrição: Esta funcção verifica se os códigos de outros foram mencionados em uma RM e os abre para especificar
em uma questão do tipo Open Aded Grid.
Tipo Quest: Grid Aberta
Descrição do comando: acSetVisibleOther( , nome da função
Quest, ; Referência da questão RM que tem os códigos de outros para especificar.
idxCodes) ; aceita [1,2,...N]. Um Array com o índice dos códigos de outros na questão RM.
Observação: Esta função deve ser usada em conjunto com a função SetTopicVisible(Questão,true,true,acSetVisibleOther(QuestãoRM,[12,13]));
*/
function acSetVisibleOther(Quest,idxCodes)
{
var codes = new Array();
for (var i=0; i < idxCodes.length; i++)
{
if (Contains(Quest,idxCodes[i])){
codes.push(idxCodes[i]-(idxCodes[0]-1));
}
}
return codes;
}
function acSetAnswerTextOther (QuestSetOther,QuestOther, arrCodes)
{
for (var i=0;i < arrCodes.length;i++)
{
var idx = arrCodes[i];
if (ContainsOneOf(QuestOther,idx)){
var text = AdditionalAnswerText(QuestOther,String(idx));
SetAnswerText(QuestSetOther,arrCodes[i],text);
}
}
}
function acSetTopicTextOther (QuestSetOther,QuestOther, arrCodes)
{
for (var i=0;i < arrCodes.length;i++)
{
var idx = arrCodes[i];
if (ContainsOneOf(QuestOther,idx)){
var text = AdditionalAnswerText(QuestOther,String(idx));
SetTopicText(QuestSetOther,arrCodes[i],text);
}
}
}
function InRange(idxQuest,inStart, inEnd){
var boolResult = false
var code = Number(idxQuest);
for (var i=inStart;i<=inEnd;i++){
if (code == i){
boolResult = true;
break;
}
}
return boolResult;
}
//Função MaxDiff
function acGetMaxDiff(strStoreName,strColVersao,intVersao,strColCartao,intCartao,arrColAtrib)
{
var arrAtribs = new Array();
try{
var table = GetTableFromStore(strStoreName,"","@@["+strColVersao+"]="+String(intVersao)+" and ["+strColCartao+"]="+String(intCartao),"");
//Prompt("Tabela: "+table.Name);
if (table != null && table.RowCount > 0){
var row = table[0];
for (var i=0;i < arrColAtrib.length;i++){
var col = row[arrColAtrib[i]].ToInt();
arrAtribs.push(col);
}
}
}
catch(err)
{
arrAtribs = null;
}
return arrAtribs;
}
function aclGetSubjectStoreRow(inStoreName,inIDColumnName,inID,inIDColumnName2,inID2)
{
var retVal = null;
try {
var table = GetTableFromStore(inStoreName,"","@@["+inIDColumnName+"]="+String(inID)+" and ["+inIDColumnName2+"]="+String(inID2),"");
if (table != null && table.RowCount >0) {
var row = table[0];
retVal = row;
}
}
catch(err)
{
retVal = null;
}
return retVal;
}
function CheckPolar(){
}
function alpcDataDiffYear(quest)
{
//Função que retorna o intervalo de uma data até a data atual sem arredondamentos
var currdate
currdate=Now
var anos
anos = Round(TimeDiffYears(currdate,Answer(quest)))
if (currdate.Month < Answer(quest).Month)
{
anos--;
}
else if (currdate.Month == Answer(quest).Month)
{
if (currdate.Day < Answer(quest).Day)
{
anos--;
}
}
return anos
}
function setOcorr()
{
}
function SomaClasse()
{
}
function SetVisibleOther()
{
}
function acSomaClasse(idxItens,QuestClasse,QuestChefe)
{
var Pontos = 0;
// Os itens precisam ser ordenados na seguinte sequencia
//TV / RADIO /BANHEIRO /AUTO /EMPREGADA /MAQUINA /VIDEO /GELADEIRA /GELADEIRADUPLEX
var arrItens = new Array();
for (var i = 0; i < idxItens.length;i++)
{
arrItens.push(AnswerChoice(QuestClasse,idxItens[i])-1);
}
//Pontuação dos Itens
var arrTV = [0,1,2,3,4];
var arrRadio = [0,1,2,3,4];
var arrBanheiro = [0,4,5,6,7];
var arrAuto = [0,4,7,9,9];
var arrEmpregada = [0,3,4,4,4];
var arrMaquina = [0,2,2,2,2];
var arrVideo = [0,2,2,2,2];
var arrGeladeira = [0,4,4,4,4];
var arrDuplex = [0,2,2,2,2];
var chefe = Number(AnswerCode(QuestChefe,Answer(QuestChefe)));
var arrPontos = new Array(arrTV,arrRadio,arrBanheiro,arrAuto,arrEmpregada,arrMaquina,arrVideo,arrGeladeira,arrDuplex);
var soma = new Array();
for (var i=0;i < arrItens.length; i++)
{
soma.push(Number(arrPontos[i][arrItens[i]]));
}
//Prompt(soma.join("\n\r")+"\n\r\n\rSOMA:"+SomaArray(soma));
Pontos = (acSomaArray(soma)+chefe);
return Pontos;
}
//----------
function acSomaArray(array)
{
var valorSomado = 0;
for (var i = 0; i < array.length; i++){
valorSomado=valorSomado+Number(array[i]);
}
return valorSomado;
}
//-----------------------------------------------------------------------
/* Nome da Função: SetSingleFaixa
Programador: AlphaCrux
Data: 23-04-2015
Descrição: Esta função seta em uma RU um valor determinado, desde que esteja dentro do range que é passado.
Esta função também verifica se um valor encontra-se em um range informado.
Tipo Quest: Numéricas
Descrição do comando: SetSingleFaixa( , nome da função
toQuestion, ; Referência da questão RU que receberá a setagem.
setAnswer, ; Valor da setagem para a questão RU.
inAnswer, ; Referência da questão Numérica que será utilizada na condição do range.
inIniRange, ; Valor numérico de início de um range.
inIniRange, ; Valor numérico de término de um range.
bSet) ; Valor booleano true = Para setagem / false = Para checagem.
Observação: Função utilizada em questões de faixa etária, e determinação de faixa com base em valores numéricos.
*/
function SetSingleFaixa(toQuestion,setAnswer,inAnswer,inIniRange,inFimRange,bSet){
for (var x=inIniRange;x<=inFimRange;x++){
if (inAnswer==x){
if (bSet==true){
SetAnswer(toQuestion,setAnswer);
break;
} else {
return true;
}
}
}
return false;
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function aleat(array) {
var currentIndex = array.length, temporaryValue, randomIndex ;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
//---------- FUNÇÃO PARA SOMA DOS PONTOS - Critério Brasil
function SomaClasse(idxItens,QuestClasse,QuestChefe)
{
var Pontos = 0;
// Os itens precisam ser ordenados na seguinte sequencia
//TV / RADIO /BANHEIRO /AUTO /EMPREGADA /MAQUINA /VIDEO /GELADEIRA /GELADEIRADUPLEX
var arrItens = new Array();
for (var i = 0; i < idxItens.length;i++)
{
arrItens.push(AnswerChoice(QuestClasse,idxItens[i])-1);
}
//Pontuação dos Itens
var arrTV = [0,1,2,3,4];
var arrRadio = [0,1,2,3,4];
var arrBanheiro = [0,4,5,6,7];
var arrAuto = [0,4,7,9,9];
var arrEmpregada = [0,3,4,4,4];
var arrMaquina = [0,2,2,2,2];
var arrVideo = [0,2,2,2,2];
var arrGeladeira = [0,4,4,4,4];
var arrDuplex = [0,2,2,2,2];
var chefe = Number(AnswerCode(QuestChefe,Answer(QuestChefe)));
var arrPontos = new Array(arrTV,arrRadio,arrBanheiro,arrAuto,arrEmpregada,arrMaquina,arrVideo,arrGeladeira,arrDuplex);
var soma = new Array();
for (var i=0;i < arrItens.length; i++)
{
soma.push(Number(arrPontos[i][arrItens[i]]));
}
//Prompt(soma.join("\n\r")+"\n\r\n\rSOMA:"+SomaArray(soma));
Pontos = (SomaArray(soma)+chefe);
return Pontos;
}
//----------
function SomaArray(array)
{
var valorSomado = 0;
for (var i = 0; i < array.length; i++){
valorSomado=valorSomado+Number(array[i]);
}
return valorSomado;
}
//---------- FUNÇÃO PARA AUXILIO NO TRANSPORTE DE OUTROS
function SetVisibleOther(Quest,idxCodes)
{
var codes = new Array();
for (var i=0; i < idxCodes.length; i++)
{
if (Contains(Quest,idxCodes[i])){
codes.push(idxCodes[i]-(idxCodes[0]-1));
}
}
return codes;
}
function setAnswerTextOther (QuestSetOther,QuestOther, arrCodes)
{
for (var i=0;i < arrCodes.length;i++)
{
var idx = arrCodes[i]-(arrCodes[0]-1);
if (Contains(QuestOther-1,arrCodes[i])){
var text = AnswerChoice(QuestOther,idx);
SetAnswerText(QuestSetOther,arrCodes[i],text);
}
}
}
function setTopicTextOther (QuestSetOther,QuestOther, arrCodes)
{
for (var i=0;i < arrCodes.length;i++)
{
var idx = arrCodes[i]-(arrCodes[0]-1);
if (Contains(QuestOther-1,arrCodes[i])){
var text = AnswerChoice(QuestOther,idx);
SetTopicText(QuestSetOther,arrCodes[i],text);
}
}
}
//-----------
function NumOfTopicContainsValue(inQ, arrAnswers, inValueToCheck) //Existe uma função NATIVA do STG que faz isto "GetNumOfTopicsWithValues".
{
var retVal = 0;
for (var i=0; i< arrAnswers.length;i++){
var idx = arrAnswers[i];
if (IsTopicVisible(inQ, idx) && AnswerChoice(inQ,idx) == inValueToCheck) {
retVal++;
}
}
return retVal;
}
//Setar ocorrência.
function setOcorr(qOcorr,textOcorr)
{
SetAnswer(qOcorr,textOcorr);
SetAnswer(QRef(3),2);
}
//Compara horário Inicial e Final.
function chkDuracao(HoraIni, HoraFim)
{
var retBool = false;
var hIni = Number(Answer(HoraIni).Hour * 60) + Number(Answer(HoraIni).Minute);
var hFim = Number(Answer(HoraFim).Hour * 60) + Number(Answer(HoraFim).Minute);
if (hIni >= hFim){
retBool = true;
}
return retBool;
}
function dblSetSpecificAnswerIter(inQ, inIter, inAnswerIdx, inChecked)
{
var curAnswers = GetAnswersIter(inQ,inIter);
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) {
SetAnswerIter(inQ, inIter, newAnswers);
}
else {
ClearAnswerIter(inQ, inIter);
}
}
//Função MaxDiff
function getMaxDiff(strStoreName,strColVersao,intVersao,strColCartao,intCartao,arrColAtrib)
{
var arrAtribs = new Array();
try{
var table = GetTableFromStore(strStoreName,"","@@["+strColVersao+"]="+String(intVersao)+" and ["+strColCartao+"]="+String(intCartao),"");
//Prompt("Tabela: "+table.Name);
if (table != null && table.RowCount > 0){
var row = table[0];
for (var i=0;i < arrColAtrib.length;i++){
var col = row[arrColAtrib[i]].ToInt();
arrAtribs.push(col);
}
}
}
catch(err)
{
arrAtribs = null;
}
return arrAtribs;
}
/*
//Função SPLIT
function split(inQstDestino,inStr){
ClearAnswer(inQstDestino);
var arrAnswers = new Array();
arrAnswers = String(inStr).split("/");
for (var y=0;y<arrAnswers.length;y++){
if (arrAnswers[y]!=" " && arrAnswers[y]!=""){ dblSetSpecificAnswer(inQstDestino,Number(arrAnswers[y]),true); }
}
}
*/
function acToFloat(inNumber,decimal)
{
var retVal = parseFloat(inNumber.toString().replace(",", ".")).toFixed(decimal);
return retVal;
}
function acCreateArrayBetween(intStart,intEnd,isBeginZero)
{
var arrResult = []
if (isBeginZero)
{
for (var i=intStart;i<=intEnd;i++)
{
arrResult.push(i-1);
};
}
else{
for (var i=intStart;i<=intEnd;i++)
{
arrResult.push(i);
};
};
return arrResult;
};
function SPSSQuestType(inQst,inQstDestino){
if (QuestionChapter(inQst).GetIterations().length==0){
//TRATAMENTO PARA QUESTÕES DO TIPO
//RU, NUMERIC, OPEN
if (GetQuestionType(inQst)=="eqtAmerican" || GetQuestionType(inQst)=="eqtFreeText" || GetQuestionType(inQst)=="eqtNumeric"){
var txtFrequencies = "FREQUENCIES VARIABLES="+VarName(inQst)+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
if (GetQuestionType(inQst)=="eqtMultiSelect"){
var txtMultiple = "";
for (var x=1;x<=GetAnswerCount(inQst);x++){
if (x==1){
txtMultiple = VarName(inQst)+"_O"+x;
} else {
txtMultiple += " "+VarName(inQst)+"_O"+x;
}
}
var txtFrequencies = "MULT RESPONSE GROUPS=$"+VarName(inQst)+" ("+txtMultiple+" (1,999)) /FREQUENCIES=$"+VarName(inQst)+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
if (GetQuestionType(inQst)=="eqtMultiText" || GetQuestionType(inQst)=="eqtMultiNumeric" || GetQuestionType(inQst)=="eqtMultiTopics" || GetQuestionType(inQst)=="MultipleSelectionGrid"){
var arrQ2 = new Array("0","Q2_RUA","Q2_NUM","Q2_BAIRRO");
var arrQ14 = new Array("0","Q14_ENTREV","Q14_2","Q14_3","Q14_4","Q14_5","Q14_6","Q14_7","Q14_8","Q14_9","Q14_10","Q14_11","Q14_12","Q14_13","Q14_14","Q14_15");
var arrMORADORES = new Array("0","ENTREVISTADO","MORADOR2","MORADOR3","MORADOR4","MORADOR5","MORADOR6","MORADOR7","MORADOR8","MORADOR9","MORADOR10","MORADOR11","MORADOR12","MORADOR13","MORADOR14","MORADOR15");
var arrQ8 = new Array("0","Q8_ANO","Q8_MES");
var arrGrids = new Array(arrQ2,arrQ14,arrMORADORES,arrQ8);
var arrGridsTxt = new Array("arrQ2","arrQ14","arrMORADORES","arrQ8");
if (GetQuestionType(inQst)!="eqtMultiTopicsSelect"){
for (var x=0;x<arrGrids.length;x++){
if ("arr"+VarName(inQst)==arrGridsTxt[x]){
for (var y=1;y<=GetTopicCount(inQst);y++){
var txtFrequencies = "FREQUENCIES VARIABLES="+arrGrids[x][y]+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
}
}
} else {
for (var x=0;x<arrGrids.length;x++){
if ("arr"+VarName(inQst)==arrGridsTxt[x]){
for (var y=1;y<=GetTopicCount(inQst);y++){
for (var j=1;j<=GetAnswerCount(inQst);j++){
if (j==1){
txtMultiple = VarName(inQst)+"_O"+j;
} else {
txtMultiple += " "+VarName(inQst)+"_O"+j;
}
}
//var txtFrequencies = "FREQUENCIES VARIABLES="+arrGrids[x][y]+". \n";
var txtFrequencies = "MULT RESPONSE GROUPS=$"+arrGrids[x][y]+" ("+txtMultiple+" (1,999)) /FREQUENCIES=$"+arrGrids[x][y]+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
}
}
}
}
} else { //ITERAÇÕES *************************************
if (GetQuestionType(inQst)=="eqtAmerican" || GetQuestionType(inQst)=="eqtFreeText" || GetQuestionType(inQst)=="eqtNumeric"){
for (var x=1;x<=(QuestionChapter(inQst).GetIterations()).length;x++){
if (x==1){
var txtFrequencies = "FREQUENCIES VARIABLES=I_"+x+"_"+VarName(inQst)+". \n";
} else {
txtFrequencies = txtFrequencies+"FREQUENCIES VARIABLES=I_"+x+"_"+VarName(inQst)+". \n";
}
}
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
if (GetQuestionType(inQst)=="eqtMultiSelect"){
var txtMultiple = "";
for (var y=1;y<=(QuestionChapter(inQst).GetIterations()).length;y++){
for (var x=1;x<=GetAnswerCount(inQst);x++){
if (x==1){
txtMultiple = "I_"+y+"_"+VarName(inQst)+"_O"+x;
} else {
txtMultiple += " I_"+y+"_"+VarName(inQst)+"_O"+x;
}
}
var txtFrequencies = "MULT RESPONSE GROUPS=$"+VarName(inQst)+"_"+y+" ("+txtMultiple+" (1,999)) /FREQUENCIES=$"+VarName(inQst)+"_"+y+". \n";
}
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
if (GetQuestionType(inQst)=="eqtMultiText" || GetQuestionType(inQst)=="eqtMultiNumeric" || GetQuestionType(inQst)=="eqtMultiTopics" || GetQuestionType(inQst)=="MultipleSelectionGrid"){
var arrQ2 = new Array("0","Q2_RUA","Q2_NUM","Q2_BAIRRO");
var arrQ14 = new Array("0","Q14_ENTREV","Q14_2","Q14_3","Q14_4","Q14_5","Q14_6","Q14_7","Q14_8","Q14_9","Q14_10","Q14_11","Q14_12","Q14_13","Q14_14","Q14_15");
var arrGrids = new Array(arrQ2,arrQ14);
var arrGridsTxt = new Array("arrQ2","arrQ14");
if (GetQuestionType(inQst)!="eqtMultiTopicsSelect"){
for (var x=0;x<arrGrids.length;x++){
if ("arr"+VarName(inQst)==arrGridsTxt[x]){
for (var y=1;y<=GetTopicCount(inQst);y++){
for (var j=1;j<=(QuestionChapter(inQst).GetIterations()).length;j++){
var txtFrequencies = "FREQUENCIES VARIABLES=I_"+j+"_"+arrGrids[x][y]+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
}
}
}
} else {
for (var x=0;x<arrGrids.length;x++){
if ("arr"+VarName(inQst)==arrGridsTxt[x]){
for (var y=1;y<=GetTopicCount(inQst);y++){
for (var k=1;k<=QuestionChapter(inQst).GetIterations().length;k++){
for (var j=1;j<=GetAnswerCount(inQst);j++){
if (j==1){
txtMultiple = "I_"+k+"_"+VarName(inQst)+"_O"+j;
} else {
txtMultiple += " I_"+k+"_"+VarName(inQst)+"_O"+j;
}
}
}
var txtFrequencies = "MULT RESPONSE GROUPS=$"+arrGrids[x][y]+"_"+k+" ("+txtMultiple+" (1,999)) /FREQUENCIES=$"+arrGrids[x][y]+"_"+k+". \n";
SetAnswer(inQstDestino,Answer(inQstDestino)+txtFrequencies);
}
}
}
}
}
}
}
/************************************** BIBLIOTECA IBOPE *****************/
function IBIEncerre(InFunction, InMsg, InOcor, InEncer, InJump) {
SetAnswer(InEncer, 1);
if (InFunction) {
Prompt("Se "+InMsg+". Agradeça e encerre.");
SetAnswer(InOcor, VarName(CurrQues) + " = "+InMsg+".");
SetAnswer(InEncer, 2);
ExecutionMgr.GotoQuestion(InJump);
}
}
/* Programador: Wilson
Data: 04/02/2015
Descrição: Checar se existe um valor está em um intervalo de x - para y
Tipo Quest: Single e Mult
Exemplo: IBIFaixaValor(QRef(5), 18, 24);
*/
function IBIFaixaValor(inQIdx, inBegin, inEnd) {
var retVal = false;
for (var j = inBegin; j <= inEnd; j++) {
if (Answered(inQIdx) && Contains(inQIdx, j)) {
retVal = true; break; }
}
return retVal;
}
/* Programador: Wilson
Data: 25/05/2015
Descrição: Checar se existe um valor está em um intervalo de x - para y em uma iteração
Tipo Quest: Single e Mult
Exemplo: IBIFaixaValorIter(QRef(5), 18, 24, IterationIndex);
*/
function IBIFaixaValorIter(inQIdx, inBegin, inEnd, Iter) {
var retVal = false;
for (var j = inBegin; j <= inEnd; j++) {
if (AnsweredIter(inQIdx, Iter) && ContainsIter(inQIdx, j, Iter)) {
retVal = true; break; }
}
return retVal;
}
/* Programador: Wilson/Felipe
Data: 19/02/2015
Descrição: Retira acentos de variáveis texto
Tipo Quest: Single e Mult
Exemplo: IBIAcento(SelectedAnswerText(QRef(5)));
*/
function IBIAcento(inQues) {
// variável array que guarda as letras acentuadas
var arrAcen = new Array();
arrAcen = ["ç","Ç","á","é","í","ó","ú","ý","Á","É","Í","Ó","Ú","Ý","à","è","ì","ò","ù","À","È","Ì","Ò","Ù","ã","õ","ñ","ä","ë","ï","ö","ü","ÿ","Ä","Ë","Ï","Ö","Ü","Ã","Õ","Ñ","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","'"];
// variável array que guarda as letras sem acentos
var arrSAcen = new Array();
arrSAcen = ["c","C","a","e","i","o","u","y","A","E","I","O","U","Y","a","e","i","o","u","A","E","I","O","U","a","o","n","a","e","i","o","u","y","A","E","I","O","U","A","O","N","a","e","i","o","u","A","E","I","O","U"," "];
//variável texto que guarda a cidade
var strPraca = inQues;
// separa todas as letras da variável cidade em uma variável array
strPraca = strPraca.split("");
// variável que guarda a letra da palavra que deve ser alterada
var strResultado = "";
for (var l=0;l<strPraca.length;l++) {
for (var w=0;w<arrAcen.length;w++) {
if (strPraca[l]==arrAcen[w]) {
strPraca[l] = arrSAcen[w];
}
}
}
for (var c=0;c<strPraca.length;c++) {
strResultado = strResultado.concat(strPraca[c]);
}
Prompt(strResultado);
return strResultado;
}
/* Programador: Felipe
Data: 20/02/2015
Descrição: Validar email
Tipo Quest: Texto
Exemplo: IBIEmail(QRef(5));
*/
function IBIEmail(inQuest){
// variável string que guarda o email
var email = SelectedAnswerText(inQuest);
email = email.split("");
// variável de controle de @
var arroba = false;
// variável de controle de .
var ponto = false;
// variável de controle de caracteres inválidos
var erro = false;
// variável array que guarda os caracteres inválidos
var invalidos = ["'", "!", "#", "$", "%", "&", "*", "(", ")", "+", "=", "[", "{", "}", "]", "^", "~", "?", ":", ";", "/", "`", "´", "¨",
">", "<", "|", "ç", "Ç", "á", "é", "í", "ó", "ú", "ý", "Á", "É", "Í", "Ó", "Ú", "Ý", "à", "è", "ì", "ò", "ù", "À", "È",
"Ì", "Ò", "Ù", "ã", "õ", "ñ", "ä", "ë", "ï", "ö", "ü", "ÿ", "Ä", "Ë", "Ï", "Ö", "Ü", "Ã", "Õ", "Ñ", "â", "ê", "î", "ô",
"û", "Â", "Ê", "Î", "Ô" ,"Û"];
for (var x=0;x<email.length;x++){
if (email[x]=="@"){
arroba = true;
}
if (email[x]=="."){
ponto = true;
}
for (var y=0;y<invalidos.length;y++){
if (email[x]==invalidos[y]){
erro = true
break;
}
}
if (erro == true){
Prompt ("Carácter inválido: " + email[x])
break;
}
}
if ((ponto && arroba) &&
(email[0]!="." && email[0]!="@" && email[email.length-1]!="." && email[email.length-1]!="@") &&
!erro
){
return false
} else {
return true
}
}
/* Programador: Felipe
Data: 20/02/2015
Descrição: Validar CEP
Tipo Quest: Texto
Exemplo: IBICEP(QRef(5));
*/
function IBICEP(inQuest){
// variável string que guarda o email
var CEP = SelectedAnswerText(inQuest);
CEP = CEP.split("");
// variável de controle de caracteres inválidos
var erro = false;
// variável de controle para receber o formato correto
var traco = false;
for (var x=0;x<CEP.length;x++){
if ((CEP[x]!="0" &&
CEP[x]!="1" &&
CEP[x]!="2" &&
CEP[x]!="3" &&
CEP[x]!="4" &&
CEP[x]!="5" &&
CEP[x]!="6" &&
CEP[x]!="7" &&
CEP[x]!="8" &&
CEP[x]!="9" &&
CEP[x]!="-")) {
erro = true;
//Prompt ("Carácter inválido: "+CEP[x])
break;
}
if (CEP[x]=="-"){
traco = true;
}
}
if (!(Answer(inQuest)==1)) {
if ((CEP.length<8 || CEP.length>9) && traco){
erro = true;
}
if (CEP.length!=8 && !traco){
erro = true;
}
}
return erro;
}
function IBITexto(texto){
var erro = false
try{
texto.ToInt()
} catch(NumberFormatException) {
erro = true
}
return erro
}
/* Nome da Função: IBIBuscaOutros
Programador: Wilson
Data: 22/05/2015
Descrição: Busca Outras na Lista Fixa
Tipo Quest: Single e Multi
Exemplo: IBIBuscaOutros(AddtionalText(CurrQues), QRef(CurrQues)); /
IBIBuscaOutros(SelectedAnswerText(CurrQues+1), QRef(CurrQues));
Msg 'Verificar Outros vs Lista de Marcas.'
OBS: Alterado dia 21/08 - inclusão do RegExp
*/
function IBIBuscaOutros(inQidxOther, inQidxList) {
var retVal = false;
if (inQidxOther != '') {
var arrList = new Array();
for (var j=1;j<=GetAnswerCount(inQidxList);j++) {
arrList[j-1] = IBITrim(IBIUpper(GetAnswerOriginalText(inQidxList, j)));
}
var reList = new RegExp(arrList);
var reAnswer = new RegExp(IBITrim(IBIUpper(inQidxOther)));
if (reAnswer.test(reList)) {
Prompt("A resposta (ou alguma variante) digitada em outros '"+inQidxOther+"' está na lista de marcas. Verifique");
retVal = true;
}
}
return retVal;
}
/* Nome da Função: IBITrim
Programador: Internet (desconhecido)
Data: 22/05/2015
Descrição: Remove espaços
Tipo Quest: Strings
Exemplo: IBITrim(Answer(CurrQues)); / IsTrim(SelectedAnswerText(CurrQues));
*/
function IBITrim(str) {
str = str.ToString();
return str.replace(/^\s+|\s+$/g,"");
}
/* Nome da Função: IBIUpper
Programador: Internet (desconhecido)
Data: 22/05/2015
Descrição: Letras em Maiúscula
Tipo Quest: Strings
Exemplo: IBIUpper(Answer(CurrQues)); / IsUpper(SelectedAnswerText(CurrQues));
*/
function IBIUpper(str) {
str = str.ToString();
return str.toUpperCase();
}
/* Nome da Função: IBIGetIdxByCod
Programador: Wilson
Data: 26/06/2015
Descrição: Transforma o código em Index
Tipo Quest: Single e Multiple
Exemplo: IBIGetIdxByCod(CurrQues, [97,98]); => transforma uma lista de códigos em uma lista de IDXs
*/
function IBIGetIdxByCod(IndiceQuestao, Codigos) {
var retVal = new Array();
for (var l=0; l<Codigos.length; l++) {
retVal.push(GetAnswerChoiceIdxByCode(IndiceQuestao, Codigos[l]));
}
return retVal;
}
/* Nome da Função: IBICountTopic
Programador: Felipe
Data: 23/07/2015
Descrição: Conta quantos tópicos foram respondidos com a resposta informada
Tipo Quest: Topic
Exemplo: IBICountTopic(QRef(x), 1); => Retorna quantos tópicos tem resposta 1
*/
function IBICountTopic(inQuest, inResp){
var soma = 0
for (var x=1;x<=GetTopicCount(inQuest);x++){
if (ContainsSpecificRate(inQuest, inResp, x)){
soma++
}
}
return soma
}
/* Nome da Função: IBICountTopic
Programador: Felipe
Data: 23/07/2015
Descrição: Conta quantos tópicos foram respondidos com a resposta informada
Tipo Quest: Topic
Exemplo: IBICountTopic(QRef(x), 1); => Retorna quantos tópicos tem resposta 1
*/
function IBIchkOutros(inQuest, inInicio, inFinal){
var arrNum = new Array()
for (var x=inInicio;x<=inFinal;x++){
arrNum.push(x)
}
for (var x=0;x<arrNum.length;x++){
for (var y=(x+1);y<arrNum.length;y++){
if (!ContainsOneOf(inQuest,arrNum[x]) && ContainsOneOf(inQuest,arrNum[y]) && IsAnswerVisible(inQuest,arrNum[x])){
return true
break;
}
}
}
}
/* Programador: Felipe
Data: 08/10/2015
Descrição: Verifica se possui apenas letras
Tipo Quest: Aberta
Exemplo: IBILetras(SelectedAnswerText(QRef(5)));
*/
function IBILetras(inQues) {
/*variável texto que guarda a cidade
var str = inQues
var arrNum = [0,1,2,3,4,5,6,7,8,9]
for (var l=0;l<arrNum.length;l++) {
if (IsRegEx(arrNum[l],str)){
return true
}
}
return false;*/
var str = SelectedAnswerText(inQues);
var patt = /[0-9]/g;
return patt.test(str);
}
/* Programador: Felipe
Data: 08/10/2015
Descrição: Verifica se possui apenas letras
Tipo Quest: Aberta
Exemplo: IBILetras(SelectedAnswerText(QRef(5)));
*/
function IBINumerosTopic(inQues, inChoice) {
/*variável texto que guarda a cidade
var str = inQues
var arrNum = [0,1,2,3,4,5,6,7,8,9]
for (var l=0;l<arrNum.length;l++) {
if (IsRegEx(arrNum[l],str)){
return true
}
}
return false;*/
var str = SelectedAnswerChoiceText(inQues, inChoice);
var patt = /[a-zA-Z]/g;
return patt.test(str);
}
/* Programador: Felipe
Data: 20/02/2015
Descrição: Validar CEP
Tipo Quest: Texto
Exemplo: IBICEP(QRef(5));
*/
function IBICEPChoice(inQuest, inChoice){
// variável string que guarda o email
var CEP = SelectedAnswerChoiceText(inQuest, inChoice);
CEP = CEP.split("");
// variável de controle de caracteres inválidos
var erro = false;
// variável de controle para receber o formato correto
var traco = false;
for (var x=0;x<CEP.length;x++){
if ((CEP[x]!="0" &&
CEP[x]!="1" &&
CEP[x]!="2" &&
CEP[x]!="3" &&
CEP[x]!="4" &&
CEP[x]!="5" &&
CEP[x]!="6" &&
CEP[x]!="7" &&
CEP[x]!="8" &&
CEP[x]!="9" &&
CEP[x]!="-")) {
erro = true;
//Prompt ("Carácter inválido: "+CEP[x])
break;
}
if (CEP[x]=="-"){
traco = true;
}
}
if (!(Answer(inQuest)==1)) {
if ((CEP.length<8 || CEP.length>9) && traco){
erro = true;
}
if (CEP.length!=8 && !traco){
erro = true;
}
}
return erro;
}
/* Programador: Felipe
Data: 08/10/2015
Descrição: Verifica se possui apenas letras
Tipo Quest: Aberta
Exemplo: IBILetras(SelectedAnswerText(QRef(5)));
*/
function IBINumeros(inQues) {
/*variável texto que guarda a cidade
var str = inQues
var arrNum = [0,1,2,3,4,5,6,7,8,9]
for (var l=0;l<arrNum.length;l++) {
if (IsRegEx(arrNum[l],str)){
return true
}
}
return false;*/
var str = SelectedAnswerText(inQues);
var patt = /[a-zA-Z]/g;
return patt.test(str);
}
/* Programador: Wilson Ruiz
Data: 05/02/2016
Descrição: Cálculo das Classificações sociais de 2015 e 2008
Tipo Quest: Diversas
Exemplo: Calculo_CSE(QRef(34),);
*/
/* Cálculo da classe social antiga mais 2015 - Inicio */
function Calculo_CSE(NumPosse,InstrEntrev,NumPontos){
var ArrPCE1 = new Array();
var NumTot = 0;
ArrPCE1[1]=[0,4,5,6,7] //Banheiros
ArrPCE1[2]=[0,3,4,4,4] //Empregados Mensalistas
ArrPCE1[3]=[0,4,7,9,9] //Automóvel de Passeio
ArrPCE1[4]=[0,0,0,0,0] //Microcomputadores
ArrPCE1[5]=[0,0,0,0,0] //Lava-louça
ArrPCE1[6]=[0,4,4,4,4] //Geladeira
ArrPCE1[7]=[0,2,2,2,2] //Freezers
ArrPCE1[8]=[0,2,2,2,2] //Máquina de Lavar
ArrPCE1[9]=[0,0,0,0,0] //DVD
ArrPCE1[10]=[0,0,0,0,0] //Micro-ondas
ArrPCE1[11]=[0,0,0,0,0] //Motocicleta
ArrPCE1[12]=[0,0,0,0,0] //Secadora de Roupas
ArrPCE1[13]=[0,1,2,3,4] //Televisor em cores? (CASO SIM) Quantos?
ArrPCE1[14]=[0,1,2,3,4] //Rádio?
ArrPCE1[15]=[0,2,2,2,2] //Videocassete?
ArrPCE1[16]=[0,1,2,4,8] //C4
ArrPCE1[17]=[0,0,0,0,0] //C2
ArrPCE1[18]=[0,0,0,0,0] //C3
/* ATENÇÃO ABAIXO FOI RETIRADA DA CONTAGEM DO FOR O ITEM VIDEOCASSETE.
ESSE ITEM SERÁ SOMADO SEPARADAMENTE SOMANDO OS ITENS DVD E VIDEOCASSETE */
for (var iter=1;iter<GetTopicCount(NumPosse);iter++) {
if (AnswerChoice(NumPosse,iter)>=1) {
NumTot+=ArrPCE1[iter][AnswerChoice(NumPosse,iter)-1];
}
}
/* SOMA OS ITENS DVD E VIDEOCASSETE */
var tes1 = (AnswerChoice(NumPosse,9)-1);
var tes2 = (AnswerChoice(NumPosse,15)-1);
var tes3 = (tes1)+(tes2);
NumTot+=ArrPCE1[15][tes3];
//C4
NumTot+=ArrPCE1[16][Answer(InstrEntrev)-1];
// Seta o valor dos pontos na questão de pontuação
dblSetSpecificTopic(QRef(40),1,NumTot);
// Setagem das faixas da classe social
if (AnswerChoice(NumPontos,1)>=0 && AnswerChoice(NumPontos,1)<=7) {
SetAnswer(QRef(41),8);
} else if (AnswerChoice(NumPontos,1)>=8 && AnswerChoice(NumPontos,1)<=13) {
SetAnswer(QRef(41),7);
} else if (AnswerChoice(NumPontos,1)>=14 && AnswerChoice(NumPontos,1)<=17) {
SetAnswer(QRef(41),6);
} else if (AnswerChoice(NumPontos,1)>=18 && AnswerChoice(NumPontos,1)<=22) {
SetAnswer(QRef(41),5);
} else if (AnswerChoice(NumPontos,1)>=23 && AnswerChoice(NumPontos,1)<=28) {
SetAnswer(QRef(41),4);
} else if (AnswerChoice(NumPontos,1)>=29 && AnswerChoice(NumPontos,1)<=34) {
SetAnswer(QRef(41),3);
} else if (AnswerChoice(NumPontos,1)>=35 && AnswerChoice(NumPontos,1)<=41) {
SetAnswer(QRef(41),2);
} else if (AnswerChoice(NumPontos,1)>=42 && AnswerChoice(NumPontos,1)<=46) {
SetAnswer(QRef(41),1);
}
var ArrPCE2 = new Array();
var NumTot2 = 0;
ArrPCE2[1]=[0,3,7,10,14] //Banheiros
ArrPCE2[2]=[0,3,7,10,13] //Empregados Mensalistas
ArrPCE2[3]=[0,3,5,8,11] //Automóvel de Passeio
ArrPCE2[4]=[0,3,6,8,11] //Microcomputadores
ArrPCE2[5]=[0,3,6,6,6] //Lava-louça
ArrPCE2[6]=[0,2,3,5,5] //Geladeira
ArrPCE2[7]=[0,2,4,6,6] //Freezers
ArrPCE2[8]=[0,2,4,6,6] //Máquina de Lavar
ArrPCE2[9]=[0,1,3,4,6] //DVD
ArrPCE2[10]=[0,2,4,4,4] //Micro-ondas
ArrPCE2[11]=[0,1,3,3,3] //Motocicleta
ArrPCE2[12]=[0,2,2,2,2] //Secadora de Roupas
ArrPCE2[13]=[0,0,0,0,0] //Televisor em cores? (CASO SIM) Quantos?
ArrPCE2[14]=[0,0,0,0,0] //Rádio
ArrPCE2[15]=[0,0,0,0,0] //Videocassete
ArrPCE2[16]=[0,1,2,4,7] //C4
ArrPCE2[17]=[4,0,0,0,0] //C2
ArrPCE2[18]=[2,0,0,0,0] //C3
for (var iter2=1;iter2<=GetTopicCount(NumPosse);iter2++) {
if (AnswerChoice(NumPosse,iter2)>=1) {
NumTot2+=ArrPCE2[iter2][AnswerChoice(NumPosse,iter2)-1];
}
}
//C4
NumTot2+=ArrPCE2[16][Answer(InstrEntrev)-1];
//C2
NumTot2+=ArrPCE2[17][Answer(QRef(38))-1];
//C3
NumTot2+=ArrPCE2[18][Answer(QRef(39))-1];
// Seta o valor dos pontos na questão de pontuação
dblSetSpecificTopic(QRef(40),2,NumTot2);
// Setagem das faixas da classe social
if (AnswerChoice(NumPontos,1)>=0 && AnswerChoice(NumPontos,1)<=16) {
SetAnswer(QRef(42),6);
} else if (AnswerChoice(NumPontos,1)>=17 && AnswerChoice(NumPontos,1)<=22) {
SetAnswer(QRef(42),5);
} else if (AnswerChoice(NumPontos,1)>=23 && AnswerChoice(NumPontos,1)<=28) {
SetAnswer(QRef(42),4);
} else if (AnswerChoice(NumPontos,1)>=29 && AnswerChoice(NumPontos,1)<=37) {
SetAnswer(QRef(42),3);
} else if (AnswerChoice(NumPontos,1)>=38 && AnswerChoice(NumPontos,1)<=44) {
SetAnswer(QRef(42),2);
} else if (AnswerChoice(NumPontos,1)>=45) {
SetAnswer(QRef(42),1);
}
}
/* Cálculo da classe social Novo critério 2015 - Final */
function setFaixa(toQstFaixa,inQstIdade,arrFaixas){
for (var x=0;x<arrFaixas.length;x++){
if (InRange(inQstIdade,arrFaixas[x][0],arrFaixas[x][1]))
SetAnswer(toQstFaixa,x+1);
}
}
function acDatediff(currdata,birthdata)
{
var anos
anos = Round(TimeDiffYears(currdata,birthdata))
if (currdata.Month < birthdata.Month)
{
anos--;
}
else if (currdata.Month == birthdata.Month)
{
if (currdata.Day < birthdata.Day)
{
anos--;
}
}
return anos
}
/* Nome da Função: CheckQuota
Programador: Bruno Costa
Data: 08/02/2018
Descrição: Verificar se o target da cota foi atingido
Tipo Quest: Quota Sheets
Exemplo: CheckQuota("nome da cota"); => Retorna true se a cota estiver fechada
Retorna false se a cota estiver aberta
*/
function CheckQuota(QuotaName){
if ((Number(QuotaMgr.GetQuotaTotal(QuotaName))-Number(QuotaMgr.GetQuotaCurrent(QuotaName)))<=0){
return true;
} else {
return false;
}
}
function IRLCheckOpenGrid_nhapOthertheothutu_caccodelienke()
{ var reT = false
// chỉ check các câu open grid đứng liền kề nhau
for (var i=2; i <= GetTopicCount(CurrQues); i++)
{
if(IsTopicVisible(CurrQues,i-1) && IsNullOrEmpty(AnswerChoice(CurrQues,i-1)) && !IsNullOrEmpty(AnswerChoice(CurrQues,i)))
{ reT = true
break;
}
}
return reT
}
function IRLCheck_nhapOthertheothutu_caccodelienke()
{ var reT = false
for (var i=2; i <= GetAnswerCount(CurrQues); i++)
{
if(IsOtherSpec(CurrQues,i-1) && IsAnswerVisible(CurrQues,i-1) && NotContains(CurrQues,i-1) && Contains(CurrQues,i) && IsOtherSpec(CurrQues,i))
{ reT = true
break;
}
}
return reT
}
function geta()
{
return "a"
Prompt ("a")
}
//функция, которая проверяет кол-во введенного текста ©2017 Anton L.
function gfkValidOpenLen(inQ,inMinLen,inMaxLen,isNA) {
var retVal = false;
var limit = 0;
if (isNA == true) {
limit = 1
} else {
limit = GetTopicCount(inQ)
}
//Если грид-вопрос
if (GetTopicCount(inQ)>0) {
for (var i=1; i<=limit; i++) {
//Если мало текста, то ругаемся
if (AnswerChoice(inQ,i).Length < inMinLen) {
retVal = true;
Prompt("Введите минимум " + inMinLen + " символов, в строке " + i)
break;
}
//Если мало текста, тоже ругаемся
if (AnswerChoice(inQ,i).Length > inMaxLen) {
retVal = true;
Prompt("Можно ввестии максимум " + inMaxLen + " символов, в строке " + i + ". Введено " + AnswerChoice(inQ,i).Length + " символов.")
break;
}
}
//Если просто открытый
} else {
if (Answer(inQ).Length < inMinLen) {
retVal = true;
Prompt("Введите минимум " + inMinLen + " символов")
}
if (Answer(inQ).Length > inMaxLen) {
retVal = true;
Prompt("Можно ввестии максимум " + inMaxLen + " символов. Введено " + AnswerChoice(inQ,i).Length + " символов.")
}
}
return retVal;
}
// фунция возвращает массив ответов по множественной переменной
function gfkruGetArrayFromMP(mpVar){
var arr = []
var arrlen = 0
for(var idx = 1; idx <= GetAnswerCount(mpVar); idx++){
if( ContainsOneOf(mpVar, idx) ){
arr[arrlen++] = idx
}
}
return arr
}
// функция возвращает строку с метками ответов из множественного вопроса mpVar
// в параметре delimiter можно передать разделитель
function gfkruGetAnswerLabelsFromMP(mpVar, delimiter){
var res = ""
for(var idx=1; idx<GetAnswerCount(mpVar);idx++){
if( ContainsOneOf(mpVar, idx) ){
if( res != "" ) { res += delimiter}
res += AnswerText(mpVar, idx )
}
}
return res
}
// для гридов с числами. Ставит 0 в пустые ячейки, чтобы не заполнять лишнее. ©2017 Anton L.
function gfkruSetZeroToNumGrid (inQ) {
for (var i=1;i<=GetTopicCount(inQ);i++) {
if (AnswerChoice(inQ,i) == -99999) {
dblSetSpecificTopic(inQ,i,0)
}
}
}
/**
Created by Metelskaya K.
Функция, которая скрывает empty-значения
**/
function gfkHideEmpty(Ques, Answer_Or_Topics){
/**
Ques - вопрос, в котором нужно скрыть empty-значения
AnswerOrTopics - переменная указывает где скрыть (Answer или Topic)
**/
if ( Answer_Or_Topics == "a" || Answer_Or_Topics == "A" || Answer_Or_Topics == 0 ) {
//SetAnswerVisible(Ques, true);
for (var i = 1; i <= GetAnswerCount(Ques); i++){
if ( AnswerText(Ques,i) == "empty" || AnswerText(Ques,i) == "dummy" ) {
SetAnswerVisible(Ques, i, false);
}
}
}else if( Answer_Or_Topics == "t" || Answer_Or_Topics == "T" || Answer_Or_Topics == 1 ){
//SetTopicVisible(Ques, true);
for (var i = 1; i <= GetTopicCount(Ques); i++){
if ( TopicText(Ques,i) == "empty" || TopicText(Ques,i) == "dummy" ) {
SetTopicVisible(Ques, i, false);
}
}
}
}
/**
Created by Metelskaya K.
Функция, которая рандомизирует массив с исключением тех кодов, которые должны быть в конце
**/
function gfkRandomWithFixedLastElement( Ques, base_array, fixed_last_element ){
/**
base_array - полный массив элементов
fixed_last_element - элементы из base_array, которые необходимо закрепить в конце
**/
var arr_start = [];
var arr_end_fixed = [];
var arr_summ = [];
var index_arr_start = 0;
var index_arr_end_fixed = 0;
for ( var i = 0; i < base_array.length; i++ ){
var isTrue = false;
for ( var j = 0; j < fixed_last_element.length; j++ ) {
if ( base_array[i] == fixed_last_element[j] ) {
isTrue = true;
}
}
if ( isTrue == false ){
arr_start[index_arr_start] = base_array[i];
index_arr_start++;
}else{
arr_end_fixed[index_arr_end_fixed] = fixed_last_element[index_arr_end_fixed];
index_arr_end_fixed++;
}
}
arr_start = RandomizeArray(arr_start);
for (var i = 0; i < arr_start.length; i++ ) {
arr_summ[i] = arr_start[i];
}
for (var i = 0; i < arr_end_fixed.length; i++ ) {
arr_summ[arr_summ.length] = arr_end_fixed[i];
}
return arr_summ;
}
/**
Created by Metelskaya K.
Функция, которая рандомизирует массив, при этом некоторые комбинации кодов должны быть сцеплены вместе
**/
function gfkRandomWithFixedGroupCode( Ques, arrSaveCode, arrPositionAddCode, AnswerOrTopics ){
/**
arrSaveCode - массив групп кодов, которые должны быть сцеплены вместе
arrPositionAddCode - массив позиций, куда необходимо(возможно) вставить отрандомизированные группы кодов. Указать примерные значения позиций, главное, чтобы не пересекались
AnswerOrTopics - переменная указывает что рандомизировать (Answer или Topic)
**/
//Из двухмерного массива групп кодов, сдлеаем одномерный массив
var _arrSaveCode = []; //Одномерный массив групп кодов, которые должны быть сцеплены вместе
var iter_arrSaveCode = 0;
for ( var i = 0; i < arrSaveCode.length; i++ ){
for ( var j = 0; j < arrSaveCode[i].length; j++ ){
_arrSaveCode[iter_arrSaveCode] = arrSaveCode[i][j];
iter_arrSaveCode++;
}
}
//Найдем оставшиеся не сгруппированные коды
var arrOtherCode = []; //Массив оставшихся кодов (без сгруппированных), которые необходимо отрандомизировать
var iterarrOtherCode = 0;
if ( AnswerOrTopics == "a" ) {
for( var i = 1; i <= GetAnswerCount(CurrQues); i++ ){
var isTrue = true;
for ( var j = 0; j < _arrSaveCode.length; j++ ) {
if ( i == _arrSaveCode[j] ) isTrue = false;
}
if ( isTrue == true ) {
arrOtherCode[iterarrOtherCode] = i;
iterarrOtherCode++;
}
}
}else if ( AnswerOrTopics == "t" ) {
for( var i = 1; i <= GetTopicCount(CurrQues); i++ ){
var isTrue = true;
for ( var j = 0; j < _arrSaveCode.length; j++ ) {
if ( i == _arrSaveCode[j] ) isTrue = false;
}
if ( isTrue == true ) {
arrOtherCode[iterarrOtherCode] = i;
iterarrOtherCode++;
}
}
}
//Отрандомизируем массив позиций, куда вставить группы кодов
arrPositionAddCode = RandomizeArray(arrPositionAddCode);
var iterarrPositionAddCode = 0;
var _iterarrPositionAddCode = 0;
//Заполним финальмый массив рандомизации сначала группами кодов
var arrSaveOrder = []; //финальмый массив рандомизации
for ( var i = 0; i < arrSaveCode.length; i++ ){
iterarrPositionAddCode = arrPositionAddCode[i];
_iterarrPositionAddCode = iterarrPositionAddCode;
var _arrSaveCodeCurr = RandomizeArray(arrSaveCode[i]);
for ( var j = 0; j < arrSaveCode[i].length; j++ ){
arrSaveOrder[_iterarrPositionAddCode] = _arrSaveCodeCurr[j];
_iterarrPositionAddCode++;
};
};
//Отрандомизируем массив оставшихся кодов (без сгруппированных)
arrOtherCode = RandomizeArray(arrOtherCode);
var iterarrOtherCode = 0;
//Заполним финальмый массив оставшимися кодами (массив arrOtherCode)
if ( AnswerOrTopics == "a" ) {
for ( var i = 0; i < GetAnswerCount(CurrQues); i++ ){
if ( arrSaveOrder[i] == undefined ){
arrSaveOrder[i] = arrOtherCode[iterarrOtherCode];
iterarrOtherCode++;
}
};
}else if ( AnswerOrTopics == "t" ) {
for ( var i = 0; i < GetTopicCount(CurrQues); i++ ){
if ( arrSaveOrder[i] == undefined ){
arrSaveOrder[i] = arrOtherCode[iterarrOtherCode];
iterarrOtherCode++;
}
};
};
//Отрандомизируем вопрос
if ( AnswerOrTopics == "a" ) {
RandomizeAnswers(CurrQues, arrSaveOrder);
}else if ( AnswerOrTopics == "t" ) {
RandomizeTopics(CurrQues, arrSaveOrder);
};
};
//Функция, которая рандомизирует массив, без проблем, которые создаёт дефолтная
function gfkRandomizeArray(targetArray) {
var randomizedArray = new Array;
randomizedArray = RandomizeArray(targetArray)
for (var i=0; i < randomizedArray.length; i++) {
targetArray[i] = randomizedArray[i]
}
return targetArray;
}
// Функция, которая рандомит НЕТы и СКЮ внутри нетов
// netsCodes передается в формате [0,1,2,3,4,5,6,7];
// skuArray передается в формате [[1],[2],[3,4],[5],[6,7],[8,9,10,11],[12,13,14],[15]]
// netsCodes передается в формате [16];
function gfkRandNETsAndCodes(qIdx,netsCodes,skuArray,exclCode) {
var rndSKU = [];
for (var i=0; i<=skuArray.length-1;i++) {
rndSKU.push(gfkRandomizeArray(skuArray[i]))
}
var tmp = gfkRandomizeArray(netsCodes);
var result = [];
for (var i=0; i<=tmp.length-1; i++) {
for (var k=0; k<=rndSKU.length-1; k++) {
if (tmp[i] == k) {
result[i] = rndSKU[k]
}
}
}
result.push(exclCode)
RandomizeAnswers(qIdx,StringToIntArray(result))
}
///////////////////////////////////////////////////////////////////////////////////////
// Скрипты от болгар. 2017-07-25
///////////////////////////////////////////////////////////////////////////////////////
/*
function dblLeastFullQuota(dummyQ,resultQ,count){
var dAns = GetAnswers(dummyQ);
var qCounts = Array()
var niz = Array()
var pom_niz = Array()
for (var i=1; i<GetVisibleAnswerCount(dummyQ)+1;i++){
if (Contains(dummyQ,i)){
niz[i-1]= QuotaMgr.GetQuotaCurrent(AnswerText(dummyQ,i));
}else{
niz[i-1] = 999999
};
pom_niz.push(i)
}
var raz=1;
var pom,pom1;
do{
raz=0;
for(var i=0;i<pom_niz.length;i++){
if(niz[i]>niz[i+1]){
pom=niz[i+1];
niz[i+1]=niz[i];
niz[i]=pom;
pom1=pom_niz[i+1];
pom_niz[i+1]=pom_niz[i];
pom_niz[i]=pom1;
raz=1;
} }
}while(raz==1);
for (var i=0;i<pom_niz.length;i++){
if (NumOfSelectedChoices(resultQ)<count){
dblSetSpecificAnswer(resultQ, pom_niz[i],true);
}
}
for (var i=1;i<GetVisibleAnswerCount(dummyQ)+1;i++){
if (Contains(resultQ,i)&&!Contains(dummyQ,i)){
dblSetSpecificAnswer(resultQ, i, false);
}
}
}
*/
function dblCatFilter (inQ,topicsORanswers,filter,isVisible){
var string = filter
var splitFilter = stringSplit(filter,",")
for (var i = 0; i < splitFilter.length; i++){
var innerSplit = stringSplit(splitFilter[i],"..");
var From = innerSplit[0];
var To = innerSplit[innerSplit.length-1];
for (From; From<To+1;From++){
if (topicsORanswers == "topics"){SetTopicVisible(inQ, From, isVisible)};
if (topicsORanswers == "answers"){SetAnswerVisible(inQ, From, isVisible)};
};
};
}
function dblTransferAnswersGridToGrid (inQ, inTargetQ)
{
for (var i = 1; i<GetTopicCount(inQ)+1;i++){
var ans = GetAnswersChoice(CurrQues,i)
SetAnswerChoice(inTargetQ,i,ans)
}
}
function dblContainsSingleOneOf(inQTarget,inAnswers)
{
var retVal = false;
var numOfAnswers = inAnswers.length;
var i;
for (i=0;i< numOfAnswers;i++) {
if (Answer(inQTarget)==inAnswers[i]) {
retVal = true;
break;
}
}
return retVal;
}
///////////////////////////////////////////////////////////////////////////////////////
// Конец скриптов от болгар. 2017-07-25
///////////////////////////////////////////////////////////////////////////////////////
function ContainsOneOfCode (inTargetQ, arr)
{
var tmp=false;
for (var i=0;i<arr.length;i++)
{
if (ContainsOneOf(inTargetQ,GetAnswerChoiceIdxByCode(inTargetQ,arr[i])))
{
tmp=true;
break;
}
}
return tmp;
}
var Lic = ""
function LicPlatform()
{
if(IsPlatform(ePlatform.Android)) return 1;
if(IsPlatform(ePlatform.PC)) return 2;
if(IsPlatform(ePlatform.SmartPhone)) return 3;
if(IsPlatform(ePlatform.MobileWeb)) return 4;
if(IsPlatform(ePlatform.Web)) return 5;
}
function OnGetUserSelectionItems(ioList, inTag, inCurrSelection, ioParams){
var str = inTag.split("@")
var V1= str[0];
var V2 = V1;
var c = 1;
if(str.length > 0) c = str[1];
if(str.length > 1) V2 = str[str.length-1];
if (V1 == "LicTrg")
{
if (inCurrSelection == null) {
ioList.Add(V2, c);
//ioList.Add("No", 2);
//inCurrSelection.Value = c;
ioParams.Title = "TITA RESEARCH";
}
// do actions based on selected answer
else{
//return inCurrSelection.Value
if(inCurrSelection.Value < 0){
ExecutionMgr.CancelSubject();
}
else if(inCurrSelection.Value > 0){
ExecutionMgr.GotoQuestion(c,true);
}
}
}
}
function MessageBox(Msg){
if(IsPlatform(ePlatform.Android)==false)
{
Prompt(Msg);
}
else
{
var str = "LicTrg@" + Msg;
OpenUserSelection(str);
}
}
function LicCancel(Msg){
if (Msg == "") Msg = "Đáp viên không thỏa điều kiện";
Msg = "-1@" + Msg;
MessageBox(Msg);
}
function LicLogic(Msg,gotoQindx){
if (Msg == "") Msg = "Sai Logic";
Msg = gotoQindx + "@" + Msg;
MessageBox(Msg);
}
function LicCancelInList(Qindx,LstCancel,Msg){
var lstAnwser = GetAnswers(Qindx);
var V;
for (var i=0;i< lstAnwser.length;i++) {
V = lstAnwser[i];
if(LicInList(LstCancel,V) == 1)
{
LicCancel(Msg);
}
}
}
function LicLogicInList(Qindx,LstCode,Msg){
var lstAnwser = GetAnswers(Qindx);
var V;
for (var i=0;i< lstAnwser.length;i++) {
V = lstAnwser[i];
if(LicInList(LstCode,V) == 1)
{
LicLogic(Msg,Qindx);
//if (Msg != ""){ MessageBox(Msg);}
//ExecutionMgr.GotoQuestion(CurrQues,true);
//ExecutionMgr.CancelSubject();
}
}
}
function LicGoToQInList(Qindx,LstCode,Msg,GoQ){
var lstAnwser = GetAnswers(Qindx);
var V;
for (var i=0;i< lstAnwser.length;i++) {
V = lstAnwser[i];
if(LicInList(LstCode,V) == 1)
{
//LicLogic(Msg,GoQ);
if (Msg != ""){ MessageBox(Msg);}
ExecutionMgr.GotoQuestion(GoQ,true);
//ExecutionMgr.CancelSubject();
}
}
}
function LicGoToChapterInList(Qindx,LstCode,Msg,GoChap){
var lstAnwser = GetAnswers(Qindx);
var V;
for (var i=0;i< lstAnwser.length;i++) {
V = lstAnwser[i];
if(LicInList(LstCode,V) == 1)
{
if (Msg != ""){ MessageBox(Msg);}
ExecutionMgr.GotoChapter(GoChap,true);
//ExecutionMgr.CancelSubject();
}
}
}
function LicInList(Lst,V){
var ArrQ = Lst.split(",")
var n = ArrQ.length;
var MB
var V1
var V2
for (var i = 0; i < n; i++)
{
MB = ArrQ[i].ToString().split("/");
V1= MB[0];
V2 = V1;
if(MB.length > 0) V2 = MB[MB.length-1];
if(V>= V1 && V <= V2) return 1;
}
return 0;
}
function CHECK_OTHER_ANSWER_ASC(inQ,indxNotCHECK){
var num = GetAnswerCount(inQ);
var j;
for(var i=1; i<=num; i++)
{
if(IsOtherSpec(inQ,i) && Contains(inQ,i))
{
for(j=1;j<i;j++)
{
if(IsOtherSpec(inQ,j) && j != indxNotCHECK )
if(Contains(inQ,j)==false) return false;
}
}
}
return true;
}
function GetAnswerTextQuestion(inQ){
var curAnswers = GetAnswers(inQ);
var newAnswers=new Array();
var newArIdx=0;
var i;
var kq="";
for (i=0;i< curAnswers.length;i++) {
if(IsOtherSpec(inQ,curAnswers[i]))
{
if(kq=="")
kq=AdditionalAnswerText(inQ,curAnswers[i]);
else
kq=kq+", " + AdditionalAnswerText(inQ,curAnswers[i]);
}
else
{
if(kq=="")
kq=AnswerText(inQ,curAnswers[i]);
else
kq=kq+", " + AnswerText(inQ,curAnswers[i]);
}
}
return kq;
}
function RandomNotInArray(myArr,limit){
var v;
var i = 1;
do
{
v = Math.floor(Math.random()*limit)+1;
for(var j = 0 ; j < myArr.length;j++)
{
if(myArr[j]==v){i=1; break;}
}
if (j >= myArr.length) i=0;
}while(i)
return v;
}
function RandomQIndex(LstQ,n){
var retVal = new Array();
var ArrQ = LstQ.split(",")
var myArray = [];
var arrayMax = ArrQ.length;
var limit = arrayMax;
var v;
for (var i = 0; i < n; i++)
{
v = RandomNotInArray(myArray,limit);
myArray.push(v);
}
var j;
for(var i=0; i<myArray.length; i++)
{
j = myArray[i]-1;
retVal.push(ArrQ[j]);
}
return retVal;
}
function RandomListQInList(LstQ,maxItem){
var retVal;
retVal = RandomQIndex(LstQ,maxItem);
var kq = IntArrayToString(retVal);
return kq;
}
function LicRandomListQInString(num,LstString){
var ArrQ = LstString.split(",")
var arrayMax = ArrQ.length;
var limit = arrayMax;
var myArray = CreateRandomArray(limit,1,limit);
var retVal = new Array();
if(num > limit) num = limit;
var j;
for(var i=1; i<=num; i++)
{
j = myArray[i-1];
retVal.push(ArrQ[j-1]);
}
var kq = IntArrayToString(retVal);
return kq;
}
function Len(str){
var l = str.ToString().length;
return l;
}
function LicLeft(str,n){
var l = Len(str);
if(n == 0 || n >= l) return str;
return str.ToString().substring(0,n);
}
function LicRight(str,n){
var l = Len(str);
if(n == 0 || n >= l) return str;
return str.ToString().substring(str.length-n,str.length);
}
function LicTrim(str){
return str.ToString().trim();
}
function LicMid(str,nstart,n){
return str.ToString().substring(nstart,n);
}
function LicUpperCase(str){
return str.ToString().toUpperCase();
}
function LicLowerCase(str){
return str.ToString().toLowerCase();
}
function LicReplace(str,searchvalue, newvalue){
return str.ToString().replace(searchvalue, newvalue);
}
function kedrRandomizeArray(targetArray) {
var randomizedArray = new Array;
randomizedArray = RandomizeArray(targetArray)
for (var i=0; i < randomizedArray.length; i++) {
targetArray[i] = randomizedArray[i]
}
return targetArray;
}
/* Kadence Global Function
By QDTeam */
//Untuk menghitung jumlah berapa banyak jawaban yang dipilih di pertanyaan MA
function Kad_SumOfAnswer(qidx)
{
var hsl = 0;
for(var x=1;x<=GetAnswerCount(qidx);x++)
{
if(Contains(qidx,x))
{
hsl = hsl + 1;
}
}
return hsl;
}
function Kad_CheckBrandTwoQues(qidx1,qidx2,questype,booltype,arraycodes)
{
var fbtype,lbtype,vld=false;
var idx=Kad_ReturnIndexes(qidx1,arraycodes);
if(booltype=="ttof"){fbtype=true; lbtype=false;}
if(booltype=="ftot"){fbtype=false; lbtype=true;}
if(questype=="stos")
{
if(Kad_AnswersOneOf(qidx1,idx)==fbtype && Kad_AnswersOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="stom")
{
if(Kad_AnswersOneOf(qidx1,idx)==fbtype && ContainsOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="mtos")
{
if(ContainsOneOf(qidx1,idx)==fbtype && Kad_AnswersOneOf(qidx2,idx)==lbtype){vld=true;}
}
else if(questype=="mtom")
{
if(ContainsOneOf(qidx1,idx)==fbtype && ContainsOneOf(qidx2,idx)==lbtype){vld=true;}
}
return vld;
}
function Kad_RI(arrayidxbrdcodes)
{
var result=[];
var codes1=stringSplit(arrayidxbrdcodes,"/");
for(var b=0;b<codes1.length;b++)
{
var codes2=stringSplit(codes1[b],"-");
for(var c=codes2[0];c<=codes2[codes2.length-1];c++)
{
result.push(c);
}
}
return result;
}
function Kad_ReturnIndexes(qidxcheck,arraycodes)
{
var arr=[];
var chkcodes=Kad_RI(arraycodes);
for(var a=0;a<chkcodes.length;a++)
{
arr[a]=GetAnswerChoiceIdxByCode(qidxcheck,intParse(chkcodes[a]));
}
return arr;
}
function Kad_ValidationBrandDisposition(qidx)
{
var check=false;
var at1=0;
var at2=0;
for(var a=1;a<=GetTopicCount(qidx);a++)
{
if(AnswerChoice(qidx,a)==1){at1+=1;}
if(AnswerChoice(qidx,a)==2){at2+=1;}
}
if(at1>1 || at1==0 || at2>3)
{
check=true;
}
return check;
}
function Kad_CombineTomSpontAided(qidxtom,qidxspont,qidxaided,arrayothers,arrayunspecified)
{
var h=[];
for(var a=0;a<arrayothers.length;a++)
{
if(Answer(qidxtom)==arrayothers[a] || Contains(qidxspont,arrayothers[a]))
{
SetAnswerVisible(qidxaided,arrayothers[a],true);
}
}
for(var a=1;a<=GetAnswerCount(qidxaided);a++)
{
if((Answer(qidxtom)==a || Contains(qidxspont,a) || Contains(qidxaided,a)) && IndexOfInt(a,arrayunspecified)<0)
{
h.push(a);
}
}
ClearAnswer(qidxaided);
SetAnswer(qidxaided,h);
}
function Kad_RangeScore(totalscore,arrayscore)
{
var scorecat=0;
for(var a=0;a<arrayscore.length;a++)
{
if(totalscore>=arrayscore[arrayscore.length-1-a])
{
scorecat=arrayscore.length-a;
}
}
return scorecat;
}
function Kad_GetRespondent(iteration,qidxday,qidxmonth,qidxyear,qidxrespname)
{
var diff=[];
var arr=[];
var val=0;
var dtresp;
for(var a=1;a<=iteration;a++)
{
dtresp=Date(AnswerIter(QRef(qidxmonth),a)+"/"+AnswerIter(QRef(qidxday),a)+ "/"+Today.Year);
if(dtresp > Now)
{
dtresp=Date(AnswerIter(QRef(qidxmonth),a)+"/"+AnswerIter(QRef(qidxday),a)+"/"+(Today.Year - 1));
}
diff[a-1]=Round(TimeDiffDays(Now,dtresp));
}
val=diff[0];
for(var a=1;a<iteration;a++)
{
if(val>diff[a])
{
val=diff[a];
}
}
SetAnswerVisible(CurrQues,false);
for(var a=1;a<=iteration;a++)
{
if(val==diff[a-1])
{
SetAnswerTextFormat(CurrQues,a,AnswerIter(QRef(qidxrespname),a)+" - "+AnswerIter(QRef(qidxday),a)+"/"+AnswerIter(QRef(qidxmonth),a)+"/"+AnswerIter(QRef(qidxyear),a));
SetAnswerVisible(CurrQues,a,true);
}
}
}
function Kad_AgeCategory(age,arrayages)
{
var agecat=0;
for(var a=0;a<arrayages.length;a++)
{
if(age>=arrayages[a])
{
agecat=a+1;
}
}
return agecat;
}
function Kad_GetAge(date,month,year)
{
var res=0;
var lday=Today.Day;
var lmonth=Today.Month;
var lyear=Today.Year;
if(lmonth>month){res=lyear-year;}
if(lmonth<month){res=lyear-year-1;}
if(lmonth==month && lday>=date){res=lyear-year;}
if(lmonth==month && lday<date){res=lyear-year-1;}
return res;
}
function Kad_IsAllMultiVisibleAnswerChecked(qidx)
{
var av=[];
var hs=true;
for(var a=1;a<=GetAnswerCount(qidx);a++)
{
if(IsAnswerVisible(qidx,a))
{
av.push(a);
}
}
for(var a=0;a<av.length;a++)
{
if(NotContains(qidx,av[a]))
{
hs=false;
break;
}
}
return hs;
}
function Kad_CheckElementInAnArray(arr,findstring)
{
var val=false;
for(var i=0;i<arr.length;i++)
{
if(arr[i]==findstring)
{
val=true;
break;
}
}
return val;
}
function Kad_ReturnElementsInArray(findarrayelements,arrayparent,arrayreplacement)
{
var str=[];
for(var a=0;a<findarrayelements.length;a++)
{
if(IndexOf(findarrayelements[a],arrayparent)>=0)
{
str.push(arrayreplacement[IndexOf(findarrayelements[a],arrayparent)]);
}
}
return str;
}
function Kad_ReturnElementsInArrayInt(findarrayelements,arrayparent,arrayreplacement)
{
var ints=[];
for(var a=0;a<findarrayelements.length;a++)
{
if(IndexOfInt(findarrayelements[a],arrayparent)>=0)
{
ints.push(arrayreplacement[IndexOfInt(findarrayelements[a],arrayparent)]);
}
}
return ints;
}
function Kad_FixJumpOrder(qidxstartjump,qidxrotation,chaplastjump,rotcodes,chapnames)
{
var retVal=-1;
var rots=qidxrotation.split(/[\r\n\s\W\d]+/);
var chaparr=Kad_ReturnElementsInArray(rots,rotcodes,chapnames);
if(CurrQues==qidxstartjump)
{
retVal=Kad_GetChapterIdxFromName(chaparr[0]);
}
else
{
if(Kad_IsChapterInRotationChapters(chapnames,chaplastjump))
{
var jumpIdx=Kad_GetJumpChapterIdxOfQuestion(CurrQues,chaparr);
if(jumpIdx<chaparr.length)
{
retVal=Kad_GetChapterIdxFromName(chaparr[jumpIdx]);
}
else
{
retVal=Kad_GetChapterIdxFromName(chaplastjump);
}
}
}
return retVal;
}
function Kad_IsChapterInRotationChapters(chapnames,chaplastjump)
{
var retVal=false;
var chap=GetChapter(CurrChapter.Idx+1);
if(Kad_CheckElementInAnArray(chapnames,chap.Name) || chaplastjump==chap.Name)
{
retVal=true;
}
return retVal;
}
function Kad_GetJumpChapterIdxOfQuestion(currentques,chaparr)
{
var retVal=-1;
var chapinfo1=QuestionChapter(currentques);
for(var i=chapinfo1.Idx;i>=1;i--)
{
var chapinfo2=GetAllChapters();
if(Kad_CheckElementInAnArray(chaparr,chapinfo2[i].Name))
{
for(var b=0;b<chaparr.length;b++)
{
if(chapinfo2[i].Name==chaparr[b])
{
retVal=b+1;
break;
}
}
break;
}
}
return retVal;
}
function Kad_GetChapterIdxFromName(chapname)
{
var retVal=-1;
var chapterInfos=GetAllChapters();
for(var i=0;i<chapterInfos.length;i++)
{
if (chapterInfos[i].Name==chapname)
{
retVal=chapterInfos[i].ID+1;
break;
}
}
return retVal;
}
function Kad_ScoringQuestion(qidxmaster,qidxset,arrayscorecodes)
{
SetAnswer(qidxset,arrayscorecodes[Answer(qidxmaster)-1]);
}
function Kad_ShowBrandUmbrellas(qidxfiltered,arrayidxbrdcodes,type,randomize)
{
var ansmulti=GetAnswers(qidxfiltered);
var chk=false;
if(type=="Topic"){SetTopicVisible(CurrQues,false);}
else{SetAnswerVisible(CurrQues,false);}
for(var a=0;a<arrayidxbrdcodes.length;a++)
{
var chkcodes=Kad_ReturnIndexes(qidxfiltered,arrayidxbrdcodes[a]);
for(var b=0;b<chkcodes.length;b++)
{
if(IndexOfInt(intParse(chkcodes[b]),ansmulti)>=0){chk=true;break;}
}
if(chk==true)
{
if(type=="Topic"){SetTopicVisible(CurrQues,(a+1),true);}
else{SetAnswerVisible(CurrQues,(a+1),true);}
chk=false;
}
}
if(randomize==true && type=="Topic"){RandomizeTopics(CurrQues);}
else if(randomize==true && type=="Answer"){RandomizeAnswers(CurrQues);}
}
function Kad_GetOthersAnswer(qidxtom,qidxspont,arrayothers)
{
var otcd=Kad_ReturnIndexes(qidxtom,arrayothers);
if(Answer(qidxtom)==otcd[0])
{
SetAnswerTextFormat(CurrQues,otcd[0],AdditionalAnswerText(qidxtom,otcd[0]));
}
if(Contains(qidxspont,otcd[0]))
{
SetAnswerTextFormat(CurrQues,otcd[0],AdditionalAnswerText(qidxspont,otcd[0]));
}
for(var a=1;a<otcd.length;a++)
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
function Kad_GetOthersTopic(qidxtom,qidxspont,arrayothers)
{
var otcd=Kad_ReturnIndexes(qidxtom,arrayothers);
if(Answer(qidxtom)==otcd[0])
{
SetTopicTextFormat(CurrQues,otcd[0],AdditionalAnswerText(qidxtom,otcd[0]));
}
if(Contains(qidxspont,otcd[0]))
{
SetTopicTextFormat(CurrQues,otcd[0],AdditionalAnswerText(qidxspont,otcd[0]));
}
for(var a=1;a<otcd.length;a++)
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
function Kad_CheckChoicesOneOf(qidx,arraytopics,arraycodes,sorm)
{
var chk=false;
if(sorm=="s")
{
for(var a=0;a<arraytopics.length;a++)
{
if(IndexOfInt(AnswerChoice(qidx,arraytopics[a]),arraycodes)>=0){chk=true; break;}
}
}
else
{
for(var a=0;a<arraytopics.length;a++)
{
if(ContainsChoiceOneOf(qidx,arraytopics[a],arraycodes)){chk=true; break;}
}
}
return chk;
}
function Kad_SortArrays(arrays,order)
{
var temp;
var data=[];
for(var a=0;a<arrays.length-1;a++)
{
for(var b=a+1;b<arrays.length;b++)
{
if(arrays[b]>arrays[a] && order===true)
{
temp=arrays[a];
arrays[a]=arrays[b];
arrays[b]=temp;
}
if(arrays[b]<arrays[a] && order===false)
{
temp=arrays[a];
arrays[a]=arrays[b];
arrays[b]=temp;
}
}
}
}
function Kad_FinalSES(qidxexpend,arrayqidxfacility,arrayexpen,arrayfacility)
{
var val=0;
for(var a=arrayexpen.length-1;a>=0;a--)
{
var ae=Kad_ReturnIndexes(qidxexpend,arrayexpen[a]);
for(var b=0;b<arrayqidxfacility.length;b++)
{
var af=Kad_ReturnIndexes(arrayqidxfacility[b],arrayfacility[a]);
if(Kad_AnswersOneOf(qidxexpend,ae) && Kad_AnswersOneOf(arrayqidxfacility[b],af))
{
val=a+1;
}
}
}
return val;
}
/* Kadence Global Function 2017
By HobloTeam */
function Kad_CountMultipleAnswers(qidxcount,limitanswercount,typelessmoreequal)
{
var countistrue = false;
var canswer = 0
for (var x = 1; x <= GetAnswerCount(qidxcount); x++)
{
if(Contains(qidxcount,x))
{
canswer = canswer + 1;
}
}
if(typelessmoreequal == "less")
{
if(canswer < limitanswercount)
{
countistrue = true;
}
}
if(typelessmoreequal == "more")
{
if(canswer > limitanswercount)
{
countistrue = true;
}
}
if(typelessmoreequal == "equal")
{
if(canswer == limitanswercount)
{
countistrue = true;
}
}
return countistrue;
}
function Kad_MultipleAnswersTopic(qidx,arraycodes)
{
var chk=false;
var idx=Kad_ReturnIndexes(qidx,arraycodes);
var canswer = 0;
var sanswer = 0;
for (var x = 1; x <= GetTopicCount(qidx); x++)
{
for(var a=0;a<idx.length;a++)
{
if(AnswerChoice(qidx,x) == idx[a]){canswer=canswer+1}
}
if(AnsweredChoice(qidx,x)){
sanswer = sanswer+1;
}
}
if(canswer == sanswer){
chk=true;
}
return chk;
}
function Kad_AnswersOneOfTopic(qidx,arraycodes)
{
var chk=false;
var idx=Kad_ReturnIndexes(qidx,arraycodes);
for (var x = 1; x <= GetTopicCount(qidx); x++)
{
for(var a=0;a<idx.length;a++)
{
if(AnswerChoice(qidx,x) == idx[a]){chk=true; break;}
}
}
return chk;
}
function Kad_SingleAnswersTopic(qidx,arraycodes)
{
var chk=false;
var idx=Kad_ReturnIndexes(qidx,arraycodes);
var canswer = 0;
var sanswer = 0;
for (var x = 1; x <= GetTopicCount(qidx); x++)
{
for(var a=0;a<idx.length;a++)
{
if(ContainsChoice(qidx,x,idx[a])){chk=true; break;}
}
}
return chk;
}
function Kad_RankingOL(QrefA1,QrefB1,QrefC1,CurrQ,Type)
{
var cek=true;
var a = [];
var b = [1,2,3];
var c = 0;
var d = 0;
var temp = 0;
var temp2 = 0;
a[0] = Answer(QrefA1);
a[1] = Answer(QrefB1);
a[2] = Answer(QrefC1);
for ( var x = 0 ; x <= 1 ; x++)
{
for ( var y = x+1 ; y <= 2 ; y++)
{
if ( a[x] < a[y] )
{
temp = a[x];
a[x] = a[y];
a[y] = temp;
temp2 = b[x];
b[x] = b[y];
b[y] = temp2;
}
}
}
if (Type==1)
{
if ( a[0] == a[1] )
{
if ( a[1] != a[2] )
{
if (Answer(CurrQ)==b[2])
{
cek = false;
}
}
else if ( a[1] == a[2] )
{
cek = true;
}
}
else if ( a[0] != a[1] )
{
if (Answer(CurrQ)!=b[0])
{
cek = false;
}
}
}
if (Type==2)
{
if ( a[0] == a[1] )
{
if ( a[1] != a[2] )
{
if (Answer(CurrQ)==b[2])
{
cek = false;
}
}
else if ( a[1] == a[2] )
{
cek = true;
}
}
else if ( a[0] != a[1] )
{
if ( a[1] == a[2] )
{
cek = true;
}
else if (Answer(CurrQ)!=b[1])
{
cek = false;
}
}
}
return cek;
}
function Kad_AnswersOneOf(qidx,arraycodes)
{
var chk=false;
var idx=Kad_ReturnIndexes(qidx,arraycodes);
for(var a=0;a<idx.length;a++)
{
if(Equals(qidx,idx[a])){chk=true; break;}
}
return chk;
}
function Kad_AnswersOneOfCheck(qidx,arraycodes)
{
//var chk=false;
var idx=Kad_ReturnIndexes(qidx,arraycodes);
var arr="";
for(var a=0;a<idx.length;a++)
{
if(Equals(qidx,idx[a])){arr += idx[a];}
}
return arr;
}
function Kad_ContainsOneOf(qidxcheck,arraycodes)
{
var chk=false;
var idx=Kad_ReturnIndexes(qidxcheck,arraycodes);
for(var a=0;a<idx.length;a++)
{
if(Contains(qidxcheck,idx[a])){chk=true; break;}
}
return chk;
}
function Kad_OthersAnswer(qidxcheck,type,arrayothercodes)
{
var otcd=Kad_ReturnIndexes(qidxcheck,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if (type=="answer")
{
if(Answer(qidxcheck)==otcd[a])
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
if (type=="contains")
{
if(Contains(qidxcheck,otcd[a]))
{
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
}
return otcd;
}
function Kad_OthersAnswerAided(qidxtom,qidxspont,arrayothercodes)
{
var otcd=Kad_ReturnIndexes(qidxtom,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if(Answer(qidxtom)==otcd[a])
{
//SetAnswerVisible(CurrQues,true,false,otcd[a]);
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxtom,otcd[a]));
}
if(Contains(qidxspont,otcd[a]))
{
//SetAnswerVisible(CurrQues,true,false,otcd[a]);
SetAnswerTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
return otcd;
}
function Kad_OthersTopic(qidxcheck,type,arrayothercodes)
{
var otcd=Kad_ReturnIndexes(qidxcheck,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if (type=="answer")
{
if(Answer(qidxcheck)==otcd[a])
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
if (type=="contains")
{
if(Contains(qidxcheck,otcd[a]))
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxcheck,otcd[a]));
}
}
}
return otcd;
}
function Kad_OthersTopicAided(qidxtom,qidxspont,arrayothercodes)
{
var otcd=Kad_ReturnIndexes(qidxtom,arrayothercodes);
for (var a=0;a<otcd.length;a++)
{
if(Answer(qidxtom)==otcd[a])
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxtom,otcd[a]));
}
if(Contains(qidxspont,otcd[a]))
{
SetTopicTextFormat(CurrQues,otcd[a],AdditionalAnswerText(qidxspont,otcd[a]));
}
}
return otcd;
}
function Kad_Unspecified(qidxcheck,type,arrayothercodes)
{
var otcd=Kad_ReturnIndexes(qidxcheck,arrayothercodes);
if (type=="true")
{
SetAnswerVisible(CurrQues,false);
}
if (type=="false")
{
SetAnswerVisible(CurrQues,true);
}
for (var a=0;a<otcd.length;a++)
{
if (type=="true")
{
SetAnswerVisible(CurrQues,true,false,otcd[a]);
}
if (type=="false")
{
SetAnswerVisible(CurrQues,false,false,otcd[a]);
}
}
return otcd;
}
function Kad_TextFormat(qidxcheck,type)
{
var a = 0;
if (type=="other")
{
a = SetTextFormat(CurrQues,SelectedAnswerText(qidxcheck,true));
}
if (type=="select")
{
a = SetTextFormat(CurrQues,SelectedAnswerText(qidxcheck));
}
return a;
}
/*
function Kad_NewCombineTomSpontAided(qidxtom,qidxspont,qidxaided,arrayothers,arrayunspecified)
{
var h=[];
var i = Kad_ReturnIndexes(qidxaided,arrayothers);
var j = Kad_ReturnIndexes(qidxaided,arrayunspecified);
SetAnswerVisible(CurrQues,false,false,i);
SetAnswerVisible(CurrQues,false,false,j);
for(var a=0;a<arrayothers.length;a++)
{
if(Answer(qidxtom)==i[a] || Contains(qidxspont,i[a]))
{
SetAnswerVisible(qidxaided,i[a],true);
}
}
Kad_OthersAnswerAided(qidxtom,qidxspont,arrayothers);
for(var b=1;b<=GetAnswerCount(qidxaided);b++)
{
if((Answer(qidxtom)==b || Contains(qidxspont,b)))
{
dblSetSpecificAnswer(CurrQues,b,true);
}
}
}
function Kad_AllNewCombineTomSpontAided(qidxtom,qidxspont,qidxaided,arrayothers,arrayunspecified)
{
var h=[];
var i = Kad_ReturnIndexes(qidxaided,arrayothers);
var j = Kad_ReturnIndexes(qidxaided,arrayunspecified);
SetAnswerVisible(CurrQues,false,false,i);
SetAnswerVisible(CurrQues,false,false,j);
for(var a=0;a<arrayothers.length;a++)
{
if(Answer(qidxtom)==i[a] || Contains(qidxspont,i[a]))
{
SetAnswerVisible(qidxaided,i[a],true);
}
}
Kad_OthersAnswerAided(qidxtom,qidxspont,arrayothers);
for(var b=1;b<=GetAnswerCount(qidxaided);b++)
{
if((Answer(qidxtom)==b || Contains(qidxspont,b)))
{
dblSetSpecificAnswer(CurrQues,b,true);
}
}
if (Answer(qidxtom)==Kad_ReturnIndexes(qidxtom,arrayunspecified) || Contains(qidxspont,Kad_ReturnIndexes(qidxspont,arrayunspecified)))
{
dblSetSpecificAnswer(CurrQues,Kad_ReturnIndexes(qidxtom,arrayunspecified),false);
dblSetSpecificAnswer(CurrQues,Kad_ReturnIndexes(qidxspont,arrayunspecified),false);
}
}
*/
function Kad_RotationPip(qdexrotation,iters,stringquestion,arrayprod)
{
var arr = stringSplit(stringquestion,"/");
var sompret = [];
var somprets = [];
var arrs = stringSplit(SelectedAnswerText(qdexrotation)," - ");
var arrss = stringSplit(AnswerText(qdexrotation,1)," - ");
var product = stringSplit(arrayprod,"/");
var temprot = 0;
var tempstring = 0;
for(var a = 0;a<arr.length;a++)
{
for(var b = 0;b<arr.length;b++)
{
if(arrs[a] == arrss[b])
{
sompret.push(arr[b]);
somprets.push(product[b]);
break;
}
}
}
SetTextFormat(CurrQues,sompret[iters-1],somprets[iters-1]);
}
function Kad_RotationPipNew(qdexrotation,iters,stringquestion,arrayprod)
{
var arr = stringSplit(stringquestion,"/");
var sompret = [];
var somprets = [];
var arrs = stringSplit(SelectedAnswerText(qdexrotation)," - ");
var arrss = stringSplit(AnswerText(qdexrotation,1)," - ");
var product = stringSplit(arrayprod,"/");
var temprot = 0;
var tempstring = 0;
for(var a = 0;a<arr.length;a++)
{
for(var b = 0;b<arr.length;b++)
{
if(arrs[a] == arrss[b])
{
sompret.push(arr[b]);
somprets.push(product[b]);
break;
}
}
}
return sompret[iters-1];
}
function Kad_RotationPipNewBrand(qdexrotation,iters,stringquestion,arrayprod)
{
var arr = stringSplit(stringquestion,"/");
var sompret = [];
var somprets = [];
var arrs = stringSplit(SelectedAnswerText(qdexrotation)," - ");
var arrss = stringSplit(AnswerText(qdexrotation,1)," - ");
var product = stringSplit(arrayprod,"/");
var temprot = 0;
var tempstring = 0;
for(var a = 0;a<arr.length;a++)
{
for(var b = 0;b<arr.length;b++)
{
if(arrs[a] == arrss[b])
{
sompret.push(arr[b]);
somprets.push(product[b]);
break;
}
}
}
return somprets[iters-1];
}
function Kad_BrandRatingMostOften(QuestionBrandIdx,QuestionLoopIdx,limit)
{
SetAnswerVisible(CurrQues,false);
var kat = GetAnswers(QuestionBrandIdx);
var rank = [];
for (var get=1;get<=GetAnswerCount(QuestionLoopIdx);get++)
{
rank.push(get);
}
var top = [];
var ans = [];
var x = 0;
var y = "";
for (var b=0;b<rank.length;b++)
{
for (var a=0;a<kat.length;a++)
{
if (AnswerIter(QuestionLoopIdx,kat[a])==rank[b])
{
top.push(kat[a]);
x = x + 1;
y = y + AnswerText(QuestionBrandIdx,kat[a])+" = "+AnswerText(QuestionLoopIdx,AnswerIter(QuestionLoopIdx,kat[a]))+"\n";
}
}
if (x>=limit)
{
break;
}
}
for (var z=0;z<top.length;z++)
{
ans.push(top[z]);
}
for (var zz=1;zz<=GetAnswerCount(QuestionBrandIdx);zz++)
{
if (!(InArray(zz,ans)))
{
ans.push(zz);
}
}
RandomizeAnswers(CurrQues,ans)
SetTextFormat(CurrQues,y);
SetAnswerVisible(CurrQues,true,true,top);
}
function FormatRupiah(Ans)
{
var Ans = Ans.ToString();
Ans = Ans.split('.');
if (Ans[0].length > 3) {
Ans[0] = Ans[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
}
Ans.join('.');
Ans = "Rp. " + Ans;
return Ans;
}
/*!!This can be used to test whether a specific quota has been filled.This method will return true if a quota has been filled and false if it has not OR if no proper quota was found.
When using this method, ensure the functionally and correctness of the quota names.
inQuotaSheetName: String, the quota sheet name to use as a suffix for the quota name. If your survey
does not have the survey property "Use Sheet Name In Quota Name For All Quotas" enabled, supply '' as the name for the first sheet.
inIncludeCurrentInterview: false/true. false to ignore current interview in the count, true to include it. (e.g, if quota is 20/20 when
supplying 'False', this method will return 'False'. If supplying 'True', this method will return 'True')
inQuestionsArray: An array of the questions, in order, that define a specific quota.
Example of usage:
dblIsQuotaFull('', false, [VRef("Q_2"), VRef("Q_3")])
dblIsQuotaFull('second sheet', true, [VRef("Q_2"), VRef("Q_4"), VRef("Q_3")])!!*/
function dblIsQuotaFull(inQuotaSheetName, inIncludeCurrentInterview, inQuestionsArray){
var defaultLang = LanguageMgr.IsDefaultLanguage ? -1 : LanguageMgr.DefaultLanguageID;
var countAdjust = inIncludeCurrentInterview ? 1 : 0;
var quotaName = '';
if(inQuotaSheetName !== undefined && inQuotaSheetName !== ''){
quotaName = '('+inQuotaSheetName+') ';
}
for(var i=0; i< inQuestionsArray.length; i++){
var currQues = inQuestionsArray[i];
if(Answered(currQues)){
quotaName += GetAnswerOriginalText(currQues, Answer(currQues), true, defaultLang);
if(i<inQuestionsArray.length - 1){ //Only add the delimiter between answers
quotaName += ' / ';
}
}else{
//One of the questions was not answered
return false;
}
}
var current = QuotaMgr.GetQuotaCurrent(quotaName);
var total = QuotaMgr.GetQuotaTotal(quotaName);
//You can uncomment this line when testing your survey to ensure it functions
Trace("Testing Quota[{0}], Count[{1}/{2}]", quotaName, current, total);
if(current != -1 && total != -1) //Ensures the quota name is valid
{
return (current + countAdjust) >= total; //Check if actually filled
}else{
//Uncomment this line and remove the return if you wish to instead log an exception
//throw 'Quota name is invalid'
return false;
}
}
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;
}
//Gets latitude and longitude coordinates, and returns the distance of the surveyor from the specific point.
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;
}
//Gets latitude and longitude coordinates and a radius in Kilo-Meters.
//Returns ‘true’ if the surveyor is in the given radius.
//Returns ‘false’ if the surveyor is not in the given radius.
function dblIsInGPSFence (fenceLat, fenceLon, distInKM)
{
var dist = dblDistanceFromGPSFence(fenceLat, fenceLon);
var retVal = false;
if(dist<distInKM){
retVal=true;}
else{
retVal=false;
}
return retVal;
}
//will return the distance between 2 locations
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;
}
//Calculates the sum of all the visible topics in a numeric grid
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;
}
//will check if one of the answers mentioned were chosen
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;
//}
//will check if ALL of the answers mentioned were chosen
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;
}
//Single Choice Grid - in how many topics the answer was selected
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;
}
//Multiple Selection Grid - in how many topics the answer was selected
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;
}
//Multiple Selection & Single Choice - relevant for questions in iterations - in how many iterations the answer was selected
function dblNumOfIterContains(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<IterationIndex;i++){
if (ContainsIter(inQ,inValueToCheck,i)) {
retVal++;
}
}
return retVal;
}
//Numeric Grid, Open Ended Grid & Single Choice Grid - Will set the Topic with the value you enter
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);
}
//Multiple Selection Grid - Will set the Topic with the value you enter
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);
}
//Will set the Answer with the value you enter
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);
}
}
//Set the answers based on the answers of a different question
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);
}
}
}
//Set the answers based on the answers of a different question with the ability to exclude specific answers you add as an array.
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);
}
}
}
}
//Calculates the sum of the Answered & visible topics
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;
}
//Using this function will format the number entered to a Currency Format
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;
}
//Will convert a number to Float
function dblToFloat(inNumber)
{
var retVal = parseFloat(inNumber.toString().replace(",", "."));
return retVal;
}
//Will set the answers visible in a question
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;
}
//Will search for the text entered and return true/false if found
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;
}
//Filters the answers of a question based on another question
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;
}
//Filters the topics of a question based on another question
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 will retrieve a row from a subject store
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;
}
/*
This function gets two parameters:
1st parameter is the RegEx expression.
2nd parameter is the text to check.
This function returns ‘true’ if the text is valid according to the RegEx expression, or ‘false’ if the text is not valid according to the RegEx expression.
*/
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;
}
//Will order an array
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;
}
//Will return a unique respondent ID based on the SID and Device Index
function dblRespondentID ()
{
var retVal = "".concat("D", SID, "-", DeviceIndex);
return retVal;
}
/*_@_USERCODE_END_@*/
//_@_AddHandler_@{ Begin Add Handlers
//_@_AddHandler_@} End Add Handlers
//_@_HandlerZone_@{
function QuestionStart_0()
{
if (ExternParam("panel")==1)
{
SetAnswer(QPanel,1);
}
else {
SetAnswer(QPanel,2);
}
}
function QuestionExpression_5()
{
var panel = Answer(QPanel); //check which panel was chosen
if (panel == 1) //if panel 1
{
for (var i=3; i<=5; i++) //run on question indexes 3 to 5
{
if (Answer(QRef(i))==1) //check which one had an answer Yes
{
SetAnswer(EndDummy, "this is Panel_1" + GetText(QRef(i)) + " End Page"); //Set the dummy with the text
}
else {
SetAnswer(EndDummy,"Panel 1 Other End Page");
}
}
}
else {
for (var i=3; i<=5; i++)
{
if (Answer(QRef(i))==1)
{
SetAnswer(EndDummy, "this is Panel_2" + GetText(QRef(i)) + " End Page");
}
else {
SetAnswer(EndDummy,"Panel 2 Other End Page");
}
}
}
return 1;
}
function HandleQuestionEnter_3()
{
return (Answer(QRef(3)) !=1);
}
function HandleQuestionEnter_4()
{
return (Answer(QRef(3)) !=1 && Answer(QRef(4)) !=1);
}
//_@_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,
CustomDataPII1: 18,
CustomDataPII2: 19,
CustomDataPII3: 20,
CustomDataPIIInt1: 21,
CustomDataPIIInt2: 22,
CustomDataPIIInt3: 23,
CustomData7: 24,
CustomData8: 25,
CustomData9: 26,
CustomData10: 27,
CustomData11: 28,
CustomData12: 29,
CustomDataInt7: 30,
CustomDataInt8: 31,
CustomDataInt9: 32,
CustomDataInt10: 33,
CustomDataInt11: 34,
CustomDataInt12: 35};
var eSurveyStatus = {New: 0,
EditNotCompleted: 1,
EditCompleted: 2,
EditTextReturn: 3,
EditReturned: 4,
EditObserverInProgress: 5};
var ePageType = {Cancel: 0,
Error: 1,
Filter: 2,
Finish: 3,
NonActive: 4,
AlreadyConducted: 5,
FullQuotaPage: 6};
var eQuotaExceedActionType = {None: 0,
Cancel: 1,
Filter: 2};
var eQuotaExceedType = {None: 0,
ExceedTarget: 1,
ExceedExceed: 2};
var eAttachmentType = {None: 0,
Picture: 1,
Sound: 2,
Video: 3,
Text: 4,
Signature: 5,
Font: 6};
var eUploadOfStoppedInterviewStatus = {Stopped: 0,
StoppedWithUpload: 1,
Completed: 2};
</Source>
</UserLogicContents>False1.32.610.0FalseFalse-101.32.0.0AAEAAAD/////AQAAAAAAAAAMAgAAAEdVc2VyTG9naWNDcmVhdG9yLCBWZXJzaW9uPTEuMC4xLjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAKVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuQXNzZW1ibHlEYXRhEAAAAAZtVGFibGUNbVN1cnZleUNvbnN0cw9tU3VydmV5U25pcHBldHMNbUNoYXB0ZXJUYWJsZQ1tTGFzdEJ1Y2tldElEEW1MYXN0TWV0YUJ1Y2tldElED21TdXJ2ZXlJbml0Q29kZRBtU3VydmV5QmxvY2tDb2RlEW1MYXN0TGlzdFNvdXJjZUlEE21MYXN0Q3VzdG9tQWN0aW9uSUQHbUZsYXZvcg5tVXNlR2xvYmFsQ29kZQttVXNlT3JnQ29kZQ5tU3RyaWN0SlNDaGVjaxdtTGFzdEF0dGFjaG1lbnRTb3VyY2VJRA5tU3VydmV5TmF2Q29kZQMDAwMAAAIBAAAEAAAAAAEeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHlN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGVbXQgICAgkU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5lRmxhdm9yAgAAAAEBAQgCAAAACQMAAAAJBAAAAAkFAAAACQYAAAABAAAAAwAAAAoGBwAAAAABAAAAAQAAAAX4////JFN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuZUZsYXZvcgEAAAAHdmFsdWVfXwAIAgAAAAIAAAABAQEBAAAACQcAAAAHAwAAAAABAAAABgAAAAMcU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZQkJAAAACQoAAAAJCwAAAAkMAAAACQ0AAAAJDgAAAAQEAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUHAAAACkxvYWRGYWN0b3IHVmVyc2lvbghDb21wYXJlchBIYXNoQ29kZVByb3ZpZGVyCEhhc2hTaXplBEtleXMGVmFsdWVzAAADAwAFBQsIHFN5c3RlbS5Db2xsZWN0aW9ucy5JQ29tcGFyZXIkU3lzdGVtLkNvbGxlY3Rpb25zLklIYXNoQ29kZVByb3ZpZGVyCOxROD8AAAAACgoLAAAACQ8AAAAJEAAAAAcFAAAAAAEAAAAFAAAAAxxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlCREAAAAJEgAAAAkTAAAACRQAAAAJFQAAAAcGAAAAAAEAAAAIAAAAAxxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlCRYAAAAJFwAAAAkYAAAACRkAAAAJGgAAAAkbAAAACRwAAAAJHQAAAAEJAAAABAAAAOxROD8HAAAACgoLAAAACR4AAAAJHwAAAAEKAAAABAAAAOxROD8AAAAACgoLAAAACSAAAAAJIQAAAAELAAAABAAAAOxROD8AAAAACgoLAAAACSIAAAAJIwAAAAEMAAAABAAAAOxROD8OAAAACgoLAAAACSQAAAAJJQAAAAENAAAABAAAAOxROD8CAAAACgoLAAAACSYAAAAJJwAAAAEOAAAABAAAAOxROD8AAAAACgoLAAAACSgAAAAJKQAAABAPAAAAAAAAABAQAAAAAAAAAAERAAAABAAAAOxROD8AAAAACgoLAAAACSoAAAAJKwAAAAESAAAABAAAAOxROD8AAAAACgoLAAAACSwAAAAJLQAAAAETAAAABAAAAOxROD8AAAAACgoLAAAACS4AAAAJLwAAAAEUAAAABAAAAOxROD8AAAAACgoLAAAACTAAAAAJMQAAAAEVAAAABAAAAOxROD8AAAAACgoLAAAACTIAAAAJMwAAAAEWAAAABAAAAOxROD8AAAAACgoLAAAACTQAAAAJNQAAAAEXAAAABAAAAOxROD8AAAAACgoLAAAACTYAAAAJNwAAAAEYAAAABAAAAOxROD8AAAAACgoLAAAACTgAAAAJOQAAAAEZAAAABAAAAOxROD8AAAAACgoLAAAACToAAAAJOwAAAAEaAAAABAAAAOxROD8AAAAACgoLAAAACTwAAAAJPQAAAAEbAAAABAAAAOxROD8AAAAACgoLAAAACT4AAAAJPwAAAAEcAAAABAAAAOxROD8AAAAACgoLAAAACUAAAAAJQQAAAAEdAAAABAAAAOxROD8AAAAACgoLAAAACUIAAAAJQwAAABAeAAAAAgAAAAgIBAAAAAgIAwAAABAfAAAAAgAAAAlEAAAACUUAAAAQIAAAAAAAAAAQIQAAAAAAAAAQIgAAAAAAAAAQIwAAAAAAAAAQJAAAAAEAAAAICAUAAAAQJQAAAAEAAAAJRgAAABAmAAAAAQAAAAgIAAAAABAnAAAAAQAAAAlHAAAAECgAAAAAAAAAECkAAAAAAAAAECoAAAAAAAAAECsAAAAAAAAAECwAAAAAAAAAEC0AAAAAAAAAEC4AAAAAAAAAEC8AAAAAAAAAEDAAAAAAAAAAEDEAAAAAAAAAEDIAAAAAAAAAEDMAAAAAAAAAEDQAAAAAAAAAEDUAAAAAAAAAEDYAAAAAAAAAEDcAAAAAAAAAEDgAAAAAAAAAEDkAAAAAAAAAEDoAAAAAAAAAEDsAAAAAAAAAEDwAAAAAAAAAED0AAAAAAAAAED4AAAAAAAAAED8AAAAAAAAAEEAAAAAAAAAAEEEAAAAAAAAAEEIAAAAAAAAAEEMAAAAAAAAADEgAAABKVXNlckxvZ2ljSW50LlBvY2tldCwgVmVyc2lvbj0xLjAuNC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFRAAAAC5TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLlF1ZXN0aW9uQ29uZGl0aW9uBgAAABlRdWVzdGlvbkluZm8rbVF1ZXN0aW9uSWR4FlF1ZXN0aW9uSW5mbyttSGFzRXJyb3IiUXVlc3Rpb25JbmZvK21RdWVzdGlvbkRlcGVuZGVuY2llcyFRdWVzdGlvbkluZm8rbUNoYXB0ZXJEZXBlbmRlbmNpZXMJY29uZGl0aW9uCGJlaGF2aW9yAAADAwQECAEcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0JlN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuQ29uZGl0aW9uAgAAAC9TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5JbnRlcmZhY2VzLmVVTFNraXBCZWhhdmlvckgAAAACAAAABAAAAAAJSQAAAAlKAAAACUsAAAAFtP///y9TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5JbnRlcmZhY2VzLmVVTFNraXBCZWhhdmlvcgEAAAAHdmFsdWVfXwAISAAAAAAAAAABRQAAAEQAAAADAAAAAAlNAAAACU4AAAAJTwAAAAGw////tP///wAAAAAFRgAAAC9TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLlF1ZXN0aW9uRXhwcmVzc2lvbgYAAAAZUXVlc3Rpb25JbmZvK21RdWVzdGlvbklkeBZRdWVzdGlvbkluZm8rbUhhc0Vycm9yIlF1ZXN0aW9uSW5mbyttUXVlc3Rpb25EZXBlbmRlbmNpZXMhUXVlc3Rpb25JbmZvK21DaGFwdGVyRGVwZW5kZW5jaWVzCHNob3J0RXhwA2V4cAAAAwMAAQgBHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdAECAAAABQAAAAAJUQAAAAlSAAAAAAZTAAAAiQV2YXIgcGFuZWwgPSBBbnN3ZXIoUVBhbmVsKTsgLy9jaGVjayB3aGljaCBwYW5lbCB3YXMgY2hvc2VuDQoNCmlmIChwYW5lbCA9PSAxKSAvL2lmIHBhbmVsIDEgDQp7DQoJZm9yICh2YXIgaT0zOyBpPD01OyBpKyspIC8vcnVuIG9uIHF1ZXN0aW9uIGluZGV4ZXMgMyB0byA1IA0KCXsNCgkJaWYgKEFuc3dlcihRUmVmKGkpKT09MSkgLy9jaGVjayB3aGljaCBvbmUgaGFkIGFuIGFuc3dlciBZZXMNCgkJew0KCQkJU2V0QW5zd2VyKEVuZER1bW15LCAidGhpcyBpcyBQYW5lbF8xIiArIEdldFRleHQoUVJlZihpKSkgKyAiIEVuZCBQYWdlIik7IC8vU2V0IHRoZSBkdW1teSB3aXRoIHRoZSB0ZXh0DQoJCX0NCgkJZWxzZSB7DQoJCQlTZXRBbnN3ZXIoRW5kRHVtbXksIlBhbmVsIDEgT3RoZXIgRW5kIFBhZ2UiKTsNCgkJfQ0KCX0NCn0NCmVsc2Ugew0KCWZvciAodmFyIGk9MzsgaTw9NTsgaSsrKQ0KCXsNCgkJaWYgKEFuc3dlcihRUmVmKGkpKT09MSkNCgkJew0KCQkJU2V0QW5zd2VyKEVuZER1bW15LCAidGhpcyBpcyBQYW5lbF8yIiArIEdldFRleHQoUVJlZihpKSkgKyAiIEVuZCBQYWdlIik7DQoJCX0NCgkJZWxzZSB7DQoJCQlTZXRBbnN3ZXIoRW5kRHVtbXksIlBhbmVsIDIgT3RoZXIgRW5kIFBhZ2UiKTsNCgkJfQ0KCX0NCn0NCg0KcmV0dXJuIDE7BUcAAAArU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5RdWVzdGlvbkFjdGlvbgUAAAAZUXVlc3Rpb25JbmZvK21RdWVzdGlvbklkeBZRdWVzdGlvbkluZm8rbUhhc0Vycm9yIlF1ZXN0aW9uSW5mbyttUXVlc3Rpb25EZXBlbmRlbmNpZXMhUXVlc3Rpb25JbmZvK21DaGFwdGVyRGVwZW5kZW5jaWVzBkFjdGlvbgAAAwMBCAEcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AgAAAAAAAAAACVQAAAAJVQAAAAZWAAAAW2lmIChFeHRlcm5QYXJhbSgicGFuZWwiKT09MSkNCnsNCglTZXRBbnN3ZXIoUVBhbmVsLDEpOw0KfQ0KZWxzZSB7DQoJU2V0QW5zd2VyKFFQYW5lbCwyKTsNCn0ESQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAlXAAAAAgAAAAEAAAABSgAAAEkAAAAJWAAAAAAAAAAAAAAABUsAAAAmU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5Db25kaXRpb24BAAAABW1UZXh0AQIAAAAGWQAAACpBbnN3ZXIoUVJlZigzKSkgIT0xICYmIEFuc3dlcihRUmVmKDQpKSAhPTEBTQAAAEkAAAAJWgAAAAEAAAABAAAAAU4AAABJAAAACVgAAAAAAAAAAAAAAAFPAAAASwAAAAZcAAAAE0Fuc3dlcihRUmVmKDMpKSAhPTEBUQAAAEkAAAAJXQAAAAIAAAABAAAAAVIAAABJAAAACV4AAAAAAAAAAAAAAAFUAAAASQAAAAlfAAAAAQAAAAEAAAABVQAAAEkAAAAJWAAAAAAAAAAAAAAAEFcAAAAEAAAACAgCAAAACAgDAAAADQIQWAAAAAAAAAAQWgAAAAQAAAAICAIAAAANAxBdAAAABAAAAAgIAQAAAAgIBgAAAA0CEF4AAAAAAAAAEF8AAAAEAAAACAgBAAAADQML-11312726297721-111196011-1-165792-1-1-10-105482099211800227187806306384{"eColumns_FlagClockChanged":"true","eColumns_FlagSingleChoice":"true","eColumns_FlagQuestionTakingTooLong":"true","eColumns_FlagGPSTimeDifferenceDate":"true","eColumns_FlagGPSTimeDifferenceStale":"true"}1H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx659o8M/R459Y501LTc+eHu0+vuv99fj1ur7Mr89mR/sPs53Z7qefbt9/+PDe9n6+e7D98NPsYHtvcv5g50G+l8+yh4/v2uaPz2bvjnYe38WPx2/yd+3Rt4vHd/mXx6+y5UX+RbFEX/Z3/TR7d3TffEq/y6ev23xlG/Mfj4/Lsrp6VlZZe/QsK5v88V3vEzueN9er/OihGxH//fhVcTFvj8viYmne9T55/DRvpnWxQnPG2f/78fPqKq95FPTb47vuz8dfrVb667cJ2OO77u/Hp++m5XqWz0xv9u/Hr+dV3RKZf9H699/ZoQGav2V4L9ZlefSmXpvB8d+PvyiahqbxJ7NynR9t00vBB49/MquLbFLmL7JFfvQTvz99H3zy+PfJmxPmAxDU/fH4RaW/7T2+a39/TD/z42XzOl9lddaW12YIvc8xUbNq4QZp/9ZvqDXRqgm/Nh9qm8/rar3iMfl/04yUeUuQdjAZ8ivRtK0zkHc3vev9tWf/elJV5a5Sz/vAfbnnpsN+It+eLdtdxsL9Zb/YAxbuj8dndU0oXWbL9qQqgQEQ+CIrlt9uSQLp97MmaGI67X5MM96+qq7o18oRKfjs8emSel1O81frMpdhFq35/TvrxepseV4x2vYParIihsLkW0rYD1gqv/3mi+d4nxjv6vU0IyZZLxptG35GrH9RTJ+V2UUDEnh/PX6VL2d5TfwifxMDdT4R6kEIDYWeFMunWZsdHR9/9tnju+avx8/qPEeT58WiaHks4SePqVn+pljkz6p6QYIOjgg/IWY5z9Zl+/ptsXqSz7PLoqqFcfofP6aBvalWxbQ5W77MLnJIRPejx1+287x+vcqnJEZGpn7/14/v9j5/fDLPVm1ek/hSf+4PkqHFIl/ysE/WTVstjDZ6XizfHh0eUuP+x4+P2zabzvFigze/m0NFAbL+9vj1tKpZpvH186JpX1fremr/elo0qzK7Nn+ydsAfNMAvz4ml1otlowN2fz/msb/MCc6yxfCpv+5HhMrkpCzor9esFwE0nG+Wke5Hj0XWX2bLvPy2DAHz2//0MfMcEQ5fm9+9Aeo3wQeEAPj6TdGKOMifZ4TBO7Yb3p+PaSjnhg3lCxYwUTve349fvXlm2uFnF/PuZ0I7Rli+d3926HOvT597xLgyYQ6Z4APSI8fTtrg0gmz/fPyC8BAqCucFf/O3jIn70vz5+GxB88nDqKsVMcOnDx482LtH4tv54vHZsmnr9RTMyczo/+3w7X+q9LVKw/9TddPLqinYtO4Y5WQ/0RbP8+VFO3ff698dmu73abrv66w9Gp6vtfYC5JRjvb8ff/Xcioz+Sgofzby/zDdP86n3Df7yxDfg2sjHwjfNwAuDX6o8Db03/K309+08I1LRkPNM2bn3qfZAFuj1KpvmHlj7kTbpfq9fkhF/ywLwus0CKYt87hqfLmeRpvZT8n9mszI3kunUgFXIxfn1V03+e+XX1o5ubjQAA9+JMV8NEXngq8ew/RtndWMDfn3z7G5uwSifkBDlmxAfbNCRrPtHezv7Bz3puo8pa+kvTKLRAgf3Dg4+3TnAvHW+omlbFgsyrmSqv1waUwepiX9B/ijZ87L4QT5jbfTdYiZKIPp5t7Wq5H5zo6ufUm9LBEdk55d5bbpVW45pdy2++ursKRuBrL7IWwbzZV1cFIx9/8PHJ8Suy1lWc7ABV8D/+zFUal4z6ZvXLcgJ2MfrlnzuxQre7fOKSFyU5D2YKT6n32HHbtEKrhb1RqY5z5fyjRj3k2q9FEnf3CIAwDy66f1egw7zfNpXy5/CfhCqy6wU8/KLP8rV//j9aXCT6kk2fctM89Gjj358Z+cZPx/9EhgY/7XQWfxCpqP3GVP2eHYJx7nPe8NfPn7drmdFxRjvHt0jT8T/Wx05GdhLwpemHx436wtyMwnWrMhOiJUQJ8DtAKNHv/BsFPsF/p/U60/0AvS9bzBA3/UDdHZmUtKKs/TnKFLf/fqReoD8DyNk/wnuMRqy+8P8GjG7Av5R2O598KOw/Udh+4eG7Xs/Ctv/PxS2Mzv+fAnb9yQy/0bC9vz/Z2H7zsP9B7v37n0aaK8fhe8/Ct9/FL7/KHz/Ufj+o/D9/1vh+6ffYPi+54fvz0gQG4pi3+CP/w9F7gbvH0bQzuvsn/5sBO1mFD+K2r0PfhS1/yhq/9Co/d6Povb/D0Xt934Utf9osZ0YcH/34f69vUB1/Shk/1HI/qOQ/Uch+49C9h+F7P/fCtkffIMh+70wZAc3fbMh+w8nZBe8f2gh+4OfnZBdRvGjkN374Ech+49C9g8N2fd/FLL/fyhk3/9RyP6jkP1HIfuPQvYfhew/Ctl/FLL/KGT//0PIfvANhuz7fsj+E+uqzf7fHbHHInZF+4cWsB/8bATsOogfxeveBz+K138Ur39ovH7/R/H6/4fi9fs/itd/FK8Pxus/itd/FK//KF7/Ubz+o3j9R/H6/4fi9fvfYLx+34/X83erOm/A8mmTt5DfdLZeLK5/rkL4/a+/6j48lB9aWH//ZyOsJzfoR0H9j4L6bzqo39sY1N876KpwJd//b6L6T38U1f9/KKr/9OdTVK+B+4+i+h9F9Va4fhTV/yiq/1FU/6Oo/kdR/f9/ovp732BU/6kf1T9F3Jt+uyoRAKakcFO4wc3PUVDvDfN9Y/rBgXzNkB4h/a1DeuruqSQQvvGg3oH+UWDvffCjwP4bCOwDzdML7Hd7WlzJ9/+bwP7BjwL7/w8F9g9+FNhrJH/v53Vgv7vzcP/B7r17n/4otv9RbP+j2P5Hsf2PYvsfxfb/H47tvYXsD47tH/ix/ZPr/Ocojn/49eN4RvqHEbPzMvx+NGIXz+xrBuw/8fsf/ChW/1Gs/sON1ff+/x6qH/woVP//UKgOh/FHofqP1uB3P/3/aoj+oxD9RyH6j0L0H4XoPwrRf16G6PRPc/T/ADQIs1r/fQAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+MXDf979Ph42Vzl9dnTo53Hd+3vj39inTctgaDf9x7f9f56fDZ7h6b48fhN/q49epkt83L38V3+4/HreVW31C5b/v47O3v0f/rGfOag0su7HljA+smsLrJJmb/IFvnR8e//Ewz296dWwRePT3goeFt/e/x6XV/m1wR+/2G2M9v99NPt+w8f3tvez3cPth9+mh1s703OH+w8yPfyWfaQkDHNHz/Ny7zNZxiN+fXxd9aL1dnyvDraph7sH49P37V1hgHupnf1rydVVe4ePcvKJn981/tEvj1btrsA7P5QzL9anszz6VvptvuRtjF/2kHa74HCt9988RxYPCuziwZQ5JfHX7bzvH69yqdEMKbV699/D/TrfU69LBb5sgWQ7+bFxbwFFP3t8etpVef4QH55fNa8nmZlbkZq/nz8Kl/RrAIhwHmVXxb5lfsL350tZ/k7JqT/9+OXeX0eNjypyqr2Gsrfj58WzarMrt23wQeE2PG0LS7zozf1mhHTPx9/WRcXxTIrGVGaaLza/ezxyzpvcuKEmd+q9+Hjs0V2kQPbl3W1ao52P33w4MHePRKJzhfS8GyGQX31/Cezcp17vxIDgKLeX+abp/nU+wZ/PX6VLWfV4vO6Wq+EJt7fSjA79f6fRC+aVch989VXZ0/RPXDL67bIm+PmdVsTJ/GnWU2zb2WdBx5+pEqB4e45xaB/E2tAcYTaY/f22mO3pz32BrXH3gdpj70B7bH3I+1xK+2x9yPt8SPt8cPQHkO+x6c3+B6/T95EVcenGxwPXyPFVMezYlk08x95Hh+kO+79yPP4ke744eiOIc8jojsCz+NFNag6hryOW6qOH7kdH6Y6fuR2/Eh1/FBUx5Db8eBruh0PNrgd927UHWWb1z9yOz5Id+z/yO34ke744eiOIbcjojtu43Y82OB23FJ1/Mjt+DDV8f91t+NHquP/I6pjyO04+Jpux8EGt2P/Bt3xE+uqzX7kdXyQ6rj/I6/jR6rjh6M6hryOiOq4jddxsMHruJ3m+JHT8WGa45t0On6kOX6kOTzNgX+bo/8HDYKvhBUiAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zdVw/8ePT5eNld5ffb0aOfxXfv7459Y501LIOj3e4/ven89Ppu9O9refXwXPx+/yd+1R8+KZdHMH9/lPx6/nld1Sw3b1e+/s3OP/k9tzWcOLL38qQcXsH4yq4tsUuYvskV+9Ob3P13Onq4Xi+vfn94Pvnp8wqM5os/1t8ev1/Vlfk0d7D/Mdma7n366ff/hw3vb+/nuwfbDT7OD7b3J+YOdB/lePsseEjqm+eOneZm3+QxjN78+/s56sTpbnlc8SvvH49N3bZ1hiLvpXf3rSVWVu0fPsrLJH9/1PpFvz5btLgC7PxTzr5Yn83z6VrrtfqRtzJ92kPZ7oPDtN188BxbPyuyiART55fGX7TyvX6/yKRFMyfjg99/9/V8/vtv7hvpZLPJlCzDfzYuLeYu+9LfHr6dVnQOw/PL4rHk9zcrcjNX8+fhVvqKZBUqA8yq/LPIr9xe+O1vOcmEY/+/HL/P6PGx4UpVV7TWUvx8/LZpVmV27b4MPCLHjaVtc0kjrNSOmfz7+si4uimVWMqI01Xi1+9njl3Xe5MQLM79V78PHZ4vsIge2L+tqxfTufCItzmYYzVfPfzIr17n3K8093vH+Mt88zafeN/jr8atsOasWn9fVeiXE8P5WStlZ9/8kQtF0Quqbr746e4rugVtet0XeHDev25qYiD/Napp2K+k84vAjmnUohlA77L6HdtgLtUPZ5vWgdtj7QO2wN6Ad9n6kHW6lHfZ+pB1+pB0+WDvsvYd2uOdrhy/JVUl/Yl212aCGuPeBGuLegIa49yMNcSsNce9HGuJHGuJraAj82xz9P2Lpp5eUDAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65MG/xw9Pnt6tPP4Lv37+EW2yI++90VWLNOTebZq8/r7j+/yh49fr+vL/Joa7T/Mdma7n366ff/hw3vb+/nuwfbDT7OD7b3J+YOdB/lePssePr5rmz9+mpd5m8/Qhfn18cuszpctfbu9+/iu/ePx8+qimD4rs4sGrb2/Hr/Kl7O8lj/uP77r/0kdNNO6WLU02KM386JJ6X/tPE/rqmrTqQwjrc7TrCz581+0zhs0bu4268m2NqC3lvxtw4iPfuPkN05+n2qdTrNluiQ4db6oLnNqQcD1lVGaLWcM1UG00Bbrpk0neboGosFrYx/0gibl/Dot2iZd1dUqr9sib9KtJZF8lM7cwEZpm79r07ydju+Ajm7Ej9/gi7tHj0/ftXX2pKrK3aNnWdnkj+96n7hv947e1Gv/yz398mzZ7vJ8uL/sF3uYD/fH47PZO26Kn4zAt9988RxInFSLBU0mfv1uXlzMW7yovz1+Pa3qHNyEr1/lq6puT7I2v6jq6x7Tdb7W5m+KtuS3v8jenVHDjEkATIIPHj8vmvZ1ta6n+dmMvw4+YIxfZsu8/LZghhbdzx6/evPMkPYVTXS1+Lyu1itu6//9+Kw5nrbFZa50tX8GODZvqtN3GEEPWffN45eWA46b121N0orOnRjshVJB83AX4nsXgvz/AMREvt/3AwAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6ycvmvTu0f8DVNIIpTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+M3TXr36P8B2S/MCTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnXzbp3aP/B1t6G+cyAAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65dNevfo/wF1B76WMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxq8+b9O7R/wNCnyKPMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxyesmvXv0/wA+f8jSMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnTXr36P8B28cSlTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxTxw36d2j/wdMGPaGMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+dNevfo/wH2fa4zMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zd5w//SP+v6Mr8+e3q0/zDbme1++un2/YcP723v57sH2w8/zQ629ybnD3Ye5Hv5LHv4+K5t/vh5trygn9u7j+/qr4/P2nxBP/ce39XfHr/M6nzZ6l9oGnzAL7y5XuVH9+QV/p1QmvAve9yf/P74Tf6uTe8ePX5WZhfN0c7ju/LL47PmeNoWl/nRm3qdExTzJ73Kw/t/+Rjv7fy/d4yK8AeP8f/N8/hNjfGbmEf82xz9P6UnJe/GAwAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6y+eNPwv/bOuL/Prs6dH+w+zndnup59u33/48N72fr57sP3w0+xge29y/mDnQb6Xz7KHj+/a5o+frKdv85Z+23l81/6un77IFnl69+jx0/w8W5ftT6yrNkO74O/Hb65XOT7ln49/Yp03LWFNULZ3H9/1/nz8MqvzZatf2D8ef7U8mefU3ex42VzRkJ8QXuj1WVG2eZ3PBJfmdVvT6PHFm2pVTBWM+f3xGbXNvI79v2m8TKNvhlB7cUIdvciv0tfzPG/N9/zpbYh3732It/NzQru7zGv/D4VqhDKbAgAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6y+efN6kd4/+H6wF1isyAAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxd182+If+n0/Olk2bLaf52dOj3fv79/Yf3w0/fOz9vr+/d3+PWvhfP1uX5Vd1eTRv21Xz6O7dq6ur8ayqJmU1za6K8bRa3J2WRb5s7z6+a9o+Pn2XT9dt/qzMLpqj+7v3H98NPnn8IruU36gz+/vjl1VTtDSwZ1W9yNqjvcd3O588flYsi2b+MrvIj7aOl49Ol7On68Xi+g517b55fFrXVc2/ju9+ni/zupjajwgT++3jJ3W2nNEgdx7fNb8+flEtj6dtcZmHAIKPCemg1eOXdXVR503zJJu+PanKqj7a3jt4uH/w8B6NofedbU7DyrX57qcPHnz68NNd1959+fgn1nkDMjRnS+5vm5p1P3ssRNzdwQQqQb+dl6vnxfJteld+/3LFb2C8/p9E1rLNhSY9stpvHp+AJcqQLO6zx3e97x8/zc+zddk+q5bt0U/m9SxbZoe7O4fPsrLJI/8Smfw3Hh+XdZ7Nrk+q5Ww9bfNZ2Gns28d3o+88fpG/a5+0y5N101YL0OFlnV8GHzytlnnwweu2WgUffLtdlI6/zCduuK6NIZb5JGAT/wvLhOaDGPb4zkzze1AyeOXx8bK5yuv3eN174fGbalVM3+Nd1/7x6SIrSuLly2KW1+C48APWKz+xrtosynbBl0Jc/yNQRuaHJGS9WDb44PTdqqi7vOJ9CCXkWsg0uA/MzIevm08e37Xf8YvmL7x1F5r2LnTu/wOiT+2zogUAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx2csG/9D/l02bLaf52dOj/f29+3v7j+96Hz1+va4v82t8+TDbme1++un2/YcP723v57sH2w8/zQ629ybnD3Ye5Hv5LHv4+K5t/vhZmV00RzuP78ovj7/I3v3Eumqzo+3dx3ftH4+/KJZvikXOf73Kp/N8+hYvxT4GCHz4Km/X9fL1evLT+bTlxrHPaRgv+Z/m6P8BxBH5RxYBAAA=