smartaddons_categoryshowcase - Version 1.0.0

Version Notes

version 1.0.0

Download this release

Release Info

Developer magentech.com
Extension smartaddons_categoryshowcase
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (33) hide show
  1. app/code/local/Smartaddons/CategoryShowcase/Block/List.php +376 -0
  2. app/code/local/Smartaddons/CategoryShowcase/Helper/Data.php +97 -0
  3. app/code/local/Smartaddons/CategoryShowcase/Helper/Utils.php +30 -0
  4. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/LinkTargets.php +20 -0
  5. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListCategory.php +58 -0
  6. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListEffectType.php +51 -0
  7. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListTheme.php +21 -0
  8. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/OrderBy.php +26 -0
  9. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/OrderDirection.php +19 -0
  10. app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ProductSources.php +19 -0
  11. app/code/local/Smartaddons/CategoryShowcase/controllers/IndexController.php +15 -0
  12. app/code/local/Smartaddons/CategoryShowcase/etc/config.xml +147 -0
  13. app/code/local/Smartaddons/CategoryShowcase/etc/system.xml +508 -0
  14. app/design/frontend/default/default/layout/smartaddons/categoryshowcase.xml +28 -0
  15. app/design/frontend/default/default/template/smartaddons/categoryshowcase/block_template_default.phtml +142 -0
  16. app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme1.phtml +183 -0
  17. app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme2.phtml +175 -0
  18. app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme3.phtml +190 -0
  19. app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme4.phtml +189 -0
  20. app/etc/modules/Smartaddons_CategoryShowcase.xml +13 -0
  21. package.xml +18 -0
  22. skin/frontend/default/default/smartaddons/categoryshowcase/css/ie7.css +15 -0
  23. skin/frontend/default/default/smartaddons/categoryshowcase/css/style.css +288 -0
  24. skin/frontend/default/default/smartaddons/categoryshowcase/images/button_viewall.png +0 -0
  25. skin/frontend/default/default/smartaddons/categoryshowcase/images/center_ver.png +0 -0
  26. skin/frontend/default/default/smartaddons/categoryshowcase/images/left_ver.png +0 -0
  27. skin/frontend/default/default/smartaddons/categoryshowcase/images/next.png +0 -0
  28. skin/frontend/default/default/smartaddons/categoryshowcase/images/no_image.gif +0 -0
  29. skin/frontend/default/default/smartaddons/categoryshowcase/images/prev.png +0 -0
  30. skin/frontend/default/default/smartaddons/categoryshowcase/images/right_ver.png +0 -0
  31. skin/frontend/default/default/smartaddons/categoryshowcase/js/jquery-1.5.min.js +16 -0
  32. skin/frontend/default/default/smartaddons/categoryshowcase/js/jquery.cycle.all.js +1467 -0
  33. skin/frontend/default/default/smartaddons/categoryshowcase/js/jsmart.noconflict.js +12 -0
