samsys-nivo-banner-1-0 - Version 1.0.0

Version Notes

Fresh release.

Download this release

Release Info

Developer sam-sys pvt ltd
Extension samsys-nivo-banner-1-0
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (69) hide show
  1. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner.php +20 -0
  2. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit.php +46 -0
  3. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Form.php +26 -0
  4. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Tab/Form.php +137 -0
  5. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Tabs.php +27 -0
  6. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Grid.php +160 -0
  7. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Grid/Renderer/Image.php +35 -0
  8. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup.php +19 -0
  9. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit.php +51 -0
  10. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Form.php +29 -0
  11. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Banner.php +123 -0
  12. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Form.php +190 -0
  13. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Gridbanner.php +48 -0
  14. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tabs.php +34 -0
  15. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Grid.php +143 -0
  16. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid.php +28 -0
  17. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column.php +36 -0
  18. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column/Filter/Banner.php +12 -0
  19. app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column/Renderer/Banner.php +35 -0
  20. app/code/community/Samsys/Nivobanner/Block/Nivobanner.php +192 -0
  21. app/code/community/Samsys/Nivobanner/Helper/Data.php +59 -0
  22. app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobanner.php +10 -0
  23. app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobanner/Collection.php +10 -0
  24. app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobannergroup.php +35 -0
  25. app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobannergroup/Collection.php +24 -0
  26. app/code/community/Samsys/Nivobanner/Model/Nivobanner.php +47 -0
  27. app/code/community/Samsys/Nivobanner/Model/Nivobannergroup.php +32 -0
  28. app/code/community/Samsys/Nivobanner/Model/Status.php +96 -0
  29. app/code/community/Samsys/Nivobanner/Model/Wysiwyg/Config.php +45 -0
  30. app/code/community/Samsys/Nivobanner/controllers/Adminhtml/NivobannerController.php +247 -0
  31. app/code/community/Samsys/Nivobanner/controllers/Adminhtml/NivobannergroupController.php +218 -0
  32. app/code/community/Samsys/Nivobanner/controllers/IndexController.php +9 -0
  33. app/code/community/Samsys/Nivobanner/etc/config.xml +156 -0
  34. app/code/community/Samsys/Nivobanner/sql/nivobanner_setup/mysql4-install-0.1.0.php +66 -0
  35. app/code/community/Samsys/Nivobanner/sql/nivobanner_setup/mysql4-upgrade-0.1.0-0.2.0.php +13 -0
  36. app/design/adminhtml/default/default/layout/nivobanner.xml +25 -0
  37. app/design/adminhtml/default/default/template/nivobanner/banner.phtml +59 -0
  38. app/design/frontend/base/default/layout/nivobanner.xml +30 -0
  39. app/design/frontend/base/default/template/nivobanner/nivobanner.phtml +131 -0
  40. app/etc/modules/Samsys_Nivobanner.xml +18 -0
  41. media/nivo/banner/nemo.jpg +0 -0
  42. media/nivo/banner/toystory.jpg +0 -0
  43. media/nivo/banner/up.jpg +0 -0
  44. media/nivo/banner/walle.jpg +0 -0
  45. package.xml +23 -0
  46. skin/frontend/base/default/nivobanner/js/jquery-1.9.0.min.js +4 -0
  47. skin/frontend/base/default/nivobanner/js/jquery.nivo.slider.js +662 -0
  48. skin/frontend/base/default/nivobanner/nivo-slider.css +113 -0
  49. skin/frontend/base/default/nivobanner/themes/.DS_Store +0 -0
  50. skin/frontend/base/default/nivobanner/themes/bar/arrows.png +0 -0
  51. skin/frontend/base/default/nivobanner/themes/bar/bar.css +132 -0
  52. skin/frontend/base/default/nivobanner/themes/bar/bullets.png +0 -0
  53. skin/frontend/base/default/nivobanner/themes/bar/loading.gif +0 -0
  54. skin/frontend/base/default/nivobanner/themes/dark/.DS_Store +0 -0
  55. skin/frontend/base/default/nivobanner/themes/dark/Thumbs.db +0 -0
  56. skin/frontend/base/default/nivobanner/themes/dark/arrows.png +0 -0
  57. skin/frontend/base/default/nivobanner/themes/dark/bullets.png +0 -0
  58. skin/frontend/base/default/nivobanner/themes/dark/dark.css +103 -0
  59. skin/frontend/base/default/nivobanner/themes/dark/loading.gif +0 -0
  60. skin/frontend/base/default/nivobanner/themes/default/Thumbs.db +0 -0
  61. skin/frontend/base/default/nivobanner/themes/default/arrows.png +0 -0
  62. skin/frontend/base/default/nivobanner/themes/default/bullets.png +0 -0
  63. skin/frontend/base/default/nivobanner/themes/default/default.css +93 -0
  64. skin/frontend/base/default/nivobanner/themes/default/loading.gif +0 -0
  65. skin/frontend/base/default/nivobanner/themes/light/Thumbs.db +0 -0
  66. skin/frontend/base/default/nivobanner/themes/light/arrows.png +0 -0
  67. skin/frontend/base/default/nivobanner/themes/light/bullets.png +0 -0
  68. skin/frontend/base/default/nivobanner/themes/light/light.css +102 -0
  69. skin/frontend/base/default/nivobanner/themes/light/loading.gif +0 -0
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner extends Mage_Adminhtml_Block_Widget_Grid_Container {
10
+
11
+ public function __construct() {
12
+ /*path to our banner controller = adminhtml bannercontroller*/
13
+ $this->_controller = 'adminhtml_nivobanner';
14
+ $this->_blockGroup = 'nivobanner';
15
+ $this->_headerText = Mage::helper('nivobanner')->__('Banner Manager');
16
+ $this->_addButtonLabel = Mage::helper('nivobanner')->__('Add Banner Item');
17
+ parent::__construct();
18
+
19
+ }
20
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner_Edit extends Mage_Adminhtml_Block_Widget_Form_Container {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+
14
+ $this->_objectId = 'id';
15
+ $this->_blockGroup = 'nivobanner';
16
+ $this->_controller = 'adminhtml_nivobanner';
17
+
18
+
19
+ /*add buttons*/
20
+ $this->_updateButton('save', 'label', Mage::helper('nivobanner')->__('Save Item'));
21
+ $this->_updateButton('delete', 'label', Mage::helper('nivobanner')->__('Delete Item'));
22
+
23
+ $this->_addButton('saveandcontinue', array(
24
+ 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
25
+ 'onclick' => 'saveAndContinueEdit()',
26
+ 'class' => 'save',
27
+ ), -100);
28
+
29
+ /*to make save&continueedit button to work*/
30
+ $this->_formScripts[] = "
31
+ function saveAndContinueEdit(){
32
+ editForm.submit($('edit_form').action+'back/edit/');
33
+ }
34
+ ";
35
+
36
+ }
37
+
38
+ public function getHeaderText() {
39
+ if (Mage::registry('nivobanner_data') && Mage::registry('nivobanner_data')->getId()) {
40
+ return Mage::helper('nivobanner')->__("Edit Item '%s'", $this->htmlEscape(Mage::registry('nivobanner_data')->getTitle()));
41
+ } else {
42
+ return Mage::helper('nivobanner')->__('Add Item');
43
+ }
44
+ }
45
+
46
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Form.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
10
+ {
11
+ protected function _prepareForm()
12
+ {
13
+ $form = new Varien_Data_Form(array(
14
+ 'id' => 'edit_form',
15
+
16
+ 'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
17
+ 'method' => 'post',
18
+ 'enctype' => 'multipart/form-data'
19
+ )
20
+ );
21
+
22
+ $form->setUseContainer(true);
23
+ $this->setForm($form);
24
+ return parent::_prepareForm();
25
+ }
26
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Tab/Form.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form {
10
+
11
+ protected function _prepareForm() {
12
+ $form = new Varien_Data_Form();
13
+ $this->setForm($form);
14
+ $fieldset = $form->addFieldset('nivobanner_form', array('legend' => Mage::helper('nivobanner')->__('Item information')));
15
+ $version = substr(Mage::getVersion(), 0, 3);
16
+ //$config = (($version == '1.4' || $version == '1.5') ? "'config' => Mage::getSingleton('banner/wysiwyg_config')->getConfig()" : "'class'=>''");
17
+
18
+ $fieldset->addField('title', 'text', array(
19
+ 'label' => Mage::helper('nivobanner')->__('Title'),
20
+ 'class' => 'required-entry',
21
+ 'required' => true,
22
+ 'name' => 'title',
23
+ ));
24
+
25
+ $fieldset->addField('link', 'text', array(
26
+ 'label' => Mage::helper('nivobanner')->__('Link'),
27
+ 'name' => 'link',
28
+ ));
29
+
30
+ $fieldset->addField('banner_type', 'select', array(
31
+ 'label' => Mage::helper('nivobanner')->__('Link Target'),
32
+ 'name' => 'link_target',
33
+ 'values' => array(
34
+ array(
35
+ 'value' => 0,
36
+ 'label' => Mage::helper('nivobanner')->__('Self'),
37
+ ),
38
+ array(
39
+ 'value' => 1,
40
+ 'label' => Mage::helper('nivobanner')->__('New Window'),
41
+ ),
42
+ ),
43
+ ));
44
+
45
+ $fieldset->addField('filename', 'image', array(
46
+ 'label' => Mage::helper('nivobanner')->__('Image'),
47
+ 'class' => 'required-entry',
48
+ 'required' => true,
49
+ 'name' => 'filename',
50
+ ));
51
+
52
+ if (in_array($version, array('1.4','1.5','1.6','1.7'))) {
53
+ $fieldset->addField('banner_content', 'editor', array(
54
+ 'name' => 'banner_content',
55
+ 'label' => Mage::helper('nivobanner')->__('Content'),
56
+ 'title' => Mage::helper('nivobanner')->__('Content'),
57
+ 'style' => 'width:600px; height:250px;',
58
+ 'config' => Mage::getSingleton('nivobanner/wysiwyg_config')->getConfig(),
59
+ 'wysiwyg' => true,
60
+ 'required' => false,
61
+ ));
62
+ } else {
63
+ $fieldset->addField('banner_content', 'editor', array(
64
+ 'name' => 'banner_content',
65
+ 'label' => Mage::helper('cms')->__('Content'),
66
+ 'title' => Mage::helper('cms')->__('Content'),
67
+ 'style' => 'width:600px; height:250px;',
68
+ 'wysiwyg' => false,
69
+ 'required' => false,
70
+ ));
71
+ }
72
+
73
+ $fieldset->addField('show_title', 'select', array(
74
+ 'label' => Mage::helper('nivobanner')->__('Display Title'),
75
+ 'class' => 'required-entry',
76
+ 'name' => 'show_title',
77
+ 'values' => array(
78
+ array(
79
+ 'value' => 1,
80
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
81
+ ),
82
+ array(
83
+ 'value' => 0,
84
+ 'label' => Mage::helper('nivobanner')->__('No'),
85
+ ),
86
+ ),
87
+ ));
88
+
89
+
90
+
91
+ $fieldset->addField('show_content', 'select', array(
92
+ 'label' => Mage::helper('nivobanner')->__('Display Content'),
93
+ 'class' => 'required-entry',
94
+ 'name' => 'show_content',
95
+ 'values' => array(
96
+ array(
97
+ 'value' => 1,
98
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
99
+ ),
100
+ array(
101
+ 'value' => 0,
102
+ 'label' => Mage::helper('nivobanner')->__('No'),
103
+ ),
104
+ ),
105
+ ));
106
+
107
+ $fieldset->addField('sort_order', 'text', array(
108
+ 'label' => Mage::helper('nivobanner')->__('Sort Order'),
109
+ 'name' => 'sort_order',
110
+ ));
111
+
112
+ $fieldset->addField('status', 'select', array(
113
+ 'label' => Mage::helper('nivobanner')->__('Status'),
114
+ 'class' => 'required-entry',
115
+ 'name' => 'status',
116
+ 'values' => array(
117
+ array(
118
+ 'value' => 1,
119
+ 'label' => Mage::helper('nivobanner')->__('Enabled'),
120
+ ),
121
+ array(
122
+ 'value' => 2,
123
+ 'label' => Mage::helper('nivobanner')->__('Disabled'),
124
+ ),
125
+ ),
126
+ ));
127
+
128
+ if (Mage::getSingleton('adminhtml/session')->getBannerData()) {
129
+ $form->setValues(Mage::getSingleton('adminhtml/session')->getBannerData());
130
+ Mage::getSingleton('adminhtml/session')->setBannerData(null);
131
+ } elseif (Mage::registry('nivobanner_data')) {
132
+ $form->setValues(Mage::registry('nivobanner_data')->getData());
133
+ }
134
+ return parent::_prepareForm();
135
+ }
136
+
137
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Edit/Tabs.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+ $this->setId('nivobanner_tabs');
14
+ $this->setDestElementId('edit_form');
15
+ $this->setTitle(Mage::helper('nivobanner')->__('Item Information'));
16
+ }
17
+
18
+ protected function _beforeToHtml() {
19
+ $this->addTab('form_section', array(
20
+ 'label' => Mage::helper('nivobanner')->__('Banner Information'),
21
+ 'alt' => Mage::helper('nivobanner')->__('Banner information'),
22
+ 'content' => $this->getLayout()->createBlock('nivobanner/adminhtml_nivobanner_edit_tab_form')->toHtml(),
23
+ ));
24
+ return parent::_beforeToHtml();
25
+ }
26
+
27
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Grid.php ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobanner_Grid extends Samsys_Nivobanner_Block_Adminhtml_Widget_Grid {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+ $this->setId('nivobannerGrid');
14
+ $this->setDefaultSort('banner_id');
15
+ $this->setDefaultDir('ASC');
16
+ $this->setSaveParametersInSession(true);
17
+ }
18
+
19
+ protected function _prepareCollection() {
20
+ $collection = Mage::getModel('nivobanner/nivobanner')->getCollection();
21
+ $this->setCollection($collection);
22
+ return parent::_prepareCollection();
23
+ }
24
+
25
+ protected function _prepareColumns() {
26
+ $this->addColumn('nivobanner_id', array(
27
+ 'header' => Mage::helper('nivobanner')->__('ID'),
28
+ 'align' => 'center',
29
+ 'width' => '30px',
30
+ 'index' => 'banner_id',
31
+ ));
32
+
33
+ $this->addColumn('filename', array(
34
+ 'header' => Mage::helper('nivobanner')->__('Image'),
35
+ 'align' => 'center',
36
+ 'index' => 'filename',
37
+ /*for rendering image we are creating widget in name nivobanner*/
38
+ 'type' => 'nivobanner',
39
+ 'escape' => true,
40
+ 'sortable' => false,
41
+ 'width' => '150px',
42
+ ));
43
+
44
+ $this->addColumn('title', array(
45
+ 'header' => Mage::helper('nivobanner')->__('Title'),
46
+ 'index' => 'title',
47
+ ));
48
+
49
+ $this->addColumn('link', array(
50
+ 'header' => Mage::helper('nivobanner')->__('Link'),
51
+ 'index' => 'link',
52
+ 'width' => '150px',
53
+ ));
54
+
55
+ $this->addColumn('show_title', array(
56
+ 'header' => Mage::helper('nivobanner')->__('Show Title'),
57
+ 'align' => 'center',
58
+ 'width' => '80px',
59
+ 'index' => 'show_title',
60
+ 'type' => 'options',
61
+ 'options' => array(
62
+ 1 => 'Yes',
63
+ 0 => 'No',
64
+ ),
65
+ ));
66
+ $this->addColumn('show_content', array(
67
+ 'header' => Mage::helper('nivobanner')->__('Show Content'),
68
+ 'align' => 'center',
69
+ 'width' => '80px',
70
+ 'index' => 'show_content',
71
+ 'type' => 'options',
72
+ 'options' => array(
73
+ 1 => 'Yes',
74
+ 0 => 'No',
75
+ ),
76
+ ));
77
+
78
+
79
+
80
+ $this->addColumn('sort_order', array(
81
+ 'header' => Mage::helper('nivobanner')->__('Sort Order'),
82
+ 'width' => '80px',
83
+ 'index' => 'sort_order',
84
+ 'align' => 'center',
85
+ ));
86
+
87
+
88
+ $this->addColumn('status', array(
89
+ 'header' => Mage::helper('nivobanner')->__('Status'),
90
+ 'align' => 'left',
91
+ 'width' => '80px',
92
+ 'index' => 'status',
93
+ 'type' => 'options',
94
+ 'options' => array(
95
+ 1 => 'Enabled',
96
+ 2 => 'Disabled',
97
+ ),
98
+ ));
99
+
100
+ $this->addColumn('action',
101
+ array(
102
+ 'header' => Mage::helper('nivobanner')->__('Action'),
103
+ 'width' => '80',
104
+ 'type' => 'action',
105
+ 'getter' => 'getId',
106
+ 'actions' => array(
107
+ array(
108
+ 'caption' => Mage::helper('nivobanner')->__('Edit'),
109
+ 'url' => array('base' => '*/*/edit'),
110
+ 'field' => 'id'
111
+ )
112
+ ),
113
+ 'filter' => false,
114
+ 'sortable' => false,
115
+ 'index' => 'stores',
116
+ 'is_system' => true,
117
+ ));
118
+
119
+
120
+ return parent::_prepareColumns();
121
+ }
122
+
123
+ /*to get multiple delete and change status actions*/
124
+ protected function _prepareMassaction() {
125
+ $this->setMassactionIdField('banner_id');
126
+ $this->getMassactionBlock()->setFormFieldName('banner');
127
+
128
+ $this->getMassactionBlock()->addItem('delete', array(
129
+ 'label' => Mage::helper('nivobanner')->__('Delete'),
130
+ 'url' => $this->getUrl('*/*/massDelete'),
131
+ 'confirm' => Mage::helper('nivobanner')->__('Are you sure?')
132
+ ));
133
+
134
+ $statuses = Mage::getSingleton('nivobanner/status')->getOptionArray();
135
+
136
+ array_unshift($statuses, array('label' => '', 'value' => ''));
137
+ $this->getMassactionBlock()->addItem('status', array(
138
+ 'label' => Mage::helper('nivobanner')->__('Change status'),
139
+ 'url' => $this->getUrl('*/*/massStatus', array('_current' => true)),
140
+ 'additional' => array(
141
+ 'visibility' => array(
142
+ 'name' => 'status',
143
+ 'type' => 'select',
144
+ 'class' => 'required-entry',
145
+ 'label' => Mage::helper('nivobanner')->__('Status'),
146
+ 'values' => $statuses
147
+ )
148
+ )
149
+ ));
150
+ return $this;
151
+ }
152
+
153
+
154
+ public function getRowUrl($row) {
155
+ return $this->getUrl('*/*/edit', array('id' => $row->getId()));
156
+ }
157
+
158
+
159
+
160
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobanner/Grid/Renderer/Image.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Sam-Sys
5
+ * @category Samsys
6
+ * @package Samsys_Nivobanner
7
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+ class Samsys_Nivobanner_Block_Adminhtml_Grid_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
11
+
12
+ public function __construct() {
13
+
14
+ }
15
+
16
+ public function render(Varien_Object $row) {
17
+ return $this->_getValue($row);
18
+ }
19
+
20
+ protected function _getValue(Varien_Object $row) {
21
+ $dored = false;
22
+ $out = '';
23
+ if ($getter = $this->getColumn()->getGetter()) {
24
+ $val = $row->$getter();
25
+ }
26
+ $val = $row->getData($this->getColumn()->getIndex());
27
+ $url = Mage::helper('nivobanner')->getImageUrl($val);
28
+ $size = Mage::helper('nivobanner')->getImageThumbSize($val);
29
+ $file_extis = Mage::helper('nivobanner')->getFileExists($val);
30
+ $popLink = "popWin('$url','image','width=800,height=600,resizable=yes,scrollbars=yes')";
31
+ if (is_array($size) && $file_extis)
32
+ $out = '<a href="javascript:;" onclick="'.$popLink.'"><img src="'.$url.'" width="'.$size['width'].'" height="'.$size['height'].'" style="border: 2px solid #CCCCCC;"/></a>';
33
+ return $out;
34
+ }
35
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * sam-sys
4
+ * @category samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 Samsys Systems. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup extends Mage_Adminhtml_Block_Widget_Grid_Container {
10
+
11
+ public function __construct() {
12
+ $this->_controller = 'adminhtml_nivobannergroup';
13
+ $this->_blockGroup = 'nivobanner';
14
+ $this->_headerText = Mage::helper('nivobanner')->__('Banner Group Manager');
15
+ $this->_addButtonLabel = Mage::helper('nivobanner')->__('Add Banner Group');
16
+ parent::__construct();
17
+ }
18
+
19
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit extends Mage_Adminhtml_Block_Widget_Form_Container {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+
14
+ $this->_objectId = 'id';
15
+ $this->_blockGroup = 'nivobanner';
16
+ $this->_controller = 'adminhtml_nivobannergroup';
17
+
18
+ $this->_updateButton('save', 'label', Mage::helper('nivobanner')->__('Save Item'));
19
+ $this->_updateButton('delete', 'label', Mage::helper('nivobanner')->__('Delete Item'));
20
+
21
+ $this->_addButton('saveandcontinue', array(
22
+ 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
23
+ 'onclick' => 'saveAndContinueEdit()',
24
+ 'class' => 'save',
25
+ ), -100);
26
+
27
+ $this->_formScripts[] = "
28
+ function toggleEditor() {
29
+ if (tinyMCE.getInstanceById('banner_content') == null) {
30
+ tinyMCE.execCommand('mceAddControl', false, 'banner_content');
31
+ } else {
32
+ tinyMCE.execCommand('mceRemoveControl', false, 'banner_content');
33
+ }
34
+ }
35
+
36
+ function saveAndContinueEdit(){
37
+ editForm.submit($('edit_form').action+'back/edit/');
38
+ }
39
+
40
+ ";
41
+ }
42
+
43
+ public function getHeaderText() {
44
+ if (Mage::registry('nivobannergroup_data') && Mage::registry('nivobannergroup_data')->getId()) {
45
+ return Mage::helper('nivobanner')->__("Edit Item '%s'", $this->htmlEscape(Mage::registry('nivobannergroup_data')->getGroupName()));
46
+ } else {
47
+ return Mage::helper('nivobanner')->__('Add Item');
48
+ }
49
+ }
50
+
51
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Form.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit_Form extends Mage_Adminhtml_Block_Widget_Form {
10
+
11
+ protected function _prepareForm() {
12
+ $form = new Varien_Data_Form(array(
13
+ 'id' => 'edit_form',
14
+ 'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
15
+ 'method' => 'post',
16
+ 'enctype' => 'multipart/form-data'
17
+ )
18
+ );
19
+
20
+ $form->setUseContainer(true);
21
+ $this->setForm($form);
22
+ $form->addField('in_bannergroup_banners', 'hidden', array(
23
+ 'name' => 'nivobannergroup_banners',
24
+ 'required' => false,
25
+ ));
26
+ return parent::_prepareForm();
27
+ }
28
+
29
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Banner.php ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit_Tab_Banner extends Samsys_Nivobanner_Block_Adminhtml_Widget_Grid {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+ $this->setId('bannerLeftGrid');
14
+ $this->setDefaultSort('banner_id');
15
+ $this->setUseAjax(true);
16
+ }
17
+
18
+ public function getBannergroupData() {
19
+ return Mage::registry('nivobannergroup_data');
20
+ }
21
+
22
+ protected function _prepareCollection() {
23
+ $collection = Mage::getModel('nivobanner/nivobanner')->getCollection();
24
+ $collection->getSelect()->order('banner_id');
25
+ $this->setCollection($collection);
26
+ return parent::_prepareCollection();
27
+ }
28
+
29
+ protected function _addColumnFilterToCollection($column) {
30
+ if ($this->getCollection()) {
31
+ if ($column->getId() == 'banner_triggers') {
32
+ $bannerIds = $this->_getSelectedBanners();
33
+ if (empty($bannerIds)) {
34
+ $bannerIds = 0;
35
+ }
36
+ if ($column->getFilter()->getValue()) {
37
+ $this->getCollection()->addFieldToFilter('banner_id', array('in' => $bannerIds));
38
+ } else {
39
+ if ($bannerIds) {
40
+ $this->getCollection()->addFieldToFilter('banner_id', array('nin' => $bannerIds));
41
+ }
42
+ }
43
+ } else {
44
+ parent::_addColumnFilterToCollection($column);
45
+ }
46
+ }
47
+ return $this;;
48
+ }
49
+
50
+ protected function _prepareColumns() {
51
+ $this->addColumn('banner_triggers', array(
52
+ 'header_css_class' => 'a-center',
53
+ 'type' => 'checkbox',
54
+ 'values' => $this->_getSelectedBanners(),
55
+ 'align' => 'center',
56
+ 'index' => 'banner_id'
57
+ ));
58
+ $this->addColumn('banner_id', array(
59
+ 'header' => Mage::helper('catalog')->__('ID'),
60
+ 'sortable' => true,
61
+ 'width' => '50',
62
+ 'align' => 'center',
63
+ 'index' => 'banner_id'
64
+ ));
65
+
66
+ $this->addColumn('filename', array(
67
+ 'header' => Mage::helper('nivobanner')->__('Image'),
68
+ 'align' => 'center',
69
+ 'index' => 'filename',
70
+ 'type' => 'nivobanner',
71
+ 'escape' => true,
72
+ 'sortable' => false,
73
+ 'width' => '150px',
74
+ ));
75
+
76
+ $this->addColumn('title', array(
77
+ 'header' => Mage::helper('catalog')->__('Title'),
78
+ 'index' => 'title',
79
+ 'align' => 'left',
80
+ ));
81
+
82
+ $this->addColumn('link', array(
83
+ 'header' => Mage::helper('nivobanner')->__('Link'),
84
+ 'width' => '200px',
85
+ 'index' => 'link',
86
+ ));
87
+
88
+ $this->addColumn('link_target', array(
89
+ 'header' => Mage::helper('nivobanner')->__('Link Target'),
90
+ 'width' => '100px',
91
+ 'index' => 'link_target',
92
+ 'type' => 'options',
93
+ 'options' => array(
94
+ 0 => 'Image',
95
+ 1 => 'Html',
96
+ ),
97
+ ));
98
+
99
+ $this->addColumn('sort_order', array(
100
+ 'header' => Mage::helper('nivobanner')->__('Sort Order'),
101
+ 'width' => '80px',
102
+ 'index' => 'sort_order',
103
+ 'align' => 'center',
104
+ ));
105
+ return parent::_prepareColumns();
106
+ }
107
+
108
+ public function getGridUrl() {
109
+ return $this->getUrl('*/*/nivobannergrid', array('_current' => true));
110
+ }
111
+
112
+ protected function _getSelectedBanners() {
113
+ $banners = $this->getRequest()->getPost('selected_banners');
114
+ if (is_null($banners)) {
115
+ $banners = explode(',', $this->getBannergroupData()->getBannerIds());
116
+ return (sizeof($banners) > 0 ? $banners : 0);
117
+ }
118
+ return $banners;
119
+ }
120
+
121
+ }
122
+
123
+ ?>
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Form.php ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form {
10
+
11
+ protected function _prepareForm() {
12
+ $form = new Varien_Data_Form();
13
+ $this->setForm($form);
14
+ $fieldset = $form->addFieldset('nivobannergroup_form', array('legend' => Mage::helper('nivobanner')->__('Item information')));
15
+ $animations = Mage::getSingleton('nivobanner/status')->getAnimationArray();
16
+
17
+
18
+ $fieldset->addField('group_name', 'text', array(
19
+ 'label' => Mage::helper('nivobanner')->__('Banner Group Name'),
20
+ 'class' => 'required-entry',
21
+ 'required' => true,
22
+ 'name' => 'group_name',
23
+ ));
24
+
25
+ if (Mage::registry('nivobannergroup_data')->getId() == null) {
26
+ $fieldset->addField('group_code', 'text', array(
27
+ 'label' => Mage::helper('nivobanner')->__('Banner Group Code'),
28
+ 'class' => 'required-entry',
29
+ 'name' => 'group_code',
30
+ 'required' => true,
31
+ ));
32
+ }
33
+
34
+ $fieldset->addField('banner_width', 'text', array(
35
+ 'label' => Mage::helper('nivobanner')->__('Banner Width [in px]'),
36
+ 'class' => 'required-entry',
37
+ 'required' => true,
38
+ 'name' => 'banner_width',
39
+ ));
40
+
41
+ $fieldset->addField('banner_height', 'text', array(
42
+ 'label' => Mage::helper('nivobanner')->__('Banner Height [in px]'),
43
+ 'class' => 'required-entry',
44
+ 'required' => true,
45
+ 'name' => 'banner_height',
46
+ ));
47
+
48
+ $fieldset->addField('banner_effects', 'select', array(
49
+ 'label' => Mage::helper('nivobanner')->__('Banner Effect'),
50
+ 'class' => 'required-entry',
51
+ 'required' => true,
52
+ 'name' => 'banner_effects',
53
+ 'values' => $animations
54
+ ));
55
+ $fieldset->addField('animation_speed', 'text', array(
56
+ 'label' => Mage::helper('nivobanner')->__('Animation Speed'),
57
+ 'class' => 'required-entry',
58
+ 'required' => true,
59
+ 'name' => 'animation_speed',
60
+ 'after_element_html' => '<p class="note"><span>In Milliseconds [eg: 1 Second = 1000 Millisecond] </span></p>',
61
+ ));
62
+
63
+ $fieldset->addField('pause_time', 'text', array(
64
+ 'label' => Mage::helper('nivobanner')->__('Pause Time'),
65
+ 'class' => 'required-entry',
66
+ 'required' => true,
67
+ 'name' => 'pause_time',
68
+ 'after_element_html' => '<p class="note"><span>In Milliseconds [eg: 1 Second = 1000 Millisecond] </span></p>',
69
+ ));
70
+
71
+ $fieldset->addField('image_nav', 'select', array(
72
+ 'label' => Mage::helper('nivobanner')->__('Image Navigation'),
73
+ 'name' => 'image_nav',
74
+ 'values' => array(
75
+ array(
76
+ 'value' => 1,
77
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
78
+ ),
79
+ array(
80
+ 'value' => 0,
81
+ 'label' => Mage::helper('nivobanner')->__('No'),
82
+ ),
83
+ ),
84
+ ));
85
+
86
+ $fieldset->addField('image_pagi', 'select', array(
87
+ 'label' => Mage::helper('nivobanner')->__('Image Pagination'),
88
+ 'name' => 'image_pagi',
89
+ 'values' => array(
90
+ array(
91
+ 'value' => 1,
92
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
93
+ ),
94
+ array(
95
+ 'value' => 0,
96
+ 'label' => Mage::helper('nivobanner')->__('No'),
97
+ ),
98
+ ),
99
+ ));
100
+
101
+ $fieldset->addField('hover_pause', 'select', array(
102
+ 'label' => Mage::helper('nivobanner')->__('Pause on Mouseover'),
103
+ 'name' => 'hover_pause',
104
+ 'values' => array(
105
+ array(
106
+ 'value' => 1,
107
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
108
+ ),
109
+ array(
110
+ 'value' => 0,
111
+ 'label' => Mage::helper('nivobanner')->__('No'),
112
+ ),
113
+ ),
114
+ ));
115
+
116
+ $fieldset->addField('autoplay', 'select', array(
117
+ 'label' => Mage::helper('nivobanner')->__('Autoplay Slides'),
118
+ 'name' => 'autoplay',
119
+ 'values' => array(
120
+ array(
121
+ 'value' => 1,
122
+ 'label' => Mage::helper('nivobanner')->__('Yes'),
123
+ ),
124
+ array(
125
+ 'value' => 0,
126
+ 'label' => Mage::helper('nivobanner')->__('No'),
127
+ ),
128
+ ),
129
+ ));
130
+
131
+ $fieldset->addField('theme', 'select', array(
132
+ 'label' => Mage::helper('nivobanner')->__('Theme'),
133
+ 'name' => 'theme',
134
+ 'values' => array(
135
+ array(
136
+ 'value' => 'default',
137
+ 'label' => Mage::helper('nivobanner')->__('Default'),
138
+ ),
139
+ array(
140
+ 'value' => 'dark',
141
+ 'label' => Mage::helper('nivobanner')->__('Dark'),
142
+ ),
143
+ array(
144
+ 'value' => 'light',
145
+ 'label' => Mage::helper('nivobanner')->__('Light'),
146
+ ),
147
+ array(
148
+ 'value' => 'bar',
149
+ 'label' => Mage::helper('nivobanner')->__('Bar'),
150
+ ),
151
+ ),
152
+ ));
153
+
154
+
155
+
156
+ $fieldset->addField('status', 'select', array(
157
+ 'label' => Mage::helper('nivobanner')->__('Status'),
158
+ 'class' => 'required-entry',
159
+ 'name' => 'status',
160
+ 'values' => array(
161
+ array(
162
+ 'value' => 1,
163
+ 'label' => Mage::helper('nivobanner')->__('Enabled'),
164
+ ),
165
+ array(
166
+ 'value' => 2,
167
+ 'label' => Mage::helper('nivobanner')->__('Disabled'),
168
+ ),
169
+ ),
170
+ ));
171
+
172
+ // $fieldset->addField('banner_ids', 'multiselect', array(
173
+ // 'label' => Mage::helper('nivobanner')->__('Banner Images'),
174
+ // 'class' => 'required-entry',
175
+ // 'required' => true,
176
+ // 'name' => 'banner_ids[]',
177
+ // 'values' => $bannerData,
178
+ // ));
179
+
180
+
181
+ if (Mage::getSingleton('adminhtml/session')->getBannergroupData()) {
182
+ $form->setValues(Mage::getSingleton('adminhtml/session')->getBannergroupData());
183
+ Mage::getSingleton('adminhtml/session')->setBannergroupData(null);
184
+ } elseif (Mage::registry('nivobannergroup_data')) {
185
+ $form->setValues(Mage::registry('nivobannergroup_data')->getData());
186
+ }
187
+ return parent::_prepareForm();
188
+ }
189
+
190
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tab/Gridbanner.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit_Tab_Gridbanner extends Mage_Adminhtml_Block_Widget_Container {
10
+
11
+ /**
12
+ * Set template
13
+ */
14
+ public function __construct() {
15
+ parent::__construct();
16
+ $this->setTemplate('nivobanner/banner.phtml');
17
+ }
18
+
19
+ public function getTabsHtml() {
20
+ return $this->getChildHtml('tabs');
21
+ }
22
+
23
+ /**
24
+ * Prepare button and grid
25
+ *
26
+ */
27
+ protected function _prepareLayout() {
28
+ $this->setChild('tabs', $this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit_tab_banner', 'nivobannergroup.grid.banner'));
29
+ return parent::_prepareLayout();
30
+ }
31
+
32
+ public function getBannergroupData() {
33
+ return Mage::registry('nivobannergroup_data');
34
+ }
35
+
36
+ public function getBannersJson() {
37
+ $banners = explode(',', $this->getBannergroupData()->getBannerIds());
38
+ if (!empty($banners) && isset($banners[0]) && $banners[0] != '') {
39
+ $data = array();
40
+ foreach ($banners as $element) {
41
+ $data[$element] = $element;
42
+ }
43
+ return Zend_Json::encode($data);
44
+ }
45
+ return '{}';
46
+ }
47
+
48
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Edit/Tabs.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+ $this->setId('nivobannergroup_tabs');
14
+ $this->setDestElementId('edit_form');
15
+ $this->setTitle(Mage::helper('nivobanner')->__('Banner Group Information'));
16
+ }
17
+
18
+ protected function _beforeToHtml() {
19
+ $this->addTab('form_section', array(
20
+ 'label' => Mage::helper('nivobanner')->__('Banner Group'),
21
+ 'alt' => Mage::helper('nivobanner')->__('Banner Group'),
22
+ 'content' => $this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit_tab_form')->toHtml(),
23
+ ));
24
+
25
+ $this->addTab('grid_section', array(
26
+ 'label' => Mage::helper('nivobanner')->__('Banners'),
27
+ 'alt' => Mage::helper('nivobanner')->__('Banners'),
28
+ 'content' => $this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit_tab_gridbanner')->toHtml(),
29
+ ));
30
+
31
+ return parent::_beforeToHtml();
32
+ }
33
+
34
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Nivobannergroup/Grid.php ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Nivobannergroup_Grid extends Mage_Adminhtml_Block_Widget_Grid {
10
+
11
+ public function __construct() {
12
+ parent::__construct();
13
+ $this->setId('nivobannergroupGrid');
14
+ $this->setDefaultSort('group_id');
15
+ $this->setDefaultDir('ASC');
16
+ $this->setSaveParametersInSession(true);
17
+ }
18
+
19
+ protected function _prepareCollection() {
20
+ $collection = Mage::getModel('nivobanner/nivobannergroup')->getCollection();
21
+ //$collection->getSelect()->columns(array('banner_effect' => 'if((animation_type=0),pre_banner_effects,banner_effects)'));
22
+ $collection->getSelect()->columns();
23
+ $this->setCollection($collection);
24
+ return parent::_prepareCollection();
25
+ }
26
+
27
+ protected function _prepareColumns() {
28
+ $this->addColumn('group_id', array(
29
+ 'header' => Mage::helper('nivobanner')->__('ID'),
30
+ 'align' => 'right',
31
+ 'width' => '50px',
32
+ 'index' => 'group_id',
33
+ ));
34
+
35
+ $this->addColumn('group_name', array(
36
+ 'header' => Mage::helper('nivobanner')->__('Banner Group name'),
37
+ 'index' => 'group_name',
38
+ ));
39
+
40
+ $this->addColumn('group_code', array(
41
+ 'header' => Mage::helper('nivobanner')->__('Group code'),
42
+ 'width' => '100px',
43
+ 'index' => 'group_code',
44
+ ));
45
+
46
+ $this->addColumn('banner_width', array(
47
+ 'header' => Mage::helper('nivobanner')->__('Banner Width'),
48
+ 'width' => '100px',
49
+ 'align' => 'center',
50
+ 'index' => 'banner_width',
51
+ ));
52
+
53
+ $this->addColumn('banner_height', array(
54
+ 'header' => Mage::helper('nivobanner')->__('Banner Height'),
55
+ 'width' => '100px',
56
+ 'align' => 'center',
57
+ 'index' => 'banner_height',
58
+ ));
59
+
60
+ $this->addColumn('banner_effects', array(
61
+ 'header' => Mage::helper('nivobanner')->__('Banner Animation'),
62
+ 'width' => '100px',
63
+ 'align' => 'center',
64
+ 'index' => 'banner_effects',
65
+ ));
66
+
67
+
68
+ $this->addColumn('banner_ids', array(
69
+ 'header' => Mage::helper('nivobanner')->__('Banners Ids'),
70
+ 'width' => '50px',
71
+ 'index' => 'banner_ids',
72
+ ));
73
+
74
+
75
+
76
+ $this->addColumn('status', array(
77
+ 'header' => Mage::helper('nivobanner')->__('Status'),
78
+ 'align' => 'left',
79
+ 'width' => '80px',
80
+ 'index' => 'status',
81
+ 'type' => 'options',
82
+ 'options' => array(
83
+ 1 => 'Enabled',
84
+ 2 => 'Disabled',
85
+ ),
86
+ ));
87
+
88
+ $this->addColumn('action',
89
+ array(
90
+ 'header' => Mage::helper('nivobanner')->__('Action'),
91
+ 'width' => '50',
92
+ 'type' => 'action',
93
+ 'getter' => 'getId',
94
+ 'actions' => array(
95
+ array(
96
+ 'caption' => Mage::helper('nivobanner')->__('Edit'),
97
+ 'url' => array('base' => '*/*/edit'),
98
+ 'field' => 'id'
99
+ )
100
+ ),
101
+ 'filter' => false,
102
+ 'sortable' => false,
103
+ 'index' => 'stores',
104
+ 'is_system' => true,
105
+ ));
106
+
107
+ return parent::_prepareColumns();
108
+ }
109
+
110
+ protected function _prepareMassaction() {
111
+ $this->setMassactionIdField('group_id');
112
+ $this->getMassactionBlock()->setFormFieldName('banner');
113
+
114
+ $this->getMassactionBlock()->addItem('delete', array(
115
+ 'label' => Mage::helper('nivobanner')->__('Delete'),
116
+ 'url' => $this->getUrl('*/*/massDelete'),
117
+ 'confirm' => Mage::helper('nivobanner')->__('Are you sure?')
118
+ ));
119
+
120
+ $statuses = Mage::getSingleton('nivobanner/status')->getOptionArray();
121
+
122
+ array_unshift($statuses, array('label' => '', 'value' => ''));
123
+ $this->getMassactionBlock()->addItem('status', array(
124
+ 'label' => Mage::helper('nivobanner')->__('Change status'),
125
+ 'url' => $this->getUrl('*/*/massStatus', array('_current' => true)),
126
+ 'additional' => array(
127
+ 'visibility' => array(
128
+ 'name' => 'status',
129
+ 'type' => 'select',
130
+ 'class' => 'required-entry',
131
+ 'label' => Mage::helper('nivobanner')->__('Status'),
132
+ 'values' => $statuses
133
+ )
134
+ )
135
+ ));
136
+ return $this;
137
+ }
138
+
139
+ public function getRowUrl($row) {
140
+ return $this->getUrl('*/*/edit', array('id' => $row->getId()));
141
+ }
142
+
143
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Adminhtml_Widget_Grid extends Mage_Adminhtml_Block_Widget_Grid {
10
+
11
+ public function addColumn($columnId, $column) {
12
+ if (is_array($column)) {
13
+ $this->_columns[$columnId] = $this->getLayout()->createBlock('nivobanner/adminhtml_widget_grid_column')
14
+ ->setData($column)
15
+ ->setGrid($this);
16
+ }
17
+ /* elseif ($column instanceof Varien_Object) {
18
+ $this->_columns[$columnId] = $column;
19
+ } */ else {
20
+ throw new Exception(Mage::helper('adminhtml')->__('Wrong column format'));
21
+ }
22
+
23
+ $this->_columns[$columnId]->setId($columnId);
24
+ $this->_lastColumnId = $columnId;
25
+ return $this;
26
+ }
27
+
28
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+
10
+ class Samsys_Nivobanner_Block_Adminhtml_Widget_Grid_Column extends Mage_Adminhtml_Block_Widget_Grid_Column {
11
+
12
+ protected function _getRendererByType() {
13
+ switch (strtolower($this->getType())) {
14
+ case 'nivobanner':
15
+ $rendererClass = 'nivobanner/adminhtml_widget_grid_column_renderer_banner';
16
+ break;
17
+ default:
18
+ $rendererClass = parent::_getRendererByType();
19
+ break;
20
+ }
21
+ return $rendererClass;
22
+ }
23
+
24
+ protected function _getFilterByType() {
25
+ switch (strtolower($this->getType())) {
26
+ case 'nivobanner':
27
+ $filterClass = 'nivobanner/adminhtml_widget_grid_column_filter_banner';
28
+ break;
29
+ default:
30
+ $filterClass = parent::_getFilterByType();
31
+ break;
32
+ }
33
+ return $filterClass;
34
+ }
35
+
36
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column/Filter/Banner.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+
10
+ class Samsys_Nivobanner_Block_Adminhtml_Widget_Grid_Column_Filter_Banner extends Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Text {
11
+
12
+ }
app/code/community/Samsys/Nivobanner/Block/Adminhtml/Widget/Grid/Column/Renderer/Banner.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+
10
+ class Samsys_Nivobanner_Block_Adminhtml_Widget_Grid_Column_Renderer_Banner extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
11
+
12
+ public function __construct() {
13
+
14
+ }
15
+
16
+ public function render(Varien_Object $row) {
17
+ return $this->_getValue($row);
18
+ }
19
+
20
+ protected function _getValue(Varien_Object $row) {
21
+ $dored = false;
22
+ $out = '';
23
+ if ($getter = $this->getColumn()->getGetter()) {
24
+ $val = $row->$getter();
25
+ }
26
+ $val = $row->getData($this->getColumn()->getIndex());
27
+ $url = Mage::helper('nivobanner')->getImageUrl($val);
28
+ $size = Mage::helper('nivobanner')->getImageThumbSize($val);
29
+ $file_extis = Mage::helper('nivobanner')->getFileExists($val);
30
+ $popLink = "popWin('$url','image','width=800,height=600,resizable=yes,scrollbars=yes')";
31
+ if (is_array($size) && $file_extis)
32
+ $out = '<a href="javascript:;" onclick="'.$popLink.'"><img src="'.$url.'" width="'.$size['width'].'" height="'.$size['height'].'" style="border: 2px solid #CCCCCC;"/></a>';
33
+ return $out;
34
+ }
35
+ }
app/code/community/Samsys/Nivobanner/Block/Nivobanner.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * sam-sys
4
+ * @category samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 Samsys Systems. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Block_Nivobanner extends Mage_Core_Block_Template {
10
+
11
+ public function _prepareLayout() {
12
+ return parent::_prepareLayout();
13
+ }
14
+
15
+ public function getBanner() {
16
+ if (!$this->hasData('nivobanner')) {
17
+ $this->setData('nivobanner', Mage::registry('nivobanner'));
18
+ }
19
+ return $this->getData('nivobanner');
20
+ }
21
+
22
+ public function getDataByGroupCode($groupCode){
23
+ return Mage::getModel('nivobanner/nivobannergroup')->getDataByGroupCode($groupCode);
24
+ }
25
+
26
+
27
+ public function getResizedUrl($imgUrl,$groupName,$x,$y=NULL){
28
+
29
+
30
+ $imgPath=$this->splitImageValue($imgUrl,"path");
31
+ $imgName=$this->splitImageValue($imgUrl,"name");
32
+
33
+
34
+
35
+ /**
36
+ * Path with Directory Seperator
37
+ */
38
+ $imgPath=str_replace("/",DS,$imgPath);
39
+
40
+
41
+ /**
42
+ * Absolute full path of Image
43
+ */
44
+ $imgPathFull=Mage::getBaseDir("media").DS.$imgPath.DS.$imgName;
45
+
46
+
47
+ /**
48
+ * If Y is not set set it to as X
49
+ */
50
+ $width=$x;
51
+ $y?$height=$y:$height=$x;
52
+
53
+
54
+ /**
55
+ * Resize folder is widthXheight
56
+ */
57
+ $resizeFolder= 'Nivo_'.$groupName;
58
+
59
+ /**
60
+ * Image resized path will then be
61
+ */
62
+ $imageResizedPath=Mage::getBaseDir("media").DS.$imgPath.DS.$resizeFolder.DS.$imgName;
63
+ if(file_exists($imageResizedPath))
64
+ {
65
+ list($width_img, $height_img) = getimagesize($imageResizedPath);
66
+ $pre_width = $width_img;
67
+ $pre_height = $height_img ;
68
+ }
69
+ else
70
+ {
71
+ $pre_width ='';
72
+ $pre_height = '';
73
+ }
74
+
75
+
76
+ /**
77
+ * First check in cache i.e image resized path
78
+ * If not in cache then create image of the width=X and height = Y
79
+ */
80
+ if(($pre_width!=$width)||($pre_height!=$height))
81
+ {
82
+
83
+ if (file_exists($imageResizedPath)&& file_exists($imgPathFull)) :
84
+
85
+ $imageObj = new Varien_Image($imgPathFull);
86
+ //$imageObj->backgroundColor(0xff, 0xf6, 0xc6);
87
+ $imageObj->constrainOnly(TRUE);
88
+ /*(Note: when keepAspectRatio(TRUE), height would be ignored)*/
89
+ $imageObj->keepAspectRatio(false);
90
+ $imageObj->resize($width,$height);
91
+ /*keepFrame(true) includes background color*/
92
+ $imageObj->keepFrame(false);
93
+
94
+ $imageObj->save($imageResizedPath);
95
+
96
+ elseif(!file_exists($imageResizedPath)&& file_exists($imgPathFull)):
97
+
98
+ $imageObj = new Varien_Image($imgPathFull);
99
+ //$imageObj->backgroundColor(0xff, 0xf6, 0xc6);
100
+ $imageObj->constrainOnly(TRUE);
101
+ /*(Note: when keepAspectRatio(TRUE), height would be ignored)*/
102
+ $imageObj->keepAspectRatio(false);
103
+ $imageObj->resize($width,$height);
104
+ /*keepFrame(true) includes background color*/
105
+ $imageObj->keepFrame(false);
106
+
107
+ $imageObj->save($imageResizedPath);
108
+
109
+ endif;
110
+ }
111
+
112
+ /**
113
+ * Else image is in cache replace the Image Path with / for http path.
114
+ */
115
+ $imgUrl=str_replace(DS,"/",$imgPath);
116
+
117
+ /**
118
+ * Return full http path of the image
119
+ */
120
+ return Mage::getBaseUrl("media").$imgUrl."/".$resizeFolder."/".$imgName;
121
+ }
122
+
123
+ /**
124
+ * get original image name and path and
125
+ * Splits images Path and Name
126
+ *
127
+ * Path=custom/module/images/
128
+ * Name=example.jpg
129
+ *
130
+ * @param string $imageValue
131
+ * @param string $attr
132
+ * @return string
133
+ */
134
+ public function splitImageValue($imageValue,$attr="name"){
135
+
136
+ $imArray=explode("/",$imageValue);
137
+
138
+ $name=$imArray[count($imArray)-1];
139
+ $path=implode("/",array_diff($imArray,array($name)));
140
+ if($attr=="path"){
141
+ return $path;
142
+ }
143
+ else
144
+ return $name;
145
+
146
+ }
147
+
148
+
149
+ /**
150
+ *custom resize function
151
+ *to enable call this function in nivobanner.phtml file
152
+ */
153
+ public function getResizeImage($bannerPath, $groupName, $w = 0, $h = 0) {
154
+ $name = '';
155
+ $_helper = Mage::helper('nivobanner');
156
+ $bannerDirPath = $_helper->updateDirSepereator($bannerPath);
157
+ $baseDir = Mage::getBaseDir();
158
+ $mediaDir = Mage::getBaseDir('media');
159
+ $mediaUrl = Mage::getBaseUrl('media');
160
+ $resizeDir = $mediaDir . DS . 'nivo' . DS . 'banner' . DS . 'thumb' . DS;
161
+ $resizeUrl = $mediaUrl.'nivo/banner/thumb/';
162
+ $imageName = basename($bannerDirPath);
163
+
164
+ if (@file_exists($mediaDir . DS . $bannerDirPath)) {
165
+ $name = $mediaDir . DS . $bannerPath;
166
+ $this->checkDir($resizeDir . $groupName);
167
+ $smallImgPath = $resizeDir . $groupName . DS . $imageName;
168
+ $smallImg = $resizeUrl . $groupName .'/'. $imageName;
169
+ }
170
+
171
+ if ($name != '') {
172
+ $resizeObject = Mage::getModel('nivobanner/nivobannerresize');
173
+ $resizeObject->setImage($name);
174
+ if ($resizeObject->resizeLimitwh($w, $h, $smallImgPath) === false) {
175
+ return $resizeObject->error();
176
+ } else {
177
+ return 'media/nivo/banner/thumb/'.$groupName.'/'.$imageName;
178
+ }
179
+ } else {
180
+ return '';
181
+ }
182
+ }
183
+
184
+ protected function checkDir($directory) {
185
+
186
+ if (!is_dir($directory)) {
187
+ umask(0);
188
+ mkdir($directory, 0777,true);
189
+ return true;
190
+ }
191
+ }
192
+ }
app/code/community/Samsys/Nivobanner/Helper/Data.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Samsys_Nivobanner_Helper_Data extends Mage_Core_Helper_Abstract {
3
+
4
+ protected static $egridImgDir = null;
5
+ protected static $egridImgURL = null;
6
+ protected static $egridImgThumb = null;
7
+ protected static $egridImgThumbWidth = null;
8
+ protected $_allowedExtensions = Array();
9
+
10
+ public function __construct() {
11
+ self::$egridImgDir = Mage::getBaseDir('media') . DS;
12
+ self::$egridImgURL = Mage::getBaseUrl('media');
13
+ self::$egridImgThumb = "thumb/";
14
+ self::$egridImgThumbWidth = 100;
15
+ }
16
+
17
+ public function getImageUrl($image_file) {
18
+ $url = false;
19
+ if (file_exists(self::$egridImgDir . self::$egridImgThumb . $this->updateDirSepereator($image_file)))
20
+ $url = self::$egridImgURL . self::$egridImgThumb . $image_file;
21
+ else
22
+ $url = self::$egridImgURL . $image_file;
23
+ return $url;
24
+ }
25
+
26
+ public function updateDirSepereator($path){
27
+ return str_replace('\\', DS, $path);
28
+ }
29
+
30
+ public function getFileExists($image_file) {
31
+ $file_exists = false;
32
+ $file_exists = file_exists(self::$egridImgDir . $this->updateDirSepereator($image_file));
33
+ return $file_exists;
34
+ }
35
+
36
+ public function getImageThumbSize($image_file) {
37
+ $img_file = $this->updateDirSepereator(self::$egridImgDir . $image_file);
38
+ if ($image_file == '' || !file_exists($img_file))
39
+ return false;
40
+ list($width, $height, $type, $attr) = getimagesize($img_file);
41
+ $a_height = (int) ((self::$egridImgThumbWidth / $width) * $height);
42
+ return Array('width' => self::$egridImgThumbWidth, 'height' => $a_height);
43
+ }
44
+
45
+ function deleteFiles($image_file) {
46
+ $pass = true;
47
+ if (!unlink(self::$egridImgDir . $image_file))
48
+ $pass = false;
49
+ if (!unlink(self::$egridImgDir . self::$egridImgThumb . $image_file))
50
+ $pass = false;
51
+ return $pass;
52
+ }
53
+
54
+ public function getBannerUrl(){
55
+ return $this->_getUrl('nivobanner');
56
+ }
57
+
58
+
59
+ }
app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobanner.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Samsys_Nivobanner_Model_Mysql4_Nivobanner extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the banner_id refers to the key field in your database table.
8
+ $this->_init('nivobanner/nivobanner', 'banner_id');
9
+ }
10
+ }
app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobanner/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Samsys_Nivobanner_Model_Mysql4_Nivobanner_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
4
+
5
+ public function _construct() {
6
+ parent::_construct();
7
+ $this->_init('nivobanner/nivobanner');
8
+ }
9
+
10
+ }
app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobannergroup.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Model_Mysql4_Nivobannergroup extends Mage_Core_Model_Mysql4_Abstract {
10
+
11
+ public function _construct() {
12
+ $this->_init('nivobanner/nivobannergroup', 'group_id');
13
+ }
14
+
15
+ public function _beforeSave(Mage_Core_Model_Abstract $object) {
16
+ $isDataValid = true;
17
+ $id = $object->getId();
18
+ $groupCode = $object->getGroupCode();
19
+ $groupCollection = Mage::getModel('nivobanner/nivobannergroup')->getCollection();
20
+ if ($id == '' || $id == 0) {
21
+ if ($groupCode == '') {
22
+ throw new Exception('Banner Group code can\'t be blank !!');
23
+ } else {
24
+ $groupInfo = $groupCollection->getDuplicateGroupCode($groupCode);
25
+ if ($groupInfo->count() > 0) {
26
+ $isDataValid = false;
27
+ }
28
+ if ($isDataValid === false) {
29
+ throw new Exception("Banner Group Code already exists !!");
30
+ }
31
+ }
32
+ }
33
+ }
34
+
35
+ }
app/code/community/Samsys/Nivobanner/Model/Mysql4/Nivobannergroup/Collection.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Model_Mysql4_Nivobannergroup_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
10
+
11
+ public function _construct() {
12
+ parent::_construct();
13
+ $this->_init('nivobanner/nivobannergroup');
14
+ }
15
+
16
+ public function getDuplicateGroupCode($groupCode) {
17
+ $this->setConnection($this->getResource()->getReadConnection());
18
+ $table = $this->getTable('nivobanner/nivobannergroup');
19
+ $select = $this->getSelect();
20
+ $select->from(array('main_table' => $table), 'group_id')
21
+ ->where('group_code = ?', $groupCode);
22
+ return $this;
23
+ }
24
+ }
app/code/community/Samsys/Nivobanner/Model/Nivobanner.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Model_Nivobanner extends Mage_Core_Model_Abstract {
10
+
11
+ public function _construct() {
12
+ parent::_construct();
13
+ $this->_init('nivobanner/nivobanner');
14
+ }
15
+
16
+ public function getAllAvailBannerIds(){
17
+ $collection = Mage::getResourceModel('nivobanner/nivobanner_collection')
18
+ ->getAllIds();
19
+ return $collection;
20
+ }
21
+
22
+ public function getAllBanners() {
23
+ $collection = Mage::getResourceModel('nivobanner/nivobanner_collection');
24
+ $collection->getSelect()->where('status = ?', 1);
25
+ $data = array();
26
+ foreach ($collection as $record) {
27
+ $data[$record->getId()] = array('value' => $record->getId(), 'label' => $record->getfilename());
28
+ }
29
+ return $data;
30
+ }
31
+
32
+ public function getDataByBannerIds($bannerIds) {
33
+ $data = array();
34
+ if ($bannerIds != '') {
35
+ $collection = Mage::getResourceModel('nivobanner/nivobanner_collection');
36
+ $collection->getSelect()->where('banner_id IN (' . $bannerIds . ')')->order('sort_order');
37
+ foreach ($collection as $record) {
38
+ $status = $record->getStatus();
39
+ if ($status == 1) {
40
+ $data[] = $record;
41
+ }
42
+ }
43
+ }
44
+ return $data;
45
+ }
46
+
47
+ }
app/code/community/Samsys/Nivobanner/Model/Nivobannergroup.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Model_Nivobannergroup extends Mage_Core_Model_Abstract {
10
+
11
+ public function _construct() {
12
+ parent::_construct();
13
+ $this->_init('nivobanner/nivobannergroup');
14
+ }
15
+
16
+ public function getDataByGroupCode($groupCode) {
17
+
18
+ $groupData = array();
19
+ $bannerData = array();
20
+ $result = array('group_data'=>$groupData,'banner_data'=>$bannerData);
21
+ $collection = Mage::getResourceModel('nivobanner/nivobannergroup_collection');
22
+ $collection->getSelect()->where('group_code = ?', $groupCode)->where('status = 1');
23
+ foreach ($collection as $record) {
24
+ $bannerIds = $record->getBannerIds();
25
+ $bannerModel = Mage::getModel('nivobanner/nivobanner');
26
+ $bannerData = $bannerModel->getDataByBannerIds($bannerIds);
27
+ $result = array('group_data' => $record, 'banner_data' => $bannerData);
28
+ }
29
+ return $result;
30
+ }
31
+
32
+ }
app/code/community/Samsys/Nivobanner/Model/Status.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Model_Status extends Varien_Object {
10
+ const STATUS_ENABLED = 1;
11
+ const STATUS_DISABLED = 2;
12
+
13
+ static public function getOptionArray() {
14
+ return array(
15
+ self::STATUS_ENABLED => Mage::helper('nivobanner')->__('Enabled'),
16
+ self::STATUS_DISABLED => Mage::helper('nivobanner')->__('Disabled')
17
+ );
18
+ }
19
+
20
+ static public function getAnimationArray() {
21
+ $animations = array();
22
+ $animations = array(
23
+ array(
24
+ 'value' => 'random',
25
+ 'label' => Mage::helper('nivobanner')->__('Random'),
26
+ ),
27
+ array(
28
+ 'value' => 'sliceDown',
29
+ 'label' => Mage::helper('nivobanner')->__('Slice Down'),
30
+ ),
31
+
32
+ array(
33
+ 'value' => 'sliceDownLeft',
34
+ 'label' => Mage::helper('nivobanner')->__('slice Down Left'),
35
+ ),
36
+ array(
37
+ 'value' => 'sliceUp',
38
+ 'label' => Mage::helper('nivobanner')->__('Slice Up'),
39
+ ),
40
+ array(
41
+ 'value' => 'sliceUpLeft',
42
+ 'label' => Mage::helper('nivobanner')->__('Slice Up Left'),
43
+ ),
44
+ array(
45
+ 'value' => 'sliceUpDown',
46
+ 'label' => Mage::helper('nivobanner')->__('Slice Up Down'),
47
+ ),
48
+ array(
49
+ 'value' => 'sliceUpDownLeft',
50
+ 'label' => Mage::helper('nivobanner')->__('Slice UpDown Left'),
51
+ ),
52
+ array(
53
+ 'value' => 'fold',
54
+ 'label' => Mage::helper('nivobanner')->__('Fold'),
55
+ ),
56
+
57
+ array(
58
+ 'value' => 'fade',
59
+ 'label' => Mage::helper('nivobanner')->__('fade'),
60
+ ),
61
+ array(
62
+ 'value' => 'slideInRight',
63
+ 'label' => Mage::helper('nivobanner')->__('SlideIn Right'),
64
+ ),
65
+ array(
66
+ 'value' => 'slideInLeft',
67
+ 'label' => Mage::helper('nivobanner')->__('SlideIn Left'),
68
+ ),
69
+ array(
70
+ 'value' => 'boxRandom',
71
+ 'label' => Mage::helper('nivobanner')->__('Box Random'),
72
+ ),
73
+ array(
74
+ 'value' => 'boxRain',
75
+ 'label' => Mage::helper('nivobanner')->__('Box Rain'),
76
+ ),
77
+ array(
78
+ 'value' => 'boxRainReverse',
79
+ 'label' => Mage::helper('nivobanner')->__('BoxRain Reverse'),
80
+ ),
81
+ array(
82
+ 'value' => 'boxRainGrow',
83
+ 'label' => Mage::helper('nivobanner')->__('BoxRain Grow'),
84
+ ),
85
+ array(
86
+ 'value' => 'boxRainGrowReverse',
87
+ 'label' => Mage::helper('nivobanner')->__('BoxRain GrowReverse'),
88
+ ),
89
+ );
90
+ array_unshift($animations, array('label' => '--Select--', 'value' => ''));
91
+ return $animations;
92
+ }
93
+
94
+
95
+
96
+ }
app/code/community/Samsys/Nivobanner/Model/Wysiwyg/Config.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+
10
+ class Samsys_Nivobanner_Model_Wysiwyg_Config extends Mage_Cms_Model_Wysiwyg_Config
11
+ {
12
+ public function getConfig($data = array())
13
+ {
14
+ $config = new Varien_Object();
15
+
16
+ $config->setData(array(
17
+ 'enabled' => $this->isEnabled(),
18
+ 'hidden' => $this->isHidden(),
19
+ 'use_container' => false,
20
+ 'add_variables' => false,
21
+ 'add_widgets' => false,
22
+ 'no_display' => false,
23
+ 'translator' => Mage::helper('nivobanner'),
24
+ 'files_browser_window_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg_images/index'),
25
+ 'files_browser_window_width' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_width'),
26
+ 'files_browser_window_height' => (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_height'),
27
+ 'encode_directives' => true,
28
+ 'directives_url' => Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg/directive'),
29
+ 'popup_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/dialog.css',
30
+ 'content_css' => Mage::getBaseUrl('js').'mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/content.css',
31
+ 'width' => '100%',
32
+ 'plugins' => array()
33
+ ));
34
+
35
+ $config->setData('directives_url_quoted', preg_quote($config->getData('directives_url')));
36
+
37
+ if (is_array($data)) {
38
+ $config->addData($data);
39
+ }
40
+
41
+ Mage::dispatchEvent('cms_wysiwyg_config_prepare', array('config' => $config));
42
+
43
+ return $config;
44
+ }
45
+ }
app/code/community/Samsys/Nivobanner/controllers/Adminhtml/NivobannerController.php ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Adminhtml_NivobannerController extends Mage_Adminhtml_Controller_Action {
10
+
11
+ protected function _initAction() {
12
+ $this->loadLayout()
13
+ /*set menu to active*/
14
+ ->_setActiveMenu('nivobanner/items')
15
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
16
+
17
+ return $this;
18
+ }
19
+
20
+ public function indexAction() {
21
+ $this->_title($this->__('Nivo-Gallery Manager'));
22
+ $this->_initAction();
23
+
24
+ /*below line can also be used to render the admin layout*/
25
+ // $this->_addContent($this->getLayout()->createBlock('nivobanner/adminhtml_nivobanner'));
26
+ $this->renderLayout();
27
+ }
28
+
29
+ public function editAction() {
30
+ $id = $this->getRequest()->getParam('id');
31
+ $model = Mage::getModel('nivobanner/nivobanner')->load($id);
32
+
33
+ if ($model->getId() || $id == 0) {
34
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
35
+ if (!empty($data)) {
36
+ $model->setData($data);
37
+ }
38
+
39
+ Mage::register('nivobanner_data', $model);
40
+
41
+ $this->loadLayout();
42
+ $this->_setActiveMenu('nivobanner/items');
43
+
44
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
45
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
46
+
47
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
48
+
49
+ $this->_addContent($this->getLayout()->createBlock('nivobanner/adminhtml_nivobanner_edit'))
50
+ ->_addLeft($this->getLayout()->createBlock('nivobanner/adminhtml_nivobanner_edit_tabs'));
51
+ $version = substr(Mage::getVersion(), 0, 3);
52
+
53
+ /*load wysiwyg editor path= model->wysiwyg->config.php*/
54
+ if (in_array($version, array('1.4','1.5','1.6','1.7')) && Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) {
55
+ $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true);
56
+ }
57
+ $this->renderLayout();
58
+ } else {
59
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('nivobanner')->__('Item does not exist'));
60
+ $this->_redirect('*/*/');
61
+ }
62
+ }
63
+
64
+ public function newAction() {
65
+ $this->_forward('edit');
66
+ }
67
+
68
+ public function saveAction() {
69
+ $imagedata = array();
70
+ if (!empty($_FILES['filename']['name'])) {
71
+ try {
72
+
73
+ $ext = substr($_FILES['filename']['name'], strrpos($_FILES['filename']['name'], '.') + 1);
74
+ $fname = 'File-' . time() . '.' . $ext;
75
+ $uploader = new Varien_File_Uploader('filename');
76
+ $uploader->setAllowedExtensions(array('jpg', 'jpeg', 'gif', 'png')); // or pdf or anything
77
+
78
+ $uploader->setAllowRenameFiles(true);
79
+ $uploader->setFilesDispersion(false);
80
+
81
+ $path = Mage::getBaseDir('media').DS.'nivo'.DS.'banner';
82
+
83
+ $uploader->save($path, $fname);
84
+
85
+ $imagedata['filename'] = 'nivo/banner/'.$fname;
86
+
87
+ $data = $this->getRequest()->getPost();
88
+
89
+
90
+ if (isset($data['filename']['delete']) && $data['filename']['delete'] == 1) {
91
+
92
+ $model = Mage::getModel('nivobanner/nivobanner')->load($this->getRequest()->getParam('id'));
93
+ $_helper = Mage::helper('nivobanner');
94
+ $filePath = Mage::getBaseDir('media').DS.$_helper->updateDirSepereator($model->getFilename());
95
+ $this->removeFile($filePath);
96
+
97
+
98
+ }
99
+
100
+ } catch (Exception $e) {
101
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
102
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
103
+ return;
104
+ }
105
+ }
106
+ if ($data = $this->getRequest()->getPost()) {
107
+ if (!empty($imagedata['filename'])) {
108
+ $data['filename'] = $imagedata['filename'];
109
+ } else {
110
+ if (isset($data['filename']['delete']) && $data['filename']['delete'] == 1) {
111
+ if ($data['filename']['value'] != '') {
112
+ $_helper = Mage::helper('nivobanner');
113
+ $this->removeFile(Mage::getBaseDir('media').DS.$_helper->updateDirSepereator($data['filename']['value']));
114
+ }
115
+ $data['filename'] = '';
116
+ } else {
117
+ unset($data['filename']);
118
+ }
119
+ }
120
+ $model = Mage::getModel('nivobanner/nivobanner');
121
+ $model->setData($data)
122
+ ->setId($this->getRequest()->getParam('id'));
123
+
124
+ try {
125
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
126
+ $model->setCreatedTime(now())
127
+ ->setUpdateTime(now());
128
+ } else {
129
+ $model->setUpdateTime(now());
130
+ }
131
+
132
+ $model->save();
133
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('nivobanner')->__('Item was successfully saved'));
134
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
135
+
136
+ if ($this->getRequest()->getParam('back')) {
137
+ $this->_redirect('*/*/edit', array('id' => $model->getId()));
138
+ return;
139
+ }
140
+ $this->_redirect('*/*/');
141
+ return;
142
+ } catch (Exception $e) {
143
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
144
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
145
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
146
+ return;
147
+ }
148
+ }
149
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('nivobanner')->__('Unable to find item to save'));
150
+ $this->_redirect('*/*/');
151
+ }
152
+
153
+ public function deleteAction() {
154
+ if ($this->getRequest()->getParam('id') > 0) {
155
+ try {
156
+ $model = Mage::getModel('nivobanner/nivobanner')->load($this->getRequest()->getParam('id'));
157
+ $_helper = Mage::helper('nivobanner');
158
+ $filePath = Mage::getBaseDir('media').DS.$_helper->updateDirSepereator($model->getFilename());
159
+ $model->delete();
160
+ $this->removeFile($filePath);
161
+
162
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
163
+ $this->_redirect('*/*/');
164
+ } catch (Exception $e) {
165
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
166
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
167
+ }
168
+ }
169
+ $this->_redirect('*/*/');
170
+ }
171
+
172
+ public function massDeleteAction() {
173
+ $bannerIds = $this->getRequest()->getParam('banner');
174
+ if (!is_array($bannerIds)) {
175
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
176
+ } else {
177
+ try {
178
+ foreach ($bannerIds as $bannerId) {
179
+ $model = Mage::getModel('nivobanner/nivobanner')->load($bannerId);
180
+ $_helper = Mage::helper('nivobanner');
181
+ $filePath = Mage::getBaseDir('media').DS.$_helper->updateDirSepereator($model->getFilename());
182
+ $model->delete();
183
+ $this->removeFile($filePath);
184
+ }
185
+ Mage::getSingleton('adminhtml/session')->addSuccess(
186
+ Mage::helper('adminhtml')->__(
187
+ 'Total of %d record(s) were successfully deleted', count($bannerIds)
188
+ )
189
+ );
190
+ } catch (Exception $e) {
191
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
192
+ }
193
+ }
194
+ $this->_redirect('*/*/index');
195
+ }
196
+
197
+ public function massStatusAction() {
198
+ $bannerIds = $this->getRequest()->getParam('banner');
199
+ if (!is_array($bannerIds)) {
200
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
201
+ } else {
202
+ try {
203
+ foreach ($bannerIds as $bannerId) {
204
+ $banner = Mage::getSingleton('nivobanner/nivobanner')
205
+ ->load($bannerId)
206
+ ->setStatus($this->getRequest()->getParam('status'))
207
+ ->setIsMassupdate(true)
208
+ ->save();
209
+ }
210
+ $this->_getSession()->addSuccess(
211
+ $this->__('Total of %d record(s) were successfully updated', count($bannerIds))
212
+ );
213
+ } catch (Exception $e) {
214
+ $this->_getSession()->addError($e->getMessage());
215
+ }
216
+ }
217
+ $this->_redirect('*/*/index');
218
+ }
219
+
220
+
221
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') {
222
+ $response = $this->getResponse();
223
+ $response->setHeader('HTTP/1.1 200 OK', '');
224
+ $response->setHeader('Pragma', 'public', true);
225
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
226
+ $response->setHeader('Content-Disposition', 'attachment; filename=' . $fileName);
227
+ $response->setHeader('Last-Modified', date('r'));
228
+ $response->setHeader('Accept-Ranges', 'bytes');
229
+ $response->setHeader('Content-Length', strlen($content));
230
+ $response->setHeader('Content-type', $contentType);
231
+ $response->setBody($content);
232
+ $response->sendResponse();
233
+ die;
234
+ }
235
+
236
+ protected function removeFile($file) {
237
+ try {
238
+ $io = new Varien_Io_File();
239
+ if(!is_dir($file) && file_exists($file)){
240
+ $result = $io->rmdir($file, true);
241
+ }
242
+ } catch (Exception $e) {
243
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Cannot Delete File. Please Delete It Manually)'));
244
+ }
245
+ }
246
+
247
+ }
app/code/community/Samsys/Nivobanner/controllers/Adminhtml/NivobannergroupController.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sam-Sys
4
+ * @category Samsys
5
+ * @package Samsys_Nivobanner
6
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ class Samsys_Nivobanner_Adminhtml_NivobannergroupController extends Mage_Adminhtml_Controller_Action {
10
+
11
+ protected function _initAction() {
12
+ $this->loadLayout()
13
+ ->_setActiveMenu('nivobanner/items')
14
+ ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
15
+ $id = $this->getRequest()->getParam('id');
16
+
17
+ /*load our model file*/
18
+ $model = Mage::getModel('nivobanner/nivobannergroup')->load($id);
19
+ if ($model->getId() || $id == 0) {
20
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
21
+ if (!empty($data)) {
22
+ $model->setData($data);
23
+ }
24
+ }
25
+ Mage::register('nivobannergroup_data', $model);
26
+ return $this;
27
+ }
28
+
29
+ public function indexAction() {
30
+ $this->_title($this->__('Nivo-Gallery Manager'));
31
+ $this->_initAction()
32
+ ->renderLayout();
33
+ }
34
+
35
+ public function nivobannergridAction() {
36
+ $this->_initAction();
37
+ $this->getResponse()->setBody(
38
+ $this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit_tab_banner')->toHtml()
39
+ );
40
+ }
41
+
42
+ public function editAction() {
43
+ $id = $this->getRequest()->getParam('id');
44
+ $model = Mage::getModel('nivobanner/nivobannergroup')->load($id);
45
+
46
+ if ($model->getId() || $id == 0) {
47
+ $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
48
+ if (!empty($data)) {
49
+ $model->setData($data);
50
+ }
51
+ Mage::register('nivobannergroup_data', $model);
52
+
53
+ $this->loadLayout();
54
+ $this->_setActiveMenu('nivobanner/items');
55
+
56
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
57
+ $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));
58
+
59
+ $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
60
+
61
+ $this->_addContent($this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit'))
62
+ ->_addLeft($this->getLayout()->createBlock('nivobanner/adminhtml_nivobannergroup_edit_tabs'));
63
+
64
+ $this->renderLayout();
65
+ } else {
66
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('nivobanner')->__('Item does not exist'));
67
+ $this->_redirect('*/*/');
68
+ }
69
+ }
70
+
71
+ public function newAction() {
72
+ $this->_forward('edit');
73
+ }
74
+
75
+ public function saveAction() {
76
+ if ($data = $this->getRequest()->getPost()) {
77
+ $banners = array();
78
+ $availBannerIds = Mage::getModel('nivobanner/nivobanner')->getAllAvailBannerIds();
79
+ parse_str($data['nivobannergroup_banners'], $banners);
80
+ foreach ($banners as $k => $v) {
81
+ if (preg_match('/[^0-9]+/', $k) || preg_match('/[^0-9]+/', $v)) {
82
+ unset($banners[$k]);
83
+ }
84
+ }
85
+ $bannerIds = array_intersect($availBannerIds, $banners);
86
+ $data['banner_ids'] = implode(',', $bannerIds);
87
+ /* $data['banner_effects'] = (($data['animation_type'] == 0) ? '' : $data['banner_effects']);
88
+ $data['pre_banner_effects'] = (($data['animation_type'] == 0) ? $data['pre_banner_effects'] : '');*/
89
+ $model = Mage::getModel('nivobanner/nivobannergroup');
90
+ $model->setData($data)
91
+ ->setId($this->getRequest()->getParam('id'));
92
+
93
+ try {
94
+ if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
95
+ $model->setCreatedTime(now())
96
+ ->setUpdateTime(now());
97
+ } else {
98
+ $model->setUpdateTime(now());
99
+ }
100
+
101
+ $model->save();
102
+
103
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('nivobanner')->__('Item was successfully saved'));
104
+ Mage::getSingleton('adminhtml/session')->setFormData(false);
105
+
106
+ if ($this->getRequest()->getParam('back')) {
107
+ $this->_redirect('*/*/edit', array('id' => $model->getId()));
108
+ return;
109
+ }
110
+ $this->_redirect('*/*/');
111
+ return;
112
+ } catch (Exception $e) {
113
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
114
+ Mage::getSingleton('adminhtml/session')->setFormData($data);
115
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
116
+ return;
117
+ }
118
+ }
119
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('nivobanner')->__('Unable to find item to save'));
120
+ $this->_redirect('*/*/');
121
+ }
122
+
123
+ public function deleteAction() {
124
+ if ($this->getRequest()->getParam('id') > 0) {
125
+ try {
126
+ $model = Mage::getModel('nivobanner/nivobannergroup')->load($this->getRequest()->getParam('id'));
127
+ //$filePath = Mage::getBaseDir('media') . DS . 'nivo' . DS . 'banner' . DS . 'thumb' . DS . $model->getGroupCode();
128
+ $filePath = Mage::getBaseDir('media') . DS . 'nivo' . DS . 'banner' . DS . 'Nivo_' . $model->getGroupCode();
129
+ $model->delete();
130
+ $this->removeFile($filePath);
131
+
132
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
133
+ $this->_redirect('*/*/');
134
+ } catch (Exception $e) {
135
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
136
+ $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
137
+ }
138
+ }
139
+ $this->_redirect('*/*/');
140
+ }
141
+
142
+ public function massDeleteAction() {
143
+ $bannerIds = $this->getRequest()->getParam('banner');
144
+ if (!is_array($bannerIds)) {
145
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
146
+ } else {
147
+ try {
148
+ foreach ($bannerIds as $bannerId) {
149
+ $banner = Mage::getModel('nivobanner/nivobannergroup')->load($bannerId);
150
+ //$filePath = Mage::getBaseDir('media') . DS . 'nivo' . DS . 'banner' . DS . 'thumb' . DS . $banner->getGroupCode();
151
+ $filePath = Mage::getBaseDir('media') . DS . 'nivo' . DS . 'banner' . DS . 'Nivo_' . $banner->getGroupCode();
152
+ $banner->delete();
153
+ $this->removeFile($filePath);
154
+ }
155
+ Mage::getSingleton('adminhtml/session')->addSuccess(
156
+ Mage::helper('adminhtml')->__(
157
+ 'Total of %d record(s) were successfully deleted', count($bannerIds)
158
+ )
159
+ );
160
+ } catch (Exception $e) {
161
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
162
+ }
163
+ }
164
+ $this->_redirect('*/*/index');
165
+ }
166
+
167
+ public function massStatusAction() {
168
+ $bannerIds = $this->getRequest()->getParam('banner');
169
+ if (!is_array($bannerIds)) {
170
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
171
+ } else {
172
+ try {
173
+ foreach ($bannerIds as $bannerId) {
174
+ $banner = Mage::getSingleton('nivobanner/nivobannergroup')
175
+ ->load($bannerId)
176
+ ->setStatus($this->getRequest()->getParam('status'))
177
+ ->setIsMassupdate(true)
178
+ ->save();
179
+ }
180
+ $this->_getSession()->addSuccess(
181
+ $this->__('Total of %d record(s) were successfully updated', count($bannerIds))
182
+ );
183
+ } catch (Exception $e) {
184
+ $this->_getSession()->addError($e->getMessage());
185
+ }
186
+ }
187
+ $this->_redirect('*/*/index');
188
+ }
189
+
190
+
191
+ protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream') {
192
+ $response = $this->getResponse();
193
+ $response->setHeader('HTTP/1.1 200 OK', '');
194
+ $response->setHeader('Pragma', 'public', true);
195
+ $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
196
+ $response->setHeader('Content-Disposition', 'attachment; filename=' . $fileName);
197
+ $response->setHeader('Last-Modified', date('r'));
198
+ $response->setHeader('Accept-Ranges', 'bytes');
199
+ $response->setHeader('Content-Length', strlen($content));
200
+ $response->setHeader('Content-type', $contentType);
201
+ $response->setBody($content);
202
+ $response->sendResponse();
203
+ die;
204
+ }
205
+
206
+ protected function removeFile($file) {
207
+ try {
208
+ $io = new Varien_Io_File();
209
+ if(is_dir($file) && file_exists($file)){
210
+ $result = $io->rmdir($file, true);
211
+ }
212
+
213
+ } catch (Exception $e) {
214
+ Mage::getSingleton('adminhtml/session')->addError($this->__('Cannot Delete Directory. Please Delete It Manually)'));
215
+ }
216
+ }
217
+
218
+ }
app/code/community/Samsys/Nivobanner/controllers/IndexController.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Samsys_Nivobanner_IndexController extends Mage_Core_Controller_Front_Action {
3
+
4
+ public function indexAction() {
5
+ $this->loadLayout();
6
+ $this->renderLayout();
7
+ }
8
+
9
+ }
app/code/community/Samsys/Nivobanner/etc/config.xml ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <!--initialize the version for the module-->
4
+ <modules>
5
+ <Samsys_Nivobanner>
6
+ <version>1.0</version>
7
+ </Samsys_Nivobanner>
8
+ </modules>
9
+ <!--define the frontend module router and class name-->
10
+ <frontend>
11
+ <routers>
12
+ <nivobanner>
13
+ <use>standard</use>
14
+ <args>
15
+ <module>Samsys_Nivobanner</module>
16
+ <frontName>nivobanner</frontName>
17
+ </args>
18
+ </nivobanner>
19
+ </routers>
20
+ <!--define the layout file to use in frontend-->
21
+ <layout>
22
+ <updates>
23
+ <nivobanner>
24
+ <file>nivobanner.xml</file>
25
+ </nivobanner>
26
+ </updates>
27
+ </layout>
28
+ </frontend>
29
+ <!--define admin end module router and class name-->
30
+ <admin>
31
+ <routers>
32
+ <nivobanner>
33
+ <use>admin</use>
34
+ <args>
35
+ <module>Samsys_Nivobanner</module>
36
+ <frontName>nivobanner</frontName>
37
+ </args>
38
+ </nivobanner>
39
+ </routers>
40
+ </admin>
41
+ <!--define admin end module links and urls-->
42
+ <adminhtml>
43
+ <!--define menu links and name-->
44
+ <menu>
45
+ <nivobanner module="nivobanner">
46
+ <title>Nivobanner</title>
47
+ <sort_order>75</sort_order>
48
+ <!--define the submenu links and name-->
49
+ <children>
50
+ <nivobanner module="nivobanner">
51
+ <title>Manage Banners</title>
52
+ <sort_order>0</sort_order>
53
+ <action>nivobanner/adminhtml_nivobanner</action>
54
+ </nivobanner>
55
+ <nivobannergroup module="nivobanner">
56
+ <title>Manage Banner Group</title>
57
+ <sort_order>1</sort_order>
58
+ <action>nivobanner/adminhtml_nivobannergroup</action>
59
+ </nivobannergroup>
60
+ </children>
61
+ </nivobanner>
62
+ </menu>
63
+ <!--after creating menu's, allow the menu access permisssion-->
64
+ <acl>
65
+ <resources>
66
+ <all>
67
+ <title>Allow Everything</title>
68
+ </all>
69
+ <admin>
70
+ <children>
71
+ <nivobanner>
72
+ <title>Nivobanner Module</title>
73
+ <sort_order>12</sort_order>
74
+ <children>
75
+ <nivobanner>
76
+ <title>Manage Banners</title>
77
+ </nivobanner>
78
+ <nivobannergroup>
79
+ <title>Manage Banner Groups</title>
80
+ </nivobannergroup>
81
+ </children>
82
+ </nivobanner>
83
+ </children>
84
+ </admin>
85
+ </resources>
86
+ </acl>
87
+ <!--include your admin layout file-->
88
+ <layout>
89
+ <updates>
90
+ <nivobanner>
91
+ <file>nivobanner.xml</file>
92
+ </nivobanner>
93
+ </updates>
94
+ </layout>
95
+ <!--initiate the translation file-->
96
+ <translate>
97
+ <modules>
98
+ <Samsys_Nivobanner>
99
+ <files>
100
+ <default>nivobanner.csv</default>
101
+ </files>
102
+ </Samsys_Nivobanner>
103
+ </modules>
104
+ </translate>
105
+ </adminhtml>
106
+ <!--define the global parameters such as helper file, model, block-->
107
+ <global>
108
+ <models>
109
+ <nivobanner>
110
+ <class>Samsys_Nivobanner_Model</class>
111
+ <resourceModel>nivobanner_mysql4</resourceModel>
112
+ </nivobanner>
113
+ <nivobanner_mysql4>
114
+ <class>Samsys_Nivobanner_Model_Mysql4</class>
115
+ <entities>
116
+ <nivobanner>
117
+ <table>nivobanner</table>
118
+ </nivobanner>
119
+ <nivobannergroup>
120
+ <table>nivobannergroup</table>
121
+ </nivobannergroup>
122
+ </entities>
123
+ </nivobanner_mysql4>
124
+ </models>
125
+ <resources>
126
+ <nivobanner_setup>
127
+ <setup>
128
+ <module>Samsys_Nivobanner</module>
129
+ </setup>
130
+ <connection>
131
+ <use>core_setup</use>
132
+ </connection>
133
+ </nivobanner_setup>
134
+ <nivobanner_write>
135
+ <connection>
136
+ <use>core_write</use>
137
+ </connection>
138
+ </nivobanner_write>
139
+ <nivobanner_read>
140
+ <connection>
141
+ <use>core_read</use>
142
+ </connection>
143
+ </nivobanner_read>
144
+ </resources>
145
+ <blocks>
146
+ <nivobanner>
147
+ <class>Samsys_Nivobanner_Block</class>
148
+ </nivobanner>
149
+ </blocks>
150
+ <helpers>
151
+ <nivobanner>
152
+ <class>Samsys_Nivobanner_Helper</class>
153
+ </nivobanner>
154
+ </helpers>
155
+ </global>
156
+ </config>
app/code/community/Samsys/Nivobanner/sql/nivobanner_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Sam-Sys
5
+ * @category Samsys
6
+ * @package Samsys_Nivobanner
7
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+ $installer = $this;
11
+
12
+ $installer->startSetup();
13
+
14
+ $installer->run("
15
+
16
+ DROP TABLE IF EXISTS {$this->getTable('nivobanner')};
17
+ CREATE TABLE {$this->getTable('nivobanner')} (
18
+ `banner_id` int(11) unsigned NOT NULL auto_increment,
19
+ `title` varchar(255) NOT NULL default '',
20
+ `filename` varchar(255) NOT NULL default '',
21
+ `link` varchar(255) NOT NULL default '',
22
+ `banner_content` text NOT NULL default '',
23
+ `show_title` ENUM('0','1') ,
24
+ `show_content` ENUM('0','1') ,
25
+ `status` smallint(6) NOT NULL default '0',
26
+ `link_target` TINYINT( 4 ) NOT NULL DEFAULT '0' COMMENT '1=>New Window, 0=> Self',
27
+ `sort_order` int(11) NOT NULL default '0',
28
+ `created_time` DATETIME NULL,
29
+ `update_time` DATETIME NULL,
30
+ PRIMARY KEY (`banner_id`)
31
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
32
+
33
+ INSERT INTO {$this->getTable('nivobanner')} (`banner_id`, `title`, `filename`, `link`, `banner_content`,`show_title`, `show_content`, `status`, `link_target`, `sort_order`, `created_time`, `update_time`) VALUES
34
+ (1, 'Banner 1', 'nivo/banner/nemo.jpg', 'http://www.google.com/', '', '1', '1', 1, 0, 0, '2011-03-16 06:22:53', '2011-03-16 06:22:53'),
35
+ (2, 'Banner 2', 'nivo/banner/toystory.jpg', '', '', '1', '0', 1, 0, 0, '2011-03-16 06:23:04', '2011-03-16 06:23:04'),
36
+ (3, 'Banner 3', 'nivo/banner/up.jpg', '', '', '0', '0', 1, 0, 0, '2011-03-16 06:23:16', '2011-03-16 06:23:16'),
37
+ (4, 'Banner 4', 'nivo/banner/walle.jpg', '', '', '1', '0', 1, 0, 0, '2011-03-16 06:23:28', '2011-03-16 06:23:28');
38
+
39
+
40
+ DROP TABLE IF EXISTS {$this->getTable('nivobannergroup')};
41
+ CREATE TABLE {$this->getTable('nivobannergroup')} (
42
+ `group_id` int(11) unsigned NOT NULL auto_increment,
43
+ `group_name` varchar(255) NOT NULL default '',
44
+ `group_code` varchar(255) NOT NULL default '',
45
+ `banner_width` SMALLINT( 4 ) NOT NULL DEFAULT '0',
46
+ `banner_height` SMALLINT( 4 ) NOT NULL DEFAULT '0',
47
+ `banner_effects` varchar(255) NOT NULL default '',
48
+ `animation_speed` int(11) unsigned NULL,
49
+ `pause_time` int(11) unsigned NULL,
50
+ `image_nav` ENUM('0','1') default '0',
51
+ `image_pagi` ENUM('0','1') default '0',
52
+ `hover_pause` ENUM('0','1') default '0',
53
+ `autoplay` ENUM('0','1') default '0',
54
+ `theme` varchar(255) NOT NULL default '',
55
+ `banner_ids` varchar(255) NOT NULL default '',
56
+ `status` smallint(6) NOT NULL default '0',
57
+ `created_time` DATETIME NULL,
58
+ `update_time` DATETIME NULL,
59
+ PRIMARY KEY (`group_id`)
60
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
61
+
62
+ INSERT INTO {$this->getTable('nivobannergroup')} (`group_id`, `group_name`, `group_code`, `banner_width`, `banner_height`, `banner_effects`, `animation_speed`, `pause_time`, `image_nav`,`image_pagi`, `hover_pause`, `autoplay`, `theme`, `banner_ids`, `status`, `created_time`, `update_time`) VALUES
63
+ (1, 'Home Banner', 'home_banner', 620, 200, 'random', '500', '3000', '0','0', '0', '1', 'dark', '1,2,3,4', 1, '2011-03-16 06:25:57', '2011-03-16 06:25:57'),
64
+ (2, 'Left Banner', 'left_banner', 620, 200, 'boxRainGrow', '500', '3000', '0','0', '0', '1', 'default', '1,2,3,4', 1, '2011-03-16 07:11:12', '2011-03-16 07:11:12');
65
+ ");
66
+ $installer->endSetup();
app/code/community/Samsys/Nivobanner/sql/nivobanner_setup/mysql4-upgrade-0.1.0-0.2.0.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Sam-Sys
5
+ * @category Samsys
6
+ * @package Samsys_Nivobanner
7
+ * @copyright Copyright (c) 2013-2014 sam-sys. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+
11
+ $installer = $this;
12
+ $installer->startSetup();
13
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/nivobanner.xml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Sam-sys
5
+ * @category samsys
6
+ * @package samsys_nivobanner
7
+ * @copyright Copyright (c) 2010-2011 Unicode Systems. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+ -->
11
+ <layout version="0.1.0">
12
+ <nivobanner_adminhtml_nivobanner_index>
13
+ <reference name="content">
14
+ <block type="nivobanner/adminhtml_nivobanner" name="nivobanner" />
15
+ </reference>
16
+ </nivobanner_adminhtml_nivobanner_index>
17
+ <nivobanner_adminhtml_nivobannergroup_index>
18
+ <reference name="content">
19
+ <block type="nivobanner/adminhtml_nivobannergroup" name="nivobannergroup" />
20
+ </reference>
21
+ </nivobanner_adminhtml_nivobannergroup_index>
22
+ <nivobanner_adminhtml_nivobanner_edit>
23
+ <update handle="editor"/>
24
+ </nivobanner_adminhtml_nivobanner_edit>
25
+ </layout>
app/design/adminhtml/default/default/template/nivobanner/banner.phtml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!--
2
+ /**
3
+ * Sam-sys
4
+ * @category samsys
5
+ * @package samsys_nivobanner
6
+ * @copyright Copyright (c) 2010-2011 Unicode Systems. (http://www.sam-sys.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ -->
10
+ <?php echo $this->getTabsHtml(); ?>
11
+ <script type="text/javascript">
12
+ //<![CDATA[
13
+ function load_banner_funcs(){
14
+ <?php if (($block = $this->getLayout()->getBlock('nivobannergroup.grid.banner')) && ($_gridJsObject = $block->getJsObjectName())): ?>
15
+ if(!$('in_bannergroup_banners')){
16
+ setTimeout('load_banner_funcs()',500);
17
+ return false;
18
+ }
19
+ var selectedBanners=$H(<?php echo $this->getBannersJson(); ?>);
20
+ $('in_bannergroup_banners').value = selectedBanners.toQueryString();
21
+
22
+ function registerSelectedBanner(grid, element, checked){
23
+ if(checked){
24
+ selectedBanners.set(element.value, element.value);
25
+ }
26
+ else{
27
+ selectedBanners.unset(element.value);
28
+ }
29
+ $('in_bannergroup_banners').value = selectedBanners.toQueryString();
30
+ grid.reloadParams = {'selected_banners[]':selectedBanners.keys()};
31
+ }
32
+ function selectedBannerRowClick(grid, event){
33
+ var trElement = Event.findElement(event, 'tr');
34
+ var isInput = Event.element(event).tagName == 'INPUT';
35
+ if(trElement){
36
+ var checkbox = Element.getElementsBySelector(trElement, 'input');
37
+ if(checkbox[0]){
38
+ var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
39
+ <?php echo $_gridJsObject ?>.setCheckboxChecked(checkbox[0], checked);
40
+ }
41
+ }
42
+ }
43
+
44
+ var tabIndex = 1000;
45
+ function selectedBannerRowInit(grid, row){
46
+ var checkbox = $(row).getElementsByClassName('checkbox')[0];
47
+ }
48
+
49
+
50
+ <?php echo $_gridJsObject ?>.rowClickCallback = selectedBannerRowClick;
51
+ <?php echo $_gridJsObject ?>.initRowCallback = selectedBannerRowInit;
52
+ <?php echo $_gridJsObject ?>.checkboxCheckCallback = registerSelectedBanner;
53
+ <?php echo $_gridJsObject ?>.rows.each(function(row){selectedBannerRowInit(<?php echo $_gridJsObject ?>, row)});
54
+
55
+ <?php endif; ?>
56
+ }
57
+ load_banner_funcs();
58
+ //]]>
59
+ </script>
app/design/frontend/base/default/layout/nivobanner.xml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Sam-sys
5
+ * @category nivobanner
6
+ * @package Samsys_Nivobanner
7
+ * @copyright Copyright (c) 2010-2011 sam-sys pvt ltd. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+ -->
11
+ <layout version="0.1.0">
12
+ <!--include our js and css file. should be enclosed in default tag-->
13
+ <!--<default>
14
+ <reference name="head">
15
+ <action method="addItem"><type>skin_js</type><name>nivobanner/js/jquery-1.9.0.min.js</name></action>
16
+ <action method="addItem"><type>skin_js</type><name>nivobanner/js/jquery.nivo.slider.js</name></action>
17
+ <action method="addCss"><stylesheet>nivobanner/nivo-slider.css</stylesheet></action>
18
+ </reference>
19
+ </default>-->
20
+ <nivobanner_index_index>
21
+ <reference name="content">
22
+ <block type="nivobanner/nivobanner" name="nivobanner.home" template="nivobanner/nivobanner.phtml" >
23
+ <!--<action method="setData">
24
+ <name>banner_group_code</name>
25
+ <value>home_banner</value>
26
+ </action>-->
27
+ </block>
28
+ </reference>
29
+ </nivobanner_index_index>
30
+ </layout>
app/design/frontend/base/default/template/nivobanner/nivobanner.phtml ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Unicode Systems
4
+ * @category Uni
5
+ * @package Uni_Banner
6
+ * @copyright Copyright (c) 2010-2011 Unicode Systems. (http://www.unicodesystems.in)
7
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
8
+ */
9
+ ?>
10
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo $this->getSkinUrl('nivobanner/nivo-slider.css') ?>" />
11
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo $this->getSkinUrl('nivobanner/themes/default/default.css') ?>" />
12
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo $this->getSkinUrl('nivobanner/themes/light/light.css') ?>" />
13
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo $this->getSkinUrl('nivobanner/themes/dark/dark.css') ?>" />
14
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo $this->getSkinUrl('nivobanner/themes/bar/bar.css') ?>" />
15
+ <script type="text/javascript" src="<?php echo $this->getSkinUrl('nivobanner/js/jquery-1.9.0.min.js') ?>"></script>
16
+ <script type="text/javascript" src="<?php echo $this->getSkinUrl('nivobanner/js/jquery.nivo.slider.js') ?>"></script>
17
+ <?php
18
+
19
+ $bannerGroupCode = $this->getBannerGroupCode();
20
+ $data = $this->getDataByGroupCode($bannerGroupCode);
21
+
22
+ $bannerGroupData = $data['group_data'];
23
+ //print_r($bannerGroupData);
24
+ $bannerWidth = $bannerGroupData->getBannerWidth();
25
+ $bannerHeight = $bannerGroupData->getBannerHeight();
26
+ $bannerTheme = $bannerGroupData->getTheme();
27
+ $imageWidth = ((int) $bannerWidth);
28
+ $imageHeight = ((int) $bannerHeight);
29
+ $mediaDir = Mage::getBaseDir('media');
30
+ if(($bannerTheme=='dark')||($bannerTheme=='light'))
31
+ {
32
+ $styleNWH = 'width: ' . ((int) $bannerWidth) . 'px; height: ' . ((int) $bannerHeight + 30) . 'px;';
33
+ }
34
+ else{
35
+ $styleNWH = 'width: ' . ((int) $bannerWidth) . 'px; height: ' . ((int) $bannerHeight) . 'px;';
36
+ }
37
+
38
+ $styleWH = 'width: ' . $imageWidth . 'px !important; height: ' . $imageHeight . 'px !important;';
39
+
40
+ $bannerData = $data['banner_data'];
41
+
42
+ ?>
43
+ <style type="text/css">
44
+ .<? echo $bannerGroupCode; ?> .slider-wrapper {<?php echo $styleNWH; ?>;}
45
+ #slider-<? echo $bannerGroupCode; ?> img{<?php echo $styleWH; ?>}
46
+ </style>
47
+
48
+ <script type="text/javascript">// <![CDATA[
49
+ jQuery.noConflict();
50
+ jQuery(window).load(function() {
51
+ jQuery('#slider-<? echo $bannerGroupCode; ?>').nivoSlider({
52
+
53
+ effect:'<? echo $bannerGroupData->getBannerEffects(); ?>',
54
+ animSpeed: <? echo $bannerGroupData->getAnimationSpeed(); ?>,
55
+ pauseTime: <? echo $bannerGroupData->getPauseTime(); ?>,
56
+ pauseOnHover: <? if($bannerGroupData->getHoverPause()=='0'){?>false <? } if($bannerGroupData->getHoverPause()=='1'){ ?>true <? } ?>,
57
+ directionNav: <? if($bannerGroupData->getImageNav()=='0'){?>false <? } if($bannerGroupData->getImageNav()=='1'){ ?>true <? } ?>,
58
+ manualAdvance: <? if($bannerGroupData->getAutoplay()=='1'){?>false <? } if($bannerGroupData->getAutoplay()=='0'){ ?>true <? } ?>,
59
+ controlNavThumbs: false,
60
+ controlNav: <? if($bannerGroupData->getImagePagi()=='0'){?>false <? } if($bannerGroupData->getImagePagi()=='1'){ ?>true <? } ?>,
61
+ });
62
+
63
+ });
64
+ // ]]>
65
+ </script>
66
+
67
+ <? if($bannerGroupData->getStatus()=='1'):?>
68
+
69
+ <!-- style="width:<? echo $bannerGroupData->getBannerWidth(); ?>px; height:<? echo $bannerGroupData->getBannerHeight(); ?>px;"-->
70
+ <div class="<? echo $bannerGroupCode; ?>">
71
+ <div class="slider-wrapper <? echo $bannerGroupCode; ?> theme-<? echo $bannerGroupData->getTheme();?>">
72
+ <div id="slider-<? echo $bannerGroupCode; ?>" class="nivoSlider">
73
+ <? $s=1;
74
+ foreach ($bannerData as $banner):
75
+
76
+ $bannerPath = $banner->getFilename();
77
+ $bannerTitle = $banner->getTitle();
78
+ $bannerContent = $banner->getBannerContent();
79
+ $bannerLink = $banner->getLink();
80
+ $bannerStatus = $banner->getStatus();
81
+ $bannerTarget = $banner->getLinkTarget();
82
+ $bannerShowTitle = $banner->getShowTitle();
83
+ $bannerShowContent = $banner->getShowContent();
84
+ if($bannerStatus=='1')
85
+ {
86
+ if ($bannerPath != '' && @file_exists($mediaDir . DS . $bannerPath)) :
87
+ /*$mainImage = Mage::getBaseDir('media') . DS . 'nivo' . DS . 'banner' . DS . 'File-1361513004.jpg';
88
+
89
+ $image = new Varien_Image($mainImage);
90
+
91
+ $image->crop(300, 300, 300, 300);
92
+ $image->save(Mage::getBaseDir('media'). DS . 'nivo' . DS . 'banner' . DS . 'new.jpg');*/
93
+ // $bannerImage_thumb = $this->getResizeImage($bannerPath, $bannerGroupCode, $imageWidth, $imageHeight); /*custom image resize*/
94
+ $bannerImage_thumb = $this->getResizedUrl($bannerPath,$bannerGroupCode, $imageWidth, $imageHeight); /*magento image resize*/
95
+ endif;
96
+ ?>
97
+ <? if($bannerLink): ?>
98
+ <a href="<? echo $bannerLink; ?>" target="<? if($bannerTarget=='0'){ echo '_self'; } if($bannerTarget=='1') { echo '_blank'; } ?>">
99
+ <img src="<?php echo $bannerImage_thumb; ?>" data-thumb="<?php echo $bannerImage_thumb; ?>" <? if(($bannerShowTitle=='1')||($bannerShowContent=='1')): ?> title="#<? echo $s; ?>" <? endif; ?> alt="<?php echo $bannerTitle; ?>"/>
100
+ </a>
101
+ <? else: ?>
102
+ <img src="<?php echo $bannerImage_thumb; ?>" <? if(($bannerShowTitle=='1')||($bannerShowContent=='1')): ?> title="#<? echo $s; ?>" <? endif; ?> data-thumb="<?php echo $bannerImage_thumb ?>" alt="<?php echo $bannerTitle; ?>"/>
103
+ <? endif; ?>
104
+
105
+ <?php
106
+ }
107
+ $s++;
108
+ endforeach;
109
+ ?>
110
+ </div>
111
+ <? $k=1; foreach ($bannerData as $banner_cont):
112
+
113
+ $bannerShowTitle_cont = $banner_cont->getShowTitle();
114
+ $bannerShowContent_cont = $banner_cont->getShowContent();
115
+ $bannerTitle_cont = $banner_cont->getTitle();
116
+ $bannerContent_cont = $banner_cont->getBannerContent();
117
+ if(($bannerShowTitle_cont=='1')||($bannerShowContent_cont=='1'))
118
+ {
119
+ ?>
120
+
121
+ <div id="<? echo $k; ?>" class="nivo-html-caption">
122
+ <? if($bannerShowTitle_cont=='1'): ?> <strong> <? echo $bannerTitle_cont; ?> </strong><br/><? endif; ?>
123
+ <? if($bannerShowContent_cont=='1'): ?> <? echo $bannerContent_cont; ?> <? endif; ?>
124
+ </div>
125
+ <?php
126
+ } $k++;
127
+ endforeach;
128
+ ?>
129
+ </div>
130
+ </div>
131
+ <? endif; ?>
app/etc/modules/Samsys_Nivobanner.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Sam-sys
5
+ * @category Samsys
6
+ * @package samsys_nivobanner
7
+ * @copyright Copyright (c) 2010-2011 sam-sys pvt ltd. (http://www.sam-sys.in)
8
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
9
+ */
10
+ -->
11
+ <config>
12
+ <modules>
13
+ <Samsys_Nivobanner>
14
+ <active>true</active>
15
+ <codePool>community</codePool>
16
+ </Samsys_Nivobanner>
17
+ </modules>
18
+ </config>
media/nivo/banner/nemo.jpg ADDED
Binary file
media/nivo/banner/toystory.jpg ADDED
Binary file
media/nivo/banner/up.jpg ADDED
Binary file
media/nivo/banner/walle.jpg ADDED
Binary file
package.xml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>samsys-nivo-banner-1-0</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Nivo-banner offers nivo slider effects for your banner.</summary>
10
+ <description>In Nivo-banner you can use nivo slider effects for the banners. Your can create as many banner groups you want and call it in any page. &#xD;
11
+ &#xD;
12
+ Its simple and free to use.&#xD;
13
+ Easy to use admin panel.&#xD;
14
+ Full admin controls.&#xD;
15
+ Easy implementation.</description>
16
+ <notes>Fresh release.</notes>
17
+ <authors><author><name>sam-sys pvt ltd</name><user>sam</user><email>info@sam-sys.com</email></author></authors>
18
+ <date>2013-04-03</date>
19
+ <time>05:20:40</time>
20
+ <contents><target name="mageetc"><dir name="modules"><file name="Samsys_Nivobanner.xml" hash="96bfb1b6492710b689d77eff90672029"/></dir></target><target name="magecommunity"><dir name="Samsys"><dir name="Nivobanner"><dir name="Block"><dir name="Adminhtml"><dir name="Nivobanner"><dir name="Edit"><file name="Form.php" hash="0a6bdcdc423c3bab2ec44aeb43d441b3"/><dir name="Tab"><file name="Form.php" hash="2c7cbc7aa9142ae2daa205128b8057b7"/></dir><file name="Tabs.php" hash="b8b42cb96b7b1ecd00735b34094730f2"/></dir><file name="Edit.php" hash="fea4e798acafb5805b815e406529e7cf"/><dir name="Grid"><dir name="Renderer"><file name="Image.php" hash="947afbf892a0aa0bb941b0b68ef529b6"/></dir></dir><file name="Grid.php" hash="0109b707be5bd48179feaee2b1bfe302"/></dir><file name="Nivobanner.php" hash="0fe97c1d1d4ed8560cfc5bc443bae644"/><dir name="Nivobannergroup"><dir name="Edit"><file name="Form.php" hash="51d45f96622010799094ecc5a49b1099"/><dir name="Tab"><file name="Banner.php" hash="cf238cbfcb5ed837c88c9ef42ceb5d56"/><file name="Form.php" hash="971b83ee941b9ff6c29633782c22eb30"/><file name="Gridbanner.php" hash="da165363679fd3a08556a338068b858e"/></dir><file name="Tabs.php" hash="055c3327e6ce8291f6743aaa3afaddc4"/></dir><file name="Edit.php" hash="e2bbafef5ddcf3e7668049d2fe5c07b2"/><file name="Grid.php" hash="09c7bdcb51fa6c1081df94f4ad09c050"/></dir><file name="Nivobannergroup.php" hash="7cd96ce38597c19ce0037d6815f5f5ab"/><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Filter"><file name="Banner.php" hash="d1bae5b52af4ac001dea1dc947144859"/></dir><dir name="Renderer"><file name="Banner.php" hash="2c53da55a649760902ac9fd8ef229ad1"/></dir></dir><file name="Column.php" hash="d7c6660823e8ab261cfed9c06ca8a55a"/></dir><file name="Grid.php" hash="00d9a1b54c6ece524415ccdfde9409fc"/></dir></dir><file name="Nivobanner.php" hash="13619b5cf3ddb50771a64a6e7d23d949"/></dir><dir name="Helper"><file name="Data.php" hash="cc2c62d358379f7079e4e5c31a7396e0"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Nivobanner"><file name="Collection.php" hash="3f1439419c2b7c7a2d1fcd3678bf33c7"/></dir><file name="Nivobanner.php" hash="77335a01c52ded5c766e1e5d62151952"/><dir name="Nivobannergroup"><file name="Collection.php" hash="57fe2fe2292bbc727e010e073f91cdcf"/></dir><file name="Nivobannergroup.php" hash="072e058ab528f61c0c8eb3eed03c3a03"/></dir><file name="Nivobanner.php" hash="0a2ec1e2f4f4a299c1604e5e6094e9ac"/><file name="Nivobannergroup.php" hash="b54b627e9e0c29808fa991030e5de43e"/><file name="Status.php" hash="09620561ef9ccbeba6719667162deb69"/><dir name="Wysiwyg"><file name="Config.php" hash="37cc8abcb96360275fb87f632089ef10"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="NivobannerController.php" hash="b030878554c44609a1579ba6f0df898c"/><file name="NivobannergroupController.php" hash="2dbe79d10413a8e62970eeb00fce47b3"/></dir><file name="IndexController.php" hash="99a334f4a267bb88fe127db59cba6d17"/></dir><dir name="etc"><file name="config.xml" hash="62690ecd1053b4138b5c235b23580941"/></dir><dir name="sql"><dir name="nivobanner_setup"><file name="mysql4-install-0.1.0.php" hash="dd901594707621f191f0d824eed9b027"/><file name="mysql4-upgrade-0.1.0-0.2.0.php" hash="c9b5c66a56b4d551b402bf898c034ab5"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="nivobanner"><file name="nivobanner.phtml" hash="24b9f9c9212c3562f43e37a5da5542d0"/></dir></dir><dir name="layout"><file name="nivobanner.xml" hash="7b9495cd87fce88601c1389731df76c5"/></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="nivobanner.xml" hash="c48c091fda4d47179c66cd2b89e9f3f8"/></dir><dir name="template"><dir name="nivobanner"><file name="banner.phtml" hash="9d87a8283ac7055bd1e5809641bfb7c6"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="nivobanner"><dir><dir name="js"><file name="jquery-1.9.0.min.js" hash="0652da382b6fceb033dfe2b6c06d4d11"/><file name="jquery.nivo.slider.js" hash="2376c698bb566fddcb6b680a98d42dc3"/></dir><dir name="themes"><dir name="bar"><file name="arrows.png" hash="09b24f1a73b9eeb5cc62db7ec0b60bca"/><file name="bar.css" hash="58f95f303855cd8bea1a1aaab6d730c8"/><file name="bullets.png" hash="acc66fce35a54d815a3aa3fd573cdd90"/><file name="loading.gif" hash="dd6b7b0bf5c3af22499abc0a9ee1e1b2"/></dir><dir name="dark"><file name="Thumbs.db" hash="ed42e32da8772b2f8de07a3be1aa2cc8"/><file name="arrows.png" hash="4d2ed50facf20fdc9206e65be96097d6"/><file name="bullets.png" hash="208e649ac5a7e0daf2023e30d92f675e"/><file name="dark.css" hash="8663fa16d89aa41939f134c2f7e5a3fb"/><file name="loading.gif" hash="dd6b7b0bf5c3af22499abc0a9ee1e1b2"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><dir name="default"><file name="Thumbs.db" hash="9e707f2c32cb09052d536c1e9aa6141a"/><file name="arrows.png" hash="09b24f1a73b9eeb5cc62db7ec0b60bca"/><file name="bullets.png" hash="acc66fce35a54d815a3aa3fd573cdd90"/><file name="default.css" hash="d66e12b55df8510fe05b9d4fb1aaaf07"/><file name="loading.gif" hash="dd6b7b0bf5c3af22499abc0a9ee1e1b2"/></dir><dir name="light"><file name="Thumbs.db" hash="9159525bd98b30036d48210d6b695e9d"/><file name="arrows.png" hash="246c707d1243339b740fefe80a76fd00"/><file name="bullets.png" hash="8be81f8814c2ba9b2ab77264d3132aef"/><file name="light.css" hash="eede2daf7c7aec7a4e444b60a7ce3a89"/><file name="loading.gif" hash="dd6b7b0bf5c3af22499abc0a9ee1e1b2"/></dir><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir></dir><file name="nivo-slider.css" hash="51b2916fcb7a9f89a21b70e0c7688a59"/></dir></dir></dir></dir></target><target name="magemedia"><dir name="nivo"><dir name="banner"><file name="nemo.jpg" hash="7ea962b318832ba18caab917448f0756"/><file name="toystory.jpg" hash="78431418683dea0dc82e990baed0e86a"/><file name="up.jpg" hash="97a89a100ea7387af842cd7bbddff7f3"/><file name="walle.jpg" hash="0e446ef957f6671ce3b066b242a20100"/></dir></dir></target></contents>
21
+ <compatible/>
22
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.5.0.0</min><max>1.7.2</max></package></required></dependencies>
23
+ </package>
skin/frontend/base/default/nivobanner/js/jquery-1.9.0.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(cn[0].contentWindow||cn[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=A(e,t),cn.detach()),bn[e]=n),n}function A(e,t){var n=st(t.createElement(e)).appendTo(t.body),r=st.css(n[0],"display");return n.remove(),r}function j(e,t,n,r){var i;if(st.isArray(t))st.each(t,function(t,i){n||kn.test(e)?r(e,i):j(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==st.type(t))r(e,t);else for(i in t)j(e+"["+i+"]",t[i],n,r)}function D(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(lt)||[];if(st.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function L(e,n,r,i){function o(u){var l;return a[u]=!0,st.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||s||a[c]?s?!(l=c):t:(n.dataTypes.unshift(c),o(c),!1)}),l}var a={},s=e===$n;return o(n.dataTypes[0])||!a["*"]&&o("*")}function H(e,n){var r,i,o=st.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((o[r]?e:i||(i={}))[r]=n[r]);return i&&st.extend(!0,e,i),e}function M(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(o in c)o in r&&(n[c[o]]=r[o]);for(;"*"===l[0];)l.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("Content-Type"));if(i)for(o in u)if(u[o]&&u[o].test(i)){l.unshift(o);break}if(l[0]in r)a=l[0];else{for(o in r){if(!l[0]||e.converters[o+" "+l[0]]){a=o;break}s||(s=o)}a=a||s}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function q(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=u[++s];)if("*"!==i){if("*"!==l&&l!==i){if(n=a[l+" "+i]||a["* "+i],!n)for(r in a)if(o=r.split(" "),o[1]===i&&(n=a[l+" "+o[0]]||a["* "+o[0]])){n===!0?n=a[r]:a[r]!==!0&&(i=o[0],u.splice(s--,0,i));break}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(c){return{state:"parsererror",error:n?c:"No conversion from "+l+" to "+i}}}l=i}return{state:"success",data:t}}function _(){try{return new e.XMLHttpRequest}catch(t){}}function F(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function O(){return setTimeout(function(){Qn=t}),Qn=st.now()}function B(e,t){st.each(t,function(t,n){for(var r=(rr[t]||[]).concat(rr["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function P(e,t,n){var r,i,o=0,a=nr.length,s=st.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Qn||O(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:st.extend({},t),opts:st.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Qn||O(),duration:n.duration,tweens:[],createTween:function(t,n){var r=st.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(R(c,l.opts.specialEasing);a>o;o++)if(r=nr[o].call(l,e,c,l.opts))return r;return B(l,c),st.isFunction(l.opts.start)&&l.opts.start.call(e,l),st.fx.timer(st.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function R(e,t){var n,r,i,o,a;for(n in e)if(r=st.camelCase(n),i=t[r],o=e[n],st.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=st.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function W(e,t,n){var r,i,o,a,s,u,l,c,f,p=this,d=e.style,h={},g=[],m=e.nodeType&&w(e);n.queue||(c=st._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,st.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===st.css(e,"display")&&"none"===st.css(e,"float")&&(st.support.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",st.support.shrinkWrapBlocks||p.done(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(o=t[r],Zn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show"))continue;g.push(r)}if(a=g.length){s=st._data(e,"fxshow")||st._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?st(e).show():p.done(function(){st(e).hide()}),p.done(function(){var t;st._removeData(e,"fxshow");for(t in h)st.style(e,t,h[t])});for(r=0;a>r;r++)i=g[r],l=p.createTween(i,m?s[i]:0),h[i]=s[i]||st.style(e,i),i in s||(s[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function $(e,t,n,r,i){return new $.prototype.init(e,t,n,r,i)}function I(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=wn[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e){return st.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var X,U,V=e.document,Y=e.location,J=e.jQuery,G=e.$,Q={},K=[],Z="1.9.0",et=K.concat,tt=K.push,nt=K.slice,rt=K.indexOf,it=Q.toString,ot=Q.hasOwnProperty,at=Z.trim,st=function(e,t){return new st.fn.init(e,t,X)},ut=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,lt=/\S+/g,ct=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ft=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,pt=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,dt=/^[\],:{}\s]*$/,ht=/(?:^|:|,)(?:\s*\[)+/g,gt=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,mt=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,yt=/^-ms-/,vt=/-([\da-z])/gi,bt=function(e,t){return t.toUpperCase()},xt=function(){V.addEventListener?(V.removeEventListener("DOMContentLoaded",xt,!1),st.ready()):"complete"===V.readyState&&(V.detachEvent("onreadystatechange",xt),st.ready())};st.fn=st.prototype={jquery:Z,constructor:st,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ft.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof st?n[0]:n,st.merge(this,st.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:V,!0)),pt.test(i[1])&&st.isPlainObject(n))for(i in n)st.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=V.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=V,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):st.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),st.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return nt.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=st.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return st.each(this,e,t)},ready:function(e){return st.ready.promise().done(e),this},slice:function(){return this.pushStack(nt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(st.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:tt,sort:[].sort,splice:[].splice},st.fn.init.prototype=st.fn,st.extend=st.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||st.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(e=arguments[u]))for(n in e)r=s[n],i=e[n],s!==i&&(c&&i&&(st.isPlainObject(i)||(o=st.isArray(i)))?(o?(o=!1,a=r&&st.isArray(r)?r:[]):a=r&&st.isPlainObject(r)?r:{},s[n]=st.extend(c,a,i)):i!==t&&(s[n]=i));return s},st.extend({noConflict:function(t){return e.$===st&&(e.$=G),t&&e.jQuery===st&&(e.jQuery=J),st},isReady:!1,readyWait:1,holdReady:function(e){e?st.readyWait++:st.ready(!0)},ready:function(e){if(e===!0?!--st.readyWait:!st.isReady){if(!V.body)return setTimeout(st.ready);st.isReady=!0,e!==!0&&--st.readyWait>0||(U.resolveWith(V,[st]),st.fn.trigger&&st(V).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===st.type(e)},isArray:Array.isArray||function(e){return"array"===st.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[it.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==st.type(e)||e.nodeType||st.isWindow(e))return!1;try{if(e.constructor&&!ot.call(e,"constructor")&&!ot.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||ot.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||V;var r=pt.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=st.buildFragment([e],t,i),i&&st(i).remove(),st.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=st.trim(n),n&&dt.test(n.replace(gt,"@").replace(mt,"]").replace(ht,"")))?Function("return "+n)():(st.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||st.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&st.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(yt,"ms-").replace(vt,bt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,o=0,a=e.length,s=n(e);if(r){if(s)for(;a>o&&(i=t.apply(e[o],r),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],r),i===!1)break}else if(s)for(;a>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:at&&!at.call("\ufeff\u00a0")?function(e){return null==e?"":at.call(e)}:function(e){return null==e?"":(e+"").replace(ct,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?st.merge(r,"string"==typeof e?[e]:e):tt.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(rt)return rt.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,r){var i,o=0,a=e.length,s=n(e),u=[];if(s)for(;a>o;o++)i=t(e[o],o,r),null!=i&&(u[u.length]=i);else for(o in e)i=t(e[o],o,r),null!=i&&(u[u.length]=i);return et.apply([],u)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(r=e[n],n=e,e=r),st.isFunction(e)?(i=nt.call(arguments,2),o=function(){return e.apply(n||this,i.concat(nt.call(arguments)))},o.guid=e.guid=e.guid||st.guid++,o):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===st.type(r)){o=!0;for(u in r)st.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,st.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(st(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),st.ready.promise=function(t){if(!U)if(U=st.Deferred(),"complete"===V.readyState)setTimeout(st.ready);else if(V.addEventListener)V.addEventListener("DOMContentLoaded",xt,!1),e.addEventListener("load",st.ready,!1);else{V.attachEvent("onreadystatechange",xt),e.attachEvent("onload",st.ready);var n=!1;try{n=null==e.frameElement&&V.documentElement}catch(r){}n&&n.doScroll&&function i(){if(!st.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}st.ready()}}()}return U.promise(t)},st.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()}),X=st(V);var Tt={};st.Callbacks=function(e){e="string"==typeof e?Tt[e]||r(e):st.extend({},e);var n,i,o,a,s,u,l=[],c=!e.once&&[],f=function(t){for(n=e.memory&&t,i=!0,u=a||0,a=0,s=l.length,o=!0;l&&s>u;u++)if(l[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}o=!1,l&&(c?c.length&&f(c.shift()):n?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function r(t){st.each(t,function(t,n){var i=st.type(n);"function"===i?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})})(arguments),o?s=l.length:n&&(a=t,f(n))}return this},remove:function(){return l&&st.each(arguments,function(e,t){for(var n;(n=st.inArray(t,l,n))>-1;)l.splice(n,1),o&&(s>=n&&s--,u>=n&&u--)}),this},has:function(e){return st.inArray(e,l)>-1},empty:function(){return l=[],this},disable:function(){return l=c=n=t,this},disabled:function(){return!l},lock:function(){return c=t,n||p.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!c||(o?c.push(t):f(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},st.extend({Deferred:function(e){var t=[["resolve","done",st.Callbacks("once memory"),"resolved"],["reject","fail",st.Callbacks("once memory"),"rejected"],["notify","progress",st.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return st.Deferred(function(n){st.each(t,function(t,o){var a=o[0],s=st.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&st.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?st.extend(e,r):r}},i={};return r.pipe=r.then,st.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=nt.call(arguments),a=o.length,s=1!==a||e&&st.isFunction(e.promise)?a:0,u=1===s?e:st.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?nt.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=Array(a),n=Array(a),r=Array(a);a>i;i++)o[i]&&st.isFunction(o[i].promise)?o[i].promise().done(l(i,r,o)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,o),u.promise()}}),st.support=function(){var n,r,i,o,a,s,u,l,c,f,p=V.createElement("div");if(p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",r=p.getElementsByTagName("*"),i=p.getElementsByTagName("a")[0],!r||!i||!r.length)return{};o=V.createElement("select"),a=o.appendChild(V.createElement("option")),s=p.getElementsByTagName("input")[0],i.style.cssText="top:1px;float:left;opacity:.5",n={getSetAttribute:"t"!==p.className,leadingWhitespace:3===p.firstChild.nodeType,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(i.getAttribute("style")),hrefNormalized:"/a"===i.getAttribute("href"),opacity:/^0.5/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:!!s.value,optSelected:a.selected,enctype:!!V.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==V.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===V.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},s.checked=!0,n.noCloneChecked=s.cloneNode(!0).checked,o.disabled=!0,n.optDisabled=!a.disabled;try{delete p.test}catch(d){n.deleteExpando=!1}s=V.createElement("input"),s.setAttribute("value",""),n.input=""===s.getAttribute("value"),s.value="t",s.setAttribute("type","radio"),n.radioValue="t"===s.value,s.setAttribute("checked","t"),s.setAttribute("name","t"),u=V.createDocumentFragment(),u.appendChild(s),n.appendChecked=s.checked,n.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,p.attachEvent&&(p.attachEvent("onclick",function(){n.noCloneEvent=!1}),p.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})p.setAttribute(l="on"+f,"t"),n[f+"Bubbles"]=l in e||p.attributes[l].expando===!1;return p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",n.clearCloneStyle="content-box"===p.style.backgroundClip,st(function(){var r,i,o,a="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",s=V.getElementsByTagName("body")[0];s&&(r=V.createElement("div"),r.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",s.appendChild(r).appendChild(p),p.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=p.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",c=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",n.reliableHiddenOffsets=c&&0===o[0].offsetHeight,p.innerHTML="",p.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",n.boxSizing=4===p.offsetWidth,n.doesNotIncludeMarginInBodyOffset=1!==s.offsetTop,e.getComputedStyle&&(n.pixelPosition="1%"!==(e.getComputedStyle(p,null)||{}).top,n.boxSizingReliable="4px"===(e.getComputedStyle(p,null)||{width:"4px"}).width,i=p.appendChild(V.createElement("div")),i.style.cssText=p.style.cssText=a,i.style.marginRight=i.style.width="0",p.style.width="1px",n.reliableMarginRight=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),p.style.zoom!==t&&(p.innerHTML="",p.style.cssText=a+"width:1px;padding:1px;display:inline;zoom:1",n.inlineBlockNeedsLayout=3===p.offsetWidth,p.style.display="block",p.innerHTML="<div></div>",p.firstChild.style.width="5px",n.shrinkWrapBlocks=3!==p.offsetWidth,s.style.zoom=1),s.removeChild(r),r=p=o=i=null)}),r=o=u=a=i=s=null,n}();var wt=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Nt=/([A-Z])/g;st.extend({cache:{},expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?st.cache[e[st.expando]]:e[st.expando],!!e&&!s(e)},data:function(e,t,n){return i(e,t,n,!1)},removeData:function(e,t){return o(e,t,!1)},_data:function(e,t,n){return i(e,t,n,!0)},_removeData:function(e,t){return o(e,t,!0)},acceptData:function(e){var t=e.nodeName&&st.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),st.fn.extend({data:function(e,n){var r,i,o=this[0],s=0,u=null;if(e===t){if(this.length&&(u=st.data(o),1===o.nodeType&&!st._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>s;s++)i=r[s].name,i.indexOf("data-")||(i=st.camelCase(i.substring(5)),a(o,i,u[i]));st._data(o,"parsedAttrs",!0)}return u}return"object"==typeof e?this.each(function(){st.data(this,e)}):st.access(this,function(n){return n===t?o?a(o,e,st.data(o,e)):null:(this.each(function(){st.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){st.removeData(this,e)})}}),st.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=st._data(e,n),r&&(!i||st.isArray(r)?i=st._data(e,n,st.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=st.queue(e,t),r=n.length,i=n.shift(),o=st._queueHooks(e,t),a=function(){st.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return st._data(e,n)||st._data(e,n,{empty:st.Callbacks("once memory").add(function(){st._removeData(e,t+"queue"),st._removeData(e,n)})})}}),st.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?st.queue(this[0],e):n===t?this:this.each(function(){var t=st.queue(this,e,n);st._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&st.dequeue(this,e)})},dequeue:function(e){return this.each(function(){st.dequeue(this,e)})},delay:function(e,t){return e=st.fx?st.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=st.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=st._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var Ct,kt,Et=/[\t\r\n]/g,St=/\r/g,At=/^(?:input|select|textarea|button|object)$/i,jt=/^(?:a|area)$/i,Dt=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Lt=/^(?:checked|selected)$/i,Ht=st.support.getSetAttribute,Mt=st.support.input;st.fn.extend({attr:function(e,t){return st.access(this,st.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){st.removeAttr(this,e)})},prop:function(e,t){return st.access(this,st.prop,e,t,arguments.length>1)},removeProp:function(e){return e=st.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=st.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?st.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return st.isFunction(e)?this.each(function(n){st(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var i,o=0,a=st(this),s=t,u=e.match(lt)||[];i=u[o++];)s=r?s:!a.hasClass(i),a[s?"addClass":"removeClass"](i);else("undefined"===n||"boolean"===n)&&(this.className&&st._data(this,"__className__",this.className),this.className=this.className||e===!1?"":st._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Et," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=st.isFunction(e),this.each(function(r){var o,a=st(this);1===this.nodeType&&(o=i?e.call(this,r,a.val()):e,null==o?o="":"number"==typeof o?o+="":st.isArray(o)&&(o=st.map(o,function(e){return null==e?"":e+""})),n=st.valHooks[this.type]||st.valHooks[this.nodeName.toLowerCase()],n&&"set"in n&&n.set(this,o,"value")!==t||(this.value=o))});if(o)return n=st.valHooks[o.type]||st.valHooks[o.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(o,"value"))!==t?r:(r=o.value,"string"==typeof r?r.replace(St,""):null==r?"":r)}}}),st.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(st.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&st.nodeName(n.parentNode,"optgroup"))){if(t=st(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=st.makeArray(t);return st(e).find("option").each(function(){this.selected=st.inArray(st(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return e.getAttribute===t?st.prop(e,n,r):(a=1!==s||!st.isXMLDoc(e),a&&(n=n.toLowerCase(),o=st.attrHooks[n]||(Dt.test(n)?kt:Ct)),r===t?o&&a&&"get"in o&&null!==(i=o.get(e,n))?i:(e.getAttribute!==t&&(i=e.getAttribute(n)),null==i?t:i):null!==r?o&&a&&"set"in o&&(i=o.set(e,r,n))!==t?i:(e.setAttribute(n,r+""),r):(st.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(lt);if(o&&1===e.nodeType)for(;n=o[i++];)r=st.propFix[n]||n,Dt.test(n)?!Ht&&Lt.test(n)?e[st.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:st.attr(e,n,""),e.removeAttribute(Ht?n:r)},attrHooks:{type:{set:function(e,t){if(!st.support.radioValue&&"radio"===t&&st.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},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(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!st.isXMLDoc(e),a&&(n=st.propFix[n]||n,o=st.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):At.test(e.nodeName)||jt.test(e.nodeName)&&e.href?0:t}}}}),kt={get:function(e,n){var r=st.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?Mt&&Ht?null!=i:Lt.test(n)?e[st.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?st.removeAttr(e,n):Mt&&Ht||!Lt.test(n)?e.setAttribute(!Ht&&st.propFix[n]||n,n):e[st.camelCase("default-"+n)]=e[n]=!0,n}},Mt&&Ht||(st.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return st.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t
2
+ },set:function(e,n,r){return st.nodeName(e,"input")?(e.defaultValue=n,t):Ct&&Ct.set(e,n,r)}}),Ht||(Ct=st.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},st.attrHooks.contenteditable={get:Ct.get,set:function(e,t,n){Ct.set(e,""===t?!1:t,n)}},st.each(["width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),st.support.hrefNormalized||(st.each(["href","src","width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),st.each(["href","src"],function(e,t){st.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),st.support.style||(st.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),st.support.optSelected||(st.propHooks.selected=st.extend(st.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),st.support.enctype||(st.propFix.enctype="encoding"),st.support.checkOn||st.each(["radio","checkbox"],function(){st.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),st.each(["radio","checkbox"],function(){st.valHooks[this]=st.extend(st.valHooks[this],{set:function(e,n){return st.isArray(n)?e.checked=st.inArray(st(e).val(),n)>=0:t}})});var qt=/^(?:input|select|textarea)$/i,_t=/^key/,Ft=/^(?:mouse|contextmenu)|click/,Ot=/^(?:focusinfocus|focusoutblur)$/,Bt=/^([^.]*)(?:\.(.+)|)$/;st.event={global:{},add:function(e,n,r,i,o){var a,s,u,l,c,f,p,d,h,g,m,y=3!==e.nodeType&&8!==e.nodeType&&st._data(e);if(y){for(r.handler&&(a=r,r=a.handler,o=a.selector),r.guid||(r.guid=st.guid++),(l=y.events)||(l=y.events={}),(s=y.handle)||(s=y.handle=function(e){return st===t||e&&st.event.triggered===e.type?t:st.event.dispatch.apply(s.elem,arguments)},s.elem=e),n=(n||"").match(lt)||[""],c=n.length;c--;)u=Bt.exec(n[c])||[],h=m=u[1],g=(u[2]||"").split(".").sort(),p=st.event.special[h]||{},h=(o?p.delegateType:p.bindType)||h,p=st.event.special[h]||{},f=st.extend({type:h,origType:m,data:i,handler:r,guid:r.guid,selector:o,needsContext:o&&st.expr.match.needsContext.test(o),namespace:g.join(".")},a),(d=l[h])||(d=l[h]=[],d.delegateCount=0,p.setup&&p.setup.call(e,i,g,s)!==!1||(e.addEventListener?e.addEventListener(h,s,!1):e.attachEvent&&e.attachEvent("on"+h,s))),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=r.guid)),o?d.splice(d.delegateCount++,0,f):d.push(f),st.event.global[h]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,m=st.hasData(e)&&st._data(e);if(m&&(u=m.events)){for(t=(t||"").match(lt)||[""],l=t.length;l--;)if(s=Bt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=st.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||st.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)st.event.remove(e,d+t[l],n,r,!0);st.isEmptyObject(u)&&(delete m.handle,st._removeData(e,"events"))}},trigger:function(n,r,i,o){var a,s,u,l,c,f,p,d=[i||V],h=n.type||n,g=n.namespace?n.namespace.split("."):[];if(s=u=i=i||V,3!==i.nodeType&&8!==i.nodeType&&!Ot.test(h+st.event.triggered)&&(h.indexOf(".")>=0&&(g=h.split("."),h=g.shift(),g.sort()),c=0>h.indexOf(":")&&"on"+h,n=n[st.expando]?n:new st.Event(h,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=g.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:st.makeArray(r,[n]),p=st.event.special[h]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!st.isWindow(i)){for(l=p.delegateType||h,Ot.test(l+h)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(i.ownerDocument||V)&&d.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=d[a++])&&!n.isPropagationStopped();)n.type=a>1?l:p.bindType||h,f=(st._data(s,"events")||{})[n.type]&&st._data(s,"handle"),f&&f.apply(s,r),f=c&&s[c],f&&st.acceptData(s)&&f.apply&&f.apply(s,r)===!1&&n.preventDefault();if(n.type=h,!(o||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===h&&st.nodeName(i,"a")||!st.acceptData(i)||!c||!i[h]||st.isWindow(i))){u=i[c],u&&(i[c]=null),st.event.triggered=h;try{i[h]()}catch(m){}st.event.triggered=t,u&&(i[c]=u)}return n.result}},dispatch:function(e){e=st.event.fix(e);var n,r,i,o,a,s=[],u=nt.call(arguments),l=(st._data(this,"events")||{})[e.type]||[],c=st.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=st.event.handlers.call(this,e,l),n=0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,r=0;(a=o.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,i=((st.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u),i!==t&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==e.type){for(i=[],r=0;u>r;r++)a=n[r],o=a.selector+" ",i[o]===t&&(i[o]=a.needsContext?st(o,this).index(l)>=0:st.find(o,this,null,[l]).length),i[o]&&i.push(a);i.length&&s.push({elem:l,handlers:i})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[st.expando])return e;var t,n,r=e,i=st.event.fixHooks[e.type]||{},o=i.props?this.props.concat(i.props):this.props;for(e=new st.Event(r),t=o.length;t--;)n=o[t],e[n]=r[n];return e.target||(e.target=r.srcElement||V),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,a=n.button,s=n.fromElement;return null==e.pageX&&null!=n.clientX&&(r=e.target.ownerDocument||V,i=r.documentElement,o=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?n.toElement:s),e.which||a===t||(e.which=1&a?1:2&a?3:4&a?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return st.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==V.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===V.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=st.extend(new st.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?st.event.trigger(i,null,t):st.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},st.removeEvent=V.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,n,r){var i="on"+n;e.detachEvent&&(e[i]===t&&(e[i]=null),e.detachEvent(i,r))},st.Event=function(e,n){return this instanceof st.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?u:l):this.type=e,n&&st.extend(this,n),this.timeStamp=e&&e.timeStamp||st.now(),this[st.expando]=!0,t):new st.Event(e,n)},st.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=u,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=u,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u,this.stopPropagation()}},st.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){st.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!st.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),st.support.submitBubbles||(st.event.special.submit={setup:function(){return st.nodeName(this,"form")?!1:(st.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=st.nodeName(n,"input")||st.nodeName(n,"button")?n.form:t;r&&!st._data(r,"submitBubbles")&&(st.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),st._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&st.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return st.nodeName(this,"form")?!1:(st.event.remove(this,"._submit"),t)}}),st.support.changeBubbles||(st.event.special.change={setup:function(){return qt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(st.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),st.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),st.event.simulate("change",this,e,!0)})),!1):(st.event.add(this,"beforeactivate._change",function(e){var t=e.target;qt.test(t.nodeName)&&!st._data(t,"changeBubbles")&&(st.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||st.event.simulate("change",this.parentNode,e,!0)}),st._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return st.event.remove(this,"._change"),!qt.test(this.nodeName)}}),st.support.focusinBubbles||st.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){st.event.simulate(t,e.target,st.event.fix(e),!0)};st.event.special[t]={setup:function(){0===n++&&V.addEventListener(e,r,!0)},teardown:function(){0===--n&&V.removeEventListener(e,r,!0)}}}),st.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(s in e)this.on(s,n,r,e[s],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=l;else if(!i)return this;return 1===o&&(a=i,i=function(e){return st().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=st.guid++)),this.each(function(){st.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,st(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=l),this.each(function(){st.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){st.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?st.event.trigger(e,n,r,!0):t},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),st.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(e,t){st.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)},_t.test(t)&&(st.event.fixHooks[t]=st.event.keyHooks),Ft.test(t)&&(st.event.fixHooks[t]=st.event.mouseHooks)}),function(e,t){function n(e){return ht.test(e+"")}function r(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>C.cacheLength&&delete e[t.shift()],e[n]=r}}function i(e){return e[P]=!0,e}function o(e){var t=L.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function a(e,t,n,r){var i,o,a,s,u,l,c,d,h,g;if((t?t.ownerDocument||t:R)!==L&&D(t),t=t||L,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!M&&!r){if(i=gt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&O(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Q.apply(n,K.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&W.getByClassName&&t.getElementsByClassName)return Q.apply(n,K.call(t.getElementsByClassName(a),0)),n}if(W.qsa&&!q.test(e)){if(c=!0,d=P,h=t,g=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=f(e),(c=t.getAttribute("id"))?d=c.replace(vt,"\\$&"):t.setAttribute("id",d),d="[id='"+d+"'] ",u=l.length;u--;)l[u]=d+p(l[u]);h=dt.test(e)&&t.parentNode||t,g=l.join(",")}if(g)try{return Q.apply(n,K.call(h.querySelectorAll(g),0)),n}catch(m){}finally{c||t.removeAttribute("id")}}}return x(e.replace(at,"$1"),t,n,r)}function s(e,t){for(var n=e&&t&&e.nextSibling;n;n=n.nextSibling)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e,t){var n,r,i,o,s,u,l,c=X[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=C.preFilter;s;){(!n||(r=ut.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(i=[])),n=!1,(r=lt.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),s=s.slice(n.length));for(o in C.filter)!(r=pt[o].exec(s))||l[o]&&!(r=l[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?a.error(e):X(e,u).slice(0)}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===t.dir,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=$+" "+o;if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(l=t[P]||(t[P]={}),(u=l[r])&&u[0]===c){if((s=u[1])===!0||s===N)return s===!0}else if(u=l[r]=[c],u[1]=e(t,n,a)||N,u[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function m(e,t,n,r,o,a){return r&&!r[P]&&(r=m(r)),o&&!o[P]&&(o=m(o,a)),i(function(i,a,s,u){var l,c,f,p=[],d=[],h=a.length,m=i||b(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?m:g(m,p,e,s,u),v=n?o||(i?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r)for(l=g(v,d),r(l,[],s,u),c=l.length;c--;)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f));if(i){if(o||e){if(o){for(l=[],c=v.length;c--;)(f=v[c])&&l.push(y[c]=f);o(null,v=[],l,u)}for(c=v.length;c--;)(f=v[c])&&(l=o?Z.call(i,f):p[c])>-1&&(i[l]=!(a[l]=f))}}else v=g(v===a?v.splice(h,v.length):v),o?o(null,a,v,u):Q.apply(a,v)})}function y(e){for(var t,n,r,i=e.length,o=C.relative[e[0].type],a=o||C.relative[" "],s=o?1:0,u=d(function(e){return e===t},a,!0),l=d(function(e){return Z.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==j)||((t=n).nodeType?u(e,n,r):l(e,n,r))}];i>s;s++)if(n=C.relative[e[s].type])c=[d(h(c),n)];else{if(n=C.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;i>r&&!C.relative[e[r].type];r++);return m(s>1&&h(c),s>1&&p(e.slice(0,s-1)).replace(at,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&p(e))}c.push(n)}return h(c)}function v(e,t){var n=0,r=t.length>0,o=e.length>0,s=function(i,s,u,l,c){var f,p,d,h=[],m=0,y="0",v=i&&[],b=null!=c,x=j,T=i||o&&C.find.TAG("*",c&&s.parentNode||s),w=$+=null==x?1:Math.E;for(b&&(j=s!==L&&s,N=n);null!=(f=T[y]);y++){if(o&&f){for(p=0;d=e[p];p++)if(d(f,s,u)){l.push(f);break}b&&($=w,N=++n)}r&&((f=!d&&f)&&m--,i&&v.push(f))}if(m+=y,r&&y!==m){for(p=0;d=t[p];p++)d(v,h,s,u);if(i){if(m>0)for(;y--;)v[y]||h[y]||(h[y]=G.call(l));h=g(h)}Q.apply(l,h),b&&!i&&h.length>0&&m+t.length>1&&a.uniqueSort(l)}return b&&($=w,j=x),v};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)a(e,t[r],n);return n}function x(e,t,n,r){var i,o,a,s,u,l=f(e);if(!r&&1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===t.nodeType&&!M&&C.relative[o[1].type]){if(t=C.find.ID(a.matches[0].replace(xt,Tt),t)[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=pt.needsContext.test(e)?-1:o.length-1;i>=0&&(a=o[i],!C.relative[s=a.type]);i--)if((u=C.find[s])&&(r=u(a.matches[0].replace(xt,Tt),dt.test(o[0].type)&&t.parentNode||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return Q.apply(n,K.call(r,0)),n;break}}return S(e,l)(r,t,M,n,dt.test(e)),n}function T(){}var w,N,C,k,E,S,A,j,D,L,H,M,q,_,F,O,B,P="sizzle"+-new Date,R=e.document,W={},$=0,I=0,z=r(),X=r(),U=r(),V=typeof t,Y=1<<31,J=[],G=J.pop,Q=J.push,K=J.slice,Z=J.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},et="[\\x20\\t\\r\\n\\f]",tt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",nt=tt.replace("w","w#"),rt="([*^$|!~]?=)",it="\\["+et+"*("+tt+")"+et+"*(?:"+rt+et+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+nt+")|)|)"+et+"*\\]",ot=":("+tt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+it.replace(3,8)+")*)|.*)\\)|)",at=RegExp("^"+et+"+|((?:^|[^\\\\])(?:\\\\.)*)"+et+"+$","g"),ut=RegExp("^"+et+"*,"+et+"*"),lt=RegExp("^"+et+"*([\\x20\\t\\r\\n\\f>+~])"+et+"*"),ct=RegExp(ot),ft=RegExp("^"+nt+"$"),pt={ID:RegExp("^#("+tt+")"),CLASS:RegExp("^\\.("+tt+")"),NAME:RegExp("^\\[name=['\"]?("+tt+")['\"]?\\]"),TAG:RegExp("^("+tt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+ot),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+et+"*(even|odd|(([+-]|)(\\d*)n|)"+et+"*(?:([+-]|)"+et+"*(\\d+)|))"+et+"*\\)|)","i"),needsContext:RegExp("^"+et+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+et+"*((?:-\\d)?\\d*)"+et+"*\\)|)(?=[^-]|$)","i")},dt=/[\x20\t\r\n\f]*[+~]/,ht=/\{\s*\[native code\]\s*\}/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,vt=/'|\\/g,bt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,xt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,Tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{K.call(H.childNodes,0)[0].nodeType}catch(wt){K=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}E=a.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},D=a.setDocument=function(e){var r=e?e.ownerDocument||e:R;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=r.documentElement,M=E(r),W.tagNameNoComments=o(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),W.attributes=o(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),W.getByClassName=o(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),W.getByName=o(function(e){e.id=P+0,e.innerHTML="<a name='"+P+"'></a><div name='"+P+"'></div>",H.insertBefore(e,H.firstChild);var t=r.getElementsByName&&r.getElementsByName(P).length===2+r.getElementsByName(P+0).length;return W.getIdNotName=!r.getElementById(P),H.removeChild(e),t}),C.attrHandle=o(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},W.getIdNotName?(C.find.ID=function(e,t){if(typeof t.getElementById!==V&&!M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){return e.getAttribute("id")===t}}):(C.find.ID=function(e,n){if(typeof n.getElementById!==V&&!M){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==V&&r.getAttributeNode("id").value===e?[r]:t:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),C.find.TAG=W.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==V?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i];i++)1===n.nodeType&&r.push(n);return r}return o},C.find.NAME=W.getByName&&function(e,n){return typeof n.getElementsByName!==V?n.getElementsByName(name):t},C.find.CLASS=W.getByClassName&&function(e,n){return typeof n.getElementsByClassName===V||M?t:n.getElementsByClassName(e)},_=[],q=[":focus"],(W.qsa=n(r.querySelectorAll))&&(o(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||q.push("\\["+et+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||q.push(":checked")}),o(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&q.push("[*^$]="+et+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),q.push(",.*:")})),(W.matchesSelector=n(F=H.matchesSelector||H.mozMatchesSelector||H.webkitMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){W.disconnectedMatch=F.call(e,"div"),F.call(e,"[s!='']:x"),_.push("!=",ot)}),q=RegExp(q.join("|")),_=RegExp(_.join("|")),O=n(H.contains)||H.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},B=H.compareDocumentPosition?function(e,t){var n;return e===t?(A=!0,0):(n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&n||e.parentNode&&11===e.parentNode.nodeType?e===r||O(R,e)?-1:t===r||O(R,t)?1:0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,o=e.parentNode,a=t.parentNode,u=[e],l=[t];if(e===t)return A=!0,0;if(e.sourceIndex&&t.sourceIndex)return(~t.sourceIndex||Y)-(O(R,e)&&~e.sourceIndex||Y);if(!o||!a)return e===r?-1:t===r?1:o?-1:a?1:0;if(o===a)return s(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?s(u[i],l[i]):u[i]===R?-1:l[i]===R?1:0},A=!1,[0,0].sort(B),W.detectDuplicates=A,L):L},a.matches=function(e,t){return a(e,null,null,t)},a.matchesSelector=function(e,t){if((e.ownerDocument||e)!==L&&D(e),t=t.replace(bt,"='$1']"),!(!W.matchesSelector||M||_&&_.test(t)||q.test(t)))try{var n=F.call(e,t);if(n||W.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return a(t,L,null,[e]).length>0},a.contains=function(e,t){return(e.ownerDocument||e)!==L&&D(e),O(e,t)},a.attr=function(e,t){var n;return(e.ownerDocument||e)!==L&&D(e),M||(t=t.toLowerCase()),(n=C.attrHandle[t])?n(e):M||W.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},a.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},a.uniqueSort=function(e){var t,n=[],r=1,i=0;if(A=!W.detectDuplicates,e.sort(B),A){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},k=a.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=k(t);return n},C=a.selectors={cacheLength:50,createPseudo:i,match:pt,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xt,Tt),e[3]=(e[4]||e[5]||"").replace(xt,Tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||a.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&a.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return pt.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=f(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(xt,Tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=z[e+" "];return t||(t=RegExp("(^|"+et+")"+e+"("+et+"|$)"))&&z(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=a.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.substr(i.length-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(f=t;f=f[g];)if(s?f.nodeName.toLowerCase()===y:1===f.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[P]||(m[P]={}),l=c[e]||[],d=l[0]===$&&l[1],p=l[0]===$&&l[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===t){c[e]=[$,d,p];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===$)p=l[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==y:1!==f.nodeType)||!++p||(v&&((f[P]||(f[P]={}))[e]=[$,p]),f!==t)););return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,r=C.pseudos[e]||C.setFilters[e.toLowerCase()]||a.error("unsupported pseudo: "+e);return r[P]?r(t):r.length>1?(n=[e,e,"",t],C.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=Z.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=S(e.replace(at,"$1"));return r[P]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:i(function(e){return function(t){return a(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return ft.test(e||"")||a.error("unsupported lang: "+e),e=e.replace(xt,Tt).toLowerCase(),function(t){var n;do if(n=M?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=u(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=l(w);S=a.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=f(e)),n=t.length;n--;)o=y(t[n]),o[P]?r.push(o):i.push(o);o=U(e,v(i,r))}return o},C.pseudos.nth=C.pseudos.eq,C.filters=T.prototype=C.pseudos,C.setFilters=new T,D(),a.attr=st.attr,st.find=a,st.expr=a.selectors,st.expr[":"]=st.expr.pseudos,st.unique=a.uniqueSort,st.text=a.getText,st.isXMLDoc=a.isXML,st.contains=a.contains}(e);var Pt=/Until$/,Rt=/^(?:parents|prev(?:Until|All))/,Wt=/^.[^:#\[\.,]*$/,$t=st.expr.match.needsContext,It={children:!0,contents:!0,next:!0,prev:!0};st.fn.extend({find:function(e){var t,n,r;if("string"!=typeof e)return r=this,this.pushStack(st(e).filter(function(){for(t=0;r.length>t;t++)if(st.contains(r[t],this))return!0}));for(n=[],t=0;this.length>t;t++)st.find(e,this[t],n);return n=this.pushStack(st.unique(n)),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=st(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(st.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(f(this,e,!1))},filter:function(e){return this.pushStack(f(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?$t.test(e)?st(e,this.context).index(this[0])>=0:st.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=$t.test(e)||"string"!=typeof e?st(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:st.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?st.unique(o):o)},index:function(e){return e?"string"==typeof e?st.inArray(this[0],st(e)):st.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?st(e,t):st.makeArray(e&&e.nodeType?[e]:e),r=st.merge(this.get(),n);return this.pushStack(st.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),st.fn.andSelf=st.fn.addBack,st.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return st.dir(e,"parentNode")},parentsUntil:function(e,t,n){return st.dir(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")
3
+ },nextAll:function(e){return st.dir(e,"nextSibling")},prevAll:function(e){return st.dir(e,"previousSibling")},nextUntil:function(e,t,n){return st.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return st.dir(e,"previousSibling",n)},siblings:function(e){return st.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return st.sibling(e.firstChild)},contents:function(e){return st.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:st.merge([],e.childNodes)}},function(e,t){st.fn[e]=function(n,r){var i=st.map(this,t,n);return Pt.test(e)||(r=n),r&&"string"==typeof r&&(i=st.filter(r,i)),i=this.length>1&&!It[e]?st.unique(i):i,this.length>1&&Rt.test(e)&&(i=i.reverse()),this.pushStack(i)}}),st.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?st.find.matchesSelector(t[0],e)?[t[0]]:[]:st.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!st(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var zt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Xt=/ jQuery\d+="(?:null|\d+)"/g,Ut=RegExp("<(?:"+zt+")[\\s/>]","i"),Vt=/^\s+/,Yt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Jt=/<([\w:]+)/,Gt=/<tbody/i,Qt=/<|&#?\w+;/,Kt=/<(?:script|style|link)/i,Zt=/^(?:checkbox|radio)$/i,en=/checked\s*(?:[^=]|=\s*.checked.)/i,tn=/^$|\/(?:java|ecma)script/i,nn=/^true\/(.*)/,rn=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,on={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:st.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},an=p(V),sn=an.appendChild(V.createElement("div"));on.optgroup=on.option,on.tbody=on.tfoot=on.colgroup=on.caption=on.thead,on.th=on.td,st.fn.extend({text:function(e){return st.access(this,function(e){return e===t?st.text(this):this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(st.isFunction(e))return this.each(function(t){st(this).wrapAll(e.call(this,t))});if(this[0]){var t=st(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return st.isFunction(e)?this.each(function(t){st(this).wrapInner(e.call(this,t))}):this.each(function(){var t=st(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=st.isFunction(e);return this.each(function(n){st(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){st.nodeName(this,"body")||st(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||st.filter(e,[n]).length>0)&&(t||1!==n.nodeType||st.cleanData(b(n)),n.parentNode&&(t&&st.contains(n.ownerDocument,n)&&m(b(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&st.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&st.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return st.clone(this,e,t)})},html:function(e){return st.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(Xt,""):t;if(!("string"!=typeof e||Kt.test(e)||!st.support.htmlSerialize&&Ut.test(e)||!st.support.leadingWhitespace&&Vt.test(e)||on[(Jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Yt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(st.cleanData(b(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=st.isFunction(e);return t||"string"==typeof e||(e=st(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;(n&&1===this.nodeType||11===this.nodeType)&&(st(this).remove(),t?t.parentNode.insertBefore(e,t):n.appendChild(e))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=et.apply([],e);var i,o,a,s,u,l,c=0,f=this.length,p=this,m=f-1,y=e[0],v=st.isFunction(y);if(v||!(1>=f||"string"!=typeof y||st.support.checkClone)&&en.test(y))return this.each(function(i){var o=p.eq(i);v&&(e[0]=y.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(f&&(i=st.buildFragment(e,this[0].ownerDocument,!1,this),o=i.firstChild,1===i.childNodes.length&&(i=o),o)){for(n=n&&st.nodeName(o,"tr"),a=st.map(b(i,"script"),h),s=a.length;f>c;c++)u=i,c!==m&&(u=st.clone(u,!0,!0),s&&st.merge(a,b(u,"script"))),r.call(n&&st.nodeName(this[c],"table")?d(this[c],"tbody"):this[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,st.map(a,g),c=0;s>c;c++)u=a[c],tn.test(u.type||"")&&!st._data(u,"globalEval")&&st.contains(l,u)&&(u.src?st.ajax({url:u.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):st.globalEval((u.text||u.textContent||u.innerHTML||"").replace(rn,"")));i=o=null}return this}}),st.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){st.fn[e]=function(e){for(var n,r=0,i=[],o=st(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),st(o[r])[t](n),tt.apply(i,n.get());return this.pushStack(i)}}),st.extend({clone:function(e,t,n){var r,i,o,a,s,u=st.contains(e.ownerDocument,e);if(st.support.html5Clone||st.isXMLDoc(e)||!Ut.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(sn.innerHTML=e.outerHTML,sn.removeChild(s=sn.firstChild)),!(st.support.noCloneEvent&&st.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||st.isXMLDoc(e)))for(r=b(s),i=b(e),a=0;null!=(o=i[a]);++a)r[a]&&v(o,r[a]);if(t)if(n)for(i=i||b(e),r=r||b(s),a=0;null!=(o=i[a]);a++)y(o,r[a]);else y(e,s);return r=b(s,"script"),r.length>0&&m(r,!u&&b(e,"script")),r=i=o=null,s},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,f=e.length,d=p(t),h=[],g=0;f>g;g++)if(o=e[g],o||0===o)if("object"===st.type(o))st.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(s=s||d.appendChild(t.createElement("div")),a=(Jt.exec(o)||["",""])[1].toLowerCase(),u=on[a]||on._default,s.innerHTML=u[1]+o.replace(Yt,"<$1></$2>")+u[2],c=u[0];c--;)s=s.lastChild;if(!st.support.leadingWhitespace&&Vt.test(o)&&h.push(t.createTextNode(Vt.exec(o)[0])),!st.support.tbody)for(o="table"!==a||Gt.test(o)?"<table>"!==u[1]||Gt.test(o)?0:s:s.firstChild,c=o&&o.childNodes.length;c--;)st.nodeName(l=o.childNodes[c],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(st.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=d.lastChild}else h.push(t.createTextNode(o));for(s&&d.removeChild(s),st.support.appendChecked||st.grep(b(h,"input"),x),g=0;o=h[g++];)if((!r||-1===st.inArray(o,r))&&(i=st.contains(o.ownerDocument,o),s=b(d.appendChild(o),"script"),i&&m(s),n))for(c=0;o=s[c++];)tn.test(o.type||"")&&n.push(o);return s=null,d},cleanData:function(e,n){for(var r,i,o,a,s=0,u=st.expando,l=st.cache,c=st.support.deleteExpando,f=st.event.special;null!=(o=e[s]);s++)if((n||st.acceptData(o))&&(i=o[u],r=i&&l[i])){if(r.events)for(a in r.events)f[a]?st.event.remove(o,a):st.removeEvent(o,a,r.handle);l[i]&&(delete l[i],c?delete o[u]:o.removeAttribute!==t?o.removeAttribute(u):o[u]=null,K.push(i))}}});var un,ln,cn,fn=/alpha\([^)]*\)/i,pn=/opacity\s*=\s*([^)]*)/,dn=/^(top|right|bottom|left)$/,hn=/^(none|table(?!-c[ea]).+)/,gn=/^margin/,mn=RegExp("^("+ut+")(.*)$","i"),yn=RegExp("^("+ut+")(?!px)[a-z%]+$","i"),vn=RegExp("^([+-])=("+ut+")","i"),bn={BODY:"block"},xn={position:"absolute",visibility:"hidden",display:"block"},Tn={letterSpacing:0,fontWeight:400},wn=["Top","Right","Bottom","Left"],Nn=["Webkit","O","Moz","ms"];st.fn.extend({css:function(e,n){return st.access(this,function(e,n,r){var i,o,a={},s=0;if(st.isArray(n)){for(i=ln(e),o=n.length;o>s;s++)a[n[s]]=st.css(e,n[s],!1,i);return a}return r!==t?st.style(e,n,r):st.css(e,n)},e,n,arguments.length>1)},show:function(){return N(this,!0)},hide:function(){return N(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:w(this))?st(this).show():st(this).hide()})}}),st.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=un(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":st.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=st.camelCase(n),l=e.style;if(n=st.cssProps[u]||(st.cssProps[u]=T(l,u)),s=st.cssHooks[n]||st.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=vn.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(st.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||st.cssNumber[u]||(r+="px"),st.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=st.camelCase(n);return n=st.cssProps[u]||(st.cssProps[u]=T(e.style,u)),s=st.cssHooks[n]||st.cssHooks[u],s&&"get"in s&&(o=s.get(e,!0,r)),o===t&&(o=un(e,n,i)),"normal"===o&&n in Tn&&(o=Tn[n]),r?(a=parseFloat(o),r===!0||st.isNumeric(a)?a||0:o):o},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(ln=function(t){return e.getComputedStyle(t,null)},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||st.contains(e.ownerDocument,e)||(u=st.style(e,n)),yn.test(u)&&gn.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):V.documentElement.currentStyle&&(ln=function(e){return e.currentStyle},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),yn.test(u)&&!dn.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),st.each(["height","width"],function(e,n){st.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&hn.test(st.css(e,"display"))?st.swap(e,xn,function(){return E(e,n,i)}):E(e,n,i):t},set:function(e,t,r){var i=r&&ln(e);return C(e,t,r?k(e,n,r,st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,i),i):0)}}}),st.support.opacity||(st.cssHooks.opacity={get:function(e,t){return pn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=st.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===st.trim(o.replace(fn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=fn.test(o)?o.replace(fn,i):o+" "+i)}}),st(function(){st.support.reliableMarginRight||(st.cssHooks.marginRight={get:function(e,n){return n?st.swap(e,{display:"inline-block"},un,[e,"marginRight"]):t}}),!st.support.pixelPosition&&st.fn.position&&st.each(["top","left"],function(e,n){st.cssHooks[n]={get:function(e,r){return r?(r=un(e,n),yn.test(r)?st(e).position()[n]+"px":r):t}}})}),st.expr&&st.expr.filters&&(st.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!st.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||st.css(e,"display"))},st.expr.filters.visible=function(e){return!st.expr.filters.hidden(e)}),st.each({margin:"",padding:"",border:"Width"},function(e,t){st.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wn[r]+t]=o[r]||o[r-2]||o[0];return i}},gn.test(e)||(st.cssHooks[e+t].set=C)});var Cn=/%20/g,kn=/\[\]$/,En=/\r?\n/g,Sn=/^(?:submit|button|image|reset)$/i,An=/^(?:input|select|textarea|keygen)/i;st.fn.extend({serialize:function(){return st.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=st.prop(this,"elements");return e?st.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!st(this).is(":disabled")&&An.test(this.nodeName)&&!Sn.test(e)&&(this.checked||!Zt.test(e))}).map(function(e,t){var n=st(this).val();return null==n?null:st.isArray(n)?st.map(n,function(e){return{name:t.name,value:e.replace(En,"\r\n")}}):{name:t.name,value:n.replace(En,"\r\n")}}).get()}}),st.param=function(e,n){var r,i=[],o=function(e,t){t=st.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=st.ajaxSettings&&st.ajaxSettings.traditional),st.isArray(e)||e.jquery&&!st.isPlainObject(e))st.each(e,function(){o(this.name,this.value)});else for(r in e)j(r,e[r],n,o);return i.join("&").replace(Cn,"+")};var jn,Dn,Ln=st.now(),Hn=/\?/,Mn=/#.*$/,qn=/([?&])_=[^&]*/,_n=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Fn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,On=/^(?:GET|HEAD)$/,Bn=/^\/\//,Pn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Rn=st.fn.load,Wn={},$n={},In="*/".concat("*");try{Dn=Y.href}catch(zn){Dn=V.createElement("a"),Dn.href="",Dn=Dn.href}jn=Pn.exec(Dn.toLowerCase())||[],st.fn.load=function(e,n,r){if("string"!=typeof e&&Rn)return Rn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),st.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(o="POST"),s.length>0&&st.ajax({url:e,type:o,dataType:"html",data:n}).done(function(e){a=arguments,s.html(i?st("<div>").append(st.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,a||[e.responseText,t,e])}),this},st.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){st.fn[t]=function(e){return this.on(t,e)}}),st.each(["get","post"],function(e,n){st[n]=function(e,r,i,o){return st.isFunction(r)&&(o=o||i,i=r,r=t),st.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),st.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Dn,type:"GET",isLocal:Fn.test(jn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":In,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":st.parseJSON,"text xml":st.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?H(H(e,st.ajaxSettings),t):H(st.ajaxSettings,e)},ajaxPrefilter:D(Wn),ajaxTransport:D($n),ajax:function(e,n){function r(e,n,r,s){var l,f,v,b,T,N=n;2!==x&&(x=2,u&&clearTimeout(u),i=t,a=s||"",w.readyState=e>0?4:0,r&&(b=M(p,w,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=w.getResponseHeader("Last-Modified"),T&&(st.lastModified[o]=T),T=w.getResponseHeader("etag"),T&&(st.etag[o]=T)),304===e?(l=!0,N="notmodified"):(l=q(p,b),N=l.state,f=l.data,v=l.error,l=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),w.status=e,w.statusText=(n||N)+"",l?g.resolveWith(d,[f,N,w]):g.rejectWith(d,[w,N,v]),w.statusCode(y),y=t,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[w,p,l?f:v]),m.fireWith(d,[w,N]),c&&(h.trigger("ajaxComplete",[w,p]),--st.active||st.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var i,o,a,s,u,l,c,f,p=st.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?st(d):st.event,g=st.Deferred(),m=st.Callbacks("once memory"),y=p.statusCode||{},v={},b={},x=0,T="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=_n.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,v[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)y[t]=[y[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(g.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,p.url=((e||p.url||Dn)+"").replace(Mn,"").replace(Bn,jn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=st.trim(p.dataType||"*").toLowerCase().match(lt)||[""],null==p.crossDomain&&(l=Pn.exec(p.url.toLowerCase()),p.crossDomain=!(!l||l[1]===jn[1]&&l[2]===jn[2]&&(l[3]||("http:"===l[1]?80:443))==(jn[3]||("http:"===jn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=st.param(p.data,p.traditional)),L(Wn,p,n,w),2===x)return w;c=p.global,c&&0===st.active++&&st.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!On.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(Hn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=qn.test(o)?o.replace(qn,"$1_="+Ln++):o+(Hn.test(o)?"&":"?")+"_="+Ln++)),p.ifModified&&(st.lastModified[o]&&w.setRequestHeader("If-Modified-Since",st.lastModified[o]),st.etag[o]&&w.setRequestHeader("If-None-Match",st.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&w.setRequestHeader("Content-Type",p.contentType),w.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+In+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)w.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,w,p)===!1||2===x))return w.abort();T="abort";for(f in{success:1,error:1,complete:1})w[f](p[f]);if(i=L($n,p,n,w)){w.readyState=1,c&&h.trigger("ajaxSend",[w,p]),p.async&&p.timeout>0&&(u=setTimeout(function(){w.abort("timeout")},p.timeout));try{x=1,i.send(v,r)}catch(N){if(!(2>x))throw N;r(-1,N)}}else r(-1,"No Transport");return w},getScript:function(e,n){return st.get(e,t,n,"script")},getJSON:function(e,t,n){return st.get(e,t,n,"json")}}),st.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return st.globalEval(e),e}}}),st.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),st.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=V.head||st("head")[0]||V.documentElement;return{send:function(t,i){n=V.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Xn=[],Un=/(=)\?(?=&|$)|\?\?/;st.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xn.pop()||st.expando+"_"+Ln++;return this[e]=!0,e}}),st.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Un.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Un.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=st.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Un,"$1"+o):n.jsonp!==!1&&(n.url+=(Hn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||st.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Xn.push(o)),s&&st.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Vn,Yn,Jn=0,Gn=e.ActiveXObject&&function(){var e;for(e in Vn)Vn[e](t,!0)};st.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&_()||F()}:_,Yn=st.ajaxSettings.xhr(),st.support.cors=!!Yn&&"withCredentials"in Yn,Yn=st.support.ajax=!!Yn,Yn&&st.ajaxTransport(function(n){if(!n.crossDomain||st.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,f,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=st.noop,Gn&&delete Vn[a]),i)4!==u.readyState&&u.abort();else{f={},s=u.status,p=u.responseXML,c=u.getAllResponseHeaders(),p&&p.documentElement&&(f.xml=p),"string"==typeof u.responseText&&(f.text=u.responseText);try{l=u.statusText}catch(d){l=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=f.text?200:404}}catch(h){i||o(-1,h)}f&&o(s,l,f,c)},n.async?4===u.readyState?setTimeout(r):(a=++Jn,Gn&&(Vn||(Vn={},st(e).unload(Gn)),Vn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Qn,Kn,Zn=/^(?:toggle|show|hide)$/,er=RegExp("^(?:([+-])=|)("+ut+")([a-z%]*)$","i"),tr=/queueHooks$/,nr=[W],rr={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=er.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(st.cssNumber[e]?"":"px"),"px"!==r&&s){s=st.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,st.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};st.Animation=st.extend(P,{tweener:function(e,t){st.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],rr[n]=rr[n]||[],rr[n].unshift(t)},prefilter:function(e,t){t?nr.unshift(e):nr.push(e)}}),st.Tween=$,$.prototype={constructor:$,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(st.cssNumber[n]?"":"px")},cur:function(){var e=$.propHooks[this.prop];return e&&e.get?e.get(this):$.propHooks._default.get(this)},run:function(e){var t,n=$.propHooks[this.prop];return this.pos=t=this.options.duration?st.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):$.propHooks._default.set(this),this}},$.prototype.init.prototype=$.prototype,$.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=st.css(e.elem,e.prop,"auto"),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){st.fx.step[e.prop]?st.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[st.cssProps[e.prop]]||st.cssHooks[e.prop])?st.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},$.propHooks.scrollTop=$.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},st.each(["toggle","show","hide"],function(e,t){var n=st.fn[t];st.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(I(t,!0),e,r,i)}}),st.fn.extend({fadeTo:function(e,t,n,r){return this.filter(w).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=st.isEmptyObject(e),o=st.speed(t,n,r),a=function(){var t=P(this,st.extend({},e),o);a.finish=function(){t.stop(!0)},(i||st._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=st.timers,a=st._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&tr.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&st.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=st._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=st.timers,a=r?r.length:0;for(n.finish=!0,st.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),st.each({slideDown:I("show"),slideUp:I("hide"),slideToggle:I("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){st.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),st.speed=function(e,t,n){var r=e&&"object"==typeof e?st.extend({},e):{complete:n||!n&&t||st.isFunction(e)&&e,duration:e,easing:n&&t||t&&!st.isFunction(t)&&t};return r.duration=st.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in st.fx.speeds?st.fx.speeds[r.duration]:st.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){st.isFunction(r.old)&&r.old.call(this),r.queue&&st.dequeue(this,r.queue)},r},st.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},st.timers=[],st.fx=$.prototype.init,st.fx.tick=function(){var e,n=st.timers,r=0;for(Qn=st.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||st.fx.stop(),Qn=t},st.fx.timer=function(e){e()&&st.timers.push(e)&&st.fx.start()},st.fx.interval=13,st.fx.start=function(){Kn||(Kn=setInterval(st.fx.tick,st.fx.interval))},st.fx.stop=function(){clearInterval(Kn),Kn=null},st.fx.speeds={slow:600,fast:200,_default:400},st.fx.step={},st.expr&&st.expr.filters&&(st.expr.filters.animated=function(e){return st.grep(st.timers,function(t){return e===t.elem}).length}),st.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){st.offset.setOffset(this,e,t)});var n,r,i={top:0,left:0},o=this[0],a=o&&o.ownerDocument;if(a)return n=a.documentElement,st.contains(n,o)?(o.getBoundingClientRect!==t&&(i=o.getBoundingClientRect()),r=z(a),{top:i.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:i.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):i},st.offset={setOffset:function(e,t,n){var r=st.css(e,"position");"static"===r&&(e.style.position="relative");var i,o,a=st(e),s=a.offset(),u=st.css(e,"top"),l=st.css(e,"left"),c=("absolute"===r||"fixed"===r)&&st.inArray("auto",[u,l])>-1,f={},p={};c?(p=a.position(),i=p.top,o=p.left):(i=parseFloat(u)||0,o=parseFloat(l)||0),st.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(f.top=t.top-s.top+i),null!=t.left&&(f.left=t.left-s.left+o),"using"in t?t.using.call(e,f):a.css(f)}},st.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===st.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),st.nodeName(e[0],"html")||(n=e.offset()),n.top+=st.css(e[0],"borderTopWidth",!0),n.left+=st.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-st.css(r,"marginTop",!0),left:t.left-n.left-st.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||V.documentElement;e&&!st.nodeName(e,"html")&&"static"===st.css(e,"position");)e=e.offsetParent;return e||V.documentElement})}}),st.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);st.fn[e]=function(i){return st.access(this,function(e,i,o){var a=z(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?st(a).scrollLeft():o,r?o:st(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}}),st.each({Height:"height",Width:"width"},function(e,n){st.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){st.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return st.access(this,function(n,r,i){var o;return st.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?st.css(n,r,s):st.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=st,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return st})})(window);
4
+ //@ sourceMappingURL=jquery.min.map
skin/frontend/base/default/nivobanner/js/jquery.nivo.slider.js ADDED
@@ -0,0 +1,662 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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/>').addClass('nivo-main-image');
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
+ $(slider).on('click', 'a.nivo-prevNav', 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
+ $(slider).on('click', 'a.nivo-nextNav', 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 === 'boxRandom'){
511
+ createBoxes(slider, settings, vars);
512
+
513
+ totalBoxes = settings.boxCols * settings.boxRows;
514
+ i = 0;
515
+ timeBuff = 0;
516
+
517
+ boxes = shuffle($('.nivo-box', slider));
518
+ boxes.each(function(){
519
+ var box = $(this);
520
+ if(i === totalBoxes-1){
521
+ setTimeout(function(){
522
+ box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
523
+ }, (100 + timeBuff));
524
+ } else {
525
+ setTimeout(function(){
526
+ box.animate({ opacity:'1' }, settings.animSpeed);
527
+ }, (100 + timeBuff));
528
+ }
529
+ timeBuff += 20;
530
+ i++;
531
+ });
532
+ } else if(currentEffect === 'boxRain' || currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
533
+ createBoxes(slider, settings, vars);
534
+
535
+ totalBoxes = settings.boxCols * settings.boxRows;
536
+ i = 0;
537
+ timeBuff = 0;
538
+
539
+ // Split boxes into 2D array
540
+ var rowIndex = 0;
541
+ var colIndex = 0;
542
+ var box2Darr = [];
543
+ box2Darr[rowIndex] = [];
544
+ boxes = $('.nivo-box', slider);
545
+ if(currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrowReverse'){
546
+ boxes = $('.nivo-box', slider)._reverse();
547
+ }
548
+ boxes.each(function(){
549
+ box2Darr[rowIndex][colIndex] = $(this);
550
+ colIndex++;
551
+ if(colIndex === settings.boxCols){
552
+ rowIndex++;
553
+ colIndex = 0;
554
+ box2Darr[rowIndex] = [];
555
+ }
556
+ });
557
+
558
+ // Run animation
559
+ for(var cols = 0; cols < (settings.boxCols * 2); cols++){
560
+ var prevCol = cols;
561
+ for(var rows = 0; rows < settings.boxRows; rows++){
562
+ if(prevCol >= 0 && prevCol < settings.boxCols){
563
+ /* Due to some weird JS bug with loop vars
564
+ being used in setTimeout, this is wrapped
565
+ with an anonymous function call */
566
+ (function(row, col, time, i, totalBoxes) {
567
+ var box = $(box2Darr[row][col]);
568
+ var w = box.width();
569
+ var h = box.height();
570
+ if(currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
571
+ box.width(0).height(0);
572
+ }
573
+ if(i === totalBoxes-1){
574
+ setTimeout(function(){
575
+ box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); });
576
+ }, (100 + time));
577
+ } else {
578
+ setTimeout(function(){
579
+ box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
580
+ }, (100 + time));
581
+ }
582
+ })(rows, prevCol, timeBuff, i, totalBoxes);
583
+ i++;
584
+ }
585
+ prevCol--;
586
+ }
587
+ timeBuff += 100;
588
+ }
589
+ }
590
+ };
591
+
592
+ // Shuffle an array
593
+ var shuffle = function(arr){
594
+ for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i, 10), x = arr[--i], arr[i] = arr[j], arr[j] = x);
595
+ return arr;
596
+ };
597
+
598
+ // For debugging
599
+ var trace = function(msg){
600
+ if(this.console && typeof console.log !== 'undefined') { console.log(msg); }
601
+ };
602
+
603
+ // Start / Stop
604
+ this.stop = function(){
605
+ if(!$(element).data('nivo:vars').stop){
606
+ $(element).data('nivo:vars').stop = true;
607
+ trace('Stop Slider');
608
+ }
609
+ };
610
+
611
+ this.start = function(){
612
+ if($(element).data('nivo:vars').stop){
613
+ $(element).data('nivo:vars').stop = false;
614
+ trace('Start Slider');
615
+ }
616
+ };
617
+
618
+ // Trigger the afterLoad callback
619
+ settings.afterLoad.call(this);
620
+
621
+ return this;
622
+ };
623
+
624
+ $.fn.nivoSlider = function(options) {
625
+ return this.each(function(key, value){
626
+ var element = $(this);
627
+ // Return early if this element already has a plugin instance
628
+ if (element.data('nivoslider')) { return element.data('nivoslider'); }
629
+ // Pass options to plugin constructor
630
+ var nivoslider = new NivoSlider(this, options);
631
+ // Store plugin object in this element's data
632
+ element.data('nivoslider', nivoslider);
633
+ });
634
+ };
635
+
636
+ //Default settings
637
+ $.fn.nivoSlider.defaults = {
638
+ effect: 'random',
639
+ slices: 15,
640
+ boxCols: 8,
641
+ boxRows: 4,
642
+ animSpeed: 500,
643
+ pauseTime: 3000,
644
+ startSlide: 0,
645
+ directionNav: true,
646
+ controlNav: true,
647
+ controlNavThumbs: false,
648
+ pauseOnHover: true,
649
+ manualAdvance: false,
650
+ prevText: 'Prev',
651
+ nextText: 'Next',
652
+ randomStart: false,
653
+ beforeChange: function(){},
654
+ afterChange: function(){},
655
+ slideshowEnd: function(){},
656
+ lastSlide: function(){},
657
+ afterLoad: function(){}
658
+ };
659
+
660
+ $.fn._reverse = []._reverse;
661
+
662
+ })(jQuery);
skin/frontend/base/default/nivobanner/nivo-slider.css ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ /* The Nivo Slider styles */
11
+ .nivoSlider {
12
+ position:relative;
13
+ width:100%;
14
+ height:auto;
15
+ overflow: hidden;
16
+ }
17
+ .nivoSlider img {
18
+ position:absolute;
19
+ top:0px;
20
+ left:0px;
21
+ max-width: none;
22
+ }
23
+ .nivo-main-image {
24
+ display: block !important;
25
+ position: relative !important;
26
+ width: 100% !important;
27
+ }
28
+
29
+ /* If an image is wrapped in a link */
30
+ .nivoSlider a.nivo-imageLink {
31
+ position:absolute;
32
+ top:0px;
33
+ left:0px;
34
+ width:100%;
35
+ height:100%;
36
+ border:0;
37
+ padding:0;
38
+ margin:0;
39
+ z-index:6;
40
+ display:none;
41
+ background:white;
42
+ filter:alpha(opacity=0);
43
+ opacity:0;
44
+ }
45
+ /* The slices and boxes in the Slider */
46
+ .nivo-slice {
47
+ display:block;
48
+ position:absolute;
49
+ z-index:5;
50
+ height:100%;
51
+ top:0;
52
+ }
53
+ .nivo-box {
54
+ display:block;
55
+ position:absolute;
56
+ z-index:5;
57
+ overflow:hidden;
58
+ }
59
+ .nivo-box img { display:block; }
60
+
61
+ /* Caption styles */
62
+ .nivo-caption {
63
+ position:absolute;
64
+ left:0px;
65
+ bottom:0px;
66
+ background:#000;
67
+ color:#fff;
68
+ width:100%;
69
+ z-index:8;
70
+ padding: 5px 10px;
71
+ opacity: 0.8;
72
+ overflow: hidden;
73
+ display: none;
74
+ -moz-opacity: 0.8;
75
+ filter:alpha(opacity=8);
76
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
77
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
78
+ box-sizing: border-box; /* Opera/IE 8+ */
79
+ }
80
+ .nivo-caption p {
81
+ padding:5px;
82
+ margin:0;
83
+ }
84
+ .nivo-caption a {
85
+ display:inline !important;
86
+ }
87
+ .nivo-html-caption {
88
+ display:none;
89
+ }
90
+ /* Direction nav styles (e.g. Next & Prev) */
91
+ .nivo-directionNav a {
92
+ position:absolute;
93
+ top:45%;
94
+ z-index:9;
95
+ cursor:pointer;
96
+ }
97
+ .nivo-prevNav {
98
+ left:0px;
99
+ }
100
+ .nivo-nextNav {
101
+ right:0px;
102
+ }
103
+ /* Control nav styles (e.g. 1,2,3...) */
104
+ .nivo-controlNav {
105
+ text-align:center;
106
+ padding: 15px 0;
107
+ }
108
+ .nivo-controlNav a {
109
+ cursor:pointer;
110
+ }
111
+ .nivo-controlNav a.active {
112
+ font-weight:bold;
113
+ }
skin/frontend/base/default/nivobanner/themes/.DS_Store ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/bar/arrows.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/bar/bar.css ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Skin Name: Nivo Slider Bar Theme
3
+ Skin URI: http://nivo.dev7studios.com
4
+ Description: The bottom bar skin for the Nivo Slider.
5
+ Version: 1.0
6
+ Author: Gilbert Pellegrom
7
+ Author URI: http://dev7studios.com
8
+ Supports Thumbs: false
9
+ */
10
+
11
+ .theme-bar.slider-wrapper {
12
+ position: relative;
13
+ border: 1px solid #333;
14
+ overflow: hidden;
15
+ }
16
+ .theme-bar .nivoSlider {
17
+ position:relative;
18
+ background:#fff url(loading.gif) no-repeat 50% 50%;
19
+ }
20
+ .theme-bar .nivoSlider img {
21
+ position:absolute;
22
+ top:0px;
23
+ left:0px;
24
+ display:none;
25
+ }
26
+ .theme-bar .nivoSlider a {
27
+ border:0;
28
+ display:block;
29
+ }
30
+
31
+ .theme-bar .nivo-controlNav {
32
+ position: absolute;
33
+ left: 0;
34
+ bottom: -41px;
35
+ z-index: 10;
36
+ width: 100%;
37
+ height: 30px;
38
+ text-align: center;
39
+ padding: 5px 0;
40
+ border-top: 1px solid #333;
41
+ background: #333;
42
+ background: -moz-linear-gradient(top, #565656 0%, #333333 100%); /* FF3.6+ */
43
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#565656), color-stop(100%,#333333)); /* Chrome,Safari4+ */
44
+ background: -webkit-linear-gradient(top, #565656 0%,#333333 100%); /* Chrome10+,Safari5.1+ */
45
+ background: -o-linear-gradient(top, #565656 0%,#333333 100%); /* Opera 11.10+ */
46
+ background: -ms-linear-gradient(top, #565656 0%,#333333 100%); /* IE10+ */
47
+ background: linear-gradient(to bottom, #565656 0%,#333333 100%); /* W3C */
48
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#565656', endColorstr='#333333',GradientType=0 ); /* IE6-9 */
49
+ opacity: 0.5;
50
+ -webkit-transition: all 200ms ease-in-out;
51
+ -moz-transition: all 200ms ease-in-out;
52
+ -o-transition: all 200ms ease-in-out;
53
+ transition: all 200ms ease-in-out;
54
+ }
55
+ .theme-bar:hover .nivo-controlNav {
56
+ bottom: 0;
57
+ opacity: 1;
58
+ }
59
+ .theme-bar .nivo-controlNav a {
60
+ display:inline-block;
61
+ width:22px;
62
+ height:22px;
63
+ background:url(bullets.png) no-repeat;
64
+ text-indent:-9999px;
65
+ border:0;
66
+ margin: 5px 2px 0 2px;
67
+ }
68
+ .theme-bar .nivo-controlNav a.active {
69
+ background-position:0 -22px;
70
+ }
71
+
72
+ .theme-bar .nivo-directionNav a {
73
+ display:block;
74
+ border:0;
75
+ color: #fff;
76
+ text-transform: uppercase;
77
+ top: auto;
78
+ bottom: 10px;
79
+ z-index: 11;
80
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
81
+ font-size: 13px;
82
+ line-height: 20px;
83
+ opacity: 0.5;
84
+ -webkit-transition: all 200ms ease-in-out;
85
+ -moz-transition: all 200ms ease-in-out;
86
+ -o-transition: all 200ms ease-in-out;
87
+ transition: all 200ms ease-in-out;
88
+ }
89
+ .theme-bar a.nivo-nextNav { right: -50px; }
90
+ .theme-bar a.nivo-prevNav { left: -50px; }
91
+ .theme-bar:hover a.nivo-nextNav {
92
+ right: 15px;
93
+ opacity: 1;
94
+ }
95
+ .theme-bar:hover a.nivo-prevNav {
96
+ left: 15px;
97
+ opacity: 1;
98
+ }
99
+ .theme-bar .nivo-directionNav a:hover { color: #ddd; }
100
+
101
+ .theme-bar .nivo-caption {
102
+ font-family: Helvetica, Arial, sans-serif;
103
+ -webkit-transition: all 200ms ease-in-out;
104
+ -moz-transition: all 200ms ease-in-out;
105
+ -o-transition: all 200ms ease-in-out;
106
+ transition: all 200ms ease-in-out;
107
+ }
108
+ .theme-bar:hover .nivo-caption {
109
+ bottom: 41px;
110
+ }
111
+ .theme-bar .nivo-caption a {
112
+ color:#fff;
113
+ border-bottom:1px dotted #fff;
114
+ }
115
+ .theme-bar .nivo-caption a:hover {
116
+ color:#fff;
117
+ }
118
+
119
+ .theme-bar .nivo-controlNav.nivo-thumbs-enabled {
120
+ width: 100%;
121
+ }
122
+ .theme-bar .nivo-controlNav.nivo-thumbs-enabled a {
123
+ width: auto;
124
+ height: auto;
125
+ background: none;
126
+ margin-bottom: 5px;
127
+ }
128
+ .theme-bar .nivo-controlNav.nivo-thumbs-enabled img {
129
+ display: block;
130
+ width: 120px;
131
+ height: auto;
132
+ }
skin/frontend/base/default/nivobanner/themes/bar/bullets.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/bar/loading.gif ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/dark/.DS_Store ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/dark/Thumbs.db ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/dark/arrows.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/dark/bullets.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/dark/dark.css ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Skin Name: Nivo Slider Dark Theme
3
+ Skin URI: http://nivo.dev7studios.com
4
+ Description: A dark skin for the Nivo Slider.
5
+ Version: 1.0
6
+ Author: Gilbert Pellegrom
7
+ Author URI: http://dev7studios.com
8
+ Supports Thumbs: true
9
+ */
10
+
11
+ .theme-dark.slider-wrapper {
12
+ background: #222;
13
+ padding: 10px;
14
+ }
15
+ .theme-dark .nivoSlider {
16
+ position:relative;
17
+ background:#fff url(loading.gif) no-repeat 50% 50%;
18
+ margin-bottom:10px;
19
+ overflow: visible;
20
+ }
21
+ .theme-dark .nivoSlider img {
22
+ position:absolute;
23
+ top:0px;
24
+ left:0px;
25
+ display:none;
26
+
27
+ }
28
+ .theme-dark .nivoSlider a {
29
+ border:0;
30
+ display:block;
31
+ }
32
+
33
+ .theme-dark .nivo-controlNav {
34
+ text-align: left;
35
+ padding: 0;
36
+ position: relative;
37
+ z-index: 10;
38
+ }
39
+ .theme-dark .nivo-controlNav a {
40
+ display:inline-block;
41
+ width:10px;
42
+ height:10px;
43
+ background:url(bullets.png) no-repeat 0 2px;
44
+ text-indent:-9999px;
45
+ border:0;
46
+ margin: 0 2px;
47
+ }
48
+ .theme-dark .nivo-controlNav a.active {
49
+ background-position:0 100%;
50
+ }
51
+
52
+ .theme-dark .nivo-directionNav a {
53
+ display:block;
54
+ width:30px;
55
+ height:30px;
56
+ background: url(arrows.png) no-repeat;
57
+ text-indent:-9999px;
58
+ border:0;
59
+ top: auto;
60
+ bottom: -36px;
61
+ z-index: 11;
62
+ }
63
+ .theme-dark .nivo-directionNav a:hover {
64
+ background-color: #333;
65
+ -webkit-border-radius: 2px;
66
+ -moz-border-radius: 2px;
67
+ border-radius: 2px;
68
+ }
69
+ .theme-dark a.nivo-nextNav {
70
+ background-position:-16px 50%;
71
+ right:0px;
72
+ }
73
+ .theme-dark a.nivo-prevNav {
74
+ background-position:11px 50%;
75
+ left: auto;
76
+ right: 35px;
77
+ }
78
+
79
+ .theme-dark .nivo-caption {
80
+ font-family: Helvetica, Arial, sans-serif;
81
+ }
82
+ .theme-dark .nivo-caption a {
83
+ color:#fff;
84
+ border-bottom:1px dotted #fff;
85
+ }
86
+ .theme-dark .nivo-caption a:hover {
87
+ color:#fff;
88
+ }
89
+
90
+ .theme-dark .nivo-controlNav.nivo-thumbs-enabled {
91
+ width: 80%;
92
+ }
93
+ .theme-dark .nivo-controlNav.nivo-thumbs-enabled a {
94
+ width: auto;
95
+ height: auto;
96
+ background: none;
97
+ margin-bottom: 5px;
98
+ }
99
+ .theme-dark .nivo-controlNav.nivo-thumbs-enabled img {
100
+ display: block;
101
+ width: 120px;
102
+ height: auto;
103
+ }
skin/frontend/base/default/nivobanner/themes/dark/loading.gif ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/default/Thumbs.db ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/default/arrows.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/default/bullets.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/default/default.css ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Skin Name: Nivo Slider Default Theme
3
+ Skin URI: http://nivo.dev7studios.com
4
+ Description: The default skin for the Nivo Slider.
5
+ Version: 1.3
6
+ Author: Gilbert Pellegrom
7
+ Author URI: http://dev7studios.com
8
+ Supports Thumbs: true
9
+ */
10
+
11
+ .theme-default .nivoSlider {
12
+ position:relative;
13
+ background:#fff url(loading.gif) no-repeat 50% 50%;
14
+ margin-bottom:10px;
15
+ -webkit-box-shadow: 0px 1px 5px 0px #4a4a4a;
16
+ -moz-box-shadow: 0px 1px 5px 0px #4a4a4a;
17
+ box-shadow: 0px 1px 5px 0px #4a4a4a;
18
+ }
19
+ .theme-default .nivoSlider img {
20
+ position:absolute;
21
+ top:0px;
22
+ left:0px;
23
+ display:none;
24
+ }
25
+ .theme-default .nivoSlider a {
26
+ border:0;
27
+ display:block;
28
+ }
29
+
30
+ .theme-default .nivo-controlNav {
31
+ text-align: center;
32
+ padding: 20px 0;
33
+ }
34
+ .theme-default .nivo-controlNav a {
35
+ display:inline-block;
36
+ width:22px;
37
+ height:22px;
38
+ background:url(bullets.png) no-repeat;
39
+ text-indent:-9999px;
40
+ border:0;
41
+ margin: 0 2px;
42
+ }
43
+ .theme-default .nivo-controlNav a.active {
44
+ background-position:0 -22px;
45
+ }
46
+
47
+ .theme-default .nivo-directionNav a {
48
+ display:block;
49
+ width:30px;
50
+ height:30px;
51
+ background:url(arrows.png) no-repeat;
52
+ text-indent:-9999px;
53
+ border:0;
54
+ opacity: 0;
55
+ -webkit-transition: all 200ms ease-in-out;
56
+ -moz-transition: all 200ms ease-in-out;
57
+ -o-transition: all 200ms ease-in-out;
58
+ transition: all 200ms ease-in-out;
59
+ }
60
+ .theme-default:hover .nivo-directionNav a { opacity: 1; }
61
+ .theme-default a.nivo-nextNav {
62
+ background-position:-30px 0;
63
+ right:15px;
64
+ }
65
+ .theme-default a.nivo-prevNav {
66
+ left:15px;
67
+ }
68
+
69
+ .theme-default .nivo-caption {
70
+ font-family: Helvetica, Arial, sans-serif;
71
+ }
72
+ .theme-default .nivo-caption a {
73
+ color:#fff;
74
+ border-bottom:1px dotted #fff;
75
+ }
76
+ .theme-default .nivo-caption a:hover {
77
+ color:#fff;
78
+ }
79
+
80
+ .theme-default .nivo-controlNav.nivo-thumbs-enabled {
81
+ width: 100%;
82
+ }
83
+ .theme-default .nivo-controlNav.nivo-thumbs-enabled a {
84
+ width: auto;
85
+ height: auto;
86
+ background: none;
87
+ margin-bottom: 5px;
88
+ }
89
+ .theme-default .nivo-controlNav.nivo-thumbs-enabled img {
90
+ display: block;
91
+ width: 120px;
92
+ height: auto;
93
+ }
skin/frontend/base/default/nivobanner/themes/default/loading.gif ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/light/Thumbs.db ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/light/arrows.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/light/bullets.png ADDED
Binary file
skin/frontend/base/default/nivobanner/themes/light/light.css ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Skin Name: Nivo Slider Light Theme
3
+ Skin URI: http://nivo.dev7studios.com
4
+ Description: A light skin for the Nivo Slider.
5
+ Version: 1.0
6
+ Author: Gilbert Pellegrom
7
+ Author URI: http://dev7studios.com
8
+ Supports Thumbs: true
9
+ */
10
+
11
+ .theme-light.slider-wrapper {
12
+ background: #fff;
13
+ padding: 10px;
14
+ }
15
+ .theme-light .nivoSlider {
16
+ position:relative;
17
+ background:#fff url(loading.gif) no-repeat 50% 50%;
18
+ margin-bottom:10px;
19
+ overflow: visible;
20
+ }
21
+ .theme-light .nivoSlider img {
22
+ position:absolute;
23
+ top:0px;
24
+ left:0px;
25
+ display:none;
26
+ }
27
+ .theme-light .nivoSlider a {
28
+ border:0;
29
+ display:block;
30
+ }
31
+
32
+ .theme-light .nivo-controlNav {
33
+ text-align: left;
34
+ padding: 0;
35
+ position: relative;
36
+ z-index: 10;
37
+ }
38
+ .theme-light .nivo-controlNav a {
39
+ display:inline-block;
40
+ width:10px;
41
+ height:10px;
42
+ background:url(bullets.png) no-repeat;
43
+ text-indent:-9999px;
44
+ border:0;
45
+ margin: 0 2px;
46
+ }
47
+ .theme-light .nivo-controlNav a.active {
48
+ background-position:0 100%;
49
+ }
50
+
51
+ .theme-light .nivo-directionNav a {
52
+ display:block;
53
+ width:30px;
54
+ height:30px;
55
+ background: url(arrows.png) no-repeat;
56
+ text-indent:-9999px;
57
+ border:0;
58
+ top: auto;
59
+ bottom: -36px;
60
+ z-index: 11;
61
+ }
62
+ .theme-light .nivo-directionNav a:hover {
63
+ background-color: #eee;
64
+ -webkit-border-radius: 2px;
65
+ -moz-border-radius: 2px;
66
+ border-radius: 2px;
67
+ }
68
+ .theme-light a.nivo-nextNav {
69
+ background-position:160% 50%;
70
+ right:0px;
71
+ }
72
+ .theme-light a.nivo-prevNav {
73
+ background-position:-60% 50%;
74
+ left: auto;
75
+ right: 35px;
76
+ }
77
+
78
+ .theme-light .nivo-caption {
79
+ font-family: Helvetica, Arial, sans-serif;
80
+ }
81
+ .theme-light .nivo-caption a {
82
+ color:#fff;
83
+ border-bottom:1px dotted #fff;
84
+ }
85
+ .theme-light .nivo-caption a:hover {
86
+ color:#fff;
87
+ }
88
+
89
+ .theme-light .nivo-controlNav.nivo-thumbs-enabled {
90
+ width: 80%;
91
+ }
92
+ .theme-light .nivo-controlNav.nivo-thumbs-enabled a {
93
+ width: auto;
94
+ height: auto;
95
+ background: none;
96
+ margin-bottom: 5px;
97
+ }
98
+ .theme-light .nivo-controlNav.nivo-thumbs-enabled img {
99
+ display: block;
100
+ width: 120px;
101
+ height: auto;
102
+ }
skin/frontend/base/default/nivobanner/themes/light/loading.gif ADDED
Binary file