cool_slider - Version 0.0.1

Version Notes

Initial release.

Download this release

Release Info

Developer Rehan Mobin
Extension cool_slider
Version 0.0.1
Comparing to
See all releases


Version 0.0.1

Files changed (31) hide show
  1. app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Directions.php +16 -0
  2. app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Effects.php +78 -0
  3. app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Positions.php +27 -0
  4. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider.php +31 -0
  5. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit.php +60 -0
  6. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Form.php +38 -0
  7. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Tab/Info.php +117 -0
  8. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Tabs.php +40 -0
  9. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Grid.php +185 -0
  10. app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Render/Image.php +35 -0
  11. app/code/local/Tb/Coolslider/Block/Coolslider.php +176 -0
  12. app/code/local/Tb/Coolslider/Helper/Data.php +99 -0
  13. app/code/local/Tb/Coolslider/Model/Coolslider.php +37 -0
  14. app/code/local/Tb/Coolslider/Model/Mysql4/Coolslider.php +74 -0
  15. app/code/local/Tb/Coolslider/Model/Mysql4/Coolslider/Collection.php +40 -0
  16. app/code/local/Tb/Coolslider/controllers/Adminhtml/SlideController.php +211 -0
  17. app/code/local/Tb/Coolslider/controllers/IndexController.php +26 -0
  18. app/code/local/Tb/Coolslider/etc/adminhtml.xml +68 -0
  19. app/code/local/Tb/Coolslider/etc/config.xml +98 -0
  20. app/code/local/Tb/Coolslider/etc/system.xml +216 -0
  21. app/code/local/Tb/Coolslider/sql/coolslider_setup/mysql4-install-0.0.1.php +42 -0
  22. app/design/adminhtml/default/default/layout/coolslider.xml +39 -0
  23. app/design/frontend/default/default/layout/coolslider.xml +20 -0
  24. app/design/frontend/default/default/template/coolslider/coolslider.phtml +66 -0
  25. app/etc/modules/Tb_Coolslider.xml +9 -0
  26. js/coolslider/jquery.min.js +4 -0
  27. js/coolslider/jquery.nivo.slider.js +720 -0
  28. package.xml +70 -0
  29. skin/frontend/default/default/css/coolslider.css +128 -0
  30. skin/frontend/default/default/images/coolslider/left-arrow.png +0 -0
  31. skin/frontend/default/default/images/coolslider/right-arrow.png +0 -0