app/code/local/Smartaddons/CategoryShowcase/Block/List.php ADDED
@@ -0,0 +1,376 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Block_List extends Mage_Core_Block_Template
11
+ {
12
+ protected $_config = null;
13
+ protected $_storeId = null;
14
+ protected $_productCollection = null;
15
+ protected $_category = null;
16
+
17
+ public function __construct($attributes = array()){
18
+ parent::__construct();
19
+ $this->_config = Mage::helper('categoryshowcase/data')->get($attributes);
20
+ }
21
+
22
+ public function getConfig($name=null, $value=null){
23
+ if (is_null($this->_config)){
24
+ $this->_config = Mage::helper('categoryshowcase/data')->get(null);
25
+ }
26
+ if (!is_null($name) && !empty($name)){
27
+ $valueRet = isset($this->_config[$name]) ? $this->_config[$name] : $value;
28
+ return $valueRet;
29
+ }
30
+ return $this->_config;
31
+ }
32
+
33
+ public function setConfig($name, $value=null){
34
+ if (is_null($this->_config)) $this->getConfig();
35
+ if (is_array($name)){
36
+ $this->_config = array_merge($this->_config, $name);
37
+ return;
38
+ }
39
+ if (!empty($name)){
40
+ $this->_config[$name] = $value;
41
+ }
42
+ return true;
43
+ }
44
+
45
+ protected function _toHtml(){
46
+ $template = $this->getConfig('theme', 'theme1');
47
+ //$template_file = "smartaddons/categoryshowcase/block_template_default.phtml";
48
+ $template_file = 'smartaddons/categoryshowcase/'. $this->_config["theme"].'.phtml';
49
+ $this->setTemplate($template_file);
50
+ return parent::_toHtml();
51
+ }
52
+
53
+ public function getStoreId(){
54
+ if (is_null($this->_storeId)){
55
+ $this->_storeId = Mage::app()->getStore()->getId();
56
+ }
57
+ return $this->_storeId;
58
+ }
59
+ public function setStoreId($storeId=null){
60
+ $this->_storeId = $storeId;
61
+ }
62
+
63
+ protected function getProductCollection(){
64
+ // if (is_null($this->_productCollection)){
65
+ // if (!Mage::registry("sm_product_collection")){
66
+ $collection = Mage::getSingleton('catalog/product')->getCollection();
67
+ $collection->addAttributeToSelect('*');
68
+ $collection->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
69
+ $visibility = array(
70
+ Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
71
+ Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
72
+ );
73
+ $collection->addAttributeToFilter('visibility', $visibility);
74
+
75
+ // add price data
76
+ $collection->addPriceData();
77
+
78
+ // add category_ids
79
+ //$collection->addCategoryIds();
80
+
81
+ $this->_addViewsCount($collection);
82
+ $this->_addReviewsCount($collection);
83
+ $this->_addOrderedCount($collection);
84
+ return $collection;
85
+ // Mage::register("sm_product_collection", $collection);
86
+ // }
87
+ // $this->_productCollection = Mage::registry("sm_product_collection");
88
+ // }
89
+ //return $this->_productCollection;
90
+ }
91
+ public function setProductCollection($collection=null){
92
+ $this->_productCollection = $collection;
93
+ }
94
+
95
+ private function _getProducts(){
96
+ $collection = $this->getProductCollection();
97
+ // if ($this->_config['product_source']=='product'){
98
+ // if (is_null($this->_config['product_ids']) || empty($this->_config['product_ids'])){
99
+ // return false;
100
+ // } else {
101
+ // $product_ids = preg_split("/[,\s\D]+/", $this->_config['product_ids']);
102
+ // $collection->addIdFilter($product_ids);
103
+ // }
104
+ // } else if ($this->_config['product_source']=='catalog') {
105
+ if (Mage::registry('current_category')){
106
+ // is category view page.
107
+ $current_category = Mage::registry('current_category');
108
+ $current_category_id = $current_category->getId();
109
+ $product_ids = $current_category->getProductCollection()->getAllIds();
110
+ $collection->addIdFilter($product_ids);
111
+ $category_ids = array();
112
+ $this->_category[$current_category_id] =array(
113
+ 'id' => $current_category_id,
114
+ 'sub_title' => $current_category->getName(),
115
+ 'link' => $current_category->getUrl(),
116
+ 'thumb_image' => $this->_getResizedImage($current_category,$this->_config['category_image_width'],$this->_config['category_image_height'],100),//$image_category,
117
+ 'productIds' => $product_ids,
118
+ 'productList' => array()
119
+ );
120
+ } else {
121
+ // if Mage::registry('product') - is product page or another page.
122
+ $category_ids = preg_split("/[,\s\D]+/", $this->_config['product_category']);
123
+ if (is_array($category_ids)){
124
+ foreach ($category_ids as $i => $id) {
125
+ if (!is_numeric($id)){
126
+ unset($category_ids[$i]);
127
+ }
128
+ }
129
+ }
130
+ }
131
+ if (isset($category_ids) && count($category_ids)>0) $this->_addCategoryFilter2($collection, $category_ids);
132
+
133
+ // Sort products in collection
134
+ $dir = strtolower( $this->_config['product_order_dir'] );
135
+ if (!in_array($dir, array('asc', 'desc'))){
136
+ $dir = 'asc';
137
+ }
138
+ $attribute_to_sort = $this->_config['product_order_by'];
139
+ switch ($attribute_to_sort){
140
+ case 'name':
141
+ case 'created_at':
142
+ case 'price':
143
+ $collection->addAttributeToSort($attribute_to_sort, $dir);
144
+ break;
145
+ case 'position':
146
+ break;
147
+ case 'random':
148
+ $collection->getSelect()->order(new Zend_Db_Expr('RAND()'));
149
+ break;
150
+ case 'top_rating':
151
+ $collection->getSelect()->order('sm_rating_summary desc');
152
+ break;
153
+ case 'most_reviewed':
154
+ $collection->getSelect()->order('sm_reviews_count desc');
155
+ break;
156
+ case 'most_viewed':
157
+ $collection->getSelect()->order('sm_views_count desc');
158
+ break;
159
+ case 'best_sales':
160
+ $collection->getSelect()->order('sm_ordered_count desc');
161
+ break;
162
+ }
163
+ //}
164
+ // $product_limitation = intval($this->_config['product_limitation']);
165
+ // if ($product_limitation>0){
166
+ // $collection->setPageSize($product_limitation);
167
+ // }
168
+ return $collection;
169
+ }
170
+
171
+ public function getProducts(){
172
+ return $this->_getProducts();
173
+ }
174
+
175
+ public function getCategory(){
176
+ $products = $this->_getProducts()->getItems();
177
+ $product_limitation = intval($this->_config['product_limitation']);
178
+ foreach( $products as $k => $_product ) {
179
+ $tmp['id'] = $_product->getId();
180
+ //$items[] = $tmp;
181
+ foreach($this->_category as $cat=>$catItem){
182
+ if(in_array($tmp['id'], $catItem['productIds'])){
183
+ $tmp['title'] = $_product->getName();
184
+ //$tmp['sub_title'] = Mage::helper('core/string')->truncate( $tmp['title'] , $this->_config['product_title_max_characters'],'...');
185
+ $tmp['product_sub_title'] = Mage::helper('core/string')->truncate( $tmp['title'] , $this->_config['product_title_max_characters'],'...');
186
+ $tmp['img'] = 'media/catalog/product'.$_product->getImage();
187
+ $tmp['small_thumb'] = (string)Mage::helper('catalog/image')->init($_product, 'image')->resize($this->getConfig('product_normal_image_width'), $this->getConfig('product_normal_image_height'));
188
+ $tmp['content'] = $_product->getShortDescription();
189
+ //$tmp['thumb'] = (string)Mage::helper('catalog/image')->init($_product, 'image')->resize($this->getConfig('product_image_width'), $this->getConfig('product_image_height'));
190
+ $tmp['product_image'] = (string)Mage::helper('catalog/image')->init($_product, 'image')->resize($this->getConfig('product_image_width'), $this->getConfig('product_image_height'));
191
+ //$tmp['sub_content'] = Mage::helper('core/string')->truncate( $tmp['content'] , $this->_config['product_description_max_characters'],'...');
192
+ $tmp['product_content'] = Mage::helper('core/string')->truncate( $tmp['content'] , $this->_config['product_description_max_characters'],'...');
193
+ $tmp['product_link'] = $_product->getProductUrl(); //$tmp['link'] = $_product->getProductUrl();
194
+ //$tmp['price'] = $_product->getPrice();
195
+ $tmp['price'] = Mage::helper('core')->currency($_product->getPrice(), true, false);
196
+ $tmp['product_sku'] =""; //$tmp['product_sku'] = $_product->getSku();
197
+ if((count($catItem['productList'])< $product_limitation) OR $product_limitation<=0){
198
+ //Zend_Debug::dump($tmp);
199
+ $this->_category[$cat]['productList'][] = $tmp;
200
+ //$catItem['productList'][] = $tmp;
201
+ }
202
+ }
203
+ }
204
+ }
205
+ //echo $this->getSkinUrl('smartaddons/categoryshowcase/images/no_image.gif');die;
206
+ //Zend_Debug::dump($this->_category);die;
207
+ return $this->_category;
208
+ }
209
+ public function getConfigObject(){
210
+ return $this->_config;
211
+ //return (object)$this->getConfig();
212
+ }
213
+
214
+ public function getScriptTags(){
215
+ $import_str = "";
216
+ $jsHelper = Mage::helper('core/js');
217
+ if (null == Mage::registry('jsmart.jquery')){
218
+ // jquery has not added yet
219
+ if (Mage::getStoreConfigFlag('categoryshowcase_cfg/advanced/include_jquery')){
220
+ // if module allowed jquery.
221
+ $import_str .= $jsHelper->includeSkinScript('smartaddons/categoryshowcase/js/jquery-1.5.min.js');
222
+ Mage::register('jsmart.jquery', 1);
223
+ }
224
+ }
225
+ if (null == Mage::registry('jsmart.jquerynoconfict')){
226
+ // add once noConflict
227
+ $import_str .= $jsHelper->includeSkinScript('smartaddons/categoryshowcase/js/jsmart.noconflict.js');
228
+ Mage::register('jsmart.jquerynoconfict', 1);
229
+ }
230
+
231
+ if (null == Mage::registry('jsmart.categoryshowcase.js')){
232
+ // add script for this module.
233
+ $import_str .= $jsHelper->includeSkinScript('smartaddons/categoryshowcase/js/jquery.cycle.all.js');
234
+
235
+ Mage::register('jsmart.categoryshowcase.js', 1);
236
+ }
237
+ return $import_str;
238
+ }
239
+
240
+ private function _addCategoryFilter(& $collection, $category_ids){
241
+ $category_collection = Mage::getModel('catalog/category')->getCollection();
242
+ $category_collection->addAttributeToSelect('*');
243
+ $category_collection->addIsActiveFilter();
244
+ if (count($category_ids)>0){
245
+ $category_collection->addIdFilter($category_ids);
246
+ }
247
+ $category_collection->getSelect()->group('entity_id');
248
+ $category_products = array();
249
+ foreach ($category_collection as $category){
250
+ $cid = $category->getId();
251
+ if (!array_key_exists( $cid, $category_products)){
252
+ $category_products[$cid] = $category->getProductCollection()->getAllIds();
253
+ //Mage::log("ID: " . $cid );
254
+ //Mage::log("collection->count(): " . count($category_products[$cid]) );
255
+ }
256
+ }
257
+ $product_ids = array();
258
+ if (count($category_products)){
259
+ foreach ($category_products as $cp) {
260
+ $product_ids = array_merge($product_ids, $cp);
261
+ }
262
+ }
263
+ //Mage::log("merged_count: " . count($product_ids));
264
+ $collection->addIdFilter($product_ids);
265
+ }
266
+
267
+ private function _addCategoryFilter2(& $collection, $category_ids){
268
+ $category_collection = Mage::getModel('catalog/category')->getCollection();
269
+ $category_collection->addAttributeToSelect('*');
270
+ $category_collection->addIsActiveFilter();
271
+ if (count($category_ids)>0){
272
+ $category_collection->addIdFilter($category_ids);
273
+ }
274
+ $category_collection->getSelect()->group('entity_id');
275
+ $category_products = array();
276
+ $this->_category = array();
277
+ foreach ($category_collection as $category){
278
+ $cid = $category->getId();
279
+ if (!array_key_exists( $cid, $category_products)){
280
+ $category_products[$cid] = $category->getProductCollection()->getAllIds();
281
+ //$image_category = (file_exists($category->getImageUrl()))?$category->getImageUrl():$this->getSkinUrl('smartaddons/categoryshowcase/images/no_image.gif');
282
+ $this->_category[$cid] =array(
283
+ 'id' => $cid,
284
+ 'sub_title' => $category->getName(),
285
+ 'link' => $category->getUrl(),
286
+ 'thumb_image' => $this->_getResizedImage($category,$this->_config['category_image_width'],$this->_config['category_image_height'],100),//$image_category,
287
+ 'productIds' => $category_products[$cid],
288
+ 'productList' => array(),
289
+ );
290
+ //Mage::log("ID: " . $cid );
291
+ //Mage::log("collection->count(): " . count($category_products[$cid]) );
292
+ }
293
+ }
294
+
295
+ $product_ids = array();
296
+ if (count($category_products)){
297
+ foreach ($category_products as $cp) {
298
+ $product_ids = array_merge($product_ids, $cp);
299
+ }
300
+ }
301
+
302
+ //Mage::log("merged_count: " . count($product_ids));
303
+ $collection->addIdFilter($product_ids);
304
+ }
305
+ private function _addViewsCount(& $collection, $views_count_alias="sm_views_count"){
306
+ // add views_count
307
+ $reports_event_table = Mage::getSingleton('core/resource')->getTableName('reports/event');
308
+ $reports_event_types_table = Mage::getSingleton('core/resource')->getTableName('reports/event_type');
309
+ $collection->getSelect()
310
+ ->joinLeft(
311
+ array("re_table" => $reports_event_table),
312
+ "e.entity_id = re_table.object_id",
313
+ array(
314
+ $views_count_alias => "COUNT(re_table.event_id)"
315
+ )
316
+ )->joinLeft(
317
+ array("ret_table" => $reports_event_types_table),
318
+ "re_table.event_type_id = ret_table.event_type_id AND ret_table.event_name = 'catalog_product_view'",
319
+ array()
320
+ )->group('e.entity_id');
321
+ }
322
+ private function _addReviewsCount(& $collection, $reviews_count_alias="sm_reviews_count", $rating_summary_alias="sm_rating_summary" ){
323
+ // add reviews_count and rating_summary
324
+ $review_summary_table = Mage::getSingleton('core/resource')->getTableName('review/review_aggregate');
325
+ $collection->getSelect()->joinLeft(
326
+ array("rs_table" => $review_summary_table),
327
+ "e.entity_id = rs_table.entity_pk_value AND rs_table.store_id=" . $this->getStoreId(),
328
+ array(
329
+ $reviews_count_alias => "rs_table.reviews_count",
330
+ $rating_summary_alias => "rs_table.rating_summary"
331
+ )
332
+ );
333
+ }
334
+ private function _addOrderedCount(& $collection, $ordered_qty_alias="sm_ordered_count"){
335
+ $order_table = Mage::getSingleton('core/resource')->getTableName('sales/order');
336
+ $read = Mage::getSingleton('core/resource')->getConnection ('core_read');
337
+ $orders_active_query = $read->select()->from(array("o_table"=>$order_table), 'o_table.entity_id')->where("o_table.state<>'" . Mage_Sales_Model_Order::STATE_CANCELED . "'");
338
+
339
+ $order_item_table = Mage::getSingleton('core/resource')->getTableName('sales/order_item');
340
+ $collection->getSelect()->joinLeft(
341
+ array("oi_table" => $order_item_table),
342
+ "e.entity_id=oi_table.item_id AND oi_table.order_id IN ($orders_active_query)",
343
+ array(
344
+ $ordered_qty_alias => "SUM(oi_table.qty_ordered)"
345
+ )
346
+ );
347
+ }
348
+ private function _getResizedImage($catObj, $width, $height, $quality = 100) {
349
+ if (! $catObj->getImage ())
350
+ return $this->getSkinUrl('smartaddons/categoryshowcase/images/no_image.gif');
351
+
352
+ $imageUrl = Mage::getBaseDir ( 'media' ) . DS . "catalog" . DS . "category" . DS . $catObj->getImage ();
353
+ if (! is_file ( $imageUrl ))
354
+ return false;
355
+
356
+ $imageResized = Mage::getBaseDir ( 'media' ) . DS . "catalog" . DS . "product" . DS . "cache" . DS . "cat_resized" . DS . $catObj->getImage ();// Because clean Image cache function works in this folder only
357
+ if (! file_exists ( $imageResized ) && file_exists ( $imageUrl ) || file_exists($imageUrl) && filemtime($imageUrl) > filemtime($imageResized)) {
358
+ $imageObj = new Varien_Image ( $imageUrl );
359
+ $imageObj->constrainOnly ( false );
360
+ $imageObj->keepAspectRatio ( false );
361
+ $imageObj->keepFrame ( false );
362
+ $imageObj->quality ( $quality );
363
+ $imageObj->resize ( $width, $height );
364
+ $imageObj->save ( $imageResized );
365
+ }
366
+
367
+ if(file_exists($imageResized)){
368
+ return Mage::getBaseUrl ( 'media' ) ."/catalog/product/cache/cat_resized/" . $catObj->getImage ();
369
+ }elseif(file_exists($catObj->getImageUrl())){
370
+ return $catObj->getImageUrl();
371
+ }else{
372
+ return $this->getSkinUrl('smartaddons/categoryshowcase/images/no_image.gif');
373
+ }
374
+
375
+ }
376
+ }
app/code/local/Smartaddons/CategoryShowcase/Helper/Data.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Helper_Data extends Mage_Core_Helper_Abstract {
11
+ public function __construct(){
12
+ $this->defaults = array(
13
+ /* General setting */
14
+ 'isenabled' => '1',
15
+ 'title' => 'SM CategoryShowcase',
16
+ /* Module options */
17
+ 'module_width' => '650', //content_box_width
18
+ 'theme' => 'theme1',
19
+ 'num_cols' => '1', // num_products for theme3 theme4
20
+ 'width_cols' => '200', // width_items
21
+ 'auto_play' => '1',
22
+ 'animation' => 'fade', // effect
23
+ 'interval' => '2000', // timer_speed
24
+ 'duration' => '600', // slideshow_speed
25
+
26
+ /* product query */
27
+ //'product_source' => 'catalog',
28
+ 'product_category' => array(), //
29
+ //'product_ids' => '',
30
+ 'product_order_by' => '', //
31
+ 'product_order_dir' => '', //
32
+ 'product_limitation' => '6', // limit_products
33
+
34
+ /* product details */
35
+ 'product_image_disp' => '1', //show_thumb_image
36
+ 'product_image_linkable' => '1', //link_thumb_image
37
+ 'product_image_width' => '100', //small_thumb_width
38
+ 'product_image_height' => '100', //small_thumb_height
39
+
40
+ 'product_title_disp' => '1', // show_title
41
+ 'product_title_linkable' => '1', // link_caption
42
+ 'product_title_color' => '#000000', // title_color
43
+ 'product_title_max_characters' => '15', // limit_title, count_character
44
+
45
+ /* category details*/
46
+ //'category_image_disp' => '1',
47
+ 'category_image_linkable' => '1', //link_image
48
+ 'category_image_width' => '300', //thumb_width
49
+ 'category_image_height' => '300', //thumb_height
50
+
51
+ 'category_title_disp' => '1', // caption_show
52
+ 'category_title_linkable' => '1', //
53
+ 'category_title_color' => '#000000', //
54
+ //'category_title_max_characters' => '15', // limit_title, count_character
55
+
56
+ 'product_description_disp' => '1', //show_description
57
+ 'product_description_color' => '#000000',
58
+ 'product_description_max_characters' => '100', //description_max
59
+
60
+ 'product_details_page_link_disp' => '1', //show_read_more_link
61
+ 'product_details_page_link_text' => 'See details', //read_more_text
62
+ 'product_links_target' => '_self', //target
63
+ 'product_price_disp' => '1', //show_price
64
+
65
+ //'count_character' => '1',
66
+ 'product_view_all_link_disp' => '1', //show_all_products
67
+ 'product_view_all_link_text' => '++View all', //view_all_text
68
+
69
+ 'include_jquery' => '1',
70
+ 'pretext' => '',
71
+ 'posttext' => ''
72
+
73
+ /**config_fields**/
74
+ );
75
+ }
76
+
77
+ function get($attributes=array())
78
+ {
79
+ $data = $this->defaults;
80
+ $general = Mage::getStoreConfig("categoryshowcase_cfg/general");
81
+ $module_setting = Mage::getStoreConfig("categoryshowcase_cfg/module_setting");
82
+ $product_selection = Mage::getStoreConfig("categoryshowcase_cfg/product_selection");
83
+ $product_display_setting = Mage::getStoreConfig("categoryshowcase_cfg/product_display_setting");
84
+ $advanced = Mage::getStoreConfig("categoryshowcase_cfg/advanced");
85
+ if (!is_array($attributes)) {
86
+ $attributes = array($attributes);
87
+ }
88
+ if (is_array($general)) $data = array_merge($data, $general);
89
+ if (is_array($module_setting)) $data = array_merge($data, $module_setting);
90
+ if (is_array($product_selection)) $data = array_merge($data, $product_selection);
91
+ if (is_array($product_display_setting)) $data = array_merge($data, $product_display_setting);
92
+ if (is_array($advanced)) $data = array_merge($data, $advanced);
93
+
94
+ return array_merge($data, $attributes);;
95
+ }
96
+ }
97
+ ?>
app/code/local/Smartaddons/CategoryShowcase/Helper/Utils.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Helper_Utils extends Mage_Core_Helper_Abstract {
11
+ public function getTargetAttr($type=''){
12
+ $attribs = '';
13
+ switch($type){
14
+ default:
15
+ case '0':
16
+ case '':
17
+ break;
18
+ case '1':
19
+ case '_blank':
20
+ $attribs = "target=\"_blank\"";
21
+ break;
22
+ case '2':
23
+ case '_popup':
24
+ $attribs = "onclick=\"window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,false');return false;\"";
25
+ break;
26
+ }
27
+ return $attribs;
28
+ }
29
+ }
30
+ ?>
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/LinkTargets.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_LinkTargets
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value'=>'_self', 'label'=>Mage::helper('categoryshowcase')->__('Same Window')),
16
+ array('value'=>'_blank','label'=>Mage::helper('categoryshowcase')->__('New Window')),
17
+ array('value'=>'_popup','label'=>Mage::helper('categoryshowcase')->__('Popup Window'))
18
+ );
19
+ }
20
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListCategory.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_ListCategory
11
+ {
12
+ public function toOptionArray($addEmpty = true)
13
+ {
14
+ $options = array();
15
+
16
+ $collection = Mage::getResourceModel('catalog/category_collection');
17
+ $collection->addAttributeToSelect('name')->addPathFilter('^1/[0-9/]+')->load();
18
+ $cats = array();
19
+
20
+ foreach ($collection as $category) {
21
+ $c = new stdClass();
22
+ $c->label = $category->getName();
23
+ $c->value = $category->getId();
24
+ $c->level = $category->getLevel();
25
+ $c->parentid = $category->getParentId();
26
+ $cats[$c->value] = $c;
27
+ }
28
+
29
+ foreach($cats as $id => $c){
30
+ if (isset($cats[$c->parentid])){
31
+ if (!isset($cats[$c->parentid]->child)){
32
+ $cats[$c->parentid]->child = array();
33
+ }
34
+ $cats[$c->parentid]->child[] =& $cats[$id];
35
+ }
36
+ }
37
+ foreach($cats as $id => $c){
38
+ if (!isset($cats[$c->parentid])){
39
+ $stack = array($cats[$id]);
40
+ while( count($stack)>0 ){
41
+ $opt = array_pop($stack);
42
+ $option = array(
43
+ 'label' => ($opt->level>1 ? str_repeat('- - ', $opt->level-1) : '') . $opt->label,
44
+ 'value' => $opt->value
45
+ );
46
+ array_push($options, $option);
47
+ if (isset($opt->child) && count($opt->child)){
48
+ foreach(array_reverse($opt->child) as $child){
49
+ array_push($stack, $child);
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ unset($cats);
56
+ return $options;
57
+ }
58
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListEffectType.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+
11
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_ListEffectType
12
+ {
13
+ public function toOptionArray()
14
+ {
15
+ return array(
16
+ array('value'=>'fade', 'label'=>Mage::helper('categoryshowcase')->__('Fade')),
17
+ array('value'=>'fadeZoom', 'label'=>Mage::helper('categoryshowcase')->__('Fade Zoom')),
18
+ array('value'=>'zoom', 'label'=>Mage::helper('categoryshowcase')->__('Zoom')),
19
+
20
+ array('value'=>'shuffle', 'label'=>Mage::helper('categoryshowcase')->__('Shuffle')),
21
+ array('value'=>'toss', 'label'=>Mage::helper('categoryshowcase')->__('Toss')),
22
+ array('value'=>'wipe', 'label'=>Mage::helper('categoryshowcase')->__('Wipe')),
23
+
24
+ array('value'=>'cover', 'label'=>Mage::helper('categoryshowcase')->__('Cover')),
25
+ array('value'=>'uncover', 'label'=>Mage::helper('categoryshowcase')->__('Uncover')),
26
+ array('value'=>'blindX', 'label'=>Mage::helper('categoryshowcase')->__('Blind X')),
27
+
28
+ array('value'=>'blindY', 'label'=>Mage::helper('categoryshowcase')->__('Blind Y')),
29
+ array('value'=>'blindZ', 'label'=>Mage::helper('categoryshowcase')->__('Blind Z')),
30
+ array('value'=>'growY', 'label'=>Mage::helper('categoryshowcase')->__('Grow Y')),
31
+
32
+ array('value'=>'curtainX', 'label'=>Mage::helper('categoryshowcase')->__('Curtain X')),
33
+ array('value'=>'curtainY', 'label'=>Mage::helper('categoryshowcase')->__('Curtain Y')),
34
+ array('value'=>'slideX', 'label'=>Mage::helper('categoryshowcase')->__('Slide X')),
35
+
36
+ array('value'=>'slideY', 'label'=>Mage::helper('categoryshowcase')->__('Slide Y')),
37
+ array('value'=>'turnUp', 'label'=>Mage::helper('categoryshowcase')->__('Turn Up')),
38
+ array('value'=>'turnDown', 'label'=>Mage::helper('categoryshowcase')->__('Turn Down')),
39
+
40
+ array('value'=>'turnLeft', 'label'=>Mage::helper('categoryshowcase')->__('Turn Left')),
41
+ array('value'=>'turnRight', 'label'=>Mage::helper('categoryshowcase')->__('Turn Right')),
42
+ array('value'=>'scrollRight', 'label'=>Mage::helper('categoryshowcase')->__('Scroll Right')),
43
+
44
+ array('value'=>'scrollLeft', 'label'=>Mage::helper('categoryshowcase')->__('Scroll Left')),
45
+ array('value'=>'scrollUp', 'label'=>Mage::helper('categoryshowcase')->__('Scroll Up')),
46
+ array('value'=>'scrollDown', 'label'=>Mage::helper('categoryshowcase')->__('Scroll Down')),
47
+
48
+ array('value'=>'random', 'label'=>Mage::helper('categoryshowcase')->__('Random')),
49
+ );
50
+ }
51
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ListTheme.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_ListTheme
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value'=>'theme1', 'label'=>Mage::helper('categoryshowcase')->__('Theme 01')),
16
+ array('value'=>'theme2', 'label'=>Mage::helper('categoryshowcase')->__('Theme 02')),
17
+ array('value'=>'theme3', 'label'=>Mage::helper('categoryshowcase')->__('Theme 03')),
18
+ array('value'=>'theme4', 'label'=>Mage::helper('categoryshowcase')->__('Theme 04')),
19
+ );
20
+ }
21
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/OrderBy.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_OrderBy
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value' => 'position', 'label' => Mage::helper('categoryshowcase')->__('Position')),
16
+ array('value' => 'created_at', 'label' => Mage::helper('categoryshowcase')->__('Date Created')),
17
+ array('value' => 'name', 'label' => Mage::helper('categoryshowcase')->__('Name')),
18
+ array('value' => 'price', 'label' => Mage::helper('categoryshowcase')->__('Price')),
19
+ array('value' => 'random', 'label' => Mage::helper('categoryshowcase')->__('Random')),
20
+ array('value' => 'top_rating', 'label' => Mage::helper('categoryshowcase')->__('Top Rating')),
21
+ array('value' => 'most_reviewed', 'label' => Mage::helper('categoryshowcase')->__('Most Reviews')),
22
+ array('value' => 'most_viewed', 'label' => Mage::helper('categoryshowcase')->__('Most Visited')),
23
+ array('value' => 'best_sales', 'label' => Mage::helper('categoryshowcase')->__('Most Selling')),
24
+ );
25
+ }
26
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/OrderDirection.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_OrderDirection
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value' => 'asc', 'label' => Mage::helper('categoryshowcase')->__('Asc')),
16
+ array('value' => 'desc', 'label' => Mage::helper('categoryshowcase')->__('Desc'))
17
+ );
18
+ }
19
+ }
app/code/local/Smartaddons/CategoryShowcase/Model/System/Config/Source/ProductSources.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_Model_System_Config_Source_ProductSources
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value'=>'catalog', 'label'=>Mage::helper('categoryshowcase')->__('Catalog')),
16
+ array('value'=>'product', 'label'=>Mage::helper('categoryshowcase')->__('Product'))
17
+ );
18
+ }
19
+ }
app/code/local/Smartaddons/CategoryShowcase/controllers/IndexController.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ class Smartaddons_CategoryShowcase_IndexController extends Mage_Core_Controller_Front_Action{
11
+ public function IndexAction() {
12
+ $this->loadLayout();
13
+ $this->renderLayout();
14
+ }
15
+ }
app/code/local/Smartaddons/CategoryShowcase/etc/config.xml ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <global>
4
+ <models>
5
+ <categoryshowcase>
6
+ <class>Smartaddons_CategoryShowcase_Model</class>
7
+ </categoryshowcase>
8
+ </models>
9
+ <blocks>
10
+ <categoryshowcase>
11
+ <class>Smartaddons_CategoryShowcase_Block</class>
12
+ </categoryshowcase>
13
+ </blocks>
14
+ <helpers>
15
+ <categoryshowcase>
16
+ <class>Smartaddons_CategoryShowcase_Helper</class>
17
+ </categoryshowcase>
18
+ </helpers>
19
+ <resources>
20
+ <categoryshowcase_setup>
21
+ <setup>
22
+ <module>Smartaddons_CategoryShowcase</module>
23
+ </setup>
24
+ </categoryshowcase_setup>
25
+ </resources>
26
+ </global>
27
+ <frontend>
28
+ <routers>
29
+ <categoryshowcase>
30
+ <use>standard</use>
31
+ <args>
32
+ <module>Smartaddons_CategoryShowcase</module>
33
+ <frontName>categoryshowcase</frontName>
34
+ </args>
35
+ </categoryshowcase>
36
+ </routers>
37
+ <layout>
38
+ <updates>
39
+ <categoryshowcase module="Smartaddons_CategoryShowcase">
40
+ <file>smartaddons/categoryshowcase.xml</file>
41
+ </categoryshowcase>
42
+ </updates>
43
+ </layout>
44
+ <translate>
45
+ <modules>
46
+ <Smartaddons_CategoryShowcase>
47
+ <files>
48
+ <default>Smartaddons_CategoryShowcase.csv</default>
49
+ </files>
50
+ </Smartaddons_CategoryShowcase>
51
+ </modules>
52
+ </translate>
53
+ </frontend>
54
+ <adminhtml>
55
+ <translate>
56
+ <modules>
57
+ <Smartaddons_CategoryShowcase>
58
+ <files>
59
+ <default>Smartaddons_CategoryShowcase.csv</default>
60
+ </files>
61
+ </Smartaddons_CategoryShowcase>
62
+ </modules>
63
+ </translate>
64
+ <acl>
65
+ <resources>
66
+ <admin>
67
+ <children>
68
+ <system>
69
+ <children>
70
+ <config>
71
+ <children>
72
+ <categoryshowcase_cfg translate="title" module="categoryshowcase">
73
+ <title>SM CategoryShowcase Settings</title>
74
+ </categoryshowcase_cfg>
75
+ </children>
76
+ </config>
77
+ </children>
78
+ </system>
79
+ </children>
80
+ </admin>
81
+ </resources>
82
+ </acl>
83
+ </adminhtml>
84
+ <default>
85
+ <categoryshowcase_cfg>
86
+ <general>
87
+ <isenabled>1</isenabled>
88
+ <title>SM CategoryShowcase</title>
89
+ </general>
90
+
91
+ <module_setting>
92
+ <module_width>600</module_width>
93
+ <theme>theme1</theme>
94
+ <num_cols>2</num_cols>
95
+ <width_cols>250</width_cols>
96
+ <auto_play>1</auto_play>
97
+ <animation>fade</animation>
98
+ <interval>2000</interval>
99
+ <duration>600</duration>
100
+ </module_setting>
101
+
102
+ <product_selection>
103
+ <product_category>3</product_category>
104
+ <product_order_by></product_order_by>
105
+ <product_order_dir></product_order_dir>
106
+ <product_limitation>4</product_limitation>
107
+ </product_selection>
108
+
109
+ <product_display_setting>
110
+ <product_image_disp>1</product_image_disp>
111
+ <product_image_linkable>1</product_image_linkable>
112
+ <product_image_width>70</product_image_width>
113
+ <product_image_height>70</product_image_height>
114
+
115
+ <product_title_disp>1</product_title_disp>
116
+ <product_title_linkable>1</product_title_linkable>
117
+ <product_title_color>#000000</product_title_color>
118
+ <product_title_max_characters>15</product_title_max_characters>
119
+
120
+ <category_image_linkable>1</category_image_linkable>
121
+ <category_image_width>400</category_image_width>
122
+ <category_image_height>400</category_image_height>
123
+
124
+ <category_title_disp>1</category_title_disp>
125
+ <category_title_linkable>1</category_title_linkable>
126
+ <category_title_color>#000000</category_title_color>
127
+
128
+ <product_description_disp>1</product_description_disp>
129
+ <product_description_color>#000000</product_description_color>
130
+ <product_description_max_characters>25</product_description_max_characters>
131
+
132
+ <product_details_page_link_disp>1</product_details_page_link_disp>
133
+ <product_details_page_link_text>See details</product_details_page_link_text>
134
+ <product_view_all_link_disp>1</product_view_all_link_disp>
135
+ <product_view_all_link_text>View all</product_view_all_link_text>
136
+ <product_links_target>_self</product_links_target>
137
+ <product_price_disp>1</product_price_disp>
138
+ </product_display_setting>
139
+
140
+ <advanced>
141
+ <include_jquery>1</include_jquery>
142
+ <pretext></pretext>
143
+ <posttext></posttext>
144
+ </advanced>
145
+ </categoryshowcase_cfg>
146
+ </default>
147
+ </config>
app/code/local/Smartaddons/CategoryShowcase/etc/system.xml ADDED
@@ -0,0 +1,508 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <smartaddons>
5
+ <label>SmartAddons.com</label>
6
+ <sort_order>205</sort_order>
7
+ </smartaddons>
8
+ </tabs>
9
+ <sections>
10
+ <categoryshowcase_cfg translate="label" module="categoryshowcase">
11
+ <label>SM CategoryShowcase</label>
12
+ <tab>smartaddons</tab>
13
+ <frontend_type>text</frontend_type>
14
+ <sort_order>150</sort_order>
15
+ <show_in_default>1</show_in_default>
16
+ <show_in_website>1</show_in_website>
17
+ <show_in_store>1</show_in_store>
18
+ <groups>
19
+ <!-- start general group -->
20
+ <general translate="label">
21
+ <label>General settings</label>
22
+ <frontend_type>text</frontend_type>
23
+ <sort_order>10</sort_order>
24
+ <show_in_default>1</show_in_default>
25
+ <show_in_website>1</show_in_website>
26
+ <show_in_store>1</show_in_store>
27
+ <fields>
28
+ <isenabled translate="label" module="core">
29
+ <label>Enabled</label>
30
+ <sort_order>10</sort_order>
31
+ <frontend_type>select</frontend_type>
32
+ <source_model>adminhtml/system_config_source_yesno</source_model>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>1</show_in_store>
36
+ </isenabled>
37
+ <title translate="label">
38
+ <label>Title</label>
39
+ <frontend_type>text</frontend_type>
40
+ <sort_order>20</sort_order>
41
+ <show_in_default>1</show_in_default>
42
+ <show_in_website>1</show_in_website>
43
+ <show_in_store>1</show_in_store>
44
+ </title>
45
+ </fields>
46
+ </general>
47
+ <!-- end general group -->
48
+
49
+ <!-- start module setting group -->
50
+ <module_setting translate="label">
51
+ <label>Module settings</label>
52
+ <frontend_type>text</frontend_type>
53
+ <sort_order>15</sort_order>
54
+ <show_in_default>1</show_in_default>
55
+ <show_in_website>1</show_in_website>
56
+ <show_in_store>1</show_in_store>
57
+ <fields>
58
+ <module_width translate="label" module="core">
59
+ <label>Width of module</label>
60
+ <sort_order>10</sort_order>
61
+ <validate>validate-greater-than-zero</validate>
62
+ <frontend_type>text</frontend_type>
63
+ <show_in_default>1</show_in_default>
64
+ <show_in_website>1</show_in_website>
65
+ <show_in_store>1</show_in_store>
66
+ </module_width>
67
+ <theme translate="label">
68
+ <label>Select template</label>
69
+ <frontend_type>select</frontend_type>
70
+ <source_model>categoryshowcase/system_config_source_listTheme</source_model>
71
+ <sort_order>20</sort_order>
72
+ <show_in_default>1</show_in_default>
73
+ <show_in_website>1</show_in_website>
74
+ <show_in_store>1</show_in_store>
75
+ </theme>
76
+ <auto_play translate="label">
77
+ <label>Auto Play</label>
78
+ <sort_order>22</sort_order>
79
+ <frontend_type>select</frontend_type>
80
+ <source_model>adminhtml/system_config_source_yesno</source_model>
81
+ <show_in_default>1</show_in_default>
82
+ <show_in_website>1</show_in_website>
83
+ <show_in_store>1</show_in_store>
84
+ </auto_play>
85
+ <animation translate="label">
86
+ <label>Select Effect</label>
87
+ <sort_order>25</sort_order>
88
+ <frontend_type>select</frontend_type>
89
+ <source_model>categoryshowcase/system_config_source_listEffectType</source_model>
90
+ <show_in_default>1</show_in_default>
91
+ <show_in_website>1</show_in_website>
92
+ <show_in_store>1</show_in_store>
93
+ </animation>
94
+ <interval translate="label">
95
+ <label>Interval</label>
96
+ <frontend_type>text</frontend_type>
97
+ <sort_order>27</sort_order>
98
+ <comment>Timer speed</comment>
99
+ <validate>validate-greater-than-zero</validate>
100
+ <show_in_default>1</show_in_default>
101
+ <show_in_website>1</show_in_website>
102
+ <show_in_store>1</show_in_store>
103
+ </interval>
104
+ <duration translate="label">
105
+ <label>Duration</label>
106
+ <frontend_type>text</frontend_type>
107
+ <sort_order>28</sort_order>
108
+ <comment>Slideshow speed</comment>
109
+ <validate>validate-greater-than-zero</validate>
110
+ <show_in_default>1</show_in_default>
111
+ <show_in_website>1</show_in_website>
112
+ <show_in_store>1</show_in_store>
113
+ </duration>
114
+ <num_cols translate="label">
115
+ <label>Total colums of products ***</label>
116
+ <frontend_type>text</frontend_type>
117
+ <sort_order>29</sort_order>
118
+ <comment>*** Total colums of products which you want to show in Theme3 and Theme4</comment>
119
+ <validate>validate-greater-than-zero</validate>
120
+ <show_in_default>1</show_in_default>
121
+ <show_in_website>1</show_in_website>
122
+ <show_in_store>1</show_in_store>
123
+ </num_cols>
124
+ <width_cols translate="label">
125
+ <label>Width of products colum</label>
126
+ <frontend_type>text</frontend_type>
127
+ <sort_order>30</sort_order>
128
+ <validate>validate-greater-than-zero</validate>
129
+ <show_in_default>1</show_in_default>
130
+ <show_in_website>1</show_in_website>
131
+ <show_in_store>1</show_in_store>
132
+ </width_cols>
133
+ </fields>
134
+ </module_setting>
135
+ <!-- end module setting group -->
136
+
137
+ <!-- start product_selection group -->
138
+ <product_selection translate="label">
139
+ <expanded>1</expanded>
140
+ <label>Product selection</label>
141
+ <frontend_type>text</frontend_type>
142
+ <sort_order>20</sort_order>
143
+ <show_in_default>1</show_in_default>
144
+ <show_in_website>1</show_in_website>
145
+ <show_in_store>1</show_in_store>
146
+ <fields>
147
+ <!--<product_source translate="label">
148
+ <label>Product source</label>
149
+ <frontend_type>select</frontend_type>
150
+ <source_model>categoryshowcase/system_config_source_productSources</source_model>
151
+ <sort_order>10</sort_order>
152
+ <show_in_default>1</show_in_default>
153
+ <show_in_website>1</show_in_website>
154
+ <show_in_store>1</show_in_store>
155
+ </product_source>-->
156
+ <product_category translate="label">
157
+ <label>Select category</label>
158
+ <frontend_type>multiselect</frontend_type>
159
+ <source_model>categoryshowcase/system_config_source_listCategory</source_model>
160
+ <comment>This is not effect on category views and product views.</comment>
161
+ <sort_order>20</sort_order>
162
+ <show_in_default>1</show_in_default>
163
+ <show_in_website>1</show_in_website>
164
+ <show_in_store>1</show_in_store>
165
+ </product_category>
166
+ <product_order_by translate="label">
167
+ <label>Product order by</label>
168
+ <frontend_type>select</frontend_type>
169
+ <source_model>categoryshowcase/system_config_source_orderBy</source_model>
170
+ <sort_order>40</sort_order>
171
+ <show_in_default>1</show_in_default>
172
+ <show_in_website>1</show_in_website>
173
+ <show_in_store>1</show_in_store>
174
+ </product_order_by>
175
+ <product_order_dir translate="label">
176
+ <label>Product order dir</label>
177
+ <frontend_type>select</frontend_type>
178
+ <source_model>categoryshowcase/system_config_source_orderDirection</source_model>
179
+ <sort_order>50</sort_order>
180
+ <show_in_default>1</show_in_default>
181
+ <show_in_website>1</show_in_website>
182
+ <show_in_store>1</show_in_store>
183
+ </product_order_dir>
184
+ <product_limitation translate="label">
185
+ <label>Product limitation</label>
186
+ <frontend_type>text</frontend_type>
187
+ <sort_order>60</sort_order>
188
+ <validate>validate-greater-than-zero</validate>
189
+ <show_in_default>1</show_in_default>
190
+ <show_in_website>1</show_in_website>
191
+ <show_in_store>1</show_in_store>
192
+ </product_limitation>
193
+ </fields>
194
+ </product_selection>
195
+
196
+ <product_display_setting translate="label">
197
+ <label>Products settings</label>
198
+ <frontend_type>text</frontend_type>
199
+ <sort_order>40</sort_order>
200
+ <show_in_default>1</show_in_default>
201
+ <show_in_website>1</show_in_website>
202
+ <show_in_store>1</show_in_store>
203
+
204
+ <fields>
205
+ <product_image_heading translate="label">
206
+ <label>Product image</label>
207
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
208
+ <sort_order>10</sort_order>
209
+ <show_in_default>1</show_in_default>
210
+ </product_image_heading>
211
+ <product_image_disp translate="label">
212
+ <label>Display</label>
213
+ <frontend_type>select</frontend_type>
214
+ <source_model>adminhtml/system_config_source_yesno</source_model>
215
+ <sort_order>20</sort_order>
216
+ <show_in_default>1</show_in_default>
217
+ <show_in_website>1</show_in_website>
218
+ <show_in_store>1</show_in_store>
219
+ </product_image_disp>
220
+ <product_image_linkable translate="label">
221
+ <label>Linkable</label>
222
+ <frontend_type>select</frontend_type>
223
+ <source_model>adminhtml/system_config_source_yesno</source_model>
224
+ <sort_order>30</sort_order>
225
+ <show_in_default>1</show_in_default>
226
+ <show_in_website>1</show_in_website>
227
+ <show_in_store>1</show_in_store>
228
+ </product_image_linkable>
229
+ <product_image_width translate="label">
230
+ <label>Image width</label>
231
+ <frontend_type>text</frontend_type>
232
+ <sort_order>40</sort_order>
233
+ <validate>validate-greater-than-zero</validate>
234
+ <show_in_default>1</show_in_default>
235
+ <show_in_website>1</show_in_website>
236
+ <show_in_store>1</show_in_store>
237
+ </product_image_width>
238
+ <product_image_height translate="label">
239
+ <label>Image height</label>
240
+ <frontend_type>text</frontend_type>
241
+ <sort_order>50</sort_order>
242
+ <validate>validate-greater-than-zero</validate>
243
+ <show_in_default>1</show_in_default>
244
+ <show_in_website>1</show_in_website>
245
+ <show_in_store>1</show_in_store>
246
+ </product_image_height>
247
+
248
+ <product_title_heading translate="label">
249
+ <label>Product title</label>
250
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
251
+ <sort_order>100</sort_order>
252
+ <show_in_default>1</show_in_default>
253
+ </product_title_heading>
254
+ <product_title_disp translate="label">
255
+ <label>Display</label>
256
+ <frontend_type>select</frontend_type>
257
+ <source_model>adminhtml/system_config_source_yesno</source_model>
258
+ <sort_order>110</sort_order>
259
+ <show_in_default>1</show_in_default>
260
+ <show_in_website>1</show_in_website>
261
+ <show_in_store>1</show_in_store>
262
+ </product_title_disp>
263
+ <product_title_linkable translate="label">
264
+ <label>Linkable</label>
265
+ <frontend_type>select</frontend_type>
266
+ <source_model>adminhtml/system_config_source_yesno</source_model>
267
+ <sort_order>120</sort_order>
268
+ <show_in_default>1</show_in_default>
269
+ <show_in_website>1</show_in_website>
270
+ <show_in_store>1</show_in_store>
271
+ </product_title_linkable>
272
+ <product_title_color translate="label">
273
+ <label>Text color</label>
274
+ <frontend_type>text</frontend_type>
275
+ <sort_order>130</sort_order>
276
+ <show_in_default>1</show_in_default>
277
+ <show_in_website>1</show_in_website>
278
+ <show_in_store>1</show_in_store>
279
+ </product_title_color>
280
+ <product_title_max_characters translate="label">
281
+ <label>Max characters</label>
282
+ <frontend_type>text</frontend_type>
283
+ <sort_order>140</sort_order>
284
+ <validate>validate-greater-than-zero</validate>
285
+ <show_in_default>1</show_in_default>
286
+ <show_in_website>1</show_in_website>
287
+ <show_in_store>1</show_in_store>
288
+ </product_title_max_characters>
289
+
290
+ <category_image_heading translate="label">
291
+ <label>Category image</label>
292
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
293
+ <sort_order>141</sort_order>
294
+ <show_in_default>1</show_in_default>
295
+ </category_image_heading>
296
+ <!--<category_image_disp translate="label">
297
+ <label>Display</label>
298
+ <frontend_type>select</frontend_type>
299
+ <source_model>adminhtml/system_config_source_yesno</source_model>
300
+ <sort_order>142</sort_order>
301
+ <show_in_default>1</show_in_default>
302
+ <show_in_website>1</show_in_website>
303
+ <show_in_store>1</show_in_store>
304
+ </category_image_disp>-->
305
+ <category_image_linkable translate="label">
306
+ <label>Linkable</label>
307
+ <frontend_type>select</frontend_type>
308
+ <source_model>adminhtml/system_config_source_yesno</source_model>
309
+ <sort_order>142</sort_order>
310
+ <show_in_default>1</show_in_default>
311
+ <show_in_website>1</show_in_website>
312
+ <show_in_store>1</show_in_store>
313
+ </category_image_linkable>
314
+ <category_image_width translate="label">
315
+ <label>Image width</label>
316
+ <frontend_type>text</frontend_type>
317
+ <sort_order>143</sort_order>
318
+ <validate>validate-greater-than-zero</validate>
319
+ <show_in_default>1</show_in_default>
320
+ <show_in_website>1</show_in_website>
321
+ <show_in_store>1</show_in_store>
322
+ </category_image_width>
323
+ <category_image_height translate="label">
324
+ <label>Image height</label>
325
+ <frontend_type>text</frontend_type>
326
+ <sort_order>144</sort_order>
327
+ <validate>validate-greater-than-zero</validate>
328
+ <show_in_default>1</show_in_default>
329
+ <show_in_website>1</show_in_website>
330
+ <show_in_store>1</show_in_store>
331
+ </category_image_height>
332
+
333
+ <category_title_heading translate="label">
334
+ <label>Category title</label>
335
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
336
+ <sort_order>145</sort_order>
337
+ <show_in_default>1</show_in_default>
338
+ </category_title_heading>
339
+ <category_title_disp translate="label">
340
+ <label>Display</label>
341
+ <frontend_type>select</frontend_type>
342
+ <source_model>adminhtml/system_config_source_yesno</source_model>
343
+ <sort_order>146</sort_order>
344
+ <show_in_default>1</show_in_default>
345
+ <show_in_website>1</show_in_website>
346
+ <show_in_store>1</show_in_store>
347
+ </category_title_disp>
348
+ <category_title_linkable translate="label">
349
+ <label>Linkable</label>
350
+ <frontend_type>select</frontend_type>
351
+ <source_model>adminhtml/system_config_source_yesno</source_model>
352
+ <sort_order>147</sort_order>
353
+ <show_in_default>1</show_in_default>
354
+ <show_in_website>1</show_in_website>
355
+ <show_in_store>1</show_in_store>
356
+ </category_title_linkable>
357
+ <category_title_color translate="label">
358
+ <label>Text color</label>
359
+ <frontend_type>text</frontend_type>
360
+ <sort_order>148</sort_order>
361
+ <show_in_default>1</show_in_default>
362
+ <show_in_website>1</show_in_website>
363
+ <show_in_store>1</show_in_store>
364
+ </category_title_color>
365
+ <!--<product_title_max_characters translate="label">
366
+ <label>Max characters</label>
367
+ <frontend_type>text</frontend_type>
368
+ <sort_order>140</sort_order>
369
+ <validate>validate-greater-than-zero</validate>
370
+ <show_in_default>1</show_in_default>
371
+ <show_in_website>1</show_in_website>
372
+ <show_in_store>1</show_in_store>
373
+ </product_title_max_characters>-->
374
+
375
+ <product_description_heading translate="label">
376
+ <label>Product description</label>
377
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
378
+ <sort_order>200</sort_order>
379
+ <show_in_default>1</show_in_default>
380
+ </product_description_heading>
381
+ <product_description_disp translate="label">
382
+ <label>Display</label>
383
+ <frontend_type>select</frontend_type>
384
+ <source_model>adminhtml/system_config_source_yesno</source_model>
385
+ <sort_order>210</sort_order>
386
+ <show_in_default>1</show_in_default>
387
+ <show_in_website>1</show_in_website>
388
+ <show_in_store>1</show_in_store>
389
+ </product_description_disp>
390
+ <product_description_color translate="label">
391
+ <label>Text color</label>
392
+ <frontend_type>text</frontend_type>
393
+ <sort_order>220</sort_order>
394
+ <show_in_default>1</show_in_default>
395
+ <show_in_website>1</show_in_website>
396
+ <show_in_store>1</show_in_store>
397
+ </product_description_color>
398
+ <product_description_max_characters translate="label">
399
+ <label>Max characters</label>
400
+ <frontend_type>text</frontend_type>
401
+ <sort_order>230</sort_order>
402
+ <validate>validate-greater-than-zero</validate>
403
+ <show_in_default>1</show_in_default>
404
+ <show_in_website>1</show_in_website>
405
+ <show_in_store>1</show_in_store>
406
+ </product_description_max_characters>
407
+
408
+ <product_other_infomations_heading translate="label">
409
+ <label>Others</label>
410
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
411
+ <sort_order>300</sort_order>
412
+ <show_in_default>1</show_in_default>
413
+ </product_other_infomations_heading>
414
+ <product_links_target translate="label">
415
+ <label>Link target</label>
416
+ <frontend_type>select</frontend_type>
417
+ <source_model>categoryshowcase/system_config_source_linkTargets</source_model>
418
+ <sort_order>310</sort_order>
419
+ <show_in_default>1</show_in_default>
420
+ <show_in_website>1</show_in_website>
421
+ <show_in_store>1</show_in_store>
422
+ </product_links_target>
423
+ <product_price_disp translate="label">
424
+ <label>Display price</label>
425
+ <frontend_type>select</frontend_type>
426
+ <source_model>adminhtml/system_config_source_yesno</source_model>
427
+ <sort_order>320</sort_order>
428
+ <show_in_default>1</show_in_default>
429
+ <show_in_website>1</show_in_website>
430
+ <show_in_store>1</show_in_store>
431
+ </product_price_disp>
432
+
433
+ <product_details_page_link_disp translate="label">
434
+ <label>Display product detail link</label>
435
+ <frontend_type>select</frontend_type>
436
+ <source_model>adminhtml/system_config_source_yesno</source_model>
437
+ <sort_order>380</sort_order>
438
+ <show_in_default>1</show_in_default>
439
+ <show_in_website>1</show_in_website>
440
+ <show_in_store>1</show_in_store>
441
+ </product_details_page_link_disp>
442
+ <product_details_page_link_text translate="label">
443
+ <label>Product detail link caption</label>
444
+ <frontend_type>text</frontend_type>
445
+ <sort_order>390</sort_order>
446
+ <show_in_default>1</show_in_default>
447
+ <show_in_website>1</show_in_website>
448
+ <show_in_store>1</show_in_store>
449
+ </product_details_page_link_text>
450
+ <product_view_all_link_disp translate="label">
451
+ <label>Display product view all link</label>
452
+ <frontend_type>select</frontend_type>
453
+ <source_model>adminhtml/system_config_source_yesno</source_model>
454
+ <sort_order>400</sort_order>
455
+ <show_in_default>1</show_in_default>
456
+ <show_in_website>1</show_in_website>
457
+ <show_in_store>1</show_in_store>
458
+ </product_view_all_link_disp>
459
+ <product_view_all_link_text translate="label">
460
+ <label>Product view all link caption</label>
461
+ <frontend_type>text</frontend_type>
462
+ <sort_order>410</sort_order>
463
+ <show_in_default>1</show_in_default>
464
+ <show_in_website>1</show_in_website>
465
+ <show_in_store>1</show_in_store>
466
+ </product_view_all_link_text>
467
+ </fields>
468
+ </product_display_setting>
469
+
470
+ <advanced translate="label">
471
+ <label>Advanced settings</label>
472
+ <frontend_type>text</frontend_type>
473
+ <sort_order>45</sort_order>
474
+ <show_in_default>1</show_in_default>
475
+ <show_in_website>1</show_in_website>
476
+ <show_in_store>1</show_in_store>
477
+ <fields>
478
+ <include_jquery translate="label">
479
+ <label>Include jQuery</label>
480
+ <frontend_type>select</frontend_type>
481
+ <source_model>adminhtml/system_config_source_yesno</source_model>
482
+ <sort_order>10</sort_order>
483
+ <show_in_default>1</show_in_default>
484
+ <show_in_website>1</show_in_website>
485
+ <show_in_store>1</show_in_store>
486
+ </include_jquery>
487
+ <pretext translate="label">
488
+ <label>Pre-text</label>
489
+ <frontend_type>textarea</frontend_type>
490
+ <sort_order>20</sort_order>
491
+ <show_in_default>1</show_in_default>
492
+ <show_in_website>1</show_in_website>
493
+ <show_in_store>1</show_in_store>
494
+ </pretext>
495
+ <posttext translate="label">
496
+ <label>Post-text</label>
497
+ <frontend_type>textarea</frontend_type>
498
+ <sort_order>30</sort_order>
499
+ <show_in_default>1</show_in_default>
500
+ <show_in_website>1</show_in_website>
501
+ <show_in_store>1</show_in_store>
502
+ </posttext>
503
+ </fields>
504
+ </advanced>
505
+ </groups>
506
+ </categoryshowcase_cfg>
507
+ </sections>
508
+ </config>
app/design/frontend/default/default/layout/smartaddons/categoryshowcase.xml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="1.0">
3
+ <default>
4
+ <reference name="head">
5
+ <action method="addCss"><stylesheet>smartaddons/categoryshowcase/css/style.css</stylesheet></action>
6
+ <action method="addItem"><type>skin_css</type><name>smartaddons/categoryshowcase/css/ie7.css</name><params/><if>IE 7</if></action>
7
+ </reference>
8
+ </default>
9
+ <categoryshowcase_index_index>
10
+ <reference name="root">
11
+ <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
12
+ </reference>
13
+ <reference name="head">
14
+ <action method="addCss"><stylesheet>smartaddons/categoryshowcase/css/style.css</stylesheet></action>
15
+ <action method="addItem"><type>skin_css</type><name>smartaddons/categoryshowcase/css/ie7.css</name><params/><if>IE 7</if></action>
16
+ </reference>
17
+ <reference name="content">
18
+ <block type="categoryshowcase/list" name="categoryshowcase.list.theme1">
19
+ <action method="setConfig">
20
+ <name>
21
+ <theme>theme1</theme>
22
+ </name>
23
+ </action>
24
+ </block>
25
+ </reference>
26
+ </categoryshowcase_index_index>
27
+ </layout>
28
+
app/design/frontend/default/default/template/smartaddons/categoryshowcase/block_template_default.phtml ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*------------------------------------------------------------------------
3
+ # SM CategoryShowcase - Version 1.0
4
+ # Copyright (c) 2009-2011 YouTech Company. All Rights Reserved.
5
+ # @license - Copyrighted Commercial Software
6
+ # Author: YouTech Company
7
+ # Websites: http://www.smartaddons.com
8
+ -------------------------------------------------------------------------*/
9
+
10
+ $products = $this->getProducts();
11
+ $hasData = $products->count() > 0;
12
+
13
+ $options = $this->getConfigObject();
14
+ $sm_helper = Mage::helper('categoryshowcase/utils');
15
+ $instance = rand().time();
16
+
17
+ if($hasData):
18
+ echo $this->getScriptTags();
19
+ endif;
20
+ if (!function_exists(pline)){
21
+ function pline($arg){
22
+ if (!in_array($arg, array(
23
+ 'entity_id',
24
+ 'entity_type_id',
25
+ 'attribute_set_id',
26
+ 'type_id',
27
+ 'sku',
28
+ 'created_at',
29
+ 'updated_at',
30
+ 'has_options',
31
+ 'required_options',
32
+ 'model',
33
+ 'dimension',
34
+ 'description',
35
+ 'short_description',
36
+ 'custom_layout_update',
37
+ 'color',
38
+ 'meta_title',
39
+ 'meta_description',
40
+ 'stock_item',
41
+ 'activation_information',
42
+
43
+ 'minimal_price',
44
+ 'url_key',
45
+ 'thumbnail',
46
+ 'small_image',
47
+ 'image',
48
+ 'meta_keyword ',
49
+ 'status',
50
+ 'tax_class_id',
51
+ 'visibility',
52
+ 'weight',
53
+ 'price',
54
+ 'cost',
55
+ 'gift_message_available',
56
+ 'options_container',
57
+ 'custom_design',
58
+ 'url_path',
59
+ 'is_salable',
60
+ 'meta_keyword',
61
+
62
+ 'in_depth',
63
+ 'model'
64
+ ))){
65
+ $arg = "<b>$arg</b>";
66
+ }
67
+ echo $arg . "<br>";
68
+ };
69
+ }
70
+ if(!function_exists(echoarray)){
71
+ function echoarray($ar){
72
+ $msg = "";
73
+ foreach ($ar as $k => $v) {
74
+ $msg .= $k . " = " . (empty($v)?"(empty)":"<b>$v</b>") . "<br>";
75
+ }
76
+ return $msg;
77
+ };
78
+ }
79
+ ?>
80
+ <style>
81
+ .block {}
82
+ </style>
83
+ <div class="block">
84
+ <?php if (!empty( $options->title )): ?>
85
+ <div class="block-title"><?php echo $options->title; ?></div>
86
+ <?php endif; ?>
87
+
88
+ <div class="block-content">
89
+ <?php if (!empty( $options->pretext )): ?>
90
+ <div class="sm-pretext" <?php echo $mod_style_width; ?>><?php echo $options->pretext; ?></div>
91
+ <?php endif; ?>
92
+
93
+ <!-- TODO: start dump -->
94
+ <div style="text-align: left;padding: 7px 9px;">
95
+ <p><b>Collection Size: <?php echo $products->load()->count(); ?></b></p>
96
+ <p><b>IDs:</b></p>
97
+ <p><?php
98
+ $test_ids = array();
99
+ foreach ($products->getItems() as $id => $p) {
100
+ array_push($test_ids, $id);
101
+ }
102
+ echo join(', ', $test_ids);
103
+ ?></p>
104
+ <p><b>Attributes:</b></p>
105
+ <p><?php array_walk( array_keys($products->getFirstItem()->getData()), 'pline'); ?></p>
106
+ <p><b>Configuration:</b></p>
107
+ <p><?php echo echoarray( $options ); ?></p>
108
+ <p>Query: <br><b><?php echo $products->getSelect(); ?></b></p>
109
+ </div>
110
+ <!-- TODO: end dump here -->
111
+ <!-- remove above code in action ;) -->
112
+
113
+ <?php if ($hasData): ?>
114
+ <!-- wrapper open -->
115
+ <div>
116
+ <?php foreach ($products as $i => $_product): ?>
117
+ <!-- render list here. -->
118
+ <?php endforeach; ?>
119
+ </div>
120
+ <!-- wrapper close -->
121
+ <?php else: ?>
122
+ <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
123
+ <?php endif; ?>
124
+
125
+ <?php if (!empty( $options->posttext )): ?>
126
+ <div class="sm-posttext" <?php echo $mod_style_width; ?>><?php echo $options->posttext; ?></div>
127
+ <?php endif; ?>
128
+ </div>
129
+
130
+ <script type="text/javascript">
131
+ //<CDATA[[
132
+ $jsmart(document).ready(function($){
133
+ $('modulewrapperid').pluginfunction({
134
+ param1: 'value1',
135
+ param2: 'value2',
136
+ param3: 'value3'
137
+ });
138
+ });
139
+ //]]>
140
+ </script>
141
+
142
+ </div>
app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme1.phtml ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*------------------------------------------------------------------------
4
+ # SM CategoryShowcase - Version 1.0
5
+ # Copyright (C) 2009-2011 YouTech Company. All Rights Reserved.
6
+ # @license - Copyrighted Commercial Software
7
+ # Author: YouTech Company
8
+ # Websites: http://www.smartaddons.com
9
+ -------------------------------------------------------------------------*/
10
+
11
+ ?>
12
+ <?php
13
+ $divid = rand().time();
14
+ $smarthelper= Mage::helper('categoryshowcase/utils');
15
+ $items = $this->getCategory();
16
+ $config = $this->getConfigObject();
17
+ $background_color ='#333333';
18
+ $price_color ='#4F962C';
19
+ ?>
20
+ <?php if(count($items)>0):?>
21
+ <?php echo $this->getScriptTags(); ?>
22
+ <style>
23
+ .yt-virtue-category-showcase #caption_<?php echo $divid;?> p a {
24
+ color: #FFFFFF!important;
25
+ text-decoration:none;
26
+ font-family:'BebasNeueRegular';
27
+ }
28
+ .yt-virtue-category-showcase .theme1 ul li.button_img{
29
+ background: <?php echo $background_color;?> no-repeat!important;
30
+ border: 1px solid #ccc;
31
+ width: 20px;
32
+ height: 20px;
33
+ cursor: pointer;
34
+ }
35
+ .yt-virtue-category-showcase .first_item {
36
+ color:#FFFFFF;
37
+ text-decoration:none;
38
+ font-family:'BebasNeueRegular';
39
+ font-size: 1.5em;
40
+ margin-top: 8px;
41
+ }
42
+ </style>
43
+ <script language="javascript">
44
+ //<CDATA[[
45
+ $jsmart(document).ready(function($){
46
+ $('#featured<?php echo $divid;?>').cycle({
47
+ fx: '<?php echo $config['animation'];?>',
48
+ timeout: <?php echo $config['interval'];?>,
49
+ speed: <?php echo $config['duration'];?>,
50
+ next: '#next<?php echo $divid;?>',
51
+ divId: '<?php echo $divid;?>',
52
+ theme:'<?php echo $config['theme'];?>',
53
+ linktarget:'<?php echo $config['product_links_target'];?>',
54
+ //linkcaption:<?php echo $config['product_title_linkable'];?>,
55
+ autoPlay:<?php echo $config['auto_play'];?>
56
+ });
57
+ $('#cover_buttons_<?php echo $divid;?>').children('.opacity1').width($('#cover_buttons_<?php echo $divid;?>').width()+ 5);
58
+ });
59
+ //]]>
60
+ </script>
61
+
62
+ <?php if (!empty($config['title'])): ?>
63
+ <div class="block-title" style="font-size: 16px; font-weight: bold;"><?php echo $config['title']; ?></div>
64
+ <?php endif; ?>
65
+ <!--Intro Text-->
66
+ <?php if($config['pretext']): ?>
67
+ <div style="text-align:left;">
68
+ <?php echo $config['pretext'];?>
69
+ </div>
70
+ <br/>
71
+ <?php endif;?>
72
+ <!--End Intro Text-->
73
+
74
+ <div class="yt-virtue-category-showcase">
75
+ <div class="slide_image" style="width: <?php echo $config['category_image_width'];?>px; height:<?php echo $config['category_image_height'];?>px;">
76
+ <?php
77
+ if ($config['category_title_disp'] ==1) {
78
+ $j=0;
79
+ foreach ($items as $key=>$value) { //'category_id' => array($item1[], $item2[]) ?>
80
+ <div id="caption_<?php echo $divid.$j;?>" class="captions <?php if($j==0) echo "current";?>" style="margin-left: 10px; position: absolute; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
81
+ <div class="caption_left_bg">&nbsp;</div>
82
+ <div class="caption_center_bg" style="bottom:50px;"><?php echo $value['sub_title']; ?></div>
83
+ <div class="caption_right_bg">&nbsp;</div>
84
+ </div>
85
+ <?php $j++;
86
+ }
87
+ } ?>
88
+ <div id="featured<?php echo $divid;?>" style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;">
89
+ <?php
90
+ foreach ($items as $key=>$value){ ?>
91
+ <a href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> onclick="<?php if($config['category_image_linkable']):?>javascript: return true; <?php else: ?>javascript: return false; <?php endif;?>">
92
+ <img alt="<?php echo $value['sub_title'];?>" src="<?php echo $value['thumb_image'];?>" href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" caption="<?php echo strtoupper($value['sub_title']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;"/>
93
+ </a>
94
+ <?php } ?>
95
+ </div>
96
+
97
+ <div id="cover_buttons_<?php echo $divid;?>" class="cover-theme1" style="float:right;right:0px; position:absolute">
98
+ <div style="background:<?php echo $background_color;?>;" class="opacity1">&nbsp;&nbsp;&nbsp;&nbsp;</div>
99
+ <div class="<?php echo $config['theme'];?>">
100
+ <div style="float:left">
101
+ <ul id="image_button_<?php echo $divid;?>">
102
+ <?php
103
+ $j=0;
104
+ foreach ($items as $key=>$value){ ?>
105
+ <li class="<?php echo ($j==0)?"button_img_selected":"button_img";?>" value="<?php echo $j;?>" title="<?php echo strtoupper($value['sub_title']);?>"></li>
106
+ <?php $j++;
107
+ } ?>
108
+ </ul>
109
+ </div>
110
+ <div id="next<?php echo $divid;?>" class="next">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
111
+ </div>
112
+ </div>
113
+ </div> <!-- END slide_image -->
114
+
115
+ <div class="box-wrapper" style="background:<?php echo $background_color;?>; height:<?php echo $config['category_image_height']?>px; width: <?php echo $config['width_cols'];?>px; overflow: hidden;">
116
+ <?php
117
+ //if(!empty($items)){
118
+ $j=0;
119
+ foreach ($items as $key=>$value){ ?>
120
+ <div id="ListChildren_<?php echo $divid.$j;?>" class="content <?php if($j==0) echo "current";?>" style="padding: 10px; overflow: hidden; height:<?php echo ($config['category_image_height'] -30)?>px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
121
+
122
+ <?php foreach ($value['productList'] as $item) { ?>
123
+ <div style="margin-bottom: 10px; overflow:hidden; ">
124
+ <?php if (($config['product_image_disp']==1)&&($item['product_image'] !='')) { ?>
125
+ <div class="images">
126
+ <?php if($config['product_image_linkable']==1) {?>
127
+ <a style="color:<?php echo $config['product_title_color'];?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>>
128
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>/><br>
129
+ </a>
130
+ <?php } else { ?>
131
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>">
132
+ <?php } ?>
133
+ </div>
134
+ <?php } ?>
135
+
136
+ <div class="sub_content">
137
+ <?php if ($config['product_title_disp'] ==1) { ?>
138
+ <div class="title" style="color:<?php echo $config['product_title_color'];?>; font-weight: bold">
139
+ <?php if($config['product_title_linkable']==1) { ?>
140
+ <a style="color:<?php echo $config['product_title_color'];?>; font-weight: bold" href="<?php echo ($config['product_title_linkable'])?$item['product_link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>> <?php echo $item['product_sub_title'];?> </a> <br>
141
+ <?php } else { echo $item['product_sub_title']; } ?>
142
+ </div>
143
+ <?php }?>
144
+ <?php if ($config['product_price_disp'] ==1) { ?>
145
+ <div class="price" style="color:<?php echo $price_color;?>;">
146
+ <?php echo "<b>".$item["price"]."</b>" ?>
147
+ </div>
148
+ <?php } ?>
149
+ <?php if ($config['product_description_disp'] == 1) { ?>
150
+ <div class="brief_description" style="color:<?php echo $config['product_description_color'];?>"><?php echo $item['product_content']; ?> </div>
151
+ <?php } ?>
152
+ <?php if ($config['product_details_page_link_disp'] == 1) { ?>
153
+ <div class="read_more"><a href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_details_page_link_text'];?></a></div>
154
+ <?php } ?>
155
+ </div> <!-- END sub_content -->
156
+ </div>
157
+ <?php }
158
+ if(count($value['productList']) > 0){
159
+ if ($config['product_view_all_link_disp'] ==1) { ?>
160
+ <div class="link_category">
161
+ <a href="<?php echo ($value['link']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_view_all_link_text'];?></a>
162
+ </div>
163
+ <?php }
164
+ } ?>
165
+
166
+ </div>
167
+ <!-- END content -->
168
+ <?php $j++;
169
+ }
170
+ //} ?>
171
+ </div> <!-- END box-wrapper -->
172
+ </div> <!-- END yt-vmcategory-showcase -->
173
+
174
+ <!--End Module-->
175
+ <?php else: ?>
176
+ <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') . Mage::helper('categoryshowcase')->__('Please choose a category for CategoryShowcase.') ?></p>
177
+ <?php endif; ?>
178
+ <?php if($config['posttext']): ?>
179
+ <br/>
180
+ <div style="text-align:left">
181
+ <p><?php echo $config['posttext'];?></p>
182
+ </div>
183
+ <?php endif;?>
app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme2.phtml ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*------------------------------------------------------------------------
4
+ # SM CategoryShowcase - Version 1.0
5
+ # Copyright (C) 2009-2011 YouTech Company. All Rights Reserved.
6
+ # @license - Copyrighted Commercial Software
7
+ # Author: YouTech Company
8
+ # Websites: http://www.smartaddons.com
9
+ -------------------------------------------------------------------------*/
10
+
11
+ ?>
12
+ <?php
13
+ $divid = rand().time();
14
+ $smarthelper= Mage::helper('categoryshowcase/utils');
15
+ $items = $this->getCategory();
16
+ $config = $this->getConfigObject();
17
+ $background_color ='#333333';
18
+ $price_color ='#4F962C';
19
+ ?>
20
+ <?php if(count($items)>0):?>
21
+ <?php echo $this->getScriptTags(); ?>
22
+ <style>
23
+ .yt-virtue-category-showcase #caption_<?php echo $divid;?> p a {
24
+ color:#FFFFFF!important;
25
+ text-decoration:none;
26
+ font-family:'BebasNeueRegular';
27
+ }
28
+ .yt-virtue-category-showcase .theme2 ul li.button_img{
29
+ background: <?php echo $background_color;?> no-repeat!important;
30
+ border: 1px solid #ccc;
31
+ width: 20px;
32
+ height: 20px;
33
+ cursor: pointer;
34
+ }
35
+ .yt-virtue-category-showcase .first_item {
36
+ color:#FFFFFF;
37
+ text-decoration:none;
38
+ font-family:'BebasNeueRegular';
39
+ font-size: 1.5em;
40
+ margin-top: 8px;
41
+ }
42
+ </style>
43
+ <script language="javascript">
44
+ //<CDATA[[
45
+ $jsmart(document).ready(function($){
46
+ $('#featured<?php echo $divid;?>').cycle({
47
+ fx: '<?php echo $config['animation'];?>',
48
+ timeout: <?php echo $config['interval'];?>,
49
+ speed: <?php echo $config['duration'];?>,
50
+ prev: '#prev<?php echo $divid;?>',
51
+ divId: '<?php echo $divid;?>',
52
+ theme:'<?php echo $config['theme'];?>',
53
+ linktarget:'<?php echo $config['product_links_target'];?>',
54
+ //linkcaption:<?php echo $config['product_title_linkable'];?>,
55
+ autoPlay:<?php echo $config['auto_play'];?>
56
+ });
57
+ $('#cover_buttons_<?php echo $divid;?>').children('.opacity2').width($('#cover_buttons_<?php echo $divid;?>').width()+ 5);
58
+ $('#cover_buttons_<?php echo $divid;?>').children('.<?php echo $config['theme'];?>').width($('#cover_buttons_<?php echo $divid;?>').width()+ 5);
59
+ });
60
+ //]]>
61
+ </script>
62
+ <?php if (!empty($config['title'])): ?>
63
+ <div class="block-title" style="font-size: 16px; font-weight: bold;"><?php echo $config['title']; ?></div>
64
+ <?php endif; ?>
65
+ <!--Intro Text-->
66
+ <?php if($config['pretext']): ?>
67
+ <div style="text-align:left;">
68
+ <?php echo $config['pretext'];?>
69
+ </div>
70
+ <br/>
71
+ <?php endif;?>
72
+ <!--End Intro Text-->
73
+
74
+ <div class="yt-virtue-category-showcase" style="overflow:hidden;">
75
+ <div class="box-wrapper" style="background:<?php echo $background_color;?>; float:left; height:<?php echo $config['category_image_height']?>px; width: <?php echo $config['width_cols'];?>px; overflow: hidden;">
76
+ <?php
77
+ //if(!empty($items)){
78
+ $j=0;
79
+ foreach ($items as $key=>$value){ ?>
80
+ <div id="ListChildren_<?php echo ($divid).$j;?>" class="content <?php if($j==0) echo "current";?>" style="padding: 10px; overflow: hidden; height:<?php echo ($config['category_image_height'] -30)?>px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
81
+ <?php foreach ($value['productList'] as $item) { ?>
82
+ <div style="margin-bottom: 10px; overflow:hidden; ">
83
+ <?php if (($config['product_image_disp']==1)&&($item['product_image'] !='')) { ?>
84
+ <div class="images">
85
+ <?php if($config['product_image_linkable']==1) { ?>
86
+ <a style="color:<?php echo $config['product_title_color'];?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>>
87
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>/><br>
88
+ </a>
89
+ <?php } else { ?>
90
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>">
91
+ <?php } ?>
92
+ </div>
93
+ <?php } ?>
94
+
95
+ <div class="sub_content">
96
+ <?php if ($config['product_title_disp'] ==1) { ?>
97
+ <div class="title" style="color:<?php echo $config['product_title_color'];?>; font-weight: bold">
98
+ <?php if($config['product_title_linkable']==1) { ?>
99
+ <a style="color:<?php echo $config['product_title_color'];?>; font-weight: bold" href="<?php echo ($config['product_title_linkable'])?$item['product_link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>> <?php echo $item['product_sub_title'];?> </a> <br>
100
+ <?php } else { echo $item['product_sub_title'];} ?>
101
+ </div>
102
+ <?php } ?>
103
+ <?php if ($config['product_price_disp'] ==1) { ?>
104
+ <div class="price" style="color:<?php echo $price_color;?>;">
105
+ <?php echo "<b>".$item["price"]."</b>" ?>
106
+ </div>
107
+ <?php } ?>
108
+ <?php if ($config['product_description_disp'] == 1) { ?>
109
+ <div class="brief_description" style="color:<?php echo $config['product_description_color'];?>"><?php echo $item['product_content']; ?></div>
110
+ <?php } ?>
111
+ <?php if ($config['product_details_page_link_disp'] == 1) { ?>
112
+ <div class="read_more"><a href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_details_page_link_text'];?></a></div>
113
+ <?php } ?>
114
+ </div> <!-- END sub_content -->
115
+ </div>
116
+ <?php } ?>
117
+ <?php if ($config['product_view_all_link_disp'] ==1) { ?>
118
+ <div class="link_category">
119
+ <a href="<?php echo $value['link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_view_all_link_text'];?></a>
120
+ </div>
121
+ <?php } ?>
122
+ </div> <!-- END content -->
123
+ <?php
124
+ $j++;
125
+ }
126
+ //} ?>
127
+ </div> <!-- END box-wrapper -->
128
+
129
+ <div class="slide_image" style="width: <?php echo $config['category_image_width'];?>px; height:<?php echo $config['category_image_height'];?>px;z-index:4">
130
+ <?php if ($config['category_title_disp'] ==1) {
131
+ $j=0;
132
+ foreach ($items as $key=>$value) { ?>
133
+ <div id="caption_<?php echo $divid.$j;?>" class="captions <?php if($j==0) echo "current";?>" style="position: absolute; right:0px; padding-right:10px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
134
+ <div class="caption_left_bg">&nbsp;</div>
135
+ <div class="caption_center_bg" style="bottom:50px;"><?php echo $value['sub_title']; ?></div>
136
+ <div class="caption_right_bg">&nbsp;</div>
137
+ </div>
138
+ <?php
139
+ $j++;
140
+ }
141
+ } ?>
142
+ <div id="featured<?php echo $divid;?>" style="margin:0px; padding:0px;width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;overflow:hidden">
143
+ <?php foreach ($items as $key=>$value){ ?>
144
+ <a href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> onclick="<?php if($config['category_image_linkable']):?>javascript: return true; <?php else: ?>javascript: return false; <?php endif;?>">
145
+ <img alt="<?php echo $value['sub_title'];?>" src="<?php echo $value['thumb_image'];?>" href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" caption="<?php echo strtoupper($value['sub_title']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;"/>
146
+ </a>
147
+ <?php } ?>
148
+ </div>
149
+
150
+ <div id="cover_buttons_<?php echo $divid;?>" class="cover-theme2" style="position:absolute; left:0px">
151
+ <div style="background:<?php echo $background_color;?>;" class="opacity2">&nbsp;&nbsp;&nbsp;&nbsp;</div>
152
+ <div class="<?php echo $config['theme'];?>">
153
+ <div id="prev<?php echo $divid;?>" class="preview">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
154
+ <ul id="image_button_<?php echo $divid;?>">
155
+ <?php $j=0;
156
+ foreach ($items as $key=>$value){ ?>
157
+ <li class="<?php echo ($j==0)?"button_img_selected":"button_img";?>" value="<?php echo $j;?>" title="<?php echo strtoupper($value['sub_title']);?>"></li>
158
+ <?php
159
+ $j++;
160
+ } ?>
161
+ </ul>
162
+ </div>
163
+ </div>
164
+ </div> <!-- END slide_image -->
165
+ </div> <!-- END yt-vmcategory-showcase -->
166
+ <!--End Module-->
167
+ <?php else: ?>
168
+ <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') . Mage::helper('categoryshowcase')->__('Please choose a category for CategoryShowcase.') ?></p>
169
+ <?php endif; ?>
170
+ <?php if($config['posttext']): ?>
171
+ <br/>
172
+ <div style="text-align:left">
173
+ <p><?php echo $config['posttext'];?></p>
174
+ </div>
175
+ <?php endif;?>
app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme3.phtml ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*------------------------------------------------------------------------
4
+ # SM CategoryShowcase - Version 1.0
5
+ # Copyright (C) 2009-2011 YouTech Company. All Rights Reserved.
6
+ # @license - Copyrighted Commercial Software
7
+ # Author: YouTech Company
8
+ # Websites: http://www.smartaddons.com
9
+ -------------------------------------------------------------------------*/
10
+
11
+ ?>
12
+ <?php
13
+ $divid = rand().time();
14
+ $smarthelper= Mage::helper('categoryshowcase/utils');
15
+ $items = $this->getCategory();
16
+ $config = $this->getConfigObject();
17
+ $background_color ='#333333';
18
+ $price_color ='#4F962C';
19
+ ?>
20
+ <?php if(count($items)>0):?>
21
+ <?php echo $this->getScriptTags(); ?>
22
+ <style>
23
+ .yt-virtue-category-showcase #caption_<?php echo $divid;?> p a {
24
+ color:#FFFFFF!important;
25
+ text-decoration:none;
26
+ font-family:'BebasNeueRegular';
27
+ }
28
+ .yt-virtue-category-showcase .theme3 ul li.button_img{
29
+ background: <?php echo $background_color;?> no-repeat!important;
30
+ border: 1px solid #ccc;
31
+ width: 20px;
32
+ height: 20px;
33
+ cursor: pointer;
34
+ }
35
+ .yt-virtue-category-showcase .first_item {
36
+ color:#FFFFFF;
37
+ text-decoration:none;
38
+ font-family:'BebasNeueRegular';
39
+ font-size: 1.5em;
40
+ margin-top: 8px;
41
+ }
42
+ </style>
43
+ <script language="javascript">
44
+ //<CDATA[[
45
+ $jsmart(document).ready(function($){
46
+ $('#featured<?php echo $divid;?>').cycle({
47
+ fx: '<?php echo $config['animation'];?>',
48
+ timeout: <?php echo $config['interval'];?>,
49
+ speed: <?php echo $config['duration'];?>,
50
+ next: '#next<?php echo $divid;?>',
51
+ divId: '<?php echo $divid;?>',
52
+ theme:'<?php echo $config['theme'];?>',
53
+ linktarget:'<?php echo $config['product_links_target'];?>',
54
+ //linkcaption:<?php echo $config['product_title_linkable'];?>,
55
+ autoPlay:<?php echo $config['auto_play'];?>
56
+ });
57
+ $('#cover_buttons_<?php echo $divid;?>').children('.opacity3').width($('#cover_buttons_<?php echo $divid;?>').width()+5);
58
+ });
59
+ //]]>
60
+ </script>
61
+ <?php if (!empty($config['title'])): ?>
62
+ <div class="block-title" style="font-size: 16px; font-weight: bold;"><?php echo $config['title']; ?></div>
63
+ <?php endif; ?>
64
+ <!--Intro Text-->
65
+ <?php if($config['pretext']): ?>
66
+ <div style="text-align:left;">
67
+ <?php echo $config['pretext'];?>
68
+ </div>
69
+ <br/>
70
+ <?php endif;?>
71
+ <!--End Intro Text-->
72
+
73
+ <div class="yt-virtue-category-showcase">
74
+ <div class="slide_image" style="width: <?php echo $config['category_image_width'];?>px; height:<?php echo $config['category_image_height'];?>px;">
75
+ <?php if ($config['category_title_disp'] ==1) {
76
+ $j=0;
77
+ foreach ($items as $key=>$value) { ?>
78
+ <div id="caption_<?php echo $divid.$j;?>" class="captions <?php if($j==0) echo "current";?>" style="margin-left: 10px; position: absolute; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
79
+ <div class="caption_left_bg">&nbsp;</div>
80
+ <div class="caption_center_bg" style="bottom:50px;"><?php echo $value['sub_title']; ?></div>
81
+ <div class="caption_right_bg">&nbsp;</div>
82
+ </div>
83
+ <?php
84
+ $j++;
85
+ }
86
+ } ?>
87
+ <div id="featured<?php echo $divid;?>" style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;">
88
+ <?php foreach ($items as $key=>$value){ ?>
89
+ <a href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> onclick="<?php if($config['category_image_linkable']):?>javascript: return true; <?php else: ?>javascript: return false; <?php endif;?>">
90
+ <img alt="<?php echo $value['sub_title'];?>" src="<?php echo $value['thumb_image'];?>" href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" caption="<?php echo strtoupper($value['sub_title']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;"/>
91
+ </a>
92
+ <?php } ?>
93
+ </div>
94
+
95
+ <div id="cover_buttons_<?php echo $divid;?>" class="cover-theme3">
96
+ <div style="background:<?php echo $background_color;?>;" class="opacity3">&nbsp;&nbsp;&nbsp;&nbsp;</div>
97
+ <div class="<?php echo $config['theme'];?>">
98
+ <div style="float:left">
99
+ <ul id="image_button_<?php echo $divid;?>">
100
+ <?php $j=0;
101
+ foreach ($items as $key=>$value){ ?>
102
+ <li class="<?php echo ($j==0)?"button_img_selected":"button_img";?>" value="<?php echo $j;?>" title="<?php echo strtoupper($value['sub_title']);?>"></li>
103
+ <?php
104
+ $j++;
105
+ } ?>
106
+ </ul>
107
+ </div>
108
+ <div id="next<?php echo $divid;?>" class="next">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
109
+ </div>
110
+ </div>
111
+ </div> <!-- END slide_image -->
112
+ <div class="box-wrapper" style="background:<?php echo $background_color;?>; height:<?php echo $config['category_image_height']?>px; width: <?php echo $config['width_cols'];?>px; overflow: hidden;">
113
+ <?php //if(!empty($items)){
114
+ $j=0;
115
+ foreach ($items as $key=>$value){ ?>
116
+ <div id="ListChildren_<?php echo ($divid).$j;?>" class="content <?php if($j==0) echo "current";?>" style="padding: 10px; overflow: hidden; height:<?php echo ($config['category_image_height'] -30)?>px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
117
+ <?php
118
+ $ij=1; $count_items =count($value['productList']);
119
+ foreach ($value['productList'] as $item) {
120
+ if($ij==1) { ?>
121
+ <div class="items" style="float: left; margin-bottom: 10px"><?php
122
+ } ?>
123
+ <div class="sub-content" style="float: left; width: <?php echo (($config['width_cols']-20)/$config['num_cols']);?>px; overflow: hidden; ">
124
+ <div class="content_box" style="margin-right: 10px; overflow: hidden;">
125
+ <?php if (($config['product_image_disp']==1)&&($item['product_image'] !='')) { ?>
126
+ <div class="images">
127
+ <?php if($config['product_image_linkable']==1) { ?>
128
+ <a style="color:<?php echo $config['product_title_color'];?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>>
129
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>/><br>
130
+ </a>
131
+ <?php } else { ?>
132
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>">
133
+ <?php } ?>
134
+ </div>
135
+ <?php } ?>
136
+
137
+ <div class="sub_content" style="color:<?php echo $config['product_title_color'];?>;">
138
+ <?php if ($config['product_title_disp'] ==1) { ?>
139
+ <div class="title" style="color:<?php echo $config['product_title_color'];?>; font-weight: bold">
140
+ <?php if($config['product_title_linkable']==1) { ?>
141
+ <a style="color:<?php echo $config['product_title_color'];?>; font-weight: bold" href="<?php echo ($config['product_title_linkable'])?$item['product_link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>> <?php echo $item['product_sub_title'];?> </a> <br>
142
+ <?php } else {
143
+ echo $item['product_sub_title'];
144
+ } ?>
145
+ </div>
146
+ <?php } ?>
147
+ <?php if ($config['product_price_disp'] ==1) { ?>
148
+ <div class="price" style="color:<?php echo $price_color;?>;"><?php echo "<b>".$item["price"]."</b>" ?></div>
149
+ <?php } ?>
150
+ <?php if ($config['product_description_disp'] == 1) { ?>
151
+ <div class="brief_description" style="color:<?php echo $config['product_description_color'];?>"><?php echo $item['product_content']; ?></div>
152
+ <?php } ?>
153
+ <?php if ($config['product_details_page_link_disp'] == 1) { ?>
154
+ <div class="read_more"><a href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_details_page_link_text'];?></a></div>
155
+ <?php } ?>
156
+ </div> <!-- END sub_content -->
157
+ </div> <!--end content box -->
158
+ </div><!--end sub-content-->
159
+ <?php if(($count_items) == $ij){ ?>
160
+ </div>
161
+ <?php } else { ?>
162
+ <?php if($ij%$config['num_cols'] ==0) { ?>
163
+ </div>
164
+ <div class="items" style="float: left; margin-bottom: 10px">
165
+ <?php } ?>
166
+ <?php } ?>
167
+ <?php $ij++;
168
+ } ?>
169
+ <?php if ($config['product_view_all_link_disp'] ==1) { ?>
170
+ <div class="link_category">
171
+ <a href="<?php echo ($value['link']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_view_all_link_text'];?></a>
172
+ </div>
173
+ <?php } ?>
174
+ </div> <!-- END content --> <?php
175
+ $j++;
176
+ }
177
+ //} ?>
178
+
179
+ </div> <!-- END box-wrapper -->
180
+ </div> <!-- END yt-vmcategory-showcase -->
181
+ <!--End Module-->
182
+ <?php else: ?>
183
+ <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') . Mage::helper('categoryshowcase')->__('Please choose a category for CategoryShowcase.') ?></p>
184
+ <?php endif; ?>
185
+ <?php if($config['posttext']): ?>
186
+ <br/>
187
+ <div style="text-align:left">
188
+ <p><?php echo $config['posttext'];?></p>
189
+ </div>
190
+ <?php endif;?>
app/design/frontend/default/default/template/smartaddons/categoryshowcase/theme4.phtml ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*------------------------------------------------------------------------
4
+ # SM CategoryShowcase - Version 1.0
5
+ # Copyright (C) 2009-2011 YouTech Company. All Rights Reserved.
6
+ # @license - Copyrighted Commercial Software
7
+ # Author: YouTech Company
8
+ # Websites: http://www.smartaddons.com
9
+ -------------------------------------------------------------------------*/
10
+
11
+ ?>
12
+ <?php
13
+ $divid = rand().time();
14
+ $smarthelper= Mage::helper('categoryshowcase/utils');
15
+ $items = $this->getCategory();
16
+ $config = $this->getConfigObject();
17
+ $background_color ='#333333';
18
+ $price_color ='#4F962C';
19
+ ?>
20
+ <?php if(count($items)>0):?>
21
+ <?php echo $this->getScriptTags(); ?>
22
+ <style>
23
+ .yt-virtue-category-showcase #caption_<?php echo $divid;?> p a {
24
+ color:#FFFFFF!important;
25
+ text-decoration:none;
26
+ font-family:'BebasNeueRegular';
27
+ }
28
+ .yt-virtue-category-showcase .theme4 ul li.button_img{
29
+ background: <?php echo $background_color;?> no-repeat!important;
30
+ border: 1px solid #ccc;
31
+ width: 20px;
32
+ height: 20px;
33
+ cursor: pointer;
34
+ }
35
+ .yt-virtue-category-showcase .first_item {
36
+ color:#FFFFFF;
37
+ text-decoration:none;
38
+ font-family:'BebasNeueRegular';
39
+ font-size: 1.5em;
40
+ margin-top: 8px;
41
+ }
42
+ </style>
43
+ <script language="javascript">
44
+ //<CDATA[[
45
+ $jsmart(document).ready(function($){
46
+ $('#featured<?php echo $divid;?>').cycle({
47
+ fx: '<?php echo $config['animation'];?>',
48
+ timeout: <?php echo $config['interval'];?>,
49
+ speed: <?php echo $config['duration'];?>,
50
+ prev: '#prev<?php echo $divid;?>',
51
+ divId: '<?php echo $divid;?>',
52
+ theme:'<?php echo $config['theme'];?>',
53
+ linktarget:'<?php echo $config['product_links_target'];?>',
54
+ //linkcaption:<?php echo $config['product_title_linkable'];?>,
55
+ autoPlay:<?php echo $config['auto_play'];?>
56
+ });
57
+ $('#cover_buttons_<?php echo $divid;?>').children('.opacity4').width($('#cover_buttons_<?php echo $divid;?>').width()+5);
58
+ $('#cover_buttons_<?php echo $divid;?>').children('.<?php echo $config['theme'];?>').width($('#cover_buttons_<?php echo $divid;?>').width()+5);
59
+ });
60
+ //]]>
61
+ </script>
62
+ <?php if (!empty($config['title'])): ?>
63
+ <div class="block-title" style="font-size: 16px; font-weight: bold;"><?php echo $config['title']; ?></div>
64
+ <?php endif; ?>
65
+ <!--Intro Text-->
66
+ <?php if($config['pretext']): ?>
67
+ <div style="text-align:left;">
68
+ <?php echo $config['pretext'];?>
69
+ </div>
70
+ <br/>
71
+ <?php endif;?>
72
+ <!--End Intro Text-->
73
+
74
+ <div class="yt-virtue-category-showcase">
75
+ <div class="box-wrapper" style="background:<?php echo $background_color;?>; float:left; height:<?php echo $config['category_image_height']?>px; width: <?php echo $config['width_cols'];?>px; overflow: hidden;">
76
+ <?php //if(!empty($items)){
77
+ $j=0;
78
+ foreach ($items as $key=>$value){ ?>
79
+ <div id="ListChildren_<?php echo ($divid).$j;?>" class="content <?php if($j==0) echo "current";?>" style="padding: 10px; overflow: hidden; height:<?php echo ($config['category_image_height'] -30)?>px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
80
+ <?php
81
+ $ij=1; $count_items =count($value['productList']);
82
+ foreach ($value['productList'] as $item) {
83
+ if($ij==1) { ?>
84
+ <div class="items" style="float: left; margin-bottom: 10px;">
85
+ <?php
86
+ } ?>
87
+ <div class="sub-content" style="float: left; width: <?php echo (($config['width_cols']-20)/$config['num_cols']);?>px; overflow: hidden; ">
88
+ <div class="content_box" style="margin-right: 10px; overflow: hidden;">
89
+ <?php if (($config['product_image_disp']==1)&&($item['product_image'] !='')) { ?>
90
+ <div class="images">
91
+ <?php if($config['product_image_linkable']==1) { ?>
92
+ <a style="color:<?php echo $config['product_title_color'];?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>>
93
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>" href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>/><br>
94
+ </a>
95
+ <?php } else { ?>
96
+ <img alt="<?php echo $item['product_sub_title'];?>" src="<?php echo $item['product_image']?>" alt="<?php echo $item['product_sub_title'];?>">
97
+ <?php } ?>
98
+ </div>
99
+ <?php } ?>
100
+
101
+ <div class="sub_content" style="color:<?php echo $config['product_title_color'];?>;">
102
+ <?php if ($config['product_title_disp'] ==1) { ?>
103
+ <div class="title" style="color:<?php echo $config['product_title_color'];?>; font-weight: bold">
104
+ <?php if($config['product_title_linkable']==1) {?>
105
+ <a style="color:<?php echo $config['product_title_color'];?>; font-weight: bold" href="<?php echo ($config['product_title_linkable'])?$item['product_link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>> <?php echo $item['product_sub_title'];?> </a> <br>
106
+ <?php } else {
107
+ echo $item['product_sub_title'];
108
+ } ?>
109
+ </div>
110
+ <?php } ?>
111
+ <?php if ($config['product_price_disp'] ==1) { ?>
112
+ <div class="price" style="color:<?php echo $price_color;?>;"><?php echo "<b>".$item["price"]."</b>" ?></div>
113
+ <?php } ?>
114
+ <?php if ($config['product_description_disp'] == 1) { ?>
115
+ <div class="brief_description" style="color:<?php echo $config['product_description_color'];?>"><?php echo $item['product_content']; ?></div>
116
+ <?php } ?>
117
+ <?php if ($config['product_details_page_link_disp'] == 1) { ?>
118
+ <div class="read_more"><a href="<?php echo $item['product_link'];?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_details_page_link_text'];?></a></div>
119
+ <?php } ?>
120
+ </div> <!-- END sub_content -->
121
+ </div>
122
+ </div><!--end sub-content-->
123
+ <?php if(($count_items) == $ij){ ?>
124
+ </div>
125
+ <?php } else { ?>
126
+ <?php if($ij%$config['num_cols'] ==0) { ?>
127
+ </div>
128
+ <div class="items" style="float: left; margin-bottom: 10px;">
129
+ <?php } ?>
130
+ <?php } ?>
131
+ <?php $ij++;
132
+ } ?>
133
+ <?php if ($config['product_view_all_link_disp'] ==1) { ?>
134
+ <div class="link_category"><a href="<?php echo ($value['link']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?>><?php echo $config['product_view_all_link_text'];?></a></div>
135
+ <?php } ?>
136
+ </div> <!-- END content -->
137
+ <?php
138
+ $j++;
139
+ }
140
+ //}?>
141
+ </div> <!-- END box-wrapper -->
142
+ <div class="slide_image" style="width: <?php echo $config['category_image_width'];?>px; height:<?php echo $config['category_image_height'];?>px;z-index:4">
143
+ <?php
144
+ if ($config['category_title_disp'] ==1) {
145
+ $j=0;
146
+ foreach ($items as $key=>$value) { ?>
147
+ <div id="caption_<?php echo $divid.$j;?>" class="captions <?php if($j==0) echo "current";?>" style="position: absolute; right:0px; padding-right:10px; <?php if($j==0) echo "display:block;"; else echo "display:none";?>">
148
+ <div class="caption_left_bg">&nbsp;</div>
149
+ <div class="caption_center_bg" style="bottom:50px;"><?php echo $value['sub_title']; ?></div>
150
+ <div class="caption_right_bg">&nbsp;</div>
151
+ </div>
152
+ <?php
153
+ $j++;
154
+ }
155
+ } ?>
156
+ <div id="featured<?php echo $divid;?>" style="margin:0px; padding:0px;width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;overflow:hidden">
157
+ <?php foreach ($items as $key=>$value){?>
158
+ <a href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> onclick="<?php if($config['category_image_linkable']):?>javascript: return true; <?php else: ?>javascript: return false; <?php endif;?>">
159
+ <img alt="<?php echo $value['sub_title'];?>" src="<?php echo $value['thumb_image'];?>" href="<?php echo ($config['category_image_linkable'])?$value['link']:"#";?>" caption="<?php echo strtoupper($value['sub_title']);?>" <?php echo $smarthelper->getTargetAttr($config['product_links_target']); ?> style="width: <?php echo $config['category_image_width']?>px; height:<?php echo $config['category_image_height']?>px;"/>
160
+ </a>
161
+ <?php } ?>
162
+ </div>
163
+
164
+ <div id="cover_buttons_<?php echo $divid;?>" class="cover-theme4" style="position:absolute; left:0px">
165
+ <div style="background:<?php echo $background_color;?>;" class="opacity4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
166
+ <div class="<?php echo $config['theme'];?>">
167
+ <div id="prev<?php echo $divid;?>" class="preview">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
168
+ <ul id="image_button_<?php echo $divid;?>">
169
+ <?php $j=0;
170
+ foreach ($items as $key=>$value){ ?>
171
+ <li class="<?php echo ($j==0)?"button_img_selected":"button_img";?>" value="<?php echo $j;?>" title="<?php echo strtoupper($value['sub_title']);?>"></li>
172
+ <?php
173
+ $j++;
174
+ } ?>
175
+ </ul>
176
+ </div>
177
+ </div>
178
+ </div> <!-- END slide_image -->
179
+ </div> <!-- END yt-vmcategory-showcase -->
180
+ <!--End Module-->
181
+ <?php else: ?>
182
+ <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') . Mage::helper('categoryshowcase')->__('Please choose a category for CategoryShowcase.') ?></p>
183
+ <?php endif; ?>
184
+ <?php if($config['posttext']): ?>
185
+ <br/>
186
+ <div style="text-align:left">
187
+ <p><?php echo $config['posttext'];?></p>
188
+ </div>
189
+ <?php endif;?>
app/etc/modules/Smartaddons_CategoryShowcase.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Smartaddons_CategoryShowcase>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ <depends>
8
+ <Mage_Catalog />
9
+ </depends>
10
+ <version>1.0</version>
11
+ </Smartaddons_CategoryShowcase>
12
+ </modules>
13
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>smartaddons_categoryshowcase</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license>GNU General Public License (GPL) </license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>smartaddons_categoryshowcase</summary>
10
+ <description>smartaddons_categoryshowcase</description>
11
+ <notes>version 1.0.0</notes>
12
+ <authors><author><name>magentech.com</name><user>smartaddons</user><email>contact@ytcvn.com</email></author></authors>
13
+ <date>2013-05-08</date>
14
+ <time>09:28:24</time>
15
+ <contents><target name="magelocal"><dir name="Smartaddons"><dir name="CategoryShowcase"><dir name="Block"><file name="List.php" hash="020b60e6229a1aedc8482a2621e0731f"/></dir><dir name="Helper"><file name="Data.php" hash="68a61d1e839a299f86d9eef157dffb74"/><file name="Utils.php" hash="05e42be34611675275ae0d3ec3f9bc1e"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Source"><file name="LinkTargets.php" hash="600488591a6f784f29a2af482cb479f5"/><file name="ListCategory.php" hash="5fcfe12e189ef880975174b378965a97"/><file name="ListEffectType.php" hash="6f558efdd7cf32f4af0a54471dbf9084"/><file name="ListTheme.php" hash="3ab8ee675b1cc759161c10ea69289f04"/><file name="OrderBy.php" hash="a5a3db079dee19b01f6ba70da7318123"/><file name="OrderDirection.php" hash="0338e282ab66d2a534b50b6b01de4533"/><file name="ProductSources.php" hash="ed8ddc1d2cbb409f2b6e019a4712e930"/></dir></dir></dir></dir><dir name="controllers"><file name="IndexController.php" hash="16266c97efd32fe8db0705d78b51bfca"/></dir><dir name="etc"><file name="config.xml" hash="7259ca5a27df790344b5c46ece67b074"/><file name="system.xml" hash="110e2aabbc891b62a58a78dc5a0ec527"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="smartaddons"><dir name="categoryshowcase"><dir name="css"><file name="ie7.css" hash="785058c0b5e639c334e7d496f346b903"/><file name="style.css" hash="02ade5bdf4b357e17a4bdd0c149f026e"/></dir><dir name="images"><file name="button_viewall.png" hash="ea871ddc53f4f3a6e9fc602f791d975c"/><file name="center_ver.png" hash="63676ac92bfefd4380f50783a57eb8b0"/><file name="left_ver.png" hash="dbe3d43aaac2b41b81b8d96d2c2f9992"/><file name="next.png" hash="943cdf1903eebbc705d7ef7f5c4364f2"/><file name="no_image.gif" hash="120eb50138d5e4ddec9e3d84afbf6e36"/><file name="prev.png" hash="6b32530c167900c5f07ab302c2bf72a3"/><file name="right_ver.png" hash="0cd515fda0a03fa46c30c5e7bb61fdc1"/></dir><dir name="js"><file name="jquery-1.5.min.js" hash="eb6eaee7cbe0e4cf0bc6bc1fdecd4749"/><file name="jquery.cycle.all.js" hash="5155f04f3dc09dafd1cf7bd5de5a9066"/><file name="jsmart.noconflict.js" hash="df753c24c7b383e1f0850c6b6bc434eb"/></dir></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="smartaddons"><dir name="categoryshowcase"><file name="block_template_default.phtml" hash="7c00cff621177917bcf0a60c3d9a8772"/><file name="theme1.phtml" hash="504d8ee41b3dceaeb5bd5a76ecb7865b"/><file name="theme2.phtml" hash="633d6a41997de6c8a6843c9739d6548a"/><file name="theme3.phtml" hash="c9bad15e660c2355a76243461220b606"/><file name="theme4.phtml" hash="6b0c05152607331c2b10952cad945cc4"/></dir></dir></dir><dir name="layout"><dir name="smartaddons"><file name="categoryshowcase.xml" hash="f72151b6aac30c941ecc67118b2acace"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Smartaddons_CategoryShowcase.xml" hash="2dc8a2e929f940c44d3ae2ce1cf95500"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>
skin/frontend/default/default/smartaddons/categoryshowcase/css/ie7.css ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*------------------------------------------------------------------------
2
+ # Ytc Virtue Mart Category Showcase - Version 1.1
3
+ # Copyright (C) 2009-2010 YouTech Company. All Rights Reserved.
4
+ # @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
5
+ # Author: YouTech Company
6
+ # Websites: http://www.ytcvn.com
7
+ -------------------------------------------------------------------------*/
8
+
9
+ .yt-virtue-category-showcase .theme1 {
10
+ float: none;
11
+ }
12
+
13
+ .yt-virtue-category-showcase .theme3 {
14
+ float: none;
15
+ }
skin/frontend/default/default/smartaddons/categoryshowcase/css/style.css ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*------------------------------------------------------------------------
2
+ # Yt VirtueMart Category Showcase - Version 1.1
3
+ # Copyright (C) 2009-2010 YouTech Company. All Rights Reserved.
4
+ # @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
5
+ # Author: YouTech Company
6
+ # Websites: http://www.ytcvn.com
7
+ -------------------------------------------------------------------------*/
8
+ /* CAPTIONS */
9
+
10
+ .yt-virtue-category-showcase div.captions {
11
+ z-index: 100;
12
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
13
+ filter: alpha(opacity=70);
14
+ /*opacity:0.7;*/
15
+ top: 30px;
16
+ color:#FFFFFF!important;
17
+ font-size:18px !important;
18
+ margin:0;
19
+ padding:10px 0px 8px;
20
+ text-transform:uppercase;
21
+ font-family:'BebasNeueRegular';
22
+
23
+ }
24
+ .yt-virtue-category-showcase div.captions p a{
25
+ text-decoration:none;
26
+ }
27
+ .yt-virtue-category-showcase div .read_more {
28
+ text-align: left
29
+ }
30
+ .yt-virtue-category-showcase div .read_more a {
31
+ color: #1e7ce3!important;
32
+ }
33
+ .yt-virtue-category-showcase div .link_category a {
34
+ color: #1e7ce3!important;
35
+ text-decoration: underline;
36
+ }
37
+ .yt-virtue-category-showcase div .link_category {
38
+ float: right;
39
+ text-align: right;
40
+ }
41
+
42
+ .yt-virtue-category-showcase ul{
43
+ list-style: none;
44
+ margin-top: 3px;
45
+ padding: 0px;
46
+ }
47
+ .yt-virtue-category-showcase .cover-theme1{
48
+ position:relative;
49
+ z-index:200;
50
+ bottom: 0px;
51
+
52
+ }
53
+ .yt-virtue-category-showcase .cover-theme3{
54
+ position:absolute;
55
+ z-index:200;
56
+ bottom: 0px;
57
+ right: 0px
58
+
59
+ }
60
+ .yt-virtue-category-showcase .cover-theme2{
61
+ position:absolute;
62
+ z-index: 200;
63
+ bottom: 0px;
64
+ }
65
+ .yt-virtue-category-showcase .cover-theme4{
66
+ position:absolute;
67
+ z-index: 200;
68
+ bottom: 0px;
69
+ }
70
+ .yt-virtue-category-showcase .theme1 ul {
71
+ float: left;
72
+ margin-left: 5px
73
+ }
74
+ .yt-virtue-category-showcase .theme1 ul li{
75
+ height:22px; width:22px;
76
+ float: left;
77
+ margin-right: 6px;
78
+ text-align: center;
79
+ }
80
+ .yt-virtue-category-showcase .theme1 ul li.button_img_selected{
81
+ background: #FFFFFF no-repeat;
82
+ border: 1px solid #ccc;
83
+ float: left;
84
+ margin-right: 6px;
85
+ width: 20px;
86
+ height: 20px;
87
+ }
88
+ .yt-virtue-category-showcase .opacity1 {
89
+ width:auto;
90
+ height: 30px;
91
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
92
+ filter: alpha(opacity=70);
93
+ opacity: 0.7;
94
+ z-index:1;
95
+ }
96
+ .yt-virtue-category-showcase .theme1 {
97
+ width:auto;
98
+ height: 30px;
99
+ float: right;
100
+ background: none;
101
+ z-index:2;
102
+ position: relative;
103
+ bottom: 30px
104
+
105
+ }
106
+ .yt-virtue-category-showcase .opacity3 {
107
+ width:auto;
108
+ height: 30px;
109
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
110
+ filter: alpha(opacity=70);
111
+ opacity: 0.7;
112
+ z-index:1;
113
+ }
114
+ .yt-virtue-category-showcase .theme3 {
115
+ width:auto;
116
+ height: 30px;
117
+ float: right;
118
+ background: none;
119
+ z-index:2;
120
+ position: relative;
121
+ bottom: 30px
122
+
123
+ }
124
+
125
+ .yt-virtue-category-showcase .theme2 {
126
+ height: 30px;
127
+ float:left;
128
+ position: relative;
129
+ z-index: 50;
130
+ bottom: 30px
131
+
132
+ }
133
+ .yt-virtue-category-showcase .opacity2 {
134
+ height: 30px;
135
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
136
+ filter: alpha(opacity=70);
137
+ opacity: 0.7;
138
+ z-index:1
139
+
140
+ }
141
+ .yt-virtue-category-showcase .theme4 {
142
+ background: none;
143
+ height: 30px;
144
+ float:left;
145
+ position: relative;
146
+ z-index: 3;
147
+ bottom: 30px
148
+
149
+ }
150
+ .yt-virtue-category-showcase .opacity4 {
151
+ bottom: 20px;
152
+ height: 30px;
153
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
154
+ filter: alpha(opacity=70);
155
+ opacity: 0.7;
156
+ z-index:1
157
+ }
158
+
159
+ .yt-virtue-category-showcase div.sub_content {
160
+ line-height: 1.5;
161
+ text-align: left;
162
+ overflow: hidden;
163
+ }
164
+ .yt-virtue-category-showcase div.sub_content .brief_description{
165
+ font-size:10px;
166
+ }
167
+ .yt-virtue-category-showcase div.caption_left_bg{
168
+ background:url('../images/left_ver.png') no-repeat top;
169
+ float: left;
170
+ height: 33px;
171
+ padding-right: 3px;
172
+ }
173
+
174
+
175
+ .yt-virtue-category-showcase div.caption_center_bg{
176
+ background:url('../images/center_ver.png') repeat-x scroll 0 0;
177
+ float: left;
178
+ height: 33px;
179
+ padding-top: 2px
180
+ }
181
+ .yt-virtue-category-showcase div.caption_right_bg{
182
+ background:url('../images/right_ver.png') no-repeat bottom;
183
+ float: left;
184
+ height: 33px;
185
+ padding-left: 3px;
186
+
187
+ }
188
+ .yt-virtue-category-showcase div.images{
189
+ float: left;
190
+ border:1px solid #ccc;
191
+ margin-right: 10px;
192
+ margin-top: 4px;
193
+ }
194
+ .yt-virtue-category-showcase div.tooltip{
195
+ background: url('../images/tooltip.png') no-repeat scroll left;
196
+ }
197
+
198
+
199
+
200
+ .yt-virtue-category-showcase div.slide_image {
201
+ position: relative;
202
+ float: left;
203
+ z-index:4;
204
+ overflow: hidden;
205
+ }
206
+
207
+ .yt-virtue-category-showcase div.next{
208
+ background: url('../images/next.png') no-repeat scroll left;
209
+ float: left;
210
+ margin-top: 6px;
211
+ cursor: pointer;
212
+ }
213
+ .yt-virtue-category-showcase div.preview{
214
+ width:auto;
215
+ float:left;
216
+ background: url('../images/prev.png') no-repeat scroll left;
217
+ padding: 6px 2px;
218
+ margin-left: 3px;
219
+ cursor: pointer;
220
+ }
221
+
222
+
223
+ .yt-virtue-category-showcase .theme2 ul {
224
+ margin-left: 25px
225
+ }
226
+
227
+ .yt-virtue-category-showcase .theme2 ul li{
228
+ height:22px;
229
+ width:22px;
230
+ float: left;
231
+ margin-right: 6px;
232
+ text-align: center;
233
+ }
234
+ .yt-virtue-category-showcase .theme2 ul li.button_img_selected{
235
+ background: #FFFFFF no-repeat;
236
+ border: 1px solid #ccc;
237
+ float: left;
238
+ margin-right: 6px;
239
+ width: 20px;
240
+ height: 20px;
241
+ }
242
+ .yt-virtue-category-showcase .theme2 ul li p{
243
+ padding:6px;
244
+ cursor:pointer
245
+ }
246
+ .yt-virtue-category-showcase .theme3 ul {
247
+ float: left;
248
+ margin-left: 5px
249
+ }
250
+ .yt-virtue-category-showcase .theme3 ul li{
251
+ height:22px; width:22px;
252
+ float: left;
253
+ margin-right: 6px;
254
+ text-align: center;
255
+ }
256
+ .yt-virtue-category-showcase .theme3 ul li.button_img_selected{
257
+ background: #FFFFFF no-repeat;
258
+ border: 1px solid #ccc;
259
+ float: left;
260
+ mmargin-right: 6px;
261
+ width: 20px;
262
+ height: 20px;
263
+ }
264
+
265
+
266
+ .yt-virtue-category-showcase .theme4 ul {
267
+ margin-left: 25px
268
+ }
269
+ .yt-virtue-category-showcase .theme4 ul li{
270
+ height:22px;
271
+ width:22px;
272
+ float: left;
273
+ margin-right: 6px;
274
+ text-align: center;
275
+ }
276
+ .yt-virtue-category-showcase .theme4 ul li.button_img_selected{
277
+ background: #FFFFFF no-repeat;
278
+ border: 1px solid #ccc;
279
+ float: left;
280
+ margin-right: 6px;
281
+ width: 20px;
282
+ height: 20px;
283
+ }
284
+ .yt-virtue-category-showcase .theme4 div.caption{
285
+ font-size:16pt; padding-top:11px ;
286
+ text-align:left
287
+ }
288
+ .yt-virtue-category-showcase .theme4 div.caption p{ color:#FFFFFF; text-align:left}
skin/frontend/default/default/smartaddons/categoryshowcase/images/button_viewall.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/center_ver.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/left_ver.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/next.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/no_image.gif ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/prev.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/images/right_ver.png ADDED
Binary file
skin/frontend/default/default/smartaddons/categoryshowcase/js/jquery-1.5.min.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery JavaScript Library v1.5
3
+ * http://jquery.com/
4
+ *
5
+ * Copyright 2011, John Resig
6
+ * Dual licensed under the MIT or GPL Version 2 licenses.
7
+ * http://jquery.org/license
8
+ *
9
+ * Includes Sizzle.js
10
+ * http://sizzlejs.com/
11
+ * Copyright 2011, The Dojo Foundation
12
+ * Released under the MIT, BSD, and GPL Licenses.
13
+ *
14
+ * Date: Mon Jan 31 08:31:29 2011 -0500
15
+ */
16
+ (function(a,b){function b$(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function bX(a){if(!bR[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bR[a]=c}return bR[a]}function bW(a,b){var c={};d.each(bV.concat.apply([],bV.slice(0,b)),function(){c[this]=a});return c}function bJ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f=a.converters,g,h=e.length,i,j=e[0],k,l,m,n,o;for(g=1;g<h;g++){k=j,j=e[g];if(j==="*")j=k;else if(k!=="*"&&k!==j){l=k+" "+j,m=f[l]||f["* "+j];if(!m){o=b;for(n in f){i=n.split(" ");if(i[0]===k||i[0]==="*"){o=f[i[1]+" "+j];if(o){n=f[n],n===!0?m=o:o===!0&&(m=n);break}}}}!m&&!o&&d.error("No conversion from "+l.replace(" "," to ")),m!==!0&&(c=m?m(c):o(n(c)))}}return c}function bI(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bH(a,b,c,e){d.isArray(b)&&b.length?d.each(b,function(b,f){c||bp.test(a)?e(a,f):bH(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)}):c||b==null||typeof b!=="object"?e(a,b):d.isArray(b)||d.isEmptyObject(b)?e(a,""):d.each(b,function(b,d){bH(a+"["+b+"]",d,c,e)})}function bG(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bD,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(g[l]?l=b:(c.dataTypes.unshift(l),l=bG(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bG(a,c,d,e,"*",g));return l}function bF(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bz),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bn(a,b,c){var e=b==="width"?bh:bi,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function _(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function $(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function Z(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h,g[h][i],g[h][i].data)}}}}function Y(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function O(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(J.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(q,"`").replace(r,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,p,q=[],r=[],s=d._data(this,u);typeof s==="function"&&(s=s.events);if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(o,"")===a.type?r.push(g.selector):t.splice(i--,1);f=d(a.target).closest(r,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&q.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=q.length;j<k;j++){f=q[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,p=f.handleObj.origHandler.apply(f.elem,arguments);if(p===!1||a.isPropagationStopped()){c=f.level,p===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,b,c){c[0].type=a;return d.event.handle.apply(b,c)}function w(){return!0}function v(){return!1}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}return i},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);return d},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)return setTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");e.type="text/javascript",d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(var j=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:F?function(a){return a==null?"":F.call(a)}:function(a){return a==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var e=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?D.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(var f=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);return d.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeof c==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){return a.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);return c},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j in c)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(var k=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}return this},resolveWith:function(d,f){if(!e&&!b&&!c){c=1;try{while(a[0])a.shift().apply(d,f)}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(d.isFunction(this.promise)?this.promise():this,arguments);return this},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};return f},Deferred:function(a){var b=d._Deferred(),c=d._Deferred(),e;d.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a,c){if(a==null){if(e)return e;e=a={}}c=z.length;while(c--)a[z[c]]=b[z[c]];return a}}),b.then(c.cancel,b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){var b=arguments,c=b.length,e=c<=1&&a&&d.isFunction(a.promise)?a:d.Deferred(),f=e.promise(),g;c>1?(g=Array(c),d.each(b,function(a,b){d.when(b).then(function(b){g[a]=arguments.length>1?E.call(arguments,0):b,--c||e.resolveWith(f,g)},e.reject)})):e!==a&&e.resolve(a);return f},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return a.jQuery=a.$=d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option"));if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:b.getElementsByTagName("input")[0].value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,_scriptEval:null,noCloneEvent:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},g.disabled=!0,d.support.optDisabled=!h.disabled,d.support.scriptEval=function(){if(d.support._scriptEval===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();e.type="text/javascript";try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(d.support._scriptEval=!0,delete a[f]):d.support._scriptEval=!1,b.removeChild(e),b=e=f=null}return d.support._scriptEval};try{delete b.test}catch(i){d.support.deleteExpando=!1}b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function j(){d.support.noCloneEvent=!1,b.detachEvent("onclick",j)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var k=c.createDocumentFragment();k.appendChild(b.firstChild),d.support.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var l=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=l("submit"),d.support.changeBubbles=l("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!d.isEmptyObject(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={}),typeof c==="object"&&(f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c)),i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,i=g?b[d.expando]:d.expando;if(!h[i])return;if(c){var j=e?h[i][f]:h[i];if(j){delete j[c];if(!d.isEmptyObject(j))return}}if(e){delete h[i][f];if(!d.isEmptyObject(h[i]))return}var k=h[i][f];d.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},h[i][f]=k):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i<j;i++)h=g[i].name,h.indexOf("data-")===0&&(h=h.substr(5),f(this[0],h,e[h]))}}return e}if(typeof a==="object")return this.each(function(){d.data(this,a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=f(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}return this.each(function(){var b=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){return this.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);return e}},dequeue:function(a,b){b=b||"fx";var c=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);return this.each(function(b){var e=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var g=/[\n\t\r]/g,h=/\s+/,i=/\r/g,j=/^(?:href|src|style)$/,k=/^(?:button|input)$/i,l=/^(?:button|input|object|select|textarea)$/i,m=/^a(?:rea)?$/i,n=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){return this.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){var b=(a||"").split(h);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){var g=" "+f.className+" ",i=f.className;for(var j=0,k=b.length;j<k;j++)g.indexOf(" "+b[j]+" ")<0&&(i+=" "+b[j]);f.className=d.trim(i)}else f.className=a}}return this},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){var c=(a||"").split(h);for(var e=0,f=this.length;e<f;e++){var i=this[e];if(i.nodeType===1&&i.className)if(a){var j=(" "+i.className+" ").replace(g," ");for(var k=0,l=c.length;k<l;k++)j=j.replace(" "+c[k]+" "," ");i.className=d.trim(j)}else i.className=""}}return this},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))return this.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});return this.each(function(){if(c==="string"){var f,g=0,i=d(this),j=b,k=a.split(h);while(f=k[g++])j=e?j:!i.hasClass(f),i[j?"addClass":"removeClass"](f)}else if(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(g," ").indexOf(b)>-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,j=c.type==="select-one";if(f<0)return null;for(var k=j?f:0,l=j?f+1:h.length;k<l;k++){var m=h[k];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(j)return a;g.push(a)}}return g}if(n.test(c.type)&&!d.support.checkOn)return c.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(i,"")}return b}var o=d.isFunction(a);return this.each(function(b){var c=d(this),e=a;if(this.nodeType===1){o&&(e=a.call(this,b,c.val())),e==null?e="":typeof e==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){return a==null?"":a+""}));if(d.isArray(e)&&n.test(this.type))this.checked=d.inArray(c.val(),e)>=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=j.test(c);if(c==="selected"&&!d.support.optSelected){var n=a.parentNode;n&&(n.selectedIndex,n.parentNode&&n.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&k.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:l.test(a.nodeName)||m.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var o=/\.(.*)$/,p=/^(?:textarea|input|select)$/i,q=/\./g,r=/ /g,s=/[^\w\s.|`]/g,t=function(a){return a.replace(s,"\\$&")},u="events";d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a);if(f===!1)f=v;else if(!f)return;var h,i;f.handler&&(h=f,f=h.handler),f.guid||(f.guid=d.guid++);var j=d._data(c);if(!j)return;var k=j[u],l=j.handle;typeof k==="function"?(l=k.handle,k=k.events):k||(c.nodeType||(j[u]=j=function(){}),j.events=k={}),l||(j.handle=l=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(l.elem,arguments):b}),l.elem=c,e=e.split(" ");var m,n=0,o;while(m=e[n++]){i=h?d.extend({},h):{handler:f,data:g},m.indexOf(".")>-1?(o=m.split("."),m=o.shift(),i.namespace=o.slice(0).sort().join(".")):(o=[],i.namespace=""),i.type=m,i.guid||(i.guid=f.guid);var p=k[m],q=d.event.special[m]||{};if(!p){p=k[m]=[];if(!q.setup||q.setup.call(c,g,o,l)===!1)c.addEventListener?c.addEventListener(m,l,!1):c.attachEvent&&c.attachEvent("on"+m,l)}q.add&&(q.add.call(c,i),i.handler.guid||(i.handler.guid=f.guid)),p.push(i),d.event.global[m]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),w=s&&s[u];if(!s||!w)return;typeof w==="function"&&(s=w,w=w.events),c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in w)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),t).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=w[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,delete w[h]}if(d.isEmptyObject(w)){var x=s.handle;x&&(x.elem=null),delete s.events,delete s.handle,typeof s==="function"?d.removeData(a,u,!0):d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){var f=a.type||a,g=arguments[3];if(!g){a=typeof a==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=e.nodeType?d._data(e,"handle"):(d._data(e,u)||{}).handle;h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(o,""),n=d.nodeName(l,"a")&&m==="click",p=d.event.special[m]||{};if((!p._default||p._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,u),typeof i==="function"&&(i=i.events),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){var n=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;var o=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(var f=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,F(a.origType,a.selector),d.extend({},a,{handler:E,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,F(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return new d.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?w:v):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=w;var a=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=w;var a=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=w,this.stopPropagation()},isDefaultPrevented:v,isPropagationStopped:v,isImmediatePropagationStopped:v};var x=function(a){var b=a.relatedTarget;try{while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(c){}},y=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?y:x,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?y:x)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,c){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){var c=a.target,e=c.type;if((e==="submit"||e==="image")&&d(c).closest("form").length){a.liveFired=b;return C("submit",this,arguments)}}),d.event.add(this,"keypress.specialSubmit",function(a){var c=a.target,e=c.type;if((e==="text"||e==="password")&&d(c).closest("form").length&&a.keyCode===13){a.liveFired=b;return C("submit",this,arguments)}});else return!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){var z,A=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(p.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f){a.type="change",a.liveFired=b;return d.event.trigger(a,arguments[1],c)}}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;if(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")return B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")return B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return p.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return p.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);return this}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(var e=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var c=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);return this.click(d.proxy(a,function(e){var f=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var D={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(var p in a)n[c](p,e,a[p],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split(" ");while((h=a[i++])!=null){j=o.exec(h),k="",j&&(k=j[0],h=h.replace(o,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(D[h]+k),h=h+k):h=(D[h]||h)+k;if(c==="live")for(var q=0,r=n.length;q<r;q++)d.event.add(n[q],"live."+F(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+F(h,m),f)}return this}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function s(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var j=d[g];if(j){var k=!1;j=j[a];while(j){if(j.sizcache===c){k=d[j.sizset];break}if(j.nodeType===1){f||(j.sizcache=c,j.sizset=g);if(typeof b!=="string"){if(j===b){k=!0;break}}else if(i.filter(b,[j]).length>0){k=j;break}}j=j[a]}d[g]=k}}}function r(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0;[0,0].sort(function(){h=!1;return 0});var i=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var l,m,o,p,q,r,s,u,v=!0,w=i.isXML(d),x=[],y=b;do{a.exec(""),l=a.exec(y);if(l){y=l[3],x.push(l[1]);if(l[2]){p=l[3];break}}}while(l);if(x.length>1&&k.exec(b))if(x.length===2&&j.relative[x[0]])m=t(x[0]+x[1],d);else{m=j.relative[x[0]]?[d]:i(x.shift(),d);while(x.length)b=x.shift(),j.relative[b]&&(b+=x.shift()),m=t(b,m)}else{!g&&x.length>1&&d.nodeType===9&&!w&&j.match.ID.test(x[0])&&!j.match.ID.test(x[x.length-1])&&(q=i.find(x.shift(),d,w),d=q.expr?i.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:n(g)}:i.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),m=q.expr?i.filter(q.expr,q.set):q.set,x.length>0?o=n(m):v=!1;while(x.length)r=x.pop(),s=r,j.relative[r]?s=x.pop():r="",s==null&&(s=d),j.relative[r](o,s,w)}else o=x=[]}o||(o=m),o||i.error(r||b);if(f.call(o)==="[object Array]")if(v)if(d&&d.nodeType===1)for(u=0;o[u]!=null;u++)o[u]&&(o[u]===!0||o[u].nodeType===1&&i.contains(d,o[u]))&&e.push(m[u]);else for(u=0;o[u]!=null;u++)o[u]&&o[u].nodeType===1&&e.push(m[u]);else e.push.apply(e,o);else n(o,e);p&&(i(p,h,e,g),i.uniqueSort(e));return e};i.uniqueSort=function(a){if(p){g=h,a.sort(p);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},i.matches=function(a,b){return i(a,null,null,b)},i.matchesSelector=function(a,b){return i(b,null,null,[a]).length>0},i.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=j.order.length;e<f;e++){var g,h=j.order[e];if(g=j.leftMatch[h].exec(a)){var i=g[1];g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(/\\/g,""),d=j.find[h](g,b,c);if(d!=null){a=a.replace(j.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},i.filter=function(a,c,d,e){var f,g,h=a,k=[],l=c,m=c&&c[0]&&i.isXML(c[0]);while(a&&c.length){for(var n in j.filter)if((f=j.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=j.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;l===k&&(k=[]);if(j.preFilter[n]){f=j.preFilter[n](f,l,d,k,e,m);if(f){if(f===!0)continue}else g=o=!0}if(f)for(var s=0;(p=l[s])!=null;s++)if(p){o=q(p,f,s,l);var t=e^!!o;d&&o!=null?t?g=!0:l[s]=!1:t&&(k.push(p),g=!0)}if(o!==b){d||(l=k),a=a.replace(j.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)i.error(a);else break;h=a}return l},i.error=function(a){throw"Syntax error, unrecognized expression: "+a};var j=i.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!/\W/.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&i.filter(b,a,!0)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!/\W/.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&i.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=s;typeof b==="string"&&!/\W/.test(b)&&(b=b.toLowerCase(),d=b,g=r),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=s;typeof b==="string"&&!/\W/.test(b)&&(b=b.toLowerCase(),d=b,g=r),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(/\\/g,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a,b){return a[1].toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||i.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&i.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(/\\/g,"");!f&&j.attrMap[g]&&(a[1]=j.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(/\\/g,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=i(b[3],null,null,c);else{var g=i.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(j.match.POS.test(b[0])||j.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!i(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=j.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||i.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,k=g.length;h<k;h++)if(g[h]===a)return!1;return!0}i.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=j.attrHandle[c]?j.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=j.setFilters[e];if(f)return f(a,c,b,d)}}},k=j.match.POS,l=function(a,b){return"\\"+(b-0+1)};for(var m in j.match)j.match[m]=new RegExp(j.match[m].source+/(?![^\[]*\])(?![^\(]*\))/.source),j.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+j.match[m].source.replace(/\\(\d+)/g,l));var n=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(o){n=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var p,q;c.documentElement.compareDocumentPosition?p=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(p=function(a,b){var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)return q(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return q(e[k],f[k]);return k===c?q(a,f[k],-1):q(e[k],b,1)},q=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),i.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=i.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(j.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},j.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(j.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(j.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=i,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){i=function(b,e,f,g){e=e||c;if(!g&&!i.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return n(e.getElementsByTagName(b),f);if(h[2]&&j.find.CLASS&&e.getElementsByClassName)return n(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return n([e.body],f);if(h&&h[3]){var k=e.getElementById(h[3]);if(!k||!k.parentNode)return n([],f);if(k.id===h[3])return n([k],f)}try{return n(e.querySelectorAll(b),f)}catch(l){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e.getAttribute("id"),o=m||d,p=e.parentNode,q=/^\s*[+~]/.test(b);m?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),q&&p&&(e=e.parentNode);try{if(!q||p)return n(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(r){}finally{m||e.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)i[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(i.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!i.isXML(a))try{if(d||!j.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return i(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;j.order.splice(1,0,"CLASS"),j.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?i.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?i.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains=function(){return!1},i.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var t=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=j.match.PSEUDO.exec(a))e+=c[0],a=a.replace(j.match.PSEUDO,"");a=j.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)i(a,f[g],d);return i.filter(e,d)};d.find=i,d.expr=i.selectors,d.expr[":"]=d.expr.filters,d.unique=i.uniqueSort,d.text=i.getText,d.isXMLDoc=i.isXML,d.contains=i.contains}();var G=/Until$/,H=/^(?:parents|prevUntil|prevAll)/,I=/,/,J=/^.[^:#\[\.,]*$/,K=Array.prototype.slice,L=d.expr.match.POS,M={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){var b=this.pushStack("","find",a),c=0;for(var e=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(var h=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(O(this,a,!1),"not",a)},filter:function(a){return this.pushStack(O(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/<tbody/i,U=/<|&#?\w+;/,V=/<(?:script|object|embed|option|style)/i,W=/checked\s*(?:[^=]|=\s*.checked.)/i,X={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!0:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1></$2>");try{for(var c=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))return this.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeof a!=="string"&&(a=d(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}return this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,e){var f,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeof j==="string"&&W.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))return this.each(function(f){var g=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?Y(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,_)}return this}}),d.buildFragment=function(a,b,e){var f,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!V.test(a[0])&&(d.support.checkClone||!W.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){var e=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if(!d.support.noCloneEvent&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");for(h=0;f[h];++h)$(f[h],g[h]);$(a,e)}if(b){Z(a,e);if(c&&"getElementsByTagName"in a){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");if(f.length)for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1></$2>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var ba=/alpha\([^)]*\)/i,bb=/opacity=([^)]*)/,bc=/-([a-z])/ig,bd=/([A-Z])/g,be=/^-?\d+(?:px)?$/i,bf=/^-?\d/,bg={position:"absolute",visibility:"hidden",display:"block"},bh=["Left","Right"],bi=["Top","Bottom"],bj,bk,bl,bm=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bj(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bj)return bj(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bc,bm)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bn(a,b,e):d.swap(a,bg,function(){f=bn(a,b,e)});if(f<=0){f=bj(a,b,b),f==="0px"&&bl&&(f=bl(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!be.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=ba.test(f)?f.replace(ba,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bk=function(a,c,e){var f,g,h;e=e.replace(bd,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bl=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!be.test(d)&&bf.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bj=bk||bl,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bo=/%20/g,bp=/\[\]$/,bq=/\r?\n/g,br=/#.*$/,bs=/^(.*?):\s*(.*?)\r?$/mg,bt=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bu=/^(?:GET|HEAD)$/,bv=/^\/\//,bw=/\?/,bx=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,by=/^(?:select|textarea)/i,bz=/\s+/,bA=/([?&])_=[^&]*/,bB=/^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/,bC=d.fn.load,bD={},bE={};d.fn.extend({load:function(a,b,c){if(typeof a!=="string"&&bC)return bC.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}var g="GET";b&&(d.isFunction(b)?(c=b,b=null):typeof b==="object"&&(b=d.param(b,d.ajaxSettings.traditional),g="POST"));var h=this;d.ajax({url:a,type:g,dataType:"html",data:b,complete:function(a,b,e){e=a.responseText,a.isResolved()&&(a.done(function(a){e=a}),h.html(f?d("<div>").append(e.replace(bx,"")).find(f):e)),c&&h.each(c,[e,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||by.test(this.nodeName)||bt.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bq,"\r\n")}}):{name:b.name,value:c.replace(bq,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,b){d[b]=function(a,c,e,f){d.isFunction(c)&&(f=f||e,e=c,c=null);return d.ajax({type:b,url:a,data:c,success:e,dataType:f})}}),d.extend({getScript:function(a,b){return d.get(a,null,b,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a){d.extend(!0,d.ajaxSettings,a),a.context&&(d.ajaxSettings.context=a.context)},ajaxSettings:{url:location.href,global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bF(bD),ajaxTransport:bF(bE),ajax:function(a,e){function w(a,c,e,l){if(t!==2){t=2,p&&clearTimeout(p),o=b,m=l||"",v.readyState=a?4:0;var n,q,r,s=e?bI(f,v,e):b,u,w;if(a>=200&&a<300||a===304){if(f.ifModified){if(u=v.getResponseHeader("Last-Modified"))d.lastModified[f.url]=u;if(w=v.getResponseHeader("Etag"))d.etag[f.url]=w}if(a===304)c="notmodified",n=!0;else try{q=bJ(f,s),c="success",n=!0}catch(x){c="parsererror",r=x}}else r=c,a&&(c="error",a<0&&(a=0));v.status=a,v.statusText=c,n?i.resolveWith(g,[q,c,v]):i.rejectWith(g,[v,c,r]),v.statusCode(k),k=b,f.global&&h.trigger("ajax"+(n?"Success":"Error"),[v,f,n?q:r]),j.resolveWith(g,[v,c]),f.global&&(h.trigger("ajaxComplete",[v,f]),--d.active||d.event.trigger("ajaxStop"))}}typeof e!=="object"&&(e=a,a=b),e=e||{};var f=d.extend(!0,{},d.ajaxSettings,e),g=(f.context=("context"in e?e:d.ajaxSettings).context)||f,h=g===f?d.event:d(g),i=d.Deferred(),j=d._Deferred(),k=f.statusCode||{},l={},m,n,o,p,q=c.location,r=q.protocol||"http:",s,t=0,u,v={readyState:0,setRequestHeader:function(a,b){t===0&&(l[a.toLowerCase()]=b);return this},getAllResponseHeaders:function(){return t===2?m:null},getResponseHeader:function(a){var b;if(t===2){if(!n){n={};while(b=bs.exec(m))n[b[1].toLowerCase()]=b[2]}b=n[a.toLowerCase()]}return b||null},abort:function(a){a=a||"abort",o&&o.abort(a),w(0,a);return this}};i.promise(v),v.success=v.done,v.error=v.fail,v.complete=j.done,v.statusCode=function(a){if(a){var b;if(t<2)for(b in a)k[b]=[k[b],a[b]];else b=a[v.status],v.then(b,b)}return this},f.url=(""+(a||f.url)).replace(br,"").replace(bv,r+"//"),f.dataTypes=d.trim(f.dataType||"*").toLowerCase().split(bz),f.crossDomain||(s=bB.exec(f.url.toLowerCase()),f.crossDomain=s&&(s[1]!=r||s[2]!=q.hostname||(s[3]||(s[1]==="http:"?80:443))!=(q.port||(r==="http:"?80:443)))),f.data&&f.processData&&typeof f.data!=="string"&&(f.data=d.param(f.data,f.traditional)),bG(bD,f,e,v),f.type=f.type.toUpperCase(),f.hasContent=!bu.test(f.type),f.global&&d.active++===0&&d.event.trigger("ajaxStart");if(!f.hasContent){f.data&&(f.url+=(bw.test(f.url)?"&":"?")+f.data);if(f.cache===!1){var x=d.now(),y=f.url.replace(bA,"$1_="+x);f.url=y+(y===f.url?(bw.test(f.url)?"&":"?")+"_="+x:"")}}if(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)l["content-type"]=f.contentType;f.ifModified&&(d.lastModified[f.url]&&(l["if-modified-since"]=d.lastModified[f.url]),d.etag[f.url]&&(l["if-none-match"]=d.etag[f.url])),l.accept=f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(f.dataTypes[0]!=="*"?", */*; q=0.01":""):f.accepts["*"];for(u in f.headers)l[u.toLowerCase()]=f.headers[u];if(!f.beforeSend||f.beforeSend.call(g,v,f)!==!1&&t!==2){for(u in {success:1,error:1,complete:1})v[u](f[u]);o=bG(bE,f,e,v);if(o){t=v.readyState=1,f.global&&h.trigger("ajaxSend",[v,f]),f.async&&f.timeout>0&&(p=setTimeout(function(){v.abort("timeout")},f.timeout));try{o.send(l,w)}catch(z){status<2?w(-1,z):d.error(z)}}else w(-1,"No Transport")}else w(0,"abort"),v=!1;return v},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery)d.each(a,function(){f(this.name,this.value)});else for(var g in a)bH(g,a[g],c,f);return e.join("&").replace(bo,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bK=d.now(),bL=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bK++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){e=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bL.test(b.url)||e&&bL.test(b.data))){var f,g=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h=a[g],i=b.url,j=b.data,k="$1"+g+"$2";b.jsonp!==!1&&(i=i.replace(bL,k),b.url===i&&(e&&(j=j.replace(bL,k)),b.data===j&&(i+=(/\?/.test(i)?"&":"?")+b.jsonp+"="+g))),b.url=i,b.data=j,a[g]=function(a){f=[a]},b.complete=[function(){a[g]=h;if(h)f&&d.isFunction(h)&&a[g](f[0]);else try{delete a[g]}catch(b){}},b.complete],b.converters["script json"]=function(){f||d.error(g+" was not called");return f[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript"},contents:{script:/javascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bM=d.now(),bN={},bO,bP;d.ajaxSettings.xhr=a.ActiveXObject?function(){if(a.location.protocol!=="file:")try{return new a.XMLHttpRequest}catch(b){}try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(c){}}:function(){return new a.XMLHttpRequest};try{bP=d.ajaxSettings.xhr()}catch(bQ){}d.support.ajax=!!bP,d.support.cors=bP&&"withCredentials"in bP,bP=b,d.support.ajax&&d.ajaxTransport(function(b){if(!b.crossDomain||d.support.cors){var c;return{send:function(e,f){bO||(bO=1,d(a).bind("unload",function(){d.each(bN,function(a,b){b.onreadystatechange&&b.onreadystatechange(1)})}));var g=b.xhr(),h;b.username?g.open(b.type,b.url,b.async,b.username,b.password):g.open(b.type,b.url,b.async),(!b.crossDomain||b.hasContent)&&!e["x-requested-with"]&&(e["x-requested-with"]="XMLHttpRequest");try{d.each(e,function(a,b){g.setRequestHeader(a,b)})}catch(i){}g.send(b.hasContent&&b.data||null),c=function(a,e){if(c&&(e||g.readyState===4)){c=0,h&&(g.onreadystatechange=d.noop,delete bN[h]);if(e)g.readyState!==4&&g.abort();else{var i=g.status,j,k=g.getAllResponseHeaders(),l={},m=g.responseXML;m&&m.documentElement&&(l.xml=m),l.text=g.responseText;try{j=g.statusText}catch(n){j=""}i=i===0?!b.crossDomain||j?k?304:0:302:i==1223?204:i,f(i,j,l,k)}}},b.async&&g.readyState!==4?(h=bM++,bN[h]=g,g.onreadystatechange=c):c()},abort:function(){c&&c(0,1)}}}});var bR={},bS=/^(?:toggle|show|hide)$/,bT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,bU,bV=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(bW("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",bX(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(bW("hide",3),a,b,c);for(var e=0,f=this.length;e<f;e++){var g=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){var e=typeof a==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var b=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(bW("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);return this[f.queue===!1?"each":"queue"](function(){var b=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){var i=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)return b.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=bX(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=new d.fx(h,b,c);if(bS.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=bT.exec(e),j=f.cur()||0;if(i){var k=parseFloat(i[2]),l=i[3]||"px";l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}else f.custom(j,e,"")}});return!0})},stop:function(a,b){var c=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:bW("show",1),slideUp:bW("hide",1),slideToggle:bW("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(d.css(this.elem,this.prop));return a||0},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||"px",this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!bU&&(bU=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(bU),bU=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});var bY=/^t(?:able|d|h)$/i,bZ=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=f.body,i=b$(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();var c,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!bY.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){var a=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=bZ.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!bZ.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=b$(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=b$(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}})})(window);
skin/frontend/default/default/smartaddons/categoryshowcase/js/jquery.cycle.all.js ADDED
@@ -0,0 +1,1467 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!* jQuery Cycle Plugin (with Transition Definitions)* Examples and documentation at: http://jquery.malsup.com/cycle/
2
+ * Copyright (c) 2007-2010 M. Alsup
3
+ * Version: 2.88 (08-JUN-2010)
4
+ * Dual licensed under the MIT and GPL licenses.
5
+ * http://jquery.malsup.com/license.html
6
+ * Requires: jQuery v1.2.6 or later
7
+ */
8
+ ;(function($) {
9
+ var ver = '2.88';
10
+ // if $.support is not defined (pre jQuery 1.3) add what I need
11
+ if ($.support == undefined) {
12
+ $.support = {
13
+ opacity: !($.browser.msie)
14
+ };
15
+ }
16
+ function debug(s) {
17
+ if ($.fn.cycle.debug)
18
+ log(s);
19
+ }
20
+ function log() {
21
+ if (window.console && window.console.log)
22
+ window.console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
23
+ };
24
+ // the options arg can be...
25
+ // a number - indicates an immediate transition should occur to the given slide index
26
+ // a string - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
27
+ // an object - properties to control the slideshow
28
+ //
29
+ // the arg2 arg can be...
30
+ // the name of an fx (only used in conjunction with a numeric value for 'options')
31
+ // the value true (only used in first arg == 'resume') and indicates
32
+ // that the resume should occur immediately (not wait for next timeout)
33
+ $.fn.cycle = function(options, arg2) {
34
+ var o = { s: this.selector, c: this.context };
35
+ // in 1.3+ we can fix mistakes with the ready state
36
+ if (this.length === 0 && options != 'stop') {
37
+ if (!$.isReady && o.s) {
38
+ log('DOM not ready, queuing slideshow');
39
+ $(function() {
40
+ $(o.s,o.c).cycle(options,arg2);
41
+ });
42
+ return this;
43
+ }
44
+ // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
45
+ log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
46
+ return this;
47
+ }
48
+ // iterate the matched nodeset
49
+ return this.each(function() {
50
+ var opts = handleArguments(this, options, arg2);
51
+ if (opts === false)
52
+ return;
53
+ opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
54
+
55
+ // stop existing slideshow for this container (if there is one)
56
+ if (this.cycleTimeout)
57
+ clearTimeout(this.cycleTimeout);
58
+ this.cycleTimeout = this.cyclePause = this.clickButtons = 0;
59
+ var $cont = $(this);
60
+ var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
61
+ var els = $slides.get();
62
+ if (els.length < 2) {
63
+ log('terminating; too few slides: ' + els.length);
64
+ return;
65
+ }
66
+
67
+ var opts2 = buildOptions($cont, $slides, els, opts, o);
68
+
69
+ setHover(opts.theme, opts.divId, $cont);
70
+
71
+ if(opts.theme=='theme2' || opts.theme=='theme1'|| opts.theme=='theme3'|| opts.theme=='theme4'){
72
+ buildButton(opts2);
73
+ }
74
+
75
+ if (opts2 === false)
76
+ return;
77
+ // for default
78
+
79
+ curr = els[opts2.currSlide], next = els[opts2.nextSlide];
80
+
81
+ if(opts.theme=='theme2' || opts.theme=='theme4'){
82
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts2.currSlide).html());
83
+ var readmore = '<a href="'+$(curr).children('img').attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
84
+ $("#read_more_content_"+opts.divId).html(readmore);
85
+ //var caption = $(curr).children('img').attr('caption');
86
+ //if(opts.linkcaption) caption = '<a href="'+$(curr).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
87
+ //$("#caption_"+opts.divId).children('p').html(caption);
88
+ }
89
+
90
+ if(opts.theme=='default'){
91
+ $(opts.next).children('div').html('<img src="'+$(curr).children('img').attr('nexsrc')+'" />');
92
+
93
+ $(opts.prev).children('div').html('<img src="'+$(curr).children('img').attr('presrc')+'" />');
94
+
95
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts2.currSlide).html());
96
+
97
+ var readmore = '<a href="'+$(curr).children('img').attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
98
+
99
+ $("#read_more_content_"+opts.divId).html(readmore);
100
+ //$("#caption_"+opts.divId).children('p').html($(curr).children('img').attr('caption'));
101
+ }
102
+
103
+ if(opts.theme=='theme1' || opts.theme=='theme3')
104
+ {
105
+ var caption = $(curr).children('img').attr('caption');
106
+ if(opts.linkcaption) caption = '<a href="'+$(curr).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
107
+ //$("#caption_"+opts.divId).children('p').html(caption);
108
+ $("#play_pause_"+opts.divId).bind('click', function(){return playPauseClick($cont,"#play_pause_"+opts.divId)})
109
+ }
110
+
111
+ /*if(opts.theme=='theme4')
112
+ {
113
+ var caption = $(curr).children('img').attr('caption');
114
+ if(opts.linkcaption) caption = '<a href="'+$(curr).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
115
+ $("#caption_"+opts.divId).children('p').html(caption);
116
+ }*/
117
+ var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.rev);
118
+ // if it's an auto slideshow, kick it off
119
+ if (startTime) {
120
+ startTime += (opts2.delay || 0);
121
+ if (startTime < 10)
122
+ startTime = 10;
123
+ debug('first timeout: ' + startTime);//chung
124
+ this.cycleTimeout = setTimeout(function(){go(els,opts2,0,(!opts2.rev && !opts.backwards))}, startTime);
125
+ }
126
+ });
127
+ };
128
+ //for theme3
129
+ function playPauseClick($cont, strId)
130
+ {
131
+ var cont = $cont[0];
132
+ playPauseClass = $(strId).attr('class');
133
+ if(playPauseClass=='pause')
134
+ {
135
+ cont.cyclePause++;
136
+ $(strId).removeClass('pause'); $(strId).addClass('play');
137
+ }
138
+ else
139
+ {
140
+ cont.cyclePause--;
141
+ $(strId).removeClass('play'); $(strId).addClass('pause');
142
+ }
143
+ return false;
144
+ }
145
+ //for theme1 & 2
146
+ function buildButton(opts){
147
+ var buttons = $('#image_button_'+opts.divId).children();
148
+ buttons.mouseenter(function() {});
149
+ buttons.mouseleave(function() {});
150
+ $.each(buttons , function(key, val){
151
+ //if($(val).attr('class')!='button_img_selected')
152
+ $(val).bind('click', function(){return advanceClick(opts,opts.rev?-1:1,val.value)});
153
+ });
154
+ }
155
+ function resetButton(opts,index){
156
+ var buttons = $('#image_button_'+opts.divId).children();
157
+ $.each(buttons , function(key, val){
158
+ if(($(val).attr('class')=='button_img_selected'))
159
+ {
160
+ $(val).removeClass("button_img_selected");$(val).addClass("button_img");
161
+ $("#caption_"+opts.divId+key).hide();
162
+ $("#ListChildren_"+opts.divId+key).hide();
163
+
164
+
165
+
166
+ }
167
+ if(index==key)
168
+ {
169
+ $(val).removeClass("button_img");$(val).addClass("button_img_selected");
170
+ $("#caption_"+opts.divId+key).show();
171
+ $("#ListChildren_"+opts.divId+key).show();
172
+
173
+
174
+
175
+ }
176
+
177
+ });
178
+ }
179
+ // set hover for what on slider
180
+ function setHover(theme, module_id, $cont){
181
+ var cont = $cont[0];
182
+ switch(theme){
183
+ case 'theme1':
184
+ $('#caption_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
185
+ $('#cover_buttons_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
186
+ break;
187
+ case 'theme2':
188
+ $('#content_box_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
189
+ $('#cover_buttons_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
190
+ break;
191
+ case 'theme3':
192
+ $('#caption_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
193
+ $('#cover_buttons_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
194
+ break;
195
+ case 'theme4':
196
+ $('#captions_big_'+module_id).hover(function(){cont.cyclePause++;},function(){cont.cyclePause--;});
197
+ break;
198
+ default:
199
+ break;
200
+ }
201
+ }
202
+ // process the args that were passed to the plugin fn
203
+ function handleArguments(cont, options, arg2) {
204
+ if (cont.cycleStop == undefined)
205
+ cont.cycleStop = 0;
206
+ if (options === undefined || options === null)
207
+ options = {};
208
+ if (options.constructor == String) {
209
+ switch(options) {
210
+ case 'destroy':
211
+ case 'stop':
212
+ var opts = $(cont).data('cycle.opts');
213
+ if (!opts)
214
+ return false;
215
+ cont.cycleStop++; // callbacks look for change
216
+ if (cont.cycleTimeout)
217
+ clearTimeout(cont.cycleTimeout);
218
+ cont.cycleTimeout = 0;
219
+ $(cont).removeData('cycle.opts');
220
+ if (options == 'destroy')
221
+ destroy(opts);
222
+ return false;
223
+ case 'toggle':
224
+ cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
225
+ checkInstantResume(cont.cyclePause, arg2, cont);
226
+ return false;
227
+ case 'pause':
228
+ cont.cyclePause = 1;
229
+ return false;
230
+ case 'resume':
231
+ cont.cyclePause = 0;
232
+ checkInstantResume(false, arg2, cont);
233
+ return false;
234
+ case 'prev':
235
+ case 'next':
236
+ var opts = $(cont).data('cycle.opts');
237
+ if (!opts) {
238
+ log('options not found, "prev/next" ignored');
239
+ return false;
240
+ }
241
+ $.fn.cycle[options](opts);
242
+ return false;
243
+ default:
244
+ options = { fx: options };
245
+ };
246
+ return options;
247
+ }
248
+ else if (options.constructor == Number) {
249
+ // go to the requested slide
250
+ var num = options;
251
+ options = $(cont).data('cycle.opts');
252
+ if (!options) {
253
+ log('options not found, can not advance slide');
254
+ return false;
255
+ }
256
+ if (num < 0 || num >= options.elements.length) {
257
+ log('invalid slide index: ' + num);
258
+ return false;
259
+ }
260
+ options.nextSlide = num;
261
+ if (cont.cycleTimeout) {
262
+ clearTimeout(cont.cycleTimeout);
263
+ cont.cycleTimeout = 0;
264
+ }
265
+ if (typeof arg2 == 'string')
266
+ options.oneTimeFx = arg2;
267
+ go(options.elements, options, 1, num >= options.currSlide);
268
+ return false;
269
+ }
270
+ return options;
271
+
272
+ function checkInstantResume(isPaused, arg2, cont) {
273
+ if (!isPaused && arg2 === true) { // resume now!
274
+ var options = $(cont).data('cycle.opts');
275
+ if (!options) {
276
+ log('options not found, can not resume');
277
+ return false;
278
+ }
279
+ if (cont.cycleTimeout) {
280
+ clearTimeout(cont.cycleTimeout);
281
+ cont.cycleTimeout = 0;
282
+ }
283
+ go(options.elements, options, 1, (!opts.rev && !opts.backwards));
284
+ }
285
+ }
286
+ };
287
+ function removeFilter(el, opts) {
288
+ if (!$.support.opacity && opts.cleartype && el.style.filter) {
289
+ try { el.style.removeAttribute('filter'); }
290
+ catch(smother) {} // handle old opera versions
291
+ }
292
+ };
293
+ // unbind event handlers
294
+ function destroy(opts) {
295
+ if (opts.next)
296
+ $(opts.next).unbind(opts.prevNextEvent);
297
+ if (opts.prev)
298
+ $(opts.prev).unbind(opts.prevNextEvent);
299
+
300
+ if (opts.pager || opts.pagerAnchorBuilder)
301
+ $.each(opts.pagerAnchors || [], function() {
302
+ this.unbind().remove();
303
+ });
304
+ opts.pagerAnchors = null;
305
+ if (opts.destroy) // callback
306
+ opts.destroy(opts);
307
+ };
308
+ // one-time initialization
309
+ function buildOptions($cont, $slides, els, options, o) {
310
+ // support metadata plugin (v1.0 and v2.0)
311
+ var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
312
+ if (opts.autostop)
313
+ opts.countdown = opts.autostopCount || els.length;
314
+ var cont = $cont[0];
315
+ $cont.data('cycle.opts', opts);
316
+ opts.$cont = $cont;
317
+ opts.stopCount = cont.cycleStop;
318
+ opts.elements = els;
319
+ opts.before = opts.before ? [opts.before] : [];
320
+ opts.after = opts.after ? [opts.after] : [];
321
+ opts.after.unshift(function(){ opts.busy=0; });
322
+ // push some after callbacks
323
+ if (!$.support.opacity && opts.cleartype)
324
+ opts.after.push(function() { removeFilter(this, opts); });
325
+ if (opts.continuous)
326
+ opts.after.push(function() { go(els,opts,0,(!opts.rev && !opts.backwards)); });
327
+ saveOriginalOpts(opts);
328
+ // clearType corrections
329
+ if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
330
+ clearTypeFix($slides);
331
+ // container requires non-static position so that slides can be position within
332
+ if ($cont.css('position') == 'static')
333
+ $cont.css('position', '');
334
+ if (opts.width)
335
+ $cont.width(opts.width);
336
+ if (opts.height && opts.height != 'auto')
337
+ $cont.height(opts.height);
338
+ if (opts.startingSlide)
339
+ opts.startingSlide = parseInt(opts.startingSlide);
340
+ else if (opts.backwards)
341
+ opts.startingSlide = els.length - 1;
342
+ // if random, mix up the slide array
343
+ if (opts.random) {
344
+ opts.randomMap = [];
345
+ for (var i = 0; i < els.length; i++)
346
+ opts.randomMap.push(i);
347
+ opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
348
+ opts.randomIndex = 1;
349
+ opts.startingSlide = opts.randomMap[1];
350
+ }
351
+ else if (opts.startingSlide >= els.length)
352
+ opts.startingSlide = 0; // catch bogus input
353
+ opts.currSlide = opts.startingSlide || 0;
354
+ var first = opts.startingSlide;
355
+ // set position and zIndex on all the slides
356
+ $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
357
+ var z;
358
+ if (opts.backwards)
359
+ z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i;
360
+ else
361
+ z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
362
+ $(this).css('z-index', z)
363
+ });
364
+ // make sure first slide is visible
365
+ $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
366
+ removeFilter(els[first], opts);
367
+ // stretch slides
368
+ if (opts.fit && opts.width)
369
+ $slides.width(opts.width);
370
+ if (opts.fit && opts.height && opts.height != 'auto')
371
+ $slides.height(opts.height);
372
+ // stretch container
373
+ var reshape = opts.containerResize && !$cont.innerHeight();
374
+ if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
375
+ var maxw = 0, maxh = 0;
376
+ for(var j=0; j < els.length; j++) {
377
+ var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
378
+ if (!w) w = e.offsetWidth || e.width || $e.attr('width')
379
+ if (!h) h = e.offsetHeight || e.height || $e.attr('height');
380
+ maxw = w > maxw ? w : maxw;
381
+ maxh = h > maxh ? h : maxh;
382
+ }
383
+ if (maxw > 0 && maxh > 0)
384
+ $cont.css({width:maxw+'px',height:maxh+'px'});
385
+ }
386
+ if(opts.pause)
387
+ $cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});
388
+
389
+ if(!opts.autoPlay)
390
+ cont.cyclePause++;
391
+
392
+ if(supportMultiTransitions(opts) === false)
393
+ return false;
394
+ // apparently a lot of people use image slideshows without height/width attributes on the images.
395
+ // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
396
+ var requeue = false;
397
+ options.requeueAttempts = options.requeueAttempts || 0;
398
+ $slides.each(function() {
399
+ // try to get height/width of each slide
400
+ var $el = $(this);
401
+ this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
402
+ this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);
403
+ if ( $el.is('img') ) {
404
+ // sigh.. sniffing, hacking, shrugging... this crappy hack tries to account for what browsers do when
405
+ // an image is being downloaded and the markup did not include sizing info (height/width attributes);
406
+ // there seems to be some "default" sizes used in this situation
407
+ var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
408
+ var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
409
+ var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
410
+ var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
411
+ // don't requeue for images that are still loading but have a valid size
412
+ if (loadingIE || loadingFF || loadingOp || loadingOther) {
413
+ if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
414
+ log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
415
+ setTimeout(function() {$(o.s,o.c).cycle(options)}, opts.requeueTimeout);
416
+ requeue = true;
417
+ return false; // break each loop
418
+ }
419
+ else {
420
+ log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
421
+ }
422
+ }
423
+ }
424
+ return true;
425
+ });
426
+ if (requeue)
427
+ return false;
428
+ opts.cssBefore = opts.cssBefore || {};
429
+ opts.animIn = opts.animIn || {};
430
+ opts.animOut = opts.animOut || {};
431
+ $slides.not(':eq('+first+')').css(opts.cssBefore);
432
+ if (opts.cssFirst)
433
+ $($slides[first]).css(opts.cssFirst);
434
+ if (opts.timeout) {
435
+ opts.timeout = parseInt(opts.timeout);
436
+ // ensure that timeout and speed settings are sane
437
+ if (opts.speed.constructor == String)
438
+ opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed);
439
+ if (!opts.sync)
440
+ opts.speed = opts.speed / 2;
441
+
442
+ var buffer = opts.fx == 'shuffle' ? 500 : 250;
443
+ while((opts.timeout - opts.speed) < buffer) // sanitize timeout
444
+ opts.timeout += opts.speed;
445
+ }
446
+ if (opts.easing)
447
+ opts.easeIn = opts.easeOut = opts.easing;
448
+ if (!opts.speedIn)
449
+ opts.speedIn = opts.speed;
450
+ if (!opts.speedOut)
451
+ opts.speedOut = opts.speed;
452
+ opts.slideCount = els.length;
453
+ opts.currSlide = opts.lastSlide = first;
454
+ if (opts.random) {
455
+ if (++opts.randomIndex == els.length)
456
+ opts.randomIndex = 0;
457
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
458
+ }
459
+ else if (opts.backwards)
460
+ opts.nextSlide = opts.startingSlide == 0 ? (els.length-1) : opts.startingSlide-1;
461
+ else
462
+ opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;
463
+ // run transition init fn
464
+ if (!opts.multiFx) {
465
+ var init = $.fn.cycle.transitions[opts.fx];
466
+ if ($.isFunction(init))
467
+ init($cont, $slides, opts);
468
+ else if (opts.fx != 'custom' && !opts.multiFx) {
469
+ log('unknown transition: ' + opts.fx,'; slideshow terminating');
470
+ return false;
471
+ }
472
+ }
473
+ // fire artificial events
474
+ var e0 = $slides[first];
475
+ if (opts.before.length)
476
+ opts.before[0].apply(e0, [e0, e0, opts, true]);
477
+ if (opts.after.length > 1)
478
+ opts.after[1].apply(e0, [e0, e0, opts, true]);
479
+ if (opts.next)
480
+ $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1)});
481
+ if (opts.prev)
482
+ $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1)});
483
+ if (opts.pager || opts.pagerAnchorBuilder)
484
+ buildPager(els,opts);
485
+ exposeAddSlide(opts, els);
486
+ return opts;
487
+ };
488
+ // save off original opts so we can restore after clearing state
489
+ function saveOriginalOpts(opts) {
490
+ opts.original = { before: [], after: [] };
491
+ opts.original.cssBefore = $.extend({}, opts.cssBefore);
492
+ opts.original.cssAfter = $.extend({}, opts.cssAfter);
493
+ opts.original.animIn = $.extend({}, opts.animIn);
494
+ opts.original.animOut = $.extend({}, opts.animOut);
495
+ $.each(opts.before, function() { opts.original.before.push(this); });
496
+ $.each(opts.after, function() { opts.original.after.push(this); });
497
+ };
498
+ function supportMultiTransitions(opts) {
499
+ var i, tx, txs = $.fn.cycle.transitions;
500
+ // look for multiple effects
501
+ if (opts.fx.indexOf(',') > 0) {
502
+ opts.multiFx = true;
503
+ opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
504
+ // discard any bogus effect names
505
+ for (i=0; i < opts.fxs.length; i++) {
506
+ var fx = opts.fxs[i];
507
+ tx = txs[fx];
508
+ if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
509
+ log('discarding unknown transition: ',fx);
510
+ opts.fxs.splice(i,1);
511
+ i--;
512
+ }
513
+ }
514
+ // if we have an empty list then we threw everything away!
515
+ if (!opts.fxs.length) {
516
+ log('No valid transitions named; slideshow terminating.');
517
+ return false;
518
+ }
519
+ }
520
+ else if (opts.fx == 'all') { // auto-gen the list of transitions
521
+ opts.multiFx = true;
522
+ opts.fxs = [];
523
+ for (p in txs) {
524
+ tx = txs[p];
525
+ if (txs.hasOwnProperty(p) && $.isFunction(tx))
526
+ opts.fxs.push(p);
527
+ }
528
+ }
529
+ if (opts.multiFx && opts.randomizeEffects) {
530
+ // munge the fxs array to make effect selection random
531
+ var r1 = Math.floor(Math.random() * 20) + 30;
532
+ for (i = 0; i < r1; i++) {
533
+ var r2 = Math.floor(Math.random() * opts.fxs.length);
534
+ opts.fxs.push(opts.fxs.splice(r2,1)[0]);
535
+ }
536
+ debug('randomized fx sequence: ',opts.fxs);
537
+ }
538
+ return true;
539
+ };
540
+ // provide a mechanism for adding slides after the slideshow has started
541
+ function exposeAddSlide(opts, els) {
542
+ opts.addSlide = function(newSlide, prepend) {
543
+ var $s = $(newSlide), s = $s[0];
544
+ if (!opts.autostopCount)
545
+ opts.countdown++;
546
+ els[prepend?'unshift':'push'](s);
547
+ if (opts.els)
548
+ opts.els[prepend?'unshift':'push'](s); // shuffle needs this
549
+ opts.slideCount = els.length;
550
+ $s.css('position','absolute');
551
+ $s[prepend?'prependTo':'appendTo'](opts.$cont);
552
+ if (prepend) {
553
+ opts.currSlide++;
554
+ opts.nextSlide++;
555
+ }
556
+ if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
557
+ clearTypeFix($s);
558
+ if (opts.fit && opts.width)
559
+ $s.width(opts.width);
560
+ if (opts.fit && opts.height && opts.height != 'auto')
561
+ $slides.height(opts.height);
562
+ s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
563
+ s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();
564
+ $s.css(opts.cssBefore);
565
+ if (opts.pager || opts.pagerAnchorBuilder)
566
+ $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);
567
+ if ($.isFunction(opts.onAddSlide))
568
+ opts.onAddSlide($s);
569
+ else
570
+ $s.hide(); // default behavior
571
+ };
572
+ }
573
+ // reset internal state; we do this on every pass in order to support multiple effects
574
+ $.fn.cycle.resetState = function(opts, fx) {
575
+ fx = fx || opts.fx;
576
+ opts.before = []; opts.after = [];
577
+ opts.cssBefore = $.extend({}, opts.original.cssBefore);
578
+ opts.cssAfter = $.extend({}, opts.original.cssAfter);
579
+ opts.animIn = $.extend({}, opts.original.animIn);
580
+ opts.animOut = $.extend({}, opts.original.animOut);
581
+ opts.fxFn = null;
582
+ $.each(opts.original.before, function() { opts.before.push(this); });
583
+ $.each(opts.original.after, function() { opts.after.push(this); });
584
+ // re-init
585
+ var init = $.fn.cycle.transitions[fx];
586
+ if ($.isFunction(init))
587
+ init(opts.$cont, $(opts.elements), opts);
588
+ };
589
+ // this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
590
+ function go(els, opts, manual, fwd) {
591
+ // opts.busy is true if we're in the middle of an animation
592
+ if (manual && opts.busy && opts.manualTrump) {
593
+ // let manual transitions requests trump active ones
594
+ debug('manualTrump in go(), stopping active transition');
595
+ $(els).stop(true,true);
596
+ opts.busy = false;
597
+ }
598
+ // don't begin another timeout-based transition if there is one active
599
+ if (opts.busy) {
600
+ debug('transition active, ignoring new tx request');
601
+ return;
602
+ }
603
+ var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];
604
+ // stop cycling if we have an outstanding stop request
605
+ if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
606
+ return; // check to see if we should stop cycling based on autostop options
607
+ if (!manual && !p.cyclePause && !opts.bounce &&
608
+ ((opts.autostop && (--opts.countdown <= 0)) ||
609
+ (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
610
+ if (opts.end)
611
+ opts.end(opts);
612
+ return;
613
+ }
614
+ if(!p.cyclePause || p.clickButtons)
615
+ {
616
+ /*if(opts.theme=='default')
617
+ {
618
+ $(opts.next).children('div').html('<img src="'+$(next).children('img').attr('nexsrc')+'" />');
619
+ $(opts.prev).children('div').html('<img src="'+$(next).children('img').attr('presrc')+'" />');
620
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts.nextSlide).html());
621
+ var readmore = '<a href="'+$(next).attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
622
+ $("#read_more_content_"+opts.divId).html(readmore);
623
+ $("#caption_"+opts.divId).children('p').html($(next).children('img').attr('caption'));
624
+ //$("#caption_"+opts.divId).stop().animate({"bottom" : 10}, 1234);
625
+ }*/
626
+ // for theme1
627
+ if(opts.theme=='theme1' || opts.theme=='theme3')
628
+ {
629
+ //var caption =$(next).children('img').attr('caption');
630
+ // if(opts.linkcaption) caption = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
631
+ //$("#caption_"+opts.divId).children('p').html(caption);
632
+ }
633
+
634
+ if(opts.theme=='theme3')
635
+ {
636
+ resetButton(opts, opts.nextSlide);
637
+ }
638
+
639
+ if(opts.theme=='theme1'){
640
+ resetButton(opts, opts.nextSlide);
641
+ }
642
+ if(opts.theme=='theme4')
643
+ {
644
+ resetButton(opts, opts.nextSlide);
645
+ }
646
+ if(opts.theme=='theme2' || opts.theme=='theme4'){
647
+ var readmore = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
648
+ $("#read_more_content_"+opts.divId).html(readmore);
649
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts.nextSlide).html());
650
+
651
+ var caption =$(next).children('img').attr('caption');
652
+ if(opts.linkcaption) caption = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
653
+ var readmore = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
654
+ $("#read_more_content_"+opts.divId).html(readmore);
655
+ //$("#caption_"+opts.divId).children('p').html(caption);
656
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts.nextSlide).html());
657
+
658
+ resetButton(opts, opts.nextSlide);
659
+ }
660
+
661
+ /*if(opts.theme=='theme4'){
662
+ var caption =$(next).children('img').attr('caption');
663
+ if(opts.linkcaption) caption = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+caption+'</a>';
664
+ var readmore = '<a href="'+$(next).children('img').attr('href')+'" target="'+opts.linktarget+'">'+opts.readmoreImg+'</a>';
665
+ $("#read_more_content_"+opts.divId).html(readmore);
666
+ $("#caption_"+opts.divId).children('p').html(caption);
667
+ $("#current_content_"+opts.divId).html($("#arrContent_"+opts.divId + "_" + opts.nextSlide).html());
668
+
669
+ }*/
670
+
671
+ if(p.clickButtons)
672
+ p.clickButtons--;
673
+
674
+ /*$.each($("img[src$=.png],img[src$=.PNG]"), function () {
675
+ var img = $(this);
676
+ img.css({"width": img.width(),"height": img.height(), "filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.attr("src") + "', sizingMethod='scale')"});
677
+ img.attr("src","/blank.gif");
678
+ });*/
679
+ }
680
+
681
+ // if slideshow is paused, only transition on a manual trigger
682
+ var changed = false;
683
+ if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
684
+ changed = true;
685
+ var fx = opts.fx;
686
+ // keep trying to get the slide size if we don't have it yet
687
+ curr.cycleH = curr.cycleH || $(curr).height();
688
+ curr.cycleW = curr.cycleW || $(curr).width();
689
+ next.cycleH = next.cycleH || $(next).height();
690
+ next.cycleW = next.cycleW || $(next).width();
691
+ // support multiple transition types
692
+ if (opts.multiFx) {
693
+ if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)
694
+ opts.lastFx = 0;
695
+ fx = opts.fxs[opts.lastFx];
696
+ opts.currFx = fx;
697
+ }
698
+ // one-time fx overrides apply to: $('div').cycle(3,'zoom');
699
+ if (opts.oneTimeFx) {
700
+ fx = opts.oneTimeFx;
701
+ opts.oneTimeFx = null;
702
+ }
703
+ $.fn.cycle.resetState(opts, fx);
704
+ // run the before callbacks
705
+ if (opts.before.length)
706
+ $.each(opts.before, function(i,o) {
707
+ if (p.cycleStop != opts.stopCount) return;
708
+ o.apply(next, [curr, next, opts, fwd]);
709
+ });
710
+ // stage the after callacks
711
+ var after = function() {
712
+ $.each(opts.after, function(i,o) {
713
+ if (p.cycleStop != opts.stopCount) return;
714
+ o.apply(next, [curr, next, opts, fwd]);
715
+ });
716
+ };
717
+ debug('tx firing; currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
718
+
719
+ // get ready to perform the transition
720
+ opts.busy = 1;
721
+ if (opts.fxFn) // fx function provided?
722
+ opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
723
+ else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
724
+ $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
725
+ else
726
+ $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
727
+ }
728
+ if (changed || opts.nextSlide == opts.currSlide) {
729
+ // calculate the next slide
730
+ opts.lastSlide = opts.currSlide;
731
+ if (opts.random) {
732
+ opts.currSlide = opts.nextSlide;
733
+ if (++opts.randomIndex == els.length)
734
+ opts.randomIndex = 0;
735
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
736
+ if (opts.nextSlide == opts.currSlide)
737
+ opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
738
+ }
739
+ else if (opts.backwards) {
740
+ var roll = (opts.nextSlide - 1) < 0;
741
+ if (roll && opts.bounce) {
742
+ opts.backwards = !opts.backwards;
743
+ opts.nextSlide = 1;
744
+ opts.currSlide = 0;
745
+ }
746
+ else {
747
+ opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1;
748
+ opts.currSlide = roll ? 0 : opts.nextSlide+1;
749
+ }
750
+ }
751
+ else { // sequence
752
+ var roll = (opts.nextSlide + 1) == els.length;
753
+ if (roll && opts.bounce) {
754
+ opts.backwards = !opts.backwards;
755
+ opts.nextSlide = els.length-2;
756
+ opts.currSlide = els.length-1;
757
+ }
758
+ else {
759
+ opts.nextSlide = roll ? 0 : opts.nextSlide+1;
760
+ opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
761
+ }
762
+ }
763
+ }
764
+ //for theme1
765
+
766
+ if (changed && opts.pager)
767
+ opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
768
+ // stage the next transition
769
+ var ms = 0;
770
+ if (opts.timeout && !opts.continuous)
771
+ ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
772
+ else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
773
+ ms = 10;
774
+ if (ms > 0)
775
+ p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, (!opts.rev && !opts.backwards)) }, ms);
776
+ };
777
+ // invoked after transition
778
+ $.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) { $(pager).each(function() { $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName); });
779
+ };
780
+ // calculate timeout value for current transition
781
+ function getTimeout(curr, next, opts, fwd) {
782
+ if (opts.timeoutFn) {
783
+ // call user provided calc fn
784
+ var t = opts.timeoutFn.call(curr,curr,next,opts,fwd);
785
+ while ((t - opts.speed) < 250) // sanitize timeout
786
+ t += opts.speed;
787
+ debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
788
+ if (t !== false)
789
+ return t;
790
+ }
791
+ return opts.timeout;
792
+ };
793
+ // expose next/prev function, caller must pass in state
794
+ $.fn.cycle.next = function(opts) { advance(opts, opts.rev?-1:1); };
795
+ $.fn.cycle.prev = function(opts) { advance(opts, opts.rev?1:-1);};
796
+ // for theme1
797
+ function advanceClick(opts, val, index) {
798
+
799
+ if(opts.currSlide<index) val = 1;
800
+ else val = -1;
801
+ var els = opts.elements;
802
+ var p = opts.$cont[0], timeout = p.cycleTimeout;
803
+ p.clickButtons++;
804
+ if (timeout) {
805
+ clearTimeout(timeout);
806
+ p.cycleTimeout = 0;
807
+ }
808
+
809
+ if (opts.random && val < 0) {
810
+ // move back to the previously display slide
811
+ opts.randomIndex--;
812
+ if (--opts.randomIndex == -2)
813
+ opts.randomIndex = els.length-2;
814
+ else if (opts.randomIndex == -1)
815
+ opts.randomIndex = els.length-1;
816
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
817
+ }
818
+ else if (opts.random) {
819
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
820
+ }
821
+ else {
822
+ opts.nextSlide = opts.currSlide + val;
823
+ if (opts.nextSlide < 0) {
824
+ if (opts.nowrap) return false;
825
+ opts.nextSlide = els.length - 1;
826
+ }
827
+ else if (opts.nextSlide >= els.length) {
828
+ if (opts.nowrap) return false;
829
+ opts.nextSlide = 0;
830
+ }
831
+ } opts.nextSlide = index
832
+ var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
833
+ if ($.isFunction(cb))
834
+ cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
835
+
836
+ go(els, opts, 1, val>=0);
837
+ return false;
838
+ };
839
+ // advance slide forward or back
840
+ function advance(opts, val) {
841
+ var els = opts.elements;
842
+ var p = opts.$cont[0], timeout = p.cycleTimeout;
843
+
844
+ p.clickButtons++;
845
+
846
+ if (timeout) {
847
+ clearTimeout(timeout);
848
+ p.cycleTimeout = 0;
849
+ }
850
+ if (opts.random && val < 0) {
851
+ // move back to the previously display slide
852
+ opts.randomIndex--;
853
+ if (--opts.randomIndex == -2)
854
+ opts.randomIndex = els.length-2;
855
+ else if (opts.randomIndex == -1)
856
+ opts.randomIndex = els.length-1;
857
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
858
+ }
859
+ else if (opts.random) {
860
+ opts.nextSlide = opts.randomMap[opts.randomIndex];
861
+ }
862
+ else {
863
+ opts.nextSlide = opts.currSlide + val;
864
+ if (opts.nextSlide < 0) {
865
+ if (opts.nowrap) return false;
866
+ opts.nextSlide = els.length - 1;
867
+ }
868
+ else if (opts.nextSlide >= els.length) {
869
+ if (opts.nowrap) return false;
870
+ opts.nextSlide = 0;
871
+ }
872
+ }
873
+ var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
874
+ if ($.isFunction(cb))
875
+ cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
876
+ go(els, opts, 1, val>=0);
877
+ return false;
878
+ };
879
+ function buildPager(els, opts) {
880
+ var $p = $(opts.pager);
881
+ $.each(els, function(i,o) {
882
+ $.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
883
+ });
884
+ opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
885
+ };
886
+ $.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
887
+ var a;
888
+ if ($.isFunction(opts.pagerAnchorBuilder)) {
889
+ a = opts.pagerAnchorBuilder(i,el);
890
+ debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
891
+ }
892
+ else
893
+ a = '<a href="#">'+(i+1)+'</a>';
894
+
895
+ if (!a)
896
+ return;
897
+ var $a = $(a);
898
+ // don't reparent if anchor is in the dom
899
+ if ($a.parents('body').length === 0) {
900
+ var arr = [];
901
+ if ($p.length > 1) {
902
+ $p.each(function() {
903
+ var $clone = $a.clone(true);
904
+ $(this).append($clone);
905
+ arr.push($clone[0]);
906
+ });
907
+ $a = $(arr);
908
+ }
909
+ else {
910
+ $a.appendTo($p);
911
+ }
912
+ }
913
+ opts.pagerAnchors = opts.pagerAnchors || [];
914
+ opts.pagerAnchors.push($a);
915
+ $a.bind(opts.pagerEvent, function(e) {
916
+ e.preventDefault();
917
+ opts.nextSlide = i;
918
+ var p = opts.$cont[0], timeout = p.cycleTimeout;
919
+ if (timeout) {
920
+ clearTimeout(timeout);
921
+ p.cycleTimeout = 0;
922
+ }
923
+ var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
924
+ if ($.isFunction(cb))
925
+ cb(opts.nextSlide, els[opts.nextSlide]);
926
+ go(els,opts,1,opts.currSlide < i); // trigger the trans
927
+ // return false; // <== allow bubble
928
+ });
929
+
930
+ if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
931
+ $a.bind('click.cycle', function(){return false;}); // suppress click
932
+
933
+ if (opts.pauseOnPagerHover)
934
+ $a.hover(function() { opts.$cont[0].cyclePause++; }, function() { opts.$cont[0].cyclePause--; } );
935
+ };
936
+ // helper fn to calculate the number of slides between the current and the next
937
+ $.fn.cycle.hopsFromLast = function(opts, fwd) {
938
+ var hops, l = opts.lastSlide, c = opts.currSlide;
939
+ if (fwd)
940
+ hops = c > l ? c - l : opts.slideCount - l;
941
+ else
942
+ hops = c < l ? l - c : l + opts.slideCount - c;
943
+ return hops;
944
+ };
945
+ // fix clearType problems in ie6 by setting an explicit bg color
946
+ // (otherwise text slides look horrible during a fade transition)
947
+ function clearTypeFix($slides) {
948
+ debug('applying clearType background-color hack');
949
+ function hex(s) {
950
+ s = parseInt(s).toString(16);
951
+ return s.length < 2 ? '0'+s : s;
952
+ };
953
+ function getBg(e) {
954
+ for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
955
+ var v = $.css(e,'background-color');
956
+ if (v.indexOf('rgb') >= 0 ) {
957
+ var rgb = v.match(/\d+/g);
958
+ return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
959
+ }
960
+ if (v && v != 'transparent')
961
+ return v;
962
+ }
963
+ return '#ffffff';
964
+ };
965
+ $slides.each(function() { $(this).css('background-color', getBg(this)); });
966
+ };
967
+ // reset common props before the next transition
968
+ $.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
969
+ $(opts.elements).not(curr).hide();
970
+ opts.cssBefore.opacity = 1;
971
+ opts.cssBefore.display = 'block';
972
+ if (w !== false && next.cycleW > 0)
973
+ opts.cssBefore.width = next.cycleW;
974
+ if (h !== false && next.cycleH > 0)
975
+ opts.cssBefore.height = next.cycleH;
976
+ opts.cssAfter = opts.cssAfter || {};
977
+ opts.cssAfter.display = 'none';
978
+ $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
979
+ $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
980
+ };
981
+ // the actual fn for effecting a transition
982
+ $.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
983
+ var $l = $(curr), $n = $(next);
984
+ var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
985
+ $n.css(opts.cssBefore);
986
+ if (speedOverride) {
987
+ if (typeof speedOverride == 'number')
988
+ speedIn = speedOut = speedOverride;
989
+ else
990
+ speedIn = speedOut = 1;
991
+ easeIn = easeOut = null;
992
+ }
993
+ var fn = function() {$n.animate(opts.animIn, speedIn, easeIn, cb)};
994
+ $l.animate(opts.animOut, speedOut, easeOut, function() {
995
+ if (opts.cssAfter) $l.css(opts.cssAfter);
996
+ if (!opts.sync) fn();
997
+ });
998
+ if (opts.sync) fn();
999
+ };
1000
+ // transition definitions - only fade is defined here, transition pack defines the rest
1001
+ $.fn.cycle.transitions = {
1002
+ fade: function($cont, $slides, opts) {
1003
+ $slides.not(':eq('+opts.currSlide+')').css('opacity',0);
1004
+ opts.before.push(function(curr,next,opts) {
1005
+ $.fn.cycle.commonReset(curr,next,opts);
1006
+ opts.cssBefore.opacity = 0;
1007
+ });
1008
+ opts.animIn = { opacity: 1 };
1009
+ opts.animOut = { opacity: 0 };
1010
+ opts.cssBefore = { top: 0, left: 0 };
1011
+ }
1012
+ };
1013
+ $.fn.cycle.ver = function() { return ver; };
1014
+ // override these globally if you like (they are all optional)
1015
+ $.fn.cycle.defaults = {
1016
+ fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
1017
+ timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
1018
+ timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag)
1019
+ continuous: 0, // true to start next transition immediately after current one completes
1020
+ speed: 1000, // speed of the transition (any valid fx speed value)
1021
+ speedIn: null, // speed of the 'in' transition
1022
+ speedOut: null, // speed of the 'out' transition
1023
+ next: null, // selector for element to use as event trigger for next slide
1024
+ prev: null, // selector for element to use as event trigger for previous slide
1025
+ // prevNextClick: null, // @deprecated; please use onPrevNextEvent instead
1026
+ onPrevNextEvent: null, // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
1027
+ prevNextEvent:'click.cycle',// event which drives the manual transition to the previous or next slide
1028
+ pager: null, // selector for element to use as pager container
1029
+ //pagerClick null, // @deprecated; please use onPagerEvent instead
1030
+ onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
1031
+ pagerEvent: 'click.cycle', // name of event which drives the pager navigation
1032
+ allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
1033
+ pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement)
1034
+ before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
1035
+ after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
1036
+ end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
1037
+ easing: null, // easing method for both in and out transitions
1038
+ easeIn: null, // easing for "in" transition
1039
+ easeOut: null, // easing for "out" transition
1040
+ shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 }
1041
+ animIn: null, // properties that define how the slide animates in
1042
+ animOut: null, // properties that define how the slide animates out
1043
+ cssBefore: null, // properties that define the initial state of the slide before transitioning in
1044
+ cssAfter: null, // properties that defined the state of the slide after transitioning out
1045
+ fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
1046
+ height: 'auto', // container height
1047
+ startingSlide: 0, // zero-based index of the first slide to be displayed
1048
+ sync: 1, // true if in/out transitions should occur simultaneously
1049
+ random: 0, // true for random, false for sequence (not applicable to shuffle fx)
1050
+ fit: 0, // force slides to fit container
1051
+ containerResize: 1, // resize container to fit largest slide
1052
+ pause: 0, // true to enable "pause on hover"
1053
+ pauseOnPagerHover: 0, // true to pause when hovering over pager link
1054
+ autostop: 0, // true to end slideshow after X transitions (where X == slide count)
1055
+ autostopCount: 0, // number of transitions (optionally used with autostop to define X)
1056
+ delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
1057
+ slideExpr: null, // expression for selecting slides (if something other than all children is required)
1058
+ cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE)
1059
+ cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
1060
+ nowrap: 0, // true to prevent slideshow from wrapping
1061
+ fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
1062
+ randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random
1063
+ rev: 0, // causes animations to transition in reverse
1064
+ manualTrump: true, // causes manual transition to stop an active transition instead of being ignored
1065
+ requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
1066
+ requeueTimeout: 250, // ms delay for requeue
1067
+ activePagerClass: 'activeSlide', // class name used for the active pager link
1068
+ updateActivePagerLink: null, // callback fn invoked to update the active pager link (adds/removes activePagerClass style)
1069
+ backwards: false, // true to start slideshow at last slide and move backwards through the stack
1070
+ divId: 0,
1071
+ arrContent: [],
1072
+ readmoreImg:'',
1073
+ captions:'',
1074
+ linktarget:'',
1075
+ //linkcaption:1,
1076
+ autoPlay:1
1077
+ };
1078
+ })($jsmart);/*!
1079
+ * jQuery Cycle Plugin Transition Definitions
1080
+ * This script is a plugin for the jQuery Cycle Plugin
1081
+ * Examples and documentation at: http://malsup.com/jquery/cycle/
1082
+ * Copyright (c) 2007-2010 M. Alsup
1083
+ * Version: 2.72
1084
+ * Dual licensed under the MIT and GPL licenses:
1085
+ * http://www.opensource.org/licenses/mit-license.php
1086
+ * http://www.gnu.org/licenses/gpl.html
1087
+ */
1088
+ (function($) {
1089
+ //
1090
+ // These functions define one-time slide initialization for the named
1091
+ // transitions. To save file size feel free to remove any of these that you
1092
+ // don't need.
1093
+ //
1094
+ $.fn.cycle.transitions.none = function($cont, $slides, opts) {
1095
+ opts.fxFn = function(curr,next,opts,after){
1096
+ $(next).show();
1097
+ $(curr).hide();
1098
+ after();
1099
+ };
1100
+ }
1101
+ // scrollUp/Down/Left/Right
1102
+ $.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
1103
+ $cont.css('overflow','hidden');
1104
+ opts.before.push($.fn.cycle.commonReset);
1105
+ var h = $cont.height();
1106
+ opts.cssBefore ={ top: h, left: 0 };
1107
+ opts.cssFirst = { top: 0 };
1108
+ opts.animIn = { top: 0 };
1109
+ opts.animOut = { top: -h };
1110
+ };
1111
+ $.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
1112
+ $cont.css('overflow','hidden');
1113
+ opts.before.push($.fn.cycle.commonReset);
1114
+ var h = $cont.height();
1115
+ opts.cssFirst = { top: 0 };
1116
+ opts.cssBefore= { top: -h, left: 0 };
1117
+ opts.animIn = { top: 0 };
1118
+ opts.animOut = { top: h };
1119
+ };
1120
+ $.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
1121
+ $cont.css('overflow','hidden');
1122
+ opts.before.push($.fn.cycle.commonReset);
1123
+ var w = $cont.width();
1124
+ opts.cssFirst = { left: 0 };
1125
+ opts.cssBefore= { left: w, top: 0 };
1126
+ opts.animIn = { left: 0 };
1127
+ opts.animOut = { left: 0-w };
1128
+ };
1129
+ $.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
1130
+ $cont.css('overflow','hidden');
1131
+ opts.before.push($.fn.cycle.commonReset);
1132
+ var w = $cont.width();
1133
+ opts.cssFirst = { left: 0 };
1134
+ opts.cssBefore= { left: -w, top: 0 };
1135
+ opts.animIn = { left: 0 };
1136
+ opts.animOut = { left: w };
1137
+ };
1138
+ $.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
1139
+ $cont.css('overflow','hidden').width();
1140
+ opts.before.push(function(curr, next, opts, fwd) {
1141
+ $.fn.cycle.commonReset(curr,next,opts);
1142
+ opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
1143
+ opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
1144
+ });
1145
+ opts.cssFirst = { left: 0 };
1146
+ opts.cssBefore= { top: 0 };
1147
+ opts.animIn = { left: 0 };
1148
+ opts.animOut = { top: 0 };
1149
+ };
1150
+ $.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
1151
+ $cont.css('overflow','hidden');
1152
+ opts.before.push(function(curr, next, opts, fwd) {
1153
+ $.fn.cycle.commonReset(curr,next,opts);
1154
+ opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
1155
+ opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
1156
+ });
1157
+ opts.cssFirst = { top: 0 };
1158
+ opts.cssBefore= { left: 0 };
1159
+ opts.animIn = { top: 0 };
1160
+ opts.animOut = { left: 0 };
1161
+ };
1162
+ // slideX/slideY
1163
+ $.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
1164
+ opts.before.push(function(curr, next, opts) {
1165
+ $(opts.elements).not(curr).hide();
1166
+ $.fn.cycle.commonReset(curr,next,opts,false,true);
1167
+ opts.animIn.width = next.cycleW;
1168
+ });
1169
+ opts.cssBefore = { left: 0, top: 0, width: 0 };
1170
+ opts.animIn = { width: 'show' };
1171
+ opts.animOut = { width: 0 };
1172
+ };
1173
+ $.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
1174
+ opts.before.push(function(curr, next, opts) {
1175
+ $(opts.elements).not(curr).hide();
1176
+ $.fn.cycle.commonReset(curr,next,opts,true,false);
1177
+ opts.animIn.height = next.cycleH;
1178
+ });
1179
+ opts.cssBefore = { left: 0, top: 0, height: 0 };
1180
+ opts.animIn = { height: 'show' };
1181
+ opts.animOut = { height: 0 };
1182
+ };
1183
+ // shuffle
1184
+ $.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
1185
+ var i, w = $cont.css('overflow', 'visible').width();
1186
+ $slides.css({left: 0, top: 0});
1187
+ opts.before.push(function(curr,next,opts) {
1188
+ $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1189
+ });
1190
+ // only adjust speed once!
1191
+ if (!opts.speedAdjusted) {
1192
+ opts.speed = opts.speed / 2; // shuffle has 2 transitions
1193
+ opts.speedAdjusted = true;
1194
+ }
1195
+ opts.random = 0;
1196
+ opts.shuffle = opts.shuffle || {left:-w, top:15};
1197
+ opts.els = [];
1198
+ for (i=0; i < $slides.length; i++)
1199
+ opts.els.push($slides[i]);
1200
+ for (i=0; i < opts.currSlide; i++)
1201
+ opts.els.push(opts.els.shift());
1202
+ // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
1203
+ opts.fxFn = function(curr, next, opts, cb, fwd) {
1204
+ var $el = fwd ? $(curr) : $(next);
1205
+ $(next).css(opts.cssBefore);
1206
+ var count = opts.slideCount;
1207
+ $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
1208
+ var hops = $.fn.cycle.hopsFromLast(opts, fwd);
1209
+ for (var k=0; k < hops; k++)
1210
+ fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
1211
+ if (fwd) {
1212
+ for (var i=0, len=opts.els.length; i < len; i++)
1213
+ $(opts.els[i]).css('z-index', len-i+count);
1214
+ }
1215
+ else {
1216
+ var z = $(curr).css('z-index');
1217
+ $el.css('z-index', parseInt(z)+1+count);
1218
+ }
1219
+ $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
1220
+ $(fwd ? this : curr).hide();
1221
+ if (cb) cb();
1222
+ });
1223
+ });
1224
+ };
1225
+ opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
1226
+ };
1227
+ // turnUp/Down/Left/Right
1228
+ $.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
1229
+ opts.before.push(function(curr, next, opts) {
1230
+ $.fn.cycle.commonReset(curr,next,opts,true,false);
1231
+ opts.cssBefore.top = next.cycleH;
1232
+ opts.animIn.height = next.cycleH;
1233
+ });
1234
+ opts.cssFirst = { top: 0 };
1235
+ opts.cssBefore = { left: 0, height: 0 };
1236
+ opts.animIn = { top: 0 };
1237
+ opts.animOut = { height: 0 };
1238
+ };
1239
+ $.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
1240
+ opts.before.push(function(curr, next, opts) {
1241
+ $.fn.cycle.commonReset(curr,next,opts,true,false);
1242
+ opts.animIn.height = next.cycleH;
1243
+ opts.animOut.top = curr.cycleH;
1244
+ });
1245
+ opts.cssFirst = { top: 0 };
1246
+ opts.cssBefore = { left: 0, top: 0, height: 0 };
1247
+ opts.animOut = { height: 0 };
1248
+ };
1249
+ $.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
1250
+ opts.before.push(function(curr, next, opts) {
1251
+ $.fn.cycle.commonReset(curr,next,opts,false,true);
1252
+ opts.cssBefore.left = next.cycleW;
1253
+ opts.animIn.width = next.cycleW;
1254
+ });
1255
+ opts.cssBefore = { top: 0, width: 0 };
1256
+ opts.animIn = { left: 0 };
1257
+ opts.animOut = { width: 0 };
1258
+ };
1259
+ $.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
1260
+ opts.before.push(function(curr, next, opts) {
1261
+ $.fn.cycle.commonReset(curr,next,opts,false,true);
1262
+ opts.animIn.width = next.cycleW;
1263
+ opts.animOut.left = curr.cycleW;
1264
+ });
1265
+ opts.cssBefore = { top: 0, left: 0, width: 0 };
1266
+ opts.animIn = { left: 0 };
1267
+ opts.animOut = { width: 0 };
1268
+ };
1269
+ // zoom
1270
+ $.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
1271
+ opts.before.push(function(curr, next, opts) {
1272
+ $.fn.cycle.commonReset(curr,next,opts,false,false,true);
1273
+ opts.cssBefore.top = next.cycleH/2;
1274
+ opts.cssBefore.left = next.cycleW/2;
1275
+ opts.animIn = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
1276
+ opts.animOut = { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 };
1277
+ });
1278
+ opts.cssFirst = { top:0, left: 0 };
1279
+ opts.cssBefore = { width: 0, height: 0 };
1280
+ };
1281
+ // fadeZoom
1282
+ $.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
1283
+ opts.before.push(function(curr, next, opts) {
1284
+ $.fn.cycle.commonReset(curr,next,opts,false,false);
1285
+ opts.cssBefore.left = next.cycleW/2;
1286
+ opts.cssBefore.top = next.cycleH/2;
1287
+ opts.animIn = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
1288
+ });
1289
+ opts.cssBefore = { width: 0, height: 0 };
1290
+ opts.animOut = { opacity: 0 };
1291
+ };
1292
+ // blindX
1293
+ $.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
1294
+ var w = $cont.css('overflow','hidden').width();
1295
+ opts.before.push(function(curr, next, opts) {
1296
+ $.fn.cycle.commonReset(curr,next,opts);
1297
+ opts.animIn.width = next.cycleW;
1298
+ opts.animOut.left = curr.cycleW;
1299
+ });
1300
+ opts.cssBefore = { left: w, top: 0 };
1301
+ opts.animIn = { left: 0 };
1302
+ opts.animOut = { left: w };
1303
+ };
1304
+ // blindY
1305
+ $.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
1306
+ var h = $cont.css('overflow','hidden').height();
1307
+ opts.before.push(function(curr, next, opts) {
1308
+ $.fn.cycle.commonReset(curr,next,opts);
1309
+ opts.animIn.height = next.cycleH;
1310
+ opts.animOut.top = curr.cycleH;
1311
+ });
1312
+ opts.cssBefore = { top: h, left: 0 };
1313
+ opts.animIn = { top: 0 };
1314
+ opts.animOut = { top: h };
1315
+ };
1316
+ // blindZ
1317
+ $.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
1318
+ var h = $cont.css('overflow','hidden').height();
1319
+ var w = $cont.width();
1320
+ opts.before.push(function(curr, next, opts) {
1321
+ $.fn.cycle.commonReset(curr,next,opts);
1322
+ opts.animIn.height = next.cycleH;
1323
+ opts.animOut.top = curr.cycleH;
1324
+ });
1325
+ opts.cssBefore = { top: h, left: w };
1326
+ opts.animIn = { top: 0, left: 0 };
1327
+ opts.animOut = { top: h, left: w };
1328
+ };
1329
+ // growX - grow horizontally from centered 0 width
1330
+ $.fn.cycle.transitions.growX = function($cont, $slides, opts) {
1331
+ opts.before.push(function(curr, next, opts) {
1332
+ $.fn.cycle.commonReset(curr,next,opts,false,true);
1333
+ opts.cssBefore.left = this.cycleW/2;
1334
+ opts.animIn = { left: 0, width: this.cycleW };
1335
+ opts.animOut = { left: 0 };
1336
+ });
1337
+ opts.cssBefore = { width: 0, top: 0 };
1338
+ };
1339
+ // growY - grow vertically from centered 0 height
1340
+ $.fn.cycle.transitions.growY = function($cont, $slides, opts) {
1341
+ opts.before.push(function(curr, next, opts) {
1342
+ $.fn.cycle.commonReset(curr,next,opts,true,false);
1343
+ opts.cssBefore.top = this.cycleH/2;
1344
+ opts.animIn = { top: 0, height: this.cycleH };
1345
+ opts.animOut = { top: 0 };
1346
+ });
1347
+ opts.cssBefore = { height: 0, left: 0 };
1348
+ };
1349
+ // curtainX - squeeze in both edges horizontally
1350
+ $.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
1351
+ opts.before.push(function(curr, next, opts) {
1352
+ $.fn.cycle.commonReset(curr,next,opts,false,true,true);
1353
+ opts.cssBefore.left = next.cycleW/2;
1354
+ opts.animIn = { left: 0, width: this.cycleW };
1355
+ opts.animOut = { left: curr.cycleW/2, width: 0 };
1356
+ });
1357
+ opts.cssBefore = { top: 0, width: 0 };
1358
+ };
1359
+ // curtainY - squeeze in both edges vertically
1360
+ $.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
1361
+ opts.before.push(function(curr, next, opts) {
1362
+ $.fn.cycle.commonReset(curr,next,opts,true,false,true);
1363
+ opts.cssBefore.top = next.cycleH/2;
1364
+ opts.animIn = { top: 0, height: next.cycleH };
1365
+ opts.animOut = { top: curr.cycleH/2, height: 0 };
1366
+ });
1367
+ opts.cssBefore = { left: 0, height: 0 };
1368
+ };
1369
+ // cover - curr slide covered by next slide
1370
+ $.fn.cycle.transitions.cover = function($cont, $slides, opts) {
1371
+ var d = opts.direction || 'left';
1372
+ var w = $cont.css('overflow','hidden').width();
1373
+ var h = $cont.height();
1374
+ opts.before.push(function(curr, next, opts) {
1375
+ $.fn.cycle.commonReset(curr,next,opts);
1376
+ if (d == 'right')
1377
+ opts.cssBefore.left = -w;
1378
+ else if (d == 'up')
1379
+ opts.cssBefore.top = h;
1380
+ else if (d == 'down')
1381
+ opts.cssBefore.top = -h;
1382
+ else
1383
+ opts.cssBefore.left = w;
1384
+ });
1385
+ opts.animIn = { left: 0, top: 0};
1386
+ opts.animOut = { opacity: 1 };
1387
+ opts.cssBefore = { top: 0, left: 0 };
1388
+ };
1389
+ // uncover - curr slide moves off next slide
1390
+ $.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
1391
+ var d = opts.direction || 'left';
1392
+ var w = $cont.css('overflow','hidden').width();
1393
+ var h = $cont.height();
1394
+ opts.before.push(function(curr, next, opts) {
1395
+ $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1396
+ if (d == 'right')
1397
+ opts.animOut.left = w;
1398
+ else if (d == 'up')
1399
+ opts.animOut.top = -h;
1400
+ else if (d == 'down')
1401
+ opts.animOut.top = h;
1402
+ else
1403
+ opts.animOut.left = -w;
1404
+ });
1405
+ opts.animIn = { left: 0, top: 0 };
1406
+ opts.animOut = { opacity: 1 };
1407
+ opts.cssBefore = { top: 0, left: 0 };
1408
+ };
1409
+ // toss - move top slide and fade away
1410
+ $.fn.cycle.transitions.toss = function($cont, $slides, opts) {
1411
+ var w = $cont.css('overflow','visible').width();
1412
+ var h = $cont.height();
1413
+ opts.before.push(function(curr, next, opts) {
1414
+ $.fn.cycle.commonReset(curr,next,opts,true,true,true);
1415
+ // provide default toss settings if animOut not provided
1416
+ if (!opts.animOut.left && !opts.animOut.top)
1417
+ opts.animOut = { left: w*2, top: -h/2, opacity: 0 };
1418
+ else
1419
+ opts.animOut.opacity = 0;
1420
+ });
1421
+ opts.cssBefore = { left: 0, top: 0 };
1422
+ opts.animIn = { left: 0 };
1423
+ };
1424
+ // wipe - clip animation
1425
+ $.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
1426
+ var w = $cont.css('overflow','hidden').width();
1427
+ var h = $cont.height();
1428
+ opts.cssBefore = opts.cssBefore || {};
1429
+ var clip;
1430
+ if (opts.clip) {
1431
+ if (/l2r/.test(opts.clip))
1432
+ clip = 'rect(0px 0px '+h+'px 0px)';
1433
+ else if (/r2l/.test(opts.clip))
1434
+ clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
1435
+ else if (/t2b/.test(opts.clip))
1436
+ clip = 'rect(0px '+w+'px 0px 0px)';
1437
+ else if (/b2t/.test(opts.clip))
1438
+ clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
1439
+ else if (/zoom/.test(opts.clip)) {
1440
+ var top = parseInt(h/2);
1441
+ var left = parseInt(w/2);
1442
+ clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
1443
+ }
1444
+ }
1445
+ opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';
1446
+ var d = opts.cssBefore.clip.match(/(\d+)/g);
1447
+ var t = parseInt(d[0]), r = parseInt(d[1]), b = parseInt(d[2]), l = parseInt(d[3]);
1448
+ opts.before.push(function(curr, next, opts) {
1449
+ if (curr == next) return;
1450
+ var $curr = $(curr), $next = $(next);
1451
+ $.fn.cycle.commonReset(curr,next,opts,true,true,false);
1452
+ opts.cssAfter.display = 'block';
1453
+ var step = 1, count = parseInt((opts.speedIn / 13)) - 1;
1454
+ (function f() {
1455
+ var tt = t ? t - parseInt(step * (t/count)) : 0;
1456
+ var ll = l ? l - parseInt(step * (l/count)) : 0;
1457
+ var bb = b < h ? b + parseInt(step * ((h-b)/count || 1)) : h;
1458
+ var rr = r < w ? r + parseInt(step * ((w-r)/count || 1)) : w;
1459
+ $next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
1460
+ (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
1461
+ })();
1462
+ });
1463
+ opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
1464
+ opts.animIn = { left: 0 };
1465
+ opts.animOut = { left: 0 };
1466
+ };
1467
+ })($jsmart);
skin/frontend/default/default/smartaddons/categoryshowcase/js/jsmart.noconflict.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if (typeof $jsmart != 'function'){
2
+ if (typeof jQuery == 'undefined'){
3
+ var msg = 'Please include jquery first. jQuery 1.5.0 is recommended!';
4
+ if (console.log){
5
+ console.log(msg);
6
+ } else {
7
+ alert(msg);
8
+ }
9
+ } else {
10
+ $jsmart = jQuery.noConflict();
11
+ }
12
+ }