Rizn_FullSize - Version 1.4

Version Notes

The Rizn FullSize Zoom extension changes your default product zoom gallery. Please don't use this extension with other gallery zoom extensions.
With Rizn FullSize Zoom extension you can customize your product zoom gallery

Download this release

Release Info

Developer Magento Core Team
Extension Rizn_FullSize
Version 1.4
Comparing to
See all releases


Version 1.4

Files changed (30) hide show
  1. app/code/community/Rizn/FullSize/Helper/Data.php +4 -0
  2. app/code/community/Rizn/FullSize/Model/Enable.php +12 -0
  3. app/code/community/Rizn/FullSize/Model/Magnifierimage.php +13 -0
  4. app/code/community/Rizn/FullSize/Model/Position.php +14 -0
  5. app/code/community/Rizn/FullSize/Model/Source.php +19 -0
  6. app/code/community/Rizn/FullSize/etc/adminhtml.xml +26 -0
  7. app/code/community/Rizn/FullSize/etc/config.xml +29 -0
  8. app/code/community/Rizn/FullSize/etc/system.xml +181 -0
  9. app/design/frontend/default/default/layout/rizn_fullsize.xml +14 -0
  10. app/design/frontend/default/default/template/rizn_fullsize/catalog/product/view/media.phtml +156 -0
  11. app/etc/modules/Rizn_FullSize.xml +9 -0
  12. package.xml +34 -0
  13. skin/frontend/default/default/css/jquery.rizn.full.size.css +50 -0
  14. skin/frontend/default/default/css/jqzoom.css +70 -0
  15. skin/frontend/default/default/images/black-1.png +0 -0
  16. skin/frontend/default/default/images/black-2.png +0 -0
  17. skin/frontend/default/default/images/black-3.png +0 -0
  18. skin/frontend/default/default/images/gray-1.png +0 -0
  19. skin/frontend/default/default/images/gray-2.png +0 -0
  20. skin/frontend/default/default/images/gray-3.png +0 -0
  21. skin/frontend/default/default/images/lupa-black.png +0 -0
  22. skin/frontend/default/default/images/lupa-gray.png +0 -0
  23. skin/frontend/default/default/images/white-1.png +0 -0
  24. skin/frontend/default/default/images/white-2.png +0 -0
  25. skin/frontend/default/default/images/white-3.png +0 -0
  26. skin/frontend/default/default/js/effects.core.js +509 -0
  27. skin/frontend/default/default/js/effects.scale.js +180 -0
  28. skin/frontend/default/default/js/jquery.jqzoom.js +213 -0
  29. skin/frontend/default/default/js/jquery.rizn.full.size.js +170 -0
  30. skin/frontend/default/default/js/jquery.rizn.overlay.js +139 -0