app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Directions.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Tb_Carouselslide_Adminhtml_Model_System_Config_Source_Directions{
3
+
4
+ /**
5
+ * @return array
6
+ */
7
+ public function toOptionArray()
8
+ {
9
+ return array(
10
+ array('value' => 'left', 'label'=>Mage::helper('carouselslide')->__('Right to left')),
11
+ array('value' => 'right', 'label'=>Mage::helper('carouselslide')->__('Left to right')),
12
+ );
13
+ }
14
+
15
+ }
16
+ ?>
app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Effects.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* Do not edit or add to this file if you wish to upgrade Magento to newer
3
+ * versions in the future.
4
+ *****************************************************
5
+ * @category Tb
6
+ * @package Tb_Coolslider
7
+ * @copyright Copyright (c) 2014
8
+ * @license http://opensource.org/licenses/OSL-3.0
9
+ */
10
+
11
+
12
+ class Tb_Coolslider_Adminhtml_Model_System_Config_Source_Effects{
13
+
14
+ /**
15
+ * @return array
16
+ */
17
+ public function toOptionArray()
18
+ {
19
+ return array(
20
+ array(
21
+ 'value' => '',
22
+ 'label'=>Mage::helper('adminhtml')->__('---Please select---')),
23
+ array(
24
+ 'value' => 'sliceDown',
25
+ 'label'=>Mage::helper('adminhtml')->__('Slice Down')),
26
+ array(
27
+ 'value' => 'sliceDownLeft',
28
+ 'label'=>Mage::helper('adminhtml')->__('Slice Down Left')),
29
+ array(
30
+ 'value' => 'sliceUp',
31
+ 'label'=>Mage::helper('adminhtml')->__('Slice Up')),
32
+ array(
33
+ 'value' => 'sliceUpLeft',
34
+ 'label'=>Mage::helper('adminhtml')->__('Slice Up Left')),
35
+ array(
36
+ 'value' => 'sliceUpDown',
37
+ 'label'=>Mage::helper('adminhtml')->__('Slice Up Down')),
38
+ array(
39
+ 'value' => 'sliceUpDownLeft',
40
+ 'label'=>Mage::helper('adminhtml')->__('Slice Up Down Left')),
41
+ array(
42
+ 'value' => 'sliceUpDown',
43
+ 'label'=>Mage::helper('adminhtml')->__('Slice Up Down')),
44
+ array(
45
+ 'value' => 'fold',
46
+ 'label'=>Mage::helper('adminhtml')->__('Fold')),
47
+ array(
48
+ 'value' => 'fade',
49
+ 'label'=>Mage::helper('adminhtml')->__('Fade')),
50
+ array(
51
+ 'value' => 'random',
52
+ 'label'=>Mage::helper('adminhtml')->__('Random')),
53
+ array(
54
+ 'value' => 'slideInRight',
55
+ 'label'=>Mage::helper('adminhtml')->__('Slide In Right')),
56
+ array(
57
+ 'value' => 'slideInLeft',
58
+ 'label'=>Mage::helper('adminhtml')->__('Slide In Left')),
59
+ array(
60
+ 'value' => 'boxRandom',
61
+ 'label'=>Mage::helper('adminhtml')->__('Box Random')),
62
+ array(
63
+ 'value' => 'boxRain',
64
+ 'label'=>Mage::helper('adminhtml')->__('Box Rain')),
65
+ array(
66
+ 'value' => 'boxRainReverse',
67
+ 'label'=>Mage::helper('adminhtml')->__('Box Rain Reverse')),
68
+ array(
69
+ 'value' => 'boxRainGrow',
70
+ 'label'=>Mage::helper('adminhtml')->__('Box Rain Grow')),
71
+ array(
72
+ 'value' => 'boxRainGrowReverse',
73
+ 'label'=>Mage::helper('adminhtml')->__('Box Rain Grow Reverse')),
74
+ );
75
+ }
76
+
77
+ }
78
+ ?>
app/code/local/Tb/Coolslider/Adminhtml/Model/System/Config/Source/Positions.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Tb_Coolslider_Adminhtml_Model_System_Config_Source_Positions{
3
+
4
+ /**
5
+ * @return array
6
+ */
7
+ public function toOptionArray()
8
+ {
9
+ $content_pos = array(
10
+ array('value' => 'center_left',
11
+ 'label'=>Mage::helper('coolslider')->__('Center left')),
12
+ array('value' => 'top_left',
13
+ 'label'=>Mage::helper('coolslider')->__('Top left')),
14
+ array('value' => 'top_right',
15
+ 'label'=>Mage::helper('coolslider')->__('Top Right')),
16
+ array('value' => 'bottom_left',
17
+ 'label'=>Mage::helper('coolslider')->__('Bottom left')),
18
+ array('value' => 'bottom_right',
19
+ 'label'=>Mage::helper('coolslider')->__('Bottom right')),
20
+ array('value' => 'center_right',
21
+ 'label'=>Mage::helper('coolslider')->__('Center right')),
22
+ );
23
+ return $content_pos;
24
+ }
25
+
26
+ }
27
+ ?>
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Block_Adminhtml_Slider extends
20
+ Mage_Adminhtml_Block_Widget_Grid_Container{
21
+
22
+ public function __construct(){
23
+ $this->_controller = 'adminhtml_slider';
24
+ $this->_blockGroup = 'coolslider';
25
+ $this->_headerText = Mage::helper('coolslider')->__('Coolslider manager');
26
+ $this->_addButtonLabel = Mage::helper('coolslider')->__('Add New slide');
27
+ parent::__construct();
28
+ }
29
+
30
+ }
31
+ ?>
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Block_Adminhtml_Slider_Edit
20
+ extends Mage_Adminhtml_Block_Widget_Form_Container{
21
+
22
+
23
+ public function __construct(){
24
+
25
+ $this->_objectId = 'id';
26
+ $this->_blockGroup = 'coolslider';
27
+ $this->_controller = 'adminhtml_slider';
28
+
29
+ parent::__construct();
30
+ $this->_updateButton('save', 'label',
31
+ Mage::helper('coolslider')->__('Save'));
32
+ $this->_addButton('saveandcontinue', array(
33
+ 'label' => Mage::helper('coolslider')->__('Save And Continue Edit'),
34
+ 'onclick' => 'saveAndContinueEdit()',
35
+ 'class' => 'save',
36
+ ), -100);
37
+
38
+ $this->_formScripts[] = "
39
+ function saveAndContinueEdit(){
40
+ editForm.submit($('edit_form').action+'back/edit/');
41
+ }
42
+ ";
43
+
44
+ }
45
+
46
+ public function getHeaderText()
47
+ {
48
+ if (Mage::registry('coolslider_data') &&
49
+ Mage::registry('coolslider_data')->getId()
50
+ ){
51
+ $headerText = Mage::helper('coolslider')->__("Edit Side '%s'",
52
+ $this->htmlEscape(Mage::registry('coolslider_data')->getTitle()));
53
+ return $headerText;
54
+ }else{
55
+ return Mage::helper('coolslider')->__('Add New Slide');
56
+ }
57
+
58
+ }
59
+ }
60
+ ?>
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Form.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+
20
+ class Tb_Coolslider_Block_Adminhtml_Slider_Edit_Form
21
+ extends Mage_Adminhtml_Block_Widget_Form{
22
+
23
+ protected function _prepareForm(){
24
+ $form = new Varien_Data_Form(array(
25
+ 'id' => 'edit_form',
26
+ 'action' => $this->getUrl('*/*/save',
27
+ array('id' => $this->getRequest()->getParam('id'))),
28
+ 'method' => 'post',
29
+ 'enctype' => 'multipart/form-data'
30
+ )
31
+ );
32
+
33
+ $form->setUseContainer(true);
34
+ $this->setForm($form);
35
+ return parent::_prepareForm();
36
+ }
37
+
38
+ }
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Tab/Info.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+
20
+ class Tb_Coolslider_Block_Adminhtml_Slider_Edit_Tab_Info
21
+ extends Mage_Adminhtml_Block_Widget_Form{
22
+
23
+
24
+ public function initForm()
25
+ {
26
+ $form = new Varien_Data_Form();
27
+ $this->setForm($form);
28
+
29
+ $fieldset = $form->addFieldset('slide_form', array('legend'=>Mage::helper('coolslider')->__('Slide information')));
30
+
31
+ $fieldset->addField('title', 'text', array(
32
+ 'label' => Mage::helper('coolslider')->__('Title'),
33
+ 'class' => 'required-entry',
34
+ 'required' => true,
35
+ 'name' => 'title',
36
+ ));
37
+
38
+ $fieldset->addField('status', 'select', array(
39
+ 'label' => Mage::helper('coolslider')->__('Status'),
40
+ 'name' => 'status',
41
+ 'values' => array(
42
+ array(
43
+ 'value' => 1,
44
+ 'label' => Mage::helper('coolslider')->__('Enabled'),
45
+ ),
46
+
47
+ array(
48
+ 'value' => 0,
49
+ 'label' => Mage::helper('coolslider')->__('Disabled'),
50
+ ),
51
+ ),
52
+ ));
53
+
54
+ /**
55
+ * Check is single store mode
56
+ */
57
+ if (!Mage::app()->isSingleStoreMode()) {
58
+ $fieldset->addField('store_id', 'multiselect', array(
59
+ 'name' => 'stores[]',
60
+ 'label' => Mage::helper('coolslider')->__('Store View'),
61
+ 'title' => Mage::helper('coolslider')->__('Store View'),
62
+ 'required' => true,
63
+ 'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true),
64
+ ));
65
+ }
66
+ $fieldset->addField('url', 'text', array(
67
+ 'label' => Mage::helper('coolslider')->__('Url'),
68
+ 'title' => Mage::helper('coolslider')->__('Url'),
69
+ 'required' => false,
70
+ 'name' => 'url',
71
+ 'after_element_html' => '<div class="hint"><p class="note">'.$this->__('e.g. http://magentocommerce.com/products.html').'</p></div>',
72
+ ));
73
+
74
+ //
75
+ $fieldset->addField('image', 'image', array(
76
+ 'label' => Mage::helper('coolslider')->__('Slide image'),
77
+ 'title' => Mage::helper('coolslider')->__('Slide image'),
78
+ 'required' => false,
79
+ 'name' => 'image',
80
+ 'note' => '(*.jpg, *jpeg, *.png, *.gif)'
81
+ ));
82
+
83
+ $wysiwygConfig = Mage::getSingleton('cms/wysiwyg_config')->getConfig(array('add_variables' => false, 'add_widgets' => false,'files_browser_window_url'=>$this->getBaseUrl().'admin/cms_wysiwyg_images/index/'));
84
+
85
+ $fieldset->addField('contents', 'editor', array(
86
+ 'name' => 'contents',
87
+ 'label' => Mage::helper('coolslider')->__('Content'),
88
+ 'title' => Mage::helper('coolslider')->__('Content'),
89
+ 'style' => 'width:430px; height:500px;',
90
+ 'config' => $wysiwygConfig,
91
+ 'wysiwyg' => true,
92
+ ));
93
+
94
+ if ( Mage::getSingleton('adminhtml/session')->getSupersliderData() )
95
+ {
96
+ $data = Mage::getSingleton('adminhtml/session')->getSupersliderData();
97
+ Mage::getSingleton('adminhtml/session')->setSupersliderData(null);
98
+ } elseif ( Mage::registry('coolslider_data') ) {
99
+ $data = Mage::registry('coolslider_data')->getData();
100
+ }
101
+
102
+
103
+
104
+ $form->setValues($data);
105
+ if (Mage::app()->isSingleStoreMode()) {
106
+ $fieldset->addField('store_id', 'hidden', array(
107
+ 'name' => 'stores[]',
108
+ 'value' => Mage::app()->getStore(true)->getId()
109
+ ));
110
+ }
111
+
112
+
113
+
114
+ $this->setForm($form);
115
+ return $this;
116
+ }
117
+ }
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Edit/Tabs.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+
20
+
21
+ class Tb_Coolslider_Block_Adminhtml_Slider_Edit_Tabs
22
+ extends Mage_Adminhtml_Block_Widget_Tabs{
23
+ public function __construct()
24
+ {
25
+ parent::__construct();
26
+ $this->setId('slider_edit_tabs');
27
+ $this->setDestElementId('edit_form');
28
+ $this->setTitle(Mage::helper('coolslider')->__('Information'));
29
+ }
30
+
31
+ protected function _beforeToHtml()
32
+ {
33
+ $this->addTab('info', array(
34
+ 'label' => Mage::helper('coolslider')->__('Slide Information'),
35
+ 'content' => $this->getLayout()->createBlock('coolslider/adminhtml_slider_edit_tab_info')->initForm()->toHtml(),
36
+ ));
37
+
38
+ return parent::_beforeToHtml();
39
+ }
40
+ }
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Grid.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Block_Adminhtml_Slider_Grid extends Mage_Adminhtml_Block_Widget_Grid{
20
+
21
+ public function __construct()
22
+ {
23
+ parent::__construct();
24
+ $this->setId('coolsliderGrid');
25
+ $this->setDefaultSort('slide_id');
26
+ $this->setDefaultDir('DESC');
27
+ $this->setSaveParametersInSession(true);
28
+ }
29
+
30
+
31
+ protected function _prepareCollection(){
32
+ $collection = Mage::getModel('coolslider/coolslider')->getCollection();
33
+ foreach($collection as $item) {
34
+ $stores = $this->lookupStoreIds($item->getId());
35
+ $item->setData('store_id', $stores);
36
+ }
37
+ $this->setCollection($collection);
38
+ return parent::_prepareCollection();
39
+ }
40
+
41
+ public function lookupStoreIds($objectId)
42
+ {
43
+ $adapter = Mage::getSingleton('core/resource')->getConnection('core_read');
44
+
45
+ $tableName = Mage::getSingleton('core/resource')->getTableName('cool_slider_store');
46
+ $select = $adapter->select()
47
+ ->from($tableName, 'store_id')
48
+ ->where('slide_id = ?',(int)$objectId);
49
+
50
+ return $adapter->fetchCol($select);
51
+ }
52
+
53
+
54
+ protected function _prepareColumns()
55
+ {
56
+ $this->addColumn('slide_id', array(
57
+ 'header' => Mage::helper('coolslider')->__('ID'),
58
+ 'align' =>'right',
59
+ 'width' => '10px',
60
+ 'index' => 'slide_id',
61
+ ));
62
+
63
+ $this->addColumn('title', array(
64
+ 'header' => Mage::helper('coolslider')->__('Title'),
65
+ 'align' =>'left',
66
+ 'index' => 'title',
67
+ 'width' => '150px',
68
+ ));
69
+
70
+
71
+ $this->addColumn('url', array(
72
+ 'header' => Mage::helper('coolslider')->__('Url'),
73
+ 'width' => '150px',
74
+ 'index' => 'url',
75
+ ));
76
+
77
+ if (!Mage::app()->isSingleStoreMode()) {
78
+ $this->addColumn('store_id', array(
79
+ 'header' => Mage::helper('coolslider')->__('Store View'),
80
+ 'index' => 'store_id',
81
+ 'type' => 'store',
82
+ 'store_all' => true,
83
+ 'store_view' => true,
84
+ 'sortable' => false,
85
+ 'filter_condition_callback'
86
+ => array($this, '_filterStoreCondition'),
87
+ ));
88
+ }
89
+
90
+
91
+ $this->addColumn('image', array(
92
+ 'header' => Mage::helper('coolslider')->__('Image'),
93
+ 'align' =>'left',
94
+ 'type' => 'image',
95
+ 'index' => 'image',
96
+ 'renderer' => 'coolslider/adminhtml_slider_render_image',
97
+ 'filter' => false,
98
+ 'width' => '100px',
99
+ 'sortable' => false,
100
+ ));
101
+
102
+ $this->addColumn('status', array(
103
+ 'header' => Mage::helper('coolslider')->__('Status'),
104
+ 'align' => 'left',
105
+ 'width' => '70',
106
+ 'index' => 'status',
107
+ 'type' => 'options',
108
+ 'options' => array(
109
+ 1 => Mage::helper('coolslider')->__('Enabled'),
110
+ 0 => Mage::helper('coolslider')->__('Disabled')
111
+ ),
112
+ ));
113
+
114
+ $this->addColumn('action',
115
+ array(
116
+ 'header' => Mage::helper('coolslider')->__('Action'),
117
+ 'width' => '60',
118
+ 'type' => 'action',
119
+ 'getter' => 'getId',
120
+ 'actions' => array(
121
+ array(
122
+ 'caption' => Mage::helper('coolslider')->__('Edit'),
123
+ 'url' => array('base'=> '*/*/edit'),
124
+ 'field' => 'id'
125
+ ),
126
+ ),
127
+ 'filter' => false,
128
+ 'sortable' => false,
129
+ 'index' => 'stores',
130
+ 'is_system' => true,
131
+ ));
132
+
133
+ return parent::_prepareColumns();
134
+ }
135
+ public function getRowUrl($row){
136
+ return $this->getUrl('*/*/edit', array('id' => $row->getId()));
137
+ }
138
+
139
+ protected function _filterStoreCondition($collection, $column)
140
+ {
141
+ if (!$value = $column->getFilter()->getValue()) {
142
+ return;
143
+ }
144
+
145
+ $this->getCollection()->addStoreFilter($value);
146
+ }
147
+
148
+
149
+ protected function _prepareMassaction()
150
+ {
151
+ $this->setMassactionIdField('slide_id');
152
+ $this->getMassactionBlock()->setFormFieldName('coolslider');
153
+
154
+ $this->getMassactionBlock()->addItem('delete', array(
155
+ 'label' => Mage::helper('coolslider')->__('Delete'),
156
+ 'url' => $this->getUrl('*/*/massDelete'),
157
+ 'confirm' => Mage::helper('coolslider')->__('Are you sure?')
158
+ ));
159
+
160
+ $statuses = array(
161
+ 1 => Mage::helper('coolslider')->__('Enabled'),
162
+ 0 => Mage::helper('coolslider')->__('Disabled')
163
+ );
164
+ array_unshift($statuses, array('label'=>'', 'value'=>''));
165
+ $this->getMassactionBlock()->addItem('status', array(
166
+ 'label'=> Mage::helper('coolslider')->__('Change status'),
167
+ 'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
168
+ 'additional' => array(
169
+ 'visibility' => array(
170
+ 'name' => 'status',
171
+ 'type' => 'select',
172
+ 'class' => 'required-entry',
173
+ 'label' => Mage::helper('coolslider')->__('Status'),
174
+ 'values' => array(
175
+ 1 => 'Enabled',
176
+ 0 => 'Disabled',
177
+ )
178
+ )
179
+ )
180
+ ));
181
+ return $this;
182
+ }
183
+
184
+ }
185
+ ?>
app/code/local/Tb/Coolslider/Block/Adminhtml/Slider/Render/Image.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Block_Adminhtml_Slider_Render_Image
20
+ extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{
21
+
22
+ public function render(Varien_Object $row){
23
+ $rowId = $row->getId();
24
+ $image = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).$row->getData($this->getColumn()->getIndex());
25
+ if(fopen($image,"r")){
26
+
27
+ $html = '<img id="' . $this->getColumn()->getId() .$rowId. '" src="'.$image. '" width="45" height="45"';
28
+ $html .= '/>';
29
+ return $html;
30
+ }else{
31
+ return NULL;
32
+ }
33
+ }
34
+ }
35
+ ?>
app/code/local/Tb/Coolslider/Block/Coolslider.php ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Cooslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Cooslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Block_Coolslider
20
+ extends Mage_Core_Block_Template{
21
+
22
+ public function _construct(){
23
+ $this->addData(array(
24
+ 'cache_lifetime' => 21600,
25
+ 'cache_tags' => array('coolslider_cache')
26
+ ));
27
+ }
28
+
29
+
30
+ /**
31
+ * Retrieve and set js slider configurations
32
+ *
33
+ * @return array
34
+ */
35
+ public function getSettings(){
36
+ $settings = array();
37
+
38
+ if(Mage::helper('coolslider')->containerWidth()){
39
+ $settings['width'] = Mage::helper('coolslider')->containerWidth().'px';
40
+ }else{
41
+ $settings['width'] = '100%';
42
+ }
43
+
44
+ if(Mage::helper('coolslider')->containerHeight()){
45
+ $settings['height'] = Mage::helper('coolslider')->containerHeight().'px';
46
+ }else{
47
+ $settings['height'] = '300px';
48
+ }
49
+
50
+ if(Mage::helper('coolslider')->pagination()){
51
+ $settings['pagination'] = 'true';
52
+ }else{
53
+ $settings['pagination'] = 'false';
54
+ }
55
+
56
+ if(Mage::helper('coolslider')->pauseOnHover()){
57
+ $settings['pauseOnHover'] = "true";
58
+ }else{
59
+ $settings['pauseOnHover'] = "false";
60
+ }
61
+
62
+ if(Mage::helper('coolslider')->navigationArrows()){
63
+ $settings['navigation'] = "true";
64
+ }else{
65
+ $settings['navigation'] = "false";
66
+ }
67
+
68
+ if(Mage::helper('coolslider')->duration()){
69
+ $settings['pauseTime'] = (int)Mage::helper('coolslider')->duration();
70
+ }else{
71
+ $settings['pauseTime'] = 2000;
72
+ }
73
+
74
+ if(Mage::helper('coolslider')->boxRows()){
75
+ $settings['boxRows'] = (int)Mage::helper('coolslider')->boxRows();
76
+ }else{
77
+ $settings['boxRows'] = 4;
78
+ }
79
+
80
+ if(Mage::helper('coolslider')->boxCols()){
81
+ $settings['boxCols'] = (int)Mage::helper('coolslider')->boxCols();
82
+ }else{
83
+ $settings['boxCols'] = 8;
84
+ }
85
+
86
+ if(Mage::helper('coolslider')->Slices()){
87
+ $settings['slices'] = (int)Mage::helper('coolslider')->Slices();
88
+ }else{
89
+ $settings['slices'] = 15;
90
+ }
91
+
92
+ if(Mage::helper('coolslider')->transitionEffect()){
93
+ $settings['effect'] = Mage::helper('coolslider')->transitionEffect();
94
+ }else{
95
+ $settings['effect'] = 'random';
96
+ }
97
+
98
+ if(Mage::helper('coolslider')->autoSlide()){
99
+ $settings['manualAdvance'] = "false";
100
+ }else{
101
+ $settings['manualAdvance'] = "true";
102
+ }
103
+
104
+ if(Mage::helper('coolslider')->animationSpeed()){
105
+ $settings['animSpeed'] = Mage::helper('coolslider')->animationSpeed();
106
+ }else{
107
+ $settings['animSpeed'] = 500;
108
+ }
109
+
110
+ return $settings;
111
+ }
112
+
113
+ /**
114
+ * Retrieve slide collection
115
+ *
116
+ * @return array $collection
117
+ */
118
+
119
+ public function getSlides(){
120
+ $collection = Mage::getModel('coolslider/coolslider')->getCollection();
121
+ $collection = $collection->addFieldToFilter('status', 1);
122
+ $collection->addStoreFilter(Mage::app()->getStore()->getId());
123
+
124
+ return $collection;
125
+ }
126
+
127
+ /**
128
+ * Retrieve content position form configuration settings
129
+ *
130
+ * @return string
131
+ */
132
+ public function getContentPosition(){
133
+ $x_axis = '';
134
+ $y_axis = '';
135
+
136
+ $poition = Mage::helper('coolslider')->getContentPosition();
137
+ switch($poition){
138
+
139
+ case 'center_left':
140
+ $x_axis = '"left":"0",';
141
+ $y_axis = '"top":"50%"';
142
+ break;
143
+
144
+ case 'top_left':
145
+ $x_axis = '"left":"0",';
146
+ $y_axis = '"top":"0"';
147
+ break;
148
+
149
+ case 'top_right':
150
+ $x_axis = '"right":"0",';
151
+ $y_axis = '"top":"0"';
152
+ break;
153
+
154
+ case 'bottom_left':
155
+ $x_axis = '"left":"0",';
156
+ $y_axis = '"bottom":"0"';
157
+ break;
158
+
159
+ case 'bottom_right':
160
+ $x_axis = '"right":"0",';
161
+ $y_axis = '"bottom":"0"';
162
+ break;
163
+
164
+ case 'center_right':
165
+ $x_axis = '"right":"0",';
166
+ $y_axis = '"top":"50%"';
167
+ break;
168
+
169
+ }
170
+
171
+ return $x_axis.$y_axis;
172
+ }
173
+
174
+
175
+ }
176
+ ?>
app/code/local/Tb/Coolslider/Helper/Data.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Carouslslide
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Helper_Data
20
+ extends Mage_Core_Helper_Abstract{
21
+
22
+ public function isEnabled()
23
+ {
24
+ return Mage::getStoreConfig('coolsliderset/general_settings/enable');
25
+ }
26
+
27
+ public function isIncludeJqueryLib()
28
+ {
29
+ return Mage::getStoreConfig('coolsliderset/general_settings/jquery_lib');
30
+ }
31
+
32
+ public function containerWidth()
33
+ {
34
+ return Mage::getStoreConfig('coolsliderset/general_settings/width');
35
+ }
36
+
37
+ public function containerHeight()
38
+ {
39
+ return Mage::getStoreConfig('coolsliderset/general_settings/height');
40
+ }
41
+
42
+ public function pagination()
43
+ {
44
+ return Mage::getStoreConfig('coolsliderset/general_settings/pagination');
45
+ }
46
+
47
+ public function pauseOnHover()
48
+ {
49
+ return Mage::getStoreConfig('coolsliderset/general_settings/pause');
50
+ }
51
+
52
+ public function navigationArrows()
53
+ {
54
+ return Mage::getStoreConfig('coolsliderset/general_settings/navigation');
55
+ }
56
+
57
+ public function duration()
58
+ {
59
+ return Mage::getStoreConfig('coolsliderset/general_settings/duration');
60
+ }
61
+
62
+ public function transitionEffect()
63
+ {
64
+ return Mage::getStoreConfig('coolsliderset/general_settings/effects');
65
+ }
66
+
67
+ public function boxRows()
68
+ {
69
+ return Mage::getStoreConfig('coolsliderset/general_settings/boxrows');
70
+ }
71
+
72
+ public function boxCols()
73
+ {
74
+ return Mage::getStoreConfig('coolsliderset/general_settings/boxcols');
75
+ }
76
+
77
+ public function Slices()
78
+ {
79
+ return Mage::getStoreConfig('coolsliderset/general_settings/slices');
80
+ }
81
+
82
+ public function autoSlide()
83
+ {
84
+ return Mage::getStoreConfig('coolsliderset/general_settings/auto');
85
+ }
86
+
87
+ public function animationSpeed()
88
+ {
89
+ return Mage::getStoreConfig('coolsliderset/general_settings/animspeed');
90
+ }
91
+
92
+ public function getContentPosition()
93
+ {
94
+ return Mage::getStoreConfig('coolsliderset/general_settings/position');
95
+ }
96
+
97
+
98
+ }
99
+ ?>
app/code/local/Tb/Coolslider/Model/Coolslider.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Model_Coolslider extends Mage_Core_Model_Abstract
20
+ {
21
+ public function _construct(){
22
+ parent::_construct();
23
+ $this->_init('coolslider/coolslider');
24
+ }
25
+
26
+
27
+ // Reset all model data
28
+ public function reset()
29
+ {
30
+ $this->setData(array());
31
+ $this->setOrigData();
32
+ $this->_attributes = null;
33
+ return $this;
34
+ }
35
+
36
+ }
37
+ ?>
app/code/local/Tb/Coolslider/Model/Mysql4/Coolslider.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Model_Mysql4_Coolslider extends Mage_Core_Model_Mysql4_Abstract
20
+ {
21
+ public function _construct(){
22
+ $this->_init('coolslider/coolslider', 'slide_id');
23
+ }
24
+
25
+ protected function _beforeSave(Mage_Core_Model_Abstract $object){
26
+ }
27
+
28
+ protected function _afterSave(Mage_Core_Model_Abstract $object){
29
+ $condition = $this->_getWriteAdapter()->quoteInto('slide_id = ?', $object->getId());
30
+
31
+ $this->_getWriteAdapter()->delete($this->getTable('coolslider_store'), $condition);
32
+ if (count($object->getData('stores')) && (!in_array(0, (array)$object->getData('stores')))) {
33
+ foreach ((array)$object->getData('stores') as $store) {
34
+ $data = array();
35
+ $data['slide_id'] = $object->getId();
36
+ $data['store_id'] = $store;
37
+ $this->_getWriteAdapter()->insert($this->getTable('coolslider_store'), $data);
38
+ }
39
+ } else {
40
+ $data = array();
41
+ $data['slide_id'] = $object->getId();
42
+ $data['store_id'] = '0';
43
+ $this->_getWriteAdapter()->insert($this->getTable('coolslider_store'), $data);
44
+ }
45
+
46
+ return parent::_afterSave($object);
47
+ }
48
+
49
+
50
+ protected function _beforeDelete(Mage_Core_Model_Abstract $object){
51
+ $adapter = $this->_getReadAdapter();
52
+ $adapter->delete($this->getTable('coolslider_store'), 'slide_id='.$object->getId());
53
+
54
+ }
55
+
56
+ protected function _afterLoad(Mage_Core_Model_Abstract $object){
57
+ $select = $this->_getReadAdapter()->select()
58
+ ->from($this->getTable('coolslider_store'))
59
+ ->where('slide_id = ?', $object->getId());
60
+
61
+ if ($data = $this->_getReadAdapter()->fetchAll($select)) {
62
+ $stores = array();
63
+ foreach ($data as $row) {
64
+ $stores[] = $row['store_id'];
65
+ }
66
+ $object->setData('store_id', $stores);
67
+ }
68
+
69
+ return parent::_afterLoad($object);
70
+ }
71
+
72
+
73
+ }
74
+ ?>
app/code/local/Tb/Coolslider/Model/Mysql4/Coolslider/Collection.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Model_Mysql4_Coolslider_Collection
20
+ extends Mage_Core_Model_Mysql4_Collection_Abstract{
21
+
22
+
23
+ public function _construct(){
24
+ parent::_construct();
25
+ $this->_init('coolslider/coolslider');
26
+ }
27
+
28
+ public function addStoreFilter($store){
29
+ $this->getSelect()->join(
30
+ array('coolslider_store_table' => $this->getTable('coolslider_store')),
31
+ 'main_table.slide_id = coolslider_store_table.slide_id',
32
+ array()
33
+ )
34
+ ->where('coolslider_store_table.store_id in (?)', array(0, $store));
35
+ $this->getSelect()->distinct();
36
+ return $this;
37
+ }
38
+
39
+ }
40
+ ?>
app/code/local/Tb/Coolslider/controllers/Adminhtml/SlideController.php ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Coolslider_Adminhtml_SlideController extends
20
+ Mage_Adminhtml_Controller_Action{
21
+
22
+ public function preDispatch() {
23
+ parent::preDispatch();
24
+ }
25
+
26
+ public function indexAction() {
27
+ $this->_initAction()->_addContent($this->getLayout()->createBlock('coolslider/adminhtml_slider'));
28
+
29
+ $this->renderLayout();
30
+
31
+ }
32
+
33
+ protected function _initAction()
34
+ {
35
+ // active menu
36
+ $this->loadLayout();
37
+ $this->_setActiveMenu('coolslider/manageslide');
38
+ $this->getLayout()->getBlock('head')->setTitle('Manage Coolslider');
39
+ return $this;
40
+ }
41
+
42
+
43
+ public function editAction() {
44
+ $id = $this->getRequest()->getParam('id');
45
+ $model = Mage::getModel('coolslider/coolslider')->load($id);
46
+ if ($id) {
47
+ $model->load($id);
48
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
49
+ if (!empty($data)) {
50
+ $model->setData($data);
51
+
52
+ }
53
+ if (! $model->getId()) {
54
+ Mage::getSingleton('adminhtml/session')
55
+ ->addError(Mage::helper('coolslider')->__('This slide is no longer exist'));
56
+ $this->_redirect('*/*/');
57
+ return;
58
+ }
59
+ }
60
+
61
+
62
+
63
+
64
+ $data = Mage::register('coolslider_data', $model);
65
+ $data = Mage::registry('coolslider_data');
66
+ $this->_initAction()
67
+ ->_addContent(
68
+ $this->getLayout()
69
+ ->createBlock('coolslider/adminhtml_Slider_edit')
70
+ )
71
+ ->_addLeft(
72
+ $this->getLayout()
73
+ ->createBlock('coolslider/adminhtml_Slider_edit_tabs')
74
+ )
75
+ ->renderLayout();
76
+
77
+ }
78
+ public function saveAction(){
79
+ if ($data = $this->getRequest()->getPost()) {
80
+ if(isset($_FILES['image']['name']) && $_FILES['image']['name'] != '') {
81
+ $imageRename = time().rand();
82
+ try{
83
+ $uploader = new Varien_File_Uploader('image');
84
+ // Any of these extention would work
85
+ $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
86
+ $uploader->setAllowRenameFiles(false);
87
+ $uploader->setFilesDispersion(false);
88
+ $path = Mage::getBaseDir('media') . DS . 'coolslider';
89
+ $uploader->save($path, $imageRename );
90
+ }catch (Exception $e){
91
+ }
92
+ $data['image'] = "coolslider/".$imageRename;
93
+ }else {
94
+ if(isset($data['image']['delete']) && $data['image']['delete'] == 1)
95
+ $data['image'] = '';
96
+ else
97
+ unset($data['image']);
98
+ }
99
+ $model = Mage::getModel('coolslider/coolslider');
100
+ $model->setData($data)
101
+ ->setId($this->getRequest()->getParam('id'));
102
+
103
+ try{
104
+ if ($model->getCreatedTime == NULL ||
105
+ $model->getUpdateTime() == NULL) {
106
+ $model->setCreatedTime(now())
107
+ ->setUpdateTime(now());
108
+ } else {
109
+ $model->setUpdateTime(now());
110
+ }
111
+ $model->save();
112
+
113
+ Mage::getSingleton('adminhtml/session')
114
+ ->addSuccess(Mage::helper('coolslider')
115
+ ->__('Slide was successfully saved.'));
116
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
117
+
118
+ if ($this->getRequest()->getParam('back')) {
119
+ $this->_redirect('*/*/edit', array('id' => $model->getId()));
120
+ return;
121
+ }
122
+
123
+ $this->_redirect('*/*/');
124
+ return;
125
+
126
+ }catch(Exception $e){
127
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
128
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
129
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
130
+ return;
131
+
132
+ }
133
+ }
134
+ Mage::getSingleton('adminhtml/session')
135
+ ->addError(Mage::helper('coolslider')
136
+ ->__('Unable to find slide to save'));
137
+ $this->_redirect('*/*/');
138
+
139
+ }
140
+
141
+ public function deleteAction() {
142
+ if( $this->getRequest()->getParam('id') > 0 ) {
143
+ try {
144
+ $model = Mage::getModel('coolslider/coolslider');
145
+
146
+ $model->setId($this->getRequest()->getParam('id'))
147
+ ->delete();
148
+
149
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Slide was successfully deleted.'));
150
+ $this->_redirect('*/*/');
151
+ } catch (Exception $e) {
152
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
153
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
154
+ }
155
+ }
156
+ $this->_redirect('*/*/');
157
+ }
158
+
159
+
160
+ public function newAction() {
161
+ $this->_forward('edit');
162
+ }
163
+
164
+ public function massDeleteAction() {
165
+ $slide_ids = $this->getRequest()->getParam('coolslider');
166
+
167
+ if (!is_array($slide_ids)) {
168
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
169
+ } else {
170
+ try {
171
+ $model = Mage::getModel('coolslider/coolslider');
172
+ foreach ($slide_ids as $slideId) {
173
+ $model->reset()
174
+ ->load($slideId)
175
+ ->delete();
176
+ }
177
+ Mage::getSingleton('adminhtml/session')
178
+ ->addSuccess(Mage::helper('adminhtml')
179
+ ->__('%d record(s) have been successfully deleted', count($slide_ids)));
180
+ } catch (Exception $e) {
181
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
182
+ }
183
+ }
184
+ $this->_redirect('*/*/index');
185
+ }
186
+
187
+
188
+ public function massStatusAction()
189
+ {
190
+ $slide_ids = $this->getRequest()->getParam('coolslider');
191
+ if (!is_array($slide_ids)) {
192
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
193
+ } else {
194
+ try {
195
+ foreach ($slide_ids as $slideId) {
196
+ $model = Mage::getSingleton('coolslider/coolslider')
197
+ ->setId($slideId)
198
+ ->setStatus($this->getRequest()->getParam('status'))
199
+ ->save();
200
+ }
201
+ $this->_getSession()
202
+ ->addSuccess($this->__('%d record(s) have been successfully updated', count($slide_ids)));
203
+ } catch (Exception $e) {
204
+ $this->_getSession()->addError($e->getMessage());
205
+ }
206
+ }
207
+ $this->_redirect('*/*/index');
208
+ }
209
+
210
+
211
+ }
app/code/local/Tb/Coolslider/controllers/IndexController.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Cooslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Cooslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ class Tb_Cooslider_IndexController extends Mage_Core_Controller_Front_Action{
20
+
21
+ public function indexAction(){
22
+ $this->loadLayout();
23
+ $this->renderLayout();
24
+ }
25
+ }
26
+ ?>
app/code/local/Tb/Coolslider/etc/adminhtml.xml ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <menu>
4
+ <coolslider translate="title" module="coolslider">
5
+ <title>coolslider Slide</title>
6
+ <sort_order>80</sort_order>
7
+ <children>
8
+ <addslide translate="title" module="coolslider">
9
+ <title>Add new Slide</title>
10
+ <sort_order>0</sort_order>
11
+ <action>coolslider/adminhtml_slide/new</action>
12
+ </addslide>
13
+ <manageslide translate="title" module="coolslider">
14
+ <title>Manage Slides</title>
15
+ <sort_order>10</sort_order>
16
+ <action>coolslider/adminhtml_slide/index</action>
17
+ </manageslide>
18
+ <settings>
19
+ <title>Settings</title>
20
+ <sort_order>20</sort_order>
21
+ <action>adminhtml/system_config/edit/section/coolsliderset</action>
22
+ </settings>
23
+ </children>
24
+ </coolslider>
25
+ </menu>
26
+ <acl>
27
+ <resources>
28
+ <all>
29
+ <title>
30
+ Allow Everything
31
+ </title>
32
+ </all>
33
+ <admin>
34
+ <children>
35
+ <coolslider>
36
+ <title>coolslider Slide</title>
37
+ <sort_order>80</sort_order>
38
+ <children>
39
+ <addslide>
40
+ <title>Add new slide</title>
41
+ <sort_order>0</sort_order>
42
+ </addslide>
43
+ <manageslide>
44
+ <title>Manage Slides</title>
45
+ <sort_order>10</sort_order>
46
+ </manageslide>
47
+ <settings>
48
+ <title>Settings</title>
49
+ <sort_order>20</sort_order>
50
+ </settings>
51
+ </children>
52
+ </coolslider>
53
+ <system>
54
+ <children>
55
+ <config>
56
+ <children>
57
+ <coolsliderset>
58
+ <title>coolslider settings</title>
59
+ </coolsliderset>
60
+ </children>
61
+ </config>
62
+ </children>
63
+ </system>
64
+ </children>
65
+ </admin>
66
+ </resources>
67
+ </acl>
68
+ </config>
app/code/local/Tb/Coolslider/etc/config.xml ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <modules>
4
+ <Tb_Coolslider>
5
+ <version>0.0.1</version>
6
+ </Tb_Coolslider>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <coolslider>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Tb_Coolslider</module>
14
+ <frontName>coolslider</frontName>
15
+ </args>
16
+ </coolslider>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <coolslider>
21
+ <file>coolslider.xml</file>
22
+ </coolslider>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+ <admin>
27
+ <routers>
28
+ <coolslider>
29
+ <use>admin</use>
30
+ <args>
31
+ <module>Tb_Coolslider</module>
32
+ <frontName>coolslider</frontName>
33
+ </args>
34
+ </coolslider>
35
+ </routers>
36
+ </admin>
37
+ <adminhtml>
38
+ <layout>
39
+ <updates>
40
+ <coolslider>
41
+ <file>coolslider.xml</file>
42
+ </coolslider>
43
+ </updates>
44
+ </layout>
45
+ </adminhtml>
46
+ <global>
47
+ <helpers>
48
+ <coolslider>
49
+ <class>Tb_Coolslider_Helper</class>
50
+ </coolslider>
51
+ </helpers>
52
+ <blocks>
53
+ <coolslider>
54
+ <class>Tb_Coolslider_Block</class>
55
+ </coolslider>
56
+ </blocks>
57
+ <models>
58
+ <coolslider_adminhtml>
59
+ <class>Tb_Coolslider_Adminhtml_Model</class>
60
+ </coolslider_adminhtml>
61
+ <coolslider>
62
+ <class>Tb_Coolslider_Model</class>
63
+ <resourceModel>coolslider_mysql4</resourceModel>
64
+ </coolslider>
65
+ <coolslider_mysql4>
66
+ <class>Tb_Coolslider_Model_Mysql4</class>
67
+ <entities>
68
+ <coolslider>
69
+ <table>cool_slider</table>
70
+ </coolslider>
71
+ <coolslider_store>
72
+ <table>cool_slider_store</table>
73
+ </coolslider_store>
74
+ </entities>
75
+ </coolslider_mysql4>
76
+ </models>
77
+ <resources>
78
+ <coolslider_setup>
79
+ <setup>
80
+ <module>Tb_Coolslider</module>
81
+ </setup>
82
+ <connection>
83
+ <use>core_setup</use>
84
+ </connection>
85
+ </coolslider_setup>
86
+ <coolslider_write>
87
+ <connection>
88
+ <use>core_write</use>
89
+ </connection>
90
+ </coolslider_write>
91
+ <coolslider_read>
92
+ <connection>
93
+ <use>core_read</use>
94
+ </connection>
95
+ </coolslider_read>
96
+ </resources>
97
+ </global>
98
+ </config>
app/code/local/Tb/Coolslider/etc/system.xml ADDED
@@ -0,0 +1,216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <tabs>
4
+ <tbcoolslider translate="label" module="coolslider">
5
+ <label>TB Coolslider</label>
6
+ <sort_order>300</sort_order>
7
+ </tbcoolslider>
8
+ </tabs>
9
+ <sections>
10
+ <coolsliderset translate="label" module="coolslider">
11
+ <label>TB Coolslider</label>
12
+ <tab>tbcoolslider</tab>
13
+ <frontend_type>text</frontend_type>
14
+ <sort_order>100</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
+ <how_to_use translate="label">
20
+ <label>How to use Coolsider</label>
21
+ <frontend_type>text</frontend_type>
22
+ <sort_order>10</sort_order>
23
+ <show_in_default>1</show_in_default>
24
+ <show_in_website>1</show_in_website>
25
+ <show_in_store>1</show_in_store>
26
+ <fields>
27
+ <info translate="label">
28
+ <label>Implementation code</label>
29
+ <comment>
30
+ <![CDATA[Past the following Block into any cms page<br />(Home page example)<br /><strong>{{block type="coolslider/coolslider" name="coolslider" alias="coolslider" template="coolslider/coolslider.phtml"}}</strong>]]>
31
+ </comment>
32
+ <expanded>1</expanded>
33
+ <frontend_type>label</frontend_type>
34
+ <sort_order>10</sort_order>
35
+ <show_in_default>1</show_in_default>
36
+ <show_in_website>1</show_in_website>
37
+ <show_in_store>1</show_in_store>
38
+ </info>
39
+ </fields>
40
+ </how_to_use>
41
+ <general_settings translate="label">
42
+ <label>Coolslider general settings</label>
43
+ <frontend_type>text</frontend_type>
44
+ <sort_order>20</sort_order>
45
+ <show_in_default>1</show_in_default>
46
+ <show_in_website>1</show_in_website>
47
+ <show_in_store>1</show_in_store>
48
+ <fields>
49
+ <enable translate="label">
50
+ <label>Enable</label>
51
+ <frontend_type>select</frontend_type>
52
+ <sort_order>10</sort_order>
53
+ <source_model>adminhtml/system_config_source_yesno</source_model>
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
+ <comment></comment>
58
+ </enable>
59
+ <jquery_lib translate="label">
60
+ <label>Include jquery library </label>
61
+ <frontend_type>select</frontend_type>
62
+ <sort_order>20</sort_order>
63
+ <source_model>adminhtml/system_config_source_yesno</source_model>
64
+ <show_in_default>1</show_in_default>
65
+ <show_in_website>1</show_in_website>
66
+ <show_in_store>1</show_in_store>
67
+ <comment>select yes, no other jquery library included.</comment>
68
+ </jquery_lib>
69
+ <height translate="label">
70
+ <label>Height (px)</label>
71
+ <frontend_type>text</frontend_type>
72
+ <sort_order>40</sort_order>
73
+ <validate>validate-digits</validate>
74
+ <show_in_default>1</show_in_default>
75
+ <show_in_website>1</show_in_website>
76
+ <show_in_store>1</show_in_store>
77
+ <comment>Specify height of slider in px.</comment>
78
+ </height>
79
+ <width translate="label">
80
+ <label>Width (px)</label>
81
+ <frontend_type>text</frontend_type>
82
+ <sort_order>30</sort_order>
83
+ <validate>validate-digits</validate>
84
+ <show_in_default>1</show_in_default>
85
+ <show_in_website>1</show_in_website>
86
+ <show_in_store>1</show_in_store>
87
+ <comment>Specify width of slider in px.</comment>
88
+ </width>
89
+ <pagination translate="label">
90
+ <label>Pagination / Bullets</label>
91
+ <frontend_type>select</frontend_type>
92
+ <source_model>adminhtml/system_config_source_yesno</source_model>
93
+ <sort_order>110</sort_order>
94
+ <show_in_default>1</show_in_default>
95
+ <show_in_website>1</show_in_website>
96
+ <show_in_store>1</show_in_store>
97
+ <comment></comment>
98
+ </pagination>
99
+ <pause translate="label">
100
+ <label>Pause on hover</label>
101
+ <frontend_type>select</frontend_type>
102
+ <source_model>adminhtml/system_config_source_yesno</source_model>
103
+ <sort_order>120</sort_order>
104
+ <show_in_default>1</show_in_default>
105
+ <show_in_website>1</show_in_website>
106
+ <show_in_store>1</show_in_store>
107
+ <comment></comment>
108
+ </pause>
109
+ <navigation translate="label">
110
+ <label>Navigation Arrows</label>
111
+ <frontend_type>select</frontend_type>
112
+ <source_model>adminhtml/system_config_source_yesno</source_model>
113
+ <sort_order>100</sort_order>
114
+ <show_in_default>1</show_in_default>
115
+ <show_in_website>1</show_in_website>
116
+ <show_in_store>1</show_in_store>
117
+ <comment></comment>
118
+ </navigation>
119
+ <duration translate="label">
120
+ <label>Duration (ms)</label>
121
+ <frontend_type>text</frontend_type>
122
+ <sort_order>90</sort_order>
123
+ <validate>validate-digits</validate>
124
+ <show_in_default>1</show_in_default>
125
+ <show_in_website>1</show_in_website>
126
+ <show_in_store>1</show_in_store>
127
+ <comment>Determines how long each slide will show in milliseconds.</comment>
128
+ </duration>
129
+ <effects translate="label">
130
+ <label>Transition effect</label>
131
+ <frontend_type>select</frontend_type>
132
+ <source_model>coolslider_adminhtml/system_config_source_effects</source_model>
133
+ <sort_order>50</sort_order>
134
+ <show_in_default>1</show_in_default>
135
+ <show_in_website>1</show_in_website>
136
+ <show_in_store>1</show_in_store>
137
+ </effects>
138
+ <position translate="label">
139
+ <label>Content Position</label>
140
+ <frontend_type>select</frontend_type>
141
+ <source_model>coolslider_adminhtml/system_config_source_positions</source_model>
142
+ <sort_order>130</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
+ </position>
147
+ <slices translate="label">
148
+ <label>Slices</label>
149
+ <frontend_type>text</frontend_type>
150
+ <validate>validate-digits</validate>
151
+ <sort_order>60</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
+ <comment>Specify number of slices, For slice animations only.</comment>
156
+ <depends>
157
+ <effects separator="|">
158
+ <value>sliceDown|sliceDownLeft|sliceUp|sliceUpLeft|sliceUpDown|sliceUpDownLeft</value>
159
+ </effects>
160
+ </depends>
161
+ </slices>
162
+ <boxcols translate="label">
163
+ <label>Box columns</label>
164
+ <frontend_type>text</frontend_type>
165
+ <validate>validate-digits</validate>
166
+ <sort_order>60</sort_order>
167
+ <show_in_default>1</show_in_default>
168
+ <show_in_website>1</show_in_website>
169
+ <show_in_store>1</show_in_store>
170
+ <comment>Specify number of columns, For box animations only.</comment>
171
+ <depends>
172
+ <effects separator="|">
173
+ <value>boxRandom|boxRain|boxRainReverse|boxRainGrow|boxRainGrowReverse</value>
174
+ </effects>
175
+ </depends>
176
+ </boxcols>
177
+ <boxrows translate="label">
178
+ <label>Box rows</label>
179
+ <frontend_type>text</frontend_type>
180
+ <validate>validate-digits</validate>
181
+ <sort_order>70</sort_order>
182
+ <show_in_default>1</show_in_default>
183
+ <show_in_website>1</show_in_website>
184
+ <show_in_store>1</show_in_store>
185
+ <comment>Specify number of rows, For box animations only.</comment>
186
+ <depends>
187
+ <effects separator="|">
188
+ <value>boxRandom|boxRain|boxRainReverse|boxRainGrow|boxRainGrowReverse</value>
189
+ </effects>
190
+ </depends>
191
+ </boxrows>
192
+ <animspeed translate="label">
193
+ <label>Animation speed (ms)</label>
194
+ <frontend_type>text</frontend_type>
195
+ <validate>validate-digits</validate>
196
+ <sort_order>80</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>1</show_in_store>
200
+ <comment>Slide transition speed in milliseconds.</comment>
201
+ </animspeed>
202
+ <auto translate="label">
203
+ <label>Auto slide</label>
204
+ <frontend_type>select</frontend_type>
205
+ <source_model>adminhtml/system_config_source_yesno</source_model>
206
+ <sort_order>110</sort_order>
207
+ <show_in_default>1</show_in_default>
208
+ <show_in_website>1</show_in_website>
209
+ <show_in_store>1</show_in_store>
210
+ </auto>
211
+ </fields>
212
+ </general_settings>
213
+ </groups>
214
+ </coolsliderset>
215
+ </sections>
216
+ </config>
app/code/local/Tb/Coolslider/sql/coolslider_setup/mysql4-install-0.0.1.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ */
17
+ ?>
18
+ <?php
19
+ $installer = $this;
20
+ $installer->startSetup();
21
+ $sql=<<<SQLTEXT
22
+ DROP TABLE IF EXISTS `cool_slider`;
23
+ create table cool_slider(
24
+ `slide_id`int(11) unsigned NOT NULL auto_increment,
25
+ `title` varchar(255) NOT NULL default '',
26
+ `status` smallint(6) NOT NULL default '0',
27
+ `store_id` varchar(255) NOT NULL,
28
+ `url` varchar(255) NULL,
29
+ `image` varchar(255) NULL,
30
+ `contents` text NULL,
31
+ primary key(slide_id)
32
+ )ENGINE = InnoDB DEFAULT CHARSET = utf8;
33
+
34
+ CREATE TABLE IF NOT EXISTS `cool_slider_store` (
35
+ `slide_id` smallint(6) unsigned,
36
+ `store_id` smallint(6) unsigned
37
+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8;
38
+
39
+ SQLTEXT;
40
+
41
+ $installer->run($sql);
42
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/coolslider.xml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * @category design_default
17
+ * @package Mage
18
+ * @copyright Copyright (c) 2004-2007 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
19
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
+ */
21
+ -->
22
+ <layout version="0.1.0">
23
+ <default>
24
+ <reference name="head">
25
+ <action method="setCanLoadExtJs"><flag>1</flag></action>
26
+ <action method="setCanLoadTinyMce"><flag>1</flag></action>
27
+ <action method="addJs"><script>mage/adminhtml/variables.js</script></action>
28
+ <action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action>
29
+ <action method="addJs"><script>lib/flex.js</script></action>
30
+ <action method="addJs"><script>lib/FABridge.js</script></action>
31
+ <action method="addJs"><script>mage/adminhtml/flexuploader.js</script></action>
32
+ <action method="addJs"><script>mage/adminhtml/browser.js</script></action>
33
+ <action method="addJs"><script>prototype/window.js</script></action>
34
+ <action method="addJs"><script>prototype/prototype.js</script></action>
35
+ <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
36
+ <action method="addItem"><type>skin_css</type><file>lib/prototype/windows/themes/magento.css</file></action>
37
+ </reference>
38
+ </default>
39
+ </layout>
app/design/frontend/default/default/layout/coolslider.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <layout version="0.1.0">
2
+ <default>
3
+ <reference name="head">
4
+ <action ifconfig="coolsliderset/general_settings/enable" method="addCss"><stylesheet>css/coolslider.css</stylesheet></action>
5
+ <action ifconfig="coolsliderset/general_settings/jquery_lib" method="addJs"><script>coolslider/jquery.min.js</script></action>
6
+ <action ifconfig="coolsliderset/general_settings/enable" method="addJs"><script>coolslider/jquery.nivo.slider.js</script></action>
7
+ </reference>
8
+
9
+ </default>
10
+
11
+
12
+ <superslider_index_index>
13
+ <reference name="root">
14
+ <action method="setTemplate"><template>page/1column.phtml</template>
15
+ </action>
16
+ </reference>
17
+ </superslider_index_index>
18
+
19
+ </layout>
20
+
app/design/frontend/default/default/template/coolslider/coolslider.phtml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Tb_Coolslider
4
+ *
5
+ /****************************************************************************
6
+ * MAGENTO EDITION USAGE NOTICE *
7
+ ****************************************************************************/
8
+ /* This package designed for Magento Community edition. Author does not provide extension support in case of incorrect edition usage.
9
+ /****************************************************************************
10
+ * @category TB
11
+ * @package Tb_Coolslider
12
+ * @copyright Copyright (c) 2014
13
+ * @license http://opensource.org/licenses/OSL-3.0
14
+ */
15
+ /**
16
+ * coolslider template file
17
+ */
18
+ ?>
19
+
20
+ <?php
21
+ $settings = $this->getSettings();
22
+ $slideCollection = $this->getSlides();
23
+ $mediaUrl = Mage::getBaseUrl('media');
24
+ $count = 0;
25
+ ?>
26
+
27
+
28
+ <?php if(count($slideCollection)){ ?>
29
+ <div class="slider-wrapper" style="<?php echo 'width:'.$settings['width'].';height:'. $settings['height'] ?>;">
30
+ <div id="cool_slider" class="nivoSlider" style="height: <?php echo $settings['height']?>">
31
+ <?php foreach($slideCollection as $_slide){ ?>
32
+ <a href="<?php echo $_slide->getUrl()?$_slide->getUrl():'#'; ?>">
33
+ <img src="<?php echo $mediaUrl.$_slide->getImage()?>" alt="<?php echo $_slide->getTitle()?>" title="#htmlcontent<?php echo $count;?>" />
34
+ </a>
35
+ <?php $count++; } ?>
36
+ </div>
37
+ <?php $count = 0; // re-initialise $count ?>
38
+ <?php foreach($slideCollection as $_slide){ ?>
39
+ <div id="htmlcontent<?php echo $count;?>" class="nivo-html-caption">
40
+ <?php echo $_slide->getContents();?>
41
+ </div>
42
+ <?php $count++; } ?>
43
+ </div>
44
+
45
+ <?php } ?>
46
+
47
+ <script type="text/javascript">
48
+ jQuery.noConflict();
49
+ jQuery(document).ready(function() {
50
+ jQuery('#cool_slider').nivoSlider({
51
+ effect: '<?php echo $settings['effect'] ?>',
52
+ slices: <?php echo $settings['slices'] ?>,
53
+ boxCols: <?php echo $settings['boxCols'] ?>,
54
+ boxRows: <?php echo $settings['boxRows'] ?>,
55
+ animSpeed: <?php echo $settings['animSpeed'] ?>,
56
+ pauseTime: <?php echo $settings['pauseTime'] ?>,
57
+ manualAdvance: <?php echo $settings['manualAdvance'] ?>,
58
+ directionNav: <?php echo $settings['navigation'] ?>,
59
+ controlNav: <?php echo $settings['pagination'] ?>,
60
+ pauseOnHover: <?php echo $settings['pauseOnHover'] ?>
61
+ });
62
+ jQuery(".nivo-caption").css({
63
+ <?php echo $this->getContentPosition();?>
64
+ });
65
+ });
66
+ </script>
app/etc/modules/Tb_Coolslider.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <modules>
4
+ <Tb_Coolslider>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Tb_Coolslider>
8
+ </modules>
9
+ </config>
js/coolslider/jquery.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! jQuery v1.7.1 jquery.com | jquery.org/license */
2
+ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(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=a.mimeType||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 ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(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===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();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(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,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=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.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 d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,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"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&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,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},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)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.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?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
3
+ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.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)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.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 contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.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")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.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&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.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&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),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(j,"")+" ";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(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.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]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),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]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.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&&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!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},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=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&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=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null: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=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=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(t){s=function(a,b){var c=0,d=b||[];if(g.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 u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)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 v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=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}),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)&&(o.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:[]}},o.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&&(o.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")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(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;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},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 V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={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,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(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 f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(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(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(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=f.clean(arguments);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,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
4
+ {for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},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]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),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","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||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(c||!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 cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("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,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},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||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.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,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=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(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.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;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.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):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);jQuery.noConflict();
js/coolslider/jquery.nivo.slider.js ADDED
@@ -0,0 +1,720 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery Nivo Slider v3.2
3
+ * http://nivo.dev7studios.com
4
+ *
5
+ * Copyright 2012, Dev7studios
6
+ * Free to use and abuse under the MIT license.
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ */
9
+
10
+ (function($) {
11
+ var NivoSlider = function(element, options){
12
+ // Defaults are below
13
+ var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
14
+
15
+ // Useful variables. Play carefully.
16
+ var vars = {
17
+ currentSlide: 0,
18
+ currentImage: '',
19
+ totalSlides: 0,
20
+ running: false,
21
+ paused: false,
22
+ stop: false,
23
+ controlNavEl: false
24
+ };
25
+
26
+ // Get this slider
27
+ var slider = $(element);
28
+ slider.data('nivo:vars', vars).addClass('nivoSlider');
29
+
30
+ // Find our slider children
31
+ var kids = slider.children();
32
+ kids.each(function() {
33
+ var child = $(this);
34
+ var link = '';
35
+ if(!child.is('img')){
36
+ if(child.is('a')){
37
+ child.addClass('nivo-imageLink');
38
+ link = child;
39
+ }
40
+ child = child.find('img:first');
41
+ }
42
+ // Get img width & height
43
+ var childWidth = (childWidth === 0) ? child.attr('width') : child.width(),
44
+ childHeight = (childHeight === 0) ? child.attr('height') : child.height();
45
+
46
+ if(link !== ''){
47
+ link.css('display','none');
48
+ }
49
+ child.css('display','none');
50
+ vars.totalSlides++;
51
+ });
52
+
53
+ // If randomStart
54
+ if(settings.randomStart){
55
+ settings.startSlide = Math.floor(Math.random() * vars.totalSlides);
56
+ }
57
+
58
+ // Set startSlide
59
+ if(settings.startSlide > 0){
60
+ if(settings.startSlide >= vars.totalSlides) { settings.startSlide = vars.totalSlides - 1; }
61
+ vars.currentSlide = settings.startSlide;
62
+ }
63
+
64
+ // Get initial image
65
+ if($(kids[vars.currentSlide]).is('img')){
66
+ vars.currentImage = $(kids[vars.currentSlide]);
67
+ } else {
68
+ vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
69
+ }
70
+
71
+ // Show initial link
72
+ if($(kids[vars.currentSlide]).is('a')){
73
+ $(kids[vars.currentSlide]).css('display','block');
74
+ }
75
+
76
+ // Set first background
77
+ var sliderImg = $('<img class="nivo-main-image" src="#" />');
78
+ sliderImg.attr('src', vars.currentImage.attr('src')).show();
79
+ slider.append(sliderImg);
80
+
81
+ // Detect Window Resize
82
+ $(window).resize(function() {
83
+ slider.children('img').width(slider.width());
84
+ sliderImg.attr('src', vars.currentImage.attr('src'));
85
+ sliderImg.stop().height('auto');
86
+ $('.nivo-slice').remove();
87
+ $('.nivo-box').remove();
88
+ });
89
+
90
+ //Create caption
91
+ slider.append($('<div class="nivo-caption"></div>'));
92
+
93
+ // Process caption function
94
+ var processCaption = function(settings){
95
+ var nivoCaption = $('.nivo-caption', slider);
96
+ if(vars.currentImage.attr('title') != '' && vars.currentImage.attr('title') != undefined){
97
+ var title = vars.currentImage.attr('title');
98
+ if(title.substr(0,1) == '#') title = $(title).html();
99
+
100
+ if(nivoCaption.css('display') == 'block'){
101
+ setTimeout(function(){
102
+ nivoCaption.html(title);
103
+ }, settings.animSpeed);
104
+ } else {
105
+ nivoCaption.html(title);
106
+ nivoCaption.stop().fadeIn(settings.animSpeed);
107
+ }
108
+ } else {
109
+ nivoCaption.stop().fadeOut(settings.animSpeed);
110
+ }
111
+ }
112
+
113
+ //Process initial caption
114
+ processCaption(settings);
115
+
116
+ // In the words of Super Mario "let's a go!"
117
+ var timer = 0;
118
+ if(!settings.manualAdvance && kids.length > 1){
119
+ timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
120
+ }
121
+
122
+ // Add Direction nav
123
+ if(settings.directionNav){
124
+ slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>');
125
+
126
+ $('a.nivo-prevNav', slider).live('click', function(){
127
+ if(vars.running) { return false; }
128
+ clearInterval(timer);
129
+ timer = '';
130
+ vars.currentSlide -= 2;
131
+ nivoRun(slider, kids, settings, 'prev');
132
+ });
133
+
134
+ $('a.nivo-nextNav', slider).live('click', function(){
135
+ if(vars.running) { return false; }
136
+ clearInterval(timer);
137
+ timer = '';
138
+ nivoRun(slider, kids, settings, 'next');
139
+ });
140
+ }
141
+
142
+ // Add Control nav
143
+ if(settings.controlNav){
144
+ vars.controlNavEl = $('<div class="nivo-controlNav"></div>');
145
+ slider.after(vars.controlNavEl);
146
+ for(var i = 0; i < kids.length; i++){
147
+ if(settings.controlNavThumbs){
148
+ vars.controlNavEl.addClass('nivo-thumbs-enabled');
149
+ var child = kids.eq(i);
150
+ if(!child.is('img')){
151
+ child = child.find('img:first');
152
+ }
153
+ if(child.attr('data-thumb')) vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('data-thumb') +'" alt="" /></a>');
154
+ } else {
155
+ vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>');
156
+ }
157
+ }
158
+
159
+ //Set initial active link
160
+ $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
161
+
162
+ $('a', vars.controlNavEl).bind('click', function(){
163
+ if(vars.running) return false;
164
+ if($(this).hasClass('active')) return false;
165
+ clearInterval(timer);
166
+ timer = '';
167
+ sliderImg.attr('src', vars.currentImage.attr('src'));
168
+ vars.currentSlide = $(this).attr('rel') - 1;
169
+ nivoRun(slider, kids, settings, 'control');
170
+ });
171
+ }
172
+
173
+ //For pauseOnHover setting
174
+ if(settings.pauseOnHover){
175
+ slider.hover(function(){
176
+ vars.paused = true;
177
+ clearInterval(timer);
178
+ timer = '';
179
+ }, function(){
180
+ vars.paused = false;
181
+ // Restart the timer
182
+ if(timer === '' && !settings.manualAdvance){
183
+ timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
184
+ }
185
+ });
186
+ }
187
+
188
+ // Event when Animation finishes
189
+ slider.bind('nivo:animFinished', function(){
190
+ sliderImg.attr('src', vars.currentImage.attr('src'));
191
+ vars.running = false;
192
+ // Hide child links
193
+ $(kids).each(function(){
194
+ if($(this).is('a')){
195
+ $(this).css('display','none');
196
+ }
197
+ });
198
+ // Show current link
199
+ if($(kids[vars.currentSlide]).is('a')){
200
+ $(kids[vars.currentSlide]).css('display','block');
201
+ }
202
+ // Restart the timer
203
+ if(timer === '' && !vars.paused && !settings.manualAdvance){
204
+ timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
205
+ }
206
+ // Trigger the afterChange callback
207
+ settings.afterChange.call(this);
208
+ });
209
+
210
+ // Add slices for slice animations
211
+ var createSlices = function(slider, settings, vars) {
212
+ if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
213
+ $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
214
+ var sliceHeight = ($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().is('a')) ? $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().height() : $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height();
215
+
216
+ for(var i = 0; i < settings.slices; i++){
217
+ var sliceWidth = Math.round(slider.width()/settings.slices);
218
+
219
+ if(i === settings.slices-1){
220
+ slider.append(
221
+ $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
222
+ left:(sliceWidth*i)+'px',
223
+ width:(slider.width()-(sliceWidth*i))+'px',
224
+ height:sliceHeight+'px',
225
+ opacity:'0',
226
+ overflow:'hidden'
227
+ })
228
+ );
229
+ } else {
230
+ slider.append(
231
+ $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
232
+ left:(sliceWidth*i)+'px',
233
+ width:sliceWidth+'px',
234
+ height:sliceHeight+'px',
235
+ opacity:'0',
236
+ overflow:'hidden'
237
+ })
238
+ );
239
+ }
240
+ }
241
+
242
+ $('.nivo-slice', slider).height(sliceHeight);
243
+ sliderImg.stop().animate({
244
+ height: $(vars.currentImage).height()
245
+ }, settings.animSpeed);
246
+ };
247
+
248
+ // Add boxes for box animations
249
+ var createBoxes = function(slider, settings, vars){
250
+ if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
251
+ $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
252
+ var boxWidth = Math.round(slider.width()/settings.boxCols),
253
+ boxHeight = Math.round($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height() / settings.boxRows);
254
+
255
+
256
+ for(var rows = 0; rows < settings.boxRows; rows++){
257
+ for(var cols = 0; cols < settings.boxCols; cols++){
258
+ if(cols === settings.boxCols-1){
259
+ slider.append(
260
+ $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
261
+ opacity:0,
262
+ left:(boxWidth*cols)+'px',
263
+ top:(boxHeight*rows)+'px',
264
+ width:(slider.width()-(boxWidth*cols))+'px'
265
+
266
+ })
267
+ );
268
+ $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
269
+ } else {
270
+ slider.append(
271
+ $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
272
+ opacity:0,
273
+ left:(boxWidth*cols)+'px',
274
+ top:(boxHeight*rows)+'px',
275
+ width:boxWidth+'px'
276
+ })
277
+ );
278
+ $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
279
+ }
280
+ }
281
+ }
282
+
283
+ sliderImg.stop().animate({
284
+ height: $(vars.currentImage).height()
285
+ }, settings.animSpeed);
286
+ };
287
+
288
+ // Private run method
289
+ var nivoRun = function(slider, kids, settings, nudge){
290
+ // Get our vars
291
+ var vars = slider.data('nivo:vars');
292
+
293
+ // Trigger the lastSlide callback
294
+ if(vars && (vars.currentSlide === vars.totalSlides - 1)){
295
+ settings.lastSlide.call(this);
296
+ }
297
+
298
+ // Stop
299
+ if((!vars || vars.stop) && !nudge) { return false; }
300
+
301
+ // Trigger the beforeChange callback
302
+ settings.beforeChange.call(this);
303
+
304
+ // Set current background before change
305
+ if(!nudge){
306
+ sliderImg.attr('src', vars.currentImage.attr('src'));
307
+ } else {
308
+ if(nudge === 'prev'){
309
+ sliderImg.attr('src', vars.currentImage.attr('src'));
310
+ }
311
+ if(nudge === 'next'){
312
+ sliderImg.attr('src', vars.currentImage.attr('src'));
313
+ }
314
+ }
315
+
316
+ vars.currentSlide++;
317
+ // Trigger the slideshowEnd callback
318
+ if(vars.currentSlide === vars.totalSlides){
319
+ vars.currentSlide = 0;
320
+ settings.slideshowEnd.call(this);
321
+ }
322
+ if(vars.currentSlide < 0) { vars.currentSlide = (vars.totalSlides - 1); }
323
+ // Set vars.currentImage
324
+ if($(kids[vars.currentSlide]).is('img')){
325
+ vars.currentImage = $(kids[vars.currentSlide]);
326
+ } else {
327
+ vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
328
+ }
329
+
330
+ // Set active links
331
+ if(settings.controlNav){
332
+ $('a', vars.controlNavEl).removeClass('active');
333
+ $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
334
+ }
335
+
336
+ // Process caption
337
+ processCaption(settings);
338
+
339
+ // Remove any slices from last transition
340
+ $('.nivo-slice', slider).remove();
341
+
342
+ // Remove any boxes from last transition
343
+ $('.nivo-box', slider).remove();
344
+
345
+ var currentEffect = settings.effect,
346
+ anims = '';
347
+
348
+ // Generate random effect
349
+ if(settings.effect === 'random'){
350
+ anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade',
351
+ 'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
352
+ currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))];
353
+ if(currentEffect === undefined) { currentEffect = 'fade'; }
354
+ }
355
+
356
+ // Run random effect from specified set (eg: effect:'fold,fade')
357
+ if(settings.effect.indexOf(',') !== -1){
358
+ anims = settings.effect.split(',');
359
+ currentEffect = anims[Math.floor(Math.random()*(anims.length))];
360
+ if(currentEffect === undefined) { currentEffect = 'fade'; }
361
+ }
362
+
363
+ // Custom transition as defined by "data-transition" attribute
364
+ if(vars.currentImage.attr('data-transition')){
365
+ currentEffect = vars.currentImage.attr('data-transition');
366
+ }
367
+
368
+ // Run effects
369
+ vars.running = true;
370
+ var timeBuff = 0,
371
+ i = 0,
372
+ slices = '',
373
+ firstSlice = '',
374
+ totalBoxes = '',
375
+ boxes = '';
376
+
377
+ if(currentEffect === 'sliceDown' || currentEffect === 'sliceDownRight' || currentEffect === 'sliceDownLeft'){
378
+ createSlices(slider, settings, vars);
379
+ timeBuff = 0;
380
+ i = 0;
381
+ slices = $('.nivo-slice', slider);
382
+ if(currentEffect === 'sliceDownLeft') { slices = $('.nivo-slice', slider)._reverse(); }
383
+
384
+ slices.each(function(){
385
+ var slice = $(this);
386
+ slice.css({ 'top': '0px' });
387
+ if(i === settings.slices-1){
388
+ setTimeout(function(){
389
+ slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
390
+ }, (100 + timeBuff));
391
+ } else {
392
+ setTimeout(function(){
393
+ slice.animate({opacity:'1.0' }, settings.animSpeed);
394
+ }, (100 + timeBuff));
395
+ }
396
+ timeBuff += 50;
397
+ i++;
398
+ });
399
+ } else if(currentEffect === 'sliceUp' || currentEffect === 'sliceUpRight' || currentEffect === 'sliceUpLeft'){
400
+ createSlices(slider, settings, vars);
401
+ timeBuff = 0;
402
+ i = 0;
403
+ slices = $('.nivo-slice', slider);
404
+ if(currentEffect === 'sliceUpLeft') { slices = $('.nivo-slice', slider)._reverse(); }
405
+
406
+ slices.each(function(){
407
+ var slice = $(this);
408
+ slice.css({ 'bottom': '0px' });
409
+ if(i === settings.slices-1){
410
+ setTimeout(function(){
411
+ slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
412
+ }, (100 + timeBuff));
413
+ } else {
414
+ setTimeout(function(){
415
+ slice.animate({opacity:'1.0' }, settings.animSpeed);
416
+ }, (100 + timeBuff));
417
+ }
418
+ timeBuff += 50;
419
+ i++;
420
+ });
421
+ } else if(currentEffect === 'sliceUpDown' || currentEffect === 'sliceUpDownRight' || currentEffect === 'sliceUpDownLeft'){
422
+ createSlices(slider, settings, vars);
423
+ timeBuff = 0;
424
+ i = 0;
425
+ var v = 0;
426
+ slices = $('.nivo-slice', slider);
427
+ if(currentEffect === 'sliceUpDownLeft') { slices = $('.nivo-slice', slider)._reverse(); }
428
+
429
+ slices.each(function(){
430
+ var slice = $(this);
431
+ if(i === 0){
432
+ slice.css('top','0px');
433
+ i++;
434
+ } else {
435
+ slice.css('bottom','0px');
436
+ i = 0;
437
+ }
438
+
439
+ if(v === settings.slices-1){
440
+ setTimeout(function(){
441
+ slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
442
+ }, (100 + timeBuff));
443
+ } else {
444
+ setTimeout(function(){
445
+ slice.animate({opacity:'1.0' }, settings.animSpeed);
446
+ }, (100 + timeBuff));
447
+ }
448
+ timeBuff += 50;
449
+ v++;
450
+ });
451
+ } else if(currentEffect === 'fold'){
452
+ createSlices(slider, settings, vars);
453
+ timeBuff = 0;
454
+ i = 0;
455
+
456
+ $('.nivo-slice', slider).each(function(){
457
+ var slice = $(this);
458
+ var origWidth = slice.width();
459
+ slice.css({ top:'0px', width:'0px' });
460
+ if(i === settings.slices-1){
461
+ setTimeout(function(){
462
+ slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
463
+ }, (100 + timeBuff));
464
+ } else {
465
+ setTimeout(function(){
466
+ slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
467
+ }, (100 + timeBuff));
468
+ }
469
+ timeBuff += 50;
470
+ i++;
471
+ });
472
+ } else if(currentEffect === 'fade'){
473
+ createSlices(slider, settings, vars);
474
+
475
+ firstSlice = $('.nivo-slice:first', slider);
476
+ firstSlice.css({
477
+ 'width': slider.width() + 'px'
478
+ });
479
+
480
+ firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
481
+ } else if(currentEffect === 'slideInRight'){
482
+ createSlices(slider, settings, vars);
483
+
484
+ firstSlice = $('.nivo-slice:first', slider);
485
+ firstSlice.css({
486
+ 'width': '0px',
487
+ 'opacity': '1'
488
+ });
489
+
490
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
491
+ } else if(currentEffect === 'slideInLeft'){
492
+ createSlices(slider, settings, vars);
493
+
494
+ firstSlice = $('.nivo-slice:first', slider);
495
+ firstSlice.css({
496
+ 'width': '0px',
497
+ 'opacity': '1',
498
+ 'left': '',
499
+ 'right': '0px'
500
+ });
501
+
502
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){
503
+ // Reset positioning
504
+ firstSlice.css({
505
+ 'left': '0px',
506
+ 'right': ''
507
+ });
508
+ slider.trigger('nivo:animFinished');
509
+ });
510
+ } else if(currentEffect === 'slideInRighteaseInOutCirc'){
511
+ createSlices(slider, settings, vars);
512
+
513
+ firstSlice = $('.nivo-slice:first', slider);
514
+ firstSlice.css({
515
+ 'width': '0px',
516
+ 'opacity': '1'
517
+ });
518
+
519
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), 'easeInOutCirc', function(){ slider.trigger('nivo:animFinished'); });
520
+ } else if(currentEffect === 'slideInLefteaseInOutCirc'){
521
+ createSlices(slider, settings, vars);
522
+
523
+ firstSlice = $('.nivo-slice:first', slider);
524
+ firstSlice.css({
525
+ 'width': '0px',
526
+ 'opacity': '1',
527
+ 'left': '',
528
+ 'right': '0px'
529
+ });
530
+
531
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), 'easeInOutCirc', function(){
532
+ // Reset positioning
533
+ firstSlice.css({
534
+ 'left': '0px',
535
+ 'right': ''
536
+ });
537
+ slider.trigger('nivo:animFinished');
538
+ });
539
+ } else if(currentEffect === 'slideInRighteaseOutBounce'){
540
+ createSlices(slider, settings, vars);
541
+
542
+ firstSlice = $('.nivo-slice:first', slider);
543
+ firstSlice.css({
544
+ 'width': '0px',
545
+ 'opacity': '1'
546
+ });
547
+
548
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), 'easeOutBounce', function(){ slider.trigger('nivo:animFinished'); });
549
+ } else if(currentEffect === 'slideInLefteaseOutBounce'){
550
+ createSlices(slider, settings, vars);
551
+
552
+ firstSlice = $('.nivo-slice:first', slider);
553
+ firstSlice.css({
554
+ 'width': '0px',
555
+ 'opacity': '1',
556
+ 'left': '',
557
+ 'right': '0px'
558
+ });
559
+
560
+ firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), 'easeOutBounce', function(){
561
+ // Reset positioning
562
+ firstSlice.css({
563
+ 'left': '0px',
564
+ 'right': ''
565
+ });
566
+ slider.trigger('nivo:animFinished');
567
+ });
568
+ } else if(currentEffect === 'boxRandom'){
569
+ createBoxes(slider, settings, vars);
570
+
571
+ totalBoxes = settings.boxCols * settings.boxRows;
572
+ i = 0;
573
+ timeBuff = 0;
574
+
575
+ boxes = shuffle($('.nivo-box', slider));
576
+ boxes.each(function(){
577
+ var box = $(this);
578
+ if(i === totalBoxes-1){
579
+ setTimeout(function(){
580
+ box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
581
+ }, (100 + timeBuff));
582
+ } else {
583
+ setTimeout(function(){
584
+ box.animate({ opacity:'1' }, settings.animSpeed);
585
+ }, (100 + timeBuff));
586
+ }
587
+ timeBuff += 20;
588
+ i++;
589
+ });
590
+ } else if(currentEffect === 'boxRain' || currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
591
+ createBoxes(slider, settings, vars);
592
+
593
+ totalBoxes = settings.boxCols * settings.boxRows;
594
+ i = 0;
595
+ timeBuff = 0;
596
+
597
+ // Split boxes into 2D array
598
+ var rowIndex = 0;
599
+ var colIndex = 0;
600
+ var box2Darr = [];
601
+ box2Darr[rowIndex] = [];
602
+ boxes = $('.nivo-box', slider);
603
+ if(currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrowReverse'){
604
+ boxes = $('.nivo-box', slider)._reverse();
605
+ }
606
+ boxes.each(function(){
607
+ box2Darr[rowIndex][colIndex] = $(this);
608
+ colIndex++;
609
+ if(colIndex === settings.boxCols){
610
+ rowIndex++;
611
+ colIndex = 0;
612
+ box2Darr[rowIndex] = [];
613
+ }
614
+ });
615
+
616
+ // Run animation
617
+ for(var cols = 0; cols < (settings.boxCols * 2); cols++){
618
+ var prevCol = cols;
619
+ for(var rows = 0; rows < settings.boxRows; rows++){
620
+ if(prevCol >= 0 && prevCol < settings.boxCols){
621
+ /* Due to some weird JS bug with loop vars
622
+ being used in setTimeout, this is wrapped
623
+ with an anonymous function call */
624
+ (function(row, col, time, i, totalBoxes) {
625
+ var box = $(box2Darr[row][col]);
626
+ var w = box.width();
627
+ var h = box.height();
628
+ if(currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
629
+ box.width(0).height(0);
630
+ }
631
+ if(i === totalBoxes-1){
632
+ setTimeout(function(){
633
+ box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); });
634
+ }, (100 + time));
635
+ } else {
636
+ setTimeout(function(){
637
+ box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
638
+ }, (100 + time));
639
+ }
640
+ })(rows, prevCol, timeBuff, i, totalBoxes);
641
+ i++;
642
+ }
643
+ prevCol--;
644
+ }
645
+ timeBuff += 100;
646
+ }
647
+ }
648
+ };
649
+
650
+ // Shuffle an array
651
+ var shuffle = function(arr){
652
+ for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i, 10), x = arr[--i], arr[i] = arr[j], arr[j] = x);
653
+ return arr;
654
+ };
655
+
656
+ // For debugging
657
+ var trace = function(msg){
658
+ if(this.console && typeof console.log !== 'undefined') { console.log(msg); }
659
+ };
660
+
661
+ // Start / Stop
662
+ this.stop = function(){
663
+ if(!$(element).data('nivo:vars').stop){
664
+ $(element).data('nivo:vars').stop = true;
665
+ trace('Stop Slider');
666
+ }
667
+ };
668
+
669
+ this.start = function(){
670
+ if($(element).data('nivo:vars').stop){
671
+ $(element).data('nivo:vars').stop = false;
672
+ trace('Start Slider');
673
+ }
674
+ };
675
+
676
+ // Trigger the afterLoad callback
677
+ settings.afterLoad.call(this);
678
+
679
+ return this;
680
+ };
681
+
682
+ $.fn.nivoSlider = function(options) {
683
+ return this.each(function(key, value){
684
+ var element = $(this);
685
+ // Return early if this element already has a plugin instance
686
+ if (element.data('nivoslider')) { return element.data('nivoslider'); }
687
+ // Pass options to plugin constructor
688
+ var nivoslider = new NivoSlider(this, options);
689
+ // Store plugin object in this element's data
690
+ element.data('nivoslider', nivoslider);
691
+ });
692
+ };
693
+
694
+ //Default settings
695
+ $.fn.nivoSlider.defaults = {
696
+ effect: 'random',
697
+ slices: 15,
698
+ boxCols: 8,
699
+ boxRows: 4,
700
+ animSpeed: 500,
701
+ pauseTime: 3000,
702
+ startSlide: 0,
703
+ directionNav: true,
704
+ controlNav: true,
705
+ controlNavThumbs: false,
706
+ pauseOnHover: true,
707
+ manualAdvance: false,
708
+ prevText: 'Prev',
709
+ nextText: 'Next',
710
+ randomStart: false,
711
+ beforeChange: function(){},
712
+ afterChange: function(){},
713
+ slideshowEnd: function(){},
714
+ lastSlide: function(){},
715
+ afterLoad: function(){}
716
+ };
717
+
718
+ $.fn._reverse = []._reverse;
719
+
720
+ })(jQuery);
package.xml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>cool_slider</name>
4
+ <version>0.0.1</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Cool slider extension with advanced configuration options and easy manageable slider manager.</summary>
10
+ <description>&lt;h2&gt;OVERVIEW&lt;/h2&gt;&#xD;
11
+ Cool slider extension is based on jquery Nivo slider with advanced configuration options and easy manageable slider manager make your store front more eye-catching. This extension offers lots of configuration options to control it from the backend, auto play settings, play speed, navigation buttons, height of slideshow, pause on hover and or more. This extension also compatible with all modern browsers.&#xD;
12
+ &lt;br /&gt;&#xD;
13
+ &lt;br /&gt;&#xD;
14
+ &lt;h2&gt;How to use&lt;/h2&gt;&#xD;
15
+ You can insert it to any cms page by inserting the code below and also placed it into category pages by creating static block and place the code into the static block.&#xD;
16
+ &lt;br /&gt;&#xD;
17
+ &lt;strong&gt;Implementation code:&lt;/strong&gt;&#xD;
18
+ &lt;br /&gt;&lt;br /&gt;&#xD;
19
+ {{block type="coolslider/coolslider" name="coolslider" alias="coolslider" template="coolslider/coolslider.phtml"}}&lt;br /&gt;&lt;br /&gt;&#xD;
20
+ &lt;h2&gt;General Settings&lt;/h2&gt;&#xD;
21
+ You can configure slider settings through various configuration options in admin simply accessing through System &gt; Configuration &gt; TB Coolslider &gt; TB Coolslider : Coolslider general settings tab.&#xD;
22
+ &lt;br /&gt;&#xD;
23
+ &lt;br /&gt;&#xD;
24
+ &lt;span&gt;Enable &#x2013; Enable or Disable extension.&lt;/span&gt;&#xD;
25
+ &lt;br /&gt;&#xD;
26
+ &lt;br /&gt;&#xD;
27
+ &lt;span&gt;Include jquery library &#x2013; Add jquery library into head section if you don&#x2019;t have already and if you have a latest jquery library already included by some other extension then set it to no. &lt;/span&gt;&#xD;
28
+ &lt;br /&gt;&#xD;
29
+ &lt;br /&gt;&#xD;
30
+ &lt;span&gt;Width &#x2013; set specific width of slider container, otherwise leave blank. &lt;/span&gt;&#xD;
31
+ &lt;br /&gt;&#xD;
32
+ &lt;br /&gt;&#xD;
33
+ &lt;span&gt;Height &#x2013; set specific height of slider container, if leave blank then default height 300px will be use. &lt;/span&gt;&#xD;
34
+ &lt;br /&gt;&#xD;
35
+ &lt;br /&gt;&#xD;
36
+ &lt;span&gt; Transition effect &#x2013; Choose transition effect on slider, form various options. &lt;/span&gt;&#xD;
37
+ &lt;br /&gt;&#xD;
38
+ &lt;br /&gt;&#xD;
39
+ &lt;span&gt; Slices &#x2013; Enter integer value, For slice animations only&#xD;
40
+ . &lt;/span&gt;&#xD;
41
+ &lt;br /&gt;&#xD;
42
+ &lt;br /&gt;&#xD;
43
+ &lt;span&gt;Box columns &#x2013; Enter integer value, For box animations only.&lt;/span&gt;&#xD;
44
+ &lt;br /&gt;&#xD;
45
+ &lt;br /&gt;&#xD;
46
+ &lt;span&gt;Box rows &#x2013; Enter integer value, For box animations only.&lt;/span&gt;&#xD;
47
+ &lt;br /&gt;&#xD;
48
+ &lt;br /&gt;&#xD;
49
+ &lt;span&gt;Animation speed &#x2013; specify the slide transition speed, default 500ms.&lt;/span&gt;&#xD;
50
+ &lt;br /&gt;&#xD;
51
+ &lt;br /&gt;&#xD;
52
+ &lt;span&gt;Duration &#x2013; Determines how long each slide will show in milliseconds, default 2000ms.&lt;/span&gt;&#xD;
53
+ &lt;br /&gt;&#xD;
54
+ &lt;br /&gt;&#xD;
55
+ &lt;span&gt;Navigation Arrows &#x2013; Next previous slide controls.&lt;/span&gt;&#xD;
56
+ &lt;br /&gt;&#xD;
57
+ &lt;br /&gt;&#xD;
58
+ &lt;span&gt;Content Position &#x2013; Determine the position of content in the slide.&lt;/span&gt;&#xD;
59
+ &lt;br /&gt;&lt;br /&gt;&#xD;
60
+ &lt;h2&gt;Manage Slides&lt;/h2&gt;&#xD;
61
+ After installing Cool slider entension you will find new item has been added to Admin navigation menu &#x201C;Cool Slider&#x201D; which as three sub-menu items -Add new slide-, -Manage Slides- and -Settings-&#xD;
62
+ </description>
63
+ <notes>Initial release.</notes>
64
+ <authors><author><name>Rehan Mobin</name><user>rehanmobin</user><email>m.rehan.mobin@gmail.com</email></author></authors>
65
+ <date>2014-05-15</date>
66
+ <time>19:48:22</time>
67
+ <contents><target name="magelocal"><dir name="Tb"><dir name="Coolslider"><dir><dir name="Adminhtml"><dir name="Model"><dir name="System"><dir name="Config"><dir name="Source"><file name="Directions.php" hash="f0101183c87dd3e4c4994465f1511770"/><file name="Effects.php" hash="80a8635dd7dc8d4eb2d1e7cbb9165cc3"/><file name="Positions.php" hash="c5233cf807e03fc89c0d416713285391"/></dir></dir></dir></dir></dir><dir name="Block"><dir name="Adminhtml"><dir name="Slider"><dir name="Edit"><file name="Form.php" hash="e6790fdc8a816d342f057afe5d6d05e7"/><dir name="Tab"><file name="Info.php" hash="8dd92266b086d2e201c1a2cc13591a31"/></dir><file name="Tabs.php" hash="a880e5f6f99815aa3e9c10078468a134"/></dir><file name="Edit.php" hash="f542381685d0e666d9d79b38a955ff14"/><file name="Grid.php" hash="88f5787ab3344dc9ce764b091bade7d5"/><dir name="Render"><file name="Image.php" hash="58c56beeed61b00fd1c226ea96acd088"/></dir></dir><file name="Slider.php" hash="053a3aa641ef23523144c4934d254bf5"/></dir><file name="Coolslider.php" hash="982c44f27662407e6ac1adf9550e8391"/></dir><dir name="Helper"><file name="Data.php" hash="4eca8676ee083c61eedc986b1c110928"/></dir><dir name="Model"><file name="Coolslider.php" hash="6b7bb889cd3b7712bc75a5f6b717d43f"/><dir name="Mysql4"><dir name="Coolslider"><file name="Collection.php" hash="e935f38bc057d958a19370c6c866cb8e"/></dir><file name="Coolslider.php" hash="e8a68ebb7bca7bb3e22f13b7b888660b"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="SlideController.php" hash="d03daf543b5031a1253c561bcbe69f08"/></dir><file name="IndexController.php" hash="a9a8e7e2d2a215eb793fad74c506fba4"/></dir><dir name="etc"><file name="adminhtml.xml" hash="30840537431498844fd8ee5f112803e0"/><file name="config.xml" hash="392b8fce14f5f63204cffb8537f94558"/><file name="system.xml" hash="a5b7443bb91ae9bfba60f4af5776a018"/></dir><dir name="sql"><dir name="coolslider_setup"><file name="mysql4-install-0.0.1.php" hash="0652a48e250d531fd4ffc22f6993d79d"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Tb_Coolslider.xml" hash="d9a94d000a34d847a944dafe0f090ac8"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="coolslider.xml" hash="77c3fddd6f0df78a9e3623317621797d"/></dir><dir name="template"><dir name="coolslider"><file name="coolslider.phtml" hash="98a3def3cd6489f0ab726949ca079559"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="coolslider.xml" hash="f5ad3400209549f9256bcc46d7089e55"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="css"><file name="coolslider.css" hash="b3052cd0493c1aa66a3752ba4a4f9c1f"/></dir><dir name="images"><dir name="coolslider"><file name="left-arrow.png" hash="aa15f6f1accb60c4ed553708c14dbb34"/><file name="right-arrow.png" hash="b0797dd3cd1cf07d84d144a3b0c51fed"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="coolslider"><file name="jquery.min.js" hash="2c57990a020cc3a35c4a603413d67a28"/><file name="jquery.nivo.slider.js" hash="bd3db6a383fe05a9ee9dcde94be9da1e"/></dir></dir></target></contents>
68
+ <compatible/>
69
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
70
+ </package>
skin/frontend/default/default/css/coolslider.css ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* The Nivo Slider styles */
2
+ .slider-wrapper{
3
+ position: relative;
4
+ }
5
+
6
+ .nivoSlider {
7
+ position:relative;
8
+ width:100%;
9
+ height:auto;
10
+ overflow: hidden;
11
+ height: auto;
12
+ }
13
+ .nivoSlider img {
14
+ position:absolute;
15
+ top:0px;
16
+ left:0px;
17
+ max-width: none;
18
+ }
19
+ .nivo-main-image {
20
+ display: block !important;
21
+ position: relative !important;
22
+ width: 100% !important;
23
+ }
24
+
25
+ /* If an image is wrapped in a link */
26
+ .nivoSlider a.nivo-imageLink {
27
+ position:absolute;
28
+ top:0px;
29
+ left:0px;
30
+ width:100%;
31
+ height:100%;
32
+ border:0;
33
+ padding:0;
34
+ margin:0;
35
+ z-index:6;
36
+ display:none;
37
+ background:white;
38
+ filter:alpha(opacity=0);
39
+ opacity:0;
40
+ }
41
+ /* The slices and boxes in the Slider */
42
+ .nivo-slice {
43
+ display:block;
44
+ position:absolute;
45
+ z-index:5;
46
+ height:100%;
47
+ top:0;
48
+ }
49
+ .nivo-box {
50
+ display:block;
51
+ position:absolute;
52
+ z-index:5;
53
+ overflow:hidden;
54
+ }
55
+ .nivo-box img { display:block; }
56
+
57
+ /* Caption styles */
58
+ .nivo-caption {
59
+ position:absolute;
60
+
61
+ color:#fff;
62
+ width:100%;
63
+ z-index:8;
64
+ padding: 5px 10px;
65
+ overflow: hidden;
66
+ display: none;
67
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
68
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
69
+ box-sizing: border-box; /* Opera/IE 8+ */
70
+ }
71
+ .nivo-caption p {
72
+ padding:5px;
73
+ margin:0;
74
+ }
75
+ .nivo-caption a {
76
+ display:inline !important;
77
+ }
78
+ .nivo-html-caption {
79
+ display:none;
80
+ }
81
+ /* Direction nav styles (e.g. Next & Prev) */
82
+ .nivo-directionNav a {
83
+ border-radius: 1px;
84
+ height: 52px;
85
+ margin-top: -26px;
86
+ opacity: 0;
87
+ position: absolute;
88
+ text-indent: -9999px;
89
+ top: 50%;
90
+ cursor: pointer;
91
+ width: 32px;
92
+ z-index: 6;
93
+ }
94
+ #cool_slider:hover .nivo-directionNav a {
95
+ opacity: 1;
96
+ }
97
+ a.nivo-prevNav {
98
+ background: url("../images/coolslider/left-arrow.png") no-repeat scroll 50% 50% #000000;
99
+ left: 0px;
100
+ }
101
+ a.nivo-nextNav {
102
+ background: url("../images/coolslider/right-arrow.png") no-repeat scroll 50% 50% #000000;
103
+ right: 0px;
104
+ }
105
+ /* Control nav styles (e.g. 1,2,3...) */
106
+ .nivo-controlNav {
107
+ bottom: 5px;
108
+ left: 50%;
109
+ margin: 0 auto;
110
+ position: absolute;
111
+ text-align: center;
112
+ width: auto;
113
+ z-index: 999;
114
+ }
115
+ .nivo-controlNav a {
116
+ background: none repeat scroll 0 0 #000000;
117
+ cursor: pointer;
118
+ float: left;
119
+ height: 10px;
120
+ border-radius: 1px;
121
+ margin: 0 0 0 10px;
122
+ text-indent: 9999px;
123
+ width: 10px;
124
+ }
125
+ .nivo-controlNav a.active {
126
+ background: none repeat scroll 0 0 #DBDBDB;
127
+ font-weight: bold;
128
+ }
skin/frontend/default/default/images/coolslider/left-arrow.png ADDED
Binary file
skin/frontend/default/default/images/coolslider/right-arrow.png ADDED
Binary file