Franceexpress_Ondemandlogo - Version 1.0.5

Version Notes

First preview release

Download this release

Release Info

Developer Ysance
Extension Franceexpress_Ondemandlogo
Version 1.0.5
Comparing to
See all releases


Version 1.0.5

Files changed (31) hide show
  1. app/code/community/Franceexpress/Ondemandlogo/Block/Sales/Order/View/Tab/Info.php +15 -0
  2. app/code/community/Franceexpress/Ondemandlogo/Block/Shipping.php +12 -0
  3. app/code/community/Franceexpress/Ondemandlogo/Helper/Data.php +109 -0
  4. app/code/community/Franceexpress/Ondemandlogo/Model/Carrier.php +111 -0
  5. app/code/community/Franceexpress/Ondemandlogo/Model/Frshippment.php +11 -0
  6. app/code/community/Franceexpress/Ondemandlogo/Model/Observer.php +84 -0
  7. app/code/community/Franceexpress/Ondemandlogo/Model/Resource/Frshippment.php +11 -0
  8. app/code/community/Franceexpress/Ondemandlogo/Model/Resource/Frshippment/Collection.php +11 -0
  9. app/code/community/Franceexpress/Ondemandlogo/Model/Sales/Order.php +24 -0
  10. app/code/community/Franceexpress/Ondemandlogo/etc/config.xml +186 -0
  11. app/code/community/Franceexpress/Ondemandlogo/etc/system.xml +102 -0
  12. app/code/community/Franceexpress/Ondemandlogo/sql/franceexpress_setup/mysql4-install-0.1.0.php +16 -0
  13. app/code/community/Franceexpress/Ondemandlogo/sql/franceexpress_setup/mysql4-uninstall-0.1.0.php +13 -0
  14. app/design/adminhtml/default/default/layout/franceexpress_ondemandlogo.xml +32 -0
  15. app/design/adminhtml/default/default/template/franceexpress/sales/order/view/tab/info.phtml +147 -0
  16. app/design/frontend/base/default/layout/franceexpress.xml +29 -0
  17. app/design/frontend/base/default/template/fr_exp/checkout/onepage/shipping_method/available.phtml +225 -0
  18. app/design/frontend/base/default/template/fr_exp/shipping.phtml +62 -0
  19. app/design/frontend/rwd/default/layout/franceexpress.xml +22 -0
  20. app/design/frontend/rwd/default/template/fr_exp/checkout/onepage/shipping_method/available.phtml +229 -0
  21. app/design/frontend/rwd/default/template/fr_exp/shipping.phtml +71 -0
  22. app/etc/modules/Franceexpress_Ondemandlogo.xml +12 -0
  23. app/locale/fr_FR/Franceexpress_Ondemandlogo.csv +17 -0
  24. js/franceexpress/jquery-1.11.0.min.js +4 -0
  25. js/franceexpress/no-conflict.js +7 -0
  26. package.xml +32 -0
  27. skin/frontend/base/default/css/franceexpress/geodis.css +15 -0
  28. skin/frontend/base/default/images/franceexpress/franceexpress_ondemandlogo_geodis_od_expert.jpg +0 -0
  29. skin/frontend/base/default/images/franceexpress/franceexpress_ondemandlogo_geodis_od_premium.jpg +0 -0
  30. skin/frontend/base/default/images/franceexpress/logo.png +0 -0
  31. skin/frontend/rwd/default/images/franceexpress/logoFranceExpress.png +0 -0