app/code/community/Rizn/FullSize/Helper/Data.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ class Rizn_FullSize_Helper_Data extends Mage_Core_Helper_Abstract
3
+ {
4
+ }
app/code/community/Rizn/FullSize/Model/Enable.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Rizn_FullSize_Model_Enable
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value' => 1, 'label' => Mage::helper('fullsize')->__('Yes')),
8
+ array('value' => 0, 'label' => Mage::helper('fullsize')->__('No'))
9
+
10
+ );
11
+ }
12
+ }
app/code/community/Rizn/FullSize/Model/Magnifierimage.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Rizn_FullSize_Model_Magnifierimage
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value' => 0, 'label' => Mage::helper('fullsize')->__('Black')),
8
+ array('value' => 1, 'label' => Mage::helper('fullsize')->__('Gray')),
9
+
10
+
11
+ );
12
+ }
13
+ }
app/code/community/Rizn/FullSize/Model/Position.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Rizn_FullSize_Model_Position
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value' => 0, 'label' => Mage::helper('fullsize')->__('Top')),
8
+ array('value' => 1, 'label' => Mage::helper('fullsize')->__('Right')),
9
+ array('value' => 2, 'label' => Mage::helper('fullsize')->__('Bottom')),
10
+ array('value' => 0, 'label' => Mage::helper('fullsize')->__('Left'))
11
+
12
+ );
13
+ }
14
+ }
app/code/community/Rizn/FullSize/Model/Source.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Rizn_FullSize_Model_Source
3
+ {
4
+ public function toOptionArray()
5
+ {
6
+ return array(
7
+ array('value' => 0, 'label' => Mage::helper('fullsize')->__('Black 1')),
8
+ array('value' => 1, 'label' => Mage::helper('fullsize')->__('Black 2')),
9
+ array('value' => 2, 'label' => Mage::helper('fullsize')->__('Black 3')),
10
+ array('value' => 3, 'label' => Mage::helper('fullsize')->__('White 1')),
11
+ array('value' => 4, 'label' => Mage::helper('fullsize')->__('White 2')),
12
+ array('value' => 5, 'label' => Mage::helper('fullsize')->__('White 3')),
13
+ array('value' => 6, 'label' => Mage::helper('fullsize')->__('Gray 1')),
14
+ array('value' => 7, 'label' => Mage::helper('fullsize')->__('Gray 2')),
15
+ array('value' => 8, 'label' => Mage::helper('fullsize')->__('Gray 3')),
16
+
17
+ );
18
+ }
19
+ }
app/code/community/Rizn/FullSize/etc/adminhtml.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <all>
6
+ <title>Allow Everything</title>
7
+ </all>
8
+ <admin>
9
+ <children>
10
+ <system>
11
+ <children>
12
+ <config>
13
+ <children>
14
+ <fullsize translate="title">
15
+ <title>Rizn Section</title>
16
+ <sort_order>100</sort_order>
17
+ </fullsize>
18
+ </children>
19
+ </config>
20
+ </children>
21
+ </system>
22
+ </children>
23
+ </admin>
24
+ </resources>
25
+ </acl>
26
+ </config>
app/code/community/Rizn/FullSize/etc/config.xml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Rizn_FullSize>
5
+ <version>0.1.0</version>
6
+ </Rizn_FullSize>
7
+ </modules>
8
+ <frontend>
9
+ <layout>
10
+ <updates>
11
+ <fullsize>
12
+ <file>rizn_fullsize.xml</file>
13
+ </fullsize>
14
+ </updates>
15
+ </layout>
16
+ </frontend>
17
+ <global>
18
+ <models>
19
+ <fullsize>
20
+ <class>Rizn_FullSize_Model</class>
21
+ </fullsize>
22
+ </models>
23
+ <helpers>
24
+ <fullsize>
25
+ <class>Rizn_FullSize_Helper</class>
26
+ </fullsize>
27
+ </helpers>
28
+ </global>
29
+ </config>
app/code/community/Rizn/FullSize/etc/system.xml ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <sections>
4
+ <fullsize translate="label">
5
+ <label>RIZN Full Screen Zoom</label>
6
+ <tab>general</tab>
7
+ <frontend_type>text</frontend_type>
8
+ <sort_order>1000</sort_order>
9
+ <show_in_default>1</show_in_default>
10
+ <show_in_website>1</show_in_website>
11
+ <show_in_store>1</show_in_store>
12
+ <groups>
13
+ <!-- New groups go here -->
14
+
15
+ <magnizoom translate="label">
16
+ <label>Magnifier Zoom</label>
17
+ <frontend_type>text</frontend_type>
18
+ <sort_order>100</sort_order>
19
+ <show_in_default>1</show_in_default>
20
+ <show_in_website>1</show_in_website>
21
+ <show_in_store>1</show_in_store>
22
+ <fields>
23
+
24
+ <width translate="label comment">
25
+ <label>Window Width</label>
26
+
27
+ <frontend_type>text</frontend_type>
28
+ <sort_order>10</sort_order>
29
+ <show_in_default>1</show_in_default>
30
+ <show_in_website>1</show_in_website>
31
+ <show_in_store>1</show_in_store>
32
+ </width>
33
+ <height translate="label comment">
34
+ <label>Window Height</label>
35
+
36
+ <frontend_type>text</frontend_type>
37
+ <sort_order>10</sort_order>
38
+ <show_in_default>1</show_in_default>
39
+ <show_in_website>1</show_in_website>
40
+ <show_in_store>1</show_in_store>
41
+ </height>
42
+ <animation translate="label comment">
43
+ <label>Enable Animation</label>
44
+
45
+ <frontend_type>select</frontend_type>
46
+ <source_model>fullsize/enable</source_model>
47
+ <sort_order>10</sort_order>
48
+ <show_in_default>1</show_in_default>
49
+ <show_in_website>1</show_in_website>
50
+ <show_in_store>1</show_in_store>
51
+ </animation>
52
+
53
+ <enabled translate="label comment">
54
+ <label>Enable Magnifier Zoom</label>
55
+
56
+ <frontend_type>select</frontend_type>
57
+ <source_model>fullsize/enable</source_model>
58
+ <sort_order>10</sort_order>
59
+ <show_in_default>1</show_in_default>
60
+ <show_in_website>1</show_in_website>
61
+ <show_in_store>1</show_in_store>
62
+ </enabled>
63
+
64
+
65
+ </fields>
66
+
67
+
68
+
69
+ </magnizoom>
70
+
71
+ <zoom translate="label">
72
+ <label>Full Screen Zoom</label>
73
+ <frontend_type>text</frontend_type>
74
+ <sort_order>100</sort_order>
75
+ <show_in_default>1</show_in_default>
76
+ <show_in_website>1</show_in_website>
77
+ <show_in_store>1</show_in_store>
78
+ <fields>
79
+ <!-- New fields go here -->
80
+ <background translate="label comment">
81
+ <value>FFF</value>
82
+ <label>Background Color</label>
83
+ <comment>
84
+ <![CDATA[example: 000000 is black and FFFFFF is white, please don't use the '#' symbol for your selected color.]]>
85
+ </comment>
86
+ <frontend_type>text</frontend_type>
87
+ <sort_order>10</sort_order>
88
+ <show_in_default>1</show_in_default>
89
+ <show_in_website>1</show_in_website>
90
+ <show_in_store>1</show_in_store>
91
+ </background>
92
+ <border translate="label comment">
93
+ <label>Border Color</label>
94
+ <comment>
95
+ <![CDATA[example: 000000 is black and FFFFFF is white, please don't use the '#' symbol for your selected color.]]>
96
+ </comment>
97
+ <frontend_type>text</frontend_type>
98
+ <sort_order>10</sort_order>
99
+ <show_in_default>1</show_in_default>
100
+ <show_in_website>1</show_in_website>
101
+ <show_in_store>1</show_in_store>
102
+ </border>
103
+ <closetext translate="label comment">
104
+ <label>Close Button Message</label>
105
+
106
+ <frontend_type>text</frontend_type>
107
+ <sort_order>10</sort_order>
108
+ <show_in_default>1</show_in_default>
109
+ <show_in_website>1</show_in_website>
110
+ <show_in_store>1</show_in_store>
111
+ </closetext>
112
+
113
+ <closeimage translate="label comment">
114
+ <label>Close Image Button</label>
115
+
116
+ <frontend_type>select</frontend_type>
117
+ <source_model>fullsize/source</source_model>
118
+ <sort_order>10</sort_order>
119
+ <show_in_default>1</show_in_default>
120
+ <show_in_website>1</show_in_website>
121
+ <show_in_store>1</show_in_store>
122
+ </closeimage>
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ <magnifiertext translate="label comment">
132
+ <label>Full Screen Icon Text</label>
133
+
134
+ <frontend_type>text</frontend_type>
135
+ <sort_order>10</sort_order>
136
+ <show_in_default>1</show_in_default>
137
+ <show_in_website>1</show_in_website>
138
+ <show_in_store>1</show_in_store>
139
+ </magnifiertext>
140
+
141
+
142
+ <imageheight translate="label comment">
143
+ <label>Product Image Height</label>
144
+
145
+ <frontend_type>text</frontend_type>
146
+ <sort_order>10</sort_order>
147
+ <show_in_default>1</show_in_default>
148
+ <show_in_website>1</show_in_website>
149
+ <show_in_store>1</show_in_store>
150
+ </imageheight>
151
+
152
+
153
+ <imagewidth translate="label comment">
154
+ <label>Product Image Width</label>
155
+
156
+ <frontend_type>text</frontend_type>
157
+ <sort_order>10</sort_order>
158
+ <show_in_default>1</show_in_default>
159
+ <show_in_website>1</show_in_website>
160
+ <show_in_store>1</show_in_store>
161
+ </imagewidth>
162
+
163
+ <magnifierimage translate="label comment">
164
+ <label>Full Screen Icon </label>
165
+
166
+ <frontend_type>select</frontend_type>
167
+ <source_model>fullsize/Magnifierimage</source_model>
168
+ <sort_order>10</sort_order>
169
+ <show_in_default>1</show_in_default>
170
+ <show_in_website>1</show_in_website>
171
+ <show_in_store>1</show_in_store>
172
+ </magnifierimage>
173
+
174
+
175
+ </fields>
176
+ </zoom>
177
+
178
+ </groups>
179
+ </fullsize>
180
+ </sections>
181
+ </config>
app/design/frontend/default/default/layout/rizn_fullsize.xml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout>
3
+ <catalog_product_view>
4
+ <reference name="head">
5
+ <action method="addItem"><type>skin_css</type><name>css/jquery.rizn.full.size.css</name></action>
6
+ <action method="addItem"><type>skin_js</type><name>js/jquery-1.4.2.min.js</name></action>
7
+ <action method="addItem"><type>skin_js</type><name>js/jquery.rizn.overlay.js</name></action>
8
+ <action method="addItem"><type>skin_js</type><name>js/jquery.rizn.full.size.js</name></action>
9
+ </reference>
10
+ <reference name="product.info.media">
11
+ <action method="setTemplate"><template>rizn_fullsize/catalog/product/view/media.phtml</template></action>
12
+ </reference>
13
+ </catalog_product_view>
14
+ </layout>
app/design/frontend/default/default/template/rizn_fullsize/catalog/product/view/media.phtml ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $_product = $this->getProduct();
3
+ $_helper = $this->helper('catalog/output');
4
+ ?>
5
+
6
+
7
+ <?php if ($_product->getImage() != 'no_selection' && $_product->getImage()) : ?>
8
+
9
+ <div id="image">
10
+ <?php if (count($this->getGalleryImages()) > 0): ?>
11
+ <?php $i=0; foreach ($this->getGalleryImages() as $_image): ?>
12
+ <?php $style = $i == 0? '' : 'style="z-index:-1;display:none"'; ?>
13
+ <div class="magnizoom">
14
+ <?php
15
+ $imagewidth = Mage::getStoreConfig('fullsize/zoom/imagewidth');
16
+ if(empty($imagewidth))
17
+ $imagewidth = "262";
18
+ $imageheight = Mage::getStoreConfig('fullsize/zoom/imageheight');
19
+ if(empty($imageheight))
20
+ $imageheight = "190";
21
+ ?>
22
+
23
+
24
+ <img <?php echo $style; ?> id="image<?php echo $i; ?>"
25
+ width="<?php echo $imagewidth; ?>px"
26
+ height="<?php echo $imageheight; ?>px"
27
+ src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail2', $_image->getFile())->resize($imagewidth, $imageheight); ?>"
28
+ alt="<?php echo $this->htmlEscape($_product->getName()) ?>"
29
+ jqimg="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile()) ?>"
30
+ jqimage="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail2', $_image->getFile())->resize(960); ?>"
31
+ bgc="<?php echo Mage::getStoreConfig('fullsize/zoom/background'); ?>"
32
+ brc="<?php $brc = Mage::getStoreConfig('fullsize/zoom/border');
33
+ if(empty($brc))
34
+ echo "000";
35
+ else
36
+ echo Mage::getStoreConfig('fullsize/zoom/border');
37
+ ?>"
38
+ closeimg="<?php $case = Mage::getStoreConfig('fullsize/zoom/closeimage');
39
+ switch($case) {
40
+ case 0:
41
+ echo "black-1.png";
42
+ break;
43
+ case 1:
44
+ echo "black-2.png";
45
+ break;
46
+ case 2:
47
+ echo "black-3.png";
48
+ break;
49
+ case 3:
50
+ echo "white-1.png";
51
+ break;
52
+ case 4:
53
+ echo "white-2.png";
54
+ break;
55
+ case 5:
56
+ echo "white-3.png";
57
+ break;
58
+ case 6:
59
+ echo "gray-1.png";
60
+ break;
61
+ case 7:
62
+ echo "gray-2.png";
63
+ break;
64
+ case 8:
65
+ echo "gray-3.png";
66
+ break;
67
+ }
68
+ ?>"
69
+ clicktext="<?php echo Mage::getStoreConfig('fullsize/zoom/closetext'); ?>"
70
+ />
71
+ </div>
72
+ <?php ++$i; endforeach; ?>
73
+ <?php endif; ?>
74
+ </div>
75
+
76
+ <script type="text/javascript">
77
+
78
+
79
+ jQuery.noConflict();
80
+
81
+ function jSelectImage(url) {
82
+ jQuery("#image img").css("z-index","-1").hide();
83
+ jQuery("#image"+url).css("z-index","999").show();
84
+ };
85
+ <?php if(Mage::getStoreConfig('fullsize/magnizoom/enabled') == 1 ) {?>
86
+ jQuery("#image0").css("z-index","100");
87
+ jQuery(".magnizoom").jqueryzoom({
88
+ xzoom: <?php $width = Mage::getStoreConfig('fullsize/magnizoom/width');
89
+ if(empty($width))
90
+ echo "300";
91
+ else
92
+ echo Mage::getStoreConfig('fullsize/magnizoom/width');
93
+ ?>,
94
+ yzoom: <?php $height = Mage::getStoreConfig('fullsize/magnizoom/height');
95
+ if(empty($height))
96
+ echo "300";
97
+ else
98
+ echo Mage::getStoreConfig('fullsize/magnizoom/height');
99
+ ?>,
100
+ offset: 10,
101
+ position: "right",
102
+ preload: 1,
103
+ lens:1,
104
+ anim_scale: <?php echo Mage::getStoreConfig('fullsize/magnizoom/animation'); ?>
105
+ });
106
+ <?php } ?>
107
+
108
+ </script>
109
+
110
+ <?php else: ?>
111
+
112
+ <a href="<?php echo $this->helper('catalog/image')->init($_product, 'image'); ?>" class="magnizoom" style="" title="<?php echo $this->htmlEscape($_product->getName()) ?>">
113
+ <img id="image" src="<?php echo $this->helper('catalog/image')->init($_product, 'image')->resize(400, 530); ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" />
114
+ </a>
115
+
116
+ <?php endif; ?>
117
+
118
+
119
+ <div class='riznex' style="width:<?php echo $imagewidth; ?>px;">
120
+ <?php
121
+ $case = Mage::getStoreConfig('fullsize/zoom/magnifierimage');
122
+ switch($case) {
123
+ case 0:
124
+ echo "<img src='".$this->getUrl('skin/frontend/default/default/images')."lupa-black.png' alt='' title='' width='13px' height='13px' />";
125
+ break;
126
+ case 1:
127
+ echo "<img src='".$this->getUrl('skin/frontend/default/default/images')."lupa-gray.png' alt='' title='' width='13px' height='13px' />";
128
+ break;
129
+
130
+ }
131
+ if(Mage::getStoreConfig('fullsize/zoom/magnifiertext') == "")
132
+ {
133
+ echo "click the image to view in full size";
134
+ }
135
+ else
136
+ {
137
+ echo Mage::getStoreConfig('fullsize/zoom/magnifiertext');
138
+ }
139
+ ?>
140
+
141
+ </div>
142
+ <?php if (count($this->getGalleryImages()) > 0): ?>
143
+ <div class="more-views">
144
+ <h4 style="margin-bottom:0; line-height:0;">&nbsp;</h4>
145
+ <ul>
146
+ <?php $i=0; foreach ($this->getGalleryImages() as $_image): ?>
147
+ <li>
148
+ <a href="#" onclick="jSelectImage('<?php echo $i ?>'); return false;">
149
+ <img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(47,64); ?>" alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" title="<?php echo $this->htmlEscape($_image->getLabel()) ?>" />
150
+ </a>
151
+ </li>
152
+ <?php ++$i; endforeach; ?>
153
+ </ul>
154
+ </div>
155
+ <?php endif; ?>
156
+
app/etc/modules/Rizn_FullSize.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <modules>
4
+ <Rizn_FullSize>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Rizn_FullSize>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Rizn_FullSize</name>
4
+ <version>1.4</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>Functionality, intuitive interaction and product presentation with really high detailed images are the main features which come with the free RZ FULL SCREEN ZOOM extension. Make your store visitors experience your products in a very new way.</summary>
10
+ <description>* All IN ONE - product magnifier and fullscreen image mode
11
+
12
+ * Product Magnifier
13
+ Allows you to show a magnifier block to dysplay your full size images
14
+
15
+ * Fullscreen Mode
16
+ Show your products on a plain background in fullscreen mode and let them take effect to your customers just by their fancy and modern appearance.
17
+
18
+ * High-resolution images
19
+ Your visitors will experience your products in a complete new way and see product details that convince them of your products solid quality by zooming in and out the images by the mouse-wheel.
20
+
21
+ * Customizble
22
+ It is easy and intuitive to customize the RZ FULL SCREEN ZOOM. You can change the colors, the buttons and the text messages.
23
+
24
+ * Configurable appearance
25
+ Define the background color in your shop backend (admin panel). Define the close button image and text messages. Also you can define the size of the magnifier window and animation in your product page.</description>
26
+ <notes>The Rizn FullSize Zoom extension changes your default product zoom gallery. Please don't use this extension with other gallery zoom extensions.
27
+ With Rizn FullSize Zoom extension you can customize your product zoom gallery</notes>
28
+ <authors><author><name>RIZN Web Design</name><user>auto-converted</user><email>vassilev@rizn.bg</email></author></authors>
29
+ <date>2011-10-10</date>
30
+ <time>14:54:05</time>
31
+ <contents><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="css"><file name="jquery.rizn.full.size.css" hash="53a57ac80786f42377a58eef72788b4c"/><file name="jqzoom.css" hash="2b9d114f2456be818628cee070f7581c"/></dir><dir name="images"><file name="black-1.png" hash="736a4fc12905882777b7b2902549512b"/><file name="black-2.png" hash="018690a2f523e2633e7913dd7056cdc3"/><file name="black-3.png" hash="e93b6067717ab5373814fef6222373f6"/><file name="gray-1.png" hash="f56f677417f765f1a4c15ceb9f9fd7c3"/><file name="gray-2.png" hash="a6c653f1aae853095ec7d7b236b0c1d4"/><file name="gray-3.png" hash="f4b54de64165c32cc31659ab8dd713cf"/><file name="lupa-black.png" hash="eb2e653e609e2ddf1b5d778a8f7244f0"/><file name="lupa-gray.png" hash="eb0500e59e15a42406f9d675bade2d36"/><file name="white-1.png" hash="1e616f8e3c5a796c0cf748eb679959c5"/><file name="white-2.png" hash="c4d184d456deb001033da78c2356b974"/><file name="white-3.png" hash="f9961c752e24dd211c6c73da20a1e527"/></dir><dir name="js"><file name="effects.core.js" hash="4e501b24f8dcfcd67c173c2e5121041b"/><file name="effects.scale.js" hash="75b3f24764e4384b9bebd0735ef33b14"/><file name="jquery.jqzoom.js" hash="6fd34093cdf4104b52a52d92cadb2bab"/><file name="jquery.rizn.full.size.js" hash="4499370cde2a89ba7656515af73f87da"/><file name="jquery.rizn.overlay.js" hash="2afb503a02f537714eb90f1ad1bc288d"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="rizn_fullsize.xml" hash="35a7a3560389dd7529198abcaa5fb6c2"/></dir><dir name="template"><dir name="rizn_fullsize"><dir name="catalog"><dir name="product"><dir name="view"><file name="media.phtml" hash="7157a11d8129e583338a809f84a3dbdd"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Rizn_FullSize.xml" hash="096318503a7c4fb190773c1d9b21bb23"/></dir></target><target name="magecommunity"><dir name="Rizn"><dir name="FullSize"><dir name="etc"><file name="adminhtml.xml" hash="610236cea51e0d490e399ab3ac9bcd00"/><file name="config.xml" hash="462d146e2b89053940cc3d4f13e79739"/><file name="system.xml" hash="d86ad0232c0d4b1da3a85992fd2dbd7f"/></dir><dir name="Helper"><file name="Data.php" hash="164ab59b6d64ff0bff2ca09cc2416798"/></dir><dir name="Model"><file name="Enable.php" hash="c3509548d70a82d3bcf2c4f5383443f3"/><file name="Magnifierimage.php" hash="8e6d7a503bb67fc2e733c3f1d9728978"/><file name="Position.php" hash="3a1bbbbe08378720c9d5f0008f720362"/><file name="Source.php" hash="a274ee62e7d5c69eefb5d1ebe0e649a4"/></dir></dir></dir></target></contents>
32
+ <compatible/>
33
+ <dependencies/>
34
+ </package>
skin/frontend/default/default/css/jquery.rizn.full.size.css ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #other-views{height:110px; margin-left:0;}
2
+ #other-views h6{margin-bottom:10px; margin-left:21px;}
3
+ .hidden {visibility:hidden; display:none;}
4
+
5
+
6
+ #nav-carousel-wrapper {height:111px; width:960px; position:relative; float:left; margin-top:10px; border:1px solid red;}
7
+ .nav-carousel {overflow:hidden; text-align:center;}
8
+ #full-carousel {padding:12px 0 10px;}
9
+ .nav-carousel ul {display:inline-block; overflow:hidden;}
10
+ .nav-carousel li { width:47px; height:64px; text-align:center; cursor:pointer; margin: 0 10px 0 0; border:3px solid #ffffff; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; padding:0; background-color:#fff;float:left; overflow:hidden;}
11
+ .nav-carousel .no-product {cursor:auto;}
12
+ .nav-carousel li:hover {border:3px solid #999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
13
+ .nav-carousel .no-product:hover {border:3px solid #fff; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
14
+ .nav-carousel li.current {border:3px solid #999; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
15
+
16
+
17
+ .disabled {cursor:default;}
18
+ .disabled-next, .disabled-prev {visibility:hidden;}
19
+
20
+
21
+
22
+ #lightbox-container {
23
+ background: #fff;
24
+ display: none;
25
+ overflow: hidden;
26
+ text-align: center;
27
+ }
28
+
29
+
30
+ #full-size-view {position:absolute; height:auto; width:100%; left:0; top:0; background:#fff; z-index:100; display:none;}
31
+ #full-size-nav {width:960px; padding:0 5px; position:fixed; background:#fff url(../images/zoom-fasha.png) no-repeat 0 0; text-align:center; z-index:10000; top:0; overflow:hidden;}
32
+ #full-size-nav h6 {margin-top:20px;}
33
+ #lightbox-middle{margin:0 auto;}
34
+ #full-size-image {height:auto; display:none;}
35
+ .close-full {position:absolute; top:0; right:0; padding:20px; cursor:pointer;}
36
+ .full-size-view #lightbox-top {width:970px; height:130px; padding:0; overflow:hidden;}
37
+ .full-size-view #lightbox-close {float:none; position:absolute; right:30px; top:15px; cursor:pointer; cursor:hand;}
38
+
39
+ #zoom-tool-tip {position:absolute; z-index:9000000; text-align:center; padding:1px 4px; text-transform:uppercase; display:none;}
40
+
41
+ .more-views{clear: both;}
42
+ .more-views .click-to-zoom{margin:10px 0 0; padding-bottom:5px; padding-left:28px; background:url(../images/lupa.gif) no-repeat 0 0; line-height:20px; color:#999; display:inline-block;}
43
+ .riznex {
44
+ display: inline-block;
45
+ margin-bottom: 12px;
46
+ margin-top: 12px;
47
+ text-align: center;
48
+
49
+ }
50
+ .riznex img {margin-top:3px; margin-right:2px;}
skin/frontend/default/default/css/jqzoom.css ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .product-img-box {
2
+ /*float:left;
3
+ width:100%;*/
4
+ }
5
+ .jqzoom{
6
+ float:left;
7
+ position:relative;
8
+ padding:0px;
9
+ cursor:pointer;
10
+ }
11
+
12
+ .jqzoom img{
13
+ border:1px solid #e6e6e6;
14
+ float:left;
15
+ }
16
+
17
+
18
+ div.zoomdiv {
19
+ z-index : 100;
20
+ position : absolute;
21
+ top:0px;
22
+ left:0px;
23
+ width : 200px;
24
+ height : 200px;
25
+ background: #ffffff;
26
+ border:1px solid #e6e6e6;
27
+ display:none;
28
+ text-align: center;
29
+ overflow: hidden;
30
+
31
+
32
+ }
33
+
34
+ div.jqZoomPup {
35
+ z-index : 10;
36
+ visibility : hidden;
37
+ position : absolute;
38
+ top:0px;
39
+ left:0px;
40
+ width : 50px;
41
+ height : 50px;
42
+ /*border: 1px solid #aaa;*/
43
+ background: transparent url(../images/jqzoon_lens.png) 50% top no-repeat;;
44
+ /*opacity: 0.5;
45
+ -moz-opacity: 0.5;
46
+ -khtml-opacity: 0.5;
47
+ filter: alpha(Opacity=50);*/
48
+ }
49
+ #fxWrapper {
50
+
51
+ }
52
+ .jqzoom {
53
+ z-index:100;
54
+ float:none;
55
+ }
56
+
57
+ div.jqZoomPup {
58
+ width:50px;
59
+ height:50px;
60
+ z-index: 1000;
61
+ }
62
+ .zoomdiv {
63
+ margin-top:-10px;
64
+ margin-left:5px;
65
+ display:block !important;
66
+ }
67
+
68
+ #image {
69
+ margin-top:0;
70
+ }
skin/frontend/default/default/images/black-1.png ADDED
Binary file
skin/frontend/default/default/images/black-2.png ADDED
Binary file
skin/frontend/default/default/images/black-3.png ADDED
Binary file
skin/frontend/default/default/images/gray-1.png ADDED
Binary file
skin/frontend/default/default/images/gray-2.png ADDED
Binary file
skin/frontend/default/default/images/gray-3.png ADDED
Binary file
skin/frontend/default/default/images/lupa-black.png ADDED
Binary file
skin/frontend/default/default/images/lupa-gray.png ADDED
Binary file
skin/frontend/default/default/images/white-1.png ADDED
Binary file
skin/frontend/default/default/images/white-2.png ADDED
Binary file
skin/frontend/default/default/images/white-3.png ADDED
Binary file
skin/frontend/default/default/js/effects.core.js ADDED
@@ -0,0 +1,509 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Effects 1.5.3
3
+ *
4
+ * Copyright (c) 2008 Aaron Eisenberger (aaronchi@gmail.com)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Effects/
9
+ */
10
+ ;(function($) {
11
+
12
+ $.effects = $.effects || {}; //Add the 'effects' scope
13
+
14
+ $.extend($.effects, {
15
+ save: function(el, set) {
16
+ for(var i=0;i<set.length;i++) {
17
+ if(set[i] !== null) $.data(el[0], "ec.storage."+set[i], el[0].style[set[i]]);
18
+ }
19
+ },
20
+ restore: function(el, set) {
21
+ for(var i=0;i<set.length;i++) {
22
+ if(set[i] !== null) el.css(set[i], $.data(el[0], "ec.storage."+set[i]));
23
+ }
24
+ },
25
+ setMode: function(el, mode) {
26
+ if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; // Set for toggle
27
+ return mode;
28
+ },
29
+ getBaseline: function(origin, original) { // Translates a [top,left] array into a baseline value
30
+ // this should be a little more flexible in the future to handle a string & hash
31
+ var y, x;
32
+ switch (origin[0]) {
33
+ case 'top': y = 0; break;
34
+ case 'middle': y = 0.5; break;
35
+ case 'bottom': y = 1; break;
36
+ default: y = origin[0] / original.height;
37
+ };
38
+ switch (origin[1]) {
39
+ case 'left': x = 0; break;
40
+ case 'center': x = 0.5; break;
41
+ case 'right': x = 1; break;
42
+ default: x = origin[1] / original.width;
43
+ };
44
+ return {x: x, y: y};
45
+ },
46
+ createWrapper: function(el) {
47
+ if (el.parent().attr('id') == 'fxWrapper')
48
+ return el;
49
+ var props = {width: el.outerWidth({margin:true}), height: el.outerHeight({margin:true}), 'float': el.css('float')};
50
+ el.wrap('<div id="fxWrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');
51
+ var wrapper = el.parent();
52
+ if (el.css('position') == 'static'){
53
+ wrapper.css({position: 'relative'});
54
+ el.css({position: 'relative'});
55
+ } else {
56
+ var top = el.css('top'); if(isNaN(parseInt(top))) top = 'auto';
57
+ var left = el.css('left'); if(isNaN(parseInt(left))) left = 'auto';
58
+ wrapper.css({ position: el.css('position'), top: top, left: left, zIndex: el.css('z-index') }).show();
59
+ el.css({position: 'relative', top:0, left:0});
60
+ }
61
+ wrapper.css(props);
62
+ return wrapper;
63
+ },
64
+ removeWrapper: function(el) {
65
+ if (el.parent().attr('id') == 'fxWrapper')
66
+ return el.parent().replaceWith(el);
67
+ return el;
68
+ },
69
+ setTransition: function(el, list, factor, val) {
70
+ val = val || {};
71
+ $.each(list,function(i, x){
72
+ unit = el.cssUnit(x);
73
+ if (unit[0] > 0) val[x] = unit[0] * factor + unit[1];
74
+ });
75
+ return val;
76
+ },
77
+ animateClass: function(value, duration, easing, callback) {
78
+
79
+ var cb = (typeof easing == "function" ? easing : (callback ? callback : null));
80
+ var ea = (typeof easing == "object" ? easing : null);
81
+
82
+ return this.each(function() {
83
+
84
+ var offset = {}; var that = $(this); var oldStyleAttr = that.attr("style") || '';
85
+ if(typeof oldStyleAttr == 'object') oldStyleAttr = oldStyleAttr["cssText"]; /* Stupidly in IE, style is a object.. */
86
+ if(value.toggle) { that.hasClass(value.toggle) ? value.remove = value.toggle : value.add = value.toggle; }
87
+
88
+ //Let's get a style offset
89
+ var oldStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this,null) : this.currentStyle));
90
+ if(value.add) that.addClass(value.add); if(value.remove) that.removeClass(value.remove);
91
+ var newStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this,null) : this.currentStyle));
92
+ if(value.add) that.removeClass(value.add); if(value.remove) that.addClass(value.remove);
93
+
94
+ // The main function to form the object for animation
95
+ for(var n in newStyle) {
96
+ if( typeof newStyle[n] != "function" && newStyle[n] /* No functions and null properties */
97
+ && n.indexOf("Moz") == -1 && n.indexOf("length") == -1 /* No mozilla spezific render properties. */
98
+ && newStyle[n] != oldStyle[n] /* Only values that have changed are used for the animation */
99
+ && (n.match(/color/i) || (!n.match(/color/i) && !isNaN(parseInt(newStyle[n],10)))) /* Only things that can be parsed to integers or colors */
100
+ && (oldStyle.position != "static" || (oldStyle.position == "static" && !n.match(/left|top|bottom|right/))) /* No need for positions when dealing with static positions */
101
+ ) offset[n] = newStyle[n];
102
+ }
103
+
104
+ that.animate(offset, duration, ea, function() { // Animate the newly constructed offset object
105
+ // Change style attribute back to original. For stupid IE, we need to clear the damn object.
106
+ if(typeof $(this).attr("style") == 'object') { $(this).attr("style")["cssText"] = ""; $(this).attr("style")["cssText"] = oldStyleAttr; } else $(this).attr("style", oldStyleAttr);
107
+ if(value.add) $(this).addClass(value.add); if(value.remove) $(this).removeClass(value.remove);
108
+ if(cb) cb.apply(this, arguments);
109
+ });
110
+
111
+ });
112
+ }
113
+ });
114
+
115
+ //Extend the methods of jQuery
116
+ $.fn.extend({
117
+ //Save old methods
118
+ _show: $.fn.show,
119
+ _hide: $.fn.hide,
120
+ __toggle: $.fn.toggle,
121
+ _addClass: $.fn.addClass,
122
+ _removeClass: $.fn.removeClass,
123
+ _toggleClass: $.fn.toggleClass,
124
+ // New ec methods
125
+ effect: function(fx,o,speed,callback) {
126
+ return $.effects[fx] ? $.effects[fx].call(this, {method: fx, options: o || {}, duration: speed, callback: callback }) : null;
127
+ },
128
+ show: function() {
129
+ if(!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
130
+ return this._show.apply(this, arguments);
131
+ else {
132
+ var o = arguments[1] || {}; o['mode'] = 'show';
133
+ return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]);
134
+ }
135
+ },
136
+ hide: function() {
137
+ if(!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
138
+ return this._hide.apply(this, arguments);
139
+ else {
140
+ var o = arguments[1] || {}; o['mode'] = 'hide';
141
+ return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]);
142
+ }
143
+ },
144
+ toggle: function(){
145
+ if(!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])) || (arguments[0].constructor == Function))
146
+ return this.__toggle.apply(this, arguments);
147
+ else {
148
+ var o = arguments[1] || {}; o['mode'] = 'toggle';
149
+ return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]);
150
+ }
151
+ },
152
+ addClass: function(classNames,speed,easing,callback) {
153
+ return speed ? $.effects.animateClass.apply(this, [{ add: classNames },speed,easing,callback]) : this._addClass(classNames);
154
+ },
155
+ removeClass: function(classNames,speed,easing,callback) {
156
+ return speed ? $.effects.animateClass.apply(this, [{ remove: classNames },speed,easing,callback]) : this._removeClass(classNames);
157
+ },
158
+ toggleClass: function(classNames,speed,easing,callback) {
159
+ return speed ? $.effects.animateClass.apply(this, [{ toggle: classNames },speed,easing,callback]) : this._toggleClass(classNames);
160
+ },
161
+ morph: function(remove,add,speed,easing,callback) {
162
+ return $.effects.animateClass.apply(this, [{ add: add, remove: remove },speed,easing,callback]);
163
+ },
164
+ switchClass: function() {
165
+ return this.morph.apply(this, arguments);
166
+ },
167
+ // helper functions
168
+ cssUnit: function(key) {
169
+ var style = this.css(key), val = [];
170
+ $.each( ['em','px','%','pt'], function(i, unit){
171
+ if(style.indexOf(unit) > 0)
172
+ val = [parseFloat(style), unit];
173
+ });
174
+ return val;
175
+ }
176
+ });
177
+
178
+ /*
179
+ * jQuery Color Animations
180
+ * Copyright 2007 John Resig
181
+ * Released under the MIT and GPL licenses.
182
+ */
183
+
184
+ // We override the animation for all of these color styles
185
+ jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
186
+ jQuery.fx.step[attr] = function(fx){
187
+ if ( fx.state == 0 ) {
188
+ fx.start = getColor( fx.elem, attr );
189
+ fx.end = getRGB( fx.end );
190
+ }
191
+
192
+ fx.elem.style[attr] = "rgb(" + [
193
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
194
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
195
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
196
+ ].join(",") + ")";
197
+ }
198
+ });
199
+
200
+ // Color Conversion functions from highlightFade
201
+ // By Blair Mitchelmore
202
+ // http://jquery.offput.ca/highlightFade/
203
+
204
+ // Parse strings looking for color tuples [255,255,255]
205
+ function getRGB(color) {
206
+ var result;
207
+
208
+ // Check if we're already dealing with an array of colors
209
+ if ( color && color.constructor == Array && color.length == 3 )
210
+ return color;
211
+
212
+ // Look for rgb(num,num,num)
213
+ if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
214
+ return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
215
+
216
+ // Look for rgb(num%,num%,num%)
217
+ if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
218
+ return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
219
+
220
+ // Look for #a0b1c2
221
+ if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
222
+ return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
223
+
224
+ // Look for #fff
225
+ if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
226
+ return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
227
+
228
+ // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
229
+ if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
230
+ return colors['transparent']
231
+
232
+ // Otherwise, we're most likely dealing with a named color
233
+ return colors[jQuery.trim(color).toLowerCase()];
234
+ }
235
+
236
+ function getColor(elem, attr) {
237
+ var color;
238
+
239
+ do {
240
+ color = jQuery.curCSS(elem, attr);
241
+
242
+ // Keep going until we find an element that has color, or we hit the body
243
+ if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
244
+ break;
245
+
246
+ attr = "backgroundColor";
247
+ } while ( elem = elem.parentNode );
248
+
249
+ return getRGB(color);
250
+ };
251
+
252
+ // Some named colors to work with
253
+ // From Interface by Stefan Petre
254
+ // http://interface.eyecon.ro/
255
+
256
+ var colors = {
257
+ aqua:[0,255,255],
258
+ azure:[240,255,255],
259
+ beige:[245,245,220],
260
+ black:[0,0,0],
261
+ blue:[0,0,255],
262
+ brown:[165,42,42],
263
+ cyan:[0,255,255],
264
+ darkblue:[0,0,139],
265
+ darkcyan:[0,139,139],
266
+ darkgrey:[169,169,169],
267
+ darkgreen:[0,100,0],
268
+ darkkhaki:[189,183,107],
269
+ darkmagenta:[139,0,139],
270
+ darkolivegreen:[85,107,47],
271
+ darkorange:[255,140,0],
272
+ darkorchid:[153,50,204],
273
+ darkred:[139,0,0],
274
+ darksalmon:[233,150,122],
275
+ darkviolet:[148,0,211],
276
+ fuchsia:[255,0,255],
277
+ gold:[255,215,0],
278
+ green:[0,128,0],
279
+ indigo:[75,0,130],
280
+ khaki:[240,230,140],
281
+ lightblue:[173,216,230],
282
+ lightcyan:[224,255,255],
283
+ lightgreen:[144,238,144],
284
+ lightgrey:[211,211,211],
285
+ lightpink:[255,182,193],
286
+ lightyellow:[255,255,224],
287
+ lime:[0,255,0],
288
+ magenta:[255,0,255],
289
+ maroon:[128,0,0],
290
+ navy:[0,0,128],
291
+ olive:[128,128,0],
292
+ orange:[255,165,0],
293
+ pink:[255,192,203],
294
+ purple:[128,0,128],
295
+ violet:[128,0,128],
296
+ red:[255,0,0],
297
+ silver:[192,192,192],
298
+ white:[255,255,255],
299
+ yellow:[255,255,0],
300
+ transparent: [255,255,255]
301
+ };
302
+
303
+ /*
304
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
305
+ *
306
+ * Uses the built in easing capabilities added In jQuery 1.1
307
+ * to offer multiple easing options
308
+ *
309
+ * TERMS OF USE - jQuery Easing
310
+ *
311
+ * Open source under the BSD License.
312
+ *
313
+ * Copyright © 2008 George McGinley Smith
314
+ * All rights reserved.
315
+ *
316
+ * Redistribution and use in source and binary forms, with or without modification,
317
+ * are permitted provided that the following conditions are met:
318
+ *
319
+ * Redistributions of source code must retain the above copyright notice, this list of
320
+ * conditions and the following disclaimer.
321
+ * Redistributions in binary form must reproduce the above copyright notice, this list
322
+ * of conditions and the following disclaimer in the documentation and/or other materials
323
+ * provided with the distribution.
324
+ *
325
+ * Neither the name of the author nor the names of contributors may be used to endorse
326
+ * or promote products derived from this software without specific prior written permission.
327
+ *
328
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
329
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
330
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
331
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
332
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
333
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
334
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
335
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
336
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
337
+ *
338
+ */
339
+
340
+ // t: current time, b: begInnIng value, c: change In value, d: duration
341
+ jQuery.easing['jswing'] = jQuery.easing['swing'];
342
+
343
+ jQuery.extend( jQuery.easing,
344
+ {
345
+ def: 'easeOutQuad',
346
+ swing: function (x, t, b, c, d) {
347
+ //alert(jQuery.easing.default);
348
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
349
+ },
350
+ easeInQuad: function (x, t, b, c, d) {
351
+ return c*(t/=d)*t + b;
352
+ },
353
+ easeOutQuad: function (x, t, b, c, d) {
354
+ return -c *(t/=d)*(t-2) + b;
355
+ },
356
+ easeInOutQuad: function (x, t, b, c, d) {
357
+ if ((t/=d/2) < 1) return c/2*t*t + b;
358
+ return -c/2 * ((--t)*(t-2) - 1) + b;
359
+ },
360
+ easeInCubic: function (x, t, b, c, d) {
361
+ return c*(t/=d)*t*t + b;
362
+ },
363
+ easeOutCubic: function (x, t, b, c, d) {
364
+ return c*((t=t/d-1)*t*t + 1) + b;
365
+ },
366
+ easeInOutCubic: function (x, t, b, c, d) {
367
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
368
+ return c/2*((t-=2)*t*t + 2) + b;
369
+ },
370
+ easeInQuart: function (x, t, b, c, d) {
371
+ return c*(t/=d)*t*t*t + b;
372
+ },
373
+ easeOutQuart: function (x, t, b, c, d) {
374
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
375
+ },
376
+ easeInOutQuart: function (x, t, b, c, d) {
377
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
378
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
379
+ },
380
+ easeInQuint: function (x, t, b, c, d) {
381
+ return c*(t/=d)*t*t*t*t + b;
382
+ },
383
+ easeOutQuint: function (x, t, b, c, d) {
384
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
385
+ },
386
+ easeInOutQuint: function (x, t, b, c, d) {
387
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
388
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
389
+ },
390
+ easeInSine: function (x, t, b, c, d) {
391
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
392
+ },
393
+ easeOutSine: function (x, t, b, c, d) {
394
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
395
+ },
396
+ easeInOutSine: function (x, t, b, c, d) {
397
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
398
+ },
399
+ easeInExpo: function (x, t, b, c, d) {
400
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
401
+ },
402
+ easeOutExpo: function (x, t, b, c, d) {
403
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
404
+ },
405
+ easeInOutExpo: function (x, t, b, c, d) {
406
+ if (t==0) return b;
407
+ if (t==d) return b+c;
408
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
409
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
410
+ },
411
+ easeInCirc: function (x, t, b, c, d) {
412
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
413
+ },
414
+ easeOutCirc: function (x, t, b, c, d) {
415
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
416
+ },
417
+ easeInOutCirc: function (x, t, b, c, d) {
418
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
419
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
420
+ },
421
+ easeInElastic: function (x, t, b, c, d) {
422
+ var s=1.70158;var p=0;var a=c;
423
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
424
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
425
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
426
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
427
+ },
428
+ easeOutElastic: function (x, t, b, c, d) {
429
+ var s=1.70158;var p=0;var a=c;
430
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
431
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
432
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
433
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
434
+ },
435
+ easeInOutElastic: function (x, t, b, c, d) {
436
+ var s=1.70158;var p=0;var a=c;
437
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
438
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
439
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
440
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
441
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
442
+ },
443
+ easeInBack: function (x, t, b, c, d, s) {
444
+ if (s == undefined) s = 1.70158;
445
+ return c*(t/=d)*t*((s+1)*t - s) + b;
446
+ },
447
+ easeOutBack: function (x, t, b, c, d, s) {
448
+ if (s == undefined) s = 1.70158;
449
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
450
+ },
451
+ easeInOutBack: function (x, t, b, c, d, s) {
452
+ if (s == undefined) s = 1.70158;
453
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
454
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
455
+ },
456
+ easeInBounce: function (x, t, b, c, d) {
457
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
458
+ },
459
+ easeOutBounce: function (x, t, b, c, d) {
460
+ if ((t/=d) < (1/2.75)) {
461
+ return c*(7.5625*t*t) + b;
462
+ } else if (t < (2/2.75)) {
463
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
464
+ } else if (t < (2.5/2.75)) {
465
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
466
+ } else {
467
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
468
+ }
469
+ },
470
+ easeInOutBounce: function (x, t, b, c, d) {
471
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
472
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
473
+ }
474
+ });
475
+
476
+ /*
477
+ *
478
+ * TERMS OF USE - EASING EQUATIONS
479
+ *
480
+ * Open source under the BSD License.
481
+ *
482
+ * Copyright © 2001 Robert Penner
483
+ * All rights reserved.
484
+ *
485
+ * Redistribution and use in source and binary forms, with or without modification,
486
+ * are permitted provided that the following conditions are met:
487
+ *
488
+ * Redistributions of source code must retain the above copyright notice, this list of
489
+ * conditions and the following disclaimer.
490
+ * Redistributions in binary form must reproduce the above copyright notice, this list
491
+ * of conditions and the following disclaimer in the documentation and/or other materials
492
+ * provided with the distribution.
493
+ *
494
+ * Neither the name of the author nor the names of contributors may be used to endorse
495
+ * or promote products derived from this software without specific prior written permission.
496
+ *
497
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
498
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
499
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
500
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
501
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
502
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
503
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
504
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
505
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
506
+ *
507
+ */
508
+
509
+ })(jQuery);
skin/frontend/default/default/js/effects.scale.js ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Effects Scale
3
+ *
4
+ * Copyright (c) 2008 Aaron Eisenberger (aaronchi@gmail.com)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Effects/Scale
9
+ *
10
+ * Depends:
11
+ * effects.core.js
12
+ */
13
+ (function($) {
14
+
15
+ $.effects.puff = function(o) {
16
+
17
+ return this.queue(function() {
18
+
19
+ // Create element
20
+ var el = $(this);
21
+
22
+ // Set options
23
+ var options = $.extend(true, {}, o.options);
24
+ var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
25
+ var percent = parseInt(o.options.percent) || 150; // Set default puff percent
26
+ options.fade = true; // It's not a puff if it doesn't fade! :)
27
+ var original = {height: el.height(), width: el.width()}; // Save original
28
+
29
+ // Adjust
30
+ var factor = percent / 100;
31
+ el.from = (mode == 'hide') ? original : {height: original.height * factor, width: original.width * factor};
32
+
33
+ // Animation
34
+ options.from = el.from;
35
+ options.percent = (mode == 'hide') ? percent : 100;
36
+ options.mode = mode;
37
+
38
+ // Animate
39
+ el.effect('scale', options, o.duration, o.callback);
40
+ el.dequeue();
41
+ });
42
+
43
+ };
44
+
45
+ $.effects.scale = function(o) {
46
+
47
+ return this.queue(function() {
48
+
49
+ // Create element
50
+ var el = $(this);
51
+
52
+ // Set options
53
+ var options = $.extend(true, {}, o.options);
54
+ var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
55
+ var percent = parseInt(o.options.percent) || (parseInt(o.options.percent) == 0 ? 0 : (mode == 'hide' ? 0 : 100)); // Set default scaling percent
56
+ var direction = o.options.direction || 'both'; // Set default axis
57
+ var origin = o.options.origin; // The origin of the scaling
58
+ if (mode != 'effect') { // Set default origin and restore for show/hide
59
+ options.origin = origin || ['middle','center'];
60
+ options.restore = true;
61
+ }
62
+ var original = {height: el.height(), width: el.width()}; // Save original
63
+ el.from = o.options.from || (mode == 'show' ? {height: 0, width: 0} : original); // Default from state
64
+
65
+ // Adjust
66
+ var factor = { // Set scaling factor
67
+ y: direction != 'horizontal' ? (percent / 100) : 1,
68
+ x: direction != 'vertical' ? (percent / 100) : 1
69
+ };
70
+ el.to = {height: original.height * factor.y, width: original.width * factor.x}; // Set to state
71
+
72
+ if (o.options.fade) { // Fade option to support puff
73
+ if (mode == 'show') {el.from.opacity = 0; el.to.opacity = 1;};
74
+ if (mode == 'hide') {el.from.opacity = 1; el.to.opacity = 0;};
75
+ };
76
+
77
+ // Animation
78
+ options.from = el.from; options.to = el.to; options.mode = mode;
79
+
80
+ // Animate
81
+ el.effect('size', options, o.duration, o.callback);
82
+ el.dequeue();
83
+ });
84
+
85
+ };
86
+
87
+ $.effects.size = function(o) {
88
+
89
+ return this.queue(function() {
90
+
91
+ // Create element
92
+ var el = $(this), props = ['position','top','left','width','height','overflow','opacity'];
93
+ var props1 = ['position','top','left','overflow','opacity']; // Always restore
94
+ var props2 = ['width','height','overflow']; // Copy for children
95
+ var cProps = ['fontSize'];
96
+ var vProps = ['borderTopWidth', 'borderBottomWidth', 'paddingTop', 'paddingBottom'];
97
+ var hProps = ['borderLeftWidth', 'borderRightWidth', 'paddingLeft', 'paddingRight'];
98
+
99
+ // Set options
100
+ var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
101
+ var restore = o.options.restore || false; // Default restore
102
+ var scale = o.options.scale || 'both'; // Default scale mode
103
+ var origin = o.options.origin; // The origin of the sizing
104
+ var original = {height: el.height(), width: el.width()}; // Save original
105
+ el.from = o.options.from || original; // Default from state
106
+ el.to = o.options.to || original; // Default to state
107
+ // Adjust
108
+ if (origin) { // Calculate baseline shifts
109
+ var baseline = $.effects.getBaseline(origin, original);
110
+ el.from.top = (original.height - el.from.height) * baseline.y;
111
+ el.from.left = (original.width - el.from.width) * baseline.x;
112
+ el.to.top = (original.height - el.to.height) * baseline.y;
113
+ el.to.left = (original.width - el.to.width) * baseline.x;
114
+ };
115
+ var factor = { // Set scaling factor
116
+ from: {y: el.from.height / original.height, x: el.from.width / original.width},
117
+ to: {y: el.to.height / original.height, x: el.to.width / original.width}
118
+ };
119
+ if (scale == 'box' || scale == 'both') { // Scale the css box
120
+ if (factor.from.y != factor.to.y) { // Vertical props scaling
121
+ props = props.concat(vProps);
122
+ el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from);
123
+ el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to);
124
+ };
125
+ if (factor.from.x != factor.to.x) { // Horizontal props scaling
126
+ props = props.concat(hProps);
127
+ el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from);
128
+ el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to);
129
+ };
130
+ };
131
+ if (scale == 'content' || scale == 'both') { // Scale the content
132
+ if (factor.from.y != factor.to.y) { // Vertical props scaling
133
+ props = props.concat(cProps);
134
+ el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from);
135
+ el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to);
136
+ };
137
+ };
138
+ $.effects.save(el, restore ? props : props1); el.show(); // Save & Show
139
+ $.effects.createWrapper(el); // Create Wrapper
140
+ el.css('overflow','hidden').css(el.from); // Shift
141
+
142
+ // Animate
143
+ if (scale == 'content' || scale == 'both') { // Scale the children
144
+ vProps = vProps.concat(['marginTop','marginBottom']).concat(cProps); // Add margins/font-size
145
+ hProps = hProps.concat(['marginLeft','marginRight']); // Add margins
146
+ props2 = props.concat(vProps).concat(hProps); // Concat
147
+ el.find("*[width]").each(function(){
148
+ child = $(this);
149
+ if (restore) $.effects.save(child, props2);
150
+ var c_original = {height: child.height(), width: child.width()}; // Save original
151
+ child.from = {height: c_original.height * factor.from.y, width: c_original.width * factor.from.x};
152
+ child.to = {height: c_original.height * factor.to.y, width: c_original.width * factor.to.x};
153
+ if (factor.from.y != factor.to.y) { // Vertical props scaling
154
+ child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from);
155
+ child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to);
156
+ };
157
+ if (factor.from.x != factor.to.x) { // Horizontal props scaling
158
+ child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from);
159
+ child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to);
160
+ };
161
+ child.css(child.from); // Shift children
162
+ child.animate(child.to, o.duration, o.options.easing, function(){
163
+ if (restore) $.effects.restore(child, props2); // Restore children
164
+ }); // Animate children
165
+ });
166
+ };
167
+
168
+ // Animate
169
+ el.animate(el.to, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
170
+ if(mode == 'hide') el.hide(); // Hide
171
+ $.effects.restore(el, restore ? props : props1); $.effects.removeWrapper(el); // Restore
172
+ if(o.callback) o.callback.apply(this, arguments); // Callback
173
+ el.dequeue();
174
+ }});
175
+
176
+ });
177
+
178
+ };
179
+
180
+ })(jQuery);
skin/frontend/default/default/js/jquery.jqzoom.js ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //**************************************************************
2
+ // jQZoom allows you to realize a small magnifier window,close
3
+ // to the image or images on your web page easily.
4
+ //
5
+ // jqZoom version 2.2
6
+ // Author Doc. Ing. Renzi Marco(www.mind-projects.it)
7
+ // First Release on Dec 05 2007
8
+ // i'm looking for a job,pick me up!!!
9
+ // mail: renzi.mrc@gmail.com
10
+ //**************************************************************
11
+
12
+ (function($){
13
+
14
+ $.fn.jqueryzoom = function(options){
15
+
16
+ var settings = {
17
+ xzoom: 200, //zoomed width default width
18
+ yzoom: 200, //zoomed div default width
19
+ offset: 10, //zoomed div default offset
20
+ position: "right" ,//zoomed div default position,offset position is to the right of the image
21
+ lens:1, //zooming lens over the image,by default is 1;
22
+ preload: 1,
23
+ anim_scale: 1
24
+
25
+ };
26
+
27
+ if(options) {
28
+ $.extend(settings, options);
29
+ }
30
+
31
+ var noalt='';
32
+
33
+ $(this).hover(function(){
34
+
35
+ var imageLeft = $(this).offset().left;
36
+ var imageTop = $(this).offset().top;
37
+
38
+
39
+ var imageWidth = $(this).children('img').get(0).offsetWidth;
40
+ var imageHeight = $(this).children('img').get(0).offsetHeight;
41
+
42
+
43
+ noalt= $(this).children("img").attr("alt");
44
+
45
+ var bigimage = $(this).children("img").attr("jqimg");
46
+
47
+ $(this).children("img").attr("alt",'');
48
+
49
+ if($("div.zoomdiv").get().length == 0){
50
+
51
+ $(this).after("<div class='zoomdiv'><img class='bigimg' src='"+bigimage+"'/></div>");
52
+
53
+
54
+ $(this).append("<div class='jqZoomPup'>&nbsp;</div>");
55
+
56
+ }
57
+
58
+
59
+ if(settings.position == "right"){
60
+
61
+ if(imageLeft + imageWidth + settings.offset + settings.xzoom > screen.width){
62
+
63
+ leftpos = imageLeft - settings.offset - settings.xzoom;
64
+
65
+ }else{
66
+
67
+ leftpos = imageLeft + imageWidth + settings.offset;
68
+ }
69
+ }else{
70
+ leftpos = imageLeft - settings.xzoom - settings.offset;
71
+ if(leftpos < 0){
72
+
73
+ eftpos = imageLeft + imageWidth + settings.offset;
74
+
75
+ }
76
+
77
+ }
78
+
79
+ var imageLeft2 = $(this).position().left;
80
+ var imageTop2 = $(this).position().top;
81
+ var leftpos2 = imageLeft2 + imageWidth + 10;
82
+ var imageTop2 = imageTop2 + 10;
83
+ $("div.zoomdiv").css({ top: imageTop2,left: leftpos2 });
84
+
85
+ $("div.zoomdiv").width(settings.xzoom);
86
+
87
+ $("div.zoomdiv").height(settings.yzoom);
88
+
89
+ if(settings.anim_scale) {
90
+ $("div.zoomdiv").show("scale", {}, 1000);
91
+ } else {
92
+ $("div.zoomdiv").show();
93
+ }
94
+ if(!settings.lens){
95
+ $(this).css('cursor','crosshair');
96
+ }
97
+
98
+ $(document.body).mousemove(function(e){
99
+
100
+
101
+
102
+ mouse = new MouseEvent(e);
103
+
104
+ /*$("div.jqZoomPup").hide();*/
105
+
106
+
107
+ var bigwidth = $(".bigimg").get(0).offsetWidth;
108
+
109
+ var bigheight = $(".bigimg").get(0).offsetHeight;
110
+
111
+ var scaley ='x';
112
+
113
+ var scalex= 'y';
114
+
115
+
116
+ if(isNaN(scalex)|isNaN(scaley)){
117
+
118
+ var scalex = (bigwidth/imageWidth);
119
+
120
+ var scaley = (bigheight/imageHeight);
121
+
122
+
123
+
124
+
125
+ //$("div.jqZoomPup").width((settings.xzoom)/scalex );
126
+
127
+ // $("div.jqZoomPup").height((settings.yzoom)/scaley);
128
+
129
+ if(settings.lens){
130
+ $("div.jqZoomPup").css('visibility','visible');
131
+ }
132
+
133
+ }
134
+
135
+
136
+
137
+ xpos = mouse.x - $("div.jqZoomPup").width()/2 - imageLeft;
138
+
139
+ ypos = mouse.y - $("div.jqZoomPup").height()/2 - imageTop ;
140
+
141
+ if(settings.lens){
142
+
143
+ xpos = (mouse.x - $("div.jqZoomPup").width()/2 < imageLeft ) ? 0 : (mouse.x + $("div.jqZoomPup").width()/2 > imageWidth + imageLeft ) ? (imageWidth -$("div.jqZoomPup").width() -2) : xpos;
144
+
145
+ ypos = (mouse.y - $("div.jqZoomPup").height()/2 < imageTop ) ? 0 : (mouse.y + $("div.jqZoomPup").height()/2 > imageHeight + imageTop ) ? (imageHeight - $("div.jqZoomPup").height() -2 ) : ypos;
146
+
147
+ }
148
+
149
+
150
+ if(settings.lens){
151
+
152
+ $("div.jqZoomPup").css({ top: ypos,left: xpos });
153
+
154
+ }
155
+
156
+
157
+
158
+ scrolly = ypos;
159
+
160
+ $("div.zoomdiv").get(0).scrollTop = scrolly * scaley;
161
+
162
+ scrollx = xpos;
163
+
164
+ $("div.zoomdiv").get(0).scrollLeft = (scrollx) * scalex ;
165
+
166
+
167
+ });
168
+ },function(){
169
+
170
+ $(this).children("img").attr("alt",noalt);
171
+ $(document.body).unbind("mousemove");
172
+ if(settings.lens){
173
+ $("div.jqZoomPup").remove();
174
+ }
175
+ $("div.zoomdiv").remove();
176
+ $("div#fxWrapper").remove();
177
+ });
178
+
179
+ count = 0;
180
+
181
+ if(settings.preload){
182
+
183
+ $('body').append("<div style='display:none;' class='jqPreload"+count+"'>Loading...</div>");
184
+
185
+ $(this).each(function(){
186
+
187
+ var imagetopreload= $(this).children("img").attr("jqimg");
188
+
189
+ var content = jQuery('div.jqPreload'+count+'').html();
190
+
191
+ jQuery('div.jqPreload'+count+'').html(content+'<img src=\"'+imagetopreload+'\">');
192
+
193
+ });
194
+
195
+ }
196
+
197
+ }
198
+
199
+ })(jQuery);
200
+
201
+ function MouseEvent(e) {
202
+ this.x = e.pageX;
203
+ this.y = e.pageY;
204
+
205
+
206
+ }
207
+
208
+ jQuery(function(){
209
+ jQuery('.product-view .product-img-box .more-views li a').click(function(){
210
+ jQuery('.product-view .product-img-box .more-views li a').removeClass('active');
211
+ jQuery(this).toggleClass('active');
212
+ });
213
+ });
skin/frontend/default/default/js/jquery.rizn.full.size.js ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function($){
2
+ var winWidth = 970, //$('.page').width(),
3
+ leftMargin,
4
+ imgSrc,
5
+ bgc,
6
+ fullViewHtml = [],
7
+ imageHtml,
8
+ productsHtml = [],
9
+ $thumbs = $('.product-view .product-img-box .more-views li');
10
+
11
+ var brc = $('.magnizoom img').attr('brc');
12
+
13
+
14
+ $thumbs.each(function(i, el){
15
+ clone = $(el).clone();
16
+ clone.children().first().removeAttr("onclick");
17
+ productsHtml.push(['<li style="border:solid 1px #',brc,'" class="i'+(i+1)+'">'+clone.html()+'</li>'].join(''));
18
+ });
19
+
20
+ $('.magnizoom').click(function(e){
21
+
22
+ e.preventDefault();
23
+
24
+
25
+ if(typeof document.body.style.maxHeight !== "undefined") {
26
+ leftMargin = ($(document).width() - 970) / 2;
27
+ } else {
28
+ leftMargin = 0;
29
+ }
30
+
31
+ imgElement = $(e.currentTarget).find('img')[0];
32
+ imgSrc = $(imgElement).attr('jqimage');
33
+ bgc = $(imgElement).attr('bgc');
34
+
35
+
36
+
37
+
38
+
39
+ imageHtml = '<img id="full-size-image" src="'+imgSrc+'">';
40
+
41
+
42
+ fullViewHtml = [
43
+ '<div id="full-size-nav" style="left:',leftMargin,'">',
44
+ // '<h6>', $('.product-view .product-shop .product-name h1').text(),'</h6>',
45
+ '<div class="nav-carousel" id="full-carousel" style="background:#',bgc,'">',
46
+ '<ul>',
47
+ productsHtml.join(''),
48
+ '</ul>',
49
+ '</div>',
50
+ '</div>'
51
+ ];
52
+
53
+ var closeimg = $('.magnizoom img').attr('closeimg');
54
+ var closeimgtext = $('.magnizoom img').attr('clicktext');
55
+ if(closeimgtext == "")
56
+ {
57
+ closeimgtext = "click to close";
58
+ }
59
+
60
+ RIZN.overlayPanel({
61
+ title: fullViewHtml.join(''),
62
+ message: imageHtml,
63
+ type: "info",
64
+ theme: "light",
65
+ addClass: "full-size-view",
66
+ top:0,
67
+ width: winWidth,
68
+ onReady: function() {
69
+ $("#lightbox-close").html('<img src="http://'+window.location.hostname+'/skin/frontend/default/default/images/'+closeimg+'" alt="Close" />').prependTo($('#full-size-nav')).click(function(){
70
+
71
+ });
72
+
73
+
74
+ /* Thumbnails Click Event */
75
+ $('.nav-carousel li').click(function(e){
76
+ e.preventDefault();
77
+
78
+ bigImage = $('#full-size-image');
79
+
80
+ myregexp = /i(\d+)/;
81
+ match = myregexp.exec($(this).attr('class'));
82
+
83
+ if(match != null) {
84
+ elementId = match[1];
85
+
86
+ imgElement = $(".magnizoom:nth-child("+elementId+")").find('img')[0];
87
+ newImage = $(imgElement).attr('jqimage');
88
+
89
+ if(bigImage.attr("src") !== newImage){
90
+ $('.nav-carousel li').each(function(i, el){ $(el).removeClass('current'); });
91
+ $(this).addClass("current");
92
+
93
+ $(bigImage).fadeOut(function(){
94
+ bigImage.attr("src", newImage);
95
+ setTimeout(function(){
96
+ $(bigImage).fadeIn();
97
+ },400);
98
+ });
99
+ }
100
+ }
101
+ });
102
+ /* End Thumbnails Click Event */
103
+
104
+ var imgObject = new Image();
105
+ imgObject.src = imgSrc;
106
+
107
+ function testImageLoaded() {
108
+ // test the xlImage object every 100ms to check its width (i.e. is it loaded?)
109
+ var imageLoadedTestInterval;
110
+ var attemptCount = 0;
111
+ var maxAttempts = 100;
112
+
113
+ function isImageLoaded() {
114
+ attemptCount++;
115
+ if(imgObject && imgObject.width > 0 && attemptCount <= maxAttempts) {
116
+ window.clearInterval(imageLoadedTestInterval);
117
+ attemptCount = 0;
118
+ displayFullSizeImage();
119
+ } else if (attemptCount > maxAttempts) {
120
+ window.clearInterval(imageLoadedTestInterval);
121
+ attemptCount = 0;
122
+ }
123
+ }
124
+ imageLoadedTestInterval = window.setInterval(isImageLoaded, 50);
125
+ }
126
+
127
+ testImageLoaded();
128
+
129
+ function displayFullSizeImage() {
130
+ $('#lightbox-middle').animate({
131
+ height:960,
132
+ width:960
133
+ }, 600, function(){
134
+ setTimeout(function(){
135
+ var toolTip = '<div id="zoom-tool-tip"><img src="http://'+window.location.hostname+'/skin/frontend/default/default/images/zoom-close.png" alt="'+closeimgtext+'" /></div>';
136
+
137
+ $('body').append(toolTip);
138
+
139
+ document.getElementById('full-size-image').src = imgObject.src;
140
+
141
+ $('#full-size-image').fadeIn().mousemove(function(e){
142
+ $('#zoom-tool-tip').show();
143
+ $('#zoom-tool-tip').css({
144
+ top: (e.pageY+15) + 'px',
145
+ left: (e.pageX+7) + 'px'
146
+ });
147
+ }).mouseout(function() {
148
+ $('#zoom-tool-tip').hide();
149
+ });
150
+ },400)
151
+ });
152
+ }
153
+
154
+ $('#full-size-image').click(function(e) {
155
+ $('#zoom-tool-tip').hide();
156
+ $("#overlay-mask").fadeOut("fast", function() {
157
+ $(this).remove();
158
+ $('#zoom-tool-tip').hide();
159
+ });
160
+ $("#lightbox-container").fadeOut("fast", function() {
161
+ $(this).remove();
162
+ $('#zoom-tool-tip').hide();
163
+ });
164
+ });
165
+ $("#overlay-mask").click(function(e){});
166
+ }
167
+ });
168
+ });
169
+
170
+ })
skin/frontend/default/default/js/jquery.rizn.overlay.js ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(typeof RIZN == "undefined") {
2
+ var RIZN = {};
3
+ }
4
+
5
+ RIZN.overlayPanel = function(opts) {
6
+
7
+ (function($){
8
+
9
+ var confirmAlt = (opts.type == 'alert') ? 'OK' : 'Confirm' ,
10
+ confirmImg = (opts.type == 'alert') ? '/skin/frontend/default/default/images/ok.gif' : '/skin/frontend/default/default/images/confirm.gif',
11
+ cancelImg = '/skin/frontend/default/default/images/cancel.gif',
12
+
13
+ confirmText = opts.confirmText || '<input type="image" value="'+confirmAlt+'" class="overlay-alert-button lightbox-ok" id="overlay-confirm-button" src="'+confirmImg+'" />',
14
+ cancelText = opts.cancelText || '<input type="image" value="Cancel" class="overlay-alert-button lightbox-cancel" id="overlay-cancel-button" src="'+cancelImg+'" />',
15
+ height = (opts.height) ? "height:"+opts.height+"px;" : "",
16
+ width = (opts.width) ? "width:"+opts.width+"px;" : "width:180px;",
17
+ overlayMaskColour = (opts.theme.toLowerCase() == "light") ? "#FFF" : "#000" ,
18
+ //correction = (navigator.appName.indexOf('Microsoft') != -1) ? 21 : 0 ,
19
+ pageHeight = $(document).height(),
20
+ pageWidth = (navigator.appName.indexOf('Microsoft')!= -1) ? $('body').attr('clientWidth') : $(document).width(),
21
+ modal = opts.modal || false,
22
+ customButtons = opts.customButtons || '',
23
+ closeButton = (modal) ? "" : '<div id="lightbox-close"><img src="/skin/frontend/default/default/images/close-overlay.gif" alt="Close" class="close" /></div>' ,
24
+ mask = (opts.mask) || 'show',
25
+ showMaskCss = (mask == 'show') ? 'display:block':'display:none',
26
+
27
+ // create the overlay mask HTML
28
+ overlayMask = ['<div id="overlay-mask" style="',showMaskCss,'; height:',pageHeight,'px; width:',pageWidth,'px; position:absolute; top:0; left:0; background-color:',overlayMaskColour,'; opacity:0; filter:alpha(opacity=0); z-index:999999;">&nbsp;</div>'].join(""),
29
+ buttons = '';
30
+
31
+ // create the overlay buttons HTML
32
+ switch(opts.type) {
33
+ case 'confirm':
34
+ buttons = confirmText + cancelText;
35
+ break;
36
+ case 'alert':
37
+ buttons = confirmText;
38
+ break;
39
+ case 'custom':
40
+ buttons = customButtons;
41
+ break;
42
+ default:
43
+ buttons = '';
44
+ }
45
+
46
+ // create the overlay dialog HTML
47
+ var alertBox = (opts.type === 'custom' && opts.boxHTML) ?
48
+ opts.overlayHTML
49
+ : [
50
+ '<div id="lightbox-container" style="position:absolute;z-index:1000001;',width,height,'">',
51
+ '<div id="lightbox-top">',closeButton,opts.title,'</div>',
52
+ '<div id="lightbox-middle">',opts.message,'</div>',
53
+ '<div id="lightbox-bottom">',
54
+ buttons,
55
+ '</div></div>'
56
+ ].join("");
57
+
58
+ function hideAlert() {
59
+ $("#overlay-mask").fadeOut("fast", function() {
60
+ $(this).remove();
61
+ });
62
+ $("#lightbox-container").fadeOut("fast", function() {
63
+ $(this).remove();
64
+ });
65
+
66
+ // replace the scrollbars in IE6 (only required for position:fixed dialogs)
67
+ // if(navigator.appVersion.indexOf("MSIE 6.0") != -1) $("html").css("overflow","auto");
68
+ }
69
+
70
+ function showAlert() {
71
+ hideAlert(); // remove any existing dialogs from the page
72
+
73
+ // remove the scrollbars in IE6 (only required for position:fixed dialogs)
74
+ // if(navigator.appVersion.indexOf("MSIE 6.0") != -1) $("html").css("overflow","hidden");
75
+
76
+ var opacity = (opts.theme == "light") ? 1.0 : 0.35 ;
77
+ $(overlayMask)
78
+ .appendTo($("body"))
79
+ .animate({opacity:opacity}, "fast", function() {
80
+ $(alertBox).appendTo($("body"));
81
+
82
+ // calculate the left and top values to position the dialog in the centre of the viewport
83
+ var boxPosX = (typeof opts.left != "undefined") ? opts.left : Math.max((($(window).width())/2) - (parseInt($("#lightbox-container").width())/2) + $(document).scrollLeft(),0),
84
+ // 1/2 width of visible bit - 1/2 width of the dialog box + left scroll offset of the visible bit
85
+ boxPosY = (typeof opts.top != "undefined") ? opts.top : Math.max((($(window).height())/2) - (parseInt($("#lightbox-container").height())/2) + $(document).scrollTop(),0);
86
+ // 1/2 height of visible bit - 1/2 height of the dialog box + top scroll offset of the visible bit
87
+
88
+ $("#lightbox-container")
89
+ .css({
90
+ "left":boxPosX+"px",
91
+ "top":boxPosY+"px"
92
+ })
93
+ .fadeIn("fast", function() {
94
+ if(opts.onReady) opts.onReady();
95
+ });
96
+
97
+ if(typeof opts.addClass != "undefined") {
98
+ $("#lightbox-container").addClass(opts.addClass);
99
+ }
100
+
101
+ bindClicks();
102
+ });
103
+
104
+ if(!modal) {
105
+ $("#overlay-mask").click(function() {
106
+ if(opts.callback) { opts.callback(); }
107
+ hideAlert();
108
+ });
109
+ }
110
+ }
111
+
112
+ function bindClicks() {
113
+ if(opts.type == "confirm") {
114
+ $("#overlay-confirm-button").click(function() {
115
+ if(opts.callback) { opts.callback(true); }
116
+ hideAlert();
117
+ });
118
+ $("#overlay-cancel-button").click(function() {
119
+ if(opts.callback) { opts.callback(false); }
120
+ hideAlert();
121
+ });
122
+ } else {
123
+ $("#overlay-confirm-button").click(function() {
124
+ if(opts.callback) { opts.callback(); }
125
+ hideAlert();
126
+ });
127
+ }
128
+ $("#lightbox-close").click(function() {
129
+ if(opts.callback) { opts.callback(); }
130
+ hideAlert();
131
+ });
132
+ }
133
+
134
+ showAlert();
135
+
136
+ RIZN.overlayPanel.hideAlert = hideAlert;
137
+
138
+ })(jQuery)
139
+ };