Flagbit_Factfinder - Version 4.1.9

Version Notes

Release

Download this release

Release Info

Developer FACTFinder
Extension Flagbit_Factfinder
Version 4.1.9
Comparing to
See all releases


Code changes from version 4.1.0 to 4.1.9

Files changed (175) hide show
  1. app/code/community/FACTFinder/Asn/Block/Catalog/Layer/Factfinder.php +4 -4
  2. app/code/community/FACTFinder/Asn/Block/Catalog/Layer/State.php +4 -4
  3. app/code/community/FACTFinder/Asn/Block/Catalog/Product/List/Toolbar.php +4 -4
  4. app/code/community/FACTFinder/Asn/Block/Catalog/Product/Pager.php +4 -4
  5. app/code/community/FACTFinder/Asn/Helper/Data.php +4 -4
  6. app/code/community/FACTFinder/Asn/Model/Catalog/Layer.php +4 -4
  7. app/code/community/FACTFinder/Asn/Model/Handler/Search.php +4 -4
  8. app/code/community/FACTFinder/Asn/Model/Layer/Filter/Factfinder.php +4 -4
  9. app/code/community/FACTFinder/Asn/Model/Layer/Filter/Item.php +4 -4
  10. app/code/community/FACTFinder/Asn/Model/Observer.php +5 -4
  11. app/code/community/FACTFinder/Asn/Model/Resource/Product/Attribute/Collection.php +4 -4
  12. app/code/community/FACTFinder/Asn/Model/Resource/Search/Collection.php +4 -4
  13. app/code/community/FACTFinder/Asn/etc/config.xml +2 -2
  14. app/code/community/FACTFinder/Asn/etc/system.xml +2 -2
  15. app/code/community/FACTFinder/Campaigns/Block/Abstract.php +4 -4
  16. app/code/community/FACTFinder/Campaigns/Block/Advisory/Product.php +0 -87
  17. app/code/community/FACTFinder/Campaigns/Block/Advisory/Search.php +4 -4
  18. app/code/community/FACTFinder/Campaigns/Block/Feedback/Abstract.php +4 -4
  19. app/code/community/FACTFinder/Campaigns/Block/Feedback/Cart.php +4 -4
  20. app/code/community/FACTFinder/Campaigns/Block/Feedback/Product.php +4 -4
  21. app/code/community/FACTFinder/Campaigns/Block/Feedback/Search.php +4 -4
  22. app/code/community/FACTFinder/Campaigns/Block/Pushed/Abstract.php +4 -4
  23. app/code/community/FACTFinder/Campaigns/Block/Pushed/Cart.php +4 -4
  24. app/code/community/FACTFinder/Campaigns/Block/Pushed/Product.php +4 -4
  25. app/code/community/FACTFinder/Campaigns/Block/Pushed/Search.php +4 -4
  26. app/code/community/FACTFinder/Campaigns/Helper/Data.php +4 -4
  27. app/code/community/FACTFinder/Campaigns/Model/Facade.php +4 -4
  28. app/code/community/FACTFinder/Campaigns/Model/Handler/Abstract.php +4 -4
  29. app/code/community/FACTFinder/Campaigns/Model/Handler/Cart.php +9 -9
  30. app/code/community/FACTFinder/Campaigns/Model/Handler/Product.php +7 -5
  31. app/code/community/FACTFinder/Campaigns/Model/Handler/Search.php +4 -4
  32. app/code/community/FACTFinder/Campaigns/Model/Observer.php +4 -4
  33. app/code/community/FACTFinder/Campaigns/Model/Resource/Pushedproducts/Collection.php +5 -5
  34. app/code/community/FACTFinder/Campaigns/etc/config.xml +2 -2
  35. app/code/community/FACTFinder/Campaigns/etc/system.xml +2 -2
  36. app/code/community/FACTFinder/Core/Block/Adminhtml/Exportlink.php +4 -4
  37. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attribute.php +4 -4
  38. app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attributes.php +4 -4
  39. app/code/community/FACTFinder/Core/Block/Catalog/Product/List/Toolbar.php +294 -34
  40. app/code/community/FACTFinder/Core/Block/Catalog/Product/Pager.php +4 -4
  41. app/code/community/FACTFinder/Core/Block/CatalogSearch/Layer.php +44 -0
  42. app/code/community/FACTFinder/Core/Block/EnterpriseSearch/Layer.php +44 -0
  43. app/code/community/FACTFinder/Core/Helper/Backend.php +7 -6
  44. app/code/community/FACTFinder/Core/Helper/Data.php +14 -56
  45. app/code/community/FACTFinder/Core/Helper/Debug.php +10 -9
  46. app/code/community/FACTFinder/Core/Helper/Export.php +274 -0
  47. app/code/community/FACTFinder/Core/Helper/Rewrite.php +119 -0
  48. app/code/community/FACTFinder/Core/Helper/Search.php +27 -5
  49. app/code/community/FACTFinder/Core/Model/Autoloader.php +8 -6
  50. app/code/community/FACTFinder/Core/Model/CatalogSearch/Layer.php +4 -4
  51. app/code/community/FACTFinder/Core/Model/CatalogSearch/Query.php +34 -0
  52. app/code/community/FACTFinder/Core/Model/Export/Observer.php +93 -0
  53. app/code/community/FACTFinder/Core/Model/Export/Price.php +43 -6
  54. app/code/community/FACTFinder/Core/Model/Export/Product.php +54 -26
  55. app/code/community/FACTFinder/Core/Model/Export/Stock.php +44 -7
  56. app/code/community/FACTFinder/Core/Model/Facade.php +21 -7
  57. app/code/community/FACTFinder/Core/Model/File.php +4 -4
  58. app/code/community/FACTFinder/Core/Model/Ftp.php +159 -0
  59. app/code/community/FACTFinder/Core/Model/Handler/Abstract.php +4 -4
  60. app/code/community/FACTFinder/Core/Model/Handler/Search.php +22 -5
  61. app/code/community/FACTFinder/Core/Model/Handler/Status.php +30 -4
  62. app/code/community/FACTFinder/Core/Model/Observer.php +98 -58
  63. app/code/community/FACTFinder/Core/Model/Resource/Fulltext.php +45 -0
  64. app/code/community/FACTFinder/Core/Model/Resource/Search/Collection.php +4 -4
  65. app/code/community/FACTFinder/Core/Model/Resource/Search/Engine.php +4 -4
  66. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Attributes.php +4 -4
  67. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Cron.php +4 -4
  68. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Enabled.php +4 -4
  69. app/code/community/FACTFinder/Core/Model/System/Config/Backend/Engine.php +47 -0
  70. app/code/community/FACTFinder/Core/Model/System/Config/Source/Authtype.php +4 -4
  71. app/code/community/FACTFinder/Core/Model/System/Config/Source/Engine.php +55 -0
  72. app/code/community/FACTFinder/Core/Model/System/Config/Source/Identifier.php +4 -4
  73. app/code/community/FACTFinder/Core/Model/System/Config/Source/Protocol.php +4 -4
  74. app/code/community/FACTFinder/Core/Model/Url.php +62 -0
  75. app/code/community/FACTFinder/Core/controllers/ExportController.php +12 -4
  76. app/code/community/FACTFinder/Core/etc/adminhtml.xml +2 -2
  77. app/code/community/FACTFinder/Core/etc/config.xml +26 -10
  78. app/code/community/FACTFinder/Core/etc/system.xml +120 -74
  79. app/code/community/FACTFinder/Recommendation/Helper/Data.php +35 -4
  80. app/code/community/FACTFinder/Recommendation/Model/Facade.php +8 -7
  81. app/code/community/FACTFinder/Recommendation/Model/Handler/Recommendations.php +7 -4
  82. app/code/community/FACTFinder/Recommendation/Model/Observer.php +9 -9
  83. app/code/community/FACTFinder/Recommendation/etc/config.xml +2 -2
  84. app/code/community/FACTFinder/Suggest/Block/TopSearch.php +6 -5
  85. app/code/community/FACTFinder/Suggest/Block/XmlConnect/Catalog/Search/Suggest.php +4 -4
  86. app/code/community/FACTFinder/Suggest/Helper/Data.php +36 -4
  87. app/code/community/FACTFinder/Suggest/Model/Facade.php +8 -7
  88. app/code/community/FACTFinder/Suggest/Model/Handler/Suggest.php +25 -18
  89. app/code/community/FACTFinder/Suggest/Model/Observer.php +7 -9
  90. app/code/community/FACTFinder/Suggest/Model/Processor.php +4 -4
  91. app/code/community/FACTFinder/Suggest/Model/System/Config/Source/Imagetype.php +4 -4
  92. app/code/community/FACTFinder/Suggest/controllers/ProxyController.php +5 -5
  93. app/code/community/FACTFinder/Suggest/etc/config.xml +2 -2
  94. app/code/community/FACTFinder/Suggest/etc/system.xml +2 -2
  95. app/code/community/FACTFinder/Tagcloud/Block/TagCloud.php +4 -4
  96. app/code/community/FACTFinder/Tagcloud/Helper/Data.php +4 -4
  97. app/code/community/FACTFinder/Tagcloud/Model/Facade.php +4 -4
  98. app/code/community/FACTFinder/Tagcloud/Model/Handler/TagCloud.php +4 -4
  99. app/code/community/FACTFinder/Tagcloud/etc/config.xml +2 -2
  100. app/code/community/FACTFinder/Tracking/Block/Abstract.php +74 -0
  101. app/code/community/FACTFinder/Tracking/Block/Click.php +85 -0
  102. app/code/community/FACTFinder/Tracking/Block/Init.php +0 -101
  103. app/code/community/FACTFinder/Tracking/Block/Recommendation.php +83 -0
  104. app/code/community/FACTFinder/Tracking/Helper/Data.php +4 -4
  105. app/code/community/FACTFinder/Tracking/Model/Facade.php +4 -4
  106. app/code/community/FACTFinder/Tracking/Model/Handler/Tracking.php +39 -6
  107. app/code/community/FACTFinder/Tracking/Model/Observer.php +48 -30
  108. app/code/community/FACTFinder/Tracking/Model/Processor.php +16 -8
  109. app/code/community/FACTFinder/Tracking/Model/Queue.php +4 -4
  110. app/code/community/FACTFinder/Tracking/Model/Resource/Queue.php +4 -4
  111. app/code/community/FACTFinder/Tracking/Model/Resource/Queue/Collection.php +4 -4
  112. app/code/community/FACTFinder/Tracking/controllers/ProxyController.php +4 -4
  113. app/code/community/FACTFinder/Tracking/etc/config.xml +4 -4
  114. app/code/community/FACTFinder/Tracking/etc/system.xml +2 -2
  115. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/{mysql4-install-1.0.0.php → install-1.0.0.php} +2 -2
  116. app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-1.0.0-4.1.2.php +33 -0
  117. app/design/frontend/base/default/layout/factfinder/asn.xml +2 -2
  118. app/design/frontend/base/default/layout/factfinder/campaigns.xml +18 -5
  119. app/design/frontend/base/default/layout/factfinder/core.xml +3 -3
  120. app/design/frontend/base/default/layout/factfinder/suggest.xml +2 -2
  121. app/design/frontend/base/default/layout/factfinder/tagcloud.xml +2 -2
  122. app/design/frontend/base/default/layout/factfinder/tracking.xml +12 -3
  123. app/design/frontend/base/default/template/factfinder/asn/layer/filter/slider.phtml +2 -2
  124. app/design/frontend/base/default/template/factfinder/asn/layer/slider.phtml +2 -2
  125. app/design/frontend/base/default/template/factfinder/campaigns/advisory.phtml +2 -2
  126. app/design/frontend/base/default/template/factfinder/campaigns/feedback.phtml +2 -2
  127. app/design/frontend/base/default/template/factfinder/campaigns/pushed.phtml +2 -2
  128. app/design/frontend/base/default/template/factfinder/core/export/locked.phtml +2 -2
  129. app/design/frontend/base/default/template/factfinder/core/export/nofile.phtml +2 -2
  130. app/design/frontend/base/default/template/factfinder/suggest/advancedsuggest.phtml +2 -2
  131. app/design/frontend/base/default/template/factfinder/tracking/{init.phtml → click.phtml} +6 -5
  132. app/design/frontend/base/default/template/factfinder/tracking/recommendation.phtml +27 -0
  133. app/etc/modules/FACTFinder_Asn.xml +12 -0
  134. app/etc/modules/FACTFinder_Campaigns.xml +13 -0
  135. app/etc/modules/FACTFinder_Core.xml +9 -0
  136. app/etc/modules/FACTFinder_Recommendation.xml +12 -0
  137. app/etc/modules/FACTFinder_Suggest.xml +13 -0
  138. app/etc/modules/FACTFinder_Tagcloud.xml +12 -0
  139. app/etc/modules/FACTFinder_Tracking.xml +13 -0
  140. js/factfinder/suggest.js +2 -2
  141. js/factfinder/tracking.js +2 -2
  142. lib/FACTFinder/Adapter/AbstractAdapter.php +48 -6
  143. lib/FACTFinder/Adapter/Compare.php +17 -12
  144. lib/FACTFinder/Adapter/ProductCampaign.php +12 -31
  145. lib/FACTFinder/Adapter/Recommendation.php +25 -11
  146. lib/FACTFinder/Adapter/Search.php +116 -48
  147. lib/FACTFinder/Adapter/SimilarRecords.php +13 -7
  148. lib/FACTFinder/Adapter/Suggest.php +1 -1
  149. lib/FACTFinder/Adapter/TagCloud.php +1 -1
  150. lib/FACTFinder/Adapter/Tracking.php +43 -36
  151. lib/FACTFinder/Core/AbstractConfiguration.php +137 -6
  152. lib/FACTFinder/Core/ArrayConfiguration.php +324 -0
  153. lib/FACTFinder/Core/Server/EasyCurlDataProvider.php +1 -1
  154. lib/FACTFinder/Core/Server/FileSystemDataProvider.php +39 -15
  155. lib/FACTFinder/Core/XmlConfiguration.php +2 -2
  156. lib/FACTFinder/Data/BreadCrumbType.php +3 -0
  157. lib/FACTFinder/Data/FilterGroup.php +2 -12
  158. lib/FACTFinder/Data/FilterStyle.php +0 -3
  159. lib/FACTFinder/Data/Result.php +0 -15
  160. lib/FACTFinder/Data/SortingDirection.php +37 -0
  161. lib/FACTFinder/Data/SortingItem.php +65 -0
  162. lib/FACTFinder/Data/SortingItems.php +13 -0
  163. lib/FACTFinder/Util/Log4PhpLogger.php +48 -48
  164. lib/FACTFinder/Util/Parameters.php +1 -1
  165. lib/FACTFinderCustom/Configuration.php +36 -32
  166. package.xml +9 -9
  167. shell/factfinder.php +133 -33
  168. skin/frontend/base/default/js/factfinder_onetouchslider/234A0ACCECB3C19247FA8B7920453761.cache.js +477 -0
  169. skin/frontend/base/default/js/factfinder_onetouchslider/25E490B929D7CDBF44085E4E4D9D6F78.cache.js +476 -0
  170. skin/frontend/base/default/js/factfinder_onetouchslider/53ABFAE8983A4589B497F48695DB2A7C.cache.js +484 -0
  171. skin/frontend/base/default/js/factfinder_onetouchslider/75B23D057185BAB61CFE100CE08C4D84.cache.js +477 -0
  172. skin/frontend/base/default/js/factfinder_onetouchslider/79DD9AE9135ADFDE204324DA7F1B1405.cache.png +0 -0
  173. skin/frontend/base/default/js/factfinder_onetouchslider/9F0D0456482D7A7A901A2CD8F64EA019.cache.js +502 -0
  174. skin/frontend/base/default/js/factfinder_onetouchslider/clear.cache.gif +0 -0
  175. skin/frontend/base/default/js/factfinder_onetouchslider/de.factfinder.asn.slider.OneTouchSlider.nocache.js +16 -0
app/code/community/FACTFinder/Asn/Block/Catalog/Layer/Factfinder.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Asn
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Asn_Block_Catalog_Layer_Factfinder extends Mage_Catalog_Block_Layer_Filter_Attribute
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Asn
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Asn_Block_Catalog_Layer_Factfinder extends Mage_Catalog_Block_Layer_Filter_Attribute
app/code/community/FACTFinder/Asn/Block/Catalog/Layer/State.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Asn
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Asn_Block_Catalog_Layer_State extends Mage_Catalog_Block_Layer_State
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Asn
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Asn_Block_Catalog_Layer_State extends Mage_Catalog_Block_Layer_State
app/code/community/FACTFinder/Asn/Block/Catalog/Product/List/Toolbar.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Block_Catalog_Product_List_Toolbar extends FACTFinder_Core_Block_Catalog_Product_List_Toolbar
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Block_Catalog_Product_List_Toolbar extends FACTFinder_Core_Block_Catalog_Product_List_Toolbar
app/code/community/FACTFinder/Asn/Block/Catalog/Product/Pager.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Block_Catalog_Product_Pager extends FACTFinder_Core_Block_Catalog_Product_Pager
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Block_Catalog_Product_Pager extends FACTFinder_Core_Block_Catalog_Product_Pager
app/code/community/FACTFinder/Asn/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Helper_Data extends Mage_Core_Helper_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/FACTFinder/Asn/Model/Catalog/Layer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Catalog_Layer extends Mage_Catalog_Model_Layer
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Catalog_Layer extends Mage_Catalog_Model_Layer
app/code/community/FACTFinder/Asn/Model/Handler/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Handler_Search extends FACTFinder_Core_Model_Handler_Search
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Handler_Search extends FACTFinder_Core_Model_Handler_Search
app/code/community/FACTFinder/Asn/Model/Layer/Filter/Factfinder.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Layer_Filter_Factfinder extends Mage_Catalog_Model_Layer_Filter_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Layer_Filter_Factfinder extends Mage_Catalog_Model_Layer_Filter_Abstract
app/code/community/FACTFinder/Asn/Model/Layer/Filter/Item.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Layer_Filter_Item extends Mage_Catalog_Model_Layer_Filter_Item
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Layer_Filter_Item extends Mage_Catalog_Model_Layer_Filter_Item
app/code/community/FACTFinder/Asn/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Observer
@@ -39,6 +39,7 @@ class FACTFinder_Asn_Model_Observer
39
  $block->setChild('layer_state', $stateBlock);
40
 
41
  $filterableAttributes = Mage::getResourceModel('factfinder_asn/product_attribute_collection');
 
42
  foreach ($filterableAttributes as $index => $attribute) {
43
  $filter = $block->getLayout()
44
  ->createBlock('factfinder_asn/catalog_layer_factfinder')
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Observer
39
  $block->setChild('layer_state', $stateBlock);
40
 
41
  $filterableAttributes = Mage::getResourceModel('factfinder_asn/product_attribute_collection');
42
+ $filterableAttributes->setStoreId(Mage::app()->getStore()->getStoreId());
43
  foreach ($filterableAttributes as $index => $attribute) {
44
  $filter = $block->getLayout()
45
  ->createBlock('factfinder_asn/catalog_layer_factfinder')
app/code/community/FACTFinder/Asn/Model/Resource/Product/Attribute/Collection.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Resource_Product_Attribute_Collection
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Asn
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Asn_Model_Resource_Product_Attribute_Collection
app/code/community/FACTFinder/Asn/Model/Resource/Search/Collection.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Resource_Search_Collection extends FACTFinder_Core_Model_Resource_Search_Collection
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Asn
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Asn_Model_Resource_Search_Collection extends FACTFinder_Core_Model_Resource_Search_Collection
app/code/community/FACTFinder/Asn/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/code/community/FACTFinder/Asn/etc/system.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/code/community/FACTFinder/Campaigns/Block/Abstract.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Abstract extends Mage_Core_Block_Template
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Abstract extends Mage_Core_Block_Template
app/code/community/FACTFinder/Campaigns/Block/Advisory/Product.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /**
3
- * FACTFinder_Campaigns
4
- *
5
- * @category Mage
6
- * @package FACTFinder_Campaigns
7
- * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- * @link http://www.flagbit.de
11
- */
12
-
13
- /**
14
- * Class FACTFinder_Campaigns_Block_Advisory_Product
15
- *
16
- * Provides advisory hints to the product view page
17
- *
18
- * @category Mage
19
- * @package FACTFinder_Campaigns
20
- * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
- * @link http://www.flagbit.de
24
- */
25
- class FACTFinder_Campaigns_Block_Advisory_Product extends FACTFinder_Campaigns_Block_Abstract
26
- {
27
-
28
- /**
29
- * @var string
30
- */
31
- protected $_handlerModel = 'factfinder_campaigns/handler_product';
32
-
33
-
34
- /**
35
- * @return \Mage_Core_Model_Abstract
36
- */
37
- protected function _getHandler()
38
- {
39
- return Mage::getSingleton('factfinder_campaigns/handler_product', $this->_getProductIds());
40
- }
41
-
42
-
43
- /**
44
- * @return array
45
- */
46
- protected function _getProductIds()
47
- {
48
- $productIds = array();
49
- if (Mage::registry('current_product')) {
50
- $productIds = array(
51
- Mage::registry('current_product')->getData(Mage::helper('factfinder_campaigns')->getIdFieldName())
52
- );
53
- }
54
-
55
- return $productIds;
56
- }
57
-
58
-
59
- /**
60
- * Get campaign questions and answers
61
- *
62
- * @return array
63
- */
64
- public function getActiveQuestions()
65
- {
66
- $questions = array();
67
-
68
- if ($this->canCampaignBeDisplay()) {
69
- $questions = $this->_getHandler()->getActiveAdvisorQuestions();
70
- }
71
-
72
- return $questions;
73
- }
74
-
75
-
76
- /**
77
- * Check if campaign can be displayed
78
- *
79
- * @return bool
80
- */
81
- protected function canCampaignBeDisplay()
82
- {
83
- return (bool) Mage::registry('current_product');
84
- }
85
-
86
-
87
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/FACTFinder/Campaigns/Block/Advisory/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Advisory_Search extends FACTFinder_Campaigns_Block_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Advisory_Search extends FACTFinder_Campaigns_Block_Abstract
app/code/community/FACTFinder/Campaigns/Block/Feedback/Abstract.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Feedback_Abstract extends FACTFinder_Campaigns_Block_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Feedback_Abstract extends FACTFinder_Campaigns_Block_Abstract
app/code/community/FACTFinder/Campaigns/Block/Feedback/Cart.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -18,8 +18,8 @@
18
  * @category Mage
19
  * @package FACTFinder_Campaigns
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
22
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Campaigns_Block_Feedback_Cart extends FACTFinder_Campaigns_Block_Feedback_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
18
  * @category Mage
19
  * @package FACTFinder_Campaigns
20
  * @author Flagbit Magento Team <magento@flagbit.de>
21
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
22
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
23
  * @link http://www.flagbit.de
24
  */
25
  class FACTFinder_Campaigns_Block_Feedback_Cart extends FACTFinder_Campaigns_Block_Feedback_Abstract
app/code/community/FACTFinder/Campaigns/Block/Feedback/Product.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Feedback_Product extends FACTFinder_Campaigns_Block_Feedback_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Feedback_Product extends FACTFinder_Campaigns_Block_Feedback_Abstract
app/code/community/FACTFinder/Campaigns/Block/Feedback/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Feedback_Search extends FACTFinder_Campaigns_Block_Feedback_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Feedback_Search extends FACTFinder_Campaigns_Block_Feedback_Abstract
app/code/community/FACTFinder/Campaigns/Block/Pushed/Abstract.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Pushed_Abstract extends Mage_Catalog_Block_Product_List_Upsell
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Block_Pushed_Abstract extends Mage_Catalog_Block_Product_List_Upsell
app/code/community/FACTFinder/Campaigns/Block/Pushed/Cart.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Cart extends FACTFinder_Campaigns_Block_Pushed_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Cart extends FACTFinder_Campaigns_Block_Pushed_Abstract
app/code/community/FACTFinder/Campaigns/Block/Pushed/Product.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Product extends FACTFinder_Campaigns_Block_Pushed_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Product extends FACTFinder_Campaigns_Block_Pushed_Abstract
app/code/community/FACTFinder/Campaigns/Block/Pushed/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Search extends FACTFinder_Campaigns_Block_Pushed_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Block_Pushed_Search extends FACTFinder_Campaigns_Block_Pushed_Abstract
app/code/community/FACTFinder/Campaigns/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Helper_Data extends Mage_Core_Helper_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/FACTFinder/Campaigns/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Facade extends FACTFinder_Core_Model_Facade
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Facade extends FACTFinder_Core_Model_Facade
app/code/community/FACTFinder/Campaigns/Model/Handler/Abstract.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Model_Handler_Abstract extends FACTFinder_Core_Model_Handler_Search
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  abstract class FACTFinder_Campaigns_Model_Handler_Abstract extends FACTFinder_Core_Model_Handler_Search
app/code/community/FACTFinder/Campaigns/Model/Handler/Cart.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Cart extends FACTFinder_Campaigns_Model_Handler_Abstract
@@ -43,14 +43,12 @@ class FACTFinder_Campaigns_Model_Handler_Cart extends FACTFinder_Campaigns_Model
43
  {
44
  $quote = Mage::getSingleton('checkout/session')->getQuote();
45
 
46
- $productIds = array();
47
-
48
  /** @var Mage_Sales_Model_Quote_Item $item */
49
  foreach ($quote->getAllItems() as $item) {
50
- $productIds[] = $item->getProduct()->getData(Mage::helper('factfinder_campaigns')->getIdFieldName());
51
  }
52
 
53
- return $productIds;
54
  }
55
 
56
 
@@ -61,7 +59,9 @@ class FACTFinder_Campaigns_Model_Handler_Cart extends FACTFinder_Campaigns_Model
61
  */
62
  public function getCampaigns()
63
  {
64
- $this->_getFacade()->getProductCampaignAdapter()->makeShoppingCartCampaign();
 
 
65
 
66
  return parent::getCampaigns();
67
  }
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Cart extends FACTFinder_Campaigns_Model_Handler_Abstract
43
  {
44
  $quote = Mage::getSingleton('checkout/session')->getQuote();
45
 
 
 
46
  /** @var Mage_Sales_Model_Quote_Item $item */
47
  foreach ($quote->getAllItems() as $item) {
48
+ $this->_productIds[] = $item->getProduct()->getData(Mage::helper('factfinder_campaigns')->getIdFieldName());
49
  }
50
 
51
+ return $this->_productIds;
52
  }
53
 
54
 
59
  */
60
  public function getCampaigns()
61
  {
62
+ if (!empty($this->_productIds)) {
63
+ $this->_getFacade()->getProductCampaignAdapter()->makeShoppingCartCampaign();
64
+ }
65
 
66
  return parent::getCampaigns();
67
  }
app/code/community/FACTFinder/Campaigns/Model/Handler/Product.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Product extends FACTFinder_Campaigns_Model_Handler_Abstract
@@ -56,7 +56,9 @@ class FACTFinder_Campaigns_Model_Handler_Product extends FACTFinder_Campaigns_Mo
56
  */
57
  public function getCampaigns()
58
  {
59
- $this->_getFacade()->getProductCampaignAdapter()->makeProductCampaign();
 
 
60
 
61
  return parent::getCampaigns();
62
  }
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Product extends FACTFinder_Campaigns_Model_Handler_Abstract
56
  */
57
  public function getCampaigns()
58
  {
59
+ if (!empty($this->_productIds)) {
60
+ $this->_getFacade()->getProductCampaignAdapter()->makeProductCampaign();
61
+ }
62
 
63
  return parent::getCampaigns();
64
  }
app/code/community/FACTFinder/Campaigns/Model/Handler/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Search extends FACTFinder_Core_Model_Handler_Search
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Handler_Search extends FACTFinder_Core_Model_Handler_Search
app/code/community/FACTFinder/Campaigns/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Observer
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Observer
app/code/community/FACTFinder/Campaigns/Model/Resource/Pushedproducts/Collection.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
 
@@ -16,8 +16,8 @@
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
20
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Resource_Pushedproducts_Collection
@@ -109,7 +109,7 @@ class FACTFinder_Campaigns_Model_Resource_Pushedproducts_Collection
109
  );
110
  }
111
 
112
- $idFieldName = Mage::helper('factfinder_campaigns')->getIdFieldName();
113
 
114
  if (!empty($productIds)) {
115
  // add Filter to Query
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
 
16
  * @category Mage
17
  * @package FACTFinder_Campaigns
18
  * @author Flagbit Magento Team <magento@flagbit.de>
19
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
20
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
21
  * @link http://www.flagbit.de
22
  */
23
  class FACTFinder_Campaigns_Model_Resource_Pushedproducts_Collection
109
  );
110
  }
111
 
112
+ $idFieldName = Mage::helper('factfinder/search')->getIdFieldName();
113
 
114
  if (!empty($productIds)) {
115
  // add Filter to Query
app/code/community/FACTFinder/Campaigns/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/code/community/FACTFinder/Campaigns/etc/system.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/code/community/FACTFinder/Core/Block/Adminhtml/Exportlink.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Exportlink extends Mage_Adminhtml_Block_System_Config_Form_Field
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Exportlink extends Mage_Adminhtml_Block_System_Config_Form_Field
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attribute.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute extends Mage_Core_Block_Html_Select
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attribute extends Mage_Core_Block_Html_Select
app/code/community/FACTFinder/Core/Block/Adminhtml/Form/Field/Attributes.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Adminhtml_Form_Field_Attributes
app/code/community/FACTFinder/Core/Block/Catalog/Product/List/Toolbar.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,12 +17,13 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar
25
  {
 
26
 
27
  /**
28
  * @var bool
@@ -52,6 +53,17 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
52
  }
53
 
54
  parent::_construct();
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
 
@@ -64,27 +76,21 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
64
  */
65
  public function getPagerUrl($params=array())
66
  {
67
- $sortingId = $this->_getSortingId($params);
68
-
69
- if ($sortingId && $this->_handler) {
70
- $sortings = $this->_handler->getSorting();
71
 
72
- // relevance default and has no directions
73
- if ($sortingId == $this->_orderField) {
74
- $sorting = $sortings[0];
75
- $this->_sortings[$sortingId] = $sorting->getUrl();
76
- } elseif (!isset($this->_sortings[$sortingId])) {
77
- /** @var \FACTFinder\Data\Item $sorting */
78
- foreach ($sortings as $sorting) {
79
- $url = $sorting->getUrl();
80
- if (strpos($url, $sortingId) !== false) {
81
- $this->_sortings[$sortingId] = $sorting->getUrl();
82
- break;
83
- }
84
- }
85
  }
86
  }
87
 
 
 
 
 
88
  if (isset($this->_sortings[$sortingId])) {
89
  return $this->_sortings[$sortingId];
90
  } else {
@@ -100,8 +106,16 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
100
  */
101
  public function getLimitUrl($limit)
102
  {
 
 
 
 
 
 
 
 
103
  $params = array(
104
- $this->getLimitVarName() => $limit,
105
  );
106
 
107
  $query = http_build_query($params);
@@ -114,7 +128,7 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
114
 
115
  if (count($currentRequest) > 1) {
116
  $params = array_pop($currentRequest);
117
- $params = $this->_removeParam($params, 'limit');
118
  $params = $this->_removeParam($params, 'p');
119
 
120
  $currentRequest = array_pop($currentRequest);
@@ -125,23 +139,27 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
125
  }
126
  }
127
 
 
128
  /**
129
  * Uses a given base URL to remove subfolders from the current request path in case Magento is hosted in a
130
  * subdirectory.
131
  *
132
  * @param string $fullPath The full request path.
133
- * @param string $baseUrl The base URL of the Magento installation.
134
  * @return string
135
  */
136
- private function removeBasePathByBaseUrl($fullPath, $baseUrl){
 
137
  $basePath = parse_url($baseUrl, PHP_URL_PATH);
138
  $pos = strpos($fullPath, $basePath);
139
  if ($pos !== false) {
140
  return substr_replace($fullPath, '', $pos, strlen($basePath));
141
  }
 
142
  return $fullPath;
143
  }
144
 
 
145
  /**
146
  * Get sorting id
147
  *
@@ -163,6 +181,28 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
163
  }
164
 
165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  /**
167
  * Get grit products sort order field
168
  *
@@ -222,15 +262,20 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
222
  {
223
  if ($this->_handler && $this->_handler->getSorting()) {
224
  $sortings = $this->_handler->getSorting();
225
-
226
- $this->getRequest()->getQuery();
227
- /** @var \FACTFinder\Data\Item $sorting */
228
- foreach ($sortings as $sorting) {
229
- if ($sorting->isSelected()) {
230
- $url = $sorting->getUrl();
231
- preg_match('/[\?|\&]{1}sort([a-z0-9\_]*?)=/', $url, $matches);
232
- if (isset($matches[1])) {
233
- return $matches[1];
 
 
 
 
 
234
  }
235
  }
236
  }
@@ -248,6 +293,13 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
248
  public function getDirectionVarName()
249
  {
250
  if ($this->_handler) {
 
 
 
 
 
 
 
251
  return 'sort' . $this->getCurrentOrder();
252
  }
253
 
@@ -277,4 +329,212 @@ class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Bl
277
  }
278
 
279
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Catalog_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar
25
  {
26
+ const SORT_PARAM_PATTERN = 'sort([\w\-]*?)';
27
 
28
  /**
29
  * @var bool
53
  }
54
 
55
  parent::_construct();
56
+
57
+ // reset orders if we use the ones from FF
58
+ if ($this->_handler && Mage::helper('factfinder/search')->useSortings()) {
59
+ $this->_availableOrder = array();
60
+ $sortItems = $this->_handler->getSorting();
61
+ if ($sortItems != null) {
62
+ foreach ($sortItems as $item) {
63
+ $this->addOrderToAvailableOrders($item->getLabel(), $item->getLabel());
64
+ }
65
+ }
66
+ }
67
  }
68
 
69
 
76
  */
77
  public function getPagerUrl($params=array())
78
  {
79
+ if (empty($this->_handler)) {
80
+ return parent::getPagerUrl($params);
81
+ }
 
82
 
83
+ if (Mage::helper('factfinder/search')->useSortings()) {
84
+ $sortingUrl = $this->getSortingUrl($params);
85
+ if ($sortingUrl) {
86
+ return $sortingUrl;
 
 
 
 
 
 
 
 
 
87
  }
88
  }
89
 
90
+ $sortingId = $this->_getSortingId($params);
91
+
92
+ $this->initSortings($sortingId);
93
+
94
  if (isset($this->_sortings[$sortingId])) {
95
  return $this->_sortings[$sortingId];
96
  } else {
106
  */
107
  public function getLimitUrl($limit)
108
  {
109
+ $limitUrl = null;
110
+ if ($this->_handler && Mage::helper('factfinder/search')->useResultsPerPageOptions()) {
111
+ $limitUrl = $this->getResultsPerPageOptionUrl($limit);
112
+ if ($limitUrl != null) {
113
+ return $limitUrl;
114
+ }
115
+ }
116
+
117
  $params = array(
118
+ $this->getLimitVarName() => $limit
119
  );
120
 
121
  $query = http_build_query($params);
128
 
129
  if (count($currentRequest) > 1) {
130
  $params = array_pop($currentRequest);
131
+ $params = $this->_removeParam($params, $this->getLimitVarName());
132
  $params = $this->_removeParam($params, 'p');
133
 
134
  $currentRequest = array_pop($currentRequest);
139
  }
140
  }
141
 
142
+
143
  /**
144
  * Uses a given base URL to remove subfolders from the current request path in case Magento is hosted in a
145
  * subdirectory.
146
  *
147
  * @param string $fullPath The full request path.
148
+ * @param string $baseUrl The base URL of the Magento installation.
149
  * @return string
150
  */
151
+ protected function removeBasePathByBaseUrl($fullPath, $baseUrl)
152
+ {
153
  $basePath = parse_url($baseUrl, PHP_URL_PATH);
154
  $pos = strpos($fullPath, $basePath);
155
  if ($pos !== false) {
156
  return substr_replace($fullPath, '', $pos, strlen($basePath));
157
  }
158
+
159
  return $fullPath;
160
  }
161
 
162
+
163
  /**
164
  * Get sorting id
165
  *
181
  }
182
 
183
 
184
+ /**
185
+ * Get sorting Url
186
+ *
187
+ * @param array $params
188
+ *
189
+ * @return bool|string
190
+ */
191
+ protected function getSortingUrl($params)
192
+ {
193
+ if (isset($params[$this->getOrderVarName()])) {
194
+ $sortItems = $this->_handler->getSorting();
195
+ foreach ($sortItems as $sortItem) {
196
+ if ($params[$this->getOrderVarName()] == $sortItem->getLabel()) {
197
+ return $sortItem->getUrl();
198
+ }
199
+ }
200
+ }
201
+
202
+ return false;
203
+ }
204
+
205
+
206
  /**
207
  * Get grit products sort order field
208
  *
262
  {
263
  if ($this->_handler && $this->_handler->getSorting()) {
264
  $sortings = $this->_handler->getSorting();
265
+ if ($sortings != null) {
266
+ $this->getRequest()->getQuery();
267
+ /** @var \FACTFinder\Data\Item $sorting */
268
+ foreach ($sortings as $sorting) {
269
+ if ($sorting->isSelected()) {
270
+ if (Mage::helper('factfinder/search')->useSortings()) {
271
+ return $sorting->getLabel();
272
+ }
273
+
274
+ $url = $sorting->getUrl();
275
+ preg_match('/[\?|\&]{1}'.self::SORT_PARAM_PATTERN.'=/', $url, $matches);
276
+ if (isset($matches[1])) {
277
+ return $matches[1];
278
+ }
279
  }
280
  }
281
  }
293
  public function getDirectionVarName()
294
  {
295
  if ($this->_handler) {
296
+ if (Mage::helper('factfinder/search')->useSortings()) {
297
+ foreach ($this->getRequest()->getParams() as $key => $value) {
298
+ if (preg_match('/'.self::SORT_PARAM_PATTERN.'/', $key)) {
299
+ return $key;
300
+ }
301
+ }
302
+ }
303
  return 'sort' . $this->getCurrentOrder();
304
  }
305
 
329
  }
330
 
331
 
332
+ /**
333
+ * Avoid resetting orders by magento if we should use ours
334
+ *
335
+ * @param array $orders
336
+ *
337
+ * @return $this
338
+ */
339
+ public function setAvailableOrders($orders)
340
+ {
341
+ if (Mage::helper('factfinder/search')->useSortings()) {
342
+ return $this;
343
+ }
344
+
345
+ return parent::setAvailableOrders($orders);
346
+ }
347
+
348
+
349
+ /**
350
+ * Init sortings and map them according to parameters in the query
351
+ *
352
+ * @param string $sortingId
353
+ *
354
+ * @return $this
355
+ */
356
+ protected function initSortings($sortingId)
357
+ {
358
+ if (!$sortingId || !$this->_handler) {
359
+ return $this;
360
+ }
361
+
362
+ $sortings = $this->_handler->getSorting();
363
+
364
+ // relevance default and has no directions
365
+ if ($sortingId == $this->_orderField) {
366
+ $sorting = $sortings[0];
367
+ $this->_sortings[$sortingId] = $sorting->getUrl();
368
+ } elseif (!isset($this->_sortings[$sortingId])) {
369
+ /** @var \FACTFinder\Data\Item $sorting */
370
+ foreach ($sortings as $sorting) {
371
+ $url = $sorting->getUrl();
372
+ if (strpos($url, $sortingId) !== false) {
373
+ $this->_sortings[$sortingId] = $sorting->getUrl();
374
+ break;
375
+ }
376
+ }
377
+ }
378
+
379
+ return $this;
380
+ }
381
+
382
+
383
+ /**
384
+ * Returns url model class name
385
+ *
386
+ * @return string
387
+ */
388
+ protected function _getUrlModelClass()
389
+ {
390
+ return 'factfinder/url';
391
+ }
392
+
393
+
394
+ /**
395
+ * Retrieve Pager URL
396
+ *
397
+ * @param string $order
398
+ * @param string $direction
399
+ *
400
+ * @return string
401
+ */
402
+ public function getOrderUrl($order, $direction)
403
+ {
404
+ if ($order === null
405
+ && Mage::helper('factfinder/search')->useSortings()
406
+ && $this->getRequest()->getParam($this->getDirectionVarName())
407
+ ) {
408
+ // we use raw value since the one from magento doesn't use redirect url
409
+ $url = trim(Mage::getBaseUrl('web'), '/');
410
+ $request = $this->removeBasePathByBaseUrl($_SERVER['REQUEST_URI'], $url);
411
+ $request = preg_replace(
412
+ "/{$this->getDirectionVarName()}=([^&]+)/",
413
+ $this->getDirectionVarName() . '=' . $direction,
414
+ $request
415
+ );
416
+ return trim(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB), '/') . $request;
417
+ }
418
+
419
+ return parent::getOrderUrl($order, $direction);
420
+ }
421
+
422
+
423
+ /**
424
+ * Retrieve available results per page values from search response.
425
+ *
426
+ * @return array
427
+ */
428
+ public function getAvailableLimit()
429
+ {
430
+ if ($this->_handler && Mage::helper('factfinder/search')->useResultsPerPageOptions()) {
431
+ $resultsPerPageOptions = $this->_handler->getResultsPerPageOptions();
432
+ if ($resultsPerPageOptions != null) {
433
+ /** @var \FACTFinder\Data\Item $resultsPerPageOptions */
434
+ foreach ($resultsPerPageOptions as $option) {
435
+ $this->_availableLimit[] = $option->getLabel();
436
+ }
437
+ }
438
+ }
439
+
440
+ if (!empty($this->_availableLimit)) {
441
+ return $this->_availableLimit;
442
+ }
443
+
444
+ return parent::getAvailableLimit();
445
+ }
446
+
447
+
448
+ /**
449
+ * Get specified results per page value.
450
+ *
451
+ * @return string
452
+ */
453
+ public function getLimit()
454
+ {
455
+ if ($this->_handler && Mage::helper('factfinder/search')->useResultsPerPageOptions()) {
456
+ $currentLimit = $this->getRequest()->getParam($this->getLimitVarName());
457
+ if ($currentLimit == null && $this->_handler->getResultsPerPageOptions() != null) {
458
+ $currentLimit = $this->_handler->getResultsPerPageOptions()->getDefaultOption()->getLabel();
459
+ }
460
+
461
+ return $currentLimit;
462
+ }
463
+
464
+ return parent::getLimit();
465
+ }
466
+
467
+
468
+ /**
469
+ * Checks if the given results per page value is selected.
470
+ *
471
+ * @param string $limit
472
+ *
473
+ * @return bool
474
+ */
475
+ public function isLimitCurrent($limit)
476
+ {
477
+ if ($this->_handler && Mage::helper('factfinder/search')->useResultsPerPageOptions()) {
478
+ return $this->getResultsPerPageOptionLabel($limit) == $this->getLimit();
479
+ }
480
+
481
+ return parent::isLimitCurrent($limit);
482
+ }
483
+
484
+
485
+ /**
486
+ * Returns the results per page value for a key.
487
+ *
488
+ * @param string $limit
489
+ *
490
+ * @return string
491
+ */
492
+ protected function getResultsPerPageOptionLabel($limit)
493
+ {
494
+ $resultsPerPageOptions = $this->_handler->getResultsPerPageOptions();
495
+ if ($resultsPerPageOptions != null) {
496
+ if (isset($resultsPerPageOptions[$limit])) {
497
+ return $resultsPerPageOptions[$limit]->getLabel();
498
+ }
499
+ }
500
+
501
+ return $limit;
502
+ }
503
+
504
+
505
+ /**
506
+ * Returns the results per page url for a key.
507
+ *
508
+ * @param string $limit
509
+ *
510
+ * @return string
511
+ */
512
+ protected function getResultsPerPageOptionUrl($limit)
513
+ {
514
+ $resultsPerPageOptions = $this->_handler->getResultsPerPageOptions();
515
+ if ($resultsPerPageOptions != null && isset($resultsPerPageOptions[$limit])) {
516
+ return $resultsPerPageOptions[$limit]->getUrl();
517
+ }
518
+
519
+ return null;
520
+ }
521
+
522
+
523
+ /**
524
+ * Returns the default results per page value.
525
+ *
526
+ * @return string
527
+ */
528
+ public function getDefaultPerPageValue()
529
+ {
530
+ if ($this->_handler && Mage::helper('factfinder/search')->useResultsPerPageOptions()
531
+ && $this->_handler->getResultsPerPageOptions() != null
532
+ ) {
533
+ return $this->_handler->getResultsPerPageOptions()->getDefaultOption()->getLabel();
534
+ }
535
+
536
+ return parent::getDefaultPerPageValue();
537
+ }
538
+
539
+
540
  }
app/code/community/FACTFinder/Core/Block/Catalog/Product/Pager.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Catalog_Product_Pager extends Mage_Page_Block_Html_Pager
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Block_Catalog_Product_Pager extends Mage_Page_Block_Html_Pager
app/code/community/FACTFinder/Core/Block/CatalogSearch/Layer.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View.php
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Block_CatalogSearch_Layer extends Mage_CatalogSearch_Block_Layer
13
+ {
14
+
15
+
16
+ /**
17
+ * Rewrite the block to prevent using default layer model
18
+ *
19
+ * @return FACTFinder_Core_Model_CatalogSearch_Layer|Mage_Catalog_Model_Layer
20
+ */
21
+ public function getLayer()
22
+ {
23
+ if (Mage::helper('factfinder')->isEnabled()) {
24
+ return Mage::getSingleton('factfinder/catalogSearch_layer');
25
+ }
26
+
27
+ return parent::getLayer();
28
+ }
29
+
30
+
31
+ /**
32
+ * @return bool
33
+ */
34
+ public function canShowBlock()
35
+ {
36
+ if (Mage::helper('factfinder')->isEnabled()) {
37
+ return (bool) $this->getLayer()->getProductCollection()->getSize();
38
+ }
39
+
40
+ return parent::canShowBlock();
41
+ }
42
+
43
+
44
+ }
app/code/community/FACTFinder/Core/Block/EnterpriseSearch/Layer.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View.php
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Block_EnterpriseSearch_Layer extends Enterprise_Search_Block_Catalogsearch_Layer
13
+ {
14
+
15
+
16
+ /**
17
+ * Rewrite the block to prevent using default layer model
18
+ *
19
+ * @return FACTFinder_Core_Model_CatalogSearch_Layer|Mage_Catalog_Model_Layer
20
+ */
21
+ public function getLayer()
22
+ {
23
+ if (Mage::helper('factfinder')->isEnabled()) {
24
+ return Mage::getSingleton('factfinder/catalogSearch_layer');
25
+ }
26
+
27
+ return parent::getLayer();
28
+ }
29
+
30
+
31
+ /**
32
+ * @return bool
33
+ */
34
+ public function canShowBlock()
35
+ {
36
+ if (Mage::helper('factfinder')->isEnabled()) {
37
+ return (bool) $this->getLayer()->getProductCollection()->getSize();
38
+ }
39
+
40
+ return parent::canShowBlock();
41
+ }
42
+
43
+
44
+ }
app/code/community/FACTFinder/Core/Helper/Backend.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Helper_Backend extends Mage_Core_Helper_Abstract
@@ -179,10 +179,11 @@ class FACTFinder_Core_Helper_Backend extends Mage_Core_Helper_Abstract
179
  * Check configuration data by contacting FACT-Finder servers.
180
  *
181
  * @param array $configData
 
182
  *
183
  * @return array
184
  */
185
- public function checkConfigData($configData)
186
  {
187
  $dataArray = $this->_getCompleteFieldsetData($configData);
188
  $data = new Varien_Object($dataArray);
@@ -202,7 +203,7 @@ class FACTFinder_Core_Helper_Backend extends Mage_Core_Helper_Abstract
202
  }
203
 
204
  if (count($errors) == 0) {
205
- $checkStatusHandler = Mage::getSingleton('factfinder/handler_status', $dataArray);
206
  if (!$checkStatusHandler->checkStatus()) {
207
  $errors = $checkStatusHandler->getErrorMessages();
208
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Helper_Backend extends Mage_Core_Helper_Abstract
179
  * Check configuration data by contacting FACT-Finder servers.
180
  *
181
  * @param array $configData
182
+ * @param int $storeId
183
  *
184
  * @return array
185
  */
186
+ public function checkConfigData($configData, $storeId = 0)
187
  {
188
  $dataArray = $this->_getCompleteFieldsetData($configData);
189
  $data = new Varien_Object($dataArray);
203
  }
204
 
205
  if (count($errors) == 0) {
206
+ $checkStatusHandler = Mage::getSingleton('factfinder/handler_status', array('store_id' => $storeId));
207
  if (!$checkStatusHandler->checkStatus()) {
208
  $errors = $checkStatusHandler->getErrorMessages();
209
  }
app/code/community/FACTFinder/Core/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,14 +17,16 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
25
  {
26
 
27
  const SKIP_FF_PARAM_NAME = 'skip_ff';
 
 
28
 
29
 
30
  /**
@@ -36,7 +38,9 @@ class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
36
  */
37
  public function isEnabled($feature = null)
38
  {
39
- if ($this->_getRequest()->getParam('skip_ff')) {
 
 
40
  return false;
41
  }
42
 
@@ -76,35 +80,6 @@ class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
76
  }
77
 
78
 
79
- /**
80
- * Update xml file in etc/modules according to backend config
81
- * Return true, if the file was written and false if an error occurred
82
- *
83
- * @param string $module
84
- * @param bool $isActive
85
- *
86
- * @return bool
87
- */
88
- public function updateModuleState($module, $isActive = true)
89
- {
90
- $dir = Mage::getBaseDir('etc') . DS . 'modules' . DS;
91
- $file = $dir . $module . '.xml';
92
-
93
- if (!file_exists($file)) {
94
- return;
95
- }
96
-
97
- $xml = new DOMDocument();
98
- $xml->load($file);
99
- foreach ($xml->getElementsByTagName('active') as $item) {
100
- $item->nodeValue = $isActive ? 'true' : 'false';
101
- }
102
-
103
- // silencing is not good, but we only need the result of the operation
104
- return (bool) @$xml->save($file);
105
- }
106
-
107
-
108
  /**
109
  * Redirect to the same url but with the skip parameter
110
  *
@@ -113,7 +88,7 @@ class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
113
  public function performFallbackRedirect()
114
  {
115
  if (!$this->_getRequest()->getParam(self::SKIP_FF_PARAM_NAME)
116
- && Mage::getStoreConfig('factfinder/fallback/use_fallback')
117
  ) {
118
  $url = Mage::helper('core/url')->getCurrentUrl();
119
  $url .= strpos($url, '?') ? '&' : '?';
@@ -126,32 +101,15 @@ class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
126
 
127
 
128
  /**
129
- * Check whether import must be triggered
130
  *
131
  * @param null|int $storeId
132
  *
133
- * @return bool
134
  */
135
- public function isImportTriggerEnabled($storeId = null)
136
  {
137
- return Mage::getStoreConfigFlag('factfinder/export/trigger_data_import', $storeId);
138
- }
139
-
140
-
141
- /**
142
- * Get list of channels for store
143
- *
144
- * @param null|int $storeId
145
- *
146
- * @return array
147
- */
148
- public function getStoreChannels($storeId = null)
149
- {
150
- $primary = Mage::getStoreConfig('factfinder/search/channel', $storeId);
151
- $secondary = Mage::getStoreConfig('factfinder/search/secondary_channels', $storeId);
152
- $secondary = explode(';', $secondary);
153
-
154
- return array_merge(array($primary), $secondary);
155
  }
156
 
157
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Data extends Mage_Core_Helper_Abstract
25
  {
26
 
27
  const SKIP_FF_PARAM_NAME = 'skip_ff';
28
+ const USE_FALLBACK_CONFIG_PATH = 'factfinder/fallback/use_fallback';
29
+ const PRIMARY_CHANNEL_CONFIG_PATH = 'factfinder/search/channel';
30
 
31
 
32
  /**
38
  */
39
  public function isEnabled($feature = null)
40
  {
41
+ if ($this->_getRequest()->getParam(self::SKIP_FF_PARAM_NAME)
42
+ && Mage::getStoreConfig(self::USE_FALLBACK_CONFIG_PATH)
43
+ ) {
44
  return false;
45
  }
46
 
80
  }
81
 
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  /**
84
  * Redirect to the same url but with the skip parameter
85
  *
88
  public function performFallbackRedirect()
89
  {
90
  if (!$this->_getRequest()->getParam(self::SKIP_FF_PARAM_NAME)
91
+ && Mage::getStoreConfig(self::USE_FALLBACK_CONFIG_PATH)
92
  ) {
93
  $url = Mage::helper('core/url')->getCurrentUrl();
94
  $url .= strpos($url, '?') ? '&' : '?';
101
 
102
 
103
  /**
104
+ * Get primary channel for store
105
  *
106
  * @param null|int $storeId
107
  *
108
+ * @return string|null
109
  */
110
+ public function getPrimaryChannel($storeId = null)
111
  {
112
+ return Mage::getStoreConfig(self::PRIMARY_CHANNEL_CONFIG_PATH, $storeId);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  }
114
 
115
 
app/code/community/FACTFinder/Core/Helper/Debug.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
@@ -89,17 +89,18 @@ class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
89
  * Debug Log to file var/log/factfinder.log
90
  *
91
  * @param mixed $message
 
92
  *
93
  * @return $this
94
  */
95
- public function log($message)
96
  {
97
  if (!Mage::getConfig()) {
98
  return $this;
99
  }
100
 
101
  try {
102
- if ($this->isDebugMode()) {
103
  Mage::log($message, null, self::LOG_FILE_NAME, true);
104
  }
105
  } catch (Exception $e){
@@ -159,7 +160,7 @@ class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
159
  */
160
  public function warn($message)
161
  {
162
- return $this->log('WARNING: ' . $message);
163
  }
164
 
165
 
@@ -172,7 +173,7 @@ class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
172
  */
173
  public function error($message)
174
  {
175
- return $this->log('ERROR: ' . $message);
176
  }
177
 
178
 
@@ -185,7 +186,7 @@ class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
185
  */
186
  public function fatal($message)
187
  {
188
- return $this->log('FATAL ERROR: ' . $message);
189
  }
190
 
191
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Debug extends Mage_Core_Helper_Abstract
89
  * Debug Log to file var/log/factfinder.log
90
  *
91
  * @param mixed $message
92
+ * @param bool $ignoreDebugConfig pass true if debug mode configuration should be ignored
93
  *
94
  * @return $this
95
  */
96
+ public function log($message, $ignoreDebugConfig=false)
97
  {
98
  if (!Mage::getConfig()) {
99
  return $this;
100
  }
101
 
102
  try {
103
+ if ($this->isDebugMode() || $ignoreDebugConfig) {
104
  Mage::log($message, null, self::LOG_FILE_NAME, true);
105
  }
106
  } catch (Exception $e){
160
  */
161
  public function warn($message)
162
  {
163
+ return $this->log('WARNING: ' . $message, true);
164
  }
165
 
166
 
173
  */
174
  public function error($message)
175
  {
176
+ return $this->log('ERROR: ' . $message, true);
177
  }
178
 
179
 
186
  */
187
  public function fatal($message)
188
  {
189
+ return $this->log('FATAL ERROR: ' . $message, true);
190
  }
191
 
192
 
app/code/community/FACTFinder/Core/Helper/Export.php ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Export.php
4
+ *
5
+ * @category Mage
6
+ * @package magento
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Helper_Export extends Mage_Core_Helper_Abstract
13
+ {
14
+
15
+ const EXPORT_CONFIG_PATH = 'factfinder/export';
16
+ const FTP_HOST = 'ftp_host';
17
+ const FTP_PASSWORD = 'ftp_password';
18
+ const FTP_USER = 'ftp_user';
19
+ const FTP_PORT = 'ftp_port';
20
+ const FTP_DIR = 'ftp_path';
21
+ const FTP_SECURE = 'ftp_ssl';
22
+ const FTP_ENABLED = 'use_ftp';
23
+ const IMPORT_DELAY_ENABLED = 'import_delay_enabled';
24
+ const IMPORT_DELAY_KEY = 'factfinder_import_delay';
25
+ const ARCHIVE_PATTERN = 'store_%s_export.zip';
26
+ const EXPORT_TRIGGER_DELAY = 90;
27
+
28
+ /**
29
+ * @var int
30
+ */
31
+ protected $_storeId = 0;
32
+
33
+
34
+ /**
35
+ * @param int $storeId
36
+ *
37
+ * @return $this
38
+ */
39
+ public function setStoreId($storeId)
40
+ {
41
+ $this->_storeId = $storeId;
42
+
43
+ return $this;
44
+ }
45
+
46
+
47
+ /**
48
+ * Get array of export types
49
+ * The order is normally important
50
+ *
51
+ * @return array
52
+ */
53
+ public function getExportTypes()
54
+ {
55
+ return array(
56
+ 'stock',
57
+ 'price',
58
+ 'product',
59
+ );
60
+ }
61
+
62
+
63
+ /**
64
+ * Check if FTP upload is enabled for store
65
+ *
66
+ * @param int $storeId
67
+ *
68
+ * @return bool
69
+ */
70
+ public function useFtp($storeId = 0)
71
+ {
72
+ return (bool) $this->getExportConfigValue(self::FTP_ENABLED, $storeId);
73
+ }
74
+
75
+
76
+ /**
77
+ * Get export config value
78
+ *
79
+ * @param string $field
80
+ * @param int $storeId
81
+ *
82
+ * @return null|string
83
+ */
84
+ public function getExportConfigValue($field, $storeId)
85
+ {
86
+ if (!$storeId) {
87
+ $storeId = $this->_storeId;
88
+ }
89
+
90
+ return Mage::app()->getStore($storeId)->getConfig(self::EXPORT_CONFIG_PATH . '/' . $field);
91
+ }
92
+
93
+
94
+ /**
95
+ * Get FTP host from config
96
+ *
97
+ * @param int $storeId
98
+ *
99
+ * @return null|string
100
+ */
101
+ public function getFtpHost($storeId = 0)
102
+ {
103
+ return $this->getExportConfigValue(self::FTP_HOST, $storeId);
104
+ }
105
+
106
+
107
+ /**
108
+ * Get FTP port from config
109
+ *
110
+ * @param int $storeId
111
+ *
112
+ * @return null|string
113
+ */
114
+ public function getFtpPort($storeId = 0)
115
+ {
116
+ return $this->getExportConfigValue(self::FTP_PORT, $storeId);
117
+ }
118
+
119
+
120
+ /**
121
+ * Get FTP password from config
122
+ *
123
+ * @param int $storeId
124
+ *
125
+ * @return null|string
126
+ */
127
+ public function getFtpPassword($storeId = 0)
128
+ {
129
+ return $this->getExportConfigValue(self::FTP_PASSWORD, $storeId);
130
+ }
131
+
132
+
133
+ /**
134
+ * Get FTP user from config
135
+ *
136
+ * @param int $storeId
137
+ *
138
+ * @return null|string
139
+ */
140
+ public function getFtpUser($storeId = 0)
141
+ {
142
+ return $this->getExportConfigValue(self::FTP_USER, $storeId);
143
+ }
144
+
145
+
146
+ /**
147
+ * Get FTP directory from config
148
+ *
149
+ * @param int $storeId
150
+ *
151
+ * @return null|string
152
+ */
153
+ public function getFtpDirectory($storeId = 0)
154
+ {
155
+ return $this->getExportConfigValue(self::FTP_DIR, $storeId);
156
+ }
157
+
158
+
159
+ /**
160
+ * Check if SSL should be used
161
+ *
162
+ * @param int $storeId
163
+ *
164
+ * @return null|string
165
+ */
166
+ public function getFtpSecure($storeId = 0)
167
+ {
168
+ return $this->getExportConfigValue(self::FTP_SECURE, $storeId);
169
+ }
170
+
171
+
172
+ /**
173
+ * Get export directory path
174
+ *
175
+ * @return string
176
+ */
177
+ public function getExportDirectory()
178
+ {
179
+ return Mage::getBaseDir('var') . DS . 'factfinder';
180
+ }
181
+
182
+
183
+ /**
184
+ * Check whether import must be triggered
185
+ *
186
+ * @param null|int $storeId
187
+ *
188
+ * @return bool
189
+ */
190
+ public function isImportTriggerEnabled($storeId = null)
191
+ {
192
+ return Mage::getStoreConfigFlag('factfinder/export/trigger_data_import', $storeId);
193
+ }
194
+
195
+
196
+ /**
197
+ * Check whether import trigger delay is enabled
198
+ *
199
+ * @param int $storeId
200
+ *
201
+ * @return bool
202
+ */
203
+ public function isImportDelayEnabled($storeId)
204
+ {
205
+ // this usually returns false for WINDOWS,
206
+ // since forking processes is not supported there
207
+ if (!function_exists('pcntl_fork')) {
208
+ return false;
209
+ }
210
+
211
+ return (bool) $this->getExportConfigValue(self::IMPORT_DELAY_ENABLED, $storeId);
212
+ }
213
+
214
+
215
+ /**
216
+ * Create archive with export files for store.
217
+ * No archive will be created if no export files exist.
218
+ *
219
+ * @param int $storeId
220
+ *
221
+ * @return string Archive name, even if it was not created.
222
+ */
223
+ public function archiveFiles($storeId)
224
+ {
225
+ $dir = $this->getExportDirectory();
226
+
227
+ $archiveName = sprintf(self::ARCHIVE_PATTERN, $storeId);
228
+
229
+ $zip = new ZipArchive();
230
+ $zip->open($dir . DS . $archiveName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
231
+ foreach ($this->getExportTypes() as $type) {
232
+ $model = Mage::getModel('factfinder/export_' . $type);
233
+ $filename = $model->getFilenameForStore($storeId);
234
+ $zip->addFile($dir . DS . $filename, $filename);
235
+ }
236
+
237
+ $zip->close();
238
+
239
+ return $dir . DS . $archiveName;
240
+ }
241
+
242
+
243
+ /**
244
+ * Get duration of import delay in seconds for import type
245
+ *
246
+ * @param string $type
247
+ *
248
+ * @return int
249
+ */
250
+ public function getImportDelay($type)
251
+ {
252
+ $key = self::IMPORT_DELAY_KEY;
253
+ $delay = Mage::registry($key);
254
+
255
+ // if this type of import was already calculated
256
+ $typeKey = self::IMPORT_DELAY_KEY . '_' . $type;
257
+ if (Mage::registry($typeKey)) {
258
+ return Mage::registry($typeKey);
259
+ }
260
+
261
+ $delay +=self::EXPORT_TRIGGER_DELAY;
262
+
263
+ // save the new base value in registry
264
+ Mage::unregister($key);
265
+ Mage::register($key, $delay);
266
+
267
+ // save type
268
+ Mage::register($typeKey, $delay);
269
+
270
+ return $delay;
271
+ }
272
+
273
+
274
+ }
app/code/community/FACTFinder/Core/Helper/Rewrite.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Rewrite.php
4
+ *
5
+ * @category Mage
6
+ * @package magento
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Helper_Rewrite extends Mage_Core_Helper_Abstract
13
+ {
14
+
15
+
16
+ /**
17
+ * Get all factfinder submodules
18
+ * Based on config values so can be a bit not exact
19
+ *
20
+ * @return array
21
+ */
22
+ protected function getAllModules()
23
+ {
24
+ $modules = array(
25
+ 'FACTFinder_Core',
26
+ );
27
+
28
+ foreach (Mage::app()->getStore()->getConfig('factfinder/modules') as $module => $status) {
29
+ $modules[] = 'FACTFinder_' . ucwords($module);
30
+ }
31
+
32
+ return $modules;
33
+ }
34
+
35
+
36
+ /**
37
+ * Get rewritten blocks or models for module
38
+ *
39
+ * @param string $module
40
+ * @param string $type blocks|models
41
+ *
42
+ * @return array
43
+ */
44
+ protected function getModuleRewrites($module, $type)
45
+ {
46
+ $result = array();
47
+
48
+ if (!Mage::helper('core')->isModuleEnabled($module)) {
49
+ return $result;
50
+ }
51
+
52
+ $file = Mage::getModuleDir('etc', $module) . DS . 'config.xml';
53
+ $configModel = new Varien_Simplexml_Config($file);
54
+
55
+ $rewrites = $configModel->getXpath("*/{$type}/*/rewrite");
56
+ if (empty($rewrites)) {
57
+ return $result;
58
+ }
59
+
60
+ /** @var Varien_Simplexml_Element $item */
61
+ foreach ( $rewrites as $item) {
62
+ $module = $item->getParent()->getName();
63
+ foreach ($item->children() as $child) {
64
+ $result[$module . '/' . $child->getName()] = $child->asArray();
65
+ }
66
+ }
67
+
68
+ return $result;
69
+ }
70
+
71
+
72
+ /**
73
+ * Check all rewritten blocks and models
74
+ *
75
+ * @return array
76
+ */
77
+ public function checkRewrites()
78
+ {
79
+ $result = array();
80
+ foreach ($this->getAllModules() as $module) {
81
+ // check blocks
82
+ $rewrittenBlocks = $this->getModuleRewrites($module, 'blocks');
83
+ foreach ($rewrittenBlocks as $block => $neededClassName) {
84
+ $actualClassName = Mage::getConfig()->getBlockClassName($block);
85
+ if ($neededClassName !== $actualClassName) {
86
+ $result[] = $this->getWrongRewriteMessage($neededClassName, $actualClassName);
87
+ }
88
+ }
89
+
90
+ // check models
91
+ $rewrittenModels = $this->getModuleRewrites($module, 'models');
92
+ foreach ($rewrittenModels as $model => $neededClassName) {
93
+ $actualClassName = Mage::getConfig()->getModelClassName($model);
94
+ if ($neededClassName !== $actualClassName) {
95
+ $result[] = $this->getWrongRewriteMessage($neededClassName, $actualClassName);
96
+ }
97
+ }
98
+ }
99
+
100
+ return $result;
101
+ }
102
+
103
+
104
+ /**
105
+ * Get message about wrong class received (not rewritten or rewritten by a wrong module)
106
+ *
107
+ * @return string
108
+ */
109
+ protected function getWrongRewriteMessage($neededClassName, $actualClassName)
110
+ {
111
+ return Mage::helper('factfinder')->__(
112
+ 'Rewrite warning: instead of <i>%s</i> got <i>%s</i>',
113
+ $neededClassName,
114
+ $actualClassName
115
+ );
116
+ }
117
+
118
+
119
+ }
app/code/community/FACTFinder/Core/Helper/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Search extends Mage_Core_Helper_Abstract
@@ -32,6 +32,8 @@ class FACTFinder_Core_Helper_Search extends Mage_Core_Helper_Abstract
32
 
33
  const REQUEST_ID_PREFIX = 'FACTFINDER_';
34
 
 
 
35
 
36
  /**
37
  * Retrieve query model object
@@ -98,7 +100,7 @@ class FACTFinder_Core_Helper_Search extends Mage_Core_Helper_Abstract
98
  {
99
  $idFieldName = Mage::getStoreConfig(self::XML_CONFIG_PATH_PRODUCT_IDENTIFIER);
100
  if (!$idFieldName) {
101
- $idFieldName = $this->getEntity()->getIdFieldName();
102
  }
103
 
104
  return $idFieldName;
@@ -181,6 +183,26 @@ class FACTFinder_Core_Helper_Search extends Mage_Core_Helper_Abstract
181
  }
182
 
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  /**
185
  * Redirect to product page
186
  *
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Helper_Search extends Mage_Core_Helper_Abstract
32
 
33
  const REQUEST_ID_PREFIX = 'FACTFINDER_';
34
 
35
+ const DEFAULT_ENTITY_ID_FIELD_NAME = 'entity_id';
36
+
37
 
38
  /**
39
  * Retrieve query model object
100
  {
101
  $idFieldName = Mage::getStoreConfig(self::XML_CONFIG_PATH_PRODUCT_IDENTIFIER);
102
  if (!$idFieldName) {
103
+ $idFieldName = self::DEFAULT_ENTITY_ID_FIELD_NAME;
104
  }
105
 
106
  return $idFieldName;
183
  }
184
 
185
 
186
+ /**
187
+ * Check if we should use sorting items delivered from FF
188
+ *
189
+ * @return bool
190
+ */
191
+ public function useSortings()
192
+ {
193
+ return (bool) Mage::app()->getStore()->getConfig('factfinder/config/use_sortings');
194
+ }
195
+
196
+ /**
197
+ * Check if we should use results per page items delivered from FF
198
+ *
199
+ * @return bool
200
+ */
201
+ public function useResultsPerPageOptions()
202
+ {
203
+ return (bool) Mage::app()->getStore()->getConfig('factfinder/config/use_resultsPerPage');
204
+ }
205
+
206
  /**
207
  * Redirect to product page
208
  *
app/code/community/FACTFinder/Core/Model/Autoloader.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -20,8 +20,8 @@
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  * @link http://www.flagbit.de
26
  */
27
  class FACTFinder_Core_Model_Autoloader
@@ -63,9 +63,11 @@ class FACTFinder_Core_Model_Autoloader
63
  $classFile = str_replace('\\', '/', $class) . '.php';
64
 
65
  if (strpos($classFile, '/') !== false) {
66
- include $classFile;
 
 
67
  }
68
  }
69
 
70
 
71
- }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
27
  class FACTFinder_Core_Model_Autoloader
63
  $classFile = str_replace('\\', '/', $class) . '.php';
64
 
65
  if (strpos($classFile, '/') !== false) {
66
+ if (file_exists(stream_resolve_include_path($classFile))) {
67
+ include $classFile;
68
+ }
69
  }
70
  }
71
 
72
 
73
+ }
app/code/community/FACTFinder/Core/Model/CatalogSearch/Layer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_CatalogSearch_Layer extends Mage_CatalogSearch_Model_Layer
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_CatalogSearch_Layer extends Mage_CatalogSearch_Model_Layer
app/code/community/FACTFinder/Core/Model/CatalogSearch/Query.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Query.php
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+
13
+ class FACTFinder_Core_Model_CatalogSearch_Query extends Mage_CatalogSearch_Model_Query
14
+ {
15
+
16
+
17
+ /**
18
+ * Rewrite the model to prevent savin data to the db if FF is enabled
19
+ *
20
+ * @return $this|\Mage_Core_Model_Abstract
21
+ *
22
+ * @throws \Exception
23
+ */
24
+ public function save()
25
+ {
26
+ if (Mage::helper('factfinder')->isEnabled()) {
27
+ return $this;
28
+ }
29
+
30
+ return parent::save();
31
+ }
32
+
33
+
34
+ }
app/code/community/FACTFinder/Core/Model/Export/Observer.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Observer.php
4
+ *
5
+ * @category Mage
6
+ * @package magento
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Model_Export_Observer
13
+ {
14
+
15
+
16
+ /**
17
+ * @param Varien_Object $observer
18
+ *
19
+ * @return void
20
+ */
21
+ public function triggerImportAfterExport($observer)
22
+ {
23
+ $helper = Mage::helper('factfinder');
24
+ $storeId = $observer->getStoreId();
25
+
26
+ $this->uploadFileToFtp($observer);
27
+
28
+ if ($helper->isEnabled() && Mage::helper('factfinder/export')->isImportTriggerEnabled($storeId)) {
29
+ $channel = $helper->getPrimaryChannel($storeId);
30
+ $download = !Mage::helper('factfinder/export')->useFtp($storeId);
31
+ $facade = Mage::getModel('factfinder/facade');
32
+ $facade->setStoreId($storeId);
33
+ $facade->triggerDataImport($channel, $download);
34
+ }
35
+ }
36
+
37
+
38
+ /**
39
+ * Archive and export files and upload them to FTP
40
+ *
41
+ * @param Varien_Object $observer
42
+ *
43
+ * @return void
44
+ */
45
+ protected function uploadFileToFtp($observer)
46
+ {
47
+ $helper = Mage::helper('factfinder/export');
48
+ $storeId = $observer->getStoreId();
49
+
50
+ if (!$helper->useFtp($storeId)) {
51
+ return;
52
+ }
53
+
54
+ $file = $helper->archiveFiles($storeId);
55
+
56
+ if (!is_file($file)) {
57
+ return;
58
+ }
59
+
60
+ $helper->setStoreId($storeId);
61
+
62
+ try {
63
+ $ftp = Mage::getModel('factfinder/ftp', array(
64
+ $helper->getFtpHost(),
65
+ $helper->getFtpPort(),
66
+ $helper->getFtpSecure()
67
+ ));
68
+ $ftp->login($helper->getFtpUser(), $helper->getFtpPassword())
69
+ ->chDir($helper->getFtpDirectory())
70
+ ->upload($file)
71
+ ->close();
72
+ } catch (Exception $e) {
73
+ Mage::logException($e);
74
+ }
75
+ }
76
+
77
+
78
+ /**
79
+ * Export all types for all stores
80
+ *
81
+ * @param Varien_Object $observer
82
+ *
83
+ * @return void
84
+ */
85
+ public function exportAll($observer)
86
+ {
87
+ foreach (Mage::helper('factfinder/export')->getExportTypes() as $type) {
88
+ Mage::getModel('factfinder/export_' . $type)->saveAll();
89
+ }
90
+ }
91
+
92
+
93
+ }
app/code/community/FACTFinder/Core/Model/Export/Price.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,13 +19,15 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Price extends Mage_Core_Model_Resource_Db_Abstract
27
  {
28
 
 
 
29
  /**
30
  * defines Export Columns
31
  * @var array
@@ -53,6 +55,19 @@ class FACTFinder_Core_Model_Export_Price extends Mage_Core_Model_Resource_Db_Abs
53
  }
54
 
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  /**
57
  * Get file handler instance for store
58
  *
@@ -65,8 +80,8 @@ class FACTFinder_Core_Model_Export_Price extends Mage_Core_Model_Resource_Db_Abs
65
  protected function _getFile($storeId)
66
  {
67
  if (!$this->_file) {
68
- $dir = Mage::getBaseDir('var') . DS . 'factfinder';
69
- $fileName = 'store_' . $storeId . '_price.csv';
70
  $this->_file = Mage::getModel('factfinder/file');
71
  $this->_file->open($dir, $fileName);
72
  }
@@ -145,4 +160,26 @@ class FACTFinder_Core_Model_Export_Price extends Mage_Core_Model_Resource_Db_Abs
145
  }
146
 
147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Price extends Mage_Core_Model_Resource_Db_Abstract
27
  {
28
 
29
+ const FILENAME_PATTERN = 'store_%s_price.csv';
30
+
31
  /**
32
  * defines Export Columns
33
  * @var array
55
  }
56
 
57
 
58
+ /**
59
+ * Get export filename for store
60
+ *
61
+ * @param int $storeId
62
+ *
63
+ * @return string
64
+ */
65
+ public function getFilenameForStore($storeId)
66
+ {
67
+ return sprintf(self::FILENAME_PATTERN, $storeId);
68
+ }
69
+
70
+
71
  /**
72
  * Get file handler instance for store
73
  *
80
  protected function _getFile($storeId)
81
  {
82
  if (!$this->_file) {
83
+ $dir = Mage::helper('factfinder/export')->getExportDirectory();
84
+ $fileName = $this->getFilenameForStore($storeId);
85
  $this->_file = Mage::getModel('factfinder/file');
86
  $this->_file->open($dir, $fileName);
87
  }
160
  }
161
 
162
 
163
+ /**
164
+ * Pre-Generate all price exports for all stores
165
+ *
166
+ * @return array
167
+ */
168
+ public function saveAll()
169
+ {
170
+ $paths = array();
171
+ $stores = Mage::app()->getStores();
172
+ foreach ($stores as $id => $store) {
173
+ try {
174
+ $price = Mage::getModel('factfinder/export_price');
175
+ $paths[] = $price->saveExport($id);
176
+ } catch (Exception $e) {
177
+ Mage::logException($e);
178
+ }
179
+ }
180
+
181
+ return $paths;
182
+ }
183
+
184
+
185
  }
app/code/community/FACTFinder/Core/Model/Export/Product.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,13 +19,15 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Resource_Fulltext
27
  {
28
 
 
 
29
  /**
30
  * Option ID to Value Mapping Array
31
  * @var mixed
@@ -99,11 +101,37 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
99
  */
100
  protected function _writeCsvRow($data, $storeId)
101
  {
 
 
 
 
102
  $this->_getFile($storeId)->writeCsv($data, ';');
103
  return $this;
104
  }
105
 
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
  * get Option Text by Option ID
109
  *
@@ -225,8 +253,8 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
225
  */
226
  public function saveExport($storeId = 0)
227
  {
228
- $fileName = 'store_' . $storeId . '_product.csv';
229
- $dir = Mage::getBaseDir('var') . DS . 'factfinder';
230
 
231
  try {
232
  $this->doExport($storeId);
@@ -251,9 +279,8 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
251
  protected function _getFile($storeId)
252
  {
253
  if (!isset($this->_file[$storeId])) {
254
- $dir = Mage::getBaseDir('var') . DS . 'factfinder';
255
-
256
- $fileName = 'store_' . $storeId . '_product.csv';
257
 
258
  $this->_file[$storeId] = Mage::getModel('factfinder/file');
259
 
@@ -357,9 +384,9 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
357
  if ($productChildren) {
358
  foreach ($productChildren as $productChild) {
359
  if (isset($productAttributes[$productChild['entity_id']])) {
360
-
361
- $productAttr = $productAttributes[$productChild['entity_id']];
362
-
363
  $subProductIndex = array(
364
  $productChild['entity_id'],
365
  $productData[$idFieldName],
@@ -931,7 +958,6 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
931
  foreach ($this->_getSearchableAttributes('static', 'system', $storeId) as $attribute) {
932
  $staticFields[] = $attribute->getAttributeCode();
933
  }
934
-
935
  return $staticFields;
936
  }
937
 
@@ -947,21 +973,23 @@ class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Reso
947
  protected function _removeTags($value, $storeId)
948
  {
949
  if (Mage::getStoreConfig('factfinder/export/remove_tags', $storeId)) {
950
- // Add spaces before HTML Tags, so that strip_tags() does not join word
951
- // which were in different block elements
952
- // Additional spaces are not an issue, because they will be removed in the next step anyway
953
- $value = preg_replace('/</u', ' <', $value);
954
- $value = preg_replace("#\s+#siu", ' ', trim(strip_tags($value)));
955
-
956
- // decode html entities
957
- $value = html_entity_decode($value, null, 'UTF-8');
958
-
959
- // remove rest html entities
960
- $value = preg_replace("/&(?:[a-z\d]|#\d|#x[a-f\d]){2,8};/i", '', $value);
 
 
 
 
961
  }
962
 
963
- $value = addslashes($value);
964
-
965
  return $value;
966
  }
967
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Product extends Mage_CatalogSearch_Model_Resource_Fulltext
27
  {
28
 
29
+ const FILENAME_PATTERN = 'store_%s_product.csv';
30
+
31
  /**
32
  * Option ID to Value Mapping Array
33
  * @var mixed
101
  */
102
  protected function _writeCsvRow($data, $storeId)
103
  {
104
+ foreach ($data as &$item) {
105
+ $item = str_replace(array("\r", "\n", "\""), array(" ", " ", "\\\""), $item);
106
+ }
107
+
108
  $this->_getFile($storeId)->writeCsv($data, ';');
109
  return $this;
110
  }
111
 
112
 
113
+ /**
114
+ * Get export filename for store
115
+ *
116
+ * @param int $storeId
117
+ *
118
+ * @return string
119
+ */
120
+ public function getFilenameForStore($storeId)
121
+ {
122
+ return sprintf(self::FILENAME_PATTERN, $storeId);
123
+ }
124
+
125
+
126
+ /**
127
+ * @return string
128
+ */
129
+ public function getExportDirectory()
130
+ {
131
+ return Mage::helper('factfinder/export')->getExportDirectory();
132
+ }
133
+
134
+
135
  /**
136
  * get Option Text by Option ID
137
  *
253
  */
254
  public function saveExport($storeId = 0)
255
  {
256
+ $fileName = $this->getFilenameForStore($storeId);
257
+ $dir = $this->getExportDirectory();
258
 
259
  try {
260
  $this->doExport($storeId);
279
  protected function _getFile($storeId)
280
  {
281
  if (!isset($this->_file[$storeId])) {
282
+ $dir = $this->getExportDirectory();
283
+ $fileName = $this->getFilenameForStore($storeId);
 
284
 
285
  $this->_file[$storeId] = Mage::getModel('factfinder/file');
286
 
384
  if ($productChildren) {
385
  foreach ($productChildren as $productChild) {
386
  if (isset($productAttributes[$productChild['entity_id']])) {
387
+
388
+ $productAttr = $productAttributes[$productChild['entity_id']];
389
+
390
  $subProductIndex = array(
391
  $productChild['entity_id'],
392
  $productData[$idFieldName],
958
  foreach ($this->_getSearchableAttributes('static', 'system', $storeId) as $attribute) {
959
  $staticFields[] = $attribute->getAttributeCode();
960
  }
 
961
  return $staticFields;
962
  }
963
 
973
  protected function _removeTags($value, $storeId)
974
  {
975
  if (Mage::getStoreConfig('factfinder/export/remove_tags', $storeId)) {
976
+ $attributeValues = $value;
977
+ if (!is_array($attributeValues)) {
978
+ $attributeValues = array($value);
979
+ }
980
+ foreach ($attributeValues as &$attributeValue) {
981
+ // decode html entities
982
+ $attributeValue = html_entity_decode($attributeValue, null, 'UTF-8');
983
+ // Add spaces before HTML Tags, so that strip_tags() does not join word which were in different block elements
984
+ // Additional spaces are not an issue, because they will be removed in the next step anyway
985
+ $attributeValue = preg_replace('/</u', ' <', $attributeValue);
986
+ $attributeValue = preg_replace("#\s+#siu", ' ', trim(strip_tags($attributeValue)));
987
+ // remove rest html entities
988
+ $attributeValue = preg_replace("/&(?:[a-z\d]|#\d|#x[a-f\d]){2,8};/i", '', $attributeValue);
989
+ }
990
+ $value = implode("|", $attributeValues);
991
  }
992
 
 
 
993
  return $value;
994
  }
995
 
app/code/community/FACTFinder/Core/Model/Export/Stock.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,13 +19,15 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abstract
27
  {
28
 
 
 
29
  /**
30
  * defines Export Columns
31
  *
@@ -54,6 +56,19 @@ class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abs
54
  }
55
 
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  /**
58
  * Get file handler instance for store
59
  *
@@ -66,8 +81,8 @@ class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abs
66
  protected function _getFile($storeId)
67
  {
68
  if (!$this->_file) {
69
- $dir = Mage::getBaseDir('var') . DS . 'factfinder';
70
- $fileName = 'store_' . $storeId . '_stock.csv';
71
  $this->_file = Mage::getModel('factfinder/file');
72
  $this->_file->open($dir, $fileName);
73
  }
@@ -113,7 +128,7 @@ class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abs
113
  $stocks = $this->_getStockData($storeId, $page++);
114
  }
115
 
116
- return $this->_getFile()->getPath();
117
  }
118
 
119
 
@@ -147,4 +162,26 @@ class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abs
147
  }
148
 
149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  }
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Export_Stock extends Mage_Core_Model_Resource_Db_Abstract
27
  {
28
 
29
+ const FILENAME_PATTERN = 'store_%s_stock.csv';
30
+
31
  /**
32
  * defines Export Columns
33
  *
56
  }
57
 
58
 
59
+ /**
60
+ * Get export filename for store
61
+ *
62
+ * @param int $storeId
63
+ *
64
+ * @return string
65
+ */
66
+ public function getFilenameForStore($storeId)
67
+ {
68
+ return sprintf(self::FILENAME_PATTERN, $storeId);
69
+ }
70
+
71
+
72
  /**
73
  * Get file handler instance for store
74
  *
81
  protected function _getFile($storeId)
82
  {
83
  if (!$this->_file) {
84
+ $dir = Mage::helper('factfinder/export')->getExportDirectory();
85
+ $fileName = $this->getFilenameForStore($storeId);
86
  $this->_file = Mage::getModel('factfinder/file');
87
  $this->_file->open($dir, $fileName);
88
  }
128
  $stocks = $this->_getStockData($storeId, $page++);
129
  }
130
 
131
+ return $this->_getFile($storeId)->getPath();
132
  }
133
 
134
 
162
  }
163
 
164
 
165
+ /**
166
+ * Pre-Generate all stock exports for all stores
167
+ *
168
+ * @return array
169
+ */
170
+ public function saveAll()
171
+ {
172
+ $paths = array();
173
+ $stores = Mage::app()->getStores();
174
+ foreach ($stores as $store) {
175
+ try {
176
+ $stock = Mage::getModel('factfinder/export_stock');
177
+ $paths[] = $stock->saveExport($store->getId());
178
+ } catch (Exception $e) {
179
+ Mage::logException($e);
180
+ }
181
+ }
182
+
183
+ return $paths;
184
+ }
185
+
186
+
187
  }
app/code/community/FACTFinder/Core/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -22,8 +22,8 @@ use FACTFinder\Loader as FF;
22
  * @category Mage
23
  * @package FACTFinder_Core
24
  * @author Flagbit Magento Team <magento@flagbit.de>
25
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
26
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
27
  * @link http://www.flagbit.de
28
  */
29
  class FACTFinder_Core_Model_Facade
@@ -670,6 +670,19 @@ class FACTFinder_Core_Model_Facade
670
  return $this->_getFactFinderObject('search', 'getSorting', $channel, $id);
671
  }
672
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673
  /**
674
  * Log stack trace if there is one in result
675
  */
@@ -694,14 +707,15 @@ class FACTFinder_Core_Model_Facade
694
  * Trigger data import on FF side
695
  *
696
  * @param null|string $channel
 
697
  *
698
- * @return SimpleXMLElement
699
  */
700
- public function triggerDataImport($channel = null)
701
  {
702
  $this->configureImportAdapter(array('channel' => $channel));
703
 
704
- return $this->getImportAdapter($channel)->triggerDataImport(true);
705
  }
706
 
707
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
22
  * @category Mage
23
  * @package FACTFinder_Core
24
  * @author Flagbit Magento Team <magento@flagbit.de>
25
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
26
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
27
  * @link http://www.flagbit.de
28
  */
29
  class FACTFinder_Core_Model_Facade
670
  return $this->_getFactFinderObject('search', 'getSorting', $channel, $id);
671
  }
672
 
673
+ /**
674
+ * Get results per page object (collection)
675
+ *
676
+ * @param string $channel
677
+ * @param int $id
678
+ *
679
+ * @return \FACTFinder\Data\ResultsPerPageOptions
680
+ */
681
+ public function getResultsPerPageOptions($channel = null, $id = null)
682
+ {
683
+ return $this->_getFactFinderObject('search', 'getResultsPerPageOptions', $channel, $id);
684
+ }
685
+
686
  /**
687
  * Log stack trace if there is one in result
688
  */
707
  * Trigger data import on FF side
708
  *
709
  * @param null|string $channel
710
+ * @param bool $download
711
  *
712
+ * @return \SimpleXMLElement
713
  */
714
+ public function triggerDataImport($channel = null, $download = true)
715
  {
716
  $this->configureImportAdapter(array('channel' => $channel));
717
 
718
+ return $this->getImportAdapter($channel)->triggerDataImport($download);
719
  }
720
 
721
 
app/code/community/FACTFinder/Core/Model/File.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_File
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_File
app/code/community/FACTFinder/Core/Model/Ftp.php ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Ftp.php
4
+ *
5
+ * @category Mage
6
+ * @package magento
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+
13
+ class FACTFinder_Core_Model_Ftp
14
+ {
15
+
16
+ /**
17
+ * @var null|resource
18
+ */
19
+ protected $_connection = null;
20
+
21
+
22
+ /**
23
+ * @param string $host
24
+ * @param int $port
25
+ * @param bool $secure
26
+ */
27
+ public function __construct($host, $port = 21, $secure = false)
28
+ {
29
+ if (is_array($host)) {
30
+ list($host, $port, $secure) = $host;
31
+ }
32
+
33
+ $this->connect($host, $port, $secure);
34
+ }
35
+
36
+
37
+ /**
38
+ * Create a connection to host
39
+ *
40
+ * @param string $host
41
+ * @param int $port
42
+ * @param bool $secure
43
+ *
44
+ * @return $this
45
+ * @throws \Mage_Core_Exception
46
+ */
47
+ public function connect($host, $port = 21, $secure = false)
48
+ {
49
+ $port = (int) $port;
50
+ if ($secure) {
51
+ $this->_connection = ftp_ssl_connect($host, $port);
52
+ } else {
53
+ $this->_connection = ftp_connect($host, $port);
54
+ }
55
+
56
+ if (!$this->_connection) {
57
+ Mage::throwException('Unable to connect to FTP host');
58
+ }
59
+
60
+ return $this;
61
+ }
62
+
63
+
64
+ /**
65
+ * Login to an already created connection
66
+ *
67
+ * @param string $user
68
+ * @param string $password
69
+ *
70
+ * @return $this
71
+ *
72
+ * @throws \Mage_Core_Exception
73
+ */
74
+ public function login($user, $password)
75
+ {
76
+ $result = ftp_login($this->_connection, $user, $password);
77
+
78
+ if (!$result) {
79
+ Mage::throwException('Unable to login to FTP host');
80
+ }
81
+
82
+ return $this;
83
+ }
84
+
85
+
86
+ /**
87
+ * Upload file to remote host
88
+ *
89
+ * @param string $file
90
+ * @param string $remoteFile
91
+ *
92
+ * @return $this
93
+ *
94
+ * @throws \Mage_Core_Exception
95
+ */
96
+ public function upload($file, $remoteFile = '')
97
+ {
98
+ if (!$remoteFile) {
99
+ $remoteFile = pathinfo($file, PATHINFO_BASENAME);
100
+ }
101
+
102
+ $result = ftp_put($this->_connection, $remoteFile, $file, FTP_BINARY);
103
+
104
+ if (!$result) {
105
+ Mage::throwException('Unable to upload file to FTP');
106
+ }
107
+
108
+ return $this;
109
+ }
110
+
111
+
112
+ /**
113
+ * Change directory on remote host
114
+ *
115
+ * @param string $path
116
+ *
117
+ * @return $this
118
+ *
119
+ * @throws \Mage_Core_Exception
120
+ */
121
+ public function chDir($path)
122
+ {
123
+ if (!empty($path))
124
+ {
125
+ $result = ftp_chdir($this->_connection, $path);
126
+
127
+ if (!$result) {
128
+ Mage::throwException('Unable to change FTP directory');
129
+ }
130
+ }
131
+ return $this;
132
+ }
133
+
134
+
135
+ /**
136
+ * Close existing connection
137
+ *
138
+ * @return $this
139
+ */
140
+ public function close()
141
+ {
142
+ if ($this->_connection) {
143
+ @ftp_close($this->_connection);
144
+ }
145
+
146
+ return $this;
147
+ }
148
+
149
+
150
+ /**
151
+ * Destructor to close connection
152
+ */
153
+ public function __destruct()
154
+ {
155
+ $this->close();
156
+ }
157
+
158
+
159
+ }
app/code/community/FACTFinder/Core/Model/Handler/Abstract.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  abstract class FACTFinder_Core_Model_Handler_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  abstract class FACTFinder_Core_Model_Handler_Abstract
app/code/community/FACTFinder/Core/Model/Handler/Search.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
 
@@ -93,7 +93,10 @@ class FACTFinder_Core_Model_Handler_Search extends FACTFinder_Core_Model_Handler
93
  default:
94
  // add Default Params
95
  $params['idsOnly'] = $this->_getFacade()->getConfiguration()->getIdsOnly() ? 'true' : 'false';
96
- $params['productsPerPage'] = $helper->getPageLimit();
 
 
 
97
 
98
  if ($_request->getModuleName() == 'catalogsearch') {
99
  $params['query'] = $helper->getQueryText();
@@ -218,6 +221,20 @@ class FACTFinder_Core_Model_Handler_Search extends FACTFinder_Core_Model_Handler
218
 
219
  return $this->_getFacade()->getSorting();
220
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
 
222
 
223
  /**
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
 
93
  default:
94
  // add Default Params
95
  $params['idsOnly'] = $this->_getFacade()->getConfiguration()->getIdsOnly() ? 'true' : 'false';
96
+ $count = $searchParams->getProductsPerPage() ? $searchParams->getProductsPerPage() : 0;
97
+ if ($count <= 0 && !Mage::helper('factfinder/search')->useResultsPerPageOptions()){
98
+ $params['productsPerPage'] = $helper->getPageLimit();
99
+ }
100
 
101
  if ($_request->getModuleName() == 'catalogsearch') {
102
  $params['query'] = $helper->getQueryText();
221
 
222
  return $this->_getFacade()->getSorting();
223
  }
224
+
225
+ /**
226
+ * Get results per page options object from FF
227
+ *
228
+ * @return \FACTFinder\Data\ResultsPerPageOptions|null
229
+ */
230
+ public function getResultsPerPageOptions()
231
+ {
232
+ if (!$this->isSearchHasResult()) {
233
+ return null;
234
+ }
235
+
236
+ return $this->_getFacade()->getResultsPerPageOptions();
237
+ }
238
 
239
 
240
  /**
app/code/community/FACTFinder/Core/Model/Handler/Status.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -35,8 +35,8 @@ define('FFE_SERVER_TIME_MISMATCH', 16183003); // server time is not consistent w
35
  * @category Mage
36
  * @package FACTFinder_Core
37
  * @author Flagbit Magento Team <magento@flagbit.de>
38
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
39
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
40
  * @link http://www.flagbit.de
41
  */
42
  class FACTFinder_Core_Model_Handler_Status extends FACTFinder_Core_Model_Handler_Search
@@ -63,6 +63,13 @@ class FACTFinder_Core_Model_Handler_Status extends FACTFinder_Core_Model_Handler
63
  */
64
  protected $_secondaryChannels;
65
 
 
 
 
 
 
 
 
66
  /**
67
  * Mapping of error codes and messages
68
  *
@@ -81,6 +88,21 @@ class FACTFinder_Core_Model_Handler_Status extends FACTFinder_Core_Model_Handler
81
  );
82
 
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  /**
85
  * prepares all request parameters for the primary search adapter
86
  *
@@ -88,6 +110,10 @@ class FACTFinder_Core_Model_Handler_Status extends FACTFinder_Core_Model_Handler
88
  */
89
  protected function _collectParams()
90
  {
 
 
 
 
91
  $this->_secondaryChannels = $this->_getFacade()->getConfiguration()->getSecondaryChannels();
92
 
93
  $params = array();
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
35
  * @category Mage
36
  * @package FACTFinder_Core
37
  * @author Flagbit Magento Team <magento@flagbit.de>
38
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
39
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
40
  * @link http://www.flagbit.de
41
  */
42
  class FACTFinder_Core_Model_Handler_Status extends FACTFinder_Core_Model_Handler_Search
63
  */
64
  protected $_secondaryChannels;
65
 
66
+ /**
67
+ * Store id for the config data
68
+ *
69
+ * @var int
70
+ */
71
+ protected $_storeId = 0;
72
+
73
  /**
74
  * Mapping of error codes and messages
75
  *
88
  );
89
 
90
 
91
+ /**
92
+ * Receive store id parameter
93
+ *
94
+ * @param array $params
95
+ */
96
+ public function __construct($params)
97
+ {
98
+ if (isset($params['store_id'])) {
99
+ $this->_storeId = $params['store_id'];
100
+ }
101
+
102
+ parent::__construct();
103
+ }
104
+
105
+
106
  /**
107
  * prepares all request parameters for the primary search adapter
108
  *
110
  */
111
  protected function _collectParams()
112
  {
113
+ if ($this->_storeId) {
114
+ $this->_getFacade()->setStoreId($this->_storeId);
115
+ }
116
+
117
  $this->_secondaryChannels = $this->_getFacade()->getConfiguration()->getSecondaryChannels();
118
 
119
  $params = array();
app/code/community/FACTFinder/Core/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Observer
@@ -28,6 +28,8 @@ class FACTFinder_Core_Model_Observer
28
  const SEARCH_ENGINE = 'factfinder/search_engine';
29
  const DEFAULT_SEARCH_ENGINE = 'catalogsearch/fulltext_engine';
30
  const REDIRECT_ALREADY_CHECKED_FLAG = 'factifinder_single_result_redirect_flag';
 
 
31
 
32
 
33
  /**
@@ -65,17 +67,15 @@ class FACTFinder_Core_Model_Observer
65
  return;
66
  }
67
 
68
- $errors = Mage::helper('factfinder/backend')->checkConfigData($groups['search']['fields']);
69
-
70
- if (!empty($errors)) {
71
- foreach ($errors as $error) {
72
- Mage::getSingleton('adminhtml/session')->addError($error);
73
- }
74
 
75
- Mage::app()->getConfig()->saveConfig('catalog/search/engine', self::DEFAULT_SEARCH_ENGINE);
76
- Mage::app()->getConfig()->saveConfig('factfinder/search/enabled', 0);
77
- } else {
78
- Mage::app()->getConfig()->saveConfig('catalog/search/engine', self::SEARCH_ENGINE);
79
  }
80
 
81
  // this also helps with module managing
@@ -131,6 +131,7 @@ class FACTFinder_Core_Model_Observer
131
  }
132
  }
133
 
 
134
  /**
135
  * Disable ConfigurableSwatches observer logic
136
  */
@@ -149,40 +150,6 @@ class FACTFinder_Core_Model_Observer
149
  }
150
 
151
 
152
- /**
153
- * Manage modules availability
154
- * Enable them only if they were enable in core configuration
155
- *
156
- * @param Varien_Object $observer
157
- *
158
- * @return void
159
- */
160
- public function manageModules($observer)
161
- {
162
- $config = Mage::getConfig();
163
- $modules = $config->getNode('modules');
164
-
165
- $isConfigUpdated = false;
166
- foreach ($modules->children() as $module => $data) {
167
- if (strpos($module, 'FACTFinder_') === 0 && $module !== 'FACTFinder_Core') {
168
- $configName = strtolower(str_replace('FACTFinder_', '', $module));
169
- $isActivated = Mage::helper('factfinder')->isModuleActivated($configName);
170
-
171
- $currentState = (string) $config->getNode("modules/{$module}/active");
172
- if ((bool) $currentState === (bool) $isActivated) {
173
- continue;
174
- }
175
-
176
- $isConfigUpdated = Mage::helper('factfinder')->updateModuleState($module, $isActivated);
177
- }
178
- }
179
-
180
- if ($isConfigUpdated) {
181
- Mage::app()->cleanCache();
182
- }
183
- }
184
-
185
-
186
  /**
187
  * Redirect to product page on single result
188
  *
@@ -192,7 +159,7 @@ class FACTFinder_Core_Model_Observer
192
  */
193
  public function handleSingleProductRedirect($observer)
194
  {
195
- if (!Mage::helper('factfinder/search')->getIsOnSearchPage()) {
196
  return;
197
  }
198
 
@@ -250,20 +217,93 @@ class FACTFinder_Core_Model_Observer
250
 
251
 
252
  /**
253
- * @param Varien_Object $observer
254
  *
255
- * @return void
 
 
256
  */
257
- public function triggerImportAfterExport($observer)
258
  {
259
- $helper = Mage::helper('factfinder');
260
- $storeId = $observer->getStoreId();
261
- if ($helper->isEnabled() && $helper->isImportTriggerEnabled($storeId)) {
262
- foreach ($helper->getStoreChannels($storeId) as $channel) {
263
- $facade = Mage::getModel('factfinder/facade');
264
- $facade->triggerDataImport($channel);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  }
 
 
 
 
 
 
 
266
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  }
268
 
269
 
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Observer
28
  const SEARCH_ENGINE = 'factfinder/search_engine';
29
  const DEFAULT_SEARCH_ENGINE = 'catalogsearch/fulltext_engine';
30
  const REDIRECT_ALREADY_CHECKED_FLAG = 'factifinder_single_result_redirect_flag';
31
+ const SCOPE_STORE = 'stores';
32
+ const SCOPE_WEBSITE = 'websites';
33
 
34
 
35
  /**
67
  return;
68
  }
69
 
70
+ $storeIds = $this->getStoreIdsFromRequest($request);
71
+ foreach ($storeIds as $storeId) {
72
+ $errors = Mage::helper('factfinder/backend')->checkConfigData($groups['search']['fields'], $storeId);
73
+ $this->_handleEngine($errors, $this->getScope($request), $this->getScopeId($request));
74
+ }
 
75
 
76
+ // check rewrites and add warnings in case something is wrong
77
+ foreach (Mage::helper('factfinder/rewrite')->checkRewrites() as $warning) {
78
+ Mage::getSingleton('adminhtml/session')->addWarning($warning);
 
79
  }
80
 
81
  // this also helps with module managing
131
  }
132
  }
133
 
134
+
135
  /**
136
  * Disable ConfigurableSwatches observer logic
137
  */
150
  }
151
 
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  /**
154
  * Redirect to product page on single result
155
  *
159
  */
160
  public function handleSingleProductRedirect($observer)
161
  {
162
+ if (!Mage::helper('factfinder')->isEnabled() || !Mage::helper('factfinder/search')->getIsOnSearchPage()) {
163
  return;
164
  }
165
 
217
 
218
 
219
  /**
220
+ * Get scope from request
221
  *
222
+ * @param Varien_Object $request
223
+ *
224
+ * @return string
225
  */
226
+ protected function getScope($request)
227
  {
228
+ $website = $request->getParam('website');
229
+ $store = $request->getParam('store');
230
+
231
+ return $store ? self::SCOPE_STORE : ($website ? self::SCOPE_WEBSITE : 'default');
232
+ }
233
+
234
+
235
+ /**
236
+ * Get scope id from request
237
+ *
238
+ * @param Varien_Object $request
239
+ *
240
+ * @return int
241
+ *
242
+ * @throws \Mage_Core_Exception
243
+ */
244
+ protected function getScopeId($request)
245
+ {
246
+ $scope = $this->getScope($request);
247
+
248
+ if ($scope === self::SCOPE_WEBSITE) {
249
+ return Mage::app()->getWebsite($request->getParam('website'))->getId();
250
+ } elseif ($scope === self::SCOPE_STORE) {
251
+ return Mage::app()->getStore($request->getParam('store'))->getId();
252
+ }
253
+
254
+ return 0;
255
+ }
256
+
257
+
258
+ /**
259
+ * Save engine configuration
260
+ *
261
+ * @param array $errors
262
+ * @param string $scope
263
+ * @param int $scopeId
264
+ *
265
+ * @return $this
266
+ */
267
+ protected function _handleEngine($errors, $scope = 'default', $scopeId = 0)
268
+ {
269
+ if (!empty($errors)) {
270
+ foreach ($errors as $error) {
271
+ Mage::getSingleton('adminhtml/session')->addError($error);
272
  }
273
+
274
+ Mage::app()->getConfig()
275
+ ->saveConfig('catalog/search/engine', self::DEFAULT_SEARCH_ENGINE, $scope, $scopeId)
276
+ ->saveConfig('factfinder/search/enabled', 0, $scope, $scopeId);
277
+ } else {
278
+ Mage::app()->getConfig()
279
+ ->saveConfig('catalog/search/engine', self::SEARCH_ENGINE, $scope, $scopeId);
280
  }
281
+
282
+ return $this;
283
+ }
284
+
285
+
286
+ /**
287
+ * Get store ids for scope
288
+ *
289
+ * @param Varien_Object $request
290
+ *
291
+ * @return array
292
+ *
293
+ * @throws \Mage_Core_Exception
294
+ */
295
+ protected function getStoreIdsFromRequest($request)
296
+ {
297
+ $scope = $this->getScope($request);
298
+ $scopeId = $this->getScopeId($request);
299
+
300
+ if ($scope == self::SCOPE_STORE) {
301
+ return array($scopeId);
302
+ } elseif ($scope == self::SCOPE_WEBSITE) {
303
+ return Mage::app()->getWebsite($scopeId)->getStoreIds();
304
+ }
305
+
306
+ return array(0);
307
  }
308
 
309
 
app/code/community/FACTFinder/Core/Model/Resource/Fulltext.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Core
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Model class
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Core
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
+ * @link http://www.flagbit.de
23
+ */
24
+ class FACTFinder_Core_Model_Resource_Fulltext extends Mage_CatalogSearch_Model_Resource_Fulltext
25
+ {
26
+
27
+
28
+ /**
29
+ * Override this method to prevent making unnecessary sql requests if FF is enabled
30
+ *
31
+ * @param Mage_CatalogSearch_Model_Fulltext $object
32
+ * @param string $queryText
33
+ * @param Mage_CatalogSearch_Model_Query $query
34
+ *
35
+ * @return FACTFinder_Core_Model_Resource_Fulltext
36
+ */
37
+ public function prepareResult($object, $queryText, $query)
38
+ {
39
+ if (Mage::helper('factfinder')->isEnabled()) {
40
+ return $this;
41
+ }
42
+
43
+ return parent::prepareResult($object, $queryText, $query);
44
+ }
45
+ }
app/code/community/FACTFinder/Core/Model/Resource/Search/Collection.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_Resource_Search_Collection extends Mage_Catalog_Model_Resource_Product_Collection
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_Resource_Search_Collection extends Mage_Catalog_Model_Resource_Product_Collection
app/code/community/FACTFinder/Core/Model/Resource/Search/Engine.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Resource_Search_Engine extends Mage_CatalogSearch_Model_Resource_Fulltext_Engine
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_Resource_Search_Engine extends Mage_CatalogSearch_Model_Resource_Fulltext_Engine
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Attributes.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Backend_Attributes extends Mage_Core_Model_Config_Data
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Backend_Attributes extends Mage_Core_Model_Config_Data
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Cron.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Backend_Cron extends Mage_Core_Model_Config_Data
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Backend_Cron extends Mage_Core_Model_Config_Data
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Enabled.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_System_Config_Backend_Enabled extends Mage_Core_Model_Config_Data
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_System_Config_Backend_Enabled extends Mage_Core_Model_Config_Data
app/code/community/FACTFinder/Core/Model/System/Config/Backend/Engine.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Core
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+
15
+ /**
16
+ * Catalog search backend model
17
+ *
18
+ * @category Mage
19
+ * @package FACTFinder_Core
20
+ * @author Magento Core Team <core@magentocommerce.com>
21
+ */
22
+ class FACTFinder_Core_Model_System_Config_Backend_Engine extends Mage_Core_Model_Config_Data
23
+ {
24
+
25
+
26
+ /**
27
+ * After save call
28
+ * Invalidate catalog search index if engine was changed
29
+ *
30
+ * @return FACTFinder_Core_Model_System_Config_Backend_Engine
31
+ */
32
+ protected function _afterSave()
33
+ {
34
+ parent::_afterSave();
35
+
36
+ if (Mage::helper('core')->isModuleEnabled('Enterprise_Search')) {
37
+ if ($this->isValueChanged()) {
38
+ Mage::getSingleton('index/indexer')->getProcessByCode('catalogsearch_fulltext')
39
+ ->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX);
40
+ }
41
+ }
42
+
43
+ return $this;
44
+ }
45
+
46
+
47
+ }
app/code/community/FACTFinder/Core/Model/System/Config/Source/Authtype.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_System_Config_Source_Authtype
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Core
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Core_Model_System_Config_Source_Authtype
app/code/community/FACTFinder/Core/Model/System/Config/Source/Engine.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Core
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Core
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Catalog search types
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Core
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ */
21
+ class FACTFinder_Core_Model_System_Config_Source_Engine
22
+ {
23
+
24
+
25
+ /**
26
+ * @return array
27
+ */
28
+ public function toOptionArray()
29
+ {
30
+ $engines = array(
31
+ 'factfinder/search_engine' => Mage::helper('factfinder')->__('FACT-Finder'),
32
+ 'catalogsearch/fulltext_engine' => Mage::helper('factfinder')->__('MySql Fulltext'),
33
+ );
34
+
35
+ if (Mage::helper('core')->isModuleEnabled('Enterprise_Search')) {
36
+ $engines = array_merge($engines,
37
+ array(
38
+ 'enterprise_search/engine' => Mage::helper('enterprise_search')->__('Solr'),
39
+ ));
40
+ }
41
+
42
+ $options = array();
43
+ foreach ($engines as $k => $v) {
44
+ $options[] = array(
45
+ 'value' => $k,
46
+ 'label' => $v
47
+ );
48
+ }
49
+
50
+ return $options;
51
+ }
52
+
53
+
54
+ }
55
+
app/code/community/FACTFinder/Core/Model/System/Config/Source/Identifier.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Source_Identifier
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Source_Identifier
app/code/community/FACTFinder/Core/Model/System/Config/Source/Protocol.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Source_Protocol
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Core
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Core_Model_System_Config_Source_Protocol
app/code/community/FACTFinder/Core/Model/Url.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Url.php
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ class FACTFinder_Core_Model_Url extends Mage_Core_Model_Url
13
+ {
14
+
15
+
16
+ /**
17
+ * Build url by requested path and parameters
18
+ *
19
+ * FF uses spaces in the parameters names, which get transformed into underscores when they come to $_GET
20
+ * Standard magento function uses these modified parameter names, which causes to incorrect FF links.
21
+ * This function is a small newly invented bicycle to create more compatibility between Magento and FF
22
+ *
23
+ * @param string|null $routePath
24
+ * @param array|null $routeParams
25
+ *
26
+ * @return string
27
+ */
28
+ public function getUrl($routePath = null, $routeParams = null)
29
+ {
30
+ // we only have to do something is the url is supposed to contain current parameters
31
+ if (!empty($routeParams['_current'])) {
32
+ // get raw query string since the one from magento contains underscores
33
+ $queryString = $_SERVER['QUERY_STRING'];
34
+ if (!empty($routeParams['_query'])) {
35
+ // remove parameters from current query string, which will be now set
36
+ $query = $routeParams['_query'];
37
+ foreach ($query as $key => $value) {
38
+ $pattern = '/' . $key . '=[^&]{1,}/';
39
+ $queryString = preg_replace($pattern, '', $queryString);
40
+ }
41
+
42
+ // no question marks, no extra ampersands
43
+ $queryString = str_replace('?', '', $queryString);
44
+ $queryString = trim($queryString, '&');
45
+ }
46
+
47
+ // to avoid getting underscored parameters we tell magento to skip them
48
+ $routeParams['_current'] = false;
49
+ $url = parent::getUrl($routePath, $routeParams);
50
+
51
+ // and now add our nice and correct query string
52
+ $url .= strpos($queryString, '?') !== false ? '?' : '&';
53
+ $url .= $queryString;
54
+
55
+ return $url;
56
+ }
57
+
58
+ return parent::getUrl($routePath, $routeParams);
59
+ }
60
+
61
+
62
+ }
app/code/community/FACTFinder/Core/controllers/ExportController.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -20,8 +20,8 @@
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  * @link http://www.flagbit.de
26
  */
27
  class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
@@ -73,10 +73,13 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
73
  } catch (RuntimeException $e) {
74
  $this->loadLayout()
75
  ->renderLayout();
 
76
  return;
77
  }
78
 
79
  $resource = Mage::app()->getRequest()->getParam('resource', 'product');
 
 
80
 
81
  try {
82
  $exportModel = Mage::getModel('factfinder/export_' . $resource);
@@ -87,6 +90,7 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
87
  $this->releaseSemaphore(); // finally-workaround
88
  } catch (Exception $e) {
89
  $this->releaseSemaphore(); // finally-workaround
 
90
  throw $e;
91
  }
92
 
@@ -103,6 +107,7 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
103
 
104
  $fileName = 'store_' . $this->_getStoreId() . '_' . $resource . '.csv';
105
  $filePath = Mage::getBaseDir() . DS . 'var' . DS . 'factfinder' . DS;
 
106
 
107
  if (!file_exists($filePath . $fileName)) {
108
  $this->loadLayout()
@@ -125,6 +130,7 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
125
 
126
  $fileName = 'store_' . $this->_getStoreId() . '_' . $resource . '.csv';
127
  $filePath = Mage::getBaseDir() . DS . 'var' . DS . 'factfinder' . DS;
 
128
 
129
  if (!file_exists($filePath . $fileName)) {
130
  $this->loadLayout()
@@ -147,6 +153,7 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
147
  */
148
  public function scheduleExportAction()
149
  {
 
150
  $schedule = Mage::getModel('cron/schedule');
151
  $schedule->setJobCode('factfinder_generate')
152
  ->setCreatedAt(time())
@@ -202,6 +209,7 @@ class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
202
  */
203
  protected function _forwardExport($resource)
204
  {
 
205
  $params = $this->getRequest()->getParams();
206
  $params = array_merge($params, array(
207
  'resource' => $resource,
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
20
  * @category Mage
21
  * @package FACTFinder_Core
22
  * @author Flagbit Magento Team <magento@flagbit.de>
23
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG (http://www.flagbit.de)
24
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
25
  * @link http://www.flagbit.de
26
  */
27
  class FACTFinder_Core_ExportController extends Mage_Core_Controller_Front_Action
73
  } catch (RuntimeException $e) {
74
  $this->loadLayout()
75
  ->renderLayout();
76
+ Mage::helper('factfinder/debug')->log('Export action was locked', true);
77
  return;
78
  }
79
 
80
  $resource = Mage::app()->getRequest()->getParam('resource', 'product');
81
+ Mage::helper('factfinder/debug')->log(
82
+ 'Export action called: resource=' . $resource . ', store='. $this->_getStoreId(), true);
83
 
84
  try {
85
  $exportModel = Mage::getModel('factfinder/export_' . $resource);
90
  $this->releaseSemaphore(); // finally-workaround
91
  } catch (Exception $e) {
92
  $this->releaseSemaphore(); // finally-workaround
93
+ Mage::helper('factfinder/debug')->error('Export action ' . $e->__toString());
94
  throw $e;
95
  }
96
 
107
 
108
  $fileName = 'store_' . $this->_getStoreId() . '_' . $resource . '.csv';
109
  $filePath = Mage::getBaseDir() . DS . 'var' . DS . 'factfinder' . DS;
110
+ Mage::helper('factfinder/debug')->log('Get action called: ' . $fileName, true);
111
 
112
  if (!file_exists($filePath . $fileName)) {
113
  $this->loadLayout()
130
 
131
  $fileName = 'store_' . $this->_getStoreId() . '_' . $resource . '.csv';
132
  $filePath = Mage::getBaseDir() . DS . 'var' . DS . 'factfinder' . DS;
133
+ Mage::helper('factfinder/debug')->log('Download action called: ' . $fileName, true);
134
 
135
  if (!file_exists($filePath . $fileName)) {
136
  $this->loadLayout()
153
  */
154
  public function scheduleExportAction()
155
  {
156
+ Mage::helper('factfinder/debug')->log('ScheduleExport action called', true);
157
  $schedule = Mage::getModel('cron/schedule');
158
  $schedule->setJobCode('factfinder_generate')
159
  ->setCreatedAt(time())
209
  */
210
  protected function _forwardExport($resource)
211
  {
212
+ Mage::helper('factfinder/debug')->log($resource . ' export called', true);
213
  $params = $this->getRequest()->getParams();
214
  $params = array_merge($params, array(
215
  'resource' => $resource,
app/code/community/FACTFinder/Core/etc/adminhtml.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/code/community/FACTFinder/Core/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
@@ -27,11 +27,31 @@
27
  <factfinder_core_resource>
28
  <class>FACTFinder_Core_Model_Resource</class>
29
  </factfinder_core_resource>
 
 
 
 
 
 
 
 
 
 
30
  </models>
31
  <blocks>
32
  <factfinder>
33
  <class>FACTFinder_Core_Block</class>
34
  </factfinder>
 
 
 
 
 
 
 
 
 
 
35
  </blocks>
36
  <helpers>
37
  <factfinder>
@@ -45,18 +65,14 @@
45
  <class>factfinder/autoloader</class>
46
  <method>addAutoloader</method>
47
  </factfinder>
48
- <factfinder_manage_modules>
49
- <class>factfinder/observer</class>
50
- <method>manageModules</method>
51
- </factfinder_manage_modules>
52
  </observers>
53
  </controller_front_init_before>
54
  <factfinder_export_after>
55
  <observers>
56
- <factfinder_core_import>
57
- <class>factfinder/observer</class>
58
  <method>triggerImportAfterExport</method>
59
- </factfinder_core_import>
60
  </observers>
61
  </factfinder_export_after>
62
  </events>
@@ -176,7 +192,7 @@
176
  <jobs>
177
  <factfinder_generate>
178
  <run>
179
- <model>factfinder/export_product::saveAll</model>
180
  </run>
181
  </factfinder_generate>
182
  </jobs>
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
27
  <factfinder_core_resource>
28
  <class>FACTFinder_Core_Model_Resource</class>
29
  </factfinder_core_resource>
30
+ <catalogsearch>
31
+ <rewrite>
32
+ <query>FACTFinder_Core_Model_CatalogSearch_Query</query>
33
+ </rewrite>
34
+ </catalogsearch>
35
+ <catalogsearch_resource>
36
+ <rewrite>
37
+ <fulltext>FACTFinder_Core_Model_Resource_Fulltext</fulltext>
38
+ </rewrite>
39
+ </catalogsearch_resource>
40
  </models>
41
  <blocks>
42
  <factfinder>
43
  <class>FACTFinder_Core_Block</class>
44
  </factfinder>
45
+ <catalogsearch>
46
+ <rewrite>
47
+ <layer>FACTFinder_Core_Block_CatalogSearch_Layer</layer>
48
+ </rewrite>
49
+ </catalogsearch>
50
+ <enterprise_search>
51
+ <rewrite>
52
+ <catalogsearch_layer>FACTFinder_Core_Block_EnterpriseSearch_Layer</catalogsearch_layer>
53
+ </rewrite>
54
+ </enterprise_search>
55
  </blocks>
56
  <helpers>
57
  <factfinder>
65
  <class>factfinder/autoloader</class>
66
  <method>addAutoloader</method>
67
  </factfinder>
 
 
 
 
68
  </observers>
69
  </controller_front_init_before>
70
  <factfinder_export_after>
71
  <observers>
72
+ <factfinder_core_import_trigger>
73
+ <class>factfinder/export_observer</class>
74
  <method>triggerImportAfterExport</method>
75
+ </factfinder_core_import_trigger>
76
  </observers>
77
  </factfinder_export_after>
78
  </events>
192
  <jobs>
193
  <factfinder_generate>
194
  <run>
195
+ <model>factfinder/export_observer::exportAll</model>
196
  </run>
197
  </factfinder_generate>
198
  </jobs>
app/code/community/FACTFinder/Core/etc/system.xml CHANGED
@@ -6,14 +6,33 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
14
  -->
15
  <config>
16
  <sections>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  <factfinder translate="label" module="factfinder">
18
  <label>FACT-Finder</label>
19
  <tab>catalog</tab>
@@ -210,6 +229,82 @@
210
  <show_in_store>1</show_in_store>
211
  <comment><![CDATA[Start FACTFinder data import after each export]]></comment>
212
  </trigger_data_import>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  </fields>
214
  </export>
215
  <config translate="label">
@@ -221,7 +316,7 @@
221
  <show_in_store>1</show_in_store>
222
  <fields>
223
  <personalization translate="label">
224
- <label>Enable Personalization (>= 7.0)</label>
225
  <frontend_type>select</frontend_type>
226
  <source_model>adminhtml/system_config_source_yesno</source_model>
227
  <sort_order>5</sort_order>
@@ -247,11 +342,31 @@
247
  <show_in_website>1</show_in_website>
248
  <show_in_store>1</show_in_store>
249
  </redirectOnSingleResult>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  <internal_ip translate="label">
251
  <label>Internal IPs</label>
252
  <comment>Enter your internal IP addresses. Multiple IP addresses should be separated by semicolons.</comment>
253
  <frontend_type>text</frontend_type>
254
- <sort_order>40</sort_order>
255
  <show_in_default>1</show_in_default>
256
  <show_in_website>1</show_in_website>
257
  <show_in_store>1</show_in_store>
@@ -260,7 +375,7 @@
260
  <label>Debug Log</label>
261
  <frontend_type>select</frontend_type>
262
  <source_model>adminhtml/system_config_source_yesno</source_model>
263
- <sort_order>50</sort_order>
264
  <show_in_default>1</show_in_default>
265
  <show_in_website>1</show_in_website>
266
  <show_in_store>1</show_in_store>
@@ -369,74 +484,5 @@
369
  </modules>
370
  </groups>
371
  </factfinder>
372
- <advanced>
373
- <groups>
374
- <ff_modules translate="label comment">
375
- <label>Disable FACT-Finder Sub-Modules</label>
376
- <comment><![CDATA[These settings allow to completely disable FACT-Finder sub-modules through changing xml files.<br />
377
- To make this feature work the web-server should have the write permissions to the app/etc/modules directory]]></comment>
378
- <sort_order>0</sort_order>
379
- <show_in_default>1</show_in_default>
380
- <show_in_website>0</show_in_website>
381
- <show_in_store>0</show_in_store>
382
- <fields>
383
- <asn translate="label">
384
- <label>FACT-Finder After Search Navigation</label>
385
- <frontend_type>select</frontend_type>
386
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
387
- <sort_order>10</sort_order>
388
- <show_in_default>1</show_in_default>
389
- <show_in_website>0</show_in_website>
390
- <show_in_store>0</show_in_store>
391
- </asn>
392
- <suggest translate="label">
393
- <label>FACT-Finder Suggest</label>
394
- <frontend_type>select</frontend_type>
395
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
396
- <sort_order>20</sort_order>
397
- <show_in_default>1</show_in_default>
398
- <show_in_website>0</show_in_website>
399
- <show_in_store>0</show_in_store>
400
- </suggest>
401
- <recommendation translate="label">
402
- <label>FACT-Finder Recommendation</label>
403
- <frontend_type>select</frontend_type>
404
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
405
- <sort_order>30</sort_order>
406
- <show_in_default>1</show_in_default>
407
- <show_in_website>0</show_in_website>
408
- <show_in_store>0</show_in_store>
409
- </recommendation>
410
- <tagcloud translate="label">
411
- <label>FACT-Finder Tag Cloud</label>
412
- <frontend_type>select</frontend_type>
413
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
414
- <sort_order>40</sort_order>
415
- <show_in_default>1</show_in_default>
416
- <show_in_website>0</show_in_website>
417
- <show_in_store>0</show_in_store>
418
- </tagcloud>
419
- <tracking>
420
- <label>FACT-Finder Tracking</label>
421
- <frontend_type>select</frontend_type>
422
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
423
- <sort_order>50</sort_order>
424
- <show_in_default>1</show_in_default>
425
- <show_in_website>0</show_in_website>
426
- <show_in_store>0</show_in_store>
427
- </tracking>
428
- <campaigns>
429
- <label>FACT-Finder Campaigns</label>
430
- <frontend_type>select</frontend_type>
431
- <source_model>adminhtml/system_config_source_enabledisable</source_model>
432
- <sort_order>60</sort_order>
433
- <show_in_default>1</show_in_default>
434
- <show_in_website>0</show_in_website>
435
- <show_in_store>0</show_in_store>
436
- </campaigns>
437
- </fields>
438
- </ff_modules>
439
- </groups>
440
- </advanced>
441
  </sections>
442
  </config>
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
14
  -->
15
  <config>
16
  <sections>
17
+ <catalog>
18
+ <groups>
19
+ <search>
20
+ <fields>
21
+ <engine translate="label">
22
+ <label>Search Engine</label>
23
+ <frontend_type>select</frontend_type>
24
+ <backend_model>factfinder/system_config_backend_engine</backend_model>
25
+ <source_model>factfinder/system_config_source_engine</source_model>
26
+ <sort_order>19</sort_order>
27
+ <show_in_default>1</show_in_default>
28
+ <show_in_website>0</show_in_website>
29
+ <show_in_store>0</show_in_store>
30
+ <comment><![CDATA[Please, configure FACT-Finder engine only in the FACT-Finder tab]]></comment>
31
+ </engine>
32
+ </fields>
33
+ </search>
34
+ </groups>
35
+ </catalog>
36
  <factfinder translate="label" module="factfinder">
37
  <label>FACT-Finder</label>
38
  <tab>catalog</tab>
229
  <show_in_store>1</show_in_store>
230
  <comment><![CDATA[Start FACTFinder data import after each export]]></comment>
231
  </trigger_data_import>
232
+ <import_delay_enabled translate="label comment">
233
+ <label>Import Delay Enabled</label>
234
+ <frontend_type>select</frontend_type>
235
+ <source_model>adminhtml/system_config_source_yesno</source_model>
236
+ <sort_order>75</sort_order>
237
+ <show_in_default>1</show_in_default>
238
+ <show_in_website>1</show_in_website>
239
+ <show_in_store>1</show_in_store>
240
+ <comment><![CDATA[If enabled, imports will be triggered with a delay between each other. Recommended for FACT-Finder >= 7.1.]]></comment>
241
+ </import_delay_enabled>
242
+ <use_ftp translate="label comment">
243
+ <label>Upload files to FTP host</label>
244
+ <frontend_type>select</frontend_type>
245
+ <source_model>adminhtml/system_config_source_yesno</source_model>
246
+ <sort_order>100</sort_order>
247
+ <show_in_default>1</show_in_default>
248
+ <show_in_website>1</show_in_website>
249
+ <show_in_store>1</show_in_store>
250
+ <comment><![CDATA[Upload exported data to FTP server]]></comment>
251
+ </use_ftp>
252
+ <ftp_host translate="label">
253
+ <label>FTP Host</label>
254
+ <frontend_type>text</frontend_type>
255
+ <sort_order>110</sort_order>
256
+ <show_in_default>1</show_in_default>
257
+ <show_in_website>1</show_in_website>
258
+ <show_in_store>1</show_in_store>
259
+ <depends><use_ftp>1</use_ftp></depends>
260
+ </ftp_host>
261
+ <ftp_port translate="label">
262
+ <label>FTP Port</label>
263
+ <frontend_type>text</frontend_type>
264
+ <sort_order>120</sort_order>
265
+ <show_in_default>1</show_in_default>
266
+ <show_in_website>1</show_in_website>
267
+ <show_in_store>1</show_in_store>
268
+ <depends><use_ftp>1</use_ftp></depends>
269
+ </ftp_port>
270
+ <ftp_user translate="label">
271
+ <label>FTP User</label>
272
+ <frontend_type>text</frontend_type>
273
+ <sort_order>130</sort_order>
274
+ <show_in_default>1</show_in_default>
275
+ <show_in_website>1</show_in_website>
276
+ <show_in_store>1</show_in_store>
277
+ <depends><use_ftp>1</use_ftp></depends>
278
+ </ftp_user>
279
+ <ftp_password translate="label">
280
+ <label>FTP Password</label>
281
+ <frontend_type>password</frontend_type>
282
+ <sort_order>140</sort_order>
283
+ <show_in_default>1</show_in_default>
284
+ <show_in_website>1</show_in_website>
285
+ <show_in_store>1</show_in_store>
286
+ <depends><use_ftp>1</use_ftp></depends>
287
+ </ftp_password>
288
+ <ftp_path translate="label">
289
+ <label>FTP Path</label>
290
+ <frontend_type>text</frontend_type>
291
+ <sort_order>150</sort_order>
292
+ <show_in_default>1</show_in_default>
293
+ <show_in_website>1</show_in_website>
294
+ <show_in_store>1</show_in_store>
295
+ <depends><use_ftp>1</use_ftp></depends>
296
+ </ftp_path>
297
+ <ftp_ssl translate="label">
298
+ <label>Use SSL</label>
299
+ <frontend_type>select</frontend_type>
300
+ <source_model>adminhtml/system_config_source_yesno</source_model>
301
+ <sort_order>150</sort_order>
302
+ <show_in_default>1</show_in_default>
303
+ <show_in_website>1</show_in_website>
304
+ <show_in_store>1</show_in_store>
305
+ <depends><use_ftp>1</use_ftp></depends>
306
+ <comment><![CDATA[Yes for FTPS and No for FTP]]></comment>
307
+ </ftp_ssl>
308
  </fields>
309
  </export>
310
  <config translate="label">
316
  <show_in_store>1</show_in_store>
317
  <fields>
318
  <personalization translate="label">
319
+ <label>Enable Personalization (>= 6.11)</label>
320
  <frontend_type>select</frontend_type>
321
  <source_model>adminhtml/system_config_source_yesno</source_model>
322
  <sort_order>5</sort_order>
342
  <show_in_website>1</show_in_website>
343
  <show_in_store>1</show_in_store>
344
  </redirectOnSingleResult>
345
+ <use_sortings>
346
+ <label>Use sorting options</label>
347
+ <frontend_type>select</frontend_type>
348
+ <source_model>adminhtml/system_config_source_yesno</source_model>
349
+ <sort_order>30</sort_order>
350
+ <show_in_default>1</show_in_default>
351
+ <show_in_website>1</show_in_website>
352
+ <show_in_store>1</show_in_store>
353
+ <comment><![CDATA[If enabled, it requires FACT-Finder >= 7.1 and the configuration of the desired sorting options in the FACT-Finder Backend.]]></comment>
354
+ </use_sortings>
355
+ <use_resultsPerPage>
356
+ <label>Use results per page options</label>
357
+ <frontend_type>select</frontend_type>
358
+ <source_model>adminhtml/system_config_source_yesno</source_model>
359
+ <sort_order>40</sort_order>
360
+ <show_in_default>1</show_in_default>
361
+ <show_in_website>1</show_in_website>
362
+ <show_in_store>1</show_in_store>
363
+ <comment><![CDATA[If enabled, it requires the configuration of default and alternative results per page options in the FACT-Finder backend.]]></comment>
364
+ </use_resultsPerPage>
365
  <internal_ip translate="label">
366
  <label>Internal IPs</label>
367
  <comment>Enter your internal IP addresses. Multiple IP addresses should be separated by semicolons.</comment>
368
  <frontend_type>text</frontend_type>
369
+ <sort_order>90</sort_order>
370
  <show_in_default>1</show_in_default>
371
  <show_in_website>1</show_in_website>
372
  <show_in_store>1</show_in_store>
375
  <label>Debug Log</label>
376
  <frontend_type>select</frontend_type>
377
  <source_model>adminhtml/system_config_source_yesno</source_model>
378
+ <sort_order>100</sort_order>
379
  <show_in_default>1</show_in_default>
380
  <show_in_website>1</show_in_website>
381
  <show_in_store>1</show_in_store>
484
  </modules>
485
  </groups>
486
  </factfinder>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  </sections>
488
  </config>
app/code/community/FACTFinder/Recommendation/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,13 +19,16 @@
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Helper_Data extends Mage_Core_Helper_Abstract
27
  {
28
 
 
 
 
29
  /**
30
  * Check if import should be triggered for store
31
  *
@@ -43,4 +46,32 @@ class FACTFinder_Recommendation_Helper_Data extends Mage_Core_Helper_Abstract
43
  }
44
 
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Helper_Data extends Mage_Core_Helper_Abstract
27
  {
28
 
29
+ const EXPORT_TRIGGER_DELAY = 90;
30
+ const IMPORT_TYPE = 'recommendation';
31
+
32
  /**
33
  * Check if import should be triggered for store
34
  *
46
  }
47
 
48
 
49
+ /**
50
+ * Trigger recommendation import
51
+ *
52
+ * @param int $storeId
53
+ *
54
+ * @return void
55
+ */
56
+ public function triggerImport($storeId)
57
+ {
58
+ $exportHelper = Mage::helper('factfinder/export');
59
+ $channel = Mage::helper('factfinder')->getPrimaryChannel($storeId);
60
+ $facade = Mage::getModel('factfinder_recommendation/facade');
61
+ $download = !$exportHelper->useFtp($storeId);
62
+ $delay = $exportHelper->getImportDelay(self::IMPORT_TYPE);
63
+
64
+ if ($exportHelper->isImportDelayEnabled($storeId)) {
65
+ $pid = pcntl_fork();
66
+ if (!$pid) {
67
+ sleep($delay);
68
+ $facade->triggerRecommendationImport($channel, $download);
69
+ exit(0);
70
+ }
71
+ } else {
72
+ $facade->triggerRecommendationImport($channel, $download);
73
+ }
74
+ }
75
+
76
+
77
  }
app/code/community/FACTFinder/Recommendation/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Model_Facade extends FACTFinder_Core_Model_Facade
@@ -60,14 +60,15 @@ class FACTFinder_Recommendation_Model_Facade extends FACTFinder_Core_Model_Facad
60
  * Trigger recommendations import on FF side
61
  *
62
  * @param null|string $channel
 
63
  *
64
- * @return SimpleXMLElement
65
  */
66
- public function triggerRecommendationImport($channel = null)
67
  {
68
  $this->configureImportAdapter(array('channel' => $channel));
69
 
70
- return $this->getImportAdapter($channel)->triggerRecommendationImport(true);
71
  }
72
 
73
 
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Model_Facade extends FACTFinder_Core_Model_Facade
60
  * Trigger recommendations import on FF side
61
  *
62
  * @param null|string $channel
63
+ * @param bool $download
64
  *
65
+ * @return \SimpleXMLElement
66
  */
67
+ public function triggerRecommendationImport($channel = null, $download = true)
68
  {
69
  $this->configureImportAdapter(array('channel' => $channel));
70
 
71
+ return $this->getImportAdapter($channel)->triggerRecommendationImport($download);
72
  }
73
 
74
 
app/code/community/FACTFinder/Recommendation/Model/Handler/Recommendations.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Model_Handler_Recommendations extends FACTFinder_Core_Model_Handler_Abstract
@@ -70,6 +70,9 @@ class FACTFinder_Recommendation_Model_Handler_Recommendations extends FACTFinder
70
  $params = array();
71
  $params['id'] = $this->_getIdParam();
72
  $params['idsOnly'] = $this->_getFacade()->getConfiguration()->getIdsOnly() ? 'true' : 'false';
 
 
 
73
  $this->_getFacade()->configureRecommendationAdapter($params);
74
  }
75
 
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Recommendation
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Recommendation_Model_Handler_Recommendations extends FACTFinder_Core_Model_Handler_Abstract
70
  $params = array();
71
  $params['id'] = $this->_getIdParam();
72
  $params['idsOnly'] = $this->_getFacade()->getConfiguration()->getIdsOnly() ? 'true' : 'false';
73
+ if(Mage::getStoreConfigFlag('factfinder/config/personalization')) {
74
+ $params['sid'] = Mage::helper('factfinder_tracking')->getSessionId();
75
+ }
76
  $this->_getFacade()->configureRecommendationAdapter($params);
77
  }
78
 
app/code/community/FACTFinder/Recommendation/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Recommendation
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Recommendation_Model_Observer
@@ -110,6 +110,8 @@ class FACTFinder_Recommendation_Model_Observer
110
  $collection->addAttributeToFilter($idFieldName, array('in' => array(-1)));
111
  }
112
 
 
 
113
  return $this;
114
  }
115
 
@@ -156,11 +158,9 @@ class FACTFinder_Recommendation_Model_Observer
156
  public function triggerImportAfterExport($observer)
157
  {
158
  $storeId = $observer->getStoreId();
159
- if (Mage::helper('factfinder_recommendation')->shouldTriggerImport($storeId)) {
160
- foreach (Mage::helper('factfinder')->getStoreChannels($storeId) as $channel) {
161
- $facade = Mage::getModel('factfinder_recommendation/facade');
162
- $facade->triggerRecommendationImport($channel);
163
- }
164
  }
165
  }
166
 
5
  * @category Mage
6
  * @package FACTFinder_Recommendation
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Recommendation
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Recommendation_Model_Observer
110
  $collection->addAttributeToFilter($idFieldName, array('in' => array(-1)));
111
  }
112
 
113
+ Mage::register('recommendation_collection', $collection, true);
114
+
115
  return $this;
116
  }
117
 
158
  public function triggerImportAfterExport($observer)
159
  {
160
  $storeId = $observer->getStoreId();
161
+ $helper = Mage::helper('factfinder_recommendation');
162
+ if ($helper->shouldTriggerImport($storeId)) {
163
+ $helper->triggerImport($storeId);
 
 
164
  }
165
  }
166
 
app/code/community/FACTFinder/Recommendation/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Recommendation
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Recommendation
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/code/community/FACTFinder/Suggest/Block/TopSearch.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Block_TopSearch extends Mage_Core_Block_Template
@@ -39,7 +39,8 @@ class FACTFinder_Suggest_Block_TopSearch extends Mage_Core_Block_Template
39
  $result->{'Channel: ' . $channel} = $this->__('Channel: ' . $channel);
40
  }
41
 
42
- $result->{'searchTerm'} = $this->__('ff_searchTerm');
 
43
  $result->{'category'} = $this->__('ff_category');
44
  $result->{'productName'} = $this->__('ff_productName');
45
 
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Block_TopSearch extends Mage_Core_Block_Template
39
  $result->{'Channel: ' . $channel} = $this->__('Channel: ' . $channel);
40
  }
41
 
42
+ $result->{'searchTerm'} = $this->__('ff_searchTerm');
43
+ $result->{'brand'} = $this->__('ff_brand');
44
  $result->{'category'} = $this->__('ff_category');
45
  $result->{'productName'} = $this->__('ff_productName');
46
 
app/code/community/FACTFinder/Suggest/Block/XmlConnect/Catalog/Search/Suggest.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class Flagbit_FactFinder_Block_XmlConnect_Catalog_Search_Suggest extends Mage_XmlConnect_Block_Catalog_Search_Suggest
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class Flagbit_FactFinder_Block_XmlConnect_Catalog_Search_Suggest extends Mage_XmlConnect_Block_Catalog_Search_Suggest
app/code/community/FACTFinder/Suggest/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,14 +17,15 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Helper_Data extends Mage_Core_Helper_Abstract
25
  {
26
 
27
  const XML_CONFIG_PATH_USE_PROXY = 'factfinder/config/proxy';
 
28
 
29
 
30
  /**
@@ -48,6 +49,9 @@ class FACTFinder_Suggest_Helper_Data extends Mage_Core_Helper_Abstract
48
  }
49
  }
50
 
 
 
 
51
  return $url;
52
  }
53
 
@@ -80,4 +84,32 @@ class FACTFinder_Suggest_Helper_Data extends Mage_Core_Helper_Abstract
80
  }
81
 
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Helper_Data extends Mage_Core_Helper_Abstract
25
  {
26
 
27
  const XML_CONFIG_PATH_USE_PROXY = 'factfinder/config/proxy';
28
+ const IMPORT_TYPE = 'suggest';
29
 
30
 
31
  /**
49
  }
50
  }
51
 
52
+ // avoid specifying the default port for http
53
+ $url = preg_replace('/^(http:[^\:]+)\:80\//', "$1/", $url);
54
+
55
  return $url;
56
  }
57
 
84
  }
85
 
86
 
87
+ /**
88
+ * Trigger suggest import
89
+ *
90
+ * @param int $storeId
91
+ *
92
+ * @return void
93
+ */
94
+ public function triggerImport($storeId)
95
+ {
96
+ $exportHelper = Mage::helper('factfinder/export');
97
+ $channel = Mage::helper('factfinder')->getPrimaryChannel($storeId);
98
+ $facade = Mage::getModel('factfinder_suggest/facade');
99
+ $download = !$exportHelper->useFtp($storeId);
100
+ $delay = $exportHelper->getImportDelay(self::IMPORT_TYPE);
101
+
102
+ if ($exportHelper->isImportDelayEnabled($storeId)) {
103
+ $pid = pcntl_fork();
104
+ if (!$pid) {
105
+ sleep($delay);
106
+ $facade->triggerSuggestImport($channel, $download);
107
+ exit(0);
108
+ }
109
+ } else {
110
+ $facade->triggerSuggestImport($channel, $download);
111
+ }
112
+ }
113
+
114
+
115
  }
app/code/community/FACTFinder/Suggest/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Model_Facade extends FACTFinder_Core_Model_Facade
@@ -68,14 +68,15 @@ class FACTFinder_Suggest_Model_Facade extends FACTFinder_Core_Model_Facade
68
  * Trigger suggest import on FF side
69
  *
70
  * @param null|string $channel
 
71
  *
72
- * @return SimpleXMLElement
73
  */
74
- public function triggerSuggestImport($channel = null)
75
  {
76
  $this->configureImportAdapter(array('channel' => $channel));
77
 
78
- return $this->getImportAdapter($channel)->triggerSuggestImport(true);
79
  }
80
 
81
 
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Model_Facade extends FACTFinder_Core_Model_Facade
68
  * Trigger suggest import on FF side
69
  *
70
  * @param null|string $channel
71
+ * @param bool $download
72
  *
73
+ * @return \SimpleXMLElement
74
  */
75
+ public function triggerSuggestImport($channel = null, $download = true)
76
  {
77
  $this->configureImportAdapter(array('channel' => $channel));
78
 
79
+ return $this->getImportAdapter($channel)->triggerSuggestImport($download);
80
  }
81
 
82
 
app/code/community/FACTFinder/Suggest/Model/Handler/Suggest.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Handler_Abstract
@@ -123,30 +123,37 @@ class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Han
123
  // Retrieve and merge all suggestions
124
  // Add a new "channel" field in the process
125
 
 
126
  $suggestResult = $this->_getAndSanitizeSuggestions();
127
-
 
 
 
128
  foreach ($this->_secondaryChannels AS $channel) {
129
  $params = array('channel' => $channel);
130
  $this->_getFacade()->configureSuggestAdapter($params, $channel);
131
 
132
  $result = $this->_getAndSanitizeSuggestions($channel);
133
- $suggestResult = array_merge($suggestResult, $result);
 
 
134
  }
135
 
136
  $resultArray = array();
137
- foreach ($suggestResult as $resultQuery) {
138
- /** @var $resultQuery FACTFinder\Data\SuggestQuery */
139
- $resultArray['suggestions'][] = array(
140
- 'attributes' => $resultQuery->getAttributes(),
141
- 'hitCount' => $resultQuery->getHitCount(),
142
- 'image' => $resultQuery->getImageUrl(),
143
- 'searchParams' => $resultQuery->getUrl(),
144
- 'type' => $resultQuery->getType(),
145
- 'name' => $resultQuery->getLabel(),
146
- 'channel' => $resultQuery->channel
147
- );
 
 
148
  }
149
-
150
  return $this->_jqueryCallback . '(' . Zend_Json_Encoder::encode($resultArray) . ');';
151
  }
152
 
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Suggest_Model_Handler_Suggest extends FACTFinder_Core_Model_Handler_Abstract
123
  // Retrieve and merge all suggestions
124
  // Add a new "channel" field in the process
125
 
126
+ $mergedSuggestResults = array();
127
  $suggestResult = $this->_getAndSanitizeSuggestions();
128
+ if ($suggestResult != null){
129
+ $mergedSuggestResults = $suggestResult;
130
+ }
131
+
132
  foreach ($this->_secondaryChannels AS $channel) {
133
  $params = array('channel' => $channel);
134
  $this->_getFacade()->configureSuggestAdapter($params, $channel);
135
 
136
  $result = $this->_getAndSanitizeSuggestions($channel);
137
+ if ($result != null){
138
+ $mergedSuggestResults = array_merge($mergedSuggestResults, $result);
139
+ }
140
  }
141
 
142
  $resultArray = array();
143
+ if ($mergedSuggestResults) {
144
+ foreach ($mergedSuggestResults as $resultQuery) {
145
+ /** @var $resultQuery FACTFinder\Data\SuggestQuery */
146
+ $resultArray['suggestions'][] = array(
147
+ 'attributes' => $resultQuery->getAttributes(),
148
+ 'hitCount' => $resultQuery->getHitCount(),
149
+ 'image' => $resultQuery->getImageUrl(),
150
+ 'searchParams' => $resultQuery->getUrl(),
151
+ 'type' => $resultQuery->getType(),
152
+ 'name' => $resultQuery->getLabel(),
153
+ 'channel' => $resultQuery->channel
154
+ );
155
+ }
156
  }
 
157
  return $this->_jqueryCallback . '(' . Zend_Json_Encoder::encode($resultArray) . ');';
158
  }
159
 
app/code/community/FACTFinder/Suggest/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Model_Observer
@@ -52,11 +52,9 @@ class FACTFinder_Suggest_Model_Observer
52
  public function triggerImportAfterExport($observer)
53
  {
54
  $storeId = $observer->getStoreId();
55
- if (Mage::helper('factfinder_suggest')->shouldTriggerImport($storeId)) {
56
- foreach (Mage::helper('factfinder')->getStoreChannels($storeId) as $channel) {
57
- $facade = Mage::getModel('factfinder_suggest/facade');
58
- $facade->triggerSuggestImport($channel);
59
- }
60
  }
61
  }
62
 
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_Model_Observer
52
  public function triggerImportAfterExport($observer)
53
  {
54
  $storeId = $observer->getStoreId();
55
+ $helper = Mage::helper('factfinder_suggest');
56
+ if ($helper->shouldTriggerImport($storeId)) {
57
+ $helper->triggerImport($storeId);
 
 
58
  }
59
  }
60
 
app/code/community/FACTFinder/Suggest/Model/Processor.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -21,8 +21,8 @@ require_once BP . DS . 'lib' . DS . 'FACTFinder' . DS . 'Loader.php';
21
  * @category Mage
22
  * @package FACTFinder_Suggest
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
25
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
26
  * @link http://www.flagbit.de
27
  */
28
  class FACTFinder_Suggest_Model_Processor
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
21
  * @category Mage
22
  * @package FACTFinder_Suggest
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
25
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
28
  class FACTFinder_Suggest_Model_Processor
app/code/community/FACTFinder/Suggest/Model/System/Config/Source/Imagetype.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Suggest_Model_System_Config_Source_Imagetype
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_Suggest
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Suggest_Model_System_Config_Source_Imagetype
app/code/community/FACTFinder/Suggest/controllers/ProxyController.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_ProxyController extends Mage_Core_Controller_Front_Action
@@ -34,7 +34,7 @@ class FACTFinder_Suggest_ProxyController extends Mage_Core_Controller_Front_Acti
34
  return;
35
  }
36
 
37
- $this->getResponse()->setHeader("Content-Type:", "application/json;charset=utf-8", true);
38
  $this->getResponse()->setBody(
39
  Mage::getModel('factfinder_suggest/processor')->handleInAppRequest($this->getFullActionName())
40
  );
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Suggest
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Suggest_ProxyController extends Mage_Core_Controller_Front_Action
34
  return;
35
  }
36
 
37
+ $this->getResponse()->setHeader("Content-Type", "application/json;charset=utf-8", true);
38
  $this->getResponse()->setBody(
39
  Mage::getModel('factfinder_suggest/processor')->handleInAppRequest($this->getFullActionName())
40
  );
app/code/community/FACTFinder/Suggest/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/code/community/FACTFinder/Suggest/etc/system.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/code/community/FACTFinder/Tagcloud/Block/TagCloud.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -19,8 +19,8 @@
19
  * @category Mage
20
  * @package FACTFinder_TagCloud
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
23
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Tagcloud_Block_TagCloud extends Mage_CatalogSearch_Block_Term
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
19
  * @category Mage
20
  * @package FACTFinder_TagCloud
21
  * @author Flagbit Magento Team <magento@flagbit.de>
22
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
23
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
24
  * @link http://www.flagbit.de
25
  */
26
  class FACTFinder_Tagcloud_Block_TagCloud extends Mage_CatalogSearch_Block_Term
app/code/community/FACTFinder/Tagcloud/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Helper_Data extends Mage_Core_Helper_Abstract
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/FACTFinder/Tagcloud/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Model_Facade extends FACTFinder_Core_Model_Facade
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Model_Facade extends FACTFinder_Core_Model_Facade
app/code/community/FACTFinder/Tagcloud/Model/Handler/TagCloud.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Model_Handler_TagCloud extends FACTFinder_Core_Model_Handler_Abstract
5
  * @category Mage
6
  * @package FACTFinder_TagCloud
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_TagCloud
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tagcloud_Model_Handler_TagCloud extends FACTFinder_Core_Model_Handler_Abstract
app/code/community/FACTFinder/Tagcloud/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/code/community/FACTFinder/Tracking/Block/Abstract.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Abstract.php
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Tracking
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ */
12
+ abstract class FACTFinder_Tracking_Block_Abstract extends Mage_Core_Block_Template
13
+ {
14
+
15
+
16
+ /**
17
+ * @return Mage_Core_Model_Resource_Db_Collection_Abstract
18
+ */
19
+ protected abstract function getProductResultCollection();
20
+
21
+
22
+ /**
23
+ * Get Product URL to ID Mapping JSON Object
24
+ *
25
+ * @return string
26
+ */
27
+ public function getJsonUrlToIdMappingObject()
28
+ {
29
+ $data = array();
30
+ foreach($this->getProductResultCollection() as $product){
31
+ $data[$product->getProductUrl()] = $product->getId();
32
+ }
33
+
34
+ return Mage::helper('core')->jsonEncode($data);
35
+ }
36
+
37
+
38
+ /**
39
+ * Get Product and Search Details by ID as JSON Object
40
+ *
41
+ * @return string
42
+ */
43
+ public function getJsonDataObject()
44
+ {
45
+ $dataTemplate = $this->getDataTemplate();
46
+
47
+ $data = array();
48
+ foreach($this->getProductResultCollection() as $product){
49
+ $data[$product->getId()] = $this->getProductData($product) + $dataTemplate;
50
+ }
51
+
52
+ return Mage::helper('core')->jsonEncode($data);
53
+ }
54
+
55
+
56
+ /**
57
+ * Get product specific data array
58
+ *
59
+ * @param Mage_Catalog_Model_Product $product
60
+ *
61
+ * @return array
62
+ */
63
+ protected abstract function getProductData($product);
64
+
65
+
66
+ /**
67
+ * Get common data for all products
68
+ *
69
+ * @return array
70
+ */
71
+ protected abstract function getDataTemplate();
72
+
73
+
74
+ }
app/code/community/FACTFinder/Tracking/Block/Click.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Tracking
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Tracking
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Block class
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Tracking
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
+ * @link http://www.flagbit.de
23
+ */
24
+ class FACTFinder_Tracking_Block_Click extends FACTFinder_Tracking_Block_Abstract
25
+ {
26
+ const EVENT_NAME = 'click';
27
+
28
+
29
+ /**
30
+ * Get Product Result Collection
31
+ *
32
+ * @return FACTFinder_Core_Model_Resource_Search_Collection
33
+ */
34
+ protected function getProductResultCollection()
35
+ {
36
+ return Mage::getSingleton('factfinder/catalogSearch_layer')->getProductCollection();
37
+ }
38
+
39
+
40
+ /**
41
+ * Get product specific data array
42
+ *
43
+ * @param Mage_Catalog_Model_Product $product
44
+ *
45
+ * @return mixed
46
+ */
47
+ protected function getProductData($product)
48
+ {
49
+ $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
50
+
51
+ $data = array(
52
+ 'id' => $product->getData($idFieldName),
53
+ 'masterId' => $product->getData($idFieldName),
54
+ 'pos' => $product->getPosition(),
55
+ 'origPos' => $product->getOriginalPosition() ? $product->getOriginalPosition() : $product->getPosition(),
56
+ 'title' => $product->getName()
57
+ );
58
+
59
+ return $data;
60
+
61
+ }
62
+
63
+
64
+ /**
65
+ * Get common data for all products
66
+ *
67
+ * @return array
68
+ */
69
+ protected function getDataTemplate()
70
+ {
71
+ $searchHelper = Mage::helper('factfinder/search');
72
+
73
+ $dataTemplate = array(
74
+ 'query' => $searchHelper->getQuery()->getQueryText(),
75
+ 'page' => $searchHelper->getCurrentPage(),
76
+ 'origPageSize' => $searchHelper->getDefaultPerPageValue(),
77
+ 'channel' => Mage::getStoreConfig('factfinder/search/channel'),
78
+ 'event' => self::EVENT_NAME
79
+ );
80
+
81
+ return $dataTemplate;
82
+ }
83
+
84
+
85
+ }
app/code/community/FACTFinder/Tracking/Block/Init.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
- /**
3
- * FACTFinder_Tracking
4
- *
5
- * @category Mage
6
- * @package FACTFinder_Tracking
7
- * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- * @link http://www.flagbit.de
11
- *
12
- */
13
-
14
- /**
15
- * Block class
16
- *
17
- * @category Mage
18
- * @package FACTFinder_Tracking
19
- * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
- * @link http://www.flagbit.de
23
- */
24
- class FACTFinder_Tracking_Block_Init extends Mage_Core_Block_Template
25
- {
26
-
27
-
28
- /**
29
- * Get Product Result Collection
30
- *
31
- * @return FACTFinder_Core_Model_Resource_Search_Collection
32
- */
33
- protected function _getProductResultCollection()
34
- {
35
- return Mage::getSingleton('factfinder/catalogSearch_layer')->getProductCollection();
36
- }
37
-
38
-
39
- /**
40
- * Get Product URL to ID Mapping JSON Object
41
- *
42
- * @return string
43
- */
44
- public function getJsonUrlToIdMappingObject()
45
- {
46
- $data = array();
47
- foreach($this->_getProductResultCollection() as $product){
48
- $data[$product->getProductUrl()] = $product->getId();
49
- }
50
-
51
- return Mage::helper('core')->jsonEncode($data);
52
- }
53
-
54
-
55
- /**
56
- * Get Product and Search Details by ID as JSON Object
57
- *
58
- * @return string
59
- */
60
- public function getJsonDataObject()
61
- {
62
- $searchHelper = Mage::helper('factfinder/search');
63
- $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
64
-
65
- $customerId = Mage::getSingleton('customer/session')->getCustomer()->getId();
66
- if ($customerId) {
67
- $customerId = md5('customer_' . $customerId);
68
- }
69
-
70
- $dataTemplate = array(
71
- 'query' => $searchHelper->getQuery()->getQueryText(),
72
- 'page' => $searchHelper->getCurrentPage(),
73
- 'sid' => Mage::helper('factfinder_tracking')->getSessionId(),
74
- 'pageSize' => $searchHelper->getPageLimit(),
75
- 'origPageSize' => $searchHelper->getDefaultPerPageValue(),
76
- 'channel' => Mage::getStoreConfig('factfinder/search/channel'),
77
- 'userId' => $customerId,
78
- 'event' => 'click'
79
- );
80
-
81
- $data = array();
82
- foreach($this->_getProductResultCollection() as $product){
83
- $key = $product->getId();
84
-
85
- $data[$key] = array(
86
- 'id' => $product->getData($idFieldName),
87
- 'masterid' => $product->getData($idFieldName),
88
- 'pos' => $product->getPosition(),
89
- 'origPos' => $product->getOriginalPosition() ? $product->getOriginalPosition() : $product->getPosition(),
90
- 'title' => $product->getName(),
91
- 'simi' => $product->getSimilarity()
92
- );
93
-
94
- $data[$key] += $dataTemplate;
95
- }
96
-
97
- return Mage::helper('core')->jsonEncode($data);
98
- }
99
-
100
-
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/FACTFinder/Tracking/Block/Recommendation.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Tracking
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Tracking
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+
14
+ /**
15
+ * Block class
16
+ *
17
+ * @category Mage
18
+ * @package FACTFinder_Tracking
19
+ * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
+ * @link http://www.flagbit.de
23
+ */
24
+ class FACTFinder_Tracking_Block_Recommendation extends FACTFinder_Tracking_Block_Abstract
25
+ {
26
+ const EVENT_NAME = 'recommendationClick';
27
+
28
+
29
+ /**
30
+ * Get Product Result Collection
31
+ *
32
+ * @return FACTFinder_Core_Model_Resource_Search_Collection
33
+ */
34
+ protected function getProductResultCollection()
35
+ {
36
+ return Mage::registry('recommendation_collection');
37
+ }
38
+
39
+
40
+ /**
41
+ * Get product specific data array
42
+ *
43
+ * @param Mage_Catalog_Model_Product $product
44
+ *
45
+ * @return array
46
+ */
47
+ protected function getProductData($product)
48
+ {
49
+ $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
50
+
51
+ $data = array(
52
+ 'id' => $product->getData($idFieldName),
53
+ 'masterId' => $product->getData($idFieldName),
54
+ );
55
+
56
+ return $data;
57
+ }
58
+
59
+
60
+ /**
61
+ * Get common data for all products
62
+ *
63
+ * @return array
64
+ */
65
+ protected function getDataTemplate()
66
+ {
67
+ $mainProduct = Mage::registry('current_product');
68
+ if (!$mainProduct) {
69
+ return array();
70
+ }
71
+
72
+ $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
73
+
74
+ $dataTemplate = array(
75
+ 'mainId' => $mainProduct->getData($idFieldName),
76
+ 'event' => self::EVENT_NAME
77
+ );
78
+
79
+ return $dataTemplate;
80
+ }
81
+
82
+
83
+ }
app/code/community/FACTFinder/Tracking/Helper/Data.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Helper_Data extends Mage_Core_Helper_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/FACTFinder/Tracking/Model/Facade.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Facade extends FACTFinder_Core_Model_Facade
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Facade extends FACTFinder_Core_Model_Facade
app/code/community/FACTFinder/Tracking/Model/Handler/Tracking.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Handler_Tracking extends FACTFinder_Core_Model_Handler_Abstract
@@ -36,12 +36,29 @@ class FACTFinder_Tracking_Model_Handler_Tracking extends FACTFinder_Core_Model_H
36
  {
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /**
40
  * Track login of a user
41
  *
42
- * @param string $sid session id (if empty, then try to set using the function session_id() )
43
  * @param string $cookieId cookie id (optional)
44
- * @param string $userid id of user who logged in
 
45
  * @return boolean $success
46
  */
47
  public function trackLogin(
@@ -204,4 +221,20 @@ class FACTFinder_Tracking_Model_Handler_Tracking extends FACTFinder_Core_Model_H
204
  }
205
 
206
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  }
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Handler_Tracking extends FACTFinder_Core_Model_Handler_Abstract
36
  {
37
  }
38
 
39
+
40
+ /**
41
+ * Set store id for facade
42
+ *
43
+ * @param int $storeId
44
+ *
45
+ * @return $this
46
+ */
47
+ public function setStoreId($storeId = 0)
48
+ {
49
+ $this->_getFacade()->setStoreId($storeId);
50
+
51
+ return $this;
52
+ }
53
+
54
+
55
  /**
56
  * Track login of a user
57
  *
58
+ * @param string $sid session id (if empty, then try to set using the function session_id() )
59
  * @param string $cookieId cookie id (optional)
60
+ * @param string $userid id of user who logged in
61
+ *
62
  * @return boolean $success
63
  */
64
  public function trackLogin(
221
  }
222
 
223
 
224
+ /**
225
+ * Get an instance of FACT-Finder facade
226
+ *
227
+ * @return FACTFinder_Core_Model_Facade
228
+ */
229
+ protected function _getFacade()
230
+ {
231
+ if ($this->_facade === null) {
232
+ // get new model, not singleton
233
+ $this->_facade = Mage::getModel($this->_facadeModel);
234
+ }
235
+
236
+ return $this->_facade;
237
+ }
238
+
239
+
240
  }
app/code/community/FACTFinder/Tracking/Model/Observer.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Observer
@@ -36,16 +36,24 @@ class FACTFinder_Tracking_Model_Observer
36
  */
37
  public function addTrackingHandles($observer)
38
  {
39
- if (!Mage::getStoreConfig('factfinder/export/clicktracking')
40
- || !Mage::helper('factfinder/search')->getIsOnSearchPage()
41
- || !Mage::helper('factfinder')->isEnabled('tracking')
42
- ) {
43
  return;
44
  }
45
 
46
  $layout = $observer->getLayout();
47
  $update = $layout->getUpdate();
48
- $update->addHandle('factfinder_clicktracking_enabled');
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
 
51
 
@@ -61,6 +69,7 @@ class FACTFinder_Tracking_Model_Observer
61
  {
62
  if (!Mage::getStoreConfigFlag('factfinder/export/track_carts')
63
  || !Mage::helper('factfinder')->isEnabled('tracking')
 
64
  ) {
65
  return;
66
  }
@@ -95,7 +104,7 @@ class FACTFinder_Tracking_Model_Observer
95
  $customerId
96
  );
97
  } catch (Exception $e) {
98
- Mage::helper('factfinder/debug')->log($e->getMessage());
99
  }
100
  }
101
 
@@ -114,6 +123,7 @@ class FACTFinder_Tracking_Model_Observer
114
 
115
  if (!Mage::getStoreConfig('factfinder/export/clicktracking')
116
  || !Mage::helper('factfinder')->isEnabled('tracking')
 
117
  ) {
118
  return;
119
  }
@@ -145,7 +155,7 @@ class FACTFinder_Tracking_Model_Observer
145
  );
146
  }
147
  catch (Exception $e) {
148
- Mage::helper('factfinder/debug')->log($e->getMessage());
149
  }
150
  }
151
 
@@ -162,6 +172,7 @@ class FACTFinder_Tracking_Model_Observer
162
  {
163
  if (!Mage::getStoreConfigFlag('factfinder/export/track_checkout')
164
  || !Mage::helper('factfinder')->isEnabled('tracking')
 
165
  ) {
166
  return;
167
  }
@@ -172,7 +183,6 @@ class FACTFinder_Tracking_Model_Observer
172
  $customerId = md5('customer_' . $customerId);
173
  }
174
 
175
- $searchHelper = Mage::helper('factfinder/search');
176
  $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
177
  if ($idFieldName == 'entity_id') {
178
  $idFieldName = 'product_id'; // sales_order_item does not contain a entity_id
@@ -191,6 +201,7 @@ class FACTFinder_Tracking_Model_Observer
191
  ->setUserid($customerId)
192
  ->setPrice($item->getPrice())
193
  ->setCount($item->getQtyOrdered())
 
194
  ->save();
195
  }
196
  catch (Exception $e) {
@@ -215,27 +226,32 @@ class FACTFinder_Tracking_Model_Observer
215
  $queue = Mage::getModel('factfinder_tracking/queue');
216
 
217
  try {
218
- $collectionSize = $queue->getCollection()->getSize();
219
  foreach ($queue->getCollection() as $item) {
 
 
 
 
220
  /** @var FACTFinder_Tracking_Model_Handler_Tracking $tracking */
221
  $tracking = Mage::getModel('factfinder_tracking/handler_tracking');
222
- $tracking->setupCheckoutTracking(
223
- $item->getProductId(),
224
- $item->getProductId(),
225
- $item->getProductName(),
226
- null,
227
- $item->getSid(),
228
- null,
229
- $item->getCount(),
230
- $item->getPrice(),
231
- $item->getUserid()
232
- );
233
-
234
- $item->delete($item);
235
- }
 
 
 
236
 
237
- if ($collectionSize > 0) {
238
- // We use the last adapter instance to start the parallel request
239
  $tracking->applyTracking($item->getProductId());
240
  }
241
  } catch (Exception $e) {
@@ -258,7 +274,9 @@ class FACTFinder_Tracking_Model_Observer
258
 
259
  public function loginTracking(Varien_Event_Observer $observer)
260
  {
261
- if(!Mage::getStoreConfigFlag('factfinder/config/personalization')) {
 
 
262
  return;
263
  }
264
 
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Observer
36
  */
37
  public function addTrackingHandles($observer)
38
  {
39
+ if (!Mage::helper('factfinder')->isEnabled('tracking')) {
 
 
 
40
  return;
41
  }
42
 
43
  $layout = $observer->getLayout();
44
  $update = $layout->getUpdate();
45
+
46
+ if (Mage::helper('factfinder/search')->getIsOnSearchPage()
47
+ && Mage::getStoreConfig('factfinder/export/clicktracking')
48
+ ) {
49
+ $update->addHandle('factfinder_clicktracking_enabled');
50
+ }
51
+
52
+ if (Mage::registry('current_product')
53
+ && Mage::helper('factfinder')->isEnabled('recommendation')
54
+ ) {
55
+ $update->addHandle('factfinder_recommendation_tracking');
56
+ }
57
  }
58
 
59
 
69
  {
70
  if (!Mage::getStoreConfigFlag('factfinder/export/track_carts')
71
  || !Mage::helper('factfinder')->isEnabled('tracking')
72
+ || Mage::helper('factfinder')->isInternal()
73
  ) {
74
  return;
75
  }
104
  $customerId
105
  );
106
  } catch (Exception $e) {
107
+ Mage::helper('factfinder/debug')->error($e->getMessage());
108
  }
109
  }
110
 
123
 
124
  if (!Mage::getStoreConfig('factfinder/export/clicktracking')
125
  || !Mage::helper('factfinder')->isEnabled('tracking')
126
+ || Mage::helper('factfinder')->isInternal()
127
  ) {
128
  return;
129
  }
155
  );
156
  }
157
  catch (Exception $e) {
158
+ Mage::helper('factfinder/debug')->error($e->getMessage());
159
  }
160
  }
161
 
172
  {
173
  if (!Mage::getStoreConfigFlag('factfinder/export/track_checkout')
174
  || !Mage::helper('factfinder')->isEnabled('tracking')
175
+ || Mage::helper('factfinder')->isInternal()
176
  ) {
177
  return;
178
  }
183
  $customerId = md5('customer_' . $customerId);
184
  }
185
 
 
186
  $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName();
187
  if ($idFieldName == 'entity_id') {
188
  $idFieldName = 'product_id'; // sales_order_item does not contain a entity_id
201
  ->setUserid($customerId)
202
  ->setPrice($item->getPrice())
203
  ->setCount($item->getQtyOrdered())
204
+ ->setStoreId($order->getStoreId())
205
  ->save();
206
  }
207
  catch (Exception $e) {
226
  $queue = Mage::getModel('factfinder_tracking/queue');
227
 
228
  try {
229
+ $itemsByStore = array();
230
  foreach ($queue->getCollection() as $item) {
231
+ $itemsByStore[$item->getStoreId()][] = $item;
232
+ }
233
+
234
+ foreach ($itemsByStore as $storeId => $items) {
235
  /** @var FACTFinder_Tracking_Model_Handler_Tracking $tracking */
236
  $tracking = Mage::getModel('factfinder_tracking/handler_tracking');
237
+ $tracking->setStoreId($storeId);
238
+
239
+ foreach ($items as $item) {
240
+ $tracking->setupCheckoutTracking(
241
+ $item->getProductId(),
242
+ $item->getProductId(),
243
+ $item->getProductName(),
244
+ null,
245
+ $item->getSid(),
246
+ null,
247
+ $item->getCount(),
248
+ $item->getPrice(),
249
+ $item->getUserid()
250
+ );
251
+
252
+ $item->delete($item);
253
+ }
254
 
 
 
255
  $tracking->applyTracking($item->getProductId());
256
  }
257
  } catch (Exception $e) {
274
 
275
  public function loginTracking(Varien_Event_Observer $observer)
276
  {
277
+ if(!Mage::getStoreConfigFlag('factfinder/config/personalization')
278
+ || Mage::helper('factfinder')->isInternal()
279
+ ) {
280
  return;
281
  }
282
 
app/code/community/FACTFinder/Tracking/Model/Processor.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -21,8 +21,8 @@ require_once BP . DS . 'lib' . DS . 'FACTFinder' . DS . 'Loader.php';
21
  * @category Mage
22
  * @package FACTFinder_Tracking
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
25
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
26
  * @link http://www.flagbit.de
27
  */
28
  class FACTFinder_Tracking_Model_Processor
@@ -80,7 +80,7 @@ class FACTFinder_Tracking_Model_Processor
80
  return $this->_facade;
81
  }
82
 
83
- /**
84
  * Bypass app cache.
85
  *
86
  * @param string $content
@@ -91,7 +91,7 @@ class FACTFinder_Tracking_Model_Processor
91
  {
92
  return false;
93
  }
94
-
95
  /**
96
  * handle Requests
97
  *
@@ -101,6 +101,14 @@ class FACTFinder_Tracking_Model_Processor
101
  */
102
  public function handleRequest($request)
103
  {
104
- return $this->_getFacade()->getTrackingAdapter()->doTrackingFromRequest();
105
- }
 
 
 
 
 
 
 
 
106
  }
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
21
  * @category Mage
22
  * @package FACTFinder_Tracking
23
  * @author Flagbit Magento Team <magento@flagbit.de>
24
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
25
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
26
  * @link http://www.flagbit.de
27
  */
28
  class FACTFinder_Tracking_Model_Processor
80
  return $this->_facade;
81
  }
82
 
83
+ /**
84
  * Bypass app cache.
85
  *
86
  * @param string $content
91
  {
92
  return false;
93
  }
94
+
95
  /**
96
  * handle Requests
97
  *
101
  */
102
  public function handleRequest($request)
103
  {
104
+ if (Mage::helper('factfinder')->isInternal()) {
105
+ return;
106
+ }
107
+ $sessionId = Mage::helper('factfinder_tracking')->getSessionId();
108
+ $customerId = Mage::getSingleton('customer/session')->getCustomer()->getId();
109
+ if ($customerId) {
110
+ $customerId = md5('customer_' . $customerId);
111
+ }
112
+ return $this->_getFacade()->getTrackingAdapter()->doTrackingFromRequest($sessionId, $customerId);
113
+ }
114
  }
app/code/community/FACTFinder/Tracking/Model/Queue.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Queue extends Mage_Core_Model_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Queue extends Mage_Core_Model_Abstract
app/code/community/FACTFinder/Tracking/Model/Resource/Queue.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Resource_Queue extends Mage_Core_Model_Resource_Db_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Resource_Queue extends Mage_Core_Model_Resource_Db_Abstract
app/code/community/FACTFinder/Tracking/Model/Resource/Queue/Collection.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Resource_Queue_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_Model_Resource_Queue_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
app/code/community/FACTFinder/Tracking/controllers/ProxyController.php CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
@@ -17,8 +17,8 @@
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
21
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_ProxyController extends Mage_Core_Controller_Front_Action
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
17
  * @category Mage
18
  * @package FACTFinder_Tracking
19
  * @author Flagbit Magento Team <magento@flagbit.de>
20
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
21
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
22
  * @link http://www.flagbit.de
23
  */
24
  class FACTFinder_Tracking_ProxyController extends Mage_Core_Controller_Front_Action
app/code/community/FACTFinder/Tracking/etc/config.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
@@ -15,7 +15,7 @@
15
  <config>
16
  <modules>
17
  <FACTFinder_Tracking>
18
- <version>4.0.1</version>
19
  </FACTFinder_Tracking>
20
  </modules>
21
  <global>
@@ -130,7 +130,7 @@
130
  <clicktracking>1</clicktracking>
131
  <track_carts>1</track_carts>
132
  <track_checkout>1</track_checkout>
133
- </export>
134
  <config>
135
  <tracking_identifier>entity_id</tracking_identifier>
136
  </config>
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
15
  <config>
16
  <modules>
17
  <FACTFinder_Tracking>
18
+ <version>4.1.2</version>
19
  </FACTFinder_Tracking>
20
  </modules>
21
  <global>
130
  <clicktracking>1</clicktracking>
131
  <track_carts>1</track_carts>
132
  <track_checkout>1</track_checkout>
133
+ </export>
134
  <config>
135
  <tracking_identifier>entity_id</tracking_identifier>
136
  </config>
app/code/community/FACTFinder/Tracking/etc/system.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/{mysql4-install-1.0.0.php → install-1.0.0.php} RENAMED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
app/code/community/FACTFinder/Tracking/sql/factfinder_tracking_setup/upgrade-1.0.0-4.1.2.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Tracking
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Tracking
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+ /**
14
+ * Install script
15
+ *
16
+ * Install script for Tracking queue. Orders are sent to FACT-Finder asynchronously by cronjobs.
17
+ */
18
+
19
+ $installer = $this;
20
+ $installer->startSetup();
21
+
22
+ $table = $installer->getConnection()
23
+ ->addColumn(
24
+ $installer->getTable('factfinder_tracking/queue'),
25
+ 'store_id',
26
+ array(
27
+ 'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
28
+ 'nullable' => true,
29
+ 'default' => null,
30
+ 'comment' => 'Store ID'
31
+ )
32
+ );
33
+ $installer->endSetup();
app/design/frontend/base/default/layout/factfinder/asn.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
6
  * @category Mage
7
  * @package FACTFinder_Asn
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
app/design/frontend/base/default/layout/factfinder/campaigns.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
@@ -49,6 +49,22 @@
49
  </reference>
50
  </catalogsearch_result_index>
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  <catalog_category_view>
53
  <reference name="content">
54
  <block type="factfinder_campaigns/advisory_search" name="ff.search.advisory" before="-" template="factfinder/campaigns/advisory.phtml" />
@@ -67,9 +83,6 @@
67
  <block type="factfinder_campaigns/feedback_search" after="product_list" name="ff.feedback.search.above" as="search_above">
68
  <action method="setLabel"><label>above search result</label></action>
69
  </block>
70
- <block type="factfinder_campaigns/feedback_search" after="category.products" name="ff.feedback.search.below" as="search_below">
71
- <action method="setLabel"><label>below search result</label></action>
72
- </block>
73
  </reference>
74
 
75
  <!-- above and below asn labels-->
6
  * @category Mage
7
  * @package FACTFinder_Campaigns
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  */
13
  -->
49
  </reference>
50
  </catalogsearch_result_index>
51
 
52
+ <catalog_category_default>
53
+ <reference name="content">
54
+ <block type="factfinder_campaigns/feedback_search" after="category.products" name="ff.feedback.search.below" as="search_below">
55
+ <action method="setLabel"><label>below search result</label></action>
56
+ </block>
57
+ </reference>
58
+ </catalog_category_default>
59
+
60
+ <catalog_category_layered>
61
+ <reference name="content">
62
+ <block type="factfinder_campaigns/feedback_search" after="category.products" name="ff.feedback.search.below" as="search_below">
63
+ <action method="setLabel"><label>below search result</label></action>
64
+ </block>
65
+ </reference>
66
+ </catalog_category_layered>
67
+
68
  <catalog_category_view>
69
  <reference name="content">
70
  <block type="factfinder_campaigns/advisory_search" name="ff.search.advisory" before="-" template="factfinder/campaigns/advisory.phtml" />
83
  <block type="factfinder_campaigns/feedback_search" after="product_list" name="ff.feedback.search.above" as="search_above">
84
  <action method="setLabel"><label>above search result</label></action>
85
  </block>
 
 
 
86
  </reference>
87
 
88
  <!-- above and below asn labels-->
app/design/frontend/base/default/layout/factfinder/core.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
@@ -31,7 +31,7 @@
31
  <factfinder_export_get>
32
  <update handle="factfinder_export_default" />
33
  <reference name="content">
34
- <action method="setTemplate"><template>factfinder/core/export/locked.phtml</template></action>
35
  </reference>
36
  </factfinder_export_get>
37
 
6
  * @category Mage
7
  * @package FACTFinder_Core
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
31
  <factfinder_export_get>
32
  <update handle="factfinder_export_default" />
33
  <reference name="content">
34
+ <action method="setTemplate"><template>factfinder/core/export/nofile.phtml</template></action>
35
  </reference>
36
  </factfinder_export_get>
37
 
app/design/frontend/base/default/layout/factfinder/suggest.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_Suggest
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/design/frontend/base/default/layout/factfinder/tagcloud.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
6
  * @category Mage
7
  * @package FACTFinder_TagCloud
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
app/design/frontend/base/default/layout/factfinder/tracking.xml CHANGED
@@ -6,8 +6,8 @@
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  * @link http://www.flagbit.de
12
  *
13
  */
@@ -18,7 +18,16 @@
18
  <action method="addJs"><script>factfinder/tracking.js</script></action>
19
  </reference>
20
  <reference name="content">
21
- <block type="factfinder_tracking/init" name="factfinder.tracking" template="factfinder/tracking/init.phtml"/>
22
  </reference>
23
  </factfinder_clicktracking_enabled>
 
 
 
 
 
 
 
 
 
24
  </layout>
6
  * @category Mage
7
  * @package FACTFinder_Tracking
8
  * @author Flagbit Magento Team <magento@flagbit.de>
9
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
10
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
11
  * @link http://www.flagbit.de
12
  *
13
  */
18
  <action method="addJs"><script>factfinder/tracking.js</script></action>
19
  </reference>
20
  <reference name="content">
21
+ <block type="factfinder_tracking/click" name="factfinder.tracking.click" template="factfinder/tracking/click.phtml"/>
22
  </reference>
23
  </factfinder_clicktracking_enabled>
24
+
25
+ <factfinder_recommendation_tracking>
26
+ <reference name="head">
27
+ <action method="addJs"><script>factfinder/tracking.js</script></action>
28
+ </reference>
29
+ <reference name="content">
30
+ <block type="factfinder_tracking/recommendation" name="factfinder.tracking.recommendation" template="factfinder/tracking/recommendation.phtml"/>
31
+ </reference>
32
+ </factfinder_recommendation_tracking>
33
  </layout>
app/design/frontend/base/default/template/factfinder/asn/layer/filter/slider.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
  /**
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
  /**
app/design/frontend/base/default/template/factfinder/asn/layer/slider.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
5
  * @category Mage
6
  * @package FACTFinder_Asn
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
app/design/frontend/base/default/template/factfinder/campaigns/advisory.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
app/design/frontend/base/default/template/factfinder/campaigns/feedback.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
app/design/frontend/base/default/template/factfinder/campaigns/pushed.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015, Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
5
  * @category Mage
6
  * @package FACTFinder_Campaigns
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016, Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  */
12
  ?>
app/design/frontend/base/default/template/factfinder/core/export/locked.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
app/design/frontend/base/default/template/factfinder/core/export/nofile.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
5
  * @category Mage
6
  * @package FACTFinder_Core
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
app/design/frontend/base/default/template/factfinder/suggest/advancedsuggest.phtml CHANGED
@@ -5,8 +5,8 @@
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
5
  * @category Mage
6
  * @package FACTFinder_Suggest
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
app/design/frontend/base/default/template/factfinder/tracking/{init.phtml → click.phtml} RENAMED
@@ -5,22 +5,23 @@
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  * @link http://www.flagbit.de
11
  *
12
  */
13
  ?>
14
  <script type="text/javascript">
15
- var factfinderTracking = new FactfinderTracking(
16
  '.col-main',
17
  $H(<?php echo $this->getJsonDataObject();?>),
18
  $H(<?php echo $this->getJsonUrlToIdMappingObject();?>),
19
  '<?php echo $this->getUrl(Mage::helper('factfinder_tracking')->getTrackingUrlPath()) ?>',
20
- false
21
  );
22
 
23
  Event.observe(document, 'dom:loaded', function(event) {
24
- factfinderTracking.init();
25
  });
 
26
  </script>
5
  * @category Mage
6
  * @package FACTFinder_Tracking
7
  * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
  * @link http://www.flagbit.de
11
  *
12
  */
13
  ?>
14
  <script type="text/javascript">
15
+ var factfinderClickTracking = new FactfinderTracking(
16
  '.col-main',
17
  $H(<?php echo $this->getJsonDataObject();?>),
18
  $H(<?php echo $this->getJsonUrlToIdMappingObject();?>),
19
  '<?php echo $this->getUrl(Mage::helper('factfinder_tracking')->getTrackingUrlPath()) ?>',
20
+ false
21
  );
22
 
23
  Event.observe(document, 'dom:loaded', function(event) {
24
+ factfinderClickTracking.init();
25
  });
26
+
27
  </script>
app/design/frontend/base/default/template/factfinder/tracking/recommendation.phtml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * FACTFinder_Tracking
4
+ *
5
+ * @category Mage
6
+ * @package FACTFinder_Tracking
7
+ * @author Flagbit Magento Team <magento@flagbit.de>
8
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
9
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
10
+ * @link http://www.flagbit.de
11
+ *
12
+ */
13
+ ?>
14
+ <script type="text/javascript">
15
+ var factfinderRecommendationTracking = new FactfinderTracking(
16
+ '.col-main',
17
+ $H(<?php echo $this->getJsonDataObject();?>),
18
+ $H(<?php echo $this->getJsonUrlToIdMappingObject();?>),
19
+ '<?php echo $this->getUrl(Mage::helper('factfinder_tracking')->getTrackingUrlPath()) ?>',
20
+ false
21
+ );
22
+
23
+ Event.observe(document, 'dom:loaded', function(event) {
24
+ factfinderRecommendationTracking.init();
25
+ });
26
+
27
+ </script>
app/etc/modules/FACTFinder_Asn.xml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Asn>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+ </depends>
10
+ </FACTFinder_Asn>
11
+ </modules>
12
+ </config>
app/etc/modules/FACTFinder_Campaigns.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Campaigns>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+
10
+ </depends>
11
+ </FACTFinder_Campaigns>
12
+ </modules>
13
+ </config>
app/etc/modules/FACTFinder_Core.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Core>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </FACTFinder_Core>
8
+ </modules>
9
+ </config>
app/etc/modules/FACTFinder_Recommendation.xml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Recommendation>
5
+ <active>1</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+ </depends>
10
+ </FACTFinder_Recommendation>
11
+ </modules>
12
+ </config>
app/etc/modules/FACTFinder_Suggest.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Suggest>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+
10
+ </depends>
11
+ </FACTFinder_Suggest>
12
+ </modules>
13
+ </config>
app/etc/modules/FACTFinder_Tagcloud.xml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Tagcloud>
5
+ <active>1</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+ </depends>
10
+ </FACTFinder_Tagcloud>
11
+ </modules>
12
+ </config>
app/etc/modules/FACTFinder_Tracking.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <FACTFinder_Tracking>
5
+ <active>1</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <FACTFinder_Core/>
9
+
10
+ </depends>
11
+ </FACTFinder_Tracking>
12
+ </modules>
13
+ </config>
js/factfinder/suggest.js CHANGED
@@ -4,8 +4,8 @@
4
  * @category Mage
5
  * @package FACTFinder_Suggest
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
8
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
  * @link http://www.flagbit.de
10
  *
11
  */
4
  * @category Mage
5
  * @package FACTFinder_Suggest
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
8
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
11
  */
js/factfinder/tracking.js CHANGED
@@ -4,8 +4,8 @@
4
  * @category Mage
5
  * @package FACTFinder_Tracking
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
- * @copyright Copyright (c) 2015 Flagbit GmbH & Co. KG
8
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
  * @link http://www.flagbit.de
10
  *
11
  */
4
  * @category Mage
5
  * @package FACTFinder_Tracking
6
  * @author Flagbit Magento Team <magento@flagbit.de>
7
+ * @copyright Copyright (c) 2016 Flagbit GmbH & Co. KG
8
+ * @license https://opensource.org/licenses/MIT The MIT License (MIT)
9
  * @link http://www.flagbit.de
10
  *
11
  */
lib/FACTFinder/Adapter/AbstractAdapter.php CHANGED
@@ -53,6 +53,16 @@ abstract class AbstractAdapter
53
  * @var object The processed response content.
54
  */
55
  private $responseContent = null;
 
 
 
 
 
 
 
 
 
 
56
 
57
  /**
58
  * @param string $loggerClass Class name of logger to use. The class should
@@ -98,16 +108,16 @@ abstract class AbstractAdapter
98
  // stdClass objects don't really have any advantages over plain
99
  // arrays but miss out on some of the built-in array functions.
100
  $jsonData = json_decode($string, true);
101
-
102
  if (is_null($jsonData))
103
  throw new \InvalidArgumentException(
104
  "json_decode() raised an error: ".json_last_error()
105
  );
106
-
107
  if(is_array($jsonData) && isset($jsonData['error'])) {
108
- $this->log->error("FACT-Finder returned error: " . strip_tags($jsonData['error']));
 
109
  if(isset($jsonData['stacktrace'])) {
110
- $this->log->error("Stacktrace:\n" . $jsonData['stacktrace']);
 
111
  }
112
  }
113
  return $jsonData;
@@ -121,9 +131,11 @@ abstract class AbstractAdapter
121
  // The constructor throws an exception on error
122
  $response = new \SimpleXMLElement($string);
123
  if(isset($response->error)) {
124
- $this->log->error("FACT-Finder returned error: " . strip_tags($response->error));
 
125
  if(isset($response->stacktrace)) {
126
- $this->log->error("Stacktrace:\n" . $response->stacktrace);
 
127
  }
128
  }
129
  return $response;
@@ -191,4 +203,34 @@ abstract class AbstractAdapter
191
 
192
  return $this->urlBuilder->generateUrl($parameters);
193
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  }
53
  * @var object The processed response content.
54
  */
55
  private $responseContent = null;
56
+
57
+ /**
58
+ * @var string The last error message.
59
+ */
60
+ private $error = null;
61
+
62
+ /**
63
+ * @var string The last stack trace.
64
+ */
65
+ private $stackTrace = null;
66
 
67
  /**
68
  * @param string $loggerClass Class name of logger to use. The class should
108
  // stdClass objects don't really have any advantages over plain
109
  // arrays but miss out on some of the built-in array functions.
110
  $jsonData = json_decode($string, true);
 
111
  if (is_null($jsonData))
112
  throw new \InvalidArgumentException(
113
  "json_decode() raised an error: ".json_last_error()
114
  );
 
115
  if(is_array($jsonData) && isset($jsonData['error'])) {
116
+ $this->error = strip_tags($jsonData['error']);
117
+ $this->log->error("FACT-Finder returned error: " . $this->error);
118
  if(isset($jsonData['stacktrace'])) {
119
+ $this->stackTrace = $jsonData['stacktrace'];
120
+ $this->log->error("Stacktrace:\n" . $this->stackTrace);
121
  }
122
  }
123
  return $jsonData;
131
  // The constructor throws an exception on error
132
  $response = new \SimpleXMLElement($string);
133
  if(isset($response->error)) {
134
+ $this->error = strip_tags($response->error);
135
+ $this->log->error("FACT-Finder returned error: " . $this->error);
136
  if(isset($response->stacktrace)) {
137
+ $this->stackTrace = $response->stacktrace;
138
+ $this->log->error("Stacktrace:\n" . $this->stackTrace);
139
  }
140
  }
141
  return $response;
203
 
204
  return $this->urlBuilder->generateUrl($parameters);
205
  }
206
+
207
+ /**
208
+ * Returns true if the response is valid or false if an error occurred.
209
+ *
210
+ * @return bool
211
+ */
212
+ protected function isValidResponse($jsonData)
213
+ {
214
+ return (!empty($jsonData) && !isset($jsonData['error']));
215
+ }
216
+
217
+ /**
218
+ * Returns a message if an error occurred.
219
+ *
220
+ * @return string
221
+ */
222
+ public function getError()
223
+ {
224
+ return $this->error;
225
+ }
226
+
227
+ /**
228
+ * Returns the stack trace if an error occurred.
229
+ *
230
+ * @return string
231
+ */
232
+ public function getStackTrace()
233
+ {
234
+ return $this->stackTrace;
235
+ }
236
  }
lib/FACTFinder/Adapter/Compare.php CHANGED
@@ -114,13 +114,15 @@ class Compare extends AbstractAdapter
114
  else
115
  {
116
  $jsonData = $this->getResponseContent();
117
- foreach($jsonData['attributes'] as $attributeData)
118
  {
119
- $name = $attributeData['attributeName'];
120
- $attributes[$name] = $attributeData['different'];
 
 
 
121
  }
122
  }
123
-
124
  return $attributes;
125
  }
126
 
@@ -157,15 +159,18 @@ class Compare extends AbstractAdapter
157
  {
158
  $position = 1;
159
  $jsonData = $this->getResponseContent();
160
- foreach($jsonData['records'] as $recordData)
161
  {
162
- $records[] = FF::getInstance(
163
- 'Data\Record',
164
- (string)$recordData['id'],
165
- $recordData['record'],
166
- 100.0,
167
- $position++
168
- );
 
 
 
169
  }
170
  }
171
 
114
  else
115
  {
116
  $jsonData = $this->getResponseContent();
117
+ if (parent::isValidResponse($jsonData))
118
  {
119
+ foreach($jsonData['attributes'] as $attributeData)
120
+ {
121
+ $name = $attributeData['attributeName'];
122
+ $attributes[$name] = $attributeData['different'];
123
+ }
124
  }
125
  }
 
126
  return $attributes;
127
  }
128
 
159
  {
160
  $position = 1;
161
  $jsonData = $this->getResponseContent();
162
+ if (parent::isValidResponse($jsonData))
163
  {
164
+ foreach($jsonData['records'] as $recordData)
165
+ {
166
+ $records[] = FF::getInstance(
167
+ 'Data\Record',
168
+ (string)$recordData['id'],
169
+ $recordData['record'],
170
+ 100.0,
171
+ $position++
172
+ );
173
+ }
174
  }
175
  }
176
 
lib/FACTFinder/Adapter/ProductCampaign.php CHANGED
@@ -60,18 +60,6 @@ class ProductCampaign extends AbstractAdapter
60
  $this->campaignsUpToDate = false;
61
  }
62
 
63
- /**
64
- * For product campaigns, FACT-Finder needs the product numbers - not the IDs.
65
- *
66
- * @deprecated use setProductNumbers instead
67
- * @param string|string[] $productIDs
68
- */
69
- public function setProductIDs($productIDs)
70
- {
71
- // preserve the previous logic
72
- $this->setProductNumbers($productIDs);
73
- }
74
-
75
  /**
76
  * Add one or multiple product numbser to get campaigns for, in addition to any
77
  * numbers previously set.
@@ -84,17 +72,6 @@ class ProductCampaign extends AbstractAdapter
84
  $parameters->add('productNumber', $productNumbers);
85
  $this->campaignsUpToDate = false;
86
  }
87
-
88
- /**
89
- * For product campaigns, FACT-Finder needs the product numbers - not the IDs.
90
- *
91
- * @deprecated use addProductNumbers instead
92
- * @param string|string[] $productIDs
93
- */
94
- public function addProductIDs($productIDs)
95
- {
96
- $this->addProductNumbers($productIDs);
97
- }
98
 
99
  /**
100
  * Set this to true to only retrieve the IDs of pushed products instead
@@ -170,23 +147,27 @@ class ProductCampaign extends AbstractAdapter
170
  {
171
  // Use only the first product ID
172
  $productIDs = $this->parameters['productNumber'];
173
- if (is_array($productIDs))
 
174
  $this->parameters['productNumber'] = $productIDs[0];
175
-
176
  $jsonData = $this->getResponseContent();
177
 
178
  // Restore IDs
179
  $this->parameters['productNumber'] = $productIDs;
180
  }
181
 
182
- foreach ($jsonData as $campaignData) {
183
- $campaign = $this->createEmptyCampaignObject($campaignData);
 
 
184
 
185
- $this->fillCampaignWithFeedback($campaign, $campaignData);
186
- $this->fillCampaignWithPushedProducts($campaign, $campaignData);
187
 
188
- $campaigns[] = $campaign;
189
- }
 
190
  }
191
 
192
  $campaignIterator = FF::getInstance(
60
  $this->campaignsUpToDate = false;
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /**
64
  * Add one or multiple product numbser to get campaigns for, in addition to any
65
  * numbers previously set.
72
  $parameters->add('productNumber', $productNumbers);
73
  $this->campaignsUpToDate = false;
74
  }
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  /**
77
  * Set this to true to only retrieve the IDs of pushed products instead
147
  {
148
  // Use only the first product ID
149
  $productIDs = $this->parameters['productNumber'];
150
+ if (is_array($productIDs) && !empty($productIDs))
151
+ {
152
  $this->parameters['productNumber'] = $productIDs[0];
153
+ }
154
  $jsonData = $this->getResponseContent();
155
 
156
  // Restore IDs
157
  $this->parameters['productNumber'] = $productIDs;
158
  }
159
 
160
+ if(parent::isValidResponse($jsonData))
161
+ {
162
+ foreach ($jsonData as $campaignData) {
163
+ $campaign = $this->createEmptyCampaignObject($campaignData);
164
 
165
+ $this->fillCampaignWithFeedback($campaign, $campaignData);
166
+ $this->fillCampaignWithPushedProducts($campaign, $campaignData);
167
 
168
+ $campaigns[] = $campaign;
169
+ }
170
+ }
171
  }
172
 
173
  $campaignIterator = FF::getInstance(
lib/FACTFinder/Adapter/Recommendation.php CHANGED
@@ -113,6 +113,17 @@ class Recommendation extends AbstractAdapter
113
  $parameters['idsOnly'] = $idsOnly ? 'true' : 'false';
114
  }
115
 
 
 
 
 
 
 
 
 
 
 
 
116
  /**
117
  * Returns recommendations for IDs previously specified. If no IDs have been
118
  * set, there will be a warning raised and an empty result will be returned.
@@ -145,17 +156,20 @@ class Recommendation extends AbstractAdapter
145
  else
146
  {
147
  $recommenderData = $this->getResponseContent();
148
- if (isset($recommenderData['resultRecords']))
149
- {
150
- $recommenderData = $recommenderData['resultRecords'];
151
- }
152
- $position = 1;
153
- foreach($recommenderData as $recordData)
154
  {
155
- if ($this->idsOnly)
156
- $records[] = $this->createSparseRecord($recordData);
157
- else
158
- $records[] = $this->createRecord($recordData, $position++);
 
 
 
 
 
 
 
 
159
  }
160
  }
161
 
@@ -185,7 +199,7 @@ class Recommendation extends AbstractAdapter
185
  $position
186
  );
187
  }
188
-
189
  /**
190
  * Get the recommendations from FACT-Finder as the string returned by the
191
  * server.
113
  $parameters['idsOnly'] = $idsOnly ? 'true' : 'false';
114
  }
115
 
116
+ /**
117
+ * Set value for parameter sid for personalization.
118
+ *
119
+ * @param string $sid session id
120
+ */
121
+ public function setSid($sid)
122
+ {
123
+ $this->parameters['sid'] = $sid;
124
+ $this->recommendationsUpToDate = false;
125
+ }
126
+
127
  /**
128
  * Returns recommendations for IDs previously specified. If no IDs have been
129
  * set, there will be a warning raised and an empty result will be returned.
156
  else
157
  {
158
  $recommenderData = $this->getResponseContent();
159
+ if (parent::isValidResponse($recommenderData))
 
 
 
 
 
160
  {
161
+ if (isset($recommenderData['resultRecords']))
162
+ {
163
+ $recommenderData = $recommenderData['resultRecords'];
164
+ }
165
+ $position = 1;
166
+ foreach($recommenderData as $recordData)
167
+ {
168
+ if ($this->idsOnly)
169
+ $records[] = $this->createSparseRecord($recordData);
170
+ else
171
+ $records[] = $this->createRecord($recordData, $position++);
172
+ }
173
  }
174
  }
175
 
199
  $position
200
  );
201
  }
202
+
203
  /**
204
  * Get the recommendations from FACT-Finder as the string returned by the
205
  * server.
lib/FACTFinder/Adapter/Search.php CHANGED
@@ -41,6 +41,11 @@ class Search extends AbstractAdapter
41
  */
42
  private $sorting;
43
 
 
 
 
 
 
44
  /**
45
  * @var FACTFinder\Data\BreadCrumbTrail
46
  */
@@ -89,12 +94,14 @@ class Search extends AbstractAdapter
89
  }
90
 
91
  /**
92
- * Set Value for parameter sid
93
- * @param string $sSid session id
 
94
  */
95
- public function setSid($sSid)
96
  {
97
- $this->parameters['sid'] = $sSid;
 
98
  }
99
 
100
  /**
@@ -135,13 +142,11 @@ class Search extends AbstractAdapter
135
  //init default values
136
  $records = array();
137
  $resultCount = 0;
138
- $refKey = null;
139
 
140
  $jsonData = $this->getResponseContent();
141
 
142
- if (isset($jsonData['searchResult'])) {
143
  $searchResultData = $jsonData['searchResult'];
144
- $refKey = $searchResultData['refKey'];
145
 
146
  if (!empty($searchResultData['records']))
147
  {
@@ -168,7 +173,6 @@ class Search extends AbstractAdapter
168
  return FF::getInstance(
169
  'Data\Result',
170
  $records,
171
- $refKey,
172
  $resultCount
173
  );
174
  }
@@ -192,9 +196,9 @@ class Search extends AbstractAdapter
192
  $singleWordSearch = array();
193
 
194
  $jsonData = $this->getResponseContent();
195
- if (!empty($jsonData['searchResult']['singleWordResults']))
196
  {
197
- foreach ($jsonData['searchResults']['singleWordResults'] as $swsData)
198
  {
199
  $item = FF::getInstance(
200
  'Data\SingleWordSearchItem',
@@ -202,18 +206,18 @@ class Search extends AbstractAdapter
202
  $this->convertServerQueryToClientUrl(
203
  $swsData['searchParams']
204
  ),
205
- $swsData['count']
206
  );
207
 
208
  foreach ($swsData['previewRecords'] as $recordData)
209
  {
210
- $item->addPreviewRecord(FF::getInstance(
211
- 'Data\Record',
212
  (string)$recordData['id'],
213
- $recordData['record']
214
- // TODO: Which are other fields are returned for preview
215
- // records?
216
- // TODO: Add a test for this.
 
217
  ));
218
  }
219
 
@@ -233,7 +237,7 @@ class Search extends AbstractAdapter
233
  $status = $searchStatusEnum::NoResult();
234
 
235
  $jsonData = $this->getResponseContent();
236
- if (isset($jsonData['searchResult']))
237
  {
238
  switch($jsonData['searchResult']['resultStatus'])
239
  {
@@ -257,7 +261,7 @@ class Search extends AbstractAdapter
257
  $status = $articleNumberSearchStatusEnum::IsNoArticleNumberSearch();
258
 
259
  $jsonData = $this->getResponseContent();
260
- if (isset($jsonData['searchResult']))
261
  {
262
  switch ($jsonData['searchResult']['resultArticleNumberStatus'])
263
  {
@@ -278,7 +282,7 @@ class Search extends AbstractAdapter
278
  public function isSearchTimedOut()
279
  {
280
  $jsonData = $this->getResponseContent();
281
- if (isset($jsonData['searchResult']))
282
  {
283
  return $jsonData['searchResult']['timedOut'];
284
  }
@@ -305,7 +309,7 @@ class Search extends AbstractAdapter
305
 
306
  $filterGroups = array();
307
 
308
- if (isset($jsonData['searchResult']['groups'])) {
309
  foreach ($jsonData['searchResult']['groups'] as $groupData)
310
  $filterGroups[] = $this->createFilterGroup($groupData);
311
  }
@@ -503,7 +507,7 @@ class Search extends AbstractAdapter
503
 
504
  $jsonData = $this->getResponseContent();
505
 
506
- if (isset($jsonData['searchResult']))
507
  {
508
  $rppData = $jsonData['searchResult']['resultsPerPageList'];
509
  if (!empty($rppData))
@@ -559,7 +563,7 @@ class Search extends AbstractAdapter
559
 
560
  $jsonData = $this->getResponseContent();
561
 
562
- if (isset($jsonData['searchResult']))
563
  {
564
  $pagingData = $jsonData['searchResult']['paging'];
565
  if (!empty($pagingData))
@@ -644,7 +648,7 @@ class Search extends AbstractAdapter
644
 
645
  $jsonData = $this->getResponseContent();
646
 
647
- if (isset($jsonData['searchResult']))
648
  {
649
  $sortingData = $jsonData['searchResult']['sortsList'];
650
  if (!empty($sortingData))
@@ -672,6 +676,70 @@ class Search extends AbstractAdapter
672
  return null;
673
  }
674
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
675
  /**
676
  * @return \FACTFinder\Data\BreadCrumbTrail
677
  */
@@ -692,7 +760,7 @@ class Search extends AbstractAdapter
692
 
693
  $jsonData = $this->getResponseContent();
694
 
695
- if (isset($jsonData['searchResult']))
696
  {
697
  $breadCrumbTrailData = $jsonData['searchResult']['breadCrumbTrailItems'];
698
  if (!empty($breadCrumbTrailData))
@@ -705,11 +773,19 @@ class Search extends AbstractAdapter
705
  );
706
 
707
  $breadCrumbTypeEnum = FF::getClassName('Data\BreadCrumbType');
708
- if ($breadCrumbData['type'] == 'filter')
 
 
709
  $type = $breadCrumbTypeEnum::Filter();
710
- else
 
 
 
 
711
  $type = $breadCrumbTypeEnum::Search();
712
-
 
 
713
  $breadCrumbs[] = FF::getInstance(
714
  'Data\BreadCrumb',
715
  $breadCrumbData['text'],
@@ -749,7 +825,7 @@ class Search extends AbstractAdapter
749
  $campaigns = array();
750
  $jsonData = $this->getResponseContent();
751
 
752
- if (isset($jsonData['searchResult']['campaigns'])) {
753
  foreach ($jsonData['searchResult']['campaigns'] as $campaignData) {
754
  $campaign = $this->createEmptyCampaignObject($campaignData);
755
 
@@ -940,24 +1016,6 @@ class Search extends AbstractAdapter
940
  $followUpQuestions
941
  );
942
  }
943
-
944
- /**
945
- * @return string
946
- */
947
- public function getError()
948
- {
949
- $jsonData = $this->getResponseContent();
950
- return isset($jsonData['error']) ? $jsonData['error'] : null;
951
- }
952
-
953
- /**
954
- * @return string
955
- */
956
- public function getStackTrace()
957
- {
958
- $jsonData = $this->getResponseContent();
959
- return isset($jsonData['stacktrace']) ? $jsonData['stacktrace'] : null;
960
- }
961
 
962
  /**
963
  * Value for parameter "followSearch" for followups on initial search like filters, pagination, ...
@@ -970,7 +1028,7 @@ class Search extends AbstractAdapter
970
  {
971
  $jsonData = $this->getResponseContent();
972
  //use searchParams of result if available
973
- if($jsonData && $jsonData['searchResult'] && isset($jsonData['searchResult']['searchParams'])) {
974
  $parameters = FF::getInstance(
975
  'Util\Parameters',
976
  $jsonData['searchResult']['searchParams']
@@ -998,4 +1056,14 @@ class Search extends AbstractAdapter
998
  }
999
  return $followSearch;
1000
  }
 
 
 
 
 
 
 
 
 
 
1001
  }
41
  */
42
  private $sorting;
43
 
44
+ /**
45
+ * @var FACTFinder\Data\SortingItems
46
+ */
47
+ private $sortingItems;
48
+
49
  /**
50
  * @var FACTFinder\Data\BreadCrumbTrail
51
  */
94
  }
95
 
96
  /**
97
+ * Set value for parameter sid for personalization.
98
+ *
99
+ * @param string $sid session id
100
  */
101
+ public function setSid($sid)
102
  {
103
+ $this->parameters['sid'] = $sid;
104
+ $this->recordsUpToDate = false;
105
  }
106
 
107
  /**
142
  //init default values
143
  $records = array();
144
  $resultCount = 0;
 
145
 
146
  $jsonData = $this->getResponseContent();
147
 
148
+ if ($this->isValidResponse($jsonData)) {
149
  $searchResultData = $jsonData['searchResult'];
 
150
 
151
  if (!empty($searchResultData['records']))
152
  {
173
  return FF::getInstance(
174
  'Data\Result',
175
  $records,
 
176
  $resultCount
177
  );
178
  }
196
  $singleWordSearch = array();
197
 
198
  $jsonData = $this->getResponseContent();
199
+ if ($this->isValidResponse($jsonData) && !empty($jsonData['searchResult']['singleWordResults']))
200
  {
201
+ foreach ($jsonData['searchResult']['singleWordResults'] as $swsData)
202
  {
203
  $item = FF::getInstance(
204
  'Data\SingleWordSearchItem',
206
  $this->convertServerQueryToClientUrl(
207
  $swsData['searchParams']
208
  ),
209
+ $swsData['recordCount']
210
  );
211
 
212
  foreach ($swsData['previewRecords'] as $recordData)
213
  {
214
+ $item->addPreviewRecord(FF::getInstance('Data\Record',
 
215
  (string)$recordData['id'],
216
+ $recordData['record'],
217
+ $recordData['searchSimilarity'],
218
+ $recordData['position'],
219
+ '',
220
+ $recordData['keywords']
221
  ));
222
  }
223
 
237
  $status = $searchStatusEnum::NoResult();
238
 
239
  $jsonData = $this->getResponseContent();
240
+ if ($this->isValidResponse($jsonData))
241
  {
242
  switch($jsonData['searchResult']['resultStatus'])
243
  {
261
  $status = $articleNumberSearchStatusEnum::IsNoArticleNumberSearch();
262
 
263
  $jsonData = $this->getResponseContent();
264
+ if ($this->isValidResponse($jsonData))
265
  {
266
  switch ($jsonData['searchResult']['resultArticleNumberStatus'])
267
  {
282
  public function isSearchTimedOut()
283
  {
284
  $jsonData = $this->getResponseContent();
285
+ if ($this->isValidResponse($jsonData))
286
  {
287
  return $jsonData['searchResult']['timedOut'];
288
  }
309
 
310
  $filterGroups = array();
311
 
312
+ if ($this->isValidResponse($jsonData) && isset($jsonData['searchResult']['groups'])) {
313
  foreach ($jsonData['searchResult']['groups'] as $groupData)
314
  $filterGroups[] = $this->createFilterGroup($groupData);
315
  }
507
 
508
  $jsonData = $this->getResponseContent();
509
 
510
+ if ($this->isValidResponse($jsonData))
511
  {
512
  $rppData = $jsonData['searchResult']['resultsPerPageList'];
513
  if (!empty($rppData))
563
 
564
  $jsonData = $this->getResponseContent();
565
 
566
+ if ($this->isValidResponse($jsonData))
567
  {
568
  $pagingData = $jsonData['searchResult']['paging'];
569
  if (!empty($pagingData))
648
 
649
  $jsonData = $this->getResponseContent();
650
 
651
+ if ($this->isValidResponse($jsonData))
652
  {
653
  $sortingData = $jsonData['searchResult']['sortsList'];
654
  if (!empty($sortingData))
676
  return null;
677
  }
678
 
679
+ /**
680
+ * @return \FACTFinder\Data\SortingItems
681
+ */
682
+ public function getSortingItems()
683
+ {
684
+ if (is_null($this->sortingItems))
685
+ $this->sortingItems = $this->createSortingItems();
686
+
687
+ return $this->sortingItems;
688
+ }
689
+
690
+ /**
691
+ * @return \FACTFinder\Data\SortingItems
692
+ */
693
+ private function createSortingItems()
694
+ {
695
+ $sortOptions = array();
696
+
697
+ $jsonData = $this->getResponseContent();
698
+
699
+ if ($this->isValidResponse($jsonData))
700
+ {
701
+ $sortingData = $jsonData['searchResult']['sortsList'];
702
+ if (!empty($sortingData))
703
+ {
704
+ $orderEnum = FF::getClassName('Data\SortingDirection');
705
+ foreach ($sortingData as $optionData)
706
+ {
707
+ $optionLink = $this->convertServerQueryToClientUrl(
708
+ $optionData['searchParams']
709
+ );
710
+ if (isset($optionData['order']))
711
+ {
712
+ switch ($optionData['order'])
713
+ {
714
+ case 'asc':
715
+ $order = $orderEnum::Ascending();
716
+ break;
717
+ case 'desc':
718
+ default:
719
+ $order = $orderEnum::Descending();
720
+ break;
721
+ }
722
+ }
723
+
724
+ $sortOptions[] = FF::getInstance(
725
+ 'Data\SortingItem',
726
+ $optionData['name'],
727
+ $order,
728
+ $optionData['description'],
729
+ $optionLink,
730
+ $optionData['selected']
731
+ );
732
+ }
733
+ }
734
+
735
+ return FF::getInstance(
736
+ 'Data\SortingItems',
737
+ $sortOptions
738
+ );
739
+ }
740
+ return null;
741
+ }
742
+
743
  /**
744
  * @return \FACTFinder\Data\BreadCrumbTrail
745
  */
760
 
761
  $jsonData = $this->getResponseContent();
762
 
763
+ if ($this->isValidResponse($jsonData))
764
  {
765
  $breadCrumbTrailData = $jsonData['searchResult']['breadCrumbTrailItems'];
766
  if (!empty($breadCrumbTrailData))
773
  );
774
 
775
  $breadCrumbTypeEnum = FF::getClassName('Data\BreadCrumbType');
776
+ switch ($breadCrumbData['type'])
777
+ {
778
+ case 'filter':
779
  $type = $breadCrumbTypeEnum::Filter();
780
+ break;
781
+ case 'advisor':
782
+ $type = $breadCrumbTypeEnum::Advisor();
783
+ break;
784
+ default:
785
  $type = $breadCrumbTypeEnum::Search();
786
+ break;
787
+ }
788
+
789
  $breadCrumbs[] = FF::getInstance(
790
  'Data\BreadCrumb',
791
  $breadCrumbData['text'],
825
  $campaigns = array();
826
  $jsonData = $this->getResponseContent();
827
 
828
+ if ($this->isValidResponse($jsonData) && isset($jsonData['searchResult']['campaigns'])) {
829
  foreach ($jsonData['searchResult']['campaigns'] as $campaignData) {
830
  $campaign = $this->createEmptyCampaignObject($campaignData);
831
 
1016
  $followUpQuestions
1017
  );
1018
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1019
 
1020
  /**
1021
  * Value for parameter "followSearch" for followups on initial search like filters, pagination, ...
1028
  {
1029
  $jsonData = $this->getResponseContent();
1030
  //use searchParams of result if available
1031
+ if ($this->isValidResponse($jsonData) && isset($jsonData['searchResult']['searchParams'])) {
1032
  $parameters = FF::getInstance(
1033
  'Util\Parameters',
1034
  $jsonData['searchResult']['searchParams']
1056
  }
1057
  return $followSearch;
1058
  }
1059
+
1060
+ /**
1061
+ * Returns true if the search response is valid or false if an error occurred.
1062
+ *
1063
+ * @return bool
1064
+ */
1065
+ protected function isValidResponse($jsonData)
1066
+ {
1067
+ return (!empty($jsonData) && !isset($jsonData['error']) && isset($jsonData['searchResult']));
1068
+ }
1069
  }
lib/FACTFinder/Adapter/SimilarRecords.php CHANGED
@@ -139,9 +139,12 @@ class SimilarRecords extends AbstractAdapter
139
  else
140
  {
141
  $jsonData = $this->getResponseContent();
142
- foreach($jsonData['attributes'] as $attributeData)
143
  {
144
- $attributes[$attributeData['name']] = $attributeData['value'];
 
 
 
145
  }
146
  }
147
 
@@ -182,12 +185,15 @@ class SimilarRecords extends AbstractAdapter
182
  {
183
  $position = 1;
184
  $jsonData = $this->getResponseContent();
185
- foreach($jsonData['records'] as $recordData)
186
  {
187
- if ($this->idsOnly)
188
- $records[] = $this->createSparseRecord($recordData);
189
- else
190
- $records[] = $this->createRecord($recordData, $position++);
 
 
 
191
  }
192
  }
193
 
139
  else
140
  {
141
  $jsonData = $this->getResponseContent();
142
+ if(parent::isValidResponse($jsonData))
143
  {
144
+ foreach($jsonData['attributes'] as $attributeData)
145
+ {
146
+ $attributes[$attributeData['name']] = $attributeData['value'];
147
+ }
148
  }
149
  }
150
 
185
  {
186
  $position = 1;
187
  $jsonData = $this->getResponseContent();
188
+ if(parent::isValidResponse($jsonData))
189
  {
190
+ foreach($jsonData['records'] as $recordData)
191
+ {
192
+ if ($this->idsOnly)
193
+ $records[] = $this->createSparseRecord($recordData);
194
+ else
195
+ $records[] = $this->createRecord($recordData, $position++);
196
+ }
197
  }
198
  }
199
 
lib/FACTFinder/Adapter/Suggest.php CHANGED
@@ -61,7 +61,7 @@ class Suggest extends AbstractAdapter
61
 
62
  $this->parameters['format'] = 'json';
63
  $suggestData = $this->getResponseContent();
64
- if (!empty($suggestData))
65
  {
66
  if (isset($suggestData['suggestions']))
67
  {
61
 
62
  $this->parameters['format'] = 'json';
63
  $suggestData = $this->getResponseContent();
64
+ if (parent::isValidResponse($suggestData))
65
  {
66
  if (isset($suggestData['suggestions']))
67
  {
lib/FACTFinder/Adapter/TagCloud.php CHANGED
@@ -88,7 +88,7 @@ class TagCloud extends AbstractAdapter
88
  $tagCloud = array();
89
 
90
  $tagCloudData = $this->getResponseContent();
91
- if (!empty($tagCloudData))
92
  {
93
  foreach ($tagCloudData as $tagQueryData)
94
  {
88
  $tagCloud = array();
89
 
90
  $tagCloudData = $this->getResponseContent();
91
+ if (parent::isValidResponse($tagCloudData))
92
  {
93
  foreach ($tagCloudData as $tagQueryData)
94
  {
lib/FACTFinder/Adapter/Tracking.php CHANGED
@@ -41,11 +41,12 @@ class Tracking extends AbstractAdapter
41
  * not available, it will try to use session_id() to fetch one.
42
  *
43
  * @param string $sid session id
 
44
  * @return bool Success?
45
  */
46
- public function doTrackingFromRequest($sid = null)
47
  {
48
- $this->setupTrackingFromRequest($sid);
49
  return $this->applyTracking();
50
  }
51
 
@@ -53,8 +54,11 @@ class Tracking extends AbstractAdapter
53
  * Use this method directly if you want to separate the setup from sending
54
  * the request. This is particularly useful when using the
55
  * MultiCurlRequestFactory.
 
 
 
56
  */
57
- public function setupTrackingFromRequest($sid = null)
58
  {
59
  if (strlen($sid) > 0)
60
  $this->parameters['sid'] = $sid;
@@ -63,16 +67,19 @@ class Tracking extends AbstractAdapter
63
  ) {
64
  $this->parameters['sid'] = session_id();
65
  }
 
 
 
66
  }
67
 
68
  /**
69
  * Track a detail click on a product.
70
  *
71
- * @param string $id id of product
72
  * @param string $sid session id (if empty, then try to set using the function session_id() )
73
  * @param string $query query which led to the product
74
  * @param int $pos position of product in the search result
75
- * @param string $masterid masterId of product if variant
76
  * @param string $cookieId cookie id (optional)
77
  * @param int $origPos original position of product in the search result. this data is delivered by FACT-Finder (optional - is set equals to $position by default)
78
  * @param int $page page number where the product was clicked (optional - is 1 by default)
@@ -80,7 +87,7 @@ class Tracking extends AbstractAdapter
80
  * @param string $title title of product (optional - is empty by default)
81
  * @param int $pageSize size of the page where the product was found (optional - is 12 by default)
82
  * @param int $origPageSize original size of the page before the user could have changed it (optional - is set equals to $page by default)
83
- * @param string $userid id of user (optional if modul personalisation is not used)
84
  * @return boolean $success
85
  */
86
  public function trackClick(
@@ -96,10 +103,10 @@ class Tracking extends AbstractAdapter
96
  $title = '',
97
  $pageSize = 12,
98
  $origPageSize = -1,
99
- $userid = null
100
  ) {
101
  $this->setupClickTracking($id, $query, $pos, $masterId, $sid, $cookieId, $origPos, $page,
102
- $simi, $title, $pageSize, $origPageSize, $userid);
103
  return $this->applyTracking();
104
  }
105
 
@@ -121,7 +128,7 @@ class Tracking extends AbstractAdapter
121
  $title = '',
122
  $pageSize = 12,
123
  $origPageSize = -1,
124
- $userid = null
125
  ) {
126
  if (strlen($sid) == 0) $sid = session_id();
127
  if ($origPos == -1) $origPos = $pos;
@@ -140,7 +147,7 @@ class Tracking extends AbstractAdapter
140
  'origPageSize' => $origPageSize,
141
  );
142
 
143
- if (strlen($userid) > 0) $params['userId'] = $userid;
144
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
145
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
146
 
@@ -151,15 +158,15 @@ class Tracking extends AbstractAdapter
151
  /**
152
  * Track a product which was added to the cart.
153
  *
154
- * @param string $id id of product
155
- * @param string $masterid masterId of product if variant
156
  * @param string $tile title of product (optional - is empty by default)
157
  * @param string $query query which led to the product (only if module Semantic Enhancer is used)
158
  * @param string $sid session id (if empty, then try to set using the function session_id() )
159
  * @param string $cookieId cookie id (optional)
160
  * @param int $count number of items purchased for each product (optional - default 1)
161
  * @param float $price this is the single unit price (optional)
162
- * @param string $userid id of user (optional if modul personalisation is not used)
163
  * @return boolean $success
164
  */
165
  public function trackCart(
@@ -171,9 +178,9 @@ class Tracking extends AbstractAdapter
171
  $cookieId = null,
172
  $count = 1,
173
  $price = null,
174
- $userid = null
175
  ) {
176
- $this->setupCartTracking($id, $masterId, $title, $query, $sid, $cookieId, $count, $price, $userid);
177
  return $this->applyTracking();
178
  }
179
 
@@ -191,7 +198,7 @@ class Tracking extends AbstractAdapter
191
  $cookieId = null,
192
  $count = 1,
193
  $price = null,
194
- $userid = null
195
  ) {
196
  if (strlen($sid) == 0) $sid = session_id();
197
  $params = array(
@@ -203,7 +210,7 @@ class Tracking extends AbstractAdapter
203
  );
204
 
205
  if (strlen($price) > 0) $params['price'] = $price;
206
- if (strlen($userid) > 0) $params['userId'] = $userid;
207
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
208
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
209
  if (strlen($query) > 0) $params['query'] = $query;
@@ -215,15 +222,15 @@ class Tracking extends AbstractAdapter
215
  /**
216
  * Track a product which was purchased.
217
  *
218
- * @param string $id id of product
219
- * @param string $masterid masterId of product if variant
220
  * @param string $tile title of product (optional - is empty by default)
221
  * @param string $query query which led to the product (only if module Semantic Enhancer is used)
222
  * @param string $sid session id (if empty, then try to set using the function session_id() )
223
  * @param string $cookieId cookie id (optional)
224
  * @param int $count number of items purchased for each product (optional - default 1)
225
  * @param float $price this is the single unit price (optional)
226
- * @param string $userid id of user (optional if modul personalisation is not used)
227
  * @return boolean $success
228
  */
229
  public function trackCheckout(
@@ -235,9 +242,9 @@ class Tracking extends AbstractAdapter
235
  $cookieId = null,
236
  $count = 1,
237
  $price = null,
238
- $userid = null
239
  ) {
240
- $this->setupCheckoutTracking($id, $masterId, $title, $query, $sid, $cookieId, $count, $price, $userid);
241
  return $this->applyTracking();
242
  }
243
 
@@ -255,7 +262,7 @@ class Tracking extends AbstractAdapter
255
  $cookieId = null,
256
  $count = 1,
257
  $price = null,
258
- $userid = null
259
  ) {
260
  if (strlen($sid) == 0) $sid = session_id();
261
  $params = array(
@@ -268,7 +275,7 @@ class Tracking extends AbstractAdapter
268
  );
269
 
270
  if (strlen($price) > 0) $params['price'] = $price;
271
- if (strlen($userid) > 0) $params['userId'] = $userid;
272
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
273
  if (strlen($query) > 0) $params['query'] = $query;
274
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
@@ -280,12 +287,12 @@ class Tracking extends AbstractAdapter
280
  /**
281
  * Track a click on a recommended product.
282
  *
283
- * @param string $id id of product
284
  * @param int $mainId ID of the product for which the clicked-upon item was recommended
285
- * @param string $masterid masterId of product if variant
286
  * @param string $sid session id (if empty, then try to set using the function session_id() )
287
  * @param string $cookieId cookie id (optional)
288
- * @param string $userid id of user (optional if modul personalisation is not used)
289
  * @return boolean $success
290
  */
291
  public function trackRecommendationClick(
@@ -294,9 +301,9 @@ class Tracking extends AbstractAdapter
294
  $masterId = null,
295
  $sid = null,
296
  $cookieId = null,
297
- $userid = null
298
  ) {
299
- $this->setupRecommendationClickTracking($id, $mainId, $masterId, $sid, $cookieId, $userid);
300
  return $this->applyTracking();
301
  }
302
 
@@ -311,7 +318,7 @@ class Tracking extends AbstractAdapter
311
  $masterId = null,
312
  $sid = null,
313
  $cookieId = null,
314
- $userid = null
315
  ) {
316
  if (strlen($sid) == 0) $sid = session_id();
317
  $params = array(
@@ -323,7 +330,7 @@ class Tracking extends AbstractAdapter
323
  'event' => 'recommendationClick'
324
  );
325
 
326
- if (strlen($userid) > 0) $params['userId'] = $userid;
327
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
328
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
329
 
@@ -336,15 +343,15 @@ class Tracking extends AbstractAdapter
336
  *
337
  * @param string $sid session id (if empty, then try to set using the function session_id() )
338
  * @param string $cookieId cookie id (optional)
339
- * @param string $userid id of user who logged in
340
  * @return boolean $success
341
  */
342
  public function trackLogin(
343
  $sid = null,
344
  $cookieId = null,
345
- $userid = null
346
  ) {
347
- $this->setupLoginTracking($sid, $cookieId, $userid);
348
  return $this->applyTracking();
349
  }
350
 
@@ -356,12 +363,12 @@ class Tracking extends AbstractAdapter
356
  public function setupLoginTracking(
357
  $sid = null,
358
  $cookieId = null,
359
- $userid = null
360
  ) {
361
  if (strlen($sid) == 0) $sid = session_id();
362
  $params = array(
363
  'sid' => $sid,
364
- 'userId' => $userid,
365
  'event' => 'login'
366
  );
367
 
41
  * not available, it will try to use session_id() to fetch one.
42
  *
43
  * @param string $sid session id
44
+ * @param string $userId id of user
45
  * @return bool Success?
46
  */
47
+ public function doTrackingFromRequest($sid = null, $userId = null)
48
  {
49
+ $this->setupTrackingFromRequest($sid, $userId);
50
  return $this->applyTracking();
51
  }
52
 
54
  * Use this method directly if you want to separate the setup from sending
55
  * the request. This is particularly useful when using the
56
  * MultiCurlRequestFactory.
57
+ *
58
+ * @param string $sid session id
59
+ * @param string $userId id of user
60
  */
61
+ public function setupTrackingFromRequest($sid = null, $userId = null)
62
  {
63
  if (strlen($sid) > 0)
64
  $this->parameters['sid'] = $sid;
67
  ) {
68
  $this->parameters['sid'] = session_id();
69
  }
70
+
71
+ if (strlen($userId) > 0)
72
+ $this->parameters['userId'] = $userId;
73
  }
74
 
75
  /**
76
  * Track a detail click on a product.
77
  *
78
+ * @param string $id tracking id of product (see field with the role "Product number for tracking")
79
  * @param string $sid session id (if empty, then try to set using the function session_id() )
80
  * @param string $query query which led to the product
81
  * @param int $pos position of product in the search result
82
+ * @param string $masterId master id of the product (see field with the role "Master article number")
83
  * @param string $cookieId cookie id (optional)
84
  * @param int $origPos original position of product in the search result. this data is delivered by FACT-Finder (optional - is set equals to $position by default)
85
  * @param int $page page number where the product was clicked (optional - is 1 by default)
87
  * @param string $title title of product (optional - is empty by default)
88
  * @param int $pageSize size of the page where the product was found (optional - is 12 by default)
89
  * @param int $origPageSize original size of the page before the user could have changed it (optional - is set equals to $page by default)
90
+ * @param string $userId id of user (optional if modul personalisation is not used)
91
  * @return boolean $success
92
  */
93
  public function trackClick(
103
  $title = '',
104
  $pageSize = 12,
105
  $origPageSize = -1,
106
+ $userId = null
107
  ) {
108
  $this->setupClickTracking($id, $query, $pos, $masterId, $sid, $cookieId, $origPos, $page,
109
+ $simi, $title, $pageSize, $origPageSize, $userId);
110
  return $this->applyTracking();
111
  }
112
 
128
  $title = '',
129
  $pageSize = 12,
130
  $origPageSize = -1,
131
+ $userId = null
132
  ) {
133
  if (strlen($sid) == 0) $sid = session_id();
134
  if ($origPos == -1) $origPos = $pos;
147
  'origPageSize' => $origPageSize,
148
  );
149
 
150
+ if (strlen($userId) > 0) $params['userId'] = $userId;
151
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
152
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
153
 
158
  /**
159
  * Track a product which was added to the cart.
160
  *
161
+ * @param string $id tracking id of product (see field with the role "Product number for tracking")
162
+ * @param string $masterId master id of the product (see field with the role "Master article number")
163
  * @param string $tile title of product (optional - is empty by default)
164
  * @param string $query query which led to the product (only if module Semantic Enhancer is used)
165
  * @param string $sid session id (if empty, then try to set using the function session_id() )
166
  * @param string $cookieId cookie id (optional)
167
  * @param int $count number of items purchased for each product (optional - default 1)
168
  * @param float $price this is the single unit price (optional)
169
+ * @param string $userId id of user (optional if modul personalisation is not used)
170
  * @return boolean $success
171
  */
172
  public function trackCart(
178
  $cookieId = null,
179
  $count = 1,
180
  $price = null,
181
+ $userId = null
182
  ) {
183
+ $this->setupCartTracking($id, $masterId, $title, $query, $sid, $cookieId, $count, $price, $userId);
184
  return $this->applyTracking();
185
  }
186
 
198
  $cookieId = null,
199
  $count = 1,
200
  $price = null,
201
+ $userId = null
202
  ) {
203
  if (strlen($sid) == 0) $sid = session_id();
204
  $params = array(
210
  );
211
 
212
  if (strlen($price) > 0) $params['price'] = $price;
213
+ if (strlen($userId) > 0) $params['userId'] = $userId;
214
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
215
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
216
  if (strlen($query) > 0) $params['query'] = $query;
222
  /**
223
  * Track a product which was purchased.
224
  *
225
+ * @param string $id tracking id of product (see field with the role "Product number for tracking")
226
+ * @param string $masterId master id of the product (see field with the role "Master article number")
227
  * @param string $tile title of product (optional - is empty by default)
228
  * @param string $query query which led to the product (only if module Semantic Enhancer is used)
229
  * @param string $sid session id (if empty, then try to set using the function session_id() )
230
  * @param string $cookieId cookie id (optional)
231
  * @param int $count number of items purchased for each product (optional - default 1)
232
  * @param float $price this is the single unit price (optional)
233
+ * @param string $userId id of user (optional if modul personalisation is not used)
234
  * @return boolean $success
235
  */
236
  public function trackCheckout(
242
  $cookieId = null,
243
  $count = 1,
244
  $price = null,
245
+ $userId = null
246
  ) {
247
+ $this->setupCheckoutTracking($id, $masterId, $title, $query, $sid, $cookieId, $count, $price, $userId);
248
  return $this->applyTracking();
249
  }
250
 
262
  $cookieId = null,
263
  $count = 1,
264
  $price = null,
265
+ $userId = null
266
  ) {
267
  if (strlen($sid) == 0) $sid = session_id();
268
  $params = array(
275
  );
276
 
277
  if (strlen($price) > 0) $params['price'] = $price;
278
+ if (strlen($userId) > 0) $params['userId'] = $userId;
279
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
280
  if (strlen($query) > 0) $params['query'] = $query;
281
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
287
  /**
288
  * Track a click on a recommended product.
289
  *
290
+ * @param string $id tracking id of product (see field with the role "Product number for tracking")
291
  * @param int $mainId ID of the product for which the clicked-upon item was recommended
292
+ * @param string $masterId master id of the product (see field with the role "Master article number")
293
  * @param string $sid session id (if empty, then try to set using the function session_id() )
294
  * @param string $cookieId cookie id (optional)
295
+ * @param string $userId id of user (optional if modul personalisation is not used)
296
  * @return boolean $success
297
  */
298
  public function trackRecommendationClick(
301
  $masterId = null,
302
  $sid = null,
303
  $cookieId = null,
304
+ $userId = null
305
  ) {
306
+ $this->setupRecommendationClickTracking($id, $mainId, $masterId, $sid, $cookieId, $userId);
307
  return $this->applyTracking();
308
  }
309
 
318
  $masterId = null,
319
  $sid = null,
320
  $cookieId = null,
321
+ $userId = null
322
  ) {
323
  if (strlen($sid) == 0) $sid = session_id();
324
  $params = array(
330
  'event' => 'recommendationClick'
331
  );
332
 
333
+ if (strlen($userId) > 0) $params['userId'] = $userId;
334
  if (strlen($cookieId) > 0) $params['cookieId'] = $cookieId;
335
  if (strlen($masterId) > 0) $params['masterId'] = $masterId;
336
 
343
  *
344
  * @param string $sid session id (if empty, then try to set using the function session_id() )
345
  * @param string $cookieId cookie id (optional)
346
+ * @param string $userId id of user who logged in
347
  * @return boolean $success
348
  */
349
  public function trackLogin(
350
  $sid = null,
351
  $cookieId = null,
352
+ $userId = null
353
  ) {
354
+ $this->setupLoginTracking($sid, $cookieId, $userId);
355
  return $this->applyTracking();
356
  }
357
 
363
  public function setupLoginTracking(
364
  $sid = null,
365
  $cookieId = null,
366
+ $userId = null
367
  ) {
368
  if (strlen($sid) == 0) $sid = session_id();
369
  $params = array(
370
  'sid' => $sid,
371
+ 'userId' => $userId,
372
  'event' => 'login'
373
  );
374
 
lib/FACTFinder/Core/AbstractConfiguration.php CHANGED
@@ -6,112 +6,182 @@ namespace FACTFinder\Core;
6
  */
7
  abstract class AbstractConfiguration implements ConfigurationInterface
8
  {
9
-
 
 
 
10
  public function getCustomValue($name)
11
  {
12
  return null;
13
  }
14
 
 
 
 
15
  public function isDebugEnabled()
16
  {
17
  return false;
18
  }
19
 
 
 
 
20
  public function getRequestProtocol()
21
  {
22
  return 'http';
23
  }
24
 
 
 
 
25
  public function getServerAddress()
26
  {
27
  return null;
28
  }
29
 
 
 
 
30
  public function getServerPort()
31
  {
32
  return '80';
33
  }
34
 
 
 
 
35
  public function getContext()
36
  {
37
  return null;
38
  }
39
 
 
 
 
40
  public function getChannel()
41
  {
42
  return null;
43
  }
44
 
 
 
 
45
  public function getLanguage()
46
  {
47
  return null;
48
  }
49
 
 
 
 
50
  public function isHttpAuthenticationType()
51
  {
52
  return false;
53
  }
54
 
 
 
 
55
  public function isSimpleAuthenticationType()
56
  {
57
  return false;
58
  }
59
 
 
 
 
60
  public function isAdvancedAuthenticationType()
61
  {
62
  return false;
63
  }
64
 
65
- private function retrieveType()
66
- {
67
- return null;
68
- }
69
-
70
  public function getUserName()
71
  {
72
  return null;
73
  }
74
 
 
 
 
75
  public function getPassword()
76
  {
77
  return null;
78
  }
79
 
 
 
 
80
  public function getAuthenticationPrefix()
81
  {
82
  return null;
83
  }
84
 
 
 
 
85
  public function getAuthenticationPostfix()
86
  {
87
  return null;
88
  }
89
 
 
 
 
 
 
90
  public function getClientMappings()
91
  {
92
  return array();
93
  }
94
 
 
 
 
 
 
95
  public function getServerMappings()
96
  {
97
  return array();
98
  }
99
 
 
 
 
 
 
100
  public function getIgnoredClientParameters()
101
  {
102
  return array();
103
  }
104
 
 
 
 
 
 
105
  public function getIgnoredServerParameters()
106
  {
107
  return array();
108
  }
109
 
 
 
 
 
 
110
  public function getWhitelistClientParameters()
111
  {
112
  return array();
113
  }
114
 
 
 
 
 
 
115
  public function getWhitelistServerParameters()
116
  {
117
  return array(
@@ -129,6 +199,7 @@ abstract class AbstractConfiguration implements ConfigurationInterface
129
  'followSearch' => true,
130
  'format' => true,
131
  'id' => true,
 
132
  'idsOnly' => true,
133
  'ignoreForCache' => true,
134
  'isArticleNumber' => true,
@@ -168,61 +239,121 @@ abstract class AbstractConfiguration implements ConfigurationInterface
168
  );
169
  }
170
 
 
 
 
 
 
171
  public function getRequiredClientParameters()
172
  {
173
  return array();
174
  }
175
 
 
 
 
 
 
176
  public function getRequiredServerParameters()
177
  {
178
  return array();
179
  }
180
 
 
 
 
 
 
181
  public function getDefaultConnectTimeout()
182
  {
183
  return 2;
184
  }
185
 
 
 
 
 
 
186
  public function getDefaultTimeout()
187
  {
188
  return 4;
189
  }
190
 
 
 
 
 
 
191
  public function getSuggestConnectTimeout()
192
  {
193
  return 2;
194
  }
195
 
 
 
 
 
 
196
  public function getSuggestTimeout()
197
  {
198
  return 2;
199
  }
200
 
 
 
 
 
 
201
  public function getTrackingConnectTimeout()
202
  {
203
  return 2;
204
  }
205
 
 
 
 
 
 
206
  public function getTrackingTimeout()
207
  {
208
  return 2;
209
  }
210
 
 
 
 
 
 
211
  public function getImportConnectTimeout()
212
  {
213
  return 10;
214
  }
215
 
 
 
 
 
 
216
  public function getImportTimeout()
217
  {
218
  return 360;
219
  }
220
 
 
 
 
 
 
221
  public function getPageContentEncoding()
222
  {
223
  return 'UTF-8';
224
  }
225
 
 
 
 
 
 
226
  public function getClientUrlEncoding()
227
  {
228
  return 'UTF-8';
6
  */
7
  abstract class AbstractConfiguration implements ConfigurationInterface
8
  {
9
+ /**
10
+ * @param string name
11
+ * @return string value
12
+ */
13
  public function getCustomValue($name)
14
  {
15
  return null;
16
  }
17
 
18
+ /**
19
+ * @return bool
20
+ */
21
  public function isDebugEnabled()
22
  {
23
  return false;
24
  }
25
 
26
+ /**
27
+ * @return string
28
+ */
29
  public function getRequestProtocol()
30
  {
31
  return 'http';
32
  }
33
 
34
+ /**
35
+ * @return string
36
+ */
37
  public function getServerAddress()
38
  {
39
  return null;
40
  }
41
 
42
+ /**
43
+ * @return int
44
+ */
45
  public function getServerPort()
46
  {
47
  return '80';
48
  }
49
 
50
+ /**
51
+ * @return string
52
+ */
53
  public function getContext()
54
  {
55
  return null;
56
  }
57
 
58
+ /**
59
+ * @return string
60
+ */
61
  public function getChannel()
62
  {
63
  return null;
64
  }
65
 
66
+ /**
67
+ * @return string
68
+ */
69
  public function getLanguage()
70
  {
71
  return null;
72
  }
73
 
74
+ /**
75
+ * @return boolean
76
+ */
77
  public function isHttpAuthenticationType()
78
  {
79
  return false;
80
  }
81
 
82
+ /**
83
+ * @return boolean
84
+ */
85
  public function isSimpleAuthenticationType()
86
  {
87
  return false;
88
  }
89
 
90
+ /**
91
+ * @return boolean
92
+ */
93
  public function isAdvancedAuthenticationType()
94
  {
95
  return false;
96
  }
97
 
98
+ /**
99
+ * @return string
100
+ */
 
 
101
  public function getUserName()
102
  {
103
  return null;
104
  }
105
 
106
+ /**
107
+ * @return string
108
+ */
109
  public function getPassword()
110
  {
111
  return null;
112
  }
113
 
114
+ /**
115
+ * @return string
116
+ */
117
  public function getAuthenticationPrefix()
118
  {
119
  return null;
120
  }
121
 
122
+ /**
123
+ * @return string
124
+ */
125
  public function getAuthenticationPostfix()
126
  {
127
  return null;
128
  }
129
 
130
+ /**
131
+ * Get mappings from server to client parameters.
132
+ *
133
+ * @return array
134
+ */
135
  public function getClientMappings()
136
  {
137
  return array();
138
  }
139
 
140
+ /**
141
+ * Get mappings from client to server parameters.
142
+ *
143
+ * @return array
144
+ */
145
  public function getServerMappings()
146
  {
147
  return array();
148
  }
149
 
150
+ /**
151
+ * Get parameters which should be ignored in client URLs.
152
+ *
153
+ * @return array with string as key and boolean true as value for each item
154
+ */
155
  public function getIgnoredClientParameters()
156
  {
157
  return array();
158
  }
159
 
160
+ /**
161
+ * Get parameters which should be ignored in server URLs.
162
+ *
163
+ * @return array with string as key and boolean true as value for each item
164
+ */
165
  public function getIgnoredServerParameters()
166
  {
167
  return array();
168
  }
169
 
170
+ /**
171
+ * Get parameters which are allowed in client URLs.
172
+ *
173
+ * @return array with string as key and boolean true as value for each item
174
+ */
175
  public function getWhitelistClientParameters()
176
  {
177
  return array();
178
  }
179
 
180
+ /**
181
+ * Get parameters which are allowed in server URLs.
182
+ *
183
+ * @return array with string as key and boolean true as value for each item
184
+ */
185
  public function getWhitelistServerParameters()
186
  {
187
  return array(
199
  'followSearch' => true,
200
  'format' => true,
201
  'id' => true,
202
+ 'ids' => true,
203
  'idsOnly' => true,
204
  'ignoreForCache' => true,
205
  'isArticleNumber' => true,
239
  );
240
  }
241
 
242
+ /**
243
+ * Get parameters which are required in client URLs.
244
+ *
245
+ * @return array with parameter name as key and default value as value.
246
+ */
247
  public function getRequiredClientParameters()
248
  {
249
  return array();
250
  }
251
 
252
+ /**
253
+ * Get parameters which are required in server URLs.
254
+ *
255
+ * @return array with parameter name as key and default value as value.
256
+ */
257
  public function getRequiredServerParameters()
258
  {
259
  return array();
260
  }
261
 
262
+ /**
263
+ * Get default connect timeout for all adapters.
264
+ *
265
+ * @return int
266
+ */
267
  public function getDefaultConnectTimeout()
268
  {
269
  return 2;
270
  }
271
 
272
+ /**
273
+ * Get default timeout for all adapters.
274
+ *
275
+ * @return int
276
+ */
277
  public function getDefaultTimeout()
278
  {
279
  return 4;
280
  }
281
 
282
+ /**
283
+ * Get connect timeout for Suggest adapter.
284
+ *
285
+ * @return int
286
+ */
287
  public function getSuggestConnectTimeout()
288
  {
289
  return 2;
290
  }
291
 
292
+ /**
293
+ * Get timeout for Suggest adapter.
294
+ *
295
+ * @return int
296
+ */
297
  public function getSuggestTimeout()
298
  {
299
  return 2;
300
  }
301
 
302
+ /**
303
+ * Get connect timeout for Tracking adapter.
304
+ *
305
+ * @return int
306
+ */
307
  public function getTrackingConnectTimeout()
308
  {
309
  return 2;
310
  }
311
 
312
+ /**
313
+ * Get timeout for Tracking adapter.
314
+ *
315
+ * @return int
316
+ */
317
  public function getTrackingTimeout()
318
  {
319
  return 2;
320
  }
321
 
322
+ /**
323
+ * Get connect timeout for Import adapter.
324
+ *
325
+ * @return int
326
+ */
327
  public function getImportConnectTimeout()
328
  {
329
  return 10;
330
  }
331
 
332
+ /**
333
+ * Get timeout for Import adapter-
334
+ *
335
+ * @return int
336
+ */
337
  public function getImportTimeout()
338
  {
339
  return 360;
340
  }
341
 
342
+ /**
343
+ * Get encoding for content to be sent to the browser.
344
+ *
345
+ * @return string
346
+ */
347
  public function getPageContentEncoding()
348
  {
349
  return 'UTF-8';
350
  }
351
 
352
+ /**
353
+ * Get encoding for URLs of the client.
354
+ *
355
+ * @return string
356
+ */
357
  public function getClientUrlEncoding()
358
  {
359
  return 'UTF-8';
lib/FACTFinder/Core/ArrayConfiguration.php ADDED
@@ -0,0 +1,324 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace FACTFinder\Core;
3
+
4
+ /**
5
+ * Implements ConfigurationInterface by reading from a given array
6
+ */
7
+ class ArrayConfiguration extends AbstractConfiguration
8
+ {
9
+ const HTTP_AUTHENTICATION = 'http';
10
+ const SIMPLE_AUTHENTICATION = 'simple';
11
+ const ADVANCED_AUTHENTICATION = 'advanced';
12
+
13
+ /**
14
+ * @var array the configuration.
15
+ */
16
+ private $configuration;
17
+
18
+ private $clientMappings;
19
+ private $serverMappings;
20
+ private $ignoredClientParameters;
21
+ private $ignoredServerParameters;
22
+ private $whitelistClientParameters;
23
+ private $whitelistServerParameters;
24
+ private $requiredClientParameters;
25
+ private $requiredServerParameters;
26
+
27
+ /**
28
+ * Create a new configuration from an array
29
+ * @param array $config The configuration data as array
30
+ * @param string $section The configuration section
31
+ * @return ArrayConfiguration
32
+ *
33
+ * @throws \Exception
34
+ */
35
+ public function __construct(array $config, $section)
36
+ {
37
+ if (!isset($config[$section]))
38
+ throw new \Exception("Specified configuration array does not contain section $section");
39
+
40
+ $this->configuration = $config[$section];
41
+ }
42
+
43
+ public function isDebugEnabled()
44
+ {
45
+ return $this->configuration['debug'] === true;
46
+ }
47
+
48
+ public function getCustomValue($name)
49
+ {
50
+ return $this->configuration[$name];
51
+ }
52
+
53
+ public function getRequestProtocol()
54
+ {
55
+ return $this->configuration['connection']['protocol'];
56
+ }
57
+
58
+ public function getServerAddress()
59
+ {
60
+ return $this->configuration['connection']['address'];
61
+ }
62
+
63
+ public function getServerPort()
64
+ {
65
+ return $this->configuration['connection']['port'];
66
+ }
67
+
68
+ public function getContext()
69
+ {
70
+ return $this->configuration['connection']['context'];
71
+ }
72
+
73
+ public function getChannel()
74
+ {
75
+ return $this->configuration['connection']['channel'];
76
+ }
77
+
78
+ public function getLanguage()
79
+ {
80
+ return $this->configuration['connection']['language'];
81
+ }
82
+
83
+ public function isHttpAuthenticationType()
84
+ {
85
+ return $this->retrieveAuthenticationType() === self::HTTP_AUTHENTICATION;
86
+ }
87
+
88
+ public function isSimpleAuthenticationType()
89
+ {
90
+ return $this->retrieveAuthenticationType() === self::SIMPLE_AUTHENTICATION;
91
+ }
92
+
93
+ public function isAdvancedAuthenticationType()
94
+ {
95
+ return $this->retrieveAuthenticationType() === self::ADVANCED_AUTHENTICATION;
96
+ }
97
+
98
+ private function retrieveAuthenticationType()
99
+ {
100
+ return strtolower($this->configuration['connection']['authentication']['type']);
101
+ }
102
+
103
+ public function makeHttpAuthenticationType()
104
+ {
105
+ $this->configuration['connection']['authentication']['type'] = self::HTTP_AUTHENTICATION;
106
+ }
107
+
108
+ public function makeSimpleAuthenticationType()
109
+ {
110
+ $this->configuration['connection']['authentication']['type'] = self::SIMPLE_AUTHENTICATION;
111
+ }
112
+
113
+ public function makeAdvancedAuthenticationType()
114
+ {
115
+ $this->configuration['connection']['authentication']['type'] = self::ADVANCED_AUTHENTICATION;
116
+ }
117
+
118
+ public function getUserName()
119
+ {
120
+ return $this->configuration['connection']['authentication']['username'];
121
+ }
122
+
123
+ public function getPassword()
124
+ {
125
+ return $this->configuration['connection']['authentication']['password'];
126
+ }
127
+
128
+ public function getAuthenticationPrefix()
129
+ {
130
+ return $this->configuration['connection']['authentication']['prefix'];
131
+ }
132
+
133
+ public function getAuthenticationPostfix()
134
+ {
135
+ return $this->configuration['connection']['authentication']['postfix'];
136
+ }
137
+
138
+ public function getClientMappings()
139
+ {
140
+ if ($this->clientMappings == null) {
141
+ $this->clientMappings = $this->retrieveMappings($this->configuration['parameters']['client']);
142
+ }
143
+ return $this->clientMappings;
144
+ }
145
+
146
+ public function getServerMappings()
147
+ {
148
+ if ($this->serverMappings == null) {
149
+ $this->serverMappings = $this->retrieveMappings($this->configuration['parameters']['server']);
150
+ }
151
+ return $this->serverMappings;
152
+ }
153
+
154
+ private function retrieveMappings($section)
155
+ {
156
+ $mappings = array();
157
+ if (isset($section['mapping']) && is_array($section['mapping'])) {
158
+ //load mappings
159
+ foreach($section['mapping'] as $rule) {
160
+ $mappings[$rule['from']] = $rule['to'];
161
+ }
162
+ }
163
+ return $mappings;
164
+ }
165
+
166
+ public function getIgnoredClientParameters()
167
+ {
168
+ if ($this->ignoredClientParameters == null) {
169
+ $this->ignoredClientParameters = $this->retrieveIgnoredParameters(
170
+ $this->configuration['parameters']['client']
171
+ );
172
+ }
173
+ return $this->ignoredClientParameters;
174
+ }
175
+
176
+ public function getIgnoredServerParameters()
177
+ {
178
+ if ($this->ignoredServerParameters == null) {
179
+ $this->ignoredServerParameters = $this->retrieveIgnoredParameters(
180
+ $this->configuration['parameters']['server']
181
+ );
182
+ }
183
+ return $this->ignoredServerParameters;
184
+ }
185
+
186
+ private function retrieveIgnoredParameters($section)
187
+ {
188
+ $ignoredParameters = array();
189
+ if (isset($section['ignore']) && is_array($section['ignore'])) {
190
+ //load ignore rules
191
+ foreach($section['ignore'] as $name) {
192
+ $ignoredParameters[$name] = true;
193
+ }
194
+ }
195
+ return $ignoredParameters;
196
+ }
197
+
198
+ public function getWhitelistClientParameters()
199
+ {
200
+ if ($this->whitelistClientParameters == null) {
201
+ $this->whitelistClientParameters = $this->retrieveWhitelistParameters(
202
+ $this->configuration['parameters']['client']
203
+ );
204
+ }
205
+ return $this->whitelistClientParameters;
206
+ }
207
+
208
+ public function getWhitelistServerParameters()
209
+ {
210
+ if ($this->whitelistServerParameters == null) {
211
+ $this->whitelistServerParameters = $this->retrieveWhitelistParameters(
212
+ $this->configuration['parameters']['server']
213
+ );
214
+ if (empty($this->whitelistServerParameters)) {
215
+ $this->whitelistServerParameters = parent::getWhitelistServerParameters();
216
+ }
217
+ }
218
+ return $this->whitelistServerParameters;
219
+ }
220
+
221
+ private function retrieveWhitelistParameters($section)
222
+ {
223
+ $whitelist = array();
224
+ if (isset($section['whitelist']) && is_array($section['whitelist'])) {
225
+ //load whitelist
226
+ foreach($section['whitelist'] as $name) {
227
+ $whitelist[$name] = true;
228
+ }
229
+ }
230
+ return $whitelist;
231
+ }
232
+
233
+ public function getRequiredClientParameters()
234
+ {
235
+ if ($this->requiredClientParameters == null) {
236
+ $this->requiredClientParameters = $this->retrieveRequiredParameters(
237
+ $this->configuration['parameters']['client']
238
+ );
239
+ }
240
+ return $this->requiredClientParameters;
241
+ }
242
+
243
+ public function getRequiredServerParameters()
244
+ {
245
+ if ($this->requiredServerParameters == null) {
246
+ $this->requiredServerParameters = $this->retrieveRequiredParameters(
247
+ $this->configuration['parameters']['server']
248
+ );
249
+ }
250
+ return $this->requiredServerParameters;
251
+ }
252
+
253
+ private function retrieveRequiredParameters($section)
254
+ {
255
+ $requiredParameters = array();
256
+ if (isset($section['require']) && is_array($section['require'])) {
257
+ //load require rules
258
+ foreach($section['require'] as $rule) {
259
+ $requiredParameters[$rule['name']] = $rule['default'];
260
+ }
261
+ }
262
+ return $requiredParameters;
263
+ }
264
+
265
+ public function getDefaultConnectTimeout()
266
+ {
267
+ return $this->configuration['connection']['timeouts']['defaultConnectTimeout'];
268
+ }
269
+
270
+ public function getDefaultTimeout()
271
+ {
272
+ return $this->configuration['connection']['timeouts']['defaultTimeout'];
273
+ }
274
+
275
+ public function getSuggestConnectTimeout()
276
+ {
277
+ return $this->configuration['connection']['timeouts']['suggestConnectTimeout'];
278
+ }
279
+
280
+ public function getSuggestTimeout()
281
+ {
282
+ return $this->configuration['connection']['timeouts']['suggestTimeout'];
283
+ }
284
+
285
+ public function getTrackingConnectTimeout()
286
+ {
287
+ return $this->configuration['connection']['timeouts']['trackingConnectTimeout'];
288
+ }
289
+
290
+ public function getTrackingTimeout()
291
+ {
292
+ return $this->configuration['connection']['timeouts']['trackingTimeout'];
293
+ }
294
+
295
+ public function getImportConnectTimeout()
296
+ {
297
+ return $this->configuration['connection']['timeouts']['importConnectTimeout'];
298
+ }
299
+
300
+ public function getImportTimeout()
301
+ {
302
+ return $this->configuration['connection']['timeouts']['importTimeout'];
303
+ }
304
+
305
+ public function getPageContentEncoding()
306
+ {
307
+ return $this->configuration['encoding']['pageContent'];
308
+ }
309
+
310
+ public function getClientUrlEncoding()
311
+ {
312
+ return $this->configuration['encoding']['clientUrl'];
313
+ }
314
+
315
+ public function setPageContentEncoding($encoding)
316
+ {
317
+ $this->configuration['encoding']['pageContent'] = $encoding;
318
+ }
319
+
320
+ public function setClientUrlEncoding($encoding)
321
+ {
322
+ $this->configuration['encoding']['clientUrl'] = $encoding;
323
+ }
324
+ }
lib/FACTFinder/Core/Server/EasyCurlDataProvider.php CHANGED
@@ -141,7 +141,7 @@ class EasyCurlDataProvider extends AbstractDataProvider
141
  ) {
142
  if ($this->configuration->isDebugEnabled()
143
  && isset($_SERVER['HTTP_REFERER'])
144
- && !$connectionData->issetConnectionOptions(CURLOPT_REFERER)
145
  ) {
146
  $connectionData->setConnectionOption(
147
  CURLOPT_REFERER,
141
  ) {
142
  if ($this->configuration->isDebugEnabled()
143
  && isset($_SERVER['HTTP_REFERER'])
144
+ && !$connectionData->issetConnectionOption(CURLOPT_REFERER)
145
  ) {
146
  $connectionData->setConnectionOption(
147
  CURLOPT_REFERER,
lib/FACTFinder/Core/Server/FileSystemDataProvider.php CHANGED
@@ -57,17 +57,26 @@ class FileSystemDataProvider extends AbstractDataProvider
57
  $connectionData->setNullResponse();
58
  return;
59
  }
 
60
 
61
- $fileName = $this->getFileName($connectionData);
 
 
62
 
63
  if (!$this->hasFileNameChanged($id, $fileName))
64
  return;
65
 
66
  $this->log->info("Trying to load file: $fileName");
 
 
 
 
 
 
67
 
68
  $response = FF::getInstance(
69
  'Core\Server\Response',
70
- file_get_contents($fileName),
71
  200,
72
  0,
73
  ''
@@ -76,39 +85,54 @@ class FileSystemDataProvider extends AbstractDataProvider
76
  $connectionData->setResponse($response, $fileName);
77
  }
78
 
79
- private function getFileName($connectionData)
80
  {
81
  $action = $connectionData->getAction();
82
 
83
- // Replace the .ff file extension with an underscore.
84
- $fileName = preg_replace('/[.]ff$/i', '_', $action);
85
-
86
- $parameters = clone $connectionData->getParameters();
 
 
 
 
 
87
 
 
88
  if (isset($parameters['format']))
89
  $fileExtension = '.' . $parameters['format'];
90
  else
91
  $fileExtension = '.raw';
92
-
 
 
 
 
 
 
 
93
  unset($parameters['format']);
94
  unset($parameters['user']);
95
  unset($parameters['pw']);
96
  unset($parameters['timestamp']);
97
  unset($parameters['channel']);
98
-
99
  $rawParameters = &$parameters->getArray();
100
-
101
  // We received that array by reference, so we can sort it to sort the
102
  // Parameters object internally, too.
103
  ksort($rawParameters, SORT_STRING);
104
-
105
  $queryString = $parameters->toJavaQueryString();
106
- $fileName .= str_replace('&', '_', $queryString);
107
- $fileName .= $fileExtension;
108
-
109
- return $this->fileLocation . $fileName;
110
  }
111
 
 
 
 
 
 
112
  private function hasFileNameChanged($id, $newFileName)
113
  {
114
  $connectionData = $this->connectionData[$id];
57
  $connectionData->setNullResponse();
58
  return;
59
  }
60
+ $fileNamePrefix = $this->getFileNamePrefix($connectionData);
61
 
62
+ $fileExtension = $this->getFileExtension($connectionData);
63
+ $queryString = $this->getQueryString($connectionData);
64
+ $fileName = $this->getFileName($fileNamePrefix, md5($queryString), $fileExtension);
65
 
66
  if (!$this->hasFileNameChanged($id, $fileName))
67
  return;
68
 
69
  $this->log->info("Trying to load file: $fileName");
70
+
71
+ $fileContent = null;
72
+ if(!$fileContent = @file_get_contents($fileName))
73
+ {
74
+ throw new \Exception('File "'.$fileName.' (original: ' . $fileNamePrefix . $queryString . $fileExtension . '" not found');
75
+ }
76
 
77
  $response = FF::getInstance(
78
  'Core\Server\Response',
79
+ $fileContent,
80
  200,
81
  0,
82
  ''
85
  $connectionData->setResponse($response, $fileName);
86
  }
87
 
88
+ private function getFileNamePrefix($connectionData)
89
  {
90
  $action = $connectionData->getAction();
91
 
92
+ // Replace the .ff file extension with a dot.
93
+ $prefix = preg_replace('/[.]ff$/i', '.', $action);
94
+
95
+ return $prefix;
96
+ }
97
+
98
+ private function getFileExtension($connectionData)
99
+ {
100
+ $parameters = $connectionData->getParameters();
101
 
102
+ $fileExtension = null;
103
  if (isset($parameters['format']))
104
  $fileExtension = '.' . $parameters['format'];
105
  else
106
  $fileExtension = '.raw';
107
+
108
+ return $fileExtension;
109
+ }
110
+
111
+ private function getQueryString($connectionData)
112
+ {
113
+ $parameters = clone $connectionData->getParameters();
114
+
115
  unset($parameters['format']);
116
  unset($parameters['user']);
117
  unset($parameters['pw']);
118
  unset($parameters['timestamp']);
119
  unset($parameters['channel']);
120
+
121
  $rawParameters = &$parameters->getArray();
 
122
  // We received that array by reference, so we can sort it to sort the
123
  // Parameters object internally, too.
124
  ksort($rawParameters, SORT_STRING);
125
+
126
  $queryString = $parameters->toJavaQueryString();
127
+
128
+ return $queryString;
 
 
129
  }
130
 
131
+ private function getFileName($prefix, $queryString, $extension)
132
+ {
133
+ return $this->fileLocation . $prefix . $queryString . $extension;
134
+ }
135
+
136
  private function hasFileNameChanged($id, $newFileName)
137
  {
138
  $connectionData = $this->connectionData[$id];
lib/FACTFinder/Core/XmlConfiguration.php CHANGED
@@ -39,10 +39,10 @@ class XmlConfiguration extends AbstractConfiguration
39
  * configuration data.
40
  * @return XmlConfiguration
41
  */
42
- public function __construct($fileName, $element)
43
  {
44
  libxml_use_internal_errors(true);
45
- $xmlData = new \SimpleXMLElement($fileName, 0, true);
46
  if (!isset($xmlData->$element))
47
  throw new \Exception("Specified configuration file does not contain section $element");
48
  $this->configuration = $xmlData->$element;
39
  * configuration data.
40
  * @return XmlConfiguration
41
  */
42
+ public function __construct($fileName, $element, $data_is_url = true)
43
  {
44
  libxml_use_internal_errors(true);
45
+ $xmlData = new \SimpleXMLElement($fileName, 0, $data_is_url);
46
  if (!isset($xmlData->$element))
47
  throw new \Exception("Specified configuration file does not contain section $element");
48
  $this->configuration = $xmlData->$element;
lib/FACTFinder/Data/BreadCrumbType.php CHANGED
@@ -9,6 +9,7 @@ class BreadCrumbType
9
  {
10
  static private $search;
11
  static private $filter;
 
12
 
13
  static private $nextID = 0;
14
  private $id;
@@ -24,6 +25,7 @@ class BreadCrumbType
24
  {
25
  self::$search = new BreadCrumbType();
26
  self::$filter = new BreadCrumbType();
 
27
 
28
  self::$initialized = true;
29
  }
@@ -31,6 +33,7 @@ class BreadCrumbType
31
 
32
  static public function Search() { return self::$search; }
33
  static public function Filter() { return self::$filter; }
 
34
  }
35
 
36
  BreadCrumbType::initialize();
9
  {
10
  static private $search;
11
  static private $filter;
12
+ static private $advisor;
13
 
14
  static private $nextID = 0;
15
  private $id;
25
  {
26
  self::$search = new BreadCrumbType();
27
  self::$filter = new BreadCrumbType();
28
+ self::$advisor = new BreadCrumbType();
29
 
30
  self::$initialized = true;
31
  }
33
 
34
  static public function Search() { return self::$search; }
35
  static public function Filter() { return self::$filter; }
36
+ static public function Advisor() { return self::$advisor; }
37
  }
38
 
39
  BreadCrumbType::initialize();
lib/FACTFinder/Data/FilterGroup.php CHANGED
@@ -119,16 +119,6 @@ class FilterGroup extends \ArrayIterator
119
  return $this->style == $filterStyleEnum::MultiSelect();
120
  }
121
 
122
- /**
123
- * @deprecated use hasPreviewImages instead
124
- * @return bool
125
- */
126
- public function isColorStyle()
127
- {
128
- $filterStyleEnum = FF::getClassName('Data\FilterStyle');
129
- return $this->style == $filterStyleEnum::Color();
130
- }
131
-
132
  /**
133
  * @return int
134
  */
@@ -158,7 +148,7 @@ class FilterGroup extends \ArrayIterator
158
  */
159
  public function hasSelectedItems()
160
  {
161
- foreach ($this as $filter)
162
  if ($filter->isSelected())
163
  return true;
164
 
@@ -219,4 +209,4 @@ class FilterGroup extends \ArrayIterator
219
  return $this->type == $filterTypeEnum::Number();
220
  }
221
 
222
- }
119
  return $this->style == $filterStyleEnum::MultiSelect();
120
  }
121
 
 
 
 
 
 
 
 
 
 
 
122
  /**
123
  * @return int
124
  */
148
  */
149
  public function hasSelectedItems()
150
  {
151
+ foreach ($this->getArrayCopy() as $filter)
152
  if ($filter->isSelected())
153
  return true;
154
 
209
  return $this->type == $filterTypeEnum::Number();
210
  }
211
 
212
+ }
lib/FACTFinder/Data/FilterStyle.php CHANGED
@@ -15,7 +15,6 @@ class FilterStyle
15
  static private $slider;
16
  static private $tree;
17
  static private $multiSelect;
18
- static private $color;
19
 
20
  // This ID is never used, but it ensures that an equality test between two
21
  // different instances will return false (since '==' object comparison is
@@ -45,7 +44,6 @@ class FilterStyle
45
  self::$slider = new FilterStyle();
46
  self::$tree = new FilterStyle();
47
  self::$multiSelect = new FilterStyle();
48
- self::$color = new FilterStyle();
49
 
50
  self::$initialized = true;
51
  }
@@ -56,7 +54,6 @@ class FilterStyle
56
  static public function Slider() { return self::$slider; }
57
  static public function Tree() { return self::$tree; }
58
  static public function MultiSelect() { return self::$multiSelect; }
59
- static public function Color() { return self::$color; }
60
  }
61
 
62
  // And finally we call the class initializer.
15
  static private $slider;
16
  static private $tree;
17
  static private $multiSelect;
 
18
 
19
  // This ID is never used, but it ensures that an equality test between two
20
  // different instances will return false (since '==' object comparison is
44
  self::$slider = new FilterStyle();
45
  self::$tree = new FilterStyle();
46
  self::$multiSelect = new FilterStyle();
 
47
 
48
  self::$initialized = true;
49
  }
54
  static public function Slider() { return self::$slider; }
55
  static public function Tree() { return self::$tree; }
56
  static public function MultiSelect() { return self::$multiSelect; }
 
57
  }
58
 
59
  // And finally we call the class initializer.
lib/FACTFinder/Data/Result.php CHANGED
@@ -6,10 +6,6 @@ namespace FACTFinder\Data;
6
  */
7
  class Result extends \ArrayIterator
8
  {
9
- /**
10
- * @var string
11
- */
12
- private $refKey;
13
 
14
  /**
15
  * @var int
@@ -18,7 +14,6 @@ class Result extends \ArrayIterator
18
 
19
  /**
20
  * @param Record[] $records The Record objects to add to the result.
21
- * @param string $refKey
22
  * @param int $foundRecordsCount Total number of records found for the
23
  * search these records are from. This can be greater than
24
  * count($records), because $records may just be the records from a
@@ -27,11 +22,9 @@ class Result extends \ArrayIterator
27
  */
28
  public function __construct(
29
  array $records,
30
- $refKey = '',
31
  $foundRecordsCount = 0
32
  ) {
33
  parent::__construct($records);
34
- $this->refKey = (string)$refKey;
35
  $this->foundRecordsCount = (int)$foundRecordsCount;
36
  }
37
 
@@ -43,12 +36,4 @@ class Result extends \ArrayIterator
43
  return $this->foundRecordsCount;
44
  }
45
 
46
- /**
47
- * @return string
48
- */
49
- public function getRefKey()
50
- {
51
- return $this->refKey;
52
- }
53
-
54
  }
6
  */
7
  class Result extends \ArrayIterator
8
  {
 
 
 
 
9
 
10
  /**
11
  * @var int
14
 
15
  /**
16
  * @param Record[] $records The Record objects to add to the result.
 
17
  * @param int $foundRecordsCount Total number of records found for the
18
  * search these records are from. This can be greater than
19
  * count($records), because $records may just be the records from a
22
  */
23
  public function __construct(
24
  array $records,
 
25
  $foundRecordsCount = 0
26
  ) {
27
  parent::__construct($records);
 
28
  $this->foundRecordsCount = (int)$foundRecordsCount;
29
  }
30
 
36
  return $this->foundRecordsCount;
37
  }
38
 
 
 
 
 
 
 
 
 
39
  }
lib/FACTFinder/Data/SortingDirection.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace FACTFinder\Data;
3
+
4
+ /**
5
+ * Enum for sorting directions.
6
+ * @see FilterStyle for documentation of the enum workaround.
7
+ */
8
+ class SortingDirection
9
+ {
10
+ // These will store distinct instances of the class.
11
+ static private $asc;
12
+ static private $desc;
13
+
14
+ static private $nextID = 0;
15
+ private $id;
16
+ private function __construct()
17
+ {
18
+ $this->id = self::$nextID++;
19
+ }
20
+
21
+ static private $initialized = false;
22
+ static public function initialize()
23
+ {
24
+ if (!self::$initialized)
25
+ {
26
+ self::$asc = new SortingDirection();
27
+ self::$desc = new SortingDirection();
28
+
29
+ self::$initialized = true;
30
+ }
31
+ }
32
+
33
+ static public function Ascending() { return self::$asc; }
34
+ static public function Descending() { return self::$desc; }
35
+ }
36
+
37
+ SortingDirection::initialize();
lib/FACTFinder/Data/SortingItem.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace FACTFinder\Data;
3
+
4
+ use FACTFinder\Loader as FF;
5
+
6
+ /**
7
+ * Represents a particular clickable sorting.
8
+ */
9
+ class SortingItem extends Item
10
+ {
11
+ /**
12
+ * @var SortingDirection
13
+ */
14
+ private $order;
15
+
16
+ /**
17
+ * @var string
18
+ */
19
+ private $name;
20
+
21
+ /**
22
+ * @param string $name
23
+ * @param SortingDirection $order
24
+ * @param string $label
25
+ * @param string $url
26
+ * @param bool $isSelected
27
+ */
28
+ public function __construct(
29
+ $name,
30
+ SortingDirection $order,
31
+ $label,
32
+ $url,
33
+ $isSelected = false
34
+ ) {
35
+ parent::__construct($label, $url, $isSelected);
36
+ $this->name = (string)$name;
37
+ $this->order = $order;
38
+ }
39
+
40
+ /**
41
+ * @return string
42
+ */
43
+ public function getName()
44
+ {
45
+ return $this->name;
46
+ }
47
+
48
+ /**
49
+ * @return bool
50
+ */
51
+ public function isAscending()
52
+ {
53
+ $orderEnum = FF::getClassName('Data\SortingDirection');
54
+ return $this->order == $orderEnum::Ascending();
55
+ }
56
+
57
+ /**
58
+ * @return bool
59
+ */
60
+ public function isDescending()
61
+ {
62
+ $orderEnum = FF::getClassName('Data\SortingDirection');
63
+ return $this->order == $orderEnum::Descending();
64
+ }
65
+ }
lib/FACTFinder/Data/SortingItems.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace FACTFinder\Data;
3
+
4
+ class SortingItems extends \ArrayIterator
5
+ {
6
+ /**
7
+ * @param SortingItem[] $options Array of sorting option links.
8
+ */
9
+ public function __construct (array $options)
10
+ {
11
+ parent::__construct($options);
12
+ }
13
+ }
lib/FACTFinder/Util/Log4PhpLogger.php CHANGED
@@ -8,67 +8,67 @@ include_once FF_LIB_DIR . DS . 'log4php' . DS . 'Logger.php';
8
 
9
  class Log4PhpLogger implements LoggerInterface
10
  {
11
- protected $log;
12
 
13
  /**
14
  * Configures the static Logger class supplied by log4php.
15
  *
16
  * @param string $fileName Name of the configuration file
17
  */
18
- public static function configure($fileName)
19
- {
20
- \Logger::configure($fileName);
21
- }
22
 
23
- /**
24
- * Returns a new logger with the given name.
25
- * @param string $name Name of the logger. This should be the fully
26
- * qualified name of the class using this instance,
27
- * so that different sub-namespaces can be configured
28
- * differently. Note that in the configuration file, the
29
- * loggers need to be qualified with periods instead of
30
- * backslashes.
31
- * @return Log4PhpLogger
32
- */
33
- public static function getLogger($name)
34
- {
35
- $name = str_replace('\\', '.', $name);
36
- return new Log4PhpLogger($name);
37
- }
38
 
39
- protected function __construct($name)
40
- {
41
- $this->log = \Logger::getLogger($name);
42
- }
43
 
44
- public function trace($message)
45
- {
46
- $this->log->trace($message);
47
- }
48
 
49
- public function debug($message)
50
- {
51
- $this->log->debug($message);
52
- }
53
 
54
- public function info($message)
55
- {
56
- $this->log->info($message);
57
- }
58
 
59
- public function warn($message)
60
- {
61
- $this->log->warn($message);
62
- }
63
 
64
- public function error($message)
65
- {
66
- $this->log->error($message);
67
- }
68
 
69
- public function fatal($message)
70
- {
71
- $this->log->fatal($message);
72
- }
73
 
74
  }
8
 
9
  class Log4PhpLogger implements LoggerInterface
10
  {
11
+ protected $log;
12
 
13
  /**
14
  * Configures the static Logger class supplied by log4php.
15
  *
16
  * @param string $fileName Name of the configuration file
17
  */
18
+ public static function configure($fileName)
19
+ {
20
+ \Logger::configure($fileName);
21
+ }
22
 
23
+ /**
24
+ * Returns a new logger with the given name.
25
+ * @param string $name Name of the logger. This should be the fully
26
+ * qualified name of the class using this instance,
27
+ * so that different sub-namespaces can be configured
28
+ * differently. Note that in the configuration file, the
29
+ * loggers need to be qualified with periods instead of
30
+ * backslashes.
31
+ * @return Log4PhpLogger
32
+ */
33
+ public static function getLogger($name)
34
+ {
35
+ $name = str_replace('\\', '.', $name);
36
+ return new Log4PhpLogger($name);
37
+ }
38
 
39
+ protected function __construct($name)
40
+ {
41
+ $this->log = \Logger::getLogger($name);
42
+ }
43
 
44
+ public function trace($message)
45
+ {
46
+ $this->log->trace($message);
47
+ }
48
 
49
+ public function debug($message)
50
+ {
51
+ $this->log->debug($message);
52
+ }
53
 
54
+ public function info($message)
55
+ {
56
+ $this->log->info($message);
57
+ }
58
 
59
+ public function warn($message)
60
+ {
61
+ $this->log->warn($message);
62
+ }
63
 
64
+ public function error($message)
65
+ {
66
+ $this->log->error($message);
67
+ }
68
 
69
+ public function fatal($message)
70
+ {
71
+ $this->log->fatal($message);
72
+ }
73
 
74
  }
lib/FACTFinder/Util/Parameters.php CHANGED
@@ -148,7 +148,7 @@ class Parameters implements \ArrayAccess, \Countable
148
  *
149
  * @throws InvalidArgumentException if the name has no values set.
150
  */
151
- public function offsetGet($name)
152
  {
153
  if (!isset($this->parameters[$name]))
154
  throw new \InvalidArgumentException('Requested parameter has no value set.');
148
  *
149
  * @throws InvalidArgumentException if the name has no values set.
150
  */
151
+ public function offsetGet($name)
152
  {
153
  if (!isset($this->parameters[$name]))
154
  throw new \InvalidArgumentException('Requested parameter has no value set.');
lib/FACTFinderCustom/Configuration.php CHANGED
@@ -12,11 +12,11 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
12
  const SIMPLE_AUTH = 'simple';
13
  const ADVANCED_AUTH = 'advanced';
14
  const XML_CONFIG_PATH = 'factfinder/search';
15
- const DEFAULT_SEMAPHORE_TIMEOUT = 7200; // 60 seconds = 2 hours
16
 
17
  private $config;
18
  private $authType;
19
- private $secondaryChannels;
20
  private $storeId = null;
21
 
22
  // Should the search adapters retrieve only product ids? (otherwise, full records will be requested)
@@ -24,37 +24,37 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
24
 
25
  public function __construct($config = null)
26
  {
27
- $this->config = new Varien_Object($config);
28
- if(is_array($config)){
29
- $this->config->setData($config);
30
- } else {
31
- $this->config->setData(Mage::getStoreConfig(self::XML_CONFIG_PATH));
32
- }
33
  }
34
 
35
  public function __sleep() {
36
 
37
- foreach(get_class_methods($this) as $method){
38
- if(substr($method, 0, 3) != 'get'
39
- || $method == 'getCustomValue'){
40
- continue;
41
- }
42
- call_user_func(array(&$this, $method));
43
- }
44
- return array('config');
45
- }
46
-
47
- /**
48
- * @return array of strings
49
- **/
50
- public function getSecondaryChannels() {
51
- if($this->secondaryChannels == null)
52
- {
53
- // array_filter() is used to remove empty channel names
54
- $this->secondaryChannels = array_filter(explode(';', $this->getCustomValue('secondary_channels')));
55
- }
56
- return $this->secondaryChannels;
57
- }
58
 
59
  /**
60
  * Allows to catch configuration for certain store id.
@@ -201,6 +201,7 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
201
  return array(
202
  'query' => 'q',
203
  'page' => 'p',
 
204
  );
205
  }
206
 
@@ -210,7 +211,11 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
210
  * @return array
211
  */
212
  public function getServerMappings() {
213
- return array();
 
 
 
 
214
  }
215
 
216
  public function getIgnoredClientParameters()
@@ -219,7 +224,6 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
219
  'channel' => true,
220
  'format' => true,
221
  'log' => true,
222
- 'productsPerPage' => true,
223
  'query' => true,
224
  'catalog' => true,
225
  'navigation' => true
@@ -338,7 +342,7 @@ class FACTFinderCustom_Configuration extends FACTFinder\Core\AbstractConfigurati
338
  * Sets the idsOnly flag, which determines whether product ids or full records should be requested by the search adapters.
339
  * Request only products ids if true, full records otherwise
340
  *
341
- * @param bool value
342
  **/
343
  public function setIdsOnly($value) {
344
  $this->idsOnly = $value;
12
  const SIMPLE_AUTH = 'simple';
13
  const ADVANCED_AUTH = 'advanced';
14
  const XML_CONFIG_PATH = 'factfinder/search';
15
+ const DEFAULT_SEMAPHORE_TIMEOUT = 7200; // 60 seconds = 2 hours
16
 
17
  private $config;
18
  private $authType;
19
+ private $secondaryChannels;
20
  private $storeId = null;
21
 
22
  // Should the search adapters retrieve only product ids? (otherwise, full records will be requested)
24
 
25
  public function __construct($config = null)
26
  {
27
+ $this->config = new Varien_Object($config);
28
+ if(is_array($config)){
29
+ $this->config->setData($config);
30
+ } else {
31
+ $this->config->setData(Mage::getStoreConfig(self::XML_CONFIG_PATH));
32
+ }
33
  }
34
 
35
  public function __sleep() {
36
 
37
+ foreach(get_class_methods($this) as $method){
38
+ if(substr($method, 0, 3) != 'get'
39
+ || $method == 'getCustomValue'){
40
+ continue;
41
+ }
42
+ call_user_func(array(&$this, $method));
43
+ }
44
+ return array('config');
45
+ }
46
+
47
+ /**
48
+ * @return array of strings
49
+ **/
50
+ public function getSecondaryChannels() {
51
+ if($this->secondaryChannels == null)
52
+ {
53
+ // array_filter() is used to remove empty channel names
54
+ $this->secondaryChannels = array_filter(explode(';', $this->getCustomValue('secondary_channels')));
55
+ }
56
+ return $this->secondaryChannels;
57
+ }
58
 
59
  /**
60
  * Allows to catch configuration for certain store id.
201
  return array(
202
  'query' => 'q',
203
  'page' => 'p',
204
+ 'productsPerPage' => 'limit'
205
  );
206
  }
207
 
211
  * @return array
212
  */
213
  public function getServerMappings() {
214
+ return array(
215
+ 'q' => 'query',
216
+ 'p' => 'page',
217
+ 'limit' => 'productsPerPage'
218
+ );
219
  }
220
 
221
  public function getIgnoredClientParameters()
224
  'channel' => true,
225
  'format' => true,
226
  'log' => true,
 
227
  'query' => true,
228
  'catalog' => true,
229
  'navigation' => true
342
  * Sets the idsOnly flag, which determines whether product ids or full records should be requested by the search adapters.
343
  * Request only products ids if true, full records otherwise
344
  *
345
+ * @param bool value
346
  **/
347
  public function setIdsOnly($value) {
348
  $this->idsOnly = $value;
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
- <name>fact-finder-4</name>
4
- <version>4.1.0</version>
5
  <stability>stable</stability>
6
- <license uri="https://opensource.org/licenses/OSL-3.0">OSL-3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>4.1.0 Release</summary>
10
- <description>4.1.0 Release</description>
11
  <notes>Release</notes>
12
  <authors><author><name>FACTFinder</name><user>FACT_Finder</user><email>info@flagbit.de</email></author></authors>
13
- <date>2016-04-28</date>
14
- <time>11:04:14</time>
15
- <contents><target name="magecommunity"><dir name="FACTFinder"><dir name="Asn"><dir name="Block"><dir name="Catalog"><dir name="Layer"><file name="Factfinder.php" hash="35260d6445bcd73eeed92ea0b59bfcfe"/><file name="State.php" hash="ebc75416866c210b8292bb8c49229f6a"/></dir><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="d8d4604de9893d42314f49a4d9607c67"/></dir><file name="Pager.php" hash="ef138d898f99a109f74f78c503a88640"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="6fde379a75bfe38326da3a953c7806e6"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="9e8f3a615c32be7dbca245964af509bd"/></dir><dir name="Handler"><file name="Search.php" hash="812e7bbf0588176741fbeabdce8eded0"/></dir><dir name="Layer"><dir name="Filter"><file name="Factfinder.php" hash="5be69efa3c55c85124912a7ef0219c2e"/><file name="Item.php" hash="4838675003cafa434bfe28f4e7506382"/></dir></dir><file name="Observer.php" hash="0b735dc2bddb8b7b21097b65c1b25ac0"/><dir name="Resource"><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="df002464c8d6c15b82938ad0fd33c0cb"/></dir></dir><dir name="Search"><file name="Collection.php" hash="5739b32fcfa8a18e9b934a341b373b36"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="2a37298b5ef36779a8f82ad676e425a0"/><file name="system.xml" hash="5867b0e1640a58f856d3bb2aad63bc7b"/></dir></dir><dir name="Campaigns"><dir name="Block"><file name="Abstract.php" hash="26dbcc3a0afb3a3d70555b713f633680"/><dir name="Advisory"><file name="Product.php" hash="6c64b484a3fc0d61a3256193ebd2d2cf"/><file name="Search.php" hash="5cbdf4c2780911f878f24390befe393f"/></dir><dir name="Feedback"><file name="Abstract.php" hash="1247447a9d2c8bf3b01dd4a1772035b7"/><file name="Cart.php" hash="0cf110d34d55b1f8660bc4630388c8d3"/><file name="Product.php" hash="815e0b4f8942873298fcaddb0bc2e9f8"/><file name="Search.php" hash="183e6ec0e007318106a1d9a9b1404400"/></dir><dir name="Pushed"><file name="Abstract.php" hash="4f71d41aaf5731ff0c21f9c748f77b62"/><file name="Cart.php" hash="4a9db84656c06dc6c79e36a47b80507c"/><file name="Product.php" hash="5b65eb29f0aea439d2e6f7189da189a5"/><file name="Search.php" hash="f441ceaba8b45cf5036c7f64b3adf644"/></dir></dir><dir name="Helper"><file name="Data.php" hash="d433d24642e09617763be74fd40eb6ab"/></dir><dir name="Model"><file name="Facade.php" hash="f95ad9be5e8ea7b4034e0be7e8b3fbbd"/><dir name="Handler"><file name="Abstract.php" hash="21ad21939a76852358f978c5870dd2f2"/><file name="Cart.php" hash="5b10d0868109b5db538a55f2010c9067"/><file name="Product.php" hash="d5a46bc62c3b84e98d7f3afafced00ef"/><file name="Search.php" hash="f8f33d47eb1a06215fed147551e9a730"/></dir><file name="Observer.php" hash="edc496d6aa423c47f6c08380cbde45d2"/><dir name="Resource"><dir name="Pushedproducts"><file name="Collection.php" hash="7c7856808c6d45cdc7ef8f8bcdb21182"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="7e99c8b5395d432106491068161a06f5"/><file name="system.xml" hash="c7d3cbffa95c58d453234faf2ab5e80c"/></dir></dir><dir name="Core"><dir name="Block"><dir name="Adminhtml"><file name="Exportlink.php" hash="c751d17b80a5fab97b517e0012f9352f"/><dir name="Form"><dir name="Field"><file name="Attribute.php" hash="e8cf45cabec771e23f7ab427c5a0418b"/><file name="Attributes.php" hash="5a9fd3e58f3097df76e740c8f8a4ee79"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="b9d88b8cd7e561a8bdc2e4ad7af1f849"/></dir><file name="Pager.php" hash="029396c3437cddf860fe6cc2648ae03e"/></dir></dir></dir><dir name="Helper"><file name="Backend.php" hash="de9e7487727f3fdb93ac7733d1688e7b"/><file name="Data.php" hash="2be1c051bfa480f91dc5cc00c134ed20"/><file name="Debug.php" hash="8646cee22b75885352eddaf94534d54c"/><file name="Search.php" hash="45b94f044c9a2026c97884f033173342"/></dir><dir name="Model"><file name="Autoloader.php" hash="d801eb1c69499f01e6a2acec138ad86f"/><dir name="CatalogSearch"><file name="Layer.php" hash="25e44c6b0220abfc55fd5d0fcb7aef41"/></dir><dir name="Export"><file name="Price.php" hash="63ee1aa451fa9b9defaa56d5f8ff6874"/><file name="Product.php" hash="b7e789afc56a230886ba7844c66c8361"/><file name="Stock.php" hash="8894d2260dbb9ce2eff0e68a9ca587a5"/></dir><file name="Facade.php" hash="9b49c420a5cc15989cf2b3958dcbe803"/><file name="File.php" hash="f1de59b81a9c7d585a045a55c6cf4c78"/><dir name="Handler"><file name="Abstract.php" hash="ee6c0e25a2bab7da70db8ece174c8506"/><file name="Search.php" hash="61b464fdbeb7c0eaac5a71a8103e203b"/><file name="Status.php" hash="55df1e44cec02d878cbd22ebdb7bf9ec"/></dir><file name="Observer.php" hash="a02a8b38239638bb1c5f50e2de64189f"/><dir name="Resource"><dir name="Search"><file name="Collection.php" hash="01ec18faf9b7f381187da7cbc0cf49de"/><file name="Engine.php" hash="28ba4556b3e03e15c9083dbe332f2f6d"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="6ad3d69131c07cd9ee029c7b4eab51eb"/><file name="Cron.php" hash="fa667b087e443bf4b64fd33b7b4c7979"/><file name="Enabled.php" hash="b3046c3d646df980f53cbe9f4b25aa17"/></dir><dir name="Source"><file name="Authtype.php" hash="7f1a2ce0966b7fc4a75d14cc41bb113c"/><file name="Identifier.php" hash="87db05271d3b803bc2c75593b4204c8d"/><file name="Protocol.php" hash="5c09e8da2ccfaf0295bca0cfc002129a"/></dir></dir></dir></dir><dir name="controllers"><file name="ExportController.php" hash="bac8ffdf8a19003860c080b186fa679c"/></dir><dir name="etc"><file name="adminhtml.xml" hash="4930f4e7501ec007b6c88963e7986824"/><file name="config.xml" hash="6ca0b823a513d05cdf808d231d82c362"/><file name="system.xml" hash="fa886d7092f395309d2c29fc9766dc6c"/></dir></dir><dir name="Recommendation"><dir name="Helper"><file name="Data.php" hash="982d117121e8eaf3036ce56daec76000"/></dir><dir name="Model"><file name="Facade.php" hash="23c214148df422892d5e482f4398bbf8"/><dir name="Handler"><file name="Recommendations.php" hash="706f1b058b0245499ef7829a8d60c4f5"/></dir><file name="Observer.php" hash="14478c106a069d12acdda34527cae51e"/></dir><dir name="etc"><file name="config.xml" hash="5fddb4eb7c1d3562abb3e5849819facc"/><file name="system.xml" hash="f841228bf8a5397fe18da6186c5e3208"/></dir></dir><dir name="Suggest"><dir name="Block"><file name="TopSearch.php" hash="f7938ff4a378f63609de9910c8496a1b"/><dir name="XmlConnect"><dir name="Catalog"><dir name="Search"><file name="Suggest.php" hash="0eceb3fd01ee788b0f2504aa35a425d6"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="06dcf43c110d52b3c97d5801fd454bc4"/></dir><dir name="Model"><file name="Facade.php" hash="4288f0063e8b306e5c509c43f9af68d3"/><dir name="Handler"><file name="Suggest.php" hash="d6311cc9b343f0598cfe2e0b82908ab8"/></dir><file name="Observer.php" hash="dc7596f5ee9993af86be30dad854f64b"/><file name="Processor.php" hash="65c3875802e5e0d9826094066f861caf"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Imagetype.php" hash="c7f15e0f4012a34d16a1b8578ca8272e"/></dir></dir></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="f08952928dd1f24bf3bcc90aef544d31"/></dir><dir name="etc"><file name="config.xml" hash="c2a21e0a85127dc9d1dbe5a99a85abe2"/><file name="system.xml" hash="08b3abf745077b5975d1a9c19ae63c5a"/></dir></dir><dir name="Tagcloud"><dir name="Block"><file name="TagCloud.php" hash="8317eb751f4213641bf11d620d821b34"/></dir><dir name="Helper"><file name="Data.php" hash="4c2f45b0646948037f6a4d369616ffd9"/></dir><dir name="Model"><file name="Facade.php" hash="5a03082c139a66194e8387590c8d7d3c"/><dir name="Handler"><file name="TagCloud.php" hash="8b422e7ce47ef6cdd0c8ad828e2d567f"/></dir></dir><dir name="etc"><file name="config.xml" hash="a3ec73012ae584e1c24ef19a8348a2ef"/></dir></dir><dir name="Tracking"><dir name="Block"><file name="Init.php" hash="68c2784f729526b6abb10aff8fb01423"/></dir><dir name="Helper"><file name="Data.php" hash="2b2cb7d9eaee59475edbf347d88bd93a"/></dir><dir name="Model"><file name="Facade.php" hash="30905fafc1ece980f1737801aabf7ab4"/><dir name="Handler"><file name="Tracking.php" hash="5a1ea77907983eeb425006da92ad755c"/></dir><file name="Observer.php" hash="b9686e8583e55f2e02f6e1cf005fe76e"/><file name="Processor.php" hash="9ebc5a5ab6773adc2887fa10ac8d676e"/><file name="Queue.php" hash="347c456f7abb7e4ccf2e425390400956"/><dir name="Resource"><dir name="Queue"><file name="Collection.php" hash="9bfb62d8281749404802340ba503b78d"/></dir><file name="Queue.php" hash="f4fdcb976f63c433e1c780881f70feef"/></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="33c03c17c81a5924feea4cda441dd695"/></dir><dir name="etc"><file name="config.xml" hash="896a0bdca24704b056357e7756114ffc"/><file name="system.xml" hash="17ed879961b70090b3cdfaaaaab14b69"/></dir><dir name="sql"><dir name="factfinder_tracking_setup"><file name="mysql4-install-1.0.0.php" hash="f5f3ff6685453f01d06946eafa477186"/></dir></dir></dir></dir></target><target name="magelib"><dir name="FACTFinder"><dir name="Adapter"><file name="AbstractAdapter.php" hash="6277725d25414c66c67225af4a899589"/><file name="Compare.php" hash="8126e065653758fab5cc021c11db2f74"/><file name="Import.php" hash="584eecdb7281603ba5ef901082fb52d7"/><file name="ProductCampaign.php" hash="86da71c466ac5a7bef8e9228ba69df0c"/><file name="Recommendation.php" hash="4e21ac9fba2bf637571316eafdf2864d"/><file name="Search.php" hash="0190ba37d05b0f22ed114314773537d5"/><file name="SimilarRecords.php" hash="d8ed289c2c5aa13beeea99dab519db37"/><file name="Suggest.php" hash="1458032c95a4a83e7df7fb364532a25a"/><file name="TagCloud.php" hash="d92b899daa6c095229ea334015447236"/><file name="Tracking.php" hash="4e73b9a8573d527939712baf38f93df9"/></dir><dir name="Core"><file name="AbstractConfiguration.php" hash="c9630bf303f76e3aa5c2e096f0f606a2"/><file name="AbstractEncodingConverter.php" hash="7946720c77c47e3ed2070606a74a48cb"/><dir name="Client"><file name="RequestParser.php" hash="bc5dabb648f7278db4a1c5f14af4dfa0"/><file name="UrlBuilder.php" hash="d73cc166fcf20b7623ea0f7c319d3224"/></dir><file name="ConfigurationInterface.php" hash="1158aaee6a7502cf81bf27b8ed0c76ff"/><file name="IConvEncodingConverter.php" hash="5c504a3229cc8a59c09f03f3bf2c9348"/><file name="ManualConfiguration.php" hash="a49d0b05cc319b807c40b37a861b060d"/><dir name="Page"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><file name="ParametersConverter.php" hash="9c01642c6de1842b8f1b4e8d9f93017e"/><dir name="Server"><file name="AbstractDataProvider.php" hash="8d33ddebe3d3e60b72893188d7f2369f"/><file name="ConnectionData.php" hash="c4246099ec93e7f589c0e22179d9557a"/><file name="EasyCurlDataProvider.php" hash="fb8eea986e8938aaef77480169223478"/><file name="EasyCurlRequestFactory.php" hash="61f88e882120dca5e5e1964d1f898527"/><file name="FileSystemDataProvider.php" hash="9e7b6f936cba18129334c364e8095b39"/><file name="FileSystemRequestFactory.php" hash="f0a464725448393e64948a6063208d91"/><file name="MultiCurlDataProvider.php" hash="2e467a4976694ef4e7775d913dafedf4"/><file name="MultiCurlRequestFactory.php" hash="41f978e0dd60065026dc5adced1f9503"/><file name="NullResponse.php" hash="3a419c1ea234ef20e1330c7b445eb9c6"/><file name="Request.php" hash="08ddaaa7701558e1802408089d15b5dd"/><file name="RequestFactoryInterface.php" hash="65cfad6045407bdd63af980f6f996c99"/><file name="Response.php" hash="695c80ce5ee4e8dc38c78d0349e1f31b"/><file name="UrlBuilder.php" hash="6f468178b95a96f6217f44f9ef392cfb"/></dir><file name="Utf8EncodingConverter.php" hash="1cb05e6f174e36ed3cce6e2a7eb987ed"/><file name="XmlConfiguration.php" hash="39e8bba8a34df5191d07939a342f5723"/></dir><dir name="Custom"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Data"><file name="AdvisorAnswer.php" hash="55ffe5c6f8e1363d1d02875feec202d1"/><file name="AdvisorQuestion.php" hash="baa784c529640f2976b22262ec6f8983"/><file name="AfterSearchNavigation.php" hash="f1d08832e73cf45b8a35d99020aa49ea"/><file name="ArticleNumberSearchStatus.php" hash="da1966d4016c32ea492b8b6b931d8222"/><file name="BreadCrumb.php" hash="84b69c8df53c6d9eb721950a29e4a84d"/><file name="BreadCrumbTrail.php" hash="324bb6a06c0058e53c58bd3f96fe0ff3"/><file name="BreadCrumbType.php" hash="46bc98a6078558efd1f32b71bf7c20de"/><file name="Campaign.php" hash="23966a3bea56ac66ff2b795e11983c6a"/><file name="CampaignIterator.php" hash="503766bc960efe69e861c2f45dce77d2"/><file name="Filter.php" hash="aafda20fe7c992af46316d74be33ec73"/><file name="FilterGroup.php" hash="c461c7d8d8fde546c12f8ad718a1b399"/><file name="FilterSelectionType.php" hash="bd0d0676af5d0182f6b6631e6df8ecb9"/><file name="FilterStyle.php" hash="8bd173b6a9cd3fc4ee17ed3006e82ced"/><file name="FilterType.php" hash="b073cf2f411298509337808624666687"/><file name="Item.php" hash="b91116ddeb81c0b90e76a2a4f7b51261"/><file name="Page.php" hash="35daab87fdc5e3b4732480996b982364"/><file name="Paging.php" hash="1b06374d761489582de08551f17a58a1"/><file name="Record.php" hash="cd62198f27ebbb1e0a88008642c7157a"/><file name="Result.php" hash="afc482631bc140904046d3a26a440143"/><file name="ResultsPerPageOptions.php" hash="ae22d184bf43cd7b11cad567489a2261"/><file name="SearchParameters.php" hash="d7041887d5f65e763c7a2e0a323b18fd"/><file name="SearchStatus.php" hash="356fd9774c237a0e26ac85a6186bccfd"/><file name="SingleWordSearchItem.php" hash="db057d7f0460f29c5b31ab9689b3906b"/><file name="SliderFilter.php" hash="344d226acde13ec85f59d5a97cf8afc5"/><file name="Sorting.php" hash="284b4811c99ad057d08caead45ea2dee"/><file name="SuggestQuery.php" hash="4011313cfd853eace88c399444ffa4cc"/><file name="TagQuery.php" hash="a4460d5e8a9f918eea820a029dc21290"/></dir><file name="Loader.php" hash="cf900585b0fd44978f97e7a2b2279a99"/><dir name="Util"><file name="Curl.php" hash="c9cbe7b2116dd6160b8db3a14b634561"/><file name="CurlHandle.php" hash="bea42fdebc33e31cf58889de18232d3e"/><file name="CurlInterface.php" hash="1858bc215b7706ba81ff6e14aa2f4750"/><file name="CurlMultiHandle.php" hash="2085a5a09c218971412a44c0dad6bf72"/><file name="CurlStub.php" hash="555c36a9a5352e1a6acfd65a68cf911b"/><file name="Log4PhpLogger.php" hash="54da14fa0a24c9454d52bc2b850c477f"/><file name="LoggerInterface.php" hash="36dfa3ee8a089595ef285806d0068b27"/><file name="NullLogger.php" hash="51e1a2a9c89a9efba49d0a0d3ee9325d"/><file name="Parameters.php" hash="b2e7ef7484319fdf68bef4a69b5e9175"/><file name="Pimple.php" hash="fb5e70660a5fe56edfdf11bec1ba6009"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="37bb706f0a30eeaf9981e033b2c52a21"/></dir><dir name="log4php"><file name="Logger.php" hash="39841035ea058cc62571fcb9b4f3aa43"/><file name="LoggerAppender.php" hash="a8b07b24ee26931cef9373163542128a"/><file name="LoggerAppenderPool.php" hash="7e44ee58fbd3c50ae51c98742aa4f327"/><file name="LoggerAutoloader.php" hash="5aa85dd61ff00167d2b9d482bf418c77"/><file name="LoggerConfigurable.php" hash="4c89cbf3c90a724930c6d46995da16bd"/><file name="LoggerConfigurator.php" hash="b8ac801c410e0515fbd5ec6b67dfb40b"/><file name="LoggerException.php" hash="c91fd8cc5bfee3cad373f8ed9440458c"/><file name="LoggerFilter.php" hash="39b6689eeb15e468781c0a62a8f482b5"/><file name="LoggerHierarchy.php" hash="be16af259ec43bef5c49bd1118e94859"/><file name="LoggerLayout.php" hash="7c089f20f7abba10699de2bd4423af7c"/><file name="LoggerLevel.php" hash="f380928eb1aac5ade3d7654f200ebb81"/><file name="LoggerLocationInfo.php" hash="33f1a195cfdcc7ebf681a3085eb6b228"/><file name="LoggerLoggingEvent.php" hash="f227e5ae0d04fef3a36899906d4ad478"/><file name="LoggerMDC.php" hash="64868651982829e59d3b316498145a79"/><file name="LoggerNDC.php" hash="482045e33b9fe22e53269c021cbfe877"/><file name="LoggerReflectionUtils.php" hash="174b22dd241ba4263aba8d978d37959f"/><file name="LoggerRoot.php" hash="0d762ed21fdff2708adab3068b94c2c3"/><file name="LoggerThrowableInformation.php" hash="76d98d20d55cf0e3bd4b1b138023c3af"/><dir name="appenders"><file name="LoggerAppenderConsole.php" hash="5eefc20589c86b11d2832f9a8fafa44f"/><file name="LoggerAppenderDailyFile.php" hash="f97b57f6b0b9dba2f650ae5e17d9f28b"/><file name="LoggerAppenderEcho.php" hash="76824ae7be6503e8c5ca3a9fc15b7816"/><file name="LoggerAppenderFile.php" hash="92481c41d6f9d3d2cf6cfc82c7c0ef22"/><file name="LoggerAppenderFirePHP.php" hash="1eccdf817ff2e0204265a5a77901f0a1"/><file name="LoggerAppenderMail.php" hash="a23d71d709af265b20797eeb0d71911e"/><file name="LoggerAppenderMailEvent.php" hash="f853e9e18511ab18873484882c744655"/><file name="LoggerAppenderMongoDB.php" hash="494b30e44a3add5eeb9c0d54ea88c29b"/><file name="LoggerAppenderNull.php" hash="ec6ca85fadc4d71f75b5e8e13df6e058"/><file name="LoggerAppenderPDO.php" hash="4388d8e542fe680228365ffd48d8ab6d"/><file name="LoggerAppenderPhp.php" hash="9853767b74b8234361ace83867c9f18d"/><file name="LoggerAppenderRollingFile.php" hash="5bc49b8f05b36842b800d699bfe05e45"/><file name="LoggerAppenderSocket.php" hash="6111536426fdf6f8a4adafb460510301"/><file name="LoggerAppenderSyslog.php" hash="afda0ccf876a87781e58d63104519bdc"/></dir><dir name="configurators"><file name="LoggerConfigurationAdapter.php" hash="b07bade9ae4809776742d3b36ca4feb7"/><file name="LoggerConfigurationAdapterINI.php" hash="bfbca46c36693f098334699c7b71b569"/><file name="LoggerConfigurationAdapterPHP.php" hash="9f9c0bd65cda5224c8e90726baebb363"/><file name="LoggerConfigurationAdapterXML.php" hash="42ec1e713dadb1c6c813df278e6c58cb"/><file name="LoggerConfiguratorDefault.php" hash="a27dd348466a605849ffa946a5fa7bdf"/></dir><dir name="filters"><file name="LoggerFilterDenyAll.php" hash="8800e84c773b87e2638d22d627baae51"/><file name="LoggerFilterLevelMatch.php" hash="2ea447c40baea629486a6b7a4f8f352d"/><file name="LoggerFilterLevelRange.php" hash="b4b6753e0d0a8d734471482bb7b4981c"/><file name="LoggerFilterStringMatch.php" hash="342113e5152ef6e9703807fa36e52785"/></dir><dir name="helpers"><file name="LoggerFormattingInfo.php" hash="89a5ed8f751e4a6a826275619266b911"/><file name="LoggerOptionConverter.php" hash="e02f5ffc3918a0352bf77121e5add1d5"/><file name="LoggerPatternParser.php" hash="a5d4dfeb2a66b022380e0e3d7ba9b318"/><file name="LoggerUtils.php" hash="90264a3263bc4e3a3dac1dbeb3cc35df"/></dir><dir name="layouts"><file name="LoggerLayoutHtml.php" hash="cf6066b51d7ac2de4accaf13f68fb442"/><file name="LoggerLayoutPattern.php" hash="10c48d2fa44953d20fcb3e3542a05ebf"/><file name="LoggerLayoutSerialized.php" hash="cef71f72176167a15c79f5cab5515a77"/><file name="LoggerLayoutSimple.php" hash="ba2aaa713c715b823c4e767a2f0b3e67"/><file name="LoggerLayoutTTCC.php" hash="1ecb0af018b78ad42f4a9d70e182f429"/><file name="LoggerLayoutXml.php" hash="b52409dbb1bacc1c7b4c5ddf66ed8afa"/></dir><dir name="pattern"><file name="LoggerPatternConverter.php" hash="fcbd56bf082b96f02fcf5b0b552de4c1"/><file name="LoggerPatternConverterClass.php" hash="e61c2f7544feee8ee9b966311471a2a7"/><file name="LoggerPatternConverterCookie.php" hash="465d359167443336f258d9b5a89095ef"/><file name="LoggerPatternConverterDate.php" hash="4a399075a3c2d7542e3c649f55162482"/><file name="LoggerPatternConverterEnvironment.php" hash="829265aa84843818bd9faf3bd42b0432"/><file name="LoggerPatternConverterFile.php" hash="a7091f0857b99db4e00c33b61df5e3d3"/><file name="LoggerPatternConverterLevel.php" hash="6219dcb0d8630e6f69cbf4ba669fd11f"/><file name="LoggerPatternConverterLine.php" hash="a27bf38b5c6453a9925d365bde65fe47"/><file name="LoggerPatternConverterLiteral.php" hash="a2cd9e35ca6253cde6a467320837a767"/><file name="LoggerPatternConverterLocation.php" hash="b88efadaccdf31b25b1fb14866c106a0"/><file name="LoggerPatternConverterLogger.php" hash="4342ab32fa26cdf53308896272c2e36b"/><file name="LoggerPatternConverterMDC.php" hash="d241043bc9ea9ecdbf3a0ae5d5a42206"/><file name="LoggerPatternConverterMessage.php" hash="cad3040a1a3d1d40dc6a26727bebe19d"/><file name="LoggerPatternConverterMethod.php" hash="3208fb30a3bc0a7e0fb281800c43ecef"/><file name="LoggerPatternConverterNDC.php" hash="2e68ba79896c47c5067bbf0b371df260"/><file name="LoggerPatternConverterNewLine.php" hash="291bd541e0f689484a5596323e3cac14"/><file name="LoggerPatternConverterProcess.php" hash="7421d9b9b6a5f8f51c3a9a1c796911a5"/><file name="LoggerPatternConverterRelative.php" hash="24495b25867aac190135610061cd244d"/><file name="LoggerPatternConverterRequest.php" hash="67a484d44fd7ddc06a654995904e9653"/><file name="LoggerPatternConverterServer.php" hash="bef42f8b51bc220453e3f4b1e67e7402"/><file name="LoggerPatternConverterSession.php" hash="7cd6290d364837cd2ff4358c03022e98"/><file name="LoggerPatternConverterSessionID.php" hash="fc7b37aa3cb28fbb09862eb7edc6d042"/><file name="LoggerPatternConverterSuperglobal.php" hash="6b984fb3d26fb0186595370d0f066659"/><file name="LoggerPatternConverterThrowable.php" hash="4ca10f0f20408a30243ff589415634c9"/></dir><dir name="renderers"><file name="LoggerRenderer.php" hash="332819a947805d55c2aa546ced274f01"/><file name="LoggerRendererDefault.php" hash="4c4003cde8e0a74cc562060ca7bccf61"/><file name="LoggerRendererException.php" hash="4b2def2de9aa459bd321e826c02e31c2"/><file name="LoggerRendererMap.php" hash="b9aadee6f31f7cb38210653141b94fa6"/></dir><dir name="xml"><file name="log4php.dtd" hash="fb7e60edf02964352b7ddee1f26d8924"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="factfinder"><file name="asn.xml" hash="057c976595d38cdbeb9b5ff397b2d6a1"/><file name="campaigns.xml" hash="1cb6da6869cc7a9689bace3249dc89c5"/><file name="core.xml" hash="a2a61da60312680810321457a10d3dcd"/><file name="suggest.xml" hash="4f0563594cad609abe7ff35f8e95b5c5"/><file name="tagcloud.xml" hash="c8e773b6927a090032acfa12df87b6a4"/><file name="tracking.xml" hash="d9782fb2af571134b20b9aaf0fae5b11"/></dir></dir><dir name="template"><dir name="factfinder"><dir name="asn"><dir name="layer"><dir name="filter"><file name="slider.phtml" hash="dd59d661b62a2e78314a83851a164c94"/></dir><file name="slider.phtml" hash="029eee663c434a3fe0b97a25285b6d14"/></dir></dir><dir name="campaigns"><file name="advisory.phtml" hash="07dfd515ce1b4a98f00e6ad00b11d4c8"/><file name="feedback.phtml" hash="1d43c59923a6823deabeea81774a7d35"/><file name="pushed.phtml" hash="b9061fdd98e6352967abe407ea3fc1ce"/></dir><dir name="core"><dir name="export"><file name="locked.phtml" hash="07b48f135359f6c7cce6ed6f79aa80b4"/><file name="nofile.phtml" hash="1e49f98fccd6e48e151a846677fa1c68"/></dir></dir><dir name="suggest"><file name="advancedsuggest.phtml" hash="b0e5493c5759b493422081875fee6990"/></dir><dir name="tracking"><file name="init.phtml" hash="f83735c570cad3a4da2e6022392492b5"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="etc"><file name="factfinder.xml" hash="f87803fd5c96fc784baff992c2bce96b"/></dir></dir><dir name="shell"><file name="factfinder.php" hash="102cc3521ad25e062bdbe6616f63776f"/></dir></target><target name="mageweb"><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="a62424da9902b49a76659683121618d0"/><file name="suggest.js" hash="4ba0096ccb7b8244b75a253c58ef1e92"/><file name="tracking.js" hash="62dfcaeb0e6cd43c460d0cfaab2fb446"/></dir></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.3.0</min><max>5.5.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
+ <name>Flagbit_Factfinder</name>
4
+ <version>4.1.9</version>
5
  <stability>stable</stability>
6
+ <license uri="https://opensource.org/licenses/MIT">MIT</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>4.1.9 Release</summary>
10
+ <description>4.1.9 Release</description>
11
  <notes>Release</notes>
12
  <authors><author><name>FACTFinder</name><user>FACT_Finder</user><email>info@flagbit.de</email></author></authors>
13
+ <date>2016-08-26</date>
14
+ <time>12:56:51</time>
15
+ <contents><target name="magecommunity"><dir name="FACTFinder"><dir name="Asn"><dir name="Block"><dir name="Catalog"><dir name="Layer"><file name="Factfinder.php" hash="0e79d252a2752aab67f7490436350fe7"/><file name="State.php" hash="2bf2c99237e881372fdc074c3505d188"/></dir><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="9b0c98e266174c8f8b02b896a556b769"/></dir><file name="Pager.php" hash="ec87967ba312a3d589e0af0afbacdd0a"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="668be3edd4c8f6d0e051252d2e52d545"/></dir><dir name="Model"><dir name="Catalog"><file name="Layer.php" hash="6dafe882395b5d09f84c102f3b785410"/></dir><dir name="Handler"><file name="Search.php" hash="bbec7bd87e1d2f15792fdda46f34eb52"/></dir><dir name="Layer"><dir name="Filter"><file name="Factfinder.php" hash="2666ae9c79aa939e9539a1af5b0f7784"/><file name="Item.php" hash="a68545b4cb4487691ae75cdbf47af377"/></dir></dir><file name="Observer.php" hash="9ec46432b3d3170b626cfb4439315209"/><dir name="Resource"><dir name="Product"><dir name="Attribute"><file name="Collection.php" hash="03b060fd637de1fd632f1b9784b1124c"/></dir></dir><dir name="Search"><file name="Collection.php" hash="3e7a88eb53ccfb79b4448f9eb7bd4177"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="e07b890b06b00d94bc4a4a5931325366"/><file name="system.xml" hash="d76e04ebe1d564be4113c1428fdfc637"/></dir></dir><dir name="Campaigns"><dir name="Block"><file name="Abstract.php" hash="cc5e41bb89f07f191be99430451221fa"/><dir name="Advisory"><file name="Search.php" hash="1d4bf82a7baffbe64be17216436c35d4"/></dir><dir name="Feedback"><file name="Abstract.php" hash="018e415bdd754127cfad8bfa5881c0ce"/><file name="Cart.php" hash="35f9fec2518383c909495af90b324b8b"/><file name="Product.php" hash="82999021756a26d81bf829b9aa4dd5cc"/><file name="Search.php" hash="ebf3d35f6425b771291b08f696169d04"/></dir><dir name="Pushed"><file name="Abstract.php" hash="fbfbf5cb5c1ebce8e588ac7af1f1458d"/><file name="Cart.php" hash="741d3bd71ce91cd583778a5e26be9ff5"/><file name="Product.php" hash="c1e774c4ceb71469080e49557887a893"/><file name="Search.php" hash="ae352cfd5ca8bdf2a0b46d1148c710ae"/></dir></dir><dir name="Helper"><file name="Data.php" hash="c7882a90dca46e639a5e4c64bef153ff"/></dir><dir name="Model"><file name="Facade.php" hash="44fc55139509b76f19b7c95c6a81eb4c"/><dir name="Handler"><file name="Abstract.php" hash="04dd6ad2a877111364fd9c8f132671fc"/><file name="Cart.php" hash="128dd5052d20384ea2220020469f7cf6"/><file name="Product.php" hash="8d48380fbccec220bc4caabbcb5d7d7d"/><file name="Search.php" hash="e039a207ca98655c647355ebf287566d"/></dir><file name="Observer.php" hash="043e7411be7ec13a656b07750a7811af"/><dir name="Resource"><dir name="Pushedproducts"><file name="Collection.php" hash="569856158dee935d611ebc30f426835c"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="8f6b7cec7cff39b149beeffb39764668"/><file name="system.xml" hash="54992bb35ac6088733d3f18408872fdb"/></dir></dir><dir name="Core"><dir name="Block"><dir name="Adminhtml"><file name="Exportlink.php" hash="7a845ee8974cfcf74d9a32fed2ac0b21"/><dir name="Form"><dir name="Field"><file name="Attribute.php" hash="bea2183e56100233e7aebaccd6680c6f"/><file name="Attributes.php" hash="292742f954dec1863caaee9313a237c9"/></dir></dir></dir><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Toolbar.php" hash="b9438ae943def50b46531ac1265e0634"/></dir><file name="Pager.php" hash="aa301fb57966bafcc370fa510d2ad146"/></dir></dir><dir name="CatalogSearch"><file name="Layer.php" hash="ad3dcdd26b5a723e43c7b8011a4ea25f"/></dir><dir name="EnterpriseSearch"><file name="Layer.php" hash="19455e36be3e0c14cabba762ccbdef1a"/></dir></dir><dir name="Helper"><file name="Backend.php" hash="f30c89ca668b193a8fc8bf00eda34413"/><file name="Data.php" hash="5108935421d26c45a63676b6b97f3044"/><file name="Debug.php" hash="c563d343c68db980e9256dc510e78ea1"/><file name="Export.php" hash="e48e0b03c1da11fab1c6d74648b4e014"/><file name="Rewrite.php" hash="30921c0924e535d669ecdd7e9592f883"/><file name="Search.php" hash="fd1e90271d620c57a0cb7b80e33f536f"/></dir><dir name="Model"><file name="Autoloader.php" hash="29370ccbcd483f93be86999485889900"/><dir name="CatalogSearch"><file name="Layer.php" hash="8d15e27cca249cd3827d33e9acdbb369"/><file name="Query.php" hash="4f5b732eb28a7c1efde28eb602c38772"/></dir><dir name="Export"><file name="Observer.php" hash="03a94f73f89b923c374a2663b03e3497"/><file name="Price.php" hash="1128559eb16cf0d562ad22af9ccdd1a4"/><file name="Product.php" hash="13fe01bed2105dd1eddaa886c621a2bc"/><file name="Stock.php" hash="d6531c28c572968ab82d3282eda9b29a"/></dir><file name="Facade.php" hash="1b66c3bfea09a60611b232f36ac4ba60"/><file name="File.php" hash="77cc3d2067b42c2cad6f21dcb6d7a73e"/><file name="Ftp.php" hash="d70cfab0ce607aca6efa32d82d3a85c3"/><dir name="Handler"><file name="Abstract.php" hash="1924821d13996f9f672369b63a05ac08"/><file name="Search.php" hash="63a9a4b197027654c5328f37245d7add"/><file name="Status.php" hash="635b9cb62808803be64d373dc2a0e808"/></dir><file name="Observer.php" hash="e5decfa3b52571cb75335dd41b1927f5"/><dir name="Resource"><file name="Fulltext.php" hash="dfbece11e5fe8224c94d1e1bb7affe3e"/><dir name="Search"><file name="Collection.php" hash="50596cf9508d0d96a4bb315a50f35984"/><file name="Engine.php" hash="602547a2d224f80933b6681db1cb3cc4"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Attributes.php" hash="d877a4da13c592f5b8260b202bcead13"/><file name="Cron.php" hash="f24b6995fea6309acb720876f3156270"/><file name="Enabled.php" hash="cb13a29b7100518350a7e5830180e9bd"/><file name="Engine.php" hash="ef1f702d79c7ed0fe72437ca4bf13a19"/></dir><dir name="Source"><file name="Authtype.php" hash="7ce07da0f6bcb8e88b5699ace77e6f31"/><file name="Engine.php" hash="8f1c2f344aa3182c312a665488661fa5"/><file name="Identifier.php" hash="a80606fe94b2eaf78f8d07628f2a64f0"/><file name="Protocol.php" hash="310b7fd8648b60f5cc9c3e3c9f87345c"/></dir></dir></dir><file name="Url.php" hash="57e5e87457b3051cec9bc3c988f79282"/></dir><dir name="controllers"><file name="ExportController.php" hash="4e0800619796d128a9466c84fecd3b56"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0247e1b846aefb3fb9c5c0706681a586"/><file name="config.xml" hash="471974367bce221b6795be5f4015a6e9"/><file name="system.xml" hash="66c43a66c412e296809d8c77cafb7b51"/></dir></dir><dir name="Recommendation"><dir name="Helper"><file name="Data.php" hash="a09697fa784bfd2fe23f6b4fbd9f3e84"/></dir><dir name="Model"><file name="Facade.php" hash="ed9c246bc831c7f3950a88853d401288"/><dir name="Handler"><file name="Recommendations.php" hash="f5645b78a6dca466af5b22ff0456ca71"/></dir><file name="Observer.php" hash="4db52b3863efccd17b19e92e6ff2521e"/></dir><dir name="etc"><file name="config.xml" hash="03ec96e0fa78fdfbc3d4d5fac7193704"/><file name="system.xml" hash="f841228bf8a5397fe18da6186c5e3208"/></dir></dir><dir name="Suggest"><dir name="Block"><file name="TopSearch.php" hash="96fc7e73d907a0438111253ae6c5fc6f"/><dir name="XmlConnect"><dir name="Catalog"><dir name="Search"><file name="Suggest.php" hash="150658cb1d7bc7ae5b4566ed1331bb12"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="b62d7dbfc30329545823b8988a78f20a"/></dir><dir name="Model"><file name="Facade.php" hash="254f13fa4cbbe9602ae40c5cd124282e"/><dir name="Handler"><file name="Suggest.php" hash="948fd13668d507ba4ebed7c9a2055be4"/></dir><file name="Observer.php" hash="f23771ea8bd4d679a90282714275aeb7"/><file name="Processor.php" hash="f37cf3fb0c72464f1e651f34d64b44dd"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Imagetype.php" hash="a8a39dc5d44080a3b070bc72f103efef"/></dir></dir></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="68fc8cee37a52a538762252e47f340a1"/></dir><dir name="etc"><file name="config.xml" hash="5e6b384d971afc4a0c6b7cc4d437badf"/><file name="system.xml" hash="10d1692d1a09edc2edb5344d41a1d9ae"/></dir></dir><dir name="Tagcloud"><dir name="Block"><file name="TagCloud.php" hash="d0c6c681b3da27ef349ff1295c5e26a9"/></dir><dir name="Helper"><file name="Data.php" hash="ea2c8093a1d87a8148f1205e8b73cc2d"/></dir><dir name="Model"><file name="Facade.php" hash="69069badc93509011f7c4fa2b1ca3e72"/><dir name="Handler"><file name="TagCloud.php" hash="e2e5ba229002ad3cfa5769a9f74d808b"/></dir></dir><dir name="etc"><file name="config.xml" hash="3ff00cc34fdbaed962f704204ce47f1a"/></dir></dir><dir name="Tracking"><dir name="Block"><file name="Abstract.php" hash="24419c96d9768b86ec890a1b38278e0f"/><file name="Click.php" hash="b85c8619ab7a18163a4ce27ffe9fd8da"/><file name="Recommendation.php" hash="0ed995b57afb6efa4a72d414dc7db3bf"/></dir><dir name="Helper"><file name="Data.php" hash="f0018ce83f815b057fab66351e58fdb6"/></dir><dir name="Model"><file name="Facade.php" hash="f8684a20a82bff4b668af460af476d41"/><dir name="Handler"><file name="Tracking.php" hash="9672d838ac3775c8a7dc4ef70593ca7e"/></dir><file name="Observer.php" hash="69e6c0236f629cb7f5b168b7ce3b6b84"/><file name="Processor.php" hash="9fd3af06f452ca2cb719d135b6ecda52"/><file name="Queue.php" hash="046d6d464d56a609b71574c6e0a3c4d1"/><dir name="Resource"><dir name="Queue"><file name="Collection.php" hash="daecedd55cb992ae3988305324c8c1b9"/></dir><file name="Queue.php" hash="3be1d09978ae6e8c56fb673931b05479"/></dir></dir><dir name="controllers"><file name="ProxyController.php" hash="33f25104bc086fcbe998459baccdd0b3"/></dir><dir name="etc"><file name="config.xml" hash="e3a33e4ca92d72192bcc0e73eb7db9a5"/><file name="system.xml" hash="3e5a4357f098832fa5e6ef67d1ceecaa"/></dir><dir name="sql"><dir name="factfinder_tracking_setup"><file name="install-1.0.0.php" hash="553ad063abd837a220ebff97618578b4"/><file name="upgrade-1.0.0-4.1.2.php" hash="a80b4f755d0bea172eefebe10b877cd6"/></dir></dir></dir></dir></target><target name="magelib"><dir name="FACTFinder"><dir name="Adapter"><file name="AbstractAdapter.php" hash="b24c565309d7d3b6363b5ab059f9b55f"/><file name="Compare.php" hash="b6452710afb4ff28509f6426c95bec74"/><file name="Import.php" hash="584eecdb7281603ba5ef901082fb52d7"/><file name="ProductCampaign.php" hash="1f05bb0b3911425e2b472cb5c76e705c"/><file name="Recommendation.php" hash="55508a24d0fa324a426bf1cbf1baf913"/><file name="Search.php" hash="29af1b0da523085c0a676331284331ae"/><file name="SimilarRecords.php" hash="2f9c9fd1751dacb1a56c432320d94c19"/><file name="Suggest.php" hash="5f91090f7c7ea764f9fc21938aade3c8"/><file name="TagCloud.php" hash="fe1faf30373e91b96e57c08fb64df23a"/><file name="Tracking.php" hash="b71446f5d1ba0e44c09ae4e7012bca55"/></dir><dir name="Core"><file name="AbstractConfiguration.php" hash="a6f7c0b9013a7986a1fa798e8fc3414c"/><file name="AbstractEncodingConverter.php" hash="7946720c77c47e3ed2070606a74a48cb"/><file name="ArrayConfiguration.php" hash="dc60873fa6eed180126944247cb4de99"/><dir name="Client"><file name="RequestParser.php" hash="bc5dabb648f7278db4a1c5f14af4dfa0"/><file name="UrlBuilder.php" hash="d73cc166fcf20b7623ea0f7c319d3224"/></dir><file name="ConfigurationInterface.php" hash="1158aaee6a7502cf81bf27b8ed0c76ff"/><file name="IConvEncodingConverter.php" hash="5c504a3229cc8a59c09f03f3bf2c9348"/><file name="ManualConfiguration.php" hash="a49d0b05cc319b807c40b37a861b060d"/><dir name="Page"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><file name="ParametersConverter.php" hash="9c01642c6de1842b8f1b4e8d9f93017e"/><dir name="Server"><file name="AbstractDataProvider.php" hash="8d33ddebe3d3e60b72893188d7f2369f"/><file name="ConnectionData.php" hash="c4246099ec93e7f589c0e22179d9557a"/><file name="EasyCurlDataProvider.php" hash="48f452cd3ca1dcf3b4e7cc4d8b59c8a9"/><file name="EasyCurlRequestFactory.php" hash="61f88e882120dca5e5e1964d1f898527"/><file name="FileSystemDataProvider.php" hash="30b428e2b76307b1143057a155371c34"/><file name="FileSystemRequestFactory.php" hash="f0a464725448393e64948a6063208d91"/><file name="MultiCurlDataProvider.php" hash="2e467a4976694ef4e7775d913dafedf4"/><file name="MultiCurlRequestFactory.php" hash="41f978e0dd60065026dc5adced1f9503"/><file name="NullResponse.php" hash="3a419c1ea234ef20e1330c7b445eb9c6"/><file name="Request.php" hash="08ddaaa7701558e1802408089d15b5dd"/><file name="RequestFactoryInterface.php" hash="65cfad6045407bdd63af980f6f996c99"/><file name="Response.php" hash="695c80ce5ee4e8dc38c78d0349e1f31b"/><file name="UrlBuilder.php" hash="6f468178b95a96f6217f44f9ef392cfb"/></dir><file name="Utf8EncodingConverter.php" hash="1cb05e6f174e36ed3cce6e2a7eb987ed"/><file name="XmlConfiguration.php" hash="faafd887682d6aa01f61604df24df277"/></dir><dir name="Custom"><file name=".gitignore" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Data"><file name="AdvisorAnswer.php" hash="55ffe5c6f8e1363d1d02875feec202d1"/><file name="AdvisorQuestion.php" hash="baa784c529640f2976b22262ec6f8983"/><file name="AfterSearchNavigation.php" hash="f1d08832e73cf45b8a35d99020aa49ea"/><file name="ArticleNumberSearchStatus.php" hash="da1966d4016c32ea492b8b6b931d8222"/><file name="BreadCrumb.php" hash="84b69c8df53c6d9eb721950a29e4a84d"/><file name="BreadCrumbTrail.php" hash="324bb6a06c0058e53c58bd3f96fe0ff3"/><file name="BreadCrumbType.php" hash="c9c3568bbfa4989517ee8f3b9c779fa2"/><file name="Campaign.php" hash="23966a3bea56ac66ff2b795e11983c6a"/><file name="CampaignIterator.php" hash="503766bc960efe69e861c2f45dce77d2"/><file name="Filter.php" hash="aafda20fe7c992af46316d74be33ec73"/><file name="FilterGroup.php" hash="8820c34c807044489682a290e86466b6"/><file name="FilterSelectionType.php" hash="bd0d0676af5d0182f6b6631e6df8ecb9"/><file name="FilterStyle.php" hash="1299441866fb075e331d2f9ca2755091"/><file name="FilterType.php" hash="b073cf2f411298509337808624666687"/><file name="Item.php" hash="b91116ddeb81c0b90e76a2a4f7b51261"/><file name="Page.php" hash="35daab87fdc5e3b4732480996b982364"/><file name="Paging.php" hash="1b06374d761489582de08551f17a58a1"/><file name="Record.php" hash="cd62198f27ebbb1e0a88008642c7157a"/><file name="Result.php" hash="01b94e91b11b61d794fb9ff40d6148d3"/><file name="ResultsPerPageOptions.php" hash="ae22d184bf43cd7b11cad567489a2261"/><file name="SearchParameters.php" hash="d7041887d5f65e763c7a2e0a323b18fd"/><file name="SearchStatus.php" hash="356fd9774c237a0e26ac85a6186bccfd"/><file name="SingleWordSearchItem.php" hash="db057d7f0460f29c5b31ab9689b3906b"/><file name="SliderFilter.php" hash="344d226acde13ec85f59d5a97cf8afc5"/><file name="Sorting.php" hash="284b4811c99ad057d08caead45ea2dee"/><file name="SortingDirection.php" hash="ec86bc437928a4aa623a8c098c94f435"/><file name="SortingItem.php" hash="428e8c59a5372cafc5ec69bf868dea18"/><file name="SortingItems.php" hash="4fd36b79ed02099265103e1e81c71557"/><file name="SuggestQuery.php" hash="4011313cfd853eace88c399444ffa4cc"/><file name="TagQuery.php" hash="a4460d5e8a9f918eea820a029dc21290"/></dir><file name="Loader.php" hash="cf900585b0fd44978f97e7a2b2279a99"/><dir name="Util"><file name="Curl.php" hash="c9cbe7b2116dd6160b8db3a14b634561"/><file name="CurlHandle.php" hash="bea42fdebc33e31cf58889de18232d3e"/><file name="CurlInterface.php" hash="1858bc215b7706ba81ff6e14aa2f4750"/><file name="CurlMultiHandle.php" hash="2085a5a09c218971412a44c0dad6bf72"/><file name="CurlStub.php" hash="555c36a9a5352e1a6acfd65a68cf911b"/><file name="Log4PhpLogger.php" hash="d232fe476b310ec8692877edddc972e4"/><file name="LoggerInterface.php" hash="36dfa3ee8a089595ef285806d0068b27"/><file name="NullLogger.php" hash="51e1a2a9c89a9efba49d0a0d3ee9325d"/><file name="Parameters.php" hash="6bb6f333d55dd7bce2a0014f10edbc29"/><file name="Pimple.php" hash="fb5e70660a5fe56edfdf11bec1ba6009"/></dir></dir><dir name="FACTFinderCustom"><file name="Configuration.php" hash="93832ed3840c5899c9c761c702dec17b"/></dir><dir name="log4php"><file name="Logger.php" hash="39841035ea058cc62571fcb9b4f3aa43"/><file name="LoggerAppender.php" hash="a8b07b24ee26931cef9373163542128a"/><file name="LoggerAppenderPool.php" hash="7e44ee58fbd3c50ae51c98742aa4f327"/><file name="LoggerAutoloader.php" hash="5aa85dd61ff00167d2b9d482bf418c77"/><file name="LoggerConfigurable.php" hash="4c89cbf3c90a724930c6d46995da16bd"/><file name="LoggerConfigurator.php" hash="b8ac801c410e0515fbd5ec6b67dfb40b"/><file name="LoggerException.php" hash="c91fd8cc5bfee3cad373f8ed9440458c"/><file name="LoggerFilter.php" hash="39b6689eeb15e468781c0a62a8f482b5"/><file name="LoggerHierarchy.php" hash="be16af259ec43bef5c49bd1118e94859"/><file name="LoggerLayout.php" hash="7c089f20f7abba10699de2bd4423af7c"/><file name="LoggerLevel.php" hash="f380928eb1aac5ade3d7654f200ebb81"/><file name="LoggerLocationInfo.php" hash="33f1a195cfdcc7ebf681a3085eb6b228"/><file name="LoggerLoggingEvent.php" hash="f227e5ae0d04fef3a36899906d4ad478"/><file name="LoggerMDC.php" hash="64868651982829e59d3b316498145a79"/><file name="LoggerNDC.php" hash="482045e33b9fe22e53269c021cbfe877"/><file name="LoggerReflectionUtils.php" hash="174b22dd241ba4263aba8d978d37959f"/><file name="LoggerRoot.php" hash="0d762ed21fdff2708adab3068b94c2c3"/><file name="LoggerThrowableInformation.php" hash="76d98d20d55cf0e3bd4b1b138023c3af"/><dir name="appenders"><file name="LoggerAppenderConsole.php" hash="5eefc20589c86b11d2832f9a8fafa44f"/><file name="LoggerAppenderDailyFile.php" hash="f97b57f6b0b9dba2f650ae5e17d9f28b"/><file name="LoggerAppenderEcho.php" hash="76824ae7be6503e8c5ca3a9fc15b7816"/><file name="LoggerAppenderFile.php" hash="92481c41d6f9d3d2cf6cfc82c7c0ef22"/><file name="LoggerAppenderFirePHP.php" hash="1eccdf817ff2e0204265a5a77901f0a1"/><file name="LoggerAppenderMail.php" hash="a23d71d709af265b20797eeb0d71911e"/><file name="LoggerAppenderMailEvent.php" hash="f853e9e18511ab18873484882c744655"/><file name="LoggerAppenderMongoDB.php" hash="494b30e44a3add5eeb9c0d54ea88c29b"/><file name="LoggerAppenderNull.php" hash="ec6ca85fadc4d71f75b5e8e13df6e058"/><file name="LoggerAppenderPDO.php" hash="4388d8e542fe680228365ffd48d8ab6d"/><file name="LoggerAppenderPhp.php" hash="9853767b74b8234361ace83867c9f18d"/><file name="LoggerAppenderRollingFile.php" hash="5bc49b8f05b36842b800d699bfe05e45"/><file name="LoggerAppenderSocket.php" hash="6111536426fdf6f8a4adafb460510301"/><file name="LoggerAppenderSyslog.php" hash="afda0ccf876a87781e58d63104519bdc"/></dir><dir name="configurators"><file name="LoggerConfigurationAdapter.php" hash="b07bade9ae4809776742d3b36ca4feb7"/><file name="LoggerConfigurationAdapterINI.php" hash="bfbca46c36693f098334699c7b71b569"/><file name="LoggerConfigurationAdapterPHP.php" hash="9f9c0bd65cda5224c8e90726baebb363"/><file name="LoggerConfigurationAdapterXML.php" hash="42ec1e713dadb1c6c813df278e6c58cb"/><file name="LoggerConfiguratorDefault.php" hash="a27dd348466a605849ffa946a5fa7bdf"/></dir><dir name="filters"><file name="LoggerFilterDenyAll.php" hash="8800e84c773b87e2638d22d627baae51"/><file name="LoggerFilterLevelMatch.php" hash="2ea447c40baea629486a6b7a4f8f352d"/><file name="LoggerFilterLevelRange.php" hash="b4b6753e0d0a8d734471482bb7b4981c"/><file name="LoggerFilterStringMatch.php" hash="342113e5152ef6e9703807fa36e52785"/></dir><dir name="helpers"><file name="LoggerFormattingInfo.php" hash="89a5ed8f751e4a6a826275619266b911"/><file name="LoggerOptionConverter.php" hash="e02f5ffc3918a0352bf77121e5add1d5"/><file name="LoggerPatternParser.php" hash="a5d4dfeb2a66b022380e0e3d7ba9b318"/><file name="LoggerUtils.php" hash="90264a3263bc4e3a3dac1dbeb3cc35df"/></dir><dir name="layouts"><file name="LoggerLayoutHtml.php" hash="cf6066b51d7ac2de4accaf13f68fb442"/><file name="LoggerLayoutPattern.php" hash="10c48d2fa44953d20fcb3e3542a05ebf"/><file name="LoggerLayoutSerialized.php" hash="cef71f72176167a15c79f5cab5515a77"/><file name="LoggerLayoutSimple.php" hash="ba2aaa713c715b823c4e767a2f0b3e67"/><file name="LoggerLayoutTTCC.php" hash="1ecb0af018b78ad42f4a9d70e182f429"/><file name="LoggerLayoutXml.php" hash="b52409dbb1bacc1c7b4c5ddf66ed8afa"/></dir><dir name="pattern"><file name="LoggerPatternConverter.php" hash="fcbd56bf082b96f02fcf5b0b552de4c1"/><file name="LoggerPatternConverterClass.php" hash="e61c2f7544feee8ee9b966311471a2a7"/><file name="LoggerPatternConverterCookie.php" hash="465d359167443336f258d9b5a89095ef"/><file name="LoggerPatternConverterDate.php" hash="4a399075a3c2d7542e3c649f55162482"/><file name="LoggerPatternConverterEnvironment.php" hash="829265aa84843818bd9faf3bd42b0432"/><file name="LoggerPatternConverterFile.php" hash="a7091f0857b99db4e00c33b61df5e3d3"/><file name="LoggerPatternConverterLevel.php" hash="6219dcb0d8630e6f69cbf4ba669fd11f"/><file name="LoggerPatternConverterLine.php" hash="a27bf38b5c6453a9925d365bde65fe47"/><file name="LoggerPatternConverterLiteral.php" hash="a2cd9e35ca6253cde6a467320837a767"/><file name="LoggerPatternConverterLocation.php" hash="b88efadaccdf31b25b1fb14866c106a0"/><file name="LoggerPatternConverterLogger.php" hash="4342ab32fa26cdf53308896272c2e36b"/><file name="LoggerPatternConverterMDC.php" hash="d241043bc9ea9ecdbf3a0ae5d5a42206"/><file name="LoggerPatternConverterMessage.php" hash="cad3040a1a3d1d40dc6a26727bebe19d"/><file name="LoggerPatternConverterMethod.php" hash="3208fb30a3bc0a7e0fb281800c43ecef"/><file name="LoggerPatternConverterNDC.php" hash="2e68ba79896c47c5067bbf0b371df260"/><file name="LoggerPatternConverterNewLine.php" hash="291bd541e0f689484a5596323e3cac14"/><file name="LoggerPatternConverterProcess.php" hash="7421d9b9b6a5f8f51c3a9a1c796911a5"/><file name="LoggerPatternConverterRelative.php" hash="24495b25867aac190135610061cd244d"/><file name="LoggerPatternConverterRequest.php" hash="67a484d44fd7ddc06a654995904e9653"/><file name="LoggerPatternConverterServer.php" hash="bef42f8b51bc220453e3f4b1e67e7402"/><file name="LoggerPatternConverterSession.php" hash="7cd6290d364837cd2ff4358c03022e98"/><file name="LoggerPatternConverterSessionID.php" hash="fc7b37aa3cb28fbb09862eb7edc6d042"/><file name="LoggerPatternConverterSuperglobal.php" hash="6b984fb3d26fb0186595370d0f066659"/><file name="LoggerPatternConverterThrowable.php" hash="4ca10f0f20408a30243ff589415634c9"/></dir><dir name="renderers"><file name="LoggerRenderer.php" hash="332819a947805d55c2aa546ced274f01"/><file name="LoggerRendererDefault.php" hash="4c4003cde8e0a74cc562060ca7bccf61"/><file name="LoggerRendererException.php" hash="4b2def2de9aa459bd321e826c02e31c2"/><file name="LoggerRendererMap.php" hash="b9aadee6f31f7cb38210653141b94fa6"/></dir><dir name="xml"><file name="log4php.dtd" hash="fb7e60edf02964352b7ddee1f26d8924"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="factfinder"><file name="asn.xml" hash="05ee1b7d0d34d7e43de8c115aeaab69d"/><file name="campaigns.xml" hash="d722ded27e895f0f0aa15954c46f93f3"/><file name="core.xml" hash="fe920d8ef444afbcfa2053b72bc819fc"/><file name="suggest.xml" hash="9c1a761044cd33da5e028c92ce9abe4f"/><file name="tagcloud.xml" hash="0d31f54985019d96bb1b5af17ccdf0d3"/><file name="tracking.xml" hash="53ce8afeb32391a4b207121a372162a2"/></dir></dir><dir name="template"><dir name="factfinder"><dir name="asn"><dir name="layer"><dir name="filter"><file name="slider.phtml" hash="2004f809f803e17d9739a7173958ceca"/></dir><file name="slider.phtml" hash="d48c9aace222c7525430b5235acd4026"/></dir></dir><dir name="campaigns"><file name="advisory.phtml" hash="3341ee58f81da41020f85c2145048b8b"/><file name="feedback.phtml" hash="4c1868f038a13bd2ca270b7d9a077452"/><file name="pushed.phtml" hash="b76b7c5b064ee6dc86ccc94a363bdb05"/></dir><dir name="core"><dir name="export"><file name="locked.phtml" hash="f0948f48fcc40dfcb21a8da68ce29425"/><file name="nofile.phtml" hash="c304b037812f4c34d7e094fe3b70cd80"/></dir></dir><dir name="suggest"><file name="advancedsuggest.phtml" hash="d94fe357abf9ae7026769e62a3cd9ba9"/></dir><dir name="tracking"><file name="click.phtml" hash="3e545af810a201db7c76c0502f606308"/><file name="recommendation.phtml" hash="02dba2d0cc5e1608682a700916a963d8"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="."><file name="factfinder.xml" hash="f87803fd5c96fc784baff992c2bce96b"/></dir><dir name="modules"><file name="FACTFinder_Asn.xml" hash="a003a8010c577c396c8e2ee5b1ea4417"/><file name="FACTFinder_Campaigns.xml" hash="ccd3080cf57535193a6fe2e6946640fd"/><file name="FACTFinder_Core.xml" hash="80f5142c2acf5ceeca0fd552ddb7ce4c"/><file name="FACTFinder_Recommendation.xml" hash="9742344545ee435a4dc87eb2bb80bf19"/><file name="FACTFinder_Suggest.xml" hash="882806b936029f0ef04d4719542ecea3"/><file name="FACTFinder_Tagcloud.xml" hash="62d3ccec2191e7dfd8225e02912891d2"/><file name="FACTFinder_Tracking.xml" hash="779b734bdcafabab072a1afd9d0bf7c4"/></dir></target><target name="mage"><dir name="shell"><file name="factfinder.php" hash="f5d0ef5e78c29b1e700c822d2c2d491c"/></dir></target><target name="mageweb"><dir name="js"><dir name="factfinder"><file name="jXHR.js" hash="a62424da9902b49a76659683121618d0"/><file name="suggest.js" hash="fcae24ad674632753fc4e14e1c4d6d6c"/><file name="tracking.js" hash="f22da039733a2c67254d41cfa5e6ea9b"/></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="factfinder_onetouchslider"><file name="234A0ACCECB3C19247FA8B7920453761.cache.js" hash="df488d926e6054769d4731148e707b58"/><file name="25E490B929D7CDBF44085E4E4D9D6F78.cache.js" hash="2a017b95cfbd8653a222660b60697419"/><file name="53ABFAE8983A4589B497F48695DB2A7C.cache.js" hash="b6b02347438384cc886b2509426826b5"/><file name="75B23D057185BAB61CFE100CE08C4D84.cache.js" hash="ec9c94e05e64372a9636ef03e688d451"/><file name="79DD9AE9135ADFDE204324DA7F1B1405.cache.png" hash="6ba720deee377e093c5f5b0423c152df"/><file name="9F0D0456482D7A7A901A2CD8F64EA019.cache.js" hash="dad64db53266865af02c620795c6ab13"/><file name="clear.cache.gif" hash="6d22e4f2d2057c6e8d6fab098e76e80f"/><file name="de.factfinder.asn.slider.OneTouchSlider.nocache.js" hash="f92d47fc9eb8cf8ff78173997f5a4a7a"/></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
18
  </package>
shell/factfinder.php CHANGED
@@ -4,61 +4,161 @@ require_once 'abstract.php';
4
 
5
  class Mage_Shell_FactFinder extends Mage_Shell_Abstract
6
  {
 
 
 
 
 
 
7
 
8
  public function run()
9
  {
10
  if ($this->getArg('exportAll') || $this->getArg('exportall')) {
11
- $files = Mage::getModel('factfinder/export_product')->saveAll();
12
- echo "Successfully generated the following files:\n";
13
- foreach($files as $file) {
14
- echo $file . "\n";
15
- }
16
- } elseif ($this->getArg('exportStore')) {
17
- if(!is_numeric($this->getArg('exportStore'))) {
18
- echo $this->usageHelp();
19
- return;
20
- }
21
- $file = Mage::getModel('factfinder/export_product')->saveExport($this->getArg('exportStore'));
22
- echo 'Successfully generated export to: ' . $file . "\n";
23
- } elseif ($this->getArg('exportStorePrice')) {
24
- if(!is_numeric($this->getArg('exportStorePrice'))) {
25
- echo $this->usageHelp();
26
- return;
27
- }
28
- $file = Mage::getModel('factfinder/export_price')->saveExport($this->getArg('exportStorePrice'));
29
- echo 'Successfully generated price export to: ' . $file . "\n";
30
- } elseif ($this->getArg('exportStoreStock')) {
31
- if(!is_numeric($this->getArg('exportStoreStock'))) {
32
- echo $this->usageHelp();
33
- return;
34
- }
35
- $file = Mage::getModel('factfinder/export_stock')->saveExport($this->getArg('exportStoreStock'));
36
- echo 'Successfully generated stock export to: ' . $file . "\n";
37
  } else {
38
  echo $this->usageHelp();
39
  }
40
  }
41
 
 
42
  /**
43
  * Retrieve Usage Help Message
44
  *
 
45
  */
46
  public function usageHelp()
47
  {
48
  return <<<USAGE
49
  Usage: php factfinder.php -- [options]
50
 
51
- --exportAll Export products for every store
52
- --exportStore <storeId> Show Indexer(s) Index Mode
53
- --exportStorePrice <storeId> Export Price CSV For Store
54
- --exportStoreStock <storeId> Export Stock CSV For Store
55
- exportall Export products for every store
56
- help This help
 
 
57
 
58
- <storeId> Id of the store you want to export
59
 
60
  USAGE;
61
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
63
 
64
  $shell = new Mage_Shell_FactFinder();
4
 
5
  class Mage_Shell_FactFinder extends Mage_Shell_Abstract
6
  {
7
+ const EXPORT_ALL_TYPES_FOR_STORE = 'exportAllTypesForStore';
8
+ const EXPORT_ALL_TYPES_FOR_ALL_STORES = 'exportAllTypesForAllStores';
9
+ const EXPORT_STORE_PRICE = 'exportStorePrice';
10
+ const EXPORT_STORE_STOCK = 'exportStoreStock';
11
+ const EXPORT_STORE = 'exportStore';
12
+
13
 
14
  public function run()
15
  {
16
  if ($this->getArg('exportAll') || $this->getArg('exportall')) {
17
+ $this->exportAll();
18
+ } elseif ($this->getArg(self::EXPORT_STORE)) {
19
+ $this->exportStore();
20
+ } elseif ($this->getArg(self::EXPORT_STORE_PRICE)) {
21
+ $this->exportStorePrice();
22
+ } elseif ($this->getArg(self::EXPORT_STORE_STOCK)) {
23
+ $this->exportStoreStock();
24
+ } elseif ($this->getArg(self::EXPORT_ALL_TYPES_FOR_STORE)) {
25
+ $this->exportAllTypesForStore();
26
+ } elseif ($this->getArg(self::EXPORT_ALL_TYPES_FOR_ALL_STORES)) {
27
+ $this->exportAllTypesForAllStores();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  } else {
29
  echo $this->usageHelp();
30
  }
31
  }
32
 
33
+
34
  /**
35
  * Retrieve Usage Help Message
36
  *
37
+ * @return string
38
  */
39
  public function usageHelp()
40
  {
41
  return <<<USAGE
42
  Usage: php factfinder.php -- [options]
43
 
44
+ --exportAll Export products for every store
45
+ --exportStore <storeId> Export Product CSV for store
46
+ --exportStorePrice <storeId> Export Price CSV for store
47
+ --exportStoreStock <storeId> Export Stock CSV for store
48
+ --exportAllTypesForStore <storeId> Export Stock, Price and Products for store
49
+ --exportAllTypesForAllStores Export Stock, Price and Products for all stores
50
+ exportall Export Product CSV for all stores
51
+ help Show this help message
52
 
53
+ <storeId> Id of the store you want to export
54
 
55
  USAGE;
56
  }
57
+
58
+
59
+ /**
60
+ * Export all types for specified store
61
+ *
62
+ * @return void
63
+ */
64
+ private function exportAllTypesForStore()
65
+ {
66
+ if (!is_numeric($this->getArg(self::EXPORT_ALL_TYPES_FOR_STORE))) {
67
+ echo $this->usageHelp();
68
+ return;
69
+ }
70
+
71
+ foreach (Mage::helper('factfinder/export')->getExportTypes() as $type) {
72
+ $file = Mage::getModel('factfinder/export_' . $type)
73
+ ->saveExport($this->getArg(self::EXPORT_ALL_TYPES_FOR_STORE));
74
+ printf("Successfully generated %s export to: %s\n", $type, $file);
75
+ }
76
+ }
77
+
78
+
79
+ /**
80
+ * Export all types for all stores
81
+ *
82
+ * @return void
83
+ */
84
+ private function exportAllTypesForAllStores()
85
+ {
86
+ foreach (array('stock', 'price', 'product') as $type) {
87
+ $files = Mage::getModel('factfinder/export_' . $type)
88
+ ->saveAll();
89
+ foreach ($files as $file) {
90
+ printf("Successfully generated %s export to: %s\n", $type, $file);
91
+ }
92
+ }
93
+ }
94
+
95
+
96
+ /**
97
+ * Export stock for store
98
+ *
99
+ * @return void
100
+ */
101
+ private function exportStoreStock()
102
+ {
103
+ if (!is_numeric($this->getArg(self::EXPORT_STORE_STOCK))) {
104
+ echo $this->usageHelp();
105
+ return;
106
+ }
107
+
108
+ $file = Mage::getModel('factfinder/export_stock')->saveExport($this->getArg(self::EXPORT_STORE_STOCK));
109
+ printf("Successfully generated stock export to: %s\n", $file);
110
+ }
111
+
112
+
113
+ /**
114
+ * Export price for store
115
+ *
116
+ * @return void
117
+ */
118
+ private function exportStorePrice()
119
+ {
120
+ if (!is_numeric($this->getArg(self::EXPORT_STORE_PRICE))) {
121
+ echo $this->usageHelp();
122
+ return;
123
+ }
124
+
125
+ $file = Mage::getModel('factfinder/export_price')->saveExport($this->getArg(self::EXPORT_STORE_PRICE));
126
+ printf("Successfully generated price export to: %s\n", $file);
127
+ }
128
+
129
+
130
+ /**
131
+ * Export products for store
132
+ *
133
+ * @return void
134
+ */
135
+ private function exportStore()
136
+ {
137
+ if (!is_numeric($this->getArg(self::EXPORT_STORE))) {
138
+ echo $this->usageHelp();
139
+ return;
140
+ }
141
+
142
+ $file = Mage::getModel('factfinder/export_product')->saveExport($this->getArg(self::EXPORT_STORE));
143
+ printf("Successfully generated export to: %s\n", $file);
144
+ }
145
+
146
+
147
+ /**
148
+ * Export products for all stores
149
+ *
150
+ * @return void
151
+ */
152
+ private function exportAll()
153
+ {
154
+ $files = Mage::getModel('factfinder/export_product')->saveAll();
155
+ echo "Successfully generated the following files:\n";
156
+ foreach ($files as $file) {
157
+ echo $file . "\n";
158
+ }
159
+ }
160
+
161
+
162
  }
163
 
164
  $shell = new Mage_Shell_FactFinder();
skin/frontend/base/default/js/factfinder_onetouchslider/234A0ACCECB3C19247FA8B7920453761.cache.js ADDED
@@ -0,0 +1,477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){var $gwt_version = "2.3.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '234A0ACCECB3C19247FA8B7920453761';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function E(){}
2
+ function K(){}
3
+ function J(){}
4
+ function I(){}
5
+ function H(){}
6
+ function S(){}
7
+ function Z(){}
8
+ function Hn(){}
9
+ function Hb(){}
10
+ function eb(){}
11
+ function mb(){}
12
+ function ib(){}
13
+ function Gb(){}
14
+ function Vb(){}
15
+ function Ub(){}
16
+ function Xb(){}
17
+ function Wb(){}
18
+ function Zb(){}
19
+ function Yb(){}
20
+ function _b(){}
21
+ function $b(){}
22
+ function bc(){}
23
+ function ac(){}
24
+ function dc(){}
25
+ function cc(){}
26
+ function fc(){}
27
+ function ec(){}
28
+ function hc(){}
29
+ function gc(){}
30
+ function jc(){}
31
+ function ic(){}
32
+ function tc(){}
33
+ function sc(){}
34
+ function Ec(){}
35
+ function Dc(){}
36
+ function Cc(){}
37
+ function Lc(){}
38
+ function Kc(){}
39
+ function Jc(){}
40
+ function Qc(){}
41
+ function Sc(){}
42
+ function Wc(){}
43
+ function Rc(){}
44
+ function Zc(){}
45
+ function ad(){}
46
+ function gd(){}
47
+ function dd(){}
48
+ function jd(){}
49
+ function nd(){}
50
+ function ld(){}
51
+ function rd(){}
52
+ function xd(){}
53
+ function wd(){}
54
+ function vd(){}
55
+ function Jd(){}
56
+ function Md(){}
57
+ function Ld(){}
58
+ function Qd(){}
59
+ function Pd(){}
60
+ function Sd(){}
61
+ function Rd(){}
62
+ function Ee(){}
63
+ function De(){}
64
+ function Ge(){}
65
+ function Ie(){}
66
+ function Le(){}
67
+ function Je(){}
68
+ function Oe(){}
69
+ function Me(){}
70
+ function Te(){}
71
+ function Ve(){}
72
+ function Xe(){}
73
+ function cf(){}
74
+ function bf(){}
75
+ function mf(){}
76
+ function pf(){}
77
+ function Of(){}
78
+ function Kf(){}
79
+ function Uf(){}
80
+ function Tf(){}
81
+ function cg(){}
82
+ function ig(){}
83
+ function yg(){}
84
+ function xg(){}
85
+ function wg(){}
86
+ function vg(){}
87
+ function ug(){}
88
+ function bh(){}
89
+ function ih(){}
90
+ function hh(){}
91
+ function lh(){}
92
+ function kh(){}
93
+ function nh(){}
94
+ function th(){}
95
+ function vh(){}
96
+ function xh(){}
97
+ function zh(){}
98
+ function Hh(){}
99
+ function Gh(){}
100
+ function Kh(){}
101
+ function Oh(){}
102
+ function Yh(){}
103
+ function Xh(){}
104
+ function _h(){}
105
+ function $h(){}
106
+ function bi(){}
107
+ function fi(){}
108
+ function ei(){}
109
+ function di(){}
110
+ function pi(){}
111
+ function wi(){}
112
+ function vi(){}
113
+ function yi(){}
114
+ function xi(){}
115
+ function Ai(){}
116
+ function zi(){}
117
+ function Ci(){}
118
+ function Bi(){}
119
+ function Di(){}
120
+ function Li(){}
121
+ function Si(){}
122
+ function Vi(){}
123
+ function Yi(){}
124
+ function _i(){}
125
+ function jj(){}
126
+ function hj(){}
127
+ function qj(){}
128
+ function pj(){}
129
+ function zj(){}
130
+ function yj(){}
131
+ function xj(){}
132
+ function Tj(){}
133
+ function ik(){}
134
+ function pk(){}
135
+ function sk(){}
136
+ function vk(){}
137
+ function yk(){}
138
+ function xk(){}
139
+ function zk(){}
140
+ function Bk(){}
141
+ function Dk(){}
142
+ function Gk(){}
143
+ function Jk(){}
144
+ function Mk(){}
145
+ function al(){}
146
+ function el(){}
147
+ function gl(){}
148
+ function ol(){}
149
+ function nl(){}
150
+ function Kl(){}
151
+ function Jl(){}
152
+ function Tl(){}
153
+ function _l(){}
154
+ function $l(){}
155
+ function gm(){}
156
+ function lm(){}
157
+ function wm(){}
158
+ function Em(){}
159
+ function Hm(){}
160
+ function Mm(){}
161
+ function Rm(){}
162
+ function jn(){}
163
+ function hn(){}
164
+ function nn(){}
165
+ function qn(){}
166
+ function zn(){}
167
+ function En(){}
168
+ function Nk(b){}
169
+ function N(){lb()}
170
+ function M(b){lb()}
171
+ function Ck(b){lb()}
172
+ function Fk(b){lb()}
173
+ function Ik(b){lb()}
174
+ function Lk(b){lb()}
175
+ function wk(){lb()}
176
+ function Ak(){lb()}
177
+ function Ek(){lb()}
178
+ function Hk(){lb()}
179
+ function Kk(){lb()}
180
+ function We(){lb()}
181
+ function Fn(){lb()}
182
+ function fl(b){lb()}
183
+ function fg(){eg()}
184
+ function pn(){ul(this)}
185
+ function kd(){this.a={}}
186
+ function Kd(b){this.a=b}
187
+ function Mh(b){this.a=b}
188
+ function qk(b){this.a=b}
189
+ function nk(b){this.e=b}
190
+ function uf(b){this.d=b}
191
+ function Am(b){this.d=b}
192
+ function cm(b){this.a=b}
193
+ function Nm(b){this.a=b}
194
+ function Ni(b){this.b=b}
195
+ function Ol(b){this.a=b}
196
+ function Oc(){this.c=++Mc}
197
+ function sn(){this.a=new pn}
198
+ function Ah(){Ah=Hn;new pn}
199
+ function ab(){ab=Hn;$=new eb}
200
+ function Gf(){Gf=Hn;Ff=new af}
201
+ function eg(){eg=Hn;dg=new Oc}
202
+ function kj(){kj=Hn;ej=new jj}
203
+ function gn(){gn=Hn;fn=new jn}
204
+ function vc(){vc=Hn;xc()}
205
+ function mi(){mi=Hn;ui()}
206
+ function Ei(b,c){Gi(b,c,b.c)}
207
+ function Ef(b,c){mg();sg(b,c)}
208
+ function Ag(b,c){b.w=c}
209
+ function Bg(b,c){Dg(b.w,c,true)}
210
+ function _e(b,c){Sm(b.b,c);$e(b)}
211
+ function Fg(b,c){!!b.u&&sd(b.u,c)}
212
+ function Ti(b){b.a.F(b.d,b.c,b.b)}
213
+ function rf(b){return b.c<b.a}
214
+ function ye(b){return b.l|b.m<<22}
215
+ function xm(b){return b.b<b.d.jb()}
216
+ function kf(b){ef();this.a=b}
217
+ function nf(b){ef();this.a=b}
218
+ function hm(b,c){this.b=b;this.a=c}
219
+ function Im(b,c){this.a=b;this.b=c}
220
+ function An(b,c){this.a=b;this.b=c}
221
+ function ii(b){this.w=b;new Qd}
222
+ function Od(b){Nd.call(this,b)}
223
+ function fh(b){Nd.call(this,b)}
224
+ function R(c,b){c[c.length]=b}
225
+ function bl(b,c){ob(b.a,c);return b}
226
+ function cl(b,c){pb(b.a,c);return b}
227
+ function cj(b){sb(b.a,ho);ub(b.a,io)}
228
+ function aj(b){ub(b.a,ho);ub(b.a,io)}
229
+ function bj(b){ub(b.a,ho);sb(b.a,io)}
230
+ function O(b){lb();this.a=b;kb(this)}
231
+ function dj(){kj();this.a=$doc.body}
232
+ function Yk(){Yk=Hn;Vk={};Xk={}}
233
+ function mg(){if(!kg){rg();kg=true}}
234
+ function Df(b){zf=b;mg();b.setCapture()}
235
+ function qf(b){return Tm(b.d.b,b.b)}
236
+ function zl(c,b){return Ln+b in c.e}
237
+ function be(b,c){return b.cM&&b.cM[c]}
238
+ function om(b,c){(b<0||b>=c)&&rm(b,c)}
239
+ function db(b,c){b.b=fb(b.b,[c,false])}
240
+ function lk(b){!b.e.e&&(b.e.e=Jf(b))}
241
+ function Ul(b){return b.b=ce(ym(b.a),34)}
242
+ function Hd(b){this.d=new pn;this.c=b}
243
+ function ud(b,c){this.a=new Hd(c);this.b=b}
244
+ function ob(b,c){b[b.explicitLength++]=c}
245
+ function pb(b,c){b[b.explicitLength++]=c}
246
+ function Tm(b,c){om(c,b.b);return b.a[c]}
247
+ function bk(b,c,d){Zj(b,c,b.c);Zj(b,d,b.i)}
248
+ function Bh(b,c){Ch(b,c.d,c.b,c.c,c.e,c.a)}
249
+ function Ad(b,c,d){var e;e=Dd(b,c);e.fb(d)}
250
+ function V(b,c,d){return b.apply(c,d);var e}
251
+ function hi(b,c){b.W();b.w[fo]=c!=null?c:Jn}
252
+ function Ab(b,c){b.fireEvent('on'+c.type,c)}
253
+ function Se(b){b.parentNode.removeChild(b)}
254
+ function ef(){ef=Hn;df=new Xm;Zf(new Uf)}
255
+ function eh(){eh=Hn;ch=new ih;dh=new lh}
256
+ function Uc(){Uc=Hn;Tc=new Pc(On,new Wc)}
257
+ function _c(){_c=Hn;$c=new Pc(Pn,new ad)}
258
+ function fd(){fd=Hn;ed=new Pc(Qn,new gd)}
259
+ function Xm(){this.a=Vd(ne,{30:1},0,0,0)}
260
+ function td(b){this.a=new Hd(false);this.b=b}
261
+ function jg(){this.a=new Hd(false);this.b=null}
262
+ function Wi(b,c,d){this.a=b;this.c=c;this.b=d}
263
+ function Zi(b,c,d){this.a=b;this.c=c;this.b=d}
264
+ function Ue(b,c,d){this.b=b;this.c=c;this.a=d}
265
+ function Sm(b,c){Xd(b.a,b.b++,c);return true}
266
+ function yd(b,c){!b.a&&(b.a=new Xm);Sm(b.a,c)}
267
+ function pd(b){var c;if(md){c=new nd;sd(b,c)}}
268
+ function ag(){Xf&&pd((!Yf&&(Yf=new jg),Yf))}
269
+ function ci(){Th.call(this,(Sh(),$doc.body))}
270
+ function Ch(b,c,d,e,f,g){Ih(b.a,b,c,d,e,f,g)}
271
+ function Qk(c,b){return c.substr(b,c.length-b)}
272
+ function ee(b,c){return b!=null&&b.cM&&!!b.cM[c]}
273
+ function Zf(b){_f();return $f(md?md:(md=new Oc),b)}
274
+ function pc(){pc=Hn;mc=[];nc=[];oc=[];kc=new tc}
275
+ function $d(){$d=Hn;Yd=[];Zd=[];_d(new Sd,Yd,Zd)}
276
+ function xc(){xc=Hn;vc();wc=Vd(ie,{30:1},-1,30,1)}
277
+ function Ji(b){this.b=b;this.a=Vd(me,{30:1},15,4,0)}
278
+ function mk(b){if(b.e.e){Ti(b.e.e.a);b.e.e=null}}
279
+ function he(b){if(b!=null){throw new Ak}return null}
280
+ function fb(b,c){!b&&(b=[]);b[b.length]=c;return b}
281
+ function rn(b,c){var d;d=Al(b.a,c,b);return d==null}
282
+ function pl(b){var c;c=new Ol(b);return new Im(b,c)}
283
+ function Sh(){Sh=Hn;Ph=new Yh;Qh=new pn;Rh=new sn}
284
+ function Th(b){this.a=new Ji(this);this.w=b;Gg(this)}
285
+ function uh(){this.a=new Ji(this);this.w=zb($doc,Nn)}
286
+ function Uj(b){return tk(new uk(b.r.w),b.f.a,b.f.b)}
287
+ function te(b,c,d){return a=new Ee,a.l=b,a.m=c,a.h=d,a}
288
+ function tb(c,b){return c[b]==null?null:String(c[b])}
289
+ function qb(b,c){b[b.explicitLength++]=c==null?'null':c}
290
+ function Ui(b,c,d){this.a=b;this.d=c;this.c=null;this.b=d}
291
+ function ul(b){b.a=[];b.e={};b.c=false;b.b=null;b.d=0}
292
+ function $e(b){if(b.b.b!=0&&!b.e&&!b.c){b.e=true;gf(b.d,1)}}
293
+ function rc(){pc();if(!lc){lc=true;db((ab(),$),kc)}}
294
+ function _k(){if(Wk==256){Vk=Xk;Xk={};Wk=0}++Wk}
295
+ function dl(){var b;this.a=(b=[],b.explicitLength=0,b)}
296
+ function He(b){this.b=0;this.c=0;this.a=59;this.e=58;this.d=b}
297
+ function Uh(b){Sh();try{b.Q()}finally{El(Rh.a,b)!=null}}
298
+ function Vh(){Sh();try{gh(Rh,Ph)}finally{ul(Rh.a);ul(Qh)}}
299
+ function Xg(b,c,d){Jg(c);Ei(b.a,c);d.appendChild(c.w);Lg(c,b)}
300
+ function Pk(d,b,c){c=Sk(c);return d.replace(RegExp(b),c)}
301
+ function rm(b,c){throw new Ik('Index: '+b+', Size: '+c)}
302
+ function $f(b,c){return new Kd(zd((!Yf&&(Yf=new jg),Yf).a,b,c))}
303
+ function hf(b,c){return $wnd.setTimeout(In(function(){b.G()}),c)}
304
+ function fe(b){return b!=null&&b.tM!=Hn&&!(b.cM&&!!b.cM[1])}
305
+ function ak(b,c,d){hi(b.d,c!=null?c:Jn);hi(b.j,d!=null?d:Jn)}
306
+ function Cf(b){!!zf&&b==zf&&(zf=null);mg();b.releaseCapture()}
307
+ function Cl(b,c){var d;d=b.b;b.b=c;if(!b.c){b.c=true;++b.d}return d}
308
+ function Td(b,c){var d,e;d=b;e=Ud(0,c);Wd(d.aC,d.cM,d.qI,e);return e}
309
+ function Wd(b,c,d,e){$d();ae(e,Yd,Zd);e.aC=b;e.cM=c;e.qI=d;return e}
310
+ function W(){if(T++==0){bb((ab(),$));return true}return false}
311
+ function Fm(b){if(b.b<=0){throw new Fn}return b.a.pb(b.c=--b.b)}
312
+ function Mi(b){if(b.a>=b.b.c){throw new Fn}return b.b.a[++b.a]}
313
+ function zm(b){if(b.c<0){throw new Ek}b.d.sb(b.c);b.b=b.c;b.c=-1}
314
+ function tf(b){Vm(b.d.b,b.b);--b.a;b.b<=b.c&&--b.c<0&&(b.c=0);b.b=-1}
315
+ function Gl(b){var c;c=b.b;b.b=null;if(b.c){b.c=false;--b.d}return c}
316
+ function ce(b,c){if(b!=null&&!(b.cM&&b.cM[c])){throw new Ak}return b}
317
+ function re(b){if(b!=null&&b.cM&&!!b.cM[10]){return b}return new O(b)}
318
+ function ym(b){if(b.b>=b.d.jb()){throw new Fn}return b.d.pb(b.c=b.b++)}
319
+ function Hf(b){Gf();if(!b){throw new Lk('cmd cannot be null')}_e(Ff,b)}
320
+ function Ii(b,c){var d;d=Fi(b,c);if(d==-1){throw new Fn}Hi(b,d)}
321
+ function Mg(b,c){b.t==-1?Ef(b.w,c|(b.w.__eventBits||0)):(b.t|=c)}
322
+ function Vj(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(d,0)}
323
+ function Wj(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(0,d)}
324
+ function P(b,c){var d;return d=b,d.tM==Hn||d.cM&&!!d.cM[1]?d.eQ(c):d===c}
325
+ function ae(b,c,d){$d();for(var e=0,f=c.length;e<f;++e){b[c[e]]=d[e]}}
326
+ function Rj(b,c,d,e,f,g,h,i){Mj.call(this,b,c,d,e,f,g,h);this.a=i}
327
+ function ge(b){return ~~Math.max(Math.min(b,2147483647),-2147483648)}
328
+ function Cb(c){try{return c.getBoundingClientRect().top}catch(b){return 0}}
329
+ function Bb(c){try{return c.getBoundingClientRect().left}catch(b){return 0}}
330
+ function xb(b){var c=b.parentNode;(!c||c.nodeType!=1)&&(c=null);return c}
331
+ function sf(b){var c;b.b=b.c;c=Tm(b.d.b,b.c++);b.c>=b.a&&(b.c=0);return c}
332
+ function Vm(b,c){var d;d=(om(c,b.b),b.a[c]);b.a.splice(c,1);--b.b;return d}
333
+ function Fi(b,c){var d;for(d=0;d<b.c;++d){if(b.a[d]==c){return d}}return -1}
334
+ function Um(b,c,d){for(;d<b.b;++d){if(Gn(c,b.a[d])){return d}}return -1}
335
+ function gi(b){var c,d;d=tb(b.w,fo);c=d;if(Ok(Jn,d)){return null}return c}
336
+ function bg(){var b;if(Xf){b=new fg;!!Yf&&sd(Yf,b);return null}return null}
337
+ function Nf(b){b.e=false;b.f=null;b.a=false;b.b=false;b.c=true;b.d=null}
338
+ function _g(b){b.style[_n]=Jn;b.style['top']=Jn;b.style['position']=Jn}
339
+ function Fb(b){!b.gwt_uid&&(b.gwt_uid=1);return 'gwt-uid-'+b.gwt_uid++}
340
+ function Wm(b,c){var d;d=Um(b,c,0);if(d==-1){return false}Vm(b,d);return true}
341
+ function Dl(f,b,c){var d,e=f.e;b=Ln+b;b in e?(d=e[b]):++f.d;e[b]=c;return d}
342
+ function _d(b,c,d){var e=0,f;for(var g in b){if(f=b[g]){c[e]=g;d[e]=f;++e}}}
343
+ function Y(b,c,d){var e;e=W();try{return V(b,c,d)}finally{e&&cb((ab(),$));--T}}
344
+ function Gm(b,c){var d;this.a=b;this.d=b;d=b.jb();(c<0||c>d)&&rm(c,d);this.b=c}
345
+ function Pc(b,c){this.c=++Mc;this.a=c;!Gc&&(Gc=new kd);Gc.a[b]=this;this.b=b}
346
+ function yh(b){this.a=new Ji(this);this.w=zb($doc,Nn);this.w.innerHTML=b||Jn}
347
+ function de(b){if(b!=null&&(b.tM==Hn||b.cM&&!!b.cM[1])){throw new Ak}return b}
348
+ function Ok(b,c){if(!(c!=null&&c.cM&&!!c.cM[1])){return false}return String(b)==c}
349
+ function on(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
350
+ function Gn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
351
+ function Bj(b){b.j>1&&(b.j=1);b.i<0&&(b.i=0);b.i>1&&(b.i=1);b.i>b.j&&(b.j=b.i)}
352
+ function Lh(b){var c,d;c=(d=$doc.createEventObject(),d.type=Un,d);Ab(b.a.w,c)}
353
+ function Qe(b){var c,d;Re();c=xb(b);d=wb(b);Pe.appendChild(b);return new Ue(c,d,b)}
354
+ function Hl(e,b){var c,d=e.e;b=Ln+b;if(b in d){c=d[b];--e.d;delete d[b]}return c}
355
+ function wb(b){var c=b.nextSibling;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
356
+ function vb(b){var c=b.firstChild;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
357
+ function Vd(b,c,d,e,f){var g;g=Ud(f,e);$d();ae(g,Yd,Zd);g.aC=b;g.cM=c;g.qI=d;return g}
358
+ function Af(b,c,d){var e;e=yf;yf=b;c==zf&&lg(b.type)==8192&&(zf=null);d.L(b);yf=e}
359
+ function Zj(b,c,d){var e;e=c*(b.b>0?b.b:b.n.offsetWidth||0);d.style[_n]=e+(Tb(),eo)}
360
+ function $j(b){Cf(b.w);cj(b.a);Dg(b.q.w,lo,false);Dg(b.q.w,ko,true);Bh(b.p,(mj(),gj))}
361
+ function Yj(b){Df(b.w);bj(b.a);Dg(b.q.w,ko,false);Dg(b.q.w,lo,true);Bh(b.p,(mj(),gj))}
362
+ function bb(b){var c,d;if(b.a){d=null;do{c=b.a;b.a=null;d=gb(c,d)}while(b.a);b.a=d}}
363
+ function cb(b){var c,d;if(b.b){d=null;do{c=b.b;b.b=null;d=gb(c,d)}while(b.b);b.b=d}}
364
+ function vl(b,c){return c==null?b.c:c!=null&&c.cM&&!!c.cM[1]?zl(b,ce(c,1)):yl(b,c,~~Q(c))}
365
+ function El(b,c){return c==null?Gl(b):c!=null&&c.cM&&!!c.cM[1]?Hl(b,ce(c,1)):Fl(b,c,~~Q(c))}
366
+ function wl(b,c){return c==null?b.b:c!=null&&c.cM&&!!c.cM[1]?b.e[Ln+ce(c,1)]:xl(b,c,~~Q(c))}
367
+ function Q(b){var c;return c=b,c.tM==Hn||c.cM&&!!c.cM[1]?c.hC():c.$H||(c.$H=++U)}
368
+ function Wl(b){var c;this.c=b;c=new Xm;b.c&&Sm(c,new cm(b));tl(b,c);sl(b,c);this.a=new Am(c)}
369
+ function af(){this.a=new kf(this);this.b=new Xm;this.d=new nf(this);this.f=new uf(this)}
370
+ function Dh(b){Ah();this.a=new Jh(this,b.d,b.b,b.c,b.e,b.a);this.w[$n]='gwt-Image'}
371
+ function X(c){return function(){try{return Y(c,this,arguments)}catch(b){throw b}}}
372
+ function zg(b,c){var d=b.parentNode;if(!d){return}d.insertBefore(c,b);d.removeChild(b)}
373
+ function Eg(b,c,d){Mg(b,lg(d.b));return new Kd(zd((!b.u?(b.u=new td(b)):b.u).a,d,c))}
374
+ function Xj(b,c,d){var e,f,g;g=b.b>0?b.b:b.n.offsetWidth||0;e=c/g;f=(c+d*2)/g;b.g.X(e,f)}
375
+ function hl(b,c){var d;while(b.I()){d=b.J();if(c==null?d==null:P(c,d)){return b}}return null}
376
+ function Bf(b){var c;c=Qf(If,b);if(!c&&!!b){b.cancelBubble=true;b.returnValue=false}return c}
377
+ function Ye(b){var c;c=qf(b.f);tf(b.f);c!=null&&c.cM&&!!c.cM[11]&&new We(ce(c,11));b.c=false;$e(b)}
378
+ function Al(b,c,d){return c==null?Cl(b,d):c!=null&&c.cM&&!!c.cM[1]?Dl(b,ce(c,1),d):Bl(b,c,d,~~Q(c))}
379
+ function _j(b){mk(b.f);Cf(b.w);aj(b.a);Dg(b.q.w,ko,false);Dg(b.q.w,lo,false);Bh(b.p,(lj(),fj))}
380
+ function ff(b){b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);Wm(df,b)}
381
+ function Jf(b){mg();!Lf&&(Lf=new Oc);if(!If){If=new ud(null,true);Mf=new Of}return new Kd(zd(If.a,Lf,b))}
382
+ function ui(){ui=Hn;qi=new wi;ri=new yi;si=new Ai;ti=new Ci;Wd(le,{30:1},29,[qi,ri,si,ti])}
383
+ function Nd(b){N.call(this,b.jb()==0?null:ce(b.kb(Vd(pe,{22:1,30:1},10,0,0)),22)[0]);this.a=b}
384
+ function Re(){if(!Pe){Pe=zb($doc,Nn);Pe.style.display='none';(Sh(),$doc.body).appendChild(Pe)}}
385
+ function rb(b){var c,d;c=(d=b.join(Jn),b.length=b.explicitLength=0,d);b[b.explicitLength++]=c;return c}
386
+ function se(b){var c,d,e;c=b&4194303;d=b>>22&4194303;e=b<0?1048575:0;return a=new Ee,a.l=c,a.m=d,a.h=e,a}
387
+ function tl(f,b){var c=f.e;for(var d in c){if(d.charCodeAt(0)==58){var e=new hm(f,d.substring(1));b.fb(e)}}}
388
+ function Fd(b){var c,d;if(b.a){try{for(d=new Am(b.a);d.b<d.d.jb();){c=ce(ym(d),21);c.x()}}finally{b.a=null}}}
389
+ function Hi(b,c){var d;if(c<0||c>=b.c){throw new Hk}--b.c;for(d=c;d<b.c;++d){Xd(b.a,d,b.a[d+1])}Xd(b.a,b.c,null)}
390
+ function Vl(b){if(!b.b){throw new Fk('Must call next() before remove().')}else{zm(b.a);El(b.c,b.b.mb());b.b=null}}
391
+ function Eb(b){if(b.currentStyle.direction=='rtl'){return -(b.scrollLeft||0)}return b.scrollLeft||0}
392
+ function $k(b){Yk();var c=Ln+b;var d=Xk[c];if(d!=null){return d}d=Vk[c];d==null&&(d=Zk(b));_k();return Xk[c]=d}
393
+ function Yg(b,c){var d;if(c.v!=b){return false}try{Lg(c,null)}finally{d=c.w;xb(d).removeChild(d);Ii(b.a,c)}return true}
394
+ function yc(b,c,d){var e;e=$doc.styleSheets[b];d?(e.cssText+=c,undefined):(e.cssText=c+e.cssText,undefined);return e}
395
+ function Dd(b,c){var d,e;e=ce(wl(b.d,c),19);if(!e){e=new pn;Al(b.d,c,e)}d=ce(e.b,20);if(!d){d=new Xm;Cl(e,d)}return d}
396
+ function ck(b,c,d){var e;e=b.b>0?b.b:b.n.offsetWidth||0;b.k.style[_n]=c*e+(Tb(),eo);b.k.style[go]=(d-c)*e+eo}
397
+ function dk(b,c,d){var e,f;f=~~(b.p.a.e/2);e=c+(d-c)/2;b.p.w.style[_n]=e*(b.b>0?b.b:b.n.offsetWidth||0)-f+(Tb(),eo)}
398
+ function Cd(b,c,d){var e,f,g;e=Ed(b,c);f=e.ib(d);f&&e.hb()&&(g=ce(wl(b.d,c),19),ce(Gl(g),20),g.d==0&&El(b.d,c),undefined)}
399
+ function Ed(b,c){var d,e;e=ce(wl(b.d,c),19);if(!e){return gn(),gn(),fn}d=ce(e.b,20);if(!d){return gn(),gn(),fn}return d}
400
+ function Bc(b){var c;if($doc.styleSheets.length==0){return c=$doc.createStyleSheet(),c.cssText=b,c}return yc(0,b,false)}
401
+ function L(b){var c,d,e;d=Vd(oe,{30:1},33,b.length,0);for(e=0,c=b.length;e<c;++e){if(!b[e]){throw new Kk}d[e]=b[e]}}
402
+ function lb(){var b,c,d,e;d=jb(new mb);e=Vd(oe,{30:1},33,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Nk(d[b])}L(e)}
403
+ function jk(b){Eg(b.e,b,(Uc(),Uc(),Tc));Eg(b.e,b,(fd(),fd(),ed));Eg(b.e,b,(_c(),_c(),$c));Eg(b.e,new qk(b),ed)}
404
+ function Aj(b){var c,d;c=b.bb(b.i);d=b.bb(b.j);ak(b.k,c,d);bk(b.k,b.i,b.j);ck(b.k,b.i,b.j);dk(b.k,b.i,b.j);ek(b.k,b.i,b.j)}
405
+ function Kg(b,c){b.s&&(b.w.__listener=null,undefined);!!b.w&&zg(b.w,c);b.w=c;b.s&&(b.w.__listener=b,undefined)}
406
+ function Vc(b,c){c.a=b.a.clientX||0;c.b=b.a.clientY||0;c.c=tk(new uk(c.e.c),c.a,c.b);c.d=tk(new uk(c.e.i),c.a,c.b);c.e.g.Y()}
407
+ function Hc(b,c,d){var e,f,g;if(Gc){g=ce(Gc.a[b.type],3);if(g){e=g.a.a;f=g.a.b;g.a.a=b;g.a.b=d;Fg(c,g.a);g.a.a=e;g.a.b=f}}}
408
+ function oj(b,c,d,e,f,g,h,i,j){var k,l,m;k=Wh(b);if(k){m=new fk;m.b=i;l=new Rj(c,d,e,f,g,h,m,j);m.g=l;Xg(k,m,k.w)}}
409
+ function gwtOnLoad(c,d,e,f){$moduleName=d;$moduleBase=e;if(c)try{In(qe)()}catch(b){c(d)}else{In(qe)()}}
410
+ function oh(b,c){if(b.r){throw new Fk('Composite.initWidget() may only be called once.')}Jg(c);Ag(b,c.w);b.r=c;Lg(c,b)}
411
+ function sl(i,b){var c=i.a;for(var d in c){var e=parseInt(d,10);if(d==e){var f=c[e];for(var g=0,h=f.length;g<h;++g){b.fb(f[g])}}}}
412
+ function xl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return g.W()}}}return null}
413
+ function yl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return true}}}return false}
414
+ function Nl(b,c){var d,e,f;if(c!=null&&c.cM&&!!c.cM[34]){d=ce(c,34);e=d.mb();if(vl(b.a,e)){f=wl(b.a,e);return on(d.W(),f)}}return false}
415
+ function Cg(b){var c,d;c=b[$n]==null?null:String(b[$n]);d=c.indexOf(String.fromCharCode(32));if(d>=0){return c.substr(0,d-0)}return c}
416
+ function hb(b){var c,d,e;e=Jn;b=Rk(b);c=b.indexOf('(');if(c!=-1){d=b.indexOf(Kn)==0?8:0;e=Rk(b.substr(d,c-d))}return e.length>0?e:'anonymous'}
417
+ function tk(b,c,d){var e,f;f=b.b;e=b.a;if(f<0||e<0){return false}if(c<b.c||d<b.d){return false}f+=b.c;e+=b.d;return f>c&&e>d}
418
+ function Xd(b,c,d){if(d!=null){if(b.qI>0&&!be(d,b.qI)){throw new wk}if(b.qI<0&&(d.tM==Hn||d.cM&&!!d.cM[1])){throw new wk}}return b[c]=d}
419
+ function Ri(b,c,d,e,f,g){var h;h='url('+c+bo+-d+co+-e+eo;b.style['background']=h;b.style[go]=f+(Tb(),eo);b.style['height']=g+eo}
420
+ function Ce(){Ce=Hn;ze=(a=new Ee,a.l=4194303,a.m=4194303,a.h=524287,a);Ae=(a=new Ee,a.l=0,a.m=0,a.h=524288,a);we(1);we(2);Be=we(0)}
421
+ function Rk(d){if(d.length==0||d[0]>Mn&&d[d.length-1]>Mn){return d}var b=d.replace(/^(\s*)/,Jn);var c=b.replace(/\s*$/,Jn);return c}
422
+ function tg(){var b=false;for(var c=0;c<$wnd.__gwt_globalEventArray.length;c++){!$wnd.__gwt_globalEventArray[c]()&&(b=true)}return !b}
423
+ function kb(b){var c,d,e,f;e=(fe(b.a)?de(b.a):null,[]);f=Vd(oe,{30:1},33,e.length,0);for(c=0,d=f.length;c<d;++c){f[c]=new Nk(e[c])}L(f)}
424
+ function we(b){var c,d;if(b>-129&&b<128){c=b+128;ue==null&&(ue=Vd(ke,{30:1},26,256,0));d=ue[c];!d&&(d=ue[c]=se(b));return d}return se(b)}
425
+ function Ih(b,c,d,e,f,g,h){if(!Ok(b.d,d)||b.b!=e||b.c!=f||b.e!=g||b.a!=h){b.d=d;b.b=e;b.c=f;b.e=g;b.a=h;Ri(c.w,d,e,f,g,h);Hf(new Mh(c))}}
426
+ function Db(b,c){if(b.nodeType!=1&&b.nodeType!=9){return b==c}if(c.nodeType!=1){c=c.parentNode;if(!c){return false}}return b===c||b.contains(c)}
427
+ function oi(){var b;mi();ii.call(this,(b=$doc.createElement('INPUT'),b.type='text',b),(!Ne&&(Ne=new Oe),!Ke&&(Ke=new Le)));this.w[$n]='gwt-TextBox'}
428
+ function gb(c,d){var b,e,f,g;for(e=0,f=c.length;e<f;++e){g=c[e];try{g[1]?g[0].tb()&&(d=fb(d,g)):g[0].x()}catch(b){b=re(b);if(!ee(b,2))throw b}}return d}
429
+ function Sk(b){var c;c=0;while(0<=(c=b.indexOf('\\',c))){b.charCodeAt(c+1)==36?(b=b.substr(0,c-0)+'$'+Qk(b,++c)):(b=b.substr(0,c-0)+Qk(b,++c))}return b}
430
+ function Ac(b){var c,d,e;c=$doc.styleSheets.length;if(c==0){return d=$doc.createStyleSheet(),d.cssText=b,d}return e=$doc.styleSheets[c-1],e.cssText+=b,e}
431
+ function Hg(b,c){var d;switch(lg(c.type)){case 16:case 32:d=c.relatedTarget||(c.type==Pn?c.toElement:c.fromElement);if(!!d&&Db(b.w,d)){return}}Hc(c,b,b.w)}
432
+ function Tb(){Tb=Hn;Sb=new Vb;Qb=new Xb;Lb=new Zb;Mb=new _b;Rb=new bc;Pb=new dc;Nb=new fc;Kb=new hc;Ob=new jc;Wd(je,{30:1},23,[Sb,Qb,Lb,Mb,Rb,Pb,Nb,Kb,Ob])}
433
+ function Jg(b){if(!b.v){(Sh(),vl(Rh.a,b))&&Uh(b)}else if(ee(b.v,17)){ce(b.v,17).T(b)}else if(b.v){throw new Fk("This widget's parent does not implement HasWidgets")}}
434
+ function gf(b,c){if(c<=0){throw new Ck('must be positive')}b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);Wm(df,b);b.b=false;b.c=hf(b,c);Sm(df,b)}
435
+ function sd(c,d){var b,e,f;!d.e||d.B();f=d.f;d.f=c.b;try{Bd(c.a,d)}catch(b){b=re(b);if(ee(b,9)){e=b;throw new Od(e.a)}else throw b}finally{f==null?(d.e=true,d.f=null):(d.f=f)}}
436
+ function Qf(b,c){var d,e,f,g,h;if(!!Lf&&!!b&&vl(b.a.d,Lf)){d=Mf.a;e=Mf.b;f=Mf.c;g=Mf.d;Nf(Mf);Mf.d=c;sd(b,Mf);h=!(Mf.a&&!Mf.b);Mf.a=d;Mf.b=e;Mf.c=f;Mf.d=g;return h}return true}
437
+ function Ud(b,c){var d=new Array(c);if(b==3){for(var e=0;e<c;++e){var f=new Object;f.l=f.m=f.h=0;d[e]=f}}else if(b>0){var f=[null,0,false][b];for(var e=0;e<c;++e){d[e]=f}}return d}
438
+ function mj(){mj=Hn;gj=new He('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAJElEQVR42u3BMQEAAADCoPVPbQlPoAAAAAAAAAAAAAAAAAA4GTWzAAHmFYjpAAAAAElFTkSuQmCC')}
439
+ function Fl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){d.length==1?delete i.a[c]:d.splice(e,1);--i.d;return g.W()}}}return null}
440
+ function Bl(k,b,c,d){var e=k.a[d];if(e){for(var f=0,g=e.length;f<g;++f){var h=e[f];var i=h.mb();if(k.lb(b,i)){var j=h.W();h.nb(c);return j}}}else{e=k.a[d]=[]}var h=new An(b,c);e.push(h);++k.d;return null}
441
+ function Lg(b,c){var d;d=b.v;if(!c){try{!!d&&d.O()&&b.Q()}finally{b.v=null}}else{if(d){throw new Fk('Cannot set a new parent without first clearing the old parent')}b.v=c;c.O()&&b.P()}}
442
+ function Fe(b){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:b})}
443
+ function Ig(b){if(!b.O()){throw new Fk("Should only call onDetach when the widget is attached to the browser's document")}try{b.S()}finally{try{b.N()}finally{b.w.__listener=null;b.s=false}}}
444
+ function Gg(b){var c;if(b.O()){throw new Fk("Should only call onAttach when the widget is detached from the browser's document")}b.s=true;b.w.__listener=b;c=b.t;b.t=-1;c>0&&(b.t==-1?Ef(b.w,c|(b.w.__eventBits||0)):(b.t|=c));b.M();b.R()}
445
+ function gh(c,d){var i;eh();var b,e,f,g,h;e=null;for(h=c.U();h.I();){g=ce(h.J(),15);try{d.V(g)}catch(b){b=re(b);if(ee(b,10)){f=b;!e&&(e=new sn);i=Al(e.a,f,e)}else throw b}}if(e){throw new fh(e)}}
446
+ function Zk(b){var c,d,e,f;c=0;e=b.length;f=e-4;d=0;while(d<f){c=b.charCodeAt(d+3)+31*(b.charCodeAt(d+2)+31*(b.charCodeAt(d+1)+31*(b.charCodeAt(d)+31*c)))|0;d+=4}while(d<e){c=c*31+b.charCodeAt(d++)}return c|0}
447
+ function zd(b,c,d){var e;if(!c){throw new Lk('Cannot add a handler with a null type')}if(!d){throw new Lk('Cannot add a null handler')}b.b>0?yd(b,new Wi(b,c,d)):(e=Dd(b,c),e.fb(d),undefined);return new Ui(b,c,d)}
448
+ function Gi(b,c,d){var e,f;if(d<0||d>b.c){throw new Hk}if(b.c==b.a.length){f=Vd(me,{30:1},15,b.a.length*2,0);for(e=0;e<b.a.length;++e){Xd(f,e,b.a[e])}b.a=f}++b.c;for(e=b.c-1;e>d;--e){Xd(b.a,e,b.a[e-1])}Xd(b.a,d,c)}
449
+ function zb(b,c){var d,e;if(c.indexOf(Ln)!=-1){d=(!b.__gwt_container&&(b.__gwt_container=b.createElement(Nn)),b.__gwt_container);d.innerHTML='<'+c+'/>'||Jn;e=vb(d);d.removeChild(e);return e}return b.createElement(c)}
450
+ function Wh(b){Sh();var c,d;d=ce(wl(Qh,b),16);c=null;if(b!=null){if(!(c=$doc.getElementById(b))){return null}}if(d){if(!c||d.w==c){return d}}Qh.d==0&&Zf(new _h);!c?(d=new ci):(d=new Th(c));Al(Qh,b,d);rn(Rh,d);return d}
451
+ function Dg(b,c,d){if(!b){throw new M('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.')}c=Rk(c);if(c.length==0){throw new Ck('Style names cannot be empty')}d?sb(b,c):ub(b,c)}
452
+ function kk(b,c){var d,e,f,g,h,i;g=lg(c.d.type);if(g==4){c.d.returnValue=false}else if(g==64){f=c.d;h=f.clientX||0;i=f.clientY||0;d=h-b.a;e=b.b-i;b.a=h;b.b=i;b.c?Vj(b.e,d):b.d?Wj(b.e,d):Xj(b.e,d,e);c.d.returnValue=false}else g==8&&b.e.g._()}
453
+ function sb(b,c){var d,e,f,g;c=Rk(c);g=b.className;d=g.indexOf(c);while(d!=-1){if(d==0||g.charCodeAt(d-1)==32){e=d+c.length;f=g.length;if(e==f||e<f&&g.charCodeAt(e)==32){break}}d=g.indexOf(c,d+1)}if(d==-1){g.length>0&&(g+=Mn);b.className=g+c}}
454
+ function uk(b){var c,d;this.c=(c=b.ownerDocument,Bb(b)+Eb(Ok(c.compatMode,ro)?c.documentElement:c.body));this.d=(d=b.ownerDocument,Cb(b)+((Ok(d.compatMode,ro)?d.documentElement:d.body).scrollTop||0));this.b=b.clientWidth;this.a=b.clientHeight}
455
+ function jb(j){var b={};var c=[];var d=arguments.callee.caller.caller;while(d){var e=j.y(d.toString());c.push(e);var f=Ln+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h<i;h++){if(g[h]===d){return c}}}(g||(b[f]=[])).push(d);d=d.caller}return c}
456
+ function Lj(b,c){var d,e;e=b.d+b.b;b.f!=0&&!b.c?e-c<~~(b.f/2)?(d=e):c-b.d<~~(b.f/2)?(d=b.d):c==b.d?(d=ge(Math.floor(c))):c==e?(d=ge(Math.ceil(c))):(d=ye(xe(ve(Math.round(c/b.f)),we(b.f)))):(d=ye(ve(Math.round(c))));d<b.d&&(d=b.d);d>e&&(d=e);return d}
457
+ function qc(){pc();var b,c,d;d=null;if(oc.length!=0){b=oc.join(Jn);c=Bc((vc(),b));!oc&&(d=c);oc.length=0}if(mc.length!=0){b=mc.join(Jn);c=zc((vc(),b));!mc&&(d=c);mc.length=0}if(nc.length!=0){b=nc.join(Jn);c=Ac((vc(),b));!nc&&(d=c);nc.length=0}lc=false;return d}
458
+ function zc(b){var c,d,e,f,g,h;e=$doc.styleSheets.length;if(e<30){return h=$doc.createStyleSheet(),h.cssText=b,h}else{g=2147483647;f=-1;for(c=0;c<e;++c){d=wc[c];d==0&&(d=wc[c]=$doc.styleSheets[c].cssText.length);if(d<=g){g=d;f=c}}wc[f]+=b.length;return yc(f,b,true)}}
459
+ function Ze(b,c){var d,e,f;f=false;try{b.c=true;b.f.a=b.b.b;gf(b.a,10000);while(rf(b.f)){e=sf(b.f);try{if(e==null){return}if(e!=null&&e.cM&&!!e.cM[11]){d=ce(e,11);Lh(d)}}finally{f=b.f.b==-1;f||tf(b.f)}if((new Date).getTime()-c>=100){return}}}finally{if(!f){ff(b.a);b.c=false;$e(b)}}}
460
+ function ek(b,c,d){var e;e=new dl;qb(e.a,'border-width:');qb(e.a,'0px ');cl(e,b.b>0?b.b:b.n.offsetWidth||0);qb(e.a,co);pb(e.a,100);qb(e.a,'px 0px;');qb(e.a,'top:');ob(e.a,-100+(1-(d-c))*100);qb(e.a,mo);qb(e.a,'left:');bl(e,c*(b.b>0?b.b:b.n.offsetWidth||0));qb(e.a,mo);b.q.w.setAttribute('style',rb(e.a))}
461
+ function ub(b,c){var d,e,f,g,h,i,j;c=Rk(c);j=b.className;f=j.indexOf(c);while(f!=-1){if(f==0||j.charCodeAt(f-1)==32){g=f+c.length;h=j.length;if(g==h||g<h&&j.charCodeAt(g)==32){break}}f=j.indexOf(c,f+1)}if(f!=-1){d=Rk(j.substr(0,f-0));e=Rk(Qk(j,f+c.length));d.length==0?(i=e):e.length==0?(i=d):(i=d+Mn+e);b.className=i}}
462
+ function Bd(c,d){var b,e,f,g,h,i,j;if(!d){throw new Lk('Cannot fire null event')}try{++c.b;h=Ed(c,d.A());e=null;i=c.c?h.rb(h.jb()):h.qb();while(c.c?i.b>0:i.b<i.d.jb()){g=c.c?Fm(i):ym(i);try{d.z(ce(g,18))}catch(b){b=re(b);if(ee(b,10)){f=b;!e&&(e=new sn);j=Al(e.a,f,e)}else throw b}}if(e){throw new Nd(e)}}finally{--c.b;c.b==0&&Fd(c)}}
463
+ function Mj(b,c,d,e,f,g,h){var i,j,k;this.k=h;this.e=f;this.d=b;k=c-b;this.b=k==0?1:k;this.c=true;g==0?this.b>4000?(this.f=100):this.b>2000?(this.f=50):this.b>1000?(this.f=25):this.b>500?(this.f=10):this.b>100?(this.f=5):(this.f=0):(this.f=g);if(k!=0){i=(d-this.d)/this.b;j=(e-this.d)/this.b;this.i=i;this.j=j;Bj(this);Aj(this)}else{this.i=0;this.j=1;Bj(this);Aj(this)}}
464
+ function Jh(b,c,d,e,f,g){var h,i;this.b=d;this.c=e;this.e=f;this.a=g;this.d=c;Kg(b,(h=zb($doc,'span'),h.innerHTML=(i='width: '+f+'px; height: '+g+'px; background: url('+c+bo+-d+co+-e+eo,"<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='"+$moduleBase+"clear.cache.gif' style='"+i+"' border='0'>")||Jn,vb(h)));b.t==-1?Ef(b.w,133333119|(b.w.__eventBits||0)):(b.t|=133333119)}
465
+ function nj(b){var c;var d;var e;var f;var g;var h;var i;var j;var k;if(b){c=b['hostElementId'];d=b['leftBorder'];e=b['rightBorder'];f=b['currentLeft'];g=b['currentRight'];h=b['stepSize'];i=b['unit'];j=b['callback'];k=b[go]}!c&&(c=Jn);!d&&(d=0);!e&&(e=0);d>e&&(d=e);!f&&(f=d);!g&&(g=e);!h&&(h=0);i=i==null?jo:i.indexOf(jo)!=-1?i:'%n '+i;(!j||typeof j!=Kn)&&(j=null);!k&&(k=0);oj(c,d,e,f,g,i,h,k,j)}
466
+ function qe(){var b;!!$stats&&Fe('com.google.gwt.user.client.UserAgentAsserter');b=Wf();Ok(Rn,b)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie8) does not match the runtime user.agent value ('+b+'). Expect more errors.\n'),undefined);!!$stats&&Fe('de.factfinder.asn.slider.client.StandAloneOneTouchSlider');$wnd.oneTouchSlider={};$wnd.oneTouchSlider.addSlider=In(nj);$wnd.oneTouchSliderOnLoad&&typeof $wnd.oneTouchSliderOnLoad==Kn&&$wnd.oneTouchSliderOnLoad()}
467
+ function Wf(){var c=navigator.userAgent.toLowerCase();var d=function(b){return parseInt(b[1])*1000+parseInt(b[2])};if(function(){return c.indexOf(Sn)!=-1}())return Sn;if(function(){return c.indexOf('webkit')!=-1}())return 'safari';if(function(){return c.indexOf(Tn)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(Tn)!=-1&&$doc.documentMode>=8}())return Rn;if(function(){var b=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(b&&b.length==3)return d(b)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'}
468
+ function ve(b){var c,d,e,f,g,h,i,j;if(isNaN(b)){return Ce(),Be}if(b<-9223372036854775808){return Ce(),Ae}if(b>=9223372036854775807){return Ce(),ze}f=false;if(b<0){f=true;b=-b}e=0;if(b>=17592186044416){e=~~Math.max(Math.min(b/17592186044416,2147483647),-2147483648);b-=e*17592186044416}d=0;if(b>=4194304){d=~~Math.max(Math.min(b/4194304,2147483647),-2147483648);b-=d*4194304}c=~~Math.max(Math.min(b,2147483647),-2147483648);g=(a=new Ee,a.l=c,a.m=d,a.h=e,a);f&&(h=~g.l+1&4194303,i=~g.m+(h==0?1:0)&4194303,j=~g.h+(h==0&&i==0?1:0)&1048575,g.l=h,g.m=i,g.h=j,undefined);return g}
469
+ function xe(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;d=b.l&8191;e=b.l>>13|(b.m&15)<<9;f=b.m>>4&8191;g=b.m>>17|(b.h&255)<<5;h=(b.h&1048320)>>8;i=c.l&8191;j=c.l>>13|(c.m&15)<<9;k=c.m>>4&8191;l=c.m>>17|(c.h&255)<<5;m=(c.h&1048320)>>8;z=d*i;A=e*i;B=f*i;C=g*i;D=h*i;if(j!=0){A+=d*j;B+=e*j;C+=f*j;D+=g*j}if(k!=0){B+=d*k;C+=e*k;D+=f*k}if(l!=0){C+=d*l;D+=e*l}m!=0&&(D+=d*m);o=z&4194303;p=(A&511)<<13;n=o+p;r=z>>22;s=A>>9;t=(B&262143)<<4;u=(C&31)<<17;q=r+s+t+u;w=B>>18;x=C>>5;y=(D&4095)<<8;v=w+x+y;q+=n>>22;n&=4194303;v+=q>>22;q&=4194303;v&=1048575;return te(n,q,v)}
470
+ function sg(b,c){var d=(b.__eventBits||0)^c;b.__eventBits=c;if(!d)return;d&1&&(b.onclick=c&1?og:null);d&3&&(b.ondblclick=c&3?ng:null);d&4&&(b.onmousedown=c&4?og:null);d&8&&(b.onmouseup=c&8?og:null);d&16&&(b.onmouseover=c&16?og:null);d&32&&(b.onmouseout=c&32?og:null);d&64&&(b.onmousemove=c&64?og:null);d&128&&(b.onkeydown=c&128?og:null);d&256&&(b.onkeypress=c&256?og:null);d&512&&(b.onkeyup=c&512?og:null);d&1024&&(b.onchange=c&1024?og:null);d&2048&&(b.onfocus=c&2048?og:null);d&4096&&(b.onblur=c&4096?og:null);d&8192&&(b.onlosecapture=c&8192?og:null);d&16384&&(b.onscroll=c&16384?og:null);d&32768&&(b.nodeName=='IFRAME'?c&32768?b.attachEvent(Zn,pg):b.detachEvent(Zn,pg):(b.onload=c&32768?qg:null));d&65536&&(b.onerror=c&65536?og:null);d&131072&&(b.onmousewheel=c&131072?og:null);d&262144&&(b.oncontextmenu=c&262144?og:null);d&524288&&(b.onpaste=c&524288?og:null)}
471
+ function lg(b){switch(b){case 'blur':return 4096;case 'change':return 1024;case 'click':return 1;case 'dblclick':return 2;case 'focus':return 2048;case 'keydown':return 128;case 'keypress':return 256;case 'keyup':return 512;case Un:return 32768;case 'losecapture':return 8192;case On:return 4;case 'mousemove':return 64;case Pn:return 32;case Qn:return 16;case 'mouseup':return 8;case 'scroll':return 16384;case 'error':return 65536;case 'DOMMouseScroll':case 'mousewheel':return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case 'touchstart':return 1048576;case 'touchmove':return 2097152;case 'touchend':return 4194304;case 'touchcancel':return 8388608;case 'gesturestart':return 16777216;case 'gesturechange':return 33554432;case 'gestureend':return 67108864;case 'ended':return 134217728;case 'progress':return 268435456;case 'canplaythrough':return 536870912;default:return -1;}}
472
+ function _f(){var b,c;if(!Xf){b=(c=zb($doc,'script'),c.text='function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',c);$doc.body.appendChild(b);$wnd.__gwt_initWindowCloseHandler(In(bg),In(ag));$doc.body.removeChild(b);Xf=true}}
473
+ function ij(b){if(!b.a){b.a=true;pc();R(mc,'.GLR1MK0AG{display:block;}.GLR1MK0OG{font-family:verdana, sans-serif;font-size:8pt;text-align:center;}.GLR1MK0EG{background:#555;width:100%;height:17px;position:relative;text-align:left;-moz-border-radius:4px 4px 4px 4px;-webkit-border-radius:4px;font-size:1.1em;}.GLR1MK0DG{height:100%;top:0;background:#6683b4;background-position:0 0;border:0 none;display:block;font-size:0.7em;position:absolute;z-index:1;text-align:center;}.GLR1MK0HG{background:repeat-x scroll 50% 50% #f6f6f6;border:1px solid #7f7f7f;color:#fff;font-weight:bold;outline:medium none;margin-left:-0.6em;top:-0.3em;cursor:default;height:23px;position:absolute;width:1em;z-index:3;-moz-border-radius:4px;-webkit-border-radius:4px;font-family:Verdana, Arial, sans-serif;font-size:1.1em;text-align:left;text-decoration:none;}.GLR1MK0IG{border-color:transparent;border-style:solid;border-width:0 200px 100px 0;height:0;width:0;position:absolute;border-bottom-color:#ccd6e6;filter:alpha(opacity=0);z-index:2;}.GLR1MK0KG{filter:alpha(opacity=50);}.GLR1MK0JG{filter:alpha(opacity=70);}.GLR1MK0BG{cursor:pointer;}.GLR1MK0CG{cursor:none;}.GLR1MK0PF{cursor:default;}.GLR1MK0FG{margin:-21px auto;z-index:3;position:absolute;}.GLR1MK0GG{width:58px;margin:32px 0 0 -29px;}.GLR1MK0LG{background-color:#f1f1f1;border:1px solid #acacac;font-size:9px;height:20px;margin:0 0 10px;text-align:center;width:40px;}.GLR1MK0MG{float:left;}.GLR1MK0NG{float:right;}');rc();return true}return false}
474
+ function rg(){$wnd.__gwt_globalEventArray==null&&($wnd.__gwt_globalEventArray=new Array);$wnd.__gwt_globalEventArray[$wnd.__gwt_globalEventArray.length]=In(function(){return Bf($wnd.event)});var e=In(function(){var b=yb;yb=this;if($wnd.event.returnValue==null){$wnd.event.returnValue=true;if(!tg()){yb=b;return}}var c,d=this;while(d&&!(c=d.__listener)){d=d.parentElement}c&&!fe(c)&&c!=null&&c.cM&&!!c.cM[14]&&Af($wnd.event,d,c);yb=b});var f=In(function(){var b=$doc.createEventObject();$wnd.event.returnValue==null&&$wnd.event.srcElement.fireEvent&&$wnd.event.srcElement.fireEvent(Vn,b);if(this.__eventBits&2){e.call(this)}else if($wnd.event.returnValue==null){$wnd.event.returnValue=true;tg()}});var g=In(function(){this.__gwtLastUnhandledEvent=$wnd.event.type;e.call(this)});var h=$moduleName.replace(/\./g,'_');$wnd['__gwt_dispatchEvent_'+h]=e;og=(new Function(Wn,'return function() { w.__gwt_dispatchEvent_'+h+'.call(this) }'))($wnd);$wnd['__gwt_dispatchDblClickEvent_'+h]=f;ng=(new Function(Wn,'return function() { w.__gwt_dispatchDblClickEvent_'+h+Xn))($wnd);$wnd['__gwt_dispatchUnhandledEvent_'+h]=g;qg=(new Function(Wn,Yn+h+Xn))($wnd);pg=(new Function(Wn,Yn+h+'.call(w.event.srcElement)}'))($wnd);var i=In(function(){e.call($doc.body)});var j=In(function(){f.call($doc.body)});$doc.body.attachEvent(Vn,i);$doc.body.attachEvent('onmousedown',i);$doc.body.attachEvent('onmouseup',i);$doc.body.attachEvent('onmousemove',i);$doc.body.attachEvent('onmousewheel',i);$doc.body.attachEvent('onkeydown',i);$doc.body.attachEvent('onkeypress',i);$doc.body.attachEvent('onkeyup',i);$doc.body.attachEvent('onfocus',i);$doc.body.attachEvent('onblur',i);$doc.body.attachEvent('ondblclick',j);$doc.body.attachEvent('oncontextmenu',i)}
475
+ function fk(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;this.o=(kj(),ej);this.a=new dj;this.f=new nk(this);this.g=new qj;oh(this,(c=Fb($doc),q=new oi,e=Fb($doc),s=new oi,g=Fb($doc),h=Fb($doc),i=Fb($doc),j=Fb($doc),k=Fb($doc),w=new uh,m=Fb($doc),v=new Dh((lj(),fj)),o=new yh("<div class='GLR1MK0OG fact-finder-onetouchslider'> <span id='"+c+no+e+"'><\/span> <div style='clear: both !important;'><\/div> <div style='clear: both !important;'><\/div> <div class='GLR1MK0AG'> <div class='GLR1MK0EG fact-finder-onetouchslider-bar' id='"+g+"'> <div class='GLR1MK0DG fact-finder-onetouchslider-bar fact-finder-onetouchslider-bar-selected' id='"+h+"'><\/div> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-left' id='"+i+"'><\/span> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-right' id='"+j+no+k+no+m+"'><\/span> <\/div> <\/div> <\/div>"),q.w[$n]='GLR1MK0LG GLR1MK0MG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-left',q.w[oo]=true,Bg(q,Cg(q.w)+po),s.w[$n]='GLR1MK0LG GLR1MK0NG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-right',s.w[oo]=true,Bg(s,Cg(s.w)+po),w.w[$n]='GLR1MK0IG fact-finder-onetouchslider-triangle',v.w[$n]='GLR1MK0FG fact-finder-onetouchslider-grip',b=Qe(o.w),d=$doc.getElementById(c),f=$doc.getElementById(e),u=$doc.getElementById(g),u.removeAttribute(qo),t=$doc.getElementById(h),t.removeAttribute(qo),p=$doc.getElementById(i),p.removeAttribute(qo),r=$doc.getElementById(j),r.removeAttribute(qo),l=$doc.getElementById(k),n=$doc.getElementById(m),b.b?b.b.insertBefore(b.a,b.c):Se(b.a),Jg(q),Ei(o.a,q),d.parentNode.replaceChild(q.w,d),Lg(q,o),Jg(s),Ei(o.a,s),f.parentNode.replaceChild(s.w,f),Lg(s,o),Jg(w),Ei(o.a,w),l.parentNode.replaceChild(w.w,l),Lg(w,o),Jg(v),Ei(o.a,v),n.parentNode.replaceChild(v.w,n),Lg(v,o),this.c=p,this.d=q,this.i=r,this.j=s,this.k=t,this.n=u,this.p=v,this.q=w,o));ij(this.o);jk(this.f);this.g.ab()}
476
+ function lj(){lj=Hn;fj=new He('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADoBJREFUeNrUW3mQFcUZ7znewS67y7GwLKziLp7hFlEDFqcsRquSKjUqgkqMlRgllT9MoqaSlDGEktKUZzQiGhMVOTxKrQhUiCnLKwKLCHJI9mRvjuVY3u6bqztfHzOvXzPvWHalymd99szsTHf/+jv7+xqNEIK+zb/Kqgvyes88y5PS5PuG+v+dtVU2v0kg8NP68D75JhfBHGBwuYCq9yRHv2SgQJsDADAMjCY91/Lskkjk32uyHvYHsDlAALUMANVnuUDiENADAljvJ0hN9CGTIRYwjCISqX8zpNaQ+tLVxQuxBTl/Wr7uRXSuclGXOKYrwNW/q4ukiioWRJQWh3AYhbT9F10FZBgwTay+JnEhDGzYTwbiKQA98X3YImhK2z+gISD1LCLrt0ZxUZE2e/Ycc/r06WjSlEkoEomgC8+vQqbJh2xuadW6TyVIY0Ojtn/fPrJ54ybvQF2tKcDJID1poWTgfQKbVXTzAGnK4Oj95ZdNN25dsliff/WCWMeRxETb8cZ7GFMrEsMEVUAbZZ1pqB2m1gtti2no9SVF8W0nj7V3rFuznrz8j5ddCSwlV+GyzPW8xDgj0CwgDcXoMJBTJk6O3LJ4kXbV7Oryw8d6bnA9PEPXtTgAgY/gP+10yaVjM6IzxtxlxqLGxkFGYsu6NevQ6pdedAVIL4TCwPYNqGJds4Fk9PAfHjYXfO/7Q5o7Tt4MABfoGtI1XYf/IQZQ81t1+QVQipFOg2DMrxE5WFQQffVYZ23N2tdexxs3b3IEYBW0rLtZwWYDqkkuSFdFlNLYiorIz5YtM86fMHPWqR77bsASNyhKAZIi1AOgIc5TAMQ+YEzYNWuBQCJqxo8b8cTfX1qVePqZZ2Swbl/BngY0RGSNEJCReXPmRRctXqRHSioXgx5er+sclGHojHuAlbJVAEani64QWcSAUgJuYiRAYgbY8+g7pL1yzNDlH215r335n5ZTgI4gWX9JiBvKO2BQjU/AyfGXfMf866rnTCdW8Wvg5PUgrmxSHkzSdTGbKL/H7Bn2JPLvKShoXSzeo++zfnDQD+3XcbzyrxuPrJx8ZfXFDz7woBpg6JJbU9Ut7Wc89NBDuUTWUCIb875f3mce7Ir+OGm5c4kkgr508EYL9A/7eoiEaBK+KJ7PPUyChWIgGVgULBSAjh7rTk6fdunUz4riRm/NjppsAUSfQkAtxFcavuEpLJtUfSJhXevAqtt05YEc14MJEuQwThBxz7nic8t1FfJI8A7jHnzjsL7EteOx/tk4jle888ChB+/8yT3xK6ZfroaMei6u6hm2UZoisoyW3r7UPG/8VZWHuhJ3yROCSfBr1nppE04tAoagwUDDSwahGLSuB8/oc5fA9zhtgRwHB33ajsvA0vuk5Zy7+dO6ny5afKsh+fC8IjA9D5cSgH3gNw8Ye+sOLbMcz7RsD1k2TMKmq87Bssk5KmDOGepcCuMm2rrza9SbtFBRYSx4z/W/p30JkGlExxHPuxPWbFJYNY0uurIByA9oDrHVacdv/Wv35b29yUrbtmFQB1kwQQtWnIGmLUzEcvl9auJc/AoGRdAXu2vRoSPH0Z7aVhSPmczn8G89xjlLkL9wSXrNWtqXg+i4lm2hprauRTffelOuuDoNdDagaQaJdtzS0XUjHYgBtSzk0MEdf6ISueKZEDmIduBdC7V1HkHR+CCkGyZqbOlChQDeF33+Lhb9uaJPzLjpODAeG9di4/b09lTW7D8xZeGCajNkO5eTo1qmfSaNX7+q667q6emppAPZVhLx1goAc1GWyeWiDROmYvrl3joUicZRLBaHwD6KIExEEOMyzjJw4l0uCUJ8BQf9caykAJtMooOth66+/oc3IMW9ZMxqmBnyPmn7zOqFC7Xaxrbv0sFo1KPpBjKAdMNFBuxGDMNjXDIoYQgSdAJ/R6wtLx2Mjhw9hrpP9aLCwcXIjMRYH9T1NLYdg78Xo46jCcX3gsvxXOSBGnjQYjBclNg1c0ewMEk8bfyEGbFYNOpZtq3nymjoWZJXAdDZc2ehrmMnL7OAk0lYTdZavLXoSvsrblNymOglbe5uhhTF0Z79DbA4sGnRIyxQ8C1y18kkSvTaaMjgGHvf8nVR9OlTUozHx+wVz6zo2xs/nzhv7rxsVjcvHWUf032li+Pxnp5EhZXs5QMlfUqi4BkQF+kkcoQ4Dy+OoQN1zajXchHRTYiCwPiA3vniTQ1QQ2sXGjm0gHGPfW/zPuxkUvSZGs9mYyWDZx2Hj54/afIkLYSbp3HVzGKI2HVV5Tjto617ymEACGWp2Oo8aKfiS0XVA3KBzAhce/wZUElRAbgTHW3/ognF4oXIIzozODzkFdszYG8SxLCp9SgqLYmBKJ9CGAC7nsPF1nWYuPri61ERhvfpd7SPEyfJmFmXXoByhX/ZMgzBB+Xlo7TOziPDqbjwLZcAanA9ZQCpnsLETHYdYTo7dPRQtHPXfuYjY9CVBy0hVlrKCHtc3xpae9Hki8agGJiV44lkANCFNk1XhX4G2zvPG1ZWVobyyTTmTKUUFRWBIekpoNYOiQ20zgyRzg0STMB0OVga7ZhA5SOGIRdEsKmlDRUMLmHPQZaR5unpuxdmeLihOVDfhoYVF6DOw0c4UJcDlTlKQVKwPKamQN3CwsKCvHLHeSXHmB8LOKpx8QXOUnA6XW3TY+JrRjw2wdIhBWjbjl1i5THnDEyQSkKQEaPix4J7DrS1oxvCw7GoBFxRe+dJJqaua3OOCqsrc5NRJP+0dM43u7u70eBCvYeC5XtKiaswCV03mW5SsaWTrqwYjTo6O1HX8ePAzWLOTdtmIu9nG/ydDl0EIrhEubb3QCMaN3YUamxuSemn67sVrpv+d8ySaiiRSPTklfI0c2TOUXt7B7ni4plHXcdJKbDgKG2pPtJJ0FUv0Aeh0WVD0eYPPgLRjrDtl2s7TBcpUCTyR2zLzcDilPiCJPQkutGIIYXgW4eg+qaW08SWBGLLf9FIpKsTFjVXvijMvaj7O1LfUEfmzZrW7ro0FHM4sVjX5iItxJrqMNXNL3fvBRdgIwKso5zywzdHEHUfqWsr9TcQU7qY+2ob0TmjRzJgQfRl26mxBdH5mIbR3tzUnGn+OTkqb2jxye5uMqzETML1QdC1c7nmS7oKHPVAjGNwP3J4Mdq1Zy+KxAbRScAqEngTdJPQ+J2yML1KqFPLSf/uDwfLTnW8vrEFlQ0fimobGgPR5kYIB1lcOofSYSUHarZvJxmy+SQXR9V7XLN9B4pGza98S0jJoUS5anPOUqKrDGYQRUwDRZhVpnoEYDXMBJaB1niriTQPvdc1zHJLlExDA5E00KnEqaBf1jfr30n5WM/FN/5g/r5PPv0EZwFI0jhKq1NSvKvWPPBbb7xJLr5o5sefbd1+ra8iPLOnI6zDpIVV/Gp/LZpwURUqKR4c+Fsk0pyamgqUcrqykaEhYF1jM2oCg0T79PWYWWmUGrugoLAGuScSIHE4Q40mo+iSDGU8vHX7Nm/FyhVf/3dbTTNYw3PkuMKPlJjjbzoIE2wVgT+Pnng0FZLA9o2R8Kc0C0hEAOET8QMELM+dL1jF6PItb7/5NpKS2VnzR7l01AfrbVi7wRw1atQ7TU1Ny5DEVo1OxgcLE6URk7/D0TRP6DKPqE7P62IGghChgwEwnPbMdyd8SJ3WcZofX/GLHZdOnepKxSl8psYorZr1/Aur3B07vvjwmhvuuQ4sbSUD64sloRzlYDSYKAMq3E/Kf6pRmuT4CQ4F5wcVRN6KgE5fMu7CV55/9jm1PEGylBhDdy8kpEbJOnzqiSe9KZMmrIaJYBFrcmfv8ujFE3Gp64j4lLoBYUgCg5LhnhkaJxXXpqIhzHVV6Gk8Pmjbj26Zu50uvFJ4yspRXTkFosq4XNHyaJVr9vTz9o8cWfaqH3P6pt8TuwsfMLfOfAfiSrFrQI7/3N+pUHBOWj8pt8LHgV1R++/vv/epDWvXE6UsQfIGGuZWQrjqrlz5iHvv0mveATfyIU9QC0MiJoWlLRUH7J4OUgLo+hx0fS66KX31++Zq0nPdwvkr9u78OCGKTmo5kWSrv+ghZ3vUl2VdcMGcO6+/tsZ79YWVf4nF4rtTFTEc7C5Yq+wjUyKZEk0vSJF40rfiex8gCxA0e/LEiY+NLTNbpWKTXGDCucJAPc/jMFhaQe/zbVudVc8+5az925//WFIy5H35zUCcmdsgqYmLXQqWdiLBtktU0YJYVuoPrPjh6vlz76+eecFOUWRSK2leLm7mUzZUM/a6XBelxabb7rjdWP36f65ta29bCn0N6Em0WCy27+47lzxqnWg6/viTT/iVtIEpG+ZRCDbUOimtx9S3WeX/3PzvmyF0m4X6c5CSlR6NwxUV56x75Hd3fbDmldfI+jc2yDqpGiHvjAvBZ1DaN2dcOSOy+LbF2ntbdlVt27Hzxt7enqnQdTSf4z1+1ASBQFtpaemm5x//7ab3333LFVwMK+1jhc6stJ/nYQ0jrEg8b848Y8kdS7SSYWNiyx9bPamltfUK27LPA0tbCvpYLPcfjcbqIbhIFBUXf1k9Z+Ynt900t3Pd2vXoxRdX01ytd1YOa5zB8Ru5umXEolG9unqhUb2wGlWNq0IVY8pRcVERevTp9SN+9fObDtPO9u4/QFME6LOPP0Xvvfsurm2ox4rvVgMCL8NxupxZhrxOjuVxoCoTyX9nv7EVFVpTS4s6QfWkWCYiIYYnr1TKQB2RC6to6TmSyiQEbKYjcihDUJD3Ebm8Dz1KwUTY5DzlxIh8qMK/thVyFFINjyuB88I42ZdTnn3ye9IGXT6WRhSOkRARV5PjJMfWMGvG4EyOsfbZwfuDSIf2VcBq5hxnKGSRPA4m9xtgv09ghwAOyz1lO4aOMuV3BhJgv4GqgLOARn0wGiSs34H4DWhsGjI5EhJW5vrmG/mdtX/3cjb/jUu/3Mu3/fd/AQYAFnxtwIzfP80AAAAASUVORK5CYII=')}
477
+ var Jn='',Mn=' ',jo='%n',no="'><\/span> <span id='",bo=') no-repeat ',po='-readonly',Xn='.call(this)}',Ln=':',ro='CSS1Compat',ho='GLR1MK0BG',io='GLR1MK0CG',lo='GLR1MK0JG',ko='GLR1MK0KG',ao='__gwtLastUnhandledEvent',$n='className',Nn='div',Kn='function',qo='id',Rn='ie8',_n='left',Un='load',On='mousedown',Pn='mouseout',Qn='mouseover',Tn='msie',Vn='onclick',Zn='onload',Sn='opera',eo='px',co='px ',mo='px;',oo='readOnly',Yn='return function() { w.__gwt_dispatchUnhandledEvent_',fo='value',Wn='w',go='width';var _;_=E.prototype={};_.eQ=function F(b){return this===b};_.hC=function G(){return this.$H||(this.$H=++U)};_.tM=Hn;_.cM={};_=K.prototype=new E;_.cM={10:1,30:1};_=J.prototype=new K;_.cM={10:1,30:1};_=M.prototype=I.prototype=new J;_.cM={2:1,10:1,30:1};_=O.prototype=H.prototype=new I;_.cM={2:1,10:1,30:1};_.a=null;_=S.prototype=new E;_.cM={};var T=0,U=0;_=eb.prototype=Z.prototype=new S;_.cM={};_.a=null;_.b=null;var $;_=mb.prototype=ib.prototype=new E;_.y=function nb(b){return hb(b)};_.cM={};var yb=null;_=Hb.prototype=new E;_.eQ=function Ib(b){return this===b};_.hC=function Jb(){return this.$H||(this.$H=++U)};_.cM={30:1,31:1,32:1};_=Gb.prototype=new Hb;_.cM={23:1,30:1,31:1,32:1};var Kb,Lb,Mb,Nb,Ob,Pb,Qb,Rb,Sb;_=Vb.prototype=Ub.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=Xb.prototype=Wb.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=Zb.prototype=Yb.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=_b.prototype=$b.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=bc.prototype=ac.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=dc.prototype=cc.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=fc.prototype=ec.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=hc.prototype=gc.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};_=jc.prototype=ic.prototype=new Gb;_.cM={23:1,30:1,31:1,32:1};var kc,lc=false,mc,nc,oc;_=tc.prototype=sc.prototype=new E;_.x=function uc(){(pc(),lc)&&qc()};_.cM={};var wc;_=Ec.prototype=new E;_.cM={};_.f=null;_=Dc.prototype=new Ec;_.B=function Fc(){this.e=false;this.f=null};_.cM={};_.e=false;_=Cc.prototype=new Dc;_.A=function Ic(){return this.C()};_.cM={};_.a=null;_.b=null;var Gc=null;_=Lc.prototype=new E;_.hC=function Nc(){return this.c};_.cM={};_.c=0;var Mc=0;_=Oc.prototype=Kc.prototype=new Lc;_.cM={};_=Pc.prototype=Jc.prototype=new Kc;_.cM={3:1};_.a=null;_.b=null;_=Qc.prototype=new Cc;_.cM={};_=Sc.prototype=new Qc;_.cM={};_=Wc.prototype=Rc.prototype=new Sc;_.z=function Xc(b){Vc(this,ce(b,4))};_.C=function Yc(){return Tc};_.cM={};var Tc;_=ad.prototype=Zc.prototype=new Sc;_.z=function bd(b){ce(ce(b,5),6).e.g.Z()};_.C=function cd(){return $c};_.cM={};var $c;_=gd.prototype=dd.prototype=new Sc;_.z=function hd(b){ce(b,7).D(this)};_.C=function id(){return ed};_.cM={};var ed;_=kd.prototype=jd.prototype=new E;_.cM={};_.a=null;_=nd.prototype=ld.prototype=new Dc;_.z=function od(b){ce(b,8).E(this)};_.A=function qd(){return md};_.cM={};var md=null;_=ud.prototype=td.prototype=rd.prototype=new E;_.cM={25:1};_.a=null;_.b=null;_=xd.prototype=new E;_.cM={};_=wd.prototype=new xd;_.F=function Gd(b,c,d){this.b>0?yd(this,new Zi(this,b,d)):Cd(this,b,d)};_.cM={};_.a=null;_.b=0;_.c=false;_=Hd.prototype=vd.prototype=new wd;_.F=function Id(b,c,d){this.b>0?yd(this,new Zi(this,b,d)):Cd(this,b,d)};_.cM={};_=Kd.prototype=Jd.prototype=new E;_.cM={};_.a=null;_=Nd.prototype=Md.prototype=new I;_.cM={2:1,9:1,10:1,30:1};_.a=null;_=Od.prototype=Ld.prototype=new Md;_.cM={2:1,9:1,10:1,30:1};_=Qd.prototype=Pd.prototype=new E;_.cM={18:1};_=Sd.prototype=Rd.prototype=new E;_.cM={};_.aC=null;_.qI=0;var Yd,Zd;var ue=null;var ze,Ae,Be;_=Ee.prototype=De.prototype=new E;_.cM={26:1};_=He.prototype=Ge.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=Ie.prototype=new E;_.cM={};_=Le.prototype=Je.prototype=new E;_.cM={};var Ke=null;_=Oe.prototype=Me.prototype=new Ie;_.cM={};var Ne=null;var Pe=null;_=Ue.prototype=Te.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_=We.prototype=Ve.prototype=new I;_.cM={2:1,10:1,30:1};_=af.prototype=Xe.prototype=new E;_.cM={};_.c=false;_.e=false;_=cf.prototype=new E;_.G=function jf(){this.b||Wm(df,this);this.H()};_.cM={13:1};_.b=false;_.c=0;var df;_=kf.prototype=bf.prototype=new cf;_.H=function lf(){if(!this.a.c){return}Ye(this.a)};_.cM={13:1};_.a=null;_=nf.prototype=mf.prototype=new cf;_.H=function of(){this.a.e=false;Ze(this.a,(new Date).getTime())};_.cM={13:1};_.a=null;_=uf.prototype=pf.prototype=new E;_.I=function vf(){return this.c<this.a};_.J=function wf(){return sf(this)};_.K=function xf(){tf(this)};_.cM={};_.a=0;_.b=-1;_.c=0;_.d=null;var yf=null,zf=null;var Ff;var If=null;_=Of.prototype=Kf.prototype=new Dc;_.z=function Pf(b){kk(ce(b,12),this);Mf.c=false};_.A=function Rf(){return Lf};_.B=function Sf(){Nf(this)};_.cM={};_.a=false;_.b=false;_.c=false;_.d=null;var Lf=null,Mf=null;_=Uf.prototype=Tf.prototype=new E;_.E=function Vf(b){while((ef(),df).b>0){ff(ce(Tm(df,0),13))}};_.cM={8:1,18:1};var Xf=false,Yf=null;_=fg.prototype=cg.prototype=new Dc;_.z=function gg(b){he(b);null.tb()};_.A=function hg(){return dg};_.cM={};var dg;_=jg.prototype=ig.prototype=new rd;_.cM={25:1};var kg=false;var ng=null,og=null,pg=null,qg=null;_=yg.prototype=new E;_.cM={28:1};_.w=null;_=xg.prototype=new yg;_.M=function Ng(){};_.N=function Og(){};_.O=function Pg(){return this.s};_.P=function Qg(){Gg(this)};_.L=function Rg(b){Hg(this,b)};_.Q=function Sg(){Ig(this)};_.R=function Tg(){};_.S=function Ug(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.s=false;_.t=0;_.u=null;_.v=null;_=wg.prototype=new xg;_.M=function Vg(){gh(this,(eh(),ch))};_.N=function Wg(){gh(this,(eh(),dh))};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=vg.prototype=new wg;_.U=function Zg(){return new Ni(this.a)};_.T=function $g(b){return Yg(this,b)};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=ug.prototype=new vg;_.T=function ah(b){var c;c=Yg(this,b);c&&_g(b.w);return c};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=fh.prototype=bh.prototype=new Ld;_.cM={2:1,9:1,10:1,30:1};var ch,dh;_=ih.prototype=hh.prototype=new E;_.V=function jh(b){b.P()};_.cM={};_=lh.prototype=kh.prototype=new E;_.V=function mh(b){b.Q()};_.cM={};_=nh.prototype=new xg;_.O=function ph(){if(this.r){return this.r.s}return false};_.P=function qh(){if(this.t!=-1){Mg(this.r,this.t);this.t=-1}Gg(this.r);this.w.__listener=this;this.R()};_.L=function rh(b){Hg(this,b);Hg(this.r,b)};_.Q=function sh(){try{this.S()}finally{Ig(this.r)}};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.r=null;_=uh.prototype=th.prototype=new vg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=vh.prototype=new xg;_.P=function wh(){var b;Gg(this);b=this.w.tabIndex;-1==b&&(this.w.tabIndex=0,undefined)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=yh.prototype=xh.prototype=new vg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Dh.prototype=zh.prototype=new xg;_.L=function Eh(b){lg(b.type)==32768&&!!this.a&&(this.w[ao]=Jn,undefined);Hg(this,b)};_.R=function Fh(){var b;b=tb(this.w,ao);Ok(Un,b)&&Hf(new Mh(this))};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.a=null;_=Hh.prototype=new E;_.cM={};_=Jh.prototype=Gh.prototype=new Hh;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=Mh.prototype=Kh.prototype=new E;_.x=function Nh(){Lh(this)};_.cM={11:1};_.a=null;_=Th.prototype=Oh.prototype=new ug;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};var Ph,Qh,Rh;_=Yh.prototype=Xh.prototype=new E;_.V=function Zh(b){b.O()&&b.Q()};_.cM={};_=_h.prototype=$h.prototype=new E;_.E=function ai(b){Vh()};_.cM={8:1,18:1};_=ci.prototype=bi.prototype=new Oh;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};_=fi.prototype=new vh;_.W=function ji(){return gi(this)};_.L=function ki(b){var c;c=lg(b.type);(c&896)!=0?Hg(this,b):Hg(this,b)};_.R=function li(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=ei.prototype=new fi;_.W=function ni(){var b;return b=gi(this),b==null?Jn:b};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=oi.prototype=di.prototype=new ei;_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=pi.prototype=new Hb;_.cM={29:1,30:1,31:1,32:1};var qi,ri,si,ti;_=wi.prototype=vi.prototype=new pi;_.cM={29:1,30:1,31:1,32:1};_=yi.prototype=xi.prototype=new pi;_.cM={29:1,30:1,31:1,32:1};_=Ai.prototype=zi.prototype=new pi;_.cM={29:1,30:1,31:1,32:1};_=Ci.prototype=Bi.prototype=new pi;_.cM={29:1,30:1,31:1,32:1};_=Ji.prototype=Di.prototype=new E;_.U=function Ki(){return new Ni(this)};_.cM={};_.a=null;_.b=null;_.c=0;_=Ni.prototype=Li.prototype=new E;_.I=function Oi(){return this.a<this.b.c-1};_.J=function Pi(){return Mi(this)};_.K=function Qi(){if(this.a<0||this.a>=this.b.c){throw new Ek}this.b.b.T(this.b.a[this.a--])};_.cM={};_.a=-1;_.b=null;_=Ui.prototype=Si.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_.d=null;_=Wi.prototype=Vi.prototype=new E;_.x=function Xi(){Ad(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=Zi.prototype=Yi.prototype=new E;_.x=function $i(){Cd(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=dj.prototype=_i.prototype=new E;_.cM={};_.a=null;var ej=null,fj=null,gj=null;_=jj.prototype=hj.prototype=new E;_.cM={};_.a=false;_=qj.prototype=pj.prototype=new E;_.X=function rj(b,c){};_.Y=function sj(){};_.Z=function tj(){};_.$=function uj(){};_._=function vj(){};_.ab=function wj(){};_.cM={};_=zj.prototype=new E;_.bb=function Cj(b){return Jn+b};_.X=function Dj(b,c){if(this.g){this.i+=b;this.j+=c;Bj(this);this.cb(b,c);Aj(this)}};_.cb=function Ej(b,c){};_.Y=function Fj(){this.g=true;Yj(this.k)};_.Z=function Gj(){if(!this.g){_j(this.k);this.g=false}};_.$=function Hj(){this.g||$j(this.k)};_._=function Ij(){this.g=false;Uj(this.k)?$j(this.k):_j(this.k);this.db(this.i,this.j)};_.db=function Jj(b,c){};_.ab=function Kj(){Aj(this)};_.cM={};_.g=false;_.i=0;_.j=1;_.k=null;_=yj.prototype=new zj;_.bb=function Nj(b){var c,d;c=b*this.b+this.d;d=Lj(this,c);return this.e!=null&&!!this.e.length?Pk(this.e,jo,Jn+d):Jn+d};_.cb=function Oj(b,c){this.c=false};_.eb=function Pj(b,c){};_.db=function Qj(b,c){var d,e;d=Lj(this,b*this.b+this.d);e=Lj(this,c*this.b+this.d);this.eb(d,e)};_.cM={};_.b=0;_.c=false;_.d=0;_.e=null;_.f=0;_=Rj.prototype=xj.prototype=new yj;_.eb=function Sj(b,c){var d=this.a;d&&typeof d==Kn&&d(b,c)};_.cM={};_.a=null;_=fk.prototype=Tj.prototype=new nh;_.R=function gk(){this.g.ab()};_.S=function hk(){mk(this.f)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.b=0;_.c=null;_.d=null;_.e=null;_.i=null;_.j=null;_.k=null;_.n=null;_.p=null;_.q=null;_=nk.prototype=ik.prototype=new E;_.D=function ok(b){this.e.g.$()};_.cM={4:1,5:1,6:1,7:1,12:1,18:1};_.a=0;_.b=0;_.c=false;_.d=false;_.e=null;_=qk.prototype=pk.prototype=new E;_.D=function rk(b){lk(this.a)};_.cM={7:1,18:1};_.a=null;_=uk.prototype=sk.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=0;_=wk.prototype=vk.prototype=new I;_.cM={2:1,10:1,30:1};_=yk.prototype=xk.prototype=new E;_.cM={};_=Ak.prototype=zk.prototype=new I;_.cM={2:1,10:1,30:1};_=Ck.prototype=Bk.prototype=new I;_.cM={2:1,10:1,30:1};_=Fk.prototype=Ek.prototype=Dk.prototype=new I;_.cM={2:1,10:1,30:1};_=Ik.prototype=Hk.prototype=Gk.prototype=new I;_.cM={2:1,10:1,30:1};_=Lk.prototype=Kk.prototype=Jk.prototype=new I;_.cM={2:1,10:1,30:1};_=Nk.prototype=Mk.prototype=new E;_.cM={30:1,33:1};_=String.prototype;_.eQ=function Tk(b){return Ok(this,b)};_.hC=function Uk(){return $k(this)};_.cM={1:1,30:1,31:1};var Vk,Wk=0,Xk;_=dl.prototype=al.prototype=new E;_.cM={};_=fl.prototype=el.prototype=new I;_.cM={2:1,10:1,30:1};_=gl.prototype=new E;_.fb=function il(b){throw new fl('Add not supported on this collection')};_.gb=function jl(b){var c;c=hl(this.U(),b);return !!c};_.hb=function kl(){return this.jb()==0};_.ib=function ll(b){var c;c=hl(this.U(),b);if(c){c.K();return true}else{return false}};_.kb=function ml(b){var c,d,e;e=this.jb();b.length<e&&(b=Td(b,e));d=this.U();for(c=0;c<e;++c){Xd(b,c,d.J())}b.length>e&&Xd(b,e,null);return b};_.cM={};_=ol.prototype=new E;_.eQ=function ql(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[19])){return false}f=ce(b,19);if(this.d!=f.d){return false}for(d=new Wl((new Ol(f)).a);xm(d.a);){c=d.b=ce(ym(d.a),34);e=c.mb();g=c.W();if(!(e==null?this.c:e!=null&&e.cM&&!!e.cM[1]?Ln+ce(e,1) in this.e:yl(this,e,~~Q(e)))){return false}if(!Gn(g,e==null?this.b:e!=null&&e.cM&&!!e.cM[1]?this.e[Ln+ce(e,1)]:xl(this,e,~~Q(e)))){return false}}return true};_.hC=function rl(){var b,c,d;d=0;for(c=new Wl((new Ol(this)).a);xm(c.a);){b=c.b=ce(ym(c.a),34);d+=b.hC();d=~~d}return d};_.cM={19:1};_=nl.prototype=new ol;_.lb=function Il(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)};_.cM={19:1};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;_=Kl.prototype=new gl;_.eQ=function Ll(b){var c,d,e;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[35])){return false}d=ce(b,35);if(d.jb()!=this.jb()){return false}for(c=d.U();c.I();){e=c.J();if(!this.gb(e)){return false}}return true};_.hC=function Ml(){var b,c,d;b=0;for(c=this.U();c.I();){d=c.J();if(d!=null){b+=Q(d);b=~~b}}return b};_.cM={35:1};_=Ol.prototype=Jl.prototype=new Kl;_.gb=function Pl(b){return Nl(this,b)};_.U=function Ql(){return new Wl(this.a)};_.ib=function Rl(b){var c;if(Nl(this,b)){c=ce(b,34).mb();El(this.a,c);return true}return false};_.jb=function Sl(){return this.a.d};_.cM={35:1};_.a=null;_=Wl.prototype=Tl.prototype=new E;_.I=function Xl(){return xm(this.a)};_.J=function Yl(){return this.b=ce(ym(this.a),34)};_.K=function Zl(){Vl(this)};_.cM={};_.a=null;_.b=null;_.c=null;_=_l.prototype=new E;_.eQ=function am(b){var c;if(b!=null&&b.cM&&!!b.cM[34]){c=ce(b,34);if(Gn(this.mb(),c.mb())&&Gn(this.W(),c.W())){return true}}return false};_.hC=function bm(){var b,c;b=0;c=0;this.mb()!=null&&(b=Q(this.mb()));this.W()!=null&&(c=Q(this.W()));return b^c};_.cM={34:1};_=cm.prototype=$l.prototype=new _l;_.mb=function dm(){return null};_.W=function em(){return this.a.b};_.nb=function fm(b){return Cl(this.a,b)};_.cM={34:1};_.a=null;_=hm.prototype=gm.prototype=new _l;_.mb=function im(){return this.a};_.W=function jm(){return this.b.e[Ln+this.a]};_.nb=function km(b){return Dl(this.b,this.a,b)};_.cM={34:1};_.a=null;_.b=null;_=lm.prototype=new gl;_.fb=function mm(b){this.ob(this.jb(),b);return true};_.ob=function nm(b,c){throw new fl('Add not supported on this list')};_.eQ=function pm(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[20])){return false}g=ce(b,20);if(this.jb()!=g.jb()){return false}e=new Am(this);f=g.U();while(e.b<e.d.jb()){c=ym(e);d=ym(f);if(!(c==null?d==null:P(c,d))){return false}}return true};_.hC=function qm(){var b,c,d;c=1;b=new Am(this);while(b.b<b.d.jb()){d=ym(b);c=31*c+(d==null?0:Q(d));c=~~c}return c};_.U=function sm(){return new Am(this)};_.qb=function tm(){return new Gm(this,0)};_.rb=function um(b){return new Gm(this,b)};_.sb=function vm(b){throw new fl('Remove not supported on this list')};_.cM={20:1};_=Am.prototype=wm.prototype=new E;_.I=function Bm(){return this.b<this.d.jb()};_.J=function Cm(){return ym(this)};_.K=function Dm(){zm(this)};_.cM={};_.b=0;_.c=-1;_.d=null;_=Gm.prototype=Em.prototype=new wm;_.cM={};_.a=null;_=Im.prototype=Hm.prototype=new Kl;_.gb=function Jm(b){return vl(this.a,b)};_.U=function Km(){var b;return b=new Wl(this.b.a),new Nm(b)};_.jb=function Lm(){return this.b.a.d};_.cM={35:1};_.a=null;_.b=null;_=Nm.prototype=Mm.prototype=new E;_.I=function Om(){return xm(this.a.a)};_.J=function Pm(){var b;b=Ul(this.a);return b.mb()};_.K=function Qm(){Vl(this.a)};_.cM={};_.a=null;_=Xm.prototype=Rm.prototype=new lm;_.fb=function Ym(b){return Xd(this.a,this.b++,b),true};_.ob=function Zm(b,c){(b<0||b>this.b)&&rm(b,this.b);this.a.splice(b,0,c);++this.b};_.gb=function $m(b){return Um(this,b,0)!=-1};_.pb=function _m(b){return om(b,this.b),this.a[b]};_.hb=function an(){return this.b==0};_.sb=function bn(b){return Vm(this,b)};_.ib=function cn(b){return Wm(this,b)};_.jb=function dn(){return this.b};_.kb=function en(b){var c,d,e;b.length<this.b&&(b=(d=b,e=Ud(0,this.b),Wd(d.aC,d.cM,d.qI,e),e));for(c=0;c<this.b;++c){Xd(b,c,this.a[c])}b.length>this.b&&Xd(b,this.b,null);return b};_.cM={20:1,30:1};_.b=0;var fn;_=jn.prototype=hn.prototype=new lm;_.gb=function kn(b){return false};_.pb=function ln(b){throw new Hk};_.jb=function mn(){return 0};_.cM={20:1,30:1};_=pn.prototype=nn.prototype=new nl;_.cM={19:1,30:1};_=sn.prototype=qn.prototype=new Kl;_.fb=function tn(b){var c;return c=Al(this.a,b,this),c==null};_.gb=function un(b){return vl(this.a,b)};_.hb=function vn(){return this.a.d==0};_.U=function wn(){var b;return b=new Wl(pl(this.a).b.a),new Nm(b)};_.ib=function xn(b){return El(this.a,b)!=null};_.jb=function yn(){return this.a.d};_.cM={30:1,35:1};_.a=null;_=An.prototype=zn.prototype=new _l;_.mb=function Bn(){return this.a};_.W=function Cn(){return this.b};_.nb=function Dn(b){var c;c=this.b;this.b=b;return c};_.cM={34:1};_.a=null;_.b=null;_=Fn.prototype=En.prototype=new I;_.cM={2:1,10:1,30:1};var In=X;var ie=new yk,oe=new yk,je=new yk,ke=new yk,me=new yk,le=new yk,pe=new yk,ne=new yk;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (de_factfinder_asn_slider_OneTouchSlider && de_factfinder_asn_slider_OneTouchSlider.onScriptLoad)de_factfinder_asn_slider_OneTouchSlider.onScriptLoad(gwtOnLoad);})();
skin/frontend/base/default/js/factfinder_onetouchslider/25E490B929D7CDBF44085E4E4D9D6F78.cache.js ADDED
@@ -0,0 +1,476 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){var $gwt_version = "2.3.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '25E490B929D7CDBF44085E4E4D9D6F78';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function E(){}
2
+ function K(){}
3
+ function J(){}
4
+ function I(){}
5
+ function H(){}
6
+ function S(){}
7
+ function Z(){}
8
+ function Gn(){}
9
+ function eb(){}
10
+ function mb(){}
11
+ function ib(){}
12
+ function Fb(){}
13
+ function Eb(){}
14
+ function Tb(){}
15
+ function Sb(){}
16
+ function Vb(){}
17
+ function Ub(){}
18
+ function Xb(){}
19
+ function Wb(){}
20
+ function Zb(){}
21
+ function Yb(){}
22
+ function _b(){}
23
+ function $b(){}
24
+ function bc(){}
25
+ function ac(){}
26
+ function dc(){}
27
+ function cc(){}
28
+ function fc(){}
29
+ function ec(){}
30
+ function hc(){}
31
+ function gc(){}
32
+ function rc(){}
33
+ function qc(){}
34
+ function Cc(){}
35
+ function Bc(){}
36
+ function Ac(){}
37
+ function Jc(){}
38
+ function Ic(){}
39
+ function Hc(){}
40
+ function Oc(){}
41
+ function Qc(){}
42
+ function Uc(){}
43
+ function Pc(){}
44
+ function $c(){}
45
+ function Xc(){}
46
+ function ed(){}
47
+ function bd(){}
48
+ function hd(){}
49
+ function ld(){}
50
+ function jd(){}
51
+ function pd(){}
52
+ function vd(){}
53
+ function ud(){}
54
+ function td(){}
55
+ function Hd(){}
56
+ function Kd(){}
57
+ function Jd(){}
58
+ function Od(){}
59
+ function Nd(){}
60
+ function Qd(){}
61
+ function Pd(){}
62
+ function Ce(){}
63
+ function Be(){}
64
+ function Ee(){}
65
+ function Ge(){}
66
+ function Je(){}
67
+ function He(){}
68
+ function Me(){}
69
+ function Ke(){}
70
+ function Re(){}
71
+ function Te(){}
72
+ function Ve(){}
73
+ function _e(){}
74
+ function af(){}
75
+ function kf(){}
76
+ function nf(){}
77
+ function Mf(){}
78
+ function If(){}
79
+ function Sf(){}
80
+ function Rf(){}
81
+ function ag(){}
82
+ function gg(){}
83
+ function xg(){}
84
+ function wg(){}
85
+ function vg(){}
86
+ function ug(){}
87
+ function tg(){}
88
+ function ah(){}
89
+ function hh(){}
90
+ function gh(){}
91
+ function kh(){}
92
+ function jh(){}
93
+ function mh(){}
94
+ function sh(){}
95
+ function uh(){}
96
+ function wh(){}
97
+ function yh(){}
98
+ function Gh(){}
99
+ function Fh(){}
100
+ function Jh(){}
101
+ function Nh(){}
102
+ function Xh(){}
103
+ function Wh(){}
104
+ function $h(){}
105
+ function Zh(){}
106
+ function ai(){}
107
+ function ei(){}
108
+ function di(){}
109
+ function ci(){}
110
+ function oi(){}
111
+ function vi(){}
112
+ function ui(){}
113
+ function xi(){}
114
+ function wi(){}
115
+ function zi(){}
116
+ function yi(){}
117
+ function Bi(){}
118
+ function Ai(){}
119
+ function Ci(){}
120
+ function Ki(){}
121
+ function Ri(){}
122
+ function Ui(){}
123
+ function Xi(){}
124
+ function $i(){}
125
+ function ij(){}
126
+ function gj(){}
127
+ function pj(){}
128
+ function oj(){}
129
+ function yj(){}
130
+ function xj(){}
131
+ function wj(){}
132
+ function Sj(){}
133
+ function hk(){}
134
+ function ok(){}
135
+ function rk(){}
136
+ function uk(){}
137
+ function xk(){}
138
+ function wk(){}
139
+ function yk(){}
140
+ function Ak(){}
141
+ function Ck(){}
142
+ function Fk(){}
143
+ function Ik(){}
144
+ function Lk(){}
145
+ function _k(){}
146
+ function dl(){}
147
+ function fl(){}
148
+ function nl(){}
149
+ function ml(){}
150
+ function Jl(){}
151
+ function Il(){}
152
+ function Sl(){}
153
+ function $l(){}
154
+ function Zl(){}
155
+ function fm(){}
156
+ function km(){}
157
+ function vm(){}
158
+ function Dm(){}
159
+ function Gm(){}
160
+ function Lm(){}
161
+ function Qm(){}
162
+ function hn(){}
163
+ function gn(){}
164
+ function mn(){}
165
+ function pn(){}
166
+ function yn(){}
167
+ function Dn(){}
168
+ function Mk(b){}
169
+ function M(b){lb()}
170
+ function N(){lb()}
171
+ function Ue(){lb()}
172
+ function vk(){lb()}
173
+ function zk(){lb()}
174
+ function Dk(){lb()}
175
+ function Gk(){lb()}
176
+ function Jk(){lb()}
177
+ function En(){lb()}
178
+ function Ek(b){lb()}
179
+ function Bk(b){lb()}
180
+ function Hk(b){lb()}
181
+ function Kk(b){lb()}
182
+ function el(b){lb()}
183
+ function dg(){cg()}
184
+ function on(){tl(this)}
185
+ function id(){this.a={}}
186
+ function Id(b){this.a=b}
187
+ function Lh(b){this.a=b}
188
+ function pk(b){this.a=b}
189
+ function mk(b){this.e=b}
190
+ function sf(b){this.d=b}
191
+ function zm(b){this.d=b}
192
+ function bm(b){this.a=b}
193
+ function Mm(b){this.a=b}
194
+ function Mi(b){this.b=b}
195
+ function Nl(b){this.a=b}
196
+ function hf(b){cf();this.a=b}
197
+ function lf(b){cf();this.a=b}
198
+ function zg(b,c){b.w=c}
199
+ function Di(b,c){Fi(b,c,b.c)}
200
+ function Cf(b,c){kg();sg(b,c)}
201
+ function Bf(b){xf=b;kg();mg=b}
202
+ function tc(){tc=Gn;vc()}
203
+ function li(){li=Gn;ti()}
204
+ function zh(){zh=Gn;new on}
205
+ function rn(){this.a=new on}
206
+ function Mc(){this.c=++Kc}
207
+ function hi(b){this.w=b;new Od}
208
+ function ab(){ab=Gn;$=new eb}
209
+ function Ef(){Ef=Gn;Df=new $e}
210
+ function cg(){cg=Gn;bg=new Mc}
211
+ function jj(){jj=Gn;dj=new ij}
212
+ function fn(){fn=Gn;en=new hn}
213
+ function Xk(){Xk=Gn;Uk={};Wk={}}
214
+ function R(c,b){c[c.length]=b}
215
+ function Md(b){Ld.call(this,b)}
216
+ function eh(b){Ld.call(this,b)}
217
+ function Hm(b,c){this.a=b;this.b=c}
218
+ function zn(b,c){this.a=b;this.b=c}
219
+ function gm(b,c){this.b=b;this.a=c}
220
+ function Ag(b,c){Cg(b.w,c,true)}
221
+ function Ze(b,c){Rm(b.b,c);Ye(b)}
222
+ function al(b,c){ob(b.a,c);return b}
223
+ function bl(b,c){pb(b.a,c);return b}
224
+ function Eg(b,c){!!b.u&&qd(b.u,c)}
225
+ function Si(b){b.a.F(b.d,b.c,b.b)}
226
+ function of(b){return Sm(b.d.b,b.b)}
227
+ function pf(b){return b.c<b.a}
228
+ function we(b){return b.l|b.m<<22}
229
+ function wm(b){return b.b<b.d.jb()}
230
+ function _d(b,c){return b.cM&&b.cM[c]}
231
+ function yl(c,b){return Kn+b in c.e}
232
+ function Fd(b){this.d=new on;this.c=b}
233
+ function O(b){lb();this.a=b;kb(this)}
234
+ function cj(){jj();this.a=$doc.body}
235
+ function kg(){if(!ig){rg();ig=true}}
236
+ function _i(b){ub(b.a,qo);ub(b.a,ro)}
237
+ function aj(b){ub(b.a,qo);sb(b.a,ro)}
238
+ function bj(b){sb(b.a,qo);ub(b.a,ro)}
239
+ function kk(b){!b.e.e&&(b.e.e=Hf(b))}
240
+ function db(b,c){b.b=fb(b.b,[c,false])}
241
+ function nm(b,c){(b<0||b>=c)&&qm(b,c)}
242
+ function Sm(b,c){nm(c,b.b);return b.a[c]}
243
+ function ob(b,c){b[b.explicitLength++]=c}
244
+ function pb(b,c){b[b.explicitLength++]=c}
245
+ function sd(b,c){this.a=new Fd(c);this.b=b}
246
+ function Wm(){this.a=Td(le,{30:1},0,0,0)}
247
+ function dd(){dd=Gn;cd=new Nc(On,new ed)}
248
+ function Sc(){Sc=Gn;Rc=new Nc(Mn,new Uc)}
249
+ function Zc(){Zc=Gn;Yc=new Nc(Nn,new $c)}
250
+ function cf(){cf=Gn;bf=new Wm;Xf(new Sf)}
251
+ function dh(){dh=Gn;bh=new hh;ch=new kh}
252
+ function Tl(b){return b.b=ae(xm(b.a),34)}
253
+ function V(b,c,d){return b.apply(c,d);var e}
254
+ function ak(b,c,d){Yj(b,c,b.c);Yj(b,d,b.i)}
255
+ function Ah(b,c){Bh(b,c.d,c.b,c.c,c.e,c.a)}
256
+ function Bh(b,c,d,e,f,g){Hh(b.a,b,c,d,e,f,g)}
257
+ function yd(b,c,d){var e;e=Bd(b,c);e.fb(d)}
258
+ function wd(b,c){!b.a&&(b.a=new Wm);Rm(b.a,c)}
259
+ function nd(b){var c;if(kd){c=new ld;qd(b,c)}}
260
+ function Qe(b){b.parentNode.removeChild(b)}
261
+ function rd(b){this.a=new Fd(false);this.b=b}
262
+ function hg(){this.a=new Fd(false);this.b=null}
263
+ function Vi(b,c,d){this.a=b;this.c=c;this.b=d}
264
+ function Yi(b,c,d){this.a=b;this.c=c;this.b=d}
265
+ function Se(b,c,d){this.b=b;this.c=c;this.a=d}
266
+ function Rm(b,c){Vd(b.a,b.b++,c);return true}
267
+ function gi(b,c){b.W();b.w[oo]=c!=null?c:In}
268
+ function ce(b,c){return b!=null&&b.cM&&!!b.cM[c]}
269
+ function Pk(c,b){return c.substr(b,c.length-b)}
270
+ function Xf(b){Zf();return Yf(kd?kd:(kd=new Mc),b)}
271
+ function $f(){Vf&&nd((!Wf&&(Wf=new hg),Wf))}
272
+ function bi(){Sh.call(this,(Rh(),$doc.body))}
273
+ function Ii(b){this.b=b;this.a=Td(ke,{30:1},15,4,0)}
274
+ function vc(){vc=Gn;tc();uc=Td(ge,{30:1},-1,30,1)}
275
+ function nc(){nc=Gn;kc=[];lc=[];mc=[];ic=new rc}
276
+ function Yd(){Yd=Gn;Wd=[];Xd=[];Zd(new Qd,Wd,Xd)}
277
+ function Rh(){Rh=Gn;Oh=new Xh;Ph=new on;Qh=new rn}
278
+ function ol(b){var c;c=new Nl(b);return new Hm(b,c)}
279
+ function qn(b,c){var d;d=zl(b.a,c,b);return d==null}
280
+ function lk(b){if(b.e.e){Si(b.e.e.a);b.e.e=null}}
281
+ function fe(b){if(b!=null){throw new zk}return null}
282
+ function fb(b,c){!b&&(b=[]);b[b.length]=c;return b}
283
+ function qb(b,c){b[b.explicitLength++]=c==null?'null':c}
284
+ function tb(c,b){return c[b]==null?null:String(c[b])}
285
+ function lg(b){return !de(b)&&b!=null&&b.cM&&!!b.cM[14]}
286
+ function Tj(b){return sk(new tk(b.r.w),b.f.a,b.f.b)}
287
+ function re(b,c,d){return a=new Ce,a.l=b,a.m=c,a.h=d,a}
288
+ function Sh(b){this.a=new Ii(this);this.w=b;Fg(this)}
289
+ function Ti(b,c,d){this.a=b;this.d=c;this.c=null;this.b=d}
290
+ function tl(b){b.a=[];b.e={};b.c=false;b.b=null;b.d=0}
291
+ function Ye(b){if(b.b.b!=0&&!b.e&&!b.c){b.e=true;ef(b.d,1)}}
292
+ function pc(){nc();if(!jc){jc=true;db((ab(),$),ic)}}
293
+ function $k(){if(Vk==256){Uk=Wk;Wk={};Vk=0}++Vk}
294
+ function cl(){var b;this.a=(b=[],b.explicitLength=0,b)}
295
+ function Fe(b){this.b=0;this.c=0;this.a=59;this.e=58;this.d=b}
296
+ function Uh(){Rh();try{fh(Qh,Oh)}finally{tl(Qh.a);tl(Ph)}}
297
+ function Th(b){Rh();try{b.Q()}finally{Dl(Qh.a,b)!=null}}
298
+ function Af(b){!!xf&&b==xf&&(xf=null);kg();b===mg&&(mg=null)}
299
+ function _j(b,c,d){gi(b.d,c!=null?c:In);gi(b.j,d!=null?d:In)}
300
+ function Wg(b,c,d){Ig(c);Di(b.a,c);d.appendChild(c.w);Kg(c,b)}
301
+ function Ok(d,b,c){c=Rk(c);return d.replace(RegExp(b),c)}
302
+ function qm(b,c){throw new Hk('Index: '+b+', Size: '+c)}
303
+ function ym(b){if(b.c<0){throw new Dk}b.d.sb(b.c);b.b=b.c;b.c=-1}
304
+ function Em(b){if(b.b<=0){throw new En}return b.a.pb(b.c=--b.b)}
305
+ function Li(b){if(b.a>=b.b.c){throw new En}return b.b.a[++b.a]}
306
+ function W(){if(T++==0){bb((ab(),$));return true}return false}
307
+ function Bl(b,c){var d;d=b.b;b.b=c;if(!b.c){b.c=true;++b.d}return d}
308
+ function Rd(b,c){var d,e;d=b;e=Sd(0,c);Ud(d.aC,d.cM,d.qI,e);return e}
309
+ function Ud(b,c,d,e){Yd();$d(e,Wd,Xd);e.aC=b;e.cM=c;e.qI=d;return e}
310
+ function ae(b,c){if(b!=null&&!(b.cM&&b.cM[c])){throw new zk}return b}
311
+ function Hi(b,c){var d;d=Ei(b,c);if(d==-1){throw new En}Gi(b,d)}
312
+ function Yf(b,c){return new Id(xd((!Wf&&(Wf=new hg),Wf).a,b,c))}
313
+ function ff(b,c){return $wnd.setTimeout(Hn(function(){b.G()}),c)}
314
+ function de(b){return b!=null&&b.tM!=Gn&&!(b.cM&&!!b.cM[1])}
315
+ function rf(b){Um(b.d.b,b.b);--b.a;b.b<=b.c&&--b.c<0&&(b.c=0);b.b=-1}
316
+ function Fl(b){var c;c=b.b;b.b=null;if(b.c){b.c=false;--b.d}return c}
317
+ function pe(b){if(b!=null&&b.cM&&!!b.cM[10]){return b}return new O(b)}
318
+ function xm(b){if(b.b>=b.d.jb()){throw new En}return b.d.pb(b.c=b.b++)}
319
+ function Ff(b){Ef();if(!b){throw new Kk('cmd cannot be null')}Ze(Df,b)}
320
+ function th(){this.a=new Ii(this);this.w=$doc.createElement(Qn)}
321
+ function Lg(b,c){b.t==-1?Cf(b.w,c|(b.w.__eventBits||0)):(b.t|=c)}
322
+ function Db(b){!b.gwt_uid&&(b.gwt_uid=1);return 'gwt-uid-'+b.gwt_uid++}
323
+ function $g(b){b.style[jo]=In;b.style['top']=In;b.style['position']=In}
324
+ function Lf(b){b.e=false;b.f=null;b.a=false;b.b=false;b.c=true;b.d=null}
325
+ function qf(b){var c;b.b=b.c;c=Sm(b.d.b,b.c++);b.c>=b.a&&(b.c=0);return c}
326
+ function xb(b){var c=b.parentNode;(!c||c.nodeType!=1)&&(c=null);return c}
327
+ function fi(b){var c,d;d=tb(b.w,oo);c=d;if(Nk(In,d)){return null}return c}
328
+ function _f(){var b;if(Vf){b=new dg;!!Wf&&qd(Wf,b);return null}return null}
329
+ function Tm(b,c,d){for(;d<b.b;++d){if(Fn(c,b.a[d])){return d}}return -1}
330
+ function Um(b,c){var d;d=(nm(c,b.b),b.a[c]);b.a.splice(c,1);--b.b;return d}
331
+ function Uj(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(d,0)}
332
+ function Vj(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(0,d)}
333
+ function Cl(f,b,c){var d,e=f.e;b=Kn+b;b in e?(d=e[b]):++f.d;e[b]=c;return d}
334
+ function Zd(b,c,d){var e=0,f;for(var g in b){if(f=b[g]){c[e]=g;d[e]=f;++e}}}
335
+ function $d(b,c,d){Yd();for(var e=0,f=c.length;e<f;++e){b[c[e]]=d[e]}}
336
+ function Qj(b,c,d,e,f,g,h,i){Lj.call(this,b,c,d,e,f,g,h);this.a=i}
337
+ function ee(b){return ~~Math.max(Math.min(b,2147483647),-2147483648)}
338
+ function Cb(b){return b.tabIndex<65535?b.tabIndex:-(b.tabIndex%65535)-1}
339
+ function Ab(c){try{return c.getBoundingClientRect().top}catch(b){return 0}}
340
+ function zb(c){try{return c.getBoundingClientRect().left}catch(b){return 0}}
341
+ function P(b,c){var d;return d=b,d.tM==Gn||d.cM&&!!d.cM[1]?d.eQ(c):d===c}
342
+ function Q(b){var c;return c=b,c.tM==Gn||c.cM&&!!c.cM[1]?c.hC():c.$H||(c.$H=++U)}
343
+ function be(b){if(b!=null&&(b.tM==Gn||b.cM&&!!b.cM[1])){throw new zk}return b}
344
+ function Ei(b,c){var d;for(d=0;d<b.c;++d){if(b.a[d]==c){return d}}return -1}
345
+ function Vm(b,c){var d;d=Tm(b,c,0);if(d==-1){return false}Um(b,d);return true}
346
+ function Fm(b,c){var d;this.a=b;this.d=b;d=b.jb();(c<0||c>d)&&qm(c,d);this.b=c}
347
+ function Nc(b,c){this.c=++Kc;this.a=c;!Ec&&(Ec=new id);Ec.a[b]=this;this.b=b}
348
+ function nn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
349
+ function Fn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
350
+ function Aj(b){b.j>1&&(b.j=1);b.i<0&&(b.i=0);b.i>1&&(b.i=1);b.i>b.j&&(b.j=b.i)}
351
+ function yf(b,c,d){var e;e=wf;wf=b;c==xf&&jg(b.type)==8192&&(xf=null);d.L(b);wf=e}
352
+ function Y(b,c,d){var e;e=W();try{return V(b,c,d)}finally{e&&cb((ab(),$));--T}}
353
+ function X(c){return function(){try{return Y(c,this,arguments)}catch(b){throw b}}}
354
+ function vb(b){var c=b.firstChild;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
355
+ function wb(b){var c=b.nextSibling;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
356
+ function Bb(b){var c=b.offsetParent;if(c){return c.offsetWidth-c.clientWidth}return 0}
357
+ function Gl(e,b){var c,d=e.e;b=Kn+b;if(b in d){c=d[b];--e.d;delete d[b]}return c}
358
+ function Oe(b){var c,d;Pe();c=xb(b);d=wb(b);Ne.appendChild(b);return new Se(c,d,b)}
359
+ function bb(b){var c,d;if(b.a){d=null;do{c=b.a;b.a=null;d=gb(c,d)}while(b.a);b.a=d}}
360
+ function cb(b){var c,d;if(b.b){d=null;do{c=b.b;b.b=null;d=gb(c,d)}while(b.b);b.b=d}}
361
+ function yg(b,c){var d=b.parentNode;if(!d){return}d.insertBefore(c,b);d.removeChild(b)}
362
+ function Nk(b,c){if(!(c!=null&&c.cM&&!!c.cM[1])){return false}return String(b)==c}
363
+ function ul(b,c){return c==null?b.c:c!=null&&c.cM&&!!c.cM[1]?yl(b,ae(c,1)):xl(b,c,~~Q(c))}
364
+ function Dg(b,c,d){Lg(b,jg(d.b));return new Id(xd((!b.u?(b.u=new rd(b)):b.u).a,d,c))}
365
+ function Wj(b,c,d){var e,f,g;g=b.b>0?b.b:b.n.offsetWidth||0;e=c/g;f=(c+d*2)/g;b.g.X(e,f)}
366
+ function Yj(b,c,d){var e;e=c*(b.b>0?b.b:b.n.offsetWidth||0);d.style[jo]=e+(Rb(),no)}
367
+ function Td(b,c,d,e,f){var g;g=Sd(f,e);Yd();$d(g,Wd,Xd);g.aC=b;g.cM=c;g.qI=d;return g}
368
+ function gl(b,c){var d;while(b.I()){d=b.J();if(c==null?d==null:P(c,d)){return b}}return null}
369
+ function zf(b){var c;c=Of(Gf,b);if(!c&&!!b){b.cancelBubble=true;b.preventDefault()}return c}
370
+ function Vl(b){var c;this.c=b;c=new Wm;b.c&&Rm(c,new bm(b));sl(b,c);rl(b,c);this.a=new zm(c)}
371
+ function $e(){this.a=new hf(this);this.b=new Wm;this.d=new lf(this);this.f=new sf(this)}
372
+ function xh(b){this.a=new Ii(this);this.w=$doc.createElement(Qn);this.w.innerHTML=b||In}
373
+ function Ch(b){zh();this.a=new Ih(this,b.d,b.b,b.c,b.e,b.a);this.w[io]='gwt-Image'}
374
+ function Xj(b){Bf(b.w);aj(b.a);Cg(b.q.w,to,false);Cg(b.q.w,uo,true);Ah(b.p,(lj(),fj))}
375
+ function Zj(b){Af(b.w);bj(b.a);Cg(b.q.w,uo,false);Cg(b.q.w,to,true);Ah(b.p,(lj(),fj))}
376
+ function $j(b){lk(b.f);Af(b.w);_i(b.a);Cg(b.q.w,to,false);Cg(b.q.w,uo,false);Ah(b.p,(kj(),ej))}
377
+ function We(b){var c;c=of(b.f);rf(b.f);c!=null&&c.cM&&!!c.cM[11]&&new Ue(ae(c,11));b.c=false;Ye(b)}
378
+ function Dl(b,c){return c==null?Fl(b):c!=null&&c.cM&&!!c.cM[1]?Gl(b,ae(c,1)):El(b,c,~~Q(c))}
379
+ function zl(b,c,d){return c==null?Bl(b,d):c!=null&&c.cM&&!!c.cM[1]?Cl(b,ae(c,1),d):Al(b,c,d,~~Q(c))}
380
+ function vl(b,c){return c==null?b.b:c!=null&&c.cM&&!!c.cM[1]?b.e[Kn+ae(c,1)]:wl(b,c,~~Q(c))}
381
+ function ti(){ti=Gn;pi=new vi;qi=new xi;ri=new zi;si=new Bi;Ud(je,{30:1},29,[pi,qi,ri,si])}
382
+ function Ld(b){N.call(this,b.jb()==0?null:ae(b.kb(Td(ne,{22:1,30:1},10,0,0)),22)[0]);this.a=b}
383
+ function df(b){b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);Vm(bf,b)}
384
+ function Jg(b,c){b.s&&(b.w.__listener=null,undefined);!!b.w&&yg(b.w,c);b.w=c;b.s&&(b.w.__listener=b,undefined)}
385
+ function yb(b,c){while(c){if(b==c){return true}c=c.parentNode;c&&c.nodeType!=1&&(c=null)}return false}
386
+ function rb(b){var c,d;c=(d=b.join(In),b.length=b.explicitLength=0,d);b[b.explicitLength++]=c;return c}
387
+ function Kh(b){var c,d;c=(d=$doc.createEvent('HTMLEvents'),d.initEvent(Yn,false,false),d);b.a.w.dispatchEvent(c)}
388
+ function Pe(){if(!Ne){Ne=$doc.createElement(Qn);Ne.style.display='none';(Rh(),$doc.body).appendChild(Ne)}}
389
+ function gwtOnLoad(c,d,e,f){$moduleName=d;$moduleBase=e;if(c)try{Hn(oe)()}catch(b){c(d)}else{Hn(oe)()}}
390
+ function qe(b){var c,d,e;c=b&4194303;d=b>>22&4194303;e=b<0?1048575:0;return a=new Ce,a.l=c,a.m=d,a.h=e,a}
391
+ function sl(f,b){var c=f.e;for(var d in c){if(d.charCodeAt(0)==58){var e=new gm(f,d.substring(1));b.fb(e)}}}
392
+ function Dd(b){var c,d;if(b.a){try{for(d=new zm(b.a);d.b<d.d.jb();){c=ae(xm(d),21);c.x()}}finally{b.a=null}}}
393
+ function Gi(b,c){var d;if(c<0||c>=b.c){throw new Gk}--b.c;for(d=c;d<b.c;++d){Vd(b.a,d,b.a[d+1])}Vd(b.a,b.c,null)}
394
+ function Gg(b,c){var d;switch(jg(c.type)){case 16:case 32:d=c.relatedTarget;if(!!d&&yb(b.w,d)){return}}Fc(c,b,b.w)}
395
+ function Bd(b,c){var d,e;e=ae(vl(b.d,c),19);if(!e){e=new on;zl(b.d,c,e)}d=ae(e.b,20);if(!d){d=new Wm;Bl(e,d)}return d}
396
+ function wc(b,c,d){var e;e=$doc.styleSheets[b];d?(e.cssText+=c,undefined):(e.cssText=c+e.cssText,undefined);return e}
397
+ function Xg(b,c){var d;if(c.v!=b){return false}try{Kg(c,null)}finally{d=c.w;xb(d).removeChild(d);Hi(b.a,c)}return true}
398
+ function Zk(b){Xk();var c=Kn+b;var d=Wk[c];if(d!=null){return d}d=Uk[c];d==null&&(d=Yk(b));$k();return Wk[c]=d}
399
+ function Hf(b){kg();!Jf&&(Jf=new Mc);if(!Gf){Gf=new sd(null,true);Kf=new Mf}return new Id(xd(Gf.a,Jf,b))}
400
+ function ik(b){Dg(b.e,b,(Sc(),Sc(),Rc));Dg(b.e,b,(dd(),dd(),cd));Dg(b.e,b,(Zc(),Zc(),Yc));Dg(b.e,new pk(b),cd)}
401
+ function Ad(b,c,d){var e,f,g;e=Cd(b,c);f=e.ib(d);f&&e.hb()&&(g=ae(vl(b.d,c),19),ae(Fl(g),20),g.d==0&&Dl(b.d,c),undefined)}
402
+ function bk(b,c,d){var e;e=b.b>0?b.b:b.n.offsetWidth||0;b.k.style[jo]=c*e+(Rb(),no);b.k.style[po]=(d-c)*e+no}
403
+ function ck(b,c,d){var e,f;f=~~(b.p.a.e/2);e=c+(d-c)/2;b.p.w.style[jo]=e*(b.b>0?b.b:b.n.offsetWidth||0)-f+(Rb(),no)}
404
+ function Cd(b,c){var d,e;e=ae(vl(b.d,c),19);if(!e){return fn(),fn(),en}d=ae(e.b,20);if(!d){return fn(),fn(),en}return d}
405
+ function sk(b,c,d){var e,f;f=b.b;e=b.a;if(f<0||e<0){return false}if(c<b.c||d<b.d){return false}f+=b.c;e+=b.d;return f>c&&e>d}
406
+ function zc(b){var c;if($doc.styleSheets.length==0){return c=$doc.createStyleSheet(),c.cssText=b,c}return wc(0,b,false)}
407
+ function L(b){var c,d,e;d=Td(me,{30:1},33,b.length,0);for(e=0,c=b.length;e<c;++e){if(!b[e]){throw new Jk}d[e]=b[e]}}
408
+ function lb(){var b,c,d,e;d=jb(new mb);e=Td(me,{30:1},33,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Mk(d[b])}L(e)}
409
+ function rl(i,b){var c=i.a;for(var d in c){var e=parseInt(d,10);if(d==e){var f=c[e];for(var g=0,h=f.length;g<h;++g){b.fb(f[g])}}}}
410
+ function Fc(b,c,d){var e,f,g;if(Ec){g=ae(Ec.a[b.type],3);if(g){e=g.a.a;f=g.a.b;g.a.a=b;g.a.b=d;Eg(c,g.a);g.a.a=e;g.a.b=f}}}
411
+ function nj(b,c,d,e,f,g,h,i,j){var k,l,m;k=Vh(b);if(k){m=new ek;m.b=i;l=new Qj(c,d,e,f,g,h,m,j);m.g=l;Wg(k,m,k.w)}}
412
+ function nh(b,c){if(b.r){throw new Ek('Composite.initWidget() may only be called once.')}Ig(c);zg(b,c.w);b.r=c;Kg(c,b)}
413
+ function Ul(b){if(!b.b){throw new Ek('Must call next() before remove().')}else{ym(b.a);Dl(b.c,b.b.mb());b.b=null}}
414
+ function zj(b){var c,d;c=b.bb(b.i);d=b.bb(b.j);_j(b.k,c,d);ak(b.k,b.i,b.j);bk(b.k,b.i,b.j);ck(b.k,b.i,b.j);dk(b.k,b.i,b.j)}
415
+ function Tc(b,c){c.a=b.a.clientX||0;c.b=b.a.clientY||0;c.c=sk(new tk(c.e.c),c.a,c.b);c.d=sk(new tk(c.e.i),c.a,c.b);c.e.g.Y()}
416
+ function Qi(b,c,d,e,f,g){var h;h='url('+c+lo+-d+mo+-e+no;b.style['background']=h;b.style[po]=f+(Rb(),no);b.style['height']=g+no}
417
+ function Ae(){Ae=Gn;xe=(a=new Ce,a.l=4194303,a.m=4194303,a.h=524287,a);ye=(a=new Ce,a.l=0,a.m=0,a.h=524288,a);ue(1);ue(2);ze=ue(0)}
418
+ function Qk(d){if(d.length==0||d[0]>Ln&&d[d.length-1]>Ln){return d}var b=d.replace(/^(\s*)/,In);var c=b.replace(/\s*$/,In);return c}
419
+ function Bg(b){var c,d;c=b[io]==null?null:String(b[io]);d=c.indexOf(String.fromCharCode(32));if(d>=0){return c.substr(0,d-0)}return c}
420
+ function Ml(b,c){var d,e,f;if(c!=null&&c.cM&&!!c.cM[34]){d=ae(c,34);e=d.mb();if(ul(b.a,e)){f=vl(b.a,e);return nn(d.W(),f)}}return false}
421
+ function wl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return g.W()}}}return null}
422
+ function xl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return true}}}return false}
423
+ function gb(c,d){var b,e,f,g;for(e=0,f=c.length;e<f;++e){g=c[e];try{g[1]?g[0].tb()&&(d=fb(d,g)):g[0].x()}catch(b){b=pe(b);if(!ce(b,2))throw b}}return d}
424
+ function kb(b){var c,d,e,f;e=(de(b.a)?be(b.a):null,[]);f=Td(me,{30:1},33,e.length,0);for(c=0,d=f.length;c<d;++c){f[c]=new Mk(e[c])}L(f)}
425
+ function ue(b){var c,d;if(b>-129&&b<128){c=b+128;se==null&&(se=Td(ie,{30:1},26,256,0));d=se[c];!d&&(d=se[c]=qe(b));return d}return qe(b)}
426
+ function Vd(b,c,d){if(d!=null){if(b.qI>0&&!_d(d,b.qI)){throw new vk}if(b.qI<0&&(d.tM==Gn||d.cM&&!!d.cM[1])){throw new vk}}return b[c]=d}
427
+ function Hh(b,c,d,e,f,g,h){if(!Nk(b.d,d)||b.b!=e||b.c!=f||b.e!=g||b.a!=h){b.d=d;b.b=e;b.c=f;b.e=g;b.a=h;Qi(c.w,d,e,f,g,h);Ff(new Lh(c))}}
428
+ function hb(b){var c,d,e;e=In;b=Qk(b);c=b.indexOf('(');if(c!=-1){d=b.indexOf(Jn)==0?8:0;e=Qk(b.substr(d,c-d))}return e.length>0?e:'anonymous'}
429
+ function ni(){var b;li();hi.call(this,(b=$doc.createElement('INPUT'),b.type='text',b),(!Le&&(Le=new Me),!Ie&&(Ie=new Je)));this.w[io]='gwt-TextBox'}
430
+ function Rk(b){var c;c=0;while(0<=(c=b.indexOf('\\',c))){b.charCodeAt(c+1)==36?(b=b.substr(0,c-0)+'$'+Pk(b,++c)):(b=b.substr(0,c-0)+Pk(b,++c))}return b}
431
+ function yc(b){var c,d,e;c=$doc.styleSheets.length;if(c==0){return d=$doc.createStyleSheet(),d.cssText=b,d}return e=$doc.styleSheets[c-1],e.cssText+=b,e}
432
+ function Rb(){Rb=Gn;Qb=new Tb;Ob=new Vb;Jb=new Xb;Kb=new Zb;Pb=new _b;Nb=new bc;Lb=new dc;Ib=new fc;Mb=new hc;Ud(he,{30:1},23,[Qb,Ob,Jb,Kb,Pb,Nb,Lb,Ib,Mb])}
433
+ function Ig(b){if(!b.v){(Rh(),ul(Qh.a,b))&&Th(b)}else if(ce(b.v,17)){ae(b.v,17).T(b)}else if(b.v){throw new Ek("This widget's parent does not implement HasWidgets")}}
434
+ function ef(b,c){if(c<=0){throw new Bk('must be positive')}b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);Vm(bf,b);b.b=false;b.c=ff(b,c);Rm(bf,b)}
435
+ function qd(c,d){var b,e,f;!d.e||d.B();f=d.f;d.f=c.b;try{zd(c.a,d)}catch(b){b=pe(b);if(ce(b,9)){e=b;throw new Md(e.a)}else throw b}finally{f==null?(d.e=true,d.f=null):(d.f=f)}}
436
+ function Of(b,c){var d,e,f,g,h;if(!!Jf&&!!b&&ul(b.a.d,Jf)){d=Kf.a;e=Kf.b;f=Kf.c;g=Kf.d;Lf(Kf);Kf.d=c;qd(b,Kf);h=!(Kf.a&&!Kf.b);Kf.a=d;Kf.b=e;Kf.c=f;Kf.d=g;return h}return true}
437
+ function Sd(b,c){var d=new Array(c);if(b==3){for(var e=0;e<c;++e){var f=new Object;f.l=f.m=f.h=0;d[e]=f}}else if(b>0){var f=[null,0,false][b];for(var e=0;e<c;++e){d[e]=f}}return d}
438
+ function lj(){lj=Gn;fj=new Fe('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAJElEQVR42u3BMQEAAADCoPVPbQlPoAAAAAAAAAAAAAAAAAA4GTWzAAHmFYjpAAAAAElFTkSuQmCC')}
439
+ function El(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){d.length==1?delete i.a[c]:d.splice(e,1);--i.d;return g.W()}}}return null}
440
+ function Al(k,b,c,d){var e=k.a[d];if(e){for(var f=0,g=e.length;f<g;++f){var h=e[f];var i=h.mb();if(k.lb(b,i)){var j=h.W();h.nb(c);return j}}}else{e=k.a[d]=[]}var h=new zn(b,c);e.push(h);++k.d;return null}
441
+ function Kg(b,c){var d;d=b.v;if(!c){try{!!d&&d.O()&&b.Q()}finally{b.v=null}}else{if(d){throw new Ek('Cannot set a new parent without first clearing the old parent')}b.v=c;c.O()&&b.P()}}
442
+ function De(b){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:b})}
443
+ function Hg(b){if(!b.O()){throw new Ek("Should only call onDetach when the widget is attached to the browser's document")}try{b.S()}finally{try{b.N()}finally{b.w.__listener=null;b.s=false}}}
444
+ function Fg(b){var c;if(b.O()){throw new Ek("Should only call onAttach when the widget is detached from the browser's document")}b.s=true;b.w.__listener=b;c=b.t;b.t=-1;c>0&&(b.t==-1?Cf(b.w,c|(b.w.__eventBits||0)):(b.t|=c));b.M();b.R()}
445
+ function fh(c,d){var i;dh();var b,e,f,g,h;e=null;for(h=c.U();h.I();){g=ae(h.J(),15);try{d.V(g)}catch(b){b=pe(b);if(ce(b,10)){f=b;!e&&(e=new rn);i=zl(e.a,f,e)}else throw b}}if(e){throw new eh(e)}}
446
+ function Yk(b){var c,d,e,f;c=0;e=b.length;f=e-4;d=0;while(d<f){c=b.charCodeAt(d+3)+31*(b.charCodeAt(d+2)+31*(b.charCodeAt(d+1)+31*(b.charCodeAt(d)+31*c)))|0;d+=4}while(d<e){c=c*31+b.charCodeAt(d++)}return c|0}
447
+ function tk(b){var c;this.c=(c=zb(b)+$wnd.pageXOffset,b.ownerDocument.defaultView.getComputedStyle(b,In).direction=='rtl'&&(c+=Bb(b)),c);this.d=Ab(b)+$wnd.pageYOffset;this.b=b.clientWidth;this.a=b.clientHeight}
448
+ function xd(b,c,d){var e;if(!c){throw new Kk('Cannot add a handler with a null type')}if(!d){throw new Kk('Cannot add a null handler')}b.b>0?wd(b,new Vi(b,c,d)):(e=Bd(b,c),e.fb(d),undefined);return new Ti(b,c,d)}
449
+ function Fi(b,c,d){var e,f;if(d<0||d>b.c){throw new Gk}if(b.c==b.a.length){f=Td(ke,{30:1},15,b.a.length*2,0);for(e=0;e<b.a.length;++e){Vd(f,e,b.a[e])}b.a=f}++b.c;for(e=b.c-1;e>d;--e){Vd(b.a,e,b.a[e-1])}Vd(b.a,d,c)}
450
+ function Vh(b){Rh();var c,d;d=ae(vl(Ph,b),16);c=null;if(b!=null){if(!(c=$doc.getElementById(b))){return null}}if(d){if(!c||d.w==c){return d}}Ph.d==0&&Xf(new $h);!c?(d=new bi):(d=new Sh(c));zl(Ph,b,d);qn(Qh,d);return d}
451
+ function Cg(b,c,d){if(!b){throw new M('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.')}c=Qk(c);if(c.length==0){throw new Bk('Style names cannot be empty')}d?sb(b,c):ub(b,c)}
452
+ function jk(b,c){var d,e,f,g,h,i;g=jg(c.d.type);if(g==4){c.d.preventDefault()}else if(g==64){f=c.d;h=f.clientX||0;i=f.clientY||0;d=h-b.a;e=b.b-i;b.a=h;b.b=i;b.c?Uj(b.e,d):b.d?Vj(b.e,d):Wj(b.e,d,e);c.d.preventDefault()}else g==8&&b.e.g._()}
453
+ function sb(b,c){var d,e,f,g;c=Qk(c);g=b.className;d=g.indexOf(c);while(d!=-1){if(d==0||g.charCodeAt(d-1)==32){e=d+c.length;f=g.length;if(e==f||e<f&&g.charCodeAt(e)==32){break}}d=g.indexOf(c,d+1)}if(d==-1){g.length>0&&(g+=Ln);b.className=g+c}}
454
+ function jb(j){var b={};var c=[];var d=arguments.callee.caller.caller;while(d){var e=j.y(d.toString());c.push(e);var f=Kn+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h<i;h++){if(g[h]===d){return c}}}(g||(b[f]=[])).push(d);d=d.caller}return c}
455
+ function Kj(b,c){var d,e;e=b.d+b.b;b.f!=0&&!b.c?e-c<~~(b.f/2)?(d=e):c-b.d<~~(b.f/2)?(d=b.d):c==b.d?(d=ee(Math.floor(c))):c==e?(d=ee(Math.ceil(c))):(d=we(ve(te(Math.round(c/b.f)),ue(b.f)))):(d=we(te(Math.round(c))));d<b.d&&(d=b.d);d>e&&(d=e);return d}
456
+ function oc(){nc();var b,c,d;d=null;if(mc.length!=0){b=mc.join(In);c=zc((tc(),b));!mc&&(d=c);mc.length=0}if(kc.length!=0){b=kc.join(In);c=xc((tc(),b));!kc&&(d=c);kc.length=0}if(lc.length!=0){b=lc.join(In);c=yc((tc(),b));!lc&&(d=c);lc.length=0}jc=false;return d}
457
+ function xc(b){var c,d,e,f,g,h;e=$doc.styleSheets.length;if(e<30){return h=$doc.createStyleSheet(),h.cssText=b,h}else{g=2147483647;f=-1;for(c=0;c<e;++c){d=uc[c];d==0&&(d=uc[c]=$doc.styleSheets[c].cssText.length);if(d<=g){g=d;f=c}}uc[f]+=b.length;return wc(f,b,true)}}
458
+ function Xe(b,c){var d,e,f;f=false;try{b.c=true;b.f.a=b.b.b;ef(b.a,10000);while(pf(b.f)){e=qf(b.f);try{if(e==null){return}if(e!=null&&e.cM&&!!e.cM[11]){d=ae(e,11);Kh(d)}}finally{f=b.f.b==-1;f||rf(b.f)}if((new Date).getTime()-c>=100){return}}}finally{if(!f){df(b.a);b.c=false;Ye(b)}}}
459
+ function dk(b,c,d){var e;e=new cl;qb(e.a,'border-width:');qb(e.a,'0px ');bl(e,b.b>0?b.b:b.n.offsetWidth||0);qb(e.a,mo);pb(e.a,100);qb(e.a,'px 0px;');qb(e.a,'top:');ob(e.a,-100+(1-(d-c))*100);qb(e.a,vo);qb(e.a,'left:');al(e,c*(b.b>0?b.b:b.n.offsetWidth||0));qb(e.a,vo);b.q.w.setAttribute('style',rb(e.a))}
460
+ function ub(b,c){var d,e,f,g,h,i,j;c=Qk(c);j=b.className;f=j.indexOf(c);while(f!=-1){if(f==0||j.charCodeAt(f-1)==32){g=f+c.length;h=j.length;if(g==h||g<h&&j.charCodeAt(g)==32){break}}f=j.indexOf(c,f+1)}if(f!=-1){d=Qk(j.substr(0,f-0));e=Qk(Pk(j,f+c.length));d.length==0?(i=e):e.length==0?(i=d):(i=d+Ln+e);b.className=i}}
461
+ function zd(c,d){var b,e,f,g,h,i,j;if(!d){throw new Kk('Cannot fire null event')}try{++c.b;h=Cd(c,d.A());e=null;i=c.c?h.rb(h.jb()):h.qb();while(c.c?i.b>0:i.b<i.d.jb()){g=c.c?Em(i):xm(i);try{d.z(ae(g,18))}catch(b){b=pe(b);if(ce(b,10)){f=b;!e&&(e=new rn);j=zl(e.a,f,e)}else throw b}}if(e){throw new Ld(e)}}finally{--c.b;c.b==0&&Dd(c)}}
462
+ function Lj(b,c,d,e,f,g,h){var i,j,k;this.k=h;this.e=f;this.d=b;k=c-b;this.b=k==0?1:k;this.c=true;g==0?this.b>4000?(this.f=100):this.b>2000?(this.f=50):this.b>1000?(this.f=25):this.b>500?(this.f=10):this.b>100?(this.f=5):(this.f=0):(this.f=g);if(k!=0){i=(d-this.d)/this.b;j=(e-this.d)/this.b;this.i=i;this.j=j;Aj(this);zj(this)}else{this.i=0;this.j=1;Aj(this);zj(this)}}
463
+ function Ih(b,c,d,e,f,g){var h,i;this.b=d;this.c=e;this.e=f;this.a=g;this.d=c;Jg(b,(h=$doc.createElement('span'),h.innerHTML=(i='width: '+f+'px; height: '+g+'px; background: url('+c+lo+-d+mo+-e+no,"<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='"+$moduleBase+"clear.cache.gif' style='"+i+"' border='0'>")||In,vb(h)));b.t==-1?Cf(b.w,133333119|(b.w.__eventBits||0)):(b.t|=133333119)}
464
+ function mj(b){var c;var d;var e;var f;var g;var h;var i;var j;var k;if(b){c=b['hostElementId'];d=b['leftBorder'];e=b['rightBorder'];f=b['currentLeft'];g=b['currentRight'];h=b['stepSize'];i=b['unit'];j=b['callback'];k=b[po]}!c&&(c=In);!d&&(d=0);!e&&(e=0);d>e&&(d=e);!f&&(f=d);!g&&(g=e);!h&&(h=0);i=i==null?so:i.indexOf(so)!=-1?i:'%n '+i;(!j||typeof j!=Jn)&&(j=null);!k&&(k=0);nj(c,d,e,f,g,i,h,k,j)}
465
+ function oe(){var b;!!$stats&&De('com.google.gwt.user.client.UserAgentAsserter');b=Uf();Nk(Pn,b)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie9) does not match the runtime user.agent value ('+b+'). Expect more errors.\n'),undefined);!!$stats&&De('de.factfinder.asn.slider.client.StandAloneOneTouchSlider');$wnd.oneTouchSlider={};$wnd.oneTouchSlider.addSlider=Hn(mj);$wnd.oneTouchSliderOnLoad&&typeof $wnd.oneTouchSliderOnLoad==Jn&&$wnd.oneTouchSliderOnLoad()}
466
+ function Uf(){var c=navigator.userAgent.toLowerCase();var d=function(b){return parseInt(b[1])*1000+parseInt(b[2])};if(function(){return c.indexOf(Rn)!=-1}())return Rn;if(function(){return c.indexOf('webkit')!=-1}())return 'safari';if(function(){return c.indexOf(Sn)!=-1&&$doc.documentMode>=9}())return Pn;if(function(){return c.indexOf(Sn)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var b=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(b&&b.length==3)return d(b)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'}
467
+ function te(b){var c,d,e,f,g,h,i,j;if(isNaN(b)){return Ae(),ze}if(b<-9223372036854775808){return Ae(),ye}if(b>=9223372036854775807){return Ae(),xe}f=false;if(b<0){f=true;b=-b}e=0;if(b>=17592186044416){e=~~Math.max(Math.min(b/17592186044416,2147483647),-2147483648);b-=e*17592186044416}d=0;if(b>=4194304){d=~~Math.max(Math.min(b/4194304,2147483647),-2147483648);b-=d*4194304}c=~~Math.max(Math.min(b,2147483647),-2147483648);g=(a=new Ce,a.l=c,a.m=d,a.h=e,a);f&&(h=~g.l+1&4194303,i=~g.m+(h==0?1:0)&4194303,j=~g.h+(h==0&&i==0?1:0)&1048575,g.l=h,g.m=i,g.h=j,undefined);return g}
468
+ function ve(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;d=b.l&8191;e=b.l>>13|(b.m&15)<<9;f=b.m>>4&8191;g=b.m>>17|(b.h&255)<<5;h=(b.h&1048320)>>8;i=c.l&8191;j=c.l>>13|(c.m&15)<<9;k=c.m>>4&8191;l=c.m>>17|(c.h&255)<<5;m=(c.h&1048320)>>8;z=d*i;A=e*i;B=f*i;C=g*i;D=h*i;if(j!=0){A+=d*j;B+=e*j;C+=f*j;D+=g*j}if(k!=0){B+=d*k;C+=e*k;D+=f*k}if(l!=0){C+=d*l;D+=e*l}m!=0&&(D+=d*m);o=z&4194303;p=(A&511)<<13;n=o+p;r=z>>22;s=A>>9;t=(B&262143)<<4;u=(C&31)<<17;q=r+s+t+u;w=B>>18;x=C>>5;y=(D&4095)<<8;v=w+x+y;q+=n>>22;n&=4194303;v+=q>>22;q&=4194303;v&=1048575;return re(n,q,v)}
469
+ function jg(b){switch(b){case 'blur':return 4096;case 'change':return 1024;case Tn:return 1;case Un:return 2;case 'focus':return 2048;case Vn:return 128;case Wn:return 256;case Xn:return 512;case Yn:return 32768;case 'losecapture':return 8192;case Mn:return 4;case Zn:return 64;case Nn:return 32;case On:return 16;case $n:return 8;case 'scroll':return 16384;case 'error':return 65536;case 'DOMMouseScroll':case _n:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case ao:return 1048576;case bo:return 2097152;case co:return 4194304;case eo:return 8388608;case fo:return 16777216;case go:return 33554432;case ho:return 67108864;case 'ended':return 134217728;case 'progress':return 268435456;case 'canplaythrough':return 536870912;default:return -1;}}
470
+ function rg(){ng=Hn(function(b){if(!zf(b)){b.stopPropagation();b.preventDefault();return false}return true});pg=Hn(function(b){var c,d=this;while(d&&!(c=d.__listener)){d=d.parentNode}d&&d.nodeType!=1&&(d=null);c&&lg(c)&&yf(b,d,c)});qg=Hn(function(b){this.__gwtLastUnhandledEvent=b.type;pg.call(this,b)});og=Hn(function(b){var c=ng;if(c(b)){var d=mg;if(d&&d.__listener){if(lg(d.__listener)){yf(b,d,d.__listener);b.stopPropagation()}}}});$wnd.addEventListener(Tn,og,true);$wnd.addEventListener(Un,og,true);$wnd.addEventListener(Mn,og,true);$wnd.addEventListener($n,og,true);$wnd.addEventListener(Zn,og,true);$wnd.addEventListener(On,og,true);$wnd.addEventListener(Nn,og,true);$wnd.addEventListener(_n,og,true);$wnd.addEventListener(Vn,ng,true);$wnd.addEventListener(Xn,ng,true);$wnd.addEventListener(Wn,ng,true);$wnd.addEventListener(ao,og,true);$wnd.addEventListener(bo,og,true);$wnd.addEventListener(co,og,true);$wnd.addEventListener(eo,og,true);$wnd.addEventListener(fo,og,true);$wnd.addEventListener(go,og,true);$wnd.addEventListener(ho,og,true)}
471
+ function sg(b,c){var d=(b.__eventBits||0)^c;b.__eventBits=c;if(!d)return;d&1&&(b.onclick=c&1?pg:null);d&2&&(b.ondblclick=c&2?pg:null);d&4&&(b.onmousedown=c&4?pg:null);d&8&&(b.onmouseup=c&8?pg:null);d&16&&(b.onmouseover=c&16?pg:null);d&32&&(b.onmouseout=c&32?pg:null);d&64&&(b.onmousemove=c&64?pg:null);d&128&&(b.onkeydown=c&128?pg:null);d&256&&(b.onkeypress=c&256?pg:null);d&512&&(b.onkeyup=c&512?pg:null);d&1024&&(b.onchange=c&1024?pg:null);d&2048&&(b.onfocus=c&2048?pg:null);d&4096&&(b.onblur=c&4096?pg:null);d&8192&&(b.onlosecapture=c&8192?pg:null);d&16384&&(b.onscroll=c&16384?pg:null);d&32768&&(b.onload=c&32768?qg:null);d&65536&&(b.onerror=c&65536?pg:null);d&131072&&(b.onmousewheel=c&131072?pg:null);d&262144&&(b.oncontextmenu=c&262144?pg:null);d&524288&&(b.onpaste=c&524288?pg:null);d&1048576&&(b.ontouchstart=c&1048576?pg:null);d&2097152&&(b.ontouchmove=c&2097152?pg:null);d&4194304&&(b.ontouchend=c&4194304?pg:null);d&8388608&&(b.ontouchcancel=c&8388608?pg:null);d&16777216&&(b.ongesturestart=c&16777216?pg:null);d&33554432&&(b.ongesturechange=c&33554432?pg:null);d&67108864&&(b.ongestureend=c&67108864?pg:null)}
472
+ function Zf(){var b,c;if(!Vf){b=(c=$doc.createElement('script'),c.textContent='function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',c);$doc.body.appendChild(b);$wnd.__gwt_initWindowCloseHandler(Hn(_f),Hn($f));$doc.body.removeChild(b);Vf=true}}
473
+ function hj(b){if(!b.a){b.a=true;nc();R(kc,'.GLR1MK0AG{display:block;}.GLR1MK0OG{font-family:verdana, sans-serif;font-size:8pt;text-align:center;}.GLR1MK0EG{background:#555;width:100%;height:17px;position:relative;text-align:left;-moz-border-radius:4px 4px 4px 4px;-webkit-border-radius:4px;font-size:1.1em;}.GLR1MK0DG{height:100%;top:0;background:#6683b4;background-position:0 0;border:0 none;display:block;font-size:0.7em;position:absolute;z-index:1;text-align:center;}.GLR1MK0HG{background:repeat-x scroll 50% 50% #f6f6f6;border:1px solid #7f7f7f;color:#fff;font-weight:bold;outline:medium none;margin-left:-0.6em;top:-0.3em;cursor:default;height:23px;position:absolute;width:1em;z-index:3;-moz-border-radius:4px;-webkit-border-radius:4px;font-family:Verdana, Arial, sans-serif;font-size:1.1em;text-align:left;text-decoration:none;}.GLR1MK0IG{border-color:transparent;border-style:solid;border-width:0 200px 100px 0;height:0;width:0;position:absolute;border-bottom-color:#ccd6e6;opacity:0;z-index:2;margin-top:10px;}.GLR1MK0KG{opacity:0.5;}.GLR1MK0JG{opacity:0.7;}.GLR1MK0BG{cursor:pointer;}.GLR1MK0CG{cursor:none;}.GLR1MK0PF{cursor:default;}.GLR1MK0FG{margin:-21px auto;z-index:3;position:absolute;}.GLR1MK0GG{width:58px;margin:32px 0 0 -29px;}.GLR1MK0LG{background-color:#f1f1f1;border:1px solid #acacac;font-size:9px;height:20px;margin:0 0 10px;text-align:center;width:40px;}.GLR1MK0MG{float:left;}.GLR1MK0NG{float:right;}');pc();return true}return false}
474
+ function ek(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;this.o=(jj(),dj);this.a=new cj;this.f=new mk(this);this.g=new pj;nh(this,(c=Db($doc),q=new ni,e=Db($doc),s=new ni,g=Db($doc),h=Db($doc),i=Db($doc),j=Db($doc),k=Db($doc),w=new th,m=Db($doc),v=new Ch((kj(),ej)),o=new xh("<div class='GLR1MK0OG fact-finder-onetouchslider'> <span id='"+c+wo+e+"'><\/span> <div style='clear: both !important;'><\/div> <div style='clear: both !important;'><\/div> <div class='GLR1MK0AG'> <div class='GLR1MK0EG fact-finder-onetouchslider-bar' id='"+g+"'> <div class='GLR1MK0DG fact-finder-onetouchslider-bar fact-finder-onetouchslider-bar-selected' id='"+h+"'><\/div> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-left' id='"+i+"'><\/span> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-right' id='"+j+wo+k+wo+m+"'><\/span> <\/div> <\/div> <\/div>"),q.w[io]='GLR1MK0LG GLR1MK0MG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-left',q.w[xo]=true,Ag(q,Bg(q.w)+yo),s.w[io]='GLR1MK0LG GLR1MK0NG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-right',s.w[xo]=true,Ag(s,Bg(s.w)+yo),w.w[io]='GLR1MK0IG fact-finder-onetouchslider-triangle',v.w[io]='GLR1MK0FG fact-finder-onetouchslider-grip',b=Oe(o.w),d=$doc.getElementById(c),f=$doc.getElementById(e),u=$doc.getElementById(g),u.removeAttribute(zo),t=$doc.getElementById(h),t.removeAttribute(zo),p=$doc.getElementById(i),p.removeAttribute(zo),r=$doc.getElementById(j),r.removeAttribute(zo),l=$doc.getElementById(k),n=$doc.getElementById(m),b.b?b.b.insertBefore(b.a,b.c):Qe(b.a),Ig(q),Di(o.a,q),d.parentNode.replaceChild(q.w,d),Kg(q,o),Ig(s),Di(o.a,s),f.parentNode.replaceChild(s.w,f),Kg(s,o),Ig(w),Di(o.a,w),l.parentNode.replaceChild(w.w,l),Kg(w,o),Ig(v),Di(o.a,v),n.parentNode.replaceChild(v.w,n),Kg(v,o),this.c=p,this.d=q,this.i=r,this.j=s,this.k=t,this.n=u,this.p=v,this.q=w,o));hj(this.o);ik(this.f);this.g.ab()}
475
+ function kj(){kj=Gn;ej=new Fe('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADoBJREFUeNrUW3mQFcUZ7znewS67y7GwLKziLp7hFlEDFqcsRquSKjUqgkqMlRgllT9MoqaSlDGEktKUZzQiGhMVOTxKrQhUiCnLKwKLCHJI9mRvjuVY3u6bqztfHzOvXzPvWHalymd99szsTHf/+jv7+xqNEIK+zb/Kqgvyes88y5PS5PuG+v+dtVU2v0kg8NP68D75JhfBHGBwuYCq9yRHv2SgQJsDADAMjCY91/Lskkjk32uyHvYHsDlAALUMANVnuUDiENADAljvJ0hN9CGTIRYwjCISqX8zpNaQ+tLVxQuxBTl/Wr7uRXSuclGXOKYrwNW/q4ukiioWRJQWh3AYhbT9F10FZBgwTay+JnEhDGzYTwbiKQA98X3YImhK2z+gISD1LCLrt0ZxUZE2e/Ycc/r06WjSlEkoEomgC8+vQqbJh2xuadW6TyVIY0Ojtn/fPrJ54ybvQF2tKcDJID1poWTgfQKbVXTzAGnK4Oj95ZdNN25dsliff/WCWMeRxETb8cZ7GFMrEsMEVUAbZZ1pqB2m1gtti2no9SVF8W0nj7V3rFuznrz8j5ddCSwlV+GyzPW8xDgj0CwgDcXoMJBTJk6O3LJ4kXbV7Oryw8d6bnA9PEPXtTgAgY/gP+10yaVjM6IzxtxlxqLGxkFGYsu6NevQ6pdedAVIL4TCwPYNqGJds4Fk9PAfHjYXfO/7Q5o7Tt4MABfoGtI1XYf/IQZQ81t1+QVQipFOg2DMrxE5WFQQffVYZ23N2tdexxs3b3IEYBW0rLtZwWYDqkkuSFdFlNLYiorIz5YtM86fMHPWqR77bsASNyhKAZIi1AOgIc5TAMQ+YEzYNWuBQCJqxo8b8cTfX1qVePqZZ2Swbl/BngY0RGSNEJCReXPmRRctXqRHSioXgx5er+sclGHojHuAlbJVAEani64QWcSAUgJuYiRAYgbY8+g7pL1yzNDlH215r335n5ZTgI4gWX9JiBvKO2BQjU/AyfGXfMf866rnTCdW8Wvg5PUgrmxSHkzSdTGbKL/H7Bn2JPLvKShoXSzeo++zfnDQD+3XcbzyrxuPrJx8ZfXFDz7woBpg6JJbU9Ut7Wc89NBDuUTWUCIb875f3mce7Ir+OGm5c4kkgr508EYL9A/7eoiEaBK+KJ7PPUyChWIgGVgULBSAjh7rTk6fdunUz4riRm/NjppsAUSfQkAtxFcavuEpLJtUfSJhXevAqtt05YEc14MJEuQwThBxz7nic8t1FfJI8A7jHnzjsL7EteOx/tk4jle888ChB+/8yT3xK6ZfroaMei6u6hm2UZoisoyW3r7UPG/8VZWHuhJ3yROCSfBr1nppE04tAoagwUDDSwahGLSuB8/oc5fA9zhtgRwHB33ajsvA0vuk5Zy7+dO6ny5afKsh+fC8IjA9D5cSgH3gNw8Ye+sOLbMcz7RsD1k2TMKmq87Bssk5KmDOGepcCuMm2rrza9SbtFBRYSx4z/W/p30JkGlExxHPuxPWbFJYNY0uurIByA9oDrHVacdv/Wv35b29yUrbtmFQB1kwQQtWnIGmLUzEcvl9auJc/AoGRdAXu2vRoSPH0Z7aVhSPmczn8G89xjlLkL9wSXrNWtqXg+i4lm2hprauRTffelOuuDoNdDagaQaJdtzS0XUjHYgBtSzk0MEdf6ISueKZEDmIduBdC7V1HkHR+CCkGyZqbOlChQDeF33+Lhb9uaJPzLjpODAeG9di4/b09lTW7D8xZeGCajNkO5eTo1qmfSaNX7+q667q6emppAPZVhLx1goAc1GWyeWiDROmYvrl3joUicZRLBaHwD6KIExEEOMyzjJw4l0uCUJ8BQf9caykAJtMooOth66+/oc3IMW9ZMxqmBnyPmn7zOqFC7Xaxrbv0sFo1KPpBjKAdMNFBuxGDMNjXDIoYQgSdAJ/R6wtLx2Mjhw9hrpP9aLCwcXIjMRYH9T1NLYdg78Xo46jCcX3gsvxXOSBGnjQYjBclNg1c0ewMEk8bfyEGbFYNOpZtq3nymjoWZJXAdDZc2ehrmMnL7OAk0lYTdZavLXoSvsrblNymOglbe5uhhTF0Z79DbA4sGnRIyxQ8C1y18kkSvTaaMjgGHvf8nVR9OlTUozHx+wVz6zo2xs/nzhv7rxsVjcvHWUf032li+Pxnp5EhZXs5QMlfUqi4BkQF+kkcoQ4Dy+OoQN1zajXchHRTYiCwPiA3vniTQ1QQ2sXGjm0gHGPfW/zPuxkUvSZGs9mYyWDZx2Hj54/afIkLYSbp3HVzGKI2HVV5Tjto617ymEACGWp2Oo8aKfiS0XVA3KBzAhce/wZUElRAbgTHW3/ognF4oXIIzozODzkFdszYG8SxLCp9SgqLYmBKJ9CGAC7nsPF1nWYuPri61ERhvfpd7SPEyfJmFmXXoByhX/ZMgzBB+Xlo7TOziPDqbjwLZcAanA9ZQCpnsLETHYdYTo7dPRQtHPXfuYjY9CVBy0hVlrKCHtc3xpae9Hki8agGJiV44lkANCFNk1XhX4G2zvPG1ZWVobyyTTmTKUUFRWBIekpoNYOiQ20zgyRzg0STMB0OVga7ZhA5SOGIRdEsKmlDRUMLmHPQZaR5unpuxdmeLihOVDfhoYVF6DOw0c4UJcDlTlKQVKwPKamQN3CwsKCvHLHeSXHmB8LOKpx8QXOUnA6XW3TY+JrRjw2wdIhBWjbjl1i5THnDEyQSkKQEaPix4J7DrS1oxvCw7GoBFxRe+dJJqaua3OOCqsrc5NRJP+0dM43u7u70eBCvYeC5XtKiaswCV03mW5SsaWTrqwYjTo6O1HX8ePAzWLOTdtmIu9nG/ydDl0EIrhEubb3QCMaN3YUamxuSemn67sVrpv+d8ySaiiRSPTklfI0c2TOUXt7B7ni4plHXcdJKbDgKG2pPtJJ0FUv0Aeh0WVD0eYPPgLRjrDtl2s7TBcpUCTyR2zLzcDilPiCJPQkutGIIYXgW4eg+qaW08SWBGLLf9FIpKsTFjVXvijMvaj7O1LfUEfmzZrW7ro0FHM4sVjX5iItxJrqMNXNL3fvBRdgIwKso5zywzdHEHUfqWsr9TcQU7qY+2ob0TmjRzJgQfRl26mxBdH5mIbR3tzUnGn+OTkqb2jxye5uMqzETML1QdC1c7nmS7oKHPVAjGNwP3J4Mdq1Zy+KxAbRScAqEngTdJPQ+J2yML1KqFPLSf/uDwfLTnW8vrEFlQ0fimobGgPR5kYIB1lcOofSYSUHarZvJxmy+SQXR9V7XLN9B4pGza98S0jJoUS5anPOUqKrDGYQRUwDRZhVpnoEYDXMBJaB1niriTQPvdc1zHJLlExDA5E00KnEqaBf1jfr30n5WM/FN/5g/r5PPv0EZwFI0jhKq1NSvKvWPPBbb7xJLr5o5sefbd1+ra8iPLOnI6zDpIVV/Gp/LZpwURUqKR4c+Fsk0pyamgqUcrqykaEhYF1jM2oCg0T79PWYWWmUGrugoLAGuScSIHE4Q40mo+iSDGU8vHX7Nm/FyhVf/3dbTTNYw3PkuMKPlJjjbzoIE2wVgT+Pnng0FZLA9o2R8Kc0C0hEAOET8QMELM+dL1jF6PItb7/5NpKS2VnzR7l01AfrbVi7wRw1atQ7TU1Ny5DEVo1OxgcLE6URk7/D0TRP6DKPqE7P62IGghChgwEwnPbMdyd8SJ3WcZofX/GLHZdOnepKxSl8psYorZr1/Aur3B07vvjwmhvuuQ4sbSUD64sloRzlYDSYKAMq3E/Kf6pRmuT4CQ4F5wcVRN6KgE5fMu7CV55/9jm1PEGylBhDdy8kpEbJOnzqiSe9KZMmrIaJYBFrcmfv8ujFE3Gp64j4lLoBYUgCg5LhnhkaJxXXpqIhzHVV6Gk8Pmjbj26Zu50uvFJ4yspRXTkFosq4XNHyaJVr9vTz9o8cWfaqH3P6pt8TuwsfMLfOfAfiSrFrQI7/3N+pUHBOWj8pt8LHgV1R++/vv/epDWvXE6UsQfIGGuZWQrjqrlz5iHvv0mveATfyIU9QC0MiJoWlLRUH7J4OUgLo+hx0fS66KX31++Zq0nPdwvkr9u78OCGKTmo5kWSrv+ghZ3vUl2VdcMGcO6+/tsZ79YWVf4nF4rtTFTEc7C5Yq+wjUyKZEk0vSJF40rfiex8gCxA0e/LEiY+NLTNbpWKTXGDCucJAPc/jMFhaQe/zbVudVc8+5az925//WFIy5H35zUCcmdsgqYmLXQqWdiLBtktU0YJYVuoPrPjh6vlz76+eecFOUWRSK2leLm7mUzZUM/a6XBelxabb7rjdWP36f65ta29bCn0N6Em0WCy27+47lzxqnWg6/viTT/iVtIEpG+ZRCDbUOimtx9S3WeX/3PzvmyF0m4X6c5CSlR6NwxUV56x75Hd3fbDmldfI+jc2yDqpGiHvjAvBZ1DaN2dcOSOy+LbF2ntbdlVt27Hzxt7enqnQdTSf4z1+1ASBQFtpaemm5x//7ab3333LFVwMK+1jhc6stJ/nYQ0jrEg8b848Y8kdS7SSYWNiyx9bPamltfUK27LPA0tbCvpYLPcfjcbqIbhIFBUXf1k9Z+Ynt900t3Pd2vXoxRdX01ytd1YOa5zB8Ru5umXEolG9unqhUb2wGlWNq0IVY8pRcVERevTp9SN+9fObDtPO9u4/QFME6LOPP0Xvvfsurm2ox4rvVgMCL8NxupxZhrxOjuVxoCoTyX9nv7EVFVpTS4s6QfWkWCYiIYYnr1TKQB2RC6to6TmSyiQEbKYjcihDUJD3Ebm8Dz1KwUTY5DzlxIh8qMK/thVyFFINjyuB88I42ZdTnn3ye9IGXT6WRhSOkRARV5PjJMfWMGvG4EyOsfbZwfuDSIf2VcBq5hxnKGSRPA4m9xtgv09ghwAOyz1lO4aOMuV3BhJgv4GqgLOARn0wGiSs34H4DWhsGjI5EhJW5vrmG/mdtX/3cjb/jUu/3Mu3/fd/AQYAFnxtwIzfP80AAAAASUVORK5CYII=')}
476
+ var In='',Ln=' ',so='%n',wo="'><\/span> <span id='",lo=') no-repeat ',yo='-readonly',Kn=':',qo='GLR1MK0BG',ro='GLR1MK0CG',uo='GLR1MK0JG',to='GLR1MK0KG',ko='__gwtLastUnhandledEvent',io='className',Tn='click',Un='dblclick',Qn='div',Jn='function',go='gesturechange',ho='gestureend',fo='gesturestart',zo='id',Pn='ie9',Vn='keydown',Wn='keypress',Xn='keyup',jo='left',Yn='load',Mn='mousedown',Zn='mousemove',Nn='mouseout',On='mouseover',$n='mouseup',_n='mousewheel',Sn='msie',Rn='opera',no='px',mo='px ',vo='px;',xo='readOnly',eo='touchcancel',co='touchend',bo='touchmove',ao='touchstart',oo='value',po='width';var _;_=E.prototype={};_.eQ=function F(b){return this===b};_.hC=function G(){return this.$H||(this.$H=++U)};_.tM=Gn;_.cM={};_=K.prototype=new E;_.cM={10:1,30:1};_=J.prototype=new K;_.cM={10:1,30:1};_=M.prototype=I.prototype=new J;_.cM={2:1,10:1,30:1};_=O.prototype=H.prototype=new I;_.cM={2:1,10:1,30:1};_.a=null;_=S.prototype=new E;_.cM={};var T=0,U=0;_=eb.prototype=Z.prototype=new S;_.cM={};_.a=null;_.b=null;var $;_=mb.prototype=ib.prototype=new E;_.y=function nb(b){return hb(b)};_.cM={};_=Fb.prototype=new E;_.eQ=function Gb(b){return this===b};_.hC=function Hb(){return this.$H||(this.$H=++U)};_.cM={30:1,31:1,32:1};_=Eb.prototype=new Fb;_.cM={23:1,30:1,31:1,32:1};var Ib,Jb,Kb,Lb,Mb,Nb,Ob,Pb,Qb;_=Tb.prototype=Sb.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=Vb.prototype=Ub.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=Xb.prototype=Wb.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=Zb.prototype=Yb.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=_b.prototype=$b.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=bc.prototype=ac.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=dc.prototype=cc.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=fc.prototype=ec.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};_=hc.prototype=gc.prototype=new Eb;_.cM={23:1,30:1,31:1,32:1};var ic,jc=false,kc,lc,mc;_=rc.prototype=qc.prototype=new E;_.x=function sc(){(nc(),jc)&&oc()};_.cM={};var uc;_=Cc.prototype=new E;_.cM={};_.f=null;_=Bc.prototype=new Cc;_.B=function Dc(){this.e=false;this.f=null};_.cM={};_.e=false;_=Ac.prototype=new Bc;_.A=function Gc(){return this.C()};_.cM={};_.a=null;_.b=null;var Ec=null;_=Jc.prototype=new E;_.hC=function Lc(){return this.c};_.cM={};_.c=0;var Kc=0;_=Mc.prototype=Ic.prototype=new Jc;_.cM={};_=Nc.prototype=Hc.prototype=new Ic;_.cM={3:1};_.a=null;_.b=null;_=Oc.prototype=new Ac;_.cM={};_=Qc.prototype=new Oc;_.cM={};_=Uc.prototype=Pc.prototype=new Qc;_.z=function Vc(b){Tc(this,ae(b,4))};_.C=function Wc(){return Rc};_.cM={};var Rc;_=$c.prototype=Xc.prototype=new Qc;_.z=function _c(b){ae(ae(b,5),6).e.g.Z()};_.C=function ad(){return Yc};_.cM={};var Yc;_=ed.prototype=bd.prototype=new Qc;_.z=function fd(b){ae(b,7).D(this)};_.C=function gd(){return cd};_.cM={};var cd;_=id.prototype=hd.prototype=new E;_.cM={};_.a=null;_=ld.prototype=jd.prototype=new Bc;_.z=function md(b){ae(b,8).E(this)};_.A=function od(){return kd};_.cM={};var kd=null;_=sd.prototype=rd.prototype=pd.prototype=new E;_.cM={25:1};_.a=null;_.b=null;_=vd.prototype=new E;_.cM={};_=ud.prototype=new vd;_.F=function Ed(b,c,d){this.b>0?wd(this,new Yi(this,b,d)):Ad(this,b,d)};_.cM={};_.a=null;_.b=0;_.c=false;_=Fd.prototype=td.prototype=new ud;_.F=function Gd(b,c,d){this.b>0?wd(this,new Yi(this,b,d)):Ad(this,b,d)};_.cM={};_=Id.prototype=Hd.prototype=new E;_.cM={};_.a=null;_=Ld.prototype=Kd.prototype=new I;_.cM={2:1,9:1,10:1,30:1};_.a=null;_=Md.prototype=Jd.prototype=new Kd;_.cM={2:1,9:1,10:1,30:1};_=Od.prototype=Nd.prototype=new E;_.cM={18:1};_=Qd.prototype=Pd.prototype=new E;_.cM={};_.aC=null;_.qI=0;var Wd,Xd;var se=null;var xe,ye,ze;_=Ce.prototype=Be.prototype=new E;_.cM={26:1};_=Fe.prototype=Ee.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=Ge.prototype=new E;_.cM={};_=Je.prototype=He.prototype=new E;_.cM={};var Ie=null;_=Me.prototype=Ke.prototype=new Ge;_.cM={};var Le=null;var Ne=null;_=Se.prototype=Re.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_=Ue.prototype=Te.prototype=new I;_.cM={2:1,10:1,30:1};_=$e.prototype=Ve.prototype=new E;_.cM={};_.c=false;_.e=false;_=af.prototype=new E;_.G=function gf(){this.b||Vm(bf,this);this.H()};_.cM={13:1};_.b=false;_.c=0;var bf;_=hf.prototype=_e.prototype=new af;_.H=function jf(){if(!this.a.c){return}We(this.a)};_.cM={13:1};_.a=null;_=lf.prototype=kf.prototype=new af;_.H=function mf(){this.a.e=false;Xe(this.a,(new Date).getTime())};_.cM={13:1};_.a=null;_=sf.prototype=nf.prototype=new E;_.I=function tf(){return this.c<this.a};_.J=function uf(){return qf(this)};_.K=function vf(){rf(this)};_.cM={};_.a=0;_.b=-1;_.c=0;_.d=null;var wf=null,xf=null;var Df;var Gf=null;_=Mf.prototype=If.prototype=new Bc;_.z=function Nf(b){jk(ae(b,12),this);Kf.c=false};_.A=function Pf(){return Jf};_.B=function Qf(){Lf(this)};_.cM={};_.a=false;_.b=false;_.c=false;_.d=null;var Jf=null,Kf=null;_=Sf.prototype=Rf.prototype=new E;_.E=function Tf(b){while((cf(),bf).b>0){df(ae(Sm(bf,0),13))}};_.cM={8:1,18:1};var Vf=false,Wf=null;_=dg.prototype=ag.prototype=new Bc;_.z=function eg(b){fe(b);null.tb()};_.A=function fg(){return bg};_.cM={};var bg;_=hg.prototype=gg.prototype=new pd;_.cM={25:1};var ig=false;var mg=null,ng=null,og=null,pg=null,qg=null;_=xg.prototype=new E;_.cM={28:1};_.w=null;_=wg.prototype=new xg;_.M=function Mg(){};_.N=function Ng(){};_.O=function Og(){return this.s};_.P=function Pg(){Fg(this)};_.L=function Qg(b){Gg(this,b)};_.Q=function Rg(){Hg(this)};_.R=function Sg(){};_.S=function Tg(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.s=false;_.t=0;_.u=null;_.v=null;_=vg.prototype=new wg;_.M=function Ug(){fh(this,(dh(),bh))};_.N=function Vg(){fh(this,(dh(),ch))};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=ug.prototype=new vg;_.U=function Yg(){return new Mi(this.a)};_.T=function Zg(b){return Xg(this,b)};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=tg.prototype=new ug;_.T=function _g(b){var c;c=Xg(this,b);c&&$g(b.w);return c};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=eh.prototype=ah.prototype=new Jd;_.cM={2:1,9:1,10:1,30:1};var bh,ch;_=hh.prototype=gh.prototype=new E;_.V=function ih(b){b.P()};_.cM={};_=kh.prototype=jh.prototype=new E;_.V=function lh(b){b.Q()};_.cM={};_=mh.prototype=new wg;_.O=function oh(){if(this.r){return this.r.s}return false};_.P=function ph(){if(this.t!=-1){Lg(this.r,this.t);this.t=-1}Fg(this.r);this.w.__listener=this;this.R()};_.L=function qh(b){Gg(this,b);Gg(this.r,b)};_.Q=function rh(){try{this.S()}finally{Hg(this.r)}};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.r=null;_=th.prototype=sh.prototype=new ug;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=uh.prototype=new wg;_.P=function vh(){var b;Fg(this);b=Cb(this.w);-1==b&&(this.w.tabIndex=0,undefined)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=xh.prototype=wh.prototype=new ug;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Ch.prototype=yh.prototype=new wg;_.L=function Dh(b){jg(b.type)==32768&&!!this.a&&(this.w[ko]=In,undefined);Gg(this,b)};_.R=function Eh(){var b;b=tb(this.w,ko);Nk(Yn,b)&&Ff(new Lh(this))};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.a=null;_=Gh.prototype=new E;_.cM={};_=Ih.prototype=Fh.prototype=new Gh;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=Lh.prototype=Jh.prototype=new E;_.x=function Mh(){Kh(this)};_.cM={11:1};_.a=null;_=Sh.prototype=Nh.prototype=new tg;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};var Oh,Ph,Qh;_=Xh.prototype=Wh.prototype=new E;_.V=function Yh(b){b.O()&&b.Q()};_.cM={};_=$h.prototype=Zh.prototype=new E;_.E=function _h(b){Uh()};_.cM={8:1,18:1};_=bi.prototype=ai.prototype=new Nh;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};_=ei.prototype=new uh;_.W=function ii(){return fi(this)};_.L=function ji(b){var c;c=jg(b.type);(c&896)!=0?Gg(this,b):Gg(this,b)};_.R=function ki(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=di.prototype=new ei;_.W=function mi(){var b;return b=fi(this),b==null?In:b};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=ni.prototype=ci.prototype=new di;_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=oi.prototype=new Fb;_.cM={29:1,30:1,31:1,32:1};var pi,qi,ri,si;_=vi.prototype=ui.prototype=new oi;_.cM={29:1,30:1,31:1,32:1};_=xi.prototype=wi.prototype=new oi;_.cM={29:1,30:1,31:1,32:1};_=zi.prototype=yi.prototype=new oi;_.cM={29:1,30:1,31:1,32:1};_=Bi.prototype=Ai.prototype=new oi;_.cM={29:1,30:1,31:1,32:1};_=Ii.prototype=Ci.prototype=new E;_.U=function Ji(){return new Mi(this)};_.cM={};_.a=null;_.b=null;_.c=0;_=Mi.prototype=Ki.prototype=new E;_.I=function Ni(){return this.a<this.b.c-1};_.J=function Oi(){return Li(this)};_.K=function Pi(){if(this.a<0||this.a>=this.b.c){throw new Dk}this.b.b.T(this.b.a[this.a--])};_.cM={};_.a=-1;_.b=null;_=Ti.prototype=Ri.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_.d=null;_=Vi.prototype=Ui.prototype=new E;_.x=function Wi(){yd(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=Yi.prototype=Xi.prototype=new E;_.x=function Zi(){Ad(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=cj.prototype=$i.prototype=new E;_.cM={};_.a=null;var dj=null,ej=null,fj=null;_=ij.prototype=gj.prototype=new E;_.cM={};_.a=false;_=pj.prototype=oj.prototype=new E;_.X=function qj(b,c){};_.Y=function rj(){};_.Z=function sj(){};_.$=function tj(){};_._=function uj(){};_.ab=function vj(){};_.cM={};_=yj.prototype=new E;_.bb=function Bj(b){return In+b};_.X=function Cj(b,c){if(this.g){this.i+=b;this.j+=c;Aj(this);this.cb(b,c);zj(this)}};_.cb=function Dj(b,c){};_.Y=function Ej(){this.g=true;Xj(this.k)};_.Z=function Fj(){if(!this.g){$j(this.k);this.g=false}};_.$=function Gj(){this.g||Zj(this.k)};_._=function Hj(){this.g=false;Tj(this.k)?Zj(this.k):$j(this.k);this.db(this.i,this.j)};_.db=function Ij(b,c){};_.ab=function Jj(){zj(this)};_.cM={};_.g=false;_.i=0;_.j=1;_.k=null;_=xj.prototype=new yj;_.bb=function Mj(b){var c,d;c=b*this.b+this.d;d=Kj(this,c);return this.e!=null&&!!this.e.length?Ok(this.e,so,In+d):In+d};_.cb=function Nj(b,c){this.c=false};_.eb=function Oj(b,c){};_.db=function Pj(b,c){var d,e;d=Kj(this,b*this.b+this.d);e=Kj(this,c*this.b+this.d);this.eb(d,e)};_.cM={};_.b=0;_.c=false;_.d=0;_.e=null;_.f=0;_=Qj.prototype=wj.prototype=new xj;_.eb=function Rj(b,c){var d=this.a;d&&typeof d==Jn&&d(b,c)};_.cM={};_.a=null;_=ek.prototype=Sj.prototype=new mh;_.R=function fk(){this.g.ab()};_.S=function gk(){lk(this.f)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.b=0;_.c=null;_.d=null;_.e=null;_.i=null;_.j=null;_.k=null;_.n=null;_.p=null;_.q=null;_=mk.prototype=hk.prototype=new E;_.D=function nk(b){this.e.g.$()};_.cM={4:1,5:1,6:1,7:1,12:1,18:1};_.a=0;_.b=0;_.c=false;_.d=false;_.e=null;_=pk.prototype=ok.prototype=new E;_.D=function qk(b){kk(this.a)};_.cM={7:1,18:1};_.a=null;_=tk.prototype=rk.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=0;_=vk.prototype=uk.prototype=new I;_.cM={2:1,10:1,30:1};_=xk.prototype=wk.prototype=new E;_.cM={};_=zk.prototype=yk.prototype=new I;_.cM={2:1,10:1,30:1};_=Bk.prototype=Ak.prototype=new I;_.cM={2:1,10:1,30:1};_=Ek.prototype=Dk.prototype=Ck.prototype=new I;_.cM={2:1,10:1,30:1};_=Hk.prototype=Gk.prototype=Fk.prototype=new I;_.cM={2:1,10:1,30:1};_=Kk.prototype=Jk.prototype=Ik.prototype=new I;_.cM={2:1,10:1,30:1};_=Mk.prototype=Lk.prototype=new E;_.cM={30:1,33:1};_=String.prototype;_.eQ=function Sk(b){return Nk(this,b)};_.hC=function Tk(){return Zk(this)};_.cM={1:1,30:1,31:1};var Uk,Vk=0,Wk;_=cl.prototype=_k.prototype=new E;_.cM={};_=el.prototype=dl.prototype=new I;_.cM={2:1,10:1,30:1};_=fl.prototype=new E;_.fb=function hl(b){throw new el('Add not supported on this collection')};_.gb=function il(b){var c;c=gl(this.U(),b);return !!c};_.hb=function jl(){return this.jb()==0};_.ib=function kl(b){var c;c=gl(this.U(),b);if(c){c.K();return true}else{return false}};_.kb=function ll(b){var c,d,e;e=this.jb();b.length<e&&(b=Rd(b,e));d=this.U();for(c=0;c<e;++c){Vd(b,c,d.J())}b.length>e&&Vd(b,e,null);return b};_.cM={};_=nl.prototype=new E;_.eQ=function pl(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[19])){return false}f=ae(b,19);if(this.d!=f.d){return false}for(d=new Vl((new Nl(f)).a);wm(d.a);){c=d.b=ae(xm(d.a),34);e=c.mb();g=c.W();if(!(e==null?this.c:e!=null&&e.cM&&!!e.cM[1]?Kn+ae(e,1) in this.e:xl(this,e,~~Q(e)))){return false}if(!Fn(g,e==null?this.b:e!=null&&e.cM&&!!e.cM[1]?this.e[Kn+ae(e,1)]:wl(this,e,~~Q(e)))){return false}}return true};_.hC=function ql(){var b,c,d;d=0;for(c=new Vl((new Nl(this)).a);wm(c.a);){b=c.b=ae(xm(c.a),34);d+=b.hC();d=~~d}return d};_.cM={19:1};_=ml.prototype=new nl;_.lb=function Hl(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)};_.cM={19:1};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;_=Jl.prototype=new fl;_.eQ=function Kl(b){var c,d,e;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[35])){return false}d=ae(b,35);if(d.jb()!=this.jb()){return false}for(c=d.U();c.I();){e=c.J();if(!this.gb(e)){return false}}return true};_.hC=function Ll(){var b,c,d;b=0;for(c=this.U();c.I();){d=c.J();if(d!=null){b+=Q(d);b=~~b}}return b};_.cM={35:1};_=Nl.prototype=Il.prototype=new Jl;_.gb=function Ol(b){return Ml(this,b)};_.U=function Pl(){return new Vl(this.a)};_.ib=function Ql(b){var c;if(Ml(this,b)){c=ae(b,34).mb();Dl(this.a,c);return true}return false};_.jb=function Rl(){return this.a.d};_.cM={35:1};_.a=null;_=Vl.prototype=Sl.prototype=new E;_.I=function Wl(){return wm(this.a)};_.J=function Xl(){return this.b=ae(xm(this.a),34)};_.K=function Yl(){Ul(this)};_.cM={};_.a=null;_.b=null;_.c=null;_=$l.prototype=new E;_.eQ=function _l(b){var c;if(b!=null&&b.cM&&!!b.cM[34]){c=ae(b,34);if(Fn(this.mb(),c.mb())&&Fn(this.W(),c.W())){return true}}return false};_.hC=function am(){var b,c;b=0;c=0;this.mb()!=null&&(b=Q(this.mb()));this.W()!=null&&(c=Q(this.W()));return b^c};_.cM={34:1};_=bm.prototype=Zl.prototype=new $l;_.mb=function cm(){return null};_.W=function dm(){return this.a.b};_.nb=function em(b){return Bl(this.a,b)};_.cM={34:1};_.a=null;_=gm.prototype=fm.prototype=new $l;_.mb=function hm(){return this.a};_.W=function im(){return this.b.e[Kn+this.a]};_.nb=function jm(b){return Cl(this.b,this.a,b)};_.cM={34:1};_.a=null;_.b=null;_=km.prototype=new fl;_.fb=function lm(b){this.ob(this.jb(),b);return true};_.ob=function mm(b,c){throw new el('Add not supported on this list')};_.eQ=function om(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[20])){return false}g=ae(b,20);if(this.jb()!=g.jb()){return false}e=new zm(this);f=g.U();while(e.b<e.d.jb()){c=xm(e);d=xm(f);if(!(c==null?d==null:P(c,d))){return false}}return true};_.hC=function pm(){var b,c,d;c=1;b=new zm(this);while(b.b<b.d.jb()){d=xm(b);c=31*c+(d==null?0:Q(d));c=~~c}return c};_.U=function rm(){return new zm(this)};_.qb=function sm(){return new Fm(this,0)};_.rb=function tm(b){return new Fm(this,b)};_.sb=function um(b){throw new el('Remove not supported on this list')};_.cM={20:1};_=zm.prototype=vm.prototype=new E;_.I=function Am(){return this.b<this.d.jb()};_.J=function Bm(){return xm(this)};_.K=function Cm(){ym(this)};_.cM={};_.b=0;_.c=-1;_.d=null;_=Fm.prototype=Dm.prototype=new vm;_.cM={};_.a=null;_=Hm.prototype=Gm.prototype=new Jl;_.gb=function Im(b){return ul(this.a,b)};_.U=function Jm(){var b;return b=new Vl(this.b.a),new Mm(b)};_.jb=function Km(){return this.b.a.d};_.cM={35:1};_.a=null;_.b=null;_=Mm.prototype=Lm.prototype=new E;_.I=function Nm(){return wm(this.a.a)};_.J=function Om(){var b;b=Tl(this.a);return b.mb()};_.K=function Pm(){Ul(this.a)};_.cM={};_.a=null;_=Wm.prototype=Qm.prototype=new km;_.fb=function Xm(b){return Vd(this.a,this.b++,b),true};_.ob=function Ym(b,c){(b<0||b>this.b)&&qm(b,this.b);this.a.splice(b,0,c);++this.b};_.gb=function Zm(b){return Tm(this,b,0)!=-1};_.pb=function $m(b){return nm(b,this.b),this.a[b]};_.hb=function _m(){return this.b==0};_.sb=function an(b){return Um(this,b)};_.ib=function bn(b){return Vm(this,b)};_.jb=function cn(){return this.b};_.kb=function dn(b){var c,d,e;b.length<this.b&&(b=(d=b,e=Sd(0,this.b),Ud(d.aC,d.cM,d.qI,e),e));for(c=0;c<this.b;++c){Vd(b,c,this.a[c])}b.length>this.b&&Vd(b,this.b,null);return b};_.cM={20:1,30:1};_.b=0;var en;_=hn.prototype=gn.prototype=new km;_.gb=function jn(b){return false};_.pb=function kn(b){throw new Gk};_.jb=function ln(){return 0};_.cM={20:1,30:1};_=on.prototype=mn.prototype=new ml;_.cM={19:1,30:1};_=rn.prototype=pn.prototype=new Jl;_.fb=function sn(b){var c;return c=zl(this.a,b,this),c==null};_.gb=function tn(b){return ul(this.a,b)};_.hb=function un(){return this.a.d==0};_.U=function vn(){var b;return b=new Vl(ol(this.a).b.a),new Mm(b)};_.ib=function wn(b){return Dl(this.a,b)!=null};_.jb=function xn(){return this.a.d};_.cM={30:1,35:1};_.a=null;_=zn.prototype=yn.prototype=new $l;_.mb=function An(){return this.a};_.W=function Bn(){return this.b};_.nb=function Cn(b){var c;c=this.b;this.b=b;return c};_.cM={34:1};_.a=null;_.b=null;_=En.prototype=Dn.prototype=new I;_.cM={2:1,10:1,30:1};var Hn=X;var ge=new xk,me=new xk,he=new xk,ie=new xk,ke=new xk,je=new xk,ne=new xk,le=new xk;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (de_factfinder_asn_slider_OneTouchSlider && de_factfinder_asn_slider_OneTouchSlider.onScriptLoad)de_factfinder_asn_slider_OneTouchSlider.onScriptLoad(gwtOnLoad);})();
skin/frontend/base/default/js/factfinder_onetouchslider/53ABFAE8983A4589B497F48695DB2A7C.cache.js ADDED
@@ -0,0 +1,484 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){var $gwt_version = "2.3.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '53ABFAE8983A4589B497F48695DB2A7C';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function E(){}
2
+ function K(){}
3
+ function J(){}
4
+ function I(){}
5
+ function H(){}
6
+ function S(){}
7
+ function Z(){}
8
+ function Wn(){}
9
+ function eb(){}
10
+ function nb(){}
11
+ function jb(){}
12
+ function sb(){}
13
+ function zb(){}
14
+ function rb(){}
15
+ function Eb(){}
16
+ function Gb(){}
17
+ function Fb(){}
18
+ function Ub(){}
19
+ function Tb(){}
20
+ function gc(){}
21
+ function fc(){}
22
+ function ic(){}
23
+ function hc(){}
24
+ function kc(){}
25
+ function jc(){}
26
+ function mc(){}
27
+ function lc(){}
28
+ function oc(){}
29
+ function nc(){}
30
+ function qc(){}
31
+ function pc(){}
32
+ function sc(){}
33
+ function rc(){}
34
+ function uc(){}
35
+ function tc(){}
36
+ function wc(){}
37
+ function vc(){}
38
+ function Gc(){}
39
+ function Fc(){}
40
+ function Pc(){}
41
+ function Ic(){}
42
+ function Sc(){}
43
+ function Rc(){}
44
+ function Qc(){}
45
+ function Zc(){}
46
+ function Yc(){}
47
+ function Xc(){}
48
+ function cd(){}
49
+ function ed(){}
50
+ function id(){}
51
+ function dd(){}
52
+ function od(){}
53
+ function ld(){}
54
+ function ud(){}
55
+ function rd(){}
56
+ function xd(){}
57
+ function Bd(){}
58
+ function zd(){}
59
+ function Fd(){}
60
+ function Ld(){}
61
+ function Kd(){}
62
+ function Jd(){}
63
+ function Xd(){}
64
+ function $d(){}
65
+ function Zd(){}
66
+ function ce(){}
67
+ function be(){}
68
+ function ee(){}
69
+ function de(){}
70
+ function Re(){}
71
+ function Qe(){}
72
+ function Te(){}
73
+ function Ve(){}
74
+ function Ye(){}
75
+ function We(){}
76
+ function _e(){}
77
+ function Ze(){}
78
+ function ef(){}
79
+ function gf(){}
80
+ function jf(){}
81
+ function qf(){}
82
+ function pf(){}
83
+ function zf(){}
84
+ function Cf(){}
85
+ function _f(){}
86
+ function Xf(){}
87
+ function fg(){}
88
+ function eg(){}
89
+ function og(){}
90
+ function ug(){}
91
+ function Mg(){}
92
+ function Lg(){}
93
+ function Kg(){}
94
+ function Jg(){}
95
+ function Ig(){}
96
+ function ph(){}
97
+ function wh(){}
98
+ function vh(){}
99
+ function zh(){}
100
+ function yh(){}
101
+ function Bh(){}
102
+ function Hh(){}
103
+ function Jh(){}
104
+ function Lh(){}
105
+ function Nh(){}
106
+ function Vh(){}
107
+ function Uh(){}
108
+ function Yh(){}
109
+ function ai(){}
110
+ function ki(){}
111
+ function ji(){}
112
+ function ni(){}
113
+ function mi(){}
114
+ function pi(){}
115
+ function ti(){}
116
+ function si(){}
117
+ function ri(){}
118
+ function Di(){}
119
+ function Ki(){}
120
+ function Ji(){}
121
+ function Mi(){}
122
+ function Li(){}
123
+ function Oi(){}
124
+ function Ni(){}
125
+ function Qi(){}
126
+ function Pi(){}
127
+ function Ri(){}
128
+ function Zi(){}
129
+ function ej(){}
130
+ function hj(){}
131
+ function kj(){}
132
+ function nj(){}
133
+ function xj(){}
134
+ function vj(){}
135
+ function Ej(){}
136
+ function Dj(){}
137
+ function Nj(){}
138
+ function Mj(){}
139
+ function Lj(){}
140
+ function Lk(){}
141
+ function fk(){}
142
+ function wk(){}
143
+ function Dk(){}
144
+ function Gk(){}
145
+ function Jk(){}
146
+ function Mk(){}
147
+ function Nk(){}
148
+ function Pk(){}
149
+ function Rk(){}
150
+ function Uk(){}
151
+ function Xk(){}
152
+ function $k(){}
153
+ function pl(){}
154
+ function tl(){}
155
+ function vl(){}
156
+ function Dl(){}
157
+ function Cl(){}
158
+ function Zl(){}
159
+ function Yl(){}
160
+ function gm(){}
161
+ function om(){}
162
+ function nm(){}
163
+ function vm(){}
164
+ function Am(){}
165
+ function Lm(){}
166
+ function Tm(){}
167
+ function Wm(){}
168
+ function _m(){}
169
+ function en(){}
170
+ function yn(){}
171
+ function xn(){}
172
+ function Cn(){}
173
+ function Fn(){}
174
+ function On(){}
175
+ function Tn(){}
176
+ function _k(b){}
177
+ function M(b){lb()}
178
+ function N(){lb()}
179
+ function hf(){lb()}
180
+ function Kk(){lb()}
181
+ function Ok(){lb()}
182
+ function Sk(){lb()}
183
+ function Vk(){lb()}
184
+ function Yk(){lb()}
185
+ function Un(){lb()}
186
+ function Qk(b){lb()}
187
+ function Tk(b){lb()}
188
+ function Wk(b){lb()}
189
+ function Zk(b){lb()}
190
+ function ul(b){lb()}
191
+ function rg(){qg()}
192
+ function En(){Jl(this)}
193
+ function Ek(b){this.b=b}
194
+ function Yd(b){this.b=b}
195
+ function $h(b){this.b=b}
196
+ function bm(b){this.b=b}
197
+ function rm(b){this.b=b}
198
+ function Pm(b){this.e=b}
199
+ function Hf(b){this.e=b}
200
+ function _i(b){this.c=b}
201
+ function Bk(b){this.f=b}
202
+ function an(b){this.b=b}
203
+ function yd(){this.b={}}
204
+ function ad(){this.d=++$c}
205
+ function sl(){this.b=new Gb}
206
+ function Hn(){this.b=new En}
207
+ function Oh(){Oh=Wn;new En}
208
+ function ab(){ab=Wn;$=new eb}
209
+ function Kc(){Kc=Wn;Jc=new Pc}
210
+ function Tf(){Tf=Wn;Sf=new of}
211
+ function qg(){qg=Wn;pg=new ad}
212
+ function yj(){yj=Wn;sj=new xj}
213
+ function wn(){wn=Wn;vn=new yn}
214
+ function Ai(){Ai=Wn;Ii()}
215
+ function Si(b,c){Ui(b,c,b.d)}
216
+ function Rf(b,c){yg();Gg(b,c)}
217
+ function Og(b,c){b.x=c}
218
+ function Pg(b,c){Rg(b.x,c,true)}
219
+ function nf(b,c){fn(b.c,c);mf(b)}
220
+ function Qf(b){Mf=b;yg();Ag=b}
221
+ function xf(b){sf();this.b=b}
222
+ function Af(b){sf();this.b=b}
223
+ function Ef(b){return b.d<b.b}
224
+ function Le(b){return b.l|b.m<<22}
225
+ function fj(b){b.b.J(b.e,b.d,b.c)}
226
+ function Tg(b,c){!!b.v&&Gd(b.v,c)}
227
+ function ae(b){_d.call(this,b)}
228
+ function th(b){_d.call(this,b)}
229
+ function R(c,b){c[c.length]=b}
230
+ function wm(b,c){this.c=b;this.b=c}
231
+ function Xm(b,c){this.b=b;this.c=c}
232
+ function Pn(b,c){this.b=b;this.c=c}
233
+ function wi(b){this.x=b;new ce}
234
+ function ql(b,c){b.b.b+=c;return b}
235
+ function rl(b,c){b.b.b+=c;return b}
236
+ function Ol(c,b){return ao+b in c.f}
237
+ function Mm(b){return b.c<b.e.nb()}
238
+ function Df(b){return gn(b.e.c,b.c)}
239
+ function pe(b,c){return b.cM&&b.cM[c]}
240
+ function Dm(b,c){(b<0||b>=c)&&Gm(b,c)}
241
+ function oj(b){Jb(b.b,Oo);Jb(b.b,Po)}
242
+ function pj(b){Jb(b.b,Oo);Hb(b.b,Po)}
243
+ function qj(b){Hb(b.b,Oo);Jb(b.b,Po)}
244
+ function zk(b){!b.f.f&&(b.f.f=Wf(b))}
245
+ function db(b,c){b.c=fb(b.c,[c,false])}
246
+ function ll(){ll=Wn;il={};kl={}}
247
+ function mg(){if(!ig){Hg();ig=true}}
248
+ function yg(){if(!wg){Fg();wg=true}}
249
+ function rj(){yj();this.b=$doc.body}
250
+ function Vd(b){this.e=new En;this.d=b}
251
+ function Id(b,c){this.b=new Vd(c);this.c=b}
252
+ function td(){td=Wn;sd=new bd(lo,new ud)}
253
+ function gd(){gd=Wn;fd=new bd(jo,new id)}
254
+ function nd(){nd=Wn;md=new bd(ko,new od)}
255
+ function sf(){sf=Wn;rf=new ln;kg(new fg)}
256
+ function sh(){sh=Wn;qh=new wh;rh=new zh}
257
+ function ln(){this.b=he(Ae,{30:1},0,0,0)}
258
+ function O(b){lb();this.b=b;kb(new zb,this)}
259
+ function Hd(b){this.b=new Vd(false);this.c=b}
260
+ function df(b){b.parentNode.removeChild(b)}
261
+ function hm(b){return b.c=qe(Nm(b.b),34)}
262
+ function V(b,c,d){return b.apply(c,d);var e}
263
+ function pk(b,c,d){lk(b,c,b.d);lk(b,d,b.j)}
264
+ function gn(b,c){Dm(c,b.c);return b.b[c]}
265
+ function fn(b,c){je(b.b,b.c++,c);return true}
266
+ function Ph(b,c){Qh(b,c.e,c.c,c.d,c.f,c.b)}
267
+ function Qh(b,c,d,e,f,g){Wh(b.b,b,c,d,e,f,g)}
268
+ function Od(b,c,d){var e;e=Rd(b,c);e.jb(d)}
269
+ function ff(b,c,d){this.c=b;this.d=c;this.b=d}
270
+ function ij(b,c,d){this.b=b;this.d=c;this.c=d}
271
+ function lj(b,c,d){this.b=b;this.d=c;this.c=d}
272
+ function vg(){this.b=new Vd(false);this.c=null}
273
+ function qi(){fi.call(this,(ei(),$doc.body))}
274
+ function Dd(b){var c;if(Ad){c=new Bd;Gd(b,c)}}
275
+ function Md(b,c){!b.b&&(b.b=new ln);fn(b.b,c)}
276
+ function vi(b,c){b.$();b.x[Mo]=c!=null?c:Yn}
277
+ function fb(b,c){!b&&(b=[]);b[b.length]=c;return b}
278
+ function mb(){try{null.a()}catch(b){return b}}
279
+ function ve(b){if(b!=null){throw new Ok}return null}
280
+ function Ak(b){if(b.f.f){fj(b.f.f.b);b.f.f=null}}
281
+ function ol(){if(jl==256){il=kl;kl={};jl=0}++jl}
282
+ function Cc(){Cc=Wn;zc=[];Ac=[];Bc=[];xc=new Gc}
283
+ function me(){me=Wn;ke=[];le=[];ne(new ee,ke,le)}
284
+ function ei(){ei=Wn;bi=new ki;ci=new En;di=new Hn}
285
+ function El(b){var c;c=new bm(b);return new Xm(b,c)}
286
+ function Gn(b,c){var d;d=Pl(b.b,c,b);return d==null}
287
+ function ib(b,c){b.length>=c&&b.splice(0,c);return b}
288
+ function cl(c,b){return c.substr(b,c.length-b)}
289
+ function Ib(c,b){return c[b]==null?null:String(c[b])}
290
+ function se(b,c){return b!=null&&b.cM&&!!b.cM[c]}
291
+ function zg(b){return !te(b)&&b!=null&&b.cM&&!!b.cM[14]}
292
+ function gk(b){return Hk(new Ik(b.s.x),b.g.b,b.g.c)}
293
+ function Ge(b,c,d){return a=new Re,a.l=b,a.m=c,a.h=d,a}
294
+ function kg(b){mg();return lg(Ad?Ad:(Ad=new ad),b)}
295
+ function bl(d,b,c){c=el(c);return d.replace(RegExp(b),c)}
296
+ function Ec(){Cc();if(!yc){yc=true;db((ab(),$),xc)}}
297
+ function gi(b){ei();try{b.U()}finally{Tl(di.b,b)!=null}}
298
+ function hi(){ei();try{uh(di,bi)}finally{Jl(di.b);Jl(ci)}}
299
+ function fi(b){this.b=new Xi(this);this.x=b;Ug(this)}
300
+ function gj(b,c,d){this.b=b;this.e=c;this.d=null;this.c=d}
301
+ function Ue(b){this.c=0;this.d=0;this.b=59;this.f=58;this.e=b}
302
+ function Xi(b){this.c=b;this.b=he(ze,{30:1},15,4,0)}
303
+ function Jl(b){b.b=[];b.f={};b.d=false;b.c=null;b.e=0}
304
+ function mf(b){if(b.c.c!=0&&!b.f&&!b.d){b.f=true;uf(b.e,1)}}
305
+ function te(b){return b!=null&&b.tM!=Wn&&!(b.cM&&!!b.cM[1])}
306
+ function ok(b,c,d){vi(b.e,c!=null?c:Yn);vi(b.k,d!=null?d:Yn)}
307
+ function jh(b,c,d){Xg(c);Si(b.b,c);d.appendChild(c.x);Zg(c,b)}
308
+ function Nc(b,c){var d;d=Lc(c);Mc(b).appendChild(d);return d}
309
+ function Wi(b,c){var d;d=Ti(b,c);if(d==-1){throw new Un}Vi(b,d)}
310
+ function $i(b){if(b.b>=b.c.d){throw new Un}return b.c.b[++b.b]}
311
+ function Um(b){if(b.c<=0){throw new Un}return b.b.tb(b.d=--b.c)}
312
+ function Om(b){if(b.d<0){throw new Sk}b.e.wb(b.d);b.c=b.d;b.d=-1}
313
+ function Gm(b,c){throw new Wk('Index: '+b+', Size: '+c)}
314
+ function lg(b,c){return new Yd(Nd((!jg&&(jg=new vg),jg).b,b,c))}
315
+ function vf(b,c){return $wnd.setTimeout(Xn(function(){b.K()}),c)}
316
+ function Ob(b){return typeof b.tabIndex!='undefined'?b.tabIndex:-1}
317
+ function nh(b){b.style[Ho]=Yn;b.style['top']=Yn;b.style[eo]=Yn}
318
+ function Ih(){this.b=new Xi(this);this.x=$doc.createElement(no)}
319
+ function W(){if(T++==0){bb((ab(),$));return true}return false}
320
+ function Rl(b,c){var d;d=b.c;b.c=c;if(!b.d){b.d=true;++b.e}return d}
321
+ function Vl(b){var c;c=b.c;b.c=null;if(b.d){b.d=false;--b.e}return c}
322
+ function fe(b,c){var d,e;d=b;e=ge(0,c);ie(d.aC,d.cM,d.qI,e);return e}
323
+ function ie(b,c,d,e){me();oe(e,ke,le);e.aC=b;e.cM=c;e.qI=d;return e}
324
+ function oe(b,c,d){me();for(var e=0,f=c.length;e<f;++e){b[c[e]]=d[e]}}
325
+ function Pf(b){!!Mf&&b==Mf&&(Mf=null);yg();b===Ag&&(Ag=null)}
326
+ function $f(b){b.f=false;b.g=null;b.b=false;b.c=false;b.d=true;b.e=null}
327
+ function Gf(b){jn(b.e.c,b.c);--b.b;b.c<=b.d&&--b.d<0&&(b.d=0);b.c=-1}
328
+ function Nm(b){if(b.c>=b.e.nb()){throw new Un}return b.e.tb(b.d=b.c++)}
329
+ function qe(b,c){if(b!=null&&!(b.cM&&b.cM[c])){throw new Ok}return b}
330
+ function Ee(b){if(b!=null&&b.cM&&!!b.cM[10]){return b}return new O(b)}
331
+ function hn(b,c,d){for(;d<b.c;++d){if(Vn(c,b.b[d])){return d}}return -1}
332
+ function Ff(b){var c;b.c=b.d;c=gn(b.e.c,b.d++);b.d>=b.b&&(b.d=0);return c}
333
+ function Mb(b){var c=b.parentNode;(!c||c.nodeType!=1)&&(c=null);return c}
334
+ function ui(b){var c,d;d=Ib(b.x,Mo);c=d;if(al(Yn,d)){return null}return c}
335
+ function ng(){var b;if(ig){b=new rg;!!jg&&Gd(jg,b);return null}return null}
336
+ function Uf(b){Tf();if(!b){throw new Zk('cmd cannot be null')}nf(Sf,b)}
337
+ function $g(b,c){b.u==-1?Rf(b.x,c|(b.x.__eventBits||0)):(b.u|=c)}
338
+ function hk(b,c){var d,e;e=b.c>0?b.c:b.o.offsetWidth||0;d=c/e;b.i._(d,0)}
339
+ function ik(b,c){var d,e;e=b.c>0?b.c:b.o.offsetWidth||0;d=c/e;b.i._(0,d)}
340
+ function jn(b,c){var d;d=(Dm(c,b.c),b.b[c]);b.b.splice(c,1);--b.c;return d}
341
+ function Sl(f,b,c){var d,e=f.f;b=ao+b;b in e?(d=e[b]):++f.e;e[b]=c;return d}
342
+ function Oc(b,c){var d;d=Lc(c);Mc(b).insertBefore(d,b.b.firstChild);return d}
343
+ function Ti(b,c){var d;for(d=0;d<b.d;++d){if(b.b[d]==c){return d}}return -1}
344
+ function kn(b,c){var d;d=hn(b,c,0);if(d==-1){return false}jn(b,d);return true}
345
+ function Sb(b){!b.gwt_uid&&(b.gwt_uid=1);return 'gwt-uid-'+b.gwt_uid++}
346
+ function ue(b){return ~~Math.max(Math.min(b,2147483647),-2147483648)}
347
+ function dk(b,c,d,e,f,g,h,i){$j.call(this,b,c,d,e,f,g,h);this.b=i}
348
+ function Vm(b,c){var d;this.b=b;this.e=b;d=b.nb();(c<0||c>d)&&Gm(c,d);this.c=c}
349
+ function bd(b,c){this.d=++$c;this.b=c;!Uc&&(Uc=new yd);Uc.b[b]=this;this.c=b}
350
+ function P(b,c){var d;return d=b,d.tM==Wn||d.cM&&!!d.cM[1]?d.eQ(c):d===c}
351
+ function Q(b){var c;return c=b,c.tM==Wn||c.cM&&!!c.cM[1]?c.hC():c.$H||(c.$H=++U)}
352
+ function re(b){if(b!=null&&(b.tM==Wn||b.cM&&!!b.cM[1])){throw new Ok}return b}
353
+ function al(b,c){if(!(c!=null&&c.cM&&!!c.cM[1])){return false}return String(b)==c}
354
+ function Dn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
355
+ function Vn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
356
+ function Pj(b){b.k>1&&(b.k=1);b.j<0&&(b.j=0);b.j>1&&(b.j=1);b.j>b.k&&(b.k=b.j)}
357
+ function Nf(b,c,d){var e;e=Lf;Lf=b;c==Mf&&xg(b.type)==8192&&(Mf=null);d.P(b);Lf=e}
358
+ function ne(b,c,d){var e=0,f;for(var g in b){if(f=b[g]){c[e]=g;d[e]=f;++e}}}
359
+ function Y(b,c,d){var e;e=W();try{return V(b,c,d)}finally{e&&cb((ab(),$));--T}}
360
+ function X(c){return function(){try{return Y(c,this,arguments)}catch(b){throw b}}}
361
+ function cb(b){var c,d;if(b.c){d=null;do{c=b.c;b.c=null;d=gb(c,d)}while(b.c);b.c=d}}
362
+ function bb(b){var c,d;if(b.b){d=null;do{c=b.b;b.b=null;d=gb(c,d)}while(b.b);b.b=d}}
363
+ function bf(b){var c,d;cf();c=Mb(b);d=Lb(b);af.appendChild(b);return new ff(c,d,b)}
364
+ function Wl(e,b){var c,d=e.f;b=ao+b;if(b in d){c=d[b];--e.e;delete d[b]}return c}
365
+ function Kb(b){var c=b.firstChild;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
366
+ function Lb(b){var c=b.nextSibling;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
367
+ function xb(b){var c;c=ib(yb(b,mb()),3);c.length==0&&(c=ib((new nb).z(),1));return c}
368
+ function Mc(b){var c;if(!b.b){c=$doc.getElementsByTagName('head')[0];b.b=c}return b.b}
369
+ function he(b,c,d,e,f){var g;g=ge(f,e);me();oe(g,ke,le);g.aC=b;g.cM=c;g.qI=d;return g}
370
+ function lk(b,c,d){var e;e=c*(b.c>0?b.c:b.o.offsetWidth||0);d.style[Ho]=e+(ec(),Lo)}
371
+ function jk(b,c,d){var e,f,g;g=b.c>0?b.c:b.o.offsetWidth||0;e=c/g;f=(c+d*2)/g;b.i._(e,f)}
372
+ function Sg(b,c,d){$g(b,xg(d.c));return new Yd(Nd((!b.v?(b.v=new Hd(b)):b.v).b,d,c))}
373
+ function kk(b){Qf(b.x);pj(b.b);Rg(b.r.x,Ro,false);Rg(b.r.x,So,true);Ph(b.q,(Aj(),uj))}
374
+ function mk(b){Pf(b.x);qj(b.b);Rg(b.r.x,So,false);Rg(b.r.x,Ro,true);Ph(b.q,(Aj(),uj))}
375
+ function Rh(b){Oh();this.b=new Xh(this,b.e,b.c,b.d,b.f,b.b);this.x[Go]='gwt-Image'}
376
+ function Mh(b){this.b=new Xi(this);this.x=$doc.createElement(no);this.x.innerHTML=b||Yn}
377
+ function of(){this.b=new xf(this);this.c=new ln;this.e=new Af(this);this.g=new Hf(this)}
378
+ function jm(b){var c;this.d=b;c=new ln;b.d&&fn(c,new rm(b));Il(b,c);Hl(b,c);this.b=new Pm(c)}
379
+ function Ng(b,c){var d=b.parentNode;if(!d){return}d.insertBefore(c,b);d.removeChild(b)}
380
+ function Of(b){var c;c=bg(Vf,b);if(!c&&!!b){b.cancelBubble=true;b.preventDefault()}return c}
381
+ function wl(b,c){var d;while(b.M()){d=b.N();if(c==null?d==null:P(c,d)){return b}}return null}
382
+ function Kl(b,c){return c==null?b.d:c!=null&&c.cM&&!!c.cM[1]?Ol(b,qe(c,1)):Nl(b,c,~~Q(c))}
383
+ function Tl(b,c){return c==null?Vl(b):c!=null&&c.cM&&!!c.cM[1]?Wl(b,qe(c,1)):Ul(b,c,~~Q(c))}
384
+ function Pl(b,c,d){return c==null?Rl(b,d):c!=null&&c.cM&&!!c.cM[1]?Sl(b,qe(c,1),d):Ql(b,c,d,~~Q(c))}
385
+ function Ll(b,c){return c==null?b.c:c!=null&&c.cM&&!!c.cM[1]?b.f[ao+qe(c,1)]:Ml(b,c,~~Q(c))}
386
+ function kf(b){var c;c=Df(b.g);Gf(b.g);c!=null&&c.cM&&!!c.cM[11]&&new hf(qe(c,11));b.d=false;mf(b)}
387
+ function nk(b){Ak(b.g);Pf(b.x);oj(b.b);Rg(b.r.x,Ro,false);Rg(b.r.x,So,false);Ph(b.q,(zj(),tj))}
388
+ function _d(b){N.call(this,b.nb()==0?null:qe(b.ob(he(Ce,{22:1,30:1},10,0,0)),22)[0]);this.b=b}
389
+ function Ii(){Ii=Wn;Ei=new Ki;Fi=new Mi;Gi=new Oi;Hi=new Qi;ie(ye,{30:1},29,[Ei,Fi,Gi,Hi])}
390
+ function Wf(b){yg();!Yf&&(Yf=new ad);if(!Vf){Vf=new Id(null,true);Zf=new _f}return new Yd(Nd(Vf.b,Yf,b))}
391
+ function tf(b){b.c?($wnd.clearInterval(b.d),undefined):($wnd.clearTimeout(b.d),undefined);kn(rf,b)}
392
+ function Yg(b,c){b.t&&(b.x.__listener=null,undefined);!!b.x&&Ng(b.x,c);b.x=c;b.t&&(b.x.__listener=b,undefined)}
393
+ function yb(b,c){var d;d=tb(b,c);return d.length==0?(new nb).B(c):(d.length>=1&&d.splice(0,1),d)}
394
+ function Pb(b,c){while(c){if(b==c){return true}c=c.parentNode;c&&c.nodeType!=1&&(c=null)}return false}
395
+ function Lc(b){var c;c=$doc.createElement(io);c['language']='text/css';c.textContent=b||Yn;return c}
396
+ function cf(){if(!af){af=$doc.createElement(no);af.style.display='none';(ei(),$doc.body).appendChild(af)}}
397
+ function Zh(b){var c,d;c=(d=$doc.createEvent('HTMLEvents'),d.initEvent(vo,false,false),d);b.b.x.dispatchEvent(c)}
398
+ function Td(b){var c,d;if(b.b){try{for(d=new Pm(b.b);d.c<d.e.nb();){c=qe(Nm(d),21);c.y()}}finally{b.b=null}}}
399
+ function Vi(b,c){var d;if(c<0||c>=b.d){throw new Vk}--b.d;for(d=c;d<b.d;++d){je(b.b,d,b.b[d+1])}je(b.b,b.d,null)}
400
+ function Vg(b,c){var d;switch(xg(c.type)){case 16:case 32:d=c.relatedTarget;if(!!d&&Pb(b.x,d)){return}}Vc(c,b,b.x)}
401
+ function qk(b,c,d){var e;e=b.c>0?b.c:b.o.offsetWidth||0;b.n.style[Ho]=c*e+(ec(),Lo);b.n.style[No]=(d-c)*e+Lo}
402
+ function rk(b,c,d){var e,f;f=~~(b.q.b.f/2);e=c+(d-c)/2;b.q.x.style[Ho]=e*(b.c>0?b.c:b.o.offsetWidth||0)-f+(ec(),Lo)}
403
+ function Il(f,b){var c=f.f;for(var d in c){if(d.charCodeAt(0)==58){var e=new wm(f,d.substring(1));b.jb(e)}}}
404
+ function nl(b){ll();var c=ao+b;var d=kl[c];if(d!=null){return d}d=il[c];d==null&&(d=ml(b));ol();return kl[c]=d}
405
+ function Rd(b,c){var d,e;e=qe(Ll(b.e,c),19);if(!e){e=new En;Pl(b.e,c,e)}d=qe(e.c,20);if(!d){d=new ln;Rl(e,d)}return d}
406
+ function tb(b,c){var d,e,f;f=c&&c.stack?c.stack.split('\n'):[];for(d=0,e=f.length;d<e;++d){f[d]=b.A(f[d])}return f}
407
+ function L(b){var c,d,e;d=he(Be,{30:1},33,b.length,0);for(e=0,c=b.length;e<c;++e){if(!b[e]){throw new Yk}d[e]=b[e]}}
408
+ function lb(){var b,c,d,e;d=xb(new zb);e=he(Be,{30:1},33,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new _k(d[b])}L(e)}
409
+ function Fe(b){var c,d,e;c=b&4194303;d=~~b>>22&4194303;e=b<0?1048575:0;return a=new Re,a.l=c,a.m=d,a.h=e,a}
410
+ function gwtOnLoad(c,d,e,f){$moduleName=d;$moduleBase=e;if(c)try{Xn(De)()}catch(b){c(d)}else{Xn(De)()}}
411
+ function xk(b){Sg(b.f,b,(gd(),gd(),fd));Sg(b.f,b,(td(),td(),sd));Sg(b.f,b,(nd(),nd(),md));Sg(b.f,new Ek(b),sd)}
412
+ function Oj(b){var c,d;c=b.fb(b.j);d=b.fb(b.k);ok(b.n,c,d);pk(b.n,b.j,b.k);qk(b.n,b.j,b.k);rk(b.n,b.j,b.k);sk(b.n,b.j,b.k)}
413
+ function Qd(b,c,d){var e,f,g;e=Sd(b,c);f=e.mb(d);f&&e.lb()&&(g=qe(Ll(b.e,c),19),qe(Vl(g),20),g.e==0&&Tl(b.e,c),undefined)}
414
+ function Sd(b,c){var d,e;e=qe(Ll(b.e,c),19);if(!e){return wn(),wn(),vn}d=qe(e.c,20);if(!d){return wn(),wn(),vn}return d}
415
+ function Qg(b){var c,d;c=b[Go]==null?null:String(b[Go]);d=c.indexOf(gl(32));if(d>=0){return c.substr(0,d-0)}return c}
416
+ function kh(b,c){var d;if(c.w!=b){return false}try{Zg(c,null)}finally{d=c.x;Mb(d).removeChild(d);Wi(b.b,c)}return true}
417
+ function Hk(b,c,d){var e,f;f=b.c;e=b.b;if(f<0||e<0){return false}if(c<b.d||d<b.e){return false}f+=b.d;e+=b.e;return f>c&&e>d}
418
+ function Vc(b,c,d){var e,f,g;if(Uc){g=qe(Uc.b[b.type],3);if(g){e=g.b.b;f=g.b.c;g.b.b=b;g.b.c=d;Tg(c,g.b);g.b.b=e;g.b.c=f}}}
419
+ function Cj(b,c,d,e,f,g,h,i,j){var k,l,m;k=ii(b);if(k){m=new tk;m.c=i;l=new dk(c,d,e,f,g,h,m,j);m.i=l;jh(k,m,k.x)}}
420
+ function Ch(b,c){if(b.s){throw new Tk('Composite.initWidget() may only be called once.')}Xg(c);Og(b,c.x);b.s=c;Zg(c,b)}
421
+ function im(b){if(!b.c){throw new Tk('Must call next() before remove().')}else{Om(b.b);Tl(b.d,b.c.qb());b.c=null}}
422
+ function hd(b,c){c.b=b.b.clientX||0;c.c=b.b.clientY||0;c.d=Hk(new Ik(c.f.d),c.b,c.c);c.e=Hk(new Ik(c.f.j),c.b,c.c);c.f.i.ab()}
423
+ function dj(b,c,d,e,f,g){var h;h='url('+c+Jo+-d+Ko+-e+Lo;b.style['background']=h;b.style[No]=f+(ec(),Lo);b.style['height']=g+Lo}
424
+ function Hl(i,b){var c=i.b;for(var d in c){var e=parseInt(d,10);if(d==e){var f=c[e];for(var g=0,h=f.length;g<h;++g){b.jb(f[g])}}}}
425
+ function Ml(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.qb();if(i.pb(b,h)){return g.$()}}}return null}
426
+ function Nl(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.qb();if(i.pb(b,h)){return true}}}return false}
427
+ function am(b,c){var d,e,f;if(c!=null&&c.cM&&!!c.cM[34]){d=qe(c,34);e=d.qb();if(Kl(b.b,e)){f=Ll(b.b,e);return Dn(d.$(),f)}}return false}
428
+ function hb(b){var c,d,e;e=Yn;b=dl(b);c=b.indexOf(Zn);if(c!=-1){d=b.indexOf($n)==0?8:0;e=dl(b.substr(d,c-d))}return e.length>0?e:_n}
429
+ function Je(b){var c,d;if(b>-129&&b<128){c=b+128;He==null&&(He=he(xe,{30:1},26,256,0));d=He[c];!d&&(d=He[c]=Fe(b));return d}return Fe(b)}
430
+ function kb(b,c){var d,e,f,g;f=yb(b,te(c.b)?re(c.b):null);g=he(Be,{30:1},33,f.length,0);for(d=0,e=g.length;d<e;++d){g[d]=new _k(f[d])}L(g)}
431
+ function Pe(){Pe=Wn;Me=(a=new Re,a.l=4194303,a.m=4194303,a.h=524287,a);Ne=(a=new Re,a.l=0,a.m=0,a.h=524288,a);Je(1);Je(2);Oe=Je(0)}
432
+ function dl(d){if(d.length==0||d[0]>bo&&d[d.length-1]>bo){return d}var b=d.replace(/^(\s*)/,Yn);var c=b.replace(/\s*$/,Yn);return c}
433
+ function je(b,c,d){if(d!=null){if(b.qI>0&&!pe(d,b.qI)){throw new Kk}if(b.qI<0&&(d.tM==Wn||d.cM&&!!d.cM[1])){throw new Kk}}return b[c]=d}
434
+ function Wh(b,c,d,e,f,g,h){if(!al(b.e,d)||b.c!=e||b.d!=f||b.f!=g||b.b!=h){b.e=d;b.c=e;b.d=f;b.f=g;b.b=h;dj(c.x,d,e,f,g,h);Uf(new $h(c))}}
435
+ function Ci(){var b;Ai();wi.call(this,(b=$doc.createElement('INPUT'),b.type='text',b),(!$e&&($e=new _e),!Xe&&(Xe=new Ye)));this.x[Go]='gwt-TextBox'}
436
+ function gb(c,d){var b,e,f,g;for(e=0,f=c.length;e<f;++e){g=c[e];try{g[1]?g[0].xb()&&(d=fb(d,g)):g[0].y()}catch(b){b=Ee(b);if(!se(b,2))throw b}}return d}
437
+ function el(b){var c;c=0;while(0<=(c=b.indexOf('\\',c))){b.charCodeAt(c+1)==36?(b=b.substr(0,c-0)+'$'+cl(b,++c)):(b=b.substr(0,c-0)+cl(b,++c))}return b}
438
+ function ec(){ec=Wn;dc=new gc;bc=new ic;Yb=new kc;Zb=new mc;cc=new oc;ac=new qc;$b=new sc;Xb=new uc;_b=new wc;ie(we,{30:1},23,[dc,bc,Yb,Zb,cc,ac,$b,Xb,_b])}
439
+ function Xg(b){if(!b.w){(ei(),Kl(di.b,b))&&gi(b)}else if(se(b.w,17)){qe(b.w,17).X(b)}else if(b.w){throw new Tk("This widget's parent does not implement HasWidgets")}}
440
+ function Nb(b){if(b.ownerDocument.defaultView.getComputedStyle(b,Yn).direction==co){return (b.scrollLeft||0)-((b.scrollWidth||0)-b.clientWidth)}return b.scrollLeft||0}
441
+ function uf(b,c){if(c<=0){throw new Qk('must be positive')}b.c?($wnd.clearInterval(b.d),undefined):($wnd.clearTimeout(b.d),undefined);kn(rf,b);b.c=false;b.d=vf(b,c);fn(rf,b)}
442
+ function Gd(c,d){var b,e,f;!d.f||d.F();f=d.g;d.g=c.c;try{Pd(c.b,d)}catch(b){b=Ee(b);if(se(b,9)){e=b;throw new ae(e.b)}else throw b}finally{f==null?(d.f=true,d.g=null):(d.g=f)}}
443
+ function bg(b,c){var d,e,f,g,h;if(!!Yf&&!!b&&Kl(b.b.e,Yf)){d=Zf.b;e=Zf.c;f=Zf.d;g=Zf.e;$f(Zf);Zf.e=c;Gd(b,Zf);h=!(Zf.b&&!Zf.c);Zf.b=d;Zf.c=e;Zf.d=f;Zf.e=g;return h}return true}
444
+ function ge(b,c){var d=new Array(c);if(b==3){for(var e=0;e<c;++e){var f=new Object;f.l=f.m=f.h=0;d[e]=f}}else if(b>0){var f=[null,0,false][b];for(var e=0;e<c;++e){d[e]=f}}return d}
445
+ function Aj(){Aj=Wn;uj=new Ue('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAJElEQVR42u3BMQEAAADCoPVPbQlPoAAAAAAAAAAAAAAAAAA4GTWzAAHmFYjpAAAAAElFTkSuQmCC')}
446
+ function Ul(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.qb();if(i.pb(b,h)){d.length==1?delete i.b[c]:d.splice(e,1);--i.e;return g.$()}}}return null}
447
+ function Ql(k,b,c,d){var e=k.b[d];if(e){for(var f=0,g=e.length;f<g;++f){var h=e[f];var i=h.qb();if(k.pb(b,i)){var j=h.$();h.rb(c);return j}}}else{e=k.b[d]=[]}var h=new Pn(b,c);e.push(h);++k.e;return null}
448
+ function Zg(b,c){var d;d=b.w;if(!c){try{!!d&&d.S()&&b.U()}finally{b.w=null}}else{if(d){throw new Tk('Cannot set a new parent without first clearing the old parent')}b.w=c;c.S()&&b.T()}}
449
+ function Se(b){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:b})}
450
+ function Wg(b){if(!b.S()){throw new Tk("Should only call onDetach when the widget is attached to the browser's document")}try{b.W()}finally{try{b.R()}finally{b.x.__listener=null;b.t=false}}}
451
+ function Ug(b){var c;if(b.S()){throw new Tk("Should only call onAttach when the widget is detached from the browser's document")}b.t=true;b.x.__listener=b;c=b.u;b.u=-1;c>0&&(b.u==-1?Rf(b.x,c|(b.x.__eventBits||0)):(b.u|=c));b.Q();b.V()}
452
+ function uh(c,d){var i;sh();var b,e,f,g,h;e=null;for(h=c.Y();h.M();){g=qe(h.N(),15);try{d.Z(g)}catch(b){b=Ee(b);if(se(b,10)){f=b;!e&&(e=new Hn);i=Pl(e.b,f,e)}else throw b}}if(e){throw new th(e)}}
453
+ function gl(b){var c,d;if(b>=65536){c=55296+(~~(b-65536)>>10&1023)&65535;d=56320+(b-65536&1023)&65535;return String.fromCharCode(c)+String.fromCharCode(d)}else{return String.fromCharCode(b&65535)}}
454
+ function ml(b){var c,d,e,f;c=0;e=b.length;f=e-4;d=0;while(d<f){c=b.charCodeAt(d+3)+31*(b.charCodeAt(d+2)+31*(b.charCodeAt(d+1)+31*(b.charCodeAt(d)+31*c)))|0;d+=4}while(d<e){c=c*31+b.charCodeAt(d++)}return c|0}
455
+ function Nd(b,c,d){var e;if(!c){throw new Zk('Cannot add a handler with a null type')}if(!d){throw new Zk('Cannot add a null handler')}b.c>0?Md(b,new ij(b,c,d)):(e=Rd(b,c),e.jb(d),undefined);return new gj(b,c,d)}
456
+ function Ui(b,c,d){var e,f;if(d<0||d>b.d){throw new Vk}if(b.d==b.b.length){f=he(ze,{30:1},15,b.b.length*2,0);for(e=0;e<b.b.length;++e){je(f,e,b.b[e])}b.b=f}++b.d;for(e=b.d-1;e>d;--e){je(b.b,e,b.b[e-1])}je(b.b,d,c)}
457
+ function ii(b){ei();var c,d;d=qe(Ll(ci,b),16);c=null;if(b!=null){if(!(c=$doc.getElementById(b))){return null}}if(d){if(!c||d.x==c){return d}}ci.e==0&&kg(new ni);!c?(d=new qi):(d=new fi(c));Pl(ci,b,d);Gn(di,d);return d}
458
+ function Rg(b,c,d){if(!b){throw new M('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.')}c=dl(c);if(c.length==0){throw new Qk('Style names cannot be empty')}d?Hb(b,c):Jb(b,c)}
459
+ function yk(b,c){var d,e,f,g,h,i;g=xg(c.e.type);if(g==4){c.e.preventDefault()}else if(g==64){f=c.e;h=f.clientX||0;i=f.clientY||0;d=h-b.b;e=b.c-i;b.b=h;b.c=i;b.d?hk(b.f,d):b.e?ik(b.f,d):jk(b.f,d,e);c.e.preventDefault()}else g==8&&b.f.i.db()}
460
+ function Hb(b,c){var d,e,f,g;c=dl(c);g=b.className;d=g.indexOf(c);while(d!=-1){if(d==0||g.charCodeAt(d-1)==32){e=d+c.length;f=g.length;if(e==f||e<f&&g.charCodeAt(e)==32){break}}d=g.indexOf(c,d+1)}if(d==-1){g.length>0&&(g+=bo);b.className=g+c}}
461
+ function Zj(b,c){var d,e;e=b.e+b.c;b.g!=0&&!b.d?e-c<~~(b.g/2)?(d=e):c-b.e<~~(b.g/2)?(d=b.e):c==b.e?(d=ue(Math.floor(c))):c==e?(d=ue(Math.ceil(c))):(d=Le(Ke(Ie(Math.round(c/b.g)),Je(b.g)))):(d=Le(Ie(Math.round(c))));d<b.e&&(d=b.e);d>e&&(d=e);return d}
462
+ function Dc(){Cc();var b,c,d;d=null;if(Bc.length!=0){b=Bc.join(Yn);c=Oc((Kc(),Jc),b);!Bc&&(d=c);Bc.length=0}if(zc.length!=0){b=zc.join(Yn);c=Nc((Kc(),Jc),b);!zc&&(d=c);zc.length=0}if(Ac.length!=0){b=Ac.join(Yn);c=Nc((Kc(),Jc),b);!Ac&&(d=c);Ac.length=0}yc=false;return d}
463
+ function Ik(b){var c,d;this.d=(c=b.getBoundingClientRect&&b.getBoundingClientRect(),c?c.left+Nb(b.ownerDocument.body):Qb(b));this.e=(d=b.getBoundingClientRect&&b.getBoundingClientRect(),d?d.top+(b.ownerDocument.body.scrollTop||0):Rb(b));this.c=b.clientWidth;this.b=b.clientHeight}
464
+ function lf(b,c){var d,e,f;f=false;try{b.d=true;b.g.b=b.c.c;uf(b.b,10000);while(Ef(b.g)){e=Ff(b.g);try{if(e==null){return}if(e!=null&&e.cM&&!!e.cM[11]){d=qe(e,11);Zh(d)}}finally{f=b.g.c==-1;f||Gf(b.g)}if((new Date).getTime()-c>=100){return}}}finally{if(!f){tf(b.b);b.d=false;mf(b)}}}
465
+ function sk(b,c,d){var e;e=new sl;e.b.b+='border-width:';e.b.b+='0px ';rl(e,b.c>0?b.c:b.o.offsetWidth||0);e.b.b+=Ko;e.b.b+=100;e.b.b+='px 0px;';e.b.b+='top:';e.b.b+=-100+(1-(d-c))*100;e.b.b+=To;e.b.b+='left:';ql(e,c*(b.c>0?b.c:b.o.offsetWidth||0));e.b.b+=To;b.r.x.setAttribute(io,e.b.b)}
466
+ function Jb(b,c){var d,e,f,g,h,i,j;c=dl(c);j=b.className;f=j.indexOf(c);while(f!=-1){if(f==0||j.charCodeAt(f-1)==32){g=f+c.length;h=j.length;if(g==h||g<h&&j.charCodeAt(g)==32){break}}f=j.indexOf(c,f+1)}if(f!=-1){d=dl(j.substr(0,f-0));e=dl(cl(j,f+c.length));d.length==0?(i=e):e.length==0?(i=d):(i=d+bo+e);b.className=i}}
467
+ function Pd(c,d){var b,e,f,g,h,i,j;if(!d){throw new Zk('Cannot fire null event')}try{++c.c;h=Sd(c,d.E());e=null;i=c.d?h.vb(h.nb()):h.ub();while(c.d?i.c>0:i.c<i.e.nb()){g=c.d?Um(i):Nm(i);try{d.D(qe(g,18))}catch(b){b=Ee(b);if(se(b,10)){f=b;!e&&(e=new Hn);j=Pl(e.b,f,e)}else throw b}}if(e){throw new _d(e)}}finally{--c.c;c.c==0&&Td(c)}}
468
+ function Hg(){var e=$wnd.onbeforeunload;var f=$wnd.onunload;$wnd.onbeforeunload=function(b){var c,d;try{c=Xn(ng)()}finally{d=e&&e(b)}if(c!=null){return c}if(d!=null){return d}};$wnd.onunload=Xn(function(b){try{ig&&Dd((!jg&&(jg=new vg),jg))}finally{f&&f(b);$wnd.onresize=null;$wnd.onscroll=null;$wnd.onbeforeunload=null;$wnd.onunload=null}})}
469
+ function $j(b,c,d,e,f,g,h){var i,j,k;this.n=h;this.f=f;this.e=b;k=c-b;this.c=k==0?1:k;this.d=true;g==0?this.c>4000?(this.g=100):this.c>2000?(this.g=50):this.c>1000?(this.g=25):this.c>500?(this.g=10):this.c>100?(this.g=5):(this.g=0):(this.g=g);if(k!=0){i=(d-this.e)/this.c;j=(e-this.e)/this.c;this.j=i;this.k=j;Pj(this);Oj(this)}else{this.j=0;this.k=1;Pj(this);Oj(this)}}
470
+ function Xh(b,c,d,e,f,g){var h,i;this.c=d;this.d=e;this.f=f;this.b=g;this.e=c;Yg(b,(h=$doc.createElement('span'),h.innerHTML=(i='width: '+f+'px; height: '+g+'px; background: url('+c+Jo+-d+Ko+-e+Lo,"<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='"+$moduleBase+"clear.cache.gif' style='"+i+"' border='0'>")||Yn,Kb(h)));b.u==-1?Rf(b.x,133333119|(b.x.__eventBits||0)):(b.u|=133333119)}
471
+ function Bj(b){var c;var d;var e;var f;var g;var h;var i;var j;var k;if(b){c=b['hostElementId'];d=b['leftBorder'];e=b['rightBorder'];f=b['currentLeft'];g=b['currentRight'];h=b['stepSize'];i=b['unit'];j=b['callback'];k=b[No]}!c&&(c=Yn);!d&&(d=0);!e&&(e=0);d>e&&(d=e);!f&&(f=d);!g&&(g=e);!h&&(h=0);i=i==null?Qo:i.indexOf(Qo)!=-1?i:'%n '+i;(!j||typeof j!=$n)&&(j=null);!k&&(k=0);Cj(c,d,e,f,g,i,h,k,j)}
472
+ function Rb(b){if(b.offsetTop==null){return 0}var c=0;var d=b.ownerDocument;var e=b.parentNode;if(e){while(e.offsetParent){c-=e.scrollTop;e=e.parentNode}}while(b){c+=b.offsetTop;if(d.defaultView.getComputedStyle(b,Yn)[eo]==fo){c+=d.body.scrollTop;return c}var f=b.offsetParent;f&&$wnd.devicePixelRatio&&(c+=parseInt(d.defaultView.getComputedStyle(f,Yn).getPropertyValue('border-top-width')));if(f&&f.tagName==go&&b.style.position==ho){break}b=f}return c}
473
+ function De(){var b;!!$stats&&Se('com.google.gwt.user.client.UserAgentAsserter');b=hg();al(mo,b)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (safari) does not match the runtime user.agent value ('+b+'). Expect more errors.\n'),undefined);!!$stats&&Se('de.factfinder.asn.slider.client.StandAloneOneTouchSlider');$wnd.oneTouchSlider={};$wnd.oneTouchSlider.addSlider=Xn(Bj);$wnd.oneTouchSliderOnLoad&&typeof $wnd.oneTouchSliderOnLoad==$n&&$wnd.oneTouchSliderOnLoad()}
474
+ function Qb(b){if(b.offsetLeft==null){return 0}var c=0;var d=b.ownerDocument;var e=b.parentNode;if(e){while(e.offsetParent){c-=e.scrollLeft;d.defaultView.getComputedStyle(e,Yn).getPropertyValue('direction')==co&&(c+=e.scrollWidth-e.clientWidth);e=e.parentNode}}while(b){c+=b.offsetLeft;if(d.defaultView.getComputedStyle(b,Yn)[eo]==fo){c+=d.body.scrollLeft;return c}var f=b.offsetParent;f&&$wnd.devicePixelRatio&&(c+=parseInt(d.defaultView.getComputedStyle(f,Yn).getPropertyValue('border-left-width')));if(f&&f.tagName==go&&b.style.position==ho){break}b=f}return c}
475
+ function hg(){var c=navigator.userAgent.toLowerCase();var d=function(b){return parseInt(b[1])*1000+parseInt(b[2])};if(function(){return c.indexOf(oo)!=-1}())return oo;if(function(){return c.indexOf('webkit')!=-1}())return mo;if(function(){return c.indexOf(po)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(po)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var b=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(b&&b.length==3)return d(b)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'}
476
+ function Ie(b){var c,d,e,f,g,h,i,j;if(isNaN(b)){return Pe(),Oe}if(b<-9223372036854775808){return Pe(),Ne}if(b>=9223372036854775807){return Pe(),Me}f=false;if(b<0){f=true;b=-b}e=0;if(b>=17592186044416){e=~~Math.max(Math.min(b/17592186044416,2147483647),-2147483648);b-=e*17592186044416}d=0;if(b>=4194304){d=~~Math.max(Math.min(b/4194304,2147483647),-2147483648);b-=d*4194304}c=~~Math.max(Math.min(b,2147483647),-2147483648);g=(a=new Re,a.l=c,a.m=d,a.h=e,a);f&&(h=~g.l+1&4194303,i=~g.m+(h==0?1:0)&4194303,j=~g.h+(h==0&&i==0?1:0)&1048575,g.l=h,g.m=i,g.h=j,undefined);return g}
477
+ function Ke(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;d=b.l&8191;e=~~b.l>>13|(b.m&15)<<9;f=~~b.m>>4&8191;g=~~b.m>>17|(b.h&255)<<5;h=~~(b.h&1048320)>>8;i=c.l&8191;j=~~c.l>>13|(c.m&15)<<9;k=~~c.m>>4&8191;l=~~c.m>>17|(c.h&255)<<5;m=~~(c.h&1048320)>>8;z=d*i;A=e*i;B=f*i;C=g*i;D=h*i;if(j!=0){A+=d*j;B+=e*j;C+=f*j;D+=g*j}if(k!=0){B+=d*k;C+=e*k;D+=f*k}if(l!=0){C+=d*l;D+=e*l}m!=0&&(D+=d*m);o=z&4194303;p=(A&511)<<13;n=o+p;r=~~z>>22;s=~~A>>9;t=(B&262143)<<4;u=(C&31)<<17;q=r+s+t+u;w=~~B>>18;x=~~C>>5;y=(D&4095)<<8;v=w+x+y;q+=~~n>>22;n&=4194303;v+=~~q>>22;q&=4194303;v&=1048575;return Ge(n,q,v)}
478
+ function xg(b){switch(b){case 'blur':return 4096;case 'change':return 1024;case qo:return 1;case ro:return 2;case 'focus':return 2048;case so:return 128;case to:return 256;case uo:return 512;case vo:return 32768;case 'losecapture':return 8192;case jo:return 4;case wo:return 64;case ko:return 32;case lo:return 16;case xo:return 8;case 'scroll':return 16384;case 'error':return 65536;case 'DOMMouseScroll':case yo:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case zo:return 1048576;case Ao:return 2097152;case Bo:return 4194304;case Co:return 8388608;case Do:return 16777216;case Eo:return 33554432;case Fo:return 67108864;case 'ended':return 134217728;case 'progress':return 268435456;case 'canplaythrough':return 536870912;default:return -1;}}
479
+ function Fg(){Bg=Xn(function(b){if(!Of(b)){b.stopPropagation();b.preventDefault();return false}return true});Dg=Xn(function(b){var c,d=this;while(d&&!(c=d.__listener)){d=d.parentNode}d&&d.nodeType!=1&&(d=null);c&&zg(c)&&Nf(b,d,c)});Eg=Xn(function(b){this.__gwtLastUnhandledEvent=b.type;Dg.call(this,b)});Cg=Xn(function(b){var c=Bg;if(c(b)){var d=Ag;if(d&&d.__listener){if(zg(d.__listener)){Nf(b,d,d.__listener);b.stopPropagation()}}}});$wnd.addEventListener(qo,Cg,true);$wnd.addEventListener(ro,Cg,true);$wnd.addEventListener(jo,Cg,true);$wnd.addEventListener(xo,Cg,true);$wnd.addEventListener(wo,Cg,true);$wnd.addEventListener(lo,Cg,true);$wnd.addEventListener(ko,Cg,true);$wnd.addEventListener(yo,Cg,true);$wnd.addEventListener(so,Bg,true);$wnd.addEventListener(uo,Bg,true);$wnd.addEventListener(to,Bg,true);$wnd.addEventListener(zo,Cg,true);$wnd.addEventListener(Ao,Cg,true);$wnd.addEventListener(Bo,Cg,true);$wnd.addEventListener(Co,Cg,true);$wnd.addEventListener(Do,Cg,true);$wnd.addEventListener(Eo,Cg,true);$wnd.addEventListener(Fo,Cg,true)}
480
+ function Gg(b,c){var d=(b.__eventBits||0)^c;b.__eventBits=c;if(!d)return;d&1&&(b.onclick=c&1?Dg:null);d&2&&(b.ondblclick=c&2?Dg:null);d&4&&(b.onmousedown=c&4?Dg:null);d&8&&(b.onmouseup=c&8?Dg:null);d&16&&(b.onmouseover=c&16?Dg:null);d&32&&(b.onmouseout=c&32?Dg:null);d&64&&(b.onmousemove=c&64?Dg:null);d&128&&(b.onkeydown=c&128?Dg:null);d&256&&(b.onkeypress=c&256?Dg:null);d&512&&(b.onkeyup=c&512?Dg:null);d&1024&&(b.onchange=c&1024?Dg:null);d&2048&&(b.onfocus=c&2048?Dg:null);d&4096&&(b.onblur=c&4096?Dg:null);d&8192&&(b.onlosecapture=c&8192?Dg:null);d&16384&&(b.onscroll=c&16384?Dg:null);d&32768&&(b.onload=c&32768?Eg:null);d&65536&&(b.onerror=c&65536?Dg:null);d&131072&&(b.onmousewheel=c&131072?Dg:null);d&262144&&(b.oncontextmenu=c&262144?Dg:null);d&524288&&(b.onpaste=c&524288?Dg:null);d&1048576&&(b.ontouchstart=c&1048576?Dg:null);d&2097152&&(b.ontouchmove=c&2097152?Dg:null);d&4194304&&(b.ontouchend=c&4194304?Dg:null);d&8388608&&(b.ontouchcancel=c&8388608?Dg:null);d&16777216&&(b.ongesturestart=c&16777216?Dg:null);d&33554432&&(b.ongesturechange=c&33554432?Dg:null);d&67108864&&(b.ongestureend=c&67108864?Dg:null)}
481
+ function wj(b){if(!b.b){b.b=true;Cc();R(zc,'.GLR1MK0AG{display:block;}.GLR1MK0OG{font-family:verdana, sans-serif;font-size:8pt;text-align:center;}.GLR1MK0EG{background:#555;width:100%;height:17px;position:relative;text-align:left;-moz-border-radius:4px 4px 4px 4px;-webkit-border-radius:4px;font-size:1.1em;}.GLR1MK0DG{height:100%;top:0;background:#6683b4;background-position:0 0;border:0 none;display:block;font-size:0.7em;position:absolute;z-index:1;text-align:center;}.GLR1MK0HG{background:repeat-x scroll 50% 50% #f6f6f6;border:1px solid #7f7f7f;color:#fff;font-weight:bold;outline:medium none;margin-left:-0.6em;top:-0.3em;cursor:default;height:23px;position:absolute;width:1em;z-index:3;-moz-border-radius:4px;-webkit-border-radius:4px;font-family:Verdana, Arial, sans-serif;font-size:1.1em;text-align:left;text-decoration:none;}.GLR1MK0IG{border-color:transparent;border-style:solid;border-width:0 200px 100px 0;height:0;width:0;position:absolute;border-bottom-color:#ccd6e6;opacity:0;z-index:2;margin-top:10px;}.GLR1MK0KG{opacity:0.5;}.GLR1MK0JG{opacity:0.7;}.GLR1MK0BG{cursor:pointer;}.GLR1MK0CG{cursor:none;}.GLR1MK0PF{cursor:default;}.GLR1MK0FG{margin:-21px auto;z-index:3;position:absolute;}.GLR1MK0GG{width:58px;margin:32px 0 0 -29px;}.GLR1MK0LG{background-color:#f1f1f1;border:1px solid #acacac;font-size:9px;height:20px;margin:0 0 10px;text-align:center;width:40px;}.GLR1MK0MG{float:left;}.GLR1MK0NG{float:right;}');Ec();return true}return false}
482
+ function tk(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;this.p=(yj(),sj);this.b=new rj;this.g=new Bk(this);this.i=new Ej;Ch(this,(c=Sb($doc),q=new Ci,e=Sb($doc),s=new Ci,g=Sb($doc),h=Sb($doc),i=Sb($doc),j=Sb($doc),k=Sb($doc),w=new Ih,m=Sb($doc),v=new Rh((zj(),tj)),o=new Mh("<div class='GLR1MK0OG fact-finder-onetouchslider'> <span id='"+c+Uo+e+"'><\/span> <div style='clear: both !important;'><\/div> <div style='clear: both !important;'><\/div> <div class='GLR1MK0AG'> <div class='GLR1MK0EG fact-finder-onetouchslider-bar' id='"+g+"'> <div class='GLR1MK0DG fact-finder-onetouchslider-bar fact-finder-onetouchslider-bar-selected' id='"+h+"'><\/div> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-left' id='"+i+"'><\/span> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-right' id='"+j+Uo+k+Uo+m+"'><\/span> <\/div> <\/div> <\/div>"),q.x[Go]='GLR1MK0LG GLR1MK0MG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-left',q.x[Vo]=true,Pg(q,Qg(q.x)+Wo),s.x[Go]='GLR1MK0LG GLR1MK0NG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-right',s.x[Vo]=true,Pg(s,Qg(s.x)+Wo),w.x[Go]='GLR1MK0IG fact-finder-onetouchslider-triangle',v.x[Go]='GLR1MK0FG fact-finder-onetouchslider-grip',b=bf(o.x),d=$doc.getElementById(c),f=$doc.getElementById(e),u=$doc.getElementById(g),u.removeAttribute(Xo),t=$doc.getElementById(h),t.removeAttribute(Xo),p=$doc.getElementById(i),p.removeAttribute(Xo),r=$doc.getElementById(j),r.removeAttribute(Xo),l=$doc.getElementById(k),n=$doc.getElementById(m),b.c?b.c.insertBefore(b.b,b.d):df(b.b),Xg(q),Si(o.b,q),d.parentNode.replaceChild(q.x,d),Zg(q,o),Xg(s),Si(o.b,s),f.parentNode.replaceChild(s.x,f),Zg(s,o),Xg(w),Si(o.b,w),l.parentNode.replaceChild(w.x,l),Zg(w,o),Xg(v),Si(o.b,v),n.parentNode.replaceChild(v.x,n),Zg(v,o),this.d=p,this.e=q,this.j=r,this.k=s,this.n=t,this.o=u,this.q=v,this.r=w,o));wj(this.p);xk(this.g);this.i.eb()}
483
+ function zj(){zj=Wn;tj=new Ue('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADoBJREFUeNrUW3mQFcUZ7znewS67y7GwLKziLp7hFlEDFqcsRquSKjUqgkqMlRgllT9MoqaSlDGEktKUZzQiGhMVOTxKrQhUiCnLKwKLCHJI9mRvjuVY3u6bqztfHzOvXzPvWHalymd99szsTHf/+jv7+xqNEIK+zb/Kqgvyes88y5PS5PuG+v+dtVU2v0kg8NP68D75JhfBHGBwuYCq9yRHv2SgQJsDADAMjCY91/Lskkjk32uyHvYHsDlAALUMANVnuUDiENADAljvJ0hN9CGTIRYwjCISqX8zpNaQ+tLVxQuxBTl/Wr7uRXSuclGXOKYrwNW/q4ukiioWRJQWh3AYhbT9F10FZBgwTay+JnEhDGzYTwbiKQA98X3YImhK2z+gISD1LCLrt0ZxUZE2e/Ycc/r06WjSlEkoEomgC8+vQqbJh2xuadW6TyVIY0Ojtn/fPrJ54ybvQF2tKcDJID1poWTgfQKbVXTzAGnK4Oj95ZdNN25dsliff/WCWMeRxETb8cZ7GFMrEsMEVUAbZZ1pqB2m1gtti2no9SVF8W0nj7V3rFuznrz8j5ddCSwlV+GyzPW8xDgj0CwgDcXoMJBTJk6O3LJ4kXbV7Oryw8d6bnA9PEPXtTgAgY/gP+10yaVjM6IzxtxlxqLGxkFGYsu6NevQ6pdedAVIL4TCwPYNqGJds4Fk9PAfHjYXfO/7Q5o7Tt4MABfoGtI1XYf/IQZQ81t1+QVQipFOg2DMrxE5WFQQffVYZ23N2tdexxs3b3IEYBW0rLtZwWYDqkkuSFdFlNLYiorIz5YtM86fMHPWqR77bsASNyhKAZIi1AOgIc5TAMQ+YEzYNWuBQCJqxo8b8cTfX1qVePqZZ2Swbl/BngY0RGSNEJCReXPmRRctXqRHSioXgx5er+sclGHojHuAlbJVAEani64QWcSAUgJuYiRAYgbY8+g7pL1yzNDlH215r335n5ZTgI4gWX9JiBvKO2BQjU/AyfGXfMf866rnTCdW8Wvg5PUgrmxSHkzSdTGbKL/H7Bn2JPLvKShoXSzeo++zfnDQD+3XcbzyrxuPrJx8ZfXFDz7woBpg6JJbU9Ut7Wc89NBDuUTWUCIb875f3mce7Ir+OGm5c4kkgr508EYL9A/7eoiEaBK+KJ7PPUyChWIgGVgULBSAjh7rTk6fdunUz4riRm/NjppsAUSfQkAtxFcavuEpLJtUfSJhXevAqtt05YEc14MJEuQwThBxz7nic8t1FfJI8A7jHnzjsL7EteOx/tk4jle888ChB+/8yT3xK6ZfroaMei6u6hm2UZoisoyW3r7UPG/8VZWHuhJ3yROCSfBr1nppE04tAoagwUDDSwahGLSuB8/oc5fA9zhtgRwHB33ajsvA0vuk5Zy7+dO6ny5afKsh+fC8IjA9D5cSgH3gNw8Ye+sOLbMcz7RsD1k2TMKmq87Bssk5KmDOGepcCuMm2rrza9SbtFBRYSx4z/W/p30JkGlExxHPuxPWbFJYNY0uurIByA9oDrHVacdv/Wv35b29yUrbtmFQB1kwQQtWnIGmLUzEcvl9auJc/AoGRdAXu2vRoSPH0Z7aVhSPmczn8G89xjlLkL9wSXrNWtqXg+i4lm2hprauRTffelOuuDoNdDagaQaJdtzS0XUjHYgBtSzk0MEdf6ISueKZEDmIduBdC7V1HkHR+CCkGyZqbOlChQDeF33+Lhb9uaJPzLjpODAeG9di4/b09lTW7D8xZeGCajNkO5eTo1qmfSaNX7+q667q6emppAPZVhLx1goAc1GWyeWiDROmYvrl3joUicZRLBaHwD6KIExEEOMyzjJw4l0uCUJ8BQf9caykAJtMooOth66+/oc3IMW9ZMxqmBnyPmn7zOqFC7Xaxrbv0sFo1KPpBjKAdMNFBuxGDMNjXDIoYQgSdAJ/R6wtLx2Mjhw9hrpP9aLCwcXIjMRYH9T1NLYdg78Xo46jCcX3gsvxXOSBGnjQYjBclNg1c0ewMEk8bfyEGbFYNOpZtq3nymjoWZJXAdDZc2ehrmMnL7OAk0lYTdZavLXoSvsrblNymOglbe5uhhTF0Z79DbA4sGnRIyxQ8C1y18kkSvTaaMjgGHvf8nVR9OlTUozHx+wVz6zo2xs/nzhv7rxsVjcvHWUf032li+Pxnp5EhZXs5QMlfUqi4BkQF+kkcoQ4Dy+OoQN1zajXchHRTYiCwPiA3vniTQ1QQ2sXGjm0gHGPfW/zPuxkUvSZGs9mYyWDZx2Hj54/afIkLYSbp3HVzGKI2HVV5Tjto617ymEACGWp2Oo8aKfiS0XVA3KBzAhce/wZUElRAbgTHW3/ognF4oXIIzozODzkFdszYG8SxLCp9SgqLYmBKJ9CGAC7nsPF1nWYuPri61ERhvfpd7SPEyfJmFmXXoByhX/ZMgzBB+Xlo7TOziPDqbjwLZcAanA9ZQCpnsLETHYdYTo7dPRQtHPXfuYjY9CVBy0hVlrKCHtc3xpae9Hki8agGJiV44lkANCFNk1XhX4G2zvPG1ZWVobyyTTmTKUUFRWBIekpoNYOiQ20zgyRzg0STMB0OVga7ZhA5SOGIRdEsKmlDRUMLmHPQZaR5unpuxdmeLihOVDfhoYVF6DOw0c4UJcDlTlKQVKwPKamQN3CwsKCvHLHeSXHmB8LOKpx8QXOUnA6XW3TY+JrRjw2wdIhBWjbjl1i5THnDEyQSkKQEaPix4J7DrS1oxvCw7GoBFxRe+dJJqaua3OOCqsrc5NRJP+0dM43u7u70eBCvYeC5XtKiaswCV03mW5SsaWTrqwYjTo6O1HX8ePAzWLOTdtmIu9nG/ydDl0EIrhEubb3QCMaN3YUamxuSemn67sVrpv+d8ySaiiRSPTklfI0c2TOUXt7B7ni4plHXcdJKbDgKG2pPtJJ0FUv0Aeh0WVD0eYPPgLRjrDtl2s7TBcpUCTyR2zLzcDilPiCJPQkutGIIYXgW4eg+qaW08SWBGLLf9FIpKsTFjVXvijMvaj7O1LfUEfmzZrW7ro0FHM4sVjX5iItxJrqMNXNL3fvBRdgIwKso5zywzdHEHUfqWsr9TcQU7qY+2ob0TmjRzJgQfRl26mxBdH5mIbR3tzUnGn+OTkqb2jxye5uMqzETML1QdC1c7nmS7oKHPVAjGNwP3J4Mdq1Zy+KxAbRScAqEngTdJPQ+J2yML1KqFPLSf/uDwfLTnW8vrEFlQ0fimobGgPR5kYIB1lcOofSYSUHarZvJxmy+SQXR9V7XLN9B4pGza98S0jJoUS5anPOUqKrDGYQRUwDRZhVpnoEYDXMBJaB1niriTQPvdc1zHJLlExDA5E00KnEqaBf1jfr30n5WM/FN/5g/r5PPv0EZwFI0jhKq1NSvKvWPPBbb7xJLr5o5sefbd1+ra8iPLOnI6zDpIVV/Gp/LZpwURUqKR4c+Fsk0pyamgqUcrqykaEhYF1jM2oCg0T79PWYWWmUGrugoLAGuScSIHE4Q40mo+iSDGU8vHX7Nm/FyhVf/3dbTTNYw3PkuMKPlJjjbzoIE2wVgT+Pnng0FZLA9o2R8Kc0C0hEAOET8QMELM+dL1jF6PItb7/5NpKS2VnzR7l01AfrbVi7wRw1atQ7TU1Ny5DEVo1OxgcLE6URk7/D0TRP6DKPqE7P62IGghChgwEwnPbMdyd8SJ3WcZofX/GLHZdOnepKxSl8psYorZr1/Aur3B07vvjwmhvuuQ4sbSUD64sloRzlYDSYKAMq3E/Kf6pRmuT4CQ4F5wcVRN6KgE5fMu7CV55/9jm1PEGylBhDdy8kpEbJOnzqiSe9KZMmrIaJYBFrcmfv8ujFE3Gp64j4lLoBYUgCg5LhnhkaJxXXpqIhzHVV6Gk8Pmjbj26Zu50uvFJ4yspRXTkFosq4XNHyaJVr9vTz9o8cWfaqH3P6pt8TuwsfMLfOfAfiSrFrQI7/3N+pUHBOWj8pt8LHgV1R++/vv/epDWvXE6UsQfIGGuZWQrjqrlz5iHvv0mveATfyIU9QC0MiJoWlLRUH7J4OUgLo+hx0fS66KX31++Zq0nPdwvkr9u78OCGKTmo5kWSrv+ghZ3vUl2VdcMGcO6+/tsZ79YWVf4nF4rtTFTEc7C5Yq+wjUyKZEk0vSJF40rfiex8gCxA0e/LEiY+NLTNbpWKTXGDCucJAPc/jMFhaQe/zbVudVc8+5az925//WFIy5H35zUCcmdsgqYmLXQqWdiLBtktU0YJYVuoPrPjh6vlz76+eecFOUWRSK2leLm7mUzZUM/a6XBelxabb7rjdWP36f65ta29bCn0N6Em0WCy27+47lzxqnWg6/viTT/iVtIEpG+ZRCDbUOimtx9S3WeX/3PzvmyF0m4X6c5CSlR6NwxUV56x75Hd3fbDmldfI+jc2yDqpGiHvjAvBZ1DaN2dcOSOy+LbF2ntbdlVt27Hzxt7enqnQdTSf4z1+1ASBQFtpaemm5x//7ab3333LFVwMK+1jhc6stJ/nYQ0jrEg8b848Y8kdS7SSYWNiyx9bPamltfUK27LPA0tbCvpYLPcfjcbqIbhIFBUXf1k9Z+Ynt900t3Pd2vXoxRdX01ytd1YOa5zB8Ru5umXEolG9unqhUb2wGlWNq0IVY8pRcVERevTp9SN+9fObDtPO9u4/QFME6LOPP0Xvvfsurm2ox4rvVgMCL8NxupxZhrxOjuVxoCoTyX9nv7EVFVpTS4s6QfWkWCYiIYYnr1TKQB2RC6to6TmSyiQEbKYjcihDUJD3Ebm8Dz1KwUTY5DzlxIh8qMK/thVyFFINjyuB88I42ZdTnn3ye9IGXT6WRhSOkRARV5PjJMfWMGvG4EyOsfbZwfuDSIf2VcBq5hxnKGSRPA4m9xtgv09ghwAOyz1lO4aOMuV3BhJgv4GqgLOARn0wGiSs34H4DWhsGjI5EhJW5vrmG/mdtX/3cjb/jUu/3Mu3/fd/AQYAFnxtwIzfP80AAAAASUVORK5CYII=')}
484
+ var Yn='',bo=' ',Qo='%n',Uo="'><\/span> <span id='",Zn='(',Jo=') no-repeat ',Wo='-readonly',ao=':',go='BODY',Oo='GLR1MK0BG',Po='GLR1MK0CG',So='GLR1MK0JG',Ro='GLR1MK0KG',Io='__gwtLastUnhandledEvent',ho='absolute',_n='anonymous',Go='className',qo='click',ro='dblclick',no='div',fo='fixed',$n='function',Eo='gesturechange',Fo='gestureend',Do='gesturestart',Xo='id',so='keydown',to='keypress',uo='keyup',Ho='left',vo='load',jo='mousedown',wo='mousemove',ko='mouseout',lo='mouseover',xo='mouseup',yo='mousewheel',po='msie',oo='opera',eo='position',Lo='px',Ko='px ',To='px;',Vo='readOnly',co='rtl',mo='safari',io='style',Co='touchcancel',Bo='touchend',Ao='touchmove',zo='touchstart',Mo='value',No='width';var _;_=E.prototype={};_.eQ=function F(b){return this===b};_.hC=function G(){return this.$H||(this.$H=++U)};_.tM=Wn;_.cM={};_=K.prototype=new E;_.cM={10:1,30:1};_=J.prototype=new K;_.cM={10:1,30:1};_=M.prototype=I.prototype=new J;_.cM={2:1,10:1,30:1};_=O.prototype=H.prototype=new I;_.cM={2:1,10:1,30:1};_.b=null;_=S.prototype=new E;_.cM={};var T=0,U=0;_=eb.prototype=Z.prototype=new S;_.cM={};_.b=null;_.c=null;var $;_=nb.prototype=jb.prototype=new E;_.z=function ob(){var b={};var c=[];var d=arguments.callee.caller.caller;while(d){var e=this.A(d.toString());c.push(e);var f=ao+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h<i;h++){if(g[h]===d){return c}}}(g||(b[f]=[])).push(d);d=d.caller}return c};_.A=function pb(b){return hb(b)};_.B=function qb(b){return []};_.cM={};_=sb.prototype=new jb;_.z=function ub(){return ib(this.B(mb()),this.C())};_.B=function vb(b){return tb(this,b)};_.C=function wb(){return 2};_.cM={};_=zb.prototype=rb.prototype=new sb;_.z=function Ab(){return xb(this)};_.A=function Bb(b){var c,d;if(b.length==0){return _n}d=dl(b);d.indexOf('at ')==0&&(d=d.substr(3,d.length-3));c=d.indexOf('[');c==-1&&(c=d.indexOf(Zn));if(c==-1){return _n}else{d=dl(d.substr(0,c-0))}c=d.indexOf(gl(46));c!=-1&&(d=d.substr(c+1,d.length-(c+1)));return d.length>0?d:_n};_.B=function Cb(b){return yb(this,b)};_.C=function Db(){return 3};_.cM={};_=Eb.prototype=new E;_.cM={};_=Gb.prototype=Fb.prototype=new Eb;_.cM={};_.b=Yn;_=Ub.prototype=new E;_.eQ=function Vb(b){return this===b};_.hC=function Wb(){return this.$H||(this.$H=++U)};_.cM={30:1,31:1,32:1};_=Tb.prototype=new Ub;_.cM={23:1,30:1,31:1,32:1};var Xb,Yb,Zb,$b,_b,ac,bc,cc,dc;_=gc.prototype=fc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=ic.prototype=hc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=kc.prototype=jc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=mc.prototype=lc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=oc.prototype=nc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=qc.prototype=pc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=sc.prototype=rc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=uc.prototype=tc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};_=wc.prototype=vc.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};var xc,yc=false,zc,Ac,Bc;_=Gc.prototype=Fc.prototype=new E;_.y=function Hc(){(Cc(),yc)&&Dc()};_.cM={};_=Pc.prototype=Ic.prototype=new E;_.cM={};_.b=null;var Jc;_=Sc.prototype=new E;_.cM={};_.g=null;_=Rc.prototype=new Sc;_.F=function Tc(){this.f=false;this.g=null};_.cM={};_.f=false;_=Qc.prototype=new Rc;_.E=function Wc(){return this.G()};_.cM={};_.b=null;_.c=null;var Uc=null;_=Zc.prototype=new E;_.hC=function _c(){return this.d};_.cM={};_.d=0;var $c=0;_=ad.prototype=Yc.prototype=new Zc;_.cM={};_=bd.prototype=Xc.prototype=new Yc;_.cM={3:1};_.b=null;_.c=null;_=cd.prototype=new Qc;_.cM={};_=ed.prototype=new cd;_.cM={};_=id.prototype=dd.prototype=new ed;_.D=function jd(b){hd(this,qe(b,4))};_.G=function kd(){return fd};_.cM={};var fd;_=od.prototype=ld.prototype=new ed;_.D=function pd(b){qe(qe(b,5),6).f.i.bb()};_.G=function qd(){return md};_.cM={};var md;_=ud.prototype=rd.prototype=new ed;_.D=function vd(b){qe(b,7).H(this)};_.G=function wd(){return sd};_.cM={};var sd;_=yd.prototype=xd.prototype=new E;_.cM={};_.b=null;_=Bd.prototype=zd.prototype=new Rc;_.D=function Cd(b){qe(b,8).I(this)};_.E=function Ed(){return Ad};_.cM={};var Ad=null;_=Id.prototype=Hd.prototype=Fd.prototype=new E;_.cM={25:1};_.b=null;_.c=null;_=Ld.prototype=new E;_.cM={};_=Kd.prototype=new Ld;_.J=function Ud(b,c,d){this.c>0?Md(this,new lj(this,b,d)):Qd(this,b,d)};_.cM={};_.b=null;_.c=0;_.d=false;_=Vd.prototype=Jd.prototype=new Kd;_.J=function Wd(b,c,d){this.c>0?Md(this,new lj(this,b,d)):Qd(this,b,d)};_.cM={};_=Yd.prototype=Xd.prototype=new E;_.cM={};_.b=null;_=_d.prototype=$d.prototype=new I;_.cM={2:1,9:1,10:1,30:1};_.b=null;_=ae.prototype=Zd.prototype=new $d;_.cM={2:1,9:1,10:1,30:1};_=ce.prototype=be.prototype=new E;_.cM={18:1};_=ee.prototype=de.prototype=new E;_.cM={};_.aC=null;_.qI=0;var ke,le;var He=null;var Me,Ne,Oe;_=Re.prototype=Qe.prototype=new E;_.cM={26:1};_=Ue.prototype=Te.prototype=new E;_.cM={};_.b=0;_.c=0;_.d=0;_.e=null;_.f=0;_=Ve.prototype=new E;_.cM={};_=Ye.prototype=We.prototype=new E;_.cM={};var Xe=null;_=_e.prototype=Ze.prototype=new Ve;_.cM={};var $e=null;var af=null;_=ff.prototype=ef.prototype=new E;_.cM={};_.b=null;_.c=null;_.d=null;_=hf.prototype=gf.prototype=new I;_.cM={2:1,10:1,30:1};_=of.prototype=jf.prototype=new E;_.cM={};_.d=false;_.f=false;_=qf.prototype=new E;_.K=function wf(){this.c||kn(rf,this);this.L()};_.cM={13:1};_.c=false;_.d=0;var rf;_=xf.prototype=pf.prototype=new qf;_.L=function yf(){if(!this.b.d){return}kf(this.b)};_.cM={13:1};_.b=null;_=Af.prototype=zf.prototype=new qf;_.L=function Bf(){this.b.f=false;lf(this.b,(new Date).getTime())};_.cM={13:1};_.b=null;_=Hf.prototype=Cf.prototype=new E;_.M=function If(){return this.d<this.b};_.N=function Jf(){return Ff(this)};_.O=function Kf(){Gf(this)};_.cM={};_.b=0;_.c=-1;_.d=0;_.e=null;var Lf=null,Mf=null;var Sf;var Vf=null;_=_f.prototype=Xf.prototype=new Rc;_.D=function ag(b){yk(qe(b,12),this);Zf.d=false};_.E=function cg(){return Yf};_.F=function dg(){$f(this)};_.cM={};_.b=false;_.c=false;_.d=false;_.e=null;var Yf=null,Zf=null;_=fg.prototype=eg.prototype=new E;_.I=function gg(b){while((sf(),rf).c>0){tf(qe(gn(rf,0),13))}};_.cM={8:1,18:1};var ig=false,jg=null;_=rg.prototype=og.prototype=new Rc;_.D=function sg(b){ve(b);null.xb()};_.E=function tg(){return pg};_.cM={};var pg;_=vg.prototype=ug.prototype=new Fd;_.cM={25:1};var wg=false;var Ag=null,Bg=null,Cg=null,Dg=null,Eg=null;_=Mg.prototype=new E;_.cM={28:1};_.x=null;_=Lg.prototype=new Mg;_.Q=function _g(){};_.R=function ah(){};_.S=function bh(){return this.t};_.T=function ch(){Ug(this)};_.P=function dh(b){Vg(this,b)};_.U=function eh(){Wg(this)};_.V=function fh(){};_.W=function gh(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.t=false;_.u=0;_.v=null;_.w=null;_=Kg.prototype=new Lg;_.Q=function hh(){uh(this,(sh(),qh))};_.R=function ih(){uh(this,(sh(),rh))};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Jg.prototype=new Kg;_.Y=function lh(){return new _i(this.b)};_.X=function mh(b){return kh(this,b)};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Ig.prototype=new Jg;_.X=function oh(b){var c;c=kh(this,b);c&&nh(b.x);return c};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=th.prototype=ph.prototype=new Zd;_.cM={2:1,9:1,10:1,30:1};var qh,rh;_=wh.prototype=vh.prototype=new E;_.Z=function xh(b){b.T()};_.cM={};_=zh.prototype=yh.prototype=new E;_.Z=function Ah(b){b.U()};_.cM={};_=Bh.prototype=new Lg;_.S=function Dh(){if(this.s){return this.s.t}return false};_.T=function Eh(){if(this.u!=-1){$g(this.s,this.u);this.u=-1}Ug(this.s);this.x.__listener=this;this.V()};_.P=function Fh(b){Vg(this,b);Vg(this.s,b)};_.U=function Gh(){try{this.W()}finally{Wg(this.s)}};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.s=null;_=Ih.prototype=Hh.prototype=new Jg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Jh.prototype=new Lg;_.T=function Kh(){var b;Ug(this);b=Ob(this.x);-1==b&&(this.x.tabIndex=0,undefined)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Mh.prototype=Lh.prototype=new Jg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Rh.prototype=Nh.prototype=new Lg;_.P=function Sh(b){xg(b.type)==32768&&!!this.b&&(this.x[Io]=Yn,undefined);Vg(this,b)};_.V=function Th(){var b;b=Ib(this.x,Io);al(vo,b)&&Uf(new $h(this))};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.b=null;_=Vh.prototype=new E;_.cM={};_=Xh.prototype=Uh.prototype=new Vh;_.cM={};_.b=0;_.c=0;_.d=0;_.e=null;_.f=0;_=$h.prototype=Yh.prototype=new E;_.y=function _h(){Zh(this)};_.cM={11:1};_.b=null;_=fi.prototype=ai.prototype=new Ig;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};var bi,ci,di;_=ki.prototype=ji.prototype=new E;_.Z=function li(b){b.S()&&b.U()};_.cM={};_=ni.prototype=mi.prototype=new E;_.I=function oi(b){hi()};_.cM={8:1,18:1};_=qi.prototype=pi.prototype=new ai;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};_=ti.prototype=new Jh;_.$=function xi(){return ui(this)};_.P=function yi(b){var c;c=xg(b.type);(c&896)!=0?Vg(this,b):Vg(this,b)};_.V=function zi(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=si.prototype=new ti;_.$=function Bi(){var b;return b=ui(this),b==null?Yn:b};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Ci.prototype=ri.prototype=new si;_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Di.prototype=new Ub;_.cM={29:1,30:1,31:1,32:1};var Ei,Fi,Gi,Hi;_=Ki.prototype=Ji.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Mi.prototype=Li.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Oi.prototype=Ni.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Qi.prototype=Pi.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Xi.prototype=Ri.prototype=new E;_.Y=function Yi(){return new _i(this)};_.cM={};_.b=null;_.c=null;_.d=0;_=_i.prototype=Zi.prototype=new E;_.M=function aj(){return this.b<this.c.d-1};_.N=function bj(){return $i(this)};_.O=function cj(){if(this.b<0||this.b>=this.c.d){throw new Sk}this.c.c.X(this.c.b[this.b--])};_.cM={};_.b=-1;_.c=null;_=gj.prototype=ej.prototype=new E;_.cM={};_.b=null;_.c=null;_.d=null;_.e=null;_=ij.prototype=hj.prototype=new E;_.y=function jj(){Od(this.b,this.d,this.c)};_.cM={21:1};_.b=null;_.c=null;_.d=null;_=lj.prototype=kj.prototype=new E;_.y=function mj(){Qd(this.b,this.d,this.c)};_.cM={21:1};_.b=null;_.c=null;_.d=null;_=rj.prototype=nj.prototype=new E;_.cM={};_.b=null;var sj=null,tj=null,uj=null;_=xj.prototype=vj.prototype=new E;_.cM={};_.b=false;_=Ej.prototype=Dj.prototype=new E;_._=function Fj(b,c){};_.ab=function Gj(){};_.bb=function Hj(){};_.cb=function Ij(){};_.db=function Jj(){};_.eb=function Kj(){};_.cM={};_=Nj.prototype=new E;_.fb=function Qj(b){return Yn+b};_._=function Rj(b,c){if(this.i){this.j+=b;this.k+=c;Pj(this);this.gb(b,c);Oj(this)}};_.gb=function Sj(b,c){};_.ab=function Tj(){this.i=true;kk(this.n)};_.bb=function Uj(){if(!this.i){nk(this.n);this.i=false}};_.cb=function Vj(){this.i||mk(this.n)};_.db=function Wj(){this.i=false;gk(this.n)?mk(this.n):nk(this.n);this.hb(this.j,this.k)};_.hb=function Xj(b,c){};_.eb=function Yj(){Oj(this)};_.cM={};_.i=false;_.j=0;_.k=1;_.n=null;_=Mj.prototype=new Nj;_.fb=function _j(b){var c,d;c=b*this.c+this.e;d=Zj(this,c);return this.f!=null&&!!this.f.length?bl(this.f,Qo,Yn+d):Yn+d};_.gb=function ak(b,c){this.d=false};_.ib=function bk(b,c){};_.hb=function ck(b,c){var d,e;d=Zj(this,b*this.c+this.e);e=Zj(this,c*this.c+this.e);this.ib(d,e)};_.cM={};_.c=0;_.d=false;_.e=0;_.f=null;_.g=0;_=dk.prototype=Lj.prototype=new Mj;_.ib=function ek(b,c){var d=this.b;d&&typeof d==$n&&d(b,c)};_.cM={};_.b=null;_=tk.prototype=fk.prototype=new Bh;_.V=function uk(){this.i.eb()};_.W=function vk(){Ak(this.g)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.c=0;_.d=null;_.e=null;_.f=null;_.j=null;_.k=null;_.n=null;_.o=null;_.q=null;_.r=null;_=Bk.prototype=wk.prototype=new E;_.H=function Ck(b){this.f.i.cb()};_.cM={4:1,5:1,6:1,7:1,12:1,18:1};_.b=0;_.c=0;_.d=false;_.e=false;_.f=null;_=Ek.prototype=Dk.prototype=new E;_.H=function Fk(b){zk(this.b)};_.cM={7:1,18:1};_.b=null;_=Ik.prototype=Gk.prototype=new E;_.cM={};_.b=0;_.c=0;_.d=0;_.e=0;_=Kk.prototype=Jk.prototype=new I;_.cM={2:1,10:1,30:1};_=Mk.prototype=Lk.prototype=new E;_.cM={};_=Ok.prototype=Nk.prototype=new I;_.cM={2:1,10:1,30:1};_=Qk.prototype=Pk.prototype=new I;_.cM={2:1,10:1,30:1};_=Tk.prototype=Sk.prototype=Rk.prototype=new I;_.cM={2:1,10:1,30:1};_=Wk.prototype=Vk.prototype=Uk.prototype=new I;_.cM={2:1,10:1,30:1};_=Zk.prototype=Yk.prototype=Xk.prototype=new I;_.cM={2:1,10:1,30:1};_=_k.prototype=$k.prototype=new E;_.cM={30:1,33:1};_=String.prototype;_.eQ=function fl(b){return al(this,b)};_.hC=function hl(){return nl(this)};_.cM={1:1,30:1,31:1};var il,jl=0,kl;_=sl.prototype=pl.prototype=new E;_.cM={};_=ul.prototype=tl.prototype=new I;_.cM={2:1,10:1,30:1};_=vl.prototype=new E;_.jb=function xl(b){throw new ul('Add not supported on this collection')};_.kb=function yl(b){var c;c=wl(this.Y(),b);return !!c};_.lb=function zl(){return this.nb()==0};_.mb=function Al(b){var c;c=wl(this.Y(),b);if(c){c.O();return true}else{return false}};_.ob=function Bl(b){var c,d,e;e=this.nb();b.length<e&&(b=fe(b,e));d=this.Y();for(c=0;c<e;++c){je(b,c,d.N())}b.length>e&&je(b,e,null);return b};_.cM={};_=Dl.prototype=new E;_.eQ=function Fl(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[19])){return false}f=qe(b,19);if(this.e!=f.e){return false}for(d=new jm((new bm(f)).b);Mm(d.b);){c=d.c=qe(Nm(d.b),34);e=c.qb();g=c.$();if(!(e==null?this.d:e!=null&&e.cM&&!!e.cM[1]?ao+qe(e,1) in this.f:Nl(this,e,~~Q(e)))){return false}if(!Vn(g,e==null?this.c:e!=null&&e.cM&&!!e.cM[1]?this.f[ao+qe(e,1)]:Ml(this,e,~~Q(e)))){return false}}return true};_.hC=function Gl(){var b,c,d;d=0;for(c=new jm((new bm(this)).b);Mm(c.b);){b=c.c=qe(Nm(c.b),34);d+=b.hC();d=~~d}return d};_.cM={19:1};_=Cl.prototype=new Dl;_.pb=function Xl(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)};_.cM={19:1};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;_=Zl.prototype=new vl;_.eQ=function $l(b){var c,d,e;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[35])){return false}d=qe(b,35);if(d.nb()!=this.nb()){return false}for(c=d.Y();c.M();){e=c.N();if(!this.kb(e)){return false}}return true};_.hC=function _l(){var b,c,d;b=0;for(c=this.Y();c.M();){d=c.N();if(d!=null){b+=Q(d);b=~~b}}return b};_.cM={35:1};_=bm.prototype=Yl.prototype=new Zl;_.kb=function cm(b){return am(this,b)};_.Y=function dm(){return new jm(this.b)};_.mb=function em(b){var c;if(am(this,b)){c=qe(b,34).qb();Tl(this.b,c);return true}return false};_.nb=function fm(){return this.b.e};_.cM={35:1};_.b=null;_=jm.prototype=gm.prototype=new E;_.M=function km(){return Mm(this.b)};_.N=function lm(){return this.c=qe(Nm(this.b),34)};_.O=function mm(){im(this)};_.cM={};_.b=null;_.c=null;_.d=null;_=om.prototype=new E;_.eQ=function pm(b){var c;if(b!=null&&b.cM&&!!b.cM[34]){c=qe(b,34);if(Vn(this.qb(),c.qb())&&Vn(this.$(),c.$())){return true}}return false};_.hC=function qm(){var b,c;b=0;c=0;this.qb()!=null&&(b=Q(this.qb()));this.$()!=null&&(c=Q(this.$()));return b^c};_.cM={34:1};_=rm.prototype=nm.prototype=new om;_.qb=function sm(){return null};_.$=function tm(){return this.b.c};_.rb=function um(b){return Rl(this.b,b)};_.cM={34:1};_.b=null;_=wm.prototype=vm.prototype=new om;_.qb=function xm(){return this.b};_.$=function ym(){return this.c.f[ao+this.b]};_.rb=function zm(b){return Sl(this.c,this.b,b)};_.cM={34:1};_.b=null;_.c=null;_=Am.prototype=new vl;_.jb=function Bm(b){this.sb(this.nb(),b);return true};_.sb=function Cm(b,c){throw new ul('Add not supported on this list')};_.eQ=function Em(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[20])){return false}g=qe(b,20);if(this.nb()!=g.nb()){return false}e=new Pm(this);f=g.Y();while(e.c<e.e.nb()){c=Nm(e);d=Nm(f);if(!(c==null?d==null:P(c,d))){return false}}return true};_.hC=function Fm(){var b,c,d;c=1;b=new Pm(this);while(b.c<b.e.nb()){d=Nm(b);c=31*c+(d==null?0:Q(d));c=~~c}return c};_.Y=function Hm(){return new Pm(this)};_.ub=function Im(){return new Vm(this,0)};_.vb=function Jm(b){return new Vm(this,b)};_.wb=function Km(b){throw new ul('Remove not supported on this list')};_.cM={20:1};_=Pm.prototype=Lm.prototype=new E;_.M=function Qm(){return this.c<this.e.nb()};_.N=function Rm(){return Nm(this)};_.O=function Sm(){Om(this)};_.cM={};_.c=0;_.d=-1;_.e=null;_=Vm.prototype=Tm.prototype=new Lm;_.cM={};_.b=null;_=Xm.prototype=Wm.prototype=new Zl;_.kb=function Ym(b){return Kl(this.b,b)};_.Y=function Zm(){var b;return b=new jm(this.c.b),new an(b)};_.nb=function $m(){return this.c.b.e};_.cM={35:1};_.b=null;_.c=null;_=an.prototype=_m.prototype=new E;_.M=function bn(){return Mm(this.b.b)};_.N=function cn(){var b;b=hm(this.b);return b.qb()};_.O=function dn(){im(this.b)};_.cM={};_.b=null;_=ln.prototype=en.prototype=new Am;_.jb=function mn(b){return je(this.b,this.c++,b),true};_.sb=function nn(b,c){(b<0||b>this.c)&&Gm(b,this.c);this.b.splice(b,0,c);++this.c};_.kb=function on(b){return hn(this,b,0)!=-1};_.tb=function pn(b){return Dm(b,this.c),this.b[b]};_.lb=function qn(){return this.c==0};_.wb=function rn(b){return jn(this,b)};_.mb=function sn(b){return kn(this,b)};_.nb=function tn(){return this.c};_.ob=function un(b){var c,d,e;b.length<this.c&&(b=(d=b,e=ge(0,this.c),ie(d.aC,d.cM,d.qI,e),e));for(c=0;c<this.c;++c){je(b,c,this.b[c])}b.length>this.c&&je(b,this.c,null);return b};_.cM={20:1,30:1};_.c=0;var vn;_=yn.prototype=xn.prototype=new Am;_.kb=function zn(b){return false};_.tb=function An(b){throw new Vk};_.nb=function Bn(){return 0};_.cM={20:1,30:1};_=En.prototype=Cn.prototype=new Cl;_.cM={19:1,30:1};_=Hn.prototype=Fn.prototype=new Zl;_.jb=function In(b){var c;return c=Pl(this.b,b,this),c==null};_.kb=function Jn(b){return Kl(this.b,b)};_.lb=function Kn(){return this.b.e==0};_.Y=function Ln(){var b;return b=new jm(El(this.b).c.b),new an(b)};_.mb=function Mn(b){return Tl(this.b,b)!=null};_.nb=function Nn(){return this.b.e};_.cM={30:1,35:1};_.b=null;_=Pn.prototype=On.prototype=new om;_.qb=function Qn(){return this.b};_.$=function Rn(){return this.c};_.rb=function Sn(b){var c;c=this.c;this.c=b;return c};_.cM={34:1};_.b=null;_.c=null;_=Un.prototype=Tn.prototype=new I;_.cM={2:1,10:1,30:1};var Xn=X;var Be=new Mk,we=new Mk,xe=new Mk,ze=new Mk,ye=new Mk,Ce=new Mk,Ae=new Mk;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (de_factfinder_asn_slider_OneTouchSlider && de_factfinder_asn_slider_OneTouchSlider.onScriptLoad)de_factfinder_asn_slider_OneTouchSlider.onScriptLoad(gwtOnLoad);})();
skin/frontend/base/default/js/factfinder_onetouchslider/75B23D057185BAB61CFE100CE08C4D84.cache.js ADDED
@@ -0,0 +1,477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){var $gwt_version = "2.3.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '75B23D057185BAB61CFE100CE08C4D84';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function E(){}
2
+ function K(){}
3
+ function J(){}
4
+ function I(){}
5
+ function H(){}
6
+ function S(){}
7
+ function Z(){}
8
+ function Fn(){}
9
+ function eb(){}
10
+ function nb(){}
11
+ function pb(){}
12
+ function ob(){}
13
+ function Db(){}
14
+ function Cb(){}
15
+ function Rb(){}
16
+ function Qb(){}
17
+ function Tb(){}
18
+ function Sb(){}
19
+ function Vb(){}
20
+ function Ub(){}
21
+ function Xb(){}
22
+ function Wb(){}
23
+ function Zb(){}
24
+ function Yb(){}
25
+ function _b(){}
26
+ function $b(){}
27
+ function bc(){}
28
+ function ac(){}
29
+ function dc(){}
30
+ function cc(){}
31
+ function fc(){}
32
+ function ec(){}
33
+ function pc(){}
34
+ function oc(){}
35
+ function yc(){}
36
+ function rc(){}
37
+ function Bc(){}
38
+ function Ac(){}
39
+ function zc(){}
40
+ function Ic(){}
41
+ function Hc(){}
42
+ function Gc(){}
43
+ function Nc(){}
44
+ function Pc(){}
45
+ function Tc(){}
46
+ function Oc(){}
47
+ function Zc(){}
48
+ function Wc(){}
49
+ function dd(){}
50
+ function ad(){}
51
+ function gd(){}
52
+ function kd(){}
53
+ function id(){}
54
+ function od(){}
55
+ function ud(){}
56
+ function td(){}
57
+ function sd(){}
58
+ function Gd(){}
59
+ function Jd(){}
60
+ function Id(){}
61
+ function Nd(){}
62
+ function Md(){}
63
+ function Pd(){}
64
+ function Od(){}
65
+ function Ae(){}
66
+ function ze(){}
67
+ function Ce(){}
68
+ function Ee(){}
69
+ function He(){}
70
+ function Fe(){}
71
+ function Ke(){}
72
+ function Ie(){}
73
+ function Pe(){}
74
+ function Re(){}
75
+ function Te(){}
76
+ function $e(){}
77
+ function Ze(){}
78
+ function hf(){}
79
+ function lf(){}
80
+ function Jf(){}
81
+ function Ff(){}
82
+ function Pf(){}
83
+ function Of(){}
84
+ function Yf(){}
85
+ function cg(){}
86
+ function wg(){}
87
+ function vg(){}
88
+ function ug(){}
89
+ function tg(){}
90
+ function sg(){}
91
+ function _g(){}
92
+ function gh(){}
93
+ function fh(){}
94
+ function jh(){}
95
+ function ih(){}
96
+ function lh(){}
97
+ function rh(){}
98
+ function th(){}
99
+ function vh(){}
100
+ function xh(){}
101
+ function Fh(){}
102
+ function Eh(){}
103
+ function Ih(){}
104
+ function Mh(){}
105
+ function Wh(){}
106
+ function Vh(){}
107
+ function Zh(){}
108
+ function Yh(){}
109
+ function _h(){}
110
+ function di(){}
111
+ function ci(){}
112
+ function bi(){}
113
+ function ni(){}
114
+ function ui(){}
115
+ function ti(){}
116
+ function wi(){}
117
+ function vi(){}
118
+ function yi(){}
119
+ function xi(){}
120
+ function Ai(){}
121
+ function zi(){}
122
+ function Bi(){}
123
+ function Ji(){}
124
+ function Qi(){}
125
+ function Ti(){}
126
+ function Wi(){}
127
+ function Zi(){}
128
+ function hj(){}
129
+ function fj(){}
130
+ function oj(){}
131
+ function nj(){}
132
+ function xj(){}
133
+ function wj(){}
134
+ function vj(){}
135
+ function Rj(){}
136
+ function gk(){}
137
+ function nk(){}
138
+ function qk(){}
139
+ function tk(){}
140
+ function wk(){}
141
+ function vk(){}
142
+ function xk(){}
143
+ function zk(){}
144
+ function Bk(){}
145
+ function Ek(){}
146
+ function Hk(){}
147
+ function Kk(){}
148
+ function $k(){}
149
+ function cl(){}
150
+ function el(){}
151
+ function ml(){}
152
+ function ll(){}
153
+ function Il(){}
154
+ function Hl(){}
155
+ function Rl(){}
156
+ function Zl(){}
157
+ function Yl(){}
158
+ function em(){}
159
+ function jm(){}
160
+ function um(){}
161
+ function Cm(){}
162
+ function Fm(){}
163
+ function Km(){}
164
+ function Pm(){}
165
+ function gn(){}
166
+ function fn(){}
167
+ function ln(){}
168
+ function on(){}
169
+ function xn(){}
170
+ function Cn(){}
171
+ function Lk(b){}
172
+ function M(b){kb()}
173
+ function N(){kb()}
174
+ function Se(){kb()}
175
+ function uk(){kb()}
176
+ function yk(){kb()}
177
+ function Ck(){kb()}
178
+ function Fk(){kb()}
179
+ function Ik(){kb()}
180
+ function Dn(){kb()}
181
+ function Dk(b){kb()}
182
+ function Ak(b){kb()}
183
+ function Gk(b){kb()}
184
+ function Jk(b){kb()}
185
+ function dl(b){kb()}
186
+ function _f(){$f()}
187
+ function nn(){sl(this)}
188
+ function hd(){this.b={}}
189
+ function Hd(b){this.b=b}
190
+ function Kh(b){this.b=b}
191
+ function ok(b){this.b=b}
192
+ function lk(b){this.f=b}
193
+ function qf(b){this.e=b}
194
+ function ym(b){this.e=b}
195
+ function am(b){this.b=b}
196
+ function Lm(b){this.b=b}
197
+ function Li(b){this.c=b}
198
+ function Ml(b){this.b=b}
199
+ function bl(){this.b=new pb}
200
+ function qn(){this.b=new nn}
201
+ function yh(){yh=Fn;new nn}
202
+ function ab(){ab=Fn;$=new eb}
203
+ function tc(){tc=Fn;sc=new yc}
204
+ function Bf(){Bf=Fn;Af=new Ye}
205
+ function $f(){$f=Fn;Zf=new Lc}
206
+ function ij(){ij=Fn;cj=new hj}
207
+ function en(){en=Fn;dn=new gn}
208
+ function ki(){ki=Fn;si()}
209
+ function Lc(){this.d=++Jc}
210
+ function yg(b,c){b.x=c}
211
+ function zg(b,c){Bg(b.x,c,true)}
212
+ function Ci(b,c){Ei(b,c,b.d)}
213
+ function Xe(b,c){Qm(b.c,c);We(b)}
214
+ function zf(b){vf=b;gg();ig=b}
215
+ function ff(b){af();this.b=b}
216
+ function jf(b){af();this.b=b}
217
+ function nf(b){return b.d<b.b}
218
+ function ue(b){return b.l|b.m<<22}
219
+ function Ri(b){b.b.F(b.e,b.d,b.c)}
220
+ function Dg(b,c){!!b.v&&pd(b.v,c)}
221
+ function Ld(b){Kd.call(this,b)}
222
+ function dh(b){Kd.call(this,b)}
223
+ function R(c,b){c[c.length]=b}
224
+ function fm(b,c){this.c=b;this.b=c}
225
+ function Gm(b,c){this.b=b;this.c=c}
226
+ function yn(b,c){this.b=b;this.c=c}
227
+ function gi(b){this.x=b;new Nd}
228
+ function O(b){kb();this.b=b;jb(this)}
229
+ function bj(){ij();this.b=$doc.body}
230
+ function mf(b){return Rm(b.e.c,b.c)}
231
+ function vm(b){return b.c<b.e.jb()}
232
+ function xl(c,b){return Ao+b in c.f}
233
+ function $d(b,c){return b.cM&&b.cM[c]}
234
+ function mm(b,c){(b<0||b>=c)&&pm(b,c)}
235
+ function _k(b,c){b.b.b+=c;return b}
236
+ function al(b,c){b.b.b+=c;return b}
237
+ function aj(b){qb(b.b,qo);sb(b.b,ro)}
238
+ function $i(b){sb(b.b,qo);sb(b.b,ro)}
239
+ function _i(b){sb(b.b,qo);qb(b.b,ro)}
240
+ function jk(b){!b.f.f&&(b.f.f=Ef(b))}
241
+ function db(b,c){b.c=fb(b.c,[c,false])}
242
+ function Rc(){Rc=Fn;Qc=new Mc(Ln,new Tc)}
243
+ function Yc(){Yc=Fn;Xc=new Mc(Mn,new Zc)}
244
+ function cd(){cd=Fn;bd=new Mc(Nn,new dd)}
245
+ function ch(){ch=Fn;ah=new gh;bh=new jh}
246
+ function af(){af=Fn;_e=new Vm;Uf(new Pf)}
247
+ function Wk(){Wk=Fn;Tk={};Vk={}}
248
+ function Wf(){if(!Sf){rg();Sf=true}}
249
+ function gg(){if(!eg){ng();pg();eg=true}}
250
+ function Ed(b){this.e=new nn;this.d=b}
251
+ function rd(b,c){this.b=new Ed(c);this.c=b}
252
+ function qd(b){this.b=new Ed(false);this.c=b}
253
+ function Vm(){this.b=Sd(je,{30:1},0,0,0)}
254
+ function Sl(b){return b.c=_d(wm(b.b),34)}
255
+ function V(b,c,d){return b.apply(c,d);var e}
256
+ function _j(b,c,d){Xj(b,c,b.d);Xj(b,d,b.j)}
257
+ function Rm(b,c){mm(c,b.c);return b.b[c]}
258
+ function Qm(b,c){Ud(b.b,b.c++,c);return true}
259
+ function zh(b,c){Ah(b,c.e,c.c,c.d,c.f,c.b)}
260
+ function Ah(b,c,d,e,f,g){Gh(b.b,b,c,d,e,f,g)}
261
+ function xd(b,c,d){var e;e=Ad(b,c);e.fb(d)}
262
+ function Qe(b,c,d){this.c=b;this.d=c;this.b=d}
263
+ function Ui(b,c,d){this.b=b;this.d=c;this.c=d}
264
+ function Xi(b,c,d){this.b=b;this.d=c;this.c=d}
265
+ function dg(){this.b=new Ed(false);this.c=null}
266
+ function ai(){Rh.call(this,(Qh(),$doc.body))}
267
+ function Oe(b){b.parentNode.removeChild(b)}
268
+ function md(b){var c;if(jd){c=new kd;pd(b,c)}}
269
+ function vd(b,c){!b.b&&(b.b=new Vm);Qm(b.b,c)}
270
+ function fi(b,c){b.W();b.x[oo]=c!=null?c:Hn}
271
+ function fb(b,c){!b&&(b=[]);b[b.length]=c;return b}
272
+ function lb(){try{null.a()}catch(b){return b}}
273
+ function ee(b){if(b!=null){throw new yk}return null}
274
+ function kk(b){if(b.f.f){Ri(b.f.f.b);b.f.f=null}}
275
+ function Zk(){if(Uk==256){Tk=Vk;Vk={};Uk=0}++Uk}
276
+ function lc(){lc=Fn;ic=[];jc=[];kc=[];gc=new pc}
277
+ function Xd(){Xd=Fn;Vd=[];Wd=[];Yd(new Pd,Vd,Wd)}
278
+ function Qh(){Qh=Fn;Nh=new Wh;Oh=new nn;Ph=new qn}
279
+ function nl(b){var c;c=new Ml(b);return new Gm(b,c)}
280
+ function pn(b,c){var d;d=yl(b.b,c,b);return d==null}
281
+ function ib(b,c){b.length>=c&&b.splice(0,c);return b}
282
+ function Ok(c,b){return c.substr(b,c.length-b)}
283
+ function rb(c,b){return c[b]==null?null:String(c[b])}
284
+ function be(b,c){return b!=null&&b.cM&&!!b.cM[c]}
285
+ function hg(b){return !ce(b)&&b!=null&&b.cM&&!!b.cM[14]}
286
+ function Sj(b){return rk(new sk(b.s.x),b.g.b,b.g.c)}
287
+ function pe(b,c,d){return a=new Ae,a.l=b,a.m=c,a.h=d,a}
288
+ function Uf(b){Wf();return Vf(jd?jd:(jd=new Lc),b)}
289
+ function Nk(d,b,c){c=Qk(c);return d.replace(RegExp(b),c)}
290
+ function nc(){lc();if(!hc){hc=true;db((ab(),$),gc)}}
291
+ function Th(){Qh();try{eh(Ph,Nh)}finally{sl(Ph.b);sl(Oh)}}
292
+ function Sh(b){Qh();try{b.Q()}finally{Cl(Ph.b,b)!=null}}
293
+ function Rh(b){this.b=new Hi(this);this.x=b;Eg(this)}
294
+ function Si(b,c,d){this.b=b;this.e=c;this.d=null;this.c=d}
295
+ function De(b){this.c=0;this.d=0;this.b=59;this.f=58;this.e=b}
296
+ function Hi(b){this.c=b;this.b=Sd(ie,{30:1},15,4,0)}
297
+ function sl(b){b.b=[];b.f={};b.d=false;b.c=null;b.e=0}
298
+ function We(b){if(b.c.c!=0&&!b.f&&!b.d){b.f=true;cf(b.e,1)}}
299
+ function ce(b){return b!=null&&b.tM!=Fn&&!(b.cM&&!!b.cM[1])}
300
+ function $j(b,c,d){fi(b.e,c!=null?c:Hn);fi(b.k,d!=null?d:Hn)}
301
+ function yf(b){!!vf&&b==vf&&(vf=null);gg();b===ig&&(ig=null)}
302
+ function pm(b,c){throw new Gk('Index: '+b+', Size: '+c)}
303
+ function Dm(b){if(b.c<=0){throw new Dn}return b.b.pb(b.d=--b.c)}
304
+ function Ki(b){if(b.b>=b.c.d){throw new Dn}return b.c.b[++b.b]}
305
+ function xm(b){if(b.d<0){throw new Ck}b.e.sb(b.d);b.c=b.d;b.d=-1}
306
+ function W(){if(T++==0){bb((ab(),$));return true}return false}
307
+ function wc(b,c){var d;d=uc(c);vc(b).appendChild(d);return d}
308
+ function Al(b,c){var d;d=b.c;b.c=c;if(!b.d){b.d=true;++b.e}return d}
309
+ function Gi(b,c){var d;d=Di(b,c);if(d==-1){throw new Dn}Fi(b,d)}
310
+ function _d(b,c){if(b!=null&&!(b.cM&&b.cM[c])){throw new yk}return b}
311
+ function Qd(b,c){var d,e;d=b;e=Rd(0,c);Td(d.aC,d.cM,d.qI,e);return e}
312
+ function Td(b,c,d,e){Xd();Zd(e,Vd,Wd);e.aC=b;e.cM=c;e.qI=d;return e}
313
+ function Vg(b,c,d){Hg(c);Ci(b.b,c);d.appendChild(c.x);Jg(c,b)}
314
+ function Kg(b,c){b.u==-1?qg(b.x,c|(b.x.__eventBits||0)):(b.u|=c)}
315
+ function zb(b,c){return b===c||!!(b.compareDocumentPosition(c)&16)}
316
+ function df(b,c){return $wnd.setTimeout(Gn(function(){b.G()}),c)}
317
+ function Vf(b,c){return new Hd(wd((!Tf&&(Tf=new dg),Tf).b,b,c))}
318
+ function de(b){return ~~Math.max(Math.min(b,2147483647),-2147483648)}
319
+ function Pj(b,c,d,e,f,g,h,i){Kj.call(this,b,c,d,e,f,g,h);this.b=i}
320
+ function sh(){this.b=new Hi(this);this.x=$doc.createElement(Pn)}
321
+ function El(b){var c;c=b.c;b.c=null;if(b.d){b.d=false;--b.e}return c}
322
+ function If(b){b.f=false;b.g=null;b.b=false;b.c=false;b.d=true;b.e=null}
323
+ function pf(b){Tm(b.e.c,b.c);--b.b;b.c<=b.d&&--b.d<0&&(b.d=0);b.c=-1}
324
+ function wm(b){if(b.c>=b.e.jb()){throw new Dn}return b.e.pb(b.d=b.c++)}
325
+ function ne(b){if(b!=null&&b.cM&&!!b.cM[10]){return b}return new O(b)}
326
+ function Sm(b,c,d){for(;d<b.c;++d){if(En(c,b.b[d])){return d}}return -1}
327
+ function of(b){var c;b.c=b.d;c=Rm(b.e.c,b.d++);b.d>=b.b&&(b.d=0);return c}
328
+ function vb(b){var c=b.parentNode;(!c||c.nodeType!=1)&&(c=null);return c}
329
+ function ei(b){var c,d;d=rb(b.x,oo);c=d;if(Mk(Hn,d)){return null}return c}
330
+ function Xf(){var b;if(Sf){b=new _f;!!Tf&&pd(Tf,b);return null}return null}
331
+ function Cf(b){Bf();if(!b){throw new Jk('cmd cannot be null')}Xe(Af,b)}
332
+ function qg(b,c){gg();og(b,c);c&131072&&b.addEventListener($n,lg,false)}
333
+ function Zd(b,c,d){Xd();for(var e=0,f=c.length;e<f;++e){b[c[e]]=d[e]}}
334
+ function Yd(b,c,d){var e=0,f;for(var g in b){if(f=b[g]){c[e]=g;d[e]=f;++e}}}
335
+ function Bl(f,b,c){var d,e=f.f;b=Ao+b;b in e?(d=e[b]):++f.e;e[b]=c;return d}
336
+ function Tm(b,c){var d;d=(mm(c,b.c),b.b[c]);b.b.splice(c,1);--b.c;return d}
337
+ function xc(b,c){var d;d=uc(c);vc(b).insertBefore(d,b.b.firstChild);return d}
338
+ function Di(b,c){var d;for(d=0;d<b.d;++d){if(b.b[d]==c){return d}}return -1}
339
+ function P(b,c){var d;return d=b,d.tM==Fn||d.cM&&!!d.cM[1]?d.eQ(c):d===c}
340
+ function ae(b){if(b!=null&&(b.tM==Fn||b.cM&&!!b.cM[1])){throw new yk}return b}
341
+ function Ab(b){!b.gwt_uid&&(b.gwt_uid=1);return 'gwt-uid-'+b.gwt_uid++}
342
+ function Um(b,c){var d;d=Sm(b,c,0);if(d==-1){return false}Tm(b,d);return true}
343
+ function Em(b,c){var d;this.b=b;this.e=b;d=b.jb();(c<0||c>d)&&pm(c,d);this.c=c}
344
+ function Mc(b,c){this.d=++Jc;this.b=c;!Dc&&(Dc=new hd);Dc.b[b]=this;this.c=b}
345
+ function Tj(b,c){var d,e;e=b.c>0?b.c:b.o.offsetWidth||0;d=c/e;b.i.X(d,0)}
346
+ function Uj(b,c){var d,e;e=b.c>0?b.c:b.o.offsetWidth||0;d=c/e;b.i.X(0,d)}
347
+ function Y(b,c,d){var e;e=W();try{return V(b,c,d)}finally{e&&cb((ab(),$));--T}}
348
+ function X(c){return function(){try{return Y(c,this,arguments)}catch(b){throw b}}}
349
+ function Bb(b){return Mk(b.compatMode,'CSS1Compat')?b.documentElement:b.body}
350
+ function mn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
351
+ function En(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
352
+ function zj(b){b.k>1&&(b.k=1);b.j<0&&(b.j=0);b.j>1&&(b.j=1);b.j>b.k&&(b.k=b.j)}
353
+ function Zg(b){b.style[jo]=Hn;b.style['top']=Hn;b.style['position']=Hn}
354
+ function Fl(e,b){var c,d=e.f;b=Ao+b;if(b in d){c=d[b];--e.e;delete d[b]}return c}
355
+ function tb(b){var c=b.firstChild;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
356
+ function ub(b){var c=b.nextSibling;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
357
+ function vc(b){var c;if(!b.b){c=$doc.getElementsByTagName('head')[0];b.b=c}return b.b}
358
+ function bb(b){var c,d;if(b.b){d=null;do{c=b.b;b.b=null;d=gb(c,d)}while(b.b);b.b=d}}
359
+ function cb(b){var c,d;if(b.c){d=null;do{c=b.c;b.c=null;d=gb(c,d)}while(b.c);b.c=d}}
360
+ function Me(b){var c,d;Ne();c=vb(b);d=ub(b);Le.appendChild(b);return new Qe(c,d,b)}
361
+ function Q(b){var c;return c=b,c.tM==Fn||c.cM&&!!c.cM[1]?c.hC():c.$H||(c.$H=++U)}
362
+ function wf(b,c,d){var e;e=uf;uf=b;c==vf&&fg(b.type)==8192&&(vf=null);d.L(b);uf=e}
363
+ function Xj(b,c,d){var e;e=c*(b.c>0?b.c:b.o.offsetWidth||0);d.style[jo]=e+(Pb(),no)}
364
+ function Vj(b,c,d){var e,f,g;g=b.c>0?b.c:b.o.offsetWidth||0;e=c/g;f=(c+d*2)/g;b.i.X(e,f)}
365
+ function Cg(b,c,d){Kg(b,fg(d.c));return new Hd(wd((!b.v?(b.v=new qd(b)):b.v).b,d,c))}
366
+ function Wj(b){zf(b.x);_i(b.b);Bg(b.r.x,to,false);Bg(b.r.x,uo,true);zh(b.q,(kj(),ej))}
367
+ function Yj(b){yf(b.x);aj(b.b);Bg(b.r.x,uo,false);Bg(b.r.x,to,true);zh(b.q,(kj(),ej))}
368
+ function Bh(b){yh();this.b=new Hh(this,b.e,b.c,b.d,b.f,b.b);this.x[io]='gwt-Image'}
369
+ function wh(b){this.b=new Hi(this);this.x=$doc.createElement(Pn);this.x.innerHTML=b||Hn}
370
+ function Ye(){this.b=new ff(this);this.c=new Vm;this.e=new jf(this);this.g=new qf(this)}
371
+ function Ul(b){var c;this.d=b;c=new Vm;b.d&&Qm(c,new am(b));rl(b,c);ql(b,c);this.b=new ym(c)}
372
+ function xg(b,c){var d=b.parentNode;if(!d){return}d.insertBefore(c,b);d.removeChild(b)}
373
+ function Mk(b,c){if(!(c!=null&&c.cM&&!!c.cM[1])){return false}return String(b)==c}
374
+ function tl(b,c){return c==null?b.d:c!=null&&c.cM&&!!c.cM[1]?xl(b,_d(c,1)):wl(b,c,~~Q(c))}
375
+ function Cl(b,c){return c==null?El(b):c!=null&&c.cM&&!!c.cM[1]?Fl(b,_d(c,1)):Dl(b,c,~~Q(c))}
376
+ function ul(b,c){return c==null?b.c:c!=null&&c.cM&&!!c.cM[1]?b.f[Ao+_d(c,1)]:vl(b,c,~~Q(c))}
377
+ function yl(b,c,d){return c==null?Al(b,d):c!=null&&c.cM&&!!c.cM[1]?Bl(b,_d(c,1),d):zl(b,c,d,~~Q(c))}
378
+ function Ue(b){var c;c=mf(b.g);pf(b.g);c!=null&&c.cM&&!!c.cM[11]&&new Se(_d(c,11));b.d=false;We(b)}
379
+ function xf(b){var c;c=Lf(Df,b);if(!c&&!!b){b.cancelBubble=true;b.preventDefault()}return c}
380
+ function uc(b){var c;c=$doc.createElement(Kn);c['language']='text/css';c.textContent=b||Hn;return c}
381
+ function Sd(b,c,d,e,f){var g;g=Rd(f,e);Xd();Zd(g,Vd,Wd);g.aC=b;g.cM=c;g.qI=d;return g}
382
+ function fl(b,c){var d;while(b.I()){d=b.J();if(c==null?d==null:P(c,d)){return b}}return null}
383
+ function Fg(b,c){var d;switch(fg(c.type)){case 16:case 32:d=wb(c);if(!!d&&zb(b.x,d)){return}}Ec(c,b,b.x)}
384
+ function bf(b){b.c?($wnd.clearInterval(b.d),undefined):($wnd.clearTimeout(b.d),undefined);Um(_e,b)}
385
+ function Zj(b){kk(b.g);yf(b.x);$i(b.b);Bg(b.r.x,to,false);Bg(b.r.x,uo,false);zh(b.q,(jj(),dj))}
386
+ function si(){si=Fn;oi=new ui;pi=new wi;qi=new yi;ri=new Ai;Td(he,{30:1},29,[oi,pi,qi,ri])}
387
+ function Ef(b){gg();!Gf&&(Gf=new Lc);if(!Df){Df=new rd(null,true);Hf=new Jf}return new Hd(wd(Df.b,Gf,b))}
388
+ function wb(c){var d=c.relatedTarget;if(!d){return null}try{var e=d.nodeName;return d}catch(b){return null}}
389
+ function Yk(b){Wk();var c=Ao+b;var d=Vk[c];if(d!=null){return d}d=Tk[c];d==null&&(d=Xk(b));Zk();return Vk[c]=d}
390
+ function rl(f,b){var c=f.f;for(var d in c){if(d.charCodeAt(0)==58){var e=new fm(f,d.substring(1));b.fb(e)}}}
391
+ function Cd(b){var c,d;if(b.b){try{for(d=new ym(b.b);d.c<d.e.jb();){c=_d(wm(d),21);c.y()}}finally{b.b=null}}}
392
+ function Fi(b,c){var d;if(c<0||c>=b.d){throw new Fk}--b.d;for(d=c;d<b.d;++d){Ud(b.b,d,b.b[d+1])}Ud(b.b,b.d,null)}
393
+ function Tl(b){if(!b.c){throw new Dk('Must call next() before remove().')}else{xm(b.b);Cl(b.d,b.c.mb());b.c=null}}
394
+ function Ne(){if(!Le){Le=$doc.createElement(Pn);Le.style.display='none';(Qh(),$doc.body).appendChild(Le)}}
395
+ function Jh(b){var c,d;c=(d=$doc.createEvent('HTMLEvents'),d.initEvent(Xn,false,false),d);b.b.x.dispatchEvent(c)}
396
+ function oe(b){var c,d,e;c=b&4194303;d=b>>22&4194303;e=b<0?1048575:0;return a=new Ae,a.l=c,a.m=d,a.h=e,a}
397
+ function mb(b){var c,d,e;e=b&&b.stack?b.stack.split('\n'):[];for(c=0,d=e.length;c<d;++c){e[c]=hb(e[c])}return e}
398
+ function L(b){var c,d,e;d=Sd(ke,{30:1},33,b.length,0);for(e=0,c=b.length;e<c;++e){if(!b[e]){throw new Ik}d[e]=b[e]}}
399
+ function Ad(b,c){var d,e;e=_d(ul(b.e,c),19);if(!e){e=new nn;yl(b.e,c,e)}d=_d(e.c,20);if(!d){d=new Vm;Al(e,d)}return d}
400
+ function Bd(b,c){var d,e;e=_d(ul(b.e,c),19);if(!e){return en(),en(),dn}d=_d(e.c,20);if(!d){return en(),en(),dn}return d}
401
+ function zd(b,c,d){var e,f,g;e=Bd(b,c);f=e.ib(d);f&&e.hb()&&(g=_d(ul(b.e,c),19),_d(El(g),20),g.e==0&&Cl(b.e,c),undefined)}
402
+ function ak(b,c,d){var e;e=b.c>0?b.c:b.o.offsetWidth||0;b.n.style[jo]=c*e+(Pb(),no);b.n.style[po]=(d-c)*e+no}
403
+ function bk(b,c,d){var e,f;f=~~(b.q.b.f/2);e=c+(d-c)/2;b.q.x.style[jo]=e*(b.c>0?b.c:b.o.offsetWidth||0)-f+(Pb(),no)}
404
+ function Ec(b,c,d){var e,f,g;if(Dc){g=_d(Dc.b[b.type],3);if(g){e=g.b.b;f=g.b.c;g.b.b=b;g.b.c=d;Dg(c,g.b);g.b.b=e;g.b.c=f}}}
405
+ function mj(b,c,d,e,f,g,h,i,j){var k,l,m;k=Uh(b);if(k){m=new dk;m.c=i;l=new Pj(c,d,e,f,g,h,m,j);m.i=l;Vg(k,m,k.x)}}
406
+ function Kd(b){N.call(this,b.jb()==0?null:_d(b.kb(Sd(le,{22:1,30:1},10,0,0)),22)[0]);this.b=b}
407
+ function hk(b){Cg(b.f,b,(Rc(),Rc(),Qc));Cg(b.f,b,(cd(),cd(),bd));Cg(b.f,b,(Yc(),Yc(),Xc));Cg(b.f,new ok(b),bd)}
408
+ function yj(b){var c,d;c=b.bb(b.j);d=b.bb(b.k);$j(b.n,c,d);_j(b.n,b.j,b.k);ak(b.n,b.j,b.k);bk(b.n,b.j,b.k);ck(b.n,b.j,b.k)}
409
+ function kb(){var b,c,d,e;d=ib(mb(lb()),2);e=Sd(ke,{30:1},33,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Lk(d[b])}L(e)}
410
+ function ql(i,b){var c=i.b;for(var d in c){var e=parseInt(d,10);if(d==e){var f=c[e];for(var g=0,h=f.length;g<h;++g){b.fb(f[g])}}}}
411
+ function Wg(b,c){var d;if(c.w!=b){return false}try{Jg(c,null)}finally{d=c.x;vb(d).removeChild(d);Gi(b.b,c)}return true}
412
+ function rk(b,c,d){var e,f;f=b.c;e=b.b;if(f<0||e<0){return false}if(c<b.d||d<b.e){return false}f+=b.d;e+=b.e;return f>c&&e>d}
413
+ function Ig(b,c){b.t&&(b.x.__listener=null,undefined);!!b.x&&xg(b.x,c);b.x=c;b.t&&(b.x.__listener=b,undefined)}
414
+ function Sc(b,c){c.b=b.b.clientX||0;c.c=b.b.clientY||0;c.d=rk(new sk(c.f.d),c.b,c.c);c.e=rk(new sk(c.f.j),c.b,c.c);c.f.i.Y()}
415
+ function mh(b,c){if(b.s){throw new Dk('Composite.initWidget() may only be called once.')}Hg(c);yg(b,c.x);b.s=c;Jg(c,b)}
416
+ function gwtOnLoad(c,d,e,f){$moduleName=d;$moduleBase=e;if(c)try{Gn(me)()}catch(b){c(d)}else{Gn(me)()}}
417
+ function sk(b){this.d=xb(Bb(b.ownerDocument),b);this.e=yb(Bb(b.ownerDocument),b);this.c=b.clientWidth;this.b=b.clientHeight}
418
+ function Pi(b,c,d,e,f,g){var h;h='url('+c+lo+-d+mo+-e+no;b.style['background']=h;b.style[po]=f+(Pb(),no);b.style['height']=g+no}
419
+ function ye(){ye=Fn;ve=(a=new Ae,a.l=4194303,a.m=4194303,a.h=524287,a);we=(a=new Ae,a.l=0,a.m=0,a.h=524288,a);se(1);se(2);xe=se(0)}
420
+ function Pk(d){if(d.length==0||d[0]>Jn&&d[d.length-1]>Jn){return d}var b=d.replace(/^(\s*)/,Hn);var c=b.replace(/\s*$/,Hn);return c}
421
+ function Ag(b){var c,d;c=b[io]==null?null:String(b[io]);d=c.indexOf(String.fromCharCode(32));if(d>=0){return c.substr(0,d-0)}return c}
422
+ function Ll(b,c){var d,e,f;if(c!=null&&c.cM&&!!c.cM[34]){d=_d(c,34);e=d.mb();if(tl(b.b,e)){f=ul(b.b,e);return mn(d.W(),f)}}return false}
423
+ function vl(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return g.W()}}}return null}
424
+ function wl(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return true}}}return false}
425
+ function gb(c,d){var b,e,f,g;for(e=0,f=c.length;e<f;++e){g=c[e];try{g[1]?g[0].tb()&&(d=fb(d,g)):g[0].y()}catch(b){b=ne(b);if(!be(b,2))throw b}}return d}
426
+ function jb(b){var c,d,e,f;e=mb(ce(b.b)?ae(b.b):null);f=Sd(ke,{30:1},33,e.length,0);for(c=0,d=f.length;c<d;++c){f[c]=new Lk(e[c])}L(f)}
427
+ function se(b){var c,d;if(b>-129&&b<128){c=b+128;qe==null&&(qe=Sd(ge,{30:1},26,256,0));d=qe[c];!d&&(d=qe[c]=oe(b));return d}return oe(b)}
428
+ function Ud(b,c,d){if(d!=null){if(b.qI>0&&!$d(d,b.qI)){throw new uk}if(b.qI<0&&(d.tM==Fn||d.cM&&!!d.cM[1])){throw new uk}}return b[c]=d}
429
+ function Gh(b,c,d,e,f,g,h){if(!Mk(b.e,d)||b.c!=e||b.d!=f||b.f!=g||b.b!=h){b.e=d;b.c=e;b.d=f;b.f=g;b.b=h;Pi(c.x,d,e,f,g,h);Cf(new Kh(c))}}
430
+ function hb(b){var c,d,e;e=Hn;b=Pk(b);c=b.indexOf('(');if(c!=-1){d=b.indexOf(In)==0?8:0;e=Pk(b.substr(d,c-d))}return e.length>0?e:'anonymous'}
431
+ function mi(){var b;ki();gi.call(this,(b=$doc.createElement('INPUT'),b.type='text',b),(!Je&&(Je=new Ke),!Ge&&(Ge=new He)));this.x[io]='gwt-TextBox'}
432
+ function Qk(b){var c;c=0;while(0<=(c=b.indexOf('\\',c))){b.charCodeAt(c+1)==36?(b=b.substr(0,c-0)+'$'+Ok(b,++c)):(b=b.substr(0,c-0)+Ok(b,++c))}return b}
433
+ function Pb(){Pb=Fn;Ob=new Rb;Mb=new Tb;Hb=new Vb;Ib=new Xb;Nb=new Zb;Lb=new _b;Jb=new bc;Gb=new dc;Kb=new fc;Td(fe,{30:1},23,[Ob,Mb,Hb,Ib,Nb,Lb,Jb,Gb,Kb])}
434
+ function Hg(b){if(!b.w){(Qh(),tl(Ph.b,b))&&Sh(b)}else if(be(b.w,17)){_d(b.w,17).T(b)}else if(b.w){throw new Dk("This widget's parent does not implement HasWidgets")}}
435
+ function cf(b,c){if(c<=0){throw new Ak('must be positive')}b.c?($wnd.clearInterval(b.d),undefined):($wnd.clearTimeout(b.d),undefined);Um(_e,b);b.c=false;b.d=df(b,c);Qm(_e,b)}
436
+ function pd(c,d){var b,e,f;!d.f||d.B();f=d.g;d.g=c.c;try{yd(c.b,d)}catch(b){b=ne(b);if(be(b,9)){e=b;throw new Ld(e.b)}else throw b}finally{f==null?(d.f=true,d.g=null):(d.g=f)}}
437
+ function Lf(b,c){var d,e,f,g,h;if(!!Gf&&!!b&&tl(b.b.e,Gf)){d=Hf.b;e=Hf.c;f=Hf.d;g=Hf.e;If(Hf);Hf.e=c;pd(b,Hf);h=!(Hf.b&&!Hf.c);Hf.b=d;Hf.c=e;Hf.d=f;Hf.e=g;return h}return true}
438
+ function Rd(b,c){var d=new Array(c);if(b==3){for(var e=0;e<c;++e){var f=new Object;f.l=f.m=f.h=0;d[e]=f}}else if(b>0){var f=[null,0,false][b];for(var e=0;e<c;++e){d[e]=f}}return d}
439
+ function kj(){kj=Fn;ej=new De('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAJElEQVR42u3BMQEAAADCoPVPbQlPoAAAAAAAAAAAAAAAAAA4GTWzAAHmFYjpAAAAAElFTkSuQmCC')}
440
+ function Dl(i,b,c){var d=i.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){d.length==1?delete i.b[c]:d.splice(e,1);--i.e;return g.W()}}}return null}
441
+ function zl(k,b,c,d){var e=k.b[d];if(e){for(var f=0,g=e.length;f<g;++f){var h=e[f];var i=h.mb();if(k.lb(b,i)){var j=h.W();h.nb(c);return j}}}else{e=k.b[d]=[]}var h=new yn(b,c);e.push(h);++k.e;return null}
442
+ function Jg(b,c){var d;d=b.w;if(!c){try{!!d&&d.O()&&b.Q()}finally{b.w=null}}else{if(d){throw new Dk('Cannot set a new parent without first clearing the old parent')}b.w=c;c.O()&&b.P()}}
443
+ function Be(b){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:b})}
444
+ function Gg(b){if(!b.O()){throw new Dk("Should only call onDetach when the widget is attached to the browser's document")}try{b.S()}finally{try{b.N()}finally{b.x.__listener=null;b.t=false}}}
445
+ function Eg(b){var c;if(b.O()){throw new Dk("Should only call onAttach when the widget is detached from the browser's document")}b.t=true;b.x.__listener=b;c=b.u;b.u=-1;c>0&&(b.u==-1?qg(b.x,c|(b.x.__eventBits||0)):(b.u|=c));b.M();b.R()}
446
+ function eh(c,d){var i;ch();var b,e,f,g,h;e=null;for(h=c.U();h.I();){g=_d(h.J(),15);try{d.V(g)}catch(b){b=ne(b);if(be(b,10)){f=b;!e&&(e=new qn);i=yl(e.b,f,e)}else throw b}}if(e){throw new dh(e)}}
447
+ function Xk(b){var c,d,e,f;c=0;e=b.length;f=e-4;d=0;while(d<f){c=b.charCodeAt(d+3)+31*(b.charCodeAt(d+2)+31*(b.charCodeAt(d+1)+31*(b.charCodeAt(d)+31*c)))|0;d+=4}while(d<e){c=c*31+b.charCodeAt(d++)}return c|0}
448
+ function wd(b,c,d){var e;if(!c){throw new Jk('Cannot add a handler with a null type')}if(!d){throw new Jk('Cannot add a null handler')}b.c>0?vd(b,new Ui(b,c,d)):(e=Ad(b,c),e.fb(d),undefined);return new Si(b,c,d)}
449
+ function Ei(b,c,d){var e,f;if(d<0||d>b.d){throw new Fk}if(b.d==b.b.length){f=Sd(ie,{30:1},15,b.b.length*2,0);for(e=0;e<b.b.length;++e){Ud(f,e,b.b[e])}b.b=f}++b.d;for(e=b.d-1;e>d;--e){Ud(b.b,e,b.b[e-1])}Ud(b.b,d,c)}
450
+ function Uh(b){Qh();var c,d;d=_d(ul(Oh,b),16);c=null;if(b!=null){if(!(c=$doc.getElementById(b))){return null}}if(d){if(!c||d.x==c){return d}}Oh.e==0&&Uf(new Zh);!c?(d=new ai):(d=new Rh(c));yl(Oh,b,d);pn(Ph,d);return d}
451
+ function yb(b,c){if(Element.prototype.getBoundingClientRect){return c.getBoundingClientRect().top+b.scrollTop|0}else{var d=c.ownerDocument;return d.getBoxObjectFor(c).screenY-d.getBoxObjectFor(d.documentElement).screenY}}
452
+ function xb(b,c){if(Element.prototype.getBoundingClientRect){return c.getBoundingClientRect().left+b.scrollLeft|0}else{var d=c.ownerDocument;return d.getBoxObjectFor(c).screenX-d.getBoxObjectFor(d.documentElement).screenX}}
453
+ function Bg(b,c,d){if(!b){throw new M('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.')}c=Pk(c);if(c.length==0){throw new Ak('Style names cannot be empty')}d?qb(b,c):sb(b,c)}
454
+ function ik(b,c){var d,e,f,g,h,i;g=fg(c.e.type);if(g==4){c.e.preventDefault()}else if(g==64){f=c.e;h=f.clientX||0;i=f.clientY||0;d=h-b.b;e=b.c-i;b.b=h;b.c=i;b.d?Tj(b.f,d):b.e?Uj(b.f,d):Vj(b.f,d,e);c.e.preventDefault()}else g==8&&b.f.i._()}
455
+ function qb(b,c){var d,e,f,g;c=Pk(c);g=b.className;d=g.indexOf(c);while(d!=-1){if(d==0||g.charCodeAt(d-1)==32){e=d+c.length;f=g.length;if(e==f||e<f&&g.charCodeAt(e)==32){break}}d=g.indexOf(c,d+1)}if(d==-1){g.length>0&&(g+=Jn);b.className=g+c}}
456
+ function Jj(b,c){var d,e;e=b.e+b.c;b.g!=0&&!b.d?e-c<~~(b.g/2)?(d=e):c-b.e<~~(b.g/2)?(d=b.e):c==b.e?(d=de(Math.floor(c))):c==e?(d=de(Math.ceil(c))):(d=ue(te(re(Math.round(c/b.g)),se(b.g)))):(d=ue(re(Math.round(c))));d<b.e&&(d=b.e);d>e&&(d=e);return d}
457
+ function mc(){lc();var b,c,d;d=null;if(kc.length!=0){b=kc.join(Hn);c=xc((tc(),sc),b);!kc&&(d=c);kc.length=0}if(ic.length!=0){b=ic.join(Hn);c=wc((tc(),sc),b);!ic&&(d=c);ic.length=0}if(jc.length!=0){b=jc.join(Hn);c=wc((tc(),sc),b);!jc&&(d=c);jc.length=0}hc=false;return d}
458
+ function Ve(b,c){var d,e,f;f=false;try{b.d=true;b.g.b=b.c.c;cf(b.b,10000);while(nf(b.g)){e=of(b.g);try{if(e==null){return}if(e!=null&&e.cM&&!!e.cM[11]){d=_d(e,11);Jh(d)}}finally{f=b.g.c==-1;f||pf(b.g)}if((new Date).getTime()-c>=100){return}}}finally{if(!f){bf(b.b);b.d=false;We(b)}}}
459
+ function ck(b,c,d){var e;e=new bl;e.b.b+='border-width:';e.b.b+='0px ';al(e,b.c>0?b.c:b.o.offsetWidth||0);e.b.b+=mo;e.b.b+=100;e.b.b+='px 0px;';e.b.b+='top:';e.b.b+=-100+(1-(d-c))*100;e.b.b+=vo;e.b.b+='left:';_k(e,c*(b.c>0?b.c:b.o.offsetWidth||0));e.b.b+=vo;b.r.x.setAttribute(Kn,e.b.b)}
460
+ function sb(b,c){var d,e,f,g,h,i,j;c=Pk(c);j=b.className;f=j.indexOf(c);while(f!=-1){if(f==0||j.charCodeAt(f-1)==32){g=f+c.length;h=j.length;if(g==h||g<h&&j.charCodeAt(g)==32){break}}f=j.indexOf(c,f+1)}if(f!=-1){d=Pk(j.substr(0,f-0));e=Pk(Ok(j,f+c.length));d.length==0?(i=e):e.length==0?(i=d):(i=d+Jn+e);b.className=i}}
461
+ function yd(c,d){var b,e,f,g,h,i,j;if(!d){throw new Jk('Cannot fire null event')}try{++c.c;h=Bd(c,d.A());e=null;i=c.d?h.rb(h.jb()):h.qb();while(c.d?i.c>0:i.c<i.e.jb()){g=c.d?Dm(i):wm(i);try{d.z(_d(g,18))}catch(b){b=ne(b);if(be(b,10)){f=b;!e&&(e=new qn);j=yl(e.b,f,e)}else throw b}}if(e){throw new Kd(e)}}finally{--c.c;c.c==0&&Cd(c)}}
462
+ function rg(){var e=$wnd.onbeforeunload;var f=$wnd.onunload;$wnd.onbeforeunload=function(b){var c,d;try{c=Gn(Xf)()}finally{d=e&&e(b)}if(c!=null){return c}if(d!=null){return d}};$wnd.onunload=Gn(function(b){try{Sf&&md((!Tf&&(Tf=new dg),Tf))}finally{f&&f(b);$wnd.onresize=null;$wnd.onscroll=null;$wnd.onbeforeunload=null;$wnd.onunload=null}})}
463
+ function pg(){$wnd.addEventListener(Mn,Gn(function(b){var c=ig;if(c&&!b.relatedTarget){if('html'==b.target.tagName.toLowerCase()){var d=$doc.createEvent('MouseEvents');d.initMouseEvent(Zn,true,true,$wnd,0,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,null);c.dispatchEvent(d)}}}),true);$wnd.addEventListener($n,kg,true)}
464
+ function Kj(b,c,d,e,f,g,h){var i,j,k;this.n=h;this.f=f;this.e=b;k=c-b;this.c=k==0?1:k;this.d=true;g==0?this.c>4000?(this.g=100):this.c>2000?(this.g=50):this.c>1000?(this.g=25):this.c>500?(this.g=10):this.c>100?(this.g=5):(this.g=0):(this.g=g);if(k!=0){i=(d-this.e)/this.c;j=(e-this.e)/this.c;this.j=i;this.k=j;zj(this);yj(this)}else{this.j=0;this.k=1;zj(this);yj(this)}}
465
+ function Hh(b,c,d,e,f,g){var h,i;this.c=d;this.d=e;this.f=f;this.b=g;this.e=c;Ig(b,(h=$doc.createElement('span'),h.innerHTML=(i='width: '+f+'px; height: '+g+'px; background: url('+c+lo+-d+mo+-e+no,"<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='"+$moduleBase+"clear.cache.gif' style='"+i+"' border='0'>")||Hn,tb(h)));b.u==-1?qg(b.x,133333119|(b.x.__eventBits||0)):(b.u|=133333119)}
466
+ function lj(b){var c;var d;var e;var f;var g;var h;var i;var j;var k;if(b){c=b['hostElementId'];d=b['leftBorder'];e=b['rightBorder'];f=b['currentLeft'];g=b['currentRight'];h=b['stepSize'];i=b['unit'];j=b['callback'];k=b[po]}!c&&(c=Hn);!d&&(d=0);!e&&(e=0);d>e&&(d=e);!f&&(f=d);!g&&(g=e);!h&&(h=0);i=i==null?so:i.indexOf(so)!=-1?i:'%n '+i;(!j||typeof j!=In)&&(j=null);!k&&(k=0);mj(c,d,e,f,g,i,h,k,j)}
467
+ function me(){var b;!!$stats&&Be('com.google.gwt.user.client.UserAgentAsserter');b=Rf();Mk(On,b)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (gecko1_8) does not match the runtime user.agent value ('+b+'). Expect more errors.\n'),undefined);!!$stats&&Be('de.factfinder.asn.slider.client.StandAloneOneTouchSlider');$wnd.oneTouchSlider={};$wnd.oneTouchSlider.addSlider=Gn(lj);$wnd.oneTouchSliderOnLoad&&typeof $wnd.oneTouchSliderOnLoad==In&&$wnd.oneTouchSliderOnLoad()}
468
+ function Rf(){var c=navigator.userAgent.toLowerCase();var d=function(b){return parseInt(b[1])*1000+parseInt(b[2])};if(function(){return c.indexOf(Qn)!=-1}())return Qn;if(function(){return c.indexOf('webkit')!=-1}())return 'safari';if(function(){return c.indexOf(Rn)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(Rn)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var b=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(b&&b.length==3)return d(b)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return On;return 'unknown'}
469
+ function re(b){var c,d,e,f,g,h,i,j;if(isNaN(b)){return ye(),xe}if(b<-9223372036854775808){return ye(),we}if(b>=9223372036854775807){return ye(),ve}f=false;if(b<0){f=true;b=-b}e=0;if(b>=17592186044416){e=~~Math.max(Math.min(b/17592186044416,2147483647),-2147483648);b-=e*17592186044416}d=0;if(b>=4194304){d=~~Math.max(Math.min(b/4194304,2147483647),-2147483648);b-=d*4194304}c=~~Math.max(Math.min(b,2147483647),-2147483648);g=(a=new Ae,a.l=c,a.m=d,a.h=e,a);f&&(h=~g.l+1&4194303,i=~g.m+(h==0?1:0)&4194303,j=~g.h+(h==0&&i==0?1:0)&1048575,g.l=h,g.m=i,g.h=j,undefined);return g}
470
+ function te(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;d=b.l&8191;e=b.l>>13|(b.m&15)<<9;f=b.m>>4&8191;g=b.m>>17|(b.h&255)<<5;h=(b.h&1048320)>>8;i=c.l&8191;j=c.l>>13|(c.m&15)<<9;k=c.m>>4&8191;l=c.m>>17|(c.h&255)<<5;m=(c.h&1048320)>>8;z=d*i;A=e*i;B=f*i;C=g*i;D=h*i;if(j!=0){A+=d*j;B+=e*j;C+=f*j;D+=g*j}if(k!=0){B+=d*k;C+=e*k;D+=f*k}if(l!=0){C+=d*l;D+=e*l}m!=0&&(D+=d*m);o=z&4194303;p=(A&511)<<13;n=o+p;r=z>>22;s=A>>9;t=(B&262143)<<4;u=(C&31)<<17;q=r+s+t+u;w=B>>18;x=C>>5;y=(D&4095)<<8;v=w+x+y;q+=n>>22;n&=4194303;v+=q>>22;q&=4194303;v&=1048575;return pe(n,q,v)}
471
+ function fg(b){switch(b){case 'blur':return 4096;case 'change':return 1024;case Sn:return 1;case Tn:return 2;case 'focus':return 2048;case Un:return 128;case Vn:return 256;case Wn:return 512;case Xn:return 32768;case 'losecapture':return 8192;case Ln:return 4;case Yn:return 64;case Mn:return 32;case Nn:return 16;case Zn:return 8;case 'scroll':return 16384;case 'error':return 65536;case $n:case _n:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case ao:return 1048576;case bo:return 2097152;case co:return 4194304;case eo:return 8388608;case fo:return 16777216;case go:return 33554432;case ho:return 67108864;case 'ended':return 134217728;case 'progress':return 268435456;case 'canplaythrough':return 536870912;default:return -1;}}
472
+ function ng(){jg=Gn(function(b){if(!xf(b)){b.stopPropagation();b.preventDefault();return false}return true});lg=Gn(function(b){var c,d=this;while(d&&!(c=d.__listener)){d=d.parentNode}d&&d.nodeType!=1&&(d=null);c&&hg(c)&&wf(b,d,c)});mg=Gn(function(b){this.__gwtLastUnhandledEvent=b.type;lg.call(this,b)});kg=Gn(function(b){var c=jg;if(c(b)){var d=ig;if(d&&d.__listener){if(hg(d.__listener)){wf(b,d,d.__listener);b.stopPropagation()}}}});$wnd.addEventListener(Sn,kg,true);$wnd.addEventListener(Tn,kg,true);$wnd.addEventListener(Ln,kg,true);$wnd.addEventListener(Zn,kg,true);$wnd.addEventListener(Yn,kg,true);$wnd.addEventListener(Nn,kg,true);$wnd.addEventListener(Mn,kg,true);$wnd.addEventListener(_n,kg,true);$wnd.addEventListener(Un,jg,true);$wnd.addEventListener(Wn,jg,true);$wnd.addEventListener(Vn,jg,true);$wnd.addEventListener(ao,kg,true);$wnd.addEventListener(bo,kg,true);$wnd.addEventListener(co,kg,true);$wnd.addEventListener(eo,kg,true);$wnd.addEventListener(fo,kg,true);$wnd.addEventListener(go,kg,true);$wnd.addEventListener(ho,kg,true)}
473
+ function og(b,c){var d=(b.__eventBits||0)^c;b.__eventBits=c;if(!d)return;d&1&&(b.onclick=c&1?lg:null);d&2&&(b.ondblclick=c&2?lg:null);d&4&&(b.onmousedown=c&4?lg:null);d&8&&(b.onmouseup=c&8?lg:null);d&16&&(b.onmouseover=c&16?lg:null);d&32&&(b.onmouseout=c&32?lg:null);d&64&&(b.onmousemove=c&64?lg:null);d&128&&(b.onkeydown=c&128?lg:null);d&256&&(b.onkeypress=c&256?lg:null);d&512&&(b.onkeyup=c&512?lg:null);d&1024&&(b.onchange=c&1024?lg:null);d&2048&&(b.onfocus=c&2048?lg:null);d&4096&&(b.onblur=c&4096?lg:null);d&8192&&(b.onlosecapture=c&8192?lg:null);d&16384&&(b.onscroll=c&16384?lg:null);d&32768&&(b.onload=c&32768?mg:null);d&65536&&(b.onerror=c&65536?lg:null);d&131072&&(b.onmousewheel=c&131072?lg:null);d&262144&&(b.oncontextmenu=c&262144?lg:null);d&524288&&(b.onpaste=c&524288?lg:null);d&1048576&&(b.ontouchstart=c&1048576?lg:null);d&2097152&&(b.ontouchmove=c&2097152?lg:null);d&4194304&&(b.ontouchend=c&4194304?lg:null);d&8388608&&(b.ontouchcancel=c&8388608?lg:null);d&16777216&&(b.ongesturestart=c&16777216?lg:null);d&33554432&&(b.ongesturechange=c&33554432?lg:null);d&67108864&&(b.ongestureend=c&67108864?lg:null)}
474
+ function gj(b){if(!b.b){b.b=true;lc();R(ic,'.GLR1MK0AG{display:block;}.GLR1MK0OG{font-family:verdana, sans-serif;font-size:8pt;text-align:center;}.GLR1MK0EG{background:#555;width:100%;height:17px;position:relative;text-align:left;-moz-border-radius:4px 4px 4px 4px;-webkit-border-radius:4px;font-size:1.1em;}.GLR1MK0DG{height:100%;top:0;background:#6683b4;background-position:0 0;border:0 none;display:block;font-size:0.7em;position:absolute;z-index:1;text-align:center;}.GLR1MK0HG{background:repeat-x scroll 50% 50% #f6f6f6;border:1px solid #7f7f7f;color:#fff;font-weight:bold;outline:medium none;margin-left:-0.6em;top:-0.3em;cursor:default;height:23px;position:absolute;width:1em;z-index:3;-moz-border-radius:4px;-webkit-border-radius:4px;font-family:Verdana, Arial, sans-serif;font-size:1.1em;text-align:left;text-decoration:none;}.GLR1MK0IG{border-color:transparent;border-style:solid;border-width:0 200px 100px 0;height:0;width:0;position:absolute;border-bottom-color:#ccd6e6;opacity:0;z-index:2;margin-top:10px;}.GLR1MK0KG{opacity:0.5;}.GLR1MK0JG{opacity:0.7;}.GLR1MK0BG{cursor:pointer;}.GLR1MK0CG{cursor:none;}.GLR1MK0PF{cursor:default;}.GLR1MK0FG{margin:-21px auto;z-index:3;position:absolute;}.GLR1MK0GG{width:58px;margin:32px 0 0 -29px;}.GLR1MK0LG{background-color:#f1f1f1;border:1px solid #acacac;font-size:9px;height:20px;margin:0 0 10px;text-align:center;width:40px;}.GLR1MK0MG{float:left;}.GLR1MK0NG{float:right;}');nc();return true}return false}
475
+ function dk(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;this.p=(ij(),cj);this.b=new bj;this.g=new lk(this);this.i=new oj;mh(this,(c=Ab($doc),q=new mi,e=Ab($doc),s=new mi,g=Ab($doc),h=Ab($doc),i=Ab($doc),j=Ab($doc),k=Ab($doc),w=new sh,m=Ab($doc),v=new Bh((jj(),dj)),o=new wh("<div class='GLR1MK0OG fact-finder-onetouchslider'> <span id='"+c+wo+e+"'><\/span> <div style='clear: both !important;'><\/div> <div style='clear: both !important;'><\/div> <div class='GLR1MK0AG'> <div class='GLR1MK0EG fact-finder-onetouchslider-bar' id='"+g+"'> <div class='GLR1MK0DG fact-finder-onetouchslider-bar fact-finder-onetouchslider-bar-selected' id='"+h+"'><\/div> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-left' id='"+i+"'><\/span> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-right' id='"+j+wo+k+wo+m+"'><\/span> <\/div> <\/div> <\/div>"),q.x[io]='GLR1MK0LG GLR1MK0MG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-left',q.x[xo]=true,zg(q,Ag(q.x)+yo),s.x[io]='GLR1MK0LG GLR1MK0NG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-right',s.x[xo]=true,zg(s,Ag(s.x)+yo),w.x[io]='GLR1MK0IG fact-finder-onetouchslider-triangle',v.x[io]='GLR1MK0FG fact-finder-onetouchslider-grip',b=Me(o.x),d=$doc.getElementById(c),f=$doc.getElementById(e),u=$doc.getElementById(g),u.removeAttribute(zo),t=$doc.getElementById(h),t.removeAttribute(zo),p=$doc.getElementById(i),p.removeAttribute(zo),r=$doc.getElementById(j),r.removeAttribute(zo),l=$doc.getElementById(k),n=$doc.getElementById(m),b.c?b.c.insertBefore(b.b,b.d):Oe(b.b),Hg(q),Ci(o.b,q),d.parentNode.replaceChild(q.x,d),Jg(q,o),Hg(s),Ci(o.b,s),f.parentNode.replaceChild(s.x,f),Jg(s,o),Hg(w),Ci(o.b,w),l.parentNode.replaceChild(w.x,l),Jg(w,o),Hg(v),Ci(o.b,v),n.parentNode.replaceChild(v.x,n),Jg(v,o),this.d=p,this.e=q,this.j=r,this.k=s,this.n=t,this.o=u,this.q=v,this.r=w,o));gj(this.p);hk(this.g);this.i.ab()}
476
+ function jj(){jj=Fn;dj=new De('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA7CAYAAAAq55mNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADoBJREFUeNrUW3mQFcUZ7znewS67y7GwLKziLp7hFlEDFqcsRquSKjUqgkqMlRgllT9MoqaSlDGEktKUZzQiGhMVOTxKrQhUiCnLKwKLCHJI9mRvjuVY3u6bqztfHzOvXzPvWHalymd99szsTHf/+jv7+xqNEIK+zb/Kqgvyes88y5PS5PuG+v+dtVU2v0kg8NP68D75JhfBHGBwuYCq9yRHv2SgQJsDADAMjCY91/Lskkjk32uyHvYHsDlAALUMANVnuUDiENADAljvJ0hN9CGTIRYwjCISqX8zpNaQ+tLVxQuxBTl/Wr7uRXSuclGXOKYrwNW/q4ukiioWRJQWh3AYhbT9F10FZBgwTay+JnEhDGzYTwbiKQA98X3YImhK2z+gISD1LCLrt0ZxUZE2e/Ycc/r06WjSlEkoEomgC8+vQqbJh2xuadW6TyVIY0Ojtn/fPrJ54ybvQF2tKcDJID1poWTgfQKbVXTzAGnK4Oj95ZdNN25dsliff/WCWMeRxETb8cZ7GFMrEsMEVUAbZZ1pqB2m1gtti2no9SVF8W0nj7V3rFuznrz8j5ddCSwlV+GyzPW8xDgj0CwgDcXoMJBTJk6O3LJ4kXbV7Oryw8d6bnA9PEPXtTgAgY/gP+10yaVjM6IzxtxlxqLGxkFGYsu6NevQ6pdedAVIL4TCwPYNqGJds4Fk9PAfHjYXfO/7Q5o7Tt4MABfoGtI1XYf/IQZQ81t1+QVQipFOg2DMrxE5WFQQffVYZ23N2tdexxs3b3IEYBW0rLtZwWYDqkkuSFdFlNLYiorIz5YtM86fMHPWqR77bsASNyhKAZIi1AOgIc5TAMQ+YEzYNWuBQCJqxo8b8cTfX1qVePqZZ2Swbl/BngY0RGSNEJCReXPmRRctXqRHSioXgx5er+sclGHojHuAlbJVAEani64QWcSAUgJuYiRAYgbY8+g7pL1yzNDlH215r335n5ZTgI4gWX9JiBvKO2BQjU/AyfGXfMf866rnTCdW8Wvg5PUgrmxSHkzSdTGbKL/H7Bn2JPLvKShoXSzeo++zfnDQD+3XcbzyrxuPrJx8ZfXFDz7woBpg6JJbU9Ut7Wc89NBDuUTWUCIb875f3mce7Ir+OGm5c4kkgr508EYL9A/7eoiEaBK+KJ7PPUyChWIgGVgULBSAjh7rTk6fdunUz4riRm/NjppsAUSfQkAtxFcavuEpLJtUfSJhXevAqtt05YEc14MJEuQwThBxz7nic8t1FfJI8A7jHnzjsL7EteOx/tk4jle888ChB+/8yT3xK6ZfroaMei6u6hm2UZoisoyW3r7UPG/8VZWHuhJ3yROCSfBr1nppE04tAoagwUDDSwahGLSuB8/oc5fA9zhtgRwHB33ajsvA0vuk5Zy7+dO6ny5afKsh+fC8IjA9D5cSgH3gNw8Ye+sOLbMcz7RsD1k2TMKmq87Bssk5KmDOGepcCuMm2rrza9SbtFBRYSx4z/W/p30JkGlExxHPuxPWbFJYNY0uurIByA9oDrHVacdv/Wv35b29yUrbtmFQB1kwQQtWnIGmLUzEcvl9auJc/AoGRdAXu2vRoSPH0Z7aVhSPmczn8G89xjlLkL9wSXrNWtqXg+i4lm2hprauRTffelOuuDoNdDagaQaJdtzS0XUjHYgBtSzk0MEdf6ISueKZEDmIduBdC7V1HkHR+CCkGyZqbOlChQDeF33+Lhb9uaJPzLjpODAeG9di4/b09lTW7D8xZeGCajNkO5eTo1qmfSaNX7+q667q6emppAPZVhLx1goAc1GWyeWiDROmYvrl3joUicZRLBaHwD6KIExEEOMyzjJw4l0uCUJ8BQf9caykAJtMooOth66+/oc3IMW9ZMxqmBnyPmn7zOqFC7Xaxrbv0sFo1KPpBjKAdMNFBuxGDMNjXDIoYQgSdAJ/R6wtLx2Mjhw9hrpP9aLCwcXIjMRYH9T1NLYdg78Xo46jCcX3gsvxXOSBGnjQYjBclNg1c0ewMEk8bfyEGbFYNOpZtq3nymjoWZJXAdDZc2ehrmMnL7OAk0lYTdZavLXoSvsrblNymOglbe5uhhTF0Z79DbA4sGnRIyxQ8C1y18kkSvTaaMjgGHvf8nVR9OlTUozHx+wVz6zo2xs/nzhv7rxsVjcvHWUf032li+Pxnp5EhZXs5QMlfUqi4BkQF+kkcoQ4Dy+OoQN1zajXchHRTYiCwPiA3vniTQ1QQ2sXGjm0gHGPfW/zPuxkUvSZGs9mYyWDZx2Hj54/afIkLYSbp3HVzGKI2HVV5Tjto617ymEACGWp2Oo8aKfiS0XVA3KBzAhce/wZUElRAbgTHW3/ognF4oXIIzozODzkFdszYG8SxLCp9SgqLYmBKJ9CGAC7nsPF1nWYuPri61ERhvfpd7SPEyfJmFmXXoByhX/ZMgzBB+Xlo7TOziPDqbjwLZcAanA9ZQCpnsLETHYdYTo7dPRQtHPXfuYjY9CVBy0hVlrKCHtc3xpae9Hki8agGJiV44lkANCFNk1XhX4G2zvPG1ZWVobyyTTmTKUUFRWBIekpoNYOiQ20zgyRzg0STMB0OVga7ZhA5SOGIRdEsKmlDRUMLmHPQZaR5unpuxdmeLihOVDfhoYVF6DOw0c4UJcDlTlKQVKwPKamQN3CwsKCvHLHeSXHmB8LOKpx8QXOUnA6XW3TY+JrRjw2wdIhBWjbjl1i5THnDEyQSkKQEaPix4J7DrS1oxvCw7GoBFxRe+dJJqaua3OOCqsrc5NRJP+0dM43u7u70eBCvYeC5XtKiaswCV03mW5SsaWTrqwYjTo6O1HX8ePAzWLOTdtmIu9nG/ydDl0EIrhEubb3QCMaN3YUamxuSemn67sVrpv+d8ySaiiRSPTklfI0c2TOUXt7B7ni4plHXcdJKbDgKG2pPtJJ0FUv0Aeh0WVD0eYPPgLRjrDtl2s7TBcpUCTyR2zLzcDilPiCJPQkutGIIYXgW4eg+qaW08SWBGLLf9FIpKsTFjVXvijMvaj7O1LfUEfmzZrW7ro0FHM4sVjX5iItxJrqMNXNL3fvBRdgIwKso5zywzdHEHUfqWsr9TcQU7qY+2ob0TmjRzJgQfRl26mxBdH5mIbR3tzUnGn+OTkqb2jxye5uMqzETML1QdC1c7nmS7oKHPVAjGNwP3J4Mdq1Zy+KxAbRScAqEngTdJPQ+J2yML1KqFPLSf/uDwfLTnW8vrEFlQ0fimobGgPR5kYIB1lcOofSYSUHarZvJxmy+SQXR9V7XLN9B4pGza98S0jJoUS5anPOUqKrDGYQRUwDRZhVpnoEYDXMBJaB1niriTQPvdc1zHJLlExDA5E00KnEqaBf1jfr30n5WM/FN/5g/r5PPv0EZwFI0jhKq1NSvKvWPPBbb7xJLr5o5sefbd1+ra8iPLOnI6zDpIVV/Gp/LZpwURUqKR4c+Fsk0pyamgqUcrqykaEhYF1jM2oCg0T79PWYWWmUGrugoLAGuScSIHE4Q40mo+iSDGU8vHX7Nm/FyhVf/3dbTTNYw3PkuMKPlJjjbzoIE2wVgT+Pnng0FZLA9o2R8Kc0C0hEAOET8QMELM+dL1jF6PItb7/5NpKS2VnzR7l01AfrbVi7wRw1atQ7TU1Ny5DEVo1OxgcLE6URk7/D0TRP6DKPqE7P62IGghChgwEwnPbMdyd8SJ3WcZofX/GLHZdOnepKxSl8psYorZr1/Aur3B07vvjwmhvuuQ4sbSUD64sloRzlYDSYKAMq3E/Kf6pRmuT4CQ4F5wcVRN6KgE5fMu7CV55/9jm1PEGylBhDdy8kpEbJOnzqiSe9KZMmrIaJYBFrcmfv8ujFE3Gp64j4lLoBYUgCg5LhnhkaJxXXpqIhzHVV6Gk8Pmjbj26Zu50uvFJ4yspRXTkFosq4XNHyaJVr9vTz9o8cWfaqH3P6pt8TuwsfMLfOfAfiSrFrQI7/3N+pUHBOWj8pt8LHgV1R++/vv/epDWvXE6UsQfIGGuZWQrjqrlz5iHvv0mveATfyIU9QC0MiJoWlLRUH7J4OUgLo+hx0fS66KX31++Zq0nPdwvkr9u78OCGKTmo5kWSrv+ghZ3vUl2VdcMGcO6+/tsZ79YWVf4nF4rtTFTEc7C5Yq+wjUyKZEk0vSJF40rfiex8gCxA0e/LEiY+NLTNbpWKTXGDCucJAPc/jMFhaQe/zbVudVc8+5az925//WFIy5H35zUCcmdsgqYmLXQqWdiLBtktU0YJYVuoPrPjh6vlz76+eecFOUWRSK2leLm7mUzZUM/a6XBelxabb7rjdWP36f65ta29bCn0N6Em0WCy27+47lzxqnWg6/viTT/iVtIEpG+ZRCDbUOimtx9S3WeX/3PzvmyF0m4X6c5CSlR6NwxUV56x75Hd3fbDmldfI+jc2yDqpGiHvjAvBZ1DaN2dcOSOy+LbF2ntbdlVt27Hzxt7enqnQdTSf4z1+1ASBQFtpaemm5x//7ab3333LFVwMK+1jhc6stJ/nYQ0jrEg8b848Y8kdS7SSYWNiyx9bPamltfUK27LPA0tbCvpYLPcfjcbqIbhIFBUXf1k9Z+Ynt900t3Pd2vXoxRdX01ytd1YOa5zB8Ru5umXEolG9unqhUb2wGlWNq0IVY8pRcVERevTp9SN+9fObDtPO9u4/QFME6LOPP0Xvvfsurm2ox4rvVgMCL8NxupxZhrxOjuVxoCoTyX9nv7EVFVpTS4s6QfWkWCYiIYYnr1TKQB2RC6to6TmSyiQEbKYjcihDUJD3Ebm8Dz1KwUTY5DzlxIh8qMK/thVyFFINjyuB88I42ZdTnn3ye9IGXT6WRhSOkRARV5PjJMfWMGvG4EyOsfbZwfuDSIf2VcBq5hxnKGSRPA4m9xtgv09ghwAOyz1lO4aOMuV3BhJgv4GqgLOARn0wGiSs34H4DWhsGjI5EhJW5vrmG/mdtX/3cjb/jUu/3Mu3/fd/AQYAFnxtwIzfP80AAAAASUVORK5CYII=')}
477
+ var Hn='',Jn=' ',so='%n',wo="'><\/span> <span id='",lo=') no-repeat ',yo='-readonly',Ao=':',$n='DOMMouseScroll',qo='GLR1MK0BG',ro='GLR1MK0CG',uo='GLR1MK0JG',to='GLR1MK0KG',ko='__gwtLastUnhandledEvent',io='className',Sn='click',Tn='dblclick',Pn='div',In='function',On='gecko1_8',go='gesturechange',ho='gestureend',fo='gesturestart',zo='id',Un='keydown',Vn='keypress',Wn='keyup',jo='left',Xn='load',Ln='mousedown',Yn='mousemove',Mn='mouseout',Nn='mouseover',Zn='mouseup',_n='mousewheel',Rn='msie',Qn='opera',no='px',mo='px ',vo='px;',xo='readOnly',Kn='style',eo='touchcancel',co='touchend',bo='touchmove',ao='touchstart',oo='value',po='width';var _;_=E.prototype={};_.eQ=function F(b){return this===b};_.hC=function G(){return this.$H||(this.$H=++U)};_.tM=Fn;_.cM={};_=K.prototype=new E;_.cM={10:1,30:1};_=J.prototype=new K;_.cM={10:1,30:1};_=M.prototype=I.prototype=new J;_.cM={2:1,10:1,30:1};_=O.prototype=H.prototype=new I;_.cM={2:1,10:1,30:1};_.b=null;_=S.prototype=new E;_.cM={};var T=0,U=0;_=eb.prototype=Z.prototype=new S;_.cM={};_.b=null;_.c=null;var $;_=nb.prototype=new E;_.cM={};_=pb.prototype=ob.prototype=new nb;_.cM={};_.b=Hn;_=Db.prototype=new E;_.eQ=function Eb(b){return this===b};_.hC=function Fb(){return this.$H||(this.$H=++U)};_.cM={30:1,31:1,32:1};_=Cb.prototype=new Db;_.cM={23:1,30:1,31:1,32:1};var Gb,Hb,Ib,Jb,Kb,Lb,Mb,Nb,Ob;_=Rb.prototype=Qb.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=Tb.prototype=Sb.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=Vb.prototype=Ub.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=Xb.prototype=Wb.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=Zb.prototype=Yb.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=_b.prototype=$b.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=bc.prototype=ac.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=dc.prototype=cc.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};_=fc.prototype=ec.prototype=new Cb;_.cM={23:1,30:1,31:1,32:1};var gc,hc=false,ic,jc,kc;_=pc.prototype=oc.prototype=new E;_.y=function qc(){(lc(),hc)&&mc()};_.cM={};_=yc.prototype=rc.prototype=new E;_.cM={};_.b=null;var sc;_=Bc.prototype=new E;_.cM={};_.g=null;_=Ac.prototype=new Bc;_.B=function Cc(){this.f=false;this.g=null};_.cM={};_.f=false;_=zc.prototype=new Ac;_.A=function Fc(){return this.C()};_.cM={};_.b=null;_.c=null;var Dc=null;_=Ic.prototype=new E;_.hC=function Kc(){return this.d};_.cM={};_.d=0;var Jc=0;_=Lc.prototype=Hc.prototype=new Ic;_.cM={};_=Mc.prototype=Gc.prototype=new Hc;_.cM={3:1};_.b=null;_.c=null;_=Nc.prototype=new zc;_.cM={};_=Pc.prototype=new Nc;_.cM={};_=Tc.prototype=Oc.prototype=new Pc;_.z=function Uc(b){Sc(this,_d(b,4))};_.C=function Vc(){return Qc};_.cM={};var Qc;_=Zc.prototype=Wc.prototype=new Pc;_.z=function $c(b){_d(_d(b,5),6).f.i.Z()};_.C=function _c(){return Xc};_.cM={};var Xc;_=dd.prototype=ad.prototype=new Pc;_.z=function ed(b){_d(b,7).D(this)};_.C=function fd(){return bd};_.cM={};var bd;_=hd.prototype=gd.prototype=new E;_.cM={};_.b=null;_=kd.prototype=id.prototype=new Ac;_.z=function ld(b){_d(b,8).E(this)};_.A=function nd(){return jd};_.cM={};var jd=null;_=rd.prototype=qd.prototype=od.prototype=new E;_.cM={25:1};_.b=null;_.c=null;_=ud.prototype=new E;_.cM={};_=td.prototype=new ud;_.F=function Dd(b,c,d){this.c>0?vd(this,new Xi(this,b,d)):zd(this,b,d)};_.cM={};_.b=null;_.c=0;_.d=false;_=Ed.prototype=sd.prototype=new td;_.F=function Fd(b,c,d){this.c>0?vd(this,new Xi(this,b,d)):zd(this,b,d)};_.cM={};_=Hd.prototype=Gd.prototype=new E;_.cM={};_.b=null;_=Kd.prototype=Jd.prototype=new I;_.cM={2:1,9:1,10:1,30:1};_.b=null;_=Ld.prototype=Id.prototype=new Jd;_.cM={2:1,9:1,10:1,30:1};_=Nd.prototype=Md.prototype=new E;_.cM={18:1};_=Pd.prototype=Od.prototype=new E;_.cM={};_.aC=null;_.qI=0;var Vd,Wd;var qe=null;var ve,we,xe;_=Ae.prototype=ze.prototype=new E;_.cM={26:1};_=De.prototype=Ce.prototype=new E;_.cM={};_.b=0;_.c=0;_.d=0;_.e=null;_.f=0;_=Ee.prototype=new E;_.cM={};_=He.prototype=Fe.prototype=new E;_.cM={};var Ge=null;_=Ke.prototype=Ie.prototype=new Ee;_.cM={};var Je=null;var Le=null;_=Qe.prototype=Pe.prototype=new E;_.cM={};_.b=null;_.c=null;_.d=null;_=Se.prototype=Re.prototype=new I;_.cM={2:1,10:1,30:1};_=Ye.prototype=Te.prototype=new E;_.cM={};_.d=false;_.f=false;_=$e.prototype=new E;_.G=function ef(){this.c||Um(_e,this);this.H()};_.cM={13:1};_.c=false;_.d=0;var _e;_=ff.prototype=Ze.prototype=new $e;_.H=function gf(){if(!this.b.d){return}Ue(this.b)};_.cM={13:1};_.b=null;_=jf.prototype=hf.prototype=new $e;_.H=function kf(){this.b.f=false;Ve(this.b,(new Date).getTime())};_.cM={13:1};_.b=null;_=qf.prototype=lf.prototype=new E;_.I=function rf(){return this.d<this.b};_.J=function sf(){return of(this)};_.K=function tf(){pf(this)};_.cM={};_.b=0;_.c=-1;_.d=0;_.e=null;var uf=null,vf=null;var Af;var Df=null;_=Jf.prototype=Ff.prototype=new Ac;_.z=function Kf(b){ik(_d(b,12),this);Hf.d=false};_.A=function Mf(){return Gf};_.B=function Nf(){If(this)};_.cM={};_.b=false;_.c=false;_.d=false;_.e=null;var Gf=null,Hf=null;_=Pf.prototype=Of.prototype=new E;_.E=function Qf(b){while((af(),_e).c>0){bf(_d(Rm(_e,0),13))}};_.cM={8:1,18:1};var Sf=false,Tf=null;_=_f.prototype=Yf.prototype=new Ac;_.z=function ag(b){ee(b);null.tb()};_.A=function bg(){return Zf};_.cM={};var Zf;_=dg.prototype=cg.prototype=new od;_.cM={25:1};var eg=false;var ig=null,jg=null,kg=null,lg=null,mg=null;_=wg.prototype=new E;_.cM={28:1};_.x=null;_=vg.prototype=new wg;_.M=function Lg(){};_.N=function Mg(){};_.O=function Ng(){return this.t};_.P=function Og(){Eg(this)};_.L=function Pg(b){Fg(this,b)};_.Q=function Qg(){Gg(this)};_.R=function Rg(){};_.S=function Sg(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.t=false;_.u=0;_.v=null;_.w=null;_=ug.prototype=new vg;_.M=function Tg(){eh(this,(ch(),ah))};_.N=function Ug(){eh(this,(ch(),bh))};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=tg.prototype=new ug;_.U=function Xg(){return new Li(this.b)};_.T=function Yg(b){return Wg(this,b)};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=sg.prototype=new tg;_.T=function $g(b){var c;c=Wg(this,b);c&&Zg(b.x);return c};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=dh.prototype=_g.prototype=new Id;_.cM={2:1,9:1,10:1,30:1};var ah,bh;_=gh.prototype=fh.prototype=new E;_.V=function hh(b){b.P()};_.cM={};_=jh.prototype=ih.prototype=new E;_.V=function kh(b){b.Q()};_.cM={};_=lh.prototype=new vg;_.O=function nh(){if(this.s){return this.s.t}return false};_.P=function oh(){if(this.u!=-1){Kg(this.s,this.u);this.u=-1}Eg(this.s);this.x.__listener=this;this.R()};_.L=function ph(b){Fg(this,b);Fg(this.s,b)};_.Q=function qh(){try{this.S()}finally{Gg(this.s)}};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.s=null;_=sh.prototype=rh.prototype=new tg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=th.prototype=new vg;_.P=function uh(){var b;Eg(this);b=this.x.tabIndex;-1==b&&(this.x.tabIndex=0,undefined)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=wh.prototype=vh.prototype=new tg;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Bh.prototype=xh.prototype=new vg;_.L=function Ch(b){fg(b.type)==32768&&!!this.b&&(this.x[ko]=Hn,undefined);Fg(this,b)};_.R=function Dh(){var b;b=rb(this.x,ko);Mk(Xn,b)&&Cf(new Kh(this))};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.b=null;_=Fh.prototype=new E;_.cM={};_=Hh.prototype=Eh.prototype=new Fh;_.cM={};_.b=0;_.c=0;_.d=0;_.e=null;_.f=0;_=Kh.prototype=Ih.prototype=new E;_.y=function Lh(){Jh(this)};_.cM={11:1};_.b=null;_=Rh.prototype=Mh.prototype=new sg;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};var Nh,Oh,Ph;_=Wh.prototype=Vh.prototype=new E;_.V=function Xh(b){b.O()&&b.Q()};_.cM={};_=Zh.prototype=Yh.prototype=new E;_.E=function $h(b){Th()};_.cM={8:1,18:1};_=ai.prototype=_h.prototype=new Mh;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};_=di.prototype=new th;_.W=function hi(){return ei(this)};_.L=function ii(b){var c;c=fg(b.type);(c&896)!=0?Fg(this,b):Fg(this,b)};_.R=function ji(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=ci.prototype=new di;_.W=function li(){var b;return b=ei(this),b==null?Hn:b};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=mi.prototype=bi.prototype=new ci;_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=ni.prototype=new Db;_.cM={29:1,30:1,31:1,32:1};var oi,pi,qi,ri;_=ui.prototype=ti.prototype=new ni;_.cM={29:1,30:1,31:1,32:1};_=wi.prototype=vi.prototype=new ni;_.cM={29:1,30:1,31:1,32:1};_=yi.prototype=xi.prototype=new ni;_.cM={29:1,30:1,31:1,32:1};_=Ai.prototype=zi.prototype=new ni;_.cM={29:1,30:1,31:1,32:1};_=Hi.prototype=Bi.prototype=new E;_.U=function Ii(){return new Li(this)};_.cM={};_.b=null;_.c=null;_.d=0;_=Li.prototype=Ji.prototype=new E;_.I=function Mi(){return this.b<this.c.d-1};_.J=function Ni(){return Ki(this)};_.K=function Oi(){if(this.b<0||this.b>=this.c.d){throw new Ck}this.c.c.T(this.c.b[this.b--])};_.cM={};_.b=-1;_.c=null;_=Si.prototype=Qi.prototype=new E;_.cM={};_.b=null;_.c=null;_.d=null;_.e=null;_=Ui.prototype=Ti.prototype=new E;_.y=function Vi(){xd(this.b,this.d,this.c)};_.cM={21:1};_.b=null;_.c=null;_.d=null;_=Xi.prototype=Wi.prototype=new E;_.y=function Yi(){zd(this.b,this.d,this.c)};_.cM={21:1};_.b=null;_.c=null;_.d=null;_=bj.prototype=Zi.prototype=new E;_.cM={};_.b=null;var cj=null,dj=null,ej=null;_=hj.prototype=fj.prototype=new E;_.cM={};_.b=false;_=oj.prototype=nj.prototype=new E;_.X=function pj(b,c){};_.Y=function qj(){};_.Z=function rj(){};_.$=function sj(){};_._=function tj(){};_.ab=function uj(){};_.cM={};_=xj.prototype=new E;_.bb=function Aj(b){return Hn+b};_.X=function Bj(b,c){if(this.i){this.j+=b;this.k+=c;zj(this);this.cb(b,c);yj(this)}};_.cb=function Cj(b,c){};_.Y=function Dj(){this.i=true;Wj(this.n)};_.Z=function Ej(){if(!this.i){Zj(this.n);this.i=false}};_.$=function Fj(){this.i||Yj(this.n)};_._=function Gj(){this.i=false;Sj(this.n)?Yj(this.n):Zj(this.n);this.db(this.j,this.k)};_.db=function Hj(b,c){};_.ab=function Ij(){yj(this)};_.cM={};_.i=false;_.j=0;_.k=1;_.n=null;_=wj.prototype=new xj;_.bb=function Lj(b){var c,d;c=b*this.c+this.e;d=Jj(this,c);return this.f!=null&&!!this.f.length?Nk(this.f,so,Hn+d):Hn+d};_.cb=function Mj(b,c){this.d=false};_.eb=function Nj(b,c){};_.db=function Oj(b,c){var d,e;d=Jj(this,b*this.c+this.e);e=Jj(this,c*this.c+this.e);this.eb(d,e)};_.cM={};_.c=0;_.d=false;_.e=0;_.f=null;_.g=0;_=Pj.prototype=vj.prototype=new wj;_.eb=function Qj(b,c){var d=this.b;d&&typeof d==In&&d(b,c)};_.cM={};_.b=null;_=dk.prototype=Rj.prototype=new lh;_.R=function ek(){this.i.ab()};_.S=function fk(){kk(this.g)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.c=0;_.d=null;_.e=null;_.f=null;_.j=null;_.k=null;_.n=null;_.o=null;_.q=null;_.r=null;_=lk.prototype=gk.prototype=new E;_.D=function mk(b){this.f.i.$()};_.cM={4:1,5:1,6:1,7:1,12:1,18:1};_.b=0;_.c=0;_.d=false;_.e=false;_.f=null;_=ok.prototype=nk.prototype=new E;_.D=function pk(b){jk(this.b)};_.cM={7:1,18:1};_.b=null;_=sk.prototype=qk.prototype=new E;_.cM={};_.b=0;_.c=0;_.d=0;_.e=0;_=uk.prototype=tk.prototype=new I;_.cM={2:1,10:1,30:1};_=wk.prototype=vk.prototype=new E;_.cM={};_=yk.prototype=xk.prototype=new I;_.cM={2:1,10:1,30:1};_=Ak.prototype=zk.prototype=new I;_.cM={2:1,10:1,30:1};_=Dk.prototype=Ck.prototype=Bk.prototype=new I;_.cM={2:1,10:1,30:1};_=Gk.prototype=Fk.prototype=Ek.prototype=new I;_.cM={2:1,10:1,30:1};_=Jk.prototype=Ik.prototype=Hk.prototype=new I;_.cM={2:1,10:1,30:1};_=Lk.prototype=Kk.prototype=new E;_.cM={30:1,33:1};_=String.prototype;_.eQ=function Rk(b){return Mk(this,b)};_.hC=function Sk(){return Yk(this)};_.cM={1:1,30:1,31:1};var Tk,Uk=0,Vk;_=bl.prototype=$k.prototype=new E;_.cM={};_=dl.prototype=cl.prototype=new I;_.cM={2:1,10:1,30:1};_=el.prototype=new E;_.fb=function gl(b){throw new dl('Add not supported on this collection')};_.gb=function hl(b){var c;c=fl(this.U(),b);return !!c};_.hb=function il(){return this.jb()==0};_.ib=function jl(b){var c;c=fl(this.U(),b);if(c){c.K();return true}else{return false}};_.kb=function kl(b){var c,d,e;e=this.jb();b.length<e&&(b=Qd(b,e));d=this.U();for(c=0;c<e;++c){Ud(b,c,d.J())}b.length>e&&Ud(b,e,null);return b};_.cM={};_=ml.prototype=new E;_.eQ=function ol(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[19])){return false}f=_d(b,19);if(this.e!=f.e){return false}for(d=new Ul((new Ml(f)).b);vm(d.b);){c=d.c=_d(wm(d.b),34);e=c.mb();g=c.W();if(!(e==null?this.d:e!=null&&e.cM&&!!e.cM[1]?Ao+_d(e,1) in this.f:wl(this,e,~~Q(e)))){return false}if(!En(g,e==null?this.c:e!=null&&e.cM&&!!e.cM[1]?this.f[Ao+_d(e,1)]:vl(this,e,~~Q(e)))){return false}}return true};_.hC=function pl(){var b,c,d;d=0;for(c=new Ul((new Ml(this)).b);vm(c.b);){b=c.c=_d(wm(c.b),34);d+=b.hC();d=~~d}return d};_.cM={19:1};_=ll.prototype=new ml;_.lb=function Gl(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)};_.cM={19:1};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;_=Il.prototype=new el;_.eQ=function Jl(b){var c,d,e;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[35])){return false}d=_d(b,35);if(d.jb()!=this.jb()){return false}for(c=d.U();c.I();){e=c.J();if(!this.gb(e)){return false}}return true};_.hC=function Kl(){var b,c,d;b=0;for(c=this.U();c.I();){d=c.J();if(d!=null){b+=Q(d);b=~~b}}return b};_.cM={35:1};_=Ml.prototype=Hl.prototype=new Il;_.gb=function Nl(b){return Ll(this,b)};_.U=function Ol(){return new Ul(this.b)};_.ib=function Pl(b){var c;if(Ll(this,b)){c=_d(b,34).mb();Cl(this.b,c);return true}return false};_.jb=function Ql(){return this.b.e};_.cM={35:1};_.b=null;_=Ul.prototype=Rl.prototype=new E;_.I=function Vl(){return vm(this.b)};_.J=function Wl(){return this.c=_d(wm(this.b),34)};_.K=function Xl(){Tl(this)};_.cM={};_.b=null;_.c=null;_.d=null;_=Zl.prototype=new E;_.eQ=function $l(b){var c;if(b!=null&&b.cM&&!!b.cM[34]){c=_d(b,34);if(En(this.mb(),c.mb())&&En(this.W(),c.W())){return true}}return false};_.hC=function _l(){var b,c;b=0;c=0;this.mb()!=null&&(b=Q(this.mb()));this.W()!=null&&(c=Q(this.W()));return b^c};_.cM={34:1};_=am.prototype=Yl.prototype=new Zl;_.mb=function bm(){return null};_.W=function cm(){return this.b.c};_.nb=function dm(b){return Al(this.b,b)};_.cM={34:1};_.b=null;_=fm.prototype=em.prototype=new Zl;_.mb=function gm(){return this.b};_.W=function hm(){return this.c.f[Ao+this.b]};_.nb=function im(b){return Bl(this.c,this.b,b)};_.cM={34:1};_.b=null;_.c=null;_=jm.prototype=new el;_.fb=function km(b){this.ob(this.jb(),b);return true};_.ob=function lm(b,c){throw new dl('Add not supported on this list')};_.eQ=function nm(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[20])){return false}g=_d(b,20);if(this.jb()!=g.jb()){return false}e=new ym(this);f=g.U();while(e.c<e.e.jb()){c=wm(e);d=wm(f);if(!(c==null?d==null:P(c,d))){return false}}return true};_.hC=function om(){var b,c,d;c=1;b=new ym(this);while(b.c<b.e.jb()){d=wm(b);c=31*c+(d==null?0:Q(d));c=~~c}return c};_.U=function qm(){return new ym(this)};_.qb=function rm(){return new Em(this,0)};_.rb=function sm(b){return new Em(this,b)};_.sb=function tm(b){throw new dl('Remove not supported on this list')};_.cM={20:1};_=ym.prototype=um.prototype=new E;_.I=function zm(){return this.c<this.e.jb()};_.J=function Am(){return wm(this)};_.K=function Bm(){xm(this)};_.cM={};_.c=0;_.d=-1;_.e=null;_=Em.prototype=Cm.prototype=new um;_.cM={};_.b=null;_=Gm.prototype=Fm.prototype=new Il;_.gb=function Hm(b){return tl(this.b,b)};_.U=function Im(){var b;return b=new Ul(this.c.b),new Lm(b)};_.jb=function Jm(){return this.c.b.e};_.cM={35:1};_.b=null;_.c=null;_=Lm.prototype=Km.prototype=new E;_.I=function Mm(){return vm(this.b.b)};_.J=function Nm(){var b;b=Sl(this.b);return b.mb()};_.K=function Om(){Tl(this.b)};_.cM={};_.b=null;_=Vm.prototype=Pm.prototype=new jm;_.fb=function Wm(b){return Ud(this.b,this.c++,b),true};_.ob=function Xm(b,c){(b<0||b>this.c)&&pm(b,this.c);this.b.splice(b,0,c);++this.c};_.gb=function Ym(b){return Sm(this,b,0)!=-1};_.pb=function Zm(b){return mm(b,this.c),this.b[b]};_.hb=function $m(){return this.c==0};_.sb=function _m(b){return Tm(this,b)};_.ib=function an(b){return Um(this,b)};_.jb=function bn(){return this.c};_.kb=function cn(b){var c,d,e;b.length<this.c&&(b=(d=b,e=Rd(0,this.c),Td(d.aC,d.cM,d.qI,e),e));for(c=0;c<this.c;++c){Ud(b,c,this.b[c])}b.length>this.c&&Ud(b,this.c,null);return b};_.cM={20:1,30:1};_.c=0;var dn;_=gn.prototype=fn.prototype=new jm;_.gb=function hn(b){return false};_.pb=function jn(b){throw new Fk};_.jb=function kn(){return 0};_.cM={20:1,30:1};_=nn.prototype=ln.prototype=new ll;_.cM={19:1,30:1};_=qn.prototype=on.prototype=new Il;_.fb=function rn(b){var c;return c=yl(this.b,b,this),c==null};_.gb=function sn(b){return tl(this.b,b)};_.hb=function tn(){return this.b.e==0};_.U=function un(){var b;return b=new Ul(nl(this.b).c.b),new Lm(b)};_.ib=function vn(b){return Cl(this.b,b)!=null};_.jb=function wn(){return this.b.e};_.cM={30:1,35:1};_.b=null;_=yn.prototype=xn.prototype=new Zl;_.mb=function zn(){return this.b};_.W=function An(){return this.c};_.nb=function Bn(b){var c;c=this.c;this.c=b;return c};_.cM={34:1};_.b=null;_.c=null;_=Dn.prototype=Cn.prototype=new I;_.cM={2:1,10:1,30:1};var Gn=X;var ke=new wk,fe=new wk,ge=new wk,ie=new wk,he=new wk,le=new wk,je=new wk;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (de_factfinder_asn_slider_OneTouchSlider && de_factfinder_asn_slider_OneTouchSlider.onScriptLoad)de_factfinder_asn_slider_OneTouchSlider.onScriptLoad(gwtOnLoad);})();
skin/frontend/base/default/js/factfinder_onetouchslider/79DD9AE9135ADFDE204324DA7F1B1405.cache.png ADDED
Binary file
skin/frontend/base/default/js/factfinder_onetouchslider/9F0D0456482D7A7A901A2CD8F64EA019.cache.js ADDED
@@ -0,0 +1,502 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){var $gwt_version = "2.3.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '9F0D0456482D7A7A901A2CD8F64EA019';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});function E(){}
2
+ function K(){}
3
+ function J(){}
4
+ function I(){}
5
+ function H(){}
6
+ function S(){}
7
+ function Z(){}
8
+ function io(){}
9
+ function ib(){}
10
+ function eb(){}
11
+ function mb(){}
12
+ function Tb(){}
13
+ function Sb(){}
14
+ function fc(){}
15
+ function ec(){}
16
+ function hc(){}
17
+ function gc(){}
18
+ function jc(){}
19
+ function ic(){}
20
+ function lc(){}
21
+ function kc(){}
22
+ function nc(){}
23
+ function mc(){}
24
+ function pc(){}
25
+ function oc(){}
26
+ function rc(){}
27
+ function qc(){}
28
+ function tc(){}
29
+ function sc(){}
30
+ function vc(){}
31
+ function uc(){}
32
+ function Fc(){}
33
+ function Ec(){}
34
+ function Qc(){}
35
+ function Pc(){}
36
+ function Oc(){}
37
+ function Xc(){}
38
+ function Wc(){}
39
+ function Vc(){}
40
+ function ad(){}
41
+ function cd(){}
42
+ function gd(){}
43
+ function bd(){}
44
+ function md(){}
45
+ function jd(){}
46
+ function sd(){}
47
+ function pd(){}
48
+ function vd(){}
49
+ function zd(){}
50
+ function xd(){}
51
+ function Dd(){}
52
+ function Jd(){}
53
+ function Id(){}
54
+ function Hd(){}
55
+ function Vd(){}
56
+ function Yd(){}
57
+ function Xd(){}
58
+ function _d(){}
59
+ function ae(){}
60
+ function ce(){}
61
+ function be(){}
62
+ function Qe(){}
63
+ function Pe(){}
64
+ function Se(){}
65
+ function Ue(){}
66
+ function Xe(){}
67
+ function Ve(){}
68
+ function $e(){}
69
+ function Ye(){}
70
+ function df(){}
71
+ function ff(){}
72
+ function hf(){}
73
+ function pf(){}
74
+ function of(){}
75
+ function yf(){}
76
+ function Bf(){}
77
+ function _f(){}
78
+ function Xf(){}
79
+ function fg(){}
80
+ function eg(){}
81
+ function pg(){}
82
+ function vg(){}
83
+ function Lg(){}
84
+ function Kg(){}
85
+ function Jg(){}
86
+ function Ig(){}
87
+ function Hg(){}
88
+ function oh(){}
89
+ function vh(){}
90
+ function uh(){}
91
+ function yh(){}
92
+ function xh(){}
93
+ function Ah(){}
94
+ function Gh(){}
95
+ function Ih(){}
96
+ function Kh(){}
97
+ function Mh(){}
98
+ function Uh(){}
99
+ function Th(){}
100
+ function Yh(){}
101
+ function ai(){}
102
+ function ki(){}
103
+ function ji(){}
104
+ function ni(){}
105
+ function mi(){}
106
+ function pi(){}
107
+ function ti(){}
108
+ function si(){}
109
+ function ri(){}
110
+ function Di(){}
111
+ function Ki(){}
112
+ function Ji(){}
113
+ function Mi(){}
114
+ function Li(){}
115
+ function Oi(){}
116
+ function Ni(){}
117
+ function Qi(){}
118
+ function Pi(){}
119
+ function Ri(){}
120
+ function Zi(){}
121
+ function dj(){}
122
+ function ej(){}
123
+ function nj(){}
124
+ function qj(){}
125
+ function tj(){}
126
+ function wj(){}
127
+ function Kj(){}
128
+ function Ij(){}
129
+ function Rj(){}
130
+ function Qj(){}
131
+ function $j(){}
132
+ function Zj(){}
133
+ function Yj(){}
134
+ function Yk(){}
135
+ function sk(){}
136
+ function Jk(){}
137
+ function Qk(){}
138
+ function Tk(){}
139
+ function Wk(){}
140
+ function Zk(){}
141
+ function $k(){}
142
+ function al(){}
143
+ function cl(){}
144
+ function fl(){}
145
+ function il(){}
146
+ function ll(){}
147
+ function Cl(){}
148
+ function Gl(){}
149
+ function Il(){}
150
+ function Ql(){}
151
+ function Pl(){}
152
+ function km(){}
153
+ function jm(){}
154
+ function tm(){}
155
+ function Bm(){}
156
+ function Am(){}
157
+ function Im(){}
158
+ function Nm(){}
159
+ function Ym(){}
160
+ function en(){}
161
+ function hn(){}
162
+ function nn(){}
163
+ function sn(){}
164
+ function Ln(){}
165
+ function Kn(){}
166
+ function Pn(){}
167
+ function Sn(){}
168
+ function _n(){}
169
+ function fo(){}
170
+ function ml(b){}
171
+ function M(b){lb()}
172
+ function N(){lb()}
173
+ function gf(){lb()}
174
+ function gl(){lb()}
175
+ function dl(){lb()}
176
+ function jl(){lb()}
177
+ function Xk(){lb()}
178
+ function _k(){lb()}
179
+ function go(){lb()}
180
+ function bl(b){lb()}
181
+ function el(b){lb()}
182
+ function hl(b){lb()}
183
+ function kl(b){lb()}
184
+ function Hl(b){lb()}
185
+ function sg(){rg()}
186
+ function Rn(){Wl(this)}
187
+ function lj(){gj();mj()}
188
+ function Hj(){Dj=new Kj}
189
+ function wd(){this.a={}}
190
+ function Wd(b){this.a=b}
191
+ function $h(b){this.a=b}
192
+ function Rk(b){this.a=b}
193
+ function Ok(b){this.e=b}
194
+ function Gf(b){this.d=b}
195
+ function an(b){this.d=b}
196
+ function on(b){this.a=b}
197
+ function om(b){this.a=b}
198
+ function Em(b){this.a=b}
199
+ function _i(b){this.b=b}
200
+ function $c(){this.c=++Yc}
201
+ function Un(){this.a=new Rn}
202
+ function Nh(){Nh=io;new Rn}
203
+ function Vh(){Vh=io;new lj}
204
+ function ab(){ab=io;$=new eb}
205
+ function Mb(){Mb=io;Ob()}
206
+ function Hc(){Hc=io;Jc()}
207
+ function Ai(){Ai=io;Ii()}
208
+ function Bj(){Bj=io;Gj()}
209
+ function Lj(){Lj=io;Hj(Gj())}
210
+ function Tf(){Tf=io;Sf=new nf}
211
+ function rg(){rg=io;qg=new $c}
212
+ function Jn(){Jn=io;In=new Ln}
213
+ function wi(b){this.w=b;new ae}
214
+ function wf(b){rf();this.a=b}
215
+ function zf(b){rf();this.a=b}
216
+ function Df(b){return b.c<b.a}
217
+ function Ke(b){return b.l|b.m<<22}
218
+ function Si(b,c){Ui(b,c,b.c)}
219
+ function Rf(b,c){zg();Fg(b,c)}
220
+ function mf(b,c){tn(b.b,c);lf(b)}
221
+ function Og(b,c){Qg(b.w,c,true)}
222
+ function Ng(b,c){b.w=c}
223
+ function Sg(b,c){!!b.u&&Ed(b.u,c)}
224
+ function oj(b){b.a.F(b.d,b.c,b.b)}
225
+ function Cf(b){return un(b.d.b,b.b)}
226
+ function Zm(b){return b.b<b.d.jb()}
227
+ function $d(b){Zd.call(this,b)}
228
+ function sh(b){Zd.call(this,b)}
229
+ function R(c,b){c[c.length]=b}
230
+ function Jm(b,c){this.b=b;this.a=c}
231
+ function jn(b,c){this.a=b;this.b=c}
232
+ function ao(b,c){this.a=b;this.b=c}
233
+ function O(b){lb();this.a=b;kb(this)}
234
+ function xj(b){ub(b.a,ar);ub(b.a,br)}
235
+ function yj(b){ub(b.a,ar);sb(b.a,br)}
236
+ function zj(b){sb(b.a,ar);ub(b.a,br)}
237
+ function Dl(b,c){ob(b.a,c);return b}
238
+ function El(b,c){pb(b.a,c);return b}
239
+ function Qm(b,c){(b<0||b>=c)&&Tm(b,c)}
240
+ function ne(b,c){return b.cM&&b.cM[c]}
241
+ function _l(c,b){return oo+b in c.e}
242
+ function ol(c,b){return c.indexOf(b)}
243
+ function Mk(b){!b.e.e&&(b.e.e=Wf(b))}
244
+ function db(b,c){b.b=fb(b.b,[c,false])}
245
+ function ob(b,c){b[b.explicitLength++]=c}
246
+ function pb(b,c){b[b.explicitLength++]=c}
247
+ function Td(b){this.d=new Rn;this.c=b}
248
+ function rh(){rh=io;ph=new vh;qh=new yh}
249
+ function rf(){rf=io;qf=new yn;kg(new fg)}
250
+ function rd(){rd=io;qd=new _c(Co,new sd)}
251
+ function ed(){ed=io;dd=new _c(Ao,new gd)}
252
+ function ld(){ld=io;kd=new _c(Bo,new md)}
253
+ function Gj(){Gj=io;Cj=$moduleBase+cr}
254
+ function yl(){yl=io;vl={};xl={}}
255
+ function zg(){if(!xg){Eg();xg=true}}
256
+ function Pf(b){Lf=b;zg();b.setCapture()}
257
+ function Nj(){Nj=io;Gj();Fj=new Te(Cj,0)}
258
+ function Mj(){Mj=io;Gj();Ej=new Te(Cj,58)}
259
+ function um(b){return b.b=oe($m(b.a),34)}
260
+ function V(b,c,d){return b.apply(c,d);var e}
261
+ function Ck(b,c,d){yk(b,c,b.c);yk(b,d,b.i)}
262
+ function un(b,c){Qm(c,b.b);return b.a[c]}
263
+ function Oh(b,c){Ph(b,c.d,c.b,c.c,c.e,c.a)}
264
+ function Ph(b,c,d,e,f,g){Wh(b.a,b,c,d,e,f,g)}
265
+ function Md(b,c,d){var e;e=Pd(b,c);e.fb(d)}
266
+ function Gd(b,c){this.a=new Td(c);this.b=b}
267
+ function Fd(b){this.a=new Td(false);this.b=b}
268
+ function yn(){this.a=fe(ze,{30:1},0,0,0)}
269
+ function Ab(b,c){b.fireEvent(uo+c.type,c)}
270
+ function Tm(b,c){throw new hl(Pr+b+Qr+c)}
271
+ function Kd(b,c){!b.a&&(b.a=new yn);tn(b.a,c)}
272
+ function Bd(b){var c;if(yd){c=new zd;Ed(b,c)}}
273
+ function cf(b){b.parentNode.removeChild(b)}
274
+ function qi(){fi.call(this,(ei(),$doc.body))}
275
+ function Aj(){Bj();Lj();Gj();this.a=$doc.body}
276
+ function rj(b,c,d){this.a=b;this.c=c;this.b=d}
277
+ function uj(b,c,d){this.a=b;this.c=c;this.b=d}
278
+ function ef(b,c,d){this.b=b;this.c=c;this.a=d}
279
+ function wg(){this.a=new Td(false);this.b=null}
280
+ function Nk(b){if(b.e.e){oj(b.e.e.a);b.e.e=null}}
281
+ function tn(b,c){he(b.a,b.b++,c);return true}
282
+ function vi(b,c){b.W();b.w[lq]=c!=null?c:ko}
283
+ function Qf(b,c){Ib()?Rb(b,c):(b.src=c,undefined)}
284
+ function ql(c,b){return c.substr(b,c.length-b)}
285
+ function qe(b,c){return b!=null&&b.cM&&!!b.cM[c]}
286
+ function kg(b){mg();return lg(yd?yd:(yd=new $c),b)}
287
+ function ng(){ig&&Bd((!jg&&(jg=new wg),jg))}
288
+ function ke(){ke=io;ie=[];je=[];le(new ce,ie,je)}
289
+ function Bc(){Bc=io;yc=[];zc=[];Ac=[];wc=new Fc}
290
+ function ei(){ei=io;bi=new ki;ci=new Rn;di=new Un}
291
+ function Ib(){if(!Fb){Eb=Jb();Fb=true}return Eb}
292
+ function fb(b,c){!b&&(b=[]);b[b.length]=c;return b}
293
+ function qb(b,c){b[b.explicitLength++]=c==null?po:c}
294
+ function Tn(b,c){var d;d=am(b.a,c,b);return d==null}
295
+ function Rl(b){var c;c=new om(b);return new jn(b,c)}
296
+ function kj(b){if(!Ib()){return b.w}return vb(b.w)}
297
+ function te(b){if(b!=null){throw new _k}return null}
298
+ function Uf(b){Tf();if(!b){throw new kl(Qo)}mf(Sf,b)}
299
+ function Dc(){Bc();if(!xc){xc=true;db((ab(),$),wc)}}
300
+ function Jc(){Jc=io;Hc();Ic=fe(ue,{30:1},-1,30,1)}
301
+ function Xi(b){this.b=b;this.a=fe(ye,{30:1},15,4,0)}
302
+ function fi(b){this.a=new Xi(this);this.w=b;Tg(this)}
303
+ function Hh(){this.a=new Xi(this);this.w=zb($doc,ro)}
304
+ function pj(b,c,d){this.a=b;this.d=c;this.c=null;this.b=d}
305
+ function Wl(b){b.a=[];b.e={};b.c=false;b.b=null;b.d=0}
306
+ function Bl(){if(wl==256){vl=xl;xl={};wl=0}++wl}
307
+ function tb(c,b){return c[b]==null?null:String(c[b])}
308
+ function tk(b){return Uk(new Vk(b.r.w),b.f.a,b.f.b)}
309
+ function Fe(b,c,d){return a=new Qe,a.l=b,a.m=c,a.h=d,a}
310
+ function Fl(){var b;this.a=(b=[],b.explicitLength=0,b)}
311
+ function pl(d,b,c){c=sl(c);return d.replace(RegExp(b),c)}
312
+ function ih(b,c,d){Wg(c);Si(b.a,c);d.appendChild(c.w);Yg(c,b)}
313
+ function Bk(b,c,d){vi(b.d,c!=null?c:ko);vi(b.j,d!=null?d:ko)}
314
+ function gi(b){ei();try{b.Q()}finally{em(di.a,b)!=null}}
315
+ function hi(){ei();try{th(di,bi)}finally{Wl(di.a);Wl(ci)}}
316
+ function lf(b){if(b.b.b!=0&&!b.e&&!b.c){b.e=true;tf(b.d,1)}}
317
+ function re(b){return b!=null&&b.tM!=io&&!(b.cM&&!!b.cM[1])}
318
+ function lg(b,c){return new Wd(Ld((!jg&&(jg=new wg),jg).a,b,c))}
319
+ function uf(b,c){return $wnd.setTimeout(jo(function(){b.G()}),c)}
320
+ function Wi(b,c){var d;d=Ti(b,c);if(d==-1){throw new go}Vi(b,d)}
321
+ function $i(b){if(b.a>=b.b.c){throw new go}return b.b.a[++b.a]}
322
+ function fn(b){if(b.b<=0){throw new go}return b.a.pb(b.c=--b.b)}
323
+ function _m(b){if(b.c<0){throw new dl}b.d.sb(b.c);b.b=b.c;b.c=-1}
324
+ function mh(b){b.style[fq]=ko;b.style[gq]=ko;b.style[hq]=ko}
325
+ function Zg(b,c){b.t==-1?Rf(b.w,c|(b.w.__eventBits||0)):(b.t|=c)}
326
+ function Te(b,c){this.b=c;this.c=0;this.a=59;this.e=58;this.d=b}
327
+ function qk(b,c,d,e,f,g,h,i){lk.call(this,b,c,d,e,f,g,h);this.a=i}
328
+ function de(b,c){var d,e;d=b;e=ee(0,c);ge(d.aC,d.cM,d.qI,e);return e}
329
+ function ge(b,c,d,e){ke();me(e,ie,je);e.aC=b;e.cM=c;e.qI=d;return e}
330
+ function me(b,c,d){ke();for(var e=0,f=c.length;e<f;++e){b[c[e]]=d[e]}}
331
+ function Ob(){try{$doc.execCommand(zo,false,true)}catch(b){}}
332
+ function W(){if(T++==0){bb((ab(),$));return true}return false}
333
+ function De(b){if(b!=null&&b.cM&&!!b.cM[10]){return b}return new O(b)}
334
+ function oe(b,c){if(b!=null&&!(b.cM&&b.cM[c])){throw new _k}return b}
335
+ function cm(b,c){var d;d=b.b;b.b=c;if(!b.c){b.c=true;++b.d}return d}
336
+ function gm(b){var c;c=b.b;b.b=null;if(b.c){b.c=false;--b.d}return c}
337
+ function $f(b){b.e=false;b.f=null;b.a=false;b.b=false;b.c=true;b.d=null}
338
+ function Ff(b){wn(b.d.b,b.b);--b.a;b.b<=b.c&&--b.c<0&&(b.c=0);b.b=-1}
339
+ function $m(b){if(b.b>=b.d.jb()){throw new go}return b.d.pb(b.c=b.b++)}
340
+ function Kb(b){!b.gwt_uid&&(b.gwt_uid=1);return yo+b.gwt_uid++}
341
+ function Of(b){!!Lf&&b==Lf&&(Lf=null);zg();b.releaseCapture()}
342
+ function Bh(b,c){if(b.r){throw new el(iq)}Wg(c);Ng(b,c.w);b.r=c;Yg(c,b)}
343
+ function Qh(b){Nh();this.a=new Xh(this,b.d,b.b,b.c,b.e,b.a);this.w[$p]=jq}
344
+ function Ef(b){var c;b.b=b.c;c=un(b.d.b,b.c++);b.c>=b.a&&(b.c=0);return c}
345
+ function xb(b){var c=b.parentNode;(!c||c.nodeType!=1)&&(c=null);return c}
346
+ function ui(b){var c,d;d=tb(b.w,lq);c=d;if(nl(ko,d)){return null}return c}
347
+ function og(){var b;if(ig){b=new sg;!!jg&&Ed(jg,b);return null}return null}
348
+ function Ti(b,c){var d;for(d=0;d<b.c;++d){if(b.a[d]==c){return d}}return -1}
349
+ function vn(b,c,d){for(;d<b.b;++d){if(ho(c,b.a[d])){return d}}return -1}
350
+ function wn(b,c){var d;d=(Qm(c,b.b),b.a[c]);b.a.splice(c,1);--b.b;return d}
351
+ function dm(f,b,c){var d,e=f.e;b=oo+b;b in e?(d=e[b]):++f.d;e[b]=c;return d}
352
+ function le(b,c,d){var e=0,f;for(var g in b){if(f=b[g]){c[e]=g;d[e]=f;++e}}}
353
+ function P(b,c){var d;return d=b,d.tM==io||d.cM&&!!d.cM[1]?d.eQ(c):d===c}
354
+ function uk(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(d,0)}
355
+ function vk(b,c){var d,e;e=b.b>0?b.b:b.n.offsetWidth||0;d=c/e;b.g.X(0,d)}
356
+ function xn(b,c){var d;d=vn(b,c,0);if(d==-1){return false}wn(b,d);return true}
357
+ function Jj(b){if(!b.a){b.a=true;Bc();R(yc,dr);Dc();return true}return false}
358
+ function pe(b){if(b!=null&&(b.tM==io||b.cM&&!!b.cM[1])){throw new _k}return b}
359
+ function Cb(c){try{return c.getBoundingClientRect().top}catch(b){return 0}}
360
+ function Bb(c){try{return c.getBoundingClientRect().left}catch(b){return 0}}
361
+ function se(b){return ~~Math.max(Math.min(b,2147483647),-2147483648)}
362
+ function Qn(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
363
+ function ho(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)}
364
+ function _c(b,c){this.c=++Yc;this.a=c;!Sc&&(Sc=new wd);Sc.a[b]=this;this.b=b}
365
+ function gn(b,c){var d;this.a=b;this.d=b;d=b.jb();(c<0||c>d)&&Tm(c,d);this.b=c}
366
+ function Mf(b,c,d){var e;e=Kf;Kf=b;c==Lf&&yg(b.type)==8192&&(Lf=null);d.L(b);Kf=e}
367
+ function Y(b,c,d){var e;e=W();try{return V(b,c,d)}finally{e&&cb((ab(),$));--T}}
368
+ function X(c){return function(){try{return Y(c,this,arguments)}catch(b){throw b}}}
369
+ function Lh(b){this.a=new Xi(this);this.w=zb($doc,ro);this.w.innerHTML=b||ko}
370
+ function ak(b){b.j>1&&(b.j=1);b.i<0&&(b.i=0);b.i>1&&(b.i=1);b.i>b.j&&(b.j=b.i)}
371
+ function vm(b){if(!b.b){throw new el(Or)}else{_m(b.a);em(b.c,b.b.mb());b.b=null}}
372
+ function cb(b){var c,d;if(b.b){d=null;do{c=b.b;b.b=null;d=gb(c,d)}while(b.b);b.b=d}}
373
+ function bb(b){var c,d;if(b.a){d=null;do{c=b.a;b.a=null;d=gb(c,d)}while(b.a);b.a=d}}
374
+ function Zh(b){var c,d;c=(d=$doc.createEventObject(),d.type=hp,d);Ab(kj(b.a),c)}
375
+ function af(b){var c,d;bf();c=xb(b);d=wb(b);_e.appendChild(b);return new ef(c,d,b)}
376
+ function hm(e,b){var c,d=e.e;b=oo+b;if(b in d){c=d[b];--e.d;delete d[b]}return c}
377
+ function vb(b){var c=b.firstChild;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
378
+ function wb(b){var c=b.nextSibling;while(c&&c.nodeType!=1)c=c.nextSibling;return c}
379
+ function Q(b){var c;return c=b,c.tM==io||c.cM&&!!c.cM[1]?c.hC():c.$H||(c.$H=++U)}
380
+ function Xl(b,c){return c==null?b.c:c!=null&&c.cM&&!!c.cM[1]?_l(b,oe(c,1)):$l(b,c,~~Q(c))}
381
+ function nl(b,c){if(!(c!=null&&c.cM&&!!c.cM[1])){return false}return String(b)==c}
382
+ function Mg(b,c){var d=b.parentNode;if(!d){return}d.insertBefore(c,b);d.removeChild(b)}
383
+ function yk(b,c,d){var e;e=c*(b.b>0?b.b:b.n.offsetWidth||0);d.style[fq]=e+(dc(),yq)}
384
+ function wk(b,c,d){var e,f,g;g=b.b>0?b.b:b.n.offsetWidth||0;e=c/g;f=(c+d*2)/g;b.g.X(e,f)}
385
+ function Rg(b,c,d){Zg(b,yg(d.b));return new Wd(Ld((!b.u?(b.u=new Fd(b)):b.u).a,d,c))}
386
+ function fe(b,c,d,e,f){var g;g=ee(f,e);ke();me(g,ie,je);g.aC=b;g.cM=c;g.qI=d;return g}
387
+ function Nf(b){var c;c=bg(Vf,b);if(!c&&!!b){b.cancelBubble=true;b.returnValue=false}return c}
388
+ function Jl(b,c){var d;while(b.I()){d=b.J();if(c==null?d==null:P(c,d)){return b}}return null}
389
+ function wm(b){var c;this.c=b;c=new yn;b.c&&tn(c,new Em(b));Vl(b,c);Ul(b,c);this.a=new an(c)}
390
+ function nf(){this.a=new wf(this);this.b=new yn;this.d=new zf(this);this.f=new Gf(this)}
391
+ function Ii(){Ii=io;Ei=new Ki;Fi=new Mi;Gi=new Oi;Hi=new Qi;ge(xe,{30:1},29,[Ei,Fi,Gi,Hi])}
392
+ function bf(){if(!_e){_e=zb($doc,ro);_e.style.display=Oo;(ei(),$doc.body).appendChild(_e)}}
393
+ function zk(b){Of(b.w);zj(b.a);Qg(b.q.w,pr,false);Qg(b.q.w,or,true);Oh(b.p,(Nj(),Gj(),Fj))}
394
+ function xk(b){Pf(b.w);yj(b.a);Qg(b.q.w,or,false);Qg(b.q.w,pr,true);Oh(b.p,(Nj(),Gj(),Fj))}
395
+ function Ak(b){Nk(b.f);Of(b.w);xj(b.a);Qg(b.q.w,or,false);Qg(b.q.w,pr,false);Oh(b.p,(Mj(),Gj(),Ej))}
396
+ function jf(b){var c;c=Cf(b.f);Ff(b.f);c!=null&&c.cM&&!!c.cM[11]&&new gf(oe(c,11));b.c=false;lf(b)}
397
+ function em(b,c){return c==null?gm(b):c!=null&&c.cM&&!!c.cM[1]?hm(b,oe(c,1)):fm(b,c,~~Q(c))}
398
+ function am(b,c,d){return c==null?cm(b,d):c!=null&&c.cM&&!!c.cM[1]?dm(b,oe(c,1),d):bm(b,c,d,~~Q(c))}
399
+ function Yl(b,c){return c==null?b.b:c!=null&&c.cM&&!!c.cM[1]?b.e[oo+oe(c,1)]:Zl(b,c,~~Q(c))}
400
+ function Qg(b,c,d){if(!b){throw new M(_p)}c=rl(c);if(c.length==0){throw new bl(aq)}d?sb(b,c):ub(b,c)}
401
+ function Vl(f,b){var c=f.e;for(var d in c){if(d.charCodeAt(0)==58){var e=new Jm(f,d.substring(1));b.fb(e)}}}
402
+ function Rd(b){var c,d;if(b.a){try{for(d=new an(b.a);d.b<d.d.jb();){c=oe($m(d),21);c.x()}}finally{b.a=null}}}
403
+ function rb(b){var c,d;c=(d=b.join(ko),b.length=b.explicitLength=0,d);b[b.explicitLength++]=c;return c}
404
+ function Zd(b){N.call(this,b.jb()==0?null:oe(b.kb(fe(Be,{22:1,30:1},10,0,0)),22)[0]);this.a=b}
405
+ function mj(){$wnd.__gwt_transparentImgHandler=function(b){b.onerror=null;Qf(b,$moduleBase+_q)}}
406
+ function sf(b){b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);xn(qf,b)}
407
+ function Xg(b,c){b.s&&(b.w.__listener=null,undefined);!!b.w&&Mg(b.w,c);b.w=c;b.s&&(b.w.__listener=b,undefined)}
408
+ function Vg(b){if(!b.O()){throw new el(cq)}try{b.S()}finally{try{b.N()}finally{b.w.__listener=null;b.s=false}}}
409
+ function Vi(b,c){var d;if(c<0||c>=b.c){throw new gl}--b.c;for(d=c;d<b.c;++d){he(b.a,d,b.a[d+1])}he(b.a,b.c,null)}
410
+ function Dk(b,c,d){var e;e=b.b>0?b.b:b.n.offsetWidth||0;b.k.style[fq]=c*e+(dc(),yq);b.k.style[Aq]=(d-c)*e+yq}
411
+ function Ek(b,c,d){var e,f;f=~~(b.p.a.e/2);e=c+(d-c)/2;b.p.w.style[fq]=e*(b.b>0?b.b:b.n.offsetWidth||0)-f+(dc(),yq)}
412
+ function Kc(b,c,d){var e;e=$doc.styleSheets[b];d?(e.cssText+=c,undefined):(e.cssText=c+e.cssText,undefined);return e}
413
+ function Pd(b,c){var d,e;e=oe(Yl(b.d,c),19);if(!e){e=new Rn;am(b.d,c,e)}d=oe(e.b,20);if(!d){d=new yn;cm(e,d)}return d}
414
+ function Wf(b){zg();!Yf&&(Yf=new $c);if(!Vf){Vf=new Gd(null,true);Zf=new _f}return new Wd(Ld(Vf.a,Yf,b))}
415
+ function Al(b){yl();var c=oo+b;var d=xl[c];if(d!=null){return d}d=vl[c];d==null&&(d=zl(b));Bl();return xl[c]=d}
416
+ function Qd(b,c){var d,e;e=oe(Yl(b.d,c),19);if(!e){return Jn(),Jn(),In}d=oe(e.b,20);if(!d){return Jn(),Jn(),In}return d}
417
+ function jh(b,c){var d;if(c.v!=b){return false}try{Yg(c,null)}finally{d=c.w;xb(d).removeChild(d);Wi(b.a,c)}return true}
418
+ function Nc(b){var c;if($doc.styleSheets.length==0){return c=$doc.createStyleSheet(),c.cssText=b,c}return Kc(0,b,false)}
419
+ function L(b){var c,d,e;d=fe(Ae,{30:1},33,b.length,0);for(e=0,c=b.length;e<c;++e){if(!b[e]){throw new jl}d[e]=b[e]}}
420
+ function lb(){var b,c,d,e;d=jb(new mb);e=fe(Ae,{30:1},33,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new ml(d[b])}L(e)}
421
+ function Ee(b){var c,d,e;c=b&4194303;d=b>>22&4194303;e=b<0?1048575:0;return a=new Qe,a.l=c,a.m=d,a.h=e,a}
422
+ function gwtOnLoad(c,d,e,f){$moduleName=d;$moduleBase=e;if(c)try{jo(Ce)()}catch(b){c(d)}else{jo(Ce)()}}
423
+ function Wg(b){if(!b.v){(ei(),Xl(di.a,b))&&gi(b)}else if(qe(b.v,17)){oe(b.v,17).T(b)}else if(b.v){throw new el(dq)}}
424
+ function Kk(b){Rg(b.e,b,(ed(),ed(),dd));Rg(b.e,b,(rd(),rd(),qd));Rg(b.e,b,(ld(),ld(),kd));Rg(b.e,new Rk(b),qd)}
425
+ function _j(b){var c,d;c=b.bb(b.i);d=b.bb(b.j);Bk(b.k,c,d);Ck(b.k,b.i,b.j);Dk(b.k,b.i,b.j);Ek(b.k,b.i,b.j);Fk(b.k,b.i,b.j)}
426
+ function Od(b,c,d){var e,f,g;e=Qd(b,c);f=e.ib(d);f&&e.hb()&&(g=oe(Yl(b.d,c),19),oe(gm(g),20),g.d==0&&em(b.d,c),undefined)}
427
+ function Uk(b,c,d){var e,f;f=b.b;e=b.a;if(f<0||e<0){return false}if(c<b.c||d<b.d){return false}f+=b.c;e+=b.d;return f>c&&e>d}
428
+ function Tc(b,c,d){var e,f,g;if(Sc){g=oe(Sc.a[b.type],3);if(g){e=g.a.a;f=g.a.b;g.a.a=b;g.a.b=d;Sg(c,g.a);g.a.a=e;g.a.b=f}}}
429
+ function Pj(b,c,d,e,f,g,h,i,j){var k,l,m;k=ii(b);if(k){m=new Gk;m.b=i;l=new qk(c,d,e,f,g,h,m,j);m.g=l;ih(k,m,k.w)}}
430
+ function Yg(b,c){var d;d=b.v;if(!c){try{!!d&&d.O()&&b.Q()}finally{b.v=null}}else{if(d){throw new el(eq)}b.v=c;c.O()&&b.P()}}
431
+ function fd(b,c){c.a=b.a.clientX||0;c.b=b.a.clientY||0;c.c=Uk(new Vk(c.e.c),c.a,c.b);c.d=Uk(new Vk(c.e.i),c.a,c.b);c.e.g.Y()}
432
+ function Ci(){var b;Ai();wi.call(this,(b=$doc.createElement(mq),b.type=nq,b),(!Ze&&(Ze=new $e),!We&&(We=new Xe)));this.w[$p]=oq}
433
+ function Ul(i,b){var c=i.a;for(var d in c){var e=parseInt(d,10);if(d==e){var f=c[e];for(var g=0,h=f.length;g<h;++g){b.fb(f[g])}}}}
434
+ function Zl(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return g.W()}}}return null}
435
+ function $l(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){return true}}}return false}
436
+ function nm(b,c){var d,e,f;if(c!=null&&c.cM&&!!c.cM[34]){d=oe(c,34);e=d.mb();if(Xl(b.a,e)){f=Yl(b.a,e);return Qn(d.W(),f)}}return false}
437
+ function Pg(b){var c,d;c=b[$p]==null?null:String(b[$p]);d=c.indexOf(String.fromCharCode(32));if(d>=0){return c.substr(0,d-0)}return c}
438
+ function hb(b){var c,d,e;e=ko;b=rl(b);c=b.indexOf(lo);if(c!=-1){d=b.indexOf(mo)==0?8:0;e=rl(b.substr(d,c-d))}return e.length>0?e:no}
439
+ function Ie(b){var c,d;if(b>-129&&b<128){c=b+128;Ge==null&&(Ge=fe(we,{30:1},26,256,0));d=Ge[c];!d&&(d=Ge[c]=Ee(b));return d}return Ee(b)}
440
+ function kb(b){var c,d,e,f;e=(re(b.a)?pe(b.a):null,[]);f=fe(Ae,{30:1},33,e.length,0);for(c=0,d=f.length;c<d;++c){f[c]=new ml(e[c])}L(f)}
441
+ function Gb(b){if(b.currentStyle.direction==vo){return (b.scrollLeft||0)-((b.scrollWidth||0)-b.clientWidth)}return b.scrollLeft||0}
442
+ function Db(b,c){if(b.nodeType!=1&&b.nodeType!=9){return b==c}if(c.nodeType!=1){c=c.parentNode;if(!c){return false}}return b===c||b.contains(c)}
443
+ function Oe(){Oe=io;Le=(a=new Qe,a.l=4194303,a.m=4194303,a.h=524287,a);Me=(a=new Qe,a.l=0,a.m=0,a.h=524288,a);Ie(1);Ie(2);Ne=Ie(0)}
444
+ function rl(d){if(d.length==0||d[0]>qo&&d[d.length-1]>qo){return d}var b=d.replace(/^(\s*)/,ko);var c=b.replace(/\s*$/,ko);return c}
445
+ function Gg(){var b=false;for(var c=0;c<$wnd.__gwt_globalEventArray.length;c++){!$wnd.__gwt_globalEventArray[c]()&&(b=true)}return !b}
446
+ function he(b,c,d){if(d!=null){if(b.qI>0&&!ne(d,b.qI)){throw new Xk}if(b.qI<0&&(d.tM==io||d.cM&&!!d.cM[1])){throw new Xk}}return b[c]=d}
447
+ function Wh(b,c,d,e,f,g,h){if(!nl(b.d,d)||b.b!=e||b.c!=f||b.e!=g||b.a!=h){b.d=d;b.b=e;b.c=f;b.e=g;b.a=h;hj(c.w,d,e,f,g,h);Uf(new $h(c))}}
448
+ function Pb(b,c,d){var e=b.__kids;for(var f=0,g=e.length;f<g;++f){if(e[f]===c){if(!d){e.splice(f,1);c.__pendingSrc=null}return true}}return false}
449
+ function Re(b){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:Lo,evtGroup:Mo,millis:(new Date).getTime(),type:No,className:b})}
450
+ function sl(b){var c;c=0;while(0<=(c=b.indexOf(Lr,c))){b.charCodeAt(c+1)==36?(b=b.substr(0,c-0)+Mr+ql(b,++c)):(b=b.substr(0,c-0)+ql(b,++c))}return b}
451
+ function Ld(b,c,d){var e;if(!c){throw new kl(Do)}if(!d){throw new kl(Eo)}b.b>0?Kd(b,new rj(b,c,d)):(e=Pd(b,c),e.fb(d),undefined);return new pj(b,c,d)}
452
+ function gb(c,d){var b,e,f,g;for(e=0,f=c.length;e<f;++e){g=c[e];try{g[1]?g[0].tb()&&(d=fb(d,g)):g[0].x()}catch(b){b=De(b);if(!qe(b,2))throw b}}return d}
453
+ function Mc(b){var c,d,e;c=$doc.styleSheets.length;if(c==0){return d=$doc.createStyleSheet(),d.cssText=b,d}return e=$doc.styleSheets[c-1],e.cssText+=b,e}
454
+ function Tg(b){var c;if(b.O()){throw new el(bq)}b.s=true;b.w.__listener=b;c=b.t;b.t=-1;c>0&&(b.t==-1?Rf(b.w,c|(b.w.__eventBits||0)):(b.t|=c));b.M();b.R()}
455
+ function Xh(b,c,d,e,f,g){Vh();this.b=d;this.c=e;this.e=f;this.a=g;this.d=c;Xg(b,ij(c,d,e,f,g));b.t==-1?Rf(b.w,133333119|(b.w.__eventBits||0)):(b.t|=133333119)}
456
+ function Ug(b,c){var d;switch(yg(c.type)){case 16:case 32:d=c.relatedTarget||(c.type==Bo?c.toElement:c.fromElement);if(!!d&&Db(b.w,d)){return}}Tc(c,b,b.w)}
457
+ function dc(){dc=io;cc=new fc;ac=new hc;Xb=new jc;Yb=new lc;bc=new nc;_b=new pc;Zb=new rc;Wb=new tc;$b=new vc;ge(ve,{30:1},23,[cc,ac,Xb,Yb,bc,_b,Zb,Wb,$b])}
458
+ function tf(b,c){if(c<=0){throw new bl(Po)}b.b?($wnd.clearInterval(b.c),undefined):($wnd.clearTimeout(b.c),undefined);xn(qf,b);b.b=false;b.c=uf(b,c);tn(qf,b)}
459
+ function mg(){var b,c;if(!ig){b=(c=zb($doc,Zo),c.text=$o,c);$doc.body.appendChild(b);$wnd.__gwt_initWindowCloseHandler(jo(og),jo(ng));$doc.body.removeChild(b);ig=true}}
460
+ function Ed(c,d){var b,e,f;!d.e||d.B();f=d.f;d.f=c.b;try{Nd(c.a,d)}catch(b){b=De(b);if(qe(b,9)){e=b;throw new $d(e.a)}else throw b}finally{f==null?(d.e=true,d.f=null):(d.f=f)}}
461
+ function bg(b,c){var d,e,f,g,h;if(!!Yf&&!!b&&Xl(b.a.d,Yf)){d=Zf.a;e=Zf.b;f=Zf.c;g=Zf.d;$f(Zf);Zf.d=c;Ed(b,Zf);h=!(Zf.a&&!Zf.b);Zf.a=d;Zf.b=e;Zf.c=f;Zf.d=g;return h}return true}
462
+ function Hb(b){var c,d;if(nl(b.compatMode,wo)){return 1}else{c=b.body.offsetWidth||0;return c==0?1:~~(((d=b.body.parentNode,(!d||d.nodeType!=1)&&(d=null),d).offsetWidth||0)/c)}}
463
+ function ee(b,c){var d=new Array(c);if(b==3){for(var e=0;e<c;++e){var f=new Object;f.l=f.m=f.h=0;d[e]=f}}else if(b>0){var f=[null,0,false][b];for(var e=0;e<c;++e){d[e]=f}}return d}
464
+ function fm(i,b,c){var d=i.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.mb();if(i.lb(b,h)){d.length==1?delete i.a[c]:d.splice(e,1);--i.d;return g.W()}}}return null}
465
+ function bm(k,b,c,d){var e=k.a[d];if(e){for(var f=0,g=e.length;f<g;++f){var h=e[f];var i=h.mb();if(k.lb(b,i)){var j=h.W();h.nb(c);return j}}}else{e=k.a[d]=[]}var h=new ao(b,c);e.push(h);++k.d;return null}
466
+ function ij(b,c,d,e,f){var g,h,i,j;if(!Ib()){return i=zb($doc,Hq),i.innerHTML=jj(b,c,d,e,f)||ko,vb(i)}g=(j=zb($doc,Hq),j.innerHTML=jj(b,c,d,e,f)||ko,vb(j));h=vb(g);zg();Fg(h,32768);return g}
467
+ function th(c,d){var i;rh();var b,e,f,g,h;e=null;for(h=c.U();h.I();){g=oe(h.J(),15);try{d.V(g)}catch(b){b=De(b);if(qe(b,10)){f=b;!e&&(e=new Un);i=am(e.a,f,e)}else throw b}}if(e){throw new sh(e)}}
468
+ function jj(b,c,d,e,f){var g,h,i,j;if(!Ib()){return j=Iq+e+Jq+f+Kq+b+wq+-c+xq+-d+yq,Lq+$moduleBase+Mq+j+Nq}h=Oq+e+Jq+f+Pq;i=Qq+b+Rq+-c+Sq+-d+Tq;g=Uq+h+Vq+fj+Wq+$moduleBase+Xq+i+Yq+(c+e)+Zq+(d+f)+$q;return g}
469
+ function zl(b){var c,d,e,f;c=0;e=b.length;f=e-4;d=0;while(d<f){c=b.charCodeAt(d+3)+31*(b.charCodeAt(d+2)+31*(b.charCodeAt(d+1)+31*(b.charCodeAt(d)+31*c)))|0;d+=4}while(d<e){c=c*31+b.charCodeAt(d++)}return c|0}
470
+ function zb(b,c){var d,e;if(c.indexOf(oo)!=-1){d=(!b.__gwt_container&&(b.__gwt_container=b.createElement(ro)),b.__gwt_container);d.innerHTML=so+c+to||ko;e=vb(d);d.removeChild(e);return e}return b.createElement(c)}
471
+ function Ui(b,c,d){var e,f;if(d<0||d>b.c){throw new gl}if(b.c==b.a.length){f=fe(ye,{30:1},15,b.a.length*2,0);for(e=0;e<b.a.length;++e){he(f,e,b.a[e])}b.a=f}++b.c;for(e=b.c-1;e>d;--e){he(b.a,e,b.a[e-1])}he(b.a,d,c)}
472
+ function ii(b){ei();var c,d;d=oe(Yl(ci,b),16);c=null;if(b!=null){if(!(c=$doc.getElementById(b))){return null}}if(d){if(!c||d.w==c){return d}}ci.d==0&&kg(new ni);!c?(d=new qi):(d=new fi(c));am(ci,b,d);Tn(di,d);return d}
473
+ function gj(){var b,c;gj=io;fj=ol((b=$doc.location.href,c=b.indexOf(pq),c!=-1&&(b=b.substring(0,c)),c=b.indexOf(qq),c!=-1&&(b=b.substring(0,c)),c=b.lastIndexOf(rq),c!=-1&&(b=b.substring(0,c)),b.length>0?b+rq:ko),sq)==0?tq:uq}
474
+ function Qb(b,c){var d=c.__pendingSrc;var e=c.__kids;c.__cleanup();if(c=e[0]){c.__pendingSrc=null;Nb(b,c,d);if(c.__pendingSrc){e.splice(0,1);c.__kids=e}else{for(var f=1,g=e.length;f<g;++f){e[f].src=d;e[f].__pendingSrc=null}}}}
475
+ function Jb(){function c(b){return parseInt(b[1])*1000+parseInt(b[2])}
476
+ var d=navigator.userAgent.toLowerCase();if(d.indexOf(xo)!=-1){var e=/msie ([0-9]+)\.([0-9]+)/.exec(d);if(e&&e.length==3){var f=c(e);if(f<7000){return true}}}return false}
477
+ function Lk(b,c){var d,e,f,g,h,i;g=yg(c.d.type);if(g==4){c.d.returnValue=false}else if(g==64){f=c.d;h=f.clientX||0;i=f.clientY||0;d=h-b.a;e=b.b-i;b.a=h;b.b=i;b.c?uk(b.e,d):b.d?vk(b.e,d):wk(b.e,d,e);c.d.returnValue=false}else g==8&&b.e.g._()}
478
+ function sb(b,c){var d,e,f,g;c=rl(c);g=b.className;d=g.indexOf(c);while(d!=-1){if(d==0||g.charCodeAt(d-1)==32){e=d+c.length;f=g.length;if(e==f||e<f&&g.charCodeAt(e)==32){break}}d=g.indexOf(c,d+1)}if(d==-1){g.length>0&&(g+=qo);b.className=g+c}}
479
+ function jb(j){var b={};var c=[];var d=arguments.callee.caller.caller;while(d){var e=j.y(d.toString());c.push(e);var f=oo+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h<i;h++){if(g[h]===d){return c}}}(g||(b[f]=[])).push(d);d=d.caller}return c}
480
+ function kk(b,c){var d,e;e=b.d+b.b;b.f!=0&&!b.c?e-c<~~(b.f/2)?(d=e):c-b.d<~~(b.f/2)?(d=b.d):c==b.d?(d=se(Math.floor(c))):c==e?(d=se(Math.ceil(c))):(d=Ke(Je(He(Math.round(c/b.f)),Ie(b.f)))):(d=Ke(He(Math.round(c))));d<b.d&&(d=b.d);d>e&&(d=e);return d}
481
+ function Ce(){var b;!!$stats&&Re(Go);b=hg();nl(Ho,b)||($wnd.alert(Io+b+Jo),undefined);!!$stats&&Re(Ko);$wnd.oneTouchSlider={};$wnd.oneTouchSlider.addSlider=jo(Oj);$wnd.oneTouchSliderOnLoad&&typeof $wnd.oneTouchSliderOnLoad==mo&&$wnd.oneTouchSliderOnLoad()}
482
+ function Cc(){Bc();var b,c,d;d=null;if(Ac.length!=0){b=Ac.join(ko);c=Nc((Hc(),b));!Ac&&(d=c);Ac.length=0}if(yc.length!=0){b=yc.join(ko);c=Lc((Hc(),b));!yc&&(d=c);yc.length=0}if(zc.length!=0){b=zc.join(ko);c=Mc((Hc(),b));!zc&&(d=c);zc.length=0}xc=false;return d}
483
+ function hj(b,c,d,e,f,g){var h,i,j,k;if(!Ib()){k=vq+c+wq+-d+xq+-e+yq;b.style[zq]=k;b.style[Aq]=f+(dc(),yq);b.style[Bq]=g+yq;return}b.style[Aq]=f+(dc(),yq);b.style[Bq]=g+yq;h=vb(b);h.style[Cq]=Dq+c+Eq;h.style[Fq]=-d+yq;h.style[Gq]=-e+yq;j=d+f;i=e+g;h[Aq]=j;h[Bq]=i}
484
+ function Lc(b){var c,d,e,f,g,h;e=$doc.styleSheets.length;if(e<30){return h=$doc.createStyleSheet(),h.cssText=b,h}else{g=2147483647;f=-1;for(c=0;c<e;++c){d=Ic[c];d==0&&(d=Ic[c]=$doc.styleSheets[c].cssText.length);if(d<=g){g=d;f=c}}Ic[f]+=b.length;return Kc(f,b,true)}}
485
+ function Fk(b,c,d){var e;e=new Fl;qb(e.a,qr);qb(e.a,rr);El(e,b.b>0?b.b:b.n.offsetWidth||0);qb(e.a,xq);pb(e.a,100);qb(e.a,sr);qb(e.a,tr);ob(e.a,-100+(1-(d-c))*100);qb(e.a,ur);qb(e.a,vr);Dl(e,c*(b.b>0?b.b:b.n.offsetWidth||0));qb(e.a,ur);b.q.w.style.setAttribute(wr,rb(e.a))}
486
+ function kf(b,c){var d,e,f;f=false;try{b.c=true;b.f.a=b.b.b;tf(b.a,10000);while(Df(b.f)){e=Ef(b.f);try{if(e==null){return}if(e!=null&&e.cM&&!!e.cM[11]){d=oe(e,11);Zh(d)}}finally{f=b.f.b==-1;f||Ff(b.f)}if((new Date).getTime()-c>=100){return}}}finally{if(!f){sf(b.a);b.c=false;lf(b)}}}
487
+ function Vk(b){var c,d;this.c=(c=b.ownerDocument,se(Math.floor(Bb(b)/Hb(c)+Gb(nl(c.compatMode,wo)?c.documentElement:c.body))));this.d=(d=b.ownerDocument,se(Math.floor(Cb(b)/Hb(d)+((nl(d.compatMode,wo)?d.documentElement:d.body).scrollTop||0))));this.b=b.clientWidth;this.a=b.clientHeight}
488
+ function Nd(c,d){var b,e,f,g,h,i,j;if(!d){throw new kl(Fo)}try{++c.b;h=Qd(c,d.A());e=null;i=c.c?h.rb(h.jb()):h.qb();while(c.c?i.b>0:i.b<i.d.jb()){g=c.c?fn(i):$m(i);try{d.z(oe(g,18))}catch(b){b=De(b);if(qe(b,10)){f=b;!e&&(e=new Un);j=am(e.a,f,e)}else throw b}}if(e){throw new Zd(e)}}finally{--c.b;c.b==0&&Rd(c)}}
489
+ function Oj(b){var c;var d;var e;var f;var g;var h;var i;var j;var k;if(b){c=b[er];d=b[fr];e=b[gr];f=b[hr];g=b[ir];h=b[jr];i=b[kr];j=b[lr];k=b[Aq]}!c&&(c=ko);!d&&(d=0);!e&&(e=0);d>e&&(d=e);!f&&(f=d);!g&&(g=e);!h&&(h=0);i=i==null?mr:i.indexOf(mr)!=-1?i:nr+i;(!j||typeof j!=mo)&&(j=null);!k&&(k=0);Pj(c,d,e,f,g,i,h,k,j)}
490
+ function ub(b,c){var d,e,f,g,h,i,j;c=rl(c);j=b.className;f=j.indexOf(c);while(f!=-1){if(f==0||j.charCodeAt(f-1)==32){g=f+c.length;h=j.length;if(g==h||g<h&&j.charCodeAt(g)==32){break}}f=j.indexOf(c,f+1)}if(f!=-1){d=rl(j.substr(0,f-0));e=rl(ql(j,f+c.length));d.length==0?(i=e):e.length==0?(i=d):(i=d+qo+e);b.className=i}}
491
+ function Rb(b,c){Mb();var d,e,f;d=nl(b.__pendingSrc||b.src,c);!Lb&&(Lb={});e=b.__pendingSrc;if(e!=null){f=Lb[e];if(!f){b.__cleanup=b.__pendingSrc=b.__kids=null}else if(f==b){if(d){return}Qb(Lb,f)}else if(Pb(f,b,d)){if(d){return}}else{b.__cleanup=b.__pendingSrc=b.__kids=null}}f=Lb[c];!f?Nb(Lb,b,c):(f.__kids.push(b),b.__pendingSrc=f.__pendingSrc,undefined)}
492
+ function lk(b,c,d,e,f,g,h){var i,j,k;this.k=h;this.e=f;this.d=b;k=c-b;this.b=k==0?1:k;this.c=true;g==0?this.b>4000?(this.f=100):this.b>2000?(this.f=50):this.b>1000?(this.f=25):this.b>500?(this.f=10):this.b>100?(this.f=5):(this.f=0):(this.f=g);if(k!=0){i=(d-this.d)/this.b;j=(e-this.d)/this.b;this.i=i;this.j=j;ak(this);_j(this)}else{this.i=0;this.j=1;ak(this);_j(this)}}
493
+ function Nb(f,g,h){g.src=h;if(g.complete){return}g.__kids=[];g.__pendingSrc=h;f[h]=g;var i=g.onload,j=g.onerror,k=g.onabort;function l(d){var e=g.__kids;g.__cleanup();window.setTimeout(function(){for(var b=0;b<e.length;++b){var c=e[b];if(c.__pendingSrc==h){c.src=h;c.__pendingSrc=null}}},0);d&&d.call(g)}
494
+ g.onload=function(){l(i)};g.onerror=function(){l(j)};g.onabort=function(){l(k)};g.__cleanup=function(){g.onload=i;g.onerror=j;g.onabort=k;g.__cleanup=g.__pendingSrc=g.__kids=null;delete f[h]}}
495
+ function hg(){var c=navigator.userAgent.toLowerCase();var d=function(b){return parseInt(b[1])*1000+parseInt(b[2])};if(function(){return c.indexOf(Ro)!=-1}())return Ro;if(function(){return c.indexOf(So)!=-1}())return To;if(function(){return c.indexOf(xo)!=-1&&$doc.documentMode>=9}())return Uo;if(function(){return c.indexOf(xo)!=-1&&$doc.documentMode>=8}())return Vo;if(function(){var b=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(b&&b.length==3)return d(b)>=6000}())return Ho;if(function(){return c.indexOf(Wo)!=-1}())return Xo;return Yo}
496
+ function He(b){var c,d,e,f,g,h,i,j;if(isNaN(b)){return Oe(),Ne}if(b<-9223372036854775808){return Oe(),Me}if(b>=9223372036854775807){return Oe(),Le}f=false;if(b<0){f=true;b=-b}e=0;if(b>=17592186044416){e=~~Math.max(Math.min(b/17592186044416,2147483647),-2147483648);b-=e*17592186044416}d=0;if(b>=4194304){d=~~Math.max(Math.min(b/4194304,2147483647),-2147483648);b-=d*4194304}c=~~Math.max(Math.min(b,2147483647),-2147483648);g=(a=new Qe,a.l=c,a.m=d,a.h=e,a);f&&(h=~g.l+1&4194303,i=~g.m+(h==0?1:0)&4194303,j=~g.h+(h==0&&i==0?1:0)&1048575,g.l=h,g.m=i,g.h=j,undefined);return g}
497
+ function Je(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;d=b.l&8191;e=b.l>>13|(b.m&15)<<9;f=b.m>>4&8191;g=b.m>>17|(b.h&255)<<5;h=(b.h&1048320)>>8;i=c.l&8191;j=c.l>>13|(c.m&15)<<9;k=c.m>>4&8191;l=c.m>>17|(c.h&255)<<5;m=(c.h&1048320)>>8;z=d*i;A=e*i;B=f*i;C=g*i;D=h*i;if(j!=0){A+=d*j;B+=e*j;C+=f*j;D+=g*j}if(k!=0){B+=d*k;C+=e*k;D+=f*k}if(l!=0){C+=d*l;D+=e*l}m!=0&&(D+=d*m);o=z&4194303;p=(A&511)<<13;n=o+p;r=z>>22;s=A>>9;t=(B&262143)<<4;u=(C&31)<<17;q=r+s+t+u;w=B>>18;x=C>>5;y=(D&4095)<<8;v=w+x+y;q+=n>>22;n&=4194303;v+=q>>22;q&=4194303;v&=1048575;return Fe(n,q,v)}
498
+ function yg(b){switch(b){case _o:return 4096;case ap:return 1024;case bp:return 1;case cp:return 2;case dp:return 2048;case ep:return 128;case fp:return 256;case gp:return 512;case hp:return 32768;case ip:return 8192;case Ao:return 4;case jp:return 64;case Bo:return 32;case Co:return 16;case kp:return 8;case lp:return 16384;case mp:return 65536;case np:case op:return 131072;case pp:return 262144;case qp:return 524288;case rp:return 1048576;case sp:return 2097152;case tp:return 4194304;case up:return 8388608;case vp:return 16777216;case wp:return 33554432;case xp:return 67108864;case yp:return 134217728;case zp:return 268435456;case Ap:return 536870912;default:return -1;}}
499
+ function Fg(b,c){var d=(b.__eventBits||0)^c;b.__eventBits=c;if(!d)return;d&1&&(b.onclick=c&1?Bg:null);d&3&&(b.ondblclick=c&3?Ag:null);d&4&&(b.onmousedown=c&4?Bg:null);d&8&&(b.onmouseup=c&8?Bg:null);d&16&&(b.onmouseover=c&16?Bg:null);d&32&&(b.onmouseout=c&32?Bg:null);d&64&&(b.onmousemove=c&64?Bg:null);d&128&&(b.onkeydown=c&128?Bg:null);d&256&&(b.onkeypress=c&256?Bg:null);d&512&&(b.onkeyup=c&512?Bg:null);d&1024&&(b.onchange=c&1024?Bg:null);d&2048&&(b.onfocus=c&2048?Bg:null);d&4096&&(b.onblur=c&4096?Bg:null);d&8192&&(b.onlosecapture=c&8192?Bg:null);d&16384&&(b.onscroll=c&16384?Bg:null);d&32768&&(b.nodeName==Yp?c&32768?b.attachEvent(Zp,Cg):b.detachEvent(Zp,Cg):(b.onload=c&32768?Dg:null));d&65536&&(b.onerror=c&65536?Bg:null);d&131072&&(b.onmousewheel=c&131072?Bg:null);d&262144&&(b.oncontextmenu=c&262144?Bg:null);d&524288&&(b.onpaste=c&524288?Bg:null)}
500
+ function Gk(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;this.o=(Bj(),Lj(),Gj(),Dj);this.a=new Aj;this.f=new Ok(this);this.g=new Rj;Bh(this,(c=Kb($doc),q=new Ci,e=Kb($doc),s=new Ci,g=Kb($doc),h=Kb($doc),i=Kb($doc),j=Kb($doc),k=Kb($doc),w=new Hh,m=Kb($doc),v=new Qh((Mj(),Ej)),o=new Lh(xr+c+yr+e+zr+g+Ar+h+Br+i+Cr+j+yr+k+yr+m+Dr),q.w[$p]=Er,q.w[Fr]=true,Og(q,Pg(q.w)+Gr),s.w[$p]=Hr,s.w[Fr]=true,Og(s,Pg(s.w)+Gr),w.w[$p]=Ir,v.w[$p]=Jr,b=af(o.w),d=$doc.getElementById(c),f=$doc.getElementById(e),u=$doc.getElementById(g),u.removeAttribute(Kr),t=$doc.getElementById(h),t.removeAttribute(Kr),p=$doc.getElementById(i),p.removeAttribute(Kr),r=$doc.getElementById(j),r.removeAttribute(Kr),l=$doc.getElementById(k),n=$doc.getElementById(m),b.b?b.b.insertBefore(b.a,b.c):cf(b.a),Wg(q),Si(o.a,q),d.parentNode.replaceChild(q.w,d),Yg(q,o),Wg(s),Si(o.a,s),f.parentNode.replaceChild(s.w,f),Yg(s,o),Wg(w),Si(o.a,w),l.parentNode.replaceChild(w.w,l),Yg(w,o),Wg(v),Si(o.a,v),n.parentNode.replaceChild(v.w,n),Yg(v,o),this.c=p,this.d=q,this.i=r,this.j=s,this.k=t,this.n=u,this.p=v,this.q=w,o));Jj(this.o);Kk(this.f);this.g.ab()}
501
+ function Eg(){$wnd.__gwt_globalEventArray==null&&($wnd.__gwt_globalEventArray=new Array);$wnd.__gwt_globalEventArray[$wnd.__gwt_globalEventArray.length]=jo(function(){return Nf($wnd.event)});var e=jo(function(){var b=yb;yb=this;if($wnd.event.returnValue==null){$wnd.event.returnValue=true;if(!Gg()){yb=b;return}}var c,d=this;while(d&&!(c=d.__listener)){d=d.parentElement}c&&!re(c)&&c!=null&&c.cM&&!!c.cM[14]&&Mf($wnd.event,d,c);yb=b});var f=jo(function(){var b=$doc.createEventObject();$wnd.event.returnValue==null&&$wnd.event.srcElement.fireEvent&&$wnd.event.srcElement.fireEvent(Bp,b);if(this.__eventBits&2){e.call(this)}else if($wnd.event.returnValue==null){$wnd.event.returnValue=true;Gg()}});var g=jo(function(){this.__gwtLastUnhandledEvent=$wnd.event.type;e.call(this)});var h=$moduleName.replace(/\./g,Cp);$wnd[Dp+h]=e;Bg=(new Function(Ep,Fp+h+Gp))($wnd);$wnd[Hp+h]=f;Ag=(new Function(Ep,Ip+h+Jp))($wnd);$wnd[Kp+h]=g;Dg=(new Function(Ep,Lp+h+Jp))($wnd);Cg=(new Function(Ep,Lp+h+Mp))($wnd);var i=jo(function(){e.call($doc.body)});var j=jo(function(){f.call($doc.body)});$doc.body.attachEvent(Bp,i);$doc.body.attachEvent(Np,i);$doc.body.attachEvent(Op,i);$doc.body.attachEvent(Pp,i);$doc.body.attachEvent(Qp,i);$doc.body.attachEvent(Rp,i);$doc.body.attachEvent(Sp,i);$doc.body.attachEvent(Tp,i);$doc.body.attachEvent(Up,i);$doc.body.attachEvent(Vp,i);$doc.body.attachEvent(Wp,j);$doc.body.attachEvent(Xp,i)}
502
+ var ko='',qo=' ',$q=" border='0'><\/gwt:clipper>",Zq=' height=',Yq='" width=',Vq='"><img onload=\'this.__gwtLastUnhandledEvent="load";\' src=\'',pq='#',Mr='$',mr='%n',nr='%n ',Nq="' border='0'>",Wq="' onerror='if(window.__gwt_transparentImgHandler)window.__gwt_transparentImgHandler(this);else this.src=\"",Eq="',sizingMethod='crop')",Rq="',sizingMethod='crop'); margin-left: ",Ar="'> <div class='GLR1MK0DG fact-finder-onetouchslider-bar fact-finder-onetouchslider-bar-selected' id='",Br="'><\/div> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-left' id='",Dr="'><\/span> <\/div> <\/div> <\/div>",zr="'><\/span> <div style='clear: both !important;'><\/div> <div style='clear: both !important;'><\/div> <div class='GLR1MK0AG'> <div class='GLR1MK0EG fact-finder-onetouchslider-bar' id='",Cr="'><\/span> <span class='GLR1MK0HG fact-finder-onetouchslider-handle fact-finder-onetouchslider-handle-right' id='",yr="'><\/span> <span id='",lo='(',wq=') no-repeat ',Jo='). Expect more errors.\n',Qr=', Size: ',Gr='-readonly',dr='.GLR1MK0AG{display:block;}.GLR1MK0OG{font-family:verdana, sans-serif;font-size:8pt;text-align:center;}.GLR1MK0EG{background:#555;width:100%;height:17px;position:relative;text-align:left;-moz-border-radius:4px 4px 4px 4px;-webkit-border-radius:4px;font-size:1.1em;}.GLR1MK0DG{height:100%;top:0;background:#6683b4;background-position:0 0;border:0 none;display:block;font-size:0.7em;position:absolute;z-index:1;text-align:center;}.GLR1MK0HG{background:repeat-x scroll 50% 50% #f6f6f6;border:1px solid #7f7f7f;color:#fff;font-weight:bold;outline:medium none;margin-left:-0.6em;top:-0.3em;cursor:default;height:23px;position:absolute;width:1em;z-index:3;-moz-border-radius:4px;-webkit-border-radius:4px;font-family:Verdana, Arial, sans-serif;font-size:1.1em;text-align:left;text-decoration:none;}.GLR1MK0IG{border-color:transparent;border-style:solid;border-width:0 200px 100px 0;height:0;width:0;position:absolute;border-bottom-color:#ccd6e6;filter:alpha(opacity=0);z-index:2;}.GLR1MK0KG{filter:alpha(opacity=50);}.GLR1MK0JG{filter:alpha(opacity=70);}.GLR1MK0BG{cursor:pointer;}.GLR1MK0CG{cursor:none;}.GLR1MK0PF{cursor:default;}.GLR1MK0FG{margin:-21px auto;z-index:3;position:absolute;}.GLR1MK0GG{width:58px;margin:32px 0 0 -29px;}.GLR1MK0LG{background-color:#f1f1f1;border:1px solid #acacac;font-size:9px;height:20px;margin:0 0 10px;text-align:center;width:40px;}.GLR1MK0MG{float:left;}.GLR1MK0NG{float:right;}',Gp='.call(this) }',Jp='.call(this)}',Mp='.call(w.event.srcElement)}',rq='/',to='/>',rr='0px ',cr='79DD9AE9135ADFDE204324DA7F1B1405.cache.png',oo=':',so='<',xr="<div class='GLR1MK0OG fact-finder-onetouchslider'> <span id='",Uq='<gwt:clipper style="',Lq="<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='",qq='?',Nr='Add not supported on this collection',Rr='Add not supported on this list',zo='BackgroundImageCache',wo='CSS1Compat',Do='Cannot add a handler with a null type',Eo='Cannot add a null handler',Fo='Cannot fire null event',eq='Cannot set a new parent without first clearing the old parent',iq='Composite.initWidget() may only be called once.',np='DOMMouseScroll',Io='ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie6) does not match the runtime user.agent value (',ar='GLR1MK0BG',br='GLR1MK0CG',Jr='GLR1MK0FG fact-finder-onetouchslider-grip',Ir='GLR1MK0IG fact-finder-onetouchslider-triangle',pr='GLR1MK0JG',or='GLR1MK0KG',Er='GLR1MK0LG GLR1MK0MG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-left',Hr='GLR1MK0LG GLR1MK0NG fact-finder-onetouchslider-text-box fact-finder-onetouchslider-textbox-right',Yp='IFRAME',mq='INPUT',Pr='Index: ',Or='Must call next() before remove().',_p='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',Sr='Remove not supported on this list',bq="Should only call onAttach when the widget is detached from the browser's document",cq="Should only call onDetach when the widget is attached to the browser's document",aq='Style names cannot be empty',dq="This widget's parent does not implement HasWidgets",Lr='\\',Cp='_',kq='__gwtLastUnhandledEvent',Hp='__gwt_dispatchDblClickEvent_',Dp='__gwt_dispatchEvent_',Kp='__gwt_dispatchUnhandledEvent_',no='anonymous',zq='background',_o='blur',qr='border-width:',lr='callback',Ap='canplaythrough',ap='change',$p='className',_q='clear.cache.gif',Xq='clear.cache.gif"\' style="',Mq="clear.cache.gif' style='",bp='click',Qo='cmd cannot be null',Go='com.google.gwt.user.client.UserAgentAsserter',pp='contextmenu',wr='cssText',hr='currentLeft',ir='currentRight',cp='dblclick',Ko='de.factfinder.asn.slider.client.StandAloneOneTouchSlider',ro='div',yp='ended',mp='error',Cq='filter',Qq="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='",dp='focus',mo='function',$o='function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',Wo='gecko',Xo='gecko1_8',wp='gesturechange',xp='gestureend',vp='gesturestart',jq='gwt-Image',oq='gwt-TextBox',yo='gwt-uid-',Bq='height',er='hostElementId',uq='http://',sq='https',tq='https://',Kr='id',Ho='ie6',Vo='ie8',Uo='ie9',ep='keydown',fp='keypress',gp='keyup',fq='left',vr='left:',fr='leftBorder',hp='load',ip='losecapture',Fq='marginLeft',Gq='marginTop',Mo='moduleStartup',Ao='mousedown',jp='mousemove',Bo='mouseout',Co='mouseover',kp='mouseup',op='mousewheel',xo='msie',Po='must be positive',Oo='none',po='null',uo='on',No='onModuleLoadStart',Vp='onblur',Bp='onclick',Xp='oncontextmenu',Wp='ondblclick',Up='onfocus',Rp='onkeydown',Sp='onkeypress',Tp='onkeyup',Zp='onload',Np='onmousedown',Pp='onmousemove',Op='onmouseup',Qp='onmousewheel',Ro='opera',Oq='overflow: hidden; width: ',qp='paste',hq='position',Dq="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='",zp='progress',yq='px',xq='px ',sr='px 0px;',ur='px;',Kq='px; background: url(',Tq='px; border: none',Jq='px; height: ',Sq='px; margin-top: ',Pq='px; padding: 0px; zoom: 1',Fr='readOnly',Ip='return function() { w.__gwt_dispatchDblClickEvent_',Fp='return function() { w.__gwt_dispatchEvent_',Lp='return function() { w.__gwt_dispatchUnhandledEvent_',gr='rightBorder',vo='rtl',To='safari',Zo='script',lp='scroll',Hq='span',Lo='startup',jr='stepSize',nq='text',gq='top',tr='top:',up='touchcancel',tp='touchend',sp='touchmove',rp='touchstart',kr='unit',Yo='unknown',vq='url(',lq='value',Ep='w',So='webkit',Aq='width',Iq='width: ';var _;_=E.prototype={};_.eQ=function F(b){return this===b};_.hC=function G(){return this.$H||(this.$H=++U)};_.tM=io;_.cM={};_=K.prototype=new E;_.cM={10:1,30:1};_=J.prototype=new K;_.cM={10:1,30:1};_=M.prototype=I.prototype=new J;_.cM={2:1,10:1,30:1};_=O.prototype=H.prototype=new I;_.cM={2:1,10:1,30:1};_.a=null;_=S.prototype=new E;_.cM={};var T=0,U=0;_=eb.prototype=Z.prototype=new S;_.cM={};_.a=null;_.b=null;var $;_=mb.prototype=ib.prototype=new E;_.y=function nb(b){return hb(b)};_.cM={};var yb=null;var Eb=false,Fb=false;var Lb=null;_=Tb.prototype=new E;_.eQ=function Ub(b){return this===b};_.hC=function Vb(){return this.$H||(this.$H=++U)};_.cM={30:1,31:1,32:1};_=Sb.prototype=new Tb;_.cM={23:1,30:1,31:1,32:1};var Wb,Xb,Yb,Zb,$b,_b,ac,bc,cc;_=fc.prototype=ec.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=hc.prototype=gc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=jc.prototype=ic.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=lc.prototype=kc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=nc.prototype=mc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=pc.prototype=oc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=rc.prototype=qc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=tc.prototype=sc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};_=vc.prototype=uc.prototype=new Sb;_.cM={23:1,30:1,31:1,32:1};var wc,xc=false,yc,zc,Ac;_=Fc.prototype=Ec.prototype=new E;_.x=function Gc(){(Bc(),xc)&&Cc()};_.cM={};var Ic;_=Qc.prototype=new E;_.cM={};_.f=null;_=Pc.prototype=new Qc;_.B=function Rc(){this.e=false;this.f=null};_.cM={};_.e=false;_=Oc.prototype=new Pc;_.A=function Uc(){return this.C()};_.cM={};_.a=null;_.b=null;var Sc=null;_=Xc.prototype=new E;_.hC=function Zc(){return this.c};_.cM={};_.c=0;var Yc=0;_=$c.prototype=Wc.prototype=new Xc;_.cM={};_=_c.prototype=Vc.prototype=new Wc;_.cM={3:1};_.a=null;_.b=null;_=ad.prototype=new Oc;_.cM={};_=cd.prototype=new ad;_.cM={};_=gd.prototype=bd.prototype=new cd;_.z=function hd(b){fd(this,oe(b,4))};_.C=function id(){return dd};_.cM={};var dd;_=md.prototype=jd.prototype=new cd;_.z=function nd(b){oe(oe(b,5),6).e.g.Z()};_.C=function od(){return kd};_.cM={};var kd;_=sd.prototype=pd.prototype=new cd;_.z=function td(b){oe(b,7).D(this)};_.C=function ud(){return qd};_.cM={};var qd;_=wd.prototype=vd.prototype=new E;_.cM={};_.a=null;_=zd.prototype=xd.prototype=new Pc;_.z=function Ad(b){oe(b,8).E(this)};_.A=function Cd(){return yd};_.cM={};var yd=null;_=Gd.prototype=Fd.prototype=Dd.prototype=new E;_.cM={25:1};_.a=null;_.b=null;_=Jd.prototype=new E;_.cM={};_=Id.prototype=new Jd;_.F=function Sd(b,c,d){this.b>0?Kd(this,new uj(this,b,d)):Od(this,b,d)};_.cM={};_.a=null;_.b=0;_.c=false;_=Td.prototype=Hd.prototype=new Id;_.F=function Ud(b,c,d){this.b>0?Kd(this,new uj(this,b,d)):Od(this,b,d)};_.cM={};_=Wd.prototype=Vd.prototype=new E;_.cM={};_.a=null;_=Zd.prototype=Yd.prototype=new I;_.cM={2:1,9:1,10:1,30:1};_.a=null;_=$d.prototype=Xd.prototype=new Yd;_.cM={2:1,9:1,10:1,30:1};_=ae.prototype=_d.prototype=new E;_.cM={18:1};_=ce.prototype=be.prototype=new E;_.cM={};_.aC=null;_.qI=0;var ie,je;var Ge=null;var Le,Me,Ne;_=Qe.prototype=Pe.prototype=new E;_.cM={26:1};_=Te.prototype=Se.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=Ue.prototype=new E;_.cM={};_=Xe.prototype=Ve.prototype=new E;_.cM={};var We=null;_=$e.prototype=Ye.prototype=new Ue;_.cM={};var Ze=null;var _e=null;_=ef.prototype=df.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_=gf.prototype=ff.prototype=new I;_.cM={2:1,10:1,30:1};_=nf.prototype=hf.prototype=new E;_.cM={};_.c=false;_.e=false;_=pf.prototype=new E;_.G=function vf(){this.b||xn(qf,this);this.H()};_.cM={13:1};_.b=false;_.c=0;var qf;_=wf.prototype=of.prototype=new pf;_.H=function xf(){if(!this.a.c){return}jf(this.a)};_.cM={13:1};_.a=null;_=zf.prototype=yf.prototype=new pf;_.H=function Af(){this.a.e=false;kf(this.a,(new Date).getTime())};_.cM={13:1};_.a=null;_=Gf.prototype=Bf.prototype=new E;_.I=function Hf(){return this.c<this.a};_.J=function If(){return Ef(this)};_.K=function Jf(){Ff(this)};_.cM={};_.a=0;_.b=-1;_.c=0;_.d=null;var Kf=null,Lf=null;var Sf;var Vf=null;_=_f.prototype=Xf.prototype=new Pc;_.z=function ag(b){Lk(oe(b,12),this);Zf.c=false};_.A=function cg(){return Yf};_.B=function dg(){$f(this)};_.cM={};_.a=false;_.b=false;_.c=false;_.d=null;var Yf=null,Zf=null;_=fg.prototype=eg.prototype=new E;_.E=function gg(b){while((rf(),qf).b>0){sf(oe(un(qf,0),13))}};_.cM={8:1,18:1};var ig=false,jg=null;_=sg.prototype=pg.prototype=new Pc;_.z=function tg(b){te(b);null.tb()};_.A=function ug(){return qg};_.cM={};var qg;_=wg.prototype=vg.prototype=new Dd;_.cM={25:1};var xg=false;var Ag=null,Bg=null,Cg=null,Dg=null;_=Lg.prototype=new E;_.cM={28:1};_.w=null;_=Kg.prototype=new Lg;_.M=function $g(){};_.N=function _g(){};_.O=function ah(){return this.s};_.P=function bh(){Tg(this)};_.L=function ch(b){Ug(this,b)};_.Q=function dh(){Vg(this)};_.R=function eh(){};_.S=function fh(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.s=false;_.t=0;_.u=null;_.v=null;_=Jg.prototype=new Kg;_.M=function gh(){th(this,(rh(),ph))};_.N=function hh(){th(this,(rh(),qh))};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Ig.prototype=new Jg;_.U=function kh(){return new _i(this.a)};_.T=function lh(b){return jh(this,b)};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Hg.prototype=new Ig;_.T=function nh(b){var c;c=jh(this,b);c&&mh(b.w);return c};_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=sh.prototype=oh.prototype=new Xd;_.cM={2:1,9:1,10:1,30:1};var ph,qh;_=vh.prototype=uh.prototype=new E;_.V=function wh(b){b.P()};_.cM={};_=yh.prototype=xh.prototype=new E;_.V=function zh(b){b.Q()};_.cM={};_=Ah.prototype=new Kg;_.O=function Ch(){if(this.r){return this.r.s}return false};_.P=function Dh(){if(this.t!=-1){Zg(this.r,this.t);this.t=-1}Tg(this.r);this.w.__listener=this;this.R()};_.L=function Eh(b){Ug(this,b);Ug(this.r,b)};_.Q=function Fh(){try{this.S()}finally{Vg(this.r)}};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.r=null;_=Hh.prototype=Gh.prototype=new Ig;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Ih.prototype=new Kg;_.P=function Jh(){var b;Tg(this);b=this.w.tabIndex;-1==b&&(this.w.tabIndex=0,undefined)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Lh.prototype=Kh.prototype=new Ig;_.cM={14:1,15:1,17:1,24:1,25:1,27:1,28:1};_=Qh.prototype=Mh.prototype=new Kg;_.L=function Rh(b){yg(b.type)==32768&&!!this.a&&(kj(this)[kq]=ko,undefined);Ug(this,b)};_.R=function Sh(){var b;b=tb(kj(this),kq);nl(hp,b)&&Uf(new $h(this))};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.a=null;_=Uh.prototype=new E;_.cM={};_=Xh.prototype=Th.prototype=new Uh;_.cM={};_.a=0;_.b=0;_.c=0;_.d=null;_.e=0;_=$h.prototype=Yh.prototype=new E;_.x=function _h(){Zh(this)};_.cM={11:1};_.a=null;_=fi.prototype=ai.prototype=new Hg;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};var bi,ci,di;_=ki.prototype=ji.prototype=new E;_.V=function li(b){b.O()&&b.Q()};_.cM={};_=ni.prototype=mi.prototype=new E;_.E=function oi(b){hi()};_.cM={8:1,18:1};_=qi.prototype=pi.prototype=new ai;_.cM={14:1,15:1,16:1,17:1,24:1,25:1,27:1,28:1};_=ti.prototype=new Ih;_.W=function xi(){return ui(this)};_.L=function yi(b){var c;c=yg(b.type);(c&896)!=0?Ug(this,b):Ug(this,b)};_.R=function zi(){};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=si.prototype=new ti;_.W=function Bi(){var b;return b=ui(this),b==null?ko:b};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Ci.prototype=ri.prototype=new si;_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_=Di.prototype=new Tb;_.cM={29:1,30:1,31:1,32:1};var Ei,Fi,Gi,Hi;_=Ki.prototype=Ji.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Mi.prototype=Li.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Oi.prototype=Ni.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Qi.prototype=Pi.prototype=new Di;_.cM={29:1,30:1,31:1,32:1};_=Xi.prototype=Ri.prototype=new E;_.U=function Yi(){return new _i(this)};_.cM={};_.a=null;_.b=null;_.c=0;_=_i.prototype=Zi.prototype=new E;_.I=function aj(){return this.a<this.b.c-1};_.J=function bj(){return $i(this)};_.K=function cj(){if(this.a<0||this.a>=this.b.c){throw new dl}this.b.b.T(this.b.a[this.a--])};_.cM={};_.a=-1;_.b=null;_=dj.prototype=new E;_.cM={};_=lj.prototype=ej.prototype=new dj;_.cM={};var fj;_=pj.prototype=nj.prototype=new E;_.cM={};_.a=null;_.b=null;_.c=null;_.d=null;_=rj.prototype=qj.prototype=new E;_.x=function sj(){Md(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=uj.prototype=tj.prototype=new E;_.x=function vj(){Od(this.a,this.c,this.b)};_.cM={21:1};_.a=null;_.b=null;_.c=null;_=Aj.prototype=wj.prototype=new E;_.cM={};_.a=null;var Cj,Dj=null,Ej=null,Fj=null;_=Kj.prototype=Ij.prototype=new E;_.cM={};_.a=false;_=Rj.prototype=Qj.prototype=new E;_.X=function Sj(b,c){};_.Y=function Tj(){};_.Z=function Uj(){};_.$=function Vj(){};_._=function Wj(){};_.ab=function Xj(){};_.cM={};_=$j.prototype=new E;_.bb=function bk(b){return ko+b};_.X=function ck(b,c){if(this.g){this.i+=b;this.j+=c;ak(this);this.cb(b,c);_j(this)}};_.cb=function dk(b,c){};_.Y=function ek(){this.g=true;xk(this.k)};_.Z=function fk(){if(!this.g){Ak(this.k);this.g=false}};_.$=function gk(){this.g||zk(this.k)};_._=function hk(){this.g=false;tk(this.k)?zk(this.k):Ak(this.k);this.db(this.i,this.j)};_.db=function ik(b,c){};_.ab=function jk(){_j(this)};_.cM={};_.g=false;_.i=0;_.j=1;_.k=null;_=Zj.prototype=new $j;_.bb=function mk(b){var c,d;c=b*this.b+this.d;d=kk(this,c);return this.e!=null&&!!this.e.length?pl(this.e,mr,ko+d):ko+d};_.cb=function nk(b,c){this.c=false};_.eb=function ok(b,c){};_.db=function pk(b,c){var d,e;d=kk(this,b*this.b+this.d);e=kk(this,c*this.b+this.d);this.eb(d,e)};_.cM={};_.b=0;_.c=false;_.d=0;_.e=null;_.f=0;_=qk.prototype=Yj.prototype=new Zj;_.eb=function rk(b,c){var d=this.a;d&&typeof d==mo&&d(b,c)};_.cM={};_.a=null;_=Gk.prototype=sk.prototype=new Ah;_.R=function Hk(){this.g.ab()};_.S=function Ik(){Nk(this.f)};_.cM={14:1,15:1,24:1,25:1,27:1,28:1};_.b=0;_.c=null;_.d=null;_.e=null;_.i=null;_.j=null;_.k=null;_.n=null;_.p=null;_.q=null;_=Ok.prototype=Jk.prototype=new E;_.D=function Pk(b){this.e.g.$()};_.cM={4:1,5:1,6:1,7:1,12:1,18:1};_.a=0;_.b=0;_.c=false;_.d=false;_.e=null;_=Rk.prototype=Qk.prototype=new E;_.D=function Sk(b){Mk(this.a)};_.cM={7:1,18:1};_.a=null;_=Vk.prototype=Tk.prototype=new E;_.cM={};_.a=0;_.b=0;_.c=0;_.d=0;_=Xk.prototype=Wk.prototype=new I;_.cM={2:1,10:1,30:1};_=Zk.prototype=Yk.prototype=new E;_.cM={};_=_k.prototype=$k.prototype=new I;_.cM={2:1,10:1,30:1};_=bl.prototype=al.prototype=new I;_.cM={2:1,10:1,30:1};_=el.prototype=dl.prototype=cl.prototype=new I;_.cM={2:1,10:1,30:1};_=hl.prototype=gl.prototype=fl.prototype=new I;_.cM={2:1,10:1,30:1};_=kl.prototype=jl.prototype=il.prototype=new I;_.cM={2:1,10:1,30:1};_=ml.prototype=ll.prototype=new E;_.cM={30:1,33:1};_=String.prototype;_.eQ=function tl(b){return nl(this,b)};_.hC=function ul(){return Al(this)};_.cM={1:1,30:1,31:1};var vl,wl=0,xl;_=Fl.prototype=Cl.prototype=new E;_.cM={};_=Hl.prototype=Gl.prototype=new I;_.cM={2:1,10:1,30:1};_=Il.prototype=new E;_.fb=function Kl(b){throw new Hl(Nr)};_.gb=function Ll(b){var c;c=Jl(this.U(),b);return !!c};_.hb=function Ml(){return this.jb()==0};_.ib=function Nl(b){var c;c=Jl(this.U(),b);if(c){c.K();return true}else{return false}};_.kb=function Ol(b){var c,d,e;e=this.jb();b.length<e&&(b=de(b,e));d=this.U();for(c=0;c<e;++c){he(b,c,d.J())}b.length>e&&he(b,e,null);return b};_.cM={};_=Ql.prototype=new E;_.eQ=function Sl(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[19])){return false}f=oe(b,19);if(this.d!=f.d){return false}for(d=new wm((new om(f)).a);Zm(d.a);){c=d.b=oe($m(d.a),34);e=c.mb();g=c.W();if(!(e==null?this.c:e!=null&&e.cM&&!!e.cM[1]?oo+oe(e,1) in this.e:$l(this,e,~~Q(e)))){return false}if(!ho(g,e==null?this.b:e!=null&&e.cM&&!!e.cM[1]?this.e[oo+oe(e,1)]:Zl(this,e,~~Q(e)))){return false}}return true};_.hC=function Tl(){var b,c,d;d=0;for(c=new wm((new om(this)).a);Zm(c.a);){b=c.b=oe($m(c.a),34);d+=b.hC();d=~~d}return d};_.cM={19:1};_=Pl.prototype=new Ql;_.lb=function im(b,c){return (b==null?null:b)===(c==null?null:c)||b!=null&&P(b,c)};_.cM={19:1};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;_=km.prototype=new Il;_.eQ=function lm(b){var c,d,e;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[35])){return false}d=oe(b,35);if(d.jb()!=this.jb()){return false}for(c=d.U();c.I();){e=c.J();if(!this.gb(e)){return false}}return true};_.hC=function mm(){var b,c,d;b=0;for(c=this.U();c.I();){d=c.J();if(d!=null){b+=Q(d);b=~~b}}return b};_.cM={35:1};_=om.prototype=jm.prototype=new km;_.gb=function pm(b){return nm(this,b)};_.U=function qm(){return new wm(this.a)};_.ib=function rm(b){var c;if(nm(this,b)){c=oe(b,34).mb();em(this.a,c);return true}return false};_.jb=function sm(){return this.a.d};_.cM={35:1};_.a=null;_=wm.prototype=tm.prototype=new E;_.I=function xm(){return Zm(this.a)};_.J=function ym(){return this.b=oe($m(this.a),34)};_.K=function zm(){vm(this)};_.cM={};_.a=null;_.b=null;_.c=null;_=Bm.prototype=new E;_.eQ=function Cm(b){var c;if(b!=null&&b.cM&&!!b.cM[34]){c=oe(b,34);if(ho(this.mb(),c.mb())&&ho(this.W(),c.W())){return true}}return false};_.hC=function Dm(){var b,c;b=0;c=0;this.mb()!=null&&(b=Q(this.mb()));this.W()!=null&&(c=Q(this.W()));return b^c};_.cM={34:1};_=Em.prototype=Am.prototype=new Bm;_.mb=function Fm(){return null};_.W=function Gm(){return this.a.b};_.nb=function Hm(b){return cm(this.a,b)};_.cM={34:1};_.a=null;_=Jm.prototype=Im.prototype=new Bm;_.mb=function Km(){return this.a};_.W=function Lm(){return this.b.e[oo+this.a]};_.nb=function Mm(b){return dm(this.b,this.a,b)};_.cM={34:1};_.a=null;_.b=null;_=Nm.prototype=new Il;_.fb=function Om(b){this.ob(this.jb(),b);return true};_.ob=function Pm(b,c){throw new Hl(Rr)};_.eQ=function Rm(b){var c,d,e,f,g;if(b===this){return true}if(!(b!=null&&b.cM&&!!b.cM[20])){return false}g=oe(b,20);if(this.jb()!=g.jb()){return false}e=new an(this);f=g.U();while(e.b<e.d.jb()){c=$m(e);d=$m(f);if(!(c==null?d==null:P(c,d))){return false}}return true};_.hC=function Sm(){var b,c,d;c=1;b=new an(this);while(b.b<b.d.jb()){d=$m(b);c=31*c+(d==null?0:Q(d));c=~~c}return c};_.U=function Um(){return new an(this)};_.qb=function Vm(){return new gn(this,0)};_.rb=function Wm(b){return new gn(this,b)};_.sb=function Xm(b){throw new Hl(Sr)};_.cM={20:1};_=an.prototype=Ym.prototype=new E;_.I=function bn(){return this.b<this.d.jb()};_.J=function cn(){return $m(this)};_.K=function dn(){_m(this)};_.cM={};_.b=0;_.c=-1;_.d=null;_=gn.prototype=en.prototype=new Ym;_.cM={};_.a=null;_=jn.prototype=hn.prototype=new km;_.gb=function kn(b){return Xl(this.a,b)};_.U=function ln(){var b;return b=new wm(this.b.a),new on(b)};_.jb=function mn(){return this.b.a.d};_.cM={35:1};_.a=null;_.b=null;_=on.prototype=nn.prototype=new E;_.I=function pn(){return Zm(this.a.a)};_.J=function qn(){var b;b=um(this.a);return b.mb()};_.K=function rn(){vm(this.a)};_.cM={};_.a=null;_=yn.prototype=sn.prototype=new Nm;_.fb=function zn(b){return he(this.a,this.b++,b),true};_.ob=function An(b,c){(b<0||b>this.b)&&Tm(b,this.b);this.a.splice(b,0,c);++this.b};_.gb=function Bn(b){return vn(this,b,0)!=-1};_.pb=function Cn(b){return Qm(b,this.b),this.a[b]};_.hb=function Dn(){return this.b==0};_.sb=function En(b){return wn(this,b)};_.ib=function Fn(b){return xn(this,b)};_.jb=function Gn(){return this.b};_.kb=function Hn(b){var c,d,e;b.length<this.b&&(b=(d=b,e=ee(0,this.b),ge(d.aC,d.cM,d.qI,e),e));for(c=0;c<this.b;++c){he(b,c,this.a[c])}b.length>this.b&&he(b,this.b,null);return b};_.cM={20:1,30:1};_.b=0;var In;_=Ln.prototype=Kn.prototype=new Nm;_.gb=function Mn(b){return false};_.pb=function Nn(b){throw new gl};_.jb=function On(){return 0};_.cM={20:1,30:1};_=Rn.prototype=Pn.prototype=new Pl;_.cM={19:1,30:1};_=Un.prototype=Sn.prototype=new km;_.fb=function Vn(b){var c;return c=am(this.a,b,this),c==null};_.gb=function Wn(b){return Xl(this.a,b)};_.hb=function Xn(){return this.a.d==0};_.U=function Yn(){var b;return b=new wm(Rl(this.a).b.a),new on(b)};_.ib=function Zn(b){return em(this.a,b)!=null};_.jb=function $n(){return this.a.d};_.cM={30:1,35:1};_.a=null;_=ao.prototype=_n.prototype=new Bm;_.mb=function bo(){return this.a};_.W=function co(){return this.b};_.nb=function eo(b){var c;c=this.b;this.b=b;return c};_.cM={34:1};_.a=null;_.b=null;_=go.prototype=fo.prototype=new I;_.cM={2:1,10:1,30:1};var jo=X;var ue=new Zk,Ae=new Zk,ve=new Zk,we=new Zk,ye=new Zk,xe=new Zk,Be=new Zk,ze=new Zk;$stats && $stats({moduleName:'de.factfinder.asn.slider.OneTouchSlider',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if (de_factfinder_asn_slider_OneTouchSlider && de_factfinder_asn_slider_OneTouchSlider.onScriptLoad)de_factfinder_asn_slider_OneTouchSlider.onScriptLoad(gwtOnLoad);})();
skin/frontend/base/default/js/factfinder_onetouchslider/clear.cache.gif ADDED
Binary file
skin/frontend/base/default/js/factfinder_onetouchslider/de.factfinder.asn.slider.OneTouchSlider.nocache.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function de_factfinder_asn_slider_OneTouchSlider(){var L='',bc='\n-',sb='" for "gwt:onLoadErrorFn"',qb='" for "gwt:onPropertyErrorFn"',Qb='"<script src=\\"',eb='"><\/script>',V='#',ac=');',Ub='-\n',cc='-><\/scr',Rb='.cache.js\\"><\/scr" + "ipt>"',X='/',Hb='234A0ACCECB3C19247FA8B7920453761',Ib='25E490B929D7CDBF44085E4E4D9D6F78',Jb='53ABFAE8983A4589B497F48695DB2A7C',Kb='75B23D057185BAB61CFE100CE08C4D84',Lb='9F0D0456482D7A7A901A2CD8F64EA019',Nb=':',kb='::',Sb='<scr',db='<script id="',nb='=',W='?',pb='Bad handler "',Eb='Cross-site hosted mode not yet implemented. See issue ',Ob='DOMContentLoaded',Mb='E99B1B37801E5D6E5F99A5A03BC233EF',fb='SCRIPT',cb='__gwt_marker_de.factfinder.asn.slider.OneTouchSlider',gb='base',$='baseUrl',P='begin',O='bootstrap',Z='clear.cache.gif',mb='content',M='de.factfinder.asn.slider.OneTouchSlider',ab='de.factfinder.asn.slider.OneTouchSlider.nocache.js',jb='de.factfinder.asn.slider.OneTouchSlider::',_b='document.write(',U='end',Xb='evtGroup: "loadExternalRefs", millis:(new Date()).getTime(),',Zb='evtGroup: "moduleStartup", millis:(new Date()).getTime(),',Bb='gecko',Cb='gecko1_8',Q='gwt.codesvr=',R='gwt.hosted=',S='gwt.hybrid',rb='gwt:onLoadErrorFn',ob='gwt:onPropertyErrorFn',lb='gwt:property',Fb='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Ab='ie6',zb='ie8',yb='ie9',Y='img',dc='ipt>',Tb='ipt><!-',Pb='loadExternalRefs',hb='meta',Wb='moduleName:"de.factfinder.asn.slider.OneTouchSlider", sessionId:window.__gwtStatsSessionId, subSystem:"startup",',T='moduleStartup',xb='msie',ib='name',ub='opera',wb='safari',_='script',Gb='selectingPermutation',N='startup',Yb='type: "end"});',$b='type: "moduleRequested"});',bb='undefined',Db='unknown',tb='user.agent',vb='webkit',Vb='window.__gwtStatsEvent && window.__gwtStatsEvent({';var l=window,m=document,n=l.__gwtStatsEvent?function(a){return l.__gwtStatsEvent(a)}:null,o=l.__gwtStatsSessionId?l.__gwtStatsSessionId:null,p,q,r=L,s={},t=[],u=[],v=[],w=0,x,y;n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:P});if(!l.__gwt_stylesLoaded){l.__gwt_stylesLoaded={}}if(!l.__gwt_scriptsLoaded){l.__gwt_scriptsLoaded={}}function z(){var b=false;try{var c=l.location.search;return (c.indexOf(Q)!=-1||(c.indexOf(R)!=-1||l.external&&l.external.gwtOnLoad))&&c.indexOf(S)==-1}catch(a){}z=function(){return b};return b}
2
+ function A(){if(p&&q){p(x,M,r,w);n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:T,millis:(new Date).getTime(),type:U})}}
3
+ function B(){function e(a){var b=a.lastIndexOf(V);if(b==-1){b=a.length}var c=a.indexOf(W);if(c==-1){c=a.length}var d=a.lastIndexOf(X,Math.min(c,b));return d>=0?a.substring(0,d+1):L}
4
+ function f(a){if(a.match(/^\w+:\/\//)){}else{var b=m.createElement(Y);b.src=a+Z;a=e(b.src)}return a}
5
+ function g(){var a=D($);if(a!=null){return a}return L}
6
+ function h(){var a=m.getElementsByTagName(_);for(var b=0;b<a.length;++b){if(a[b].src.indexOf(ab)!=-1){return e(a[b].src)}}return L}
7
+ function i(){var a;if(typeof isBodyLoaded==bb||!isBodyLoaded()){var b=cb;var c;m.write(db+b+eb);c=m.getElementById(b);a=c&&c.previousSibling;while(a&&a.tagName!=fb){a=a.previousSibling}if(c){c.parentNode.removeChild(c)}if(a&&a.src){return e(a.src)}}return L}
8
+ function j(){var a=m.getElementsByTagName(gb);if(a.length>0){return a[a.length-1].href}return L}
9
+ var k=g();if(k==L){k=h()}if(k==L){k=i()}if(k==L){k=j()}if(k==L){k=e(m.location.href)}k=f(k);r=k;return k}
10
+ function C(){var b=document.getElementsByTagName(hb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(ib),g;if(f){f=f.replace(jb,L);if(f.indexOf(kb)>=0){continue}if(f==lb){g=e.getAttribute(mb);if(g){var h,i=g.indexOf(nb);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=L}s[f]=h}}else if(f==ob){g=e.getAttribute(mb);if(g){try{y=eval(g)}catch(a){alert(pb+g+qb)}}}else if(f==rb){g=e.getAttribute(mb);if(g){try{x=eval(g)}catch(a){alert(pb+g+sb)}}}}}}
11
+ function D(a){var b=s[a];return b==null?null:b}
12
+ function E(a,b){var c=v;for(var d=0,e=a.length-1;d<e;++d){c=c[a[d]]||(c[a[d]]=[])}c[a[e]]=b}
13
+ function F(a){var b=u[a](),c=t[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(y){y(a,d,b)}throw null}
14
+ u[tb]=function(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(ub)!=-1}())return ub;if(function(){return b.indexOf(vb)!=-1}())return wb;if(function(){return b.indexOf(xb)!=-1&&m.documentMode>=9}())return yb;if(function(){return b.indexOf(xb)!=-1&&m.documentMode>=8}())return zb;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return Ab;if(function(){return b.indexOf(Bb)!=-1}())return Cb;return Db};t[tb]={gecko1_8:0,ie6:1,ie8:2,ie9:3,opera:4,safari:5};de_factfinder_asn_slider_OneTouchSlider.onScriptLoad=function(a){de_factfinder_asn_slider_OneTouchSlider.onScriptLoad=null;p=a;A()};if(z()){alert(Eb+Fb);return}C();B();n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:Gb});var G;try{E([zb],Hb);E([yb],Ib);E([wb],Jb);E([Cb],Kb);E([Ab],Lb);E([ub],Mb);G=v[F(tb)];var H=G.indexOf(Nb);if(H!=-1){w=Number(G.substring(H+1));G=G.substring(0,H)}}catch(a){return}var I;function J(){if(!q){q=true;A();if(m.removeEventListener){m.removeEventListener(Ob,J,false)}if(I){clearInterval(I)}}}
15
+ if(m.addEventListener){m.addEventListener(Ob,function(){J()},false)}var I=setInterval(function(){if(/loaded|complete/.test(m.readyState)){J()}},50);n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:O,millis:(new Date).getTime(),type:U});n&&n({moduleName:M,sessionId:o,subSystem:N,evtGroup:Pb,millis:(new Date).getTime(),type:P});var K=Qb+r+G+Rb;m.write(Sb+Tb+Ub+Vb+Wb+Xb+Yb+Vb+Wb+Zb+$b+_b+K+ac+bc+cc+dc)}
16
+ de_factfinder_asn_slider_OneTouchSlider();