Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 104.99 KB | None | 0 0
  1. Routing(CAPI)
  2.  
  3. Section Info
  4. ' ================================================= PROJECT INFO =================================================
  5. ' Project Number: 160249240101
  6. ' ProjectName: SAB Miller Low Carb Cider CPT
  7. ' Coordinating Country: Australia
  8. ' Client Company Name: SAB MILLER
  9. ' Contact Name: Jeanine Whalley
  10. ' Contact Mail: Jeanine.Whalley@ipsos.com
  11. ' Study Type: Innoquest CPT
  12. ' Study Design: Monadic
  13. ' Data Collection Modes: Computer Assisted Personal Interview
  14. ' Expected start of Fieldwork: 29-April-2016
  15. ' Number Of Ad-hoc questions:: 0
  16. ' Standard Modules: Diagnostic,Influencers,PSM,Line Quest,Source of Volume,Relaunch,Concept Evaluator - standard 4 questions,Incrementality,Product Test
  17. ' Ordering Mail Description: The protocol is localy created
  18. ' ================================================================================================================
  19. End Section
  20.  
  21. Section Variable_Definition
  22. Dim SliceIndex, InnerCat, Cat, Cat1, Cat2, Cat3, Q1, Q2, Q3, Str1, Str2, Str3, Flag, Flag1, List, List1, Slice, Slice1, Slice2, Banner, Banner_PSM, i , WholePartLen, FractialPartLen
  23. Dim Filler_List, Filler2_List, Interest_List, Competetive_List, C150List, Rot_Question_Order, Ran_Question_Order, TableChart, VarietiesPriorityList
  24. Dim C1W, C2W, C3W, n, k, initVect, Sum, Sign_Position_Front, Currency_Sign, IsPAPI_CATI, IsOnLine, TestProductsList
  25. Dim FlagA, FlagB, FlagC, FlagT
  26.  
  27. dim BannerUnpriced, BannerAlternative
  28. dim syyList,syyListFilter, syyCat
  29. End Section
  30.  
  31. Section Variable_Initial_Set
  32. Comp.Response = {Quit}
  33. IOM.DefaultStyles.Labels[LabelStyleTypes.lsCategory].Cell.Padding = 3
  34. IsPAPI_CATI = (LCase(IOM.RoutingContext) = "papi") or (LCase(IOM.RoutingContext) = "cati")
  35. If IsPAPI_CATI Then IOM.Info.UseKeyCodes=True
  36. IsOnLine = True
  37. If IsOnLine Then
  38. Path = "https://images.synovate.com/cemea/AU1601205701/"
  39. Else
  40. Path = IOM.MDM.ProjectDirectory
  41. End If
  42. For Each Q1 in ProjectDefines
  43. If Q1.QuestionDataType = DataTypeConstants.mtCategorical Then
  44. Q1 = CCategorical(Q1.Properties["Answer"])
  45. ElseIf Q1.QuestionDataType = DataTypeConstants.mtText Then
  46. Q1 = Q1.Properties["Answer"]
  47. ElseIf Q1.QuestionDataType = DataTypeConstants.mtLong Then
  48. Q1 = cLong(Q1.Properties["Answer"])
  49. End If
  50. Next
  51. With S_B
  52. .IpsosGreen = "rgb(1,177,175)"
  53. .IpsosBlue = "rgb(73,99,174)"
  54. .TableHeaderStyle = "font-weight:bold; font-size:11; background:gainsboro"
  55. .AltTableHeaderStyle = "font-weight:bold; font-size:11; background:#d8e6e6"
  56. .TableRowStyle = "font-size:11; background:white"
  57. .AltTableRowStyle = "font-size:11; background:azure"
  58. ._999TableExclusiveHeaderStyle = "font-weight:bold; font-size:11; background:#FFFF99"
  59. ._998TableExclusiveHeaderStyle = "font-weight:bold; font-size:11; background:bisque"
  60. .TableSumRowStyle = "font-weight:bold; font-size:11; color:white; background:black"
  61. .ProductImagesHeaderStyle = "font-size:11; color:white; font-weight:bold; background:rgb(73,99,174)"
  62. .QuestionBanner = "<table width=""100%"" height = ""50px"" style=""border:5px solid " + .IpsosGreen + "; padding:6; background-color:" + .IpsosBlue + """><tr><td width=""70%"" align=""center"" style=""font-size:22pt; color:white; font-weight:bold;"">{#QuestionID}</td><td valign=""middle"" align=""right"" width=""30%"" style=""padding:12""><img height=""92%"" style=""border:5px solid rgb(1,177,175)"" src=""" + Path + "/Templates/images/" + ProjectDefines.StudyType.Response.Value.Format("a") + ".png""/></td></tr></table>"
  63. End With
  64. IOM.LayoutTemplate = "Templates\IQ_CPT_Layout.html"
  65. IOM.Banners.AddNew("QuestionNameBanner", "")
  66. IOM.AutoSelectOther = True
  67. Select Case LCase(IOM.RoutingContext)
  68. Case "web", "cati", "capi"
  69. Ran_Question_Order = True
  70. Rot_Question_Order = True
  71. Case "papi"
  72.  
  73. Ran_Question_Order = False
  74. Rot_Question_Order = False
  75. End Select
  76.  
  77. Country = {AUS} '.ask()'Set this from the sample or ask it as a question
  78.  
  79. If cCategorical(Country.Categories.Item[cCategorical(Country.Response.Value)].Properties.Item["LangFilter"]).AnswerCount() = 1 Then
  80. Language.Response.Value = cCategorical(Country.Categories.Item[cCategorical(Country.Response.Value)].Properties.Item["LangFilter"])
  81. Else
  82. Language= {ENU}'.Ask()
  83. End If
  84.  
  85. If Not IOM.Info.IsAutoAnswer Then IOM.Language = Language.Response.Value.Format("a")
  86.  
  87. pageA1A2A3.Ask()
  88.  
  89. Currency_Sign = Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["Sign"])
  90. Sign_Position_Front = lCase(Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["SignPosition"])) = "front"
  91.  
  92. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  93. 'Seting of the Concepts and Concept is only for test purposes. Must be set by scripter according to the project specification!!!!!
  94. If ProjectDefines.StudyDesign = {MON} Then
  95. Concepts.Response.Value = A3 'Concepts.DefinedCategories().Ran(1) 'Can be chosen by a Least full cell...
  96. Else
  97. Concepts.Response.Value = Concepts.DefinedCategories().Ran(ProjectDefines.NumberOfConcepts.Response.Value) 'Can be chosen by a Least full cell...
  98. End If
  99.  
  100. Screaning_Concept.Response.Value = Concepts.Response.Value'.Ran(1) 'The value is used for the Screening Section
  101. CurrentConcept.Response.Value = Screaning_Concept.Response.Value
  102.  
  103. Screaning_Shelf_Segment = Screaning_Concept.Categories.Item[cCategorical(Screaning_Concept.Response.Value)].Properties.Item["Shelf_Product_Type"] 'It is Mandatory to set this value and to keep it actual
  104. Interest_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(Screaning_Concept.Categories[cCategorical(Screaning_Concept.Response.Value)].Properties.Item["Product_Types_Of_Interest"])
  105. Competetive_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(Screaning_Concept.Categories[cCategorical(Screaning_Concept.Response.Value)].Properties.Item["Competetive_Product_Types"])
  106. Filler_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()-Competetive_List-Interest_List-Screaning_Shelf_Segment
  107. TestProductsList = {}
  108. For Each Cat1 in CurrentConcept.Categories
  109. TestProductsList = TestProductsList + cCategorical(Cat1.Properties.Item["Filter_TestProducts_List"])
  110. Next
  111. 'Seting of the Concepts, Concept and Product_Type_Of_Interest is only for test purposes. Must be set by scripter according to the project specification!!!!!
  112. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  113.  
  114. End Section
  115.  
  116. ' Concepts_Grid[1].C160.Categories.Filter = {_901,_902}
  117. ' For Each Slice1 in Concepts_Grid[1].C160
  118. ' Concepts_Grid[1].C160.Categories[Slice1.QuestionName].Label.Inserts.Item[0] = ""
  119. ' Concepts_Grid[1].C160.Categories[Slice1.QuestionName].Label.Inserts.Item[1] = " " + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements[Slice1.QuestionName].Label)
  120. ' Next
  121. ' Concepts_Grid[1].C160.Ask()
  122. ' Concepts_Grid[1].page245Bottle.Ask()
  123.  
  124. ' Banner = "<script type='text/javascript'>function resizePic() {if (document.getElementById('pic').style.width=='100px') {document.getElementById('pic').style.width='100%'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomOUTImageText.Label+"';}else {document.getElementById('pic').style.width='100px'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomINImageText.Label+"';}}</script><table><tr><td><img id='pic' onclick='resizePic()' src='" + Path + "images/concept_priced.png' style='width:100px; cursor:pointer' border='1' alt='" + Inserts.ZoomImageText.Label + "'/><br/></td><td valign='top'><font size='1'><i><span id='instrZIO'>" + Inserts.ZoomINImageText.Label + "</span></i></font></td></tr></table>"
  125. ' IOM.Banners.AddNew("TESTBANER",Banner)
  126. ' concepts_grid[1].CONCEPT_INTRO.Show()
  127. 'Products_grid[1].P240P245.Ask()
  128. 'Products_grid[1].P300P310block.Ask()
  129.  
  130. Section Screener
  131. COMP.Response = {Quit}
  132.  
  133. S5.Ask()
  134. If IOM.Info.IsAutoAnswer Then S5.Response.Value = {_1}
  135. If S5 = {_2} Then
  136. TNUM.Response.Value = {TNUM61}
  137. Goto Term
  138. End If
  139.  
  140. S80.Ask()
  141.  
  142. S10=A3
  143. ' If cCategorical(Country.Categories.Item[cCategorical(Country.Response.Value)].Properties.Item["Filter_RegionsByCountries_List"]).AnswerCount() = 1 Then
  144. ' S10.Response.Value = cCategorical(Country.Categories.Item[cCategorical(Country.Response.Value)].Properties.Item["Filter_RegionsByCountries_List"])
  145. ' ElseIf cCategorical(Country.Categories.Item[cCategorical(Country.Response.Value)].Properties.Item["Filter_RegionsByCountries_List"]).AnswerCount()>1 Then
  146. ' S10.Ask()
  147. ' End If
  148. '
  149. ' S15.Ask()
  150.  
  151. ' S20_Long.Ask()
  152.  
  153. ' For Each Cat1 in S25.Categories
  154. ' If FindItem(Cat1.Label.Inserts, "Ins1") <> "" Then Cat1.Label.Inserts.Item["Ins1"] = IOM.MDM.Types.Item["Categories_List"].Elements.Item[Cat1.Properties.Item["Insert"]].Label
  155. ' Next
  156. ' S25.Ask()
  157. ' If IOM.Info.IsAutoAnswer Then S25.Response.Value = cCategorical(S25.DefinedCategories() - cCategorical(S25.Properties.Item["Termination"])).Ran(1)
  158. ' If S25*cCategorical(S25.Properties.Item["Termination"]) Then
  159. ' TNUM.Response.Value = {TNUM62}
  160. ' Goto Term
  161. ' End If
  162.  
  163. ' S30.Ask()
  164. ' If IOM.Info.IsAutoAnswer Then S30.Response.Value = cCategorical(S30.DefinedCategories() - {_4,_998}).Ran(1)
  165. ' If S30=*{_4,_998} Then
  166. ' TNUM.Response.Value = {TNUM63}
  167. ' Goto Term
  168. ' End If
  169.  
  170. ' S40.Categories.Filter = Screaning_Shelf_Segment.Response.Value + Competetive_List + Filler_List
  171. ' If Ran_Question_Order Then
  172. ' S40.Categories.Order = OrderConstants.oCustom
  173. ' S40.Categories.Filter = cCategorical(S40.Categories.Filter-{_998,_999}).Ran() + {_998,_999}
  174. ' End If
  175. S40.Categories.Filter = S40.Categories - {_998,_999}
  176. S40.Ask()
  177.  
  178.  
  179.  
  180. 'If IOM.Info.IsAutoAnswer Then S40.Response.Value = cCategorical(Screaning_Shelf_Segment.Response.Value + Competetive_List).Ran(Int(rnd()*cCategorical(Screaning_Shelf_Segment.Response.Value + Competetive_List).AnswerCount())+1) + Filler_List.Ran(Int(rnd()*Filler_List.AnswerCount()+1))
  181.  
  182. '--------------------------------------- Targets seting-----------------------------------------------------------------------------------------------
  183. ' Set TGTS according to the sample - all respondents belonging to the representative sample are part of this target, boost not need to be included
  184. TGTS = {_1}
  185. '_____________________________________________________________________________________________________________________________________________________
  186.  
  187. If AnswerCount(Screaning_Shelf_Segment.Response.Value) = 0 Then
  188. TargetsDefinition.Response.Value = {FUZ}
  189. Else
  190. TargetsDefinition.Response.Value = {STD}
  191. End If
  192.  
  193. If TargetsDefinition.Response.Value = {STD} Then
  194. If S40.Response.Value*Screaning_Shelf_Segment.Response.Value Then
  195. TGCBCL = {_1}
  196. TGNCBCL = {_0}
  197. Else
  198. TGCBCL = {_0}
  199. TGNCBCL = {_1}
  200. End If
  201. End If
  202.  
  203. If AnswerCount(Competetive_List) = 0 Then
  204. TGCBCO = TGCBCL
  205. TGNCBCO = TGNCBCL
  206. Else
  207. If S40.Response.Value*Competetive_List Then
  208. TGCBCO = {_1}
  209. TGNCBCO = {_0}
  210. Else
  211. TGCBCO = {_0}
  212. TGNCBCO = {_1}
  213. End If
  214. End If
  215. ' Sort the list {TGTS, TGCBCL, TGNCBCL, TGCBCO, TGNCBCO} desc. by the free qotatas, excl. the empty cells
  216. Flag = False
  217. For Each Cat1 In {TGTS, TGCBCL, TGNCBCL, TGCBCO, TGNCBCO}*ProjectDefines.SampleTargets.Response.Value
  218. If IOM.Questions[Cat1.Format("a")] = {_1} Then
  219. ' Pend Quota, If quota is pended then
  220. Flag = True
  221. Exit For
  222. End If
  223. Next
  224. If not Flag Then
  225. TNUM.Response.Value = {TNUM64}
  226. Goto Term
  227. End If
  228.  
  229.  
  230. If S40*{_1,_2,_3,_4,_5,_6,_7, _8} then
  231. Select Case TargetsDefinition.Response.Value
  232. Case {STD}
  233. '--- S55
  234. '--- /S55
  235. '--- S60
  236. '--- /S60
  237. '--- S70
  238. '--- /S70
  239. '--- S80
  240. '--- /S80
  241. '--- S115
  242. '--- /S115
  243. '--- S120
  244. '--- /S120
  245. '--- S125
  246. '--- /S125
  247. '--- S45
  248. '--- /S45
  249. Case {FUZ}
  250. '--- S55
  251. S55.Categories.Filter = S40.Response.Value
  252. If S55.Categories.Count = 1 Then
  253. S55.Item[0].SC = {_10}
  254. Else
  255. If Not(IOM.Info.IsAutoAnswer) Then S55.Validation.Function = "Cat_Sum_Validation"
  256. S55.Ask()
  257. End If
  258. '--- /S55
  259. End Select
  260.  
  261. syyList = ccategorical(GetCatList(S85.Categories, S85.DefinedCategories()))
  262. syyListFilter = {}
  263. for each syyCat in syyList
  264. if ccategorical(S85.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*S40 then
  265. syyListFilter = syyListFilter + ccategorical(syyCat)
  266. end if
  267. next
  268.  
  269. 'syyListFilter = syyListFilter + {_997,_998}
  270.  
  271. S85.Categories = syyListFilter
  272. S85.Validation.Function = "S85_Validation"
  273. S85.Ask()
  274.  
  275. Inserts.S85_Other = S85.Response.Other["_997"].Value
  276. Inserts.S85_291_Other= S85.Response.Other["_291"].Value
  277. Inserts.S85_292_Other= S85.Response.Other["_292"].Value
  278. Inserts.S85_293_Other= S85.Response.Other["_293"].Value
  279. Inserts.S85_294_Other= S85.Response.Other["_294"].Value
  280. Inserts.S85_295_Other= S85.Response.Other["_295"].Value
  281. Inserts.S85_296_Other= S85.Response.Other["_296"].Value
  282. Inserts.S85_297_Other= S85.Response.Other["_297"].Value
  283. Inserts.S85_298_Other= S85.Response.Other["_298"].Value
  284.  
  285. SPM.Categories = S85
  286. SPM.Ask()
  287. End If
  288.  
  289.  
  290. S80_INTRO.Ask()
  291. S80_MEAL.Ask()
  292. S80b.Ask()
  293.  
  294. if S80b* {_1,_2,_3,_4,_5,_6,_7} then
  295. SMEAL.Ask()
  296. SMEAL_DRINK.Ask()
  297. SMEAL_DRINK_PREFERRED.Categories = SMEAL_DRINK
  298. if AnswerCount(SMEAL_DRINK) > 1 then
  299. SMEAL_DRINK_PREFERRED.Ask()
  300. else
  301. SMEAL_DRINK_PREFERRED = SMEAL_DRINK
  302. if IOM.Info.IsTest or IOm.Info.IsDebug then SMEAL_DRINK_PREFERRED.Show()
  303. end if
  304. end if
  305.  
  306.  
  307.  
  308. If TGCBCL = {_1} Then
  309. STarget = {_1}
  310. STargComp = {_1}
  311. Else
  312. STarget = {_2}
  313. If TGCBCO = {_1} Then
  314. STargComp = {_2}
  315. Else
  316. STargComp = {_3}
  317. End If
  318. End If
  319. '--- S130_1_2_3
  320. ' If Rot_Question_Order Then S130_1_2_3.Categories.Order = OrderConstants.oRotate
  321. ' S130_1_2_3.Ask()
  322. '--- /S130_1_2_3
  323.  
  324. '--- S135_1_2_3
  325. ' If Rot_Question_Order Then S135_1_2_3.Categories.Order = OrderConstants.oRotate
  326. ' S135_1_2_3.Ask()
  327. '--- /S135_1_2_3
  328. End Section
  329.  
  330.  
  331. Section Concept_Evaluation
  332. SliceIndex = 1
  333. For Each Cat in Concepts.Response.Value
  334. Set Slice = Concepts_Grid[SliceIndex]
  335. CurrentConcept.Response.Value = Cat 'It is Mandatory to set this value and to keep it actual
  336. Slice.Concept.Response.Value = Cat
  337. C1W = 0
  338. C2W = 0
  339. C3W = 0
  340. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  341. 'Seting of the Products, Product, Varieties, Variety is only for test purposes. Must be set by scripter according to the project specification!!!!!
  342.  
  343. If A3*{_1} then
  344. Slice.Products.Response.Value = {_901} 'cCategorical(IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["Filter_TestProducts_List"])
  345. List={_901}
  346. else
  347. Slice.Products.Response.Value = {_902}
  348. List={_902}
  349. end if
  350. Slice.Product.Response.Value = cCategorical(IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["Filter_TestProducts_List"]).Ran(1) 'The value is used for the Concept Evaluation Section
  351. CurrentProduct.Response.Value = Slice.Product.Response.Value
  352. Slice.Inserts.ProductBrand.Response.Value = CCategorical(Slice.Product.Categories.Item[Slice.Product.Response.Value].Properties.Item["Brand"])
  353.  
  354. Slice.Varieties.Response.Value = List
  355. Slice.ProductVarieties.Response.Value = CCategorical(Slice.Product.Categories.Item[cCategorical(Slice.Product.Response.Value)].Properties.Item["Filter_Varieties_List"]) 'The value is used for the Concept Evaluation Section
  356.  
  357. Slice.Variety.Response.Value = Slice.Varieties.Response.Value.Ran(1) 'The value is used for the Concept Evaluation Section
  358.  
  359.  
  360. Slice.Inserts.Variety.Response.Value = RegExProc(Slice.Variety.Categories.Item[cCategorical(Slice.Variety.Response.Value)].Label, "Replace", "{[a-zA-Z1-9_]+}", "")
  361. 'Seting of the Products, Product, Varieties, Variety is only for test purposes. Must be set by scripter according to the project specification!!!!!
  362. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  363.  
  364. Slice.Inserts.ParentBrand.Response.Value = cCategorical(Trim(Slice.Product.Categories.Item[cCategorical(Slice.Product.Response.Value)].Properties.Item["ParentBrand"]))
  365.  
  366. Slice.Shelf_Segment = IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["Shelf_Product_Type"] 'It is Mandatory to set this value and to keep it actual
  367. 'Slice.Shelf_Segment_Typical_Use = Slice.Shelf_Segment.Categories.Item[cCategorical(Slice.Shelf_Segment.Response.Value)].Properties.Item["Typical_Use"] 'It is Mandatory to set this value and to keep it actual
  368. 'Slice.Shelf_Segment_Brands = Slice.Shelf_Segment.Categories.Item[cCategorical(Slice.Shelf_Segment.Response.Value)].Properties.Item["Brands"] 'It is Mandatory to set this value and to keep it actual
  369. Slice.Inserts.ConceptExposure = Cat
  370. Interest_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["Product_Types_Of_Interest"])
  371. Competetive_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["Competetive_Product_Types"])
  372. Filler_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()-Competetive_List-Interest_List-Slice.Shelf_Segment
  373. Inserts.CE_Tables.Response = Cat
  374. If TargetsDefinition.Response.Value = {STD} Then
  375. If S40.Response.Value*Slice.Shelf_Segment.Response.Value Then
  376. Slice.Targets.Response.Value = {TGCBCL}
  377. Else
  378. Slice.Targets.Response.Value = {TGNCBCL}
  379. End If
  380. End If
  381.  
  382. If AnswerCount(Competetive_List) = 0 Then
  383. TGCBCO = TGCBCL
  384. TGNCBCO = TGNCBCL
  385. Else
  386. If S40.Response.Value*Competetive_List Then
  387. Slice.Targets.Response.Value = Slice.Targets.Response.Value + {TGCBCO}
  388. Else
  389. Slice.Targets.Response.Value = Slice.Targets.Response.Value + {TGNCBCO}
  390. End If
  391. End If
  392.  
  393. Banner = "<script type='text/javascript'>function resizePic() {if (document.getElementById('pic').style.width=='100px') {document.getElementById('pic').style.width='100%'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomOUTImageText.Label+"';}else {document.getElementById('pic').style.width='100px'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomINImageText.Label+"';}}</script><table><tr><td><img id='pic' onclick='resizePic()' src='" + Path + "images/" + IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["nameOnly"] + "' style='width:100px; cursor:pointer' border='1' alt='" + Inserts.ZoomImageText.Label + "'/><br/></td><td valign='top'><font size='1'><i><span id='instrZIO'>" + Inserts.ZoomINImageText.Label + "</span></i></font></td></tr></table>"
  394. BannerUnpriced = "<script type='text/javascript'>function resizePic() {if (document.getElementById('pic').style.width=='100px') {document.getElementById('pic').style.width='100%'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomOUTImageText.Label+"';}else {document.getElementById('pic').style.width='100px'; document.getElementById('instrZIO').innerHTML='"+Inserts.ZoomINImageText.Label+"';}}</script><table><tr><td><img id='pic' onclick='resizePic()' src='" + Path + "images/unpriced/" + IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["nameOnly"] + "' style='width:100px; cursor:pointer' border='1' alt='" + Inserts.ZoomImageText.Label + "'/><br/></td><td valign='top'><font size='1'><i><span id='instrZIO'>" + Inserts.ZoomINImageText.Label + "</span></i></font></td></tr></table>"
  395.  
  396. TableChart = "<table cellpadding=""7"" style=""border:1px solid blue""><tr><td align=""left"">"
  397. If Slice.Varieties.Response.Value.AnswerCount() = 1 Then
  398. TableChart = TableChart + Slice.Product.Categories.Item[cCategorical(Slice.Product.Response.Value)].Label + Inserts.Table_Header_Single_Variety.Label
  399. Slice.Inserts.Product_s.Response.Value = {_1}
  400. Else
  401. Slice.Inserts.Product_s.Response.Value = {_2}
  402. Str1 = ""
  403. For Each Cat1 in Slice.Products.Response.Value
  404. Str1 = Str1 + ", " + Slice.Products.Categories[Cat1.Format("a")].Label
  405. Next
  406. TableChart = TableChart + Str1.Mid(2) + Inserts.Table_Header_Multi_Variety.Label
  407. End If
  408. TableChart = TableChart + "</td></tr><tr><td align=""center""><table cellspacing=""2"" Style=""border:0px solid white; align:left""><thead><tr><td Style=""border:1px solid white""/><td align=""center"" Style=""border:1px solid black; " + S_B.TableHeaderStyle + """><b>" + Inserts.Size_Label.Label + "</b></td><td align=""center"" Style=""border:1px solid black; " + S_B.TableHeaderStyle + """><b>" + Inserts.Price_Label.Label + "</b></td></tr></thead><tbody>"
  409. Flag = False
  410. For Each Cat1 in Slice.Varieties.Response.Value
  411. If lCase(Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["SignPosition"])) = "front" Then
  412. Str1 = Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["Sign"]) + " " + cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2")
  413. Else
  414. Str1 = cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2") + " " + Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["Sign"])
  415. End If
  416. TableChart = TableChart + "<tr><td Style=""border:1px solid black; " + Iif(Flag, S_B.AltTableHeaderStyle, S_B.TableHeaderStyle) + """>" + RegExProc(Slice.Variety.Categories.Item[cCategorical(Cat1)].Label, "Replace", "{[a-zA-Z1-9_]+}", "") + "</td><td align=""right"" Style=""border:1px solid black; " + Iif(Flag, S_B.AltTableRowStyle, S_B.TableRowStyle) + """>" + IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label + "</td><td align=""right"" Style=""border:1px solid black; " + Iif(Flag, S_B.AltTableRowStyle, S_B.TableRowStyle) + """>" + Str1 + "</td></tr>"
  417. Flag = Not Flag
  418. Next
  419. TableChart = TableChart + "</tbody></table></td></tr></table>"
  420.  
  421. Slice.Inserts.Table.Response.Value = TableChart
  422.  
  423. If Not IsPAPI_CATI Then Slice.CONCEPT_INTRO_UNPRICED.Show()
  424. Slice.Concept_Exposure_UNPRICED.label.Inserts.Item["ins1"] = "<img src='" + Path + "images/unpriced/" + IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["nameOnly"] + "' />"
  425. If Not IsPAPI_CATI Then Slice.Concept_Exposure_UNPRICED.Show()
  426.  
  427.  
  428. IOM.Banners.AddNew("ConceptBannerUnpriced", BannerUnpriced)
  429.  
  430. Slice.C10_C15unpriced.Ask()
  431. Slice.C20unpriced.Ask()
  432. Slice.C25unpriced.Ask()
  433.  
  434. '--- Concepts_Grid.C30, Concepts_Grid.C31, Concepts_Grid.C31_Double, Concepts_Grid.C32, Concepts_Grid.C32_Double, Concepts_Grid.C33, Concepts_Grid.C33_Double, Concepts_Grid.C34, Concepts_Grid.C34_Double
  435. If ProjectDefines.StandardModules.Response.Value=*{PSM} Then
  436. If IsPAPI_CATI Or IOM.Info.IsAutoAnswer Then
  437. Slice.C31_Double.Ask()
  438. If Not(IOM.Info.IsAutoAnswer) Then Slice.C32_Double.Validation.Function = "C32_C34_Double_Validation"
  439. Slice.C32_Double.Ask()
  440. If Not(IOM.Info.IsAutoAnswer) Then Slice.C33_Double.Validation.Function = "C32_C34_Double_Validation"
  441. Slice.C33_Double.Ask()
  442. If Not(IOM.Info.IsAutoAnswer) Then Slice.C34_Double.Validation.Function = "C32_C34_Double_Validation"
  443. Slice.C34_Double.Ask()
  444. Else
  445. Slice.C30.Show()
  446. WholePartLen = Len(cText(Int(cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Slice.Variety.Response.Value.Format("a")].Label)))))
  447. Str1 = cText(Int(round((0.7*WholePartLen))) + 1) + "em"
  448. Slice.C31.OtherCategories.Item["WholePart"].OtherQuestion.Style.Width = Str1
  449. Slice.C32.OtherCategories.Item["WholePart"].OtherQuestion.Style.Width = Str1
  450. Slice.C33.OtherCategories.Item["WholePart"].OtherQuestion.Style.Width = Str1
  451. Slice.C34.OtherCategories.Item["WholePart"].OtherQuestion.Style.Width = Str1
  452. ' Str1 = "^[0-9]{1," + cText(WholePartLen + 1) + "}$"
  453. ' Slice.C31.OtherCategories.Item["WholePart"].OtherQuestion.Validation.ValidateExpression = Str1
  454. ' Slice.C32.OtherCategories.Item["WholePart"].OtherQuestion.Validation.ValidateExpression = Str1
  455. ' Slice.C33.OtherCategories.Item["WholePart"].OtherQuestion.Validation.ValidateExpression = Str1
  456. ' Slice.C34.OtherCategories.Item["WholePart"].OtherQuestion.Validation.ValidateExpression = Str1
  457. FractialPartLen = Len(Trim(IOM.MDM.Types.Item["FractialCurrency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["CMultiplier"]))-1
  458. Str1 = cText(Int(round((0.7*FractialPartLen))) + 1) + "em"
  459. Slice.C31.OtherCategories.Item["FractialPart"].OtherQuestion.Style.Width = Str1
  460. Slice.C32.OtherCategories.Item["FractialPart"].OtherQuestion.Style.Width = Str1
  461. Slice.C33.OtherCategories.Item["FractialPart"].OtherQuestion.Style.Width = Str1
  462. Slice.C34.OtherCategories.Item["FractialPart"].OtherQuestion.Style.Width = Str1
  463. ' Str1 = "^[0-9]{1," + cText(FractialPartLen) + "}$"
  464. ' Slice.C31.OtherCategories.Item["FractialPart"].OtherQuestion.Validation.ValidateExpression = Str1
  465. ' Slice.C32.OtherCategories.Item["FractialPart"].OtherQuestion.Validation.ValidateExpression = Str1
  466. ' Slice.C33.OtherCategories.Item["FractialPart"].OtherQuestion.Validation.ValidateExpression = Str1
  467. ' Slice.C34.OtherCategories.Item["FractialPart"].OtherQuestion.Validation.ValidateExpression = Str1
  468. If Trim(LCase(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["SignPosition"])) = "front" Then
  469. Slice.Inserts.Currency_Front = Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["Sign"])
  470. Slice.Inserts.Currency_Back = ""
  471. Else
  472. Slice.Inserts.Currency_Front = ""
  473. Slice.Inserts.Currency_Back = Trim(IOM.MDM.Types.Item["Currency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["Sign"])
  474. End If
  475. Slice.C31.OtherCategories.Item["WholePart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Front
  476. Slice.C32.OtherCategories.Item["WholePart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Front
  477. Slice.C33.OtherCategories.Item["WholePart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Front
  478. Slice.C34.OtherCategories.Item["WholePart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Front
  479. Slice.C31.OtherCategories.Item["FractialPart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Back
  480. Slice.C32.OtherCategories.Item["FractialPart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Back
  481. Slice.C33.OtherCategories.Item["FractialPart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Back
  482. Slice.C34.OtherCategories.Item["FractialPart"].OtherQuestion.Label.Inserts.Item["Currency"] = Slice.Inserts.Currency_Back
  483. Slice.Inserts.Fractial = Trim(IOM.MDM.Types.Item["FractialCurrency"].Elements.Item[Country.Response.Value.Format("a")].Label)
  484. Slice.Inserts.Fractial2 = """" + Ucase(Trim(IOM.MDM.Types.Item["FractialCurrency"].Elements.Item[Country.Response.Value.Format("a")].Label)) + """"
  485. Slice.C31.Categories.Item["FractialSign"].Label.Inserts.Item["Fractial"] = Slice.Inserts.Fractial
  486. Slice.C32.Categories.Item["FractialSign"].Label.Inserts.Item["Fractial"] = Slice.Inserts.Fractial
  487. Slice.C33.Categories.Item["FractialSign"].Label.Inserts.Item["Fractial"] = Slice.Inserts.Fractial
  488. Slice.C34.Categories.Item["FractialSign"].Label.Inserts.Item["Fractial"] = Slice.Inserts.Fractial
  489.  
  490. Slice.C31.Validation.Function = "C32_C34_Validation"
  491. Slice.C31.Ask()
  492. Slice.C31_Double.Response.Value = cDouble(Slice.C31.Response.Other.Item["WholePart"].Value) + (cDouble(Slice.C31.Response.Other.Item["FractialPart"].Value)/cdouble(Trim(IOM.MDM.Types.Item["FractialCurrency"].Elements.Item[Country.Response.Value.Format("a")].Properties.Item["CMultiplier"])))
  493.  
  494. Slice.C32.Validation.Function = "C32_C34_Validation"
  495. Slice.C32.Ask()
  496.  
  497. Slice.C33.Validation.Function = "C32_C34_Validation"
  498. Slice.C33.Ask()
  499.  
  500. Slice.C34.Validation.Function = "C32_C34_Validation"
  501. Slice.C34.Ask()
  502.  
  503. End If
  504. End If
  505. '--- /Concepts_Grid.C30, Concepts_Grid.C31, Concepts_Grid.C31_Double, Concepts_Grid.C32, Concepts_Grid.C32_Double, Concepts_Grid.C33, Concepts_Grid.C33_Double, Concepts_Grid.C34, Concepts_Grid.C34_Double
  506.  
  507. IOM.Banners.Remove("ConceptBannerUnpriced")
  508.  
  509. If Not IsPAPI_CATI Then Slice.CONCEPT_INTRO.Show()
  510.  
  511. Slice.Concept_Exposure.label.Inserts.Item["ins1"] = "<img src='" + Path + "images/" + IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["nameOnly"] + "' />"
  512. If Not IsPAPI_CATI Then Slice.Concept_Exposure.Show()
  513. IOM.Banners.AddNew("ConceptBanner", Banner)
  514.  
  515. Slice.C10_C15.Ask()
  516.  
  517. Slice.C20.Ask()
  518.  
  519. '--- Concepts_Grid.C25
  520. Slice.C25.Ask()
  521. '--- /Concepts_Grid.C25
  522.  
  523. Slice.C35.Ask()
  524.  
  525. '--- Concepts_Grid.C40
  526. Slice.C40.Ask()
  527. '--- /Concepts_Grid.C40
  528.  
  529. '--- Concepts_Grid.C45
  530. Slice.C45.Ask()
  531. '--- /Concepts_Grid.C45
  532.  
  533. if not(IOM.Banners.FindItem("ConceptBanner") is null) then IOM.Banners.Remove("ConceptBanner")
  534. Slice.C50C55.Ask()
  535.  
  536. '--- Concepts_Grid.C50
  537. '--- /Concepts_Grid.C50
  538.  
  539. '--- Concepts_Grid.C55
  540. '--- /Concepts_Grid.C55
  541.  
  542.  
  543. Slice.C60.Banners.AddNew("ConceptBanner", Banner)
  544.  
  545. '--- Concepts_Grid.C60
  546. Slice.C60.Categories.Filter = S40.Response.Value
  547. ' If (S40.Response.Value*Screaning_Shelf_Segment) And ((S65.Response.Value = {_7}) Or (S85.Response.Value = {_998})) Then Slice.C60.Categories.Filter = GetCatList(Slice.C60.Categories, Slice.C60.DefinedCategories())-Screaning_Shelf_Segment
  548. ' If Ran_Question_Order Then
  549. ' Slice.C60.Categories.Order = OrderConstants.oCustom
  550. ' Slice.C60.Categories.Filter = cCategorical(GetCatList(Slice.C60.Categories, Slice.C60.DefinedCategories())-{_997,_998,_999}).Ran() + {_997,_998,_999}
  551. ' End If
  552. Slice.C60.Ask()
  553. if Slice.C60*{_996} then
  554. Slice.Inserts.C60_Other.Response.Value = S40.Response.Other["_996"].Value
  555. elseif Slice.C60*{_997} then
  556. Slice.Inserts.C60_Other.Response.Value = Slice.C60.Response.Other["_997"].Value
  557. else
  558. Slice.Inserts.C60_Other.Response.Value = Slice.C60.format("b")
  559. end if
  560. '--- /Concepts_Grid.C60
  561.  
  562. If Not(Slice.C60.Response.Value = {_998}) Then
  563. '--- Concepts_Grid.C110
  564. Slice.C110.Ask() 'c61
  565. '--- /Concepts_Grid.C110
  566.  
  567. '--- Concepts_Grid.C115
  568.  
  569. Slice.C115.Categories.Filter = Slice.C60'cCategorical(Trim(Slice.C60.Categories.Item[Slice.C60.Response.Value.Format("a")].Properties.Item["Filter_Products_List"]))' - TestProductsList
  570. if Slice.C60*{_1} then Slice.C115[ccategorical(Slice.C60)].SC.Categories = {_1,_2,_3,_4,_5,_6,_7,_8}
  571. if Slice.C60*{_2} then Slice.C115[ccategorical(Slice.C60)].SC.Categories = {_1,_3,_4,_5,_6,_7,_8}
  572. if Slice.C60*{_6,_7,_8} then Slice.C115[ccategorical(Slice.C60)].SC.Categories = {_9,_10,_11,_12,_13,_14}
  573. if Slice.C60*{_1,_2,_6,_7,_8} then
  574. Slice.C115.Ask() 'c62
  575. end if
  576. '--- /Concepts_Grid.C115
  577.  
  578. if Slice.C60*{_1} then
  579. Slice.CBEER.Ask()
  580. end if
  581.  
  582. Slice.C120.Categories.Filter = Slice.C60
  583. if Slice.C60*{_1,_2} then Slice.c120label = {_1}
  584. Slice.C120[Slice.C60].SC.Categories = Slice.C120[Slice.C60].SC.Categories - {_998}
  585. Slice.C120.Ask() 'c63
  586.  
  587.  
  588. '--- Concepts_Grid.C125
  589. Slice.C125.Ask() 'C64
  590. '--- /Concepts_Grid.C125
  591.  
  592. '--- Concepts_Grid.C65
  593. if Slice.C60*{_996,_997} then
  594. Slice.C66.Ask()
  595. Slice.Inserts.C66Other.Response.Value = Slice.C66.Response
  596. else
  597. syyList = ccategorical(GetCatList(Slice.C65.Categories, Slice.C65.DefinedCategories()))
  598. syyListFilter = {}
  599. for each syyCat in syyList
  600. if ccategorical(Slice.C65.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.C60 then
  601. syyListFilter = syyListFilter + ccategorical(syyCat)
  602. end if
  603. next
  604.  
  605. syyListFilter = syyListFilter + ccategorical(S85*{_997})
  606.  
  607. Slice.C65.Categories = S85*syyListFilter
  608. if answercount(S85*syyListFilter)=1 then
  609. Slice.C65 = S85*syyListFilter
  610. Slice.Inserts.C65Answer.Response.Value = Slice.C65.format("b")
  611. if Slice.C65*{_291,_292,_293,_294,_295,_296,_297,_298,_299,_997} then
  612. Slice.Inserts.C65Answer.Response.Value = S85.Response.Other[Slice.C65.Format("a")].Value
  613. end if
  614. elseif answercount(S85*syyListFilter) > 1 then
  615. Slice.C65.Ask()
  616. Slice.Inserts.C65Answer.Response.Value = Slice.C65.format("b")
  617. if Slice.C65*{_291,_292,_293,_294,_295,_296,_297,_298,_299,_997} then
  618. Slice.Inserts.C65Answer.Response.Value = S85.Response.Other[Slice.C65.Format("a")].Value
  619. end if
  620. end if
  621. end if
  622.  
  623.  
  624. If Not(Slice.C60.Response.Value * {_996,_997,_998}) Then 'IF CODE 997 OR 998 (None) AT C.60, SKIP C70
  625. Slice.C70.Categories = S85*syyListFilter
  626. if answercount(S85*syyListFilter)=1 then
  627. Slice.C70 = S85*syyListFilter
  628. elseif answercount(S85*syyListFilter)>1 then
  629. Slice.C70.Banners.AddNew("ConceptBanner", Banner)
  630. Slice.C70.Ask()
  631. end if
  632. end if
  633. '--- /Concepts_Grid.C65
  634.  
  635. end if
  636.  
  637.  
  638.  
  639. '--- Concepts_Grid.C70
  640. '--- /Concepts_Grid.C70
  641. '--- Concepts_Grid.C73
  642. '--- /Concepts_Grid.C73
  643. '--- Concepts_Grid.C75
  644. '--- /Concepts_Grid.C75
  645. '--- Concepts_Grid.C76
  646. '--- /Concepts_Grid.C76
  647. ''--- Concepts_Grid.C80 /should be uncommented if it is required
  648. ' If (Slice.Targets.Response.Value=*{TGCBCL}) And (Slice.Shelf_Segment*Slice.C60.Response.Value) And (Slice.C25.Response.Value=*{_3,_4,_5}) Then
  649. ' Slice.C80.Categories.Filter = S85.Response.Value-cCategorical(Slice.Product.Categories[cCategorical(Slice.Product.Response.Value)].Properties.Item["ParentBrand"]) ' If there is old brand for the tested product, exclude it from the list.
  650. ' If Slice.C80.Categories.Count = 1 Then
  651. ' Slice.C80.Item[0].Item[0].Response.Value = {_10}
  652. ' Else
  653. ' If Not(IOM.Info.IsAutoAnswer) Then Slice.C80.Validation.Function = "Cat_Sum_Validation"
  654. ' If IsPAPI_CATI Then Slice.C80.Questionemplate = Null
  655. ' Slice.C80.Ask()
  656. ' End If
  657. ' End If
  658. ''--- /Concepts_Grid.C80
  659.  
  660.  
  661. If Not(Slice.C60.Response.Value = {_998}) Then
  662. '--- Concepts_Grid.C85
  663. '--- /Concepts_Grid.C85
  664. Slice.C90_C95.Ask()
  665. Slice.C100.Ask()
  666. end if
  667.  
  668. '--- Concepts_Grid.C105
  669. Slice.C105.Ask()
  670. '--- /Concepts_Grid.C105
  671.  
  672.  
  673. If IOM.Banners.FindItem("ConceptBanner") is Null Then IOM.Banners.AddNew("ConceptBanner", Banner)
  674.  
  675. If Slice.C25.Response.Value=*{_3,_4,_5} Then
  676. If (Slice.Varieties.Response.Value.AnswerCount()>1) then 'And Not(Slice.C130.Response.Value = {_998}) Then
  677. '--- Concepts_Grid.C150
  678. '--- /Concepts_Grid.C150
  679. '--- Concepts_Grid.C145
  680. '--- /Concepts_Grid.C145
  681. End If
  682. Slice.C130.Categories = GetCatList(Slice.C130.Categories, Slice.C130.DefinedCategories()) - {_998}
  683. Slice.C130.Ask()
  684. Slice.C135.Ask()
  685. Slice.C140.Ask()
  686. '--- Concepts_Grid.C130,Concepts_Grid.C135
  687. '--- /Concepts_Grid.C130,Concepts_Grid.C135
  688. '--- Concepts_Grid.C140
  689. '--- /Concepts_Grid.C140
  690. End If
  691.  
  692. '--- Concepts_Grid.C155
  693. '--- /Concepts_Grid.C155
  694.  
  695.  
  696. if not(slice.C60*{_998}) then
  697. '--- Concepts_Grid.C106
  698. ' ========================================= CHIP GAME ==============================================
  699. if Slice.C66 <> null then
  700. Slice.C106PROD.A.Response.Value = {_c66}
  701. else
  702. Slice.C106PROD.A.Response.Value = Slice.C65
  703. end if
  704.  
  705. syyListFilter = GetCatList(Slice.C65.categories,slice.C65.definedcategories())
  706.  
  707. syyListFilter = {}
  708. for each syyCat in syyList
  709. if ccategorical(Slice.C65.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.C60 then
  710. syyListFilter = syyListFilter + ccategorical(syyCat)
  711. end if
  712. next
  713.  
  714. syyListFilter = syyListFilter + ccategorical(S85*{_997})
  715. syyListFilter = syyListFilter*S85
  716.  
  717. List = cCategorical(syyListFilter - ({_998,_999} + Slice.C106PROD.A.Response.Value + CurrentProduct)).Ran(1) ' S85.Response.Value - ...
  718. List1 = cCategorical(syyListFilter - ({_998,_999} + Slice.C106PROD.A.Response.Value + List + CurrentProduct)).Ran(1)' S85.Response.Value - ...
  719. Slice.C106PROD.B.Response.Value = List
  720. Slice.C106PROD.C.Response.Value = List1
  721. Slice.C106PROD.T.Response.Value = {_990}
  722. FlagA = Slice.C106PROD.A.Response.Value.AnswerCount() = 1
  723. FlagB = Slice.C106PROD.B.Response.Value.AnswerCount() = 1
  724. FlagC = Slice.C106PROD.C.Response.Value.AnswerCount() = 1
  725. FlagT = Slice.C106PROD.T.Response.Value.AnswerCount() = 1
  726. If FlagB Or FlagC Then
  727. Slice.Inserts.C106_Wording = {_2}
  728. Else
  729. Slice.Inserts.C106_Wording = {_1}
  730. End If
  731.  
  732. If FlagA or FlagB or FlagC then Slice.CHIPS_INTRO.Show()
  733.  
  734. If FlagT Then
  735. n=0
  736. Str1 = ""
  737. For Each Q1 in Slice.C106_Dummy
  738. If Eval(Q1.Properties.Item["Condition"]) Then
  739. k = len(Q1.Categories.Item[0].Label)
  740. If k > n Then n = k
  741. k = len(Q1.Categories.Item[1].Label)
  742. If k > n Then n = k
  743. Str1 = Str1 + "," + Q1.QuestionName
  744. End If
  745. Next
  746. Slice.C106_Dummy.QuestionFilter = Mid(Str1,1)
  747. IOM.DefaultStyles.Grids[GridStyleTypes.gsRowHeader].Cell.Width = cText(0.7*(n+1)) + "em"
  748. If Not(IOM.Info.IsAutoAnswer) Then Slice.C106_Dummy.Validation.Function = "Validate_Chips"
  749. If IsPAPI_CATI Then Q1.QuestionTemplate = Null
  750. Slice.C106_Dummy.Ask()
  751. IOM.DefaultStyles.Grids[GridStyleTypes.gsRowHeader].Cell.Width = ""
  752. For Each Q1 in Slice.C106_Dummy
  753. For Each Slice1 in Q1
  754. Slice.C106[Q1.Categories[Slice1.QuestionName].Properties["ValueSliceName"]].Item[0].Response.Value = Slice1.Item[0].Response.Value
  755. Next
  756. Next
  757. End If
  758. '--- /Concepts_Grid.C106
  759. end if
  760.  
  761. Slice.C108.Categories.Filter = S85.Response.Value + {_901} '-cCategorical(Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Properties.Item["ParentBrand"]) ' If there is old brand for the tested product, exclude it from the list.
  762. If Slice.C108.Categories.Count = 1 Then
  763. Slice.C108.Item[0].Item[0].Response.Value = {_10}
  764. ElseIf Slice.C108.Categories.Count > 1 Then
  765. If Not(IOM.Info.IsAutoAnswer) Then Slice.C108.Validation.Function = "Cat_Sum_Validation"
  766. Slice.C108.Ask()
  767. End If
  768.  
  769.  
  770. '--- Concepts_Grid.C160
  771. If Slice.C25.Response.Value=*{_3,_4,_5} Then
  772. Slice.C160AD.Categories.Order = OrderConstants.oCustom
  773. Slice.C160AD.Ask()
  774.  
  775. Slice.CMeals_CCuisines.Ask()
  776. end if
  777. '--- /Concepts_Grid.C160
  778.  
  779.  
  780. '--- Concepts_Grid.C175
  781. Slice.C175.Ask()
  782. '--- /Concepts_Grid.C175
  783.  
  784. '--- Concepts_Grid.C165
  785. '--- /Concepts_Grid.C165
  786.  
  787. If IOM.Banners.FindItem("ConceptBanner") <> Null Then IOM.Banners.Remove("ConceptBanner")
  788.  
  789.  
  790. '--- Slice.CE_INTRO, Slice.C200, Slice.C205, Slice.C210, Slice.C215
  791. Slice.CE_INTRO.label.Inserts.Item["ins1"] = "<img src='" + Path + "images/" + IOM.MDM.Types.Item["Concepts_List"].Elements.Item[Cat.Format("a")].Properties.Item["nameOnly"] + "' />"
  792. If Not IsPAPI_CATI Then Slice.CE_INTRO.Show()
  793. Str1 = "<mrRef RefType='script' RefPosition='head' id='CEJSONProperties' class='CEJSONProperties' type='application/json' language='Javascript'>{" + _
  794. """excl"":""_998""," + _
  795. """bcolor"":""lightgray""," + _
  796. """hcolor"":""#ABABFF""," + _
  797. """scolor"":""yellow""," + _
  798. """hscolor"":""gold""," + _
  799. """ccatname"":""" + Cat.Format("a") + ""","
  800.  
  801. Slice.C200.Categories.Filter = Cat
  802. InitVect = ""
  803. If IsPAPI_CATI Then
  804. Slice.C200.Questionemplate = Null
  805. Else
  806. Slice.C200.Banners.AddNew("CEBanner", Str1 + """vect"":""" + Inserts.CE_Tables.Categories[Cat.Format("a")].Properties.Item["InitialVector_" + Language.Format("a")] + """}</mrRef>")
  807. End If
  808. Slice.C200.Ask()
  809.  
  810. If Slice.C200.Response.Value.AnswerCount()<Slice.C205.Categories.Item[Cat.Format("a")].Count Then
  811. Slice.C205.Categories.Filter = Cat
  812. InitVect = ""
  813. for each Cat1 in Slice.C205.Categories.Item[Cat.Format("a")].Categories
  814. If Cat1.Properties.Item["Clickable"] Then
  815. If Slice.C200.Response.Value*cCategorical(Cat1.Format("a")) Then
  816. initVect = initVect + "|"+Mid(Cat1.Format("a"),find(Cat1.Format("a"),".")+1)+"~2"
  817. Else
  818. initVect = initVect + "|"+Mid(Cat1.Format("a"),find(Cat1.Format("a"),".")+1)+"~0"
  819. End If
  820. Else
  821. initVect = initVect + "|"+Mid(Cat1.Format("a"),find(Cat1.Format("a"),".")+1)+"~2"
  822. End If
  823. next
  824. If IsPAPI_CATI Then
  825. Slice.C205.Questionemplate = Null
  826. Slice.C205.Categories.Filter = GetCatList(Slice.C205.Categories, Slice.C205.DefinedCategories()) - Slice.C200.Response.Value
  827. Else
  828. Slice.C205.Banners.AddNew("CEBanner", Str1 + """vect"":""" + Mid(initVect, 1) + """}</mrRef>")
  829. End If
  830. Slice.C205.Ask()
  831. Else
  832. Slice.C205.Response = {_998}
  833. End If
  834.  
  835. Slice.C210.Categories.Filter = Cat
  836. If Slice.C210.Response.Value is not null then Slice.C210.Response.Value = Slice.C210.Response.Value-Slice.C205.Response.Value
  837. If IsPAPI_CATI Then
  838. Slice.C210.Questionemplate = Null
  839. Else
  840. Slice.C210.Banners.AddNew("CEBanner", Str1 + """vect"":""" + Inserts.CE_Tables.Categories[Cat.Format("a")].Properties.Item["InitialVector_" + Language.Format("a")] + """}</mrRef>")
  841. End If
  842. Slice.C210.Ask()
  843.  
  844. Slice.C215.Categories.Filter = Cat
  845. If IsPAPI_CATI Then
  846. Slice.C215.Questionemplate = Null
  847. Else
  848. Slice.C215.Banners.AddNew("CEBanner", Str1 + """vect"":""" + Inserts.CE_Tables.Categories[Cat.Format("a")].Properties.Item["InitialVector_" + Language.Format("a")] + """}</mrRef>")
  849. End If
  850. Slice.C215.Ask()
  851. '--- /Slice.CE_INTRO, Slice.C200, Slice.C205, Slice.C210, Slice.C215
  852.  
  853.  
  854. If IOM.Banners.FindItem("ConceptBanner") is Null Then IOM.Banners.AddNew("ConceptBanner", Banner)
  855.  
  856.  
  857. '--- Concepts_Grid.C220
  858. Slice.C220.Ask()
  859. '--- /Concepts_Grid.C220
  860.  
  861. Slice.C240Name.AsK()
  862. Slice.C240 = Slice.C240Name.Item["C240AD"].Response.Value
  863.  
  864. Slice.C245_PAck.Ask()
  865. Slice.C245 = Slice.C245_PAck.Item["C245AD"].Response.Value
  866.  
  867. Slice.C250.Ask()
  868. ' Slice.CBENEFITS.Ask()
  869. ' Slice.page245Bottle.Ask()
  870. ' Slice.page245Pack.Ask()
  871.  
  872. if not(IOM.Banners.FindItem("ConceptBanner") is null) then IOM.Banners.Remove("ConceptBanner")
  873.  
  874. '--- Concepts_Grid.C170
  875. '--- /Concepts_Grid.C170
  876.  
  877.  
  878. '--- Concepts_Grid.C180
  879. '--- /Concepts_Grid.C180
  880.  
  881. '--- Concepts_Grid.C185
  882. '--- /Concepts_Grid.C185
  883.  
  884.  
  885. '--- Concepts_Grid.Emoti
  886. '--- /Concepts_Grid.Emoti
  887.  
  888. '--- Concepts_Grid.C235
  889. '--- /Concepts_Grid.C235
  890.  
  891. '--- Concepts_Grid.C240
  892. '--- /Concepts_Grid.C240
  893.  
  894. '--- Concepts_Grid.C245
  895. '--- /Concepts_Grid.C245
  896.  
  897. '--- Concepts_Grid.C250
  898. '--- /Concepts_Grid.C250
  899.  
  900. SliceIndex = SliceIndex + 1
  901. Next
  902. End Section
  903.  
  904. Section Demographics
  905.  
  906. ' D10.Ask()
  907. ' D45a.Ask()
  908.  
  909. D10D45aBLOCK.Ask()
  910.  
  911. DAttitudes.ASk()
  912. End Section
  913.  
  914. EndOfCE.Show()
  915. FinalCE.Show()
  916.  
  917.  
  918. Section Products
  919. '--- Products_Placement,MailingInfo,Products_Grid
  920. Products_Placement.TestedVarieties.Categories.Filter = {}
  921. SliceIndex = 1
  922. Set Slice = Concepts_Grid[SliceIndex]
  923. Products_Placement.TestedVarieties.Categories={_901}
  924.  
  925. If Not (Slice.C25.Response.Value = {_1}) Then
  926. if A3*{_1} then
  927. Products_Placement.TestedVarieties.Categories = {_901}
  928. Products_Placement.TestedVarieties[{_901}].Varieties.Categories = {_901}
  929. Products_Placement.TestedVarieties[{_901}].Varieties = {_901}
  930. else
  931. Products_Placement.TestedVarieties.Categories = {_902}
  932. Products_Placement.TestedVarieties[{_902}].Varieties.Categories = {_902}
  933. Products_Placement.TestedVarieties[{_902}].Varieties = {_902}
  934. end if
  935. ' For Each Cat1 in Products_Placement.TestedVarieties
  936. ' For Each Cat2 in GetCatList(Cat1.Varieties.Categories, Cat1.Varieties.DefinedCategories())
  937. ' Cat1.Varieties.Categories[Cat2.Format("a")].Label.Inserts.Item["Ins1"] = ""
  938. ' Cat1.Varieties.Categories[Cat2.Format("a")].Label.Inserts.Item["Ins2"] = " - " + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat2.Format("a")].Label)
  939. ' Next
  940. ' Next
  941. Else
  942. Products_Placement.TestedVarieties[{_901}].Varieties.Categories.Filter = {}
  943. End If
  944.  
  945. SliceIndex = 1
  946. For Each Slice1 in Products_Placement.TestedVarieties
  947.  
  948. If Slice1.Varieties.Response.Value.AnswerCount()>0 Then
  949. For Each InnerCat In Slice1.Varieties.Response.Value
  950. if SliceIndex > 1 then
  951. exit for
  952. end if
  953. Set Slice = Products_Grid[SliceIndex]
  954. CurrentProduct.Response.Value = cCategorical(Slice1.QuestionName)
  955. Slice.Product.Response.Value = cCategorical(Slice1.QuestionName)
  956. For Each Cat1 in Concepts.Categories
  957. If cCategorical(Cat1.Properties.Item["Filter_Products_List"])=*CurrentProduct.Response.Value Then
  958. CurrentConcept.Response.Value = cCategorical(Cat1)
  959. Exit For
  960. End If
  961. Next
  962. Slice.Variety = InnerCat
  963. Slice.Product_Variety = Slice1.Label + iif(Slice1.Varieties.Categories[InnerCat.Format("a")].Label = "", "", " - " + Replace(Replace(Slice1.Varieties.Categories[InnerCat.Format("a")].Label, "{Ins1}", ""), "{Ins2}", ""))
  964.  
  965. if A3*{_1} then
  966. Slice.Products.Response.Value = {_901}
  967. else
  968. Slice.Products.Response.Value = {_902}
  969. end if
  970. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  971. Slice.Concept.Response.Value = CurrentConcept.Response.Value
  972. CurrentVariety.Response.Value = InnerCat
  973. Slice.Variety.Response.Value = InnerCat
  974. Slice.Inserts.TestedProductText = Replace(Replace(Slice1.Varieties.Categories[InnerCat.Format("a")].Label, "{Ins1}", ""), "{Ins2}", "")
  975. Slice.Inserts.ProductBrand.Response.Value = CCategorical(Trim(Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Properties.Item["Brand"]))
  976. Slice.Inserts.ParentBrand.Response.Value = cCategorical(Trim(Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Properties.Item["ParentBrand"]))
  977. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  978. Slice.Shelf_Segment = Concepts.Categories.item[cCategorical(CurrentConcept.Response.Value)].Properties.Item["Shelf_Product_Type"] 'It is Mandatory to set this value and to keep it actual
  979. 'Slice.Shelf_Segment_Typical_Use = Slice.Shelf_Segment.Categories.Item[cCategorical(Slice.Shelf_Segment.Response.Value)].Properties.Item["Typical_Use"] 'It is Mandatory to set this value and to keep it actual
  980. 'Slice.Shelf_Segment_Brands = Slice.Shelf_Segment.Categories.Item[cCategorical(Slice.Shelf_Segment.Response.Value)].Properties.Item["Brands"] 'It is Mandatory to set this value and to keep it actual
  981. Interest_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(Concepts.Categories.item[cCategorical(CurrentConcept.Response.Value)].Properties.Item["Product_Types_Of_Interest"])
  982. Competetive_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()*cCategorical(Concepts.Categories.item[cCategorical(CurrentConcept.Response.Value)].Properties.Item["Competetive_Product_Types"])
  983. Filler_List = IOM.MDM.Types.Item["ProductTypes_List"].DefinedCategories()-Competetive_List-Interest_List-Slice.Shelf_Segment
  984. If TargetsDefinition.Response.Value = {STD} Then
  985. If S40.Response.Value*Slice.Shelf_Segment.Response.Value Then
  986. Slice.Targets.Response.Value = {TGCBCL}
  987. Else
  988. Slice.Targets.Response.Value = {TGNCBCL}
  989. End If
  990. End If
  991.  
  992. If AnswerCount(Competetive_List) = 0 Then
  993. TGCBCO = TGCBCL
  994. TGNCBCO = TGNCBCL
  995. Else
  996. If S40.Response.Value*Competetive_List Then
  997. Slice.Targets.Response.Value = Slice.Targets.Response.Value + {TGCBCO}
  998. Else
  999. Slice.Targets.Response.Value = Slice.Targets.Response.Value + {TGNCBCO}
  1000. End If
  1001. End If
  1002.  
  1003. TableChart = "<table cellpadding=""7"" style=""border:1px solid blue""><tr><td align=""left"">"
  1004. If cCategorical(Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Properties.Item["Filter_Varieties_List"]).AnswerCount() = 1 Then
  1005. TableChart = TableChart + Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Label + Inserts.Table_Header_Single_Variety.Label
  1006. Slice.Inserts.Product_s.Response.Value = {_1}
  1007. Else
  1008. Slice.Inserts.Product_s.Response.Value = {_2}
  1009. TableChart = TableChart + "Pure Blonde Cider will be available in following variant and size"
  1010. 'TableChart = TableChart + Inserts.Table_Header_Multi_Variety.Label + Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Label
  1011. End If
  1012. TableChart = TableChart + "</td></tr><tr><td align=""center""><table cellspacing=""2"" Style=""border:0px solid white; align:left""><thead><tr><td Style=""border:1px solid white""/><td align=""center"" Style=""border:1px solid black; " + S_B.TableHeaderStyle + """><b>" + Inserts.Size_Label.Label + "</b></td><td align=""center"" Style=""border:1px solid black; " + S_B.TableHeaderStyle + """><b>" + Inserts.Price_Label.Label + "</b></td></tr></thead><tbody>"
  1013. Flag = False
  1014. For Each Cat1 in cCategorical(Products_Placement.TestedVarieties.Categories.Item[Slice1.QuestionName].Properties.Item["Filter_Varieties_List"])
  1015. If Sign_Position_Front Then
  1016. Str1 = Currency_Sign + " " + cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2")
  1017. Else
  1018. Str1 = cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2") + " " + Currency_Sign
  1019. End If
  1020. TableChart = TableChart + "<tr><td Style=""border:1px solid black; " + Iif(Flag, S_B.AltTableHeaderStyle, S_B.TableHeaderStyle) + """>" + RegExProc(Trim(Slice1.Varieties.Categories.Item[Cat1.Format("a")].Label), "Replace", "{[a-zA-Z1-9_]+}", "") + "</td><td align=""right"" Style=""border:1px solid black; " + IIf(Flag, S_B.AltTableRowStyle, S_B.TableRowStyle) + """>" + IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label + "</td><td align=""right"" Style=""border:1px solid black; " + Iif(Flag, S_B.AltTableRowStyle, S_B.TableRowStyle) + """>" + Str1 + "</td></tr>"
  1021. Flag = Not Flag
  1022. Next
  1023. TableChart = TableChart + "</tbody></table></td></tr></table>"
  1024.  
  1025. Slice.Inserts.Table.Response.Value = TableChart
  1026.  
  1027.  
  1028. Slice.intro01.Ask()
  1029. Slice.intro02.Ask()
  1030. Slice.Intro.Show()
  1031.  
  1032. Slice.P30P35.Ask()
  1033. '--- Products_Grid.P30
  1034. '--- /Products_Grid.P30
  1035.  
  1036. '--- Products_Grid.P35
  1037. '--- /Products_Grid.P35
  1038.  
  1039. '--- Products_Grid.P40
  1040. Slice.P40.Ask()
  1041. '--- /Products_Grid.P40
  1042.  
  1043. '--- Products_Grid.P45
  1044. Slice.P45.Ask()
  1045. '--- /Products_Grid.P45
  1046.  
  1047. If Slice.P45 * {_1,_2} then
  1048. Slice.PEXPECTATIONS.Ask()
  1049. End If
  1050.  
  1051. '--- Products_Grid.P50
  1052. '--- /Products_Grid.P50
  1053.  
  1054. '--- Products_Grid.P55
  1055. '--- /Products_Grid.P55
  1056.  
  1057. '--- Products_Grid.P60_P65
  1058. Slice.P60_P65.Ask()
  1059. '--- /Products_Grid.P60_P65
  1060.  
  1061. '--- Products_Grid.P66
  1062. Slice.P66.Ask()
  1063. '--- /Products_Grid.P66
  1064.  
  1065. Slice.P70.Ask()
  1066.  
  1067. '--- Products_Grid.P75
  1068. Slice.P75.Ask()
  1069. '--- /Products_Grid.P75
  1070.  
  1071. ' Slice.P80.Categories.Item[{_997}].OtherQuestion = S40.Categories.Item[{_997}].OtherQuestion
  1072. Slice.P80.Categories.Filter = S40.Response.Value
  1073. Slice.P80.Ask()
  1074.  
  1075. if Slice.P80*{_996} then
  1076. Slice.Inserts.P80_Other.Response.Value = S40.Response.Other["_996"].Value
  1077. elseif Slice.P80*{_997} then
  1078. Slice.Inserts.P80_Other.Response.Value = Slice.P80.Response.Other["_997"].Value
  1079. else
  1080. Slice.Inserts.P80_Other.Response.Value = Slice.P80.Format("b")
  1081. end if
  1082.  
  1083.  
  1084. if not(Slice.P80*Concepts_Grid[1].C60) and not(Slice.P80*{_998})then
  1085. '--- Products_Grid.P110
  1086. Slice.P110.Ask()
  1087. '--- /Products_Grid.P110
  1088.  
  1089. '--- Products_Grid.P115
  1090. ' Slice.P115.Categories.Filter = Slice.P80 'cCategorical(Trim(Slice.C60.Categories.Item[Slice.C60.Response.Value.Format("a")].Properties.Item["Filter_Products_List"]))' - TestProductsList
  1091. ' if Slice.P80*{_1} then Slice.P115[ccategorical(Slice.P80)].SC.Categories = {_1,_2,_3,_4,_5,_6,_7,_8}
  1092. ' if Slice.P80*{_2} then Slice.P115[ccategorical(Slice.P80)].SC.Categories = {_1,_3,_4,_5,_6,_7,_8}
  1093. ' if Slice.P80*{_6,_7,_8} then Slice.P115[ccategorical(Slice.P80)].SC.Categories = {_9,_10,_11,_12,_13,_14}
  1094. ' if Slice.P80*{_1,_2,_6,_7,_8} then
  1095. ' Slice.P115.Ask()
  1096. ' end if
  1097. '--- /Products_Grid.P115
  1098.  
  1099. Slice.P120.Categories.Filter = Slice.P80
  1100. Slice.P120[Slice.P80].SC.Categories = Slice.P120[Slice.P80].SC.Categories - {_998}
  1101. Slice.P120[Slice.P80].Item[0].Categories.Item[0].Label.Inserts.Item["Ins1"] = ""
  1102. Slice.P120.Ask()
  1103.  
  1104. If Slice.P80*{_996,_997} then
  1105. Slice.P82.Ask()
  1106. Slice.Inserts.P81P82.Response.Value = Slice.P82.Response
  1107. else
  1108. syyList = ccategorical(GetCatList(Slice.P81.Categories, Slice.P81.DefinedCategories()))
  1109. syyListFilter = {}
  1110. for each syyCat in syyList
  1111. if ccategorical(Slice.P81.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.P80 then
  1112. syyListFilter = syyListFilter + ccategorical(syyCat)
  1113. end if
  1114. next
  1115.  
  1116. syyListFilter = syyListFilter + ccategorical(S85*{_997})
  1117.  
  1118. Slice.P81.Categories = S85*syyListFilter
  1119. if answercount(S85*syyListFilter)=1 then
  1120. Slice.P81 = S85*syyListFilter
  1121. Slice.Inserts.P81P82.Response.Value = Slice.P81.format("b")
  1122. if Slice.P81*{_291,_292,_293,_294,_295,_296,_297,_298,_299,_997} then
  1123. Slice.Inserts.P81P82.Response.Value = S85.Response.Other[Slice.P81.Format("a")].Value
  1124. end if
  1125. elseif answercount(S85*syyListFilter) > 1 then
  1126. Slice.P81.Ask()
  1127. Slice.Inserts.P81P82.Response.Value = Slice.P81.format("b")
  1128. if Slice.P81*{_291,_292,_293,_294,_295,_296,_297,_298,_299,_997} then
  1129. Slice.Inserts.P81P82.Response.Value = S85.Response.Other[Slice.P81.Format("a")].Value
  1130. end if
  1131. end if
  1132. End if
  1133. End If
  1134.  
  1135.  
  1136. if Slice.P80=Concepts_Grid[1].C60 then
  1137. if Concepts_Grid[1].C66 <> null then
  1138. Slice.P82 = Concepts_Grid[1].C66
  1139. Slice.Inserts.P81P82.Response.Value = Slice.P82.Response
  1140. else
  1141. Slice.P81 = Concepts_Grid[1].C65
  1142. Slice.Inserts.P81P82.Response.Value = Slice.P81.format("b")
  1143. if Slice.P81*{_291,_292,_293,_294,_295,_296,_297,_298,_299,_997} then
  1144. Slice.Inserts.P81P82.Response.Value = S85.Response.Other[Slice.P81.Format("a")].Value
  1145. end if
  1146. end if
  1147. end if
  1148.  
  1149.  
  1150. dim syyListP83, syyListFilterP83
  1151. syyListP83 = ccategorical(GetCatList(Slice.P83.Categories, Slice.P83.DefinedCategories()))
  1152. syyListFilterP83 = {}
  1153. for each syyCat in syyListP83
  1154. if ccategorical(Slice.P83.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.P80 then
  1155. syyListFilterP83 = syyListFilterP83 + ccategorical(syyCat)
  1156. end if
  1157. next
  1158. syyListFilterP83 = syyListFilterP83* S85
  1159. syyListFilterP83 = syyListFilterP83 + ccategorical(S85*{_997})
  1160. Slice.P83.Categories = syyListFilterP83
  1161. Slice.P83.Ask()
  1162.  
  1163. If Not(Slice.P80.Response.Value =* {_997,_998,_999}) Then
  1164. dim syyListP85, syyListFilterP85
  1165. syyListP85 = ccategorical(GetCatList(Slice.P85.Categories, Slice.P85.DefinedCategories()))
  1166. syyListFilterP85 = {}
  1167. for each syyCat in syyListP85
  1168. if ccategorical(Slice.P85.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.P80 then
  1169. syyListFilterP85 = syyListFilterP85 + ccategorical(syyCat)
  1170. end if
  1171. next
  1172.  
  1173. syyListFilterP85 = syyListFilterP85 * S85
  1174. syyListFilterP85 = syyListFilterP85 + ccategorical(S85*{_997})
  1175. syyListFilterP85 = syyListFilterP85 + {_901}
  1176. Slice.P85.Categories.Filter = syyListFilterP85
  1177. If answercount(syyListFilterP85) = 1 Then
  1178. Slice.P85.Item[0].Item[0].Response.Value = {_10}
  1179. ElseIf answercount(syyListFilterP85) > 1 Then
  1180. If Not(IOM.Info.IsAutoAnswer) Then Slice.P85.Validation.Function = "Cat_Sum_Validation"
  1181. Slice.P85.Ask()
  1182. End If
  1183. End If
  1184.  
  1185.  
  1186. '--- Products_Grid.P88
  1187. '--- /Products_Grid.P88
  1188.  
  1189. '--- Products_Grid.P90
  1190. '--- /Products_Grid.P90
  1191. If Not(Slice.P80.Response.Value =* {_998,_999}) Then
  1192. '--- Products_Grid.P95
  1193. Slice.P95.Ask()
  1194. '--- /Products_Grid.P95
  1195. End If
  1196.  
  1197.  
  1198. '--- Products_Grid.P160
  1199. '--- /Products_Grid.P160
  1200.  
  1201. If Slice.P66 * {_3,_4,_5} then
  1202. '--- Products_Grid.P165
  1203. 'Slice.P165.Ask()
  1204. '--- /Products_Grid.P165
  1205. End If
  1206.  
  1207.  
  1208. '--- Concepts_Grid.P106
  1209. ' ========================================= CHIP GAME ===============================================
  1210.  
  1211.  
  1212. if Slice.P82 <> null then
  1213. Slice.P106PROD.A.Response.Value = {p82}
  1214. else
  1215. Slice.P106PROD.A.Response.Value = Slice.P81
  1216. end if
  1217.  
  1218. syyList = ccategorical(GetCatList(Slice.P81.Categories, Slice.P81.DefinedCategories()))
  1219. syyListFilter = {}
  1220. for each syyCat in syyList
  1221. if ccategorical(Slice.P81.Categories[ccategorical(syyCat)].Properties.Item["Brand"])*Slice.P80 then
  1222. syyListFilter = syyListFilter + ccategorical(syyCat)
  1223. end if
  1224. next
  1225.  
  1226. syyListFilter = syyListFilter*S85
  1227. syyListFilter = syyListFilter + ccategorical(S85*{_997})
  1228.  
  1229. List = cCategorical(syyListFilter - ({_998,_999} + Slice.P106PROD.A.Response.Value + CurrentProduct)).Ran(1) ' S85.Response.Value - ...
  1230. List1 = cCategorical(syyListFilter - ({_998,_999} + Slice.P106PROD.A.Response.Value + List + CurrentProduct)).Ran(1)' S85.Response.Value - ...
  1231. Slice.P106PROD.B.Response.Value = List
  1232. Slice.P106PROD.C.Response.Value = List1
  1233. Slice.P106PROD.T.Response.Value = {_990}
  1234. FlagA = Slice.P106PROD.A.Response.Value.AnswerCount() = 1
  1235. FlagB = Slice.P106PROD.B.Response.Value.AnswerCount() = 1
  1236. FlagC = Slice.P106PROD.C.Response.Value.AnswerCount() = 1
  1237. FlagT = Slice.P106PROD.T.Response.Value.AnswerCount() = 1
  1238. If FlagB Or FlagC Then
  1239. Slice.Inserts.P106_Wording = {_2}
  1240. Else
  1241. Slice.Inserts.P106_Wording = {_1}
  1242. End If
  1243.  
  1244. If FlagA or FlagB or FlagC then Slice.CHIPS_INTRO.Show()
  1245. If FlagT Then
  1246. n=0
  1247. Str1 = ""
  1248. For Each Q1 in Slice.P106_Dummy
  1249. If Eval(Q1.Properties.Item["Condition"]) Then
  1250. k = len(Q1.Categories.Item[0].Label)
  1251. If k > n Then n = k
  1252. k = len(Q1.Categories.Item[1].Label)
  1253. If k > n Then n = k
  1254. Str1 = Str1 + "," + Q1.QuestionName
  1255. End If
  1256. Next
  1257. Slice.P106_Dummy.QuestionFilter = Mid(Str1,1)
  1258. IOM.DefaultStyles.Grids[GridStyleTypes.gsRowHeader].Cell.Width = cText(0.7*(n+1)) + "em"
  1259. If Not(IOM.Info.IsAutoAnswer) Then Slice.P106_Dummy.Validation.Function = "Validate_Chips"
  1260. Slice.P106_Dummy.Ask()
  1261. IOM.DefaultStyles.Grids[GridStyleTypes.gsRowHeader].Cell.Width = ""
  1262. For Each Q1 in Slice.P106_Dummy
  1263. For Each Slice1 in Q1
  1264. Slice.P106[Q1.Categories[Slice1.QuestionName].Properties["ValueSliceName"]].Item[0].Response.Value = Slice1.Item[0].Response.Value
  1265. Next
  1266. Next
  1267. End If
  1268. '--- /Concepts_Grid.P106
  1269.  
  1270. '--- Products_Grid.P100
  1271. Slice.P100[{_2}].SC = Slice.P106_Dummy["_4"].Item[{_1}].SC 'PRoduct from P81/P82
  1272. Slice.P100[{_1}].SC = Slice.P106_Dummy["_4"].Item[{_2}].SC 'TEst product
  1273. if IOM.Info.IsTest or IOM.Info.IsDebug then Slice.P100.Show()
  1274. '--- /Products_Grid.P100
  1275.  
  1276.  
  1277.  
  1278. '--- Products_Grid.P125
  1279. 'Slice.PC64.Ask()
  1280. Slice.P125.Ask()
  1281. '--- /Products_Grid.P125
  1282.  
  1283. If not (Slice.P125*{_8}) then
  1284. Slice.P165.Ask()
  1285.  
  1286. if Slice.P66*{_3,_4,_5} then
  1287. Slice.POccasions.Ask()
  1288. Slice.PMEALS_CUISINES.Ask()
  1289. Slice.POFFPREMSUBSTITUTION.Ask()
  1290. end if
  1291.  
  1292. end if
  1293. '--- Products_Grid.P170
  1294. '--- /Products_Grid.P170
  1295.  
  1296. '--- Products_Grid.P180
  1297. Slice.P180.Ask()
  1298. '--- /Products_Grid.P180
  1299.  
  1300.  
  1301. Slice.part10_intro.Show()
  1302. Slice.P210.Ask()
  1303. Slice.P220P225block.Ask()
  1304. Slice.P230P235block.Ask()
  1305. Slice.P240P245block.Ask()
  1306. Slice.P255.Ask()
  1307. Slice.P265.Ask()
  1308. Slice.P266.Ask()
  1309. Slice.P267.Ask()
  1310. Slice.P290.Ask()
  1311. Slice.P291.Ask()
  1312. Slice.PTANGY.Ask()
  1313. Slice.P300P310block.Ask()
  1314. Slice.P400.Ask()
  1315.  
  1316. Slice.PNAME.Label.Inserts.Item["Ins1"] = "<img src='" + Path + "images/bottle_Carvers.png' />"
  1317. Slice.PNAME.Label.Inserts.Item["Ins2"] = "<img src='" + Path + "images/bottle_GreedyPelican.png' />"
  1318. Slice.PNAME.Ask()
  1319. Slice.PNAME_WHY.Ask()
  1320.  
  1321. Slice.PSIXPACK.Ask()
  1322. Slice.PONPREM.Ask()
  1323.  
  1324. '--- Products_Grid.PD
  1325. '--- /Products_Grid.PD
  1326. SliceIndex = SliceIndex + 1
  1327. Next
  1328. End If
  1329. Next
  1330. '--- /Products_Placement,MailingInfo,Products_Grid
  1331. End Section
  1332.  
  1333.  
  1334.  
  1335. Section Ad_Hoc_Questions
  1336. End Section
  1337.  
  1338. ' ALTERNATIVEINTRO.Show()
  1339. ' ALTERNATIVEINTRO2.Show()
  1340. ' PALTERNATIVE.Categories = PALTERNATIVE.Categories - {_999}
  1341. ' alternativePage.Ask()
  1342. ' P60_P65.Ask()
  1343. ' P66.Ask()
  1344. ' P70.Ask()
  1345. ' P45.Ask()
  1346. '
  1347. ' PBRAND_FIT.Ask()
  1348.  
  1349.  
  1350. Finale.Show()
  1351.  
  1352. Section Complete_Section
  1353. Complete:
  1354. COMP.Response = {Complete}
  1355. Exit
  1356. End Section
  1357.  
  1358. Section OverQuota_Section
  1359. Overquota:
  1360. TNUM.Response = {TNUM21}
  1361. COMP.Response = {OverQuota}
  1362. 'SIGNAL OVERQUOTA
  1363. IOM.Terminate(Signals.sigOverQuota)
  1364. Exit
  1365. End Section
  1366.  
  1367. Section Termination
  1368. Term:
  1369. If IOM.Info.IsDebug Or IOM.Info.IsTest Then TNUM.show()
  1370. COMP.Response = {Terminate}
  1371. 'SIGNAL TERMINATE
  1372. IOM.Terminate(Signals.sigStopped)
  1373. Exit
  1374. End Section
  1375.  
  1376. Function Products_Placement_Validation (Question, IOM, Attempt)
  1377. Dim ProdNumb, Slice
  1378. ProdNumb = 0
  1379. Products_Placement_Validation = True
  1380. If Not(Question.PPAgreement = {_0}) Then
  1381. If Question.ProductsLetSend.Response.Value.AnswerCount() = 0 Then
  1382. Question.ProductsLetSend.Errors.AddNew("Err1", "Please select a correct answer.")
  1383. Products_Placement_Validation = False
  1384. End If
  1385. For Each Slice in Question.TestedVarieties
  1386. If Slice.Varieties.Response.Value.AnswerCount()>IOM.Questions.Item["ProjectDefines"].MaxVarietiesPerProductToTest.Response.Value Then
  1387. Slice.Varieties.Errors.AddNew("MaxVErr1", "The maximum number of tested varieties per product is " + cText(IOM.Questions.Item["ProjectDefines"].MaxVarietiesPerProductToTest.Response) + ".")
  1388. Products_Placement_Validation = False
  1389. End If
  1390. ProdNumb = ProdNumb + Slice.Varieties.Response.Value.AnswerCount()
  1391. Next
  1392. If ProdNumb<IOM.Questions.Item["ProjectDefines"].MinNumbOfProductsToTest Then
  1393. Question.TestedVarieties.Item[0].Varieties.Errors.AddNew("MinPErr1", "The minimum number of tested products is " + cText(IOM.Questions.Item["ProjectDefines"].MinNumbOfProductsToTest.Response) + ".")
  1394. Products_Placement_Validation = False
  1395. ElseIf ProdNumb>IOM.Questions.Item["ProjectDefines"].MaxNumbOfProductsToTest Then
  1396. Question.TestedVarieties.Item[0].Varieties.Errors.AddNew("MaxPErr1", "The maximum number of tested products is " + cText(IOM.Questions.Item["ProjectDefines"].MaxNumbOfProductsToTest.Response) + ".")
  1397. Products_Placement_Validation = False
  1398. End If
  1399. End If
  1400. End Function
  1401.  
  1402. Function C32_C34_Double_Validation(Question, IOM, Attempt)
  1403. Select Case Question.QuestionName
  1404. Case "C32_Double"
  1405. If (Question.Response.Value>Question.ParentQuestion.C31_Double.Response.Value) Then
  1406. C32_C34_Double_Validation = True
  1407. Else
  1408. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Greater.Label, "_value_", cText(Question.ParentQuestion.C31_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1409. C32_C34_Double_Validation = False
  1410. End If
  1411. Case "C33_Double"
  1412. If (Question.Response.Value<Question.ParentQuestion.C31_Double.Response.Value) Then
  1413. C32_C34_Double_Validation = True
  1414. Else
  1415. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Smaller.Label, "_value_", cText(Question.ParentQuestion.C31_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1416. C32_C34_Double_Validation = False
  1417. End If
  1418. Case "C34_Double"
  1419. If (Question.Response.Value>Question.ParentQuestion.C32_Double.Response.Value) Then
  1420. C32_C34_Double_Validation = True
  1421. Else
  1422. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Greater.Label, "_value_", cText(Question.ParentQuestion.C32_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1423. C32_C34_Double_Validation = False
  1424. End If
  1425. End Select
  1426. End Function
  1427.  
  1428. Function C32_C34_Validation(Question, IOM, Attempt)
  1429. dim c31Value
  1430. Question.ParentQuestion.Item[Question.QuestionName + "_Double"].Response.Value = cDouble(Question.Response.Other.Item["WholePart"].Value) + (cDouble(Question.Response.Other.Item["FractialPart"].Value)/cdouble(Trim(IOM.MDM.Types.Item["FractialCurrency"].Elements.Item[IOM.Questions.Country.Response.Value.Format("a")].Properties.Item["CMultiplier"])))
  1431. Select Case Question.QuestionName
  1432. Case "C31"
  1433. c31Value = cdouble(Question.ParentQuestion.C31.Response.Other.Item["WholePart"].Value) + cDouble(Question.ParentQuestion.C31.Response.Other.Item["FractialPart"].Value)/100
  1434. if c31Value < cdouble(1.00) then
  1435. Question.Errors.AddNew("Err1",IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Greater2.Label)
  1436. C32_C34_Validation = False
  1437. elseif c31Value > cdouble(99.00) then
  1438. Question.Errors.AddNew("Err1",IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Smaller2.Label)
  1439. C32_C34_Validation = False
  1440. else
  1441. C32_C34_Validation = True
  1442. end if
  1443. Case "C32"
  1444. If (Question.ParentQuestion.C32_Double.Response.Value>Question.ParentQuestion.C31_Double.Response.Value) Then
  1445. C32_C34_Validation = True
  1446. Else
  1447. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Greater.Label, "_value_", cText(Question.ParentQuestion.C31_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1448. C32_C34_Validation = False
  1449. End If
  1450. Case "C33"
  1451. If (Question.ParentQuestion.C33_Double.Response.Value<Question.ParentQuestion.C31_Double.Response.Value) Then
  1452. C32_C34_Validation = True
  1453. Else
  1454. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Smaller.Label, "_value_", cText(Question.ParentQuestion.C31_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1455. C32_C34_Validation = False
  1456. End If
  1457. Case "C34"
  1458. If (Question.ParentQuestion.C34_Double.Response.Value>Question.ParentQuestion.C32_Double.Response.Value) Then
  1459. C32_C34_Validation = True
  1460. Else
  1461. Question.Errors.AddNew("Err1", Replace(IOM.Questions.Inserts.ERR_MSG_Value_Must_Be_Greater.Label, "_value_", cText(Question.ParentQuestion.C32_Double.Response.Value)) + " " + IOM.Questions.Inserts.ERR_MSG_Enter_a_Correct_Value.Label)
  1462. C32_C34_Validation = False
  1463. End If
  1464. End Select
  1465. End Function
  1466.  
  1467. Function GetExclusiveCatList(CategoryList)
  1468. Dim Cat, ExclusiveList
  1469. ExclusiveList = {}
  1470. For Each Cat In CategoryList
  1471. If Cat.CategoryType = 0 Then
  1472. if Cat.Attributes.IsSet(CategoryAttributes.caExclusive) Then ExclusiveList = ExclusiveList + Cat
  1473. ElseIf Cat.CategoryType = 1 Then
  1474. ExclusiveList = ExclusiveList + GetExclusiveCatList(Cat)
  1475. End If
  1476. Next
  1477. GetExclusiveCatList = ExclusiveList
  1478. End Function
  1479.  
  1480. Sub OnBeforeQuestionAsk(Question, IOM)
  1481. Dim i, Flag, Str1, Str2, ExclusiveList, Cat, foundBanner, itemBanner, Q
  1482. ExclusiveList = {}
  1483. select Case Question.QuestionType
  1484. Case ObjectTypesConstants.mtArray,ObjectTypesConstants.mtGrid
  1485. If Question[0].Count = 1 Then
  1486. if Question[0].Item[0].QuestionType = 0 Then
  1487. If Question[0].Item[0].QuestionDataType = 3 Then
  1488. If Question[0].Item[0].Validation.MaxValue > 1 Then
  1489. ExclusiveList = GetExclusiveCatList(Question[0].Item[0].Categories)
  1490. End If
  1491. End If
  1492. End If
  1493. End If
  1494. Case ObjectTypesConstants.mtVariable
  1495. If Question.QuestionDataType = 3 Then
  1496. If Question.Validation.MaxValue > 1 Then
  1497. ExclusiveList = GetExclusiveCatList(Question.Categories)
  1498. End If
  1499. End If
  1500. End Select
  1501. If ExclusiveList.AnswerCount() > 0 Then
  1502. foundBanner = false
  1503. for each itemBanner in Question.Banners
  1504. if lcase(itemBanner.name) = "ExclusiveCatList" then
  1505. itemBanner.text = ""
  1506. foundBanner=true
  1507. exit for
  1508. end if
  1509. Next
  1510. if not foundBanner then Question.Banners.AddNew("ExclusiveCatList", "")
  1511. Question.Banners["ExclusiveCatList"] = "<mrRef RefType='script' RefPosition='head' id='ExclusiveCatList' class='ExclusiveCatList' type='application/json' language='Javascript'>{""ExclusiveCatList"":""" + ExclusiveList.Format("a").Replace(",","|") + """}</mrRef>"
  1512. End If
  1513.  
  1514. if Question.QuestionType = 4 or Question.QuestionType = 3 Then
  1515. For Each Q in Question
  1516. If Q.Properties.Item["SendPropertiesToBrowser"] is not null Then
  1517. SendCustomPropertiestoBrowser(Q, Q.Properties.Item["SendPropertiesToBrowser"])
  1518. ElseIf Question.Properties.Item["SendPropertiesToBrowser"] is not null Then
  1519. SendCustomPropertiestoBrowser(Q, Question.Properties.Item["SendPropertiesToBrowser"])
  1520. End If
  1521. Next
  1522. Else
  1523. If Question.Properties.Item["SendPropertiesToBrowser"] is not null Then SendCustomPropertiestoBrowser(Question, Question.Properties.Item["SendPropertiesToBrowser"])
  1524. End If
  1525. If isNullObject(Question.ParentQuestion) Then
  1526. Flag = False
  1527. Else
  1528. Flag = ((Question.QuestionDataType = 0) and (Question.ParentQuestion.QuestionDataType = 0) and (Question.ParentQuestion.QuestionType = 1))
  1529. End If
  1530. If Flag Then
  1531. Str1 = Question.ParentQuestion.Categories.Item[Question.QuestionName].Properties.Item["ID"]
  1532. Else
  1533. Str1 = Question.Properties.Item["ID"]
  1534. End If
  1535. if IOM.Questions.Item["STARGET"].Response.Value is not null Then
  1536. Str2 = IOM.Questions.Item["STARGET"].Categories.Item[IOM.Questions.Item["STARGET"].Response.Value].Label
  1537. If IOM.Info.IsTest or IOM.Info.IsDebug Then Str1 = Str1 + "<br/><font size=""1"">Respondent is in target: " + Str2 + "</font>"
  1538. End If
  1539. IOM.Banners.Item["QuestionNameBanner"] = Replace(IOM.Questions.Item["S_B"].QuestionBanner, "{#QuestionID}", Str1)
  1540. If Not(lCase(Question.Properties.Item["Aply_Filter_Expressions"]) = "no")Then
  1541. If Not (IOM.Questions.Item["MissFilterExpression"].Response.Value) Then SetFilterExpression(Question, IOM)
  1542. End If
  1543. If Flag Then
  1544. SetDefaultStyles(Question, Trim(Question.ParentQuestion.Categories.Item[Question.QuestionName].Properties.Item["QuestionFormating"]), IOM, True)
  1545. Else
  1546. SetDefaultStyles(Question, Trim(Question.Properties.Item["QuestionFormating"]), IOM, True)
  1547. End If
  1548. If Not((LCase(IOM.RoutingContext) = "papi") or (lCase(IOM.RoutingContext) = "cati")) Then
  1549. If Flag Then
  1550. Remove_999(Question.ParentQuestion, IOM)
  1551. Else
  1552. Remove_999(Question, IOM)
  1553. End If
  1554. End If
  1555. End Sub
  1556.  
  1557. Sub Remove_999 (Question, IOM)
  1558. Dim Element, Slice
  1559. If Question.QuestionType = ObjectTypesConstants.mtVariable Then
  1560. If Question.QuestionDataType = DataTypeConstants.mtCategorical Then Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())-{_999}
  1561. ElseIf Question.QuestionType = ObjectTypesConstants.mtArray Or Question.QuestionType = ObjectTypesConstants.mtGrid Then
  1562. For Each Slice in Question
  1563. For Each Element In Slice
  1564. Remove_999 (Element, IOM)
  1565. Next
  1566. Next
  1567. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())-{_999}
  1568. ElseIf Question.QuestionType = 4 Or Question.QuestionType = ObjectTypesConstants.mtClass Or Question.QuestionType = ObjectTypesConstants.mtCompound Or Question.QuestionType = ObjectTypesConstants.mtPage Then
  1569. For Each Element In Question
  1570. Remove_999 (Element, IOM)
  1571. Next
  1572. End If
  1573. End Sub
  1574.  
  1575. Function GetCatList(CatList, FullList)
  1576. Dim List, Element
  1577. List = CatList * FullList
  1578. For Each Element in CatList - List
  1579. List = List + GetCatList(CatList.Item[Element.Format("a")], FullList)
  1580. Next
  1581. GetCatList = List
  1582. End Function
  1583.  
  1584. Sub SetFilterExpression(Question, IOM)
  1585. Dim Q, Slice, Element, Resp
  1586. Select Case Question.QuestionType
  1587. Case QuestionTypes.qtLoopCategorical, QuestionTypes.qtLoopNumeric
  1588. If Question.QuestionType = QuestionTypes.qtLoopCategorical Then
  1589. If Question.Categories.Count>0 Then
  1590. For Each Element in IOM.MDM.Fields.Item[Question.QuestionFullName].Elements
  1591. If Element.ObjectTypeValue = 5 Then
  1592. If Element.Count > 0 Then
  1593. If Element.Item[0].ObjectTypeValue = 5 Then
  1594. If Element.Item[0].Count > 0 Then
  1595. If Element.Item[0].Item[0].Properties.Item["FilterExpression"]<>"" And Not(lCase(Element.Item[0].Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no")Then
  1596. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Item[0].Item[0].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1597. End If
  1598. End If
  1599. End If
  1600. If Element.Item[0].Properties.Item["FilterExpression"]<>"" And Not(lCase(Element.Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no")Then
  1601. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Item[0].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1602. End If
  1603. End If
  1604. If Element.Properties.Item["FilterExpression"]<>"" And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1605. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1606. End If
  1607. End If
  1608. Next
  1609. End If
  1610. If IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["FilterExpression"]<>"" And Not(lCase(IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1611. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1612. End If
  1613. End If
  1614. If Not ((Question.Properties.Item["GridFilterVariable"]="") or (lCase(IOM.RoutingContext) = "papi") or (lCase(IOM.RoutingContext) = "cati")) Then
  1615. Resp = IOM.Questions.Item[Question.Properties.Item["GridFilterVariable"]].Response.Value
  1616. For Each Slice in Question
  1617. IOM.Questions.Item[Question.Properties.Item["GridFilterVariable"]].Response.Value = cCategorical(Slice.QuestionName)
  1618. For Each Q in Slice
  1619. SetFilterExpression(Q, IOM)
  1620. Next
  1621. Next
  1622. IOM.Questions.Item[Question.Properties.Item["GridFilterVariable"]].Response.Value = Resp
  1623. End If
  1624. Case QuestionTypes.qtBlock, QuestionTypes.qtPage
  1625. For Each Q in Question
  1626. SetFilterExpression(Q, IOM)
  1627. Next
  1628. Case QuestionTypes.qtCompound, QuestionTypes.qtSimple
  1629. If Question.QuestionType = (QuestionTypes.qtCompound) Or ((Question.QuestionType = QuestionTypes.qtSimple) And (Question.QuestionDataType = DataTypeConstants.mtCategorical)) Then
  1630. If Question.Categories.Count>0 Then
  1631. For Each Element in IOM.MDM.Fields.Item[Question.QuestionFullName].Elements
  1632. If Element.ObjectTypeValue = 5 Then
  1633. If Element.Count > 0 Then
  1634. If Element.Item[0].ObjectTypeValue = 5 Then
  1635. If Element.Item[0].Count > 0 Then
  1636. If (Element.Item[0].Item[0].Properties.Item["FilterExpression"]<>"") And Not(lCase(Element.Item[0].Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1637. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Item[0].Item[0].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1638. End If
  1639. End If
  1640. End If
  1641. If (Element.Item[0].Properties.Item["FilterExpression"]<>"") And Not(lCase(Element.Item[0].Properties.Item["Aply_Filter_Expressions"]) = "no") And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1642. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Item[0].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1643. End If
  1644. End If
  1645. If (Element.Properties.Item["FilterExpression"]<>"") And Not(lCase(Element.Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1646. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(Element.Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1647. End If
  1648. End If
  1649. Next
  1650. End If
  1651. If IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["FilterExpression"]<>"" And Not(lCase(IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["Aply_Filter_Expressions"]) = "no") Then
  1652. Question.Categories = GetCatList(Question.Categories, Question.DefinedCategories())*(cCategorical(Eval(IOM.MDM.Fields.Item[Question.QuestionFullName].Properties.Item["FilterExpression"]))+cCategorical(Question.Properties.Item["doNotAutoFilter"]))
  1653. End If
  1654. End If
  1655. End Select
  1656. End Sub
  1657.  
  1658. Function Cat_Sum_Validation(Question, IOM, Attempt)
  1659. Dim Cat, Sum, TargetSum, Condition, Msg
  1660. Sum = 0
  1661. Condition = Split(Question.Properties.Item["SumCondition"], "|")
  1662. TargetSum = cLong(Condition[1])
  1663. Condition = Condition[0]
  1664. For Each Cat in Question
  1665. If Not (Cat.Item[0].Response.Value=*{_998,_999}) Then
  1666. Sum = Sum + Cat.Item[0].Categories[cCategorical(Cat.Item[0].Response.Value)].Properties.Item["Value"]
  1667. End If
  1668. Next
  1669. Select Case Condition
  1670. Case "="
  1671. Msg = "ERR_MSG_SUM_EQUAL"
  1672. Case ">="
  1673. Msg = "ERR_MSG_SUM_GREATER_OR_EQUAL"
  1674. Case "<="
  1675. Msg = "ERR_MSG_SUM_SMALLER_OR_EQUAL"
  1676. Case ">"
  1677. Msg = "ERR_MSG_SUM_GREATER"
  1678. Case "<"
  1679. Msg = "ERR_MSG_SUM_SMALLER"
  1680. End Select
  1681. If Not (Eval("Sum" + Condition + "TargetSum")) Then
  1682. Question.Item[0].Item[0].Errors.AddNew("Err1", Replace(IOM.Questions.Item["Inserts"].Item[Msg].Label, "_value_", cText(TargetSum)))
  1683. Cat_Sum_Validation = False
  1684. For Each Cat in Question
  1685. If Not (Cat.Item[0].Response.Value=*{_998,_999}) Then
  1686. Cat.Item[0].Response.Value = cCategorical(Cat.Item[0].Categories.Item[0])
  1687. End If
  1688. Next
  1689. Else
  1690. Cat_Sum_Validation = True
  1691. End If
  1692. End Function
  1693.  
  1694. Function Validate_Chips (Q, IOM, Attempt)
  1695. Dim Slice, Sum, TargetSum, Condition, Msg, MyQ, sumCheck
  1696. sumCheck = 0
  1697. For Each MyQ in Q
  1698. Condition = Split(iif(MyQ.Properties.Item["SumCondition"] is null, Q.Properties.Item["SumCondition"], MyQ.Properties.Item["SumCondition"]), "|")
  1699. TargetSum = cLong(Condition[1])
  1700. Condition = Condition[0]
  1701. Sum = 0
  1702. For each Slice in MyQ
  1703. If Not (Slice.Item[0].Response.Value=*{_998,_999}) then
  1704. Sum = Sum + Slice.Item[0].Categories.Item[cCategorical(Slice.Item[0].Response.Value)].Properties.Item["Value"]
  1705. End If
  1706. Next
  1707. Select Case Condition
  1708. Case "="
  1709. Msg = "ERR_MSG_SUM_EQUAL"
  1710. Case ">="
  1711. Msg = "ERR_MSG_SUM_GREATER_OR_EQUAL"
  1712. Case "<="
  1713. Msg = "ERR_MSG_SUM_SMALLER_OR_EQUAL"
  1714. Case ">"
  1715. Msg = "ERR_MSG_SUM_GREATER"
  1716. Case "<"
  1717. Msg = "ERR_MSG_SUM_SMALLER"
  1718. End Select
  1719. If Not (Eval("Sum" + Condition + "TargetSum")) Then
  1720. MyQ.Item[0].Item[0].Errors.AddNew("Err1", Replace(IOM.Questions.Item["Inserts"].Item[Msg].Label, "_value_", cText(TargetSum)))
  1721. Validate_Chips = False
  1722. For each Slice in MyQ
  1723. If Not (Slice.Item[0].Response.Value=*{_998,_999}) Then
  1724. Slice.Item[0].Response.Value = cCategorical(Slice.Item[0].Categories.Item[0])
  1725. End If
  1726. Next
  1727. sumCheck = sumCheck + 1
  1728. End If
  1729. Next
  1730.  
  1731. if sumCheck>0 then
  1732. Validate_Chips = False
  1733. else
  1734. Validate_Chips = True
  1735. end if
  1736. End Function
  1737.  
  1738.  
  1739. Function D20_Validation(Question, IOM, Attempt)
  1740. Dim Cat, Sum, TargetSum
  1741. Sum = 0
  1742. TargetSum = cLong(Question.Label.Inserts.Ins1)
  1743. if TargetSum = 0 Then TargetSum = 10
  1744. For Each Cat in Question.Response.Other
  1745. Sum = Sum + cLong(Mid(Cat.Value.Format("a"), 1))
  1746. Next
  1747. If Sum>TargetSum Then
  1748. Question.Errors.AddNew("Err1", IOM.Questions.Item["Inserts"].Item["ERR_MSG_D20"].Label + " " + cText(TargetSum))
  1749. D20_Validation = False
  1750. Else
  1751. D20_Validation = True
  1752. End If
  1753. End Function
  1754.  
  1755. Function S85_Validation(Question, IOM, Attempt)
  1756. Dim foundError, foundSubbrand, typesList, s40cat, s85cat
  1757. foundError = False
  1758. typesList = ccategorical(Iom.Questions.Item["S40"].Response -{_996,_998,_999} )
  1759. For Each s40cat in typesList
  1760. foundSubbrand = false
  1761. for each s85cat in ccategorical(Question.Response.Value-{_997,_999})
  1762. if s40cat * ccategorical (Question.Categories[ccategorical(s85cat)].Properties["Brand"]) then
  1763. foundSubbrand = True
  1764. exit for
  1765. end if
  1766. next
  1767.  
  1768. if not(foundSubbrand) then
  1769. foundError = True
  1770. exit for
  1771. end if
  1772. Next
  1773.  
  1774. if foundError then
  1775. Question.Errors.AddNew("Err1", IOM.Questions.Item["Inserts"].Item["ERR_MSG_S85"].Label)
  1776. S85_Validation = False
  1777. else
  1778. S85_Validation = True
  1779. end if
  1780.  
  1781. End Function
  1782.  
  1783. Function RegExProc(Str, Mode, Pattern, Repl)
  1784. Dim objRegExp
  1785. Set objRegExp = CreateObject("VBScript.RegExp")
  1786. objRegExp.IgnoreCase = True
  1787. objRegExp.Global = True
  1788. objRegExp.Pattern = Pattern
  1789. Select Case Mode
  1790. Case "Replace"
  1791. RegExProc = objRegExp.Replace(Str, Repl)
  1792. Case "Test"
  1793. RegExProc = objRegExp.Test(Str)
  1794. End Select
  1795. End Function
  1796.  
  1797. Sub SetDefaultStyles(Question, StyleFormat, IOM, ClearDefaults)
  1798. Dim Cat, Cat1, Flag, Q, Slice, List1, List2
  1799. If ClearDefaults Then
  1800. With IOM.DefaultStyles
  1801. .Grids[GridStyleTypes.gsColHeader].Color = "Black"
  1802. .Grids[GridStyleTypes.gsColHeader].Font.Effects = 0
  1803. .Grids[GridStyleTypes.gsColHeader].Cell.BgColor = 0
  1804. .Grids[GridStyleTypes.gsColHeader].BgColor = 0
  1805. .Grids[GridStyleTypes.gsColHeader].Cell.BorderColor = "White"
  1806. .Grids[GridStyleTypes.gsColHeader].Cell.BorderStyle = BorderStyles.bsNone
  1807. .Grids[GridStyleTypes.gsColHeader].Cell.Borderwidth = 0
  1808. .Grids[GridStyleTypes.gsColHeader].Cell.padding = 0
  1809. .Grids[GridStyleTypes.gsRowHeader].Font.Effects = 0
  1810. .Grids[GridStyleTypes.gsRowHeader].Cell.BgColor = 0
  1811. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderColor = "White"
  1812. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderStyle = BorderStyles.bsNone
  1813. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderWidth = 0
  1814. .Grids[GridStyleTypes.gsRowHeader].Cell.Padding = 0
  1815. .Grids[GridStyleTypes.gsAltRowHeader].Cell.BgColor = 0
  1816. .Grids[GridStyleTypes.gsAltRow].Cell.BgColor = 0
  1817. End With
  1818. End If
  1819. If Not((StyleFormat Is Null) Or (StyleFormat = "")) Then
  1820. Select Case StyleFormat
  1821. Case "Style1"
  1822. With IOM.DefaultStyles
  1823. .Grids[GridStyleTypes.gsColHeader].Color = "White"
  1824. .Grids[GridStyleTypes.gsColHeader].Font.Effects = FontEffects.feBold
  1825. .Grids[GridStyleTypes.gsColHeader].Cell.BgColor = IOM.Questions.Item["S_B"].IpsosBlue
  1826. .Grids[GridStyleTypes.gsColHeader].Cell.BorderColor = "White"
  1827. .Grids[GridStyleTypes.gsColHeader].Cell.BorderStyle = BorderStyles.bsSolid
  1828. .Grids[GridStyleTypes.gsColHeader].Cell.Borderwidth = 1
  1829. .Grids[GridStyleTypes.gsColHeader].Cell.padding = 3
  1830. .Grids[GridStyleTypes.gsRowHeader].Font.Effects = FontEffects.feBold
  1831. .Grids[GridStyleTypes.gsRowHeader].Cell.BgColor = "Gainsboro"
  1832. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderColor = "Black"
  1833. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderStyle = BorderStyles.bsSolid
  1834. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderWidth = 1
  1835. .Grids[GridStyleTypes.gsRowHeader].Cell.Padding = 2
  1836. .Grids[GridStyleTypes.gsAltRowHeader].Cell.BgColor = "#D8E6E6"
  1837. .Grids[GridStyleTypes.gsAltRow].Cell.BgColor = "Azure"
  1838. End With
  1839.  
  1840. Case "Style2"
  1841. With IOM.DefaultStyles
  1842. .Grids[GridStyleTypes.gsRowHeader].Font.Effects = FontEffects.feBold
  1843. .Grids[GridStyleTypes.gsRowHeader].Cell.BgColor = "Gainsboro"
  1844. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderColor = "Black"
  1845. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderStyle = BorderStyles.bsSolid
  1846. .Grids[GridStyleTypes.gsRowHeader].Cell.BorderWidth = 1
  1847. .Grids[GridStyleTypes.gsRowHeader].Cell.Padding = 2
  1848. .Grids[GridStyleTypes.gsAltRowHeader].Cell.BgColor = "#D8E6E6"
  1849. End With
  1850.  
  1851. Case "Style_Categorical1"
  1852. If Question.QuestionDataType = DataTypeConstants.mtCategorical Then
  1853. Flag = True
  1854. List1 = GetCatList(Question.Categories, Question.DefinedCategories())
  1855. For Each Cat In List1 - {_996,_997,_998,_999}
  1856. If Flag Then
  1857. Question.Categories.Item[cCategorical(Cat)].Style.BgColor = "#D8E6E6"
  1858. Question.Categories.Item[cCategorical(Cat)].Label.Style.BgColor = "Azure"
  1859. Question.Categories.Item[cCategorical(Cat)].Label.Style.Cell.BgColor = "Azure"
  1860. Else
  1861. Question.Categories.Item[cCategorical(Cat)].Style.BgColor = "Gainsboro"
  1862. End If
  1863. Flag = Not Flag
  1864. Next
  1865. For Each Cat In List1*{_996,_997}
  1866. Question.Categories.Item[cCategorical(Cat)].Style.BgColor = "#CCCCFF"
  1867. Question.Categories.Item[cCategorical(Cat)].Label.Style.BgColor = "#CCCCFF"
  1868. Question.Categories.Item[cCategorical(Cat)].Label.Style.Cell.BgColor = "#CCCCFF"
  1869. Next
  1870. For Each Cat In List1*{_998}
  1871. Question.Categories.Item[cCategorical(Cat)].Style.BgColor = "Bisque"
  1872. Question.Categories.Item[cCategorical(Cat)].Label.Style.BgColor = "Bisque"
  1873. Question.Categories.Item[cCategorical(Cat)].Label.Style.Cell.BgColor = "Bisque"
  1874. Next
  1875. For Each Cat In List1*{_999}
  1876. Question.Categories.Item[cCategorical(Cat)].Style.BgColor = "#FFFF99"
  1877. Question.Categories.Item[cCategorical(Cat)].Label.Style.BgColor = "#FFFF99"
  1878. Question.Categories.Item[cCategorical(Cat)].Label.Style.Cell.BgColor = "#FFFF99"
  1879. Next
  1880. End If
  1881.  
  1882. Case "Style_Categorical2"
  1883. If Question.QuestionDataType = DataTypeConstants.mtCategorical Then
  1884. SetCategoryStyle2(Question.Categories, True)
  1885. End If
  1886.  
  1887. Case "Style_Categorical21"
  1888. If Question.QuestionDataType = DataTypeConstants.mtCategorical Then
  1889. SetCategoryStyle21(Question.Categories, True)
  1890. End If
  1891. End Select
  1892. End If
  1893. Select Case Question.QuestionType
  1894. Case 1, 2 ' Loops
  1895. For Each Slice in Question
  1896. For Each Q in Slice
  1897. SetDefaultStyles(Q, Q.Properties.Item["QuestionFormating"], IOM, False)
  1898. Next
  1899. Next
  1900. Case 4, 5 ' Block and Page
  1901. For Each Q in Question
  1902. SetDefaultStyles(Q, Q.Properties.Item["QuestionFormating"], IOM, False)
  1903. Next
  1904. End Select
  1905. End Sub
  1906.  
  1907. Function SetCategoryStyle2(MyElements, Flag)
  1908. Dim List1, Cat, Cat1, FixList
  1909. For Each Cat In MyElements
  1910. If Cat.CategoryType = 0 Then
  1911. If IsSet(Cat.Attributes, CategoryFlagConstants.flFixedPosition) Then FixList = FixList + CCategorical(Cat)
  1912. End If
  1913. Next
  1914. List1 = MyElements
  1915. If MyElements.Order = OrderConstants.oReverse Then
  1916. List1 = List1.Rev()
  1917. ElseIf MyElements.Order = OrderConstants.oRandomize Then
  1918. List1 = List1.Ran()
  1919. ElseIf MyElements.Order = OrderConstants.oRotate Then
  1920. List1 = List1.Rot()
  1921. ElseIf MyElements.Order = OrderConstants.oDescending Then
  1922. List1 = List1.SortDesc()
  1923. ElseIf MyElements.Order = OrderConstants.oAscending Then
  1924. List1 = List1.SortAsc()
  1925. End If
  1926. For Each Cat in (List1 - FixList) - {_996,_997,_998,_999}
  1927. Set Cat = MyElements.Item[cCategorical(Cat)]
  1928. If Cat.CategoryType = 1 Then
  1929. Cat.Style.BgColor = "Black"
  1930. Cat.Label.Style.BgColor = "Black"
  1931. Cat.Label.Style.Color = "White"
  1932. Flag = SetCategoryStyle2(Cat, Flag)
  1933. ElseIf Cat.CategoryType = 0 Then
  1934. If Flag Then
  1935. Cat.Style.BgColor = "#D8E6E6"
  1936. Cat.Label.Style.BgColor = "Azure"
  1937. Cat.Label.Style.Cell.BgColor = "Azure"
  1938. Else
  1939. Cat.Style.BgColor = "Gainsboro"
  1940. End If
  1941. Flag = Not Flag
  1942. End If
  1943. Next
  1944. For Each Cat in FixList - {_996,_997,_998,_999}
  1945. Set Cat = MyElements.Item[cCategorical(Cat)]
  1946. If Cat.CategoryType = 1 Then
  1947. Cat.Label.Style.Color = "Gray"
  1948. Flag = SetCategoryStyle2(Cat, Flag)
  1949. ElseIf Cat.CategoryType = 0 Then
  1950. If Flag Then
  1951. Cat.Style.BgColor = "#D8E6E6"
  1952. Cat.Label.Style.BgColor = "Azure"
  1953. Cat.Label.Style.Cell.BgColor = "Azure"
  1954. Else
  1955. Cat.Style.BgColor = "Gainsboro"
  1956. End If
  1957. Flag = Not Flag
  1958. End If
  1959. Next
  1960. For Each Cat1 In List1*{_996,_997}
  1961. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "#CCCCFF"
  1962. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "#CCCCFF"
  1963. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "#CCCCFF"
  1964. Next
  1965. For Each Cat1 In List1*{_998}
  1966. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "Bisque"
  1967. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "Bisque"
  1968. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "Bisque"
  1969. Next
  1970. For Each Cat1 In List1*{_999}
  1971. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "#FFFF99"
  1972. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "#FFFF99"
  1973. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "#FFFF99"
  1974. Next
  1975. SetCategoryStyle2 = Flag
  1976. End Function
  1977.  
  1978. Function SetCategoryStyle21(MyElements, Flag)
  1979. Dim List1, Cat, Cat1, FixList
  1980. FixList = {}
  1981. For Each Cat In MyElements
  1982. If Cat.CategoryType = 0 Then
  1983. If IsSet(Cat.Attributes, CategoryFlagConstants.flFixedPosition) Then FixList = FixList + CCategorical(Cat)
  1984. End If
  1985. Next
  1986. List1 = MyElements
  1987. If MyElements.Order = OrderConstants.oReverse Then
  1988. List1 = List1.Rev()
  1989. ElseIf MyElements.Order = OrderConstants.oRandomize Then
  1990. List1 = List1.Ran()
  1991. ElseIf MyElements.Order = OrderConstants.oRotate Then
  1992. List1 = List1.Rot()
  1993. ElseIf MyElements.Order = OrderConstants.oDescending Then
  1994. List1 = List1.SortDesc()
  1995. ElseIf MyElements.Order = OrderConstants.oAscending Then
  1996. List1 = List1.SortAsc()
  1997. End If
  1998. For Each Cat in (List1 - FixList) - {_996,_997,_998,_999}
  1999. Set Cat = MyElements.Item[cCategorical(Cat)]
  2000. If Cat.CategoryType = 1 Then
  2001. Cat.Label.Style.Color = "Gray"
  2002. Flag = SetCategoryStyle21(Cat, Flag)
  2003. ElseIf Cat.CategoryType = 0 Then
  2004. If Flag Then
  2005. Cat.Style.BgColor = "#D8E6E6"
  2006. Cat.Label.Style.BgColor = "Azure"
  2007. Cat.Label.Style.Cell.BgColor = "Azure"
  2008. Else
  2009. Cat.Style.BgColor = "Gainsboro"
  2010. End If
  2011. Flag = Not Flag
  2012. End If
  2013. Next
  2014. For Each Cat in FixList - {_996,_997,_998,_999}
  2015. Set Cat = MyElements.Item[cCategorical(Cat)]
  2016. If Cat.CategoryType = 1 Then
  2017. Cat.Label.Style.Color = "Gray"
  2018. Flag = SetCategoryStyle21(Cat, Flag)
  2019. ElseIf Cat.CategoryType = 0 Then
  2020. If Flag Then
  2021. Cat.Style.BgColor = "#D8E6E6"
  2022. Cat.Label.Style.BgColor = "Azure"
  2023. Cat.Label.Style.Cell.BgColor = "Azure"
  2024. Else
  2025. Cat.Style.BgColor = "Gainsboro"
  2026. End If
  2027. Flag = Not Flag
  2028. End If
  2029. Next
  2030. For Each Cat1 In List1*{_996,_997,_291,_292,_293,_294,_295,_296,_297,_298,_299}
  2031. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "#CCCCFF"
  2032. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "#CCCCFF"
  2033. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "#CCCCFF"
  2034. Next
  2035. For Each Cat1 In List1*{_998}
  2036. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "Bisque"
  2037. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "Bisque"
  2038. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "Bisque"
  2039. Next
  2040. For Each Cat1 In List1*{_999}
  2041. MyElements.Item[cCategorical(Cat1)].Style.BgColor = "#FFFF99"
  2042. MyElements.Item[cCategorical(Cat1)].Label.Style.BgColor = "#FFFF99"
  2043. MyElements.Item[cCategorical(Cat1)].Label.Style.Cell.BgColor = "#FFFF99"
  2044. Next
  2045. SetCategoryStyle21 = Flag
  2046. End Function
  2047.  
  2048. Function validemoti(Question, IOM, Attempt)
  2049. if len(Question.Item[0].Response.value) = 0 then
  2050. Question.Errors.AddNew("Err1", "Please select at least one answer. " )
  2051. validemoti = false
  2052. else
  2053. validemoti = true
  2054. end if
  2055. End Function
  2056.  
  2057. function SendCustomPropertiestoBrowser(theQuestion, theProperties)
  2058. dim nameBanner
  2059. dim foundBanner
  2060. dim curBanner
  2061. dim freqBanner, itemBanner
  2062. freqBanner = theQuestion.Banners.Count
  2063. nameBanner = "CustomProperties"
  2064. theProperties = "<mrRef RefType='script' id='customJSONProperties' class='customJSONProperties' type='application/json' language='Javascript'>{" + theProperties + "}</mrRef>"
  2065. foundBanner = false
  2066. for itemBanner = 0 to freqBanner - 1
  2067. set curBanner = theQuestion.Banners[itemBanner]
  2068. if lcase(curBanner.name) = nameBanner then
  2069. if curBanner.text <> theProperties then
  2070. curBanner.text = theProperties
  2071. end if
  2072. foundBanner=true
  2073. exit function
  2074. end if
  2075. Next
  2076. if (foundBanner = false) then theQuestion.Banners.addNew(nameBanner, "")
  2077. theQuestion.Banners[nameBanner] = theProperties
  2078. Debug.Log(theProperties)
  2079. end function
  2080.  
  2081. Function HTMLTable (Q, Categories, SLHeader, Currency_Sign, Sign_Position_Front, Flag, Flag1, Flag2, C1W, C2W, C3W, IOM)
  2082. Dim Cat1, Str1, Str3, Flags, TopPadding
  2083. For Each Cat1 in Categories
  2084. If Cat1.CategoryType = 1 Then
  2085. Cat1.Label.Style.Hidden = True
  2086. Cat1.Label.Style.Width = 0
  2087. Cat1.Style.Cell.Width = 0
  2088. Flags = HTMLTable (Q, Cat1, IIF(Cat1.Label = "", "", "<table cellspacing=""2"" style=""width:100%""><tr><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto""><b>" + Cat1.Label + "</b></td></tr></table>"), Currency_Sign, Sign_Position_Front, Flag, Flag1, Cat1.Label <> "", C1W, C2W, C3W, IOM)
  2089. Flags = Split(Flags, "|")
  2090. Flag = cBoolean(Flags[0])
  2091. Flag1 = cBoolean(Flags[1])
  2092. ElseIf Cat1.CategoryType = 0 Then
  2093. if Flag Then
  2094. If Flag2 Then
  2095. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 48
  2096. Else
  2097. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2098. End If
  2099. Else
  2100. If Flag2 Then
  2101. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2102. End If
  2103. End If
  2104. If cCategorical(Cat1.Name)=*{_998,_999} Then
  2105. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IIf(cCategorical(Cat1.Name)=*{_998}, IOM.Questions.S_B._998TableExclusiveHeaderStyle, IOM.Questions.S_B._999TableExclusiveHeaderStyle) + "; width:auto"">"
  2106. Cat1.Label.Inserts.Item["Ins2"] = "</td></tr></table>"
  2107. Else
  2108. Str3 = cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2")
  2109. If Sign_Position_Front Then
  2110. Str1 = Currency_Sign + " " + Str3
  2111. Else
  2112. Str1 = Str3 + " " + Currency_Sign
  2113. End If
  2114. If Flag Then
  2115. Cat1.Label.Inserts.Item["Ins1"] = "<table cellspacing=""2"" style=""width:100%""><tr><td style=""border:1px solid white; width:auto""/><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:" + cText(C2W) + "em""><b>" + IOM.Questions.Inserts.Size_Label.Label + "</b></td><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:" + cText(C3W) + "em""><b>" + IOM.Questions.Inserts.Price_Label.Label + "</b></td></tr></table>" + iif(Flag2, SLHeader, "") + "<table cellspacing = ""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2116. Flag = False
  2117. Else
  2118. if Flag1 Then
  2119. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2120. Else
  2121. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2122. End If
  2123. End If
  2124. If Flag1 Then
  2125. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td><td align=""right"" class = ""price"" price = """ + Str3 + """ Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableRowStyle + "; width:" + cText(C3W) + "em"">" + Str1 + "</td></tr></table>"
  2126. Else
  2127. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td><td align=""right"" class = ""price"" price = """ + Str3 + """ Style=""border:1px solid black; " + IOM.Questions.S_B.TableRowStyle + "; width:" + cText(C3W) + "em"">" + Str1 + "</td></tr></table>"
  2128. End If
  2129. Flag1 = Not Flag1
  2130. End If
  2131. Flag2 = False
  2132. End If
  2133. Next
  2134. HTMLTable = cText(Flag) + "|" + cText(Flag1)
  2135. End Function
  2136.  
  2137. Function HTMLTable2 (Q, Categories, SLHeader, Currency_Sign, Sign_Position_Front, Flag, Flag1, Flag2, C1W, C2W, C3W, IOM)
  2138. Dim Cat1, Str1, Str3, Flags, TopPadding
  2139. For Each Cat1 in Categories
  2140. If Cat1.CategoryType = 1 Then
  2141. Cat1.Label.Style.Hidden = True
  2142. Cat1.Label.Style.Width = 0
  2143. Cat1.Style.Cell.Width = 0
  2144. Flags = HTMLTable2 (Q, Cat1, IIF(Cat1.Label = "", "", "<table cellspacing=""2"" style=""width:100%""><tr><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto""><b>" + Cat1.Label + "</b></td></tr></table>"), Currency_Sign, Sign_Position_Front, Flag, Flag1, Cat1.Label <> "", C1W, C2W, C3W, IOM)
  2145. Flags = Split(Flags, "|")
  2146. Flag = cBoolean(Flags[0])
  2147. Flag1 = cBoolean(Flags[1])
  2148. ElseIf Cat1.CategoryType = 0 Then
  2149. if Flag Then
  2150. If Flag2 Then
  2151. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 48
  2152. Else
  2153. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2154. End If
  2155. Else
  2156. If Flag2 Then
  2157. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2158. End If
  2159. End If
  2160. If cCategorical(Cat1.Name)=*{_998,_999} Then
  2161. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IIf(cCategorical(Cat1.Name)=*{_998}, IOM.Questions.S_B._998TableExclusiveHeaderStyle, IOM.Questions.S_B._999TableExclusiveHeaderStyle) + "; width:auto"">"
  2162. Cat1.Label.Inserts.Item["Ins2"] = "</td></tr></table>"
  2163. Else
  2164. Str3 = ""
  2165.  
  2166. If Flag Then
  2167. Cat1.Label.Inserts.Item["Ins1"] = "<table cellspacing=""2"" style=""width:100%""><tr><td style=""border:1px solid white; width:auto""/><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:" + cText(C2W) + "em""><b>" + IOM.Questions.Inserts.Size_Label.Label + "</b></td></tr></table>" + iif(Flag2, SLHeader, "") + "<table cellspacing = ""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2168. Flag = False
  2169. Else
  2170. if Flag1 Then
  2171. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2172. Else
  2173. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2174. End If
  2175. End If
  2176. If Flag1 Then
  2177. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td></tr></table>"
  2178. Else
  2179. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td></tr></table>"
  2180. End If
  2181. Flag1 = Not Flag1
  2182. End If
  2183. Flag2 = False
  2184. End If
  2185. Next
  2186. HTMLTable2 = cText(Flag) + "|" + cText(Flag1)
  2187. End Function
  2188.  
  2189. Function HTMLTable3 (Q, Categories, SLHeader, Currency_Sign, Sign_Position_Front, Flag, Flag1, Flag2, C1W, C2W, C3W, IOM)
  2190. Dim Cat1, Str1, Str3, Flags, TopPadding
  2191. For Each Cat1 in Categories
  2192. If Cat1.CategoryType = 1 Then
  2193. Cat1.Label.Style.Hidden = True
  2194. Cat1.Label.Style.Width = 0
  2195. Cat1.Style.Cell.Width = 0
  2196. Flags = HTMLTable3 (Q, Cat1, IIF(Cat1.Label = "", "", "<table cellspacing=""2"" style=""width:100%""><tr><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto""><b>" + Cat1.Label + "</b></td></tr></table>"), Currency_Sign, Sign_Position_Front, Flag, Flag1, Cat1.Label <> "", C1W, C2W, C3W, IOM)
  2197. Flags = Split(Flags, "|")
  2198. Flag = cBoolean(Flags[0])
  2199. Flag1 = cBoolean(Flags[1])
  2200. ElseIf Cat1.CategoryType = 0 Then
  2201. if Flag Then
  2202. If Flag2 Then
  2203. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 48
  2204. Else
  2205. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2206. End If
  2207. Else
  2208. If Flag2 Then
  2209. Q[Cat1.Format("a")].Item[0].Style.Cell.Paddingtop = 25
  2210. End If
  2211. End If
  2212. If cCategorical(Cat1.Name)=*{_998,_999} Then
  2213. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IIf(cCategorical(Cat1.Name)=*{_998}, IOM.Questions.S_B._998TableExclusiveHeaderStyle, IOM.Questions.S_B._999TableExclusiveHeaderStyle) + "; width:auto"">"
  2214. Cat1.Label.Inserts.Item["Ins2"] = "</td></tr></table>"
  2215. Else
  2216. Str3 = cDouble(Trim(IOM.MDM.Types.Item["VarietyPrices_List"].Elements.Item[Cat1.Format("a")].Label)).Format("f2")
  2217. If Sign_Position_Front Then
  2218. Str1 = Currency_Sign + " " + Str3
  2219. Else
  2220. Str1 = Str3 + " " + Currency_Sign
  2221. End If
  2222. If Flag Then
  2223. Cat1.Label.Inserts.Item["Ins1"] = "<table cellspacing=""2"" style=""width:100%""><tr><td style=""border:1px solid white; width:auto""/><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:" + cText(C2W) + "em""><b>" + IOM.Questions.Inserts.Size_Label.Label + "</b></td><td align=""center"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:" + cText(C3W) + "em""><b>" + IOM.Questions.Inserts.Price_Label.Label + "</b></td></tr></table>" + iif(Flag2, SLHeader, "") + "<table cellspacing = ""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2224. Flag = False
  2225. Else
  2226. if Flag1 Then
  2227. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2228. Else
  2229. Cat1.Label.Inserts.Item["Ins1"] = iif(Flag2, SLHeader, "") + "<table cellspacing=""2"" style=""width:100%""><tr><td Style=""border:1px solid black; " + IOM.Questions.S_B.TableHeaderStyle + "; width:auto"">" ' + Cat1.Label.Inserts.Item["Ins1"]
  2230. End If
  2231. End If
  2232. If Flag1 Then
  2233. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td><td align=""right"" class = ""price"" price = """ + Str3 + """ Style=""border:1px solid black; " + IOM.Questions.S_B.AltTableRowStyle + "; width:" + cText(C3W) + "em"">" + Str1 + "</td></tr></table>"
  2234. Else
  2235. Cat1.Label.Inserts.Item["Ins2"] = "</td><td align=""right"" Style=""border:1px solid black; " + IOM.Questions.S_B.TableRowStyle + "; width:" + cText(C2W) + "em"">" + Trim(IOM.MDM.Types.Item["FlavorsTypesSizes_List"].Elements.Item[Cat1.Format("a")].Label) + "</td><td align=""right"" class = ""price"" price = """ + Str3 + """ Style=""border:1px solid black; " + IOM.Questions.S_B.TableRowStyle + "; width:" + cText(C3W) + "em"">" + Str1 + "</td></tr></table>"
  2236. End If
  2237. Flag1 = Not Flag1
  2238. End If
  2239. Flag2 = False
  2240. End If
  2241. Next
  2242. HTMLTable3 = cText(Flag) + "|" + cText(Flag1)
  2243. End Function
  2244.  
  2245. End Routing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement