Version Notes
Quick Details extension allows you to see product details on mouseover based on setting which is set by you in admin. For magento ver 1.9, it would work for default package not for rwd package. This extension would work magento ver 1.4 and 1.3 also therefore you can download extension and use it.
Download this release
Release Info
Developer | Anupam Tiwari |
Extension | Quick_Detail |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/Vishwasnature/Quickdetail/Helper/Data.php +67 -0
- app/code/community/Vishwasnature/Quickdetail/Model/Attributes.php +19 -0
- app/code/community/Vishwasnature/Quickdetail/etc/config.xml +70 -0
- app/code/community/Vishwasnature/Quickdetail/etc/system.xml +96 -0
- app/design/adminhtml/default/default/layout/quickdetail.xml +8 -0
- app/design/frontend/base/default/layout/quickdetail.xml +95 -0
- app/design/frontend/base/default/template/quickdetail/product/all-list.phtml +32 -0
- app/design/frontend/base/default/template/quickdetail/product/list/list14.phtml +207 -0
- app/design/frontend/base/default/template/quickdetail/product/list/list15.phtml +207 -0
- app/design/frontend/base/default/template/quickdetail/product/list/list16.phtml +207 -0
- app/design/frontend/base/default/template/quickdetail/product/list/list17.phtml +207 -0
- app/etc/modules/Vishwasnature_Quickdetail.xml +9 -0
- js/quickdetail/js/jquery-1.7.2.min.js +6 -0
- js/quickdetail/js/jquery.noconflict.js +1 -0
- js/quickdetail/js/jscolor/arrow.gif +0 -0
- js/quickdetail/js/jscolor/cross.gif +0 -0
- js/quickdetail/js/jscolor/demo.html +12 -0
- js/quickdetail/js/jscolor/hs.png +0 -0
- js/quickdetail/js/jscolor/hv.png +0 -0
- js/quickdetail/js/jscolor/jscolor.js +840 -0
- js/quickdetail/js/tooltip/jquery.dimensions.js +504 -0
- js/quickdetail/js/tooltip/jquery.tooltip.js +299 -0
- js/quickdetail/js/uni_quickdetail.js +37 -0
- package.xml +18 -0
- skin/frontend/base/default/quickdetail/css/custom.css +5 -0
- skin/frontend/base/default/quickdetail/css/jquery.tooltip.css +10 -0
app/code/community/Vishwasnature/Quickdetail/Helper/Data.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Vishwasnature_Quickdetail_Helper_Data extends Mage_Core_Helper_Abstract {
|
4 |
+
|
5 |
+
public function getProductAttributes() {
|
6 |
+
$shownAttribute = Mage::getStoreConfig('quickdetail/viewsettings/specificdetail', Mage::app()->getStore());
|
7 |
+
$sortOrders = $this->getSortOrder();
|
8 |
+
$attributeArray = explode(',', $shownAttribute);
|
9 |
+
if ($sortOrders) {
|
10 |
+
$particularAtrribute = explode(',', $sortOrders);
|
11 |
+
foreach ($particularAtrribute as $attr) {
|
12 |
+
$sortedInfo = explode(':', $attr);
|
13 |
+
$sortedAttribute[$sortedInfo[1]] = $sortedInfo[0];
|
14 |
+
}
|
15 |
+
ksort($sortedAttribute);
|
16 |
+
$attributeArray = array_diff($attributeArray, $sortedAttribute);
|
17 |
+
$sortedAttribute = array_merge($sortedAttribute, $attributeArray);
|
18 |
+
return $sortedAttribute;
|
19 |
+
} else {
|
20 |
+
return $attributeArray;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
public function getHeaderColor() {
|
25 |
+
return Mage::getStoreConfig('quickdetail/viewsettings/vishwasnature_pickcolor', Mage::app()->getStore());
|
26 |
+
}
|
27 |
+
|
28 |
+
public function getBackgroundColor() {
|
29 |
+
return Mage::getStoreConfig('quickdetail/viewsettings/background_color', Mage::app()->getStore());
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getPopupStyle() {
|
33 |
+
$popupwidth = Mage::getStoreConfig('quickdetail/viewsettings/width', Mage::app()->getStore());
|
34 |
+
$popupheight = Mage::getStoreConfig('quickdetail/viewsettings/height', Mage::app()->getStore());
|
35 |
+
$style = '';
|
36 |
+
if ($popupwidth) {
|
37 |
+
$style .= 'width:' . $popupwidth . ($popupwidth == 'auto' ? '' : 'px;');
|
38 |
+
}
|
39 |
+
if ($popupheight) {
|
40 |
+
$style .= 'height:' . $popupheight . ($popupheight == 'auto' ? '' : 'px;');
|
41 |
+
}
|
42 |
+
|
43 |
+
if ($style) {
|
44 |
+
$style = 'style="' . $style . '"';
|
45 |
+
}
|
46 |
+
return $style;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function getSortOrder() {
|
50 |
+
return Mage::getStoreConfig('quickdetail/viewsettings/sort_orders', Mage::app()->getStore());
|
51 |
+
}
|
52 |
+
|
53 |
+
public function getAllCollectionWithDesign() {
|
54 |
+
$allAttributeWithDesign = array();
|
55 |
+
$productAttributesCollection = $this->getProductAttributes();
|
56 |
+
$headercolor = $this->getHeaderColor();
|
57 |
+
$backgorundColor = $this->getBackgroundColor();
|
58 |
+
$popupStyle = $this->getPopupStyle();
|
59 |
+
$collectionAttribute = $productAttributesCollection;
|
60 |
+
$allAttributeWithDesign ['collectionAttribute'] = $collectionAttribute;
|
61 |
+
$allAttributeWithDesign ['popupStyle'] = $popupStyle;
|
62 |
+
$allAttributeWithDesign ['backgorundColor'] = $backgorundColor;
|
63 |
+
$allAttributeWithDesign ['headercolor'] = $headercolor;
|
64 |
+
return $allAttributeWithDesign;
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
app/code/community/Vishwasnature/Quickdetail/Model/Attributes.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Vishwasnature_Quickdetail_Model_Attributes
|
4 |
+
{
|
5 |
+
protected $_options;
|
6 |
+
|
7 |
+
public function toOptionArray()
|
8 |
+
{
|
9 |
+
$attributeArray = array();
|
10 |
+
$collection = Mage::getResourceModel('catalog/product_attribute_collection')->addVisibleFilter();
|
11 |
+
foreach($collection as $col){
|
12 |
+
$attributeArray[] = array(
|
13 |
+
'label' => $col->getAttributeCode(),
|
14 |
+
'value' => $col->getAttributeCode()
|
15 |
+
);
|
16 |
+
}
|
17 |
+
return $attributeArray;
|
18 |
+
}
|
19 |
+
}
|
app/code/community/Vishwasnature/Quickdetail/etc/config.xml
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Vishwasnature_Quickdetail>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Vishwasnature_Quickdetail>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<models>
|
10 |
+
<quickdetail>
|
11 |
+
<class>Vishwasnature_Quickdetail_Model</class>
|
12 |
+
<resourceModel>quickdetail_mysql4</resourceModel>
|
13 |
+
</quickdetail>
|
14 |
+
</models>
|
15 |
+
<helpers>
|
16 |
+
<quickdetail>
|
17 |
+
<class>Vishwasnature_Quickdetail_Helper</class>
|
18 |
+
</quickdetail>
|
19 |
+
</helpers>
|
20 |
+
</global>
|
21 |
+
<frontend>
|
22 |
+
<layout>
|
23 |
+
<updates>
|
24 |
+
<quickdetail>
|
25 |
+
<file>quickdetail.xml</file>
|
26 |
+
</quickdetail>
|
27 |
+
</updates>
|
28 |
+
</layout>
|
29 |
+
</frontend>
|
30 |
+
<adminhtml>
|
31 |
+
<acl>
|
32 |
+
<resources>
|
33 |
+
<admin>
|
34 |
+
<children>
|
35 |
+
<system>
|
36 |
+
<children>
|
37 |
+
<config>
|
38 |
+
<children>
|
39 |
+
<quickdetail translate="title" module="quickdetail">
|
40 |
+
<title>Quickdetail Settings</title>
|
41 |
+
<sort_order>50</sort_order>
|
42 |
+
</quickdetail>
|
43 |
+
</children>
|
44 |
+
</config>
|
45 |
+
</children>
|
46 |
+
</system>
|
47 |
+
</children>
|
48 |
+
</admin>
|
49 |
+
</resources>
|
50 |
+
</acl>
|
51 |
+
<layout>
|
52 |
+
<updates>
|
53 |
+
<quickdetail>
|
54 |
+
<file>quickdetail.xml</file>
|
55 |
+
</quickdetail>
|
56 |
+
</updates>
|
57 |
+
</layout>
|
58 |
+
</adminhtml>
|
59 |
+
<default>
|
60 |
+
<quickdetail>
|
61 |
+
<viewsettings>
|
62 |
+
<enableview>1</enableview>
|
63 |
+
<width>300</width>
|
64 |
+
<height>auto</height>
|
65 |
+
<uni_pickcolor>B393B8</uni_pickcolor>
|
66 |
+
<background_color>FFFFFF</background_color>
|
67 |
+
</viewsettings>
|
68 |
+
</quickdetail>
|
69 |
+
</default>
|
70 |
+
</config>
|
app/code/community/Vishwasnature/Quickdetail/etc/system.xml
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<vishwasnature translate="label" module="quickdetail">
|
5 |
+
<label>Quick Detail</label>
|
6 |
+
<sort_order>100</sort_order>
|
7 |
+
</vishwasnature>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<quickdetail translate="label" module="quickdetail">
|
11 |
+
<label>Quick Detail</label>
|
12 |
+
<tab>vishwasnature</tab>
|
13 |
+
<sort_order>1000</sort_order>
|
14 |
+
<show_in_default>1</show_in_default>
|
15 |
+
<show_in_website>1</show_in_website>
|
16 |
+
<show_in_store>1</show_in_store>
|
17 |
+
<groups>
|
18 |
+
<viewsettings translate="label" module="quickdetail">
|
19 |
+
<label>Product Atrributes</label>
|
20 |
+
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>1000</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<fields>
|
26 |
+
<enableview translate="label">
|
27 |
+
<label>Enable Quick Detail</label>
|
28 |
+
<frontend_type>select</frontend_type>
|
29 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
30 |
+
<sort_order>1</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
</enableview>
|
35 |
+
<width>
|
36 |
+
<label>Popup Width</label>
|
37 |
+
<frontend_type>text</frontend_type>
|
38 |
+
<sort_order>2</sort_order>
|
39 |
+
<show_in_default>1</show_in_default>
|
40 |
+
<show_in_website>1</show_in_website>
|
41 |
+
<show_in_store>1</show_in_store>
|
42 |
+
<comment>Eg: 100</comment>
|
43 |
+
</width>
|
44 |
+
<height>
|
45 |
+
<label>Popup Height</label>
|
46 |
+
<frontend_type>text</frontend_type>
|
47 |
+
<sort_order>3</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 |
+
<comment>Eg: 100</comment>
|
52 |
+
</height>
|
53 |
+
<vishwasnature_pickcolor>
|
54 |
+
<label>Popup Header Background Color</label>
|
55 |
+
<frontend_type>text</frontend_type>
|
56 |
+
<validate>color</validate> <!-- This is important -->
|
57 |
+
<sort_order>4</sort_order>
|
58 |
+
<show_in_default>1</show_in_default>
|
59 |
+
<show_in_website>1</show_in_website>
|
60 |
+
<show_in_store>1</show_in_store>
|
61 |
+
<comment>Specify the Header background color.</comment>
|
62 |
+
</vishwasnature_pickcolor>
|
63 |
+
<background_color>
|
64 |
+
<label>Popup Content Background Color</label>
|
65 |
+
<frontend_type>text</frontend_type>
|
66 |
+
<validate>color</validate> <!-- This is important -->
|
67 |
+
<sort_order>5</sort_order>
|
68 |
+
<show_in_default>1</show_in_default>
|
69 |
+
<show_in_website>1</show_in_website>
|
70 |
+
<show_in_store>1</show_in_store>
|
71 |
+
<comment>Specify the Content background color.</comment>
|
72 |
+
</background_color>
|
73 |
+
<specificdetail translate="label">
|
74 |
+
<label>Specific Product Details</label>
|
75 |
+
<frontend_type>multiselect</frontend_type>
|
76 |
+
<sort_order>10</sort_order>
|
77 |
+
<source_model>quickdetail/attributes</source_model>
|
78 |
+
<show_in_default>1</show_in_default>
|
79 |
+
<show_in_website>1</show_in_website>
|
80 |
+
<show_in_store>1</show_in_store>
|
81 |
+
</specificdetail>
|
82 |
+
<sort_orders>
|
83 |
+
<label>Attribute Show in Sort Order</label>
|
84 |
+
<frontend_type>textarea</frontend_type>
|
85 |
+
<sort_order>11</sort_order>
|
86 |
+
<show_in_default>1</show_in_default>
|
87 |
+
<show_in_website>1</show_in_website>
|
88 |
+
<show_in_store>1</show_in_store>
|
89 |
+
<comment>attribute_code:sort_order, Eg: color:1,manufacturer:2</comment>
|
90 |
+
</sort_orders>
|
91 |
+
</fields>
|
92 |
+
</viewsettings>
|
93 |
+
</groups>
|
94 |
+
</quickdetail>
|
95 |
+
</sections>
|
96 |
+
</config>
|
app/design/adminhtml/default/default/layout/quickdetail.xml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<adminhtml_system_config_edit>
|
4 |
+
<reference name="head">
|
5 |
+
<action method="addJs"><file>quickdetail/js/jscolor/jscolor.js</file></action>
|
6 |
+
</reference>
|
7 |
+
</adminhtml_system_config_edit>
|
8 |
+
</layout>
|
app/design/frontend/base/default/layout/quickdetail.xml
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<catalog_category_default>
|
4 |
+
<reference name="head" ifconfig="quickdetail/viewsetting/enableview">
|
5 |
+
<action method="addJs"><script>quickdetail/js/jquery-1.7.2.min.js</script></action>
|
6 |
+
<action method="addJs"><script>quickdetail/js/jquery.noconflict.js</script></action>
|
7 |
+
<action method="addJs"><script>quickdetail/js/uni_quickdetail.js</script></action>
|
8 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.dimensions.js</script></action>
|
9 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.tooltip.js</script></action>
|
10 |
+
<action method="addCss"><stylesheet>quickdetail/css/jquery.tooltip.css</stylesheet></action>
|
11 |
+
<action method="addCss"><stylesheet>quickdetail/css/custom.css</stylesheet></action>
|
12 |
+
</reference>
|
13 |
+
<reference name="product_list">
|
14 |
+
<action method="setTemplate"><template>quickdetail/product/all-list.phtml</template></action>
|
15 |
+
<block type="catalog/product_list" name="list14" template="quickdetail/product/list/list14.phtml"/>
|
16 |
+
<block type="catalog/product_list" name="list15" template="quickdetail/product/list/list15.phtml"/>
|
17 |
+
<block type="catalog/product_list" name="list16" template="quickdetail/product/list/list16.phtml"/>
|
18 |
+
<block type="catalog/product_list" name="list17" template="quickdetail/product/list/list17.phtml"/>
|
19 |
+
</reference>
|
20 |
+
</catalog_category_default>
|
21 |
+
<catalog_category_layered>
|
22 |
+
<reference name="head" ifconfig="quickdetail/viewsetting/enableview">
|
23 |
+
<action method="addJs"><script>quickdetail/js/jquery-1.7.2.min.js</script></action>
|
24 |
+
<action method="addJs"><script>quickdetail/js/jquery.noconflict.js</script></action>
|
25 |
+
<action method="addJs"><script>quickdetail/js/uni_quickdetail.js</script></action>
|
26 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.dimensions.js</script></action>
|
27 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.tooltip.js</script></action>
|
28 |
+
<action method="addCss"><stylesheet>quickdetail/css/jquery.tooltip.css</stylesheet></action>
|
29 |
+
<action method="addCss"><stylesheet>quickdetail/css/custom.css</stylesheet></action>
|
30 |
+
</reference>
|
31 |
+
<reference name="product_list">
|
32 |
+
<action method="setTemplate"><template>quickdetail/product/all-list.phtml</template></action>
|
33 |
+
<block type="catalog/product_list" name="list14" template="quickdetail/product/list/list14.phtml"/>
|
34 |
+
<block type="catalog/product_list" name="list15" template="quickdetail/product/list/list15.phtml"/>
|
35 |
+
<block type="catalog/product_list" name="list16" template="quickdetail/product/list/list16.phtml"/>
|
36 |
+
<block type="catalog/product_list" name="list17" template="quickdetail/product/list/list17.phtml"/>
|
37 |
+
</reference>
|
38 |
+
</catalog_category_layered>
|
39 |
+
<catalogsearch_result_index>
|
40 |
+
<reference name="head" ifconfig="quickdetail/viewsetting/enableview">
|
41 |
+
<action method="addJs"><script>quickdetail/js/jquery-1.7.2.min.js</script></action>
|
42 |
+
<action method="addJs"><script>quickdetail/js/jquery.noconflict.js</script></action>
|
43 |
+
<action method="addJs"><script>quickdetail/js/uni_quickdetail.js</script></action>
|
44 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.dimensions.js</script></action>
|
45 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.tooltip.js</script></action>
|
46 |
+
<action method="addCss"><stylesheet>quickdetail/css/jquery.tooltip.css</stylesheet></action>
|
47 |
+
<action method="addCss"><stylesheet>quickdetail/css/custom.css</stylesheet></action>
|
48 |
+
</reference>
|
49 |
+
<reference name="search_result_list">
|
50 |
+
<action method="setTemplate"><template>quickdetail/product/all-list.phtml</template></action>
|
51 |
+
<block type="catalog/product_list" name="list14" template="quickdetail/product/list/list14.phtml"/>
|
52 |
+
<block type="catalog/product_list" name="list15" template="quickdetail/product/list/list15.phtml"/>
|
53 |
+
<block type="catalog/product_list" name="list16" template="quickdetail/product/list/list16.phtml"/>
|
54 |
+
<block type="catalog/product_list" name="list17" template="quickdetail/product/list/list17.phtml"/>
|
55 |
+
</reference>
|
56 |
+
</catalogsearch_result_index>
|
57 |
+
<catalogsearch_advanced_result>
|
58 |
+
<reference name="head" ifconfig="quickdetail/viewsetting/enableview">
|
59 |
+
<action method="addJs"><script>quickdetail/js/jquery-1.7.2.min.js</script></action>
|
60 |
+
<action method="addJs"><script>quickdetail/js/jquery.noconflict.js</script></action>
|
61 |
+
<action method="addJs"><script>quickdetail/js/uni_quickdetail.js</script></action>
|
62 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.dimensions.js</script></action>
|
63 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.tooltip.js</script></action>
|
64 |
+
<action method="addCss"><stylesheet>quickdetail/css/jquery.tooltip.css</stylesheet></action>
|
65 |
+
<action method="addCss"><stylesheet>quickdetail/css/custom.css</stylesheet></action>
|
66 |
+
</reference>
|
67 |
+
<reference name="search_result_list">
|
68 |
+
<action method="setTemplate"><template>quickdetail/product/all-list.phtml</template></action>
|
69 |
+
<block type="catalog/product_list" name="list14" template="quickdetail/product/list/list14.phtml"/>
|
70 |
+
<block type="catalog/product_list" name="list15" template="quickdetail/product/list/list15.phtml"/>
|
71 |
+
<block type="catalog/product_list" name="list16" template="quickdetail/product/list/list16.phtml"/>
|
72 |
+
<block type="catalog/product_list" name="list17" template="quickdetail/product/list/list17.phtml"/>
|
73 |
+
</reference>
|
74 |
+
</catalogsearch_advanced_result>
|
75 |
+
<tag_product_list>
|
76 |
+
<reference name="head" ifconfig="quickdetail/viewsetting/enableview">
|
77 |
+
<action method="addJs"><script>quickdetail/js/jquery-1.7.2.min.js</script></action>
|
78 |
+
<action method="addJs"><script>quickdetail/js/jquery.noconflict.js</script></action>
|
79 |
+
<action method="addJs"><script>quickdetail/js/uni_quickdetail.js</script></action>
|
80 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.dimensions.js</script></action>
|
81 |
+
<action method="addJs"><script>quickdetail/js/tooltip/jquery.tooltip.js</script></action>
|
82 |
+
<action method="addCss"><stylesheet>quickdetail/css/jquery.tooltip.css</stylesheet></action>
|
83 |
+
<action method="addCss"><stylesheet>quickdetail/css/custom.css</stylesheet></action>
|
84 |
+
</reference>
|
85 |
+
<reference name="search_result_list">
|
86 |
+
<action method="setTemplate"><template>quickdetail/product/all-list.phtml</template></action>
|
87 |
+
<block type="catalog/product_list" name="list14" template="quickdetail/product/list/list14.phtml"/>
|
88 |
+
<block type="catalog/product_list" name="list15" template="quickdetail/product/list/list15.phtml"/>
|
89 |
+
<block type="catalog/product_list" name="list16" template="quickdetail/product/list/list16.phtml"/>
|
90 |
+
<block type="catalog/product_list" name="list17" template="quickdetail/product/list/list17.phtml"/>
|
91 |
+
</reference>
|
92 |
+
</tag_product_list>
|
93 |
+
|
94 |
+
|
95 |
+
</layout>
|
app/design/frontend/base/default/template/quickdetail/product/all-list.phtml
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Unicode Systems
|
4 |
+
* @category Uni
|
5 |
+
* @package Uni_Autoregister
|
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 |
+
<!-- Quick Details -->
|
11 |
+
<?php
|
12 |
+
$version = substr(Mage::getVersion(), 0,3);
|
13 |
+
$template = '';
|
14 |
+
switch ($version) {
|
15 |
+
case '1.4':
|
16 |
+
$template = $this->getChildHtml('list14');
|
17 |
+
break;
|
18 |
+
case '1.5':
|
19 |
+
$template = $this->getChildHtml('list15');
|
20 |
+
break;
|
21 |
+
case '1.6':
|
22 |
+
$template = $this->getChildHtml('list16');
|
23 |
+
break;
|
24 |
+
case '1.7':
|
25 |
+
$template = $this->getChildHtml('list17');
|
26 |
+
break;
|
27 |
+
default :
|
28 |
+
$template = $this->getChildHtml('list17');
|
29 |
+
break;
|
30 |
+
}
|
31 |
+
echo $template;
|
32 |
+
?>
|
app/design/frontend/base/default/template/quickdetail/product/list/list14.phtml
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package base_default
|
23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Product list template
|
30 |
+
*
|
31 |
+
* @see Mage_Catalog_Block_Product_List
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<?php
|
35 |
+
$_productCollection = $this->getLoadedProductCollection();
|
36 |
+
$_helper = $this->helper('catalog/output');
|
37 |
+
?>
|
38 |
+
<?php $productAttributesCollectionWithDesign = $this->helper('quickdetail')->getAllCollectionWithDesign();?>
|
39 |
+
<?php $productObj = Mage::getModel('catalog/product'); ?>
|
40 |
+
<?php $eavObj = Mage::getModel( 'eav/config' ); ?>
|
41 |
+
<div id="background_color_info" value="<?php echo $productAttributesCollectionWithDesign['backgorundColor']; ?>"></div>
|
42 |
+
|
43 |
+
<?php if (!$_productCollection->count()): ?>
|
44 |
+
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
|
45 |
+
<?php else: ?>
|
46 |
+
<div class="category-products">
|
47 |
+
<?php echo $this->getToolbarHtml() ?>
|
48 |
+
<?php // List mode ?>
|
49 |
+
<?php if ($this->getMode() != 'grid'): ?>
|
50 |
+
<?php $_iterator = 0; ?>
|
51 |
+
<ol class="products-list" id="products-list">
|
52 |
+
<?php foreach ($_productCollection as $_product): ?>
|
53 |
+
<li class="item<?php if (++$_iterator == sizeof($_productCollection)): ?> last<?php endif; ?>">
|
54 |
+
<?php // Product Image ?>
|
55 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
56 |
+
<?php // Product description ?>
|
57 |
+
<div class="product-shop">
|
58 |
+
<div class="f-fix">
|
59 |
+
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
|
60 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name'); ?></a></h2>
|
61 |
+
<?php if ($_product->getRatingSummary()): ?>
|
62 |
+
<?php echo $this->getReviewsSummaryHtml($_product) ?>
|
63 |
+
<?php endif; ?>
|
64 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
65 |
+
<?php if ($_product->isSaleable()): ?>
|
66 |
+
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
|
67 |
+
<?php else: ?>
|
68 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
69 |
+
<?php endif; ?>
|
70 |
+
<div class="desc std">
|
71 |
+
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
|
72 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
|
73 |
+
</div>
|
74 |
+
<ul class="add-to-links">
|
75 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
76 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
77 |
+
<?php endif; ?>
|
78 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
79 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
80 |
+
<?php endif; ?>
|
81 |
+
</ul>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div class="quickdetail_div">
|
85 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
86 |
+
<div class="head-text">
|
87 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
88 |
+
</div>
|
89 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
90 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
91 |
+
<div class="attribute_detail">
|
92 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
93 |
+
$attributeCode = $selectattribute;
|
94 |
+
$productAttributes = $_product->getAttributes();
|
95 |
+
$attributeValue = null;
|
96 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
97 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
98 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
99 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
100 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
101 |
+
}else{
|
102 |
+
$attributeValue = $productModel->getData($attributeCode);
|
103 |
+
}
|
104 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
105 |
+
?>
|
106 |
+
<?php if($attributeValue): ?>
|
107 |
+
<div class="product_attribute_collection">
|
108 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
109 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
110 |
+
</div>
|
111 |
+
<?php endif; ?>
|
112 |
+
<?php endif; ?>
|
113 |
+
|
114 |
+
<?php endforeach; ?>
|
115 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
</li>
|
120 |
+
<?php endforeach; ?>
|
121 |
+
</ol>
|
122 |
+
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
|
123 |
+
|
124 |
+
<?php else: ?>
|
125 |
+
|
126 |
+
<?php // Grid Mode ?>
|
127 |
+
|
128 |
+
<?php $_collectionSize = $_productCollection->count() ?>
|
129 |
+
<?php $_columnCount = $this->getColumnCount(); ?>
|
130 |
+
<?php $i = 0;
|
131 |
+
foreach ($_productCollection as $_product): ?>
|
132 |
+
<?php if ($i++ % $_columnCount == 0): ?>
|
133 |
+
<ul class="products-grid">
|
134 |
+
<?php endif ?>
|
135 |
+
<li class="item<?php if (($i - 1) % $_columnCount == 0): ?> first<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>">
|
136 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
137 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
|
138 |
+
<?php if ($_product->getRatingSummary()): ?>
|
139 |
+
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
|
140 |
+
<?php endif; ?>
|
141 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
142 |
+
<div class="actions">
|
143 |
+
<?php if ($_product->isSaleable()): ?>
|
144 |
+
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
|
145 |
+
<?php else: ?>
|
146 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
147 |
+
<?php endif; ?>
|
148 |
+
<ul class="add-to-links">
|
149 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
150 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
151 |
+
<?php endif; ?>
|
152 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
153 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
154 |
+
<?php endif; ?>
|
155 |
+
</ul>
|
156 |
+
</div>
|
157 |
+
|
158 |
+
<div class="quickdetail_div">
|
159 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
160 |
+
<div class="head-text">
|
161 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
162 |
+
</div>
|
163 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
164 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
165 |
+
<div class="attribute_detail">
|
166 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
167 |
+
$attributeCode = $selectattribute;
|
168 |
+
$productAttributes = $_product->getAttributes();
|
169 |
+
$attributeValue = null;
|
170 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
171 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
172 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
173 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
174 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
175 |
+
}else{
|
176 |
+
$attributeValue = $productModel->getData($attributeCode);
|
177 |
+
}
|
178 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
179 |
+
?>
|
180 |
+
<?php if($attributeValue): ?>
|
181 |
+
<div class="product_attribute_collection">
|
182 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
183 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
184 |
+
</div>
|
185 |
+
<?php endif; ?>
|
186 |
+
<?php endif; ?>
|
187 |
+
|
188 |
+
<?php endforeach; ?>
|
189 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
190 |
+
</div>
|
191 |
+
</div>
|
192 |
+
</div>
|
193 |
+
|
194 |
+
|
195 |
+
</li>
|
196 |
+
<?php if ($i % $_columnCount == 0 || $i == $_collectionSize): ?>
|
197 |
+
</ul>
|
198 |
+
<?php endif ?>
|
199 |
+
<?php endforeach ?>
|
200 |
+
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
|
201 |
+
<?php endif; ?>
|
202 |
+
|
203 |
+
<div class="toolbar-bottom">
|
204 |
+
<?php echo $this->getToolbarHtml() ?>
|
205 |
+
</div>
|
206 |
+
</div>
|
207 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/quickdetail/product/list/list15.phtml
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package base_default
|
23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Product list template
|
30 |
+
*
|
31 |
+
* @see Mage_Catalog_Block_Product_List
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<?php
|
35 |
+
$_productCollection = $this->getLoadedProductCollection();
|
36 |
+
$_helper = $this->helper('catalog/output');
|
37 |
+
?>
|
38 |
+
<?php $productAttributesCollectionWithDesign = $this->helper('quickdetail')->getAllCollectionWithDesign();?>
|
39 |
+
<?php $productObj = Mage::getModel('catalog/product'); ?>
|
40 |
+
<?php $eavObj = Mage::getModel( 'eav/config' ); ?>
|
41 |
+
<div id="background_color_info" value="<?php echo $productAttributesCollectionWithDesign['backgorundColor']; ?>"></div>
|
42 |
+
|
43 |
+
<?php if (!$_productCollection->count()): ?>
|
44 |
+
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
|
45 |
+
<?php else: ?>
|
46 |
+
<div class="category-products">
|
47 |
+
<?php echo $this->getToolbarHtml() ?>
|
48 |
+
<?php // List mode ?>
|
49 |
+
<?php if ($this->getMode() != 'grid'): ?>
|
50 |
+
<?php $_iterator = 0; ?>
|
51 |
+
<ol class="products-list" id="products-list">
|
52 |
+
<?php foreach ($_productCollection as $_product): ?>
|
53 |
+
<li class="item<?php if (++$_iterator == sizeof($_productCollection)): ?> last<?php endif; ?>">
|
54 |
+
<?php // Product Image ?>
|
55 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
56 |
+
<?php // Product description ?>
|
57 |
+
<div class="product-shop">
|
58 |
+
<div class="f-fix">
|
59 |
+
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
|
60 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name'); ?></a></h2>
|
61 |
+
<?php if ($_product->getRatingSummary()): ?>
|
62 |
+
<?php echo $this->getReviewsSummaryHtml($_product) ?>
|
63 |
+
<?php endif; ?>
|
64 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
65 |
+
<?php if ($_product->isSaleable()): ?>
|
66 |
+
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
|
67 |
+
<?php else: ?>
|
68 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
69 |
+
<?php endif; ?>
|
70 |
+
<div class="desc std">
|
71 |
+
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
|
72 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
|
73 |
+
</div>
|
74 |
+
<ul class="add-to-links">
|
75 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
76 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
77 |
+
<?php endif; ?>
|
78 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
79 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
80 |
+
<?php endif; ?>
|
81 |
+
</ul>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div class="quickdetail_div">
|
85 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
86 |
+
<div class="head-text">
|
87 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
88 |
+
</div>
|
89 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
90 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
91 |
+
<div class="attribute_detail">
|
92 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
93 |
+
$attributeCode = $selectattribute;
|
94 |
+
$productAttributes = $_product->getAttributes();
|
95 |
+
$attributeValue = null;
|
96 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
97 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
98 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
99 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
100 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
101 |
+
}else{
|
102 |
+
$attributeValue = $productModel->getData($attributeCode);
|
103 |
+
}
|
104 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
105 |
+
?>
|
106 |
+
<?php if($attributeValue): ?>
|
107 |
+
<div class="product_attribute_collection">
|
108 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
109 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
110 |
+
</div>
|
111 |
+
<?php endif; ?>
|
112 |
+
<?php endif; ?>
|
113 |
+
|
114 |
+
<?php endforeach; ?>
|
115 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
</li>
|
120 |
+
<?php endforeach; ?>
|
121 |
+
</ol>
|
122 |
+
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
|
123 |
+
|
124 |
+
<?php else: ?>
|
125 |
+
|
126 |
+
<?php // Grid Mode ?>
|
127 |
+
|
128 |
+
<?php $_collectionSize = $_productCollection->count() ?>
|
129 |
+
<?php $_columnCount = $this->getColumnCount(); ?>
|
130 |
+
<?php $i = 0;
|
131 |
+
foreach ($_productCollection as $_product): ?>
|
132 |
+
<?php if ($i++ % $_columnCount == 0): ?>
|
133 |
+
<ul class="products-grid">
|
134 |
+
<?php endif ?>
|
135 |
+
<li class="item<?php if (($i - 1) % $_columnCount == 0): ?> first<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>">
|
136 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
137 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
|
138 |
+
<?php if ($_product->getRatingSummary()): ?>
|
139 |
+
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
|
140 |
+
<?php endif; ?>
|
141 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
142 |
+
<div class="actions">
|
143 |
+
<?php if ($_product->isSaleable()): ?>
|
144 |
+
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
|
145 |
+
<?php else: ?>
|
146 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
147 |
+
<?php endif; ?>
|
148 |
+
<ul class="add-to-links">
|
149 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
150 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
151 |
+
<?php endif; ?>
|
152 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
153 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
154 |
+
<?php endif; ?>
|
155 |
+
</ul>
|
156 |
+
</div>
|
157 |
+
|
158 |
+
<div class="quickdetail_div">
|
159 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
160 |
+
<div class="head-text">
|
161 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
162 |
+
</div>
|
163 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
164 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
165 |
+
<div class="attribute_detail">
|
166 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
167 |
+
$attributeCode = $selectattribute;
|
168 |
+
$productAttributes = $_product->getAttributes();
|
169 |
+
$attributeValue = null;
|
170 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
171 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
172 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
173 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
174 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
175 |
+
}else{
|
176 |
+
$attributeValue = $productModel->getData($attributeCode);
|
177 |
+
}
|
178 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
179 |
+
?>
|
180 |
+
<?php if($attributeValue): ?>
|
181 |
+
<div class="product_attribute_collection">
|
182 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
183 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
184 |
+
</div>
|
185 |
+
<?php endif; ?>
|
186 |
+
<?php endif; ?>
|
187 |
+
|
188 |
+
<?php endforeach; ?>
|
189 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
190 |
+
</div>
|
191 |
+
</div>
|
192 |
+
</div>
|
193 |
+
|
194 |
+
|
195 |
+
</li>
|
196 |
+
<?php if ($i % $_columnCount == 0 || $i == $_collectionSize): ?>
|
197 |
+
</ul>
|
198 |
+
<?php endif ?>
|
199 |
+
<?php endforeach ?>
|
200 |
+
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
|
201 |
+
<?php endif; ?>
|
202 |
+
|
203 |
+
<div class="toolbar-bottom">
|
204 |
+
<?php echo $this->getToolbarHtml() ?>
|
205 |
+
</div>
|
206 |
+
</div>
|
207 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/quickdetail/product/list/list16.phtml
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package base_default
|
23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Product list template
|
30 |
+
*
|
31 |
+
* @see Mage_Catalog_Block_Product_List
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<?php
|
35 |
+
$_productCollection = $this->getLoadedProductCollection();
|
36 |
+
$_helper = $this->helper('catalog/output');
|
37 |
+
?>
|
38 |
+
<?php $productAttributesCollectionWithDesign = $this->helper('quickdetail')->getAllCollectionWithDesign();?>
|
39 |
+
<?php $productObj = Mage::getModel('catalog/product'); ?>
|
40 |
+
<?php $eavObj = Mage::getModel( 'eav/config' ); ?>
|
41 |
+
<div id="background_color_info" value="<?php echo $productAttributesCollectionWithDesign['backgorundColor']; ?>"></div>
|
42 |
+
|
43 |
+
<?php if (!$_productCollection->count()): ?>
|
44 |
+
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
|
45 |
+
<?php else: ?>
|
46 |
+
<div class="category-products">
|
47 |
+
<?php echo $this->getToolbarHtml() ?>
|
48 |
+
<?php // List mode ?>
|
49 |
+
<?php if ($this->getMode() != 'grid'): ?>
|
50 |
+
<?php $_iterator = 0; ?>
|
51 |
+
<ol class="products-list" id="products-list">
|
52 |
+
<?php foreach ($_productCollection as $_product): ?>
|
53 |
+
<li class="item<?php if (++$_iterator == sizeof($_productCollection)): ?> last<?php endif; ?>">
|
54 |
+
<?php // Product Image ?>
|
55 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
56 |
+
<?php // Product description ?>
|
57 |
+
<div class="product-shop">
|
58 |
+
<div class="f-fix">
|
59 |
+
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
|
60 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name'); ?></a></h2>
|
61 |
+
<?php if ($_product->getRatingSummary()): ?>
|
62 |
+
<?php echo $this->getReviewsSummaryHtml($_product) ?>
|
63 |
+
<?php endif; ?>
|
64 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
65 |
+
<?php if ($_product->isSaleable()): ?>
|
66 |
+
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
|
67 |
+
<?php else: ?>
|
68 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
69 |
+
<?php endif; ?>
|
70 |
+
<div class="desc std">
|
71 |
+
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
|
72 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
|
73 |
+
</div>
|
74 |
+
<ul class="add-to-links">
|
75 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
76 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
77 |
+
<?php endif; ?>
|
78 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
79 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
80 |
+
<?php endif; ?>
|
81 |
+
</ul>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div class="quickdetail_div">
|
85 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
86 |
+
<div class="head-text">
|
87 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
88 |
+
</div>
|
89 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
90 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
91 |
+
<div class="attribute_detail">
|
92 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
93 |
+
$attributeCode = $selectattribute;
|
94 |
+
$productAttributes = $_product->getAttributes();
|
95 |
+
$attributeValue = null;
|
96 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
97 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
98 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
99 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
100 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
101 |
+
}else{
|
102 |
+
$attributeValue = $productModel->getData($attributeCode);
|
103 |
+
}
|
104 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
105 |
+
?>
|
106 |
+
<?php if($attributeValue): ?>
|
107 |
+
<div class="product_attribute_collection">
|
108 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
109 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
110 |
+
</div>
|
111 |
+
<?php endif; ?>
|
112 |
+
<?php endif; ?>
|
113 |
+
|
114 |
+
<?php endforeach; ?>
|
115 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
</li>
|
120 |
+
<?php endforeach; ?>
|
121 |
+
</ol>
|
122 |
+
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
|
123 |
+
|
124 |
+
<?php else: ?>
|
125 |
+
|
126 |
+
<?php // Grid Mode ?>
|
127 |
+
|
128 |
+
<?php $_collectionSize = $_productCollection->count() ?>
|
129 |
+
<?php $_columnCount = $this->getColumnCount(); ?>
|
130 |
+
<?php $i = 0;
|
131 |
+
foreach ($_productCollection as $_product): ?>
|
132 |
+
<?php if ($i++ % $_columnCount == 0): ?>
|
133 |
+
<ul class="products-grid">
|
134 |
+
<?php endif ?>
|
135 |
+
<li class="item<?php if (($i - 1) % $_columnCount == 0): ?> first<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>">
|
136 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
137 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
|
138 |
+
<?php if ($_product->getRatingSummary()): ?>
|
139 |
+
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
|
140 |
+
<?php endif; ?>
|
141 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
142 |
+
<div class="actions">
|
143 |
+
<?php if ($_product->isSaleable()): ?>
|
144 |
+
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
|
145 |
+
<?php else: ?>
|
146 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
147 |
+
<?php endif; ?>
|
148 |
+
<ul class="add-to-links">
|
149 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
150 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
151 |
+
<?php endif; ?>
|
152 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
153 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
154 |
+
<?php endif; ?>
|
155 |
+
</ul>
|
156 |
+
</div>
|
157 |
+
|
158 |
+
<div class="quickdetail_div">
|
159 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
160 |
+
<div class="head-text">
|
161 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
162 |
+
</div>
|
163 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
164 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
165 |
+
<div class="attribute_detail">
|
166 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
167 |
+
$attributeCode = $selectattribute;
|
168 |
+
$productAttributes = $_product->getAttributes();
|
169 |
+
$attributeValue = null;
|
170 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
171 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
172 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
173 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
174 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
175 |
+
}else{
|
176 |
+
$attributeValue = $productModel->getData($attributeCode);
|
177 |
+
}
|
178 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
179 |
+
?>
|
180 |
+
<?php if($attributeValue): ?>
|
181 |
+
<div class="product_attribute_collection">
|
182 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
183 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
184 |
+
</div>
|
185 |
+
<?php endif; ?>
|
186 |
+
<?php endif; ?>
|
187 |
+
|
188 |
+
<?php endforeach; ?>
|
189 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
190 |
+
</div>
|
191 |
+
</div>
|
192 |
+
</div>
|
193 |
+
|
194 |
+
|
195 |
+
</li>
|
196 |
+
<?php if ($i % $_columnCount == 0 || $i == $_collectionSize): ?>
|
197 |
+
</ul>
|
198 |
+
<?php endif ?>
|
199 |
+
<?php endforeach ?>
|
200 |
+
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
|
201 |
+
<?php endif; ?>
|
202 |
+
|
203 |
+
<div class="toolbar-bottom">
|
204 |
+
<?php echo $this->getToolbarHtml() ?>
|
205 |
+
</div>
|
206 |
+
</div>
|
207 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/quickdetail/product/list/list17.phtml
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package base_default
|
23 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Product list template
|
30 |
+
*
|
31 |
+
* @see Mage_Catalog_Block_Product_List
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<?php
|
35 |
+
$_productCollection = $this->getLoadedProductCollection();
|
36 |
+
$_helper = $this->helper('catalog/output');
|
37 |
+
?>
|
38 |
+
<?php $productAttributesCollectionWithDesign = $this->helper('quickdetail')->getAllCollectionWithDesign();?>
|
39 |
+
<?php $productObj = Mage::getModel('catalog/product'); ?>
|
40 |
+
<?php $eavObj = Mage::getModel( 'eav/config' ); ?>
|
41 |
+
<div id="background_color_info" value="<?php echo $productAttributesCollectionWithDesign['backgorundColor']; ?>"></div>
|
42 |
+
|
43 |
+
<?php if (!$_productCollection->count()): ?>
|
44 |
+
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
|
45 |
+
<?php else: ?>
|
46 |
+
<div class="category-products">
|
47 |
+
<?php echo $this->getToolbarHtml() ?>
|
48 |
+
<?php // List mode ?>
|
49 |
+
<?php if ($this->getMode() != 'grid'): ?>
|
50 |
+
<?php $_iterator = 0; ?>
|
51 |
+
<ol class="products-list" id="products-list">
|
52 |
+
<?php foreach ($_productCollection as $_product): ?>
|
53 |
+
<li class="item<?php if (++$_iterator == sizeof($_productCollection)): ?> last<?php endif; ?>">
|
54 |
+
<?php // Product Image ?>
|
55 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
56 |
+
<?php // Product description ?>
|
57 |
+
<div class="product-shop">
|
58 |
+
<div class="f-fix">
|
59 |
+
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
|
60 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name'); ?></a></h2>
|
61 |
+
<?php if ($_product->getRatingSummary()): ?>
|
62 |
+
<?php echo $this->getReviewsSummaryHtml($_product) ?>
|
63 |
+
<?php endif; ?>
|
64 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
65 |
+
<?php if ($_product->isSaleable()): ?>
|
66 |
+
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
|
67 |
+
<?php else: ?>
|
68 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
69 |
+
<?php endif; ?>
|
70 |
+
<div class="desc std">
|
71 |
+
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
|
72 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
|
73 |
+
</div>
|
74 |
+
<ul class="add-to-links">
|
75 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
76 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
77 |
+
<?php endif; ?>
|
78 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
79 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
80 |
+
<?php endif; ?>
|
81 |
+
</ul>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div class="quickdetail_div">
|
85 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
86 |
+
<div class="head-text">
|
87 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
88 |
+
</div>
|
89 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
90 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
91 |
+
<div class="attribute_detail">
|
92 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
93 |
+
$attributeCode = $selectattribute;
|
94 |
+
$productAttributes = $_product->getAttributes();
|
95 |
+
$attributeValue = null;
|
96 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
97 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
98 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
99 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
100 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
101 |
+
}else{
|
102 |
+
$attributeValue = $productModel->getData($attributeCode);
|
103 |
+
}
|
104 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
105 |
+
?>
|
106 |
+
<?php if($attributeValue): ?>
|
107 |
+
<div class="product_attribute_collection">
|
108 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
109 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
110 |
+
</div>
|
111 |
+
<?php endif; ?>
|
112 |
+
<?php endif; ?>
|
113 |
+
|
114 |
+
<?php endforeach; ?>
|
115 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
</li>
|
120 |
+
<?php endforeach; ?>
|
121 |
+
</ol>
|
122 |
+
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
|
123 |
+
|
124 |
+
<?php else: ?>
|
125 |
+
|
126 |
+
<?php // Grid Mode ?>
|
127 |
+
|
128 |
+
<?php $_collectionSize = $_productCollection->count() ?>
|
129 |
+
<?php $_columnCount = $this->getColumnCount(); ?>
|
130 |
+
<?php $i = 0;
|
131 |
+
foreach ($_productCollection as $_product): ?>
|
132 |
+
<?php if ($i++ % $_columnCount == 0): ?>
|
133 |
+
<ul class="products-grid">
|
134 |
+
<?php endif ?>
|
135 |
+
<li class="item<?php if (($i - 1) % $_columnCount == 0): ?> first<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>">
|
136 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
|
137 |
+
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
|
138 |
+
<?php if ($_product->getRatingSummary()): ?>
|
139 |
+
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
|
140 |
+
<?php endif; ?>
|
141 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
142 |
+
<div class="actions">
|
143 |
+
<?php if ($_product->isSaleable()): ?>
|
144 |
+
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
|
145 |
+
<?php else: ?>
|
146 |
+
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
|
147 |
+
<?php endif; ?>
|
148 |
+
<ul class="add-to-links">
|
149 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
150 |
+
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
|
151 |
+
<?php endif; ?>
|
152 |
+
<?php if ($_compareUrl = $this->getAddToCompareUrl($_product)): ?>
|
153 |
+
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
|
154 |
+
<?php endif; ?>
|
155 |
+
</ul>
|
156 |
+
</div>
|
157 |
+
|
158 |
+
<div class="quickdetail_div">
|
159 |
+
<div class="all_details" <?php echo $productAttributesCollectionWithDesign['popupStyle']; ?>>
|
160 |
+
<div class="head-text">
|
161 |
+
<h3 <?php echo ($productAttributesCollectionWithDesign['headercolor'] ? 'style="background: #' . $productAttributesCollectionWithDesign['headercolor'] . '"' : '""') ?>><?php echo $this->htmlEscape($_product->getName()) ?></h3>
|
162 |
+
</div>
|
163 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(150,200) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>
|
164 |
+
<?php $productModel = $productObj->load($_product->getId()) ?>
|
165 |
+
<div class="attribute_detail">
|
166 |
+
<?php foreach ($productAttributesCollectionWithDesign['collectionAttribute'] as $selectattribute) :
|
167 |
+
$attributeCode = $selectattribute;
|
168 |
+
$productAttributes = $_product->getAttributes();
|
169 |
+
$attributeValue = null;
|
170 |
+
if (array_key_exists($attributeCode, $productAttributes) && $attributeCode != 'price'):
|
171 |
+
$attributesobj = $productAttributes["{$attributeCode}"];
|
172 |
+
$attributeModel = $eavObj->getAttribute( 'catalog_product' , $attributeCode);
|
173 |
+
if($attributeModel->getFrontendInput() == 'select'){
|
174 |
+
$attributeValue = $attributeModel->getSource()->getOptionText($productModel->getData($attributeCode));
|
175 |
+
}else{
|
176 |
+
$attributeValue = $productModel->getData($attributeCode);
|
177 |
+
}
|
178 |
+
$attributeLabel = $attributesobj->getFrontend()->getLabel($_product);
|
179 |
+
?>
|
180 |
+
<?php if($attributeValue): ?>
|
181 |
+
<div class="product_attribute_collection">
|
182 |
+
<label class="attr_label"><?php echo $attributeLabel.': '; ?></label>
|
183 |
+
<span class="attr_value"><?php echo (strlen($attributeValue) > 200 ?substr($attributeValue,0,200).'..':$attributeValue); ?></span>
|
184 |
+
</div>
|
185 |
+
<?php endif; ?>
|
186 |
+
<?php endif; ?>
|
187 |
+
|
188 |
+
<?php endforeach; ?>
|
189 |
+
<div class="quick_detail_price"><?php echo $this->getPriceHtml($_product, true) ?></div>
|
190 |
+
</div>
|
191 |
+
</div>
|
192 |
+
</div>
|
193 |
+
|
194 |
+
|
195 |
+
</li>
|
196 |
+
<?php if ($i % $_columnCount == 0 || $i == $_collectionSize): ?>
|
197 |
+
</ul>
|
198 |
+
<?php endif ?>
|
199 |
+
<?php endforeach ?>
|
200 |
+
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
|
201 |
+
<?php endif; ?>
|
202 |
+
|
203 |
+
<div class="toolbar-bottom">
|
204 |
+
<?php echo $this->getToolbarHtml() ?>
|
205 |
+
</div>
|
206 |
+
</div>
|
207 |
+
<?php endif; ?>
|
app/etc/modules/Vishwasnature_Quickdetail.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Vishwasnature_Quickdetail>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Vishwasnature_Quickdetail>
|
8 |
+
</modules>
|
9 |
+
</config>
|
js/quickdetail/js/jquery-1.7.2.min.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
|
2 |
+
if(!window.jQuery) {
|
3 |
+
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("�")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
|
4 |
+
a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
|
5 |
+
.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
|
6 |
+
}
|
js/quickdetail/js/jquery.noconflict.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery.noConflict();
|
js/quickdetail/js/jscolor/arrow.gif
ADDED
Binary file
|
js/quickdetail/js/jscolor/cross.gif
ADDED
Binary file
|
js/quickdetail/js/jscolor/demo.html
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<html>
|
2 |
+
<head>
|
3 |
+
<title>jscolor demo</title>
|
4 |
+
</head>
|
5 |
+
<body>
|
6 |
+
|
7 |
+
<script type="text/javascript" src="jscolor.js"></script>
|
8 |
+
|
9 |
+
Click here: <input class="color" value="66ff00">
|
10 |
+
|
11 |
+
</body>
|
12 |
+
</html>
|
js/quickdetail/js/jscolor/hs.png
ADDED
Binary file
|
js/quickdetail/js/jscolor/hv.png
ADDED
Binary file
|
js/quickdetail/js/jscolor/jscolor.js
ADDED
@@ -0,0 +1,840 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* jscolor, JavaScript Color Picker
|
3 |
+
*
|
4 |
+
* @version 1.3.1
|
5 |
+
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
|
6 |
+
* @author Jan Odvarko, http://odvarko.cz
|
7 |
+
* @created 2008-06-15
|
8 |
+
* @updated 2010-01-23
|
9 |
+
* @link http://jscolor.com
|
10 |
+
*/
|
11 |
+
|
12 |
+
|
13 |
+
var jscolor = {
|
14 |
+
|
15 |
+
|
16 |
+
dir : '', // location of jscolor directory (leave empty to autodetect)
|
17 |
+
bindClass : 'color', // class name
|
18 |
+
binding : true, // automatic binding via <input class="...">
|
19 |
+
preloading : true, // use image preloading?
|
20 |
+
|
21 |
+
|
22 |
+
install : function() {
|
23 |
+
jscolor.addEvent(window, 'load', jscolor.init);
|
24 |
+
},
|
25 |
+
|
26 |
+
|
27 |
+
init : function() {
|
28 |
+
if(jscolor.binding) {
|
29 |
+
jscolor.bind();
|
30 |
+
}
|
31 |
+
if(jscolor.preloading) {
|
32 |
+
jscolor.preload();
|
33 |
+
}
|
34 |
+
},
|
35 |
+
|
36 |
+
|
37 |
+
getDir : function() {
|
38 |
+
if(!jscolor.dir) {
|
39 |
+
var detected = jscolor.detectDir();
|
40 |
+
jscolor.dir = detected!==false ? detected : 'jscolor/';
|
41 |
+
}
|
42 |
+
return jscolor.dir;
|
43 |
+
},
|
44 |
+
|
45 |
+
|
46 |
+
detectDir : function() {
|
47 |
+
var base = location.href;
|
48 |
+
|
49 |
+
var e = document.getElementsByTagName('base');
|
50 |
+
for(var i=0; i<e.length; i+=1) {
|
51 |
+
if(e[i].href) { base = e[i].href; }
|
52 |
+
}
|
53 |
+
|
54 |
+
var e = document.getElementsByTagName('script');
|
55 |
+
for(var i=0; i<e.length; i+=1) {
|
56 |
+
if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
|
57 |
+
var src = new jscolor.URI(e[i].src);
|
58 |
+
var srcAbs = src.toAbsolute(base);
|
59 |
+
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
|
60 |
+
srcAbs.query = null;
|
61 |
+
srcAbs.fragment = null;
|
62 |
+
return srcAbs.toString();
|
63 |
+
}
|
64 |
+
}
|
65 |
+
return false;
|
66 |
+
},
|
67 |
+
|
68 |
+
|
69 |
+
bind : function() {
|
70 |
+
var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i');
|
71 |
+
var e = document.getElementsByTagName('input');
|
72 |
+
for(var i=0; i<e.length; i+=1) {
|
73 |
+
var m;
|
74 |
+
if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
|
75 |
+
var prop = {};
|
76 |
+
if(m[3]) {
|
77 |
+
try {
|
78 |
+
eval('prop='+m[3]);
|
79 |
+
} catch(eInvalidProp) {}
|
80 |
+
}
|
81 |
+
e[i].color = new jscolor.color(e[i], prop);
|
82 |
+
}
|
83 |
+
}
|
84 |
+
},
|
85 |
+
|
86 |
+
|
87 |
+
preload : function() {
|
88 |
+
for(var fn in jscolor.imgRequire) {
|
89 |
+
if(jscolor.imgRequire.hasOwnProperty(fn)) {
|
90 |
+
jscolor.loadImage(fn);
|
91 |
+
}
|
92 |
+
}
|
93 |
+
},
|
94 |
+
|
95 |
+
|
96 |
+
images : {
|
97 |
+
pad : [ 181, 101 ],
|
98 |
+
sld : [ 16, 101 ],
|
99 |
+
cross : [ 15, 15 ],
|
100 |
+
arrow : [ 7, 11 ]
|
101 |
+
},
|
102 |
+
|
103 |
+
|
104 |
+
imgRequire : {},
|
105 |
+
imgLoaded : {},
|
106 |
+
|
107 |
+
|
108 |
+
requireImage : function(filename) {
|
109 |
+
jscolor.imgRequire[filename] = true;
|
110 |
+
},
|
111 |
+
|
112 |
+
|
113 |
+
loadImage : function(filename) {
|
114 |
+
if(!jscolor.imgLoaded[filename]) {
|
115 |
+
jscolor.imgLoaded[filename] = new Image();
|
116 |
+
jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
|
117 |
+
}
|
118 |
+
},
|
119 |
+
|
120 |
+
|
121 |
+
fetchElement : function(mixed) {
|
122 |
+
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
|
123 |
+
},
|
124 |
+
|
125 |
+
|
126 |
+
addEvent : function(el, evnt, func) {
|
127 |
+
if(el.addEventListener) {
|
128 |
+
el.addEventListener(evnt, func, false);
|
129 |
+
} else if(el.attachEvent) {
|
130 |
+
el.attachEvent('on'+evnt, func);
|
131 |
+
}
|
132 |
+
},
|
133 |
+
|
134 |
+
|
135 |
+
fireEvent : function(el, evnt) {
|
136 |
+
if(!el) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
if(document.createEventObject) {
|
140 |
+
var ev = document.createEventObject();
|
141 |
+
el.fireEvent('on'+evnt, ev);
|
142 |
+
} else if(document.createEvent) {
|
143 |
+
var ev = document.createEvent('HTMLEvents');
|
144 |
+
ev.initEvent(evnt, true, true);
|
145 |
+
el.dispatchEvent(ev);
|
146 |
+
} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
|
147 |
+
el['on'+evnt]();
|
148 |
+
}
|
149 |
+
},
|
150 |
+
|
151 |
+
|
152 |
+
getElementPos : function(e) {
|
153 |
+
var e1=e, e2=e;
|
154 |
+
var x=0, y=0;
|
155 |
+
if(e1.offsetParent) {
|
156 |
+
do {
|
157 |
+
x += e1.offsetLeft;
|
158 |
+
y += e1.offsetTop;
|
159 |
+
} while(e1 = e1.offsetParent);
|
160 |
+
}
|
161 |
+
while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
|
162 |
+
x -= e2.scrollLeft;
|
163 |
+
y -= e2.scrollTop;
|
164 |
+
}
|
165 |
+
return [x, y];
|
166 |
+
},
|
167 |
+
|
168 |
+
|
169 |
+
getElementSize : function(e) {
|
170 |
+
return [e.offsetWidth, e.offsetHeight];
|
171 |
+
},
|
172 |
+
|
173 |
+
|
174 |
+
getMousePos : function(e) {
|
175 |
+
if(!e) { e = window.event; }
|
176 |
+
if(typeof e.pageX === 'number') {
|
177 |
+
return [e.pageX, e.pageY];
|
178 |
+
} else if(typeof e.clientX === 'number') {
|
179 |
+
return [
|
180 |
+
e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
|
181 |
+
e.clientY + document.body.scrollTop + document.documentElement.scrollTop
|
182 |
+
];
|
183 |
+
}
|
184 |
+
},
|
185 |
+
|
186 |
+
|
187 |
+
getViewPos : function() {
|
188 |
+
if(typeof window.pageYOffset === 'number') {
|
189 |
+
return [window.pageXOffset, window.pageYOffset];
|
190 |
+
} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
|
191 |
+
return [document.body.scrollLeft, document.body.scrollTop];
|
192 |
+
} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
|
193 |
+
return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
|
194 |
+
} else {
|
195 |
+
return [0, 0];
|
196 |
+
}
|
197 |
+
},
|
198 |
+
|
199 |
+
|
200 |
+
getViewSize : function() {
|
201 |
+
if(typeof window.innerWidth === 'number') {
|
202 |
+
return [window.innerWidth, window.innerHeight];
|
203 |
+
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
|
204 |
+
return [document.body.clientWidth, document.body.clientHeight];
|
205 |
+
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
|
206 |
+
return [document.documentElement.clientWidth, document.documentElement.clientHeight];
|
207 |
+
} else {
|
208 |
+
return [0, 0];
|
209 |
+
}
|
210 |
+
},
|
211 |
+
|
212 |
+
|
213 |
+
URI : function(uri) { // See RFC3986
|
214 |
+
|
215 |
+
this.scheme = null;
|
216 |
+
this.authority = null;
|
217 |
+
this.path = '';
|
218 |
+
this.query = null;
|
219 |
+
this.fragment = null;
|
220 |
+
|
221 |
+
this.parse = function(uri) {
|
222 |
+
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
|
223 |
+
this.scheme = m[3] ? m[2] : null;
|
224 |
+
this.authority = m[5] ? m[6] : null;
|
225 |
+
this.path = m[7];
|
226 |
+
this.query = m[9] ? m[10] : null;
|
227 |
+
this.fragment = m[12] ? m[13] : null;
|
228 |
+
return this;
|
229 |
+
};
|
230 |
+
|
231 |
+
this.toString = function() {
|
232 |
+
var result = '';
|
233 |
+
if(this.scheme !== null) { result = result + this.scheme + ':'; }
|
234 |
+
if(this.authority !== null) { result = result + '//' + this.authority; }
|
235 |
+
if(this.path !== null) { result = result + this.path; }
|
236 |
+
if(this.query !== null) { result = result + '?' + this.query; }
|
237 |
+
if(this.fragment !== null) { result = result + '#' + this.fragment; }
|
238 |
+
return result;
|
239 |
+
};
|
240 |
+
|
241 |
+
this.toAbsolute = function(base) {
|
242 |
+
var base = new jscolor.URI(base);
|
243 |
+
var r = this;
|
244 |
+
var t = new jscolor.URI;
|
245 |
+
|
246 |
+
if(base.scheme === null) { return false; }
|
247 |
+
|
248 |
+
if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
|
249 |
+
r.scheme = null;
|
250 |
+
}
|
251 |
+
|
252 |
+
if(r.scheme !== null) {
|
253 |
+
t.scheme = r.scheme;
|
254 |
+
t.authority = r.authority;
|
255 |
+
t.path = removeDotSegments(r.path);
|
256 |
+
t.query = r.query;
|
257 |
+
} else {
|
258 |
+
if(r.authority !== null) {
|
259 |
+
t.authority = r.authority;
|
260 |
+
t.path = removeDotSegments(r.path);
|
261 |
+
t.query = r.query;
|
262 |
+
} else {
|
263 |
+
if(r.path === '') { // TODO: == or === ?
|
264 |
+
t.path = base.path;
|
265 |
+
if(r.query !== null) {
|
266 |
+
t.query = r.query;
|
267 |
+
} else {
|
268 |
+
t.query = base.query;
|
269 |
+
}
|
270 |
+
} else {
|
271 |
+
if(r.path.substr(0,1) === '/') {
|
272 |
+
t.path = removeDotSegments(r.path);
|
273 |
+
} else {
|
274 |
+
if(base.authority !== null && base.path === '') { // TODO: == or === ?
|
275 |
+
t.path = '/'+r.path;
|
276 |
+
} else {
|
277 |
+
t.path = base.path.replace(/[^\/]+$/,'')+r.path;
|
278 |
+
}
|
279 |
+
t.path = removeDotSegments(t.path);
|
280 |
+
}
|
281 |
+
t.query = r.query;
|
282 |
+
}
|
283 |
+
t.authority = base.authority;
|
284 |
+
}
|
285 |
+
t.scheme = base.scheme;
|
286 |
+
}
|
287 |
+
t.fragment = r.fragment;
|
288 |
+
|
289 |
+
return t;
|
290 |
+
};
|
291 |
+
|
292 |
+
function removeDotSegments(path) {
|
293 |
+
var out = '';
|
294 |
+
while(path) {
|
295 |
+
if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
|
296 |
+
path = path.replace(/^\.+/,'').substr(1);
|
297 |
+
} else if(path.substr(0,3)==='/./' || path==='/.') {
|
298 |
+
path = '/'+path.substr(3);
|
299 |
+
} else if(path.substr(0,4)==='/../' || path==='/..') {
|
300 |
+
path = '/'+path.substr(4);
|
301 |
+
out = out.replace(/\/?[^\/]*$/, '');
|
302 |
+
} else if(path==='.' || path==='..') {
|
303 |
+
path = '';
|
304 |
+
} else {
|
305 |
+
var rm = path.match(/^\/?[^\/]*/)[0];
|
306 |
+
path = path.substr(rm.length);
|
307 |
+
out = out + rm;
|
308 |
+
}
|
309 |
+
}
|
310 |
+
return out;
|
311 |
+
}
|
312 |
+
|
313 |
+
if(uri) {
|
314 |
+
this.parse(uri);
|
315 |
+
}
|
316 |
+
|
317 |
+
},
|
318 |
+
|
319 |
+
|
320 |
+
/*
|
321 |
+
* Usage example:
|
322 |
+
* var myColor = new jscolor.color(myInputElement)
|
323 |
+
*/
|
324 |
+
|
325 |
+
color : function(target, prop) {
|
326 |
+
|
327 |
+
|
328 |
+
this.required = true; // refuse empty values?
|
329 |
+
this.adjust = true; // adjust value to uniform notation?
|
330 |
+
this.hash = false; // prefix color with # symbol?
|
331 |
+
this.caps = true; // uppercase?
|
332 |
+
this.valueElement = target; // value holder
|
333 |
+
this.styleElement = target; // where to reflect current color
|
334 |
+
this.hsv = [0, 0, 1]; // read-only 0-6, 0-1, 0-1
|
335 |
+
this.rgb = [1, 1, 1]; // read-only 0-1, 0-1, 0-1
|
336 |
+
|
337 |
+
this.pickerOnfocus = true; // display picker on focus?
|
338 |
+
this.pickerMode = 'HSV'; // HSV | HVS
|
339 |
+
this.pickerPosition = 'bottom'; // left | right | top | bottom
|
340 |
+
this.pickerFace = 10; // px
|
341 |
+
this.pickerFaceColor = 'ThreeDFace'; // CSS color
|
342 |
+
this.pickerBorder = 1; // px
|
343 |
+
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
|
344 |
+
this.pickerInset = 1; // px
|
345 |
+
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
|
346 |
+
this.pickerZIndex = 10000;
|
347 |
+
|
348 |
+
|
349 |
+
for(var p in prop) {
|
350 |
+
if(prop.hasOwnProperty(p)) {
|
351 |
+
this[p] = prop[p];
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
|
356 |
+
this.hidePicker = function() {
|
357 |
+
if(isPickerOwner()) {
|
358 |
+
removePicker();
|
359 |
+
}
|
360 |
+
};
|
361 |
+
|
362 |
+
|
363 |
+
this.showPicker = function() {
|
364 |
+
if(!isPickerOwner()) {
|
365 |
+
var tp = jscolor.getElementPos(target); // target pos
|
366 |
+
var ts = jscolor.getElementSize(target); // target size
|
367 |
+
var vp = jscolor.getViewPos(); // view pos
|
368 |
+
var vs = jscolor.getViewSize(); // view size
|
369 |
+
var ps = [ // picker size
|
370 |
+
2*this.pickerBorder + 4*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[0] + jscolor.images.sld[0],
|
371 |
+
2*this.pickerBorder + 2*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[1]
|
372 |
+
];
|
373 |
+
var a, b, c;
|
374 |
+
switch(this.pickerPosition.toLowerCase()) {
|
375 |
+
case 'left': a=1; b=0; c=-1; break;
|
376 |
+
case 'right':a=1; b=0; c=1; break;
|
377 |
+
case 'top': a=0; b=1; c=-1; break;
|
378 |
+
default: a=0; b=1; c=1; break;
|
379 |
+
}
|
380 |
+
var l = (ts[b]+ps[b])/2;
|
381 |
+
var pp = [ // picker pos
|
382 |
+
-vp[a]+tp[a]+ps[a] > vs[a] ?
|
383 |
+
(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
|
384 |
+
tp[a],
|
385 |
+
-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
|
386 |
+
(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
|
387 |
+
(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
|
388 |
+
];
|
389 |
+
drawPicker(pp[a], pp[b]);
|
390 |
+
}
|
391 |
+
};
|
392 |
+
|
393 |
+
|
394 |
+
this.importColor = function() {
|
395 |
+
if(!valueElement) {
|
396 |
+
this.exportColor();
|
397 |
+
} else {
|
398 |
+
if(!this.adjust) {
|
399 |
+
if(!this.fromString(valueElement.value, leaveValue)) {
|
400 |
+
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
401 |
+
styleElement.style.color = styleElement.jscStyle.color;
|
402 |
+
this.exportColor(leaveValue | leaveStyle);
|
403 |
+
}
|
404 |
+
} else if(!this.required && /^\s*$/.test(valueElement.value)) {
|
405 |
+
valueElement.value = '';
|
406 |
+
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
407 |
+
styleElement.style.color = styleElement.jscStyle.color;
|
408 |
+
this.exportColor(leaveValue | leaveStyle);
|
409 |
+
|
410 |
+
} else if(this.fromString(valueElement.value)) {
|
411 |
+
// OK
|
412 |
+
} else {
|
413 |
+
this.exportColor();
|
414 |
+
}
|
415 |
+
}
|
416 |
+
};
|
417 |
+
|
418 |
+
|
419 |
+
this.exportColor = function(flags) {
|
420 |
+
if(!(flags & leaveValue) && valueElement) {
|
421 |
+
var value = this.toString();
|
422 |
+
if(this.caps) { value = value.toUpperCase(); }
|
423 |
+
if(this.hash) { value = '#'+value; }
|
424 |
+
valueElement.value = value;
|
425 |
+
}
|
426 |
+
if(!(flags & leaveStyle) && styleElement) {
|
427 |
+
styleElement.style.backgroundColor =
|
428 |
+
'#'+this.toString();
|
429 |
+
styleElement.style.color =
|
430 |
+
0.213 * this.rgb[0] +
|
431 |
+
0.715 * this.rgb[1] +
|
432 |
+
0.072 * this.rgb[2]
|
433 |
+
< 0.5 ? '#FFF' : '#000';
|
434 |
+
}
|
435 |
+
if(!(flags & leavePad) && isPickerOwner()) {
|
436 |
+
redrawPad();
|
437 |
+
}
|
438 |
+
if(!(flags & leaveSld) && isPickerOwner()) {
|
439 |
+
redrawSld();
|
440 |
+
}
|
441 |
+
};
|
442 |
+
|
443 |
+
|
444 |
+
this.fromHSV = function(h, s, v, flags) { // null = don't change
|
445 |
+
h<0 && (h=0) || h>6 && (h=6);
|
446 |
+
s<0 && (s=0) || s>1 && (s=1);
|
447 |
+
v<0 && (v=0) || v>1 && (v=1);
|
448 |
+
this.rgb = HSV_RGB(
|
449 |
+
h===null ? this.hsv[0] : (this.hsv[0]=h),
|
450 |
+
s===null ? this.hsv[1] : (this.hsv[1]=s),
|
451 |
+
v===null ? this.hsv[2] : (this.hsv[2]=v)
|
452 |
+
);
|
453 |
+
this.exportColor(flags);
|
454 |
+
};
|
455 |
+
|
456 |
+
|
457 |
+
this.fromRGB = function(r, g, b, flags) { // null = don't change
|
458 |
+
r<0 && (r=0) || r>1 && (r=1);
|
459 |
+
g<0 && (g=0) || g>1 && (g=1);
|
460 |
+
b<0 && (b=0) || b>1 && (b=1);
|
461 |
+
var hsv = RGB_HSV(
|
462 |
+
r===null ? this.rgb[0] : (this.rgb[0]=r),
|
463 |
+
g===null ? this.rgb[1] : (this.rgb[1]=g),
|
464 |
+
b===null ? this.rgb[2] : (this.rgb[2]=b)
|
465 |
+
);
|
466 |
+
if(hsv[0] !== null) {
|
467 |
+
this.hsv[0] = hsv[0];
|
468 |
+
}
|
469 |
+
if(hsv[2] !== 0) {
|
470 |
+
this.hsv[1] = hsv[1];
|
471 |
+
}
|
472 |
+
this.hsv[2] = hsv[2];
|
473 |
+
this.exportColor(flags);
|
474 |
+
};
|
475 |
+
|
476 |
+
|
477 |
+
this.fromString = function(hex, flags) {
|
478 |
+
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
|
479 |
+
if(!m) {
|
480 |
+
return false;
|
481 |
+
} else {
|
482 |
+
if(m[1].length === 6) { // 6-char notation
|
483 |
+
this.fromRGB(
|
484 |
+
parseInt(m[1].substr(0,2),16) / 255,
|
485 |
+
parseInt(m[1].substr(2,2),16) / 255,
|
486 |
+
parseInt(m[1].substr(4,2),16) / 255,
|
487 |
+
flags
|
488 |
+
);
|
489 |
+
} else { // 3-char notation
|
490 |
+
this.fromRGB(
|
491 |
+
parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
|
492 |
+
parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
|
493 |
+
parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
|
494 |
+
flags
|
495 |
+
);
|
496 |
+
}
|
497 |
+
return true;
|
498 |
+
}
|
499 |
+
};
|
500 |
+
|
501 |
+
|
502 |
+
this.toString = function() {
|
503 |
+
return (
|
504 |
+
(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
|
505 |
+
(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
|
506 |
+
(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
|
507 |
+
);
|
508 |
+
};
|
509 |
+
|
510 |
+
|
511 |
+
function RGB_HSV(r, g, b) {
|
512 |
+
var n = Math.min(Math.min(r,g),b);
|
513 |
+
var v = Math.max(Math.max(r,g),b);
|
514 |
+
var m = v - n;
|
515 |
+
if(m === 0) { return [ null, 0, v ]; }
|
516 |
+
var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
|
517 |
+
return [ h===6?0:h, m/v, v ];
|
518 |
+
}
|
519 |
+
|
520 |
+
|
521 |
+
function HSV_RGB(h, s, v) {
|
522 |
+
if(h === null) { return [ v, v, v ]; }
|
523 |
+
var i = Math.floor(h);
|
524 |
+
var f = i%2 ? h-i : 1-(h-i);
|
525 |
+
var m = v * (1 - s);
|
526 |
+
var n = v * (1 - s*f);
|
527 |
+
switch(i) {
|
528 |
+
case 6:
|
529 |
+
case 0: return [v,n,m];
|
530 |
+
case 1: return [n,v,m];
|
531 |
+
case 2: return [m,v,n];
|
532 |
+
case 3: return [m,n,v];
|
533 |
+
case 4: return [n,m,v];
|
534 |
+
case 5: return [v,m,n];
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
|
539 |
+
function removePicker() {
|
540 |
+
delete jscolor.picker.owner;
|
541 |
+
document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
|
542 |
+
}
|
543 |
+
|
544 |
+
|
545 |
+
function drawPicker(x, y) {
|
546 |
+
if(!jscolor.picker) {
|
547 |
+
jscolor.picker = {
|
548 |
+
box : document.createElement('div'),
|
549 |
+
boxB : document.createElement('div'),
|
550 |
+
pad : document.createElement('div'),
|
551 |
+
padB : document.createElement('div'),
|
552 |
+
padM : document.createElement('div'),
|
553 |
+
sld : document.createElement('div'),
|
554 |
+
sldB : document.createElement('div'),
|
555 |
+
sldM : document.createElement('div')
|
556 |
+
};
|
557 |
+
for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
|
558 |
+
var seg = document.createElement('div');
|
559 |
+
seg.style.height = segSize+'px';
|
560 |
+
seg.style.fontSize = '1px';
|
561 |
+
seg.style.lineHeight = '0';
|
562 |
+
jscolor.picker.sld.appendChild(seg);
|
563 |
+
}
|
564 |
+
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
|
565 |
+
jscolor.picker.box.appendChild(jscolor.picker.sldB);
|
566 |
+
jscolor.picker.box.appendChild(jscolor.picker.sldM);
|
567 |
+
jscolor.picker.padB.appendChild(jscolor.picker.pad);
|
568 |
+
jscolor.picker.box.appendChild(jscolor.picker.padB);
|
569 |
+
jscolor.picker.box.appendChild(jscolor.picker.padM);
|
570 |
+
jscolor.picker.boxB.appendChild(jscolor.picker.box);
|
571 |
+
}
|
572 |
+
|
573 |
+
var p = jscolor.picker;
|
574 |
+
|
575 |
+
// recompute controls positions
|
576 |
+
posPad = [
|
577 |
+
x+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset,
|
578 |
+
y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ];
|
579 |
+
posSld = [
|
580 |
+
null,
|
581 |
+
y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ];
|
582 |
+
|
583 |
+
// controls interaction
|
584 |
+
p.box.onmouseup =
|
585 |
+
p.box.onmouseout = function() { target.focus(); };
|
586 |
+
p.box.onmousedown = function() { abortBlur=true; };
|
587 |
+
p.box.onmousemove = function(e) { holdPad && setPad(e); holdSld && setSld(e); };
|
588 |
+
p.padM.onmouseup =
|
589 |
+
p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
|
590 |
+
p.padM.onmousedown = function(e) { holdPad=true; setPad(e); };
|
591 |
+
p.sldM.onmouseup =
|
592 |
+
p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
|
593 |
+
p.sldM.onmousedown = function(e) { holdSld=true; setSld(e); };
|
594 |
+
|
595 |
+
// picker
|
596 |
+
p.box.style.width = 4*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] + 'px';
|
597 |
+
p.box.style.height = 2*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[1] + 'px';
|
598 |
+
|
599 |
+
// picker border
|
600 |
+
p.boxB.style.position = 'absolute';
|
601 |
+
p.boxB.style.clear = 'both';
|
602 |
+
p.boxB.style.left = x+'px';
|
603 |
+
p.boxB.style.top = y+'px';
|
604 |
+
p.boxB.style.zIndex = THIS.pickerZIndex;
|
605 |
+
p.boxB.style.border = THIS.pickerBorder+'px solid';
|
606 |
+
p.boxB.style.borderColor = THIS.pickerBorderColor;
|
607 |
+
p.boxB.style.background = THIS.pickerFaceColor;
|
608 |
+
|
609 |
+
// pad image
|
610 |
+
p.pad.style.width = jscolor.images.pad[0]+'px';
|
611 |
+
p.pad.style.height = jscolor.images.pad[1]+'px';
|
612 |
+
|
613 |
+
// pad border
|
614 |
+
p.padB.style.position = 'absolute';
|
615 |
+
p.padB.style.left = THIS.pickerFace+'px';
|
616 |
+
p.padB.style.top = THIS.pickerFace+'px';
|
617 |
+
p.padB.style.border = THIS.pickerInset+'px solid';
|
618 |
+
p.padB.style.borderColor = THIS.pickerInsetColor;
|
619 |
+
|
620 |
+
// pad mouse area
|
621 |
+
p.padM.style.position = 'absolute';
|
622 |
+
p.padM.style.left = '0';
|
623 |
+
p.padM.style.top = '0';
|
624 |
+
p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
|
625 |
+
p.padM.style.height = p.box.style.height;
|
626 |
+
p.padM.style.cursor = 'crosshair';
|
627 |
+
|
628 |
+
// slider image
|
629 |
+
p.sld.style.overflow = 'hidden';
|
630 |
+
p.sld.style.width = jscolor.images.sld[0]+'px';
|
631 |
+
p.sld.style.height = jscolor.images.sld[1]+'px';
|
632 |
+
|
633 |
+
// slider border
|
634 |
+
p.sldB.style.position = 'absolute';
|
635 |
+
p.sldB.style.right = THIS.pickerFace+'px';
|
636 |
+
p.sldB.style.top = THIS.pickerFace+'px';
|
637 |
+
p.sldB.style.border = THIS.pickerInset+'px solid';
|
638 |
+
p.sldB.style.borderColor = THIS.pickerInsetColor;
|
639 |
+
|
640 |
+
// slider mouse area
|
641 |
+
p.sldM.style.position = 'absolute';
|
642 |
+
p.sldM.style.right = '0';
|
643 |
+
p.sldM.style.top = '0';
|
644 |
+
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
|
645 |
+
p.sldM.style.height = p.box.style.height;
|
646 |
+
try {
|
647 |
+
p.sldM.style.cursor = 'pointer';
|
648 |
+
} catch(eOldIE) {
|
649 |
+
p.sldM.style.cursor = 'hand';
|
650 |
+
}
|
651 |
+
|
652 |
+
// load images in optimal order
|
653 |
+
switch(modeID) {
|
654 |
+
case 0: var padImg = 'hs.png'; break;
|
655 |
+
case 1: var padImg = 'hv.png'; break;
|
656 |
+
}
|
657 |
+
p.padM.style.background = "url('"+jscolor.getDir()+"cross.gif') no-repeat";
|
658 |
+
p.sldM.style.background = "url('"+jscolor.getDir()+"arrow.gif') no-repeat";
|
659 |
+
p.pad.style.background = "url('"+jscolor.getDir()+padImg+"') 0 0 no-repeat";
|
660 |
+
|
661 |
+
// place pointers
|
662 |
+
redrawPad();
|
663 |
+
redrawSld();
|
664 |
+
|
665 |
+
jscolor.picker.owner = THIS;
|
666 |
+
document.getElementsByTagName('body')[0].appendChild(p.boxB);
|
667 |
+
}
|
668 |
+
|
669 |
+
|
670 |
+
function redrawPad() {
|
671 |
+
// redraw the pad pointer
|
672 |
+
switch(modeID) {
|
673 |
+
case 0: var yComponent = 1; break;
|
674 |
+
case 1: var yComponent = 2; break;
|
675 |
+
}
|
676 |
+
var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
|
677 |
+
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
|
678 |
+
jscolor.picker.padM.style.backgroundPosition =
|
679 |
+
(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
|
680 |
+
(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
|
681 |
+
|
682 |
+
// redraw the slider image
|
683 |
+
var seg = jscolor.picker.sld.childNodes;
|
684 |
+
|
685 |
+
switch(modeID) {
|
686 |
+
case 0:
|
687 |
+
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
|
688 |
+
for(var i=0; i<seg.length; i+=1) {
|
689 |
+
seg[i].style.backgroundColor = 'rgb('+
|
690 |
+
(rgb[0]*(1-i/seg.length)*100)+'%,'+
|
691 |
+
(rgb[1]*(1-i/seg.length)*100)+'%,'+
|
692 |
+
(rgb[2]*(1-i/seg.length)*100)+'%)';
|
693 |
+
}
|
694 |
+
break;
|
695 |
+
case 1:
|
696 |
+
var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
|
697 |
+
var i = Math.floor(THIS.hsv[0]);
|
698 |
+
var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
|
699 |
+
switch(i) {
|
700 |
+
case 6:
|
701 |
+
case 0: rgb=[0,1,2]; break;
|
702 |
+
case 1: rgb=[1,0,2]; break;
|
703 |
+
case 2: rgb=[2,0,1]; break;
|
704 |
+
case 3: rgb=[2,1,0]; break;
|
705 |
+
case 4: rgb=[1,2,0]; break;
|
706 |
+
case 5: rgb=[0,2,1]; break;
|
707 |
+
}
|
708 |
+
for(var i=0; i<seg.length; i+=1) {
|
709 |
+
s = 1 - 1/(seg.length-1)*i;
|
710 |
+
c[1] = c[0] * (1 - s*f);
|
711 |
+
c[2] = c[0] * (1 - s);
|
712 |
+
seg[i].style.backgroundColor = 'rgb('+
|
713 |
+
(c[rgb[0]]*100)+'%,'+
|
714 |
+
(c[rgb[1]]*100)+'%,'+
|
715 |
+
(c[rgb[2]]*100)+'%)';
|
716 |
+
}
|
717 |
+
break;
|
718 |
+
}
|
719 |
+
}
|
720 |
+
|
721 |
+
|
722 |
+
function redrawSld() {
|
723 |
+
// redraw the slider pointer
|
724 |
+
switch(modeID) {
|
725 |
+
case 0: var yComponent = 2; break;
|
726 |
+
case 1: var yComponent = 1; break;
|
727 |
+
}
|
728 |
+
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
|
729 |
+
jscolor.picker.sldM.style.backgroundPosition =
|
730 |
+
'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
|
731 |
+
}
|
732 |
+
|
733 |
+
|
734 |
+
function isPickerOwner() {
|
735 |
+
return jscolor.picker && jscolor.picker.owner === THIS;
|
736 |
+
}
|
737 |
+
|
738 |
+
|
739 |
+
function blurTarget() {
|
740 |
+
if(valueElement === target) {
|
741 |
+
THIS.importColor();
|
742 |
+
}
|
743 |
+
if(THIS.pickerOnfocus) {
|
744 |
+
THIS.hidePicker();
|
745 |
+
}
|
746 |
+
}
|
747 |
+
|
748 |
+
|
749 |
+
function blurValue() {
|
750 |
+
if(valueElement !== target) {
|
751 |
+
THIS.importColor();
|
752 |
+
}
|
753 |
+
}
|
754 |
+
|
755 |
+
|
756 |
+
function setPad(e) {
|
757 |
+
var posM = jscolor.getMousePos(e);
|
758 |
+
var x = posM[0]-posPad[0];
|
759 |
+
var y = posM[1]-posPad[1];
|
760 |
+
switch(modeID) {
|
761 |
+
case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
|
762 |
+
case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
|
763 |
+
}
|
764 |
+
}
|
765 |
+
|
766 |
+
|
767 |
+
function setSld(e) {
|
768 |
+
var posM = jscolor.getMousePos(e);
|
769 |
+
var y = posM[1]-posPad[1];
|
770 |
+
switch(modeID) {
|
771 |
+
case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
|
772 |
+
case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
|
773 |
+
}
|
774 |
+
}
|
775 |
+
|
776 |
+
|
777 |
+
var THIS = this;
|
778 |
+
var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
|
779 |
+
var abortBlur = false;
|
780 |
+
var
|
781 |
+
valueElement = jscolor.fetchElement(this.valueElement),
|
782 |
+
styleElement = jscolor.fetchElement(this.styleElement);
|
783 |
+
var
|
784 |
+
holdPad = false,
|
785 |
+
holdSld = false;
|
786 |
+
var
|
787 |
+
posPad,
|
788 |
+
posSld;
|
789 |
+
var
|
790 |
+
leaveValue = 1<<0,
|
791 |
+
leaveStyle = 1<<1,
|
792 |
+
leavePad = 1<<2,
|
793 |
+
leaveSld = 1<<3;
|
794 |
+
|
795 |
+
// target
|
796 |
+
jscolor.addEvent(target, 'focus', function() {
|
797 |
+
if(THIS.pickerOnfocus) { THIS.showPicker(); }
|
798 |
+
});
|
799 |
+
jscolor.addEvent(target, 'blur', function() {
|
800 |
+
if(!abortBlur) {
|
801 |
+
window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
|
802 |
+
} else {
|
803 |
+
abortBlur = false;
|
804 |
+
}
|
805 |
+
});
|
806 |
+
|
807 |
+
// valueElement
|
808 |
+
if(valueElement) {
|
809 |
+
var updateField = function() {
|
810 |
+
THIS.fromString(valueElement.value, leaveValue);
|
811 |
+
};
|
812 |
+
jscolor.addEvent(valueElement, 'keyup', updateField);
|
813 |
+
jscolor.addEvent(valueElement, 'input', updateField);
|
814 |
+
jscolor.addEvent(valueElement, 'blur', blurValue);
|
815 |
+
valueElement.setAttribute('autocomplete', 'off');
|
816 |
+
}
|
817 |
+
|
818 |
+
// styleElement
|
819 |
+
if(styleElement) {
|
820 |
+
styleElement.jscStyle = {
|
821 |
+
backgroundColor : styleElement.style.backgroundColor,
|
822 |
+
color : styleElement.style.color
|
823 |
+
};
|
824 |
+
}
|
825 |
+
|
826 |
+
// require images
|
827 |
+
switch(modeID) {
|
828 |
+
case 0: jscolor.requireImage('hs.png'); break;
|
829 |
+
case 1: jscolor.requireImage('hv.png'); break;
|
830 |
+
}
|
831 |
+
jscolor.requireImage('cross.gif');
|
832 |
+
jscolor.requireImage('arrow.gif');
|
833 |
+
|
834 |
+
this.importColor();
|
835 |
+
}
|
836 |
+
|
837 |
+
};
|
838 |
+
|
839 |
+
|
840 |
+
jscolor.install();
|
js/quickdetail/js/tooltip/jquery.dimensions.js
ADDED
@@ -0,0 +1,504 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
|
2 |
+
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
3 |
+
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
4 |
+
*
|
5 |
+
* $LastChangedDate: 2007-06-22 04:38:37 +0200 (Fr, 22 Jun 2007) $
|
6 |
+
* $Rev: 2141 $
|
7 |
+
*
|
8 |
+
* Version: 1.0b2
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function($){
|
12 |
+
|
13 |
+
// store a copy of the core height and width methods
|
14 |
+
var height = $.fn.height,
|
15 |
+
width = $.fn.width;
|
16 |
+
|
17 |
+
$.fn.extend({
|
18 |
+
/**
|
19 |
+
* If used on document, returns the document's height (innerHeight)
|
20 |
+
* If used on window, returns the viewport's (window) height
|
21 |
+
* See core docs on height() to see what happens when used on an element.
|
22 |
+
*
|
23 |
+
* @example $("#testdiv").height()
|
24 |
+
* @result 200
|
25 |
+
*
|
26 |
+
* @example $(document).height()
|
27 |
+
* @result 800
|
28 |
+
*
|
29 |
+
* @example $(window).height()
|
30 |
+
* @result 400
|
31 |
+
*
|
32 |
+
* @name height
|
33 |
+
* @type Object
|
34 |
+
* @cat Plugins/Dimensions
|
35 |
+
*/
|
36 |
+
height: function() {
|
37 |
+
if ( this[0] == window )
|
38 |
+
return self.innerHeight ||
|
39 |
+
$.boxModel && document.documentElement.clientHeight ||
|
40 |
+
document.body.clientHeight;
|
41 |
+
|
42 |
+
if ( this[0] == document )
|
43 |
+
return Math.max( document.body.scrollHeight, document.body.offsetHeight );
|
44 |
+
|
45 |
+
return height.apply(this, arguments);
|
46 |
+
},
|
47 |
+
|
48 |
+
/**
|
49 |
+
* If used on document, returns the document's width (innerWidth)
|
50 |
+
* If used on window, returns the viewport's (window) width
|
51 |
+
* See core docs on height() to see what happens when used on an element.
|
52 |
+
*
|
53 |
+
* @example $("#testdiv").width()
|
54 |
+
* @result 200
|
55 |
+
*
|
56 |
+
* @example $(document).width()
|
57 |
+
* @result 800
|
58 |
+
*
|
59 |
+
* @example $(window).width()
|
60 |
+
* @result 400
|
61 |
+
*
|
62 |
+
* @name width
|
63 |
+
* @type Object
|
64 |
+
* @cat Plugins/Dimensions
|
65 |
+
*/
|
66 |
+
width: function() {
|
67 |
+
if ( this[0] == window )
|
68 |
+
return self.innerWidth ||
|
69 |
+
$.boxModel && document.documentElement.clientWidth ||
|
70 |
+
document.body.clientWidth;
|
71 |
+
|
72 |
+
if ( this[0] == document )
|
73 |
+
return Math.max( document.body.scrollWidth, document.body.offsetWidth );
|
74 |
+
|
75 |
+
return width.apply(this, arguments);
|
76 |
+
},
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Returns the inner height value (without border) for the first matched element.
|
80 |
+
* If used on document, returns the document's height (innerHeight)
|
81 |
+
* If used on window, returns the viewport's (window) height
|
82 |
+
*
|
83 |
+
* @example $("#testdiv").innerHeight()
|
84 |
+
* @result 800
|
85 |
+
*
|
86 |
+
* @name innerHeight
|
87 |
+
* @type Number
|
88 |
+
* @cat Plugins/Dimensions
|
89 |
+
*/
|
90 |
+
innerHeight: function() {
|
91 |
+
return this[0] == window || this[0] == document ?
|
92 |
+
this.height() :
|
93 |
+
this.is(':visible') ?
|
94 |
+
this[0].offsetHeight - num(this, 'borderTopWidth') - num(this, 'borderBottomWidth') :
|
95 |
+
this.height() + num(this, 'paddingTop') + num(this, 'paddingBottom');
|
96 |
+
},
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Returns the inner width value (without border) for the first matched element.
|
100 |
+
* If used on document, returns the document's Width (innerWidth)
|
101 |
+
* If used on window, returns the viewport's (window) width
|
102 |
+
*
|
103 |
+
* @example $("#testdiv").innerWidth()
|
104 |
+
* @result 1000
|
105 |
+
*
|
106 |
+
* @name innerWidth
|
107 |
+
* @type Number
|
108 |
+
* @cat Plugins/Dimensions
|
109 |
+
*/
|
110 |
+
innerWidth: function() {
|
111 |
+
return this[0] == window || this[0] == document ?
|
112 |
+
this.width() :
|
113 |
+
this.is(':visible') ?
|
114 |
+
this[0].offsetWidth - num(this, 'borderLeftWidth') - num(this, 'borderRightWidth') :
|
115 |
+
this.width() + num(this, 'paddingLeft') + num(this, 'paddingRight');
|
116 |
+
},
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Returns the outer height value (including border) for the first matched element.
|
120 |
+
* Cannot be used on document or window.
|
121 |
+
*
|
122 |
+
* @example $("#testdiv").outerHeight()
|
123 |
+
* @result 1000
|
124 |
+
*
|
125 |
+
* @name outerHeight
|
126 |
+
* @type Number
|
127 |
+
* @cat Plugins/Dimensions
|
128 |
+
*/
|
129 |
+
outerHeight: function() {
|
130 |
+
return this[0] == window || this[0] == document ?
|
131 |
+
this.height() :
|
132 |
+
this.is(':visible') ?
|
133 |
+
this[0].offsetHeight :
|
134 |
+
this.height() + num(this,'borderTopWidth') + num(this, 'borderBottomWidth') + num(this, 'paddingTop') + num(this, 'paddingBottom');
|
135 |
+
},
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Returns the outer width value (including border) for the first matched element.
|
139 |
+
* Cannot be used on document or window.
|
140 |
+
*
|
141 |
+
* @example $("#testdiv").outerHeight()
|
142 |
+
* @result 1000
|
143 |
+
*
|
144 |
+
* @name outerHeight
|
145 |
+
* @type Number
|
146 |
+
* @cat Plugins/Dimensions
|
147 |
+
*/
|
148 |
+
outerWidth: function() {
|
149 |
+
return this[0] == window || this[0] == document ?
|
150 |
+
this.width() :
|
151 |
+
this.is(':visible') ?
|
152 |
+
this[0].offsetWidth :
|
153 |
+
this.width() + num(this, 'borderLeftWidth') + num(this, 'borderRightWidth') + num(this, 'paddingLeft') + num(this, 'paddingRight');
|
154 |
+
},
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Returns how many pixels the user has scrolled to the right (scrollLeft).
|
158 |
+
* Works on containers with overflow: auto and window/document.
|
159 |
+
*
|
160 |
+
* @example $("#testdiv").scrollLeft()
|
161 |
+
* @result 100
|
162 |
+
*
|
163 |
+
* @name scrollLeft
|
164 |
+
* @type Number
|
165 |
+
* @cat Plugins/Dimensions
|
166 |
+
*/
|
167 |
+
/**
|
168 |
+
* Sets the scrollLeft property and continues the chain.
|
169 |
+
* Works on containers with overflow: auto and window/document.
|
170 |
+
*
|
171 |
+
* @example $("#testdiv").scrollLeft(10).scrollLeft()
|
172 |
+
* @result 10
|
173 |
+
*
|
174 |
+
* @name scrollLeft
|
175 |
+
* @param Number value A positive number representing the desired scrollLeft.
|
176 |
+
* @type jQuery
|
177 |
+
* @cat Plugins/Dimensions
|
178 |
+
*/
|
179 |
+
scrollLeft: function(val) {
|
180 |
+
if ( val != undefined )
|
181 |
+
// set the scroll left
|
182 |
+
return this.each(function() {
|
183 |
+
if (this == window || this == document)
|
184 |
+
window.scrollTo( val, $(window).scrollTop() );
|
185 |
+
else
|
186 |
+
this.scrollLeft = val;
|
187 |
+
});
|
188 |
+
|
189 |
+
// return the scroll left offest in pixels
|
190 |
+
if ( this[0] == window || this[0] == document )
|
191 |
+
return self.pageXOffset ||
|
192 |
+
$.boxModel && document.documentElement.scrollLeft ||
|
193 |
+
document.body.scrollLeft;
|
194 |
+
|
195 |
+
return this[0].scrollLeft;
|
196 |
+
},
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Returns how many pixels the user has scrolled to the bottom (scrollTop).
|
200 |
+
* Works on containers with overflow: auto and window/document.
|
201 |
+
*
|
202 |
+
* @example $("#testdiv").scrollTop()
|
203 |
+
* @result 100
|
204 |
+
*
|
205 |
+
* @name scrollTop
|
206 |
+
* @type Number
|
207 |
+
* @cat Plugins/Dimensions
|
208 |
+
*/
|
209 |
+
/**
|
210 |
+
* Sets the scrollTop property and continues the chain.
|
211 |
+
* Works on containers with overflow: auto and window/document.
|
212 |
+
*
|
213 |
+
* @example $("#testdiv").scrollTop(10).scrollTop()
|
214 |
+
* @result 10
|
215 |
+
*
|
216 |
+
* @name scrollTop
|
217 |
+
* @param Number value A positive number representing the desired scrollTop.
|
218 |
+
* @type jQuery
|
219 |
+
* @cat Plugins/Dimensions
|
220 |
+
*/
|
221 |
+
scrollTop: function(val) {
|
222 |
+
if ( val != undefined )
|
223 |
+
// set the scroll top
|
224 |
+
return this.each(function() {
|
225 |
+
if (this == window || this == document)
|
226 |
+
window.scrollTo( $(window).scrollLeft(), val );
|
227 |
+
else
|
228 |
+
this.scrollTop = val;
|
229 |
+
});
|
230 |
+
|
231 |
+
// return the scroll top offset in pixels
|
232 |
+
if ( this[0] == window || this[0] == document )
|
233 |
+
return self.pageYOffset ||
|
234 |
+
$.boxModel && document.documentElement.scrollTop ||
|
235 |
+
document.body.scrollTop;
|
236 |
+
|
237 |
+
return this[0].scrollTop;
|
238 |
+
},
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Returns the top and left positioned offset in pixels.
|
242 |
+
* The positioned offset is the offset between a positioned
|
243 |
+
* parent and the element itself.
|
244 |
+
*
|
245 |
+
* @example $("#testdiv").position()
|
246 |
+
* @result { top: 100, left: 100 }
|
247 |
+
*
|
248 |
+
* @name position
|
249 |
+
* @param Map options Optional settings to configure the way the offset is calculated.
|
250 |
+
* @option Boolean margin Should the margin of the element be included in the calculations? False by default.
|
251 |
+
* @option Boolean border Should the border of the element be included in the calculations? False by default.
|
252 |
+
* @option Boolean padding Should the padding of the element be included in the calculations? False by default.
|
253 |
+
* @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the
|
254 |
+
* chain will not be broken and the result will be assigned to this object.
|
255 |
+
* @type Object
|
256 |
+
* @cat Plugins/Dimensions
|
257 |
+
*/
|
258 |
+
position: function(options, returnObject) {
|
259 |
+
var elem = this[0], parent = elem.parentNode, op = elem.offsetParent,
|
260 |
+
options = $.extend({ margin: false, border: false, padding: false, scroll: false }, options || {}),
|
261 |
+
x = elem.offsetLeft,
|
262 |
+
y = elem.offsetTop,
|
263 |
+
sl = elem.scrollLeft,
|
264 |
+
st = elem.scrollTop;
|
265 |
+
|
266 |
+
// Mozilla and IE do not add the border
|
267 |
+
if ($.browser.mozilla || $.browser.msie) {
|
268 |
+
// add borders to offset
|
269 |
+
x += num(elem, 'borderLeftWidth');
|
270 |
+
y += num(elem, 'borderTopWidth');
|
271 |
+
}
|
272 |
+
|
273 |
+
if ($.browser.mozilla) {
|
274 |
+
do {
|
275 |
+
// Mozilla does not add the border for a parent that has overflow set to anything but visible
|
276 |
+
if ($.browser.mozilla && parent != elem && $.css(parent, 'overflow') != 'visible') {
|
277 |
+
x += num(parent, 'borderLeftWidth');
|
278 |
+
y += num(parent, 'borderTopWidth');
|
279 |
+
}
|
280 |
+
|
281 |
+
if (parent == op) break; // break if we are already at the offestParent
|
282 |
+
} while ((parent = parent.parentNode) && (parent.tagName.toLowerCase() != 'body' || parent.tagName.toLowerCase() != 'html'));
|
283 |
+
}
|
284 |
+
|
285 |
+
var returnValue = handleOffsetReturn(elem, options, x, y, sl, st);
|
286 |
+
|
287 |
+
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
288 |
+
else { return returnValue; }
|
289 |
+
},
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Returns the location of the element in pixels from the top left corner of the viewport.
|
293 |
+
*
|
294 |
+
* For accurate readings make sure to use pixel values for margins, borders and padding.
|
295 |
+
*
|
296 |
+
* Known issues:
|
297 |
+
* - Issue: A div positioned relative or static without any content before it and its parent will report an offsetTop of 0 in Safari
|
298 |
+
* Workaround: Place content before the relative div ... and set height and width to 0 and overflow to hidden
|
299 |
+
*
|
300 |
+
* @example $("#testdiv").offset()
|
301 |
+
* @result { top: 100, left: 100, scrollTop: 10, scrollLeft: 10 }
|
302 |
+
*
|
303 |
+
* @example $("#testdiv").offset({ scroll: false })
|
304 |
+
* @result { top: 90, left: 90 }
|
305 |
+
*
|
306 |
+
* @example var offset = {}
|
307 |
+
* $("#testdiv").offset({ scroll: false }, offset)
|
308 |
+
* @result offset = { top: 90, left: 90 }
|
309 |
+
*
|
310 |
+
* @name offset
|
311 |
+
* @param Map options Optional settings to configure the way the offset is calculated.
|
312 |
+
* @option Boolean margin Should the margin of the element be included in the calculations? True by default.
|
313 |
+
* @option Boolean border Should the border of the element be included in the calculations? False by default.
|
314 |
+
* @option Boolean padding Should the padding of the element be included in the calculations? False by default.
|
315 |
+
* @option Boolean scroll Should the scroll offsets of the parent elements be included in the calculations? True by default.
|
316 |
+
* When true it adds the totla scroll offets of all parents to the total offset and also adds two properties
|
317 |
+
* to the returned object, scrollTop and scrollLeft.
|
318 |
+
* @options Boolean lite Will use offsetLite instead of offset when set to true. False by default.
|
319 |
+
* @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the
|
320 |
+
* chain will not be broken and the result will be assigned to this object.
|
321 |
+
* @type Object
|
322 |
+
* @cat Plugins/Dimensions
|
323 |
+
*/
|
324 |
+
offset: function(options, returnObject) {
|
325 |
+
var x = 0, y = 0, sl = 0, st = 0,
|
326 |
+
elem = this[0], parent = this[0], op, parPos, elemPos = $.css(elem, 'position'),
|
327 |
+
mo = $.browser.mozilla, ie = $.browser.msie, sf = $.browser.safari, oa = $.browser.opera,
|
328 |
+
absparent = false, relparent = false,
|
329 |
+
options = $.extend({ margin: true, border: false, padding: false, scroll: true, lite: false }, options || {});
|
330 |
+
|
331 |
+
// Use offsetLite if lite option is true
|
332 |
+
if (options.lite) return this.offsetLite(options, returnObject);
|
333 |
+
|
334 |
+
if (elem.tagName.toLowerCase() == 'body') {
|
335 |
+
// Safari is the only one to get offsetLeft and offsetTop properties of the body "correct"
|
336 |
+
// Except they all mess up when the body is positioned absolute or relative
|
337 |
+
x = elem.offsetLeft;
|
338 |
+
y = elem.offsetTop;
|
339 |
+
// Mozilla ignores margin and subtracts border from body element
|
340 |
+
if (mo) {
|
341 |
+
x += num(elem, 'marginLeft') + (num(elem, 'borderLeftWidth')*2);
|
342 |
+
y += num(elem, 'marginTop') + (num(elem, 'borderTopWidth') *2);
|
343 |
+
} else
|
344 |
+
// Opera ignores margin
|
345 |
+
if (oa) {
|
346 |
+
x += num(elem, 'marginLeft');
|
347 |
+
y += num(elem, 'marginTop');
|
348 |
+
} else
|
349 |
+
// IE does not add the border in Standards Mode
|
350 |
+
if (ie && jQuery.boxModel) {
|
351 |
+
x += num(elem, 'borderLeftWidth');
|
352 |
+
y += num(elem, 'borderTopWidth');
|
353 |
+
}
|
354 |
+
} else {
|
355 |
+
do {
|
356 |
+
parPos = $.css(parent, 'position');
|
357 |
+
|
358 |
+
x += parent.offsetLeft;
|
359 |
+
y += parent.offsetTop;
|
360 |
+
|
361 |
+
// Mozilla and IE do not add the border
|
362 |
+
if (mo || ie) {
|
363 |
+
// add borders to offset
|
364 |
+
x += num(parent, 'borderLeftWidth');
|
365 |
+
y += num(parent, 'borderTopWidth');
|
366 |
+
|
367 |
+
// Mozilla does not include the border on body if an element isn't positioned absolute and is without an absolute parent
|
368 |
+
if (mo && parPos == 'absolute') absparent = true;
|
369 |
+
// IE does not include the border on the body if an element is position static and without an absolute or relative parent
|
370 |
+
if (ie && parPos == 'relative') relparent = true;
|
371 |
+
}
|
372 |
+
|
373 |
+
op = parent.offsetParent;
|
374 |
+
if (options.scroll || mo) {
|
375 |
+
do {
|
376 |
+
if (options.scroll) {
|
377 |
+
// get scroll offsets
|
378 |
+
sl += parent.scrollLeft;
|
379 |
+
st += parent.scrollTop;
|
380 |
+
}
|
381 |
+
|
382 |
+
// Mozilla does not add the border for a parent that has overflow set to anything but visible
|
383 |
+
if (mo && parent != elem && $.css(parent, 'overflow') != 'visible') {
|
384 |
+
x += num(parent, 'borderLeftWidth');
|
385 |
+
y += num(parent, 'borderTopWidth');
|
386 |
+
}
|
387 |
+
|
388 |
+
parent = parent.parentNode;
|
389 |
+
} while (parent != op);
|
390 |
+
}
|
391 |
+
parent = op;
|
392 |
+
|
393 |
+
if (parent.tagName.toLowerCase() == 'body' || parent.tagName.toLowerCase() == 'html') {
|
394 |
+
// Safari and IE Standards Mode doesn't add the body margin for elments positioned with static or relative
|
395 |
+
if ((sf || (ie && $.boxModel)) && elemPos != 'absolute' && elemPos != 'fixed') {
|
396 |
+
x += num(parent, 'marginLeft');
|
397 |
+
y += num(parent, 'marginTop');
|
398 |
+
}
|
399 |
+
// Mozilla does not include the border on body if an element isn't positioned absolute and is without an absolute parent
|
400 |
+
// IE does not include the border on the body if an element is positioned static and without an absolute or relative parent
|
401 |
+
if ( (mo && !absparent && elemPos != 'fixed') ||
|
402 |
+
(ie && elemPos == 'static' && !relparent) ) {
|
403 |
+
x += num(parent, 'borderLeftWidth');
|
404 |
+
y += num(parent, 'borderTopWidth');
|
405 |
+
}
|
406 |
+
break; // Exit the loop
|
407 |
+
}
|
408 |
+
} while (parent);
|
409 |
+
}
|
410 |
+
|
411 |
+
var returnValue = handleOffsetReturn(elem, options, x, y, sl, st);
|
412 |
+
|
413 |
+
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
414 |
+
else { return returnValue; }
|
415 |
+
},
|
416 |
+
|
417 |
+
/**
|
418 |
+
* Returns the location of the element in pixels from the top left corner of the viewport.
|
419 |
+
* This method is much faster than offset but not as accurate. This method can be invoked
|
420 |
+
* by setting the lite option to true in the offset method.
|
421 |
+
*
|
422 |
+
* @name offsetLite
|
423 |
+
* @param Map options Optional settings to configure the way the offset is calculated.
|
424 |
+
* @option Boolean margin Should the margin of the element be included in the calculations? True by default.
|
425 |
+
* @option Boolean border Should the border of the element be included in the calculations? False by default.
|
426 |
+
* @option Boolean padding Should the padding of the element be included in the calculations? False by default.
|
427 |
+
* @option Boolean scroll Should the scroll offsets of the parent elements be included in the calculations? True by default.
|
428 |
+
* When true it adds the totla scroll offets of all parents to the total offset and also adds two properties
|
429 |
+
* to the returned object, scrollTop and scrollLeft.
|
430 |
+
* @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the
|
431 |
+
* chain will not be broken and the result will be assigned to this object.
|
432 |
+
* @type Object
|
433 |
+
* @cat Plugins/Dimensions
|
434 |
+
*/
|
435 |
+
offsetLite: function(options, returnObject) {
|
436 |
+
var x = 0, y = 0, sl = 0, st = 0, parent = this[0], op,
|
437 |
+
options = $.extend({ margin: true, border: false, padding: false, scroll: true }, options || {});
|
438 |
+
|
439 |
+
do {
|
440 |
+
x += parent.offsetLeft;
|
441 |
+
y += parent.offsetTop;
|
442 |
+
|
443 |
+
op = parent.offsetParent;
|
444 |
+
if (options.scroll) {
|
445 |
+
// get scroll offsets
|
446 |
+
do {
|
447 |
+
sl += parent.scrollLeft;
|
448 |
+
st += parent.scrollTop;
|
449 |
+
parent = parent.parentNode;
|
450 |
+
} while(parent != op);
|
451 |
+
}
|
452 |
+
parent = op;
|
453 |
+
} while (parent && parent.tagName.toLowerCase() != 'body' && parent.tagName.toLowerCase() != 'html');
|
454 |
+
|
455 |
+
var returnValue = handleOffsetReturn(this[0], options, x, y, sl, st);
|
456 |
+
|
457 |
+
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
458 |
+
else { return returnValue; }
|
459 |
+
}
|
460 |
+
});
|
461 |
+
|
462 |
+
/**
|
463 |
+
* Handles converting a CSS Style into an Integer.
|
464 |
+
* @private
|
465 |
+
*/
|
466 |
+
var num = function(el, prop) {
|
467 |
+
return parseInt($.css(el.jquery?el[0]:el,prop))||0;
|
468 |
+
};
|
469 |
+
|
470 |
+
/**
|
471 |
+
* Handles the return value of the offset and offsetLite methods.
|
472 |
+
* @private
|
473 |
+
*/
|
474 |
+
var handleOffsetReturn = function(elem, options, x, y, sl, st) {
|
475 |
+
if ( !options.margin ) {
|
476 |
+
x -= num(elem, 'marginLeft');
|
477 |
+
y -= num(elem, 'marginTop');
|
478 |
+
}
|
479 |
+
|
480 |
+
// Safari and Opera do not add the border for the element
|
481 |
+
if ( options.border && ($.browser.safari || $.browser.opera) ) {
|
482 |
+
x += num(elem, 'borderLeftWidth');
|
483 |
+
y += num(elem, 'borderTopWidth');
|
484 |
+
} else if ( !options.border && !($.browser.safari || $.browser.opera) ) {
|
485 |
+
x -= num(elem, 'borderLeftWidth');
|
486 |
+
y -= num(elem, 'borderTopWidth');
|
487 |
+
}
|
488 |
+
|
489 |
+
if ( options.padding ) {
|
490 |
+
x += num(elem, 'paddingLeft');
|
491 |
+
y += num(elem, 'paddingTop');
|
492 |
+
}
|
493 |
+
|
494 |
+
// do not include scroll offset on the element
|
495 |
+
if ( options.scroll ) {
|
496 |
+
sl -= elem.scrollLeft;
|
497 |
+
st -= elem.scrollTop;
|
498 |
+
}
|
499 |
+
|
500 |
+
return options.scroll ? { top: y - st, left: x - sl, scrollTop: st, scrollLeft: sl }
|
501 |
+
: { top: y, left: x };
|
502 |
+
};
|
503 |
+
|
504 |
+
})(jQuery);
|
js/quickdetail/js/tooltip/jquery.tooltip.js
ADDED
@@ -0,0 +1,299 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Tooltip plugin 1.3
|
3 |
+
*
|
4 |
+
* http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
|
5 |
+
* http://docs.jquery.com/Plugins/Tooltip
|
6 |
+
*
|
7 |
+
* Copyright (c) 2006 - 2008 Jörn Zaefferer
|
8 |
+
*
|
9 |
+
* $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
|
10 |
+
*
|
11 |
+
* Dual licensed under the MIT and GPL licenses:
|
12 |
+
* http://www.opensource.org/licenses/mit-license.php
|
13 |
+
* http://www.gnu.org/licenses/gpl.html
|
14 |
+
*/
|
15 |
+
|
16 |
+
;(function($) {
|
17 |
+
|
18 |
+
// the tooltip element
|
19 |
+
var helper = {},
|
20 |
+
// the current tooltipped element
|
21 |
+
current,
|
22 |
+
// the title of the current element, used for restoring
|
23 |
+
title,
|
24 |
+
// timeout id for delayed tooltips
|
25 |
+
tID,
|
26 |
+
// IE 5.5 or 6
|
27 |
+
IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent),
|
28 |
+
// flag for mouse tracking
|
29 |
+
track = false;
|
30 |
+
|
31 |
+
$.tooltip = {
|
32 |
+
blocked: false,
|
33 |
+
defaults: {
|
34 |
+
delay: 200,
|
35 |
+
fade: false,
|
36 |
+
showURL: true,
|
37 |
+
extraClass: "",
|
38 |
+
top: 15,
|
39 |
+
left: 15,
|
40 |
+
id: "tooltip"
|
41 |
+
},
|
42 |
+
block: function() {
|
43 |
+
$.tooltip.blocked = !$.tooltip.blocked;
|
44 |
+
}
|
45 |
+
};
|
46 |
+
|
47 |
+
$.fn.extend({
|
48 |
+
tooltip: function(settings) {
|
49 |
+
settings = $.extend({}, $.tooltip.defaults, settings);
|
50 |
+
createHelper(settings);
|
51 |
+
return this.each(function() {
|
52 |
+
$.data(this, "tooltip", settings);
|
53 |
+
this.tOpacity = helper.parent.css("opacity");
|
54 |
+
// copy tooltip into its own expando and remove the title
|
55 |
+
this.tooltipText = this.title;
|
56 |
+
$(this).removeAttr("title");
|
57 |
+
// also remove alt attribute to prevent default tooltip in IE
|
58 |
+
this.alt = "";
|
59 |
+
})
|
60 |
+
.mouseover(save)
|
61 |
+
.mouseout(hide)
|
62 |
+
.click(hide);
|
63 |
+
},
|
64 |
+
fixPNG: IE ? function() {
|
65 |
+
return this.each(function () {
|
66 |
+
var image = $(this).css('backgroundImage');
|
67 |
+
if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
|
68 |
+
image = RegExp.$1;
|
69 |
+
$(this).css({
|
70 |
+
'backgroundImage': 'none',
|
71 |
+
'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
|
72 |
+
}).each(function () {
|
73 |
+
var position = $(this).css('position');
|
74 |
+
if (position != 'absolute' && position != 'relative')
|
75 |
+
$(this).css('position', 'relative');
|
76 |
+
});
|
77 |
+
}
|
78 |
+
});
|
79 |
+
} : function() { return this; },
|
80 |
+
unfixPNG: IE ? function() {
|
81 |
+
return this.each(function () {
|
82 |
+
$(this).css({'filter': '', backgroundImage: ''});
|
83 |
+
});
|
84 |
+
} : function() { return this; },
|
85 |
+
hideWhenEmpty: function() {
|
86 |
+
return this.each(function() {
|
87 |
+
$(this)[ $(this).html() ? "show" : "hide" ]();
|
88 |
+
});
|
89 |
+
},
|
90 |
+
url: function() {
|
91 |
+
return this.attr('href') || this.attr('src');
|
92 |
+
}
|
93 |
+
});
|
94 |
+
|
95 |
+
function createHelper(settings) {
|
96 |
+
// there can be only one tooltip helper
|
97 |
+
if( helper.parent )
|
98 |
+
return;
|
99 |
+
// create the helper, h3 for title, div for url
|
100 |
+
helper.parent = $('<div id="' + settings.id + '"><h3></h3><div class="body"></div><div class="url"></div></div>')
|
101 |
+
// add to document
|
102 |
+
.appendTo(document.body)
|
103 |
+
// hide it at first
|
104 |
+
.hide();
|
105 |
+
|
106 |
+
// apply bgiframe if available
|
107 |
+
if ( $.fn.bgiframe )
|
108 |
+
helper.parent.bgiframe();
|
109 |
+
|
110 |
+
// save references to title and url elements
|
111 |
+
helper.title = $('h3', helper.parent);
|
112 |
+
helper.body = $('div.body', helper.parent);
|
113 |
+
helper.url = $('div.url', helper.parent);
|
114 |
+
}
|
115 |
+
|
116 |
+
function settings(element) {
|
117 |
+
return $.data(element, "tooltip");
|
118 |
+
}
|
119 |
+
|
120 |
+
// main event handler to start showing tooltips
|
121 |
+
function handle(event) {
|
122 |
+
// show helper, either with timeout or on instant
|
123 |
+
if( settings(this).delay )
|
124 |
+
tID = setTimeout(show, settings(this).delay);
|
125 |
+
else
|
126 |
+
show();
|
127 |
+
|
128 |
+
// if selected, update the helper position when the mouse moves
|
129 |
+
track = !!settings(this).track;
|
130 |
+
$(document.body).bind('mousemove', update);
|
131 |
+
|
132 |
+
// update at least once
|
133 |
+
update(event);
|
134 |
+
}
|
135 |
+
|
136 |
+
// save elements title before the tooltip is displayed
|
137 |
+
function save() {
|
138 |
+
// if this is the current source, or it has no title (occurs with click event), stop
|
139 |
+
if ( $.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler) )
|
140 |
+
return;
|
141 |
+
|
142 |
+
// save current
|
143 |
+
current = this;
|
144 |
+
title = this.tooltipText;
|
145 |
+
|
146 |
+
if ( settings(this).bodyHandler ) {
|
147 |
+
helper.title.hide();
|
148 |
+
var bodyContent = settings(this).bodyHandler.call(this);
|
149 |
+
if (bodyContent.nodeType || bodyContent.jquery) {
|
150 |
+
helper.body.empty().append(bodyContent)
|
151 |
+
} else {
|
152 |
+
helper.body.html( bodyContent );
|
153 |
+
}
|
154 |
+
helper.body.show();
|
155 |
+
} else if ( settings(this).showBody ) {
|
156 |
+
var parts = title.split(settings(this).showBody);
|
157 |
+
helper.title.html(parts.shift()).show();
|
158 |
+
helper.body.empty();
|
159 |
+
for(var i = 0, part; (part = parts[i]); i++) {
|
160 |
+
if(i > 0)
|
161 |
+
helper.body.append("<br/>");
|
162 |
+
helper.body.append(part);
|
163 |
+
}
|
164 |
+
helper.body.hideWhenEmpty();
|
165 |
+
} else {
|
166 |
+
helper.title.html(title).show();
|
167 |
+
helper.body.hide();
|
168 |
+
}
|
169 |
+
|
170 |
+
// if element has href or src, add and show it, otherwise hide it
|
171 |
+
if( settings(this).showURL && $(this).url() )
|
172 |
+
helper.url.html( $(this).url().replace('http://', '') ).show();
|
173 |
+
else
|
174 |
+
helper.url.hide();
|
175 |
+
|
176 |
+
// add an optional class for this tip
|
177 |
+
helper.parent.addClass(settings(this).extraClass);
|
178 |
+
|
179 |
+
// fix PNG background for IE
|
180 |
+
if (settings(this).fixPNG )
|
181 |
+
helper.parent.fixPNG();
|
182 |
+
|
183 |
+
handle.apply(this, arguments);
|
184 |
+
}
|
185 |
+
|
186 |
+
// delete timeout and show helper
|
187 |
+
function show() {
|
188 |
+
tID = null;
|
189 |
+
if ((!IE || !$.fn.bgiframe) && settings(current).fade) {
|
190 |
+
if (helper.parent.is(":animated"))
|
191 |
+
helper.parent.stop().show().fadeTo(settings(current).fade, current.tOpacity);
|
192 |
+
else
|
193 |
+
helper.parent.is(':visible') ? helper.parent.fadeTo(settings(current).fade, current.tOpacity) : helper.parent.fadeIn(settings(current).fade);
|
194 |
+
} else {
|
195 |
+
helper.parent.show();
|
196 |
+
}
|
197 |
+
update();
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* callback for mousemove
|
202 |
+
* updates the helper position
|
203 |
+
* removes itself when no current element
|
204 |
+
*/
|
205 |
+
function update(event) {
|
206 |
+
if($.tooltip.blocked)
|
207 |
+
return;
|
208 |
+
|
209 |
+
if (event && event.target.tagName == "OPTION") {
|
210 |
+
return;
|
211 |
+
}
|
212 |
+
|
213 |
+
// stop updating when tracking is disabled and the tooltip is visible
|
214 |
+
if ( !track && helper.parent.is(":visible")) {
|
215 |
+
$(document.body).unbind('mousemove', update)
|
216 |
+
}
|
217 |
+
|
218 |
+
// if no current element is available, remove this listener
|
219 |
+
if( current == null ) {
|
220 |
+
$(document.body).unbind('mousemove', update);
|
221 |
+
return;
|
222 |
+
}
|
223 |
+
|
224 |
+
// remove position helper classes
|
225 |
+
helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");
|
226 |
+
|
227 |
+
var left = helper.parent[0].offsetLeft;
|
228 |
+
var top = helper.parent[0].offsetTop;
|
229 |
+
if (event) {
|
230 |
+
// position the helper 15 pixel to bottom right, starting from mouse position
|
231 |
+
left = event.pageX + settings(current).left;
|
232 |
+
if(parseInt($.browser.version) == 9 || parseInt($.browser.version) == 10){
|
233 |
+
top = event.clientY + document.documentElement.scrollTop + settings(current).top;
|
234 |
+
}else{
|
235 |
+
top = event.pageY + settings(current).top;
|
236 |
+
}
|
237 |
+
|
238 |
+
var right='auto';
|
239 |
+
if (settings(current).positionLeft) {
|
240 |
+
right = $(window).width() - left;
|
241 |
+
left = 'auto';
|
242 |
+
}
|
243 |
+
helper.parent.css({
|
244 |
+
left: left,
|
245 |
+
right: right,
|
246 |
+
top: top
|
247 |
+
});
|
248 |
+
}
|
249 |
+
|
250 |
+
var v = viewport(),
|
251 |
+
h = helper.parent[0];
|
252 |
+
// check horizontal position
|
253 |
+
if (v.x + v.cx < h.offsetLeft + h.offsetWidth) {
|
254 |
+
left -= h.offsetWidth + 20 + settings(current).left;
|
255 |
+
helper.parent.css({left: left + 'px'}).addClass("viewport-right");
|
256 |
+
}
|
257 |
+
// check vertical position
|
258 |
+
if (v.y + v.cy < h.offsetTop + h.offsetHeight) {
|
259 |
+
top -= h.offsetHeight + 20 + settings(current).top;
|
260 |
+
helper.parent.css({top: top + 'px'}).addClass("viewport-bottom");
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
function viewport() {
|
265 |
+
return {
|
266 |
+
x: $(window).scrollLeft(),
|
267 |
+
y: $(window).scrollTop(),
|
268 |
+
cx: $(window).width(),
|
269 |
+
cy: $(window).height()
|
270 |
+
};
|
271 |
+
}
|
272 |
+
|
273 |
+
// hide helper and restore added classes and the title
|
274 |
+
function hide(event) {
|
275 |
+
if($.tooltip.blocked)
|
276 |
+
return;
|
277 |
+
// clear timeout if possible
|
278 |
+
if(tID)
|
279 |
+
clearTimeout(tID);
|
280 |
+
// no more current element
|
281 |
+
current = null;
|
282 |
+
|
283 |
+
var tsettings = settings(this);
|
284 |
+
function complete() {
|
285 |
+
helper.parent.removeClass( tsettings.extraClass ).hide().css("opacity", "");
|
286 |
+
}
|
287 |
+
if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
|
288 |
+
if (helper.parent.is(':animated'))
|
289 |
+
helper.parent.stop().fadeTo(tsettings.fade, 0, complete);
|
290 |
+
else
|
291 |
+
helper.parent.stop().fadeOut(tsettings.fade, complete);
|
292 |
+
} else
|
293 |
+
complete();
|
294 |
+
|
295 |
+
if( settings(this).fixPNG )
|
296 |
+
helper.parent.unfixPNG();
|
297 |
+
}
|
298 |
+
|
299 |
+
})(jQuery);
|
js/quickdetail/js/uni_quickdetail.js
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(function($) {
|
2 |
+
|
3 |
+
|
4 |
+
function _qsJnit(){
|
5 |
+
|
6 |
+
var selectorObj = arguments[0];
|
7 |
+
var listprod = $(selectorObj.itemClass);
|
8 |
+
|
9 |
+
var _qsHref = "<div id=\"quickdetail_handler\" href=\"#\" style=\"visibility:hidden;position:absolute;top:0;left:0\"></div>";
|
10 |
+
$(document.body).append(_qsHref);
|
11 |
+
|
12 |
+
$.each(listprod, function(index, value) {
|
13 |
+
var liindex = this;
|
14 |
+
$(selectorObj.imgClass, this).bind('mouseover', function() {
|
15 |
+
$('#quickdetail_handler').html($(liindex).find('.quickdetail_div').html());
|
16 |
+
})
|
17 |
+
$(selectorObj.imgClass, this).tooltip({
|
18 |
+
track: true,
|
19 |
+
delay: 0,
|
20 |
+
showURL: false,
|
21 |
+
showBody: " - ",
|
22 |
+
fade: 250,
|
23 |
+
bodyHandler: function() {
|
24 |
+
return $("#quickdetail_handler").html();
|
25 |
+
}
|
26 |
+
});
|
27 |
+
var bkgColor = '#'+$('#background_color_info').attr('value');
|
28 |
+
$('#tooltip').css('background-color',bkgColor);
|
29 |
+
});
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
_qsJnit({
|
34 |
+
itemClass : '.category-products li.item', //selector for each items in catalog product list,use to insert quickview image
|
35 |
+
imgClass: '.product-image' //class for quickview href product-collateral
|
36 |
+
});
|
37 |
+
})
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Quick_Detail</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL)</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Quick Details extension allows you to see product details on mouseover based on setting which is set by you in admin.</summary>
|
10 |
+
<description>Quick Details extension can increase your website's effectiveness by allowing customer to see quick details of any product on mouseover. This extension extends native Magento functionality with an ability to show all product attributes in product listing on simple mouseover on product image.This extension gives you the flexibility to show details for another theme also.For magento ver 1.9, it would work for default package not for rwd package. You can set backgrounds, height, width of popup via admin settings therefore its fully flexible and useful for your website to increase your site's sale.</description>
|
11 |
+
<notes>Quick Details extension allows you to see product details on mouseover based on setting which is set by you in admin. For magento ver 1.9, it would work for default package not for rwd package. This extension would work magento ver 1.4 and 1.3 also therefore you can download extension and use it.</notes>
|
12 |
+
<authors><author><name>Anupam Tiwari</name><user>MAG002574387</user><email>vishwasnature30@gmail.com</email></author></authors>
|
13 |
+
<date>2014-11-28</date>
|
14 |
+
<time>09:34:04</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Vishwasnature"><dir name="Quickdetail"><dir name="Helper"><file name="Data.php" hash="93fc0910858347bcbea2c1c18cc04a3f"/></dir><dir name="Model"><file name="Attributes.php" hash="da562514a1a6cd0990a251323e7e8684"/></dir><dir name="etc"><file name="config.xml" hash="e392b265a3e3a6adcf6db372eb70372d"/><file name="system.xml" hash="dbef64a383a4a6483970219d0885086a"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="quickdetail.xml" hash="1378056a287295271e343c775915527e"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="quickdetail.xml" hash="8492ac2d6d691acc9e30a230fbc9fecc"/></dir><dir name="template"><dir name="quickdetail"><dir name="product"><file name="all-list.phtml" hash="05d1fdf2983d4685621d083de3d15b89"/><dir name="list"><file name="list14.phtml" hash="230bb118fcc9b1eefb1789eb2e0bf4e6"/><file name="list15.phtml" hash="230bb118fcc9b1eefb1789eb2e0bf4e6"/><file name="list16.phtml" hash="230bb118fcc9b1eefb1789eb2e0bf4e6"/><file name="list17.phtml" hash="230bb118fcc9b1eefb1789eb2e0bf4e6"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Vishwasnature_Quickdetail.xml" hash="28bc56139920ce08fb233282f05db5cb"/></dir></target><target name="mage"><dir name="js"><dir name="quickdetail"><dir name="js"><file name="jquery-1.7.2.min.js" hash="09bf7cb5fd333ee8c1c6be7475f85026"/><file name="jquery.noconflict.js" hash="3179f2255b046d5f2e9a71e365287bef"/><dir name="jscolor"><file name="arrow.gif" hash="5034704a76cd55c1cbcbc58ea6bf523f"/><file name="cross.gif" hash="ba9a274b9323753cd95bc3b1eb2f4e5f"/><file name="demo.html" hash="edf71251cb2be20322d2efb00aee86a6"/><file name="hs.png" hash="fefa1a03d92ebad25c88dca94a0b63db"/><file name="hv.png" hash="990d71cada17da100653636cf8490884"/><file name="jscolor.js" hash="b65a1505390592ac6c0177d6b84774e0"/></dir><dir name="tooltip"><file name="jquery.dimensions.js" hash="6da53051dd3ab8a3b9f3790a86f28011"/><file name="jquery.tooltip.js" hash="333b01122e26dbe6ccac6eefb2e9c66e"/></dir><file name="uni_quickdetail.js" hash="2a4708d9f751b26e969934ca4aba2a99"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="quickdetail"><dir name="css"><file name="custom.css" hash="a17740a659e7c81436d7aa7c72968227"/><file name="jquery.tooltip.css" hash="0144e8bc6388b53ca55969102d9a3341"/></dir></dir></dir></dir></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
+
</package>
|
skin/frontend/base/default/quickdetail/css/custom.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.quickdetail_div{display: none;}
|
2 |
+
.all_details .product-image{float: left; padding-left:2px;}
|
3 |
+
.all_details .attribute_detail{width: 48%; float:right; text-align: left; margin: 10px 2px 0 2px;}
|
4 |
+
.attr_label{font-weight: bold;}
|
5 |
+
.all_details .head-text h3{color:#ffffff;}
|
skin/frontend/base/default/quickdetail/css/jquery.tooltip.css
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#tooltip {
|
2 |
+
position: absolute;
|
3 |
+
z-index: 3000;
|
4 |
+
border: 1px solid #F2BBED;
|
5 |
+
background-color: #eee;
|
6 |
+
padding: 0 0 5px 0;
|
7 |
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.5);
|
8 |
+
/*opacity: 0.85;*/
|
9 |
+
}
|
10 |
+
/*#tooltip h3, #tooltip div { margin: 0; }*/
|