Musho_Flipdefine - Version 1.0.0

Version Notes

Initial Release

Download this release

Release Info

Developer joel tan
Extension Musho_Flipdefine
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (63) hide show
  1. app/code/community/Musho/Flipdefine/Block/Monblock.php +269 -0
  2. app/code/community/Musho/Flipdefine/Block/Product/Abstract.php +651 -0
  3. app/code/community/Musho/Flipdefine/Block/Product/Compare/Abstract.php +57 -0
  4. app/code/community/Musho/Flipdefine/Block/Product/Compare/List.php +198 -0
  5. app/code/community/Musho/Flipdefine/Block/Product/Compare/Sidebar.php +124 -0
  6. app/code/community/Musho/Flipdefine/Block/Product/Gallery.php +150 -0
  7. app/code/community/Musho/Flipdefine/Block/Product/List.php +271 -0
  8. app/code/community/Musho/Flipdefine/Block/Product/List/Crosssell.php +101 -0
  9. app/code/community/Musho/Flipdefine/Block/Product/List/Promotion.php +41 -0
  10. app/code/community/Musho/Flipdefine/Block/Product/List/Random.php +51 -0
  11. app/code/community/Musho/Flipdefine/Block/Product/List/Related.php +95 -0
  12. app/code/community/Musho/Flipdefine/Block/Product/List/Toolbar.php +830 -0
  13. app/code/community/Musho/Flipdefine/Block/Product/List/Upsell.php +180 -0
  14. app/code/community/Musho/Flipdefine/Block/Product/New.php +162 -0
  15. app/code/community/Musho/Flipdefine/Block/Product/Price.php +191 -0
  16. app/code/community/Musho/Flipdefine/Block/Product/Price/Template.php +76 -0
  17. app/code/community/Musho/Flipdefine/Block/Product/Send.php +67 -0
  18. app/code/community/Musho/Flipdefine/Block/Product/View.php +273 -0
  19. app/code/community/Musho/Flipdefine/Block/Product/View/Abstract.php +50 -0
  20. app/code/community/Musho/Flipdefine/Block/Product/View/Additional.php +61 -0
  21. app/code/community/Musho/Flipdefine/Block/Product/View/Attributes.php +83 -0
  22. app/code/community/Musho/Flipdefine/Block/Product/View/Description.php +46 -0
  23. app/code/community/Musho/Flipdefine/Block/Product/View/Media.php +79 -0
  24. app/code/community/Musho/Flipdefine/Block/Product/View/Options.php +204 -0
  25. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Abstract.php +177 -0
  26. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Date.php +231 -0
  27. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Default.php +39 -0
  28. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/File.php +53 -0
  29. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Select.php +153 -0
  30. app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Text.php +48 -0
  31. app/code/community/Musho/Flipdefine/Block/Product/View/Price.php +47 -0
  32. app/code/community/Musho/Flipdefine/Block/Product/View/Tabs.php +68 -0
  33. app/code/community/Musho/Flipdefine/Block/Product/View/Type/Configurable.php +363 -0
  34. app/code/community/Musho/Flipdefine/Block/Product/View/Type/Grouped.php +61 -0
  35. app/code/community/Musho/Flipdefine/Block/Product/View/Type/Simple.php +36 -0
  36. app/code/community/Musho/Flipdefine/Block/Product/View/Type/Virtual.php +37 -0
  37. app/code/community/Musho/Flipdefine/Block/Product/Widget/Html/Pager.php +299 -0
  38. app/code/community/Musho/Flipdefine/Block/Product/Widget/Link.php +46 -0
  39. app/code/community/Musho/Flipdefine/Block/Product/Widget/New.php +204 -0
  40. app/code/community/Musho/Flipdefine/Block/Products.php +26 -0
  41. app/code/community/Musho/Flipdefine/controllers/Adminhtml/IndexController.php +12 -0
  42. app/code/community/Musho/Flipdefine/controllers/IndexController.php +1 -0
  43. app/code/community/Musho/Flipdefine/controllers/ProductController.php +10 -0
  44. app/code/community/Musho/Flipdefine/etc/config.xml +98 -0
  45. app/code/local/VF/EasyAjax/Controller/Varien/Router/Json.php +35 -0
  46. app/code/local/VF/EasyAjax/Model/Core.php +96 -0
  47. app/code/local/VF/EasyAjax/Model/Core/Message.php +43 -0
  48. app/code/local/VF/EasyAjax/Model/Core/Message/Collection.php +51 -0
  49. app/code/local/VF/EasyAjax/Model/Message/Storage.php +59 -0
  50. app/code/local/VF/EasyAjax/Model/Observer.php +55 -0
  51. app/code/local/VF/EasyAjax/Model/Response.php +178 -0
  52. app/code/local/VF/EasyAjax/etc/config.xml +86 -0
  53. app/design/frontend/base/default/layout/easy_ajax.xml +25 -0
  54. app/design/frontend/base/default/layout/flipdefine.xml +122 -0
  55. app/design/frontend/base/default/template/flipdefine/afficher.phtml +176 -0
  56. app/etc/modules/Musho_All.xml +9 -0
  57. app/etc/modules/VF_EasyAjax.xml +33 -0
  58. package.xml +18 -0
  59. skin/frontend/base/default/css/ajax_cart.css +1950 -0
  60. skin/frontend/base/default/css/local.css +4809 -0
  61. skin/frontend/base/default/images/ajax-loader.gif +0 -0
  62. skin/frontend/base/default/js/ajax_cart.js +230 -0
  63. skin/frontend/base/default/js/easy_ajax.js +55 -0
app/code/community/Musho/Flipdefine/Block/Monblock.php ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ require_once 'Mage/Core/Block/Template.php';
3
+ class Musho_Flipdefine_Block_Monblock extends Mage_Core_Block_Template
4
+ {
5
+ protected $_finalPrice = array();
6
+ public function _prepareUrls(){
7
+ $this->_urls = array(
8
+ 'base' => Mage::getBaseUrl('web'),
9
+ 'baseSecure'=> Mage::getBaseUrl('web', true),
10
+ 'current' => $this->getRequest()->getRequestUri()
11
+ );
12
+
13
+ $action = Mage::app()->getFrontController()->getAction();
14
+ if ($action) {
15
+ $this->addBodyClass($action->getFullActionName('-'));
16
+ }
17
+
18
+ $this->_beforeCacheUrl();
19
+ }
20
+
21
+ public function getBaseUrl()
22
+ {
23
+ return $this->_urls['base'];
24
+ }
25
+
26
+ public function getBaseSecureUrl()
27
+ {
28
+ return $this->_urls['baseSecure'];
29
+ }
30
+
31
+ public function getCurrentUrl()
32
+ {
33
+ return $this->_urls['current'];
34
+ }
35
+
36
+
37
+
38
+ public function getProduct(){
39
+ //if (!Mage::registry('product') && $this->getProductId()) {
40
+ //print_r("ProductNo: ".);
41
+ if($product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'))){
42
+ Mage::register('product', $product);
43
+ return Mage::registry('product') ;
44
+ //json_encode(Mage::registry('product'));
45
+ }else{
46
+ Mage::logException($e);
47
+ $this->_forward('noRoute');
48
+ return false;
49
+ }
50
+ //}else{
51
+ //$product = Mage::getModel('catalog/product')->load(3);//->getData();
52
+ //Mage::register('product', $product);
53
+ //}
54
+
55
+ }
56
+
57
+
58
+
59
+ public function getPrice()
60
+ {
61
+ return $this->getProduct()->getPrice();
62
+ }
63
+
64
+ public function getFinalPrice()
65
+ {
66
+ if (!isset($this->_finalPrice[$this->getProduct()->getId()])) {
67
+ $this->_finalPrice[$this->getProduct()->getId()] = $this->getProduct()->getFinalPrice();
68
+ }
69
+ return $this->_finalPrice[$this->getProduct()->getId()];
70
+ }
71
+
72
+ public function getPriceHtml($product)
73
+ {
74
+ $this->setTemplate('catalog/product/price.phtml');
75
+ $this->setProduct($product);
76
+ return $this->toHtml();
77
+ }
78
+
79
+ public function getProductDefaultQty($product = null)
80
+ {
81
+ if (!$product) {
82
+ $product = $this->getProduct();
83
+ }
84
+
85
+ $qty = $this->getMinimalQty($product);
86
+ $config = $product->getPreconfiguredValues();
87
+ $configQty = $config->getQty();
88
+ if ($configQty > $qty) {
89
+ $qty = $configQty;
90
+ }
91
+
92
+ return $qty;
93
+ }
94
+
95
+
96
+ public function getAddToCartUrl($product, $additional = array()){
97
+ if ($this->hasCustomAddToCartUrl()) {
98
+ return $this->getCustomAddToCartUrl();
99
+ }
100
+
101
+ if ($this->getRequest()->getParam('wishlist_next')) {
102
+ $additional['wishlist_next'] = 1;
103
+ }
104
+
105
+ $addUrlKey = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
106
+ $addUrlValue = Mage::getUrl('*/*/*', array('_use_rewrite' => true, '_current' => true));
107
+ $additional[$addUrlKey] = Mage::helper('core')->urlEncode($addUrlValue);
108
+
109
+ return $this->helper('checkout/cart')->getAddUrl($product, $additional);
110
+ }
111
+
112
+
113
+ /**
114
+ * Retrieves url for form submitting:
115
+ * some objects can use setSubmitRouteData() to set route and params for form submitting,
116
+ * otherwise default url will be used
117
+ *
118
+ * @param Mage_Catalog_Model_Product $product
119
+ * @param array $additional
120
+ * @return string
121
+ */
122
+ public function getSubmitUrl($product, $additional = array())
123
+ {
124
+ $submitRouteData = $this->getData('submit_route_data');
125
+ if ($submitRouteData) {
126
+ $route = $submitRouteData['route'];
127
+ $params = isset($submitRouteData['params']) ? $submitRouteData['params'] : array();
128
+ $submitUrl = $this->getUrl($route, array_merge($params, $additional));
129
+ } else {
130
+ $submitUrl = $this->getAddToCartUrl($product, $additional);
131
+ }
132
+ return $submitUrl;
133
+ }
134
+
135
+ /**
136
+ * Return link to Add to Wishlist
137
+ *
138
+ * @param Mage_Catalog_Model_Product $product
139
+ * @return string
140
+ */
141
+ public function getAddToWishlistUrl($product)
142
+ {
143
+ return $this->helper('wishlist')->getAddUrl($product);
144
+ }
145
+
146
+ /**
147
+ * Retrieve Add Product to Compare Products List URL
148
+ *
149
+ * @param Mage_Catalog_Model_Product $product
150
+ * @return string
151
+ */
152
+ public function getAddToCompareUrl($product)
153
+ {
154
+ return $this->helper('catalog/product_compare')->getAddUrl($product);
155
+ }
156
+
157
+ public function hasOptions()
158
+ {
159
+ if ($this->getProduct()->getTypeInstance(true)->hasOptions($this->getProduct())) {
160
+ return true;
161
+ }
162
+ return false;
163
+ }
164
+
165
+ /**
166
+ * Check if product has required options
167
+ *
168
+ * @return bool
169
+ */
170
+ public function hasRequiredOptions()
171
+ {
172
+ return $this->getProduct()->getTypeInstance(true)->hasRequiredOptions($this->getProduct());
173
+ }
174
+ /**
175
+ * Gets minimal sales quantity
176
+ *
177
+ * @param Mage_Catalog_Model_Product $product
178
+ * @return int|null
179
+ */
180
+ public function getMinimalQty($product)
181
+ {
182
+ $stockItem = $product->getStockItem();
183
+ if ($stockItem) {
184
+ return ($stockItem->getMinSaleQty()
185
+ && $stockItem->getMinSaleQty() > 0 ? $stockItem->getMinSaleQty() * 1 : null);
186
+ }
187
+ return null;
188
+ }
189
+
190
+ /**
191
+ * Get JSON encoded configuration array which can be used for JS dynamic
192
+ * price calculation depending on product options
193
+ *
194
+ * @return string
195
+ */
196
+ public function getJsonConfig()
197
+ {
198
+ $config = array();
199
+ if (!$this->hasOptions()) {
200
+ return Mage::helper('core')->jsonEncode($config);
201
+ }
202
+
203
+ $_request = Mage::getSingleton('tax/calculation')->getRateRequest(false, false, false);
204
+ /* @var $product Mage_Catalog_Model_Product */
205
+ $product = $this->getProduct();
206
+ $_request->setProductClassId($product->getTaxClassId());
207
+ $defaultTax = Mage::getSingleton('tax/calculation')->getRate($_request);
208
+
209
+ $_request = Mage::getSingleton('tax/calculation')->getRateRequest();
210
+ $_request->setProductClassId($product->getTaxClassId());
211
+ $currentTax = Mage::getSingleton('tax/calculation')->getRate($_request);
212
+
213
+ $_regularPrice = $product->getPrice();
214
+ $_finalPrice = $product->getFinalPrice();
215
+ $_priceInclTax = Mage::helper('tax')->getPrice($product, $_finalPrice, true);
216
+ $_priceExclTax = Mage::helper('tax')->getPrice($product, $_finalPrice);
217
+ $_tierPrices = array();
218
+ $_tierPricesInclTax = array();
219
+ foreach ($product->getTierPrice() as $tierPrice) {
220
+ $_tierPrices[] = Mage::helper('core')->currency($tierPrice['website_price'], false, false);
221
+ $_tierPricesInclTax[] = Mage::helper('core')->currency(
222
+ Mage::helper('tax')->getPrice($product, (int)$tierPrice['website_price'], true),
223
+ false, false);
224
+ }
225
+ $config = array(
226
+ 'productId' => $product->getId(),
227
+ 'priceFormat' => Mage::app()->getLocale()->getJsPriceFormat(),
228
+ 'includeTax' => Mage::helper('tax')->priceIncludesTax() ? 'true' : 'false',
229
+ 'showIncludeTax' => Mage::helper('tax')->displayPriceIncludingTax(),
230
+ 'showBothPrices' => Mage::helper('tax')->displayBothPrices(),
231
+ 'productPrice' => Mage::helper('core')->currency($_finalPrice, false, false),
232
+ 'productOldPrice' => Mage::helper('core')->currency($_regularPrice, false, false),
233
+ 'priceInclTax' => Mage::helper('core')->currency($_priceInclTax, false, false),
234
+ 'priceExclTax' => Mage::helper('core')->currency($_priceExclTax, false, false),
235
+ /**
236
+ * @var skipCalculate
237
+ * @deprecated after 1.5.1.0
238
+ */
239
+ 'skipCalculate' => ($_priceExclTax != $_priceInclTax ? 0 : 1),
240
+ 'defaultTax' => $defaultTax,
241
+ 'currentTax' => $currentTax,
242
+ 'idSuffix' => '_clone',
243
+ 'oldPlusDisposition' => 0,
244
+ 'plusDisposition' => 0,
245
+ 'plusDispositionTax' => 0,
246
+ 'oldMinusDisposition' => 0,
247
+ 'minusDisposition' => 0,
248
+ 'tierPrices' => $_tierPrices,
249
+ 'tierPricesInclTax' => $_tierPricesInclTax,
250
+ );
251
+
252
+ $responseObject = new Varien_Object();
253
+ Mage::dispatchEvent('catalog_product_view_config', array('response_object' => $responseObject));
254
+ if (is_array($responseObject->getAdditionalOptions())) {
255
+ foreach ($responseObject->getAdditionalOptions() as $option => $value) {
256
+ $config[$option] = $value;
257
+ }
258
+ }
259
+
260
+ return Mage::helper('core')->jsonEncode($config);
261
+ }
262
+
263
+
264
+
265
+
266
+
267
+ }
268
+
269
+ ?>
app/code/community/Musho/Flipdefine/Block/Product/Abstract.php ADDED
@@ -0,0 +1,651 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog Product Abstract Block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ abstract class Musho_Flipdefine_Block_Product_Abstract extends Mage_Core_Block_Template
36
+ {
37
+ /**
38
+ * Price block array
39
+ *
40
+ * @var array
41
+ */
42
+ protected $_priceBlock = array();
43
+
44
+ /**
45
+ * Default price block
46
+ *
47
+ * @var string
48
+ */
49
+ protected $_block = 'catalog/product_price';
50
+
51
+ /**
52
+ * Price template
53
+ *
54
+ * @var string
55
+ */
56
+ protected $_priceBlockDefaultTemplate = 'catalog/product/price.phtml';
57
+
58
+ /**
59
+ * Tier price template
60
+ *
61
+ * @var string
62
+ */
63
+ protected $_tierPriceDefaultTemplate = 'catalog/product/view/tierprices.phtml';
64
+
65
+ /**
66
+ * Price types
67
+ *
68
+ * @var array
69
+ */
70
+ protected $_priceBlockTypes = array();
71
+
72
+ /**
73
+ * Flag which allow/disallow to use link for as low as price
74
+ *
75
+ * @var bool
76
+ */
77
+ protected $_useLinkForAsLowAs = true;
78
+
79
+ /**
80
+ * Review block instance
81
+ *
82
+ * @var null|Mage_Review_Block_Helper
83
+ */
84
+ protected $_reviewsHelperBlock;
85
+
86
+ /**
87
+ * Default product amount per row
88
+ *
89
+ * @var int
90
+ */
91
+ protected $_defaultColumnCount = 3;
92
+
93
+ /**
94
+ * Product amount per row depending on custom page layout of category
95
+ *
96
+ * @var array
97
+ */
98
+ protected $_columnCountLayoutDepend = array();
99
+
100
+ /**
101
+ * Default MAP renderer type
102
+ *
103
+ * @var string
104
+ */
105
+ protected $_mapRenderer = 'msrp';
106
+
107
+ /**
108
+ * Retrieve url for add product to cart
109
+ * Will return product view page URL if product has required options
110
+ *
111
+ * @param Mage_Catalog_Model_Product $product
112
+ * @param array $additional
113
+ * @return string
114
+ */
115
+ public function getAddToCartUrl($product, $additional = array())
116
+ {
117
+ if (!$product->getTypeInstance(true)->hasRequiredOptions($product)) {
118
+ return $this->helper('checkout/cart')->getAddUrl($product, $additional);
119
+ }
120
+ $additional = array_merge(
121
+ $additional,
122
+ array(Mage_Core_Model_Url::FORM_KEY => $this->_getSingletonModel('core/session')->getFormKey())
123
+ );
124
+ if (!isset($additional['_escape'])) {
125
+ $additional['_escape'] = true;
126
+ }
127
+ if (!isset($additional['_query'])) {
128
+ $additional['_query'] = array();
129
+ }
130
+ $additional['_query']['options'] = 'cart';
131
+ return $this->getProductUrl($product, $additional);
132
+ }
133
+
134
+ /**
135
+ * Return model instance
136
+ *
137
+ * @param string $className
138
+ * @param array $arguments
139
+ * @return Mage_Core_Model_Abstract
140
+ */
141
+ protected function _getSingletonModel($className, $arguments = array())
142
+ {
143
+ return Mage::getSingleton($className, $arguments);
144
+ }
145
+
146
+ /**
147
+ * Retrieves url for form submitting:
148
+ * some objects can use setSubmitRouteData() to set route and params for form submitting,
149
+ * otherwise default url will be used
150
+ *
151
+ * @param Mage_Catalog_Model_Product $product
152
+ * @param array $additional
153
+ * @return string
154
+ */
155
+ public function getSubmitUrl($product, $additional = array())
156
+ {
157
+ $submitRouteData = $this->getData('submit_route_data');
158
+ if ($submitRouteData) {
159
+ $route = $submitRouteData['route'];
160
+ $params = isset($submitRouteData['params']) ? $submitRouteData['params'] : array();
161
+ $submitUrl = $this->getUrl($route, array_merge($params, $additional));
162
+ } else {
163
+ $submitUrl = $this->getAddToCartUrl($product, $additional);
164
+ }
165
+ return $submitUrl;
166
+ }
167
+
168
+ /**
169
+ * Return link to Add to Wishlist
170
+ *
171
+ * @param Mage_Catalog_Model_Product $product
172
+ * @return string
173
+ */
174
+ public function getAddToWishlistUrl($product)
175
+ {
176
+ return $this->helper('wishlist')->getAddUrl($product);
177
+ }
178
+
179
+ /**
180
+ * Retrieve Add Product to Compare Products List URL
181
+ *
182
+ * @param Mage_Catalog_Model_Product $product
183
+ * @return string
184
+ */
185
+ public function getAddToCompareUrl($product)
186
+ {
187
+ return $this->helper('catalog/product_compare')->getAddUrl($product);
188
+ }
189
+
190
+ /**
191
+ * Gets minimal sales quantity
192
+ *
193
+ * @param Mage_Catalog_Model_Product $product
194
+ * @return int|null
195
+ */
196
+ public function getMinimalQty($product)
197
+ {
198
+ $stockItem = $product->getStockItem();
199
+ if ($stockItem) {
200
+ return ($stockItem->getMinSaleQty()
201
+ && $stockItem->getMinSaleQty() > 0 ? $stockItem->getMinSaleQty() * 1 : null);
202
+ }
203
+ return null;
204
+ }
205
+
206
+ /**
207
+ * Return price block
208
+ *
209
+ * @param string $productTypeId
210
+ * @return mixed
211
+ */
212
+ protected function _getPriceBlock($productTypeId)
213
+ {
214
+ if (!isset($this->_priceBlock[$productTypeId])) {
215
+ $block = $this->_block;
216
+ if (isset($this->_priceBlockTypes[$productTypeId])) {
217
+ if ($this->_priceBlockTypes[$productTypeId]['block'] != '') {
218
+ $block = $this->_priceBlockTypes[$productTypeId]['block'];
219
+ }
220
+ }
221
+ $this->_priceBlock[$productTypeId] = $this->getLayout()->createBlock($block);
222
+ }
223
+ return $this->_priceBlock[$productTypeId];
224
+ }
225
+
226
+ /**
227
+ * Return Block template
228
+ *
229
+ * @param string $productTypeId
230
+ * @return string
231
+ */
232
+ protected function _getPriceBlockTemplate($productTypeId)
233
+ {
234
+ if (isset($this->_priceBlockTypes[$productTypeId])) {
235
+ if ($this->_priceBlockTypes[$productTypeId]['template'] != '') {
236
+ return $this->_priceBlockTypes[$productTypeId]['template'];
237
+ }
238
+ }
239
+ return $this->_priceBlockDefaultTemplate;
240
+ }
241
+
242
+
243
+ /**
244
+ * Prepares and returns block to render some product type
245
+ *
246
+ * @param string $productType
247
+ * @return Mage_Core_Block_Template
248
+ */
249
+ public function _preparePriceRenderer($productType)
250
+ {
251
+ return $this->_getPriceBlock($productType)
252
+ ->setTemplate($this->_getPriceBlockTemplate($productType))
253
+ ->setUseLinkForAsLowAs($this->_useLinkForAsLowAs);
254
+ }
255
+
256
+ /**
257
+ * Returns product price block html
258
+ *
259
+ * @param Mage_Catalog_Model_Product $product
260
+ * @param boolean $displayMinimalPrice
261
+ * @param string $idSuffix
262
+ * @return string
263
+ */
264
+ public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
265
+ {
266
+ $type_id = $product->getTypeId();
267
+ if (Mage::helper('catalog')->canApplyMsrp($product)) {
268
+ $realPriceHtml = $this->_preparePriceRenderer($type_id)
269
+ ->setProduct($product)
270
+ ->setDisplayMinimalPrice($displayMinimalPrice)
271
+ ->setIdSuffix($idSuffix)
272
+ ->toHtml();
273
+ $product->setAddToCartUrl($this->getAddToCartUrl($product));
274
+ $product->setRealPriceHtml($realPriceHtml);
275
+ $type_id = $this->_mapRenderer;
276
+ }
277
+
278
+ return $this->_preparePriceRenderer($type_id)
279
+ ->setProduct($product)
280
+ ->setDisplayMinimalPrice($displayMinimalPrice)
281
+ ->setIdSuffix($idSuffix)
282
+ ->toHtml();
283
+ }
284
+
285
+ /**
286
+ * Adding customized price template for product type
287
+ *
288
+ * @param string $type
289
+ * @param string $block
290
+ * @param string $template
291
+ */
292
+ public function addPriceBlockType($type, $block = '', $template = '')
293
+ {
294
+ if ($type) {
295
+ $this->_priceBlockTypes[$type] = array(
296
+ 'block' => $block,
297
+ 'template' => $template
298
+ );
299
+ }
300
+ }
301
+
302
+ /**
303
+ * Get product reviews summary
304
+ *
305
+ * @param Mage_Catalog_Model_Product $product
306
+ * @param bool $templateType
307
+ * @param bool $displayIfNoReviews
308
+ * @return string
309
+ */
310
+ public function getReviewsSummaryHtml(Mage_Catalog_Model_Product $product, $templateType = false,
311
+ $displayIfNoReviews = false)
312
+ {
313
+ if ($this->_initReviewsHelperBlock()) {
314
+ return $this->_reviewsHelperBlock->getSummaryHtml($product, $templateType, $displayIfNoReviews);
315
+ }
316
+
317
+ return '';
318
+ }
319
+
320
+ /**
321
+ * Add/replace reviews summary template by type
322
+ *
323
+ * @param string $type
324
+ * @param string $template
325
+ * @return string
326
+ */
327
+ public function addReviewSummaryTemplate($type, $template)
328
+ {
329
+ if ($this->_initReviewsHelperBlock()) {
330
+ $this->_reviewsHelperBlock->addTemplate($type, $template);
331
+ }
332
+
333
+ return '';
334
+ }
335
+
336
+ /**
337
+ * Create reviews summary helper block once
338
+ *
339
+ * @return boolean
340
+ */
341
+ protected function _initReviewsHelperBlock()
342
+ {
343
+ if (!$this->_reviewsHelperBlock) {
344
+ if (!Mage::helper('catalog')->isModuleEnabled('Mage_Review')) {
345
+ return false;
346
+ } else {
347
+ $this->_reviewsHelperBlock = $this->getLayout()->createBlock('review/helper');
348
+ }
349
+ }
350
+
351
+ return true;
352
+ }
353
+
354
+ /**
355
+ * Retrieve currently viewed product object
356
+ *
357
+ * @return Mage_Catalog_Model_Product
358
+ */
359
+ public function getProduct()
360
+ {
361
+ if (!$this->hasData('product')) {
362
+ $this->setData('product', Mage::registry('product'));
363
+ }
364
+ return $this->getData('product');
365
+ }
366
+
367
+ /**
368
+ * Return tier price template
369
+ *
370
+ * @return mixed|string
371
+ */
372
+ public function getTierPriceTemplate()
373
+ {
374
+ if (!$this->hasData('tier_price_template')) {
375
+ return $this->_tierPriceDefaultTemplate;
376
+ }
377
+
378
+ return $this->getData('tier_price_template');
379
+ }
380
+ /**
381
+ * Returns product tier price block html
382
+ *
383
+ * @param Mage_Catalog_Model_Product $product
384
+ * @return string
385
+ */
386
+ public function getTierPriceHtml($product = null)
387
+ {
388
+ if (is_null($product)) {
389
+ $product = $this->getProduct();
390
+ }
391
+ return $this->_getPriceBlock($product->getTypeId())
392
+ ->setTemplate($this->getTierPriceTemplate())
393
+ ->setProduct($product)
394
+ ->setInGrouped($this->getProduct()->isGrouped())
395
+ ->toHtml();
396
+ }
397
+
398
+ /**
399
+ * Get tier prices (formatted)
400
+ *
401
+ * @param Mage_Catalog_Model_Product $product
402
+ * @return array
403
+ */
404
+ public function getTierPrices($product = null)
405
+ {
406
+ if (is_null($product)) {
407
+ $product = $this->getProduct();
408
+ }
409
+ $prices = $product->getFormatedTierPrice();
410
+
411
+ $res = array();
412
+ if (is_array($prices)) {
413
+ foreach ($prices as $price) {
414
+ $price['price_qty'] = $price['price_qty'] * 1;
415
+
416
+ $_productPrice = $product->getPrice();
417
+ if ($_productPrice != $product->getFinalPrice()) {
418
+ $_productPrice = $product->getFinalPrice();
419
+ }
420
+
421
+ // Group price must be used for percent calculation if it is lower
422
+ $groupPrice = $product->getGroupPrice();
423
+ if ($_productPrice > $groupPrice) {
424
+ $_productPrice = $groupPrice;
425
+ }
426
+
427
+ if ($price['price'] < $_productPrice) {
428
+ $price['savePercent'] = ceil(100 - ((100 / $_productPrice) * $price['price']));
429
+
430
+ $tierPrice = Mage::app()->getStore()->convertPrice(
431
+ Mage::helper('tax')->getPrice($product, $price['website_price'])
432
+ );
433
+ $price['formated_price'] = Mage::app()->getStore()->formatPrice($tierPrice);
434
+ $price['formated_price_incl_tax'] = Mage::app()->getStore()->formatPrice(
435
+ Mage::app()->getStore()->convertPrice(
436
+ Mage::helper('tax')->getPrice($product, $price['website_price'], true)
437
+ )
438
+ );
439
+
440
+ if (Mage::helper('catalog')->canApplyMsrp($product)) {
441
+ $oldPrice = $product->getFinalPrice();
442
+ $product->setPriceCalculation(false);
443
+ $product->setPrice($tierPrice);
444
+ $product->setFinalPrice($tierPrice);
445
+
446
+ $this->getPriceHtml($product);
447
+ $product->setPriceCalculation(true);
448
+
449
+ $price['real_price_html'] = $product->getRealPriceHtml();
450
+ $product->setFinalPrice($oldPrice);
451
+ }
452
+
453
+ $res[] = $price;
454
+ }
455
+ }
456
+ }
457
+
458
+ return $res;
459
+ }
460
+
461
+ /**
462
+ * Add all attributes and apply pricing logic to products collection
463
+ * to get correct values in different products lists.
464
+ * E.g. crosssells, upsells, new products, recently viewed
465
+ *
466
+ * @param Mage_Catalog_Model_Resource_Product_Collection $collection
467
+ * @return Mage_Catalog_Model_Resource_Product_Collection
468
+ */
469
+ protected function _addProductAttributesAndPrices(Mage_Catalog_Model_Resource_Product_Collection $collection)
470
+ {
471
+ return $collection
472
+ ->addMinimalPrice()
473
+ ->addFinalPrice()
474
+ ->addTaxPercents()
475
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
476
+ ->addUrlRewrite();
477
+ }
478
+
479
+ /**
480
+ * Retrieve given media attribute label or product name if no label
481
+ *
482
+ * @param Mage_Catalog_Model_Product $product
483
+ * @param string $mediaAttributeCode
484
+ *
485
+ * @return string
486
+ */
487
+ public function getImageLabel($product = null, $mediaAttributeCode = 'image')
488
+ {
489
+ if (is_null($product)) {
490
+ $product = $this->getProduct();
491
+ }
492
+
493
+ $label = $product->getData($mediaAttributeCode . '_label');
494
+ if (empty($label)) {
495
+ $label = $product->getName();
496
+ }
497
+
498
+ return $label;
499
+ }
500
+
501
+ /**
502
+ * Retrieve Product URL using UrlDataObject
503
+ *
504
+ * @param Mage_Catalog_Model_Product $product
505
+ * @param array $additional the route params
506
+ * @return string
507
+ */
508
+ public function getProductUrl($product, $additional = array())
509
+ {
510
+ if ($this->hasProductUrl($product)) {
511
+ if (!isset($additional['_escape'])) {
512
+ $additional['_escape'] = true;
513
+ }
514
+ return $product->getUrlModel()->getUrl($product, $additional);
515
+ }
516
+ return '#';
517
+ }
518
+
519
+ /**
520
+ * Check Product has URL
521
+ *
522
+ * @param Mage_Catalog_Model_Product $product
523
+ * @return bool
524
+ *
525
+ */
526
+ public function hasProductUrl($product)
527
+ {
528
+ if ($product->getVisibleInSiteVisibilities()) {
529
+ return true;
530
+ }
531
+ return false;
532
+ }
533
+
534
+ /**
535
+ * Retrieve product amount per row
536
+ *
537
+ * @return int
538
+ */
539
+ public function getColumnCount()
540
+ {
541
+ if (!$this->_getData('column_count')) {
542
+ $pageLayout = $this->getPageLayout();
543
+ if ($pageLayout && $this->getColumnCountLayoutDepend($pageLayout->getCode())) {
544
+ $this->setData(
545
+ 'column_count',
546
+ $this->getColumnCountLayoutDepend($pageLayout->getCode())
547
+ );
548
+ } else {
549
+ $this->setData('column_count', $this->_defaultColumnCount);
550
+ }
551
+ }
552
+
553
+ return (int) $this->_getData('column_count');
554
+ }
555
+
556
+ /**
557
+ * Add row size depends on page layout
558
+ *
559
+ * @param string $pageLayout
560
+ * @param int $columnCount
561
+ * @return Mage_Catalog_Block_Product_List
562
+ */
563
+ public function addColumnCountLayoutDepend($pageLayout, $columnCount)
564
+ {
565
+ $this->_columnCountLayoutDepend[$pageLayout] = $columnCount;
566
+ return $this;
567
+ }
568
+
569
+ /**
570
+ * Remove row size depends on page layout
571
+ *
572
+ * @param string $pageLayout
573
+ * @return Mage_Catalog_Block_Product_List
574
+ */
575
+ public function removeColumnCountLayoutDepend($pageLayout)
576
+ {
577
+ if (isset($this->_columnCountLayoutDepend[$pageLayout])) {
578
+ unset($this->_columnCountLayoutDepend[$pageLayout]);
579
+ }
580
+
581
+ return $this;
582
+ }
583
+
584
+ /**
585
+ * Retrieve row size depends on page layout
586
+ *
587
+ * @param string $pageLayout
588
+ * @return int|boolean
589
+ */
590
+ public function getColumnCountLayoutDepend($pageLayout)
591
+ {
592
+ if (isset($this->_columnCountLayoutDepend[$pageLayout])) {
593
+ return $this->_columnCountLayoutDepend[$pageLayout];
594
+ }
595
+
596
+ return false;
597
+ }
598
+
599
+ /**
600
+ * Retrieve current page layout
601
+ *
602
+ * @return Varien_Object
603
+ */
604
+ public function getPageLayout()
605
+ {
606
+ return $this->helper('page/layout')->getCurrentPageLayout();
607
+ }
608
+
609
+ /**
610
+ * Check whether the price can be shown for the specified product
611
+ *
612
+ * @param Mage_Catalog_Model_Product $product
613
+ * @return bool
614
+ */
615
+ public function getCanShowProductPrice($product)
616
+ {
617
+ return $product->getCanShowPrice() !== false;
618
+ }
619
+
620
+ /**
621
+ * Get if it is necessary to show product stock status
622
+ *
623
+ * @return bool
624
+ */
625
+ public function displayProductStockStatus()
626
+ {
627
+ $statusInfo = new Varien_Object(array('display_status' => true));
628
+ Mage::dispatchEvent('catalog_block_product_status_display', array('status' => $statusInfo));
629
+ return (boolean)$statusInfo->getDisplayStatus();
630
+ }
631
+
632
+ /**
633
+ * If exists price template block, retrieve price blocks from it
634
+ *
635
+ * @return Mage_Catalog_Block_Product_Abstract
636
+ */
637
+ protected function _prepareLayout()
638
+ {
639
+ parent::_prepareLayout();
640
+
641
+ /* @var $block Mage_Catalog_Block_Product_Price_Template */
642
+ $block = $this->getLayout()->getBlock('catalog_product_price_template');
643
+ if ($block) {
644
+ foreach ($block->getPriceBlockTypes() as $type => $priceBlock) {
645
+ $this->addPriceBlockType($type, $priceBlock['block'], $priceBlock['template']);
646
+ }
647
+ }
648
+
649
+ return $this;
650
+ }
651
+ }
app/code/community/Musho/Flipdefine/Block/Product/Compare/Abstract.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog Compare Products Abstract Block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ abstract class Mage_Catalog_Block_Product_Compare_Abstract extends Mage_Catalog_Block_Product_Abstract
36
+ {
37
+ /**
38
+ * Retrieve Product Compare Helper
39
+ *
40
+ * @return Mage_Catalog_Helper_Product_Compare
41
+ */
42
+ protected function _getHelper()
43
+ {
44
+ return Mage::helper('catalog/product_compare');
45
+ }
46
+
47
+ /**
48
+ * Retrieve Remove Item from Compare List URL
49
+ *
50
+ * @param Mage_Catalog_Model_Product $item
51
+ * @return string
52
+ */
53
+ public function getRemoveUrl($item)
54
+ {
55
+ return $this->_getHelper()->getRemoveUrl($item);
56
+ }
57
+ }
app/code/community/Musho/Flipdefine/Block/Product/Compare/List.php ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog products compare block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_Compare_List extends Mage_Catalog_Block_Product_Compare_Abstract
36
+ {
37
+ /**
38
+ * Product Compare items collection
39
+ *
40
+ * @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
41
+ */
42
+ protected $_items;
43
+
44
+ /**
45
+ * Compare Products comparable attributes cache
46
+ *
47
+ * @var array
48
+ */
49
+ protected $_attributes;
50
+
51
+ /**
52
+ * Flag which allow/disallow to use link for as low as price
53
+ *
54
+ * @var bool
55
+ */
56
+ protected $_useLinkForAsLowAs = false;
57
+
58
+ /**
59
+ * Customer id
60
+ *
61
+ * @var null|int
62
+ */
63
+ protected $_customerId = null;
64
+
65
+ /**
66
+ * Default MAP renderer type
67
+ *
68
+ * @var string
69
+ */
70
+ protected $_mapRenderer = 'msrp_noform';
71
+
72
+ /**
73
+ * Retrieve url for adding product to wishlist with params
74
+ *
75
+ * @param Mage_Catalog_Model_Product $product
76
+ * @return string
77
+ */
78
+ public function getAddToWishlistUrl($product)
79
+ {
80
+ $continueUrl = Mage::helper('core')->urlEncode($this->getUrl('customer/account'));
81
+ $urlParamName = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
82
+
83
+ $params = array(
84
+ $urlParamName => $continueUrl
85
+ );
86
+
87
+ return $this->helper('wishlist')->getAddUrlWithParams($product, $params);
88
+ }
89
+
90
+ /**
91
+ * Preparing layout
92
+ *
93
+ * @return Mage_Catalog_Block_Product_Compare_List
94
+ */
95
+ protected function _prepareLayout()
96
+ {
97
+ $headBlock = $this->getLayout()->getBlock('head');
98
+ if ($headBlock) {
99
+ $headBlock->setTitle(Mage::helper('catalog')->__('Products Comparison List') . ' - ' . $headBlock->getDefaultTitle());
100
+ }
101
+ return parent::_prepareLayout();
102
+ }
103
+
104
+ /**
105
+ * Retrieve Product Compare items collection
106
+ *
107
+ * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
108
+ */
109
+ public function getItems()
110
+ {
111
+ if (is_null($this->_items)) {
112
+ Mage::helper('catalog/product_compare')->setAllowUsedFlat(false);
113
+
114
+ $this->_items = Mage::getResourceModel('catalog/product_compare_item_collection')
115
+ ->useProductItem(true)
116
+ ->setStoreId(Mage::app()->getStore()->getId());
117
+
118
+ if (Mage::getSingleton('customer/session')->isLoggedIn()) {
119
+ $this->_items->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId());
120
+ } elseif ($this->_customerId) {
121
+ $this->_items->setCustomerId($this->_customerId);
122
+ } else {
123
+ $this->_items->setVisitorId(Mage::getSingleton('log/visitor')->getId());
124
+ }
125
+
126
+ $this->_items
127
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
128
+ ->loadComparableAttributes()
129
+ ->addMinimalPrice()
130
+ ->addTaxPercents();
131
+
132
+ Mage::getSingleton('catalog/product_visibility')
133
+ ->addVisibleInSiteFilterToCollection($this->_items);
134
+ }
135
+
136
+ return $this->_items;
137
+ }
138
+
139
+ /**
140
+ * Retrieve Product Compare Attributes
141
+ *
142
+ * @return array
143
+ */
144
+ public function getAttributes()
145
+ {
146
+ if (is_null($this->_attributes)) {
147
+ $this->_attributes = $this->getItems()->getComparableAttributes();
148
+ }
149
+
150
+ return $this->_attributes;
151
+ }
152
+
153
+ /**
154
+ * Retrieve Product Attribute Value
155
+ *
156
+ * @param Mage_Catalog_Model_Product $product
157
+ * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
158
+ * @return string
159
+ */
160
+ public function getProductAttributeValue($product, $attribute)
161
+ {
162
+ if (!$product->hasData($attribute->getAttributeCode())) {
163
+ return Mage::helper('catalog')->__('N/A');
164
+ }
165
+
166
+ if ($attribute->getSourceModel()
167
+ || in_array($attribute->getFrontendInput(), array('select','boolean','multiselect'))
168
+ ) {
169
+ //$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode()));
170
+ $value = $attribute->getFrontend()->getValue($product);
171
+ } else {
172
+ $value = $product->getData($attribute->getAttributeCode());
173
+ }
174
+ return ((string)$value == '') ? Mage::helper('catalog')->__('No') : $value;
175
+ }
176
+
177
+ /**
178
+ * Retrieve Print URL
179
+ *
180
+ * @return string
181
+ */
182
+ public function getPrintUrl()
183
+ {
184
+ return $this->getUrl('*/*/*', array('_current'=>true, 'print'=>1));
185
+ }
186
+
187
+ /**
188
+ * Setter for customer id
189
+ *
190
+ * @param int $id
191
+ * @return Mage_Catalog_Block_Product_Compare_List
192
+ */
193
+ public function setCustomerId($id)
194
+ {
195
+ $this->_customerId = $id;
196
+ return $this;
197
+ }
198
+ }
app/code/community/Musho/Flipdefine/Block/Product/Compare/Sidebar.php ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog Comapare Products Sidebar Block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_Compare_Sidebar extends Mage_Catalog_Block_Product_Compare_Abstract
36
+ {
37
+ /**
38
+ * Compare Products Collection
39
+ *
40
+ * @var null|Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
41
+ */
42
+ protected $_itemsCollection = null;
43
+
44
+ /**
45
+ * Initialize block
46
+ *
47
+ */
48
+ protected function _construct()
49
+ {
50
+ $this->setId('compare');
51
+ }
52
+
53
+ /**
54
+ * Retrieve Compare Products Collection
55
+ *
56
+ * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection
57
+ */
58
+ public function getItems()
59
+ {
60
+ if ($this->_itemsCollection) {
61
+ return $this->_itemsCollection;
62
+ }
63
+ return $this->_getHelper()->getItemCollection();
64
+ }
65
+
66
+ /**
67
+ * Set Compare Products Collection
68
+ *
69
+ * @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Compare_Item_Collection $collection
70
+ * @return Mage_Catalog_Block_Product_Compare_Sidebar
71
+ */
72
+ public function setItems($collection)
73
+ {
74
+ $this->_itemsCollection = $collection;
75
+ return $this;
76
+ }
77
+
78
+ /**
79
+ * Retrieve compare product helper
80
+ *
81
+ * @return Mage_Catalog_Helper_Product_Compare
82
+ */
83
+ public function getCompareProductHelper()
84
+ {
85
+ return $this->_getHelper();
86
+ }
87
+
88
+ /**
89
+ * Retrieve Clean Compared Items URL
90
+ *
91
+ * @return string
92
+ */
93
+ public function getClearUrl()
94
+ {
95
+ return $this->_getHelper()->getClearListUrl();
96
+ }
97
+
98
+ /**
99
+ * Retrieve Full Compare page URL
100
+ *
101
+ * @return string
102
+ */
103
+ public function getCompareUrl()
104
+ {
105
+ return $this->_getHelper()->getListUrl();
106
+ }
107
+
108
+ /**
109
+ * Retrieve block cache tags
110
+ *
111
+ * @return array
112
+ */
113
+ public function getCacheTags()
114
+ {
115
+ $compareItem = Mage::getModel('catalog/product_compare_item');
116
+ foreach ($this->getItems() as $product) {
117
+ $this->addModelTags($product);
118
+ $this->addModelTags(
119
+ $compareItem->setId($product->getCatalogCompareItemId())
120
+ );
121
+ }
122
+ return parent::getCacheTags();
123
+ }
124
+ }
app/code/community/Musho/Flipdefine/Block/Product/Gallery.php ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Product gallery
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Musho_Flipdefine_Block_Product_Gallery extends Mage_Core_Block_Template
35
+ {
36
+ protected function _prepareLayout()
37
+ {
38
+ if ($headBlock = $this->getLayout()->getBlock('head')) {
39
+ $headBlock->setTitle($this->getProduct()->getMetaTitle());
40
+ }
41
+ return parent::_prepareLayout();
42
+ }
43
+ public function getProduct()
44
+ {
45
+ return Mage::registry('product');
46
+ }
47
+
48
+ public function getGalleryCollection()
49
+ {
50
+ return $this->getProduct()->getMediaGalleryImages();
51
+ }
52
+
53
+ public function getCurrentImage()
54
+ {
55
+ $imageId = $this->getRequest()->getParam('image');
56
+ $image = null;
57
+ if ($imageId) {
58
+ $image = $this->getGalleryCollection()->getItemById($imageId);
59
+ }
60
+
61
+ if (!$image) {
62
+ $image = $this->getGalleryCollection()->getFirstItem();
63
+ }
64
+ return $image;
65
+ }
66
+
67
+ public function getImageUrl()
68
+ {
69
+ return $this->getCurrentImage()->getUrl();
70
+ }
71
+
72
+ public function getImageFile()
73
+ {
74
+ return $this->getCurrentImage()->getFile();
75
+ }
76
+
77
+ /**
78
+ * Retrieve image width
79
+ *
80
+ * @return bool|int
81
+ */
82
+ public function getImageWidth()
83
+ {
84
+ $file = $this->getCurrentImage()->getPath();
85
+ if (file_exists($file)) {
86
+ $size = getimagesize($file);
87
+ if (isset($size[0])) {
88
+ if ($size[0] > 600) {
89
+ return 600;
90
+ } else {
91
+ return $size[0];
92
+ }
93
+ }
94
+ }
95
+
96
+ return false;
97
+ }
98
+
99
+ public function getPreviusImage()
100
+ {
101
+ $current = $this->getCurrentImage();
102
+ if (!$current) {
103
+ return false;
104
+ }
105
+ $previus = false;
106
+ foreach ($this->getGalleryCollection() as $image) {
107
+ if ($image->getValueId() == $current->getValueId()) {
108
+ return $previus;
109
+ }
110
+ $previus = $image;
111
+ }
112
+ return $previus;
113
+ }
114
+
115
+ public function getNextImage()
116
+ {
117
+ $current = $this->getCurrentImage();
118
+ if (!$current) {
119
+ return false;
120
+ }
121
+
122
+ $next = false;
123
+ $currentFind = false;
124
+ foreach ($this->getGalleryCollection() as $image) {
125
+ if ($currentFind) {
126
+ return $image;
127
+ }
128
+ if ($image->getValueId() == $current->getValueId()) {
129
+ $currentFind = true;
130
+ }
131
+ }
132
+ return $next;
133
+ }
134
+
135
+ public function getPreviusImageUrl()
136
+ {
137
+ if ($image = $this->getPreviusImage()) {
138
+ return $this->getUrl('*/*/*', array('_current'=>true, 'image'=>$image->getValueId()));
139
+ }
140
+ return false;
141
+ }
142
+
143
+ public function getNextImageUrl()
144
+ {
145
+ if ($image = $this->getNextImage()) {
146
+ return $this->getUrl('*/*/*', array('_current'=>true, 'image'=>$image->getValueId()));
147
+ }
148
+ return false;
149
+ }
150
+ }
app/code/community/Musho/Flipdefine/Block/Product/List.php ADDED
@@ -0,0 +1,271 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product list
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_List extends Mage_Catalog_Block_Product_Abstract
36
+ {
37
+ /**
38
+ * Default toolbar block name
39
+ *
40
+ * @var string
41
+ */
42
+ protected $_defaultToolbarBlock = 'catalog/product_list_toolbar';
43
+
44
+ /**
45
+ * Product Collection
46
+ *
47
+ * @var Mage_Eav_Model_Entity_Collection_Abstract
48
+ */
49
+ protected $_productCollection;
50
+
51
+ /**
52
+ * Retrieve loaded category collection
53
+ *
54
+ * @return Mage_Eav_Model_Entity_Collection_Abstract
55
+ */
56
+ protected function _getProductCollection()
57
+ {
58
+ if (is_null($this->_productCollection)) {
59
+ $layer = $this->getLayer();
60
+ /* @var $layer Mage_Catalog_Model_Layer */
61
+ if ($this->getShowRootCategory()) {
62
+ $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
63
+ }
64
+
65
+ // if this is a product view page
66
+ if (Mage::registry('product')) {
67
+ // get collection of categories this product is associated with
68
+ $categories = Mage::registry('product')->getCategoryCollection()
69
+ ->setPage(1, 1)
70
+ ->load();
71
+ // if the product is associated with any category
72
+ if ($categories->count()) {
73
+ // show products from this category
74
+ $this->setCategoryId(current($categories->getIterator()));
75
+ }
76
+ }
77
+
78
+ $origCategory = null;
79
+ if ($this->getCategoryId()) {
80
+ $category = Mage::getModel('catalog/category')->load($this->getCategoryId());
81
+ if ($category->getId()) {
82
+ $origCategory = $layer->getCurrentCategory();
83
+ $layer->setCurrentCategory($category);
84
+ $this->addModelTags($category);
85
+ }
86
+ }
87
+ $this->_productCollection = $layer->getProductCollection();
88
+
89
+ $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());
90
+
91
+ if ($origCategory) {
92
+ $layer->setCurrentCategory($origCategory);
93
+ }
94
+ }
95
+
96
+ return $this->_productCollection;
97
+ }
98
+
99
+ /**
100
+ * Get catalog layer model
101
+ *
102
+ * @return Mage_Catalog_Model_Layer
103
+ */
104
+ public function getLayer()
105
+ {
106
+ $layer = Mage::registry('current_layer');
107
+ if ($layer) {
108
+ return $layer;
109
+ }
110
+ return Mage::getSingleton('catalog/layer');
111
+ }
112
+
113
+ /**
114
+ * Retrieve loaded category collection
115
+ *
116
+ * @return Mage_Eav_Model_Entity_Collection_Abstract
117
+ */
118
+ public function getLoadedProductCollection()
119
+ {
120
+ return $this->_getProductCollection();
121
+ }
122
+
123
+ /**
124
+ * Retrieve current view mode
125
+ *
126
+ * @return string
127
+ */
128
+ public function getMode()
129
+ {
130
+ return $this->getChild('toolbar')->getCurrentMode();
131
+ }
132
+
133
+ /**
134
+ * Need use as _prepareLayout - but problem in declaring collection from
135
+ * another block (was problem with search result)
136
+ */
137
+ protected function _beforeToHtml()
138
+ {
139
+ $toolbar = $this->getToolbarBlock();
140
+
141
+ // called prepare sortable parameters
142
+ $collection = $this->_getProductCollection();
143
+
144
+ // use sortable parameters
145
+ if ($orders = $this->getAvailableOrders()) {
146
+ $toolbar->setAvailableOrders($orders);
147
+ }
148
+ if ($sort = $this->getSortBy()) {
149
+ $toolbar->setDefaultOrder($sort);
150
+ }
151
+ if ($dir = $this->getDefaultDirection()) {
152
+ $toolbar->setDefaultDirection($dir);
153
+ }
154
+ if ($modes = $this->getModes()) {
155
+ $toolbar->setModes($modes);
156
+ }
157
+
158
+ // set collection to toolbar and apply sort
159
+ $toolbar->setCollection($collection);
160
+
161
+ $this->setChild('toolbar', $toolbar);
162
+ Mage::dispatchEvent('catalog_block_product_list_collection', array(
163
+ 'collection' => $this->_getProductCollection()
164
+ ));
165
+
166
+ $this->_getProductCollection()->load();
167
+
168
+ return parent::_beforeToHtml();
169
+ }
170
+
171
+ /**
172
+ * Retrieve Toolbar block
173
+ *
174
+ * @return Mage_Catalog_Block_Product_List_Toolbar
175
+ */
176
+ public function getToolbarBlock()
177
+ {
178
+ if ($blockName = $this->getToolbarBlockName()) {
179
+ if ($block = $this->getLayout()->getBlock($blockName)) {
180
+ return $block;
181
+ }
182
+ }
183
+ $block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
184
+ return $block;
185
+ }
186
+
187
+ /**
188
+ * Retrieve additional blocks html
189
+ *
190
+ * @return string
191
+ */
192
+ public function getAdditionalHtml()
193
+ {
194
+ return $this->getChildHtml('additional');
195
+ }
196
+
197
+ /**
198
+ * Retrieve list toolbar HTML
199
+ *
200
+ * @return string
201
+ */
202
+ public function getToolbarHtml()
203
+ {
204
+ return $this->getChildHtml('toolbar');
205
+ }
206
+
207
+ public function setCollection($collection)
208
+ {
209
+ $this->_productCollection = $collection;
210
+ return $this;
211
+ }
212
+
213
+ public function addAttribute($code)
214
+ {
215
+ $this->_getProductCollection()->addAttributeToSelect($code);
216
+ return $this;
217
+ }
218
+
219
+ public function getPriceBlockTemplate()
220
+ {
221
+ return $this->_getData('price_block_template');
222
+ }
223
+
224
+ /**
225
+ * Retrieve Catalog Config object
226
+ *
227
+ * @return Mage_Catalog_Model_Config
228
+ */
229
+ protected function _getConfig()
230
+ {
231
+ return Mage::getSingleton('catalog/config');
232
+ }
233
+
234
+ /**
235
+ * Prepare Sort By fields from Category Data
236
+ *
237
+ * @param Mage_Catalog_Model_Category $category
238
+ * @return Mage_Catalog_Block_Product_List
239
+ */
240
+ public function prepareSortableFieldsByCategory($category) {
241
+ if (!$this->getAvailableOrders()) {
242
+ $this->setAvailableOrders($category->getAvailableSortByOptions());
243
+ }
244
+ $availableOrders = $this->getAvailableOrders();
245
+ if (!$this->getSortBy()) {
246
+ if ($categorySortBy = $category->getDefaultSortBy()) {
247
+ if (!$availableOrders) {
248
+ $availableOrders = $this->_getConfig()->getAttributeUsedForSortByArray();
249
+ }
250
+ if (isset($availableOrders[$categorySortBy])) {
251
+ $this->setSortBy($categorySortBy);
252
+ }
253
+ }
254
+ }
255
+
256
+ return $this;
257
+ }
258
+
259
+ /**
260
+ * Retrieve block cache tags based on product collection
261
+ *
262
+ * @return array
263
+ */
264
+ public function getCacheTags()
265
+ {
266
+ return array_merge(
267
+ parent::getCacheTags(),
268
+ $this->getItemsTags($this->_getProductCollection())
269
+ );
270
+ }
271
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Crosssell.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog product related items block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+
36
+ class Musho_Flipdefine_Block_Product_List_Crosssell extends Mage_Catalog_Block_Product_Abstract
37
+ {
38
+ /**
39
+ * Default MAP renderer type
40
+ *
41
+ * @var string
42
+ */
43
+ protected $_mapRenderer = 'msrp_item';
44
+
45
+ /**
46
+ * Crosssell item collection
47
+ *
48
+ * @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
49
+ */
50
+ protected $_itemCollection;
51
+
52
+ /**
53
+ * Prepare crosssell items data
54
+ *
55
+ * @return Mage_Catalog_Block_Product_List_Crosssell
56
+ */
57
+ protected function _prepareData()
58
+ {
59
+ $product = Mage::registry('product');
60
+ /* @var $product Mage_Catalog_Model_Product */
61
+
62
+ $this->_itemCollection = $product->getCrossSellProductCollection()
63
+ ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
64
+ ->setPositionOrder()
65
+ ->addStoreFilter();
66
+
67
+ // Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
68
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
69
+
70
+ $this->_itemCollection->load();
71
+
72
+ foreach ($this->_itemCollection as $product) {
73
+ $product->setDoNotUseCategoryId(true);
74
+ }
75
+
76
+ return $this;
77
+ }
78
+
79
+ /**
80
+ * Before rendering html process
81
+ * Prepare items collection
82
+ *
83
+ * @return Mage_Catalog_Block_Product_List_Crosssell
84
+ */
85
+ protected function _beforeToHtml()
86
+ {
87
+ $this->_prepareData();
88
+ return parent::_beforeToHtml();
89
+ }
90
+
91
+ /**
92
+ * Retrieve crosssell items collection
93
+ *
94
+ * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
95
+ */
96
+ public function getItems()
97
+ {
98
+ return $this->_itemCollection;
99
+ }
100
+
101
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Promotion.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+ class Musho_Flipdefine_Block_Product_List_Promotion extends Mage_Catalog_Block_Product_List
27
+ {
28
+ protected function _getProductCollection()
29
+ {
30
+ if (is_null($this->_productCollection)) {
31
+ $collection = Mage::getResourceModel('catalog/product_collection');
32
+ Mage::getModel('catalog/layer')->prepareProductCollection($collection);
33
+ // your custom filter
34
+ $collection->addAttributeToFilter('promotion', 1)
35
+ ->addStoreFilter();
36
+
37
+ $this->_productCollection = $collection;
38
+ }
39
+ return $this->_productCollection;
40
+ }
41
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Random.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Catalog product random items block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+
35
+ class Musho_Flipdefine_Block_Product_List_Random extends Mage_Catalog_Block_Product_List
36
+ {
37
+ protected function _getProductCollection()
38
+ {
39
+ if (is_null($this->_productCollection)) {
40
+ $collection = Mage::getResourceModel('catalog/product_collection');
41
+ Mage::getModel('catalog/layer')->prepareProductCollection($collection);
42
+ $collection->getSelect()->order('rand()');
43
+ $collection->addStoreFilter();
44
+ $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 0;
45
+ $collection->setPage(1, $numProducts);
46
+
47
+ $this->_productCollection = $collection;
48
+ }
49
+ return $this->_productCollection;
50
+ }
51
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Related.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog product related items block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_List_Related extends Mage_Catalog_Block_Product_Abstract
36
+ {
37
+ /**
38
+ * Default MAP renderer type
39
+ *
40
+ * @var string
41
+ */
42
+ protected $_mapRenderer = 'msrp_noform';
43
+
44
+ protected $_itemCollection;
45
+
46
+ protected function _prepareData()
47
+ {
48
+ $product = Mage::registry('product');
49
+ /* @var $product Mage_Catalog_Model_Product */
50
+
51
+ $this->_itemCollection = $product->getRelatedProductCollection()
52
+ ->addAttributeToSelect('required_options')
53
+ ->setPositionOrder()
54
+ ->addStoreFilter()
55
+ ;
56
+
57
+ if (Mage::helper('catalog')->isModuleEnabled('Mage_Checkout')) {
58
+ Mage::getResourceSingleton('checkout/cart')->addExcludeProductFilter($this->_itemCollection,
59
+ Mage::getSingleton('checkout/session')->getQuoteId()
60
+ );
61
+ $this->_addProductAttributesAndPrices($this->_itemCollection);
62
+ }
63
+ // Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
64
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
65
+
66
+ $this->_itemCollection->load();
67
+
68
+ foreach ($this->_itemCollection as $product) {
69
+ $product->setDoNotUseCategoryId(true);
70
+ }
71
+
72
+ return $this;
73
+ }
74
+
75
+ protected function _beforeToHtml()
76
+ {
77
+ $this->_prepareData();
78
+ return parent::_beforeToHtml();
79
+ }
80
+
81
+ public function getItems()
82
+ {
83
+ return $this->_itemCollection;
84
+ }
85
+
86
+ /**
87
+ * Get tags array for saving cache
88
+ *
89
+ * @return array
90
+ */
91
+ public function getCacheTags()
92
+ {
93
+ return array_merge(parent::getCacheTags(), $this->getItemsTags($this->getItems()));
94
+ }
95
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Toolbar.php ADDED
@@ -0,0 +1,830 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product list toolbar
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_List_Toolbar extends Mage_Core_Block_Template
36
+ {
37
+ /**
38
+ * Products collection
39
+ *
40
+ * @var Mage_Core_Model_Mysql4_Collection_Abstract
41
+ */
42
+ protected $_collection = null;
43
+
44
+ /**
45
+ * GET parameter page variable
46
+ *
47
+ * @var string
48
+ */
49
+ protected $_pageVarName = 'p';
50
+
51
+ /**
52
+ * GET parameter order variable
53
+ *
54
+ * @var string
55
+ */
56
+ protected $_orderVarName = 'order';
57
+
58
+ /**
59
+ * GET parameter direction variable
60
+ *
61
+ * @var string
62
+ */
63
+ protected $_directionVarName = 'dir';
64
+
65
+ /**
66
+ * GET parameter mode variable
67
+ *
68
+ * @var string
69
+ */
70
+ protected $_modeVarName = 'mode';
71
+
72
+ /**
73
+ * GET parameter limit variable
74
+ *
75
+ * @var string
76
+ */
77
+ protected $_limitVarName = 'limit';
78
+
79
+ /**
80
+ * List of available order fields
81
+ *
82
+ * @var array
83
+ */
84
+ protected $_availableOrder = array();
85
+
86
+ /**
87
+ * List of available view types
88
+ *
89
+ * @var string
90
+ */
91
+ protected $_availableMode = array();
92
+
93
+ /**
94
+ * Is enable View switcher
95
+ *
96
+ * @var bool
97
+ */
98
+ protected $_enableViewSwitcher = true;
99
+
100
+ /**
101
+ * Is Expanded
102
+ *
103
+ * @var bool
104
+ */
105
+ protected $_isExpanded = true;
106
+
107
+ /**
108
+ * Default Order field
109
+ *
110
+ * @var string
111
+ */
112
+ protected $_orderField = null;
113
+
114
+ /**
115
+ * Default direction
116
+ *
117
+ * @var string
118
+ */
119
+ protected $_direction = 'asc';
120
+
121
+ /**
122
+ * Default View mode
123
+ *
124
+ * @var string
125
+ */
126
+ protected $_viewMode = null;
127
+
128
+ /**
129
+ * Available page limits for different list modes
130
+ *
131
+ * @var array
132
+ */
133
+ protected $_availableLimit = array();
134
+
135
+ /**
136
+ * Default limits per page
137
+ *
138
+ * @var array
139
+ */
140
+ protected $_defaultAvailableLimit = array(10=>10,20=>20,50=>50);
141
+
142
+ /**
143
+ * @var bool $_paramsMemorizeAllowed
144
+ */
145
+ protected $_paramsMemorizeAllowed = true;
146
+
147
+ /**
148
+ * Retrieve Catalog Config object
149
+ *
150
+ * @return Mage_Catalog_Model_Config
151
+ */
152
+ protected function _getConfig()
153
+ {
154
+ return Mage::getSingleton('catalog/config');
155
+ }
156
+
157
+ /**
158
+ * Init Toolbar
159
+ *
160
+ */
161
+ protected function _construct()
162
+ {
163
+ parent::_construct();
164
+ $this->_orderField = Mage::getStoreConfig(
165
+ Mage_Catalog_Model_Config::XML_PATH_LIST_DEFAULT_SORT_BY
166
+ );
167
+
168
+ $this->_availableOrder = $this->_getConfig()->getAttributeUsedForSortByArray();
169
+
170
+ switch (Mage::getStoreConfig('catalog/frontend/list_mode')) {
171
+ case 'grid':
172
+ $this->_availableMode = array('grid' => $this->__('Grid'));
173
+ break;
174
+
175
+ case 'list':
176
+ $this->_availableMode = array('list' => $this->__('List'));
177
+ break;
178
+
179
+ case 'grid-list':
180
+ $this->_availableMode = array('grid' => $this->__('Grid'), 'list' => $this->__('List'));
181
+ break;
182
+
183
+ case 'list-grid':
184
+ $this->_availableMode = array('list' => $this->__('List'), 'grid' => $this->__('Grid'));
185
+ break;
186
+ }
187
+ $this->setTemplate('catalog/product/list/toolbar.phtml');
188
+ }
189
+
190
+ /**
191
+ * Disable list state params memorizing
192
+ */
193
+ public function disableParamsMemorizing()
194
+ {
195
+ $this->_paramsMemorizeAllowed = false;
196
+ return $this;
197
+ }
198
+
199
+ /**
200
+ * Memorize parameter value for session
201
+ *
202
+ * @param string $param parameter name
203
+ * @param mixed $value parameter value
204
+ * @return Mage_Catalog_Block_Product_List_Toolbar
205
+ */
206
+ protected function _memorizeParam($param, $value)
207
+ {
208
+ $session = Mage::getSingleton('catalog/session');
209
+ if ($this->_paramsMemorizeAllowed && !$session->getParamsMemorizeDisabled()) {
210
+ $session->setData($param, $value);
211
+ }
212
+ return $this;
213
+ }
214
+
215
+ /**
216
+ * Set collection to pager
217
+ *
218
+ * @param Varien_Data_Collection $collection
219
+ * @return Mage_Catalog_Block_Product_List_Toolbar
220
+ */
221
+ public function setCollection($collection)
222
+ {
223
+ $this->_collection = $collection;
224
+
225
+ $this->_collection->setCurPage($this->getCurrentPage());
226
+
227
+ // we need to set pagination only if passed value integer and more that 0
228
+ $limit = (int)$this->getLimit();
229
+ if ($limit) {
230
+ $this->_collection->setPageSize($limit);
231
+ }
232
+ if ($this->getCurrentOrder()) {
233
+ $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
234
+ }
235
+ return $this;
236
+ }
237
+
238
+ /**
239
+ * Return products collection instance
240
+ *
241
+ * @return Mage_Core_Model_Mysql4_Collection_Abstract
242
+ */
243
+ public function getCollection()
244
+ {
245
+ return $this->_collection;
246
+ }
247
+
248
+ /**
249
+ * Getter for $_pageVarName
250
+ *
251
+ * @return string
252
+ */
253
+ public function getPageVarName()
254
+ {
255
+ return $this->_pageVarName;
256
+ }
257
+
258
+ /**
259
+ * Retrieve order field GET var name
260
+ *
261
+ * @return string
262
+ */
263
+ public function getOrderVarName()
264
+ {
265
+ return $this->_orderVarName;
266
+ }
267
+
268
+ /**
269
+ * Retrieve sort direction GET var name
270
+ *
271
+ * @return string
272
+ */
273
+ public function getDirectionVarName()
274
+ {
275
+ return $this->_directionVarName;
276
+ }
277
+
278
+ /**
279
+ * Retrieve view mode GET var name
280
+ *
281
+ * @return string
282
+ */
283
+ public function getModeVarName()
284
+ {
285
+ return $this->_modeVarName;
286
+ }
287
+
288
+ /**
289
+ * Getter for $_limitVarName
290
+ *
291
+ * @return string
292
+ */
293
+ public function getLimitVarName()
294
+ {
295
+ return $this->_limitVarName;
296
+ }
297
+
298
+ /**
299
+ * Return current page from request
300
+ *
301
+ * @return int
302
+ */
303
+ public function getCurrentPage()
304
+ {
305
+ if ($page = (int) $this->getRequest()->getParam($this->getPageVarName())) {
306
+ return $page;
307
+ }
308
+ return 1;
309
+ }
310
+
311
+ /**
312
+ * Get grit products sort order field
313
+ *
314
+ * @return string
315
+ */
316
+ public function getCurrentOrder()
317
+ {
318
+ $order = $this->_getData('_current_grid_order');
319
+ if ($order) {
320
+ return $order;
321
+ }
322
+
323
+ $orders = $this->getAvailableOrders();
324
+ $defaultOrder = $this->_orderField;
325
+
326
+ if (!isset($orders[$defaultOrder])) {
327
+ $keys = array_keys($orders);
328
+ $defaultOrder = $keys[0];
329
+ }
330
+
331
+ $order = $this->getRequest()->getParam($this->getOrderVarName());
332
+ if ($order && isset($orders[$order])) {
333
+ if ($order == $defaultOrder) {
334
+ Mage::getSingleton('catalog/session')->unsSortOrder();
335
+ } else {
336
+ $this->_memorizeParam('sort_order', $order);
337
+ }
338
+ } else {
339
+ $order = Mage::getSingleton('catalog/session')->getSortOrder();
340
+ }
341
+ // validate session value
342
+ if (!$order || !isset($orders[$order])) {
343
+ $order = $defaultOrder;
344
+ }
345
+ $this->setData('_current_grid_order', $order);
346
+ return $order;
347
+ }
348
+
349
+ /**
350
+ * Retrieve current direction
351
+ *
352
+ * @return string
353
+ */
354
+ public function getCurrentDirection()
355
+ {
356
+ $dir = $this->_getData('_current_grid_direction');
357
+ if ($dir) {
358
+ return $dir;
359
+ }
360
+
361
+ $directions = array('asc', 'desc');
362
+ $dir = strtolower($this->getRequest()->getParam($this->getDirectionVarName()));
363
+ if ($dir && in_array($dir, $directions)) {
364
+ if ($dir == $this->_direction) {
365
+ Mage::getSingleton('catalog/session')->unsSortDirection();
366
+ } else {
367
+ $this->_memorizeParam('sort_direction', $dir);
368
+ }
369
+ } else {
370
+ $dir = Mage::getSingleton('catalog/session')->getSortDirection();
371
+ }
372
+ // validate direction
373
+ if (!$dir || !in_array($dir, $directions)) {
374
+ $dir = $this->_direction;
375
+ }
376
+ $this->setData('_current_grid_direction', $dir);
377
+ return $dir;
378
+ }
379
+
380
+ /**
381
+ * Set default Order field
382
+ *
383
+ * @param string $field
384
+ * @return Mage_Catalog_Block_Product_List_Toolbar
385
+ */
386
+ public function setDefaultOrder($field)
387
+ {
388
+ if (isset($this->_availableOrder[$field])) {
389
+ $this->_orderField = $field;
390
+ }
391
+ return $this;
392
+ }
393
+
394
+ /**
395
+ * Set default sort direction
396
+ *
397
+ * @param string $dir
398
+ * @return Mage_Catalog_Block_Product_List_Toolbar
399
+ */
400
+ public function setDefaultDirection($dir)
401
+ {
402
+ if (in_array(strtolower($dir), array('asc', 'desc'))) {
403
+ $this->_direction = strtolower($dir);
404
+ }
405
+ return $this;
406
+ }
407
+
408
+ /**
409
+ * Retrieve available Order fields list
410
+ *
411
+ * @return array
412
+ */
413
+ public function getAvailableOrders()
414
+ {
415
+ return $this->_availableOrder;
416
+ }
417
+
418
+ /**
419
+ * Set Available order fields list
420
+ *
421
+ * @param array $orders
422
+ * @return Mage_Catalog_Block_Product_List_Toolbar
423
+ */
424
+ public function setAvailableOrders($orders)
425
+ {
426
+ $this->_availableOrder = $orders;
427
+ return $this;
428
+ }
429
+
430
+ /**
431
+ * Add order to available orders
432
+ *
433
+ * @param string $order
434
+ * @param string $value
435
+ * @return Mage_Catalog_Block_Product_List_Toolbar
436
+ */
437
+ public function addOrderToAvailableOrders($order, $value)
438
+ {
439
+ $this->_availableOrder[$order] = $value;
440
+ return $this;
441
+ }
442
+ /**
443
+ * Remove order from available orders if exists
444
+ *
445
+ * @param string $order
446
+ * @param Mage_Catalog_Block_Product_List_Toolbar
447
+ */
448
+ public function removeOrderFromAvailableOrders($order)
449
+ {
450
+ if (isset($this->_availableOrder[$order])) {
451
+ unset($this->_availableOrder[$order]);
452
+ }
453
+ return $this;
454
+ }
455
+
456
+ /**
457
+ * Compare defined order field vith current order field
458
+ *
459
+ * @param string $order
460
+ * @return bool
461
+ */
462
+ public function isOrderCurrent($order)
463
+ {
464
+ return ($order == $this->getCurrentOrder());
465
+ }
466
+
467
+ /**
468
+ * Retrieve Pager URL
469
+ *
470
+ * @param string $order
471
+ * @param string $direction
472
+ * @return string
473
+ */
474
+ public function getOrderUrl($order, $direction)
475
+ {
476
+ if (is_null($order)) {
477
+ $order = $this->getCurrentOrder() ? $this->getCurrentOrder() : $this->_availableOrder[0];
478
+ }
479
+ return $this->getPagerUrl(array(
480
+ $this->getOrderVarName()=>$order,
481
+ $this->getDirectionVarName()=>$direction,
482
+ $this->getPageVarName() => null
483
+ ));
484
+ }
485
+
486
+ /**
487
+ * Return current URL with rewrites and additional parameters
488
+ *
489
+ * @param array $params Query parameters
490
+ * @return string
491
+ */
492
+ public function getPagerUrl($params=array())
493
+ {
494
+ $urlParams = array();
495
+ $urlParams['_current'] = true;
496
+ $urlParams['_escape'] = true;
497
+ $urlParams['_use_rewrite'] = true;
498
+ $urlParams['_query'] = $params;
499
+ return $this->getUrl('*/*/*', $urlParams);
500
+ }
501
+
502
+ /**
503
+ * Retrieve current View mode
504
+ *
505
+ * @return string
506
+ */
507
+ public function getCurrentMode()
508
+ {
509
+ $mode = $this->_getData('_current_grid_mode');
510
+ if ($mode) {
511
+ return $mode;
512
+ }
513
+ $modes = array_keys($this->_availableMode);
514
+ $defaultMode = current($modes);
515
+ $mode = $this->getRequest()->getParam($this->getModeVarName());
516
+ if ($mode) {
517
+ if ($mode == $defaultMode) {
518
+ Mage::getSingleton('catalog/session')->unsDisplayMode();
519
+ } else {
520
+ $this->_memorizeParam('display_mode', $mode);
521
+ }
522
+ } else {
523
+ $mode = Mage::getSingleton('catalog/session')->getDisplayMode();
524
+ }
525
+
526
+ if (!$mode || !isset($this->_availableMode[$mode])) {
527
+ $mode = $defaultMode;
528
+ }
529
+ $this->setData('_current_grid_mode', $mode);
530
+ return $mode;
531
+ }
532
+
533
+ /**
534
+ * Compare defined view mode with current active mode
535
+ *
536
+ * @param string $mode
537
+ * @return bool
538
+ */
539
+ public function isModeActive($mode)
540
+ {
541
+ return $this->getCurrentMode() == $mode;
542
+ }
543
+
544
+ /**
545
+ * Retrieve availables view modes
546
+ *
547
+ * @return array
548
+ */
549
+ public function getModes()
550
+ {
551
+ return $this->_availableMode;
552
+ }
553
+
554
+ /**
555
+ * Set available view modes list
556
+ *
557
+ * @param array $modes
558
+ * @return Mage_Catalog_Block_Product_List_Toolbar
559
+ */
560
+ public function setModes($modes)
561
+ {
562
+ if(!isset($this->_availableMode)){
563
+ $this->_availableMode = $modes;
564
+ }
565
+ return $this;
566
+ }
567
+
568
+ /**
569
+ * Retrive URL for view mode
570
+ *
571
+ * @param string $mode
572
+ * @return string
573
+ */
574
+ public function getModeUrl($mode)
575
+ {
576
+ return $this->getPagerUrl( array($this->getModeVarName()=>$mode, $this->getPageVarName() => null) );
577
+ }
578
+
579
+ /**
580
+ * Disable view switcher
581
+ *
582
+ * @return Mage_Catalog_Block_Product_List_Toolbar
583
+ */
584
+ public function disableViewSwitcher()
585
+ {
586
+ $this->_enableViewSwitcher = false;
587
+ return $this;
588
+ }
589
+
590
+ /**
591
+ * Enable view switcher
592
+ *
593
+ * @return Mage_Catalog_Block_Product_List_Toolbar
594
+ */
595
+ public function enableViewSwitcher()
596
+ {
597
+ $this->_enableViewSwitcher = true;
598
+ return $this;
599
+ }
600
+
601
+ /**
602
+ * Is a enabled view switcher
603
+ *
604
+ * @return bool
605
+ */
606
+ public function isEnabledViewSwitcher()
607
+ {
608
+ return $this->_enableViewSwitcher;
609
+ }
610
+
611
+ /**
612
+ * Disable Expanded
613
+ *
614
+ * @return Mage_Catalog_Block_Product_List_Toolbar
615
+ */
616
+ public function disableExpanded()
617
+ {
618
+ $this->_isExpanded = false;
619
+ return $this;
620
+ }
621
+
622
+ /**
623
+ * Enable Expanded
624
+ *
625
+ * @return Mage_Catalog_Block_Product_List_Toolbar
626
+ */
627
+ public function enableExpanded()
628
+ {
629
+ $this->_isExpanded = true;
630
+ return $this;
631
+ }
632
+
633
+ /**
634
+ * Check is Expanded
635
+ *
636
+ * @return bool
637
+ */
638
+ public function isExpanded()
639
+ {
640
+ return $this->_isExpanded;
641
+ }
642
+
643
+ /**
644
+ * Retrieve default per page values
645
+ *
646
+ * @return string (comma separated)
647
+ */
648
+ public function getDefaultPerPageValue()
649
+ {
650
+ if ($this->getCurrentMode() == 'list') {
651
+ if ($default = $this->getDefaultListPerPage()) {
652
+ return $default;
653
+ }
654
+ return Mage::getStoreConfig('catalog/frontend/list_per_page');
655
+ }
656
+ elseif ($this->getCurrentMode() == 'grid') {
657
+ if ($default = $this->getDefaultGridPerPage()) {
658
+ return $default;
659
+ }
660
+ return Mage::getStoreConfig('catalog/frontend/grid_per_page');
661
+ }
662
+ return 0;
663
+ }
664
+
665
+ /**
666
+ * Add new limit to pager for mode
667
+ *
668
+ * @param string $mode
669
+ * @param string $value
670
+ * @param string $label
671
+ * @return Mage_Catalog_Block_Product_List_Toolbar
672
+ */
673
+ public function addPagerLimit($mode, $value, $label='')
674
+ {
675
+ if (!isset($this->_availableLimit[$mode])) {
676
+ $this->_availableLimit[$mode] = array();
677
+ }
678
+ $this->_availableLimit[$mode][$value] = empty($label) ? $value : $label;
679
+ return $this;
680
+ }
681
+
682
+ /**
683
+ * Retrieve available limits for current view mode
684
+ *
685
+ * @return array
686
+ */
687
+ public function getAvailableLimit()
688
+ {
689
+ $currentMode = $this->getCurrentMode();
690
+ if (in_array($currentMode, array('list', 'grid'))) {
691
+ return $this->_getAvailableLimit($currentMode);
692
+ } else {
693
+ return $this->_defaultAvailableLimit;
694
+ }
695
+ }
696
+
697
+ /**
698
+ * Retrieve available limits for specified view mode
699
+ *
700
+ * @return array
701
+ */
702
+ protected function _getAvailableLimit($mode)
703
+ {
704
+ if (isset($this->_availableLimit[$mode])) {
705
+ return $this->_availableLimit[$mode];
706
+ }
707
+ $perPageConfigKey = 'catalog/frontend/' . $mode . '_per_page_values';
708
+ $perPageValues = (string)Mage::getStoreConfig($perPageConfigKey);
709
+ $perPageValues = explode(',', $perPageValues);
710
+ $perPageValues = array_combine($perPageValues, $perPageValues);
711
+ if (Mage::getStoreConfigFlag('catalog/frontend/list_allow_all')) {
712
+ return ($perPageValues + array('all'=>$this->__('All')));
713
+ } else {
714
+ return $perPageValues;
715
+ }
716
+ }
717
+
718
+ /**
719
+ * Get specified products limit display per page
720
+ *
721
+ * @return string
722
+ */
723
+ public function getLimit()
724
+ {
725
+ $limit = $this->_getData('_current_limit');
726
+ if ($limit) {
727
+ return $limit;
728
+ }
729
+
730
+ $limits = $this->getAvailableLimit();
731
+ $defaultLimit = $this->getDefaultPerPageValue();
732
+ if (!$defaultLimit || !isset($limits[$defaultLimit])) {
733
+ $keys = array_keys($limits);
734
+ $defaultLimit = $keys[0];
735
+ }
736
+
737
+ $limit = $this->getRequest()->getParam($this->getLimitVarName());
738
+ if ($limit && isset($limits[$limit])) {
739
+ if ($limit == $defaultLimit) {
740
+ Mage::getSingleton('catalog/session')->unsLimitPage();
741
+ } else {
742
+ $this->_memorizeParam('limit_page', $limit);
743
+ }
744
+ } else {
745
+ $limit = Mage::getSingleton('catalog/session')->getLimitPage();
746
+ }
747
+ if (!$limit || !isset($limits[$limit])) {
748
+ $limit = $defaultLimit;
749
+ }
750
+
751
+ $this->setData('_current_limit', $limit);
752
+ return $limit;
753
+ }
754
+
755
+ /**
756
+ * Retrieve Limit Pager URL
757
+ *
758
+ * @param int $limit
759
+ * @return string
760
+ */
761
+ public function getLimitUrl($limit)
762
+ {
763
+ return $this->getPagerUrl(array(
764
+ $this->getLimitVarName() => $limit,
765
+ $this->getPageVarName() => null
766
+ ));
767
+ }
768
+
769
+ public function isLimitCurrent($limit)
770
+ {
771
+ return $limit == $this->getLimit();
772
+ }
773
+
774
+ public function getFirstNum()
775
+ {
776
+ $collection = $this->getCollection();
777
+ return $collection->getPageSize()*($collection->getCurPage()-1)+1;
778
+ }
779
+
780
+ public function getLastNum()
781
+ {
782
+ $collection = $this->getCollection();
783
+ return $collection->getPageSize()*($collection->getCurPage()-1)+$collection->count();
784
+ }
785
+
786
+ public function getTotalNum()
787
+ {
788
+ return $this->getCollection()->getSize();
789
+ }
790
+
791
+ public function isFirstPage()
792
+ {
793
+ return $this->getCollection()->getCurPage() == 1;
794
+ }
795
+
796
+ public function getLastPageNum()
797
+ {
798
+ return $this->getCollection()->getLastPageNumber();
799
+ }
800
+
801
+ /**
802
+ * Render pagination HTML
803
+ *
804
+ * @return string
805
+ */
806
+ public function getPagerHtml()
807
+ {
808
+ $pagerBlock = $this->getChild('product_list_toolbar_pager');
809
+
810
+ if ($pagerBlock instanceof Varien_Object) {
811
+
812
+ /* @var $pagerBlock Mage_Page_Block_Html_Pager */
813
+ $pagerBlock->setAvailableLimit($this->getAvailableLimit());
814
+
815
+ $pagerBlock->setUseContainer(false)
816
+ ->setShowPerPage(false)
817
+ ->setShowAmounts(false)
818
+ ->setLimitVarName($this->getLimitVarName())
819
+ ->setPageVarName($this->getPageVarName())
820
+ ->setLimit($this->getLimit())
821
+ ->setFrameLength(Mage::getStoreConfig('design/pagination/pagination_frame'))
822
+ ->setJump(Mage::getStoreConfig('design/pagination/pagination_frame_skip'))
823
+ ->setCollection($this->getCollection());
824
+
825
+ return $pagerBlock->toHtml();
826
+ }
827
+
828
+ return '';
829
+ }
830
+ }
app/code/community/Musho/Flipdefine/Block/Product/List/Upsell.php ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Catalog product related items block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+
35
+ class Musho_Flipdefine_Block_Product_List_Upsell extends Mage_Catalog_Block_Product_Abstract
36
+ {
37
+ /**
38
+ * Default MAP renderer type
39
+ *
40
+ * @var string
41
+ */
42
+ protected $_mapRenderer = 'msrp_noform';
43
+
44
+ protected $_columnCount = 4;
45
+
46
+ protected $_items;
47
+
48
+ protected $_itemCollection;
49
+
50
+ protected $_itemLimits = array();
51
+
52
+ protected function _prepareData()
53
+ {
54
+ $product = Mage::registry('product');
55
+ /* @var $product Mage_Catalog_Model_Product */
56
+ $this->_itemCollection = $product->getUpSellProductCollection()
57
+ ->setPositionOrder()
58
+ ->addStoreFilter()
59
+ ;
60
+ if (Mage::helper('catalog')->isModuleEnabled('Mage_Checkout')) {
61
+ Mage::getResourceSingleton('checkout/cart')->addExcludeProductFilter($this->_itemCollection,
62
+ Mage::getSingleton('checkout/session')->getQuoteId()
63
+ );
64
+
65
+ $this->_addProductAttributesAndPrices($this->_itemCollection);
66
+ }
67
+ // Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($this->_itemCollection);
68
+ Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection);
69
+
70
+ if ($this->getItemLimit('upsell') > 0) {
71
+ $this->_itemCollection->setPageSize($this->getItemLimit('upsell'));
72
+ }
73
+
74
+ $this->_itemCollection->load();
75
+
76
+ /**
77
+ * Updating collection with desired items
78
+ */
79
+ Mage::dispatchEvent('catalog_product_upsell', array(
80
+ 'product' => $product,
81
+ 'collection' => $this->_itemCollection,
82
+ 'limit' => $this->getItemLimit()
83
+ ));
84
+
85
+ foreach ($this->_itemCollection as $product) {
86
+ $product->setDoNotUseCategoryId(true);
87
+ }
88
+
89
+ return $this;
90
+ }
91
+
92
+ protected function _beforeToHtml()
93
+ {
94
+ $this->_prepareData();
95
+ return parent::_beforeToHtml();
96
+ }
97
+
98
+ public function getItemCollection()
99
+ {
100
+ return $this->_itemCollection;
101
+ }
102
+
103
+ public function getItems()
104
+ {
105
+ if (is_null($this->_items) && $this->getItemCollection()) {
106
+ $this->_items = $this->getItemCollection()->getItems();
107
+ }
108
+ return $this->_items;
109
+ }
110
+
111
+ public function getRowCount()
112
+ {
113
+ return ceil(count($this->getItemCollection()->getItems())/$this->getColumnCount());
114
+ }
115
+
116
+ public function setColumnCount($columns)
117
+ {
118
+ if (intval($columns) > 0) {
119
+ $this->_columnCount = intval($columns);
120
+ }
121
+ return $this;
122
+ }
123
+
124
+ public function getColumnCount()
125
+ {
126
+ return $this->_columnCount;
127
+ }
128
+
129
+ public function resetItemsIterator()
130
+ {
131
+ $this->getItems();
132
+ reset($this->_items);
133
+ }
134
+
135
+ public function getIterableItem()
136
+ {
137
+ $item = current($this->_items);
138
+ next($this->_items);
139
+ return $item;
140
+ }
141
+
142
+ /**
143
+ * Set how many items we need to show in upsell block
144
+ * Notice: this parametr will be also applied
145
+ *
146
+ * @param string $type
147
+ * @param int $limit
148
+ * @return Mage_Catalog_Block_Product_List_Upsell
149
+ */
150
+ public function setItemLimit($type, $limit)
151
+ {
152
+ if (intval($limit) > 0) {
153
+ $this->_itemLimits[$type] = intval($limit);
154
+ }
155
+ return $this;
156
+ }
157
+
158
+ public function getItemLimit($type = '')
159
+ {
160
+ if ($type == '') {
161
+ return $this->_itemLimits;
162
+ }
163
+ if (isset($this->_itemLimits[$type])) {
164
+ return $this->_itemLimits[$type];
165
+ }
166
+ else {
167
+ return 0;
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Get tags array for saving cache
173
+ *
174
+ * @return array
175
+ */
176
+ public function getCacheTags()
177
+ {
178
+ return array_merge(parent::getCacheTags(), $this->getItemsTags($this->getItems()));
179
+ }
180
+ }
app/code/community/Musho/Flipdefine/Block/Product/New.php ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * New products block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Musho_Flipdefine_Block_Product_New extends Mage_Catalog_Block_Product_Abstract
35
+ {
36
+ /**
37
+ * Default value for products count that will be shown
38
+ */
39
+ const DEFAULT_PRODUCTS_COUNT = 10;
40
+
41
+ /**
42
+ * Products count
43
+ *
44
+ * @var null
45
+ */
46
+ protected $_productsCount;
47
+
48
+ /**
49
+ * Initialize block's cache
50
+ */
51
+ protected function _construct()
52
+ {
53
+ parent::_construct();
54
+
55
+ $this->addColumnCountLayoutDepend('empty', 6)
56
+ ->addColumnCountLayoutDepend('one_column', 5)
57
+ ->addColumnCountLayoutDepend('two_columns_left', 4)
58
+ ->addColumnCountLayoutDepend('two_columns_right', 4)
59
+ ->addColumnCountLayoutDepend('three_columns', 3);
60
+
61
+ $this->addData(array('cache_lifetime' => 86400));
62
+ $this->addCacheTag(Mage_Catalog_Model_Product::CACHE_TAG);
63
+ }
64
+
65
+ /**
66
+ * Get Key pieces for caching block content
67
+ *
68
+ * @return array
69
+ */
70
+ public function getCacheKeyInfo()
71
+ {
72
+ return array(
73
+ 'CATALOG_PRODUCT_NEW',
74
+ Mage::app()->getStore()->getId(),
75
+ Mage::getDesign()->getPackageName(),
76
+ Mage::getDesign()->getTheme('template'),
77
+ Mage::getSingleton('customer/session')->getCustomerGroupId(),
78
+ 'template' => $this->getTemplate(),
79
+ $this->getProductsCount()
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Prepare and return product collection
85
+ *
86
+ * @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
87
+ */
88
+ protected function _getProductCollection()
89
+ {
90
+ $todayStartOfDayDate = Mage::app()->getLocale()->date()
91
+ ->setTime('00:00:00')
92
+ ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
93
+
94
+ $todayEndOfDayDate = Mage::app()->getLocale()->date()
95
+ ->setTime('23:59:59')
96
+ ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
97
+
98
+ /** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
99
+ $collection = Mage::getResourceModel('catalog/product_collection');
100
+ $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
101
+
102
+
103
+ $collection = $this->_addProductAttributesAndPrices($collection)
104
+ ->addStoreFilter()
105
+ ->addAttributeToFilter('news_from_date', array('or'=> array(
106
+ 0 => array('date' => true, 'to' => $todayEndOfDayDate),
107
+ 1 => array('is' => new Zend_Db_Expr('null')))
108
+ ), 'left')
109
+ ->addAttributeToFilter('news_to_date', array('or'=> array(
110
+ 0 => array('date' => true, 'from' => $todayStartOfDayDate),
111
+ 1 => array('is' => new Zend_Db_Expr('null')))
112
+ ), 'left')
113
+ ->addAttributeToFilter(
114
+ array(
115
+ array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
116
+ array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
117
+ )
118
+ )
119
+ ->addAttributeToSort('news_from_date', 'desc')
120
+ ->setPageSize($this->getProductsCount())
121
+ ->setCurPage(1)
122
+ ;
123
+
124
+ return $collection;
125
+ }
126
+
127
+ /**
128
+ * Prepare collection with new products
129
+ *
130
+ * @return Mage_Core_Block_Abstract
131
+ */
132
+ protected function _beforeToHtml()
133
+ {
134
+ $this->setProductCollection($this->_getProductCollection());
135
+ return parent::_beforeToHtml();
136
+ }
137
+
138
+ /**
139
+ * Set how much product should be displayed at once.
140
+ *
141
+ * @param $count
142
+ * @return Mage_Catalog_Block_Product_New
143
+ */
144
+ public function setProductsCount($count)
145
+ {
146
+ $this->_productsCount = $count;
147
+ return $this;
148
+ }
149
+
150
+ /**
151
+ * Get how much products should be displayed at once.
152
+ *
153
+ * @return int
154
+ */
155
+ public function getProductsCount()
156
+ {
157
+ if (null === $this->_productsCount) {
158
+ $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
159
+ }
160
+ return $this->_productsCount;
161
+ }
162
+ }
app/code/community/Musho/Flipdefine/Block/Product/Price.php ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product price block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ */
34
+ class Musho_Flipdefine_Block_Product_Price extends Mage_Catalog_Block_Product_Abstract
35
+ {
36
+ protected $_priceDisplayType = null;
37
+ protected $_idSuffix = '';
38
+
39
+ /**
40
+ * Retrieve product
41
+ *
42
+ * @return Mage_Catalog_Model_Product
43
+ */
44
+ public function getProduct()
45
+ {
46
+ $product = $this->_getData('product');
47
+ if (!$product) {
48
+ $product = Mage::registry('product');
49
+ }
50
+ return $product;
51
+ }
52
+
53
+ public function getDisplayMinimalPrice()
54
+ {
55
+ return $this->_getData('display_minimal_price');
56
+ }
57
+
58
+ public function setIdSuffix($idSuffix)
59
+ {
60
+ $this->_idSuffix = $idSuffix;
61
+ return $this;
62
+ }
63
+
64
+ public function getIdSuffix()
65
+ {
66
+ return $this->_idSuffix;
67
+ }
68
+
69
+ /**
70
+ * Get tier prices (formatted)
71
+ *
72
+ * @param Mage_Catalog_Model_Product $product
73
+ * @return array
74
+ */
75
+ public function getTierPrices($product = null)
76
+ {
77
+ if (is_null($product)) {
78
+ $product = $this->getProduct();
79
+ }
80
+ $prices = $product->getFormatedTierPrice();
81
+
82
+ $res = array();
83
+ if (is_array($prices)) {
84
+ foreach ($prices as $price) {
85
+ $price['price_qty'] = $price['price_qty'] * 1;
86
+
87
+ $productPrice = $product->getPrice();
88
+ if ($product->getPrice() != $product->getFinalPrice()) {
89
+ $productPrice = $product->getFinalPrice();
90
+ }
91
+
92
+ // Group price must be used for percent calculation if it is lower
93
+ $groupPrice = $product->getGroupPrice();
94
+ if ($productPrice > $groupPrice) {
95
+ $productPrice = $groupPrice;
96
+ }
97
+
98
+ if ($price['price'] < $productPrice) {
99
+ $price['savePercent'] = ceil(100 - ((100 / $productPrice) * $price['price']));
100
+
101
+ $tierPrice = Mage::app()->getStore()->convertPrice(
102
+ Mage::helper('tax')->getPrice($product, $price['website_price'])
103
+ );
104
+ $price['formated_price'] = Mage::app()->getStore()->formatPrice($tierPrice);
105
+ $price['formated_price_incl_tax'] = Mage::app()->getStore()->formatPrice(
106
+ Mage::app()->getStore()->convertPrice(
107
+ Mage::helper('tax')->getPrice($product, $price['website_price'], true)
108
+ )
109
+ );
110
+
111
+ if (Mage::helper('catalog')->canApplyMsrp($product)) {
112
+ $oldPrice = $product->getFinalPrice();
113
+ $product->setPriceCalculation(false);
114
+ $product->setPrice($tierPrice);
115
+ $product->setFinalPrice($tierPrice);
116
+
117
+ $this->getLayout()->getBlock('product.info')->getPriceHtml($product);
118
+ $product->setPriceCalculation(true);
119
+
120
+ $price['real_price_html'] = $product->getRealPriceHtml();
121
+ $product->setFinalPrice($oldPrice);
122
+ }
123
+
124
+ $res[] = $price;
125
+ }
126
+ }
127
+ }
128
+
129
+ return $res;
130
+ }
131
+
132
+ /**
133
+ * Retrieve url for direct adding product to cart
134
+ *
135
+ * @param Mage_Catalog_Model_Product $product
136
+ * @param array $additional
137
+ * @return string
138
+ */
139
+ public function getAddToCartUrl($product, $additional = array())
140
+ {
141
+ return $this->helper('checkout/cart')->getAddUrl($product, $additional);
142
+ }
143
+
144
+ /**
145
+ * Prevent displaying if the price is not available
146
+ *
147
+ * @return string
148
+ */
149
+ protected function _toHtml()
150
+ {
151
+ if (!$this->getProduct() || $this->getProduct()->getCanShowPrice() === false) {
152
+ return '';
153
+ }
154
+ return parent::_toHtml();
155
+ }
156
+
157
+ /**
158
+ * Get Product Price valid JS string
159
+ *
160
+ * @param Mage_Catalog_Model_Product $product
161
+ * @return string
162
+ */
163
+ public function getRealPriceJs($product)
164
+ {
165
+ $html = $this->hasRealPriceHtml() ? $this->getRealPriceHtml() : $product->getRealPriceHtml();
166
+ return Mage::helper('core')->jsonEncode($html);
167
+ }
168
+
169
+ /**
170
+ * Retrieve block cache tags
171
+ *
172
+ * @return array
173
+ */
174
+ public function getCacheTags()
175
+ {
176
+ return array_merge(parent::getCacheTags(), $this->getProduct()->getCacheIdTags());
177
+ }
178
+
179
+ /**
180
+ * Retrieve attribute instance by name, id or config node
181
+ *
182
+ * If attribute is not found false is returned
183
+ *
184
+ * @param string|integer|Mage_Core_Model_Config_Element $attribute
185
+ * @return Mage_Eav_Model_Entity_Attribute_Abstract || false
186
+ */
187
+ public function getProductAttribute($attribute)
188
+ {
189
+ return $this->getProduct()->getResource()->getAttribute($attribute);
190
+ }
191
+ }
app/code/community/Musho/Flipdefine/Block/Product/Price/Template.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog Product Price Template Block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_Price_Template extends Mage_Core_Block_Abstract
36
+ {
37
+ /**
38
+ * Product Price block types cache
39
+ *
40
+ * @var array
41
+ */
42
+ protected $_priceBlockTypes = array();
43
+
44
+ /**
45
+ * Retrieve array of Price Block Types
46
+ *
47
+ * Key is price block type name and value is array of
48
+ * template and block strings
49
+ *
50
+ * @return array
51
+ */
52
+ public function getPriceBlockTypes()
53
+ {
54
+ return $this->_priceBlockTypes;
55
+ }
56
+
57
+ /**
58
+ * Adding customized price template for product type
59
+ *
60
+ * @param string $type
61
+ * @param string $block
62
+ * @param string $template
63
+ * @return Mage_Catalog_Block_Product_Price_Template
64
+ */
65
+ public function addPriceBlockType($type, $block = '', $template = '')
66
+ {
67
+ if ($type) {
68
+ $this->_priceBlockTypes[$type] = array(
69
+ 'block' => $block,
70
+ 'template' => $template
71
+ );
72
+ }
73
+
74
+ return $this;
75
+ }
76
+ }
app/code/community/Musho/Flipdefine/Block/Product/Send.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product send to friend block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @module Catalog
34
+ */
35
+ class Musho_Flipdefine_Block_Product_Send extends Mage_Catalog_Block_Product_Abstract
36
+ {
37
+ public function __construct(){
38
+ parent::__construct();
39
+ }
40
+
41
+ /**
42
+ * Retrieve username for form field
43
+ *
44
+ * @return string
45
+ */
46
+
47
+ public function getUserName()
48
+ {
49
+ return Mage::getSingleton('customer/session')->getCustomer()->getName();
50
+ }
51
+
52
+ public function getEmail()
53
+ {
54
+ return (string)Mage::getSingleton('customer/session')->getCustomer()->getEmail();
55
+ }
56
+
57
+ public function getProductId()
58
+ {
59
+ return $this->getRequest()->getParam('id');
60
+ }
61
+
62
+ public function getMaxRecipients()
63
+ {
64
+ $sendToFriendModel = Mage::registry('send_to_friend_model');
65
+ return $sendToFriendModel->getMaxRecipients();
66
+ }
67
+ }
app/code/community/Musho/Flipdefine/Block/Product/View.php ADDED
@@ -0,0 +1,273 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product View block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @module Catalog
34
+ * @author Magento Core Team <core@magentocommerce.com>
35
+ */
36
+ class Musho_Flipdefine_Block_Product_View extends Mage_Catalog_Block_Product_Abstract
37
+ {
38
+ /**
39
+ * Default MAP renderer type
40
+ *
41
+ * @var string
42
+ */
43
+ protected $_mapRenderer = 'msrp_item';
44
+
45
+ /**
46
+ * Add meta information from product to head block
47
+ *
48
+ * @return Mage_Catalog_Block_Product_View
49
+ */
50
+ protected function _prepareLayout()
51
+ {
52
+ $this->getLayout()->createBlock('catalog/breadcrumbs');
53
+ $headBlock = $this->getLayout()->getBlock('head');
54
+ if ($headBlock) {
55
+ //$product = $this->getProduct();
56
+ $product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'));
57
+ $title = $product->getMetaTitle();
58
+ if ($title) {
59
+ $headBlock->setTitle($title);
60
+ }
61
+ $keyword = $product->getMetaKeyword();
62
+ $currentCategory = Mage::registry('current_category');
63
+ if ($keyword) {
64
+ $headBlock->setKeywords($keyword);
65
+ } elseif ($currentCategory) {
66
+ $headBlock->setKeywords($product->getName());
67
+ }
68
+ $description = $product->getMetaDescription();
69
+ if ($description) {
70
+ $headBlock->setDescription( ($description) );
71
+ } else {
72
+ $headBlock->setDescription(Mage::helper('core/string')->substr($product->getDescription(), 0, 255));
73
+ }
74
+ if ($this->helper('catalog/product')->canUseCanonicalTag()) {
75
+ $params = array('_ignore_category' => true);
76
+ $headBlock->addLinkRel('canonical', $product->getUrlModel()->getUrl($product, $params));
77
+ }
78
+ }
79
+
80
+ return parent::_prepareLayout();
81
+ }
82
+
83
+ /**
84
+ * Retrieve current product model
85
+ *
86
+ * @return Mage_Catalog_Model_Product
87
+ */
88
+ public function getProduct()
89
+ {
90
+ if (!Mage::registry('product') && $this->getProductId()) {
91
+ $product = Mage::getModel('catalog/product')->load(Mage::registry('Productno'));
92
+ Mage::register('product', $product);
93
+ }
94
+ return Mage::registry('product');
95
+ }
96
+
97
+ /**
98
+ * Check if product can be emailed to friend
99
+ *
100
+ * @return bool
101
+ */
102
+ public function canEmailToFriend()
103
+ {
104
+ $sendToFriendModel = Mage::registry('send_to_friend_model');
105
+ return $sendToFriendModel && $sendToFriendModel->canEmailToFriend();
106
+ }
107
+
108
+ /**
109
+ * Retrieve url for direct adding product to cart
110
+ *
111
+ * @param Mage_Catalog_Model_Product $product
112
+ * @param array $additional
113
+ * @return string
114
+ */
115
+ public function getAddToCartUrl($product, $additional = array())
116
+ {
117
+ if ($this->hasCustomAddToCartUrl()) {
118
+ return $this->getCustomAddToCartUrl();
119
+ }
120
+
121
+ if ($this->getRequest()->getParam('wishlist_next')) {
122
+ $additional['wishlist_next'] = 1;
123
+ }
124
+
125
+ $addUrlKey = Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED;
126
+ $addUrlValue = Mage::getUrl('*/*/*', array('_use_rewrite' => true, '_current' => true));
127
+ $additional[$addUrlKey] = Mage::helper('core')->urlEncode($addUrlValue);
128
+
129
+ return $this->helper('checkout/cart')->getAddUrl($product, $additional);
130
+ }
131
+
132
+ /**
133
+ * Get JSON encoded configuration array which can be used for JS dynamic
134
+ * price calculation depending on product options
135
+ *
136
+ * @return string
137
+ */
138
+ public function getJsonConfig()
139
+ {
140
+ $config = array();
141
+ if (!$this->hasOptions()) {
142
+ return Mage::helper('core')->jsonEncode($config);
143
+ }
144
+
145
+ $_request = Mage::getSingleton('tax/calculation')->getRateRequest(false, false, false);
146
+ /* @var $product Mage_Catalog_Model_Product */
147
+ $product = $this->getProduct();
148
+ $_request->setProductClassId($product->getTaxClassId());
149
+ $defaultTax = Mage::getSingleton('tax/calculation')->getRate($_request);
150
+
151
+ $_request = Mage::getSingleton('tax/calculation')->getRateRequest();
152
+ $_request->setProductClassId($product->getTaxClassId());
153
+ $currentTax = Mage::getSingleton('tax/calculation')->getRate($_request);
154
+
155
+ $_regularPrice = $product->getPrice();
156
+ $_finalPrice = $product->getFinalPrice();
157
+ $_priceInclTax = Mage::helper('tax')->getPrice($product, $_finalPrice, true);
158
+ $_priceExclTax = Mage::helper('tax')->getPrice($product, $_finalPrice);
159
+ $_tierPrices = array();
160
+ $_tierPricesInclTax = array();
161
+ foreach ($product->getTierPrice() as $tierPrice) {
162
+ $_tierPrices[] = Mage::helper('core')->currency($tierPrice['website_price'], false, false);
163
+ $_tierPricesInclTax[] = Mage::helper('core')->currency(
164
+ Mage::helper('tax')->getPrice($product, (int)$tierPrice['website_price'], true),
165
+ false, false);
166
+ }
167
+ $config = array(
168
+ 'productId' => $product->getId(),
169
+ 'priceFormat' => Mage::app()->getLocale()->getJsPriceFormat(),
170
+ 'includeTax' => Mage::helper('tax')->priceIncludesTax() ? 'true' : 'false',
171
+ 'showIncludeTax' => Mage::helper('tax')->displayPriceIncludingTax(),
172
+ 'showBothPrices' => Mage::helper('tax')->displayBothPrices(),
173
+ 'productPrice' => Mage::helper('core')->currency($_finalPrice, false, false),
174
+ 'productOldPrice' => Mage::helper('core')->currency($_regularPrice, false, false),
175
+ 'priceInclTax' => Mage::helper('core')->currency($_priceInclTax, false, false),
176
+ 'priceExclTax' => Mage::helper('core')->currency($_priceExclTax, false, false),
177
+ /**
178
+ * @var skipCalculate
179
+ * @deprecated after 1.5.1.0
180
+ */
181
+ 'skipCalculate' => ($_priceExclTax != $_priceInclTax ? 0 : 1),
182
+ 'defaultTax' => $defaultTax,
183
+ 'currentTax' => $currentTax,
184
+ 'idSuffix' => '_clone',
185
+ 'oldPlusDisposition' => 0,
186
+ 'plusDisposition' => 0,
187
+ 'plusDispositionTax' => 0,
188
+ 'oldMinusDisposition' => 0,
189
+ 'minusDisposition' => 0,
190
+ 'tierPrices' => $_tierPrices,
191
+ 'tierPricesInclTax' => $_tierPricesInclTax,
192
+ );
193
+
194
+ $responseObject = new Varien_Object();
195
+ Mage::dispatchEvent('catalog_product_view_config', array('response_object' => $responseObject));
196
+ if (is_array($responseObject->getAdditionalOptions())) {
197
+ foreach ($responseObject->getAdditionalOptions() as $option => $value) {
198
+ $config[$option] = $value;
199
+ }
200
+ }
201
+
202
+ return Mage::helper('core')->jsonEncode($config);
203
+ }
204
+
205
+ /**
206
+ * Return true if product has options
207
+ *
208
+ * @return bool
209
+ */
210
+ public function hasOptions()
211
+ {
212
+ if ($this->getProduct()->getTypeInstance(true)->hasOptions($this->getProduct())) {
213
+ return true;
214
+ }
215
+ return false;
216
+ }
217
+
218
+ /**
219
+ * Check if product has required options
220
+ *
221
+ * @return bool
222
+ */
223
+ public function hasRequiredOptions()
224
+ {
225
+ return $this->getProduct()->getTypeInstance(true)->hasRequiredOptions($this->getProduct());
226
+ }
227
+
228
+ /**
229
+ * Define if setting of product options must be shown instantly.
230
+ * Used in case when options are usually hidden and shown only when user
231
+ * presses some button or link. In editing mode we better show these options
232
+ * instantly.
233
+ *
234
+ * @return bool
235
+ */
236
+ public function isStartCustomization()
237
+ {
238
+ return $this->getProduct()->getConfigureMode() || Mage::app()->getRequest()->getParam('startcustomization');
239
+ }
240
+
241
+ /**
242
+ * Get default qty - either as preconfigured, or as 1.
243
+ * Also restricts it by minimal qty.
244
+ *
245
+ * @param null|Mage_Catalog_Model_Product $product
246
+ * @return int|float
247
+ */
248
+ public function getProductDefaultQty($product = null)
249
+ {
250
+ if (!$product) {
251
+ $product = $this->getProduct();
252
+ }
253
+
254
+ $qty = $this->getMinimalQty($product);
255
+ $config = $product->getPreconfiguredValues();
256
+ $configQty = $config->getQty();
257
+ if ($configQty > $qty) {
258
+ $qty = $configQty;
259
+ }
260
+
261
+ return $qty;
262
+ }
263
+
264
+ /**
265
+ * Retrieve block cache tags
266
+ *
267
+ * @return array
268
+ */
269
+ public function getCacheTags()
270
+ {
271
+ return array_merge(parent::getCacheTags(), $this->getProduct()->getCacheIdTags());
272
+ }
273
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Abstract.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Product view abstract block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ abstract class Mage_Catalog_Block_Product_View_Abstract extends Mage_Catalog_Block_Product_Abstract
35
+ {
36
+ /**
37
+ * Retrive product
38
+ *
39
+ * @return Mage_Catalog_Model_Product
40
+ */
41
+ public function getProduct()
42
+ {
43
+ $product = parent::getProduct();
44
+ if (is_null($product->getTypeInstance(true)->getStoreFilter($product))) {
45
+ $product->getTypeInstance(true)->setStoreFilter(Mage::app()->getStore(), $product);
46
+ }
47
+
48
+ return $product;
49
+ }
50
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Additional.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product additional info block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Additional extends Mage_Core_Block_Template
36
+ {
37
+
38
+ protected $_list;
39
+
40
+ public function __construct()
41
+ {
42
+ parent::__construct();
43
+ $this->setTemplate('catalog/product/view/additional.phtml');
44
+ }
45
+
46
+ public function getChildHtmlList()
47
+ {
48
+ if (is_null($this->_list)) {
49
+ $this->_list = array();
50
+ foreach ($this->getSortedChildren() as $name) {
51
+ $block = $this->getLayout()->getBlock($name);
52
+ if (!$block) {
53
+ Mage::exception(Mage::helper('catalog')->__('Invalid block: %s.', $name));
54
+ }
55
+ $this->_list[] = $block->toHtml();
56
+ }
57
+ }
58
+ return $this->_list;
59
+ }
60
+
61
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Attributes.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product description block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Attributes extends Mage_Core_Block_Template
36
+ {
37
+ protected $_product = null;
38
+
39
+ function getProduct()
40
+ {
41
+ if (!$this->_product) {
42
+ $this->_product = Mage::registry('product');
43
+ }
44
+ return $this->_product;
45
+ }
46
+
47
+ /**
48
+ * $excludeAttr is optional array of attribute codes to
49
+ * exclude them from additional data array
50
+ *
51
+ * @param array $excludeAttr
52
+ * @return array
53
+ */
54
+ public function getAdditionalData(array $excludeAttr = array())
55
+ {
56
+ $data = array();
57
+ $product = $this->getProduct();
58
+ $attributes = $product->getAttributes();
59
+ foreach ($attributes as $attribute) {
60
+ // if ($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
61
+ if ($attribute->getIsVisibleOnFront() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
62
+ $value = $attribute->getFrontend()->getValue($product);
63
+
64
+ if (!$product->hasData($attribute->getAttributeCode())) {
65
+ $value = Mage::helper('catalog')->__('N/A');
66
+ } elseif ((string)$value == '') {
67
+ $value = Mage::helper('catalog')->__('No');
68
+ } elseif ($attribute->getFrontendInput() == 'price' && is_string($value)) {
69
+ $value = Mage::app()->getStore()->convertPrice($value, true);
70
+ }
71
+
72
+ if (is_string($value) && strlen($value)) {
73
+ $data[$attribute->getAttributeCode()] = array(
74
+ 'label' => $attribute->getStoreLabel(),
75
+ 'value' => $value,
76
+ 'code' => $attribute->getAttributeCode()
77
+ );
78
+ }
79
+ }
80
+ }
81
+ return $data;
82
+ }
83
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Description.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product description block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Description extends Mage_Core_Block_Template
36
+ {
37
+ protected $_product = null;
38
+
39
+ function getProduct()
40
+ {
41
+ if (!$this->_product) {
42
+ $this->_product = Mage::registry('product');
43
+ }
44
+ return $this->_product;
45
+ }
46
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Media.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Simple product data view
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Musho_Flipdefine_Block_Product_View_Media extends Mage_Catalog_Block_Product_View_Abstract
35
+ {
36
+ /**
37
+ * Flag, that defines whether gallery is disabled
38
+ *
39
+ * @var boolean
40
+ */
41
+ protected $_isGalleryDisabled;
42
+
43
+ /**
44
+ * Retrieve list of gallery images
45
+ *
46
+ * @return array|Varien_Data_Collection
47
+ */
48
+ public function getGalleryImages()
49
+ {
50
+ if ($this->_isGalleryDisabled) {
51
+ return array();
52
+ }
53
+ $collection = $this->getProduct()->getMediaGalleryImages();
54
+ return $collection;
55
+ }
56
+
57
+ /**
58
+ * Retrieve gallery url
59
+ *
60
+ * @param null|Varien_Object $image
61
+ * @return string
62
+ */
63
+ public function getGalleryUrl($image = null)
64
+ {
65
+ $params = array('id' => $this->getProduct()->getId());
66
+ if ($image) {
67
+ $params['image'] = $image->getValueId();
68
+ }
69
+ return $this->getUrl('catalog/product/gallery', $params);
70
+ }
71
+
72
+ /**
73
+ * Disable gallery
74
+ */
75
+ public function disableGallery()
76
+ {
77
+ $this->_isGalleryDisabled = true;
78
+ }
79
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options.php ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Options extends Mage_Core_Block_Template
36
+ {
37
+ protected $_product;
38
+
39
+ protected $_optionRenders = array();
40
+
41
+ public function __construct()
42
+ {
43
+ parent::__construct();
44
+ $this->addOptionRenderer(
45
+ 'default',
46
+ 'catalog/product_view_options_type_default',
47
+ 'catalog/product/view/options/type/default.phtml'
48
+ );
49
+ }
50
+
51
+ /**
52
+ * Retrieve product object
53
+ *
54
+ * @return Mage_Catalog_Model_Product
55
+ */
56
+ public function getProduct()
57
+ {
58
+ if (!$this->_product) {
59
+ if (Mage::registry('current_product')) {
60
+ $this->_product = Mage::registry('current_product');
61
+ } else {
62
+ $this->_product = Mage::getSingleton('catalog/product');
63
+ }
64
+ }
65
+ return $this->_product;
66
+ }
67
+
68
+ /**
69
+ * Set product object
70
+ *
71
+ * @param Mage_Catalog_Model_Product $product
72
+ * @return Mage_Catalog_Block_Product_View_Options
73
+ */
74
+ public function setProduct(Mage_Catalog_Model_Product $product = null)
75
+ {
76
+ $this->_product = $product;
77
+ return $this;
78
+ }
79
+
80
+ /**
81
+ * Add option renderer to renderers array
82
+ *
83
+ * @param string $type
84
+ * @param string $block
85
+ * @param string $template
86
+ * @return Mage_Catalog_Block_Product_View_Options
87
+ */
88
+ public function addOptionRenderer($type, $block, $template)
89
+ {
90
+ $this->_optionRenders[$type] = array(
91
+ 'block' => $block,
92
+ 'template' => $template,
93
+ 'renderer' => null
94
+ );
95
+ return $this;
96
+ }
97
+
98
+ /**
99
+ * Get option render by given type
100
+ *
101
+ * @param string $type
102
+ * @return array
103
+ */
104
+ public function getOptionRender($type)
105
+ {
106
+ if (isset($this->_optionRenders[$type])) {
107
+ return $this->_optionRenders[$type];
108
+ }
109
+
110
+ return $this->_optionRenders['default'];
111
+ }
112
+
113
+ public function getGroupOfOption($type)
114
+ {
115
+ $group = Mage::getSingleton('catalog/product_option')->getGroupByType($type);
116
+
117
+ return $group == '' ? 'default' : $group;
118
+ }
119
+
120
+ /**
121
+ * Get product options
122
+ *
123
+ * @return array
124
+ */
125
+ public function getOptions()
126
+ {
127
+ return $this->getProduct()->getOptions();
128
+ }
129
+
130
+ public function hasOptions()
131
+ {
132
+ if ($this->getOptions()) {
133
+ return true;
134
+ }
135
+ return false;
136
+ }
137
+
138
+ /**
139
+ * Get price configuration
140
+ *
141
+ * @param Mage_Catalog_Model_Product_Option_Value|Mage_Catalog_Model_Product_Option $option
142
+ * @return array
143
+ */
144
+ protected function _getPriceConfiguration($option)
145
+ {
146
+ $data = array();
147
+ $data['price'] = Mage::helper('core')->currency($option->getPrice(true), false, false);
148
+ $data['oldPrice'] = Mage::helper('core')->currency($option->getPrice(false), false, false);
149
+ $data['priceValue'] = $option->getPrice(false);
150
+ $data['type'] = $option->getPriceType();
151
+ $data['excludeTax'] = $price = Mage::helper('tax')->getPrice($option->getProduct(), $data['price'], false);
152
+ $data['includeTax'] = $price = Mage::helper('tax')->getPrice($option->getProduct(), $data['price'], true);
153
+ return $data;
154
+ }
155
+
156
+ /**
157
+ * Get json representation of
158
+ *
159
+ * @return string
160
+ */
161
+ public function getJsonConfig()
162
+ {
163
+ $config = array();
164
+
165
+ foreach ($this->getOptions() as $option) {
166
+ /* @var $option Mage_Catalog_Model_Product_Option */
167
+ $priceValue = 0;
168
+ if ($option->getGroupByType() == Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT) {
169
+ $_tmpPriceValues = array();
170
+ foreach ($option->getValues() as $value) {
171
+ /* @var $value Mage_Catalog_Model_Product_Option_Value */
172
+ $id = $value->getId();
173
+ $_tmpPriceValues[$id] = $this->_getPriceConfiguration($value);
174
+ }
175
+ $priceValue = $_tmpPriceValues;
176
+ } else {
177
+ $priceValue = $this->_getPriceConfiguration($option);
178
+ }
179
+ $config[$option->getId()] = $priceValue;
180
+ }
181
+
182
+ return Mage::helper('core')->jsonEncode($config);
183
+ }
184
+
185
+ /**
186
+ * Get option html block
187
+ *
188
+ * @param Mage_Catalog_Model_Product_Option $option
189
+ */
190
+ public function getOptionHtml(Mage_Catalog_Model_Product_Option $option)
191
+ {
192
+ $renderer = $this->getOptionRender(
193
+ $this->getGroupOfOption($option->getType())
194
+ );
195
+ if (is_null($renderer['renderer'])) {
196
+ $renderer['renderer'] = $this->getLayout()->createBlock($renderer['block'])
197
+ ->setTemplate($renderer['template']);
198
+ }
199
+ return $renderer['renderer']
200
+ ->setProduct($this->getProduct())
201
+ ->setOption($option)
202
+ ->toHtml();
203
+ }
204
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Abstract.php ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options abstract type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ abstract class Mage_Catalog_Block_Product_View_Options_Abstract extends Mage_Core_Block_Template
36
+ {
37
+ /**
38
+ * Product object
39
+ *
40
+ * @var Mage_Catalog_Model_Product
41
+ */
42
+ protected $_product;
43
+
44
+ /**
45
+ * Product option object
46
+ *
47
+ * @var Mage_Catalog_Model_Product_Option
48
+ */
49
+ protected $_option;
50
+
51
+ /**
52
+ * Set Product object
53
+ *
54
+ * @param Mage_Catalog_Model_Product $product
55
+ * @return Mage_Catalog_Block_Product_View_Options_Abstract
56
+ */
57
+ public function setProduct(Mage_Catalog_Model_Product $product = null)
58
+ {
59
+ $this->_product = $product;
60
+ return $this;
61
+ }
62
+
63
+ /**
64
+ * Retrieve Product object
65
+ *
66
+ * @return Mage_Catalog_Model_Product
67
+ */
68
+ public function getProduct()
69
+ {
70
+ return $this->_product;
71
+ }
72
+
73
+ /**
74
+ * Set option
75
+ *
76
+ * @param Mage_Catalog_Model_Product_Option $option
77
+ * @return Mage_Catalog_Block_Product_View_Options_Abstract
78
+ */
79
+ public function setOption(Mage_Catalog_Model_Product_Option $option)
80
+ {
81
+ $this->_option = $option;
82
+ return $this;
83
+ }
84
+
85
+ /**
86
+ * Get option
87
+ *
88
+ * @return Mage_Catalog_Model_Product_Option
89
+ */
90
+ public function getOption()
91
+ {
92
+ return $this->_option;
93
+ }
94
+
95
+ public function getFormatedPrice()
96
+ {
97
+ if ($option = $this->getOption()) {
98
+ return $this->_formatPrice(array(
99
+ 'is_percent' => ($option->getPriceType() == 'percent'),
100
+ 'pricing_value' => $option->getPrice($option->getPriceType() == 'percent')
101
+ ));
102
+ }
103
+ return '';
104
+ }
105
+
106
+ /**
107
+ * Return formated price
108
+ *
109
+ * @param array $value
110
+ * @return string
111
+ */
112
+ protected function _formatPrice($value, $flag=true)
113
+ {
114
+ if ($value['pricing_value'] == 0) {
115
+ return '';
116
+ }
117
+
118
+ $taxHelper = Mage::helper('tax');
119
+ $store = $this->getProduct()->getStore();
120
+
121
+ $sign = '+';
122
+ if ($value['pricing_value'] < 0) {
123
+ $sign = '-';
124
+ $value['pricing_value'] = 0 - $value['pricing_value'];
125
+ }
126
+
127
+ $priceStr = $sign;
128
+ $_priceInclTax = $this->getPrice($value['pricing_value'], true);
129
+ $_priceExclTax = $this->getPrice($value['pricing_value']);
130
+ if ($taxHelper->displayPriceIncludingTax()) {
131
+ $priceStr .= $this->helper('core')->currencyByStore($_priceInclTax, $store, true, $flag);
132
+ } elseif ($taxHelper->displayPriceExcludingTax()) {
133
+ $priceStr .= $this->helper('core')->currencyByStore($_priceExclTax, $store, true, $flag);
134
+ } elseif ($taxHelper->displayBothPrices()) {
135
+ $priceStr .= $this->helper('core')->currencyByStore($_priceExclTax, $store, true, $flag);
136
+ if ($_priceInclTax != $_priceExclTax) {
137
+ $priceStr .= ' ('.$sign.$this->helper('core')
138
+ ->currencyByStore($_priceInclTax, $store, true, $flag).' '.$this->__('Incl. Tax').')';
139
+ }
140
+ }
141
+
142
+ if ($flag) {
143
+ $priceStr = '<span class="price-notice">'.$priceStr.'</span>';
144
+ }
145
+
146
+ return $priceStr;
147
+ }
148
+
149
+ /**
150
+ * Get price with including/excluding tax
151
+ *
152
+ * @param decimal $price
153
+ * @param bool $includingTax
154
+ * @return decimal
155
+ */
156
+ public function getPrice($price, $includingTax = null)
157
+ {
158
+ if (!is_null($includingTax)) {
159
+ $price = Mage::helper('tax')->getPrice($this->getProduct(), $price, true);
160
+ } else {
161
+ $price = Mage::helper('tax')->getPrice($this->getProduct(), $price);
162
+ }
163
+ return $price;
164
+ }
165
+
166
+ /**
167
+ * Returns price converted to current currency rate
168
+ *
169
+ * @param float $price
170
+ * @return float
171
+ */
172
+ public function getCurrencyPrice($price)
173
+ {
174
+ $store = $this->getProduct()->getStore();
175
+ return $this->helper('core')->currencyByStore($price, $store, false);
176
+ }
177
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Date.php ADDED
@@ -0,0 +1,231 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options text type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Options_Type_Date extends Mage_Catalog_Block_Product_View_Options_Abstract
36
+ {
37
+
38
+ /**
39
+ * Fill date and time options with leading zeros or not
40
+ *
41
+ * @var boolean
42
+ */
43
+ protected $_fillLeadingZeros = true;
44
+
45
+ protected function _prepareLayout()
46
+ {
47
+ if ($head = $this->getLayout()->getBlock('head')) {
48
+ $head->setCanLoadCalendarJs(true);
49
+ }
50
+ return parent::_prepareLayout();
51
+ }
52
+
53
+ /**
54
+ * Use JS calendar settings
55
+ *
56
+ * @return boolean
57
+ */
58
+ public function useCalendar()
59
+ {
60
+ return Mage::getSingleton('catalog/product_option_type_date')->useCalendar();
61
+ }
62
+
63
+ /**
64
+ * Date input
65
+ *
66
+ * @return string Formatted Html
67
+ */
68
+ public function getDateHtml()
69
+ {
70
+ if ($this->useCalendar()) {
71
+ return $this->getCalendarDateHtml();
72
+ } else {
73
+ return $this->getDropDownsDateHtml();
74
+ }
75
+ }
76
+
77
+ /**
78
+ * JS Calendar html
79
+ *
80
+ * @return string Formatted Html
81
+ */
82
+ public function getCalendarDateHtml()
83
+ {
84
+ $option = $this->getOption();
85
+ $value = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $option->getId() . '/date');
86
+
87
+ //$require = $this->getOption()->getIsRequire() ? ' required-entry' : '';
88
+ $require = '';
89
+
90
+ $yearStart = Mage::getSingleton('catalog/product_option_type_date')->getYearStart();
91
+ $yearEnd = Mage::getSingleton('catalog/product_option_type_date')->getYearEnd();
92
+
93
+ $calendar = $this->getLayout()
94
+ ->createBlock('core/html_date')
95
+ ->setId('options_'.$this->getOption()->getId().'_date')
96
+ ->setName('options['.$this->getOption()->getId().'][date]')
97
+ ->setClass('product-custom-option datetime-picker input-text' . $require)
98
+ ->setImage($this->getSkinUrl('images/calendar.gif'))
99
+ ->setFormat(Mage::app()->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT))
100
+ ->setValue($value)
101
+ ->setYearsRange('[' . $yearStart . ', ' . $yearEnd . ']');
102
+ if (!$this->getSkipJsReloadPrice()) {
103
+ $calendar->setExtraParams('onchange="opConfig.reloadPrice()"');
104
+ }
105
+
106
+ return $calendar->getHtml();
107
+ }
108
+
109
+ /**
110
+ * Date (dd/mm/yyyy) html drop-downs
111
+ *
112
+ * @return string Formatted Html
113
+ */
114
+ public function getDropDownsDateHtml()
115
+ {
116
+ $fieldsSeparator = '&nbsp;';
117
+ $fieldsOrder = Mage::getSingleton('catalog/product_option_type_date')->getConfigData('date_fields_order');
118
+ $fieldsOrder = str_replace(',', $fieldsSeparator, $fieldsOrder);
119
+
120
+ $monthsHtml = $this->_getSelectFromToHtml('month', 1, 12);
121
+ $daysHtml = $this->_getSelectFromToHtml('day', 1, 31);
122
+
123
+ $yearStart = Mage::getSingleton('catalog/product_option_type_date')->getYearStart();
124
+ $yearEnd = Mage::getSingleton('catalog/product_option_type_date')->getYearEnd();
125
+ $yearsHtml = $this->_getSelectFromToHtml('year', $yearStart, $yearEnd);
126
+
127
+ $translations = array(
128
+ 'd' => $daysHtml,
129
+ 'm' => $monthsHtml,
130
+ 'y' => $yearsHtml
131
+ );
132
+ return strtr($fieldsOrder, $translations);
133
+ }
134
+
135
+ /**
136
+ * Time (hh:mm am/pm) html drop-downs
137
+ *
138
+ * @return string Formatted Html
139
+ */
140
+ public function getTimeHtml()
141
+ {
142
+ if (Mage::getSingleton('catalog/product_option_type_date')->is24hTimeFormat()) {
143
+ $hourStart = 0;
144
+ $hourEnd = 23;
145
+ $dayPartHtml = '';
146
+ } else {
147
+ $hourStart = 1;
148
+ $hourEnd = 12;
149
+ $dayPartHtml = $this->_getHtmlSelect('day_part')
150
+ ->setOptions(array(
151
+ 'am' => Mage::helper('catalog')->__('AM'),
152
+ 'pm' => Mage::helper('catalog')->__('PM')
153
+ ))
154
+ ->getHtml();
155
+ }
156
+ $hoursHtml = $this->_getSelectFromToHtml('hour', $hourStart, $hourEnd);
157
+ $minutesHtml = $this->_getSelectFromToHtml('minute', 0, 59);
158
+
159
+ return $hoursHtml . '&nbsp;<b>:</b>&nbsp;' . $minutesHtml . '&nbsp;' . $dayPartHtml;
160
+ }
161
+
162
+ /**
163
+ * Return drop-down html with range of values
164
+ *
165
+ * @param string $name Id/name of html select element
166
+ * @param int $from Start position
167
+ * @param int $to End position
168
+ * @param int $value Value selected
169
+ * @return string Formatted Html
170
+ */
171
+ protected function _getSelectFromToHtml($name, $from, $to, $value = null)
172
+ {
173
+ $options = array(
174
+ array('value' => '', 'label' => '-')
175
+ );
176
+ for ($i = $from; $i <= $to; $i++) {
177
+ $options[] = array('value' => $i, 'label' => $this->_getValueWithLeadingZeros($i));
178
+ }
179
+ return $this->_getHtmlSelect($name, $value)
180
+ ->setOptions($options)
181
+ ->getHtml();
182
+ }
183
+
184
+ /**
185
+ * HTML select element
186
+ *
187
+ * @param string $name Id/name of html select element
188
+ * @return Mage_Core_Block_Html_Select
189
+ */
190
+ protected function _getHtmlSelect($name, $value = null)
191
+ {
192
+ $option = $this->getOption();
193
+
194
+ // $require = $this->getOption()->getIsRequire() ? ' required-entry' : '';
195
+ $require = '';
196
+ $select = $this->getLayout()->createBlock('core/html_select')
197
+ ->setId('options_' . $this->getOption()->getId() . '_' . $name)
198
+ ->setClass('product-custom-option datetime-picker' . $require)
199
+ ->setExtraParams()
200
+ ->setName('options[' . $option->getId() . '][' . $name . ']');
201
+
202
+ $extraParams = 'style="width:auto"';
203
+ if (!$this->getSkipJsReloadPrice()) {
204
+ $extraParams .= ' onchange="opConfig.reloadPrice()"';
205
+ }
206
+ $select->setExtraParams($extraParams);
207
+
208
+ if (is_null($value)) {
209
+ $value = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $option->getId() . '/' . $name);
210
+ }
211
+ if (!is_null($value)) {
212
+ $select->setValue($value);
213
+ }
214
+
215
+ return $select;
216
+ }
217
+
218
+ /**
219
+ * Add Leading Zeros to number less than 10
220
+ *
221
+ * @param int
222
+ * @return string
223
+ */
224
+ protected function _getValueWithLeadingZeros($value)
225
+ {
226
+ if (!$this->_fillLeadingZeros) {
227
+ return $value;
228
+ }
229
+ return $value < 10 ? '0'.$value : $value;
230
+ }
231
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Default.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options default type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Options_Type_Default
36
+ extends Mage_Catalog_Block_Product_View_Options_Abstract
37
+ {
38
+
39
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/File.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options text type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Options_Type_File
36
+ extends Mage_Catalog_Block_Product_View_Options_Abstract
37
+ {
38
+ /**
39
+ * Returns info of file
40
+ *
41
+ * @return string
42
+ */
43
+ public function getFileInfo()
44
+ {
45
+ $info = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $this->getOption()->getId());
46
+ if (empty($info)) {
47
+ $info = new Varien_Object();
48
+ } else if (is_array($info)) {
49
+ $info = new Varien_Object($info);
50
+ }
51
+ return $info;
52
+ }
53
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Select.php ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options text type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Options_Type_Select
36
+ extends Mage_Catalog_Block_Product_View_Options_Abstract
37
+ {
38
+ /**
39
+ * Return html for control element
40
+ *
41
+ * @return string
42
+ */
43
+ public function getValuesHtml()
44
+ {
45
+ $_option = $this->getOption();
46
+ $configValue = $this->getProduct()->getPreconfiguredValues()->getData('options/' . $_option->getId());
47
+ $store = $this->getProduct()->getStore();
48
+
49
+ if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN
50
+ || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
51
+ $require = ($_option->getIsRequire()) ? ' required-entry' : '';
52
+ $extraParams = '';
53
+ $select = $this->getLayout()->createBlock('core/html_select')
54
+ ->setData(array(
55
+ 'id' => 'select_'.$_option->getId(),
56
+ 'class' => $require.' product-custom-option'
57
+ ));
58
+ if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN) {
59
+ $select->setName('options['.$_option->getid().']')
60
+ ->addOption('', $this->__('-- Please Select --'));
61
+ } else {
62
+ $select->setName('options['.$_option->getid().'][]');
63
+ $select->setClass('multiselect'.$require.' product-custom-option');
64
+ }
65
+ foreach ($_option->getValues() as $_value) {
66
+ $priceStr = $this->_formatPrice(array(
67
+ 'is_percent' => ($_value->getPriceType() == 'percent'),
68
+ 'pricing_value' => $_value->getPrice(($_value->getPriceType() == 'percent'))
69
+ ), false);
70
+ $select->addOption(
71
+ $_value->getOptionTypeId(),
72
+ $_value->getTitle() . ' ' . $priceStr . '',
73
+ array('price' => $this->helper('core')->currencyByStore($_value->getPrice(true), $store, false))
74
+ );
75
+ }
76
+ if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_MULTIPLE) {
77
+ $extraParams = ' multiple="multiple"';
78
+ }
79
+ if (!$this->getSkipJsReloadPrice()) {
80
+ $extraParams .= ' onchange="opConfig.reloadPrice()"';
81
+ }
82
+ $select->setExtraParams($extraParams);
83
+
84
+ if ($configValue) {
85
+ $select->setValue($configValue);
86
+ }
87
+
88
+ return $select->getHtml();
89
+ }
90
+
91
+ if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO
92
+ || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX
93
+ ) {
94
+ $selectHtml = '<ul id="options-'.$_option->getId().'-list" class="options-list">';
95
+ $require = ($_option->getIsRequire()) ? ' validate-one-required-by-name' : '';
96
+ $arraySign = '';
97
+ switch ($_option->getType()) {
98
+ case Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO:
99
+ $type = 'radio';
100
+ $class = 'radio';
101
+ if (!$_option->getIsRequire()) {
102
+ $selectHtml .= '<li><input type="radio" id="options_' . $_option->getId() . '" class="'
103
+ . $class . ' product-custom-option" name="options[' . $_option->getId() . ']"'
104
+ . ($this->getSkipJsReloadPrice() ? '' : ' onclick="opConfig.reloadPrice()"')
105
+ . ' value="" checked="checked" /><span class="label"><label for="options_'
106
+ . $_option->getId() . '">' . $this->__('None') . '</label></span></li>';
107
+ }
108
+ break;
109
+ case Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX:
110
+ $type = 'checkbox';
111
+ $class = 'checkbox';
112
+ $arraySign = '[]';
113
+ break;
114
+ }
115
+ $count = 1;
116
+ foreach ($_option->getValues() as $_value) {
117
+ $count++;
118
+
119
+ $priceStr = $this->_formatPrice(array(
120
+ 'is_percent' => ($_value->getPriceType() == 'percent'),
121
+ 'pricing_value' => $_value->getPrice($_value->getPriceType() == 'percent')
122
+ ));
123
+
124
+ $htmlValue = $_value->getOptionTypeId();
125
+ if ($arraySign) {
126
+ $checked = (is_array($configValue) && in_array($htmlValue, $configValue)) ? 'checked' : '';
127
+ } else {
128
+ $checked = $configValue == $htmlValue ? 'checked' : '';
129
+ }
130
+
131
+ $selectHtml .= '<li>' . '<input type="' . $type . '" class="' . $class . ' ' . $require
132
+ . ' product-custom-option"'
133
+ . ($this->getSkipJsReloadPrice() ? '' : ' onclick="opConfig.reloadPrice()"')
134
+ . ' name="options[' . $_option->getId() . ']' . $arraySign . '" id="options_' . $_option->getId()
135
+ . '_' . $count . '" value="' . $htmlValue . '" ' . $checked . ' price="'
136
+ . $this->helper('core')->currencyByStore($_value->getPrice(true), $store, false) . '" />'
137
+ . '<span class="label"><label for="options_' . $_option->getId() . '_' . $count . '">'
138
+ . $_value->getTitle() . ' ' . $priceStr . '</label></span>';
139
+ if ($_option->getIsRequire()) {
140
+ $selectHtml .= '<script type="text/javascript">' . '$(\'options_' . $_option->getId() . '_'
141
+ . $count . '\').advaiceContainer = \'options-' . $_option->getId() . '-container\';'
142
+ . '$(\'options_' . $_option->getId() . '_' . $count
143
+ . '\').callbackFunction = \'validateOptionsCallback\';' . '</script>';
144
+ }
145
+ $selectHtml .= '</li>';
146
+ }
147
+ $selectHtml .= '</ul>';
148
+
149
+ return $selectHtml;
150
+ }
151
+ }
152
+
153
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Options/Type/Text.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product options text type block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Options_Type_Text
36
+ extends Mage_Catalog_Block_Product_View_Options_Abstract
37
+ {
38
+
39
+ /**
40
+ * Returns default value to show in text input
41
+ *
42
+ * @return string
43
+ */
44
+ public function getDefaultValue()
45
+ {
46
+ return $this->getProduct()->getPreconfiguredValues()->getData('options/' . $this->getOption()->getId());
47
+ }
48
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Price.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog product price block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Price extends Mage_Core_Block_Template
36
+ {
37
+ public function getPrice()
38
+ {
39
+ $product = Mage::registry('product');
40
+ /*if($product->isConfigurable()) {
41
+ $price = $product->getCalculatedPrice((array)$this->getRequest()->getParam('super_attribute', array()));
42
+ return Mage::app()->getStore()->formatPrice($price);
43
+ }*/
44
+
45
+ return $product->getFormatedPrice();
46
+ }
47
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Tabs.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Product information tabs
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Musho_Flipdefine_Block_Product_View_Tabs extends Mage_Core_Block_Template
36
+ {
37
+ protected $_tabs = array();
38
+
39
+ /**
40
+ * Add tab to the container
41
+ *
42
+ * @param string $title
43
+ * @param string $block
44
+ * @param string $template
45
+ */
46
+ function addTab($alias, $title, $block, $template)
47
+ {
48
+
49
+ if (!$title || !$block || !$template) {
50
+ return false;
51
+ }
52
+
53
+ $this->_tabs[] = array(
54
+ 'alias' => $alias,
55
+ 'title' => $title
56
+ );
57
+
58
+ $this->setChild($alias,
59
+ $this->getLayout()->createBlock($block, $alias)
60
+ ->setTemplate($template)
61
+ );
62
+ }
63
+
64
+ function getTabs()
65
+ {
66
+ return $this->_tabs;
67
+ }
68
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Configurable.php ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog super product configurable part block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Type_Configurable extends Mage_Catalog_Block_Product_View_Abstract
36
+ {
37
+ /**
38
+ * Prices
39
+ *
40
+ * @var array
41
+ */
42
+ protected $_prices = array();
43
+
44
+ /**
45
+ * Prepared prices
46
+ *
47
+ * @var array
48
+ */
49
+ protected $_resPrices = array();
50
+
51
+ /**
52
+ * Get allowed attributes
53
+ *
54
+ * @return array
55
+ */
56
+ public function getAllowAttributes()
57
+ {
58
+ return $this->getProduct()->getTypeInstance(true)
59
+ ->getConfigurableAttributes($this->getProduct());
60
+ }
61
+
62
+ /**
63
+ * Check if allowed attributes have options
64
+ *
65
+ * @return bool
66
+ */
67
+ public function hasOptions()
68
+ {
69
+ $attributes = $this->getAllowAttributes();
70
+ if (count($attributes)) {
71
+ foreach ($attributes as $attribute) {
72
+ /** @var Mage_Catalog_Model_Product_Type_Configurable_Attribute $attribute */
73
+ if ($attribute->getData('prices')) {
74
+ return true;
75
+ }
76
+ }
77
+ }
78
+ return false;
79
+ }
80
+
81
+ /**
82
+ * Get Allowed Products
83
+ *
84
+ * @return array
85
+ */
86
+ public function getAllowProducts()
87
+ {
88
+ if (!$this->hasAllowProducts()) {
89
+ $products = array();
90
+ $skipSaleableCheck = Mage::helper('catalog/product')->getSkipSaleableCheck();
91
+ $allProducts = $this->getProduct()->getTypeInstance(true)
92
+ ->getUsedProducts(null, $this->getProduct());
93
+ foreach ($allProducts as $product) {
94
+ if ($product->isSaleable() || $skipSaleableCheck) {
95
+ $products[] = $product;
96
+ }
97
+ }
98
+ $this->setAllowProducts($products);
99
+ }
100
+ return $this->getData('allow_products');
101
+ }
102
+
103
+ /**
104
+ * retrieve current store
105
+ *
106
+ * @return Mage_Core_Model_Store
107
+ */
108
+ public function getCurrentStore()
109
+ {
110
+ return Mage::app()->getStore();
111
+ }
112
+
113
+ /**
114
+ * Returns additional values for js config, con be overriden by descedants
115
+ *
116
+ * @return array
117
+ */
118
+ protected function _getAdditionalConfig()
119
+ {
120
+ return array();
121
+ }
122
+
123
+ /**
124
+ * Composes configuration for js
125
+ *
126
+ * @return string
127
+ */
128
+ public function getJsonConfig()
129
+ {
130
+ $attributes = array();
131
+ $options = array();
132
+ $store = $this->getCurrentStore();
133
+ $taxHelper = Mage::helper('tax');
134
+ $currentProduct = $this->getProduct();
135
+
136
+ $preconfiguredFlag = $currentProduct->hasPreconfiguredValues();
137
+ if ($preconfiguredFlag) {
138
+ $preconfiguredValues = $currentProduct->getPreconfiguredValues();
139
+ $defaultValues = array();
140
+ }
141
+
142
+ foreach ($this->getAllowProducts() as $product) {
143
+ $productId = $product->getId();
144
+
145
+ foreach ($this->getAllowAttributes() as $attribute) {
146
+ $productAttribute = $attribute->getProductAttribute();
147
+ $productAttributeId = $productAttribute->getId();
148
+ $attributeValue = $product->getData($productAttribute->getAttributeCode());
149
+ if (!isset($options[$productAttributeId])) {
150
+ $options[$productAttributeId] = array();
151
+ }
152
+
153
+ if (!isset($options[$productAttributeId][$attributeValue])) {
154
+ $options[$productAttributeId][$attributeValue] = array();
155
+ }
156
+ $options[$productAttributeId][$attributeValue][] = $productId;
157
+ }
158
+ }
159
+
160
+ $this->_resPrices = array(
161
+ $this->_preparePrice($currentProduct->getFinalPrice())
162
+ );
163
+
164
+ foreach ($this->getAllowAttributes() as $attribute) {
165
+ $productAttribute = $attribute->getProductAttribute();
166
+ $attributeId = $productAttribute->getId();
167
+ $info = array(
168
+ 'id' => $productAttribute->getId(),
169
+ 'code' => $productAttribute->getAttributeCode(),
170
+ 'label' => $attribute->getLabel(),
171
+ 'options' => array()
172
+ );
173
+
174
+ $optionPrices = array();
175
+ $prices = $attribute->getPrices();
176
+ if (is_array($prices)) {
177
+ foreach ($prices as $value) {
178
+ if(!$this->_validateAttributeValue($attributeId, $value, $options)) {
179
+ continue;
180
+ }
181
+ $currentProduct->setConfigurablePrice(
182
+ $this->_preparePrice($value['pricing_value'], $value['is_percent'])
183
+ );
184
+ $currentProduct->setParentId(true);
185
+ Mage::dispatchEvent(
186
+ 'catalog_product_type_configurable_price',
187
+ array('product' => $currentProduct)
188
+ );
189
+ $configurablePrice = $currentProduct->getConfigurablePrice();
190
+
191
+ if (isset($options[$attributeId][$value['value_index']])) {
192
+ $productsIndex = $options[$attributeId][$value['value_index']];
193
+ } else {
194
+ $productsIndex = array();
195
+ }
196
+
197
+ $info['options'][] = array(
198
+ 'id' => $value['value_index'],
199
+ 'label' => $value['label'],
200
+ 'price' => $configurablePrice,
201
+ 'oldPrice' => $this->_prepareOldPrice($value['pricing_value'], $value['is_percent']),
202
+ 'products' => $productsIndex,
203
+ );
204
+ $optionPrices[] = $configurablePrice;
205
+ }
206
+ }
207
+ /**
208
+ * Prepare formated values for options choose
209
+ */
210
+ foreach ($optionPrices as $optionPrice) {
211
+ foreach ($optionPrices as $additional) {
212
+ $this->_preparePrice(abs($additional-$optionPrice));
213
+ }
214
+ }
215
+ if($this->_validateAttributeInfo($info)) {
216
+ $attributes[$attributeId] = $info;
217
+ }
218
+
219
+ // Add attribute default value (if set)
220
+ if ($preconfiguredFlag) {
221
+ $configValue = $preconfiguredValues->getData('super_attribute/' . $attributeId);
222
+ if ($configValue) {
223
+ $defaultValues[$attributeId] = $configValue;
224
+ }
225
+ }
226
+ }
227
+
228
+ $taxCalculation = Mage::getSingleton('tax/calculation');
229
+ if (!$taxCalculation->getCustomer() && Mage::registry('current_customer')) {
230
+ $taxCalculation->setCustomer(Mage::registry('current_customer'));
231
+ }
232
+
233
+ $_request = $taxCalculation->getRateRequest(false, false, false);
234
+ $_request->setProductClassId($currentProduct->getTaxClassId());
235
+ $defaultTax = $taxCalculation->getRate($_request);
236
+
237
+ $_request = $taxCalculation->getRateRequest();
238
+ $_request->setProductClassId($currentProduct->getTaxClassId());
239
+ $currentTax = $taxCalculation->getRate($_request);
240
+
241
+ $taxConfig = array(
242
+ 'includeTax' => $taxHelper->priceIncludesTax(),
243
+ 'showIncludeTax' => $taxHelper->displayPriceIncludingTax(),
244
+ 'showBothPrices' => $taxHelper->displayBothPrices(),
245
+ 'defaultTax' => $defaultTax,
246
+ 'currentTax' => $currentTax,
247
+ 'inclTaxTitle' => Mage::helper('catalog')->__('Incl. Tax')
248
+ );
249
+
250
+ $config = array(
251
+ 'attributes' => $attributes,
252
+ 'template' => str_replace('%s', '#{price}', $store->getCurrentCurrency()->getOutputFormat()),
253
+ 'basePrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getFinalPrice())),
254
+ 'oldPrice' => $this->_registerJsPrice($this->_convertPrice($currentProduct->getPrice())),
255
+ 'productId' => $currentProduct->getId(),
256
+ 'chooseText' => Mage::helper('catalog')->__('Choose an Option...'),
257
+ 'taxConfig' => $taxConfig
258
+ );
259
+
260
+ if ($preconfiguredFlag && !empty($defaultValues)) {
261
+ $config['defaultValues'] = $defaultValues;
262
+ }
263
+
264
+ $config = array_merge($config, $this->_getAdditionalConfig());
265
+
266
+ return Mage::helper('core')->jsonEncode($config);
267
+ }
268
+
269
+ /**
270
+ * Validating of super product option value
271
+ *
272
+ * @param array $attributeId
273
+ * @param array $value
274
+ * @param array $options
275
+ * @return boolean
276
+ */
277
+ protected function _validateAttributeValue($attributeId, &$value, &$options)
278
+ {
279
+ if(isset($options[$attributeId][$value['value_index']])) {
280
+ return true;
281
+ }
282
+
283
+ return false;
284
+ }
285
+
286
+ /**
287
+ * Validation of super product option
288
+ *
289
+ * @param array $info
290
+ * @return boolean
291
+ */
292
+ protected function _validateAttributeInfo(&$info)
293
+ {
294
+ if(count($info['options']) > 0) {
295
+ return true;
296
+ }
297
+ return false;
298
+ }
299
+
300
+ /**
301
+ * Calculation real price
302
+ *
303
+ * @param float $price
304
+ * @param bool $isPercent
305
+ * @return mixed
306
+ */
307
+ protected function _preparePrice($price, $isPercent = false)
308
+ {
309
+ if ($isPercent && !empty($price)) {
310
+ $price = $this->getProduct()->getFinalPrice() * $price / 100;
311
+ }
312
+
313
+ return $this->_registerJsPrice($this->_convertPrice($price, true));
314
+ }
315
+
316
+ /**
317
+ * Calculation price before special price
318
+ *
319
+ * @param float $price
320
+ * @param bool $isPercent
321
+ * @return mixed
322
+ */
323
+ protected function _prepareOldPrice($price, $isPercent = false)
324
+ {
325
+ if ($isPercent && !empty($price)) {
326
+ $price = $this->getProduct()->getPrice() * $price / 100;
327
+ }
328
+
329
+ return $this->_registerJsPrice($this->_convertPrice($price, true));
330
+ }
331
+
332
+ /**
333
+ * Replace ',' on '.' for js
334
+ *
335
+ * @param float $price
336
+ * @return string
337
+ */
338
+ protected function _registerJsPrice($price)
339
+ {
340
+ return str_replace(',', '.', $price);
341
+ }
342
+
343
+ /**
344
+ * Convert price from default currency to current currency
345
+ *
346
+ * @param float $price
347
+ * @param boolean $round
348
+ * @return float
349
+ */
350
+ protected function _convertPrice($price, $round = false)
351
+ {
352
+ if (empty($price)) {
353
+ return 0;
354
+ }
355
+
356
+ $price = $this->getCurrentStore()->convertPrice($price);
357
+ if ($round) {
358
+ $price = $this->getCurrentStore()->roundPrice($price);
359
+ }
360
+
361
+ return $price;
362
+ }
363
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Grouped.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+
28
+ /**
29
+ * Catalog grouped product info block
30
+ *
31
+ * @category Mage
32
+ * @package Mage_Catalog
33
+ * @author Magento Core Team <core@magentocommerce.com>
34
+ */
35
+ class Mage_Catalog_Block_Product_View_Type_Grouped extends Mage_Catalog_Block_Product_View_Abstract
36
+ {
37
+ public function getAssociatedProducts()
38
+ {
39
+ return $this->getProduct()->getTypeInstance(true)
40
+ ->getAssociatedProducts($this->getProduct());
41
+ }
42
+
43
+
44
+ /**
45
+ * Set preconfigured values to grouped associated products
46
+ *
47
+ * @return Mage_Catalog_Block_Product_View_Type_Grouped
48
+ */
49
+ public function setPreconfiguredValue() {
50
+ $configValues = $this->getProduct()->getPreconfiguredValues()->getSuperGroup();
51
+ if (is_array($configValues)) {
52
+ $associatedProducts = $this->getAssociatedProducts();
53
+ foreach ($associatedProducts as $item) {
54
+ if (isset($configValues[$item->getId()])) {
55
+ $item->setQty($configValues[$item->getId()]);
56
+ }
57
+ }
58
+ }
59
+ return $this;
60
+ }
61
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Simple.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Simple product data view
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_Catalog_Block_Product_View_Type_Simple extends Mage_Catalog_Block_Product_View_Abstract
35
+ {
36
+ }
app/code/community/Musho/Flipdefine/Block/Product/View/Type/Virtual.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Simple product data view
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_Catalog_Block_Product_View_Type_Virtual extends Mage_Catalog_Block_Product_View_Abstract
35
+ {
36
+
37
+ }
app/code/community/Musho/Flipdefine/Block/Product/Widget/Html/Pager.php ADDED
@@ -0,0 +1,299 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * New products widget pager block
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_Catalog_Block_Product_Widget_Html_Pager extends Mage_Page_Block_Html_Pager
35
+ {
36
+ /**
37
+ * Collection size
38
+ *
39
+ * Size of collection which may has a manual limitation
40
+ *
41
+ * @var int
42
+ */
43
+ protected $_collectionSize;
44
+
45
+ /**
46
+ * Current page
47
+ *
48
+ * @var int
49
+ */
50
+ protected $_currentPage;
51
+
52
+ /**
53
+ * Last page
54
+ *
55
+ * @var int
56
+ */
57
+ protected $_lastPage;
58
+
59
+ /**
60
+ * Return collection size
61
+ *
62
+ * It may be limited by manual
63
+ *
64
+ * @return int
65
+ */
66
+ public function getCollectionSize()
67
+ {
68
+ if (null === $this->_collectionSize) {
69
+ $this->_collectionSize = $this->getCollection()->getSize();
70
+ if ($this->getTotalLimit() && $this->_collectionSize > $this->getTotalLimit()) {
71
+ $this->_collectionSize = $this->getTotalLimit();
72
+ }
73
+ }
74
+ return $this->_collectionSize;
75
+ }
76
+
77
+ /**
78
+ * Return number of current page
79
+ *
80
+ * If current page is grate then total count of page current page will be equals total count of page
81
+ *
82
+ * @return int
83
+ */
84
+ public function getCurrentPage()
85
+ {
86
+ if (null === $this->_currentPage) {
87
+ $page = abs((int)$this->getRequest()->getParam($this->getPageVarName()));
88
+ if ($page > $this->getLastPageNum()) {
89
+ $this->_currentPage = $this->getLastPageNum();
90
+ } elseif ($page > 0) {
91
+ $this->_currentPage = $page;
92
+ } else {
93
+ $this->_currentPage = 1;
94
+ }
95
+ }
96
+ return $this->_currentPage;
97
+ }
98
+
99
+ /**
100
+ * Return items count per page
101
+ *
102
+ * @return int
103
+ */
104
+ public function getLimit()
105
+ {
106
+ if ($this->_limit > 0) {
107
+ return $this->_limit;
108
+ }
109
+ $limit = $this->getRequest()->getParam($this->getLimitVarName());
110
+ $limits = $this->getAvailableLimit();
111
+ if ($limit && isset($limits[$limit])) {
112
+ return $limit;
113
+ }
114
+ $limits = array_keys($limits);
115
+ return current($limits);
116
+ }
117
+
118
+ /**
119
+ * Connect collection to paging
120
+ *
121
+ * @param Mage_Core_Model_Resource_Db_Collection_Abstract $collection
122
+ * @return Mage_Catalog_Block_Product_Widget_Html_Pager
123
+ */
124
+ public function setCollection($collection)
125
+ {
126
+ $this->_collection = $collection;
127
+ $this->_collection->setPageSize(null)->setCurPage(null);
128
+
129
+ $collectionOffset = $this->getFirstNum() - 1;
130
+ $collectionLimit = $collectionOffset + $this->getLimit() > $this->getTotalNum()
131
+ ? $this->getTotalNum() - $collectionOffset
132
+ : $this->getLimit();
133
+
134
+ $this->_collection->getSelect()->limit($collectionLimit, $collectionOffset);
135
+ $this->_setFrameInitialized(false);
136
+ return $this;
137
+ }
138
+
139
+ /**
140
+ * Return position number in collection for first item on current page
141
+ *
142
+ * @return int
143
+ */
144
+ public function getFirstNum()
145
+ {
146
+ return $this->getLimit() * ($this->getCurrentPage() - 1) + 1;
147
+ }
148
+
149
+ /**
150
+ * Return position number in collection for last item on current page
151
+ *
152
+ * @return int
153
+ */
154
+ public function getLastNum()
155
+ {
156
+ $collection = $this->getCollection();
157
+ return $this->getLimit() * ($this->getCurrentPage() - 1) + $collection->count();
158
+ }
159
+
160
+ /**
161
+ * Return total number of collection
162
+ *
163
+ * It may be limited by manual
164
+ *
165
+ * @return int
166
+ */
167
+ public function getTotalNum()
168
+ {
169
+ return $this->getCollectionSize();
170
+ }
171
+
172
+ /**
173
+ * Return number of last page
174
+ *
175
+ * @return bool
176
+ */
177
+ public function getLastPageNum()
178
+ {
179
+ if (null === $this->_lastPage) {
180
+ $this->_lastPage = ceil($this->getCollectionSize() / $this->getLimit());
181
+ if ($this->_lastPage <= 0) {
182
+ $this->_lastPage = 1;
183
+ }
184
+ }
185
+ return $this->_lastPage;
186
+ }
187
+
188
+ /**
189
+ * Checks if current page is the first page
190
+ *
191
+ * @return bool
192
+ */
193
+ public function isFirstPage()
194
+ {
195
+ return $this->getCurrentPage() == 1;
196
+ }
197
+
198
+ /**
199
+ * Checks if current page is the last page
200
+ *
201
+ * @return bool
202
+ */
203
+ public function isLastPage()
204
+ {
205
+ return $this->getCurrentPage() >= $this->getLastPageNum();
206
+ }
207
+
208
+ /**
209
+ * Return array of pages
210
+ *
211
+ * @return array
212
+ */
213
+ public function getPages()
214
+ {
215
+ $pages = array();
216
+ if ($this->getLastPageNum() <= $this->_displayPages) {
217
+ $pages = range(1, $this->getLastPageNum());
218
+ } else {
219
+ $half = ceil($this->_displayPages / 2);
220
+ if ($this->getCurrentPage() >= $half && $this->getCurrentPage() <= $this->getLastPageNum() - $half) {
221
+ $start = ($this->getCurrentPage() - $half) + 1;
222
+ $finish = ($start + $this->_displayPages) - 1;
223
+ } elseif ($this->getCurrentPage() < $half) {
224
+ $start = 1;
225
+ $finish = $this->_displayPages;
226
+ } elseif ($this->getCurrentPage() > ($this->getLastPageNum() - $half)) {
227
+ $finish = $this->getLastPageNum();
228
+ $start = $finish - $this->_displayPages + 1;
229
+ }
230
+ $pages = range($start, $finish);
231
+ }
232
+ return $pages;
233
+ }
234
+
235
+ /**
236
+ * Retrieve url for previous page
237
+ *
238
+ * @return string
239
+ */
240
+ public function getPreviousPageUrl()
241
+ {
242
+ return $this->getPageUrl($this->getCurrentPage() - 1);
243
+ }
244
+
245
+ /**
246
+ * Retrieve url for next page
247
+ *
248
+ * @return string
249
+ */
250
+ public function getNextPageUrl()
251
+ {
252
+ return $this->getPageUrl($this->getCurrentPage() + 1);
253
+ }
254
+
255
+ /**
256
+ * Retrieve url for last page
257
+ *
258
+ * @return string
259
+ */
260
+ public function getLastPageUrl()
261
+ {
262
+ return $this->getPageUrl($this->getLastPageNum());
263
+ }
264
+
265
+ /**
266
+ * Initialize frame data, such as frame start, frame start etc.
267
+ *
268
+ * @return Mage_Catalog_Block_Product_Widget_Html_Pager
269
+ */
270
+ protected function _initFrame()
271
+ {
272
+ if (!$this->isFrameInitialized()) {
273
+ $start = 0;
274
+ $end = 0;
275
+
276
+ if ($this->getLastPageNum() <= $this->getFrameLength()) {
277
+ $start = 1;
278
+ $end = $this->getLastPageNum();
279
+ } else {
280
+ $half = ceil($this->getFrameLength() / 2);
281
+ if ($this->getCurrentPage() >= $half && $this->getCurrentPage() <= $this->getLastPageNum() - $half) {
282
+ $start = ($this->getCurrentPage() - $half) + 1;
283
+ $end = ($start + $this->getFrameLength()) - 1;
284
+ } elseif ($this->getCurrentPage() < $half) {
285
+ $start = 1;
286
+ $end = $this->getFrameLength();
287
+ } elseif ($this->getCurrentPage() > ($this->getLastPageNum() - $half)) {
288
+ $end = $this->getLastPageNum();
289
+ $start = $end - $this->getFrameLength() + 1;
290
+ }
291
+ }
292
+ $this->_frameStart = $start;
293
+ $this->_frameEnd = $end;
294
+ $this->_setFrameInitialized(true);
295
+ }
296
+
297
+ return $this;
298
+ }
299
+ }
app/code/community/Musho/Flipdefine/Block/Product/Widget/Link.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Widget to display link to the product
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+
35
+ class Mage_Catalog_Block_Product_Widget_Link
36
+ extends Mage_Catalog_Block_Widget_Link
37
+ {
38
+ /**
39
+ * Initialize entity model
40
+ */
41
+ protected function _construct()
42
+ {
43
+ parent::_construct();
44
+ $this->_entityResource = Mage::getResourceSingleton('catalog/product');
45
+ }
46
+ }
app/code/community/Musho/Flipdefine/Block/Product/Widget/New.php ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Mage
22
+ * @package Mage_Catalog
23
+ * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * New products widget
29
+ *
30
+ * @category Mage
31
+ * @package Mage_Catalog
32
+ * @author Magento Core Team <core@magentocommerce.com>
33
+ */
34
+ class Mage_Catalog_Block_Product_Widget_New extends Mage_Catalog_Block_Product_New
35
+ implements Mage_Widget_Block_Interface
36
+ {
37
+ /**
38
+ * Display products type
39
+ */
40
+ const DISPLAY_TYPE_ALL_PRODUCTS = 'all_products';
41
+ const DISPLAY_TYPE_NEW_PRODUCTS = 'new_products';
42
+
43
+ /**
44
+ * Default value whether show pager or not
45
+ */
46
+ const DEFAULT_SHOW_PAGER = false;
47
+
48
+ /**
49
+ * Default value for products per page
50
+ */
51
+ const DEFAULT_PRODUCTS_PER_PAGE = 5;
52
+
53
+ /**
54
+ * Name of request parameter for page number value
55
+ */
56
+ const PAGE_VAR_NAME = 'np';
57
+
58
+ /**
59
+ * Instance of pager block
60
+ *
61
+ * @var Mage_Catalog_Block_Product_Widget_Html_Pager
62
+ */
63
+ protected $_pager;
64
+
65
+ /**
66
+ * Initialize block's cache and template settings
67
+ */
68
+ protected function _construct()
69
+ {
70
+ parent::_construct();
71
+ $this->addPriceBlockType('bundle', 'bundle/catalog_product_price', 'bundle/catalog/product/price.phtml');
72
+ }
73
+
74
+ /**
75
+ * Product collection initialize process
76
+ *
77
+ * @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
78
+ */
79
+ protected function _getProductCollection()
80
+ {
81
+ switch ($this->getDisplayType()) {
82
+ case self::DISPLAY_TYPE_NEW_PRODUCTS:
83
+ $collection = parent::_getProductCollection();
84
+ break;
85
+ default:
86
+ $collection = $this->_getRecentlyAddedProductsCollection();
87
+ break;
88
+ }
89
+ return $collection;
90
+ }
91
+
92
+ /**
93
+ * Prepare collection for recent product list
94
+ *
95
+ * @return Mage_Catalog_Model_Resource_Product_Collection|Object|Varien_Data_Collection
96
+ */
97
+ protected function _getRecentlyAddedProductsCollection()
98
+ {
99
+ /** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
100
+ $collection = Mage::getResourceModel('catalog/product_collection');
101
+ $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
102
+
103
+ $collection = $this->_addProductAttributesAndPrices($collection)
104
+ ->addStoreFilter()
105
+ ->addAttributeToSort('created_at', 'desc')
106
+ ->setPageSize($this->getProductsCount())
107
+ ->setCurPage(1)
108
+ ;
109
+ return $collection;
110
+ }
111
+
112
+ /**
113
+ * Get key pieces for caching block content
114
+ *
115
+ * @return array
116
+ */
117
+ public function getCacheKeyInfo()
118
+ {
119
+ return array_merge(parent::getCacheKeyInfo(), array(
120
+ $this->getDisplayType(),
121
+ $this->getProductsPerPage(),
122
+ intval($this->getRequest()->getParam(self::PAGE_VAR_NAME))
123
+ ));
124
+ }
125
+
126
+ /**
127
+ * Retrieve display type for products
128
+ *
129
+ * @return string
130
+ */
131
+ public function getDisplayType()
132
+ {
133
+ if (!$this->hasData('display_type')) {
134
+ $this->setData('display_type', self::DISPLAY_TYPE_ALL_PRODUCTS);
135
+ }
136
+ return $this->getData('display_type');
137
+ }
138
+
139
+ /**
140
+ * Retrieve how much products should be displayed
141
+ *
142
+ * @return int
143
+ */
144
+ public function getProductsCount()
145
+ {
146
+ if (!$this->hasData('products_count')) {
147
+ return parent::getProductsCount();
148
+ }
149
+ return $this->getData('products_count');
150
+ }
151
+
152
+ /**
153
+ * Retrieve how much products should be displayed
154
+ *
155
+ * @return int
156
+ */
157
+ public function getProductsPerPage()
158
+ {
159
+ if (!$this->hasData('products_per_page')) {
160
+ $this->setData('products_per_page', self::DEFAULT_PRODUCTS_PER_PAGE);
161
+ }
162
+ return $this->getData('products_per_page');
163
+ }
164
+
165
+ /**
166
+ * Return flag whether pager need to be shown or not
167
+ *
168
+ * @return bool
169
+ */
170
+ public function showPager()
171
+ {
172
+ if (!$this->hasData('show_pager')) {
173
+ $this->setData('show_pager', self::DEFAULT_SHOW_PAGER);
174
+ }
175
+ return (bool)$this->getData('show_pager');
176
+ }
177
+
178
+ /**
179
+ * Render pagination HTML
180
+ *
181
+ * @return string
182
+ */
183
+ public function getPagerHtml()
184
+ {
185
+ if ($this->showPager()) {
186
+ if (!$this->_pager) {
187
+ $this->_pager = $this->getLayout()
188
+ ->createBlock('catalog/product_widget_html_pager', 'widget.new.product.list.pager');
189
+
190
+ $this->_pager->setUseContainer(true)
191
+ ->setShowAmounts(true)
192
+ ->setShowPerPage(false)
193
+ ->setPageVarName(self::PAGE_VAR_NAME)
194
+ ->setLimit($this->getProductsPerPage())
195
+ ->setTotalLimit($this->getProductsCount())
196
+ ->setCollection($this->getProductCollection());
197
+ }
198
+ if ($this->_pager instanceof Mage_Core_Block_Abstract) {
199
+ return $this->_pager->toHtml();
200
+ }
201
+ }
202
+ return '';
203
+ }
204
+ }
app/code/community/Musho/Flipdefine/Block/Products.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Musho_Flipdefine_Block_Products extends Mage_Core_Block_Template{
4
+ public function getAllProducts(){
5
+ foreach(Mage::getModel('catalog/product')->getCollection() as $product){
6
+ $id = $product->getId();
7
+ $pr = $product->load($id);
8
+ $result[$id]= $pr->getData('name') . " (" . $pr->getSku() . ")";
9
+ //($product->load($product->getId())->getData('name'));
10
+ //die(print_r($product->getData()));
11
+ }
12
+ return json_encode($result);
13
+ }
14
+
15
+ public function getAllCategories(){
16
+ foreach(Mage::getModel('catalog/category')->getCollection() as $category){
17
+ $result[$category->getId()] = $category->getName();
18
+ }
19
+ return json_encode($result);
20
+
21
+ }
22
+ }
23
+
24
+
25
+
26
+ ?>
app/code/community/Musho/Flipdefine/controllers/Adminhtml/IndexController.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Helpdesk_Flipdefine_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
4
+ {
5
+ public function indexAction()
6
+ {
7
+ $this->loadLayout();
8
+ $this->renderLayout();
9
+ }
10
+ }
11
+
12
+ ?>
app/code/community/Musho/Flipdefine/controllers/IndexController.php ADDED
@@ -0,0 +1 @@
 
0
  $this->_forward('noRoute');
1
+ <?php
2
  $this->_forward('noRoute');
app/code/community/Musho/Flipdefine/controllers/ProductController.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //touch app/code/local/MyCompanyName/HelloWorld/controllers/ProductController.php
3
+ class Musho_Flipdefine_ProductController extends Mage_Core_Controller_Front_Action{
4
+ public function indexAction(){
5
+ echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
6
+ }
7
+ }
8
+
9
+
10
+ ?>
app/code/community/Musho/Flipdefine/etc/config.xml ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Musho_Flipdefine>
5
+ <version>1.0.0</version>
6
+ </Musho_Flipdefine>
7
+ </modules>
8
+
9
+ <frontend>
10
+ <routers>
11
+ <flipdefine>
12
+ <use>standard</use>
13
+ <args>
14
+ <module>Musho_Flipdefine</module>
15
+ <frontName>flipdefine</frontName>
16
+ </args>
17
+ </flipdefine>
18
+ </routers>
19
+ <layout>
20
+ <updates>
21
+ <Musho_Flipdefine>
22
+ <file>flipdefine.xml</file>
23
+ </Musho_Flipdefine>
24
+ </updates>
25
+ </layout>
26
+ </frontend>
27
+
28
+ <admin>
29
+ <routers>
30
+ <flipdefine>
31
+ <use>admin</use>
32
+ <args>
33
+ <module>Musho_Flipdefine</module>
34
+ <frontName>adminflipdefine</frontName>
35
+ </args>
36
+ </flipdefine>
37
+ </routers>
38
+ </admin>
39
+ <adminhtml>
40
+ <layout>
41
+ <updates>
42
+ <flipdefine>
43
+ <file>flipdefine.xml</file>
44
+ </flipdefine>
45
+ </updates>
46
+ </layout>
47
+ <menu>
48
+ <flipdefine translate="title" module="adminhtml">
49
+ <title>My plugins</title>
50
+ <sort_order>100</sort_order>
51
+ <children>
52
+ <set_time>
53
+ <title>Adress book</title>
54
+ <action>adminflipdefine/adminhtml_index</action>
55
+ </set_time>
56
+ </children>
57
+ </flipdefine>
58
+ </menu>
59
+ </adminhtml>
60
+
61
+ <global>
62
+ <models>
63
+ <flipdefine>
64
+ <class>Musho_Flipdefine_Model</class>
65
+ <resourceModel>flipdefine_mysql4</resourceModel>
66
+ </flipdefine>
67
+ <flipdefine_mysql4>
68
+ <class>Musho_Flipdefine_Model_Mysql4</class>
69
+ <entities>
70
+ <flipdefine>
71
+ <table>Musho_flipdefine</table>
72
+ </flipdefine>
73
+ </entities>
74
+ </flipdefine_mysql4>
75
+ </models>
76
+ <!-- allow the plugin to read and write -->
77
+ <resources>
78
+ <!-- connection to write -->
79
+ <flipdefine_write>
80
+ <connection>
81
+ <use>core_write</use>
82
+ </connection>
83
+ </flipdefine_write>
84
+ <!-- connection to read -->
85
+ <flipdefine_read>
86
+ <connection>
87
+ <use>core_read</use>
88
+ </connection>
89
+ </flipdefine_read>
90
+ </resources>
91
+ <blocks>
92
+ <flipdefine>
93
+ <class>Musho_Flipdefine_Block</class>
94
+ </flipdefine>
95
+ </blocks>
96
+ </global>
97
+
98
+ </config>
app/code/local/VF/EasyAjax/Controller/Varien/Router/Json.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class VF_EasyAjax_Controller_Varien_Router_Json extends Mage_Core_Controller_Varien_Router_Standard
4
+ {
5
+ /**
6
+ * Collect routes
7
+ *
8
+ * @param $configArea
9
+ * @param $useRouterName
10
+ */
11
+ public function collectRoutes($configArea, $useRouterName)
12
+ {
13
+ parent::collectRoutes($configArea, 'standard');
14
+ }
15
+
16
+ /**
17
+ * Match with router
18
+ *
19
+ * @param Zend_Controller_Request_Http $request
20
+ * @return boolean
21
+ */
22
+ public function match(Zend_Controller_Request_Http $request)
23
+ {
24
+ $path = trim($request->getPathInfo(), '/');
25
+
26
+ if (strrpos($path, '.json') === strlen($path) - 5) {
27
+ $request->setPathInfo(substr($path, 0, strlen($path) - 5));
28
+ Mage::getSingleton('easyAjax/core')->setEasyAjax(true);
29
+
30
+ return parent::match($request);
31
+ }
32
+
33
+ return false;
34
+ }
35
+ }
app/code/local/VF/EasyAjax/Model/Core.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension for Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * Easy ajax core model
27
+ *
28
+ * @category VF
29
+ * @package VF_EasyAjax
30
+ * @subpackage Model
31
+ * @author
32
+ */
33
+ class VF_EasyAjax_Model_Core
34
+ {
35
+ /**
36
+ * is easy ajax request
37
+ *
38
+ * @var bool
39
+ */
40
+ protected $_isEasyAjax = null;
41
+
42
+ /**
43
+ * Is easy ajax event processed
44
+ *
45
+ * @var bool
46
+ */
47
+ protected $_proceed = false;
48
+
49
+
50
+ /**
51
+ * Is Easy Ajax Request
52
+ *
53
+ * @return bool
54
+ */
55
+ public function isEasyAjax()
56
+ {
57
+ if ($this->_isEasyAjax === null) {
58
+ $this->_isEasyAjax = Mage::app()->getRequest()->isXmlHttpRequest()
59
+ && Mage::app()->getRequest()->getParam('easy_ajax', false);
60
+ }
61
+ return (bool) $this->_isEasyAjax;
62
+ }
63
+
64
+ /**
65
+ * Set that is easy ajax request or not
66
+ *
67
+ * @param bool $value
68
+ */
69
+ public function setEasyAjax($value = true)
70
+ {
71
+ $this->_isEasyAjax = (bool) $value;
72
+ }
73
+
74
+ /**
75
+ * Is event processed
76
+ *
77
+ * @return bool
78
+ */
79
+ public function isProceed()
80
+ {
81
+ return (bool) $this->_proceed;
82
+ }
83
+
84
+ /**
85
+ * Set that event processed
86
+ *
87
+ * @return $this
88
+ */
89
+ public function setProceed()
90
+ {
91
+ $this->_proceed = true;
92
+
93
+ return $this;
94
+ }
95
+
96
+ }
app/code/local/VF/EasyAjax/Model/Core/Message.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension for Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * Message model
27
+ * Rewritten for store messages
28
+ *
29
+ * @category VF
30
+ * @package VF_EasyAjax
31
+ * @subpackage Model
32
+ * @author Vladimir Fishchenko <vladimir@fishchenko.com>
33
+ */
34
+ class VF_EasyAjax_Model_Core_Message extends Mage_Core_Model_Message
35
+ {
36
+ protected function _factory($code, $type, $class='', $method='')
37
+ {
38
+ if (Mage::helper('core')->isModuleEnabled('VF_EasyAjax') && Mage::getSingleton('easyAjax/core')->isEasyAjax()) {
39
+ Mage::getSingleton('easyAjax/message_storage')->addMessage($code, $type);
40
+ }
41
+ return parent::_factory($code, $type, $class, $method);
42
+ }
43
+ }
app/code/local/VF/EasyAjax/Model/Core/Message/Collection.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension for Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * Message collection model
27
+ * Rewritten for store messages
28
+ *
29
+ * @category VF
30
+ * @package VF_EasyAjax
31
+ * @subpackage Model
32
+ * @author Vladimir Fishchenko <vladimir@fishchenko.com>
33
+ */
34
+ class VF_EasyAjax_Model_Core_Message_Collection extends Mage_Core_Model_Message_Collection
35
+ {
36
+ /**
37
+ * Adding new message to collection
38
+ *
39
+ * @param Mage_Core_Model_Message_Abstract $message
40
+ *
41
+ * @return Mage_Core_Model_Message_Collection
42
+ */
43
+ public function add(Mage_Core_Model_Message_Abstract $message)
44
+ {
45
+ if (!Mage::helper('core')->isModuleEnabled('VF_EasyAjax') || !Mage::getSingleton('easyAjax/core')->isEasyAjax()) {
46
+ $this->addMessage($message);
47
+ }
48
+
49
+ return $this;
50
+ }
51
+ }
app/code/local/VF/EasyAjax/Model/Message/Storage.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension for Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * Message storage model
27
+ * Store all messages
28
+ *
29
+ * @category VF
30
+ * @package VF_EasyAjax
31
+ * @subpackage Model
32
+ * @author Vladimir Fishchenko <vladimir@fishchenko.com>
33
+ */
34
+ class VF_EasyAjax_Model_Message_Storage
35
+ {
36
+ /**
37
+ * @var array
38
+ */
39
+ protected $_messages = array();
40
+
41
+ /**
42
+ * @param string $code
43
+ * @param string $type
44
+ * @return VF_EasyAjax_Model_Message_Storage
45
+ */
46
+ public function addMessage($code, $type)
47
+ {
48
+ $this->_messages[] = array ('code' => $code, 'type' => $type);
49
+ return $this;
50
+ }
51
+
52
+ /**
53
+ * @return array
54
+ */
55
+ public function getMessages()
56
+ {
57
+ return $this->_messages;
58
+ }
59
+ }
app/code/local/VF/EasyAjax/Model/Observer.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * EasyAjax Event Observer
27
+ *
28
+ * @category VF
29
+ * @package VF_EasyAjax
30
+ * @subpackage Model
31
+ * @author Vladimir Fishchenko <vladimir@fishchenko.com>
32
+ */
33
+ class VF_EasyAjax_Model_Observer
34
+ {
35
+ /**
36
+ * Add Json to response instead of default data
37
+ */
38
+ public function getJson()
39
+ {
40
+ $core = Mage::getSingleton('easyAjax/core');
41
+ if ($core->isEasyAjax() && !$core->isProceed()) {
42
+ $core->setProceed();
43
+ /** @var $messages VF_EasyAjax_Model_Message_Storage */
44
+ $messages = Mage::getSingleton('easyAjax/message_storage');
45
+ /** @var $response VF_EasyAjax_Model_Response */
46
+ $response = Mage::getModel('easyAjax/response');
47
+ $response->setMessages($messages->getMessages());
48
+ $response->loadContent(
49
+ (array) Mage::app()->getRequest()->getParam('action_content', array()),
50
+ (array) Mage::app()->getRequest()->getParam('custom_content', array())
51
+ );
52
+ $response->sendResponse();
53
+ }
54
+ }
55
+ }
app/code/local/VF/EasyAjax/Model/Response.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Vladimir Fishchenko extension for Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ *
12
+ * DISCLAIMER
13
+ *
14
+ * Do not edit or add to this file if you wish to upgrade
15
+ * the VF EasyAjax module to newer versions in the future.
16
+ * If you wish to customize the VF EasyAjax module for your needs
17
+ * please refer to http://www.magentocommerce.com for more information.
18
+ *
19
+ * @category VF
20
+ * @package VF_EasyAjax
21
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ */
24
+
25
+ /**
26
+ * Special response model
27
+ *
28
+ * @category VF
29
+ * @package VF_EasyAjax
30
+ * @subpackage Model
31
+ * @author Vladimir Fishchenko <vladimir@fishchenko.com>
32
+ */
33
+ class VF_EasyAjax_Model_Response extends Varien_Object
34
+ {
35
+ /**
36
+ * @var Zend_Controller_Response_Http
37
+ */
38
+ protected $_response;
39
+
40
+ /**
41
+ * Send response to browser with json content type
42
+ */
43
+ public function sendResponse()
44
+ {
45
+ $this->_response = Mage::app()->getResponse();
46
+
47
+ //check redirect
48
+ if ($this->_response->isRedirect()) {
49
+ $headers = $this->_response->getHeaders();
50
+ $redirect = '';
51
+ foreach ($headers AS $header) {
52
+ if ("Location" == $header["name"]) {
53
+ $redirect = $header["value"];
54
+ break;
55
+ }
56
+ }
57
+ if ($redirect) {
58
+ $this->setRedirect($redirect);
59
+ }
60
+ }
61
+
62
+ $this->_response->clearHeaders();
63
+ $this->_response->setHeader('Content-Type', 'application/json');
64
+ $this->_response->clearBody();
65
+ $this->_response->setBody($this->toJson());
66
+ $this->_response->sendResponse();
67
+ exit;
68
+ }
69
+
70
+ public function loadContent($actionContent, $customContent)
71
+ {
72
+ if ($actionContent) {
73
+ $layout = $this->_loadControllerLayouts();
74
+ $actionContentData = array();
75
+ foreach ($actionContent as $_content) {
76
+ $_block = $layout->getBlock($_content);
77
+ if ($_block) {
78
+ $actionContentData[$_content] = $_block->toHtml();
79
+ }
80
+ }
81
+ if ($actionContentData) {
82
+ $this->setActionContentData($actionContentData);
83
+ }
84
+ }
85
+
86
+ if ($customContent) {
87
+ $layout = $this->_loadCustomLayouts();
88
+ $customContentData = array();
89
+ foreach ($customContent as $_content) {
90
+ $_block = $layout->getBlock($_content);
91
+ if ($_block) {
92
+ $customContentData[$_content] = $_block->toHtml();
93
+ }
94
+ }
95
+ if ($customContentData) {
96
+ $this->setCustomContentData($customContentData);
97
+ }
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Load layouts for current controller
103
+ *
104
+ * @return Mage_Core_Model_Layout
105
+ */
106
+ protected function _loadControllerLayouts()
107
+ {
108
+ $layout = Mage::app()->getLayout();
109
+ $update = $layout->getUpdate();
110
+ // load default handle
111
+ $update->addHandle('default');
112
+ // load store handle
113
+ $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());
114
+ // load theme handle
115
+ $package = Mage::getSingleton('core/design_package');
116
+ $update->addHandle(
117
+ 'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
118
+ );
119
+ // load action handle
120
+ $fullActionName = Mage::app()->getRequest()->getRequestedRouteName() . '_' .
121
+ Mage::app()->getRequest()->getRequestedControllerName() . '_' .
122
+ Mage::app()->getRequest()->getRequestedActionName();
123
+ $update->addHandle(strtolower($fullActionName));
124
+
125
+ //load updates
126
+ $update->load();
127
+ //generate xml
128
+ $layout->generateXml();
129
+ //generate layout blocks
130
+ $layout->generateBlocks();
131
+
132
+ return $layout;
133
+ }
134
+
135
+ /**
136
+ * Load custom layout
137
+ *
138
+ * @return Mage_Core_Model_Layout
139
+ */
140
+ protected function _loadCustomLayouts()
141
+ {
142
+ $layout = Mage::app()->getLayout();
143
+ $update = $layout->getUpdate();
144
+ // load default custom handle
145
+ $update->addHandle('easy_ajax_default');
146
+ // load action handle
147
+ $fullActionName = Mage::app()->getRequest()->getRequestedRouteName() . '_' .
148
+ Mage::app()->getRequest()->getRequestedControllerName() . '_' .
149
+ Mage::app()->getRequest()->getRequestedActionName();
150
+ $update->addHandle('easy_ajax_' . strtolower($fullActionName));
151
+
152
+ if (Mage::app()->useCache('layout')){
153
+ $cacheId = $update->getCacheId().'_easy_ajax';
154
+ $update->setCacheId($cacheId);
155
+
156
+ if (!Mage::app()->loadCache($cacheId)) {
157
+ foreach ($update->getHandles() as $handle) {
158
+ $update->merge($handle);
159
+ }
160
+
161
+ $update->saveCache();
162
+ } else {
163
+ //load updates from cache
164
+ $update->load();
165
+ }
166
+ } else {
167
+ //load updates
168
+ $update->load();
169
+ }
170
+
171
+ //generate xml
172
+ $layout->generateXml();
173
+ //generate layout blocks
174
+ $layout->generateBlocks();
175
+
176
+ return $layout;
177
+ }
178
+ }
app/code/local/VF/EasyAjax/etc/config.xml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ /**
4
+ * Vladimir Fishchenko extension
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade
16
+ * the VF EasyAjax module to newer versions in the future.
17
+ * If you wish to customize the VF EasyAjax module for your needs
18
+ * please refer to http://www.magentocommerce.com for more information.
19
+ *
20
+ * @category VF
21
+ * @package VF_EasyAjax
22
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
23
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
+ */
25
+ -->
26
+ <config>
27
+ <global>
28
+ <models>
29
+ <easyAjax>
30
+ <class>VF_EasyAjax_Model</class>
31
+ </easyAjax>
32
+ <core>
33
+ <rewrite>
34
+ <message>VF_EasyAjax_Model_Core_Message</message>
35
+ <message_collection>VF_EasyAjax_Model_Core_Message_Collection</message_collection>
36
+ </rewrite>
37
+ </core>
38
+ </models>
39
+ </global>
40
+ <frontend>
41
+ <events>
42
+ <controller_action_layout_render_before>
43
+ <observers>
44
+ <easyAjax_get_json>
45
+ <class>easyAjax/observer</class>
46
+ <method>getJson</method>
47
+ </easyAjax_get_json>
48
+ </observers>
49
+ </controller_action_layout_render_before>
50
+ <controller_response_redirect>
51
+ <observers>
52
+ <easyAjax_get_json>
53
+ <class>easyAjax/observer</class>
54
+ <method>getJson</method>
55
+ </easyAjax_get_json>
56
+ </observers>
57
+ </controller_response_redirect>
58
+ <http_response_send_before>
59
+ <observers>
60
+ <easyAjax_get_json>
61
+ <class>easyAjax/observer</class>
62
+ <method>getJson</method>
63
+ </easyAjax_get_json>
64
+ </observers>
65
+ </http_response_send_before>
66
+ </events>
67
+ <layout>
68
+ <updates>
69
+ <vf_eastAjax>
70
+ <file>easy_ajax.xml</file>
71
+ </vf_eastAjax>
72
+ </updates>
73
+ </layout>
74
+ </frontend>
75
+ <default>
76
+ <web>
77
+ <routers>
78
+ <json>
79
+ <area>frontend</area>
80
+ <class>VF_EasyAjax_Controller_Varien_Router_Json</class>
81
+ </json>
82
+ </routers>
83
+ </web>
84
+ </default>
85
+ </config>
86
+
app/design/frontend/base/default/layout/easy_ajax.xml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ /**
4
+ * Vladimir Fishchenko extension for Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ *
13
+ * @category design
14
+ * @package base_default
15
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
16
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
+ */
18
+ -->
19
+ <layout version="0.1.0">
20
+ <default>
21
+ <reference name="head">
22
+ <action method="addJs"><name>easy_ajax.js</name></action>
23
+ </reference>
24
+ </default>
25
+ </layout>
app/design/frontend/base/default/layout/flipdefine.xml ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <layout version="0.1.0">
3
+
4
+
5
+ <default>
6
+ <reference name="root">
7
+ <action method="setTemplate"><template>page/empty.phtml</template></action>
8
+ </reference>
9
+ <reference name="content">
10
+ </reference>
11
+ </default>
12
+ <flipdefine_index_index>
13
+ <reference name="head">
14
+ <action method="addJs"><script>prototype/prototype.js</script></action>
15
+ <action method="addJs"><script>lib/ccard.js</script></action>
16
+ <action method="addJs"><script>prototype/validation.js</script></action>
17
+ <action method="addJs"><script>scriptaculous/builder.js</script></action>
18
+ <action method="addJs"><script>scriptaculous/effects.js</script></action>
19
+ <action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
20
+ <action method="addJs"><script>scriptaculous/controls.js</script></action>
21
+ <action method="addJs"><script>scriptaculous/slider.js</script></action>
22
+ <action method="addJs"><script>varien/js.js</script></action>
23
+ <action method="addJs"><script>varien/form.js</script></action>
24
+ <action method="addJs"><script>varien/menu.js</script></action>
25
+ <action method="addJs"><script>mage/translate.js</script></action>
26
+ <action method="addJs"><script>mage/cookies.js</script></action>
27
+ <action method="addJs"><script>varien/product.js</script></action>
28
+ <action method="addJs"><script>varien/configurable.js</script></action>
29
+ <action method="addJs"><script>js/jquery-2.0.3.js</script></action>
30
+ <action method="addJs"><script>jquery/noconflict.js</script></action>
31
+
32
+ <action method="addCss"><style>css/ajax_cart.css</style></action>
33
+ <!--action method="addJs"><script>js/easy_ajax.js</script></action>
34
+ <action method="addJs"><script>js/ajax_cart.js</script></action-->
35
+
36
+ <action method="addItem"><type>skin_js</type><script>js/easy_ajax.js</script></action>
37
+ <action method="addItem"><type>skin_js</type><script>js/ajax_cart.js</script></action>
38
+
39
+ <action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
40
+ <action method="addItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
41
+ <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
42
+
43
+ <!--action method="addItem"><type>skin_js</type><script>scriptname.js</script></action-->
44
+ </reference>
45
+
46
+ <reference name="content">
47
+ <block type="flipdefine/monblock" name="afficher_monbloc" template="flipdefine/afficher.phtml">
48
+ <block type="flipdefine/product_view" name="product.info" template="flipdefine/product/view.phtml">
49
+
50
+ <block type="flipdefine/product_view_media" name="product.info.media" as="media" template="flipdefine/product/view/media.phtml"/>
51
+ <block type="core/text_list" name="alert.urls" as="alert_urls" translate="label">
52
+ <label>Alert Urls</label>
53
+ </block>
54
+
55
+ <action method="setTierPriceTemplate"><template>flipdefine/product/view/tierprices.phtml</template></action>
56
+
57
+ <block type="flipdefine/product_list_upsell" name="product.info.upsell" as="upsell_products" template="flipdefine/product/list/upsell.phtml">
58
+ <action method="setColumnCount"><columns>4</columns></action>
59
+ <action method="setItemLimit"><type>upsell</type><limit>4</limit></action>
60
+ </block>
61
+
62
+ <block type="flipdefine/product_view_additional" name="product.info.additional" as="product_additional_data" />
63
+ <block type="flipdefine/product_view_description" name="product.description" as="description" template="flipdefine/product/view/description.phtml">
64
+ <action method="addToParentGroup"><group>detailed_info</group></action>
65
+ </block>
66
+ <block type="flipdefine/product_view_attributes" name="product.attributes" as="additional" template="flipdefine/product/view/attributes.phtml">
67
+ <action method="addToParentGroup"><group>detailed_info</group></action>
68
+ </block>
69
+ <block type="flipdefine/product_view" name="product.info.addto" as="addto" template="flipdefine/product/view/addto.phtml"/>
70
+ <block type="flipdefine/product_view" name="product.info.addtocart" as="addtocart" template="flipdefine/product/view/addtocart.phtml"/>
71
+
72
+ <block type="core/text_list" name="product.info.extrahint" as="extrahint" translate="label">
73
+ <label>Product View Extra Hint</label>
74
+ </block>
75
+ </block>
76
+ <block type="flipdefine/product_list_related" name="flipdefine.product.related" before="-" template="flipdefine/product/list/related.phtml"/>
77
+ </block>
78
+ </reference>
79
+ </flipdefine_index_index>
80
+
81
+
82
+ <flipdefine_index_products>
83
+ <reference name="head">
84
+ <action method="removeItem"><type>js</type><name>prototype/prototype.js</name></action>
85
+ <action method="removeItem"><type>js</type><name>lib/ccard.js</name></action>
86
+ <action method="removeItem"><type>js</type><name>prototype/validation.js</name></action>
87
+ <action method="removeItem"><type>js</type><name>scriptaculous/builder.js</name></action>
88
+ <action method="removeItem"><type>js</type><name>scriptaculous/effects.js</name></action>
89
+ <action method="removeItem"><type>js</type><name>scriptaculous/dragdrop.js</name></action>
90
+ <action method="removeItem"><type>js</type><name>scriptaculous/controls.js</name></action>
91
+ <action method="removeItem"><type>js</type><name>scriptaculous/slider.js</name></action>
92
+ <action method="removeItem"><type>js</type><name>varien/js.js</name></action>
93
+ <action method="removeItem"><type>js</type><name>varien/form.js</name></action>
94
+ <action method="removeItem"><type>js</type><name>varien/menu.js</name></action>
95
+ <action method="removeItem"><type>js</type><name>mage/translate.js</name></action>
96
+ <action method="removeItem"><type>js</type><name>mage/cookies.js</name></action>
97
+ <action method="removeItem"><type>js</type><name>varien/product.js</name></action>
98
+ <action method="removeItem"><type>js</type><name>varien/configurable.js</name></action>
99
+ <action method="removeItem"><type>js</type><name>js/jquery-2.0.3.js</name></action>
100
+ <action method="removeItem"><type>js</type><name>jquery/noconflict.js</name></action>
101
+ <action method="removeItem"><type>skin_css</type><style>css/ajax_cart.css</style></action>
102
+ <action method="removeItem"><type>skin_css</type><style>css/print.css</style></action>
103
+ <action method="removeItem"><type>skin_css</type><style>css/webandpeople/custommenu/custommenu.css</style></action>
104
+ <action method="removeItem"><type>skin_css</type><style>css/local.css</style></action>
105
+ <action method="removeItem"><type>js</type><name>easy_ajax.js</name></action>
106
+ <action method="removeItem"><type>js</type><name>js/ddaccordion.js</name></action>
107
+
108
+ <action method="removeItem"><type>js</type><name>js/ajax_cart.js</name></action>
109
+ <action method="removeItem"><type>js_</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
110
+ <action method="removeItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
111
+ <action method="removeItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
112
+ </reference>
113
+ <reference name="content">
114
+ <block type="flipdefine/products" name="flipdefine.products" template="flipdefine/products.phtml"/>
115
+ </reference>
116
+ </flipdefine_index_products>
117
+
118
+ <flipdefine_index_view>
119
+ <reference name="content">
120
+ </reference>
121
+ </flipdefine_index_view>
122
+ </layout>
app/design/frontend/base/default/template/flipdefine/afficher.phtml ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //print_r($_product = $this->getProduct());
3
+ $_product = $this->getProduct();
4
+ if(!$_product->getId()){
5
+ echo "No valid product was found with this ID !";
6
+
7
+ }else{
8
+ $_helper = $this->helper('catalog/output');
9
+ ?>
10
+
11
+ <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
12
+
13
+ <div class="psz-imagesWrapper singleImage" style="display:inline-block; padding-right:20px;">
14
+ <?php if ($_product->getImage() != 'no_selection' && $_product->getImage()): ?>
15
+ <p class="product-image product-image-zoom">
16
+ <?php
17
+ $_img = '<img src="'.$this->helper('catalog/image')->init($_product, 'image')->resize(265).'" alt="'.$this->escapeHtml($this->getImageLabel()).'" title="'.$this->escapeHtml($this->getImageLabel()).'" />';
18
+ echo $_helper->productAttribute($_product, $_img, 'image');
19
+ ?>
20
+ </p>
21
+ <?php endif; ?>
22
+ <span class="clears"></span>
23
+ </div>
24
+
25
+
26
+ <div class="psz-productInfo" style="display:inline-block;">
27
+ <?php // Get the product name here?>
28
+
29
+ <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
30
+
31
+
32
+ <fieldset class="no-display">
33
+ <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
34
+ <input type="hidden" name="related_product" id="related-products-field" value="" />
35
+ </fieldset>
36
+
37
+ <?php //Product Add to Cart button here?>
38
+
39
+ <?php if($_product->isSaleable()): ?>
40
+ <div class="add-to-cart">
41
+ <?php $buttonTitle = $this->__('Add to Cart'); ?>
42
+ <label for="qty"><?php echo $this->__('Qty:') ?></label>
43
+ <input type="text" name="qty" id="qty" maxlength="12" value="<?php echo $this->getMinimalQty($_product) ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />
44
+
45
+ <button type="button" title="<?php echo $buttonTitle ?>" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span><?php echo $buttonTitle ?></span></span></button>
46
+
47
+ </div>
48
+ <?php endif; ?>
49
+
50
+ <?php //Product Description here?>
51
+ <div>
52
+ <?php if ($_product->getPrice()):?>
53
+ <h4><?php echo $this->__('Price') ?></h4>
54
+ <div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getPrice()), 'price') ?></div>
55
+ <?php endif;?>
56
+
57
+ <?php if ($_product->getSpecialPrice()):?>
58
+ <h4><?php echo $this->__('Special Price') ?></h4>
59
+ <div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getPrice()), 'special_price') ?></div>
60
+ <?php endif;?>
61
+
62
+ <?php if ($_product->getShortDescription()):?>
63
+ <h4><?php echo $this->__('Quick Overview') ?></h4>
64
+ <div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
65
+ <?php endif;?>
66
+
67
+ <?php if ($_product->getDescription()):?>
68
+ <h4><?php echo $this->__('Detail Description') ?></h4>
69
+ <div class="Text-2"><?php echo $_helper->productAttribute($_product, nl2br($_product->getDescription()), 'description') ?></div>
70
+ <?php endif;?>
71
+
72
+ <?php if ($_product->getProductUrl()):?>
73
+ <span>or <a id="psz-fullDetails" target="_blank" href="<?php echo $_helper->productAttribute($_product, nl2br($_product->getProductUrl()), 'product_url')?>">View Full Product Details</a></span>
74
+ <?php endif;?>
75
+
76
+
77
+ </div>
78
+ <span class="clears"></span>
79
+
80
+ <?php
81
+ }
82
+
83
+ ?>
84
+
85
+ </div>
86
+ </form>
87
+ <div style="clear:both"></div>
88
+ <div class="block-cart" style="clear:both">
89
+
90
+
91
+ </div>
92
+
93
+
94
+ <div id="ajax-cart-modal" class="ajax-cart-modal" style="display: none;">
95
+ <div class="overlay"></div>
96
+ <div class="block">
97
+ <div class="block-title">
98
+ <strong>
99
+ <!--span id="ajax-cart-modal-title">Message</span-->
100
+ <a class="close-btn" href="javascript:$('ajax-cart-modal').hide();">Continue Shopping</a>
101
+
102
+ <a id="goto-checkout" href="<? echo Mage::getUrl('checkout/cart/'); ?>" class="Blinks">Check Out</a>
103
+
104
+ </strong>
105
+ </div>
106
+ <div class="block-content">
107
+ <p class="block-subtitle" id="ajax-cart-modal-message">What is your favorite Magento feature?</p>
108
+ <div class="actions">
109
+ <button type="button" onclick="$('ajax-cart-modal').hide()" title="Vote" class="button">
110
+ <span><span>OK</span></span>
111
+ </button>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+ <div id="ajax-cart-loading-mask" class="ajax-cart-loading-mask" style="display: none;">
118
+ <div class="overlay"></div>
119
+ <div class="loader"></div>
120
+ </div>
121
+
122
+
123
+
124
+ <script type="text/javascript">
125
+ //<![CDATA[
126
+ var productAddToCartForm = new VarienForm('product_addtocart_form');
127
+ productAddToCartForm.submit = function(button, url) {
128
+ if (this.validator.validate()) {
129
+ var form = this.form;
130
+ var oldUrl = form.action;
131
+
132
+ if (url) {
133
+ form.action = url;
134
+ }
135
+ var e = null;
136
+ try {
137
+ this.form.submit();
138
+ } catch (e) {
139
+ }
140
+ this.form.action = oldUrl;
141
+ if (e) {
142
+ throw e;
143
+ }
144
+
145
+ if (button && button != 'undefined') {
146
+ button.disabled = true;
147
+ }
148
+ }
149
+ }.bind(productAddToCartForm);
150
+
151
+ productAddToCartForm.submitLight = function(button, url){
152
+ if(this.validator) {
153
+ var nv = Validation.methods;
154
+ delete Validation.methods['required-entry'];
155
+ delete Validation.methods['validate-one-required'];
156
+ delete Validation.methods['validate-one-required-by-name'];
157
+ // Remove custom datetime validators
158
+ for (var methodName in Validation.methods) {
159
+ if (methodName.match(/^validate-datetime-.*/i)) {
160
+ delete Validation.methods[methodName];
161
+ }
162
+ }
163
+
164
+ if (this.validator.validate()) {
165
+ if (url) {
166
+ this.form.action = url;
167
+ }
168
+ this.form.submit();
169
+ }
170
+ Object.extend(Validation.methods, nv);
171
+ }
172
+ }.bind(productAddToCartForm);
173
+ //]]>
174
+ </script>
175
+
176
+
app/etc/modules/Musho_All.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version = "1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Musho_Flipdefine>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Musho_Flipdefine>
8
+ </modules>
9
+ </config>
app/etc/modules/VF_EasyAjax.xml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ /**
4
+ * Vladimir Fishchenko extension for Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ *
13
+ * DISCLAIMER
14
+ *
15
+ * Do not edit or add to this file if you wish to upgrade
16
+ * the VF EasyAjax module to newer versions in the future.
17
+ * If you wish to customize the VF EasyAjax module for your needs
18
+ * please refer to http://www.magentocommerce.com for more information.
19
+ *
20
+ * @category VF
21
+ * @package VF_EasyAjax
22
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
23
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
24
+ */
25
+ -->
26
+ <config>
27
+ <modules>
28
+ <VF_EasyAjax>
29
+ <active>true</active>
30
+ <codePool>local</codePool>
31
+ </VF_EasyAjax>
32
+ </modules>
33
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Musho_Flipdefine</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://phaze.com.sg/license_flipdefine">AFPL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>This extension enables clients integrate Flipdefine flipbook with Magento Webbsites.</summary>
10
+ <description>This extension enables clients integrate Flipdefine flipbook with Magento Webbsites. This extension retrieves product information from Magento site and makes the information available for Hotspots creation on Flipdefine dashboard. Using this extension makes clients link product to digital catalog on Flipdefine.</description>
11
+ <notes>Initial Release</notes>
12
+ <authors><author><name>joel tan</name><user>cheetod</user><email>joel.tcy@gmail.com</email></author><author><name>opeyemi emmanuel</name><user>e_opeyemi</user><email>opeyemi.emmanuel@yahoo.com</email></author></authors>
13
+ <date>2013-09-09</date>
14
+ <time>13:07:19</time>
15
+ <contents><target name="magecommunity"><dir name="Musho"><dir name="Flipdefine"><dir name="Block"><file name="Monblock.php" hash="3b4e8bd29389a87185bcc6d3fa1d07e0"/><dir name="Product"><file name="Abstract.php" hash="d6a9d5af1e308190b539cfb47ed17461"/><dir name="Compare"><file name="Abstract.php" hash="78269ca45e70312138222e66d47ce0c5"/><file name="List.php" hash="5d8a8f0aa187ed8fc4b78218b56cddf0"/><file name="Sidebar.php" hash="63d0b9ae33733b0e78d4ad9f10e0e4b0"/></dir><file name="Gallery.php" hash="35f102773273ed3ab0480c21ba3c279f"/><dir name="List"><file name="Crosssell.php" hash="3d36ca4bd92a7982df4700f3a27ace8d"/><file name="Promotion.php" hash="d74c6c08036f398145a791fb8ddeeb29"/><file name="Random.php" hash="0b3b943de3e83cad18e980c524e18c1c"/><file name="Related.php" hash="282c5a8b6616798f667519ad92e472d4"/><file name="Toolbar.php" hash="82db01e9475e7bbf5de00b04eb41f420"/><file name="Upsell.php" hash="c9762620b514587cc544568e1c7f360e"/></dir><file name="List.php" hash="8aab8ddfe96454f09ca10ecc717df2e1"/><file name="New.php" hash="cb124677e00266356f06b2eb260aeb44"/><dir name="Price"><file name="Template.php" hash="4f40d083dd3346932770a76dbe58f87b"/></dir><file name="Price.php" hash="9daedd2d6484d260e16b18a491494997"/><file name="Send.php" hash="42adcde368442b6c036595e7233d7aa2"/><dir name="View"><file name="Abstract.php" hash="bc0aae10b8b4a1cc828715d42ae00202"/><file name="Additional.php" hash="140cd06e88da8e281d2807b3cff07d81"/><file name="Attributes.php" hash="2908c3ee3e3553f4c8e2327d7d3276f6"/><file name="Description.php" hash="2295ea1c5a55e905467e5694279e37e6"/><file name="Media.php" hash="ab57a004791e287fa5f005e9ae8f4ab1"/><dir name="Options"><file name="Abstract.php" hash="8cfc7077188d68a5c6ed0e590c1b96c2"/><dir name="Type"><file name="Date.php" hash="d8d6f664fd350af6ef24339555137e89"/><file name="Default.php" hash="662faa975468e743d10ca0874d2806a2"/><file name="File.php" hash="e954fe2d3afca765c289e18fa6fbb399"/><file name="Select.php" hash="0c91bc6f8ff123f68cea46dc03548e0d"/><file name="Text.php" hash="c61f008cf7f940e27ca79284b9da0706"/></dir></dir><file name="Options.php" hash="f795bb89f7cb6b2d1a313fff63d80292"/><file name="Price.php" hash="e9ca3e84e2934faf2481e95118cd335e"/><file name="Tabs.php" hash="58ac53a9261140637b4c28736a32aa80"/><dir name="Type"><file name="Configurable.php" hash="598fa6accdda0f5e9d9ccc4cc702f768"/><file name="Grouped.php" hash="f5c26394a55341522d043c3e1b9217ae"/><file name="Simple.php" hash="c1b0fe08c3f3b8582201d2d829bcf51d"/><file name="Virtual.php" hash="e1f378e2265d6ec2181531449abb9065"/></dir></dir><file name="View.php" hash="98f3fa133094060bd899a0f436e6bf2f"/><dir name="Widget"><dir name="Html"><file name="Pager.php" hash="7d9cc90487248a2ce8816c733febc2e5"/></dir><file name="Link.php" hash="a465566af5823d8d61973fd1511c429c"/><file name="New.php" hash="876fc482bd5c2dc5862fcd36a44fd35e"/></dir></dir><file name="Products.php" hash="1d50cc12232052074b3922d202efb271"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="6daeacb19aa009a6e246696a23d0be3d"/></dir><file name="IndexController.php" hash="442ed0129502f359c880e10bed905d06"/><file name="ProductController.php" hash="fc6c42a2c335e9de8b00e87e98423080"/></dir><dir name="etc"><file name="config.xml" hash="decf4d3009b5af02ac523c705cad2ed2"/></dir></dir></dir></target><target name="magelocal"><dir name="VF"><dir name="EasyAjax"><dir name="Controller"><dir name="Varien"><dir name="Router"><file name="Json.php" hash="9d8710e011b4e569859ec89df06d89e5"/></dir></dir></dir><dir name="Model"><dir name="Core"><dir name="Message"><file name="Collection.php" hash="8b24a61bd6ffcaf1a069029c4fed9558"/></dir><file name="Message.php" hash="392c75721f3d9a2db5fc5ff0ac4aecb7"/></dir><file name="Core.php" hash="08dde3fd1c2cb399396709560ea1fbc8"/><dir name="Message"><file name="Storage.php" hash="e39615d56420240e164825a89915f4ce"/></dir><file name="Observer.php" hash="6484336803cc1b574973d8056905a4e1"/><file name="Response.php" hash="e04faa384459790e0a914353ef58624e"/></dir><dir name="etc"><file name="config.xml" hash="247d56256c309c69ded56cc7fa282419"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Musho_All.xml" hash="22e2d84c8927917d48424ae8bdd19617"/><file name="VF_EasyAjax.xml" hash="2c38d6596c8bfc606d5e2582fa1e7d82"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="flipdefine.xml" hash="e53ecca308e32ebb35684d126b0297b1"/><file name="easy_ajax.xml" hash="4c04ca0c723e250e30949c032cb03d4d"/></dir><dir name="template"><dir name="flipdefine"><file name="afficher.phtml" hash="7c47ce35f683333a0a27a206a0f12db1"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><file name="ajax-loader.gif" hash="a2b41a6b7a0ffcd37d092ec7ced7a5b1"/></dir><dir name="css"><file name="ajax_cart.css" hash="c7f7f655996df48c93e7f4413fb03d4a"/><file name="local.css" hash="44bbfca123dba565a3426df96e182d63"/></dir><dir name="js"><file name="ajax_cart.js" hash="8d5b1411e8149f73e435341b1aa83783"/><file name="easy_ajax.js" hash="89c639148bdcfc18403e695de347a20d"/></dir></dir></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>
skin/frontend/base/default/css/ajax_cart.css ADDED
@@ -0,0 +1,1950 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .col-right {
2
+ display: none;
3
+ }
4
+ .col-left {
5
+ display: none;
6
+ }
7
+ .col3-layout .col-wrapper .col-main {
8
+ float: none;
9
+ }
10
+ .col3-layout .col-wrapper {
11
+ float: none;
12
+ width: 100%;
13
+ }
14
+
15
+ .col3-layout .col-main {
16
+ width: 100%;
17
+ display: block;
18
+ }
19
+
20
+ .wrapper.fullScreen, .page.fullScreen{
21
+ max-width:100%!important;
22
+ }
23
+
24
+ body{
25
+ background-color: #ffffff;
26
+ font-family: "Trebuchet MS", sans-serif;
27
+ font: 11px/1.35 Arial,Helvetica,sans-serif;
28
+ }
29
+
30
+ input, button{
31
+ font-family: "Trebuchet MS", sans-serif;
32
+ -webkit-border-fit: border;
33
+ }
34
+
35
+ a{
36
+ cursor: pointer;
37
+ }
38
+
39
+ ul{
40
+ margin:0;
41
+ padding:0;
42
+ }
43
+
44
+ .messages{
45
+ display:none;
46
+ }
47
+
48
+ .page-title.category-title{
49
+ display:none!important;
50
+ }
51
+
52
+ #zmags-dpw-overlay{
53
+ /* position: fixed;*/
54
+ top:0;
55
+ right:0;
56
+ bottom:0;
57
+ left:0;
58
+ }
59
+
60
+ #zmags-dpw-wrapper{
61
+ z-index:99;
62
+ }
63
+
64
+ #zmags-dpw.loading{
65
+ height:auto;
66
+ margin: 90px auto;
67
+ width: 660px;
68
+ left:20px;
69
+ }
70
+
71
+
72
+
73
+ .psz-dpw{
74
+ position: relative;
75
+ margin:90px -310px;
76
+ background: #ffffff;
77
+ box-shadow: 0px 0px 3px rgba(0,0,0,0.2);
78
+ width:620px;
79
+ float:left;
80
+ left:50%;
81
+ padding: 40px 20px 30px 20px;
82
+ font-size:150%;
83
+ z-index: 9999;
84
+ }
85
+
86
+ #zmags-dpw.loading .psz-dpw{
87
+ margin:0;
88
+ float:none;
89
+ left:auto;
90
+ }
91
+
92
+ #psz-closeDpw{
93
+ font-family: "ProximaNova-Regular",sans-serif;
94
+ position: absolute;
95
+ top: 10px;
96
+ right: 10px;
97
+ color:#656565;
98
+ font-weight:bold;
99
+ font-size: 65%;
100
+ cursor: pointer;
101
+ *position:relative;
102
+ *float:right;
103
+ *top:-25px;
104
+ *right:-10px;
105
+ }
106
+
107
+ #psz-closeDpw b{
108
+ display:inline-block;
109
+ width: 12px;
110
+ height: 12px;
111
+ background: url(../images/closeDpw.jpg);
112
+ position: relative;
113
+ top:2px;
114
+ }
115
+
116
+ .psz-imagesWrapper {
117
+ float:left;
118
+ margin-right:20px;
119
+ text-align: center;
120
+ width:290px;
121
+ position: relative;
122
+ }
123
+
124
+ .psz-imagesWrapper a{
125
+ display: block;
126
+ position: absolute;
127
+
128
+ left:0;
129
+ top:0;
130
+ width: 20px;
131
+ height: 250px;
132
+ line-height: 250px;
133
+ color:#c2c2c2;
134
+ font-size: 3.2em;
135
+ font-weight: bold;
136
+ font-family: "Lucida Sans", Arial, sans-serif;
137
+ text-align:center;
138
+ text-decoration:none;
139
+ }
140
+
141
+ .psz-imagesWrapper #nextImg{
142
+ left:auto;
143
+ right:0;
144
+ *left:270px;
145
+ }
146
+
147
+ .psz-imagesWrapper a:hover{
148
+ color:#000000;
149
+ }
150
+
151
+ .singleImage a{
152
+ visibility: hidden;
153
+ }
154
+
155
+ .psz-imagesWrapper a.disabled{
156
+ color:#eeeeee;
157
+ }
158
+
159
+ .psz-imagesWrapper a.disabled:hover{
160
+ color:#eeeeee;
161
+ cursor: default;
162
+ }
163
+
164
+ .psz-imagesWrapper img{
165
+ width:auto;
166
+ height:250px;
167
+ display: block;
168
+ margin:0 auto;
169
+ }
170
+
171
+ .psz-imagesWrapper div{
172
+ width:290px;
173
+ text-align: center;
174
+ float: left;
175
+ clear: both;
176
+ margin-top:15px;
177
+ }
178
+
179
+ .psz-imagesWrapper ul{
180
+ list-style: none;
181
+ display: inline-block;
182
+ }
183
+
184
+ .psz-imagesWrapper li{
185
+ list-style: none;
186
+ display: inline-block;
187
+ float: left;
188
+ height:6px;
189
+ width:6px;
190
+ border-radius: 3px;
191
+ background:#999999;
192
+ margin:0 5px;
193
+ cursor: pointer;
194
+ }
195
+
196
+ .psz-imagesWrapper li.active{
197
+ background: #D01F26;
198
+ }
199
+
200
+ .psz-productInfo{
201
+ float: left;
202
+ clear: right;
203
+ width: 290px;
204
+ }
205
+
206
+ .psz-productInfo h1{
207
+ font-style: normal;
208
+ font-family: "BauerBodoniBT-Italic",Georgia,serif;
209
+ font-size: 150%;
210
+ font-weight: normal;
211
+ margin-bottom: 15px;
212
+ margin-top:0;
213
+ float: left;
214
+ clear: both;
215
+ display: block;
216
+ *width:100%;
217
+ border:0!important;
218
+ }
219
+
220
+ .psz-productInfo h2{
221
+ font-family: "ProximaNova-Semibold",sans-serif;
222
+ font-size: 100%;
223
+ font-weight: normal;
224
+ margin-bottom: 7px;
225
+ margin-top:0;
226
+ float: left;
227
+ clear: both;
228
+ display: block;
229
+ *width:100%;
230
+ }
231
+
232
+ .psz-productInfo h3{
233
+ font-family: "ProximaNova-Semibold",sans-serif;
234
+ font-size: 100%;
235
+ font-weight: normal;
236
+ margin-bottom: 15px;
237
+ margin-top:0;
238
+ float: left;
239
+ clear: both;
240
+ display: block;
241
+ *width:100%;
242
+ }
243
+ .psz-productInfo h3 b{
244
+ font-family: "ProximaNova-Regular",sans-serif;
245
+ color:#D0222C;
246
+ font-weight:normal;
247
+ margin-left:0.5em;
248
+ }
249
+
250
+ .psz-productInfo #psz-form{
251
+ font-size:70%;
252
+ float: left;
253
+ clear: both;
254
+ display: block;
255
+ *width:100%;
256
+ }
257
+
258
+ /*.outOfStock #psz-form, */
259
+ .comingSoon #psz-form{
260
+ display:none!important;
261
+ }
262
+
263
+ #psz-form + span{
264
+ float:left;
265
+ clear: both;
266
+ font-size: 75%;
267
+ margin:25px 0;
268
+ width:100%;
269
+ }
270
+
271
+ .psz-productInfo a{
272
+ color:#656565;
273
+ text-decoration: underline;
274
+ cursor: pointer;
275
+ font-weight: bold;
276
+ }
277
+
278
+ .psz-productInfo label{
279
+ float:left;
280
+ clear: both;
281
+ margin-bottom: 7px;
282
+ }
283
+
284
+
285
+ .psz-productInfo select{
286
+ font-size:90%;
287
+ float: left;
288
+ clear: both;
289
+ border-radius: 2px;
290
+ border:1px solid #c5c5c5;
291
+ height: 20px;
292
+ line-height: 22px;
293
+ min-width: 148px;
294
+ padding: 1px 0 0 4px;
295
+ margin-bottom: 8px;
296
+ }
297
+
298
+
299
+ #psz-productQty{
300
+ float: left;
301
+ font-size:90%;
302
+ border-radius: 2px;
303
+ border:1px solid #c5c5c5;
304
+ height: 20px;
305
+ line-height: 22px;
306
+ width:30px;
307
+ padding: 0;
308
+ margin: 0 5px;
309
+ text-align: center;
310
+ }
311
+
312
+ #psz-qtyControls{
313
+ float:left;
314
+ clear:both;
315
+ width:100%;
316
+ }
317
+
318
+ #psz-qtyMinus{
319
+ clear: left;
320
+ }
321
+
322
+ #psz-qtyMinus, #psz-qtyPlus{
323
+ float: left;
324
+ border-radius: 2px;
325
+ border:1px solid #c5c5c5;
326
+ padding: 0 0 1px 0;
327
+ color:#c5c5c5;
328
+ font-weight: bold;
329
+ margin-bottom: 25px;
330
+ display: inline-block;
331
+ width: 22px;
332
+ height: 22px;
333
+ background: #ffffff;
334
+ text-align: center;
335
+ cursor: pointer;
336
+ }
337
+
338
+ #psz-qtyMinus:active, #psz-qtyPlus:active{
339
+ box-shadow:inset 1px 1px 1px #c5c5c5;
340
+ text-indent: 1px;
341
+ }
342
+
343
+ #psz-addToBag{
344
+ font-family: "ProximaNova-Semibold",sans-serif;
345
+ width:218px;
346
+ border:1px solid #000;
347
+ border-radius: 3px;
348
+ background-color: #999999;
349
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#999999), to(#000000));
350
+ background-image: -webkit-linear-gradient(top, #999999, #000000);
351
+ background-image: -moz-linear-gradient(top, #999999, #000000);
352
+ background-image: -o-linear-gradient(top, #999999, #000000);
353
+ background-image: linear-gradient(to bottom, #999999, #000000);
354
+ color:#ffffff;
355
+ font-weight: normal;
356
+ line-height: 32px;
357
+ font-size:110%;
358
+ padding:0;
359
+ float: left;
360
+ clear: both;
361
+ box-shadow:inset 0px 0px 2px #c5c5c5;
362
+ text-shadow:1px 1px 2px #000;
363
+ cursor: pointer;
364
+ text-align:center;
365
+ }
366
+
367
+
368
+ #psz-addToBag:active{
369
+ box-shadow:inset 0px 0px 3px #000000;
370
+ text-indent: 3px;
371
+ }
372
+
373
+ #psz-addToBag.disabled{
374
+ border:1px solid #c2c2c2;
375
+ background-color: #dddddd;
376
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#a1a1a1));
377
+ background-image: -webkit-linear-gradient(top, #dddddd, #a1a1a1);
378
+ background-image: -moz-linear-gradient(top, #dddddd, #a1a1a1);
379
+ background-image: -o-linear-gradient(top, #dddddd, #a1a1a1);
380
+ background-image: linear-gradient(to bottom, #dddddd, #a1a1a1);
381
+ color:#ffffff;
382
+ box-shadow:inset 0px 0px 2px #ffffff;
383
+ text-shadow:none;
384
+ }
385
+
386
+ #psz-addToBag.disabled:active{
387
+ box-shadow:inset 0px 0px 2px #ffffff;
388
+ text-indent:0;
389
+ }
390
+
391
+ #psz-share{
392
+ clear: both;
393
+ display: block;
394
+ float: left;
395
+ *width:100%;
396
+ }
397
+
398
+ #psz-share a.addthis_button_facebook_like{
399
+ width:80px!important;
400
+ }
401
+
402
+ #psz-share a.addthis_button_facebook_like, #psz-share a.addthis_button_facebook_like:hover{
403
+ opacity:1;
404
+ filter:Alpha(Opacity=100);
405
+ }
406
+
407
+ #psz-fullDetails{
408
+ font-family: "ProximaNova-Semibold",sans-serif!important;
409
+ font-weight:normal!important;
410
+ font-size:105%!important;
411
+ }
412
+
413
+ .clears{
414
+ display: inline-block;
415
+ clear: both;
416
+ }
417
+
418
+ #psz-modalInside{
419
+ display:none;
420
+ float:left;
421
+ position:relative;
422
+ z-index:9999;
423
+ width:100%;
424
+ }
425
+
426
+ #psz-modalInside + #psz-form + span{
427
+ display:block;
428
+ }
429
+
430
+ #psz-modalInside span{
431
+ display:block;
432
+ width:100%;
433
+ border-bottom:1px solid #c2c2c2;
434
+ padding-bottom:10px;
435
+ font-size:75%;
436
+ }
437
+
438
+ #psz-modalInside #continue-shopping{
439
+ border:1px solid #c2c2c2;
440
+ background-color: #eeeeee;
441
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#eeeeee));
442
+ background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee);
443
+ background-image: -moz-linear-gradient(top, #ffffff, #eeeeee);
444
+ background-image: -o-linear-gradient(top, #ffffff, #eeeeee);
445
+ background-image: linear-gradient(to bottom, #ffffff, #eeeeee);
446
+ color:#666666;
447
+ box-shadow:inset 0px 0px 2px #dddddd;
448
+ text-shadow:none;
449
+ display: inline-block;
450
+ text-decoration: none;
451
+ font-size:80%;
452
+ border-radius: 3px;
453
+ width:218px;
454
+ font-weight: bold;
455
+ float: left;
456
+ clear: both;
457
+ padding:0;
458
+ height:32px;
459
+ line-height:32px;
460
+ text-align:center;
461
+ }
462
+
463
+ #psz-modalInside #goto-checkout{
464
+ width:218px;
465
+ border:1px solid #000;
466
+ border-radius: 3px;
467
+ background-color: #999999;
468
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#999999), to(#000000));
469
+ background-image: -webkit-linear-gradient(top, #999999, #000000);
470
+ background-image: -moz-linear-gradient(top, #999999, #000000);
471
+ background-image: -o-linear-gradient(top, #999999, #000000);
472
+ background-image: linear-gradient(to bottom, #999999, #000000);
473
+ color:#ffffff;
474
+ font-weight: bold;
475
+ line-height: 32px;
476
+ padding:0;
477
+ float: left;
478
+ clear: both;
479
+ box-shadow:inset 0px 0px 2px #c5c5c5;
480
+ text-shadow:1px 1px 2px #000;
481
+ display: inline-block;
482
+ text-decoration: none;
483
+ font-size:80%;
484
+ height:32px;
485
+ text-align:center;
486
+ margin-bottom:1em;
487
+ }
488
+
489
+
490
+ /* Pretty Dropdown */
491
+
492
+ .prettyDropdown{
493
+ position: relative;
494
+ display:block;
495
+ width:148px;
496
+ height:22px;
497
+ line-height: 22px;
498
+ float:left;
499
+ clear:both;
500
+ margin-bottom: 8px;
501
+ cursor:pointer;
502
+ z-index:1;
503
+ }
504
+
505
+ .prettyDropdown.activeDropdown{
506
+ z-index:9999;
507
+ }
508
+
509
+ .prettyDropdown.activeDropdown > ul{
510
+ top:24px;
511
+ }
512
+
513
+ .prettyDropdown span{
514
+ color:#000;
515
+ display:inline-block;
516
+ border-radius: 2px;
517
+ border:1px solid #c5c5c5;
518
+ height: 22px;
519
+ line-height: 22px;
520
+ width: 148px;
521
+ padding-left:4px;
522
+ overflow: hidden;
523
+ }
524
+
525
+ .prettyDropdown ul{
526
+ list-style: none;
527
+ display: none;
528
+ position: absolute;
529
+ z-index: 9999;
530
+ float: left;
531
+ border-radius: 2px;
532
+ border:1px solid #c5c5c5;
533
+ line-height: 22px;
534
+ background:#fefefe;
535
+ padding:0;
536
+ margin:1px 0 0 0;
537
+ cursor: pointer;
538
+ }
539
+
540
+ .prettyDropdown div.flexcroll.scrollableDropdown{
541
+ display: none;
542
+ position: relative;
543
+ z-index: 9999;
544
+ float: left;
545
+ border-radius: 2px;
546
+ border:1px solid #c5c5c5;
547
+ line-height: 22px;
548
+ background:#fefefe;
549
+ padding:0;
550
+ margin:1px 0 0 0;
551
+ cursor: pointer;
552
+ height: 200px;
553
+ overflow: auto;
554
+ width:152px;
555
+ }
556
+
557
+ .prettyDropdown div.flexcroll.scrollableDropdown ul{
558
+ display: block;
559
+ border-radius: 0;
560
+ border: 0;
561
+ padding:0;
562
+ margin:0;
563
+ float: none;
564
+ position:relative;
565
+ }
566
+
567
+ .prettyDropdown div.flexcroll.scrollableDropdown li{
568
+ display: block;
569
+ float: none;
570
+ position:relative;
571
+ }
572
+
573
+ .prettyDropdown ul.scrollableDropdown{
574
+ width: 152px;
575
+ height: 200px;
576
+ overflow-y:scroll;
577
+ }
578
+
579
+ .prettyDropdown ul.scrollableDropdown li{
580
+ width: 131px;
581
+ }
582
+
583
+
584
+ .prettyDropdown li {
585
+ list-style: none;
586
+ float: left;
587
+ clear: both;
588
+ padding:0 0 0 4px;
589
+ margin:0;
590
+ width:148px;
591
+ }
592
+
593
+ .prettyDropdown li:hover{
594
+ background: #efefef;
595
+ }
596
+
597
+ .prettyDropdown:hover b{
598
+ color:#333333;
599
+ }
600
+
601
+ .prettyDropdown b{
602
+ position:absolute;
603
+ width:22px;
604
+ height:22px;
605
+ font-size: 300%;
606
+ font-weight: bold;
607
+ font-family: "Lucida Sans", Arial, sans-serif;
608
+ right:0;
609
+ top:0;
610
+ -webkit-transform: rotate(-90deg);
611
+ -moz-transform: rotate(-90deg);
612
+ -ms-transform: rotate(-90deg);
613
+ -o-transform: rotate(-90deg);
614
+ transform: rotate(-90deg);
615
+ /*filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
616
+ /*M11=6.123233995736766e-17, M12=1, M21=-1, M22=6.123233995736766e-17, sizingMethod='auto expand');*/
617
+ zoom: 1;
618
+ color:#c2c2c2;
619
+ text-align:center;
620
+ line-height:0.8;
621
+ }
622
+
623
+ /* IE specific */
624
+ .ie #psz-modalInside #continue-shopping{
625
+ background-image:none;
626
+ }
627
+
628
+ .ie #psz-modalInside #goto-checkout{
629
+ background-image:none;
630
+ }
631
+
632
+ .ie7 .psz-imagesWrapper ul, .ie7 .psz-imagesWrapper li{
633
+ display:inline;
634
+ }
635
+
636
+ .ie7 #psz-qtyControls{
637
+ margin-bottom:25px;
638
+ }
639
+
640
+ /* prettyDropdown IE specific */
641
+
642
+ .ie7 .prettyDropdown ul{
643
+ top:24px;
644
+ left:0;
645
+ }
646
+
647
+ .ie7 .prettyDropdown div{
648
+ top:0;
649
+ }
650
+
651
+ .ie7 .prettyDropdown div ul{
652
+ top:0;
653
+ }
654
+
655
+ .ie .prettyDropdown b{
656
+ color:transparent;
657
+ font-size: 0;
658
+ background: url(../images/dd-arrow.png) no-repeat center center;
659
+ right:-5px;
660
+ top: 2px;
661
+ }
662
+
663
+ .clears {
664
+ display: block;
665
+ clear:both;
666
+ height:0px;
667
+ line-height:0px;
668
+ visibility: hidden;
669
+ }
670
+
671
+ /* bazaar page
672
+
673
+ .sidebar{
674
+ display:none;
675
+ }
676
+
677
+ .col3-layout .col-wrapper{
678
+ width:100%;
679
+ }
680
+
681
+ .col3-layout .col-wrapper .col-main{
682
+ float:none;
683
+ width:100%;
684
+ height:100%;
685
+ }
686
+ */
687
+
688
+ #zmagspsMobileViewer{
689
+ border:none;
690
+ display:none;
691
+ }
692
+ #zmagspsCatalogContainer.facebook{
693
+ height:578px;
694
+ width:100%;
695
+ }
696
+
697
+ .facebook .psz-dpw{
698
+ font-size:100%!important;
699
+ margin-top:20px;
700
+ margin-left:-330px;
701
+ }
702
+
703
+ .facebook .psz-productInfo h1 {
704
+ font-style:normal;
705
+ }
706
+
707
+ html.zapp, .zapp body, .zapp #zmags-dpw-wrapper, .zapp #zmagspsCatalogContainer, .zapp #zmags-dpw-overlay{
708
+ background-color:transparent !important;
709
+ }
710
+ .zapp .psz-dpw{
711
+ margin-top:120px;
712
+ }
713
+ .zapp .prettyDropdown b {
714
+ right:15px;
715
+ }
716
+
717
+ /* iPhone portrait */
718
+ @media all and (max-width:480px) {
719
+
720
+ html, body{
721
+ background: #ffffff;
722
+ min-width: 320px !important;
723
+ width: 320px !important;
724
+ max-width: 320px!important;
725
+ height: 420px !important;
726
+ max-height: 420px !important;
727
+ min-height: 420px !important;
728
+ }
729
+
730
+ #zmagspsCatalogContainer{
731
+ margin: 0;
732
+ width: 100% !important;
733
+ height: 380px !important;
734
+ background: #ffffff;
735
+ }
736
+ #zmagspsMobileViewer{
737
+
738
+ width:100%!important;
739
+ height:98% !important;
740
+ }
741
+
742
+
743
+ .psz-dpw{
744
+ position: fixed;
745
+ top:20px;
746
+ left:10px;
747
+ right:10px;
748
+ height:auto;
749
+ margin:0;
750
+ width: auto;
751
+ padding-top: 0px;
752
+ padding-bottom: 0px;
753
+ font-size:130%;
754
+ }
755
+
756
+ .psz-imagesWrapper{
757
+ position:relative;
758
+ z-index: 9999;
759
+ top:20px;
760
+ left:-10px;
761
+ width: 130px;
762
+ }
763
+
764
+ .psz-imagesWrapper a{
765
+ width: 20px;
766
+ height: 80px;
767
+ line-height: 80px;
768
+ font-size: 3.2em;
769
+ }
770
+
771
+ .psz-imagesWrapper img{
772
+ width:80px;
773
+ height:80px;
774
+ }
775
+
776
+ .psz-imagesWrapper div{
777
+ width:120px;
778
+ text-align: center;
779
+ }
780
+
781
+ .psz-productInfo {
782
+ width:100%;
783
+ position: relative;
784
+ top:-80px;
785
+ margin-bottom:-80px;
786
+ }
787
+
788
+ .psz-productInfo h1,.psz-productInfo h2, .psz-productInfo h3{
789
+ margin:0 0 0 130px!important;
790
+ max-width: 130px;
791
+ }
792
+
793
+ .psz-productInfo #psz-form{
794
+ display:block;
795
+ width:100%;
796
+ border-top:1px solid #c5c5c5;
797
+ padding-top: 10px;
798
+ margin-top: 50px;
799
+ }
800
+
801
+ .prettyDropdown{
802
+ clear:none;
803
+ }
804
+
805
+ #psz-form label{
806
+ line-height: 22px;
807
+ min-width: 70px;
808
+ }
809
+
810
+ #psz-qtyControls{
811
+ clear:none;
812
+ width:auto;
813
+ }
814
+
815
+ #psz-share{
816
+ width: auto;
817
+ margin:0 0 0 130px;
818
+ }
819
+
820
+ #psz-share a{
821
+ display:none;
822
+ }
823
+
824
+ #psz-share a.addthis_button_pinterest_pinit{
825
+ display:block;
826
+ }
827
+
828
+
829
+
830
+ #psz-modalInside + #psz-form + span {
831
+ margin:10px 0;
832
+ }
833
+
834
+ #psz-modalInside div h1{
835
+ margin: 0 0 10px 0!important;
836
+ font-size:14px;
837
+ max-width: 268px;
838
+ padding-top:10px;
839
+ }
840
+
841
+ #zmags-dpw-overlay{
842
+ position: fixed;
843
+ top:0;
844
+ right:0;
845
+ bottom:0;
846
+ left:0;
847
+ min-height:460px!important;
848
+ }
849
+
850
+
851
+ #psz-modalInside #continue-shopping,#psz-modalInside #goto-checkout{
852
+ width:120px!important;
853
+ float:none!important;
854
+ margin:0!important;
855
+ }
856
+
857
+ #zmags-dpw.loading{
858
+ height:auto!important;
859
+ margin:auto!important;
860
+ width: auto!important;
861
+ left:auto!important;
862
+ }
863
+
864
+ .fullScreen #zmagspsCatalogContainer {
865
+ overflow: visible!important;
866
+ }
867
+
868
+ /* Krsto Orli� 2013/03/07 */
869
+ .video_window{
870
+ margin:0!Important;
871
+ }
872
+
873
+ .modal #video_player{
874
+ margin-left:-30px;
875
+ }
876
+
877
+ #zmags-dpw.modal{
878
+ margin-top:5%!important;
879
+ height:70%;
880
+ }
881
+
882
+ #zmags-dpw.modal .video_window{
883
+ width:100%;
884
+ height:100%;
885
+ }
886
+
887
+ #zmags-dpw.modal iframe{
888
+ width:100%;
889
+ height:85%
890
+ }
891
+ }
892
+
893
+ /* iPhone landscape */
894
+ @media all and (min-width:480px) and (max-width:640px){
895
+
896
+
897
+ html, body{
898
+ background: #ffffff;
899
+ min-width: 480px !important;
900
+ width: 480px !important;
901
+ max-width: 480px!important;
902
+ max-height:270px!important;
903
+
904
+ }
905
+ #zmagspsCatalogContainer{
906
+ margin:0!important;
907
+ width: 100% !important;
908
+ height: 350px !important;
909
+ background: #ffffff;
910
+ }
911
+ #zmagspsMobileViewer{
912
+ width: 480px !important;
913
+ height: 270px !important;
914
+ margin:0!important;
915
+ }
916
+
917
+
918
+
919
+ #zmags-dpw-overlay{
920
+ position: fixed;
921
+ top:0;
922
+ right:0;
923
+ bottom:0;
924
+ left:0;
925
+ min-height:270px!important;
926
+ }
927
+
928
+
929
+ .psz-dpw{
930
+ position: fixed;
931
+ top:15px;
932
+ left:20px!important;
933
+ right:20px;
934
+ height:auto!important;
935
+ margin:0!important;
936
+ width: auto!important;
937
+ padding-top: 0px;
938
+ padding-bottom: 5px;
939
+ }
940
+
941
+
942
+
943
+
944
+ .psz-imagesWrapper a{
945
+ width: 20px;
946
+ height: 80px;
947
+ line-height: 80px;
948
+ font-size: 3.2em;
949
+ }
950
+
951
+ .psz-imagesWrapper img{
952
+ width:80px;
953
+ height:80px;
954
+ }
955
+
956
+ .psz-imagesWrapper div{
957
+ width:120px;
958
+ text-align: center;
959
+ }
960
+
961
+ .psz-productInfo{
962
+ width:250px;
963
+ margin:0;
964
+ top:10px;
965
+ }
966
+
967
+ .psz-productInfo h1{
968
+ max-width: 250px;
969
+ margin:0 0 0 2px!important;
970
+ }
971
+
972
+ .psz-productInfo h2, .psz-productInfo h3{
973
+ max-width: 250px;
974
+ margin:0 0 0 0!Important;
975
+ }
976
+
977
+ .prettyDropdown{
978
+ clear:none;
979
+ }
980
+
981
+
982
+
983
+ #psz-form label{
984
+ line-height: 22px;
985
+ min-width: 70px;
986
+ }
987
+
988
+ #psz-qtyControls{
989
+ clear:none;
990
+ width:auto;
991
+ }
992
+
993
+ #psz-share{
994
+ width:auto;
995
+ position: relative;
996
+ float:right;
997
+ top:-40px;
998
+ }
999
+
1000
+ #psz-share a{
1001
+ display:none;
1002
+ }
1003
+
1004
+ #psz-share a.addthis_button_pinterest_pinit{
1005
+ display:block;
1006
+ }
1007
+
1008
+ #psz-modalInside{
1009
+ margin-top:0;
1010
+ }
1011
+
1012
+ #psz-modalInside + #psz-form + span {
1013
+ margin:10px 0;
1014
+ }
1015
+
1016
+ .psz-productInfo #psz-form{
1017
+ border-top:1px solid #c5c5c5;
1018
+ padding-top:10px;
1019
+ width:100%;
1020
+ margin-top:15px!important;
1021
+ }
1022
+
1023
+ #psz-addToBag{
1024
+ margin-top:-15px;
1025
+ }
1026
+
1027
+ }
1028
+
1029
+ /*Custom Viewer*/
1030
+
1031
+ #psz-header-div{
1032
+ height:45px;
1033
+ width:100%;
1034
+ position: relative;
1035
+ top:0;
1036
+ left:0;
1037
+ z-index:2;
1038
+ background: #fff;
1039
+ display:block;
1040
+ }
1041
+
1042
+ #psz-shopping{
1043
+ font-family: Arial, sans-serif!Important;
1044
+ }
1045
+
1046
+ #psz-header-div.showing{
1047
+ z-index:1;
1048
+ }
1049
+
1050
+ #header-overlay{
1051
+ display:none;
1052
+ display: block\9;
1053
+ }
1054
+
1055
+ .webkit #header-overlay{
1056
+ display:none!important;
1057
+ }
1058
+
1059
+ .webkit.macos #header-overlay{
1060
+ display:block!important;
1061
+ }
1062
+
1063
+ .fullScreen #psz-header-div.showing #header-overlay{
1064
+ position: absolute;
1065
+ width:100%;
1066
+ height:100%;
1067
+ background-color: rgba(0, 0, 0, 0.6);
1068
+ display: block;
1069
+ }
1070
+
1071
+ .no-rgba .fullScreen #psz-header-div.showing #header-overlay{
1072
+ background: url("../images/overlay.png");
1073
+ }
1074
+
1075
+
1076
+ .fullScreen #psz-header-div{
1077
+ position:relative;
1078
+ /* margin-bottom:-24px;*/
1079
+ margin-bottom:-2px\9;
1080
+ border-bottom:1px solid #000000;
1081
+ margin-top: 15px;
1082
+ }
1083
+
1084
+ .fullScreen #zmags-dpw-overlay{
1085
+ /* top:44px;*/
1086
+ }
1087
+
1088
+ .webkit.fullScreen #psz-header-div{
1089
+ /*margin-bottom:0px!important;*/
1090
+ }
1091
+
1092
+ .facebook #psz-header-div{
1093
+
1094
+ margin-bottom:-24px;
1095
+ border-bottom:1px solid #000000;
1096
+ }
1097
+
1098
+ .facebook.webkit #psz-header-div{
1099
+
1100
+ margin-bottom:-1px!important;
1101
+
1102
+ }
1103
+
1104
+
1105
+ #psz-top-left{
1106
+ width:auto;
1107
+ float:left;
1108
+ font-family: "BauerBodoniBT-Italic", Georgia, serif;
1109
+ font-size: 32px;
1110
+ margin-left:20px;
1111
+ }
1112
+
1113
+ #psz-month-year{
1114
+ width:auto;
1115
+ float:left;
1116
+ font-family: "Myriad Pro", sans-serif;
1117
+ font-size: 20px;
1118
+ margin-left: 15px;
1119
+ margin-top: 11px;
1120
+ display:none;
1121
+ }
1122
+
1123
+ #psz-shopping{
1124
+ float:right;
1125
+ font-family: "Myriad Pro";
1126
+ font-size: 14px;
1127
+ color:#777777;
1128
+ margin-top:12px;
1129
+ margin-right:30px;
1130
+ cursor:pointer;
1131
+ display:none;
1132
+ }
1133
+
1134
+ #psz-shopping-image{
1135
+ float:right;
1136
+ margin-top:11px;
1137
+ margin-right:7px;
1138
+ cursor:pointer;
1139
+ display:none;
1140
+ }
1141
+
1142
+ .fullScreen #psz-shopping, .fullScreen #psz-shopping-image{
1143
+ display: block;
1144
+ }
1145
+ /**/
1146
+
1147
+ .category-view.fullScreen{
1148
+ position: fixed;
1149
+ top: 0;
1150
+ right: 0;
1151
+ bottom: 0;
1152
+ left: 0;
1153
+ background:#fff!important\9;
1154
+ }
1155
+
1156
+ .fullScreen #zmagspsCatalogContainer{
1157
+ overflow: hidden;
1158
+ }
1159
+
1160
+ #zmagspsCatalogContainer{
1161
+ width:960px;
1162
+ height:701px;
1163
+ overflow:visible;
1164
+ margin:0 auto;
1165
+ position: relative;
1166
+ z-index: 1;
1167
+ }
1168
+
1169
+ #zmagspsCatalogContainer.fullScreen object{
1170
+ margin-top:0;
1171
+ height:91%;
1172
+ }
1173
+
1174
+ #psz-footer-div{
1175
+ position:relative;
1176
+ z-index:9999;
1177
+ bottom:0;
1178
+ height:40px;
1179
+ width:960px;
1180
+ margin:0 auto;
1181
+ }
1182
+
1183
+
1184
+ .fullScreen #psz-footer-div{
1185
+ position: absolute;
1186
+ background:#000;
1187
+ width:100%;
1188
+ }
1189
+
1190
+ #psz-fullscreen{
1191
+ float:right;
1192
+ width:108px;
1193
+ height:16px;
1194
+ background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/fullscreen.png);
1195
+ cursor:pointer;
1196
+ margin-top:10px;
1197
+ display: block;
1198
+ }
1199
+
1200
+ #psz-fullscreen:hover{
1201
+ background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/fullscreen-hover.png);
1202
+ }
1203
+
1204
+ .fullScreen #psz-fullscreen{
1205
+ background-image: url(//ps.zmags.com/commerce/deploy/hearst/base//images/exit-fullscreen.png);
1206
+ width:127px;
1207
+ height:23px;
1208
+ margin-right:10px;
1209
+ }
1210
+
1211
+
1212
+ #zMobileGoPrevPage{
1213
+ position:absolute;
1214
+ left:5px;
1215
+ top:50%;
1216
+ margin-top:-10px;
1217
+ height:0;
1218
+ width:0;
1219
+ border-right:20px solid #666666;
1220
+ border-top:20px solid transparent;
1221
+ border-bottom:20px solid transparent;
1222
+ display: block;
1223
+ z-index:99;
1224
+ }
1225
+
1226
+ #zMobileGoPrevPage:hover{
1227
+ border-right:20px solid #000000;
1228
+ }
1229
+
1230
+ #zMobileGoNextPage{
1231
+ position:absolute;
1232
+ right:5px;
1233
+ top:50%;
1234
+ margin-top:-10px;
1235
+ height:0;
1236
+ width:0;
1237
+ border-left:20px solid #666666;
1238
+ border-top:20px solid transparent;
1239
+ border-bottom:20px solid transparent;
1240
+ display: block;
1241
+ z-index:99;
1242
+ }
1243
+
1244
+ #zMobileGoNextPage:hover{
1245
+ border-left:20px solid #000000;
1246
+ }
1247
+
1248
+
1249
+ /* iPads (landscape) ----------- */
1250
+ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) {
1251
+
1252
+ .psz-sharing{
1253
+ margin-left:25px;
1254
+ }
1255
+
1256
+ #psz-viewer, .fullScreen #psz-viewer{
1257
+ border-bottom:0!important;
1258
+ border-top:1px solid #c2c2c2;
1259
+ position:relative!important;
1260
+ top:-40px !important;
1261
+ z-index:9999;
1262
+ }
1263
+
1264
+ #psz-shoppingBag{
1265
+ display: block;
1266
+ background: url(../images/sbag.png) no-repeat left;
1267
+ float:right;
1268
+ clear:none;
1269
+ line-height:40px;
1270
+ text-transform: capitalize;
1271
+ color:#000;
1272
+ font-size: 12px;
1273
+ padding-right:0;
1274
+ padding-left:30px;
1275
+ margin-right:25px;
1276
+ cursor: pointer;
1277
+ text-decoration: none;
1278
+ }
1279
+
1280
+ #psz-shoppingBag:hover{
1281
+ text-decoration: underline;
1282
+ }
1283
+
1284
+ html, body{
1285
+ background: #ffffff;
1286
+ min-height:690px!important;
1287
+ height:690px!important;
1288
+ max-height:690px!important;
1289
+ overflow:hidden!important;
1290
+ }
1291
+
1292
+ /*
1293
+
1294
+ width: 960px!important;
1295
+ height: 630px!important;
1296
+
1297
+ */
1298
+
1299
+ .fullScreen #psz-header-div{
1300
+ position: relative;
1301
+ margin-bottom:0;
1302
+ }
1303
+
1304
+ #zmags-dpw-wrapper{
1305
+ overflow:visible;
1306
+ }
1307
+
1308
+
1309
+ #zmags-dpw-overlay{
1310
+ position:absolute;
1311
+ width:100%;
1312
+ height:100%;
1313
+ }
1314
+
1315
+ #zmagspsCatalogContainer {
1316
+ background: #ffffff;
1317
+ width: 1024px!important;
1318
+ height: 640px!important;
1319
+ /*width:960px!important;
1320
+ height:600px!important;*/
1321
+ overflow: visible;
1322
+ top: -10px;
1323
+ padding-top:10px;
1324
+ }
1325
+
1326
+ #zmagspsCatalogContainer object{
1327
+ margin-top:0px;
1328
+ }
1329
+
1330
+ #zmagspsMobileViewer{
1331
+ margin-top:0px;
1332
+ border: none;
1333
+ width:840px!important;
1334
+ position: relative;
1335
+ left:50%;
1336
+ margin-left:-420px;
1337
+ height:625px!important;
1338
+ overflow: visible;
1339
+ }
1340
+
1341
+ #psz-header-div #psz-top-left{
1342
+ line-height:55px;
1343
+ }
1344
+
1345
+ #zMobileGoPrevPage{
1346
+ left: 5px;
1347
+ }
1348
+
1349
+ #zMobileGoNextPage{
1350
+ right: 0px;
1351
+ }
1352
+
1353
+ #zMobileGoPrevPage,#zMobileGoNextPage{
1354
+ margin-top:-50px;
1355
+ }
1356
+
1357
+
1358
+ #psz-viewerNext:hover {
1359
+ border-left: 8px solid black !important;
1360
+ }
1361
+
1362
+ #psz-viewerPrev:hover{
1363
+ border-right: 8px solid black !important;
1364
+ }
1365
+
1366
+ #zMobileGoNextPage:hover {
1367
+ border-left: 20px solid #666 !important;
1368
+ }
1369
+
1370
+ #zMobileGoPrevPage:hover {
1371
+ border-right: 20px solid #666 !important;
1372
+ }
1373
+
1374
+ #zmags-dpw.loading{
1375
+ position: fixed;
1376
+ top:0;
1377
+ right:0;
1378
+ bottom:0;
1379
+ left:0;
1380
+ }
1381
+
1382
+ .psz-dpw{
1383
+ margin: 20px -330px;
1384
+ }
1385
+
1386
+ .psz-imagesWrapper img{
1387
+ width:auto;
1388
+ height:250px;
1389
+ display: block;
1390
+ margin:0 auto;
1391
+ }
1392
+
1393
+ .psz-imagesWrapper div{
1394
+ width:290px;
1395
+ text-align: center;
1396
+ float: left;
1397
+ clear: both;
1398
+ margin-top:15px;
1399
+ }
1400
+ #zmagspsCatalogContainer.fullScreen object{
1401
+ margin:45px 0;
1402
+ }
1403
+ /*
1404
+ .psz-imagesWrapper img {
1405
+ width: 240px !important;
1406
+ height: 240px;
1407
+ }
1408
+ .psz-imagesWrapper a {
1409
+ width: 30px !important;
1410
+ }
1411
+
1412
+ /* #zMobileGoNextPage{
1413
+ margin-top:-100px;
1414
+ }*/
1415
+
1416
+ /* Modal Video */
1417
+
1418
+ #zmags-dpw.modal{
1419
+ margin:0 auto!Important;
1420
+ }
1421
+
1422
+ .video_window{
1423
+ margin:0!Important;
1424
+
1425
+ }
1426
+
1427
+ .modal #video_player{
1428
+ margin-left:50px!important;
1429
+ }
1430
+
1431
+ .facebook{
1432
+ font-size: 100%;
1433
+ width: 800px !important;
1434
+ overflow: hidden;
1435
+ padding-bottom: 60px;
1436
+ }
1437
+
1438
+ #zmagspsCatalogContainer.facebook{
1439
+ width: 800px !important;
1440
+ }
1441
+
1442
+ #zMobileGoPrevPage{
1443
+ left:70px;
1444
+ }
1445
+
1446
+ #zMobileGoNextPage{
1447
+ right:70px;
1448
+ }
1449
+
1450
+ /* ddorotic 2013/02/08 */
1451
+ #zmags-dpw.modal{
1452
+ margin-top:5%!important;
1453
+ height:70%;
1454
+ }
1455
+
1456
+ #zmags-dpw.modal .video_window{
1457
+ width:100%;
1458
+ height:100%;
1459
+ }
1460
+
1461
+ #zmags-dpw.modal iframe{
1462
+ width:100%;
1463
+ height:95%
1464
+ }
1465
+
1466
+ }
1467
+
1468
+ /* iPads (portrait) ----------- */
1469
+ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) {
1470
+
1471
+
1472
+ .psz-sharing{
1473
+ margin-left:25px;
1474
+ }
1475
+
1476
+ #psz-viewerNext:hover {
1477
+ border-left: 8px solid black !important;
1478
+ }
1479
+
1480
+ #psz-viewerPrev:hover{
1481
+ border-right: 8px solid black !important;
1482
+ }
1483
+
1484
+ #zMobileGoNextPage:hover {
1485
+ border-left: 20px solid #666 !important;
1486
+ }
1487
+
1488
+ #zMobileGoPrevPage:hover {
1489
+ border-right: 20px solid #666 !important;
1490
+ }
1491
+
1492
+ #psz-viewer, .fullScreen #psz-viewer{
1493
+ border-bottom:0!important;
1494
+ border-top:1px solid #c2c2c2;
1495
+ position:relative!important;
1496
+ margin-top:-35px;
1497
+ top:-40px !important;
1498
+ z-index:9999;
1499
+ }
1500
+
1501
+ #psz-shoppingBag{
1502
+ display: block;
1503
+ background: url(../images/sbag.png) no-repeat left;
1504
+ float:right;
1505
+ clear:none;
1506
+ line-height:40px;
1507
+ text-transform: capitalize;
1508
+ color:#000;
1509
+ font-size: 12px;
1510
+ padding-right:0;
1511
+ padding-left:30px;
1512
+ margin-right:25px;
1513
+ cursor: pointer;
1514
+ text-decoration: none;
1515
+ }
1516
+
1517
+ #psz-shoppingBag:hover{
1518
+ text-decoration: underline;
1519
+ }
1520
+
1521
+ .fullScreen #psz-header-div{
1522
+ position: relative;
1523
+ }
1524
+
1525
+
1526
+ #zmags-dpw-overlay{
1527
+ position:absolute;
1528
+ width:100%;
1529
+ height:100%;
1530
+ }
1531
+
1532
+ html, body{
1533
+ background: #ffffff;
1534
+ min-width: 768px !important;
1535
+ width: 768px !important;
1536
+ max-width: 768px!important;
1537
+ min-height: 950px !important;
1538
+ height: 950px !important;
1539
+ max-height: 950px!important;
1540
+ overflow:hidden!important;
1541
+ }
1542
+
1543
+ #zmags-dpw-wrapper{
1544
+ overflow:visible;
1545
+ }
1546
+
1547
+ #zmagspsCatalogContainer {
1548
+ background: #ffffff;
1549
+ width: 768px!important;
1550
+ height:920px!important;
1551
+ overflow: visible;
1552
+ margin-top: 0;
1553
+ top: -10px;
1554
+ padding:10px 0;
1555
+ }
1556
+ #psz-header-div{
1557
+ width: 768px;
1558
+ }
1559
+
1560
+ #psz-header-div #psz-top-left{
1561
+ line-height:55px;
1562
+ }
1563
+
1564
+ .fullScreen{
1565
+ width: 768px !important;
1566
+ }
1567
+
1568
+ #zmagspsMobileViewer{
1569
+ margin-top:150px;
1570
+ border: none;
1571
+ width:720px !important;
1572
+ height:550px!important;
1573
+ position: relative;
1574
+ left:50%;
1575
+ margin-left:-360px;
1576
+ }
1577
+
1578
+ #zMobileGoPrevPage{
1579
+ left:10px;
1580
+ margin-top:-100px;
1581
+ }
1582
+
1583
+ #zMobileGoNextPage{
1584
+ right:10px;
1585
+ margin-top:-100px;
1586
+ }
1587
+ .psz-dpw{
1588
+ margin: 50px -330px;
1589
+ }
1590
+
1591
+ #zmags-dpw.loading{
1592
+ position: fixed;
1593
+ top:0;
1594
+ right:0;
1595
+ bottom:0;
1596
+ left:0;
1597
+ height: 450px !important;
1598
+ }
1599
+
1600
+ .psz-imagesWrapper img{
1601
+ width:auto;
1602
+ height:250px;
1603
+ display: block;
1604
+ margin:0 auto;
1605
+ }
1606
+
1607
+ .psz-imagesWrapper div{
1608
+ width:290px;
1609
+ text-align: center;
1610
+ float: left;
1611
+ clear: both;
1612
+ margin-top:15px;
1613
+ }
1614
+ #zmagspsCatalogContainer.fullScreen object{
1615
+ margin:45px 0;
1616
+ }
1617
+
1618
+
1619
+
1620
+ #zmags-dpw.modal{
1621
+ margin:0 auto!Important;
1622
+ }
1623
+
1624
+ .video_window{
1625
+ margin:0!Important;
1626
+ }
1627
+
1628
+ .modal #video_player{
1629
+ margin-left:-30px;
1630
+ }
1631
+
1632
+ /* ddorotic 2013/02/08 */
1633
+ #zmags-dpw.modal{
1634
+ margin-top:5%!important;
1635
+ height:70%;
1636
+ }
1637
+
1638
+ #zmags-dpw.modal .video_window{
1639
+ width:100%;
1640
+ height:100%;
1641
+ }
1642
+
1643
+ #zmags-dpw.modal iframe{
1644
+ width:100%;
1645
+ height:95%
1646
+ }
1647
+
1648
+ }
1649
+
1650
+ /* iPhone portrait
1651
+ @media all and (max-width:480px) {
1652
+
1653
+ .psz-dpw{
1654
+ font-size: 100%;
1655
+ height: 600px !important;
1656
+ }
1657
+ }
1658
+
1659
+ iPhone landscape
1660
+ @media all and (min-width:480px) and (max-width:640px){
1661
+ html, body{
1662
+ background: #ffffff;
1663
+ min-width: 480px !important;
1664
+ width: 480px !important;
1665
+ max-width: 480px!important;
1666
+ }
1667
+ #zmagspsCatalogContainer{
1668
+ margin: 0;
1669
+ width: 100% !important;
1670
+ height: 270px !important;
1671
+ background: #ffffff;
1672
+ }
1673
+ #zmagspsMobileViewer{
1674
+ width: 480px !important;
1675
+ height: 270px !important;
1676
+ }
1677
+ .psz-dpw{
1678
+ font-size: 100%;
1679
+
1680
+ }
1681
+
1682
+ }*/
1683
+
1684
+ .ie7 .header-inner-bottom{
1685
+ *z-index:1;
1686
+ }
1687
+
1688
+
1689
+ /* ddorotic 20121114 viewer */
1690
+
1691
+ #psz-viewer{
1692
+ font: 13px ProximaNova-Semibold,sans-serif;
1693
+ height:40px;
1694
+ background:#fff;
1695
+ position:relative;
1696
+ width: 100%;
1697
+ display: block;
1698
+ border-bottom:1px solid #c2c2c2;
1699
+ }
1700
+
1701
+
1702
+
1703
+ .fullScreen #psz-viewer{
1704
+ position:absolute;
1705
+ line-height: 40px !important;
1706
+ }
1707
+
1708
+ body.fullScreen{
1709
+ overflow:hidden;
1710
+ }
1711
+
1712
+ .psz-sharing{
1713
+ float:left;
1714
+ clear:none;
1715
+ line-height:40px;
1716
+ color:#c2c2c2;
1717
+ width:400px;
1718
+ height: 32px;
1719
+ overflow: hidden;
1720
+ }
1721
+
1722
+ .psz-sharing a{
1723
+ position:relative;
1724
+ }
1725
+
1726
+ .psz-sharing .addthis_button_facebook_like {
1727
+ top:3px;
1728
+ }
1729
+
1730
+ .psz-sharing .addthis_button_tweet{
1731
+ top:6px;
1732
+ }
1733
+
1734
+ .psz-sharing .addthis_button_pinterest_pinit {
1735
+ top:10px !important;
1736
+ }
1737
+
1738
+ .psz-sharing .addthis_button_email {
1739
+ top:10px;
1740
+ }
1741
+
1742
+ /**Sharing on facebook**/
1743
+ .fb-sharing .psz-sharing a{
1744
+ position:relative;
1745
+ }
1746
+
1747
+ .fb-sharing .addthis_button_facebook_like {
1748
+ top:10px;
1749
+ }
1750
+
1751
+ .fb-sharing .addthis_button_tweet{
1752
+ top:6px;
1753
+ }
1754
+
1755
+ .fb-sharing .addthis_button_pinterest_pinit {
1756
+ top:8px !important;
1757
+ }
1758
+
1759
+ .fb-sharing .addthis_button_email {
1760
+ top:4px !important;
1761
+ }
1762
+
1763
+ /*
1764
+ .fullScreen .psz-sharing .addthis_button_pinterest_pinit {
1765
+ top:14px;
1766
+ }
1767
+
1768
+ .fullScreen .psz-sharing .addthis_button_email {
1769
+ top:16px;
1770
+ }
1771
+ */
1772
+ .psz-navigation{
1773
+ width:100px;
1774
+ position:absolute;
1775
+ left:50%;
1776
+ margin-left:-50px;
1777
+ text-align: center;
1778
+ }
1779
+
1780
+ .psz-navigation a{
1781
+ display:inline-block;
1782
+ width:0;
1783
+ height:0;
1784
+ margin:0;
1785
+ padding:0;
1786
+ position: relative;
1787
+ top:3px;
1788
+ cursor: pointer;
1789
+ }
1790
+
1791
+ .psz-navigation span{
1792
+ text-align: center;
1793
+ line-height: 40px;
1794
+ padding:0 4px;
1795
+ }
1796
+
1797
+ #psz-viewerPrev{
1798
+ border-right:8px solid #000;
1799
+ border-top:8px solid #fff;
1800
+ border-bottom:8px solid #fff;
1801
+ }
1802
+
1803
+ #psz-viewerPrev:hover{
1804
+ border-right:8px solid #c2c2c2;
1805
+ }
1806
+
1807
+ #psz-viewerNext{
1808
+ border-left:8px solid #000;
1809
+ border-top:8px solid #fff;
1810
+ border-bottom:8px solid #fff;
1811
+ }
1812
+
1813
+ #psz-viewerNext:hover{
1814
+ border-left:8px solid #c2c2c2;
1815
+ }
1816
+
1817
+ #psz-toggleFullscreen{
1818
+ display: block;
1819
+ background: url(../images/fs-plus.png) no-repeat right;
1820
+ float:right;
1821
+ clear:none;
1822
+ line-height:40px;
1823
+ text-transform: capitalize;
1824
+ color:#000;
1825
+ padding-right:25px;
1826
+ cursor: pointer;
1827
+ font-weight:normal;
1828
+ text-decoration: none;
1829
+ }
1830
+
1831
+ #psz-toggleFullscreen:hover{
1832
+ text-decoration: underline;
1833
+ color:#c2c2c2;
1834
+ }
1835
+
1836
+ .fullScreen #psz-toggleFullscreen{
1837
+ margin-right:25px;
1838
+ }
1839
+
1840
+ .fullScreen .psz-sharing{
1841
+ margin-left:25px;
1842
+ }
1843
+
1844
+ .fullScreen #psz-viewer{
1845
+ top: -86px;
1846
+ border-bottom:0!important;
1847
+ border-top:1px solid #c2c2c2;
1848
+ position:relative;
1849
+ z-index:1;
1850
+ }
1851
+
1852
+
1853
+
1854
+ .footer-container .footer{
1855
+ border-top:0!Important;
1856
+ }
1857
+
1858
+
1859
+ #blocker{
1860
+ position:absolute;
1861
+ width:100%;
1862
+ height:100%;
1863
+ top:0;
1864
+ left:0;
1865
+ }
1866
+
1867
+ /* ddorotic 2012/11/22 */
1868
+ #psz-header-div #psz-shoppingBag{
1869
+ display: block;
1870
+ background: url(../images/sbag.png) no-repeat left;
1871
+ float:right;
1872
+ clear:none;
1873
+ line-height:45px;
1874
+ text-transform: capitalize;
1875
+ color:#000;
1876
+ font-size: 12px;
1877
+ padding-right:0;
1878
+ padding-left:30px;
1879
+ margin-right:25px;
1880
+ cursor: pointer;
1881
+ text-decoration: none;
1882
+ display:none;
1883
+ }
1884
+
1885
+ #psz-shoppingBag:hover{
1886
+ text-decoration: underline;
1887
+ }
1888
+
1889
+
1890
+ /* ddorotic 2013/02/07 */
1891
+ .facebook #psz-toggleFullscreen{
1892
+ display:none;
1893
+ }
1894
+
1895
+ /* ddorotic 2013/02/13 */
1896
+ .category-the-bazaar-book .category-view{
1897
+ display: none!important;
1898
+ }
1899
+
1900
+
1901
+ .ajax-cart-modal .overlay {
1902
+ background:black;
1903
+ display:block;
1904
+ left:0;
1905
+ opacity:0.65;
1906
+ filter: alpha(opacity = 65);
1907
+ position:fixed;
1908
+ top:0;
1909
+ width: 100%;
1910
+ height: 100%;
1911
+ z-index: 1000;
1912
+ }
1913
+ .ajax-cart-modal .block {
1914
+ position: fixed;
1915
+ width: 370px;
1916
+ left: 50%;
1917
+ margin-left: -150px;
1918
+ top: 50%;
1919
+ margin-top: -100px;
1920
+ z-index: 1001;
1921
+ }
1922
+ .ajax-cart-modal .block .close-btn {
1923
+ float: right;
1924
+ width: 123px;
1925
+ height: 11px;
1926
+ }
1927
+
1928
+ .ajax-cart-loading-mask .overlay {
1929
+ background:white;
1930
+ display:block;
1931
+ left:0;
1932
+ opacity:0.50;
1933
+ filter: alpha(opacity = 50);
1934
+ position:fixed;
1935
+ top:0;
1936
+ width: 100%;
1937
+ height: 100%;
1938
+ z-index: 1000;
1939
+ }
1940
+ .ajax-cart-loading-mask .loader {
1941
+ position: fixed;
1942
+ width: 32px;
1943
+ height: 32px;
1944
+ left: 50%;
1945
+ margin-left: -16px;
1946
+ top: 50%;
1947
+ margin-top: -16px;
1948
+ background: url('../images/ajax-loader.gif');
1949
+ z-index: 1001;
1950
+ }
skin/frontend/base/default/css/local.css ADDED
@@ -0,0 +1,4809 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Magento
3
+ *
4
+ * NOTICE OF LICENSE
5
+ *
6
+ * This source file is subject to the Academic Free License (AFL 3.0)
7
+ * that is bundled with this package in the file LICENSE_AFL.txt.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://opensource.org/licenses/afl-3.0.php
10
+ * If you did not receive a copy of the license and are unable to
11
+ * obtain it through the world-wide-web, please send an email
12
+ * to license@magentocommerce.com so we can send you a copy immediately.
13
+ *
14
+ * DISCLAIMER
15
+ *
16
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
17
+ * versions in the future. If you wish to customize Magento for your
18
+ * needs please refer to http://www.magentocommerce.com for more information.
19
+ *
20
+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
21
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
22
+ */
23
+
24
+ /****************************************************/
25
+ /***********[ Mage_CSS_B Common Elements ]***********/
26
+ /****************************************************/
27
+
28
+
29
+ /********************** Columns */
30
+
31
+ /* All */
32
+ .col2-set, .col3-set, .col4-set, .col5-set { clear:both; }
33
+
34
+ /* Col2 */
35
+ .col2-set .col-1, .col2-set .col-2 { width:48.5%; }
36
+ .col2-set .col-1 { float:left;}
37
+ .col2-set .col-2 { /*float:right;*/ margin-left:12px; }
38
+
39
+ /* Col2-alt */
40
+ .col2-alt-set .col-1 { width:32%; }
41
+ .col2-alt-set .col-2 { width:65%; }
42
+ .col2-alt-set .col-1 { float:left; }
43
+ .col2-alt-set .col-2 { float:right; }
44
+
45
+ /* Col3 */
46
+ .col3-set .col-1, .col3-set .col-2, .col3-set .col-3 { float:left; width:31.3%; }
47
+ .col3-set .col-1, .col3-set .col-2 { margin-right:3%; }
48
+
49
+ /* Col4 */
50
+ .col4-set .col-1, .col4-set .col-2, .col4-set .col-3, .col4-set .col-4 { float:left; width:22%; }
51
+ .col4-set .col-1, .col4-set .col-2, .col4-set .col-3 { margin-right:4%; }
52
+
53
+ /* Table Columns */
54
+ table .col-1, table .col-2, table .col-3, table .col-4 { float:none !important; margin:0 !important; }
55
+ .col3-set td.spacer { width:3%; }
56
+ .col4-set td.spacer { width:4%; }
57
+
58
+
59
+ .accent { color:#000; font-weight:bold; }
60
+
61
+ /********************** Form */
62
+
63
+ /* Form Elements */
64
+ input.input-text, select, textarea { border:1px solid #b6b6b6; font:12px verdana, helvetica, sans-serif; }
65
+ option, optgroup { font:12px verdana, helvetica, sans-serif; }
66
+ optgroup { font-weight:bold; }
67
+ textarea { overflow:auto; }
68
+ input.input-text, textarea { padding:2px; }
69
+ input.radio { margin-right:3px; }
70
+ input.checkbox { margin-right:3px; }
71
+ .qty { width:2.5em; }
72
+ .group-select label, .form-list label, .payment-methods label { font-weight:bold; }
73
+ .input-text:focus, select:focus, textarea:focus { background:#DAE0BF; }
74
+ .button-set { /* Container for form buttons*/
75
+ clear:both;
76
+ margin-top:4em;
77
+ border-top:1px solid #e4e4e4;
78
+ padding-top:8px;
79
+ text-align:right;
80
+ }
81
+ .form-button, .form-button-alt {
82
+ overflow:visible;
83
+ width:auto;
84
+ border:0;
85
+ padding: 6px 8px;
86
+ margin-top: 5px;
87
+ background:#5B6239;
88
+ color:#fff;
89
+ border:0;
90
+ font:bold 12px verdana, sans-serif !important;
91
+ cursor:pointer;
92
+ text-align:center;
93
+ vertical-align:middle;
94
+ margin-bottom:7px;
95
+ }
96
+ .form-button span, .form-button-alt span {
97
+ white-space:nowrap;
98
+ }
99
+ .form-button-alt {
100
+ border:1px solid #DAE0BF;
101
+ background-color:#5B613B;
102
+ color:#fff;
103
+ }
104
+ a.form-button-alt { padding:2px 9px; text-decoration:none; }
105
+ .form-button-alt:hover { color:#fff; text-decoration:none; }
106
+ .btn-checkout {
107
+ display:block;
108
+
109
+ background:transparent url(../images/btn_proceed_to_checkout_rad.gif) no-repeat 100% 0;
110
+ font-size:15px;
111
+ font-weight:bold;
112
+ padding-right:8px;
113
+ }
114
+ .btn-checkout, .btn-checkout:hover {
115
+ color:#fef5e5;
116
+ text-decoration:none;
117
+ }
118
+ .btn-checkout span {
119
+ display:block;
120
+ padding:0 17px 0 25px;
121
+ background:transparent url(../images/btn_proceed_to_checkout_bg.gif) no-repeat;
122
+ line-height:40px;
123
+ }
124
+
125
+ /* Form lists */
126
+ .form-list li { margin-bottom:6px; }
127
+ .form-list li .input-box .input-text,
128
+ .form-list li .input-box textarea { width:95%px; }
129
+ .form-list li .input-box select { width:256px; }
130
+ .form-list li.addElement { border-top:1px solid #DDD; padding-top:10px; }
131
+ .main-heading{border-bottom: 1px solid #999999;
132
+ color: #000000;
133
+ font-family: tahoma,sans-serif;
134
+ font-size: 1.2em;
135
+ letter-spacing: 2px;
136
+ margin: 0 0 15px;
137
+ padding: 10px 0;
138
+ text-transform: uppercase;}
139
+ .group-select {
140
+ margin:0px 0px;
141
+ padding:0px 15px 5px 15px;
142
+ border:1px solid #CCC;
143
+ }
144
+ .group-select .legend {
145
+ margin-top:6px;
146
+ float:left;
147
+ border:1px dotted #fff;
148
+ background:#F9F3E3;
149
+ padding:0 8px;
150
+ color:#000;
151
+ font-weight:bold;
152
+ font-size:1.1em;
153
+ margin-left:10px;
154
+ }
155
+ .group-select li { padding:4px 8px; }
156
+ .group-select li .input-box { float:left; width:275px; margin-bottom:15px;}
157
+ .group-select li .input-text, .group-select li select, .group-select li textarea { width:525px; }
158
+ .group-select li .input-box .input-text, .group-select li .input-box textarea { width:250px; }
159
+ .group-select li .input-box select { width:256px; }
160
+
161
+
162
+ /* Form Messages */
163
+ .validation-advice, .required { color:#EB340A; }
164
+ .validation-advice { clear:both; min-height:15px; margin-top:3px; background:url(../images/validation_advice_bg.gif) no-repeat 2px 1px; padding-left:17px; font-size:.95em; font-weight:bold; line-height:1.25em; }
165
+ .validation-failed { border:1px dashed #EB340A !important; background:#faebe7 !important; }
166
+ /* Expiration date and cvv number validation fix */
167
+ .v-fix { float:left; }
168
+ .v-fix .validation-advice { display:block; margin-right:-12em; width:12em; position:relative; }
169
+
170
+ label.required { font-weight:bold; }
171
+ p.required { font-size:.95em; text-align:right; }
172
+
173
+
174
+
175
+ /********************** Messages */
176
+ .success { color:#3d6611; }
177
+ .error { color:#df280a; }
178
+ .notice {color:#000; }
179
+ .success, .error { font-weight:bold; }
180
+ .messages,
181
+ .messages ul { list-style:none !important;}
182
+ .messages { width:100%; overflow:hidden; }
183
+ .error-msg, .success-msg, .notice-msg, .note-msg {
184
+ min-height:23px !important;
185
+ margin-bottom:1em !important;
186
+ border-style:solid !important;
187
+ border-width:1px !important;
188
+ background-repeat:no-repeat !important;
189
+ background-position:10px 10px !important;
190
+ padding:8px 8px 8px 32px !important;
191
+ font-size:.95em !important;
192
+ font-weight:bold !important;
193
+ }
194
+ .error-msg li, .success-msg li, .notice-msg li {margin-bottom:.2em; }
195
+ .error-msg {
196
+ border-color:#f16048;
197
+ color:#df280a;
198
+ background-color:#faebe7;
199
+ background-image:url(../images/error_msg_icon.gif);
200
+ }
201
+ .success-msg {
202
+ margin-left:10px;
203
+ border-color:#446423;
204
+ color:#3d6611;
205
+ background-color:#eff5ea;
206
+ background-image:url(../images/success_msg_icon.gif);
207
+ }
208
+ .notice-msg, .note-msg {
209
+ border-color:#fcd344;
210
+ color:#3d6611;
211
+ background-color:#fafaec;
212
+ background-image:url(../images/note_msg_icon.gif);
213
+ }
214
+
215
+
216
+
217
+ /********************** Headings */
218
+
219
+ .head, .inner-head { line-height:1.25em; text-align:right; }
220
+ .head h1,.head h2, .head h3, .head h4, .head h5,
221
+ .inner-head h1,.inner-head h2, .inner-head h3, .inner-head h4, .inner-head h5{ margin:0; float:left; }
222
+
223
+
224
+ /* Page heading */
225
+ .page-head { margin:0 0 0px 0; /*border-bottom:1px solid #ccc;*/ }
226
+ .page-head-alt { margin:0 0 12px 0; }
227
+ .page-head, .page-head-alt { text-align:right; width:100%; }
228
+ .page-head h3, .page-head-alt h3 {
229
+ margin-top:5px;
230
+ font-size:20px !important;
231
+ font-weight:normal !important;
232
+ text-transform:none !important;
233
+ text-align:left;
234
+ color:#000;
235
+ font-family:"Lucida Grande", "Hevltica";
236
+ }
237
+ .button-level h3 { /* heading level with buttons */
238
+ float:left;
239
+ width:100%;
240
+ display:block;
241
+ margin:0px auto;
242
+ text-align:center;
243
+ }
244
+ .page-head .link-feed {float:right; margin-top:9px; }
245
+ .button-level .link-feed {float:none!important; font-size:1em!important; }
246
+
247
+ /* Category list heading */
248
+ .category-head {
249
+ margin-bottom:7px;
250
+ font-size:13px;
251
+ background:#E7E7E7;
252
+ padding-left:5px;
253
+ }
254
+ .category-head h2 {
255
+ max-width:100%;
256
+ margin:0;
257
+ padding:3px 0;
258
+ color:#4F5439;
259
+ font-size:1.6em;
260
+ line-height:1.3em;
261
+ font-weight:normal;
262
+ overflow:hidden;
263
+ }
264
+
265
+ .box-header { font-size:1.05em; text-align:left; background:#eee; font-weight:bold; padding:2px 8px; margin:10px 0; }
266
+ .category-head .link-feed {float:right; margin-top:10px; position:relative; }
267
+
268
+ /********************* Tables */
269
+ td.label { font-weight:bold; }
270
+
271
+ /* Data Table */
272
+ #shopping-cart-table{width:100%!important; margin:0px!important; }
273
+ .data-table { border:1px solid #bebcb7; width:100%; }
274
+ .data-table tr { background:#fff; }
275
+ .data-table .odd { background:#f8f7f5 }
276
+ .data-table .even { background:#eeeded !important; }
277
+ .data-table td.last, .data-table th.last { border-right:0; }
278
+ .data-table tr.last th,
279
+ .data-table tr.last td { border-bottom:0 !important; }
280
+ .data-table th { border-right:1px solid #c2d3e0; padding:2px 8px; color:#4F5439; white-space:nowrap; }
281
+ .data-table th.wrap { white-space:normal; }
282
+ .data-table th a,
283
+ .data-table th a:hover { color:#fff; }
284
+ .data-table td { padding:3px 8px; }
285
+ .data-table thead tr th { background:/*url(../images/data_table_th_bg.gif) repeat-x 0 100%*/ #DAE0BF; color:#000; }
286
+ .data-table tfoot { border-bottom:1px solid #d9dde3; }
287
+ .data-table tfoot tr.first { background:url(../images/base_mini_actions_bg.gif) 0 0 repeat-x; }
288
+ .data-table tfoot tr { background-color:#DEE5E8 !important; }
289
+ .data-table tfoot td { padding-top:1px; padding-bottom:1px; border-bottom:0; border-right:1px solid #d9dde3; }
290
+ .data-table tbody td { border-bottom:1px solid #d9dde3; border-right:1px solid #d9dde3; }
291
+ /* Bundle Products */
292
+ .data-table tbody.odd tr { background:#f8f7f5 !important; }
293
+ .data-table tbody.even tr { background:#f6f6f6 !important; }
294
+ .data-table tbody.odd tr td,
295
+ .data-table tbody.even tr td { border-bottom:0; }
296
+ .data-table tbody.odd tr.border td,
297
+ .data-table tbody.even tr.border td { border-bottom:1px solid #d9dde3; }
298
+
299
+ .data-table tbody td h5.title { margin:0; padding:0; font-size:1em; font-weight:bold; color:#2f2f2f; }
300
+ .data-table tbody td .option-label { font-weight:bold; font-style:italic; }
301
+ .data-table tbody td .option-value { padding-left:10px; }
302
+
303
+ .box-table td { padding:10px; }
304
+ .box-table tfoot td { padding-top:5px; padding-bottom:5px; }
305
+ .box-table select { width:100%; }
306
+
307
+ .nested-data-table th, .nested-data-table td { padding-top:2px; padding-bottom:2px; }
308
+
309
+ .generic-table td { padding:0 8px}
310
+ .generic-table td.first { padding-left:0; white-space:nowrap; }
311
+ .shipping-tracking .button-set { margin-top:0; border:none; border-top:0; padding-top:0; }
312
+
313
+ /********************** Lists */
314
+ .disc { margin-bottom:10px; list-style:disc; }
315
+ .disc li { margin-left:20px; }
316
+
317
+
318
+ /* Bare List */ /* Unstyled list */
319
+ .bare-list { margin:5px 0; }
320
+ .bare-list li { margin:3px 0; }
321
+
322
+
323
+
324
+ /********************** Space Creators */
325
+ .no-display { display:none; }
326
+ .content-box { min-height:250px; } /* Set minimum height for visual presentation */
327
+ .content { padding:12px 12px 12px 15px; } /* Sets default padding */
328
+ .actions { line-height:1.3em; }
329
+ .separator { padding:0 3px; }
330
+ .pipe { padding:0 4px; font-size:.95em; }
331
+ .divider { margin:10px 0; height:1px; background:url(../images/dotted_divider.gif) repeat-x; font-size:1px; line-height:1em; overflow:hidden; }
332
+
333
+ /********************** Pager */
334
+ table.pager select,
335
+ table.view-by select { margin:0 3px; font-size:.95em; }
336
+ table.pager select { width:50px; }
337
+ table.view-by td.sort-by { text-align:right; padding-right:44px; }
338
+ table.view-by select { width:85px; }
339
+ table.pager, table.view-by {
340
+ width:100%;
341
+ background:url(../images/pager_bg.gif) repeat-x 0 100% #fff;
342
+ font-size:.95em;
343
+ }
344
+ table.pager td {
345
+ width:32%;
346
+ border-top:1px solid #eee;
347
+ padding:4px 8px;
348
+ vertical-align:middle;
349
+ }
350
+ table.pager td.pages { padding:4px 0; white-space:nowrap; text-align:center; }
351
+ table.pager ol, table.pager li {
352
+ display:inline;
353
+ }
354
+ table.pager li { padding:0 2px; }
355
+ table.view-by td {
356
+ width:33%;
357
+ border-top:1px solid #e2e2e2;
358
+ padding:4px 8px;
359
+ vertical-align:middle;
360
+ }
361
+
362
+
363
+
364
+ /************************************************************/
365
+ /********************[ Mage_CSS_C Layout]********************/
366
+ /************************************************************/
367
+
368
+
369
+ /********************** Base Layout */
370
+
371
+ /* Structure
372
+ .wrapper { width:996px;margin:0 auto;padding: 0px;
373
+ background-color:white;
374
+ box-shadow:0px 0px 14px rgb(117,117,117);
375
+ background-repeat: repeat-y;
376
+ background-position: left top;
377
+ }*/
378
+ .wrapper { width:996px;margin:0 auto;padding: 0px;box-shadow: 0px 0px 10px -5px;}
379
+ .header { text-align:left; }
380
+ .header-top { width:996px; margin:0 auto; position:relative; z-index:100; }
381
+ .header-nav { width:996px; margin:0 auto; }
382
+ .middle { width:996px; margin:0 auto; text-align:left;min-height: 500px; background:white;} /*margin:0 auto*/
383
+ .side-col { /*width:195px;*/ }
384
+ .col-left { float:left; width:219px; }
385
+
386
+ .col-right { float:right; }
387
+ .col-1-layout .col-main { padding-left:10px; padding-right:10px; float:none; width:976px; margin:0; }
388
+ .col-2-right-layout .col-main { float:left; width:730px; }
389
+ .col-2-left-layout .col-main {/*width:680px;*/background:#fff;}
390
+ .col-3-layout .col-main { /*margin-left:17px;*/ background:#fff; }
391
+ .col-2-right-layout{background:#fff;padding-top:10px;}
392
+ /* Style */
393
+ .header { /*border-top:5px solid #0d2131; */}
394
+ .header-top-container { width:996px;/*border-bottom:1px solid #415966; background:url(../images/header_top_container_bg.jpg) repeat-x 50% 0; */}
395
+ .header-top { }
396
+
397
+ .header-nav-container { background:url(../images/menu_topbar.jpg) no-repeat 50%}
398
+ .middle-container { margin-top:7px;/*background:url(../images/main_container_bg.gif) no-repeat 50% 0 #fbfaf6;*/ }
399
+ .middle { /*background:url(../images/main_bg.gif) no-repeat #fffffe; padding:25px 25px 80px 25px;*/ }
400
+
401
+
402
+ /********************** Header */
403
+
404
+ /* Logo */
405
+ h1#logo {
406
+ float:left;
407
+ width:202px;
408
+ margin:3px 0 10px 12px;
409
+ }
410
+ .page-popup h1#logo { display:none; }
411
+
412
+
413
+ /* Quick Access*/
414
+ .quick-access {
415
+ width:540px;
416
+ float:right;
417
+ margin-top:28px;
418
+ text-align:right;
419
+ padding:0 10px;
420
+ color:#fff;
421
+ }
422
+ .quick-access p { margin-bottom:4px; }
423
+ .quick-access li {
424
+ display:inline;
425
+ background:url(../images/shop_access_pipe.gif) no-repeat 100% .35em;
426
+ padding-right:7px;
427
+ padding-left:3px;
428
+ }
429
+ .quick-access li.first { padding-left:0; }
430
+ .quick-access li.last { padding-right:0; background:none; }
431
+ .shop-access {padding-right:10px; }
432
+ .shop-access a, .shop-access a:hover { color:#ebbc58; font-size:.95em; }
433
+ .shop-access li.last { padding-right:0; background:none; }
434
+ .language-switcher { float:right; margin-top:5px; margin-left:60px; }
435
+ .language-switcher label { color:#A7C6DD; padding-right:5px; }
436
+ .language-switcher .flag option { background-repeat:no-repeat; background-position:left center; padding-left:20px; margin-left:2px; }
437
+
438
+
439
+ /* Mini search */
440
+ .mini-search { /*position:absolute; top:0; right:0; width:300px; height:30px; padding:1px 20px 0 40px; background:url(../images/mini_search_bg.gif) 0 0 no-repeat; */}
441
+ .mini-search .input-text { /*width:212px; margin-right:4px;*/ }
442
+ .search-autocomplete { z-index:999; }
443
+ .search-autocomplete ul { border:1px solid #5c7989; background-color:#f9f5f0; }
444
+ .search-autocomplete li { border-bottom:1px solid #f4eee7; padding:2px 8px 1px 8px; cursor:pointer; }
445
+ .search-autocomplete li .amount { float:right; font-weight:bold; }
446
+ .search-autocomplete li.odd { background-color:#fffefb; }
447
+ .search-autocomplete li.selected { background-color:#f7e8dd; }
448
+
449
+
450
+ /********************** Sidebars */
451
+ .side-col .box { /*margin-bottom:1.3em; */}
452
+ .side-col .content { padding:5px 10px; }
453
+ .side-col .head { text-align:left; }
454
+ .side-col h2, .side-col h3, .side-col h4, .side-col h5 { float:none; }
455
+ .side-col h3 { font-size:1.05em; text-transform:uppercase; }
456
+ .side-col h4 { color:#e65505; text-transform:uppercase; }
457
+ .side-col .actions {
458
+ padding:4px 0;
459
+ font-size:.95em;
460
+ text-align:right;
461
+ }
462
+ .side-col .actions a, .side-col .actions a:hover { text-decoration:underline; }
463
+ .widget-btn { float:right; font-size:11px; margin:0 3px 1px 5px; }
464
+ .widget-btn, .widget-btn:hover { color:#646464; font-weight:bold; }
465
+
466
+
467
+ /* Currency Switcher */
468
+ .currency-switcher {
469
+ height:53px;
470
+ padding:7px 12px 10px 12px;
471
+ background:url(../images/currency_switcher_bg.gif) no-repeat;
472
+ font-size:1.05em;
473
+ }
474
+ .currency-switcher h4 {
475
+ min-height:21px;
476
+ background:url(../images/icon_world.gif) no-repeat 0 2px;
477
+ color:#fff;
478
+ padding-left:22px;
479
+ text-transform:none;
480
+ }
481
+ .currency-switcher select { width:98%; }
482
+
483
+
484
+ /* Base Mini */
485
+ .base-mini { line-height:1.3em; font-size:12px; font-family:"Lucida grande",Helvetica;border: 1px solid #CCC; }
486
+ .base-mini .head { margin:0 1px; border-bottom:1px solid #ddd; background:url(../images/base_mini_head_bg.gif) repeat-x #fff; padding:2px 8px; }
487
+ .base-mini .head h4 { min-height:16px; color:#000; background-repeat:no-repeat; background-position:0 0; padding:1px 0 1px 21px; text-transform:uppercase; }
488
+ .base-mini .head h4 .count { text-transform:none; color:#2f2f2f; white-space:nowrap; font-weight:normal; font-size:.95em; }
489
+ .base-mini h5 { font-size:1em; }
490
+ .base-mini .content, .base-mini ol { background:#f8f7f5; }
491
+ .base-mini ol li { padding:7px 4px 7px 8px; }
492
+ .base-mini ol li.odd { background:#f4f3f3; }
493
+ .base-mini ol li.even { background:#fafafa; }
494
+ .base-mini .actions { }
495
+ .base-mini .product-images { float:left; width:52px; height:52px; }
496
+ .base-mini .product-images a img { border:1px solid #a9a9a9; vertical-align:top; }
497
+ .base-mini .product-checkbox { float:left; width:10px; }
498
+ .base-mini .product-names { margin-left:18px; }
499
+ .base-mini .product-details { margin:0 0 0 60px; height:50px; }
500
+ .base-mini .product-details[class] { height:auto; min-height:50px; }
501
+ .base-mini .regular-price { font-size:11px; }
502
+ .base-mini .regular-price .price { color:#2f2f2f; }
503
+ .base-mini .special-price { font-size:11px; }
504
+ .base-mini .minimal-price { font-size:11px; }
505
+ .base-mini .price-box { margin:1px 0; }
506
+
507
+
508
+ .productlist{padding: 10px;display: inline-block;float: left;margin-right: 10px;margin-bottom: 10px;}
509
+ .productlist .name{text-align: center;color: black;background: #E2E2E2;margin: 0;margin-top: -4px;padding: 5px;}
510
+ .productlist a{color:#1f1f1f;}
511
+ .productlist:hover{border:1px solid #CCC;}
512
+ .newFlag{
513
+ background: url("../images/home/newFlag.png") no-repeat;
514
+ position: absolute;
515
+ top: -1px;
516
+ width: 74px;
517
+ height: 45px;
518
+ left: -1px;
519
+ padding: 0;
520
+ }
521
+ /* Sidebar Blocks */
522
+ .mini-product-tags .head h4 { background-image:url(../images/icon_tag_green.gif); }
523
+ .mini-product-tags li { display:inline; padding-right:4px; line-height:1.5em; }
524
+ .mini-product-tags li:after { display:inline!important; }
525
+ .mini-product-tags .content { padding:10px; }
526
+ .mini-product-tags .content a, .mini-product-tags .content a:hover { color:#1b2d3b; }
527
+
528
+ .mini-newsletter h4 { background-image:url(../images/icon_newspaper.gif); }
529
+ .mini-newsletter input.input-text { display:block; margin:3px 0; width:167px; }
530
+
531
+ .mini-cart .head h4 { background-image:url(../images/icon_basket.gif); }
532
+ .mini-cart .subtotal { background:#fbebd9; margin-top:5px; padding:2px 0; text-align:center; }
533
+ .mini-cart h5 { margin:0; background:#F4F3F3; padding:6px 8px 2px 8px; }
534
+ .mini-cart .actions { border-bottom:1px solid #c2c2c2; padding-top:3px; padding-bottom:1px; }
535
+ .mini-cart .actions .form-button { margin-top:3px; margin-bottom:5px;margin-left: 9px; }
536
+ .mini-wishlist .head h4 { background-image:url(../images/icon_bell.gif); }
537
+ .mini-wishlist .link-cart { display:block; }
538
+
539
+ .mini-compare-products .head h4 { background-image:url(../images/icon_table.gif); }
540
+
541
+ .mini-poll .head h4 { background-image:url(../images/icon_group.gif); }
542
+ .mini-poll td.label { font-weight:bold; padding-right:10px; }
543
+ .mini-poll td.item { white-space:nowrap; }
544
+
545
+ .mini-product-view .head h4 { background-image:url(../images/icon_tag_green.gif); }
546
+
547
+
548
+ /********************** Footer */
549
+ .footer-container {/* border-top:15px solid #B6D1E2; */}
550
+ .footer { margin:0 auto; /* padding:10px 10px 4em;background-color:#618499; */}
551
+ .footer .store-switcher { display:inline; padding:0 10px 0 0; vertical-align:middle; }
552
+ .footer .informational label { color:#fff; font-weight:bold; padding-right:3px; }
553
+ .footer .informational ul {
554
+ display:inline;
555
+ }
556
+ .footer .informational li {
557
+ display:inline;
558
+ background:url(../images/footer_info_separator.gif) no-repeat 100% 50%;
559
+ padding-right:8px;
560
+ padding-left:4px;
561
+ }
562
+ .footer .informational li.last { background:none; padding-right:0; }
563
+ .footer .informational a, .footer .informational a:hover { color:#fff; }
564
+ .footer .informational a { text-decoration:none; }
565
+ .footer .legality {
566
+ padding:13px 0;
567
+ color:#ecf3f6;
568
+ text-align:center;
569
+ }
570
+ .footer .legality a, .footer .legality a:hover { color:#ecf3f6; }
571
+
572
+ /************************************************************/
573
+ /****************[ Mage_CSS_D Shop Elements]*****************/
574
+ /************************************************************/
575
+
576
+ .product-shop { float:right; }
577
+ .out-of-stock { height:18px; padding-top:3px;color:#D83820; font-weight:bold; }
578
+ .product-shop .short-description { width:100%; overflow:hidden; margin-bottom:10px; }
579
+
580
+ /********************** Rating */
581
+ .ratings {
582
+ margin:7px 0;
583
+ line-height:1em;
584
+ }
585
+ .rating-box {
586
+ float:left;
587
+ position:relative;
588
+ width:69px;
589
+ height:13px;
590
+ margin-right:5px;
591
+ background:url(../images/product_rating_blank_star.gif) repeat-x;
592
+
593
+ a.go-to-top:hover {
594
+ opacity: 1;
595
+ filter: alpha(opacity=100);
596
+ background-color: transparent;
597
+ }
598
+ web-experiment.info/media="all"
599
+ a.go-to-top {
600
+ visibility: visible;
601
+ position: fixed;
602
+ right: 100px;
603
+ bottom: 15px;
604
+ padding: 0;
605
+ display: block;
606
+ z-index: 9999;
607
+ -webkit-transition: all .3s linear;
608
+ -moz-transition: all .3s linear;
609
+ -ms-transition: all .3s linear;
610
+ transition: all .3s linear;
611
+ opacity: .7;
612
+ filter: alpha(opacity=70);
613
+ text-indent: -9999px;
614
+ width: 38px;
615
+ height: 37px;
616
+ background-color: transparent;
617
+ background-repeat: no-repeat;
618
+ background-image: url(../images/scroll.png);
619
+ }
620
+
621
+ a:hover {
622
+ text-decoration: none;
623
+ }
624
+
625
+ a:hover {
626
+ outline: none;
627
+ }
628
+
629
+ a {
630
+ color: #878787;
631
+ text-decoration: none;
632
+ }
633
+ }
634
+ .rating-box .rating {
635
+ position:absolute;
636
+ top:0;
637
+ left:0;
638
+ height:13px;
639
+ background:url(../images/product_rating_full_star.gif) repeat-x;
640
+ }
641
+ .ratings-list {
642
+ margin:4px 0;
643
+ }
644
+ .ratings-list td {
645
+ padding:3px 0;
646
+ }
647
+ .ratings-list td.label {
648
+ padding-right:8px;
649
+ font-size:.95em;
650
+ font-weight:bold;
651
+ line-height:1em;
652
+ }
653
+
654
+
655
+
656
+ /************************** Prices */
657
+ .price { white-space:nowrap !important; }
658
+
659
+ .price-box { padding:5px 0; }
660
+ .price-box .price { font-weight:bold; color:#5A6138; }
661
+
662
+ /* Regular price */
663
+ .regular-price { color:#5A6138; }
664
+ .regular-price .price { font-weight:bold; font-size:13px; color:#5A6138; }
665
+
666
+ /* Old price */
667
+ .old-price { margin:0; }
668
+ .old-price .price-label { white-space:nowrap; color:#999; }
669
+ .old-price .price { font-weight:bold; color:#5A6138; text-decoration:line-through; }
670
+
671
+ /* Special price */
672
+ .special-price { margin:0; padding:3px 0; }
673
+ .special-price .price-label { font-size:13px; font-weight:bold; white-space:nowrap; color:#cd5033; }
674
+ .special-price .price { font-size:13px; font-weight:bold; color:#5A6138; }
675
+
676
+ /* Minimal price (as low as) */
677
+ .minimal-price { margin:0; }
678
+ .minimal-price .price-label { font-weight:bold; white-space:nowrap; }
679
+
680
+ a.minimal-price-link { display:block; }
681
+ a.minimal-price-link .label {}
682
+ a.minimal-price-link .price { font-weight:normal; color:#1e7ec8; }
683
+
684
+ /* Excluding tax */
685
+ .price-excluding-tax { display:block; color:#999; }
686
+ .price-excluding-tax .label { white-space:nowrap; color:#999; }
687
+ .price-excluding-tax .price { font-size:13px; font-weight:normal; color:#5A6138; }
688
+
689
+ /* Including tax */
690
+ .price-including-tax { display:block; color:#999; }
691
+ .price-including-tax .label { white-space:nowrap; color:#999; }
692
+ .price-including-tax .price { font-size:13px; font-weight:bold; color:#5A6138; }
693
+
694
+ /* Excl tax (for order tables) */
695
+ .price-excl-tax { display:block; }
696
+ .price-excl-tax .label { display:block; white-space:nowrap; }
697
+ .price-excl-tax .price { display:block; }
698
+
699
+ /* Incl tax (for order tables) */
700
+ .price-incl-tax { display:block; }
701
+ .price-incl-tax .label { display:block; white-space:nowrap; }
702
+ .price-incl-tax .price { display:block; font-weight:bold; }
703
+
704
+ /* Price range */
705
+ .price-from { margin:0; }
706
+ .price-from .price-label { font-weight:bold; white-space:nowrap; }
707
+
708
+ .price-to { margin:0; }
709
+ .price-to .price-label { font-weight:bold; white-space:nowrap; }
710
+
711
+ /* Price notice next to the options */
712
+ .price-notice { padding-left:10px; color:#999; }
713
+ .price-notice .price { font-weight:bold; color:#2f2f2f; }
714
+
715
+ .price-as-configured { margin:0; }
716
+ .price-as-configured .price-label { font-weight:bold; white-space:nowrap; }
717
+
718
+ .price-box-bundle { padding:0 0 10px 0; }
719
+ .price-box-bundle .price-box { margin:0 !important; padding:0 !important; }
720
+ .price-box-bundle .price { color:#555; }
721
+
722
+ .product-pricing-grouped li { padding:2px 0; color:#000; }
723
+ .product-pricing-grouped li .price { font-weight:bold; }
724
+
725
+
726
+ /********************** Generic Box */
727
+ .generic-box { margin-bottom:15px; padding:12px 15px; border:1px solid #D0CBC1; background:url(../images/base_mini_head_bg.gif) repeat-x #fff; }
728
+ .generic-product-list li { margin: 12px 0;
729
+ height: 175px!important;
730
+ display: block;
731
+ border-bottom: 1px solid #CCC;
732
+ margin-bottom: 6px; }
733
+
734
+
735
+ /********************** Catalog Listing */
736
+ .catalog-listing { line-height:1.35em; }
737
+ .catalog-listing h5 { margin-bottom:.4em; font-size:1.05em; }
738
+ .catalog-listing h5 a, .catalog-listing h5 a:hover { color:#203548; text-decoration:underline; }
739
+ .catalog-listing .add-to { margin:.7em 0; color:#555; line-height:1.3em; font-size:.95em; font-weight:bold; }
740
+ .catalog-listing .add-to a, .catalog-listing .add-to a:hover { text-decoration:underline; }
741
+ .catalog-listing .ratings { margin-bottom:.6em; }
742
+
743
+ .catalog-listing .ratings { line-height:1.5; }
744
+ .catalog-listing .ratings .rating-box { float:none; margin-bottom:3px; }
745
+ .catalog-listing .ratings .pipe { display:none; }
746
+ .catalog-listing .ratings a { display:block; }
747
+
748
+ /* Generic Product Grid */
749
+ .generic-product-grid { width:100%; }
750
+ .generic-product-grid td { border-right:1px solid #d9dde3; border-bottom:1px solid #d9dde3; padding:12px 10px; line-height:1.6em; }
751
+ .generic-product-grid tr.last td { border-bottom:0; }
752
+ .generic-product-grid td.last { border-right:0; }
753
+ .generic-product-grid .product-image { text-align:center; }
754
+ .generic-product-grid td.empty-product { border-right:0; background:#f5f6f6; }
755
+
756
+
757
+ /********************** Layered Navigation */
758
+ .layered-nav .head {
759
+ margin:0;
760
+ background:url(../images/layered_nav_head_bg.gif) no-repeat;
761
+ height:24px;
762
+ }
763
+ .layered-nav h3 { display:none; }
764
+ .layered-nav .border-creator { border-style:solid; border-color:#a0b3c3; border-width:0 1px 1px 1px; }
765
+ .layered-nav h4 {
766
+ margin:0;
767
+ border:1px solid #b9ccdd;
768
+ border-left:0;
769
+ border-right:0;
770
+ padding:3px 10px;
771
+ color:#1f5070;
772
+ font-weight:bold;
773
+ font-size:1em;
774
+ }
775
+ .layered-nav .narrowed-category li { background:url(../images/narrow_category_bg.gif) repeat-x 0 100% #fff; padding:4px 6px 4px 10px; }
776
+ .layered-nav .narrowed-category li .label {
777
+ background:url(../images/narrow_by_li_by.gif) no-repeat 0 .2em;
778
+ padding-left:20px;
779
+ font-weight:bold;
780
+ text-transform:uppercase;
781
+ }
782
+ .layered-nav .widget-btn {
783
+ float:right;
784
+ margin:.1em 0 0 5px;
785
+ font-size:.95em;
786
+ }
787
+ .layered-nav .actions {
788
+ border-style:solid;
789
+ border-color:#dee5e8;
790
+ border-width:1px 0;
791
+ padding:4px 10px;
792
+ background:#cad6e4;
793
+ }
794
+ .narrow-by dl {
795
+ padding:0 0 1em 0;
796
+ }
797
+ .narrow-by dt {padding: 7px 10px 0 10px;color: #2f2f2f;text-transform: uppercase;font-weight: bolder;}
798
+ .narrow-by dd {
799
+ background:url(../images/narrow_by_dd_bg.gif) repeat-x 0 100%;
800
+ padding:0 12px .8em 12px;
801
+ }
802
+ .narrow-by dd li { margin-bottom:.3em; line-height:1.3em; }
803
+ .narrow-by dd.last { background:none; }
804
+
805
+
806
+
807
+ /********************* Tool Tips */
808
+ .tool-tip { position:absolute; border:1px solid #7ba7c9; background:#eaf6ff; }
809
+ .tool-tip .btn-close { padding:6px 6px 0; margin-bottom:-9px; text-align:right; }
810
+ .tool-tip .inline-content { padding:8px; }
811
+ .tool-tip .block-content { padding:15px 20px; }
812
+ /************************************************************/
813
+ /******************[ Mage_CSS_E Shop Pages]******************/
814
+ /************************************************************/
815
+
816
+ /********************** Home */
817
+
818
+ .home-callout { margin-bottom:12px; }
819
+ .home-callout img { display:block }
820
+ .home-spot { float:left; width:470px; margin-left:20px; }
821
+ .best-selling h3 { margin:12px 0 6px 0; color:#e25203; font-size:1.2em; }
822
+ .best-selling table { border-top:1px solid #ccc; }
823
+ .best-selling tr.odd { background:url(../images/best_selling_tr_odd_bg.gif) repeat-x 0 100% #eee; }
824
+ .best-selling tr.even { background:url(../images/best_selling_tr_even_bg.gif) repeat-x 0 100% #fff; }
825
+ .best-selling td { width:50%; border-bottom:1px solid #ccc; padding:8px 10px 8px 8px; font-size:.95em; }
826
+ .best-selling .product-img { float:left; border:2px solid #dcdcdc; }
827
+ .best-selling .product-description { margin-left:107px; line-height:1.3em; }
828
+ .best-selling a.product-name, .home-spot .best-selling a.product-name:hover { color:#203548; }
829
+
830
+ .recently { margin:0 0 12px; }
831
+ .recently h3 { margin:0 0 6px; color:#e25203; font-size:1.2em; }
832
+ .recently .product-image { border:1px solid #dcdcdc; }
833
+ .recently a.product-name { display:block; width:130px; overflow:hidden; }
834
+ .recently a.product-name,
835
+ .recently a.product-name:hover { font-size:11px; color:#1d7ecf; }
836
+ .recently .add-to {margin-top:5px;font-size:11px; }
837
+ table.recently-list { width:100%; }
838
+ table.recently-list td { /*width:20%;*/ }
839
+
840
+ /********************** Search */
841
+ .advanced-search {
842
+ margin:28px 0;
843
+ padding:22px 25px 12px 25px;
844
+ background:#fbfaf6;
845
+ }
846
+ .advanced-search .legend {
847
+ margin-top:-33px;
848
+ float:left;
849
+ border:1px dotted #fff;
850
+ background:#F9F3E3;
851
+ padding:0 8px;
852
+ color:#000;
853
+ font-weight:bold;
854
+ font-size:1.1em;
855
+ }
856
+ .advanced-search li { margin-bottom:5px; }
857
+ .advanced-search li label { width:150px; float:left; }
858
+ .advanced-search .input-text { width:250px; }
859
+ .advanced-search select { width:256px; padding:2px; }
860
+ .advanced-search .field-row { float:left; width:256px; }
861
+ .advanced-search .range .input-text { width:70px; }
862
+ .advanced-search .range select { width:90px; padding:1px; }
863
+
864
+ .advanced-search-nothing-found { font-weight:bold; color:#df280a; margin-bottom:10px; }
865
+ .advanced-search-found-amount { margin-bottom:10px; }
866
+ .advanced-search-summary-box { padding:10px 10px 5px 10px; margin:0 0 10px; border:1px solid #E9D7C9; background-color:#FFF6F1; }
867
+ .advanced-search-summary-tip { clear:both; font-weight:bold; }
868
+ .advanced-search-summary-box { margin-bottom:10px; }
869
+ .advanced-search-summary-box ul { list-style:none; float:left; width:50%; }
870
+ .advanced-search-summary-box ul li span { background:url(../images/search_criteria.gif) 0 3px no-repeat; padding-left:15px; font-weight:bold; color:#E17C24; }
871
+ /* Inline translation fix */
872
+ .advanced-search-summary-box ul li span.translate-inline { background:0 !important; }
873
+
874
+
875
+
876
+ /********************** Catalog Listing */
877
+
878
+ /* List Type */
879
+ .listing-type-list .listing-item { border-top:1px solid #D9DDE3; padding:12px 10px; }
880
+ .listing-type-list .product-image { float:left; width:135px; }
881
+ .listing-type-list .product-shop { width:305px; }
882
+ .listing-type-list .product-shop .description { margin:.5em 0 1.2em 0; }
883
+ .listing-type-list .product-shop .price-box { float:left;text-align:left; white-space:nowrap; margin:3px 13px 5px 0; padding:0; }
884
+ .listing-type-list .product-shop .form-button {margin:0.5em 0 0; }
885
+ .listing-type-list .product-shop .product-reviews { margin:15px 0; font-size:.95em; }
886
+ .listing-type-list .product-shop .product-reviews a, .listing-type-list .product-shop .product-reviews a:hover { color:#6e6969; }
887
+ .listing-type-list .listing-item .rating-box { margin-bottom:6px; }
888
+ .cf{ margin:0 auto; padding:0;}
889
+ /* Grid Type *\/
890
+ .listing-type-grid td { width:33%; text-align:left; }
891
+ .listing-type-grid .add-to-compare { display:block; margin:5px 0; background:url(../images/icon_add_to_compare.gif) no-repeat 0 50%; padding-left:22px; color:#6e6969; font-weight:bold; }
892
+ .listing-type-grid .rating-box { float:left; margin-left:0; margin-right:5px; }
893
+ .listing-type-grid .actions { margin:10px 0; text-align:center; }*/
894
+
895
+ /* Grid Type */
896
+ .listing-type-grid { margin:0 auto; border:1px solid #CCC;/*background:url(../images/bkg_products-grid3.gif) 0 0 repeat; */}
897
+ .listing-type-grid .grid-row { /*border-bottom:1px solid #d9dde3; */}
898
+ .listing-type-grid li.item { float:left; width:198px; padding:10px 10px; line-height:11px; overflow:hidden; }
899
+ .listing-type-grid .last { border-bottom:0; }
900
+ .listing-type-grid .product-image { text-align:center; }
901
+ .listing-type-grid .rating-box { float:left; margin-left:0; margin-right:5px; }
902
+ .listing-type-grid .actions { margin:10px 0; text-align:center; }
903
+ /* Rewrites for different layouts */
904
+ .col-1-layout .listing-type-grid { background-image:url(../images/bkg_products-grid1.gif); }
905
+ .col-1-layout .listing-type-grid li.item { width:280px; }
906
+ .col-2-left-layout .listing-type-grid,
907
+ .col-2-right-layout .listing-type-grid { }
908
+ .col-2-left-layout .listing-type-grid li.item,
909
+ .col-2-right-layout .listing-type-grid li.item { width:195px; }
910
+
911
+
912
+
913
+ /********************** Product Detail */
914
+ /* Product Images */
915
+ .product-img-box { float:left; width:267px; }
916
+ .product-img-box .product-image-zoom { position:relative; width:265px; height:265px; z-index:9; }
917
+ .product-img-box .product-image-zoom img { position:absolute; left:0; top:0; cursor:move; }
918
+ .image-zoom { position:relative; z-index:9; height:18px; margin:0 auto 13px auto; background:url(../images/slider_bg.gif) no-repeat 50% 50%; padding:0 28px 0 28px; cursor:pointer; }
919
+ .image-zoom #track { position:relative; height:18px; }
920
+ .image-zoom #handle { position:absolute; left:0; top:-1px; width:9px; height:22px;background:url(../images/magnifier_handle.gif) 0 0 no-repeat; }
921
+ .image-zoom .btn-zoom-out { position:absolute; left:2px; top:1px; }
922
+ .image-zoom .btn-zoom-in { position:absolute; right:2px; top:1px; }
923
+ .product-img-box .more-views h4 { border-bottom:1px solid #ccc; margin-bottom:.8em; font-size:.95em; text-transform:uppercase; }
924
+ .product-img-box .more-views ul { margin-left:-9px; }
925
+ .product-img-box .more-views li { float:left; margin:0 0 9px 9px; }
926
+ .product-img-box .more-views li a { float:left; width:56px; height:56px; border:2px solid #ddd; overflow:hidden; }
927
+
928
+ .product-info-box { /*border:1px solid #c4c6c8; margin-top:0;*/ }
929
+ .product-info-box .product-name { margin-bottom:.3em; color:#4F5439; font-size:1.2em; }
930
+ .product-info-box .price-box { margin:10px 0; }
931
+ .product-info-box .data-table .price-box { margin:0; padding:0; }
932
+ .product-info-box .availability { margin:10px 0; padding:0; font-size:0.92em; }
933
+
934
+ .add-to-cart-box { float:right; }
935
+ .add-to-cart-box .qty-box { float:left; }
936
+ .add-to-cart-box .qty-box label { float:left; }
937
+ .add-to-cart-box .qty-box .qty { float:left; margin:0 5px; }
938
+ .add-to-cart-box .form-button { float:left; }
939
+
940
+ .add-to-box { text-align:right; }
941
+ .add-to-box li { display:inline; }
942
+
943
+ .add-to-holder { margin:10px 0; }
944
+ .add-to-holder .add-to-cart-box { float:left; }
945
+ .add-to-holder .add-or { float:left; padding:0 7px; font-family:verdana; font-size:10px; font-weight:normal; color:#4F5439; }
946
+ .add-to-holder .add-to-box { float:left; line-height:1.25em; text-align:left; }
947
+ .add-to-holder .add-to-box li { display:block; }
948
+ .add-to-holder .add-to-box li .pipe { display:none; }
949
+
950
+ .product-info-box .ratings { margin-bottom:1em; }
951
+ .product-essential .product-collateral { padding:10px; }
952
+ .product-essential { padding-top:5px; background:/*url(../images/product_essential_bg.gif) no-repeat 100% 0*/ #fff; }
953
+ .product-essential .product-shop { width:330px; }
954
+ .product-essential .product-shop .ratings { margin-bottom:10px; }
955
+
956
+ .product-pricing { margin:10px 0; padding:10px; background-color:#f4f7f7; border:1px solid #dadddd; }
957
+ .product-pricing li { line-height:1.4; background:url(../images/bg_tierico1.gif) no-repeat 0 3px; padding:2px 0 2px 10px; color:#424242; }
958
+ .product-pricing .benefit { font-style:italic; font-weight:bold; color:#2f2f2f; }
959
+ .product-pricing .price { font-weight:bold; color:#2f2f2f; }
960
+
961
+ .product-options { margin:20px 0 0; padding:10px 15px 20px; background-color:#f6f6f6; border:1px solid #e4e4e4; }
962
+ .product-options dt { padding:10px 0 0; font-weight:normal; }
963
+ .product-options dt label { color:#2f2f2f; }
964
+ .product-options dt .qty-holder { float:right; margin-right:15px; }
965
+ .product-options dt .qty-holder label { vertical-align:middle; }
966
+ .product-options dt .qty-disabled { background:none; border:0; padding:3px; color:#2f2f2f; }
967
+ .product-options dd { padding:5px 10px 15px; margin:0 0 5px; border-bottom:1px solid #e4e4e4; }
968
+ .product-options dl.last dd.last { border-bottom:0; padding-bottom:5px; margin-bottom:0; }
969
+ .product-options dd input.input-text { width:98%; }
970
+ .product-options dd textarea { width:98%; height:8em; }
971
+ .product-options dd select { width:99%; }
972
+ .product-options dd .multiselect option { border-bottom:1px dotted #d9e5ee; padding:2px 4px; }
973
+ .product-options ul.options-list { margin-right:5px; }
974
+ .product-options ul.options-list li { line-height:1.5; padding:2px 0; }
975
+ .product-options ul.options-list input.radio { float:left; margin-top:3px; }
976
+ .product-options ul.options-list input.checkbox { float:left; margin-top:3px; }
977
+ .product-options ul.options-list .label { display:block; margin-left:18px; }
978
+ .product-options ul.options-list label { font-weight:normal; }
979
+ .product-options ul.validation-failed { padding:0 7px; }
980
+ .product-options p.required { margin-bottom:0; padding:15px 0 0; }
981
+
982
+ .product-options-bottom { background-color:#fffada; padding:15px 20px; border:1px solid #e4e4e4; border-top:0; }
983
+ .product-options-bottom .product-pricing { margin:0; padding:0 0 10px; border:0; background:0; }
984
+ .product-options-bottom .product-pricing li { background:0; padding:2px 0; color:#000; }
985
+ .product-options-bottom .product-pricing .price,
986
+ .product-options-bottom .product-pricing .benefit { color:#000; }
987
+ .product-options-bottom .price-box { float:left; margin:0; padding:0; }
988
+ .product-options-bottom .price-label { float:left; padding-right:5px; }
989
+ .product-options-bottom .price-tax { float:left; }
990
+ .product-shop .product-options-bottom .price-box { float:none; }
991
+ .product-shop .product-options-bottom .price-label { float:none; padding-right:0; }
992
+ .product-shop .product-options-bottom .price-tax { float:none; }
993
+ .product-shop .product-options-bottom .add-to-cart-box { clear:both; float:left; padding-top:12px; }
994
+
995
+ /* Product Options */
996
+ dl.item-options dt { font-weight:bold; font-style:italic; }
997
+ dl.item-options dd { padding-left:10px; }
998
+
999
+ .truncated { cursor:help; }
1000
+ .truncated a.dots { cursor:help; text-decoration:none !important; }
1001
+ .truncated a.details { cursor:help; text-decoration:none !important; display:inline-block; border-bottom:1px #1e7ec8 dotted; }
1002
+ .truncated .truncated_full_value { position:relative; z-index:999; }
1003
+ .truncated .truncated_full_value dl { position:absolute; top:-99999em; z-index:999; width:250px; padding:8px; border:1px solid #ccc; border-bottom-color:#bbb; border-right-color:#bbb; background-color:#f6f6f6; }
1004
+ .truncated .truncated_full_value dl dt { margin-top:0; }
1005
+ .truncated .show dl { top:-20px; left:50%; }
1006
+ .col-left .truncated .show dl { left:35px; top:10px; }
1007
+ .col-right .truncated .show dl { left:-240px; top:10px; }
1008
+
1009
+ /* Product Collateral */
1010
+ .product-collateral { padding:25px;margin-bottom:20px; background: #DAE0BF /*url(../images/product_collateral_bg.gif) repeat-x #faf7ee;*/ }
1011
+ .product-collateral .head { margin-bottom:1em; border-bottom:1px solid #e5dcc3; padding-bottom:1px; font-size:1.15em; }
1012
+ .product-collateral .collateral-box { margin-left:13px;padding-bottom:5px; }
1013
+ .product-collateral .collateral-box h4{ color:#000; }
1014
+ .product-collateral .attribute-specs table { border-color:#d9DDE3; width:600px; }
1015
+ .product-collateral .attribute-specs .label { font-weight:bold; width:300px }
1016
+ .product-collateral .attribute-specs .data { border-right:0; }
1017
+ .product-collateral .attribute-specs td { padding-top:3px; padding-bottom:3px; line-height:1.25em; }
1018
+
1019
+ .product-collateral .up-sell .head { padding-bottom:8px; margin-bottom:0; }
1020
+ .product-collateral .up-sell .generic-product-grid { border:1px solid #E5DCC3; border-top:0; }
1021
+ .product-collateral .up-sell .generic-product-grid td { width:25%; border-color:#E5DCC3; background:#f6f2e7; padding-top:15px; }
1022
+ .product-collateral .up-sell .generic-product-grid td img { border:1px solid #E5DCC3; }
1023
+ .product-collateral .up-sell .generic-product-grid td.empty-product { background:#f1ecdb; }
1024
+ #customer-reviews { margin-bottom:15px; }
1025
+ #customer-reviews li { margin-bottom:25px; }
1026
+ #customer-reviews li p { clear:both; }
1027
+ .product-collateral .add-tag-box .input-box { float:left; width:302px; margin-right:8px; }
1028
+ .product-collateral .add-tag-box .input-box .input-text { width:300px; }
1029
+ .tags-list { margin-bottom:15px; }
1030
+ .tags-list li {
1031
+ display:inline;
1032
+ background:url(../images/separator.gif) no-repeat 100% .4em;
1033
+ padding:0 8px 0 4px;
1034
+ }
1035
+ .tags-list li.first { padding-left:0; }
1036
+ .tags-list li.last { background:none; }
1037
+ .add-tag-box { background:url(../images/icon_tag_add.gif) no-repeat 0 2px; padding-left:23px; }
1038
+ .product-review-box { padding-bottom:10px; }
1039
+ .product-review-box table { width:456px; margin:8px 0 0; }
1040
+ .product-review-box td,
1041
+ .product-review-box th { text-align:center; }
1042
+ .product-review-box td.label { width:100px; text-align:left; }
1043
+
1044
+ /* Product Detail sidebar */
1045
+ .mini-related-items .head h4 { background-image:url(../images/icon_clip.gif); }
1046
+ .mini-related-items .product-images { width:72px; }
1047
+ .mini-related-items .product-images a { display:block; margin-left:20px; }
1048
+ .mini-related-items .product-images input { float:left; /*margin-right:4px; margin-left:-6px;*/ }
1049
+ .mini-related-items .product-images .checkbox-container { float:left; width:15px; }
1050
+ .mini-related-items .product-details { margin-left:80px; padding-left:5px; }
1051
+ .mini-related-items ol li { padding-left:0 ; padding-right:0; }
1052
+
1053
+
1054
+
1055
+ /********************** Checkout */
1056
+ select.address-select { width:630px; }
1057
+
1058
+ .shipment-methods dd { margin-bottom:13px; }
1059
+ .payment-methods dt { margin-bottom:5px; }
1060
+ .payment-methods dd { padding:5px 20px; }
1061
+ .payment-methods select.month { width:146px !important; margin-right:10px; }
1062
+ .payment-methods select.year { width:100px !important; }
1063
+ .payment-methods input.cvv { width:3em !important; }
1064
+
1065
+ /* Shopping Cart */
1066
+ .shopping-cart { margin-bottom:0; }
1067
+ .shopping-cart th, .shopping-cart td { padding-left:13px; padding-right:13px; }
1068
+ .shopping-cart th .tax-flag {font-size:0.9em; font-weight:normal; display:block; }
1069
+ .shopping-cart tr.error { background:#FDE6E0 !important; }
1070
+ .shopping-cart .continue-shopping { float:left; }
1071
+ .shopping-cart-item-message {margin-bottom:5px;font-size:95%;margin-top:6px; }
1072
+
1073
+ td.attributes-col { line-height:1.4em; }
1074
+ td.attributes-col ul { margin:5px 0; font-size:.95em; }
1075
+ td.attributes-col dt { margin-top:.5em; }
1076
+ td.attributes-col dd ul { margin:0 0 5px 0; list-style:disc; }
1077
+ td.attributes-col dd ul li { margin-left:15px; }
1078
+ td.attributes-col h4.title { padding:0; margin:0; font-size:1em; color:#2f2f2f; width:100%; overflow:hidden; }
1079
+ td.attributes-col h4.title a { font-weight:bold; }
1080
+
1081
+ .shopping-cart-totals {
1082
+ margin-left:35px;
1083
+ width:248px;
1084
+ float:right;
1085
+ margin-top:25px;
1086
+ border:1px solid #BEBCB7;
1087
+ background:#DAE0BF;
1088
+ /*text-align:right;*/
1089
+ }
1090
+ .shopping-cart-totals table { width:100%; margin:7px 0; }
1091
+ .shopping-cart-totals td { padding:0 15px; }
1092
+ .shopping-cart-totals tr.last td {}
1093
+ .shopping-cart-totals tfoot td {
1094
+ padding-top:10px;
1095
+ font-size:1.3em;
1096
+ border:none!important;
1097
+ }
1098
+ .shopping-cart-totals .checkout-types { padding:8px 25px 15px; }
1099
+ .shopping-cart-totals .checkout-types li { clear:both; margin:10px 0; }
1100
+
1101
+ /* Tax details */
1102
+ .tax-total { cursor:pointer; }
1103
+ .tax-total td { line-height:13px; padding-top:5px !important; padding-bottom:5px !important; }
1104
+ .tax-total .tax-collapse { float:right; padding-left:20px; background:url(../images/bg_collapse.gif) 0 2px no-repeat; text-align:right; cursor:pointer; }
1105
+ .show-details .tax-collapse { background-position:0 -55px; }
1106
+ .show-details td { border-top:1px solid #d2d8db; }
1107
+ .tax-details td { font-size:0.91em; color:#626465; background-color:#dae1e4; }
1108
+ .tax-details-first td { border-top:1px solid #d2d8db; }
1109
+
1110
+ /* Shopping cart tax info */
1111
+ .cart-tax-info, .cart-price { padding-right:20px; }
1112
+ .cart-tax-total { cursor:pointer; }
1113
+ .cart-tax-total { padding-right:20px; background:url(../images/bg_collapse.gif) 100% 5px no-repeat; cursor:pointer; }
1114
+ .cart-tax-total-expanded { background-position:100% -52px; }
1115
+
1116
+
1117
+ .shopping-cart-collaterals {
1118
+ float:left;
1119
+ width:605px;
1120
+ padding:25px 0;
1121
+ }
1122
+ .shopping-cart-collaterals .box {
1123
+ margin-bottom:18px;
1124
+ padding:12px 15px;
1125
+ border:1px dotted #DAE0BF;
1126
+ /*background:url(../images/base_mini_head_bg.gif) repeat-x #fff;*/
1127
+ }
1128
+ .shopping-cart-collaterals .box .form-button { margin-left:5px; }
1129
+ .shopping-cart-collaterals .discount-codes h4, .shopping-cart-collaterals .shipping-estimate h4 {
1130
+ min-height:16px;
1131
+ color:#000;
1132
+ background-repeat:no-repeat;
1133
+ background-position:0 0;
1134
+ padding:1px 0 1px 21px;
1135
+ text-transform:uppercase;
1136
+ }
1137
+ .shopping-cart-collaterals .discount-codes h4 { background-image:url(../images/icon_asterick.gif); padding-left:23px; }
1138
+ .shopping-cart-collaterals .shipping-estimate h4 { background-image:url(../images/icon_lorry.gif); padding-left:23px; }
1139
+ .shopping-cart-collaterals .shipping-estimate .input-text { width:214px; }
1140
+ .shopping-cart-collaterals .shipping-estimate select { width:220px; }
1141
+ .shopping-cart-collaterals .upsell {
1142
+ width:42.5%;
1143
+ border:1px solid #cec3b6;
1144
+ padding:12px 15px;
1145
+ background:#fafaec;
1146
+ }
1147
+ .shopping-cart-collaterals .upsell .product-image { float:left; width:100px; border:1px solid #d0cdc9; }
1148
+ .shopping-cart-collaterals .upsell .product-shop { width:170px; }
1149
+ .shopping-cart-collaterals .upsell .product-shop h5 { font-size:1em; }
1150
+ .grand_total {
1151
+ width:auto;
1152
+ margin-top:15px;
1153
+ border:1px solid #BEBCB7;
1154
+ background:#DEE5E8;
1155
+ font-size:1.3em !important;
1156
+ font-weight:bold;
1157
+ text-align:right;
1158
+ }
1159
+ tr.grand_total td, p.grand_total { padding-top:5px; padding-bottom:5px; }
1160
+
1161
+
1162
+ /* One-Page checkout */
1163
+ .one-page-checkout li.section { /*position:relative; */}
1164
+ .one-page-checkout .group-select { margin-right:0; }
1165
+ .one-page-checkout .box { border:1px solid #bbb6a5; border-top:0; padding:15px 20px; background:#faf7ee; }
1166
+ .one-page-checkout .head { margin-bottom:0; padding:4px 8px 6px 8px; background:url(../images/opc_off_head_bg.gif) repeat-x 0 100% #DAE0BF; border-width:0 1px 0 1px; border-color:#DAE0BF; border-style:solid; border-top:1px solid #DAE0BF; }
1167
+ .one-page-checkout .tool-tip { right:8px; }
1168
+ .one-page-checkout .head a { display:none; } /* Hide Edit button in step header */
1169
+ .one-page-checkout h3 { color:#333; font-size:1.05em; }
1170
+ .one-page-checkout h4 { border-bottom:1px solid #E4E4E4; padding-bottom:2px; text-transform:uppercase; }
1171
+ .one-page-checkout h4.title { border-bottom:0; text-transform:none; }
1172
+ .one-page-checkout .step-count { background:#fff; font-size:.9em; padding:0 4px; line-height:1em; }
1173
+ .one-page-checkout .content { padding:10px 20px; }
1174
+ .one-page-checkout label.label { font-size:1.05em; color:#2f2f2f; }
1175
+ .one-page-checkout .allow .head { background:#d0dce1; border-color:#a3aeb3; border-width:1px 1px 0 1px; cursor:pointer; }
1176
+ .one-page-checkout .active .head { margin-bottom:0; background:#DAE0BF; padding-bottom:5px; cursor:default; color:#000; }
1177
+ .one-page-checkout .alloq .head a { display:block; } /* Display Edit button in active selection */
1178
+ .one-page-checkout .group-select { margin-top:0; border:0; background:none; padding:0; }
1179
+ .one-page-checkout .allow h3 { color:#a4b3b9; }
1180
+ .one-page-checkout .active h3 { color:#000; }
1181
+ .one-page-checkout .allow .step-count { background:#dbe6eb; }
1182
+ .one-page-checkout .active .step-count { color:#fff; border:1px dotted #fff; background:#000; }
1183
+ .one-page-checkout .active .box { display:block; background:#FBFAF6 url(../images/multi_address_box_bg.gif) 0 0 repeat-x; }
1184
+ .one-page-checkout dd .form-list ul { margin:5px 17px 15px 17px; }
1185
+ .one-page-checkout .checkmo-mailing-address { padding-left:20px; }
1186
+ .one-page-checkout-progress .page-head { margin-bottom:1em; }
1187
+ .one-page-checkout-progress li { border:1px solid #A3AEB3; background:#eee; margin-bottom:6px; }
1188
+ .one-page-checkout-progress h4 { margin:0; color:#999; padding:2px 8px; background:#eee; text-transform:none; }
1189
+ .one-page-checkout-progress h4.complete { border-bottom:1px solid #A3AEB3; background:#DAE0BF; color:#000; }
1190
+ .one-page-checkout-progress h4 a { text-transform:none; }
1191
+ .one-page-checkout-progress .content { padding:8px 13px; }
1192
+ #opc-login .button-set { border-top:0; margin-top:-32px; float:left; }
1193
+ #opc-review .box { border:0; padding:0; }
1194
+ #opc-review .content { border:1px solid #d9dde3; border-top:0; }
1195
+ #opc-review .data-table { border-top:0; }
1196
+ .opc-please-wait { padding-right:7px; }
1197
+ .one-page-checkout a.back { background:url(../images/icon_opc_back.gif) no-repeat; padding-left:16px; line-height:13px; }
1198
+ .one-page-checkout .payment-methods dd { padding:0; }
1199
+ .one-page-checkout .button-set { margin-top:0; padding-top:2em; }
1200
+
1201
+
1202
+ .checkout-progress { margin:0 auto 1.5em auto; }
1203
+ .checkout-progress td {
1204
+ float:left;
1205
+ margin-right:3px;
1206
+ border-top:10px solid #999;
1207
+ padding:4px 20px;
1208
+ color:#abb5ba;
1209
+ font-weight:bold;
1210
+ }
1211
+ .checkout-progress td.active {
1212
+ border-top-color:#e96200;
1213
+ color:#e96200;
1214
+ }
1215
+
1216
+ /* Multiple Addresses checkout */
1217
+ .multi-address-checkout-description {
1218
+ margin-top:-15px;
1219
+ margin-bottom:15px;
1220
+ }
1221
+ .multi-address-checkout-box .box {
1222
+ position:relative;
1223
+ margin-top:15px;
1224
+ margin-bottom:25px;
1225
+ border:1px solid #bbb6a5;
1226
+ background:url(../images/multi_address_box_bg.gif) repeat-x #FBFAF6;
1227
+ }
1228
+ .multi-address-checkout-box .legend {
1229
+ float:left;
1230
+ margin-top:-10px;
1231
+ margin-bottom:0;
1232
+ margin-left:15px;
1233
+ border:1px solid #000;
1234
+ background:#F9F3E3;
1235
+ color:#000;
1236
+ padding:2px 8px;
1237
+ }
1238
+ .multi-address-checkout-box .content {
1239
+ padding:15px 20px 20px 20px;
1240
+ }
1241
+ .multi-address-checkout-box .count-head {
1242
+ border-bottom:1px solid #BBAFA0;
1243
+ background:#F9F3E3;
1244
+ padding:5px 10px;
1245
+ }
1246
+ .shipment-count {
1247
+ background:#000;
1248
+ padding:2px 5px;
1249
+ color:#fff;
1250
+ font-size:.95em;
1251
+ line-height:1em;
1252
+ }
1253
+ .multi-address-checkout-box .tool-tip { left:-23px; }
1254
+ .multi-address-checkout-box .count-head h4 { margin:0; }
1255
+ .multi-address-checkout-box .head h5 { color:#000; }
1256
+ .multi-address-checkout-box .head a { font-weight:normal; }
1257
+ .multi-address-checkout-box .checkmo-mailing-address { display:block; padding-left:20px; }
1258
+ .shipping-method-pointer { border:1px solid #d9d2be; padding:13px; background:#F9F3E3; position:relative; }
1259
+ .shipping-method-pointer .pointer { position:absolute; top:-20px; right:-40px; }
1260
+ .place-order-box { float:right; height:71px; overflow:hidden; }
1261
+ .place-order-box .left-radius { width:21px; background:url(../images/place_order_container_bg.gif) no-repeat; }
1262
+ .place-order-box .main-radius{ background:url(../images/place_order_bg.gif) no-repeat 100% 0; padding-right:21px; vertical-align:middle; }
1263
+ .place-order-box .grand-total { font-size:1.5em; }
1264
+ .place-order-box .grand-total .price { color:#000; font-weight:bold; }
1265
+ .place-order-box input { margin-left:15px; }
1266
+
1267
+ /* Checkout Agreements */
1268
+ .checkout-agreements li { margin:30px 0; }
1269
+ .checkout-agreements .agreement-content { overflow:auto; height:10em; padding:10px; background-color:#fbfaf6; border:1px solid #bbb6a5; }
1270
+ .checkout-agreements .agree { margin:0; padding:10px 0 10px 11px; }
1271
+
1272
+ .one-page-checkout .checkout-agreements { border:1px solid #d9dde3; border-width:0 1px; padding:5px 20px; }
1273
+ .one-page-checkout .checkout-agreements li { margin:20px 0 0; }
1274
+ .one-page-checkout .checkout-agreements .agreement-content { background-color:#fff; border-color:#e4e4e4; padding:5px; }
1275
+ .one-page-checkout .checkout-agreements .agree { padding-left:6px; }
1276
+
1277
+
1278
+
1279
+ /********************** Gift Messages */
1280
+ .giftmessages .gift-header {
1281
+ font-size:12px;
1282
+ font-weight:bold;
1283
+ color:#e87403;
1284
+ }
1285
+
1286
+ .giftmessages .input-checkbox {
1287
+ padding-bottom:15px;
1288
+ }
1289
+
1290
+ .giftmessages textarea {
1291
+ height:100px;
1292
+ }
1293
+
1294
+ .giftmessages .input-checkbox input {
1295
+ margin-right:5px;
1296
+ }
1297
+
1298
+ .giftmessages .input-checkbox label {
1299
+ font-weight:normal;
1300
+ color:#8e8d8b;
1301
+ }
1302
+
1303
+ .one-page-checkout .box-no-padding {
1304
+ border:1px solid #bbb6a5;
1305
+ border-top:0;
1306
+ padding:15px 0px;
1307
+ background:#faf7ee;
1308
+ }
1309
+
1310
+ .one-page-checkout .box-no-padding .inner-box {
1311
+ padding:0px 20px;
1312
+ }
1313
+
1314
+
1315
+ .giftmessages .gift-box {
1316
+ background-color:#f6f1eb;
1317
+ border-top:1px solid #e9e4de;
1318
+ border-bottom:1px solid #e9e4de;
1319
+ padding:22px 16px 22px 22px;
1320
+ }
1321
+
1322
+ .giftmessages .gift-box .scroll-box
1323
+ {
1324
+ overflow:auto;
1325
+ height:260px;
1326
+ }
1327
+
1328
+ .giftmessages .product-image
1329
+ {
1330
+ border:1px solid #d2d1cd;
1331
+ }
1332
+
1333
+ .no-border {
1334
+ border-top:none;
1335
+ border-left:none;
1336
+ border-right:none;
1337
+ border-bottom:none;
1338
+ }
1339
+
1340
+ .no-padding { padding:0 !important; }
1341
+ .no-margin { margin:0 !important; }
1342
+
1343
+ .giftmessages .giftmessage-product-info {
1344
+ padding-left:10px;
1345
+ }
1346
+
1347
+ .giftmessages .numeration
1348
+ {
1349
+ font-weight:bold;
1350
+ color:#8a8987;
1351
+ }
1352
+
1353
+ .giftmessages .gift-box label { color:#918d8e; }
1354
+
1355
+ .giftmessages .group-select li .input-box { float:left; width:260px; }
1356
+ .giftmessages .group-select li .input-text, .group-select li select, .group-select li textarea { width:495px; }
1357
+ .giftmessages .group-select li .input-box .input-text, .group-select li .input-box textarea { width:235px; }
1358
+ .giftmessages .group-select li .input-box select { width:256px; }
1359
+
1360
+ /********************** Customer */
1361
+
1362
+ /* Customer Name */
1363
+
1364
+ .customer-name-prefix .name-prefix { width:60px !important; }
1365
+ .customer-name-prefix .name-prefix input { width:45px !important; }
1366
+ .customer-name-prefix .name-prefix select { width:51px !important; }
1367
+ .customer-name-prefix .name-firstname { width:215px !important; }
1368
+ .customer-name-prefix .name-firstname input { width:190px !important; }
1369
+
1370
+ .customer-name-middlename .name-firstname { width:215px !important; }
1371
+ .customer-name-middlename .name-firstname input { width:200px !important; }
1372
+ .customer-name-middlename .name-middlename { width:60px !important; }
1373
+ .customer-name-middlename .name-middlename input { width:35px !important; }
1374
+
1375
+ .customer-name-suffix .name-lastname { width:205px !important; }
1376
+ .customer-name-suffix .name-lastname input { width:190px !important; }
1377
+ .customer-name-suffix .name-suffix { width:50px !important; }
1378
+ .customer-name-suffix .name-suffix input { width:45px !important; }
1379
+ .customer-name-suffix .name-suffix select { width:51px !important; }
1380
+
1381
+ .customer-name-prefix-middlename .name-prefix { width:60px !important; }
1382
+ .customer-name-prefix-middlename .name-prefix input { width:45px !important; }
1383
+ .customer-name-prefix-middlename .name-prefix select { width:51px !important; }
1384
+ .customer-name-prefix-middlename .name-firstname { width:215px !important; }
1385
+ .customer-name-prefix-middlename .name-firstname input { width:190px !important; }
1386
+ .customer-name-prefix-middlename .name-middlename { width:50px !important; }
1387
+ .customer-name-prefix-middlename .name-middlename input { width:35px !important; }
1388
+ .customer-name-prefix-middlename .name-lastname { width:200px !important; }
1389
+ .customer-name-prefix-middlename .name-lastname input { width:200px !important; }
1390
+
1391
+ .customer-name-prefix-suffix .name-prefix { width:60px !important; }
1392
+ .customer-name-prefix-suffix .name-prefix input { width:45px !important; }
1393
+ .customer-name-prefix-suffix .name-prefix select { width:51px !important; }
1394
+ .customer-name-prefix-suffix .name-firstname { width:215px !important; }
1395
+ .customer-name-prefix-suffix .name-firstname input { width:190px !important; }
1396
+ .customer-name-prefix-suffix .name-lastname { width:205px !important; }
1397
+ .customer-name-prefix-suffix .name-lastname input { width:190px !important; }
1398
+ .customer-name-prefix-suffix .name-suffix { width:50px !important; }
1399
+ .customer-name-prefix-suffix .name-suffix input { width:45px !important; }
1400
+ .customer-name-prefix-suffix .name-suffix select { width:51px !important; }
1401
+
1402
+ .customer-name-middlename-suffix .name-firstname { width:215px !important; }
1403
+ .customer-name-middlename-suffix .name-firstname input { width:200px !important; }
1404
+ .customer-name-middlename-suffix .name-middlename { width:60px !important; }
1405
+ .customer-name-middlename-suffix .name-middlename input { width:35px !important; }
1406
+ .customer-name-middlename-suffix .name-lastname { width:205px !important; }
1407
+ .customer-name-middlename-suffix .name-lastname input { width:190px !important; }
1408
+ .customer-name-middlename-suffix .name-suffix { width:50px !important; }
1409
+ .customer-name-middlename-suffix .name-suffix input { width:45px !important; }
1410
+ .customer-name-middlename-suffix .name-suffix select { width:51px !important; }
1411
+
1412
+
1413
+ .customer-name-prefix-middlename-suffix .name-prefix { width:60px !important; }
1414
+ .customer-name-prefix-middlename-suffix .name-prefix input { width:45px !important; }
1415
+ .customer-name-prefix-middlename-suffix .name-prefix select { width:51px !important; }
1416
+ .customer-name-prefix-middlename-suffix .name-firstname { width:155px !important; }
1417
+ .customer-name-prefix-middlename-suffix .name-firstname input { width:140px !important; }
1418
+ .customer-name-prefix-middlename-suffix .name-middlename { width:60px !important; }
1419
+ .customer-name-prefix-middlename-suffix .name-middlename input { width:35px !important; }
1420
+ .customer-name-prefix-middlename-suffix .name-lastname { width:205px !important; }
1421
+ .customer-name-prefix-middlename-suffix .name-lastname input { width:190px !important; }
1422
+ .customer-name-prefix-middlename-suffix .name-suffix { width:50px !important; }
1423
+ .customer-name-prefix-middlename-suffix .name-suffix input { width:45px !important; }
1424
+ .customer-name-prefix-middlename-suffix .name-suffix select { width:51px !important; }
1425
+
1426
+ .customer-dob .input-box { float:left; width:60px !important; }
1427
+ .customer-dob input { width:50px !important; }
1428
+ .customer-dob label.label-dob { font-weight:normal; color:#888; font-size:10px; }
1429
+
1430
+ /* My Account navigation */
1431
+ .account-nav { border:1px solid #bbb; }
1432
+ .account-nav .head {
1433
+ margin:0;
1434
+ background:/*url(../images/account_nav_head_bg.gif) repeat-x 0 100% */ #91996F;
1435
+ padding:3px 10px;
1436
+ }
1437
+ .account-nav .head h3 { color:#fff; font-size:1.1em; }
1438
+ .account-nav ul { background:#91996F; padding:4px 10px 10px 10px;left-margin:0px;}
1439
+ .account-nav li a, .account-nav li.on { padding:3px 0; }
1440
+ .account-nav li a { color:#fff;display:block; border-bottom:1px solid #ddd; /*background:url(../images/account_nav_link_bg.gif) no-repeat 10px 8px;*/ }
1441
+ .account-nav li a, .account-nav li a:hover { color:#fff; text-decoration:none; }
1442
+ .account-nav li a:hover { color:#293202; }
1443
+ .account-nav li.on { border-bottom:1px solid #ddd;color:#293202; font-weight:bold; }
1444
+ .account-nav li.on a { padding:0; color:#293202}
1445
+ .account-nav li.last, .account-nav li.last a { border-bottom:0; }
1446
+
1447
+
1448
+ /* Login */
1449
+ .login-box .col-1, .login-box .col-2 { /*border:1px solid #bbb6a5;*/ background:#fff; }
1450
+ .login-box .content { background:/*url(../images/login_box_bg.gif) repeat-x*/ #fff; padding:14px 21px; }
1451
+ .login-box h4 {
1452
+ min-height:16px;
1453
+ border-bottom:1px solid #ddd;
1454
+ margin-bottom:1.2em;
1455
+ padding-bottom:5px;
1456
+ padding-left:23px;
1457
+ background-position:0 1px;
1458
+ background-repeat:no-repeat;
1459
+ font-size:1.05em;
1460
+ color:#000;
1461
+ text-transform:uppercase;
1462
+ }
1463
+ .login-box .new-users h4 { background-image:url(../images/icon_page_white.gif); }
1464
+ .login-box .registered-users h4 { background-image:url(../images/icon_page_white_text.gif); }
1465
+ .login-box .button-set { margin:0; border:none; background:/*url(../images/login_box_form_buttons_bg.gif) repeat-x #DAE0BF*/; padding:8px 13px;float:left; }
1466
+ .login-box .content { min-height:230px; }
1467
+
1468
+
1469
+ /* Dashboard */.account-box {
1470
+ margin-bottom:20px;
1471
+ /* border:1px solid #ccc;
1472
+ border-right-color:#999;
1473
+ border-bottom-color:#999;*/
1474
+ background:/*url(../images/account_box_bg.gif) repeat-x*/;
1475
+ }
1476
+ .account-box .head { margin-bottom:10px; border-bottom:1px solid #d9dde3; }
1477
+ .account-box h4 { color:#000; font-size:1.1em; text-transform:uppercase; }
1478
+ .account-box .inner-head { margin-bottom:8px; background:url(../images/dotted_divider.gif) repeat-x 0 100%; padding-bottom:2px; text-align:right; }
1479
+ .account-box h5 { font-size:1.1em; }
1480
+ .account-box h5 a { font-weight:normal; }
1481
+ .account-box h6 { text-transform:uppercase; }
1482
+ .account-main .account-box li { padding:5px 0; }
1483
+ .account-box ol .count {
1484
+ float:left;
1485
+ margin-top:3px;
1486
+ background-color:#0a263c;
1487
+ padding:1px 3px;
1488
+ font-size:9px;
1489
+ font-weight:bold;
1490
+ color:#fff;
1491
+ line-height:1em;
1492
+ }
1493
+ .account-box ol .content { margin-left:20px; padding:0; }
1494
+ .account-box ol.recent-reviews small {
1495
+ float:left;
1496
+ margin-right:3px;
1497
+ font-weight:bold;
1498
+ }
1499
+ .account-box .product-images { width:65px; }
1500
+ .account-box .product-images img { border:1px solid #ccc; }
1501
+ .account-box .product-details { margin:0 0 10px 70px; }
1502
+ .account-box .content { padding:0; }
1503
+ .account-side .actions { border-top:1px solid #ccc; padding-top:4px; }
1504
+ .account-side .actions .form-button { float:right; }
1505
+ .edit-password { display:block; height:20px; background:url(../images/icon_lock.gif) no-repeat 0 2px; padding-left:20px; }
1506
+ .dashboard-welcome { margin-right:8em; margin-bottom:1.5em; width:600px; }
1507
+ .account-box .head h4 { padding-left:21px; min-height:17px; background-repeat:no-repeat; background-position:0 0; }
1508
+ .ad-orders .head h4 { background-image:url(../images/icon_folder_table.gif); }
1509
+ .ad-account-info .head h4 { background-image:url(../images/icon_ma_info.gif); }
1510
+ .ad-tags .head h4 { background-image:url(../images/icon_ma_tags.gif); }
1511
+ .ad-reviews .head h4 { background-image:url(../images/icon_ma_reviews.gif); }
1512
+
1513
+
1514
+ /* Account Addressbook */
1515
+ .primary-address-list h4, .address-list h4 {font-size:1.1em; color:#000; text-transform:uppercase; }
1516
+ .primary-address-list li {
1517
+ margin-bottom:10px;
1518
+ border:1px solid #ccc;
1519
+ background:/*url(../images/account_box_bg.gif) repeat-x*/ #fff;
1520
+ padding:10px 13px 8px 13px;
1521
+ }
1522
+ .primary-address-list li .head { margin:0; }
1523
+ .address-list li { margin-bottom:1em; }
1524
+ .address-list .actions { float:right; margin:0 0 10px 10px; }
1525
+
1526
+ /* Account Order History */
1527
+ .sales-order-view .checkmo-mailing-address { display:block; padding-left:20px; }
1528
+
1529
+ /* Compare Products */
1530
+ .compare-products { margin:30px 0 50px 0; }
1531
+ .compare-products table { width:auto; border:0; }
1532
+ .compare-products tr { background:#EEEDED; }
1533
+ .compare-products td { width:170px; text-align:left; }
1534
+ .compare-products tbody td { border-color:#ccc; }
1535
+ .compare-products tbody tr.first td { border-top:1px solid #D9DDE3; text-align:center; }
1536
+ .compare-products tbody td.last { border-right:1px solid #D9DDE3; }
1537
+ .compare-products tbody.attribute-cart td { background:#fffada !important; text-align:center; border-bottom:1px solid #D9DDE3; }
1538
+ .compare-products tbody td.label {
1539
+ width:auto;
1540
+ border-bottom:1px solid #9eb8cb;
1541
+ border-left:1px solid #BEBCB7;
1542
+ background:url(../images/comparison_table_label_bg.gif) repeat-y 100% 0 #d9e5ee !important;
1543
+ text-align:left;
1544
+ }
1545
+ .compare-products tbody.remove-buttons tr { background:#fff; }
1546
+ .compare-products tbody.remove-buttons td {
1547
+ border:none !important;
1548
+ padding:0;
1549
+ text-align:right;
1550
+ font-size:0;
1551
+ line-height:0;
1552
+ }
1553
+ .compare-products tbody.remove-buttons td img { float:right; }
1554
+ .compare-products tr.last td {border-bottom:1px solid #ccc!important; }
1555
+
1556
+ /* Reviews */
1557
+ .my-review-detail .product-image { float:left; width:135px; }
1558
+ .my-review-detail .product-image p { margin-bottom:0; }
1559
+ .my-review-detail .product-image p img { vertical-align:top; }
1560
+ .my-review-detail .details { float:right; width:538px; }
1561
+ .my-review-detail .ratings-list { margin-bottom:.8em; }
1562
+ .my-review-detail .ratings { line-height:1.5; }
1563
+ .my-review-detail .ratings .rating-box { float:none; margin-bottom:3px; }
1564
+ .my-review-detail .ratings .pipe { display:none; }
1565
+ .my-review-detail .ratings a { display:block; }
1566
+
1567
+
1568
+ /* Gift Messages */
1569
+ .giftmessage { padding:10px 0 0 0; }
1570
+ .giftmessage-preview-link { font-size:11px; padding-right:7px; background-repeat:no-repeat; background-position:right 5px; }
1571
+ .giftmessage-row { background-color:#f2efe9; }
1572
+ .giftmessage-content { float:left; }
1573
+ .giftmessage-close { float:right; }
1574
+ .expand { background-image:url(../images/gift-message-expand.gif); }
1575
+ .collapse { background-image:url(../images/gift-message-collapse.gif); }
1576
+
1577
+
1578
+
1579
+ /********************** Print pages */
1580
+ table.print .giftmessage-preview-link { display:none !important; }
1581
+ table.print .price-excl-tax { white-space:nowrap; }
1582
+ table.print .price-incl-tax { white-space:nowrap; }
1583
+ table.print .price-excl-tax .label,
1584
+ table.print .price-excl-tax .price,
1585
+ table.print .price-incl-tax .label,
1586
+ table.print .price-incl-tax .price { display:inline; }
1587
+
1588
+
1589
+ /********************** Pop up pages */
1590
+ .page-popup { background:#fff; padding:25px 30px; text-align:left; }
1591
+ .page-popup .print-head { margin:0 0 15px; }
1592
+ .page-popup .print-head img { float:left; }
1593
+ .page-popup .print-head address { float:left; margin-left:15px; }
1594
+ .product-gallery-nav { padding:0 5px; }
1595
+
1596
+
1597
+
1598
+ /************************************************************/
1599
+ /******************[ Mage_CSS_F Overrides]*******************/
1600
+ /************************************************************/
1601
+ .nowrap,
1602
+ .nobr { white-space:nowrap !important; }
1603
+
1604
+ /* Alignment */
1605
+ .v-top { vertical-align:top; }
1606
+ .v-middle { vertical-align:middle; }
1607
+ .v-bottom { vertical-align:bottom; }
1608
+ .a-left { text-align:left; }
1609
+ .a-center { text-align:center; }
1610
+ .a-right { text-align:right; }
1611
+ .left { float:left; }
1612
+ .right { float:right; }
1613
+
1614
+ .normal-weight { font-weight:normal; }
1615
+ .auto-width { width:auto; }
1616
+
1617
+ /* Link highlights */
1618
+ .link-cart { color:#DC6809 !important; font-weight:bold !important; }
1619
+ .link-remove { color:#646464 !important; }
1620
+ .link-print { background:url(../images/icon_printer.gif) no-repeat 0 2px; padding-left:23px; }
1621
+ .link-feed { background:url(../images/icon_feed.png) no-repeat left center; padding-left:18px; line-height:1.15; }
1622
+
1623
+ .order-access { padding-bottom:8px; }
1624
+ .order-info { border:solid 1px #D0CBC1; background:#DEE5E8; padding:4px 8px; }
1625
+ .order-info span { display:block; float:left; }
1626
+ .order-info ul { display:inline; }
1627
+ .order-info li { display:inline; padding-right:7px; padding-left:3px; }
1628
+ .order-info li.selected { font-weight:bold; background:url(../images/point-con.gif) no-repeat fixed center bottom; }
1629
+
1630
+ /* Noscript Notice */
1631
+ .noscript { border:1px solid #000; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f; }
1632
+ .noscript .noscript-inner { width:950px; margin:0 auto; padding:12px 0 12px; background:url(../images/i_notice.gif) 20px 50% no-repeat; }
1633
+ .noscript p { margin:0; }
1634
+
1635
+ /* For Demo store only */
1636
+ .demo-notice { margin:0; background:#d75f07; padding:5px 10px 6px 10px; color:#fff; line-height:1em; text-align:center; }
1637
+
1638
+ /* Class: std - styles for admin-controlled content */
1639
+ .std ul,
1640
+ .std ol,
1641
+ .std dl,
1642
+ .std p,
1643
+ .std address,
1644
+ .std blockquote { margin:0 0 1em; padding:0; }
1645
+ .std ul { list-style:disc outside; padding-left:1.5em; }
1646
+ .std ol { list-style:decimal outside; padding-left:1.5em; }
1647
+ .std ul ul { list-style-type:circle; }
1648
+ .std ul ul,
1649
+ .std ol ol,
1650
+ .std ul ol,
1651
+ .std ol ul { margin:.5em 0; }
1652
+ .std dt { font-weight:bold; }
1653
+ .std dd { padding:0 0 0 1.5em; }
1654
+ .std blockquote { font-style:italic; padding:0 0 0 1.5em; }
1655
+ .std address { font-style:normal; }
1656
+ .std b,
1657
+ .std strong { font-weight:bold; }
1658
+ .std i,
1659
+ .std em { font-style:italic; }
1660
+ .std .a-top { text-align:right; }
1661
+
1662
+
1663
+
1664
+ /**
1665
+ * Magento
1666
+ *
1667
+ * NOTICE OF LICENSE
1668
+ *
1669
+ * This source file is subject to the Academic Free License (AFL 3.0)
1670
+ * that is bundled with this package in the file LICENSE_AFL.txt.
1671
+ * It is also available through the world-wide-web at this URL:
1672
+ * http://opensource.org/licenses/afl-3.0.php
1673
+ * If you did not receive a copy of the license and are unable to
1674
+ * obtain it through the world-wide-web, please send an email
1675
+ * to license@magentocommerce.com so we can send you a copy immediately.
1676
+ *
1677
+ * DISCLAIMER
1678
+ *
1679
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
1680
+ * versions in the future. If you wish to customize Magento for your
1681
+ * needs please refer to http://www.magentocommerce.com for more information.
1682
+ *
1683
+ * @category design
1684
+ * @package default_default
1685
+ * @copyright Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
1686
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
1687
+ */
1688
+
1689
+ /* Reset ================================================================================= */
1690
+ * { margin:0; padding:0; }
1691
+
1692
+ //*body { background:#496778 url(../images/bkg_body.gif) 50% 0 repeat-y; font:12px/1.55 Arial, Helvetica, sans-serif; color:#2f2f2f; text-align:center; }
1693
+
1694
+ img { border:0; vertical-align:top; }
1695
+
1696
+ a { color:#1e7ec8; text-decoration:underline; }
1697
+ a:hover { text-decoration:none; }
1698
+ :focus { outline: 0; }
1699
+ */
1700
+ /* Headings */
1701
+ body{font-family:"lucida grande","Helvetica";}
1702
+
1703
+
1704
+ h1,h2,h3,
1705
+ h4,h5,h6 {margin:0 0 5px; line-height:1.35; color:#0B2074; }
1706
+ h1 { font-size:20px; font-weight:bold; }
1707
+ h2 { font-size:18px; font-weight:normal; }
1708
+ h3 { font-size:16px; font-weight:bold; }
1709
+ h4 { font-size:14px; font-weight:bold; }
1710
+ h5 { font-size:12px; font-weight:bold; }
1711
+ h6 { font-size:11px; font-weight:bold; }
1712
+
1713
+ /* Forms */
1714
+ form { display:inline; }
1715
+ fieldset { border:0; }
1716
+ legend { display:none; }
1717
+
1718
+ /* Table */
1719
+ table { border:0; /*border-collapse:collapse;*/ border-spacing:0; empty-cells:show; font-size:100%; }
1720
+ caption,th,td { vertical-align:top; text-align:left; font-weight:normal; }
1721
+
1722
+ /* Content */
1723
+ p { margin:0 0 10px; }
1724
+ strong { font-weight:bold; }
1725
+ address { font-style:normal; line-height:1.35; }
1726
+ cite { font-style:normal; }
1727
+ q,
1728
+ blockquote { quotes:none; }
1729
+ q:before,
1730
+ q:after { content:''; }
1731
+ small,big { font-size:1em; }
1732
+ /*sup { font-size:1em; vertical-align:top; }*/
1733
+
1734
+ /* Lists */
1735
+ ul,ol { list-style:none; }
1736
+
1737
+ /* Tools */
1738
+ .hidden { display:block !important; border:0 !important; margin:0 !important; padding:0 !important; font-size:0 !important; line-height:0 !important; width:0 !important; height:0 !important; overflow:hidden !important; }
1739
+ .nobr { white-space:nowrap !important; }
1740
+ .wrap { white-space:normal !important; }
1741
+ .a-left { text-align:left !important; }
1742
+ .a-center { text-align:center !important; }
1743
+ .a-right { text-align:right !important; }
1744
+ .v-top { vertical-align:top; }
1745
+ .v-middle { vertical-align:middle; }
1746
+ .f-left,
1747
+ .left { float:left !important; }
1748
+ .f-right,
1749
+ .right { float:right !important; }
1750
+ .f-none { float:none !important; }
1751
+ .f-fix { float:left; width:100%; }
1752
+ .no-display { display:none; }
1753
+ .no-margin { margin:0 !important; }
1754
+ .no-padding { padding:0 !important; }
1755
+ .no-bg { background:none !important; }
1756
+ /* ======================================================================================= */
1757
+
1758
+
1759
+ /* Layout ================================================================================ */
1760
+ .home-wrapper {width:974px !important; }
1761
+ .page {}
1762
+ .page-print { background:#fff; padding:25px 30px; text-align:left; }
1763
+ .page-empty { background:#fff; padding:20px; text-align:left; }
1764
+ .page-popup { background:#fff; padding:25px 30px; text-align:left; }
1765
+ .main-container { background:#fbfaf6 url(../images/bkg_main1.gif) 50% 0 no-repeat; }
1766
+ .carousel-main { width:900px; margin:0 auto;padding:0px 0px 77px;text-align:left;position: absolute; overflow: hidden; min-width: 926px; min-height: 60px;max-height: 60px; top: 0px; left: 0px; }
1767
+
1768
+ /* Base Columns */
1769
+ .col-left { float:left; width:180px; padding-left:10px; padding-right:10px; background-color:white; margin-right:5px; padding-left:10px; padding-bottom:20px;padding-top:10px;}
1770
+ /*.col-main { float:left; width:685px; padding:0 0 1px; } edited*/
1771
+ .col-main { float:right; width:769px; padding:0 0 0px; padding-left:10px; padding-top:6px; padding-right:10px;padding-bottom:20px; }
1772
+ .col-right { float:right; width:195px;padding-left:10px; padding-right:10px; background-color:white; margin-right:5px; padding-left:10px; padding-bottom:20px; padding-top:10px;}
1773
+
1774
+ .homeMain{
1775
+ padding:5px; padding-top:5px;
1776
+ }
1777
+ /* 1 Column Layout */
1778
+ .col1-layout .col-main {width:996px; float:none; }
1779
+
1780
+ /* 2 Columns Layout */
1781
+ .col2-left-layout .col-main { float:right; }
1782
+ .col2-right-layout .col-main {}
1783
+
1784
+ /* 3 Columns Layout */
1785
+ .col3-layout .col-main { width:475px; margin-left:17px; }
1786
+ .col3-layout .col-wrapper { float:left; width:687px; }
1787
+ .col3-layout .col-wrapper .col-main { float:right; }
1788
+
1789
+ /* Content Columns */
1790
+ .col2-set .col-1 { float:left; width:48.5%; }
1791
+ .col2-set .col-2 { float:right; width:40%; }
1792
+ .col2-set .col-narrow { width:32%; }
1793
+ .col2-set .col-wide { width:65%; }
1794
+
1795
+ .col3-set .col-1 { float:left; width:32%; }
1796
+ .col3-set .col-2 { float:left; width:32%; margin-left:2%; }
1797
+ .col3-set .col-3 { float:right; width:32%; }
1798
+
1799
+ .col4-set .col-1 { float:left; width:23.5%; }
1800
+ .col4-set .col-2 { float:left; width:23.5%; margin:0 2%; }
1801
+ .col4-set .col-3 { float:left; width:23.5%; }
1802
+ .col4-set .col-4 { float:right; width:23.5%; }
1803
+ /* ======================================================================================= */
1804
+ .fcol {
1805
+ border-left: none;
1806
+ margin-left: 0;
1807
+ padding-left: 0;
1808
+ }
1809
+ .aboutcol {
1810
+
1811
+ }
1812
+ .vline {
1813
+ background: rgb(186,177,152);
1814
+ display: block;
1815
+ float: left;
1816
+ min-height: 250px;
1817
+ margin: 0 30px;
1818
+ width: 1px;}
1819
+
1820
+ .aboutcol {
1821
+ display: block;
1822
+ float: left;
1823
+ margin-top: -5px;
1824
+ width: 450px;
1825
+ }
1826
+ .aboutcol p, .article p, .article-detail p {
1827
+ font-size: 13px;
1828
+ line-height: 1.6em;}
1829
+ .aboutcol h2, .fcol h2 {
1830
+ color: rgb(233,66,53);
1831
+ font-size: 24px;
1832
+ margin-bottom: 0;
1833
+ }
1834
+
1835
+ /* Global Styles ========================================================================= */
1836
+ /* Form Elements */
1837
+ input,select,textarea,button { font:12px/15px Arial, Helvetica, sans-serif; vertical-align:middle; color:#2f2f2f; }
1838
+ input.input-text,select,textarea { background:#fff; border:1px solid #b6b6b6; }
1839
+ input.input-text,textarea { padding:2px; }
1840
+ select { padding:1px; }
1841
+ select option { padding-right:10px; }
1842
+ select.multiselect option { border-bottom:1px solid #b6b6b6; padding:2px 5px; }
1843
+ select.multiselect option:last-child { border-bottom:0; }
1844
+ textarea { overflow:auto; }
1845
+ input.radio { margin-right:3px; }
1846
+ input.checkbox { margin-right:3px; }
1847
+ input.qty { width:2.5em !important; }
1848
+ button.button::-moz-focus-inner { padding:0; border:0; } /* FF Fix */
1849
+ button.button { -webkit-border-fit:lines; } /* <- Safari & Google Chrome Fix */
1850
+ button.button { overflow:visible; width:auto; border:0; padding:0; margin:0; background:transparent; cursor:pointer; }
1851
+ button.button span { display:block; height:19px; border:1px solid #de5400; background:#f18200; padding:0 8px; font:bold 12px/19px Arial, Helvetica, sans-serif; text-align:center; white-space:nowrap; color:#fff; }
1852
+ button.button span span { border:0; padding:0; }
1853
+ button.disabled span { border-color:#bbb !important; background:#bbb !important; }
1854
+
1855
+ button.btn-checkout span { height:40px; border:0; background:#5B613B; padding:0 0 0 9px; font:bold 15px/40px Arial, Helvetica, sans-serif; color:#fff; }
1856
+ button.btn-checkout span span { background-position:100% 0; padding:0 25px 0 16px; }
1857
+ button.btn-checkout.no-checkout span { background-position:0 100%; color:#b8baba; }
1858
+ button.btn-checkout.no-checkout span span { background-position:100% 100%; }
1859
+
1860
+ p.control input.checkbox,
1861
+ p.control input.radio { margin-right:6px; }
1862
+ /* Form Highlight */
1863
+ input.input-text:focus,select:focus,textarea:focus { background-color:#edf7fd; }
1864
+ /*.highlight { background:#efefef; }*/
1865
+
1866
+ /* Form lists */
1867
+ /* Grouped fields */
1868
+ /*.form-list { width:535px; margin:0 auto; overflow:hidden; }*/
1869
+ .form-list li { margin:0 0 8px; }
1870
+ .form-list label { float:left; color:#666; font-weight:bold; position:relative; z-index:0; }
1871
+ .form-list label.required {}
1872
+ .form-list label.required em { float:right; font-style:normal; color:#eb340a; position:absolute; top:0; right:-8px; }
1873
+ .form-list li.control label { float:none; }
1874
+ .form-list li.control input.radio,
1875
+ .form-list li.control input.checkbox { margin-right:6px; }
1876
+ .form-list li.control .input-box { clear:none; display:inline; width:auto; }
1877
+ /*.form-list li.fields { margin-right:-15px; }*/
1878
+ .form-list .input-box { display:block; clear:both; width:260px; }
1879
+ .form-list .field { float:left; width:275px; }
1880
+ .form-list input.input-text { width:225px; }
1881
+ .form-list textarea { width:254px; height:10em; }
1882
+ .form-list select { width:260px; }
1883
+ .form-list li.wide .input-box { width:535px; }
1884
+ .form-list li.wide input.input-text { width:529px; }
1885
+ .form-list li.wide textarea { width:529px; }
1886
+ .form-list li.wide select { width:535px; }
1887
+ .form-list li.additional-row { border-top:1px solid #ccc; margin-top:10px; padding-top:7px; }
1888
+ .form-list li.additional-row .btn-remove { float:right; margin:5px 0 0; }
1889
+ .form-list .input-range input.input-text { width:74px; }
1890
+ /* Customer */
1891
+ .form-list .customer-name-prefix .input-box,
1892
+ .form-list .customer-name-suffix .input-box,
1893
+ .form-list .customer-name-prefix-suffix .input-box,
1894
+ .form-list .customer-name-prefix-middlename .input-box,
1895
+ .form-list .customer-name-middlename-suffix .input-box,
1896
+ .form-list .customer-name-prefix-middlename-suffix .input-box { width:auto; }
1897
+
1898
+ .form-list .name-prefix { width:65px; }
1899
+ .form-list .name-prefix select { width:55px; }
1900
+ .form-list .name-prefix input.input-text { width:49px; }
1901
+
1902
+ .form-list .name-suffix { width:65px; }
1903
+ .form-list .name-suffix select { width:55px; }
1904
+ .form-list .name-suffix input.input-text { width:49px; }
1905
+
1906
+ .form-list .name-middlename { width:70px; }
1907
+ .form-list .name-middlename input.input-text { width:49px; }
1908
+
1909
+ .form-list .customer-name-prefix-middlename-suffix .name-firstname,
1910
+ .form-list .customer-name-prefix-middlename .name-firstname { width:140px; }
1911
+ .form-list .customer-name-prefix-middlename-suffix .name-firstname input.input-text,
1912
+ .form-list .customer-name-prefix-middlename .name-firstname input.input-text { width:124px; }
1913
+ .form-list .customer-name-prefix-middlename-suffix .name-lastname { width:205px; }
1914
+ .form-list .customer-name-prefix-middlename-suffix .name-lastname input.input-text { width:189px; }
1915
+
1916
+ .form-list .customer-name-prefix-suffix .name-firstname { width:210px; }
1917
+ .form-list .customer-name-prefix-suffix .name-lastname { width:205px; }
1918
+ .form-list .customer-name-prefix-suffix .name-firstname input.input-text,
1919
+ .form-list .customer-name-prefix-suffix .name-lastname input.input-text { width:189px; }
1920
+
1921
+ .form-list .customer-name-prefix-suffix .name-firstname { width:210px; }
1922
+ .form-list .customer-name-prefix-suffix .name-lastname { width:205px; }
1923
+ .form-list .customer-name-prefix-suffix .name-firstname input.input-text,
1924
+ .form-list .customer-name-prefix-suffix .name-lastname input.input-text { width:189px; }
1925
+
1926
+ .form-list .customer-name-prefix .name-firstname,
1927
+ .form-list .customer-name-middlename .name-firstname { width:210px; }
1928
+
1929
+ .form-list .customer-name-suffix .name-lastname,
1930
+ .form-list .customer-name-middlename .name-firstname,
1931
+ .form-list .customer-name-middlename-suffix .name-firstname,
1932
+ .form-list .customer-name-middlename-suffix .name-lastname { width:205px; }
1933
+
1934
+ .form-list .customer-name-prefix .name-firstname input.input-text,
1935
+ .form-list .customer-name-suffix .name-lastname input.input-text,
1936
+ .form-list .customer-name-middlename .name-firstname input.input-text,
1937
+ .form-list .customer-name-middlename-suffix .name-firstname input.input-text,
1938
+ .form-list .customer-name-middlename-suffix .name-lastname input.input-text { width:189px; }
1939
+
1940
+ .form-list .customer-dob .dob-month,
1941
+ .form-list .customer-dob .dob-day,
1942
+ .form-list .customer-dob .dob-year { float:left; width:85px; }
1943
+ .form-list .customer-dob input.input-text { display:block; width:74px; }
1944
+ .form-list .customer-dob label { font-size:10px; font-weight:normal; color:#888; }
1945
+ .form-list .customer-dob .dob-day,
1946
+ .form-list .customer-dob .dob-month { width:60px; }
1947
+ .form-list .customer-dob .dob-day input.input-text,
1948
+ .form-list .customer-dob .dob-month input.input-text { width:46px; }
1949
+ .form-list .customer-dob .dob-year { width:140px; }
1950
+ .form-list .customer-dob .dob-year input.input-text { width:134px; }
1951
+
1952
+ /* Independent fields */
1953
+ /*.form-list li { margin:0 0 8px; }
1954
+ .form-list li.fields { margin:0; }
1955
+ .form-list .field { display:block; margin:0 0 8px; }
1956
+ .form-list li.control {}
1957
+ .form-list label { float:left; width:150px; padding:2px 10px 0 0; text-align:right; }
1958
+ .form-list label.required { font-weight:bold; }
1959
+ .form-list label.required em { font-variant:normal; color:#eb340a; margin-right:3px; }
1960
+ .form-list .input-box { float:left; width:260px; }
1961
+ .form-list input.input-text,
1962
+ .form-list textarea { width:254px; }
1963
+ .form-list select { width:260px; }
1964
+ .form-list li.additional-row { border-top:1px solid #ddd; margin-top:10px; }
1965
+ .form-list li.additional-row .btn-remove { float:right; margin:5px 5px 0 0; }
1966
+ .form-list .input-range input.input-text { width:96px; }*/
1967
+ /* Customer */
1968
+ /*.form-list .customer-dob .dob-month,
1969
+ .form-list .customer-dob .dob-day,
1970
+ .form-list .customer-dob .dob-year { float:left; width:85px; }
1971
+ .form-list .customer-dob input.input-text { display:block; width:74px; }
1972
+ .form-list .customer-dob label { font-size:11px; font-weight:normal; color:#777; text-align:left; }
1973
+ .form-list .customer-dob .dob-day,
1974
+ .form-list .customer-dob .dob-month { width:60px; }
1975
+ .form-list .customer-dob .dob-day input.input-text,
1976
+ .form-list .customer-dob .dob-month input.input-text { width:46px; }
1977
+ .form-list .customer-dob .dob-year { width:140px; }
1978
+ .form-list .customer-dob .dob-year input.input-text { width:134px; }*/
1979
+
1980
+ .buttons-set { clear:both; margin:4em 0 0; padding:8px 0 0; border-top:1px solid #e4e4e4; text-align:right; }
1981
+ .buttons-set p.required { margin:0 0 10px; }
1982
+ .buttons-set .back-link { float:left; margin:0; }
1983
+ .buttons-set button.button { float:right; margin-left:5px; }
1984
+
1985
+ .buttons-set-order { margin:10px 0 0; }
1986
+ .buttons-set-order .please-wait { padding:12px 7px 0 0; }
1987
+
1988
+ .fieldset { border:1px solid #bbafa0; background:#fbfaf6; padding:22px 25px 12px 33px; margin:28px 0; }
1989
+ .fieldset .legend { float:left; font-weight:bold; font-size:13px; border:1px solid #f19900; background:#f9f3e3; color:#e76200; margin:-33px 0 0 -10px; padding:0 8px; position:relative; }
1990
+
1991
+ /* Form Validation */
1992
+ .validation-advice { clear:both; min-height:13px; margin:3px 0 0; padding-left:17px; font-size:11px; font-weight:bold; line-height:13px; background:url(../images/validation_advice_bg.gif) 2px 0 no-repeat; color:#eb340a; }
1993
+ .validation-failed { border:1px dashed #eb340a !important; background:#faebe7 !important; }
1994
+ .validation-passed {}
1995
+ p.required { font-size:11px; text-align:right; color:#EB340A; }
1996
+ /* Expiration date and CVV number validation fix */
1997
+ .v-fix { float:left; }
1998
+ .v-fix .validation-advice { display:block; width:12em; margin-right:-12em; position:relative; }
1999
+
2000
+ /* Global Messages */
2001
+ .success { color:#3d6611; font-weight:bold; }
2002
+ .error { color:#df280a; font-weight:bold; }
2003
+ .notice { color:#e26703; }
2004
+
2005
+ .messages,
2006
+ .messages ul { list-style:none !important; }
2007
+ .messages { width:100%; overflow:hidden; margin-bottom:10px; }
2008
+ .messages li { margin:0 0 0px !important; }
2009
+ .messages li li { margin:0 0 3px !important; }
2010
+ .error-msg,
2011
+ .success-msg,
2012
+ .note-msg,
2013
+ .notice-msg { border-style:solid !important; border-width:1px !important; background-position:10px 9px !important; background-repeat:no-repeat !important; min-height:24px !important; padding:8px 8px 8px 32px !important; font-size:11px !important; font-weight:bold !important; }
2014
+ .error-msg { border-color:#f16048; background-color:#faebe7; background-image:url(../images/i_msg-error.gif); color:#df280a; }
2015
+ .success-msg { border-color:#446423; background-color:#eff5ea; background-image:url(../images/i_msg-success.gif); color:#3d6611; }
2016
+ .note-msg,
2017
+ .notice-msg { border-color:#fcd344; background-color:#fafaec; background-image:url(../images/i_msg-note.gif); color:#3d6611; }
2018
+
2019
+ /* BreadCrumbs */
2020
+ .breadcrumbs {text-align:left; font-size:13px; line-height:1.25; margin-left:15px; }
2021
+ .breadcrumbs li { color:white; display:inline; }
2022
+ .breadcrumbs li strong { font-weight:bold; }
2023
+ #breadcrumbs{
2024
+ padding-bottom:10px;margin-left:10px; margin-right:10px; width:902px !important;
2025
+ }
2026
+
2027
+ /* Page Heading */
2028
+ .page-title { width:100%; overflow:hidden; border-bottom:1px solid #ccc; margin:0 0 25px; }
2029
+ .page-title h1,
2030
+ .page-title h2 { margin:0; font-size:20px; color:#0a263c; }
2031
+ .page-title .separator { margin:0 3px; }
2032
+ .page-title .link-rss { float:right; margin:7px 0 0; }
2033
+ .title-buttons { text-align:right; }
2034
+ .title-buttons h1,
2035
+ .title-buttons h2,
2036
+ .title-buttons h3,
2037
+ .title-buttons h4,
2038
+ .title-buttons h5,
2039
+ .title-buttons h6 { float:left; }
2040
+
2041
+ .subtitle { clear:both; padding:15px 0 0; font-size:15px; font-weight:bold; margin:0 0 6px; color:#e25203; }
2042
+
2043
+ /* Pager */
2044
+ .pager { font-size:11px; background:#fff url(../images/bkg_toolbar.gif) 0 100% repeat-x; padding:4px 8px; border-top:1px solid #e2e2e2; text-align:center; }
2045
+ .pager .amount { float:left; margin:0; }
2046
+ .pager .limiter { float:right; }
2047
+ .pager .limiter label { vertical-align:middle; }
2048
+ .pager .limiter select { padding:0; margin:0 0 1px; vertical-align:middle; }
2049
+ .pager .pages { margin:0 140px; }
2050
+ .pager .pages ol { display:inline; }
2051
+ .pager .pages li { display:inline; margin:0 2px; }
2052
+ .pager .pages .current {}
2053
+
2054
+ /* Sorter */
2055
+ .sorter { font-size:11px; background:#fff url(../images/bkg_toolbar.gif) 0 100% repeat-x; padding:3px 8px; border-top:1px solid #e2e2e2; }
2056
+ .sorter .view-mode { float:left; margin:0; }
2057
+ .sorter .sort-by { float:right; padding-right:36px; }
2058
+ .sorter .sort-by label { vertical-align:middle; }
2059
+ .sorter .sort-by select { padding:0; margin:0 0 1px; vertical-align:middle; }
2060
+ .sorter .link-feed {}
2061
+
2062
+ /* Toolbar */
2063
+ .toolbar {}
2064
+ .toolbar .pager { padding:3px 8px; border-bottom:1px solid #fff; }
2065
+ .toolbar .sorter { border-bottom:1px solid #fff; }
2066
+ .toolbar-bottom {}
2067
+
2068
+ /* Data Table */
2069
+ .data-table { border:1px solid #bebcb7; }
2070
+ .data-table .odd { background:#f8f7f5 }
2071
+ .data-table .even { background:#eeeded; }
2072
+ /*.data-table tr.odd:hover,
2073
+ .data-table tr.even:hover { background:#ebf1f6; }*/
2074
+ .data-table td.last,
2075
+ .data-table th.last { border-right:0; }
2076
+ .data-table tr.last th,
2077
+ .data-table tr.last td { border-bottom:0 !important; }
2078
+ .data-table th { padding:3px 8px; font-weight:bold; }
2079
+ .data-table td { padding:3px 8px; }
2080
+
2081
+ .data-table thead th { font-weight:bold; border-right:1px solid #c2d3e0; padding:2px 8px; color:#0a263c; white-space:nowrap; vertical-align:middle; }
2082
+ .data-table thead th.wrap { white-space:normal; }
2083
+ .data-table thead th a,
2084
+ .data-table thead th a:hover { color:#fff; }
2085
+ .data-table thead th { background:url(../images/bkg_th.gif) repeat-x 0 100% #d9e5ee; }
2086
+ .data-table thead th .tax-flag { font-size:11px; white-space:nowrap; }
2087
+
2088
+ .data-table tfoot { border-bottom:1px solid #d9dde3; }
2089
+ .data-table tfoot tr.first { background:url(../images/bkg_tfoot.gif) 0 0 repeat-x; }
2090
+ .data-table tfoot tr { background-color:#dee5e8 !important; }
2091
+ .data-table tfoot td { padding-top:1px; padding-bottom:1px; border-bottom:0; border-right:1px solid #d9dde3; }
2092
+ .data-table tfoot strong { font-size:16px; }
2093
+
2094
+ .data-table tbody th,
2095
+ .data-table tbody td { border-bottom:1px solid #d9dde3; border-right:1px solid #d9dde3; }
2096
+ /* Bundle products tables */
2097
+ .data-table tbody.odd tr { background:#f8f7f5 !important; }
2098
+ .data-table tbody.even tr { background:#f6f6f6 !important; }
2099
+ .data-table tbody.odd tr td,
2100
+ .data-table tbody.even tr td { border-bottom:0; }
2101
+ .data-table tbody.odd tr.border td,
2102
+ .data-table tbody.even tr.border td { border-bottom:1px solid #d9dde3; }
2103
+
2104
+ .data-table tbody td .option-label { font-weight:bold; font-style:italic; }
2105
+ .data-table tbody td .option-value { padding-left:10px; }
2106
+
2107
+ /* Tax Details Row */
2108
+ tr.tax-total { cursor:pointer; }
2109
+ tr.tax-total td {}
2110
+ tr.tax-total .tax-collapse { float:right; text-align:right; padding-left:20px; background:url(../images/bkg_collapse.gif) 0 5px no-repeat; cursor:pointer; }
2111
+ tr.show-details .tax-collapse { background-position:0 -52px; }
2112
+ tr.show-details td {}
2113
+ tr.tax-details td { font-size:11px; background-color:#dae1e4; color:#626465; }
2114
+ tr.tax-details-first td { border-top:1px solid #d2d8db; }
2115
+
2116
+ /* Shopping cart tax info */
2117
+ .cart-tax-info { display:block; }
2118
+ .cart-tax-info,
2119
+ .cart-tax-info .cart-price { padding-right:20px; }
2120
+ .cart-tax-total { display:block; padding-right:20px; background:url(../images/bkg_collapse.gif) 100% 5px no-repeat; cursor:pointer; }
2121
+ .cart-tax-info .price,
2122
+ .cart-tax-total .price { display:inline !important; font-weight:normal !important; }
2123
+ .cart-tax-total-expanded { background-position:100% -52px; }
2124
+
2125
+ /* Class: std - styles for admin-controlled content */
2126
+ .std .subtitle { padding:0; }
2127
+ .std ol.ol { list-style:decimal outside; padding-left:1.5em; }
2128
+ .std ul.disc { margin:0 0 10px; }
2129
+ .std ul.disc { list-style:disc outside; padding-left:18px; }
2130
+ .std dl dt { font-weight:bold; }
2131
+ .std dl dd { margin:0 0 10px; }
2132
+ /*.std ul,
2133
+ .std ol,
2134
+ .std dl,
2135
+ .std p,
2136
+ .std address,
2137
+ .std blockquote { margin:0 0 1em; padding:0; }
2138
+ .std ul { list-style:disc outside; padding-left:1.5em; }
2139
+ .std ol { list-style:decimal outside; padding-left:1.5em; }
2140
+ .std ul ul { list-style-type:circle; }
2141
+ .std ul ul,
2142
+ .std ol ol,
2143
+ .std ul ol,
2144
+ .std ol ul { margin:.5em 0; }
2145
+ .std dt { font-weight:bold; }
2146
+ .std dd { padding:0 0 0 1.5em; }
2147
+ .std blockquote { font-style:italic; padding:0 0 0 1.5em; }
2148
+ .std address { font-style:normal; }
2149
+ .std b,
2150
+ .std strong { font-weight:bold; }
2151
+ .std i,
2152
+ .std em { font-style:italic; }*/
2153
+
2154
+ /* Misc */
2155
+ .links li { display:inline; }
2156
+ .links li.first { padding-left:0 !important; }
2157
+ .links li.last { background:none !important; padding-right:0 !important; }
2158
+
2159
+ .link-cart { color:#dc6809 !important; font-weight:bold; }
2160
+ .link-wishlist { color:#dc6809 !important; font-weight:bold; }
2161
+ .link-reorder { font-weight:bold; color:#dc6809 !important; }
2162
+ .link-compare { font-weight:bold; }
2163
+ .link-print { /*background:url(../images/i_print.gif) 0 2px no-repeat; padding:2px 0 2px 25px;*/ font-weight:bold; color:#dc6809; }
2164
+ .link-rss { background:url(../images/i_rss.gif) 0 2px no-repeat; padding-left:18px; line-height:14px; white-space:nowrap; }
2165
+ .btn-remove { display:block; width:11px; height:11px; font-size:0; line-height:0; background:url(../images/btn_remove.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
2166
+ .btn-remove2 { display:block; width:16px; height:16px; font-size:0; line-height:0; background:url(../images/btn_trash.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
2167
+
2168
+ .separator { margin:0 3px; }
2169
+
2170
+ .divider { clear:both; display:block; font-size:0; line-height:0; height:1px; margin:10px 0; background:url(../images/bkg_divider1.gif) 0 50% repeat-x; text-indent:-999em; overflow:hidden; }
2171
+
2172
+ /* Noscript Notice */
2173
+ .noscript { border:1px solid #ddd; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f; }
2174
+ .noscript .noscript-inner { width:950px; margin:0 auto; padding:12px 0 12px; background:url(../images/i_notice.gif) 20px 50% no-repeat; }
2175
+ .noscript p { margin:0; }
2176
+
2177
+ /* Demo Notice */
2178
+ .demo-notice { margin:0; padding:6px 10px; background:#d75f07; font-size:12px; line-height:1.15; text-align:center; color:#fff; }
2179
+ /* ======================================================================================= */
2180
+
2181
+
2182
+ /* Header ================================================================================ */
2183
+ .logo { float:left; }
2184
+ .header-container { border-top:5px solid #0d2131; border-bottom:1px solid #415966; background:url(../images/bkg_header.jpg) 50% 0 repeat; }
2185
+ .header { width:100%; margin:0 auto; padding-top:10px; text-align:right; position:relative; z-index:10; margin-bottom:-6px;}
2186
+ .header .logo { float:left; margin:0px; text-decoration:none !important; }
2187
+ .header .logo strong { position:absolute; top:-999em; left:-999em; width:0; height:0; font-size:0; line-height:0; text-indent:-999em; overflow:hidden; }
2188
+ .header h1.logo { margin:0; }
2189
+ .header .quick-access { float:right; width:600px; padding:28px 10px 0 0; }
2190
+ .header .welcome-msg { margin:0; color:#fff; text-align:right; }
2191
+ .header .form-search { position:absolute; top:0; right:29px; width:315px; height:30px; background:url(../images/bkg_form-search.gif) 0 0 no-repeat; padding:1px 0 0 16px; }
2192
+ .header .form-search label { float:left; width:24px; height:21px; text-align:left; text-indent:-999em; overflow:hidden; }
2193
+ .header .form-search input.input-text { float:left; border-color:#5c7989; width:209px; margin-right:4px; }
2194
+ .header .form-search button.button { float:left; }
2195
+ .header .form-search button.button span { border:0; height:21px; background:url(../images/btn_search.gif) 0 0 no-repeat; padding:0 0 0 3px; font:bold 11px/21px Tahoma, Verdana, Arial, sans-serif; }
2196
+ .header .form-search button.button span span { background-position:100% 0; padding:0 6px 0 3px; }
2197
+ .header .form-search .search-autocomplete { z-index:999; left:40px !important; top:22px !important; }
2198
+ .header .form-search .search-autocomplete ul { border:1px solid #5c7989; background-color:#f9f5f0; }
2199
+ .header .form-search .search-autocomplete li { text-align:left; border-bottom:1px solid #f4eee7; padding:2px 8px 1px 8px; cursor:pointer; }
2200
+ .header .form-search .search-autocomplete li .amount { float:right; font-weight:bold; }
2201
+ .header .form-search .search-autocomplete li.odd { background-color:#fffefb; }
2202
+ .header .form-search .search-autocomplete li.selected { background-color:#f7e8dd; }
2203
+ .header .form-language { clear:both; padding:5px 0 0; text-align:right; }
2204
+ .header .form-language label { font-weight:bold; padding-right:5px; color:#a7c6dd; vertical-align:middle; }
2205
+ .header .form-language select { padding:0; }
2206
+ .header .form-language select.flags option { background-position:4px 50%; background-repeat:no-repeat; padding-left:25px; }
2207
+ .header .links { float:right; margin:0 0 6px; }
2208
+ .header .links li { float:left; font-size:11px; background:url(../images/bkg_pipe1.gif) 100% 60% no-repeat; padding:0 8px 0 7px; }
2209
+ .header .links a { color:#ebbc58; }
2210
+ .header-container .top-container { clear:both; padding:5px 10px 0 12px; text-align:right; }
2211
+ .header-container .top-container a { font-size:11px; color:#ebbc58; }
2212
+
2213
+ /********** < Navigation */
2214
+ .nav-containercontainer { background:#0a263d url(../images/bkg_nav0.jpg) 50% 0 repeat-y; }
2215
+ #nav { margin:0 auto; padding:0 ;font-size:13px; }
2216
+
2217
+ /* ALL Levels */ /* Style consistent throughout all nav levels */
2218
+ #nav li { position:relative; text-align:left; }
2219
+ #nav li.over { z-index:999; }
2220
+ #nav a,
2221
+ #nav a:hover { display:block; line-height:1.3em; text-decoration:none; }
2222
+ #nav span { display:block; cursor:pointer; white-space:nowrap; }
2223
+ #nav li ul span {white-space:normal; }
2224
+
2225
+ /* 0 Level */
2226
+ #nav li { float:left; }
2227
+ #nav li.active a { color:white; }
2228
+ #nav a {font-size:12px;font-family:"Lucida grande"; float:left; color:white; padding-left:14px; }
2229
+ #nav li.over a,
2230
+ #nav a:hover { color:#d3d3d3; }
2231
+
2232
+ /* 1st Level */
2233
+ #nav ul li,
2234
+ #nav ul li.active { float:none; margin:0; padding-bottom:1px; background:#ecf3f6 url(../images/bkg_nav1.gif) 0 100% repeat-x; }
2235
+ /*#nav ul li.over { background:#d5e4eb url(../images/bkg_nav1.gif) repeat-x 0 100%; }*/
2236
+ #nav ul li.last { background:#ecf3f6; padding-bottom:0; }
2237
+
2238
+ #nav ul a,
2239
+ #nav ul a:hover { float:none; padding:0; background:none; }
2240
+ #nav ul li a { font-weight:normal !important; }
2241
+
2242
+ /* 2nd Level */
2243
+ #nav ul { position:absolute; width:15em; top:16px; left:-10000px; border:1px solid #899ba5; }
2244
+
2245
+ /* Show menu */
2246
+ #nav li.over > ul { left:0; }
2247
+ #nav li.over > ul li.over > ul { left:100px; }
2248
+ #nav li.over ul ul { left:-10000px; }
2249
+
2250
+ #nav ul li a { background:white; }
2251
+ #nav ul li a:hover { background:#d5e4eb; }
2252
+ #nav ul li a,
2253
+ #nav ul li a:hover { color:#2f2f2f !important; }
2254
+ #nav ul span, #nav ul li.last li span { padding:3px 15px 4px 15px; }
2255
+
2256
+ /* 3rd+ Level */
2257
+ #nav ul ul { top:5px; }
2258
+ /********** Navigation > */
2259
+ /* ======================================================================================= */
2260
+
2261
+
2262
+ /* Sidebar =============================================================================== */
2263
+ .block { border:1px solid #c4c1bc; margin:0 0 15px; }
2264
+ .block .block-title { background:url(../images/bkg_block-title.gif) 0 0 repeat-x; border-bottom:1px solid #ddd; padding:2px 9px; }
2265
+ .block .block-title strong { display:block; font:bold 12px/16px Arial, Helvetica, sans-serif; min-height:16px; padding:1px 0 1px; text-transform:uppercase; color:#e26703; }
2266
+ .block .block-title strong span {}
2267
+ .block .block-title a { text-decoration:none !important; }
2268
+ .block .block-subtitle { margin:0; padding:5px 9px; font-size:1em; font-weight:bold; color:#0a263c; }
2269
+ .block .block-content { background:#f8f7f5; }
2270
+ .block .block-content li.item { padding:7px 9px; }
2271
+ .block .btn-remove { float:right; margin:1px 0 2px 5px; }
2272
+ .block .actions { background:#dee5e8 url(../images/bkg_block-actions.gif) 0 0 repeat-x; padding:6px 9px; text-align:right; }
2273
+ .block .actions a { float:left; }
2274
+ .block .actions button.button { float:right; }
2275
+ .block .empty { margin:0; padding:5px 9px; }
2276
+
2277
+ .block li.odd { background-color:#f4f3f3; }
2278
+ .block li.even { background-color:#fafafa; }
2279
+
2280
+ /* Mini Blocks */
2281
+ .block-cart,
2282
+ .block-wishlist,
2283
+ .block-subscribe,
2284
+ .block-compare,
2285
+ .block-reorder,
2286
+ .block-poll,
2287
+ .block-viewed,
2288
+ .block-compared,
2289
+ .block-related,
2290
+ .block-tags,
2291
+ .block-login { font-size:11px; line-height:1.25; }
2292
+ .block-cart .block-title strong,
2293
+ .block-wishlist .block-title strong,
2294
+ .block-subscribe .block-title strong,
2295
+ .block-compare .block-title strong,
2296
+ .block-reorder .block-title strong,
2297
+ .block-poll .block-title strong,
2298
+ .block-viewed .block-title strong,
2299
+ .block-compared .block-title strong,
2300
+ .block-related .block-title strong,
2301
+ .block-tags .block-title strong,
2302
+ .block-login .block-title strong { background-position:0 0; background-repeat:no-repeat; padding-left:21px; }
2303
+
2304
+ /* Mini Products List */
2305
+ .mini-products-list .product-image { float:left; width:50px; border:1px solid #a9a9a9; }
2306
+ .mini-products-list .product-details { margin-left:60px; }
2307
+
2308
+ /* Block: Account */
2309
+ .block-account { border-color:#bbb; }
2310
+ .block-account .block-title { background:#fc9d36 url(../images/bkg_block-title-account.gif) 0 100% repeat-x; border:0; padding:3px 10px; }
2311
+ .block-account .block-title strong { font-size:13px; color:#fff; }
2312
+ .block-account .block-content { background:#fbfaf6; padding:7px 10px 7px; }
2313
+ .block-account .block-content li a { display:block; border-bottom:1px solid #ddd; padding:3px 0; color:#5f5d5c; text-decoration:none !important; }
2314
+ .block-account .block-content li a:hover { color:#ea7900; }
2315
+ .block-account .block-content li.last a { border-bottom:0; }
2316
+ .block-account .block-content li.current { border-bottom:1px solid #ddd; padding:3px 0; color:#ea7900; }
2317
+ .block-account .block-content li.current.last { border-bottom:0; }
2318
+
2319
+ /* Block: Currency Switcher */
2320
+ .block-currency { border:0; background:url(../images/bkg_block-currency.gif) 0 0 no-repeat; padding:7px 12px 10px; height:51px; }
2321
+ .block-currency .block-title { background:none; border:0; padding:0; margin:0 0 5px; }
2322
+ .block-currency .block-title strong { font:bold 13px/21px Arial, Helvetica, sans-serif; background:url(../images/i_block-currency.gif) 0 50% no-repeat; padding:0 0 0 21px; text-transform:none; color:#fff; }
2323
+ .block-currency .block-content { background:none; padding:0; }
2324
+ .block-currency .block-content select { width:100%; padding:0; }
2325
+
2326
+ /* Block: Layered Navigation */
2327
+ .block-layered-nav { border:0; }
2328
+ .block-layered-nav .block-title { border:0; padding:0; height:24px; background:url(../images/bkg_block-layered-title.gif) 0 0 no-repeat; text-indent:-999em; overflow:hidden; }
2329
+ .block-layered-nav .block-subtitle { line-height:1.35; background:#d5e8ff url(../images/bkg_block-layered1.gif) 0 50% repeat; padding:3px 9px; border:1px solid #b9ccdd; border-width:1px 0; text-transform:uppercase; color:#1f5070; }
2330
+ .block-layered-nav .block-content { border:1px solid #a0b3c3; background:#e7f1f4; }
2331
+ .block-layered-nav dt { background:url(../images/bkg_block-layered-dt.gif) 9px 11px no-repeat; padding:7px 10px 0 28px; font-weight:bold; text-transform:uppercase; }
2332
+ .block-layered-nav dd { padding:0 12px 12px; background:url(../images/bkg_block-layered-dd.gif) 0 100% repeat-x; }
2333
+ .block-layered-nav dd.last { background:none; }
2334
+ .block-layered-nav .currently li { background:#fff url(../images/bkg_block-layered-li.gif) 0 100% repeat-x; padding:4px 6px 4px 10px; }
2335
+ .block-layered-nav .currently .label { font-weight:bold; padding-left:18px; background:url(../images/bkg_block-layered-label.gif) 0 3px no-repeat; text-transform:uppercase; }
2336
+ .block-layered-nav .currently .btn-remove { margin:3px 0 0; }
2337
+ .block-layered-nav .actions { font-size:11px; padding:4px 9px; background:#cad6e4; border:1px solid #dee5e8; border-width:1px 0; text-align:right; }
2338
+ .block-layered-nav .actions a { float:none; }
2339
+
2340
+ /* Block: Cart */
2341
+ .block-cart .block-title { /*border-bottom:0;*/ }
2342
+ .block-cart .block-title strong { background-image:url(../images/i_block-cart.gif); }
2343
+ .block-cart .summary { background:#fff; padding:2px 8px 8px; margin:-1px 0 0; position:relative; z-index:1; }
2344
+ .block-cart .amount { margin:0; }
2345
+ .block-cart .amount a { font-weight:bold; }
2346
+ .block-cart .subtotal { margin:5px 0 0; padding:2px 0; background:#fbebd9; text-align:center; }
2347
+ .block-cart .subtotal .price { font-weight:bold; }
2348
+ .block-cart .actions { border-bottom:1px solid #c2c2c2; }
2349
+
2350
+ /* Block: Wishlist */
2351
+ .block-wishlist .block-title strong { background-image:url(../images/i_block-wishlist.gif); }
2352
+ .block-wishlist .actions { text-align:right; }
2353
+ .block-wishlist .actions a { float:none; }
2354
+
2355
+ /* Block: Related */
2356
+ .block-related .block-title strong { background-image:url(../images/i_block-related.gif); background-position:0 1px; }
2357
+ .block-related input.checkbox { float:left; }
2358
+ .block-related .product { margin-left:20px; }
2359
+
2360
+ /* Block: Compare Products */
2361
+ .block-compare .block-title strong { background-image:url(../images/i_block-list.gif); background-position:0 1px; }
2362
+ .block-compare button.button span { border-color:#406a83; background:#618499; }
2363
+ .page-popup .link-print { background:url(../images/i_print.gif) 0 2px no-repeat; padding:2px 0 2px 25px; font-weight:bold; color:#1e7ec8; }
2364
+ .compare-table { border:0; }
2365
+ .compare-table thead tr.first th,
2366
+ .compare-table thead tr.first td { border:0; background:none; padding:0; font-size:0; line-height:0; }
2367
+ .compare-table .btn-remove { float:right; background-image:url(../images/btn_remove2.gif); width:72px; height:15px; }
2368
+ .compare-table tbody th { background:#d9e5ee url(../images/bkg_th-v.gif) 100% 0 repeat-y; }
2369
+ .compare-table tbody th,
2370
+ .compare-table tbody td { padding:10px; border:0; border-top:1px solid #ccc; border-left:1px solid #ccc; }
2371
+ .compare-table tbody td.last { border-right:1px solid #ccc; }
2372
+ .compare-table tbody tr.last th,
2373
+ .compare-table tbody tr.last td { border-bottom:1px solid #ccc !important; }
2374
+ .compare-table tr.add-to-row td { background:#fffada; text-align:center; }
2375
+ .compare-table tr.first td { text-align:center; }
2376
+ .compare-table tr.first td .product-name { font-size:13px; font-weight:bold; margin:0 0 5px; color:#203548; }
2377
+ .compare-table tr.first td .product-name a { color:#203548; }
2378
+ .compare-table tr.first td .ratings { width:69px; margin:0 auto; }
2379
+ .compare-table tr.first td p,
2380
+ .compare-table tr.add-to-row td p { margin:0; }
2381
+
2382
+ /* Block: Recently Viewed */
2383
+ .block-viewed .block-title strong { background-image:url(../images/i_block-viewed.gif); }
2384
+
2385
+ /* Block: Recently Compared */
2386
+ .block-compared .block-title strong { background-image:url(../images/i_block-list.gif); background-position:0 1px; }
2387
+
2388
+ /* Block: Poll */
2389
+ .block-poll .block-title strong { background-image:url(../images/i_block-poll.gif); }
2390
+ .block-poll .block-subtitle { font-size:12px; }
2391
+ .block-poll label { color:#777; font-weight:bold; }
2392
+ .block-poll input.radio { float:left; margin:1px -18px 0 0; }
2393
+ .block-poll .label { display:block; margin-left:18px; }
2394
+ .block-poll li { padding:3px 9px; }
2395
+ .block-poll .actions { margin:5px 0 0; }
2396
+ .block-poll button.button span { border-color:#406a83; background:#618499; }
2397
+ .block-poll .answer { font-weight:bold; }
2398
+ .block-poll .votes { float:right; margin-left:10px; }
2399
+
2400
+ /* Block: Tags */
2401
+ .block-tags .block-title strong { background-image:url(../images/i_block-tags.gif); }
2402
+ .block-tags .block-content ul { font-size:12px; padding:10px; }
2403
+ .block-tags .block-content li { display:inline; padding-right:4px; }
2404
+ .block-tags .block-content a { color:#1b2d3b; }
2405
+ .block-tags .actions { text-align:right; }
2406
+ .block-tags .actions a { float:none; }
2407
+
2408
+ /* Block: Subscribe */
2409
+ .block-subscribe .block-content { padding:5px 10px; }
2410
+ .block-subscribe .block-title strong { background-image:url(../images/i_block-subscribe.gif); }
2411
+ .block-subscribe label { font-weight:bold; color:#666; }
2412
+ .block-subscribe input.input-text { display:block; width:167px; margin:3px 0; }
2413
+ .block-subscribe .actions { background:none; padding:0; margin:3px 0 0; text-align:left; }
2414
+ .block-subscribe .actions button.button { float:none; }
2415
+ .block-subscribe .actions button.button span { border-color:#406a83; background:#618499; }
2416
+
2417
+ /* Block: Reorder */
2418
+ .block-reorder .block-title strong { background-image:url(../images/i_block-list.gif); }
2419
+ .block-reorder input.checkbox { float:left; margin:2px -20px 0 0; }
2420
+ .block-reorder .product-name { margin-left:20px; }
2421
+ .block-reorder .validation-advice { margin:3px 9px 7px; }
2422
+
2423
+ /* Block: Banner */
2424
+ .block-banner { border:0; }
2425
+ .block-banner .block-content { padding:0; text-align:center; }
2426
+
2427
+ /* Block: Login */
2428
+ .block-login .block-title strong { background-image:url(../images/i_ma-info.gif); }
2429
+ .block-login .block-content { padding:5px 10px; }
2430
+ .block-login label { font-weight:bold; color:#666; }
2431
+ .block-login input.input-text { display:block; width:167px; margin:3px 0; }
2432
+ .block-login .actions { background:none; padding:0; margin:3px 0 0; }
2433
+ .block-login .actions button.button span { border-color:#406a83; background:#618499; }
2434
+ /* ======================================================================================= */
2435
+
2436
+
2437
+ /* Category Page ========================================================================= */
2438
+ .category-title { border:0; margin:0 0 7px; }
2439
+ .category-image { width:100%; overflow:hidden; margin:0 0 10px; text-align:center; }
2440
+ .category-image img {}
2441
+ .category-description { margin:0 0 10px; }
2442
+ .category-products {}
2443
+
2444
+ /* View Type: Grid */
2445
+ .products-grid { border-bottom:1px solid #d9ddd3; background:url(../images/bkg_grid.gif) 0 0 repeat; position:relative; }
2446
+ .products-grid.last { border-bottom:0; }
2447
+ .products-grid li.item { float:left; width:138px; padding:12px 10px 80px; }
2448
+ .products-grid .product-image { display:block; width:135px; height:135px; margin:0 0 10px; }
2449
+ .products-grid .product-name { /*min-height:2.7em;*/ margin:0 0 5px; font-weight:bold; font-size:13px; color:#203548; }
2450
+ .products-grid .product-name a { color:#203548; }
2451
+ .products-grid .price-box { margin:5px 0; }
2452
+ .products-grid .availability { line-height:21px; }
2453
+ .products-grid .actions { position:absolute; bottom:12px; }
2454
+ .col2-left-layout .products-grid,
2455
+ .col2-right-layout .products-grid { width:632px; margin:0 auto; }
2456
+ .col1-layout .products-grid { width:790px; margin:0 auto; }
2457
+
2458
+ /* View Type: List */
2459
+ .products-list li.item { border-bottom:1px solid #d9ddd3; padding:12px 10px; }
2460
+ .products-list li.item.last { border-bottom:0; }
2461
+ .products-list .product-image { float:left; width:135px; height:135px; margin:0 0 10px; }
2462
+ .products-list .product-shop { margin-left:150px; }
2463
+ .products-list .product-name { margin:0 0 5px; font-weight:bold; font-size:13px; color:#203548; }
2464
+ .products-list .product-name a { color:#203548; }
2465
+ .products-list .price-box { float:left; margin:3px 13px 5px 0; }
2466
+ .products-list .availability { float:left; margin:3px 0 0; }
2467
+ .products-list .desc { clear:both; padding:6px 0 0; margin:0 0 15px; line-height:1.35; }
2468
+ .products-list .desc .link-more { font-size:11px; }
2469
+ .products-list .add-to-links { clear:both; }
2470
+ .products-list .add-to-links li { display:inline; }
2471
+ .products-list .add-to-links .separator { display:inline; margin:0 2px; }
2472
+ /* ======================================================================================= */
2473
+
2474
+
2475
+ /* Product View ========================================================================== */
2476
+ /* Rating */
2477
+ .no-rating { margin:0; }
2478
+
2479
+ .ratings { font-size:11px; line-height:1.25; margin:7px 0; }
2480
+ .ratings strong { float:left; margin:1px 3px 0 0; }
2481
+ .ratings .rating-links { margin:0; }
2482
+ .ratings .rating-links .separator { margin:0 2px; }
2483
+ .ratings dt {}
2484
+ .ratings dd {}
2485
+ .rating-box { width:69px; height:13px; font-size:0; line-height:0; background:url(../images/bkg_rating.gif) 0 0 repeat-x; text-indent:-999em; overflow:hidden; }
2486
+ .rating-box .rating { float:left; height:13px; background:url(../images/bkg_rating.gif) 0 100% repeat-x; }
2487
+ .ratings .rating-box { float:left; margin-right:3px; }
2488
+ .ratings .amount {}
2489
+
2490
+ .ratings-table th,
2491
+ .ratings-table td { font-size:11px; line-height:1.15; padding:3px 0; }
2492
+ .ratings-table th { font-weight:bold; padding-right:8px; }
2493
+
2494
+ /* Availability */
2495
+ .availability { margin:0; }
2496
+ .availability span { font-weight:bold; }
2497
+ .availability.in-stock span {}
2498
+ .availability.out-of-stock span { color:#d83820; }
2499
+ .product-view .product-shop .availability { font-size:11px; }
2500
+ .product-view .product-shop .availability span { font-weight:normal; }
2501
+
2502
+ /* Email to a Friend */
2503
+ .email-friend { margin:0; }
2504
+
2505
+ /* Alerts */
2506
+ .alert-price { margin:0; font-size:11px; }
2507
+ .alert-stock { margin:0; font-size:11px; }
2508
+
2509
+ /********** < Product Prices */
2510
+ .price { white-space:nowrap !important; }
2511
+
2512
+ .price-box { margin:5px 0; }
2513
+ .price-box .price { font-weight:bold; color:#c76200; }
2514
+
2515
+ /* Regular price */
2516
+ .regular-price { color:#c76200; }
2517
+ .regular-price .price { font-weight:bold; font-size:13px; color:#c76200; }
2518
+ .block .regular-price,
2519
+ .block .regular-price .price { color:#2f2f2f; }
2520
+
2521
+ /* Old price */
2522
+ .old-price { margin:0; }
2523
+ .old-price .price-label { white-space:nowrap; color:#999; }
2524
+ .old-price .price { font-weight:bold; color:#c76200; text-decoration:line-through; }
2525
+
2526
+ /* Special price */
2527
+ .special-price { margin:0; padding:3px 0; }
2528
+ .special-price .price-label { font-size:13px; font-weight:bold; white-space:nowrap; color:#cd5033; }
2529
+ .special-price .price { font-size:13px; font-weight:bold; color:#c76200; }
2530
+
2531
+ /* Minimal price (as low as) */
2532
+ .minimal-price { margin:0; }
2533
+ .minimal-price .price-label { font-weight:bold; white-space:nowrap; }
2534
+
2535
+ .minimal-price-link { display:block; }
2536
+ .minimal-price-link .label {color:#1e7ec8;}
2537
+ .minimal-price-link .price { font-weight:normal; color:#1e7ec8; }
2538
+
2539
+ /* Excluding tax */
2540
+ .price-excluding-tax { display:block; color:#999; }
2541
+ .price-excluding-tax .label { white-space:nowrap; color:#999; }
2542
+ .price-excluding-tax .price { font-size:13px; font-weight:normal; color:#c76200; }
2543
+
2544
+ /* Including tax */
2545
+ .price-including-tax { display:block; color:#999; }
2546
+ .price-including-tax .label { white-space:nowrap; color:#999; }
2547
+ .price-including-tax .price { font-size:13px; font-weight:bold; color:#c76200; }
2548
+
2549
+ /* FTP */
2550
+ .weee { display:block; font-size:11px; color:#444; }
2551
+ .weee .price { font-size:11px; font-weight:normal; }
2552
+
2553
+ /* Excl tax (for order tables) */
2554
+ .price-excl-tax { display:block; }
2555
+ .price-excl-tax .label { display:block; white-space:nowrap; }
2556
+ .price-excl-tax .price { display:block; }
2557
+
2558
+ /* Incl tax (for order tables) */
2559
+ .price-incl-tax { display:block; }
2560
+ .price-incl-tax .label { display:block; white-space:nowrap; }
2561
+ .price-incl-tax .price { display:block; font-weight:bold; }
2562
+
2563
+ /* Price range */
2564
+ .price-from { margin:0; }
2565
+ .price-from .price-label { font-weight:bold; white-space:nowrap; }
2566
+
2567
+ .price-to { margin:0; }
2568
+ .price-to .price-label { font-weight:bold; white-space:nowrap; }
2569
+
2570
+ /* Price notice next to the options */
2571
+ .price-notice { padding-left:10px; color:#999; }
2572
+ .price-notice .price { font-weight:bold; color:#2f2f2f; }
2573
+
2574
+ /* Price as configured */
2575
+ .price-as-configured { margin:0; }
2576
+ .price-as-configured .price-label { font-weight:bold; white-space:nowrap; }
2577
+
2578
+ .price-box-bundle { padding:0 0 10px 0; }
2579
+ .price-box-bundle .price-box { margin:0 !important; padding:0 !important; }
2580
+ .price-box-bundle .price { color:#555; }
2581
+ /********** Product Prices > */
2582
+
2583
+ /* Tier Prices */
2584
+ .tier-prices { margin:10px 0; padding:10px; background-color:#f4f7f7; border:1px solid #dadddd; }
2585
+ .tier-prices li { line-height:1.4; background:url(../images/i_tier.gif) no-repeat 0 3px; padding:2px 0 2px 10px; color:#424242; }
2586
+ .tier-prices .benefit { font-style:italic; font-weight:bold; color:#2f2f2f; }
2587
+ .tier-prices .price { font-weight:bold; color:#2f2f2f; }
2588
+
2589
+ .tier-prices-grouped li { padding:2px 0; color:#e26703; }
2590
+ .tier-prices-grouped li .price { font-weight:bold; }
2591
+
2592
+ /* Add to Links */
2593
+ .add-to-links { font-size:11px; margin:5px 0 0; }
2594
+ .add-to-links .separator { display:none; }
2595
+
2596
+ /* Add to Cart */
2597
+ .add-to-cart label { float:left; margin-right:5px; font-weight:bold; color:#666; }
2598
+ .add-to-cart .qty { float:left; margin-right:5px; }
2599
+ .add-to-cart button.button { float:left; }
2600
+
2601
+ /* Product Images */
2602
+ .product-view .product-img-box { float:left; width:267px; }
2603
+ .col3-layout .product-view .product-img-box { float:none; margin:0 auto; }
2604
+ .product-view .product-img-box .product-image { margin:0 0 13px; }
2605
+ .product-view .product-img-box .product-image-zoom { position:relative; width:265px; height:265px; overflow:hidden; z-index:9; }
2606
+ .product-view .product-img-box .product-image-zoom img { position:absolute; left:0; top:0; cursor:move; }
2607
+ .product-view .product-img-box .zoom-notice { font-size:11px; margin:0 0 5px; text-align:center; }
2608
+ .product-view .product-img-box .zoom { position:relative; z-index:9; height:18px; margin:0 auto 13px; padding:0 28px; background:url(../images/slider_bg.gif) 50% 50% no-repeat; cursor:pointer; }
2609
+ .product-view .product-img-box .zoom.disabled { -moz-opacity:.3; -webkit-opacity:.3; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";/*IE8*/ opacity:.3; }
2610
+ .product-view .product-img-box .zoom #track { position:relative; height:18px; }
2611
+ .product-view .product-img-box .zoom #handle { position:absolute; left:0; top:-1px; width:9px; height:22px; background:url(../images/magnifier_handle.gif) 0 0 no-repeat; }
2612
+ .product-view .product-img-box .zoom .btn-zoom-out { position:absolute; left:2px; top:0; }
2613
+ .product-view .product-img-box .zoom .btn-zoom-in { position:absolute; right:2px; top:0; }
2614
+ .product-view .product-img-box .more-views h2 { font-size:11px; border-bottom:1px solid #ccc; margin:0 0 8px; text-transform:uppercase; }
2615
+ .product-view .product-img-box .more-views ul { margin-left:-9px }
2616
+ .product-view .product-img-box .more-views li { float:left; margin:0 0 8px 9px; }
2617
+ .product-view .product-img-box .more-views li a { float:left; width:56px; height:56px; border:2px solid #ddd; overflow:hidden; }
2618
+
2619
+ .product-image-popup { margin:0 auto; }
2620
+ .product-image-popup .nav { font-weight:bold; text-align:center; }
2621
+ .product-image-popup .image { display:block; margin:10px 0; }
2622
+ .product-image-popup .image-label { font-size:13px; font-weight:bold; margin:0 0 10px; color:#2f2f2f; }
2623
+
2624
+ /* Product Shop */
2625
+ .product-view .product-shop { float:right; width:330px; }
2626
+ .col1-layout .product-view .product-shop { float:right; width:545px; }
2627
+ .col3-layout .product-view .product-shop { float:none; width:auto; }
2628
+ .product-view .product-shop .product-name { margin:0 0 5px; }
2629
+ .product-view .product-shop .product-name h1 { margin:0; font:bold 15px/1.35 Arial, Helvetica, sans-serif; }
2630
+ .product-view .product-shop .availability { margin:10px 0; }
2631
+ .product-view .product-shop .short-description { margin:10px 0; background:url(../images/bkg_divider1.gif) 0 0 repeat-x; padding:10px 0 0; }
2632
+ .product-view .product-shop .price-box { margin:10px 0; }
2633
+ .product-view .product-shop .add-to-links { margin:0; }
2634
+ .product-view .product-shop .add-to-links { font-size:12px; text-align:right; }
2635
+ .product-view .product-shop .add-to-links li,
2636
+ .product-view .product-shop .add-to-links li .separator { display:inline; }
2637
+ .product-view .product-shop .add-to-links a { color:#1E7EC8 !important; font-weight:normal !important; }
2638
+
2639
+ /* Product Options */
2640
+ .product-options { margin:20px 0 0; padding:10px 15px 20px; background-color:#f6f6f6; border:1px solid #e4e4e4; }
2641
+ .product-options dt { padding:10px 0 0; font-weight:normal; }
2642
+ .product-options dt label { font-weight:bold; color:#2f2f2f; }
2643
+ .product-options dt span.required { color:#eb340a; }
2644
+ .product-options dt .qty-holder { float:right; margin-right:15px; }
2645
+ .product-options dt .qty-holder label { vertical-align:middle; }
2646
+ .product-options dt .qty-disabled { background:none; border:0; padding:3px; color:#2f2f2f; }
2647
+ .product-options dd { padding:5px 10px 15px; margin:0 0 5px; border-bottom:1px solid #e4e4e4; }
2648
+ .product-options dl.last dd.last { border-bottom:0; padding-bottom:5px; margin-bottom:0; }
2649
+ .product-options dd input.input-text { width:98%; }
2650
+ .product-options dd input.datetime-picker { width:150px; }
2651
+ .product-options dd textarea { width:98%; height:8em; }
2652
+ .product-options dd select { width:99%; }
2653
+ .product-options dd .multiselect option { border-bottom:1px dotted #d9e5ee; padding:2px 4px; }
2654
+ .product-options ul.options-list { margin-right:5px; }
2655
+ .product-options ul.options-list li { line-height:1.5; padding:2px 0; }
2656
+ .product-options ul.options-list input.radio { float:left; margin-top:3px; }
2657
+ .product-options ul.options-list input.checkbox { float:left; margin-top:3px; }
2658
+ .product-options ul.options-list .label { display:block; margin-left:18px; }
2659
+ .product-options ul.options-list label { font-weight:normal; }
2660
+ .product-options ul.validation-failed { padding:0 7px; }
2661
+ .product-options p.note { margin:0; font-size:11px; }
2662
+ .product-options p.required { margin-bottom:0; padding:15px 0 0; }
2663
+
2664
+ .product-options-bottom { background-color:#fffada; padding:15px 20px; border:1px solid #e4e4e4; border-top:0; }
2665
+ .product-options-bottom .tier-prices { margin:0; padding:0 0 10px; border:0; background:0; }
2666
+ .product-options-bottom .tier-prices li { background:0; padding:2px 0; color:#e26703; }
2667
+ .product-options-bottom .tier-prices .price,
2668
+ .product-options-bottom .tier-prices .benefit { color:#e26703; }
2669
+ .product-options-bottom .price-box { float:left; margin:0; padding:0; }
2670
+ .product-options-bottom .price-label { float:left; padding-right:5px; }
2671
+ .product-options-bottom .price-tax { float:left; }
2672
+ .product-options-bottom .add-to-cart { float:right; }
2673
+ .product-shop .product-options-bottom { margin:0 0 10px; }
2674
+ .product-shop .product-options-bottom .price-box { float:none; margin:0 0 5px; }
2675
+ .product-shop .product-options-bottom .price-label { float:none; padding-right:0; }
2676
+ .product-shop .product-options-bottom .price-tax { float:none; }
2677
+ .product-shop .product-options-bottom .add-to-cart-box { clear:both; float:left; padding-top:12px; }
2678
+
2679
+ /* Grouped Product */
2680
+ .product-view .grouped-items-table .price-box { margin:0; padding:0; }
2681
+
2682
+ /* Block: Description */
2683
+ .product-view .box-description {}
2684
+
2685
+ /* Block: Additional */
2686
+ .product-view .box-additional .data-table th,
2687
+ .product-view .box-additional .data-table td { line-height:1.25; }
2688
+
2689
+ /* Block: Upsell */
2690
+ .product-view .box-up-sell h2 { border-bottom:0; padding:0; margin:0 0 8px; }
2691
+ .product-view .box-up-sell .products-grid { width:100%; border:1px solid #e5dcc3; }
2692
+ .product-view .box-up-sell .products-grid td { width:25%; background:#f6f2e7; border-right:1px solid #e5dcc3; border-bottom:1px solid #e5dcc3; padding:15px 10px 12px; line-height:1.6em; }
2693
+ .product-view .box-up-sell .products-grid tr.last td { border-bottom:0; }
2694
+ .product-view .box-up-sell .products-grid td.last { border-right:0; }
2695
+ .product-view .box-up-sell .products-grid td img { border:1px solid #e5dcc3; }
2696
+ .product-view .box-up-sell .products-grid .product-image { text-align:center; }
2697
+ .product-view .box-up-sell .products-grid td.empty { border-right:0; background:#f1ecdb; }
2698
+ .product-view .box-up-sell .products-grid .ratings .rating-box { float:none; display:block; margin:0 0 3px; }
2699
+
2700
+ /* Block: Tags */
2701
+ .product-view .box-tags { margin:0; }
2702
+ .product-view .box-tags h3 { font-size:13px; }
2703
+ .product-view .box-tags .product-tags { display:block; margin:0 0 15px; }
2704
+ .product-view .box-tags .product-tags li { display:inline; background:url(../images/bkg_pipe3.gif) 100% 4px no-repeat; padding:0 7px 0 4px; }
2705
+ .product-view .box-tags .product-tags li.first { padding-left:0; }
2706
+ .product-view .box-tags .product-tags li.last { background:none; padding-right:0; }
2707
+ .product-view .box-tags .form-add label { display:block; font-size:13px; font-weight:bold; margin:0 0 5px; color:#0a263c;}
2708
+ .product-view .box-tags .form-add .input-box { float:left; width:305px; margin:0 5px 0 0; background:url(../images/i_tag_add.gif) 0 2px no-repeat; padding:0 0 0 23px; }
2709
+ .product-view .box-tags .form-add input.input-text { width:299px; }
2710
+ .product-view .box-tags .form-add button.button span { border-color:#406a83; background:#618499; }
2711
+ .product-view .box-tags .note { margin:3px 0 0; padding:0 0 0 23px; font-size:11px; }
2712
+
2713
+ /* Block: Reviews */
2714
+ .product-view .box-reviews dl { margin:15px 0; }
2715
+ .product-view .box-reviews dt a,
2716
+ .product-view .box-reviews dt span { font-weight:bold; }
2717
+ .product-view .box-reviews dd { margin:0 0 15px; }
2718
+ .product-view .box-reviews dd small { font-style:italic; }
2719
+ .product-view .box-reviews .form-add { margin:15px 0 0; }
2720
+ .product-view .box-reviews .form-add h3 { font-size:13px; font-weight:normal; }
2721
+ .product-view .box-reviews .form-add h3 span { font-weight:bold; }
2722
+ .product-view .box-reviews .form-add h4 { font-size:12px; }
2723
+ .product-view .box-reviews .form-add .data-table td { text-align:center; }
2724
+ .product-view .box-reviews .form-add .form-list { margin:15px 0 0; }
2725
+ .product-view .box-reviews .form-add .form-list .input-box { width:360px; }
2726
+ .product-view .box-reviews .form-add .form-list input.input-text,
2727
+ .product-view .box-reviews .form-add .form-list textarea { width:354px; }
2728
+
2729
+ /* Send a Friend */
2730
+ .send-friend .form-list { width:615px; overflow:hidden; }
2731
+ .send-friend .form-list li { margin-right:-15px; }
2732
+ .send-friend .form-list li p { margin:0 15px 0 0; }
2733
+ .send-friend .form-list .field { width:315px; }
2734
+ .send-friend .form-list .input-box { width:300px; }
2735
+ .send-friend .form-list input.input-text,
2736
+ .send-friend .form-list textarea { width:294px; }
2737
+ .send-friend .form-list li.wide .input-box { width:612px; }
2738
+ .send-friend .form-list li.wide textarea { width:609px; }
2739
+ .send-friend .buttons-set .limit { float:right; margin:0 7px 0 0; font-size:11px; line-height:21px; }
2740
+ /* ======================================================================================= */
2741
+
2742
+
2743
+ /* Content Styles ================================================================= */
2744
+ .product-name { margin:0; font-size:1em; font-weight:normal; }
2745
+ .product-name a { color:#1e7ec8; }
2746
+
2747
+ /* Product Tags */
2748
+ .tags-list { display:block; font-size:13px; border:1px solid #c1c4bc; background:#f8f7f5; padding:10px; }
2749
+ .tags-list li { display:inline !important; margin:0 4px 0 0; }
2750
+ .tags-list li a { color:#1b2d3b; }
2751
+
2752
+ /* Advanced Search */
2753
+ .advanced-search .form-list label { width:160px; padding-right:10px; }
2754
+ .advanced-search .form-list .input-box,
2755
+ .advanced-search .form-list .input-range { float:left; clear:none; }
2756
+ .advanced-search-amount { margin:0 0 10px; }
2757
+ .advanced-search-summary { margin:10px 0; border:1px solid #e9d7c9; background:#fff6f1; padding:10px; }
2758
+ .advanced-search-summary ul { float:left; width:49%; }
2759
+ .advanced-search-summary strong { color:#E17C24; padding-left:15px; background:url(../images/i_search_criteria.gif) 0 3px no-repeat; }
2760
+ .advanced-search-summary p { clear:both; font-weight:bold; margin:0; }
2761
+
2762
+ /* CMS Home Page */
2763
+ .cms-home .subtitle {}
2764
+ .cms-index-index .subtitle {}
2765
+
2766
+ /* Sitemap */
2767
+ .page-sitemap .links { text-align:right; margin:0 8px -22px 0; }
2768
+ .page-sitemap .links a { text-decoration:none; position:relative; }
2769
+ .page-sitemap .links a:hover { text-decoration:underline; }
2770
+ .page-sitemap .sitemap { margin:12px; }
2771
+ .page-sitemap .sitemap a { color:#1b2d3b; }
2772
+ .page-sitemap .sitemap li { margin:3px 0; }
2773
+ .page-sitemap .sitemap li.level-0 { margin:10px 0 0; font-weight:bold; }
2774
+ .page-sitemap .sitemap li.level-0 a { color:#1e7ec8; }
2775
+
2776
+ /* RSS */
2777
+ .rss-title h1 { background:url(../images/i_rss-big.png) 0 4px no-repeat; padding-left:27px; }
2778
+ .rss-table .link-rss { display:block; line-height:1.55; background-position:0 4px; }
2779
+ /* ======================================================================================= */
2780
+
2781
+
2782
+ /* Shopping Cart ========================================================================= */
2783
+ .cart .page-title { border-bottom:0; margin:0 0 12px; }
2784
+ .cart .page-title h1 { margin:10px 0 0; }
2785
+
2786
+ /* Checkout Types */
2787
+ .cart .page-title .checkout-types li { margin:0 0 5px; }
2788
+
2789
+ /* Shopping Cart Table */
2790
+ .cart-table th { padding:2px 10px; }
2791
+ .cart-table td { padding:10px; }
2792
+ .cart-table .product-name { font-weight:bold; margin:0 0 5px; color:#2f2f2f; }
2793
+ .cart-table .item-msg { margin:5px 0; font-size:11px; font-weight:bold; color:#df280a; }
2794
+ .cart-table tfoot td { padding:5px 10px; }
2795
+ .cart-table .btn-continue { float:left; }
2796
+ .cart-table .btn-continue span,
2797
+ .cart-table .btn-update span { border-color:#406a83; background:#618499; }
2798
+
2799
+ /* Shopping Cart Collateral boxes */
2800
+ .cart .cart-collaterals { padding:25px 0 0; }
2801
+ .cart .cart-collaterals .col2-set { float:left; width:605px; }
2802
+ .cart .cart-collaterals .col2-set .col-2 { width:294px; }
2803
+
2804
+ .cart .crosssell { border:1px solid #cec3b6; background:#fafaec; padding:12px 15px; }
2805
+ .cart .crosssell h2 { font-size:13px; font-weight:bold; }
2806
+ .cart .crosssell .product-image { float:left; width:75px; height:75px; border:1px solid #d0cdc9; }
2807
+ .cart .crosssell .product-details { margin-left:90px; }
2808
+ .cart .crosssell .product-name { font-weight:bold; }
2809
+ .cart .crosssell li.item { margin:12px 0; }
2810
+ .cart .crosssell .link-compare { font-weight:normal; }
2811
+
2812
+ /* Discount Codes & Estimate Shipping and Tax Boxes */
2813
+ .cart .discount,
2814
+ .cart .shipping { border:1px solid #d0cbc1; background:#fff url(../images/bkg_block-title.gif) 0 0 repeat-x; padding:12px 15px; margin:0 0 18px; }
2815
+ .cart .discount h2,
2816
+ .cart .shipping h2 { background-position:0 0; background-repeat:no-repeat; font:bold 13px/16px Arial, Helvetica, sans-serif; padding:0 0 0 21px; color:#e26703; text-transform:uppercase; }
2817
+ .cart .discount button span,
2818
+ .cart .shipping button span { border-color:#406a83; background:#618499; }
2819
+ .cart .discount .buttons-set,
2820
+ .cart .shipping .buttons-set { margin:10px 0 0; border:0; padding:0; text-align:left; }
2821
+ .cart .discount .buttons-set button.button,
2822
+ .cart .shipping .buttons-set button.button { float:none; margin-left:0; }
2823
+
2824
+ .cart .discount h2 { background-image:url(../images/i_discount.gif); }
2825
+ .cart .discount .input-box { margin:8px 0 0; width:260px; }
2826
+ .cart .discount input.input-text { width:254px; }
2827
+
2828
+ .cart .shipping h2 { background-image:url(../images/i_shipping.gif); }
2829
+ .cart .shipping .sp-methods { margin:10px 0 0; padding:5px 0 0; background:url(../images/bkg_divider1.gif) 0 0 repeat-x; }
2830
+
2831
+ /* Shopping Cart Totals */
2832
+ .cart .totals { float:right; width:268px; background:#dee5e8; border:1px solid #bebcb7; }
2833
+ .cart .totals table { width:100%; margin:7px 0; }
2834
+ .cart .totals td { padding:1px 15px 1px 7px; }
2835
+ .cart .totals tr.last td {}
2836
+ .cart .totals tfoot td { padding-top:5px; padding-bottom:5px; }
2837
+ .cart .totals tfoot td strong { font-size:15px; }
2838
+ .cart .totals .checkout-types { font-size:13px; padding:8px 15px 15px; text-align:right; }
2839
+ .cart .totals .checkout-types li { clear:both; margin:10px 0; }
2840
+
2841
+ /* Options Tool Tip */
2842
+ .item-options dt { font-weight:bold; font-style:italic; }
2843
+ .item-options dd { padding-left:10px; margin:0 0 6px; }
2844
+ .truncated { cursor:help; }
2845
+ .truncated a.dots { cursor:help; }
2846
+ .truncated a.details { cursor:help; }
2847
+ .truncated .truncated_full_value { position:relative; z-index:999; }
2848
+ .truncated .truncated_full_value dl { position:absolute; top:-99999em; left:-99999em; z-index:999; width:250px; padding:8px; border:1px solid #ddd; background-color:#f6f6f6; }
2849
+ .truncated .show dl { top:-20px; left:50%; }
2850
+ .col-left .truncated .show dl { left:15px; top:7px; }
2851
+ .col-right .truncated .show dl { left:-240px; top:7px; }
2852
+ /* ======================================================================================= */
2853
+
2854
+
2855
+ /* Checkout ============================================================================== */
2856
+ /********** < Common Checkout Styles */
2857
+ /* Shipping and Payment methods */
2858
+ .sp-methods { margin:0 0 8px; }
2859
+ .sp-methods dt { margin:13px 0 5px; font-weight:bold; }
2860
+ .sp-methods dd {}
2861
+ .sp-methods dd li { margin:5px 0; }
2862
+ .sp-methods label { font-weight:bold; color:#666; }
2863
+ .sp-methods .price { font-weight:bold; }
2864
+ .sp-methods .form-list { padding-left:20px; }
2865
+ .sp-methods .form-list li { margin:0 0 8px; }
2866
+ .sp-methods select.month { width:154px; margin-right:10px; }
2867
+ .sp-methods select.year { width:96px; }
2868
+ .sp-methods input.cvv { width:3em !important; }
2869
+ .sp-methods .centinel-logos a { margin-right:3px; }
2870
+ .sp-methods .centinel-logos img { vertical-align:middle; }
2871
+
2872
+ .please-wait { float:right; }
2873
+ .please-wait img { vertical-align:middle; }
2874
+ .cvv-what-is-this { font-size:11px; cursor:help; margin-left:10px; }
2875
+
2876
+ /* Tooltip */
2877
+ .tool-tip { border:1px solid #7BA7C9; background:#EAF6FF; padding:15px 20px; position:absolute; z-index:9999; }
2878
+ .tool-tip .btn-close { margin:-9px -14px 0; text-align:right; }
2879
+ .tool-tip .btn-close a { display:block; margin:0 0 0 auto; width:15px; height:15px; background:url(../images/btn_window_close.gif) 100% 0 no-repeat; text-align:left; text-indent:-999em; overflow:hidden; }
2880
+ .tool-tip .tool-tip-content { padding:5px; }
2881
+
2882
+ /* Gift Messages */
2883
+ .gift-messages h3 { font-size:12px; font-weight:bold; color:#e87403; }
2884
+ .gift-messages p.control { color:#8e8d8b; }
2885
+ .gift-messages-form { position:relative; }
2886
+ .gift-messages-form label { float:none !important; position:static !important; }
2887
+ .gift-messages-form h4 { font-size:12px; font-weight:bold; color:#e87403; }
2888
+ .gift-messages-form .whole-order { margin:0 0 25px; }
2889
+ .gift-messages-form .item { margin:0 0 10px; }
2890
+ .gift-messages-form .item .product-img-box { float:left; width:75px; }
2891
+ .gift-messages-form .item .product-image { margin:0 0 7px; }
2892
+ .gift-messages-form .item .number { margin:0; font-weight:bold; text-align:center; color:#8a8987; }
2893
+ .gift-messages-form .item .details { margin-left:90px; }
2894
+ .gift-messages-form .item .details .product-name { font-size:13px; font-weight:bold; margin:0 0 10px; }
2895
+ .gift-messages-form .item .details .form-list .field { width:255px; }
2896
+ .gift-messages-form .item .details .form-list .input-box { width:240px; }
2897
+ .gift-messages-form .item .details .form-list input.input-text { width:234px; }
2898
+ .gift-messages-form .item .details .form-list li.wide .input-box { width:500px; }
2899
+ .gift-messages-form .item .details .form-list li.wide textarea { width:494px; }
2900
+
2901
+ .gift-message-link { font-size:11px; background:url(../images/bkg_collapse-gm.gif) 100% 6px no-repeat; padding-right:7px; }
2902
+ .gift-message-link.expanded { background-position:100% -40px; }
2903
+ .gift-message-row { background:#f2efe9; }
2904
+ .gift-message-row .btn-close { float:right; width:16px; height:16px; background:url(../images/btn_gm-close.gif) 0 0 no-repeat; font-size:0; line-height:0; text-indent:-999em; overflow:hidden; }
2905
+
2906
+ /* Checkout Agreements */
2907
+ .checkout-agreements li { margin:30px 0; }
2908
+ .checkout-agreements .agreement-content { overflow:auto; height:12em; padding:10px; background-color:#fbfaf6; border:1px solid #bbb6a5; }
2909
+ .checkout-agreements .agree { margin:0; padding:10px 0 10px 11px; }
2910
+ .checkout-agreements .agree input.checkbox { margin-right:6px; }
2911
+ .checkout-agreements .agree label { font-weight:bold; color:#666; }
2912
+
2913
+ .opc .checkout-agreements { border:1px solid #d9dde3; border-width:0 1px; padding:5px 30px; }
2914
+ .opc .checkout-agreements li { margin:20px 0 0; }
2915
+ .opc .checkout-agreements .agreement-content { background-color:#fff; border-color:#e4e4e4; padding:5px; }
2916
+ .opc .checkout-agreements .agree { padding-left:6px; }
2917
+
2918
+ /* Centinel */
2919
+ .centinel {}
2920
+
2921
+ .opc .centinel { border:1px solid #bbb6a5; border-width:0 1px 1px; padding:10px 30px; }
2922
+
2923
+ /* Generic Info Set */
2924
+ .info-set { background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; border:1px solid #bbb6a5; margin:0 0 25px; padding:20px; }
2925
+ .info-set h2 { font-size:13px; font-weight:bold; margin:0 0 10px; }
2926
+ .info-set h3,
2927
+ .info-set h4 { font-size:13px; font-weight:bold; color:#E26703; }
2928
+ .info-set h2 a,
2929
+ .info-set h3 a,
2930
+ .info-set h4 a { font-weight:normal; }
2931
+ .info-set h2.legend { margin:-20px -20px 15px; padding:5px 10px; background:#f9f3e3; border-bottom:1px solid #bbafa0; position:relative; }
2932
+ .info-set h3.legend { margin:0 0 10px; color:#0a263c; }
2933
+ .info-set .divider { margin:0 -20px; padding:25px 0; position:relative; }
2934
+ .info-set .box { margin:0 0 15px; }
2935
+ .info-set .box h2 { color:#e26703; }
2936
+ .info-set .data-table .product-name { font-size:1em !important; font-weight:bold !important; color:#1e7ec8 !important; }
2937
+ .info-set .data-table .product-name a { font-weight:bold !important; }
2938
+ .info-set .data-table .item-options { margin:5px 0 0; }
2939
+ /********** Common Checkout Styles > */
2940
+
2941
+ /* One Page Checkout */
2942
+ .block-progress { border:0; margin:0; }
2943
+ .block-progress .block-title { background:none; border:0; padding:0; margin:0 0 5px; }
2944
+ .block-progress .block-title strong { font-size:13px; color:#0a263c; }
2945
+ .block-progress .block-content { background:none; }
2946
+ .block-progress dt { font-size:13px; font-weight:bold; line-height:1.35; background:#eee; border:1px solid #a3aeb3; margin:0 0 6px; padding:2px 8px; color:#999; }
2947
+ .block-progress dd { background:#eee; border:1px solid #a3aeb3; border-top:0; padding:8px 13px; margin:0 0 6px; }
2948
+ .block-progress dt.complete { margin:0; background:#d0dce1; color:#5e8ab4; }
2949
+ .block-progress dd.complete {}
2950
+ .block-progress p { margin:0; }
2951
+
2952
+ .opc .buttons-set { margin-top:0; padding-top:2em; }
2953
+ .opc .buttons-set p.required { margin:0; padding:0 0 10px; }
2954
+ .opc .buttons-set .back-link small { display:none; }
2955
+ .opc .buttons-set .back-link a { background:url(../images/i_arrow-top.gif) 0 50% no-repeat; padding-left:16px; }
2956
+ .opc .buttons-set.disabled button.button { display:none; }
2957
+ .opc .buttons-set .please-wait { height:21px; line-height:21px; }
2958
+ .opc .ul { list-style:disc outside; padding-left:18px; }
2959
+
2960
+ .opc { position:relative; }
2961
+ .opc li.section {}
2962
+
2963
+ .opc .step-title { border-width:0 1px; border-style:solid; border-color:#fff #d9dde3 #d9dde3; background:#eee url(../images/bkg_opc-title-off.gif) 0 100% repeat-x; padding:4px 8px 6px; text-align:right; }
2964
+ .opc .step-title .number { float:left; background:#fff; border:1px solid #fff; padding:0 4px; margin:0 5px 0 0; font:bold 11px/14px arial, helvetica, sans-serif; color:#999; }
2965
+ .opc .step-title h2 { float:left; margin:0; font:bold 13px/16px Arial, Helvetica, sans-serif; color:#999; }
2966
+ .opc .step-title a { display:none; float:right; font-size:11px; line-height:16px; }
2967
+
2968
+ .opc .allow .step-title { background:#d0dce1; border:1px solid #a3aeb3; border-bottom:0; color:#a4b3b9; cursor:pointer; }
2969
+ .opc .allow .step-title .number { background:#dbe6eb; border-color:#dbe6eb; color:#a4b3b9; }
2970
+ .opc .allow .step-title h2 { color:#a4b3b9; }
2971
+ /*.opc .allow .step-title a { display:block; }*/
2972
+
2973
+ .opc .active .step-title { background:#f9f3e3; border:1px solid #bbafa0; padding-bottom:5px; color:#f18200; cursor:default; }
2974
+ .opc .active .step-title .number { background:#f18200; border-color:#f19900; color:#fff; }
2975
+ .opc .active .step-title h2 { color:#f18200; }
2976
+ /*.opc .active .step-title a { display:none; }*/
2977
+
2978
+ .opc .step { border:1px solid #bbafa0; border-top:0; background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; padding:15px 30px; position:relative; }
2979
+ .opc .step .tool-tip { right:30px; }
2980
+
2981
+ #opc-login .buttons-set { border-top:0; }
2982
+ #opc-login h3 { font-size:13px; border-bottom:1px solid #e4e4e4; padding-bottom:2px; text-transform:uppercase; }
2983
+ #opc-login h4 { font-size:1em; font-weight:bold; margin:0; color:#2f2f2f; }
2984
+
2985
+ #opc-shipping_method .buttons-set { border-top:0; }
2986
+ .opc .gift-messages-form { margin:0 -30px; background:#f6f1eb; border:1px solid #e9e4de; border-width:1px 0; padding:22px 24px 22px 30px; }
2987
+ .opc .gift-messages-form .inner-box { padding:5px; height:260px; overflow:auto; }
2988
+
2989
+ #opc-review .step { border:0; padding:0; }
2990
+ #opc-review .product-name { font-weight:bold; color:#0a263c; }
2991
+ #opc-review .item-options { margin:5px 0 0; }
2992
+ #opc-review .buttons-set { padding:20px 30px; border:1px solid #d9dde3; border-width:0 1px 1px; }
2993
+ #opc-review .buttons-set p { margin:0; line-height:40px; }
2994
+ #opc-review .buttons-set .please-wait { height:40px; line-height:40px; }
2995
+
2996
+ /* Multiple Addresses Checkout */
2997
+ .checkout-progress { padding:0 90px; margin:0 0 20px; }
2998
+ .checkout-progress li { float:left; width:19%; margin:0 3px 0 0; border-top:10px solid #999; padding:2px 0 0; font-weight:bold; text-align:center; color:#abb5ba; }
2999
+ .checkout-progress li.active { border-top-color:#e96200; color:#e96200; }
3000
+
3001
+ .multiple-checkout h2 { font-size:13px; font-weight:bold; margin:0 0 10px; }
3002
+ .multiple-checkout h3,
3003
+ .multiple-checkout h4 { font-size:13px; font-weight:bold; color:#E26703; }
3004
+ .multiple-checkout h2 a,
3005
+ .multiple-checkout h3 a,
3006
+ .multiple-checkout h4 a { font-weight:normal; }
3007
+ .multiple-checkout .data-table .product-name { font-size:1em !important; font-weight:bold !important; color:#1e7ec8 !important; }
3008
+ .multiple-checkout .data-table .product-name a { font-weight:bold !important; }
3009
+ .multiple-checkout .data-table .item-options { margin:5px 0 0; }
3010
+
3011
+ .multiple-checkout .gift-messages { margin:15px 0 0; }
3012
+
3013
+ .multiple-checkout .tool-tip { top:50%; margin-top:-120px; right:20px; }
3014
+
3015
+ .multiple-checkout .col2-set,
3016
+ .multiple-checkout .col3-set { background:#fbfaf6 url(../images/bkg_checkout.gif) 0 0 repeat-x; border:1px solid #bbb6a5; margin:0 0 25px; padding:20px; }
3017
+ .multiple-checkout .col2-set h2.legend { margin:-20px -20px 15px; padding:5px 10px; background:#f9f3e3; border-bottom:1px solid #bbafa0; position:relative; }
3018
+ .multiple-checkout .col2-set h3.legend { margin:0 0 10px; color:#0a263c; }
3019
+ .multiple-checkout .col2-set .divider { margin:0 -20px; padding:25px 0; position:relative; }
3020
+ .multiple-checkout .box { margin:0 0 15px; }
3021
+ .multiple-checkout .box h2 { color:#e26703; }
3022
+
3023
+ .multiple-checkout .place-order .please-wait { float:right; padding:27px 7px 0 0; }
3024
+ .multiple-checkout .place-order .grand-total { float:right; height:71px; font-size:1.5em; padding:0 0 0 21px; background:url(../images/bkg_grand-total.gif) 0 0 no-repeat; overflow:hidden; }
3025
+ .multiple-checkout .place-order .grand-total .inner { float:left; height:57px; padding:14px 21px 0 0; background:url(../images/bkg_grand-total.gif) 100% 0 no-repeat; }
3026
+ .multiple-checkout .place-order .grand-total .inner div { display:inline; }
3027
+ .multiple-checkout .place-order .grand-total big { display:inline; margin-right:12px; }
3028
+ .multiple-checkout .place-order .grand-total .price { color:#E26703; }
3029
+ .multiple-checkout .place-order .grand-total button.button span { font-size:16px; }
3030
+ .multiple-checkout .place-order .grand-total button.button span span { padding:0 45px 0 36px; }
3031
+
3032
+ /* Step 1 */
3033
+ .multiple-checkout .title-buttons button.button span { border-color:#406a83; background:#618499; }
3034
+ #multiship-addresses-table td { padding:10px; }
3035
+ #multiship-addresses-table tfoot td { padding:5px 10px; }
3036
+ #multiship-addresses-table tfoot button.button span { border-color:#406a83; background:#618499; }
3037
+
3038
+ /* Step 2 */
3039
+ .multiple-checkout .gift-messages-form .item .details .form-list { width:100%; overflow:hidden; }
3040
+ .multiple-checkout .gift-messages-form .item .details .form-list li { margin-right:-15px; }
3041
+ .multiple-checkout .gift-messages-form .item .details .form-list .field { width:230px; }
3042
+ .multiple-checkout .gift-messages-form .item .details .form-list .input-box { width:215px; }
3043
+ .multiple-checkout .gift-messages-form .item .details .form-list input.input-text { width:209px; }
3044
+ .multiple-checkout .gift-messages-form .item .details .form-list li.wide .input-box { width:445px; }
3045
+ .multiple-checkout .gift-messages-form .item .details .form-list li.wide textarea { width:439px; }
3046
+ .checkout-multishipping-shipping .box-sp-methods { border:1px solid #d9d2be; background:#f9f3e3; padding:13px; position:relative; }
3047
+ .checkout-multishipping-shipping .box-sp-methods .pointer { position:absolute; top:-20px; right:-40px; width:178px; height:41px; background:url(../images/bkg_sp-methods.gif) 0 0 no-repeat; overflow:hidden; }
3048
+
3049
+ /* Step 3 */
3050
+ .checkout-multishipping-billing .multiple-checkout { position:relative; }
3051
+ /* ======================================================================================= */
3052
+
3053
+
3054
+ /* Account Login/Create Pages ============================================================ */
3055
+ .account-login {margin-top:10px; margin-right:10px; }
3056
+ .account-login .content { min-height:240px; padding:14px 21px; background:#faf7ee url(../images/bkg_login-box.gif) 0 0 repeat-x; border:1px solid #bbb6a5; border-bottom:0; }
3057
+ .account-login .content h2 { font-weight:bold; font-size:13px; margin:0 0 14px; padding:0 0 5px 23px; border-bottom:1px solid #ddd; background-position:0 1px; background-repeat:no-repeat; text-transform:uppercase; color:#e76200; }
3058
+ .account-login .new-users h2 { background-image:url(../images/i_page1.gif)}
3059
+ .account-login .registered-users h2 { background-image:url(../images/i_page2.gif); }
3060
+ .account-login .buttons-set { border:1px solid #bbb6a5; border-top:0; margin:0; padding:8px 13px; background:#dee5e8 url(../images/bkg_buttons-set1.gif) 0 0 repeat-x; }
3061
+ .account-create { margin:auto auto; padding-top:20px;}
3062
+ .shift{margin-left:10px; margin-top:10px;max-width: 685px;}
3063
+ /* Account Login/Create Pages ============================================================ */
3064
+
3065
+
3066
+ /* My Account ============================================================================= */
3067
+ .my-account .title-buttons .link-rss { float:none; margin:0; }
3068
+
3069
+ /********** < Dashboard */
3070
+ .dashboard .welcome-msg { margin:0 8em 1.5em 0; }
3071
+ .dashboard .welcome-msg p { margin:0; }
3072
+ .dashboard .col2-set { margin:0 0 15px; }
3073
+
3074
+ /* General Box */
3075
+ .box-account { background:#fff url(../images/bkg_account_box.gif) 0 0 repeat-x; border:1px solid #ccc; border-color:#ccc #999 #999 #ccc; padding:15px; margin: 0 0 20px; }
3076
+ .box-account .box-head { border-bottom:1px solid #d9dde3; margin:0 0 10px; text-align:right; }
3077
+ .box-account .box-head h2 { float:left; margin:0; font-size:13px; font-weight:bold; text-transform:uppercase; background-position:0 0; background-repeat:no-repeat; padding-left:21px; color:#e65505; }
3078
+
3079
+ .dashboard .box .box-title { background:url(../images/bkg_divider1.gif) 0 100% repeat-x; padding:0 0 2px; margin:0 0 8px; text-align:right; }
3080
+ .dashboard .box .box-title h3,
3081
+ .dashboard .box .box-title h4 { float:left; font-size:13px; font-weight:bold; margin:0; }
3082
+
3083
+ /* Block: Recent Orders */
3084
+ .dashboard .box-recent .box-head h2 { background-image:url(../images/i_folder-table.gif); }
3085
+
3086
+ /* Block: Account Information */
3087
+ .dashboard .box-info .box-head h2 { background-image:url(../images/i_ma-info.gif); }
3088
+ .dashboard .box-info h4 { font-size:11px; font-weight:bold; text-transform:uppercase; }
3089
+
3090
+ /* Block: Reviews */
3091
+ .dashboard .box-reviews .box-head h2 { background-image:url(../images/i_ma-reviews.gif); }
3092
+ .dashboard .box-reviews .number { float:left; font-size:10px; font-weight:bold; line-height:1; color:#fff; margin:3px -20px 0 0; padding:2px 3px; background:#0a263c; }
3093
+ .dashboard .box-reviews .details { margin-left:20px; }
3094
+ .dashboard .box-reviews li.item { margin:0 0 7px; }
3095
+ .dashboard .box-reviews li.item.last { margin:0; }
3096
+ .dashboard .box-reviews .ratings { margin:7px 0 0; }
3097
+
3098
+ /* Block: Tags */
3099
+ .dashboard .box-tags .box-head h2 { background-image:url(../images/i_ma-tags.gif); }
3100
+ .dashboard .box-tags .number { float:left; font-size:10px; font-weight:bold; line-height:1; color:#fff; margin:3px -20px 0 0; padding:2px 3px; background:#0a263c; }
3101
+ .dashboard .box-tags .details { margin-left:20px; }
3102
+ .dashboard .box-tags li.item { margin:0 0 7px; }
3103
+ .dashboard .box-tags li.item.last { margin:0; }
3104
+ .dashboard .box-tags .tags strong,
3105
+ .dashboard .box-tags .tags ul,
3106
+ .dashboard .box-tags .tags ul li { display:inline; }
3107
+ /********** Dashboard > */
3108
+
3109
+ /* Address Book */
3110
+ .addresses-list h2 { font-weight:bold; font-size:13px; color:#e26703; text-transform:uppercase; }
3111
+ .addresses-list h3 { font-weight:bold; font-size:13px; }
3112
+ .addresses-list address { margin:0 0 3px; }
3113
+ .addresses-list p { margin:0; }
3114
+ .addresses-list a { font-weight:bold; }
3115
+ .addresses-list .link-remove { color:#646464; }
3116
+ .addresses-list .separator { margin:0 3px; }
3117
+ .addresses-list li.item { background:#fff url(../images/bkg_account_box.gif) 0 0 repeat-x; border:1px solid #ccc; padding:10px 13px; margin:0 0 10px; }
3118
+ .addresses-list li.empty { background:none; border:0; padding:0; }
3119
+ .addresses-list li.empty p { font-weight:bold; }
3120
+ .addresses-list .addresses-additional li.item { background:none; border:0; padding:0; }
3121
+
3122
+ /* Order View */
3123
+ .order-info { background:#dee5e8; border:1px solid #d0cbc1; padding:4px 8px; margin:0 0 8px; }
3124
+ .order-info dt,
3125
+ .order-info dd,
3126
+ .order-info ul,
3127
+ .order-info li { display:inline; }
3128
+ .order-info .current { font-weight:bold; }
3129
+ .order-info li { margin:0 3px; }
3130
+
3131
+ .order-date { margin:10px 0; }
3132
+
3133
+ .order-info-box { background:#fff url(../images/bkg_block-title.gif) 0 0 repeat-x; border:1px solid #d0cbc1; padding:12px 15px; margin:0 0 15px; }
3134
+ .order-info-box h2 { font-weight:bold; font-size:13px; }
3135
+ .order-info-box .box-payment p { margin:0 0 5px; }
3136
+ .order-info-box .box-payment th { font-weight:bold; padding-right:7px; }
3137
+
3138
+ .order-items { width:100%; overflow-x:auto; }
3139
+ .order-items h2,
3140
+ .order-items h3 { font-weight:bold; font-size:13px; }
3141
+ .order-items .product-name { font-size:1em !important; font-weight:bold !important; }
3142
+ .order-items .link-print { float:right; color:#1e7ec8; font-weight:normal; }
3143
+ .order-items p .link-print { float:none; }
3144
+
3145
+ .order-gift-message { margin:15px 0; }
3146
+ .gift-message dt strong { color:#666; }
3147
+ .gift-message dd { margin:5px 0 0; font-size:13px; }
3148
+
3149
+ .order-about { margin:15px 0; }
3150
+ .order-about dt { font-weight:bold; }
3151
+ .order-about dd { font-size:13px; margin:0 0 7px; }
3152
+
3153
+ .tracking-table { margin:0 0 15px; }
3154
+ .tracking-table th { font-weight:bold; white-space:nowrap; }
3155
+ .tracking-table th,
3156
+ .tracking-table td { padding:1px 5px 0 0; }
3157
+
3158
+ .tracking-table-popup { width:100%; }
3159
+ .tracking-table-popup th { font-weight:bold; white-space:nowrap; }
3160
+ .tracking-table-popup th,
3161
+ .tracking-table-popup td { padding:1px 8px; }
3162
+
3163
+ /* Order Print Pages */
3164
+ .page-print .print-head { margin:0 0 15px; }
3165
+ .page-print .print-head .logo { float:left; }
3166
+ .page-print .print-head address { float:left; margin-left:15px; }
3167
+ .page-print h1 { font-size:16px; font-weight:bold; }
3168
+ .page-print h2,
3169
+ .page-print h3 { font-size:13px; font-weight:bold; }
3170
+ .page-print h2.h2 { font-size:16px; font-weight:bold; }
3171
+ .page-print .order-date { background:url(../images/bkg_divider1.gif) 0 100% repeat-x; padding:0 0 10px; margin:0 0 10px; }
3172
+ .page-print .col2-set { margin:0 0 10px; }
3173
+ /* Price Rewrites */
3174
+ .page-print .gift-message-link { display:none; }
3175
+ .page-print .price-excl-tax,
3176
+ .page-print .price-incl-tax { display:block; white-space:nowrap; }
3177
+ .page-print .cart-price,
3178
+ .page-print .price-excl-tax .label,
3179
+ .page-print .price-incl-tax .label,
3180
+ .page-print .price-excl-tax .price,
3181
+ .page-print .price-incl-tax .price { display:inline; }
3182
+
3183
+ /* My Wishlist */
3184
+ .my-wishlist .data-table td { padding:10px; }
3185
+ .my-wishlist .product-image { display:block; width:113px; height:113px; margin:0 0 5px; }
3186
+ .my-wishlist textarea { display:block; width:97%; height:109px; }
3187
+ .my-wishlist .buttons-set { margin-top:2em; }
3188
+ .my-wishlist .buttons-set button.button { float:none; }
3189
+ .my-wishlist .buttons-set .btn-add span,
3190
+ .my-wishlist .buttons-set .btn-share span { border-color:#406a83; background:#618499; }
3191
+ #wishlist-table .add-to-links { white-space:nowrap; }
3192
+
3193
+ /* My Tags */
3194
+ .my-tag-edit { float:left; margin:0 0 10px; }
3195
+ .my-tag-edit .btn-remove { float:right; margin:5px 0 0 5px; }
3196
+ #my-tags-table { clear:both; }
3197
+ #my-tags-table td { padding:10px; }
3198
+ #my-tags-table .add-to-links { white-space:nowrap; }
3199
+
3200
+ /* My Reviews */
3201
+ #my-reviews-table td { padding:10px; }
3202
+
3203
+ .product-review .product-img-box { float:left; width:140px; }
3204
+ .product-review .product-img-box .product-image { display:block; width:125px; height:125px; }
3205
+ .product-review .product-img-box .label { font-size:11px; margin:0 0 3px; }
3206
+ .product-review .product-img-box .ratings .rating-box { float:none; display:block; margin:0 0 3px; }
3207
+ .product-review .product-details { margin-left:150px; }
3208
+ .product-review .product-name { font-size:16px; font-weight:bold; margin:0 0 10px; }
3209
+ .product-review h3 { font-size:12px; margin:0 0 3px; color:#2f2f2f; }
3210
+ .product-review .ratings-table { margin:0 0 10px; }
3211
+ .product-review dt { font-weight:bold; }
3212
+ .product-review dd { font-size:13px; margin:5px 0 0; }
3213
+ /* ======================================================================================= */
3214
+
3215
+
3216
+ /* Footer ================================================================================ */
3217
+ .footer { margin:0 auto; width:974px; padding:10px;text-align:right;background:#1A1818;border-top:17px solid #46E1E7;}
3218
+ .footer .store-switcher { display:inline; margin:0 5px 0 0; color:#fff; }
3219
+ .footer .store-switcher label { font-weight:bold; vertical-align:middle; }
3220
+ .footer .store-switcher select { padding:0; vertical-align:middle; }
3221
+ .footer a { color:#DBDADA; text-decoration:none; }
3222
+ .footer a:hover { text-decoration:underline; }
3223
+ .footer .bugs { margin:13px 0 0; color:#ecf3f6; }
3224
+ .footer .bugs a { color:#ecf3f6; text-decoration:underline; }
3225
+ .footer .bugs a:hover { text-decoration:none; }
3226
+ .footer address { margin:0 0 20px; color:#ecf3f6; }
3227
+ .footer address a { color:#ecf3f6; text-decoration:underline; }
3228
+ .footer address a:hover { text-decoration:none; }
3229
+ .footer ul { display:inline; }
3230
+ .footer ul.links { display:block; }
3231
+ .footer li { display:inline; background:url(../images/bkg_pipe2.gif) 100% 60% no-repeat; padding:0 5px 0 1px; }
3232
+ .footer li.last { background:none !important; padding-right:0 !important; }
3233
+ .footer-container .bottom-container { margin:0 0 5px; }
3234
+ /* ======================================================================================= */
3235
+
3236
+ /* Sample Data============================================================================ */
3237
+ .home-callout { margin-bottom:12px; }
3238
+ .home-callout img { display:block }
3239
+ .home-spot { float:left; width:470px; margin-left:20px; }
3240
+ .best-selling h3 { margin:12px 0 6px 0; color:#e25203; font-size:1.2em; }
3241
+ .best-selling table { border-top:1px solid #ccc; }
3242
+ .best-selling tr.odd { background:#eee url(../images/best_selling_tr_odd_bg.gif) 0 100% repeat-x; }
3243
+ .best-selling tr.even { background:#fff url(../images/best_selling_tr_even_bg.gif) 0 100% repeat-x; }
3244
+ .best-selling td { width:50%; border-bottom:1px solid #ccc; padding:8px 10px 8px 8px; font-size:11px; }
3245
+ .best-selling .product-img { float:left; border:2px solid #dcdcdc; }
3246
+ .best-selling .product-description { margin-left:107px; line-height:1.3em; }
3247
+ .best-selling a.product-name,
3248
+ .home-spot .best-selling a.product-name:hover { color:#203548; }
3249
+ /* ======================================================================================= */
3250
+
3251
+
3252
+ /* Clears ================================================================================ */
3253
+ .clearer:after,
3254
+ .header-container:after,
3255
+ .header-container .top-container:after,
3256
+ .header:after,
3257
+ .header .quick-access:after,
3258
+ #nav:after,
3259
+ .main:after,
3260
+ .footer:after,
3261
+ .footer-container .bottom-container:after,
3262
+ .col-main:after,
3263
+ .col2-set:after,
3264
+ .col3-set:after,
3265
+ .col4-set:after,
3266
+ .search-autocomplete li:after,
3267
+ .block .block-content:after,
3268
+ .block .actions:after,
3269
+ .block li.item:after,
3270
+ .block-poll li:after,
3271
+ .block-layered-nav .currently li:after,
3272
+ .page-title:after,
3273
+ .products-grid:after,
3274
+ .products-list li.item:after,
3275
+ .box-account .box-head:after,
3276
+ .dashboard .box .box-title:after,
3277
+ .box-reviews li.item:after,
3278
+ .box-tags li.item:after,
3279
+ .pager:after,
3280
+ .sorter:after,
3281
+ .ratings:after,
3282
+ .add-to-box:after,
3283
+ .add-to-cart:after,
3284
+ .product-essential:after,
3285
+ .product-collateral:after,
3286
+ .product-view .product-img-box .more-views ul:after,
3287
+ .product-view .box-tags .form-add:after,
3288
+ .product-options .options-list li:after,
3289
+ .product-options-bottom:after,
3290
+ .product-review:after,
3291
+ .cart:after,
3292
+ .cart-collaterals:after,
3293
+ .cart .crosssell li.item:after,
3294
+ .opc .step-title:after,
3295
+ .checkout-progress:after,
3296
+ .multiple-checkout .place-order:after,
3297
+ .group-select li:after,
3298
+ .form-list li:after,
3299
+ .form-list .field:after,
3300
+ .buttons-set:after,
3301
+ .page-print .print-head:after,
3302
+ .advanced-search-summary:after,
3303
+ .gift-messages-form .item:after,
3304
+ .send-friend .form-list li p:after { display:block; content:"."; clear:both; font-size:0; line-height:0; height:0; overflow:hidden; }
3305
+ /* ======================================================================================= background:#EEEEEE;*/
3306
+ body {
3307
+ margin:0px;
3308
+ background: #f6f6f4 url(../images/bkg-linen.jpg) center 0 repeat-y
3309
+ }
3310
+
3311
+ .price-text{style="font-size:10px; color:black; weight:bold;}
3312
+ img {
3313
+ /*behavior: url("pngbehavior.htc");*/
3314
+ }
3315
+
3316
+ form {
3317
+ margin:0px;
3318
+ }
3319
+
3320
+ /*------------------ Back Grounds & Back Ground Images ---------------*/
3321
+
3322
+ .header_bg {
3323
+ background:url(../images/header_bg.jpg) repeat-x left top; height:86px;
3324
+
3325
+ }
3326
+
3327
+ .top_icons {
3328
+ padding:0px 6px 0px 6px;
3329
+ }
3330
+
3331
+ .top_dvd {
3332
+ margin-bottom:-6px; margin-left:3px; margin-right:3px;
3333
+ }
3334
+
3335
+ .top_dvd2 {
3336
+ margin-left:5px; margin-right:5px; color:#181D1B;
3337
+ }
3338
+
3339
+ .view_detail_button {
3340
+ margin-top:4px; margin-bottom:4px;
3341
+ }
3342
+
3343
+ .view_detail_button_products {
3344
+ margin-top:1px; margin-top:2px;
3345
+ }
3346
+
3347
+ .featured_product_dvd {
3348
+ padding-left:5px; padding-right:5px;
3349
+ }
3350
+
3351
+
3352
+ /* -------------------- LINKS ------------------------- */
3353
+
3354
+ .footer_links {
3355
+ font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; text-decoration:none;
3356
+ }
3357
+
3358
+ .footer_links:hover {
3359
+ color:#fff; text-decoration:none;
3360
+ }
3361
+
3362
+ .Alinks {
3363
+ font-family:verdana; font-size:11px; font-weight:normal; color:#4B4747;; text-decoration:none;
3364
+ }
3365
+
3366
+ .Alinks:hover {
3367
+ color:#fff; text-decoration:underline;
3368
+ }
3369
+
3370
+ .Blinks {
3371
+ font-family:verdana; font-size:11px; font-weight:normal; color:#7B6C52; text-decoration:none;
3372
+ }
3373
+
3374
+ .Blinks:hover {
3375
+ color:#fff; text-decoration:none;
3376
+ }
3377
+
3378
+ .Clinks {
3379
+ font-family:verdana; font-size:12px; font-weight:bold; color:#FFF; text-decoration:none;
3380
+ }
3381
+
3382
+ .Clinks:hover {
3383
+ color:#F7971D; text-decoration:none;
3384
+ }
3385
+
3386
+ .Dlinks {
3387
+ text-decoration:none; padding:5px; text-transform:Capitalize; background:url(../images/download.gif) no-repeat scroll left center transparent;
3388
+ padding-left: 10px; height: 8px; font: 12px "lucida grande","Helvetica",Times,serif;
3389
+ }
3390
+ .imageHolder{
3391
+ background: url(../images/dropshadow.png) no-repeat scroll bottom;
3392
+ }
3393
+ .imageHolder td{
3394
+ height:233px;
3395
+ }
3396
+ #container{
3397
+ border:1px solid #CCC;
3398
+ margin-top:10px;
3399
+ width:100%;
3400
+ }
3401
+ .table-header{background:#CCC; padding:10px;}
3402
+
3403
+ .heading-top{
3404
+
3405
+ padding-top:20px;
3406
+ padding-bottom:5px;
3407
+ border-bottom:1px dotted #333;
3408
+ }
3409
+
3410
+ #Dlinks td{
3411
+
3412
+ }
3413
+ .Dlinks:hover {
3414
+ color:#293202; font-weight:bold; text-decoration:none;
3415
+ }
3416
+
3417
+ .Elinks {
3418
+ font-family:"Lucida grande", "Helvetica"; font-size:10px; font-weight:bold; color:#333; text-decoration:none;
3419
+ }
3420
+ .Mlinks {
3421
+ font-family:"verdana", "Helvetica"; font-size:10px; color:white; text-decoration:none;
3422
+ }
3423
+
3424
+ .Elinks:hover {
3425
+ color:#5B623B; text-decoration:none; border-bottom:#5B623B 1px dotted;
3426
+ }
3427
+
3428
+ .Flinks {
3429
+ font-family:Verdana; font-size:11px; font-weight:bold; color:#222323; text-decoration:none; padding-right:4px;
3430
+ }
3431
+
3432
+ .Flinks:hover {
3433
+ color:#5B623B; text-decoration:none;
3434
+ }
3435
+
3436
+ .Glinks {
3437
+ font-family:Verdana; font-size:11px; font-weight:bold; color:#393938; text-decoration:none; padding-right:3px; padding-left:3px;
3438
+ }
3439
+
3440
+ .Glinks:hover {
3441
+ color:#5B623B; text-decoration:underline;/* border-left:#393938 1px solid; border-right:#393938 1px solid;*/
3442
+ }
3443
+
3444
+ /* -------------------- HEADING ------------------------- */
3445
+
3446
+ .heading-1 {
3447
+ font-family:verdana; font-size:14px; font-weight:bold; color:#61080A;
3448
+ }
3449
+
3450
+ .heading-2 {
3451
+ font-family:Verdana; font-size:12px; font-weight:bold; color:#4F5439;
3452
+ }
3453
+
3454
+ .heading-3 {
3455
+ font-family:verdana; font-size:16px; font-weight:bold; color:#FFF;
3456
+ }
3457
+
3458
+ .heading-4 {
3459
+ font-family: "helvetica";
3460
+ font-size: 15px;font-weight:bold; color:#000;
3461
+ }
3462
+ .product-specs{font-family:Verdana;margin-bottom:10px;}
3463
+ .heading-5 {
3464
+ font-family:verdana; font-size:18px; font-weight:normal; color:#323030;
3465
+ }
3466
+ .heading-6{
3467
+ font-family:"Lucida grande","Helvetica"; font-size:14px; font-weight:normal; color:#323030;
3468
+ }
3469
+
3470
+ /* -------------------- NORMAL TEXTs ------------------------- */
3471
+
3472
+ .Text-1 {
3473
+ font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; padding-top:5px;
3474
+ }
3475
+
3476
+ .Text-2 {
3477
+ font:12px Helvetica, Arial, sans-serif;line-height:13px; color:#333;
3478
+ }
3479
+
3480
+ .Text-3 {
3481
+ font-family:"lucida grande","helvetica"; font-size:10px; font-weight:normal; color:white;
3482
+ }
3483
+
3484
+ #image{
3485
+ border:1px solid #CCC;
3486
+ padding: 5px;
3487
+
3488
+ }
3489
+ /* -------------------- DVD ------------------------- */
3490
+
3491
+ .footer_dvd {
3492
+ font-family:verdana; font-size:10px; font-weight:normal; color:#B6B0B0; padding-left:4px; padding-right:4px;
3493
+ }
3494
+
3495
+ .top_links_dvd {
3496
+ font-family:verdana; font-size:11px; font-weight:normal; color:#C5C3C3; text-decoration:none; padding-left:3px; padding-right:3px;
3497
+ }
3498
+
3499
+ /* -------------------- TEXT FIELD ------------------------- */
3500
+
3501
+ .Text_field1 {
3502
+ background:url(../images/search_icon.jpg) no-repeat #FFF left; border:#7E8367 1px solid; font-family:verdana; font-size:13px; color:#666633; padding:3px; width:130px; padding-left:25px;
3503
+ }
3504
+
3505
+ .Text_field2 {
3506
+ background:#FFF; border-top:#808569 1px solid; border-left:#808569 1px solid; border-bottom:#808569 1px solid; font-family:verdana; font-size:12px; color:#353631; padding:4px; width:158px;
3507
+ }
3508
+
3509
+ /* -------------------- BUTTONS ------------------------- */
3510
+
3511
+ .find_button {
3512
+ background:url(../images/find_button.jpg) no-repeat left top; width:37px; height:25px; border:0px; cursor:pointer; margin-top:-1px; margin-top:0px;
3513
+ }
3514
+
3515
+ .sign_up_button {
3516
+ background:url(../images/sign_up_button.jpg) no-repeat left top; width:28px; height:25px; border:0px; cursor:pointer; margin-top:0px; margin-left:1px;
3517
+ }
3518
+
3519
+ .add_to_cart {
3520
+ float:right;
3521
+ }
3522
+
3523
+ .view_detail {
3524
+ float:left;
3525
+ }
3526
+
3527
+
3528
+ /* -------------------- MENUS USED (CSS) ------------------------- */
3529
+
3530
+ #nav1 {
3531
+ margin: 0px 0px 0px;
3532
+ padding: 0px;
3533
+ font-family:Verdana;
3534
+ font-weight:normal;
3535
+ font-size: 10px;
3536
+ margin-left:10px;
3537
+ }
3538
+
3539
+ #nav1 ul {
3540
+ float: left;
3541
+ margin: 0px;
3542
+ padding: 0px;
3543
+ font-weight: normal;
3544
+ }
3545
+
3546
+ #nav1 li {
3547
+ display: inline;
3548
+ list-style: none;
3549
+ margin: 0px;
3550
+ padding: 0px 0px;
3551
+
3552
+ }
3553
+
3554
+ #nav1 li a {
3555
+ color: #F7F7F6;
3556
+ display: block;
3557
+ float: left;
3558
+ margin: 2px 6px 2px 6px;
3559
+ padding: 5px 14px 5px 0px;
3560
+ text-decoration: none;
3561
+ font-size: 10px;
3562
+ /*border-right:#FFF 1px solid;*/
3563
+ }
3564
+
3565
+ #nav1 a:hover {
3566
+ /*background:#D1BC9D;*/
3567
+ color: #D1BC9D;
3568
+ text-decoration: none;
3569
+ }
3570
+
3571
+ #nav1 .selected {
3572
+ /*background:#D1BC9D;*/
3573
+ color: #D1BC9D;
3574
+ text-decoration: none;
3575
+ }
3576
+
3577
+
3578
+
3579
+ /*----------------- LEFT NAV ------------------*/
3580
+ .sidebarContainer{
3581
+ padding: 5px;
3582
+ border: 1px solid #d3d3d3;
3583
+ width: 100%;
3584
+ margin-top:5px;
3585
+ margin-bottom:10px;
3586
+ }
3587
+ .boxy{
3588
+ border:1px solid #d3d3d3;
3589
+ margin-bottom:10px;
3590
+ clear:both;
3591
+ }
3592
+ .tabMenu{
3593
+ background:url(../images/tab2.png) no-repeat;
3594
+ width:500px;
3595
+ height:50px;
3596
+ }
3597
+ .bannerSidebar{
3598
+ float:right; max-width:232px; max-height:320px;
3599
+ border:1px solid #d3d3d3;
3600
+ padding:5px;
3601
+ }
3602
+ .item:hover{
3603
+ border:1px solid #d3d3d3;
3604
+ }
3605
+
3606
+
3607
+ .glossymenu{
3608
+ max-width: 140px;
3609
+ clear:both;
3610
+ margin: 0px 0;
3611
+ padding: 0;
3612
+ /*width of menu*/
3613
+ /*border: 1px solid #9A9A9A;*/
3614
+ border-bottom-width: 0;
3615
+ margin-bottom:0px;
3616
+ margin-bottom:0px;
3617
+ font-style:normal;
3618
+ }
3619
+
3620
+ .glossymenu a.menuitem{
3621
+ background:url(../images/download.gif) no-repeat left 11px; width:7px; height:8px;
3622
+ font:12px "Lucida Grande","Helvetica",Times,serif;
3623
+ color:#293202;
3624
+ display: block;
3625
+ position: relative; /*To help in the anchoring of the ".statusicon" icon image*/
3626
+ width: auto;
3627
+ padding: 6px 0;
3628
+ padding-left: 12px;
3629
+ text-decoration: none;
3630
+
3631
+ }
3632
+
3633
+
3634
+ .glossymenu a.menuitem:visited, .glossymenu .menuitem:active{
3635
+ color:#293202;
3636
+ font-style:normal;
3637
+ }
3638
+
3639
+ .glossymenu a.menuitem .statusicon{ /*CSS for icon image that gets dynamically added to headers*/
3640
+ position: absolute;
3641
+ top: 5px;
3642
+ right: 5px;
3643
+ border: none;
3644
+ }
3645
+
3646
+ .glossymenu a.menuitem:hover{
3647
+ font-weight:normal;
3648
+ font-style:normal;
3649
+
3650
+ }
3651
+
3652
+ .glossymenu a.menuitem.selected{
3653
+ font-weight:normal;
3654
+ font-style:verdana;
3655
+
3656
+ }
3657
+
3658
+ .glossymenu div.submenu{ /*DIV that contains each sub menu*/
3659
+ background: none;
3660
+ }
3661
+
3662
+ .glossymenu div.submenu ul{ /*UL of each sub menu*/
3663
+ list-style-type: none;
3664
+ margin-top:8px;
3665
+ margin-top:0px;
3666
+ padding: 0;
3667
+ font:13px "Times New Roman",Times,serif;
3668
+ }
3669
+ div.submenu{
3670
+ margin-top:10px;
3671
+ margin-bottom:20px;
3672
+ }
3673
+ .glossymenu div.submenu ul li{
3674
+ border-bottom: 1px dotted #333;
3675
+ }
3676
+ .glossymenu > a{
3677
+ font:13px "Lucida grande","Helvetica",Times,serif;
3678
+ }
3679
+ .glossymenu div.submenu ul li a{
3680
+ font:13px "Lucida grande","Helvetica",Times,serif;
3681
+ display: block;
3682
+ color:#293202;
3683
+ text-decoration: none;
3684
+ padding: 2px 0;
3685
+ padding-left: 18px;
3686
+
3687
+ padding-left: 15px;
3688
+ }
3689
+
3690
+ .glossymenu div.submenu ul li a:hover{
3691
+ /*background:#F0F0F0;*/
3692
+ font-weight:bold;
3693
+ font-style:verdana;
3694
+ }
3695
+
3696
+ .menu_dvd {
3697
+ margin-left:15px;
3698
+ }
3699
+
3700
+ .tariq {height:97px;}
3701
+
3702
+ .tariq { height /*\**/:40px\9; }
3703
+
3704
+ *:first-child+html .tariq {height:97px !important;}
3705
+ .imgpaypal{ padding-top:9px;}
3706
+
3707
+ .treeview ul{ /*CSS for Simple Tree Menu*/
3708
+ margin: 0;
3709
+ padding: 0;
3710
+ }
3711
+
3712
+ .treeview li{ /*Style for LI elements in general (excludes an LI that contains sub lists)*/
3713
+ background: transparent url(left_nav_bullet.jpg) no-repeat left center;
3714
+ list-style-type: none;
3715
+ padding-left: 22px;
3716
+ margin-bottom: 3px;
3717
+ font-family: Verdana, Arial, Helvetica, sans-serif;
3718
+ }
3719
+
3720
+ .treeview li.submenu{ /* Style for LI that contains sub lists (other ULs). */
3721
+ background: transparent url(closed.gif) no-repeat left 1px;
3722
+ cursor: hand !important;
3723
+ cursor: pointer !important;
3724
+ padding-top:13px
3725
+ }
3726
+
3727
+
3728
+ .treeview li.submenu ul{ /*Style for ULs that are children of LIs (submenu) */
3729
+ display: none; /*Hide them by default. Don't delete. */
3730
+ font-family: Verdana, Arial, Helvetica, sans-serif;
3731
+ }
3732
+
3733
+ .treeview .submenu ul li{ /*Style for LIs of ULs that are children of LIs (submenu) */
3734
+ cursor: default;
3735
+ padding: 5px 0 0 8px;
3736
+ font-family: Verdana, Arial, Helvetica, sans-serif;
3737
+ }
3738
+
3739
+ div.sdmenu {
3740
+ width: 195px;
3741
+ font-family: Arial;
3742
+ font-size: 12px;
3743
+ /*padding-bottom: 10px;*/
3744
+ /*background: url(../image/bottom.gif) no-repeat right bottom;*/
3745
+ /*color: #fff;*/
3746
+ margin-top:5px; margin-left:15px;
3747
+ }
3748
+
3749
+ * html div.sdmenu {
3750
+ width: 181px;
3751
+ font-family: Arial;
3752
+ font-size: 12px;
3753
+ /*padding-bottom: 10px;*/
3754
+ /*background: url(../image/bottom.gif) no-repeat right bottom;*/
3755
+ /*color: #fff;*/
3756
+ margin-top:5px; margin-left:15px;
3757
+ }
3758
+
3759
+ div.sdmenu div {
3760
+ border-bottom:#CCC 1px solid;
3761
+ /*background: url(../image/title.gif) repeat-x;*/
3762
+ overflow: hidden;
3763
+ /*border-bottom:#363735 1px dotted;*/
3764
+ }
3765
+ div.sdmenu div:first-child {
3766
+ /*background: url(../image/toptitle.gif) no-repeat;*/
3767
+ }
3768
+ div.sdmenu div.collapsed {
3769
+ height: 25px;
3770
+ }
3771
+ div.sdmenu div span {
3772
+ display: block;
3773
+ padding: 5px 25px;
3774
+ font-weight: bold;
3775
+ color: #615F5F;
3776
+ background: url(../images/clos.jpg) no-repeat 10px center;
3777
+ cursor: pointer;
3778
+ }
3779
+ div.sdmenu div span:hover {
3780
+ display: block;
3781
+ padding: 5px 25px;
3782
+ font-weight: bold;
3783
+ color: #036CCD;
3784
+ background: url(../images/clos.jpg) no-repeat 10px center;
3785
+ cursor: pointer;
3786
+
3787
+ }
3788
+ div.sdmenu div span.selected {
3789
+ display: block;
3790
+ padding: 5px 25px;
3791
+ font-weight: bold;
3792
+ color: #363735;
3793
+ background: url(../image/clos.jpg) no-repeat 10px center;
3794
+ cursor: default;
3795
+
3796
+ }
3797
+
3798
+ div.sdmenu div.collapsed span {
3799
+ background-image: url(../images/open.jpg);
3800
+ }
3801
+ div.sdmenu div a {
3802
+ padding: 5px 10px;
3803
+ /*background: #F1F3F0;*/
3804
+ display: block;
3805
+ width:200px;
3806
+ color: #363735; font-size:11px;text-decoration: none; margin-left:15px; float:left;
3807
+ }
3808
+ *html div.sdmenu div a {
3809
+ padding: 5px 10px;
3810
+ background: #fff;
3811
+ display: block;
3812
+ width:157px;
3813
+ color: #363735; font-size:11px;text-decoration: none; margin-left:0px; float:left;
3814
+ }
3815
+
3816
+
3817
+ /**
3818
+ * Magento
3819
+ *
3820
+ * NOTICE OF LICENSE
3821
+ *
3822
+ * This source file is subject to the Academic Free License (AFL 3.0)
3823
+ * that is bundled with this package in the file LICENSE_AFL.txt.
3824
+ * It is also available through the world-wide-web at this URL:
3825
+ * http://opensource.org/licenses/afl-3.0.php
3826
+ * If you did not receive a copy of the license and are unable to
3827
+ * obtain it through the world-wide-web, please send an email
3828
+ * to license@magentocommerce.com so we can send you a copy immediately.
3829
+ *
3830
+ * DISCLAIMER
3831
+ *
3832
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
3833
+ * versions in the future. If you wish to customize Magento for your
3834
+ * needs please refer to http://www.magentocommerce.com for more information.
3835
+ *
3836
+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
3837
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
3838
+ */
3839
+
3840
+
3841
+
3842
+
3843
+ .ddsmoothmenu{
3844
+ font-family:Verdana;
3845
+ font-size:12px;
3846
+ font-weight:normal;
3847
+ width: 100%;
3848
+ }
3849
+
3850
+ .ddsmoothmenu ul{
3851
+ z-index:100;
3852
+ margin: 0px;
3853
+ padding: 0px;
3854
+ list-style-type: none;
3855
+ /*padding-left:4px;*/
3856
+ }
3857
+
3858
+ /*Top level list items*/
3859
+ .ddsmoothmenu ul li{
3860
+ position: relative;
3861
+ display: inline;
3862
+ float: left;
3863
+ }
3864
+
3865
+ /*Top level menu link items style*/
3866
+ .ddsmoothmenu ul li a{
3867
+ display: block; /*background of menu items (default state)*/
3868
+ color:#E6E9E8;
3869
+ padding: 12px 16px;
3870
+ text-decoration: none;
3871
+ }
3872
+
3873
+ * html .ddsmoothmenu ul li a { /*IE6 hack to get sub menu links to behave correctly*/
3874
+ display: inline-block;
3875
+ }
3876
+
3877
+ .ddsmoothmenu ul li a:link, .ddsmoothmenu ul li a:visited{
3878
+ color: white;
3879
+ }
3880
+
3881
+ .ddsmoothmenu ul li a.selected { /*CSS class that's dynamically added to the currently active menu items' LI A element*/
3882
+ color: white;
3883
+ }
3884
+
3885
+ .ddsmoothmenu ul li a:hover{
3886
+ background:url(../images/menu_hover.jpg) repeat-x left top;
3887
+ color:#E6E9E8;
3888
+ }
3889
+
3890
+ /*1st sub level menu*/
3891
+ .ddsmoothmenu ul li ul{
3892
+ position: absolute;
3893
+ left: 0;
3894
+ display: none; /*collapse all sub menus to begin with*/
3895
+ visibility: hidden;
3896
+ }
3897
+
3898
+ /*Sub level menu list items (undo style from Top level List Items)*/
3899
+ .ddsmoothmenu ul li ul li{
3900
+ display: list-item;
3901
+ float: none;
3902
+ }
3903
+
3904
+ /*All subsequent sub menu levels vertical offset after 1st level sub menu */
3905
+ .ddsmoothmenu ul li ul li ul{
3906
+ top: 0;
3907
+ }
3908
+
3909
+ /* Sub level menu links style */
3910
+ .ddsmoothmenu ul li ul li a{
3911
+ font: normal 16px Verdana;
3912
+ width: 160px; /*width of sub menus*/
3913
+ padding: 5px;
3914
+ margin: 0;
3915
+ border-top-width: 0;
3916
+ border-bottom: 1px solid gray;
3917
+ }
3918
+
3919
+ /* Holly Hack for IE \*/
3920
+ * html .ddsmoothmenu{height: 1%;} /*Holly Hack for IE7 and below*/
3921
+
3922
+
3923
+ /* ######### CSS classes applied to down and right arrow images ######### */
3924
+
3925
+ .downarrowclass{
3926
+ position: absolute;
3927
+ top: 12px;
3928
+ right: 7px;
3929
+ }
3930
+
3931
+ .rightarrowclass{
3932
+ position: absolute;
3933
+ top: 6px;
3934
+ right: 5px;
3935
+ }
3936
+
3937
+ /* ######### CSS for shadow added to sub menus ######### */
3938
+
3939
+ .ddshadow{
3940
+ position: absolute;
3941
+ left: 0;
3942
+ top: 0;
3943
+ width: 0;.ddsmoothmenu{
3944
+ font: bold 12px Verdana,Arial,Helvetica,Tahoma;
3945
+ width: 100%;
3946
+ }
3947
+
3948
+ .ddsmoothmenu ul{
3949
+ z-index:100;
3950
+ margin: 0px;
3951
+ padding: 0px;
3952
+ padding-left:0px;
3953
+ list-style-type: none;
3954
+ font-weight:bold;
3955
+ border-top:0px;
3956
+ }
3957
+
3958
+ /*Top level list items*/
3959
+ .ddsmoothmenu ul li{
3960
+ position: relative;
3961
+ display: inline;
3962
+ float: left;
3963
+ font-family:Verdana,Arial,Helvetica,Tahoma;
3964
+ font-size:11px;
3965
+ color:#FFFFFF;
3966
+ }
3967
+
3968
+ /*Top level menu link items style*/
3969
+ .ddsmoothmenu ul li a{
3970
+ display: block;
3971
+ color: #FFFFFF;
3972
+ padding:12px 10px;
3973
+ text-decoration: none;
3974
+
3975
+ }
3976
+
3977
+ * html .ddsmoothmenu ul li a{ /*IE6 hack to get sub menu links to behave correctly*/
3978
+ display: inline-block;
3979
+ }
3980
+
3981
+ .ddsmoothmenu ul li a:link, .ddsmoothmenu ul li a:visited{
3982
+ color: #FFFFFF;
3983
+ }
3984
+
3985
+ .ddsmoothmenu ul li a.selected{ /*CSS class that's dynamically added to the currently active menu items' LI A element*/
3986
+ /*background: #8BB5E6; */
3987
+ color: #FFFFFF;
3988
+ vertical-align:middle;
3989
+ }
3990
+
3991
+ .ddsmoothmenu ul li a:hover{
3992
+ /*background: #D3DBE1; background of menu items during onmouseover (hover state)*/
3993
+ color: #FFFFFF;
3994
+ vertical-align:middle;
3995
+ }
3996
+
3997
+ /*1st sub level menu*/
3998
+ .ddsmoothmenu ul li ul{
3999
+ position: absolute;
4000
+ left: 0;
4001
+ background-color: #8BB5E6;
4002
+ display: none; /*collapse all sub menus to begin with*/
4003
+ visibility: hidden;
4004
+ }
4005
+
4006
+
4007
+ /*Sub level menu list items (undo style from Top level List Items)*/
4008
+ .ddsmoothmenu ul li ul li{
4009
+ display: list-item;
4010
+ float: none;
4011
+ }
4012
+
4013
+ /*All subsequent sub menu levels vertical offset after 1st level sub menu */
4014
+ .ddsmoothmenu ul li ul li ul{
4015
+ top: 0;
4016
+ }
4017
+
4018
+ /* Sub level menu links style */
4019
+ .ddsmoothmenu ul li ul li a{
4020
+ font-family:Verdana,Arial,Helvetica,Tahoma;
4021
+ font-size:12px;
4022
+ color:#FFFFFF;
4023
+ font-weight:normal;
4024
+ width: 180px; /*width of sub menus*/
4025
+ padding: 8px;
4026
+ margin: 0;
4027
+
4028
+ border-top-width: 0px;
4029
+ border-left:1px solid #868686;
4030
+ border-right:1px solid #868686;
4031
+ border-bottom:1px solid #868686;
4032
+
4033
+ }
4034
+
4035
+ .ddsmoothmenu ul li ul li a:active, .ddsmoothmenu ul li ul li a:visited{
4036
+ color:#FFF;
4037
+ }
4038
+
4039
+ .ddsmoothmenu ul li ul li a.selected{ /*CSS class that's dynamically added to the currently active menu items' LI A element*/
4040
+ color: #000000;
4041
+ background:#D3DBE1;
4042
+ vertical-align:middle;
4043
+ }
4044
+
4045
+ .ddsmoothmenu ul li ul li a:hover{
4046
+ background:#D3DBE1;
4047
+ color:#000000;
4048
+ }
4049
+
4050
+ /* Holly Hack for IE \*/
4051
+ * html .ddsmoothmenu{height: 1%;} /*Holly Hack for IE7 and below*/
4052
+
4053
+
4054
+ /* ######### CSS classes applied to down and right arrow images ######### */
4055
+
4056
+ .downarrowclass{
4057
+ position: absolute;
4058
+ top: 12px;
4059
+ right: 7px;
4060
+ }
4061
+
4062
+ .rightarrowclass{
4063
+ position: absolute;
4064
+ top: 6px;
4065
+ right: 5px;
4066
+ }
4067
+
4068
+ /* ######### CSS for shadow added to sub menus ######### */
4069
+
4070
+ .ddshadow{
4071
+ position: absolute;
4072
+ left: 0;
4073
+ top: 0;
4074
+ width: 0;
4075
+ height: 0;
4076
+ background: A09B98;
4077
+ }
4078
+
4079
+ .toplevelshadow{ /*shadow opacity. Doesn't work in IE*/
4080
+ opacity: 0.8;
4081
+ }
4082
+ height: 0;
4083
+ background: #A09B98;
4084
+ }
4085
+
4086
+ .toplevelshadow{ /*shadow opacity. Doesn't work in IE*/
4087
+ opacity: 0.8;
4088
+ }
4089
+
4090
+ .margin_dvd {
4091
+ margin-top:1px;
4092
+ }
4093
+
4094
+ .home {
4095
+ cursor:pointer;
4096
+ font-family:"lucida grande",Helvetica;
4097
+ }
4098
+ }
4099
+
4100
+ /*div.sdmenu div a.current {
4101
+ background : #F78F1E;text-decoration: none;width:200px; margin-left:8px; float:left;
4102
+ }*/
4103
+ div.sdmenu div a:hover {
4104
+ /*background : #fff ;*/
4105
+ font-family: Arial, sans-serif;
4106
+ color: #036CCD;
4107
+ text-decoration: none; font-weight:bold;
4108
+ }
4109
+
4110
+
4111
+ /* ######### Matt Black Strip Main Menu Bar CSS ######### */
4112
+
4113
+ .mattblackmenu ul{
4114
+ margin: 0;
4115
+ padding: 0;
4116
+ font: 12px Arial;
4117
+ font-weight:bold;
4118
+ list-style-type: none;
4119
+ border-bottom: 1px solid gray;
4120
+ background: #3D260B;
4121
+ overflow: hidden;
4122
+ width: 100%;
4123
+ }
4124
+
4125
+ .mattblackmenu li{
4126
+ display: inline;
4127
+ margin: 0;
4128
+ }
4129
+
4130
+ .mattblackmenu li a{
4131
+ float: left;
4132
+ display: block;
4133
+ text-decoration: none;
4134
+ margin: 0;
4135
+ padding: 4px 8px; /*padding inside each tab*/
4136
+ border-right: 1px solid white; /*right divider between tabs*/
4137
+ color: white;
4138
+ background: #3D260B;
4139
+ }
4140
+
4141
+ .mattblackmenu li a:visited{
4142
+ color: white;
4143
+ }
4144
+
4145
+ .mattblackmenu li a:hover{
4146
+ background: #3D260B; /*background of tabs for hover state */
4147
+ }
4148
+
4149
+ .mattblackmenu a.selected{
4150
+ background: #3D260B; /*background of tab with "selected" class assigned to its LI */
4151
+ }
4152
+
4153
+ /* ######### Marker List Vertical Menu ######### */
4154
+
4155
+ .markermenu{
4156
+ width: 175px; /*width of side bar menu*/
4157
+ clear: left;
4158
+ position: relative; /*Preserve this for "right" arrow images (added by script) to be positioned correctly*/
4159
+
4160
+ }
4161
+
4162
+ .markermenu ul{
4163
+ list-style-type: none;
4164
+ margin: 0px 0;
4165
+ padding: 0;
4166
+ /*border: 1px solid #9A9A9A;*/
4167
+ }
4168
+
4169
+ .markermenu ul li a{
4170
+ width:202px; height:20px;
4171
+ font: 12px Arial;
4172
+ color:#615F5F;
4173
+ font-weight:bold;
4174
+ display: block;
4175
+ /*width: auto;*/
4176
+ padding-top: 5px;
4177
+ padding-left: 20px;
4178
+ text-decoration: none;
4179
+ border-bottom:#ccc 1px solid;
4180
+ /*border-bottom: 1px solid #B5B5B5;*/
4181
+ }
4182
+
4183
+ * html .markermenu ul li a{ /*IE6 hack*/
4184
+ width: 155px;
4185
+ }
4186
+
4187
+ .markermenu ul li a:visited, .markermenu ul li a:active{
4188
+ color: #615F5F; width:202px;
4189
+ }
4190
+
4191
+ .markermenu ul li a:hover, .markermenu ul li a.selected{
4192
+ width:205px; height:20px; font: 12px Arial; font-weight:bold; color:#000;
4193
+ }
4194
+
4195
+ /* ######### Customized Drop Down ULs CSS (inherits from ddlevelsmenu-base.css) ######### */
4196
+
4197
+ .blackwhite li a{
4198
+ width:202px;
4199
+ margin-left:0px;
4200
+ background:#D1D7E3;
4201
+ color:##666666;
4202
+ }
4203
+
4204
+ .blackwhite li a:hover{
4205
+ background:#6A8BD2;
4206
+ color:#FFF;
4207
+ height:15px;
4208
+ }
4209
+
4210
+ /* ######### Drop Down ULs CSS ######### */
4211
+
4212
+
4213
+ .ddsubmenustyle, .ddsubmenustyle ul{ /*topmost and sub ULs, respectively*/
4214
+ background:#D1D7E3;
4215
+ font: normal 12px Arial;
4216
+ font-weight:bold;
4217
+ margin: 0;
4218
+ padding: 0;
4219
+ position: absolute;
4220
+ left: 0;
4221
+ top: 0;
4222
+ list-style-type: none;
4223
+ padding-left:5px;
4224
+
4225
+ /*border: 1px solid black;
4226
+ border-bottom-width: 0;*/
4227
+ visibility: hidden;
4228
+ z-index: 100;
4229
+ }
4230
+
4231
+ .ddsubmenustyle li a{
4232
+ display: block;
4233
+ /*width: 160px;*/ /*width of menu (not including side paddings)*/
4234
+ color: black;
4235
+ background:#3D260B;
4236
+ text-decoration: none;
4237
+ padding: 4px 5px;
4238
+ border-bottom:#ccc 1px solid;
4239
+
4240
+ }
4241
+
4242
+ * html .ddsubmenustyle li{ /*IE6 CSS hack*/
4243
+ display: inline-block;
4244
+ width: 170px; /*width of menu (include side paddings of LI A*/
4245
+ }
4246
+
4247
+ .ddsubmenustyle li a:hover{
4248
+ background:#3D260B;
4249
+ color: white;
4250
+ }
4251
+
4252
+ /* ######### Neutral CSS ######### */
4253
+
4254
+ .downarrowpointer{ /*CSS for "down" arrow image added to top menu items*/
4255
+ padding-left: 4px;
4256
+ border: 0;
4257
+ }
4258
+
4259
+ .rightarrowpointer{ /*CSS for "right" arrow image added to drop down menu items*/
4260
+ position: absolute;
4261
+ padding-top: 3px;
4262
+ left: 100px;
4263
+ border: 0;
4264
+ }
4265
+
4266
+ .ddiframeshim{
4267
+ position: absolute;
4268
+ z-index: 500;}
4269
+
4270
+
4271
+ /*--------------------------------------------*/
4272
+ .footer .last{
4273
+
4274
+ }
4275
+ .footerBlock.socialLinks {
4276
+ padding: 40px 35px 0;
4277
+ width: 170px;
4278
+ }
4279
+
4280
+
4281
+ .footerBlock.socialLinks li {
4282
+ display: inline-block;
4283
+ float: none;
4284
+ height: 35px;
4285
+ margin: 0 6px;
4286
+ width: 35px;
4287
+ }
4288
+
4289
+ li {
4290
+ list-style: none;
4291
+ }
4292
+
4293
+ .footerBlock.socialLinks li a {
4294
+ display: inline-block;
4295
+ height: 35px;
4296
+ text-indent: -9999px;
4297
+ width: 35px;
4298
+ }
4299
+
4300
+ .footerBlock a {
4301
+ color: #FFFFFF;
4302
+ }
4303
+
4304
+ .footerBlock.socialLinks li.in-link {
4305
+ background: url("../images/in-icon.png") no-repeat scroll left top transparent;
4306
+ }
4307
+ .footerBlock.socialLinks li.facebook-link {
4308
+ background: url("../images/facebook-icon.png") no-repeat scroll left top transparent;
4309
+ }
4310
+ .footerBlock.socialLinks li.twitter-link {
4311
+ background: url("../images/twitter-icon.png") no-repeat scroll left top transparent;
4312
+ }
4313
+ .footerBlock.socialLinks li {
4314
+ display: inline-block;
4315
+ float: none;
4316
+ height: 35px;
4317
+ margin: 0 6px;
4318
+ width: 35px;
4319
+ }
4320
+
4321
+ .footerBlock.ourLinks {
4322
+ font-size: 12px;
4323
+ }
4324
+
4325
+ .footerBlock.ourLinks {
4326
+ padding-left: 20px;
4327
+ width: 220px;
4328
+ }
4329
+
4330
+
4331
+ li {
4332
+ list-style: none;
4333
+ }
4334
+ .footerBlock.ourLinks a {
4335
+ line-height: 18px;
4336
+ }
4337
+
4338
+ .footerBlock a {
4339
+ color: #FFFFFF;
4340
+ }
4341
+ .footerBlock.twocheckout {
4342
+ padding-top: 35px;
4343
+ }
4344
+
4345
+
4346
+ .footerBlock.twocheckout p {
4347
+ line-height: 14px;
4348
+ }
4349
+
4350
+ p {
4351
+ margin-top: 10px;
4352
+ }
4353
+
4354
+ .footerBlock.guarantee {
4355
+ padding: 5px 25px 0 30px;
4356
+ width: 185px;
4357
+ }
4358
+
4359
+ .footerBlock {
4360
+ color: #A5A5A5;
4361
+ float: left;
4362
+ font-family: Arial,Helvetica,sans-serif;
4363
+ font-size: 11px;
4364
+ padding-top: 20px;
4365
+ width: 240px;
4366
+ }
4367
+ .clearfloat {
4368
+ clear: both;
4369
+ line-height: 0px;
4370
+ height: 0px;
4371
+ font-size: 0px;
4372
+ }
4373
+
4374
+
4375
+ background: transparent;
4376
+ border-width: 0;
4377
+ width: 0;
4378
+ height: 0;
4379
+ display: block;
4380
+ }
4381
+
4382
+ /* Jquery Carousel Code */
4383
+ h3.ribbon {
4384
+ background-color: #5e5e5e;
4385
+ color: #fff;
4386
+ display: inline-block;
4387
+ font-family: arial;
4388
+ font-size: 11px;
4389
+ line-height: 1em;
4390
+ margin: -1px 0 10px -14px;
4391
+ min-width: 13%;
4392
+ padding: 5px 28px 4px 25px;
4393
+ position: relative;
4394
+ text-align: center;
4395
+ text-transform: uppercase;
4396
+ white-space: nowrap;
4397
+ text-transform: uppercase;
4398
+ }
4399
+
4400
+ h3.ribbon:before {
4401
+ z-index: 1000;
4402
+ content: ' ';
4403
+ position: absolute;
4404
+ width: 0;
4405
+ height: 0;
4406
+ right: 0;
4407
+ top: 0;
4408
+ border-color: transparent #FFF transparent transparent;
4409
+ border-width: 10px 10px;
4410
+ border-style: solid;
4411
+ }
4412
+
4413
+
4414
+ h3.ribbon:after {
4415
+ content: ' ';
4416
+ position: absolute;
4417
+ width: 0;
4418
+ height: 0;
4419
+ left: 0;
4420
+ top: 100%;
4421
+ border-width: 3px 7px;
4422
+ border-style: solid;
4423
+ border-color: #232323 #232323 transparent transparent;
4424
+ }
4425
+
4426
+ .scrollup{
4427
+ width:40px;
4428
+ height:40px;
4429
+ position:fixed;
4430
+ bottom:50px;
4431
+ right:100px;
4432
+ display:none;
4433
+ text-indent:-9999px;
4434
+ background: url('../images/scroll.png') no-repeat;
4435
+ }
4436
+
4437
+
4438
+
4439
+ .row4 {
4440
+ background: url("../images/quicknav_bg.gif") top left repeat-x;
4441
+ border-top: 1px solid #BCBCBC;
4442
+ border-bottom: 1px solid #BCBCBC;
4443
+ }
4444
+ .clear:after {
4445
+ content: ".";
4446
+ display: block;
4447
+ height: 0;
4448
+ clear: both;
4449
+ visibility: hidden;
4450
+ line-height: 0;
4451
+ }
4452
+
4453
+ a {
4454
+ outline: none;
4455
+ text-decoration: none;
4456
+ color:#421E1E
4457
+ }
4458
+
4459
+
4460
+ #home-main{background:white;min-height:400px;width:975px; padding:10px;}
4461
+
4462
+
4463
+ /* FILTERED ITEMS ----------------------------------------------------*/
4464
+ .isotope-item {
4465
+ z-index: 2;
4466
+ }
4467
+ .isotope-hidden.isotope-item {
4468
+ pointer-events: none;
4469
+ z-index: 1;
4470
+ }
4471
+
4472
+ /**** Isotope CSS3 transitions ****/
4473
+
4474
+ .isotope,
4475
+ .isotope .isotope-item {
4476
+ -webkit-transition-duration: 0.8s;
4477
+ -moz-transition-duration: 0.8s;
4478
+ -ms-transition-duration: 0.8s;
4479
+ -o-transition-duration: 0.8s;
4480
+ transition-duration: 0.8s;
4481
+ }
4482
+
4483
+ .isotope {
4484
+ -webkit-transition-property: height, width;
4485
+ -moz-transition-property: height, width;
4486
+ -ms-transition-property: height, width;
4487
+ -o-transition-property: height, width;
4488
+ transition-property: height, width;
4489
+ }
4490
+
4491
+ .isotope .isotope-item {
4492
+ -webkit-transition-property: -webkit-transform, opacity;
4493
+ -moz-transition-property: -moz-transform, opacity;
4494
+ -ms-transition-property: -ms-transform, opacity;
4495
+ -o-transition-property: -o-transform, opacity;
4496
+ transition-property: transform, opacity;
4497
+ }
4498
+
4499
+ /**** disabling Isotope CSS3 transitions ****/
4500
+
4501
+ .isotope.no-transition,
4502
+ .isotope.no-transition .isotope-item,
4503
+ .isotope .isotope-item.no-transition {
4504
+ -webkit-transition-duration: 0s;
4505
+ -moz-transition-duration: 0s;
4506
+ -ms-transition-duration: 0s;
4507
+ -o-transition-duration: 0s;
4508
+ transition-duration: 0s;
4509
+ }
4510
+ #filter-buttons {
4511
+ text-align: center;
4512
+ border-bottom: 1px solid #999;
4513
+ margin-bottom: 20px;
4514
+ }
4515
+ #filter-buttons li {
4516
+ display: inline-block;
4517
+ margin-bottom: 0px;
4518
+ }
4519
+ #filter-buttons li a {
4520
+ display: block;
4521
+ text-decoration: none;
4522
+ padding: 5px 10px;
4523
+ margin-bottom: 0px;
4524
+ }
4525
+ #filter-buttons.second {
4526
+ text-align: center;
4527
+ border-bottom: 1px solid #999;
4528
+ margin-bottom: 20px;
4529
+ }
4530
+ #filter-buttons.second li {
4531
+ display: inline-block;
4532
+ margin-bottom: 0px;
4533
+ }
4534
+ #filter-buttons.second li a {
4535
+ display: block;
4536
+ text-decoration: none;
4537
+ padding: 5px 10px;
4538
+ margin-bottom: 0px;
4539
+ }
4540
+ #filter-container {
4541
+
4542
+ margin-bottom: 20px;
4543
+ /* Fixes shadow and margin right */
4544
+ padding-top: 5px;
4545
+ }
4546
+ #filter-container.second {
4547
+ width: 740px;
4548
+ margin-bottom: 60px;
4549
+ /* Fixes shadow and margin right */
4550
+
4551
+ padding-left: 5px;
4552
+ padding-top: 5px;
4553
+ margin-left: -5px;
4554
+ }
4555
+ #filter-container .figure {
4556
+ width: 300px;
4557
+ border: 1px solid #EEE;
4558
+ float: left;
4559
+ margin-right: 20px;
4560
+ margin-bottom: 30px;
4561
+ -webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4562
+ -moz-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4563
+ -o-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4564
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4565
+ }
4566
+ #filter-container.second .figure {
4567
+ width: 226px;
4568
+ float: left;
4569
+ margin-right: 20px;
4570
+ margin-bottom: 30px;
4571
+ -webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4572
+ -moz-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4573
+ -o-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4574
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
4575
+ }
4576
+ #filter-container .figure .thumb {
4577
+ display: block;
4578
+ border-bottom: 2px solid #ccc;
4579
+ background: white;
4580
+ margin-bottom: -7px;
4581
+ }
4582
+ #filter-container .figure .thumb img {
4583
+ max-width: 100%;
4584
+ -webkit-transition: all 0.3s ease;
4585
+ -moz-transition: all 0.3s ease;
4586
+ -o-transition: all 0.3s ease;
4587
+ transition: all 0.3s ease;
4588
+ }
4589
+ #filter-container .figure .thumb:hover img {
4590
+ opacity: 0.2;
4591
+ }
4592
+ .figcaption{padding: 10px;}
4593
+
4594
+ #filter-container.figure.figcaption {
4595
+ margin: 18px 10px 20px 10px;
4596
+ text-align: center;
4597
+ }
4598
+ #filter-container .figure .figcaption .heading {
4599
+ color:white;
4600
+ font-size: 18px;
4601
+ line-height: 1.2em;
4602
+ text-transform: uppercase;
4603
+ display: block;
4604
+ -webkit-transition: all 0.3s ease;
4605
+ -moz-transition: all 0.3s ease;
4606
+ -o-transition: all 0.3s ease;
4607
+ transition: all 0.3s ease;
4608
+ }
4609
+ #filter-container ..figure .figcaption .readmore {
4610
+ display: block;
4611
+ margin: 10px 0px;
4612
+ }
4613
+ .figure, .figcaption {
4614
+ font: inherit;
4615
+ vertical-align: baseline;
4616
+ list-style-type:none;
4617
+ background:#585757;
4618
+ }
4619
+
4620
+
4621
+ #topbar ul{
4622
+ display:block;
4623
+ float:left;
4624
+ font-size:12px;
4625
+ font-family:Georgia, "Times New Roman", Times, serif;
4626
+ text-transform:uppercase;
4627
+ }
4628
+ /*.mybox{padding:20px; background:white;}*/
4629
+
4630
+ #topbar ul, #topbar ul li{
4631
+ margin:0;
4632
+ padding:0;
4633
+ list-style:none;
4634
+ padding-left:10px;
4635
+ }
4636
+ #topbar .nav-container #nav{margin-top:12px;}
4637
+ #topbar ul#topnav{
4638
+ margin-top:7px;
4639
+ }
4640
+
4641
+ #topbar ul li{
4642
+ float:left;
4643
+ margin-right:30px;
4644
+ }
4645
+
4646
+ #topbar ul li li{
4647
+ margin-left:0;
4648
+ }
4649
+
4650
+ #topbar ul li a:link, #topbar ul li a:visited, #topbar ul li a:hover{
4651
+ display:block;
4652
+ margin:0;
4653
+ padding:0;
4654
+ color:#676767;
4655
+
4656
+ }
4657
+
4658
+ #topbar ul ul li a:link, #topbar ul ul li a:visited{
4659
+ border:none;
4660
+ }
4661
+
4662
+ #topbar ul li a:hover, #topbar ul li.active a{
4663
+ color:#ECC663;
4664
+ background-color:#191919;
4665
+ }
4666
+
4667
+ #topbar ul li li a:link, #topbar ul li li a:visited{
4668
+ width:150px;
4669
+ float:none;
4670
+ margin:0;
4671
+ padding:7px 10px;
4672
+ font-size:12px;
4673
+ font-weight:normal;
4674
+ color:#676767;
4675
+ background-color:#191919;
4676
+ }
4677
+
4678
+ #topbar ul li li a:hover{
4679
+ color:#ECC663;
4680
+ background-color:#191919;
4681
+ }
4682
+
4683
+ #topbar ul ul{
4684
+ z-index:9999;
4685
+ position:absolute;
4686
+ left:-999em;
4687
+ height:auto;
4688
+ width:170px;
4689
+ }
4690
+
4691
+ #topbar ul ul a{width:140px;}
4692
+
4693
+ #topbar ul li:hover ul{left:auto;margin-left:-20px;}
4694
+
4695
+ #topbar ul li:hover{position:static;}
4696
+
4697
+ #topbar ul li.last{margin-right:0;}
4698
+ #topbar, #header, #container, #footer, #copyright{
4699
+ position:relative;
4700
+ margin:0 auto 0;
4701
+ display:block;
4702
+ width:960px;
4703
+ }
4704
+
4705
+ #topbar, #header, #container, #footer, #copyright {
4706
+ position: relative;
4707
+ margin: 0 auto 0;
4708
+ display: block;
4709
+ width: 996px;
4710
+ }
4711
+ .clear {
4712
+ display: block;
4713
+ }
4714
+ .clear {
4715
+ display: inline-block;
4716
+ }
4717
+
4718
+ .row4, .row4 a {
4719
+ color: #919191;
4720
+ background-color: #232323;
4721
+ }
4722
+ .col0 {
4723
+ color: #676767;
4724
+ background-color: #191919;
4725
+ border-bottom: 1px solid #333333;
4726
+ }
4727
+ table,tr,td,tbody{border-spacing:0px !important;}
4728
+ #topbar{z-index:1000;display:inline-block;}
4729
+
4730
+
4731
+
4732
+ .modalDialog {
4733
+ position: fixed;
4734
+ font-family: Arial, Helvetica, sans-serif;
4735
+ top: 0;
4736
+ right: 0;
4737
+ bottom: 0;
4738
+ left: 0;
4739
+ background: rgba(0,0,0,0.8);
4740
+ z-index: 99999;
4741
+ opacity:0;
4742
+ -webkit-transition: opacity 400ms ease-in;
4743
+ -moz-transition: opacity 400ms ease-in;
4744
+ transition: opacity 400ms ease-in;
4745
+ pointer-events: none;
4746
+ }
4747
+
4748
+ .modalDialog:target {
4749
+ opacity:1;
4750
+ pointer-events: auto;
4751
+ }
4752
+
4753
+ .modalDialog > div {
4754
+ width: 400px;
4755
+ position: absolute;
4756
+ margin: 10% auto;
4757
+ padding: 5px 20px 13px 20px;
4758
+ border-radius: 10px;
4759
+ background: #f1f1f1;
4760
+ top:70px;
4761
+ left:490px;
4762
+ }
4763
+
4764
+ .close {
4765
+ background: #606061;
4766
+ color: #FFFFFF;
4767
+ line-height: 25px;
4768
+ position: absolute;
4769
+ right: -12px;
4770
+ text-align: center;
4771
+ top: -10px;
4772
+ width: 24px;
4773
+ text-decoration: none;
4774
+ font-weight: bold;
4775
+ -webkit-border-radius: 12px;
4776
+ -moz-border-radius: 12px;
4777
+ border-radius: 12px;
4778
+ -moz-box-shadow: 1px 1px 3px #000;
4779
+ -webkit-box-shadow: 1px 1px 3px #000;
4780
+ box-shadow: 1px 1px 3px #000;
4781
+ }
4782
+
4783
+ .close:hover { background: #00d9ff; }
4784
+
4785
+ .modalDialog .play{
4786
+ color: #444;
4787
+ font-weight: bold;
4788
+ text-decoration: underline;
4789
+
4790
+ }
4791
+
4792
+ .modalDialog ul{
4793
+ margin-bottom: 20px;
4794
+ margin-left: 30px;
4795
+ }
4796
+
4797
+ .modalDialog li{
4798
+ margin-bottom: 10px;
4799
+ list-style: decimal;
4800
+ }
4801
+
4802
+ .modalDialog small{
4803
+ color: #888;
4804
+ font-size: 12px;
4805
+ }
4806
+
4807
+ .modalDialog h2{
4808
+ margin-bottom: 30px;
4809
+ }
skin/frontend/base/default/images/ajax-loader.gif ADDED
Binary file
skin/frontend/base/default/js/ajax_cart.js ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Vladimir Fishchenko extension for Magento
3
+ *
4
+ * NOTICE OF LICENSE
5
+ *
6
+ * This source file is subject to the Open Software License (OSL 3.0)
7
+ * that is bundled with this package in the file LICENSE.txt.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://opensource.org/licenses/osl-3.0.php
10
+ *
11
+ * DISCLAIMER
12
+ *
13
+ * Do not edit or add to this file if you wish to upgrade
14
+ * the Oggetto AjaxCart module to newer versions in the future.
15
+ * If you wish to customize the Oggetto AjaxCart module for your needs
16
+ * please refer to http://www.magentocommerce.com for more information.
17
+ *
18
+ * @category design
19
+ * @package base_default
20
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ */
23
+ var AjaxCart = Class.create({
24
+ buttonSelector: '.btn-cart',
25
+ sidebarCartSelector: '.block-cart',
26
+ removeLinkSelector: 'a.btn-remove',
27
+ cartPageSelector: '.checkout-cart-index',
28
+ cartPageUpdateButtonsSelector: 'button[name=update_cart_action]',
29
+ topLinksSelector: '.links',
30
+ urlMatch: /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/,
31
+ initialize: function () {
32
+ this.isLoading = false;
33
+
34
+ this._observeButtons();
35
+ this._observeSidebar();
36
+ this._observeCartPage();
37
+ },
38
+ _observeButtons: function() {
39
+ var _this = this;
40
+ $$(this.buttonSelector).each(function(th) {
41
+ var href = '';
42
+ if (th.onclick) {
43
+ href = th.onclick.toString().match(_this.urlMatch);
44
+ if (href) {
45
+ href = href[0];
46
+ }
47
+ th.onclick = null;
48
+ }
49
+ if (!href) {
50
+ var form = th.up('form');
51
+ if (form) {
52
+ href = form.action;
53
+ }
54
+ }
55
+ th.observe('click', function(e) {
56
+ Event.stop(e);
57
+ var form = th.up('form');
58
+ var params = '';
59
+ if (form) {
60
+ params = form.serialize();
61
+ }
62
+ _this.openCart(href, params);
63
+ });
64
+ });
65
+ },
66
+ _observeSidebar : function () {
67
+ var _this = this;
68
+ $$(this.sidebarCartSelector + ' ' + this.removeLinkSelector).each(function(th) {
69
+ th.observe('click', function (e) {
70
+ Event.stop(e);
71
+ _this.openCart(th.href, {});
72
+ });
73
+ });
74
+ },
75
+ _observeCartPage : function () {
76
+ var _this = this;
77
+
78
+ var updateCartPage = function (transport) {
79
+ var response = transport.responseJSON;
80
+ if (response) {
81
+ if (response['custom_content_data']['checkout.cart']) {
82
+ var element = new Element('div');
83
+ element.update(response['custom_content_data']['checkout.cart']);
84
+
85
+ //update cart table
86
+ var cartTableNew = element.down('#shopping-cart-table');
87
+ var cartTable = $('shopping-cart-table');
88
+ if (cartTable && cartTableNew) {
89
+ cartTable.replace(cartTableNew);
90
+ _this._observeCartPage();
91
+ }
92
+
93
+ //update totals
94
+ var totalsNew = element.down('#shopping-cart-totals-table');
95
+ var totals = $('shopping-cart-totals-table');
96
+ if (totals && totalsNew) {
97
+ totals.replace(totalsNew);
98
+ }
99
+
100
+ //if no cartTable and totals - update all (usually for empty cart)
101
+ if (!cartTableNew && !totalsNew) {
102
+ var cart = $$('.cart').first();
103
+ if (cart) {
104
+ cart.replace(response['custom_content_data']['checkout.cart']);
105
+ }
106
+ }
107
+ }
108
+ _this.hideLoader();
109
+ }
110
+ };
111
+
112
+ $$(this.cartPageSelector + ' ' + this.cartPageUpdateButtonsSelector).each(function (el) {
113
+ el.observe('click', function (e) {
114
+ var form = el.up('form');
115
+ if (form) {
116
+ Event.stop(e);
117
+ var formData = '';
118
+ if (el.value == 'empty_cart') {
119
+ formData = 'update_cart_action=empty_cart';
120
+ } else {
121
+ formData = form.serialize();
122
+ }
123
+
124
+ if (_this.isLoading) {
125
+ return false;
126
+ }
127
+ _this.showLoader();
128
+ new EasyAjax.Request(form.action, {
129
+ method: 'post',
130
+ custom_content: ['checkout.cart'],
131
+ parameters: formData,
132
+ onComplete: updateCartPage
133
+ });
134
+ }
135
+ });
136
+ });
137
+ $$(this.cartPageSelector + ' ' + this.removeLinkSelector).each(function (el) {
138
+ el.observe('click', function (e) {
139
+ Event.stop(e);
140
+ if (_this.isLoading) {
141
+ return false;
142
+ }
143
+ _this.showLoader();
144
+ new EasyAjax.Request(el.href, {
145
+ method: 'get',
146
+ custom_content: ['checkout.cart'],
147
+ onComplete: updateCartPage
148
+ });
149
+ });
150
+ });
151
+ },
152
+ _updateSidebarCart : function(data) {
153
+ var cartOld = $$(this.sidebarCartSelector).first();
154
+ if (cartOld) {
155
+ cartOld.replace(data);
156
+ this._observeSidebar();
157
+ }
158
+ },
159
+ _updateTopLinks: function(data) {
160
+ var topLinks = $$(this.topLinksSelector).first();
161
+ if (topLinks) {
162
+ topLinks.replace(data);
163
+ }
164
+ },
165
+ openCart: function(href, params) {
166
+ var _this = this;
167
+ if (this.isLoading) {
168
+ return false;
169
+ }
170
+ this.showLoader();
171
+ new EasyAjax.Request(href, {
172
+ method: 'post',
173
+ action_content: ['cart_sidebar', 'top.links'],
174
+ parameters: params,
175
+ onComplete: function (transport) {
176
+ var response = transport.responseJSON;
177
+ if (response) {
178
+ var messages = response.messages;
179
+ var actionContent = response['action_content_data'];
180
+ if (actionContent) {
181
+ var cartNewData = actionContent['cart_sidebar'];
182
+ if (cartNewData) {
183
+ _this._updateSidebarCart(cartNewData);
184
+ }
185
+ var topLinks = actionContent['top.links'];
186
+ if (topLinks) {
187
+ _this._updateTopLinks(topLinks);
188
+ }
189
+ }
190
+ _this.hideLoader();
191
+ if (messages) {
192
+ var message = messages[0];
193
+ if (message) {
194
+ _this.showMessage(message);
195
+ }
196
+ }
197
+ } else {
198
+ alert('ERROR!');
199
+ }
200
+ }
201
+ });
202
+ },
203
+ showMessage : function (message) {
204
+ var modal = $('ajax-cart-modal');
205
+ if (modal) {
206
+ $('ajax-cart-modal-message').update(message.code);
207
+ modal.show();
208
+ } else {
209
+ alert(message.code);
210
+ }
211
+ },
212
+ showLoader : function () {
213
+ this.isLoading = true;
214
+ var loader = $('ajax-cart-loading-mask');
215
+ if (loader) {
216
+ loader.show();
217
+ }
218
+ },
219
+ hideLoader : function () {
220
+ this.isLoading = false;
221
+ var loader = $('ajax-cart-loading-mask');
222
+ if (loader) {
223
+ loader.hide();
224
+ }
225
+ }
226
+ });
227
+
228
+ document.observe("dom:loaded", function() {
229
+ new AjaxCart;
230
+ });
skin/frontend/base/default/js/easy_ajax.js ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Vladimir Fishchenko extension for Magento
3
+ *
4
+ * NOTICE OF LICENSE
5
+ *
6
+ * This source file is subject to the Open Software License (OSL 3.0)
7
+ * that is bundled with this package in the file LICENSE.txt.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://opensource.org/licenses/osl-3.0.php
10
+ *
11
+ * @category design
12
+ * @package base_default
13
+ * @copyright Copyright (C) 2012 Vladimir Fishchenko (http://fishchenko.com/)
14
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
15
+ */
16
+
17
+ var EasyAjax = Class.create(Ajax);
18
+
19
+ EasyAjax.Request = Class.create(Ajax.Request, {
20
+ initialize: function($super, url, options) {
21
+ this.action_content = options.action_content || [];
22
+ this.custom_content = options.custom_content || [];
23
+ $super(url, options);
24
+ },
25
+ request: function ($super, url)
26
+ {
27
+ var params = this.options.parameters;
28
+
29
+ //add easy_ajax flat
30
+ params += params ? '&' : '';
31
+ params += 'easy_ajax=1';
32
+
33
+ //add action content params
34
+ var actionContent = this.action_content;
35
+ if (Object.isString(actionContent)) {
36
+ customContent = [actionContent];
37
+ }
38
+ for (var i = 0; i < actionContent.length; ++i) {
39
+ params += '&action_content[' + i + ']=' + actionContent[i];
40
+ }
41
+
42
+ //add custom content params
43
+ var customContent = this.custom_content;
44
+ if (Object.isString(customContent)) {
45
+ customContent = [customContent];
46
+ }
47
+ for (var i = 0; i < customContent.length; ++i) {
48
+ params += '&custom_content[' + i + ']=' + customContent[i];
49
+ }
50
+
51
+ this.options.parameters = params;
52
+
53
+ $super(url);
54
+ }
55
+ });