app/code/community/Franceexpress/Ondemandlogo/Block/Sales/Order/View/Tab/Info.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Block_Sales_Order_View_Tab_Info extends Mage_Adminhtml_Block_Sales_Order_View_Tab_Info {
4
+
5
+ /**
6
+ *
7
+ * get france express shipping information
8
+ */
9
+ public function getFranceExpressShippingInformations() {
10
+ $order_id = $this->getOrder()->getId();
11
+ $shippingCollection = Mage::getModel('franceexpress_ondemandlogo/frshippment')->getCollection()->addFieldToFilter('order_id', $order_id);
12
+ return $shippingCollection->getFirstItem();
13
+ }
14
+
15
+ }
app/code/community/Franceexpress/Ondemandlogo/Block/Shipping.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Block_Shipping extends Mage_Core_Block_Template {
4
+
5
+ /**
6
+ *
7
+ */
8
+ public function __construct() {
9
+ $this->setTemplate('fr_exp/shipping.phtml');
10
+ }
11
+
12
+ }
app/code/community/Franceexpress/Ondemandlogo/Helper/Data.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Helper_Data extends Mage_Core_Helper_Abstract {
4
+
5
+ const FRANCEEXPRESS_METHOD_1 = 'geodis_od_expert';
6
+ const FRANCEEXPRESS_METHOD_2 = 'geodis_od_premium';
7
+ const FRANCEEXPRESS_METHOD_1_NAME = 'FRANCE EXPRESS ON DEMAND premium';
8
+ const FRANCEEXPRESS_METHOD_2_NAME = 'FRANCE EXPRESS ON DEMAND live';
9
+ //en kg
10
+ const FRANCEEXPRESS_POIDS_MAX = 1000;
11
+ const XML_FRANCEEXPRESS_METHOD_1_ACTIVE = 'carriers/franceexpress_methods/method_1_active';
12
+ const XML_FRANCEEXPRESS_METHOD_1_DESCRIPTION = 'carriers/franceexpress_methods/method_1_description';
13
+ const XML_FRANCEEXPRESS_METHOD_1_PRICE = 'carriers/franceexpress_methods/method_1_price';
14
+ const XML_FRANCEEXPRESS_METHOD_2_ACTIVE = 'carriers/franceexpress_methods/method_2_active';
15
+ const XML_FRANCEEXPRESS_METHOD_2_DESCRIPTION = 'carriers/franceexpress_methods/method_2_description';
16
+ const XML_FRANCEEXPRESS_METHOD_2_PRICE = 'carriers/franceexpress_methods/method_2_price';
17
+
18
+ protected $geodisDestinationCountryMethod1 = array(1 => 'FR', 2 => 'MC');
19
+ protected $geodisDestinationCountryMethod2 = array(1 => 'FR', 2 => 'MC', 3 => 'BE', 4 => 'LU');
20
+
21
+ public function getGeodisMethod1() {
22
+ return self::FRANCEEXPRESS_METHOD_1;
23
+ }
24
+
25
+ public function getGeodisMethod2() {
26
+ return self::FRANCEEXPRESS_METHOD_2;
27
+ }
28
+
29
+ public function getGeodisMethod1Name() {
30
+ return self::FRANCEEXPRESS_METHOD_1_NAME;
31
+ }
32
+
33
+ public function getGeodisMethod2Name() {
34
+ return self::FRANCEEXPRESS_METHOD_2_NAME;
35
+ }
36
+
37
+ public function getMethod1IsActive() {
38
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_1_ACTIVE);
39
+ }
40
+
41
+ public function getMethod1Description() {
42
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_1_DESCRIPTION);
43
+ }
44
+
45
+ public function getMethod1Price() {
46
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_1_PRICE);
47
+ }
48
+
49
+ /* * *************************************************************************************************************** */
50
+
51
+ public function getMethod2IsActive() {
52
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_2_ACTIVE);
53
+ }
54
+
55
+ public function getMethod2Description() {
56
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_2_DESCRIPTION);
57
+ }
58
+
59
+ public function getMethod2Price() {
60
+ return Mage::getStoreConfig(self::XML_FRANCEEXPRESS_METHOD_2_PRICE);
61
+ }
62
+
63
+ /* * ************************************************************************************************************** */
64
+
65
+ // verify if shipping method is enabled
66
+ public function verifyShippingDisponibility() {
67
+
68
+ $return = array();
69
+ $items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
70
+ $PackageWeight = 0;
71
+ foreach ($items as $item) {
72
+ if (($item->getProductType() == "configurable") || ($item->getProductType() == "grouped")) {
73
+ $PackageWeight += ($item->getWeight() * (((int) $item->getQty()) - 1));
74
+ } else {
75
+ $PackageWeight += ($item->getWeight() * ((int) $item->getQty()));
76
+ }
77
+ }
78
+
79
+ $customerAdressCountryCode = $this->getCustomerCountry();
80
+ //verify destination country
81
+ $keyOdExpressDestinationCountry = array_search($customerAdressCountryCode, $this->geodisDestinationCountryMethod1);
82
+ $keyOdMessagerieDestinationCountry = array_search($customerAdressCountryCode, $this->geodisDestinationCountryMethod2);
83
+
84
+
85
+ if ($keyOdExpressDestinationCountry && ($PackageWeight < self::FRANCEEXPRESS_POIDS_MAX)) {
86
+ $return['s_method_franceexpress_ondemandlogo_' . self::FRANCEEXPRESS_METHOD_1] = 1;
87
+ } else {
88
+ $return['s_method_franceexpress_ondemandlogo_' . self::FRANCEEXPRESS_METHOD_1] = 0;
89
+ }
90
+
91
+ if ($keyOdMessagerieDestinationCountry && ($PackageWeight < self::FRANCEEXPRESS_POIDS_MAX)) {
92
+ $return['s_method_franceexpress_ondemandlogo_' . self::FRANCEEXPRESS_METHOD_2] = 1;
93
+ } else {
94
+ $return['s_method_franceexpress_ondemandlogo_' . self::FRANCEEXPRESS_METHOD_2] = 0;
95
+ }
96
+
97
+ return $return;
98
+ }
99
+
100
+ public function getCustomerCountry() {
101
+ if (Mage::getSingleton('customer/session')->getCustomer()->getDefaultShipping()) {
102
+ $customerAdressCountryCode = Mage::getSingleton('checkout/type_onepage')->getQuote()->getShippingAddress()->getCountryId();
103
+ } else {
104
+ $customerAdressCountryCode = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getCountryId();
105
+ }
106
+ return $customerAdressCountryCode;
107
+ }
108
+
109
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Carrier.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Carrier extends Mage_Shipping_Model_Carrier_Abstract implements Mage_Shipping_Model_Carrier_Interface {
4
+
5
+ protected $_code = 'franceexpress_ondemandlogo';
6
+ protected $geodisOriginCountryMethod1 = array(1 => 'FR', 2 => 'MC');
7
+ protected $geodisOriginCountryMethod2 = array(1 => 'FR', 2 => 'MC', 3 => 'BE');
8
+
9
+ /**
10
+ *
11
+ * @return boolean
12
+ */
13
+ public function getIfFranceExpressModule() {
14
+ return TRUE;
15
+ }
16
+
17
+ /**
18
+ * Returns available shipping rates for Geodis Ondemandlogo carrier
19
+ *
20
+ * @param Mage_Shipping_Model_Rate_Request $request
21
+ * @return Mage_Shipping_Model_Rate_Result
22
+ */
23
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request) {
24
+
25
+ $_shippingDisponibility = Mage::helper('franceexpress_ondemandlogo')->verifyShippingDisponibility();
26
+
27
+ $method1 = Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod1();
28
+ $method2 = Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod2();
29
+
30
+
31
+ $originCountryCode = Mage::getStoreConfig('shipping/origin/country_id');
32
+
33
+ $keyOdExpressOriginCountry = array_search($originCountryCode, $this->geodisOriginCountryMethod1);
34
+ $keyOdMessagerieOriginCountry = array_search($originCountryCode, $this->geodisOriginCountryMethod2);
35
+
36
+ /** @var Mage_Shipping_Model_Rate_Result $result */
37
+ $result = Mage::getModel('shipping/rate_result');
38
+
39
+ if ($keyOdExpressOriginCountry && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() !== '' && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() !== NULL && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() >= 0 && Mage::helper('franceexpress_ondemandlogo')->getMethod1IsActive()) {
40
+ if (Mage::app()->getRequest()->getControllerName() == 'cart') {
41
+ if ($_shippingDisponibility['s_method_franceexpress_ondemandlogo_' . $method1] != 0) {
42
+ $result->append($this->_getMethod1Rate());
43
+ }
44
+ } else {
45
+ $result->append($this->_getMethod1Rate());
46
+ }
47
+ }
48
+ if ($keyOdMessagerieOriginCountry && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() !== '' && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() !== NULL && Mage::helper('franceexpress_ondemandlogo')->getMethod1Price() >= 0 && Mage::helper('franceexpress_ondemandlogo')->getMethod2IsActive()) {
49
+ if (Mage::app()->getRequest()->getControllerName() == 'cart') {
50
+ if ($_shippingDisponibility['s_method_franceexpress_ondemandlogo_' . $method2] != 0) {
51
+ $result->append($this->_getMethod2Rate());
52
+ }
53
+ } else {
54
+ $result->append($this->_getMethod2Rate());
55
+ }
56
+ }
57
+ return $result;
58
+ }
59
+
60
+ /**
61
+ * Returns Allowed shipping methods
62
+ *
63
+ * @return array
64
+ */
65
+ public function getAllowedMethods() {
66
+ return array(
67
+ Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod1() => Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod1(),
68
+ Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod2() => Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod2(),
69
+ );
70
+ }
71
+
72
+ /**
73
+ * Get On Demand Epress rate object
74
+ *
75
+ * @return Mage_Shipping_Model_Rate_Result_Method
76
+ */
77
+ protected function _getMethod1Rate() {
78
+ /** @var Mage_Shipping_Model_Rate_Result_Method $rate */
79
+ $rate = Mage::getModel('shipping/rate_result_method');
80
+
81
+ $rate->setCarrier($this->_code);
82
+ $rate->setCarrierTitle('France Express On Demand Logo');
83
+ $rate->setMethod(Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod1());
84
+ $rate->setMethodTitle(Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod1Name());
85
+ $rate->setMethodDescription(Mage::helper('franceexpress_ondemandlogo')->getMethod1Description());
86
+ $rate->setPrice(Mage::helper('franceexpress_ondemandlogo')->getMethod1Price());
87
+ $rate->setCost(Mage::helper('franceexpress_ondemandlogo')->getMethod1Price());
88
+
89
+ return $rate;
90
+ }
91
+
92
+ /**
93
+ * Get On Demand Messagerie rate object
94
+ *
95
+ * @return Mage_Shipping_Model_Rate_Result_Method
96
+ */
97
+ protected function _getMethod2Rate() {
98
+ /** @var Mage_Shipping_Model_Rate_Result_Method $rate */
99
+ $rate = Mage::getModel('shipping/rate_result_method');
100
+ $rate->setCarrier($this->_code);
101
+ $rate->setCarrierTitle('France Express On Demand Logo');
102
+ $rate->setMethod(Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod2());
103
+ $rate->setMethodTitle(Mage::helper('franceexpress_ondemandlogo')->getGeodisMethod2Name());
104
+ $rate->setMethodDescription(Mage::helper('franceexpress_ondemandlogo')->getMethod2Description());
105
+ $rate->setPrice(Mage::helper('franceexpress_ondemandlogo')->getMethod2Price());
106
+ $rate->setCost(Mage::helper('franceexpress_ondemandlogo')->getMethod2Price());
107
+
108
+ return $rate;
109
+ }
110
+
111
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Frshippment.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Frshippment extends Mage_Core_Model_Abstract {
4
+ /**
5
+ *
6
+ */
7
+ protected function _construct() {
8
+ $this->_init('franceexpress_ondemandlogo/frshippment');
9
+ }
10
+
11
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Observer.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Observer {
4
+
5
+ /**
6
+ *
7
+ * @param type $evt
8
+ */
9
+ public function saveShippingMethodFranceExpress($evt) {
10
+ $request = $evt->getRequest();
11
+ $quote = $evt->getQuote();
12
+ $params = $request->getParams();
13
+ $shippingMethode = $params['shipping_method'];
14
+ $franceExpformInformations = $params[$shippingMethode];
15
+ $franceExpformInformations['shipping_methode'] = $shippingMethode;
16
+ $quote_id = $quote->getId();
17
+ $data = array($quote_id => $franceExpformInformations);
18
+ $data['shipping_methode'] = $shippingMethode;
19
+ if ($franceExpformInformations && strpos($franceExpformInformations['shipping_methode'], 'franceexpress_ondemandlogo') !== false) {
20
+ Mage::getSingleton('checkout/session')->setFormInformation($data);
21
+ }
22
+ }
23
+
24
+ /**
25
+ *
26
+ * @param type $evt
27
+ */
28
+ public function saveOrderAfterFranceExpress($evt) {
29
+ $order = $evt->getOrder();
30
+ $quote = $evt->getQuote();
31
+ $quote_id = $quote->getId();
32
+ $franceExpformInformations = Mage::getSingleton('checkout/session')->getFormInformation();
33
+ if (strpos($franceExpformInformations['shipping_methode'], 'franceexpress_ondemandlogo') !== false) {
34
+ if (isset($franceExpformInformations[$quote_id])) {
35
+ $data = $franceExpformInformations[$quote_id];
36
+ $data['order_id'] = $order->getId();
37
+ $franceExpCollection = Mage::getModel('franceexpress_ondemandlogo/frshippment')
38
+ ->setData('order_id', $order->getId())
39
+ ->setData('store', Mage::app()->getStore()->getStoreId());
40
+ if (isset($franceExpformInformations[$quote_id]['email'])) {
41
+ $franceExpCollection->setData('email', $franceExpformInformations[$quote_id]['email']);
42
+ }
43
+ if (isset($franceExpformInformations[$quote_id]['phone'])) {
44
+ $franceExpCollection->setData('phone', $franceExpformInformations[$quote_id]['phone']);
45
+ }
46
+ if (isset($franceExpformInformations[$quote_id]['mobile'])) {
47
+ $franceExpCollection->setData('mobile', $franceExpformInformations[$quote_id]['mobile']);
48
+ }
49
+ $franceExpCollection->save();
50
+ }
51
+ }
52
+ }
53
+
54
+ /**
55
+ *
56
+ * @param type $evt
57
+ */
58
+ public function loadOrderAfterFranceExpress($evt) {
59
+ $franceExpformInformations = Mage::getSingleton('checkout/session')->getFormInformation();
60
+ if (strpos($franceExpformInformations['shipping_methode'], 'franceexpress_ondemandlogo') !== false) {
61
+ $order = $evt->getOrder();
62
+ if ($order->getId()) {
63
+ $order_id = $order->getId();
64
+ $shippingCollection = Mage::getModel('franceexpress_ondemandlogo/frshippment')->getCollection();
65
+ $shippingCollection->addFieldToFilter('order_id', $order_id);
66
+ $userInformation = $shippingCollection->getFirstItem();
67
+ $order->setGeodisObjectFranceExpress($userInformation);
68
+ }
69
+ }
70
+ }
71
+
72
+ /**
73
+ *
74
+ * @param type $observer
75
+ */
76
+ public function salesOrderGridCollectionLoadBefore($observer) {
77
+ if (!Mage::helper('core')->isModuleEnabled('Geodis_Ondemandlogo')) {
78
+ $collection = $observer->getOrderGridCollection();
79
+ $select = $collection->getSelect();
80
+ $select->join('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id', array('shipping_description'));
81
+ }
82
+ }
83
+
84
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Resource/Frshippment.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Resource_Frshippment extends Mage_Core_Model_Resource_Db_Abstract {
4
+ /*
5
+ *
6
+ */
7
+ protected function _construct() {
8
+ $this->_init('franceexpress_ondemandlogo/frshippment', 'id');
9
+ }
10
+
11
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Resource/Frshippment/Collection.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Resource_Frshippment_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract {
4
+ /**
5
+ *
6
+ */
7
+ protected function _construct() {
8
+ $this->_init('franceexpress_ondemandlogo/frshippment');
9
+ }
10
+
11
+ }
app/code/community/Franceexpress/Ondemandlogo/Model/Sales/Order.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Franceexpress_Ondemandlogo_Model_Sales_Order extends Mage_Sales_Model_Order {
4
+
5
+ //add geodis shipping information to order view
6
+ public function getShippingDescription() {
7
+ $desc = parent::getShippingDescription();
8
+ $geodisObjectFranceExpress = $this->getGeodisObjectFranceExpress();
9
+ if ($geodisObjectFranceExpress) {
10
+ $desc .= " | ";
11
+ if ($geodisObjectFranceExpress->getPhone()) {
12
+ $desc .= "Tél: " . $geodisObjectFranceExpress->getPhone() . " | ";
13
+ }
14
+ if ($geodisObjectFranceExpress->getMobile()) {
15
+ $desc .= "Mobile : " . $geodisObjectFranceExpress->getMobile() . " | ";
16
+ }
17
+ if ($geodisObjectFranceExpress->getEmail()) {
18
+ $desc .= "Email : " . $geodisObjectFranceExpress->getEmail() . "";
19
+ }
20
+ }
21
+ return $desc;
22
+ }
23
+
24
+ }
app/code/community/Franceexpress/Ondemandlogo/etc/config.xml ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Franceexpress_Ondemandlogo>
5
+ <version>0.1.0</version>
6
+ </Franceexpress_Ondemandlogo>
7
+ </modules>
8
+ <adminhtml>
9
+ <layout>
10
+ <updates>
11
+ <ondemandlogo>
12
+ <file>franceexpress_ondemandlogo.xml</file>
13
+ </ondemandlogo>
14
+ </updates>
15
+ </layout>
16
+ <events>
17
+ <sales_order_grid_collection_load_before>
18
+ <observers>
19
+ <franceexpress_ondemandlogo>
20
+ <model>Franceexpress_Ondemandlogo_Model_Observer</model>
21
+ <method>salesOrderGridCollectionLoadBefore</method>
22
+ </franceexpress_ondemandlogo>
23
+ </observers>
24
+ </sales_order_grid_collection_load_before>
25
+ </events>
26
+ <translate>
27
+ <modules>
28
+ <franceexpress_ondemandlogo>
29
+ <files>
30
+ <default>Franceexpress_Ondemandlogo.csv</default>
31
+ </files>
32
+ </franceexpress_ondemandlogo>
33
+ </modules>
34
+ </translate>
35
+ </adminhtml>
36
+
37
+ <global>
38
+ <helpers>
39
+ <franceexpress_ondemandlogo>
40
+ <class>Franceexpress_Ondemandlogo_Helper</class>
41
+ </franceexpress_ondemandlogo>
42
+ </helpers>
43
+ <blocks>
44
+ <franceexpress_ondemandlogo>
45
+ <class>Franceexpress_Ondemandlogo_Block</class>
46
+ </franceexpress_ondemandlogo>
47
+ <adminhtml>
48
+ <rewrite>
49
+ <sales_order_view_tab_info>Franceexpress_Ondemandlogo_Block_Sales_Order_View_Tab_Info</sales_order_view_tab_info>
50
+ </rewrite>
51
+ </adminhtml>
52
+ </blocks>
53
+ <models>
54
+ <franceexpress_ondemandlogo>
55
+ <class>Franceexpress_Ondemandlogo_Model</class>
56
+ <resourceModel>franceexpress_ondemandlogo_resource</resourceModel>
57
+ </franceexpress_ondemandlogo>
58
+ <franceexpress_ondemandlogo_resource>
59
+ <class>Franceexpress_Ondemandlogo_Model_Resource</class>
60
+ <entities>
61
+ <frshippment>
62
+ <table>franceexpress_ondemandlogo</table>
63
+ </frshippment>
64
+ </entities>
65
+ </franceexpress_ondemandlogo_resource>
66
+ <sales>
67
+ <rewrite>
68
+ <order>Franceexpress_Ondemandlogo_Model_Sales_Order</order>
69
+ </rewrite>
70
+ </sales>
71
+ </models>
72
+ <resources>
73
+ <franceexpress_setup>
74
+ <setup>
75
+ <module>Franceexpress_Ondemandlogo</module>
76
+ <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
77
+ </setup>
78
+ <connection>
79
+ <use>core_setup</use>
80
+ </connection>
81
+
82
+ </franceexpress_setup>
83
+ <franceexpress_write>
84
+ <connection>
85
+ <use>core_write</use>
86
+ </connection>
87
+ </franceexpress_write>
88
+ <franceexpress_read>
89
+ <connection>
90
+ <use>core_read</use>
91
+ </connection>
92
+ </franceexpress_read>
93
+ </resources>
94
+
95
+ </global>
96
+ <frontend>
97
+ <translate>
98
+ <modules>
99
+ <franceexpress_ondemandlogo>
100
+ <files>
101
+ <default>Franceexpress_Ondemandlogo.csv</default>
102
+ </files>
103
+ </franceexpress_ondemandlogo>
104
+ </modules>
105
+ </translate>
106
+
107
+ <events>
108
+ <checkout_controller_onepage_save_shipping_method>
109
+ <observers>
110
+ <franceexpress_ondemandlogo_observer>
111
+ <type>singleton</type>
112
+ <class>Franceexpress_Ondemandlogo_Model_Observer</class>
113
+ <method>saveShippingMethodFranceExpress</method>
114
+ </franceexpress_ondemandlogo_observer>
115
+ </observers>
116
+ </checkout_controller_onepage_save_shipping_method>
117
+ <sales_model_service_quote_submit_after>
118
+ <observers>
119
+ <franceexpress_ondemandlogo_observer>
120
+ <type>singleton</type>
121
+ <class>Franceexpress_Ondemandlogo_Model_Observer</class>
122
+ <method>saveOrderAfterFranceExpress</method>
123
+ </franceexpress_ondemandlogo_observer>
124
+ </observers>
125
+ </sales_model_service_quote_submit_after>
126
+ <sales_order_load_after>
127
+ <observers>
128
+ <franceexpress_ondemandlogo_observer>
129
+ <type>model</type>
130
+ <class>Franceexpress_Ondemandlogo_Model_Observer</class>
131
+ <method>loadOrderAfterFranceExpress</method>
132
+ </franceexpress_ondemandlogo_observer>
133
+ </observers>
134
+ </sales_order_load_after>
135
+ </events>
136
+ <layout>
137
+ <updates>
138
+ <franceexpress_ondemandlogo>
139
+ <file>franceexpress.xml</file>
140
+ </franceexpress_ondemandlogo>
141
+ </updates>
142
+ </layout>
143
+ </frontend>
144
+ <!-- Default configuration -->
145
+ <default>
146
+ <carriers>
147
+ <franceexpress_ondemandlogo>
148
+ <active>1</active>
149
+ <model>franceexpress_ondemandlogo/carrier</model>
150
+ <title>Franceexpress Ondemandlogo Carrier</title>
151
+ </franceexpress_ondemandlogo>
152
+ <franceexpress_methods>
153
+ <!-- Mode de livraison 1 : FRANCE EXPRESS ON DEMAND premium -->
154
+ <method_1_active>1</method_1_active>
155
+ <method_1_description>Je choisirai ma demi-journée de livraison sur internet dès ma commande expédiée. Livraisons possibles du lundi au samedi matin sur une période de 14 jours. Livraisons en soirée proposées sur certaines communes. 1er créneau possible dès le lendemain matin de l’expédition.</method_1_description>
156
+ <franceexpress_ondemandlogo_geodis_od_expert>Je choisirai ma demi-journée de livraison sur internet dès ma commande expédiée. Livraisons possibles du lundi au samedi matin sur une période de 14 jours. Livraisons en soirée proposées sur certaines communes. 1er créneau possible dès le lendemain matin de l’expédition.</franceexpress_ondemandlogo_geodis_od_expert>
157
+ <method_1_price>0</method_1_price>
158
+ <!-- Mode de livraison 2 : FRANCE EXPRESS ON DEMAND live -->
159
+ <method_2_active>1</method_2_active>
160
+ <method_2_description>FRANCE EXPRESS me contactera par téléphone pour convenir d’un créneau horaire de livraison sur-mesure.</method_2_description>
161
+ <franceexpress_ondemandlogo_geodis_od_premium>FRANCE EXPRESS me contactera par téléphone pour convenir d’un créneau horaire de livraison sur-mesure.</franceexpress_ondemandlogo_geodis_od_premium>
162
+ <method_2_price>0</method_2_price>
163
+ </franceexpress_methods>
164
+ </carriers>
165
+ </default>
166
+ <stores>
167
+ <default>
168
+ <carriers>
169
+ <franceexpress_ondemandlogo>
170
+ <active>1</active>
171
+ <model>franceexpress_ondemandlogo/carrier</model>
172
+ <title>Franceexpress Ondemandlogo Carrier</title>
173
+ </franceexpress_ondemandlogo>
174
+ <franceexpress_methods>
175
+ <method_1_active>1</method_1_active>
176
+ <method_1_description>I will schedule the delivery date and time online as soon as my order is shipped. Bookings available Monday to Saturday morning over a 14-day period. 1st possible slot: the morning of the day after shipping.</method_1_description>
177
+ <method_1_price>0</method_1_price>
178
+
179
+ <method_2_active>1</method_2_active>
180
+ <method_2_description>FRANCE EXPRESS will call me to schedule a bespoke delivery appointment.</method_2_description>
181
+ <method_2_price>0</method_2_price>
182
+ </franceexpress_methods>
183
+ </carriers>
184
+ </default>
185
+ </stores>
186
+ </config>
app/code/community/Franceexpress/Ondemandlogo/etc/system.xml ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <sections>
4
+ <carriers>
5
+ <groups>
6
+ <franceexpress_methods translate="label">
7
+ <label>FRANCE EXPRESS ON DEMAND LOGO</label>
8
+ <sort_order>1000</sort_order>
9
+ <show_in_default>1</show_in_default>
10
+ <show_in_website>1</show_in_website>
11
+ <show_in_store>1</show_in_store>
12
+ <comment><![CDATA[Ci dessous la liste des <strong>régles de gestion</strong> à respecter pour <em>configurer les methodes FRANCE EXPRESS</em>.
13
+ <br /><br />Pays d'expédition de la méthode 1 (origin) : <span class="notice">France, Monaco</span>
14
+ <br />Pays d'expédition de la méthode 2 (origin) : <span class="notice">France, Monaco, Belgique</span>
15
+ <br /><br />Pays de destination de la méthode 1 : <span class="notice">France, Monaco</span>
16
+ <br />Pays de destination de la méthode 2 : <span class="notice">France, Monaco, Belgique, Luxembourg</span>
17
+ <br /><br />Poids Max de la commande : <span class="notice">1 tonne</span>
18
+ ]]>
19
+ </comment>
20
+ <fields>
21
+ <heading_method_1 translate="label">
22
+ <label>Mode de livraison 1 : FRANCE EXPRESS ON DEMAND premium</label>
23
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
24
+ <sort_order>0</sort_order>
25
+ <show_in_default>1</show_in_default>
26
+ <show_in_website>1</show_in_website>
27
+ <show_in_store>1</show_in_store>
28
+ </heading_method_1>
29
+ <method_1_active translate="label">
30
+ <label>Activé</label>
31
+ <frontend_type>select</frontend_type>
32
+ <source_model>adminhtml/system_config_source_yesno</source_model>
33
+ <sort_order>1</sort_order>
34
+ <show_in_default>1</show_in_default>
35
+ <show_in_website>1</show_in_website>
36
+ <show_in_store>0</show_in_store>
37
+ </method_1_active>
38
+ <method_1_description translate="label">
39
+ <label>Description</label>
40
+ <frontend_type>textarea</frontend_type>
41
+ <sort_order>3</sort_order>
42
+ <show_in_default>1</show_in_default>
43
+ <show_in_website>1</show_in_website>
44
+ <show_in_store>1</show_in_store>
45
+ </method_1_description>
46
+ <method_1_price translate="label">
47
+ <label>Prix</label>
48
+ <comment>Vous devez ajouter un prix pour que le mode de livraison soit affiché</comment>
49
+ <frontend_type>text</frontend_type>
50
+ <validate>required-entry validate-zero-or-greater</validate>
51
+ <sort_order>5</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>0</show_in_store>
55
+ </method_1_price>
56
+
57
+
58
+ <heading_method_2 translate="label">
59
+ <label>Mode de livraison 2 : FRANCE EXPRESS ON DEMAND live</label>
60
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
61
+ <sort_order>6</sort_order>
62
+ <show_in_default>1</show_in_default>
63
+ <show_in_website>1</show_in_website>
64
+ <show_in_store>1</show_in_store>
65
+ </heading_method_2>
66
+ <method_2_active translate="label">
67
+ <label>Activé</label>
68
+ <frontend_type>select</frontend_type>
69
+ <source_model>adminhtml/system_config_source_yesno</source_model>
70
+ <sort_order>7</sort_order>
71
+ <show_in_default>1</show_in_default>
72
+ <show_in_website>1</show_in_website>
73
+ <show_in_store>0</show_in_store>
74
+ </method_2_active>
75
+ <method_2_description translate="label">
76
+ <label>Description</label>
77
+ <frontend_type>textarea</frontend_type>
78
+ <sort_order>9</sort_order>
79
+ <show_in_default>1</show_in_default>
80
+ <show_in_website>1</show_in_website>
81
+ <show_in_store>1</show_in_store>
82
+ </method_2_description>
83
+ <method_2_price translate="label">
84
+ <label>Prix</label>
85
+ <comment>Vous devez ajouter un prix pour que le mode de livraison soit affiché</comment>
86
+ <frontend_type>text</frontend_type>
87
+ <validate>required-entry validate-zero-or-greater</validate>
88
+ <sort_order>11</sort_order>
89
+ <show_in_default>1</show_in_default>
90
+ <show_in_website>1</show_in_website>
91
+ <show_in_store>0</show_in_store>
92
+ </method_2_price>
93
+ </fields>
94
+ </franceexpress_methods>
95
+
96
+
97
+ </groups>
98
+ </carriers>
99
+ </sections>
100
+ </config>
101
+
102
+
app/code/community/Franceexpress/Ondemandlogo/sql/franceexpress_setup/mysql4-install-0.1.0.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ $installer->startSetup();
5
+ $installer->run("
6
+ CREATE TABLE IF NOT EXISTS {$this->getTable('franceexpress_ondemandlogo')} (
7
+ `id` int(11) unsigned NOT NULL auto_increment,
8
+ `order_id` int(11) NOT NULL,
9
+ `store` varchar(255) NOT NULL default '',
10
+ `email` varchar(255) NOT NULL default '',
11
+ `phone` varchar(255) NOT NULL default '',
12
+ `mobile` varchar(255) NOT NULL default '',
13
+ PRIMARY KEY (`id`)
14
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
15
+ ");
16
+ $installer->endSetup();
app/code/community/Franceexpress/Ondemandlogo/sql/franceexpress_setup/mysql4-uninstall-0.1.0.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+
5
+ $installer->startSetup();
6
+
7
+ $installer->run("
8
+ DROP TABLE IF EXISTS {$this->getTable('franceexpress_ondemandlogo')};
9
+ DELETE FROM {$this->getTable('core/config_data')} WHERE path like 'franceexpress%';
10
+ DELETE FROM {$this->getTable('core/resource')} WHERE code like 'franceexpress_setup';
11
+ ");
12
+
13
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/franceexpress_ondemandlogo.xml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <layout version="0.1.0">
2
+ <adminhtml_sales_order_view>
3
+ <reference name="order_tab_info">
4
+ <action method="setTemplate">
5
+ <template>franceexpress/sales/order/view/tab/info.phtml</template>
6
+ </action>
7
+ </reference>
8
+ </adminhtml_sales_order_view>
9
+
10
+ <sales_order_grid_update_handle>
11
+ <reference name="sales_order.grid">
12
+ <action method="addColumnAfter">
13
+ <columnId>shipping_description</columnId>
14
+ <arguments>
15
+ <header>Shipping Method</header>
16
+ <index>shipping_description</index>
17
+ <filter_index>shipping_description</filter_index>
18
+ <type>text</type>
19
+ </arguments>
20
+ <after>shipping_name</after>
21
+ </action>
22
+ </reference>
23
+ </sales_order_grid_update_handle>
24
+ <adminhtml_sales_order_grid>
25
+ <!-- apply layout handle defined above -->
26
+ <update handle="sales_order_grid_update_handle" />
27
+ </adminhtml_sales_order_grid>
28
+ <adminhtml_sales_order_index>
29
+ <!-- apply layout handle defined above -->
30
+ <update handle="sales_order_grid_update_handle" />
31
+ </adminhtml_sales_order_index>
32
+ </layout>
app/design/adminhtml/default/default/template/franceexpress/sales/order/view/tab/info.phtml ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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@magento.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.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /** @var $this Mage_Adminhtml_Block_Sales_Order_View_Tab_Info */ ?>
28
+ <?php $_order = $this->getOrder() ?>
29
+ <?php $_order_informations_france_express = $this->getFranceExpressShippingInformations() ?>
30
+ <div>
31
+ <div id="order-messages">
32
+ <?php echo $this->getChildHtml('order_messages') ?>
33
+ </div>
34
+ <?php echo $this->getChildHtml('order_info') ?>
35
+ <input type="hidden" name="order_id" value="<?php echo $_order->getId() ?>"/>
36
+ <?php if ($_order->getIsVirtual()): ?>
37
+ <div class="box-right">
38
+ <?php else: ?>
39
+ <div class="box-left">
40
+ <?php endif; ?>
41
+ <!--Payment Method-->
42
+ <div class="entry-edit">
43
+ <div class="entry-edit-head">
44
+ <h4 class="icon-head head-payment-method"><?php echo Mage::helper('sales')->__('Payment Information') ?></h4>
45
+ </div>
46
+ <fieldset>
47
+ <?php echo $this->getPaymentHtml() ?>
48
+ <div><?php echo Mage::helper('sales')->__('Order was placed using %s', $_order->getOrderCurrencyCode()) ?></div>
49
+ </fieldset>
50
+ </div>
51
+ </div>
52
+ <?php if (!$_order->getIsVirtual()): ?>
53
+ <div class="box-right">
54
+ <!--Shipping Method-->
55
+ <div class="entry-edit">
56
+ <div class="entry-edit-head">
57
+ <h4 class="icon-head head-shipping-method"><?php echo Mage::helper('sales')->__('Ondemandlogo &amp; Handling Information') ?></h4>
58
+ </div>
59
+ <fieldset>
60
+ <?php if ($_order->getTracksCollection()->count()) : ?>
61
+ <a href="#" id="linkId" onclick="popWin('<?php echo $this->helper('shipping')->getTrackingPopupUrlBySalesModel($_order) ?>','trackorder','width=800,height=600,resizable=yes,scrollbars=yes')" title="<?php echo $this->__('Track Order') ?>"><?php echo $this->__('Track Order') ?></a>
62
+ <br/>
63
+ <?php endif; ?>
64
+ <?php if ($_order->getShippingDescription()): ?>
65
+ <strong>
66
+ <?php echo $this->escapeHtml($_order->getShippingDescription()) ?></strong>
67
+ </strong>
68
+
69
+ <?php if ($this->helper('tax')->displayShippingPriceIncludingTax()): ?>
70
+ <?php $_excl = $this->displayShippingPriceInclTax($_order); ?>
71
+ <?php else: ?>
72
+ <?php $_excl = $this->displayPriceAttribute('shipping_amount', false, ' '); ?>
73
+ <?php endif; ?>
74
+ <?php $_incl = $this->displayShippingPriceInclTax($_order); ?>
75
+
76
+ <?php echo $_excl; ?>
77
+ <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
78
+ (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
79
+ <?php endif; ?>
80
+
81
+ <?php if ($_order_informations_france_express): ?>
82
+ <?php if ($_order_informations_france_express['first_name']): ?><div><?php echo $this->__('First name ') ?> : <?php echo $_order_informations_france_express['first_name'] ?></div><?php endif; ?>
83
+ <?php if ($_order_informations_france_express['last_name']): ?><div><?php echo $this->__("Last name ") ?> : <?php echo $_order_informations_france_express['last_name'] ?></div><?php endif; ?>
84
+ <?php if ($_order_informations_france_express['phone']): ?><div><?php echo $this->__('Phone ') ?> : <?php echo $_order_informations_france_express['phone'] ?></div><?php endif; ?>
85
+ <?php if ($_order_informations_france_express['mobile']): ?><div><?php echo $this->__("Mobile phone ") ?> : <?php echo $_order_informations_france_express['mobile'] ?></div><?php endif; ?>
86
+ <?php if ($_order_informations_france_express['email']): ?><div><?php echo $this->__("Email ") ?> : <?php echo $_order_informations_france_express['email'] ?></div><?php endif; ?>
87
+ <?php endif; ?>
88
+
89
+ <?php else: ?>
90
+ <?php echo $this->helper('sales')->__('No shipping information available'); ?>
91
+ <?php endif; ?>
92
+ </fieldset>
93
+ </div>
94
+ </div>
95
+ <?php endif; ?>
96
+ <div class="clear"></div>
97
+ <?php echo $this->getGiftOptionsHtml() ?>
98
+ <div class="clear"></div>
99
+ <div class="entry-edit">
100
+ <div class="entry-edit-head">
101
+ <h4 class="icon-head head-products"><?php echo Mage::helper('sales')->__('Items Ordered') ?></h4>
102
+ </div>
103
+ </div>
104
+ <?php echo $this->getItemsHtml() ?>
105
+ <div class="clear"></div>
106
+
107
+ <div class="box-left">
108
+ <div class="entry-edit">
109
+ <div class="entry-edit-head">
110
+ <h4><?php echo Mage::helper('sales')->__('Comments History') ?></h4>
111
+ </div>
112
+ <fieldset><?php echo $this->getChildHtml('order_history') ?></fieldset>
113
+ </div>
114
+ </div>
115
+ <div class="box-right entry-edit">
116
+ <div class="entry-edit-head"><h4><?php echo Mage::helper('sales')->__('Order Totals') ?></h4></div>
117
+ <div class="order-totals"><?php echo $this->getChildHtml('order_totals') ?></div>
118
+ </div>
119
+ <div class="clear"></div>
120
+ </div>
121
+
122
+ <?php echo $this->getChildHtml('popup_window');?>
123
+ <script type="text/javascript">
124
+ //<![CDATA[
125
+ /**
126
+ * Retrieve gift options tooltip content
127
+ */
128
+ function getGiftOptionsTooltipContent(itemId) {
129
+ var contentLines = [];
130
+ var headerLine = null;
131
+ var contentLine = null;
132
+
133
+ $$('#gift_options_data_' + itemId + ' .gift-options-tooltip-content').each(function (element) {
134
+ if (element.down(0)) {
135
+ headerLine = element.down(0).innerHTML;
136
+ contentLine = element.down(0).next().innerHTML;
137
+ if (contentLine.length > 30) {
138
+ contentLine = contentLine.slice(0,30) + '...';
139
+ }
140
+ contentLines.push(headerLine + ' ' + contentLine);
141
+ }
142
+ });
143
+ return contentLines.join('<br/>');
144
+ }
145
+ giftOptionsTooltip.setTooltipContentLoaderFunction(getGiftOptionsTooltipContent);
146
+ //]]>
147
+ </script>
app/design/frontend/base/default/layout/franceexpress.xml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <checkout_onepage_index>
4
+ <reference name="head">
5
+ <action method="addCss">
6
+ <stylesheet>css/franceexpress/geodis.css</stylesheet>
7
+ </action>
8
+ <action method="addJs">
9
+ <script>franceexpress/jquery-1.11.0.min.js</script>
10
+ </action>
11
+ <action method="addJs">
12
+ <script>franceexpress/no-conflict.js</script>
13
+ </action>
14
+ </reference>
15
+ <reference name='checkout.onepage.shipping_method.available'>
16
+ <action method='setTemplate'>
17
+ <template>fr_exp/checkout/onepage/shipping_method/available.phtml</template>
18
+ </action>
19
+ </reference>
20
+
21
+ </checkout_onepage_index>
22
+ <checkout_onepage_shippingmethod>
23
+ <reference name='root'>
24
+ <action method='setTemplate'>
25
+ <template>fr_exp/checkout/onepage/shipping_method/available.phtml</template>
26
+ </action>
27
+ </reference>
28
+ </checkout_onepage_shippingmethod>
29
+ </layout>
app/design/frontend/base/default/template/fr_exp/checkout/onepage/shipping_method/available.phtml ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /** @var $this Mage_Checkout_Block_Onepage_Shipping_Method_Available */ ?>
2
+
3
+ <?php $_shippingRateGroups = $this->getShippingRates(); ?>
4
+ <?php $_shippingDisponibility = Mage::helper('franceexpress_ondemandlogo')->verifyShippingDisponibility(); ?>
5
+ <?php if (!$_shippingRateGroups): ?>
6
+ <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></p>
7
+ <?php else: ?>
8
+ <dl class="sp-methods">
9
+ <?php $shippingCodePrice = array(); ?>
10
+ <?php
11
+ $_sole = count($_shippingRateGroups) == 1;
12
+ foreach ($_shippingRateGroups as $code => $_rates):
13
+ ?>
14
+ <?php
15
+ $carrier = Mage::getModel('shipping/config')->getCarrierInstance($code);
16
+ if ($carrier->getIfFranceExpressModule()) :
17
+ ?>
18
+ <dt>
19
+ <img src="<?php echo $this->getSkinUrl('images/franceexpress/logo.png') ?>" style="width: 100%">
20
+ </dt>
21
+ <?php else : ?>
22
+ <dt><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></dt>
23
+ <?php endif; ?>
24
+ <dd>
25
+ <ul>
26
+ <?php
27
+ $_sole = $_sole && count($_rates) == 1;
28
+ $i = 1;
29
+ foreach ($_rates as $_rate):
30
+ ?>
31
+ <?php $shippingCodePrice[] = "'" . $_rate->getCode() . "':" . (float) $_rate->getPrice(); ?>
32
+ <li>
33
+ <?php if ($_rate->getErrorMessage()): ?>
34
+ <ul class="messages"><li class="error-msg"><ul><li><?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></li></ul></li></ul>
35
+ <?php else: ?>
36
+ <?php if ($_sole) : ?>
37
+ <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
38
+ <?php else: ?>
39
+ <input name="shipping_method" type="radio"
40
+ value="<?php echo $_rate->getCode() ?>"
41
+ id="s_method_<?php echo $_rate->getCode() ?>"
42
+ <?php if ($_rate->getCode() === $this->getAddressShippingMethod() && !isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && $_shippingDisponibility['s_method_' . $_rate->getCode()] == '0') echo ' checked="checked"' ?>
43
+ <?php if (isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && $_shippingDisponibility['s_method_' . $_rate->getCode()] == '0') echo ' disabled="disabled"' ?>
44
+ class="radio"/>
45
+ <?php if ($_rate->getCode() === $this->getAddressShippingMethod()): ?>
46
+ <script type="text/javascript">
47
+ //<![CDATA[
48
+ lastPrice = <?php echo (float) $_rate->getPrice(); ?>;
49
+ //]]>
50
+ </script>
51
+ <?php endif; ?>
52
+
53
+ <?php endif; ?>
54
+ <label for="s_method_<?php echo $_rate->getCode() ?>">
55
+ <?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
56
+ <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
57
+ <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?>
58
+ <?php echo $_excl; ?>
59
+ <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
60
+ (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
61
+ <?php endif; ?>
62
+ <div><?php echo $this->escapeHtml($_rate->getMethodDescription()) ?></div>
63
+ <?php if (isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && ($_shippingDisponibility['s_method_' . $_rate->getCode()] == '0')) : ?>
64
+ <div id="s_method_<?php echo $_rate->getCode() ?>_error" class="validation-advice">
65
+ <?php echo $this->__('Your cart does not fulfill the conditions required for this mode'); ?>
66
+ </div>
67
+ <?php endif; ?>
68
+ </label>
69
+ <?php
70
+ if ($carrier->getIfFranceExpressModule()) :
71
+ $block = $this->getLayout()->createBlock('Franceexpress_Ondemandlogo_Block_Shipping');
72
+ $block->setMethodCode($code);
73
+ $block->setRate($_rate);
74
+ $block->setMethodInstance($carrier);
75
+ $block->setMethodTitle($_rate->getMethodTitle());
76
+ $block->setMethodLongDescription(Mage::getStoreConfig('carriers/franceexpress_methods/' . $_rate->getCode()));
77
+ $block->setCustomerCountry(Mage::helper('franceexpress_ondemandlogo')->getCustomerCountry());
78
+ echo $block->_toHtml();
79
+ endif;
80
+ ?>
81
+ <?php endif; ?>
82
+ </li>
83
+ <?php $i++; ?>
84
+ <?php endforeach; ?>
85
+ </ul>
86
+ </dd>
87
+ <?php endforeach; ?>
88
+ </dl>
89
+ <script type="text/javascript">
90
+
91
+ ShippingMethod.prototype.validate = ShippingMethod.prototype.validate.wrap(function () {
92
+ hideAllError();
93
+ var id_geodis_method = jQuery("input[name=shipping_method]:checked").attr("id");
94
+ params = {};
95
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('input').each(function () {
96
+ var name = jQuery(this).attr('id');
97
+ var value = jQuery(this).val();
98
+ params[name] = value;
99
+ });
100
+ var error = false;
101
+ var error_msg = '';
102
+ var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
103
+ var mobile_regex = /^(06|07|6|7)([-\/. ]?[0-9]{2}){4}$/;
104
+ var fixe_regex = /^(01|1|02|2|03|3|04|4|05|5|09)([-\/. ]?[0-9]{2}){4}$/;
105
+
106
+ if (typeof params.email !== 'undefined') {
107
+ if (params.email != '') {
108
+ if (!params.email.match(mailformat)) {
109
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#email').after('<div class="advice-required-entry"><?php echo $this->__('Please enter a valid email address. For example johndoe@domain.com.'); ?></div>');
110
+ error = true;
111
+ }
112
+ }
113
+ }
114
+ if (typeof params.mobile !== 'undefined') {
115
+ if (params.mobile != '') {
116
+ if (!params.mobile.match(mobile_regex)) {
117
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#mobile').after('<div class="advice-required-entry"><?php echo $this->__('Please provide a valid phone number'); ?></div>');
118
+ error = true;
119
+ }
120
+ }
121
+ }
122
+ if (typeof params.tel !== 'undefined') {
123
+ if (params.tel != '') {
124
+ if (!params.tel.match(fixe_regex)) {
125
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#tel').after('<div class="advice-required-entry"><?php echo $this->__('Please provide a valid phone number'); ?></div>');
126
+ error = true;
127
+ }
128
+ }
129
+ }
130
+
131
+ if (id_geodis_method == 's_method_franceexpress_ondemandlogo_geodis_od_expert') {
132
+ if (params.email == '' && params.mobile == '') {
133
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('.error').after('<div class="advice-required-entry"><?php echo $this->__('Please provide at least an email address or a phone number'); ?></div>');
134
+ error = true;
135
+ }
136
+ } else if (id_geodis_method == 's_method_franceexpress_ondemandlogo_geodis_od_premium') {
137
+ if (params.mobile == '' && params.tel == '') {
138
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('.error').after('<div class="advice-required-entry"><?php echo $this->__('Please provide at least one phone number'); ?></div>');
139
+ error = true;
140
+ }
141
+ }
142
+ if (error) {
143
+ return false;
144
+ }
145
+
146
+ // return false;
147
+ var methods = document.getElementsByName('shipping_method');
148
+ if (methods.length == 0) {
149
+ alert(Translator.translate('Your order cannot be completed at this time as there is no shipping methods available for it. Please make necessary changes in your shipping address.').stripTags());
150
+ return false;
151
+ }
152
+
153
+ if (!this.validator.validate()) {
154
+ return false;
155
+ }
156
+
157
+ for (var i = 0; i < methods.length; i++) {
158
+ if (methods[i].checked) {
159
+ return true;
160
+ }
161
+ }
162
+ alert(Translator.translate('Please specify shipping method.').stripTags());
163
+ return false;
164
+ });
165
+
166
+ jQuery(document).ready(function () {
167
+ hideShippingAll();
168
+ jQuery('input[type="radio"][name="shipping_method"]').click(function () {
169
+ hideShippingAll();
170
+ var code = jQuery(this).val();
171
+ if (jQuery(this).is(':checked')) {
172
+ showShipping(code);
173
+ }
174
+ });
175
+ jQuery('input[type="radio"][name="shipping_method"]').each(function () {
176
+ var code = jQuery(this).val();
177
+ if (jQuery(this).is(":checked")) {
178
+ showShipping(code);
179
+ }
180
+ });
181
+ });
182
+ function showShipping(code) {
183
+ if (jQuery('#' + 'shipping_form_' + code).length != 0) {
184
+ hideAllError();
185
+ jQuery('#' + 'shipping_form_' + code).show();
186
+ }
187
+ }
188
+ function hideShippingAll() {
189
+ jQuery('input[type="radio"][name="shipping_method"]').each(function () {
190
+ var code = jQuery(this).val();
191
+ jQuery('#' + 'shipping_form_' + code).hide();
192
+ });
193
+ }
194
+ function hideAllError() {
195
+ jQuery('.advice-required-entry').hide();
196
+ }
197
+
198
+ <?php if (!empty($shippingCodePrice)): ?>
199
+ var shippingCodePrice = {<?php echo implode(',', $shippingCodePrice); ?>};
200
+ <?php endif; ?>
201
+
202
+ $$('input[type="radio"][name="shipping_method"]').each(function (el) {
203
+ Event.observe(el, 'click', function () {
204
+ if (el.checked == true) {
205
+ var getShippingCode = el.getValue();
206
+ <?php if (!empty($shippingCodePrice)): ?>
207
+ var newPrice = shippingCodePrice[getShippingCode];
208
+ if (!lastPrice) {
209
+ lastPrice = newPrice;
210
+ quoteBaseGrandTotal += newPrice;
211
+ }
212
+ if (newPrice != lastPrice) {
213
+ quoteBaseGrandTotal += (newPrice - lastPrice);
214
+ lastPrice = newPrice;
215
+ }
216
+ <?php endif; ?>
217
+ checkQuoteBaseGrandTotal = quoteBaseGrandTotal;
218
+ return false;
219
+ }
220
+ });
221
+ });
222
+
223
+ //]]>
224
+ </script>
225
+ <?php endif; ?>
app/design/frontend/base/default/template/fr_exp/shipping.phtml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $_code = $this->getMethodCode();
3
+ $carrier = $this->getMethodInstance();
4
+ $_rate = $this->getRate();
5
+ $_method_title = $this->getMethodTitle();
6
+ $_method_long_description = $this->getMethodLongDescription();
7
+ $customer_country_code = $this->getCustomerCountry();
8
+ ?>
9
+
10
+ <form id="geodis-form_<?php echo $_rate->getCode() ?>">
11
+ <div id="shipping_form_<?php echo $_rate->getCode() ?>" class="col-2-set geodis france-express" style="display:none;">
12
+ <h4><?php echo $this->__('I have chosen ') ?> <?php echo $_method_title; ?></h4>
13
+ <div class="geodis-info-content">
14
+ <div class="france-express-col-1 geodis-col-1">
15
+ <img src="<?php echo $this->getSkinUrl('images/franceexpress/' . $_rate->getCode() . '.jpg') ?>">
16
+ </div>
17
+ <div class="france-express-col-2 geodis-col-2">
18
+ <div class="box">
19
+ <ul>
20
+ <li>
21
+
22
+ <?php if ($_rate->getCode() == 'franceexpress_ondemandlogo_geodis_od_expert') { ?>
23
+ <!-- Mode de livraison 1 : FRANCE EXPRESS ON DEMAND premium -->
24
+ <div class="geodis-heading"><?php echo $this->__('Please indicate your email address and/or your mobile number.<br/>As soon as your order is shipped, FRANCE EXPRESS will send you a personal link giving you access to our online delivery booking portal.') ?></div>
25
+ <div class="error_france_express error"></div>
26
+ <div>
27
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Email ") ?></span>
28
+ <span class="input-box">
29
+ <input id="email" type='text' name='<?php echo $_rate->getCode() ?>[email]' class="input-text validate-email geodis-input" value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getEmail(); ?>' />
30
+ </span>
31
+ </div>
32
+ <div>
33
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Mobile phone ") ?></span>
34
+ <span class="input-box">
35
+ <input id="mobile" type='text' name='<?php echo $_rate->getCode() ?>[mobile]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-phone-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
36
+ </span>
37
+ </div>
38
+ <?php } else { ?>
39
+ <!-- Mode de livraison 2 : FRANCE EXPRESS ON DEMAND live -->
40
+ <div class="geodis-heading"><?php echo $this->__('Please indicate your phone number.<br/>FRANCE EXPRESS will call you when your order is ready for delivery.') ?></div>
41
+ <div class="error_france_express error"></div>
42
+ <div>
43
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__('Phone ') ?></span>
44
+ <span class="input-box">
45
+ <input id="tel" type='text' name='<?php echo $_rate->getCode() ?>[phone]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-fixe-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
46
+ </span>
47
+ </div>
48
+ <div>
49
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Mobile phone ") ?></span>
50
+ <span class="input-box">
51
+ <input id="mobile" type='text' name='<?php echo $_rate->getCode() ?>[mobile]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-phone-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
52
+ </span>
53
+ </div>
54
+ <?php } ?>
55
+ </li>
56
+ </ul>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </form>
62
+
app/design/frontend/rwd/default/layout/franceexpress.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <checkout_onepage_index>
4
+ <reference name="head">
5
+ <action method="addCss">
6
+ <stylesheet>css/franceexpress/geodis.css</stylesheet>
7
+ </action>
8
+ </reference>
9
+ <reference name='checkout.onepage.shipping_method.available'>
10
+ <action method='setTemplate'>
11
+ <template>fr_exp/checkout/onepage/shipping_method/available.phtml</template>
12
+ </action>
13
+ </reference>
14
+ </checkout_onepage_index>
15
+ <checkout_onepage_shippingmethod>
16
+ <reference name='root'>
17
+ <action method='setTemplate'>
18
+ <template>fr_exp/checkout/onepage/shipping_method/available.phtml</template>
19
+ </action>
20
+ </reference>
21
+ </checkout_onepage_shippingmethod>
22
+ </layout>
app/design/frontend/rwd/default/template/fr_exp/checkout/onepage/shipping_method/available.phtml ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /** @var $this Mage_Checkout_Block_Onepage_Shipping_Method_Available */ ?>
2
+
3
+ <?php $_shippingRateGroups = $this->getShippingRates(); ?>
4
+ <?php $_shippingDisponibility = Mage::helper('franceexpress_ondemandlogo')->verifyShippingDisponibility(); ?>
5
+ <?php if (!$_shippingRateGroups): ?>
6
+ <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></p>
7
+ <?php else: ?>
8
+ <dl class="sp-methods">
9
+ <?php $shippingCodePrice = array(); ?>
10
+ <?php
11
+ $_sole = count($_shippingRateGroups) == 1;
12
+ foreach ($_shippingRateGroups as $code => $_rates):
13
+ ?>
14
+ <?php
15
+ $carrier = Mage::getModel('shipping/config')->getCarrierInstance($code);
16
+ if ($carrier->getIfFranceExpressModule()) :
17
+ ?>
18
+ <dt>
19
+ <img src="<?php echo $this->getSkinUrl('images/franceexpress/logo.png') ?>" style="width: 100%">
20
+ </dt>
21
+ <?php else : ?>
22
+ <dt><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></dt>
23
+ <?php endif; ?>
24
+ <dd>
25
+ <ul>
26
+ <?php
27
+ $_sole = $_sole && count($_rates) == 1;
28
+ $i = 1;
29
+ foreach ($_rates as $_rate):
30
+ ?>
31
+ <?php $shippingCodePrice[] = "'" . $_rate->getCode() . "':" . (float) $_rate->getPrice(); ?>
32
+ <li>
33
+ <?php if ($_rate->getErrorMessage()): ?>
34
+ <ul class="messages"><li class="error-msg"><ul><li><?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></li></ul></li></ul>
35
+ <?php else: ?>
36
+ <?php if ($_sole) : ?>
37
+ <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
38
+ <?php else: ?>
39
+ <input name="shipping_method" type="radio"
40
+ value="<?php echo $_rate->getCode() ?>"
41
+ id="s_method_<?php echo $_rate->getCode() ?>"
42
+ <?php if ($_rate->getCode() === $this->getAddressShippingMethod() && !isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && $_shippingDisponibility['s_method_' . $_rate->getCode()] == '0') echo ' checked="checked"' ?>
43
+ <?php if (isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && $_shippingDisponibility['s_method_' . $_rate->getCode()] == '0') echo ' disabled="disabled"' ?>
44
+ class="radio"/>
45
+ <?php if ($_rate->getCode() === $this->getAddressShippingMethod()): ?>
46
+ <script type="text/javascript">
47
+ //<![CDATA[
48
+ lastPrice = <?php echo (float) $_rate->getPrice(); ?>;
49
+ //]]>
50
+ </script>
51
+ <?php endif; ?>
52
+
53
+ <?php endif; ?>
54
+ <label for="s_method_<?php echo $_rate->getCode() ?>">
55
+ <?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
56
+ <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
57
+ <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?>
58
+ <?php echo $_excl; ?>
59
+ <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
60
+ (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
61
+ <?php endif; ?>
62
+ <div><?php echo $this->escapeHtml($_rate->getMethodDescription()) ?></div>
63
+ <?php if (isset($_shippingDisponibility['s_method_' . $_rate->getCode()]) && ($_shippingDisponibility['s_method_' . $_rate->getCode()] == '0')) : ?>
64
+ <div id="s_method_<?php echo $_rate->getCode() ?>_error" class="validation-advice">
65
+ <?php echo $this->__('Your cart does not fulfill the conditions required for this mode'); ?>
66
+ </div>
67
+ <?php endif; ?>
68
+ </label>
69
+ <?php
70
+ if ($carrier->getIfFranceExpressModule()) :
71
+ $block = $this->getLayout()->createBlock('Franceexpress_Ondemandlogo_Block_Shipping');
72
+ $block->setMethodCode($code);
73
+ $block->setRate($_rate);
74
+ $block->setMethodInstance($carrier);
75
+ $block->setMethodTitle($_rate->getMethodTitle());
76
+ $block->setMethodLongDescription(Mage::getStoreConfig('carriers/franceexpress_methods/' . $_rate->getCode()));
77
+ $block->setCustomerCountry(Mage::helper('franceexpress_ondemandlogo')->getCustomerCountry());
78
+ echo $block->_toHtml();
79
+ endif;
80
+ ?>
81
+ <?php endif; ?>
82
+ </li>
83
+ <?php $i++; ?>
84
+ <?php endforeach; ?>
85
+ </ul>
86
+ </dd>
87
+ <?php endforeach; ?>
88
+ </dl>
89
+ <script type="text/javascript">
90
+ ShippingMethod.prototype.validate = ShippingMethod.prototype.validate.wrap(function () {
91
+ hideAllError();
92
+ var id_geodis_method = jQuery("input[name=shipping_method]:checked").attr("id");
93
+ params = {};
94
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('input').each(function () {
95
+ var name = jQuery(this).attr('id');
96
+ var value = jQuery(this).val();
97
+ params[name] = value;
98
+ });
99
+ var error = false;
100
+ var error_msg = '';
101
+ var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
102
+ var mobile_regex = /^(06|07|6|7)([-\/. ]?[0-9]{2}){4}$/;
103
+ var fixe_regex = /^(01|1|02|2|03|3|04|4|05|5|09)([-\/. ]?[0-9]{2}){4}$/;
104
+
105
+
106
+ if (typeof params.email !== 'undefined') {
107
+ if (params.email != '') {
108
+ if (!params.email.match(mailformat)) {
109
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#email').after('<div class="advice-required-entry"><?php echo $this->__('Please enter a valid email address. For example johndoe@domain.com.'); ?></div>');
110
+ error = true;
111
+ }
112
+ }
113
+ }
114
+ if (typeof params.mobile !== 'undefined') {
115
+ if (params.mobile != '') {
116
+ if (!params.mobile.match(mobile_regex)) {
117
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#mobile').after('<div class="advice-required-entry"><?php echo $this->__('Please provide a valid phone number'); ?></div>');
118
+ error = true;
119
+ }
120
+ }
121
+ }
122
+ if (typeof params.tel !== 'undefined') {
123
+ if (params.tel != '') {
124
+ if (!params.tel.match(fixe_regex)) {
125
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('#tel').after('<div class="advice-required-entry"><?php echo $this->__('Please provide a valid phone number'); ?></div>');
126
+ error = true;
127
+ }
128
+ }
129
+ }
130
+
131
+ if (id_geodis_method == 's_method_franceexpress_ondemandlogo_geodis_od_expert') {
132
+ if (params.email == '' && params.mobile == '') {
133
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('.error').after('<div class="advice-required-entry"><?php echo $this->__('Please provide at least an email address or a phone number'); ?></div>');
134
+ error = true;
135
+ }
136
+ } else if (id_geodis_method == 's_method_franceexpress_ondemandlogo_geodis_od_premium') {
137
+ if (params.mobile == '' && params.tel == '') {
138
+ jQuery("input[name=shipping_method]:checked").parent('li').find('.geodis-col-2').find('.error').after('<div class="advice-required-entry"><?php echo $this->__('Please provide at least one phone number'); ?></div>');
139
+ error = true;
140
+ }
141
+ }
142
+ if (error) {
143
+
144
+ return false;
145
+ }
146
+
147
+ // return false;
148
+ var methods = document.getElementsByName('shipping_method');
149
+ if (methods.length == 0) {
150
+ alert(Translator.translate('Your order cannot be completed at this time as there is no shipping methods available for it. Please make necessary changes in your shipping address.').stripTags());
151
+ return false;
152
+ }
153
+
154
+ if (!this.validator.validate()) {
155
+ return false;
156
+ }
157
+
158
+ for (var i = 0; i < methods.length; i++) {
159
+ if (methods[i].checked) {
160
+ return true;
161
+ }
162
+ }
163
+ alert(Translator.translate('Please specify shipping method.').stripTags());
164
+ return false;
165
+ });
166
+
167
+
168
+
169
+
170
+ jQuery(document).ready(function () {
171
+ hideShippingAll();
172
+ jQuery('input[type="radio"][name="shipping_method"]').click(function () {
173
+ hideShippingAll();
174
+ var code = jQuery(this).val();
175
+ if (jQuery(this).is(':checked')) {
176
+ showShipping(code);
177
+ }
178
+ });
179
+ jQuery('input[type="radio"][name="shipping_method"]').each(function () {
180
+ var code = jQuery(this).val();
181
+ if (jQuery(this).is(":checked")) {
182
+ showShipping(code);
183
+ }
184
+ });
185
+ });
186
+ function showShipping(code) {
187
+ if (jQuery('#' + 'shipping_form_' + code).length != 0) {
188
+ hideAllError();
189
+ jQuery('#' + 'shipping_form_' + code).show();
190
+ }
191
+ }
192
+ function hideShippingAll() {
193
+ jQuery('input[type="radio"][name="shipping_method"]').each(function () {
194
+ var code = jQuery(this).val();
195
+ jQuery('#' + 'shipping_form_' + code).hide();
196
+ });
197
+ }
198
+ function hideAllError() {
199
+ jQuery('.advice-required-entry').hide();
200
+ }
201
+
202
+ <?php if (!empty($shippingCodePrice)): ?>
203
+ var shippingCodePrice = {<?php echo implode(',', $shippingCodePrice); ?>};
204
+ <?php endif; ?>
205
+
206
+ $$('input[type="radio"][name="shipping_method"]').each(function (el) {
207
+ Event.observe(el, 'click', function () {
208
+ if (el.checked == true) {
209
+ var getShippingCode = el.getValue();
210
+ <?php if (!empty($shippingCodePrice)): ?>
211
+ var newPrice = shippingCodePrice[getShippingCode];
212
+ if (!lastPrice) {
213
+ lastPrice = newPrice;
214
+ quoteBaseGrandTotal += newPrice;
215
+ }
216
+ if (newPrice != lastPrice) {
217
+ quoteBaseGrandTotal += (newPrice - lastPrice);
218
+ lastPrice = newPrice;
219
+ }
220
+ <?php endif; ?>
221
+ checkQuoteBaseGrandTotal = quoteBaseGrandTotal;
222
+ return false;
223
+ }
224
+ });
225
+ });
226
+
227
+ //]]>
228
+ </script>
229
+ <?php endif; ?>
app/design/frontend/rwd/default/template/fr_exp/shipping.phtml ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $_code = $this->getMethodCode();
3
+ $carrier = $this->getMethodInstance();
4
+ $_rate = $this->getRate();
5
+ $_method_title = $this->getMethodTitle();
6
+ $_method_long_description = $this->getMethodLongDescription();
7
+ $customer_country_code = $this->getCustomerCountry();
8
+ ?>
9
+
10
+ <form id="geodis-form_<?php echo $_rate->getCode() ?>">
11
+ <div id="shipping_form_<?php echo $_rate->getCode() ?>" class="col-2-set geodis france-express" style="display:none;">
12
+ <h4><?php echo $this->__('I have chosen ') ?> <?php echo $_method_title; ?></h4>
13
+ <div class="geodis-info-content">
14
+ <div class="france-express-col-1 geodis-col-1">
15
+ <img src="<?php echo $this->getSkinUrl('images/franceexpress/' . $_rate->getCode() . '.jpg') ?>">
16
+ </div>
17
+ <div class="france-express-col-2 geodis-col-2">
18
+ <div class="box">
19
+ <ul>
20
+ <li>
21
+
22
+ <?php if ($_rate->getCode() == 'franceexpress_ondemandlogo_geodis_od_expert') { ?>
23
+ <!-- Mode de livraison 1 : FRANCE EXPRESS ON DEMAND premium -->
24
+ <div class="geodis-heading"><?php echo $this->__('Please indicate your email address and/or your mobile number.<br/>As soon as your order is shipped, FRANCE EXPRESS will send you a personal link giving you access to our online delivery booking portal.') ?></div>
25
+ <div class="error_france_express error"></div>
26
+ <div>
27
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Email ") ?></span>
28
+ <span class="input-box">
29
+ <input id="email" type='text' name='<?php echo $_rate->getCode() ?>[email]' class="input-text validate-email geodis-input" value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getEmail(); ?>' />
30
+ </span>
31
+ </div>
32
+ <div>
33
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Mobile phone ") ?></span>
34
+ <span class="input-box">
35
+ <input id="mobile" type='text' name='<?php echo $_rate->getCode() ?>[mobile]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-phone-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
36
+ </span>
37
+ </div>
38
+ <?php } else { ?>
39
+ <!-- Mode de livraison 2 : FRANCE EXPRESS ON DEMAND live -->
40
+ <div class="geodis-heading"><?php echo $this->__('Please indicate your phone number.<br/>FRANCE EXPRESS will call you when your order is ready for delivery.') ?></div>
41
+ <div class="error_france_express error"></div>
42
+ <div>
43
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__('Phone ') ?></span>
44
+ <span class="input-box">
45
+ <input id="tel" type='text' name='<?php echo $_rate->getCode() ?>[phone]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-fixe-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
46
+ </span>
47
+ </div>
48
+ <div>
49
+ <span class="geodis-label" for="<?php echo $_code ?>" class="required"><?php echo $this->__("Mobile phone ") ?></span>
50
+ <span class="input-box">
51
+ <input id="mobile" type='text' name='<?php echo $_rate->getCode() ?>[mobile]' class='input-text geodis-input <?php if($customer_country_code && $customer_country_code == 'FR') {?> validate-french-phone-ondemand-logo <?php }else{ echo 'validate-phoneLax'; } ?>' value='<?php echo Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getTelephone(); ?>' />
52
+ </span>
53
+ </div>
54
+
55
+
56
+ <?php } ?>
57
+ </li>
58
+ </ul>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </form>
64
+
65
+ <style type="text/css">
66
+ @media screen and (max-width: 610px) {
67
+ .france-express-col-1, .france-express-col-2 {display: block!important; width:100%}
68
+ .geodis-col-1 img {width: 150px; margin:auto;}
69
+
70
+ }
71
+ </style>
app/etc/modules/Franceexpress_Ondemandlogo.xml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Franceexpress_Ondemandlogo>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ <depends>
8
+ <Mage_Shipping />
9
+ </depends>
10
+ </Franceexpress_Ondemandlogo>
11
+ </modules>
12
+ </config>
app/locale/fr_FR/Franceexpress_Ondemandlogo.csv ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "Your cart does not fulfill the conditions required for this mode","Votre panier ne remplit pas les conditions nécessaires pour ce mode"
2
+ "Please provide at least an email address or a phone number","Indiquez-nous au moins un numéro de téléphone mobile ou une adresse email"
3
+ "Please provide at least one phone number","Indiquez-nous au moins un numéro de téléphone fixe ou mobile"
4
+ "Please provide a valid phone number","Veuillez saisir un numéro de téléphone valide"
5
+ "I have chosen ","J’ai choisi "
6
+ "Recipient of the order","Destinataire de la commande"
7
+ "First name ","Nom "
8
+ "Last name ","Prénom "
9
+ "Email ","Email "
10
+ "Mobile phone ","Téléphone mobile "
11
+ "Phone ","Téléphone fixe "
12
+ "Please indicate your email address and/or your mobile number.<br/>As soon as your order is shipped, FRANCE EXPRESS will send you a personal link giving you access to our online delivery booking portal.","Indiquez-nous un numéro de téléphone mobile et/ou une adresse email.<br/>Dès la commande expédiée, FRANCE EXPRESS vous transmettra un lien sécurisé vers notre portail web qui vous permettra de programmer votre rendez-vous de livraison."
13
+ "Please indicate your phone number.<br/>FRANCE EXPRESS will call you when your order is ready for delivery.","Indiquez-nous un numéro de téléphone fixe et/ou mobile. <br/>FRANCE EXPRESS vous contactera afin de convenir de votre date de livraison."
14
+ "Please enter a valid email address. For example johndoe@domain.com.","Veuillez entrer une adresse courriel valide. Par exemple pierremaistre@domaine.com."
15
+ "This is a required field.","Ce champs est obligatoire."
16
+ "First Name required","Prénom requis"
17
+ "Last Name required","Nom requis"
js/franceexpress/jquery-1.11.0.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
2
+ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
3
+ }}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
4
+ },a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.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){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
js/franceexpress/no-conflict.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*
2
+ * To change this license header, choose License Headers in Project Properties.
3
+ * To change this template file, choose Tools | Templates
4
+ * and open the template in the editor.
5
+ */
6
+
7
+ jQuery.noConflict();
package.xml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Franceexpress_Ondemandlogo</name>
4
+ <version>1.0.5</version>
5
+ <stability>stable</stability>
6
+ <license>http://opensource.org/licenses/afl-3.0.php</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Laissez &#xE0; vos clients le choix de leur date de livraison</summary>
10
+ <description>Int&#xE9;gration de textes et logos facilitant&#xD;
11
+ &#xD;
12
+ le param&#xE9;trage de votre site. Avec &#xD;
13
+ &#xD;
14
+ Geodis On Demand, vos clients &#xD;
15
+ &#xD;
16
+ b&#xE9;n&#xE9;ficient d'une gamme de &#xD;
17
+ &#xD;
18
+ prestations leur permettant de choisir &#xD;
19
+ &#xD;
20
+ partout en France, par t&#xE9;l&#xE9;phone ou &#xD;
21
+ &#xD;
22
+ par internet, le lieu et la date de &#xD;
23
+ &#xD;
24
+ livraison.</description>
25
+ <notes>First preview release</notes>
26
+ <authors><author><name>Ysance</name><user>Ysance</user><email>contact@ysance.com</email></author></authors>
27
+ <date>2015-09-07</date>
28
+ <time>13:51:43</time>
29
+ <contents><target name="magecommunity"><dir name="Franceexpress"><dir name="Ondemandlogo"><dir name="Block"><dir name="Sales"><dir name="Order"><dir name="View"><dir name="Tab"><file name="Info.php" hash="d044e7feb1128c849a4d003dc3626846"/></dir></dir></dir></dir><file name="Shipping.php" hash="d25e1c20b6e6a68b21bc00961fbfb5fe"/></dir><dir name="Helper"><file name="Data.php" hash="4f208d6a472213732d3fd4bc48cd2191"/></dir><dir name="Model"><file name="Carrier.php" hash="f2aec0648220e22d1ef465d4ed53b293"/><file name="Frshippment.php" hash="917cbc196dd673535274c26d8c034207"/><file name="Observer.php" hash="05e6e7a7aac3761f7f26fac68973ace4"/><dir name="Resource"><dir name="Frshippment"><file name="Collection.php" hash="64e6a649cabbaa27959dae8bd6a5e4a0"/></dir><file name="Frshippment.php" hash="15967f76b2cb231a0c90f76357d73cf5"/></dir><dir name="Sales"><file name="Order.php" hash="22b226ad6ab25cfda1aa3dd573d24ebd"/></dir></dir><dir name="etc"><file name="config.xml" hash="7ddce20c2bad410e39d119993731432f"/><file name="system.xml" hash="a6716ebb49aea917b9d3a15edad922a6"/></dir><dir name="sql"><dir name="franceexpress_setup"><file name="mysql4-install-0.1.0.php" hash="c00b69b0a582a2563e54cc445e471065"/><file name="mysql4-uninstall-0.1.0.php" hash="8f7a8f4cd4dd1c4cad631062ab4fc762"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="rwd"><dir name="default"><dir name="layout"><file name="franceexpress.xml" hash="2ce3cdbcbd359f3fcb23df58256dd1a6"/></dir><dir name="template"><dir name="fr_exp"><dir name="checkout"><dir name="onepage"><dir name="shipping_method"><file name="available.phtml" hash="0fbbd094c36fe29b391da8e4af30ad8e"/></dir></dir></dir><file name="shipping.phtml" hash="8ee77d149adc7c9017ab695a583602a3"/></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="layout"><file name="franceexpress.xml" hash="f13dfaf83bdf69912c584ce016c42634"/></dir><dir name="template"><dir name="fr_exp"><dir name="checkout"><dir name="onepage"><dir name="shipping_method"><file name="available.phtml" hash="bf6bc31daf3be0e287ca0fe5a194588e"/></dir></dir></dir><file name="shipping.phtml" hash="c2e5e673ef17bf7eca7a6009f9fe6a02"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="franceexpress_ondemandlogo.xml" hash="255bcaf3ea24f31a59ccb067ad8aa5c6"/></dir><dir name="template"><dir name="franceexpress"><dir name="sales"><dir name="order"><dir name="view"><dir name="tab"><file name="info.phtml" hash="b6983689cee67b1a95c3efc261de8034"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Franceexpress_Ondemandlogo.xml" hash="4d3454bce3d200263df26d716d2eb221"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Franceexpress_Ondemandlogo.csv" hash="17b7cb529962a754108beca47bd1b22c"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="franceexpress"><file name="franceexpress_ondemandlogo_geodis_od_expert.jpg" hash="40af0ce0881e7aa1f63420b8ee17148a"/><file name="franceexpress_ondemandlogo_geodis_od_premium.jpg" hash="40af0ce0881e7aa1f63420b8ee17148a"/><file name="logo.png" hash="279e89e21dc3e7bcfb620ae73d0a9ad2"/></dir></dir><dir name="css"><dir name="franceexpress"><file name="geodis.css" hash="f080cf44556712e7c21841d8da29ca5a"/></dir></dir></dir></dir><dir name="rwd"><dir name="default"><dir name="images"><dir name="franceexpress"><file name="logoFranceExpress.png" hash="fc04fb806a6e1a981e28673e87841ce5"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="franceexpress"><file name="jquery-1.11.0.min.js" hash="eaec1712551cd2792f4607f39fab12e7"/><file name="no-conflict.js" hash="f10bea9c8a693484702a21f6078ceb66"/></dir></dir></target></contents>
30
+ <compatible/>
31
+ <dependencies><required><php><min>5.3.0</min><max>5.6.0</max></php></required></dependencies>
32
+ </package>
skin/frontend/base/default/css/franceexpress/geodis.css ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .geodis{ background-color: #FFF; border: 1px solid #999; width: 100%; margin: 10px 0; }
2
+ .geodis-label{ background-color: #fff !important;color: #3200e6 !important;display:inline-block; font-family: arial;font-size: 13px;font-weight: bold;min-width: 0 !important;padding: 0 !important;width: 145px !important;line-height: 31px;}
3
+ .france-express-col-1{width: 18%;position: relative; display: inline-block; vertical-align: middle; padding: 0 10px 0 5px!important}
4
+ .france-express-col-2{width:81%; display: inline-block; vertical-align: middle; }
5
+ .geodis-input{ font-size: 13.5px !important;height: 25px !important;margin-bottom: 4px;width: 241px !important;}
6
+ .france-express .geodis-label{color: #00597a !important;background-color: #fff !important;}
7
+ .geodis-heading{ font-family: arial;font-size: 12px;margin-bottom: 5px; }
8
+ .input-box .validation-advice{display: block !important;opacity: 1 !important;}
9
+ .france-express-col-1 img{max-width: 100%; height: auto; }
10
+ .france-express h4{ background: #00597A !important; font-size: 14px; padding: 5px 10px; color: #FFF; margin: 0px; text-transform: none !important;font-family: arial;font-weight: bold;}
11
+ .geodis-info-content{display: block; padding: 5px;}
12
+ .sp-methods label div{font-weight: 300;}
13
+ .advice-required-entry {color: #df280a;font-size: 13px;margin-bottom: 5px;margin-left: 146px;margin-top: 5px;}
14
+ #checkout-step-shipping_method #checkout-shipping-method-load dd ul li label{font-family: arial !important;font-size: 12px !important;font-weight: bold !important;width: 100% !important;}
15
+ .sp-methods .price {float: right !important;}
skin/frontend/base/default/images/franceexpress/franceexpress_ondemandlogo_geodis_od_expert.jpg ADDED
Binary file
skin/frontend/base/default/images/franceexpress/franceexpress_ondemandlogo_geodis_od_premium.jpg ADDED
Binary file
skin/frontend/base/default/images/franceexpress/logo.png ADDED
Binary file
skin/frontend/rwd/default/images/franceexpress/logoFranceExpress.png ADDED
Binary file