Version Notes
This extension will update your listing page, css, js, and CartController.php
Download this release
Release Info
Developer | Magento Core Team |
Extension | bagproductbydraganddrop |
Version | 1.0 |
Comparing to | |
See all releases |
Version 1.0
- app/code/core/Mage/Checkout/controllers/CartController.php +421 -0
- app/design/frontend/default/default/template/catalog/product/list.phtml +216 -0
- js/varien/interface.js +42 -0
- js/varien/jquery.fancybox-1.3.1.js +1079 -0
- js/varien/jquery.js +4376 -0
- package.xml +25 -0
- skin/frontend/default/default/css/jquery.fancybox-1.3.1.css +364 -0
- skin/frontend/default/default/images/fancy_close.png +0 -0
- skin/frontend/default/default/images/fancy_loading.png +0 -0
- skin/frontend/default/default/images/fancy_nav_left.png +0 -0
- skin/frontend/default/default/images/fancy_nav_right.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_e.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_n.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_ne.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_nw.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_s.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_se.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_sw.png +0 -0
- skin/frontend/default/default/images/fancy_shadow_w.png +0 -0
- skin/frontend/default/default/images/fancy_title_left.png +0 -0
- skin/frontend/default/default/images/fancy_title_main.png +0 -0
- skin/frontend/default/default/images/fancy_title_over.png +0 -0
- skin/frontend/default/default/images/fancy_title_right.png +0 -0
- skin/frontend/default/default/images/fancybox-x.png +0 -0
- skin/frontend/default/default/images/fancybox-y.png +0 -0
- skin/frontend/default/default/images/fancybox.png +0 -0
app/code/core/Mage/Checkout/controllers/CartController.php
ADDED
@@ -0,0 +1,421 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Checkout
|
23 |
+
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Shopping cart controller
|
29 |
+
*/
|
30 |
+
class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* Action list where need check enabled cookie
|
34 |
+
*
|
35 |
+
* @var array
|
36 |
+
*/
|
37 |
+
protected $_cookieCheckActions = array('add');
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Retrieve shopping cart model object
|
41 |
+
*
|
42 |
+
* @return Mage_Checkout_Model_Cart
|
43 |
+
*/
|
44 |
+
protected function _getCart()
|
45 |
+
{
|
46 |
+
return Mage::getSingleton('checkout/cart');
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Get checkout session model instance
|
51 |
+
*
|
52 |
+
* @return Mage_Checkout_Model_Session
|
53 |
+
*/
|
54 |
+
protected function _getSession()
|
55 |
+
{
|
56 |
+
return Mage::getSingleton('checkout/session');
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Get current active quote instance
|
61 |
+
*
|
62 |
+
* @return Mage_Sales_Model_Quote
|
63 |
+
*/
|
64 |
+
protected function _getQuote()
|
65 |
+
{
|
66 |
+
return $this->_getCart()->getQuote();
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Set back redirect url to response
|
71 |
+
*
|
72 |
+
* @return Mage_Checkout_CartController
|
73 |
+
*/
|
74 |
+
protected function _goBack()
|
75 |
+
{
|
76 |
+
if (!Mage::getStoreConfig('checkout/cart/redirect_to_cart')
|
77 |
+
&& !$this->getRequest()->getParam('in_cart')
|
78 |
+
&& $backUrl = $this->_getRefererUrl()) {
|
79 |
+
|
80 |
+
$this->getResponse()->setRedirect($backUrl);
|
81 |
+
} else {
|
82 |
+
if (($this->getRequest()->getActionName() == 'add') && !$this->getRequest()->getParam('in_cart')) {
|
83 |
+
$this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl());
|
84 |
+
}
|
85 |
+
$this->_redirect('checkout/cart');
|
86 |
+
}
|
87 |
+
return $this;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Initialize product instance from request data
|
92 |
+
*
|
93 |
+
* @return Mage_Catalog_Model_Product || false
|
94 |
+
*/
|
95 |
+
protected function _initProduct()
|
96 |
+
{
|
97 |
+
$productId = (int) $this->getRequest()->getParam('product');
|
98 |
+
if ($productId) {
|
99 |
+
$product = Mage::getModel('catalog/product')
|
100 |
+
->setStoreId(Mage::app()->getStore()->getId())
|
101 |
+
->load($productId);
|
102 |
+
if ($product->getId()) {
|
103 |
+
return $product;
|
104 |
+
}
|
105 |
+
}
|
106 |
+
return false;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Shopping cart display action
|
111 |
+
*/
|
112 |
+
public function indexAction()
|
113 |
+
{
|
114 |
+
$cart = $this->_getCart();
|
115 |
+
if ($cart->getQuote()->getItemsCount()) {
|
116 |
+
$cart->init();
|
117 |
+
$cart->save();
|
118 |
+
|
119 |
+
if (!$this->_getQuote()->validateMinimumAmount()) {
|
120 |
+
$warning = Mage::getStoreConfig('sales/minimum_order/description');
|
121 |
+
$cart->getCheckoutSession()->addNotice($warning);
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
foreach ($cart->getQuote()->getMessages() as $message) {
|
126 |
+
if ($message) {
|
127 |
+
$cart->getCheckoutSession()->addMessage($message);
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* if customer enteres shopping cart we should mark quote
|
133 |
+
* as modified bc he can has checkout page in another window.
|
134 |
+
*/
|
135 |
+
$this->_getSession()->setCartWasUpdated(true);
|
136 |
+
|
137 |
+
Varien_Profiler::start(__METHOD__ . 'cart_display');
|
138 |
+
$this->loadLayout();
|
139 |
+
$this->_initLayoutMessages('checkout/session');
|
140 |
+
$this->_initLayoutMessages('catalog/session');
|
141 |
+
$this->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));
|
142 |
+
$this->renderLayout();
|
143 |
+
Varien_Profiler::stop(__METHOD__ . 'cart_display');
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Add product to shopping cart action
|
148 |
+
*/
|
149 |
+
public function addAction()
|
150 |
+
{
|
151 |
+
$cart = $this->_getCart();
|
152 |
+
$params = $this->getRequest()->getParams();
|
153 |
+
|
154 |
+
$product= $this->_initProduct();
|
155 |
+
$related= $this->getRequest()->getParam('related_product');
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Check product availability
|
159 |
+
*/
|
160 |
+
if (!$product) {
|
161 |
+
$this->_goBack();
|
162 |
+
return;
|
163 |
+
}
|
164 |
+
|
165 |
+
|
166 |
+
try {
|
167 |
+
|
168 |
+
$data=$product->getData();
|
169 |
+
$data['price']=5;
|
170 |
+
$data['minimal_price']=0;
|
171 |
+
$data['cost']=0;
|
172 |
+
|
173 |
+
$product->setData($data);
|
174 |
+
|
175 |
+
|
176 |
+
$cart->addProduct($product, $params);
|
177 |
+
if (!empty($related)) {
|
178 |
+
$cart->addProductsByIds(explode(',', $related));
|
179 |
+
}
|
180 |
+
|
181 |
+
$cart->save();
|
182 |
+
|
183 |
+
|
184 |
+
print_r($this->_getCart()->getQuote()->getItemsCollection());
|
185 |
+
exit;
|
186 |
+
|
187 |
+
//print_r($this->_getSession()->getQuote()->getData());
|
188 |
+
//exit;
|
189 |
+
// $this->_getSession()->setCartWasUpdated(true);
|
190 |
+
|
191 |
+
/**
|
192 |
+
* @todo remove wishlist observer processAddToCart
|
193 |
+
*/
|
194 |
+
Mage::dispatchEvent('checkout_cart_add_product_complete',
|
195 |
+
array('product' => $product, 'request' => $this->getRequest(), 'response' => $this->getResponse())
|
196 |
+
);
|
197 |
+
$message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
|
198 |
+
if (!$this->_getSession()->getNoCartRedirect(true)) {
|
199 |
+
$this->_getSession()->addSuccess($message);
|
200 |
+
$this->_goBack();
|
201 |
+
}
|
202 |
+
}
|
203 |
+
catch (Mage_Core_Exception $e) {
|
204 |
+
if ($this->_getSession()->getUseNotice(true)) {
|
205 |
+
$this->_getSession()->addNotice($e->getMessage());
|
206 |
+
} else {
|
207 |
+
$messages = array_unique(explode("\n", $e->getMessage()));
|
208 |
+
foreach ($messages as $message) {
|
209 |
+
$this->_getSession()->addError($message);
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
$url = $this->_getSession()->getRedirectUrl(true);
|
214 |
+
if ($url) {
|
215 |
+
$this->getResponse()->setRedirect($url);
|
216 |
+
} else {
|
217 |
+
$this->_redirectReferer(Mage::helper('checkout/cart')->getCartUrl());
|
218 |
+
}
|
219 |
+
}
|
220 |
+
catch (Exception $e) {
|
221 |
+
$this->_getSession()->addException($e, $this->__('Can not add item to shopping cart'));
|
222 |
+
$this->_goBack();
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
public function addgroupAction()
|
227 |
+
{
|
228 |
+
$orderItemIds = $this->getRequest()->getParam('order_items', array());
|
229 |
+
if (is_array($orderItemIds)) {
|
230 |
+
$itemsCollection = Mage::getModel('sales/order_item')
|
231 |
+
->getCollection()
|
232 |
+
->addIdFilter($orderItemIds)
|
233 |
+
->load();
|
234 |
+
/* @var $itemsCollection Mage_Sales_Model_Mysql4_Order_Item_Collection */
|
235 |
+
$cart = $this->_getCart();
|
236 |
+
foreach ($itemsCollection as $item) {
|
237 |
+
try {
|
238 |
+
$cart->addOrderItem($item, 1);
|
239 |
+
}
|
240 |
+
catch (Mage_Core_Exception $e) {
|
241 |
+
if ($this->_getSession()->getUseNotice(true)) {
|
242 |
+
$this->_getSession()->addNotice($e->getMessage());
|
243 |
+
} else {
|
244 |
+
$this->_getSession()->addError($e->getMessage());
|
245 |
+
}
|
246 |
+
}
|
247 |
+
catch (Exception $e) {
|
248 |
+
$this->_getSession()->addException($e, $this->__('Can not add item to shopping cart'));
|
249 |
+
$this->_goBack();
|
250 |
+
}
|
251 |
+
}
|
252 |
+
$cart->save();
|
253 |
+
$this->_getSession()->setCartWasUpdated(true);
|
254 |
+
}
|
255 |
+
$this->_goBack();
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Update shoping cart data action
|
260 |
+
*/
|
261 |
+
public function updatePostAction()
|
262 |
+
{
|
263 |
+
try {
|
264 |
+
$cartData = $this->getRequest()->getParam('cart');
|
265 |
+
if (is_array($cartData)) {
|
266 |
+
|
267 |
+
$cart = $this->_getCart();
|
268 |
+
$cart->updateItems($cartData)
|
269 |
+
->save();
|
270 |
+
}
|
271 |
+
$this->_getSession()->setCartWasUpdated(true);
|
272 |
+
}
|
273 |
+
catch (Mage_Core_Exception $e) {
|
274 |
+
$this->_getSession()->addError($e->getMessage());
|
275 |
+
}
|
276 |
+
catch (Exception $e) {
|
277 |
+
$this->_getSession()->addException($e, $this->__('Cannot update shopping cart'));
|
278 |
+
}
|
279 |
+
$this->_goBack();
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Delete shoping cart item action
|
284 |
+
*/
|
285 |
+
public function deleteAction()
|
286 |
+
{
|
287 |
+
$id = (int) $this->getRequest()->getParam('id');
|
288 |
+
if ($id) {
|
289 |
+
try {
|
290 |
+
$this->_getCart()->removeItem($id)
|
291 |
+
->save();
|
292 |
+
} catch (Exception $e) {
|
293 |
+
$this->_getSession()->addError($this->__('Cannot remove item'));
|
294 |
+
}
|
295 |
+
}
|
296 |
+
$this->_redirectReferer(Mage::getUrl('*/*'));
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* Initialize shipping information
|
301 |
+
*/
|
302 |
+
public function estimatePostAction()
|
303 |
+
{
|
304 |
+
$country = (string) $this->getRequest()->getParam('country_id');
|
305 |
+
$postcode = (string) $this->getRequest()->getParam('estimate_postcode');
|
306 |
+
$city = (string) $this->getRequest()->getParam('estimate_city');
|
307 |
+
$regionId = (string) $this->getRequest()->getParam('region_id');
|
308 |
+
$region = (string) $this->getRequest()->getParam('region');
|
309 |
+
|
310 |
+
$this->_getQuote()->getShippingAddress()
|
311 |
+
->setCountryId($country)
|
312 |
+
->setCity($city)
|
313 |
+
->setPostcode($postcode)
|
314 |
+
->setRegionId($regionId)
|
315 |
+
->setRegion($region)
|
316 |
+
->setCollectShippingRates(true);
|
317 |
+
$this->_getQuote()->save();
|
318 |
+
$this->_goBack();
|
319 |
+
}
|
320 |
+
|
321 |
+
public function estimateUpdatePostAction()
|
322 |
+
{
|
323 |
+
$code = (string) $this->getRequest()->getParam('estimate_method');
|
324 |
+
if (!empty($code)) {
|
325 |
+
$this->_getQuote()->getShippingAddress()->setShippingMethod($code)/*->collectTotals()*/->save();
|
326 |
+
}
|
327 |
+
$this->_goBack();
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Initialize coupon
|
332 |
+
*/
|
333 |
+
public function couponPostAction()
|
334 |
+
{
|
335 |
+
/**
|
336 |
+
* No reason continue with empty shopping cart
|
337 |
+
*/
|
338 |
+
if (!$this->_getCart()->getQuote()->getItemsCount()) {
|
339 |
+
$this->_goBack();
|
340 |
+
return;
|
341 |
+
}
|
342 |
+
|
343 |
+
$couponCode = (string) $this->getRequest()->getParam('coupon_code');
|
344 |
+
if ($this->getRequest()->getParam('remove') == 1) {
|
345 |
+
$couponCode = '';
|
346 |
+
}
|
347 |
+
$oldCouponCode = $this->_getQuote()->getCouponCode();
|
348 |
+
|
349 |
+
if (!strlen($couponCode) && !strlen($oldCouponCode)) {
|
350 |
+
$this->_goBack();
|
351 |
+
return;
|
352 |
+
}
|
353 |
+
|
354 |
+
try {
|
355 |
+
$this->_getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
356 |
+
$this->_getQuote()->setCouponCode(strlen($couponCode) ? $couponCode : '')
|
357 |
+
->collectTotals()
|
358 |
+
->save();
|
359 |
+
|
360 |
+
if ($couponCode) {
|
361 |
+
if ($couponCode == $this->_getQuote()->getCouponCode()) {
|
362 |
+
$this->_getSession()->addSuccess(
|
363 |
+
$this->__('Coupon code "%s" was applied successfully.', Mage::helper('core')->htmlEscape($couponCode))
|
364 |
+
);
|
365 |
+
}
|
366 |
+
else {
|
367 |
+
$this->_getSession()->addError(
|
368 |
+
$this->__('Coupon code "%s" is not valid.', Mage::helper('core')->htmlEscape($couponCode))
|
369 |
+
);
|
370 |
+
}
|
371 |
+
} else {
|
372 |
+
$this->_getSession()->addSuccess($this->__('Coupon code was canceled successfully.'));
|
373 |
+
}
|
374 |
+
|
375 |
+
}
|
376 |
+
catch (Mage_Core_Exception $e) {
|
377 |
+
$this->_getSession()->addError($e->getMessage());
|
378 |
+
}
|
379 |
+
catch (Exception $e) {
|
380 |
+
$this->_getSession()->addError($this->__('Can not apply coupon code.'));
|
381 |
+
}
|
382 |
+
|
383 |
+
$this->_goBack();
|
384 |
+
}
|
385 |
+
|
386 |
+
|
387 |
+
public function addproductAction() {
|
388 |
+
$use_moon = $this->getRequest()->getParam("use_moon");
|
389 |
+
if(isset($use_moon)){
|
390 |
+
$_cart_add_url = $this->getRequest()->getParam('cart_add_url');
|
391 |
+
$cart_add_url = json_decode($_cart_add_url);
|
392 |
+
$p=array();
|
393 |
+
$p=explode("/",$cart_add_url);
|
394 |
+
//$cart_add_url = $this->Moon_getCartURLParam($cart_add_url);
|
395 |
+
$oCart = $this->_getCart();
|
396 |
+
$product = $this->Moon_initProduct($p[0]);
|
397 |
+
$oCart->addproduct($product,1);
|
398 |
+
$oCart->save();
|
399 |
+
$this->_getSession()->setCartWasUpdated(true);
|
400 |
+
}
|
401 |
+
return;
|
402 |
+
}
|
403 |
+
|
404 |
+
private function Moon_initProduct($product_id)
|
405 |
+
{
|
406 |
+
$productId = (int) $product_id;
|
407 |
+
if ($productId) {
|
408 |
+
$product = Mage::getModel('catalog/product')
|
409 |
+
->setStoreId(Mage::app()->getStore()->getId())
|
410 |
+
->load($productId);
|
411 |
+
if ($product->getId()) {
|
412 |
+
return $product;
|
413 |
+
}
|
414 |
+
}
|
415 |
+
return false;
|
416 |
+
}
|
417 |
+
|
418 |
+
|
419 |
+
|
420 |
+
|
421 |
+
}
|
app/design/frontend/default/default/template/catalog/product/list.phtml
ADDED
@@ -0,0 +1,216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design_default
|
22 |
+
* @package Mage
|
23 |
+
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
+
*/
|
26 |
+
?>
|
27 |
+
<?php
|
28 |
+
/**
|
29 |
+
* Product list template
|
30 |
+
*
|
31 |
+
* @see Mage_Catalog_Block_Product_List
|
32 |
+
*/
|
33 |
+
?>
|
34 |
+
<?php $_productCollection=$this->getLoadedProductCollection() ?>
|
35 |
+
<?php if(!$_productCollection->count()): ?>
|
36 |
+
<div class="note-msg">
|
37 |
+
<?php echo $this->__('There are no products matching the selection.') ?>
|
38 |
+
</div>
|
39 |
+
<?php else: ?>
|
40 |
+
|
41 |
+
<div id="container" class="drop" style="border:1px solid #999 ; height:400px; width:480px; overflow-y:scroll;
|
42 |
+
z-index:3; display:none " >
|
43 |
+
<h5 align="center">Add your products to cart by dragging product images </h5>
|
44 |
+
<?
|
45 |
+
$cart = Mage::getModel('checkout/cart');
|
46 |
+
$productids=$cart->getProductIds();
|
47 |
+
$imghelper=Mage::helper("catalog/image");
|
48 |
+
$imgpath=array();
|
49 |
+
foreach($productids as $productid ) {
|
50 |
+
$imghelper=Mage::helper("catalog/image");
|
51 |
+
$product = Mage::getModel('catalog/product')
|
52 |
+
->setStoreId(Mage::app()->getStore()->getId())
|
53 |
+
->load($productid);
|
54 |
+
?>
|
55 |
+
<img src="<?=$imghelper->init($product, 'image')->resize(135,135)?>" />
|
56 |
+
<? } ?>
|
57 |
+
</div>
|
58 |
+
|
59 |
+
<?php echo $this->getToolbarHtml() ?>
|
60 |
+
<?php // List mode ?>
|
61 |
+
<?php if($this->getMode()!='grid'): ?>
|
62 |
+
<?php $_iterator = 0; ?>
|
63 |
+
<div class="listing-type-list catalog-listing">
|
64 |
+
<?php foreach ($_productCollection as $_product): ?>
|
65 |
+
<div class="listing-item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
|
66 |
+
<?php // Product Image ?>
|
67 |
+
<div class="product-image">
|
68 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getSmallImageLabel()) ?>">
|
69 |
+
<input type="hidden" id="lk<?=$_iterator?>" value="<?=$_product->getId()?>" />
|
70 |
+
<img id="im<?=$_iterator?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135, 135); ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" class="block" />
|
71 |
+
</a>
|
72 |
+
</div>
|
73 |
+
|
74 |
+
<?php // Product description ?>
|
75 |
+
<div class="product-shop">
|
76 |
+
<h5><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName())?></a></h5>
|
77 |
+
<?php if($_product->getRatingSummary()): ?>
|
78 |
+
<?php echo $this->getReviewsSummaryHtml($_product) ?>
|
79 |
+
<?php endif; ?>
|
80 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
81 |
+
<?php if($_product->isSaleable()): ?>
|
82 |
+
<button class="form-button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart') ?></span></button>
|
83 |
+
<?php else: ?>
|
84 |
+
<div class="out-of-stock"><?php echo $this->__('Out of stock') ?></div>
|
85 |
+
<?php endif; ?>
|
86 |
+
<div class="clear"></div>
|
87 |
+
<div class="description">
|
88 |
+
<?php echo nl2br($_product->getShortDescription()) ?>
|
89 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><small><?php echo $this->__('Learn More') ?></small></a>
|
90 |
+
</div>
|
91 |
+
<p class="add-to">
|
92 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
93 |
+
<a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-cart"><?php echo $this->__('Add to Wishlist') ?></a>
|
94 |
+
<?php endif; ?>
|
95 |
+
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
|
96 |
+
<span class="pipe">|</span>
|
97 |
+
<a href="<?php echo $_compareUrl ?>"><?php echo $this->__('Add to Compare') ?></a>
|
98 |
+
<?php endif; ?><span class="pipe">|</span><a href="#container" class="bag" >Open Bag</a>
|
99 |
+
</p>
|
100 |
+
</div>
|
101 |
+
</div>
|
102 |
+
<?php endforeach; ?>
|
103 |
+
</div>
|
104 |
+
|
105 |
+
<?php else: ?>
|
106 |
+
|
107 |
+
<?php // Grid Mode ?>
|
108 |
+
|
109 |
+
<div class="listing-type-grid catalog-listing">
|
110 |
+
<?php $_collectionSize = $_productCollection->count() ?>
|
111 |
+
<?php $_columnCount = $this->getColumnCount(); ?>
|
112 |
+
<?php $i=0; foreach ($_productCollection as $_product): ?>
|
113 |
+
<?php if($i++%$_columnCount==0): ?>
|
114 |
+
<ol class="grid-row">
|
115 |
+
<?php endif; ?>
|
116 |
+
<li class="item">
|
117 |
+
<p class="product-image">
|
118 |
+
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>">
|
119 |
+
<input type="hidden" id="lk<?=$i?>" value="<?=$_product->getId()?>" />
|
120 |
+
<img id="im<?=$i?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135, 135); ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" class="block" />
|
121 |
+
</a>
|
122 |
+
</p>
|
123 |
+
<h5><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></h5>
|
124 |
+
<?php if($_product->getRatingSummary()): ?>
|
125 |
+
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
|
126 |
+
<?php endif; ?>
|
127 |
+
<?php echo $this->getPriceHtml($_product, true) ?>
|
128 |
+
<?php if($_product->isSaleable()): ?>
|
129 |
+
<button type="button" class="form-button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><?php echo $this->__('Add to Cart') ?></span></button>
|
130 |
+
<?php else: ?>
|
131 |
+
<div class="out-of-stock"><?php echo $this->__('Out of stock') ?></div>
|
132 |
+
<?php endif; ?>
|
133 |
+
<p class="add-to">
|
134 |
+
<?php if ($this->helper('wishlist')->isAllow()) : ?>
|
135 |
+
<a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-cart"><?php echo $this->__('Add to Wishlist') ?></a>
|
136 |
+
<?php endif; ?>
|
137 |
+
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?><br/>
|
138 |
+
<a href="<?php echo $_compareUrl ?>"><?php echo $this->__('Add to Compare') ?></a>
|
139 |
+
<?php endif; ?>
|
140 |
+
<br /><a href="#container" class="bag" >Open Bag</a>
|
141 |
+
</p>
|
142 |
+
</li>
|
143 |
+
<?php if($i%$_columnCount==0 || $i==$_collectionSize): ?>
|
144 |
+
</ol>
|
145 |
+
<?php endif; ?>
|
146 |
+
<?php endforeach ?>
|
147 |
+
<script type="text/javascript">decorateGeneric($$('.grid-row'), ['last', 'odd', 'even']);</script>
|
148 |
+
</div>
|
149 |
+
<?php endif; ?>
|
150 |
+
<?php echo $this->getToolbarHtml() ?>
|
151 |
+
<?php endif; ?>
|
152 |
+
|
153 |
+
<script>
|
154 |
+
|
155 |
+
jQuery(".bag").fancybox({
|
156 |
+
'width' : 480,
|
157 |
+
'height' : 400,
|
158 |
+
'overlayShow' : false,
|
159 |
+
onStart: call_start,
|
160 |
+
onClosed: call_close,
|
161 |
+
});
|
162 |
+
|
163 |
+
function call_start() {
|
164 |
+
jQuery("#container").show();
|
165 |
+
jQuery("#fancybox-wrap").draggable();
|
166 |
+
}
|
167 |
+
function call_close() {
|
168 |
+
|
169 |
+
jQuery("#container").hide();
|
170 |
+
}
|
171 |
+
|
172 |
+
function call_openbag() {
|
173 |
+
jQuery("#container").slideDown(500);
|
174 |
+
|
175 |
+
}
|
176 |
+
jQuery.noConflict();
|
177 |
+
|
178 |
+
|
179 |
+
jQuery(document).ready(function(){
|
180 |
+
|
181 |
+
jQuery(".block").draggable({helper:'clone', zIndex:8000});
|
182 |
+
jQuery(".drop").droppable({
|
183 |
+
accept: ".block",
|
184 |
+
activeClass: 'droppable-active',
|
185 |
+
hoverClass: 'droppable-hover',
|
186 |
+
drop: function(ev, ui) {
|
187 |
+
//var span = document.createElement('span');
|
188 |
+
//jQuery(span).text('(remove)').addClass('remove').click(remove);
|
189 |
+
var o=jQuery(ui.draggable).clone().removeClass("block");
|
190 |
+
o.draggable();
|
191 |
+
jQuery("#container").append(o);
|
192 |
+
var img_element=ui.draggable.attr("id").split("im");
|
193 |
+
var link_url=document.getElementById("lk"+img_element[1]).value;
|
194 |
+
call_addto_cart(link_url);
|
195 |
+
|
196 |
+
}
|
197 |
+
});
|
198 |
+
|
199 |
+
|
200 |
+
});
|
201 |
+
function call_addto_cart(id) {
|
202 |
+
product_cart_url=id+"qty/1";
|
203 |
+
new Ajax.Request("<?=Mage::getBaseUrl()?>/checkout/cart/addproduct",{
|
204 |
+
method: 'post'
|
205 |
+
,postBody: "use_moon=true&cart_add_url="+product_cart_url.toJSON()
|
206 |
+
,onComplete: function(r){
|
207 |
+
result = r.responseText.evalJSON();
|
208 |
+
result.success.each(function(s,index){
|
209 |
+
});
|
210 |
+
result.fail.each(function(s,index){
|
211 |
+
});
|
212 |
+
}
|
213 |
+
});
|
214 |
+
}
|
215 |
+
</script>
|
216 |
+
|
js/varien/interface.js
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* jQuery UI 1.8
|
3 |
+
*
|
4 |
+
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
|
5 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
6 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
7 |
+
*
|
8 |
+
* http://docs.jquery.com/UI
|
9 |
+
*/
|
10 |
+
/*
|
11 |
+
* jQuery UI 1.8
|
12 |
+
*
|
13 |
+
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
|
14 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
15 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
16 |
+
*
|
17 |
+
* http://docs.jquery.com/UI
|
18 |
+
*/
|
19 |
+
jQuery.ui||(function(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);
|
20 |
+
/*
|
21 |
+
* jQuery UI Widget 1.8
|
22 |
+
*
|
23 |
+
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
|
24 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
25 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
26 |
+
*
|
27 |
+
* http://docs.jquery.com/UI/Widget
|
28 |
+
*/
|
29 |
+
(function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);
|
30 |
+
/*
|
31 |
+
* jQuery UI Mouse 1.8
|
32 |
+
*
|
33 |
+
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
|
34 |
+
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
35 |
+
* and GPL (GPL-LICENSE.txt) licenses.
|
36 |
+
*
|
37 |
+
* http://docs.jquery.com/UI/Mouse
|
38 |
+
*
|
39 |
+
* Depends:
|
40 |
+
* jquery.ui.widget.js
|
41 |
+
*/
|
42 |
+
(function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;(c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt));if(c.containment){this._setContainment()}if(this._trigger("start",b)===false){this._clear();return false}this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();if(this._trigger("drag",b,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode){return false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){if(b._trigger("stop",c)!==false){b._clear()}})}else{if(this._trigger("stop",c)!==false){this._clear()}}return false},cancel:function(){if(this.helper.is(".ui-draggable-dragging")){this._mouseUp({})}else{this._clear()}return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8"});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(c,d){var f=a(this).data("draggable").options;var e=a.makeArray(a(f.stack)).sort(function(h,g){return(parseInt(a(h).css("zIndex"),10)||0)-(parseInt(a(g).css("zIndex"),10)||0)});if(!e.length){return}var b=parseInt(e[0].style.zIndex)||0;a(e).each(function(g){this.style.zIndex=b+g});this[0].style.zIndex=b+e.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);(function(a){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.accept=a.isFunction(b)?b:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[c.scope]=a.ui.ddmanager.droppables[c.scope]||[];a.ui.ddmanager.droppables[c.scope].push(this);(c.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){if(b=="accept"){this.accept=a.isFunction(c)?c:function(e){return e.is(c)}}a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&!f.options.disabled&&f.options.scope==b.options.scope&&f.accept.call(f.element[0],(b.currentItem||b.element))&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.8"});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope]||[];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=d||this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);(function(c){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f<k.length;f++){var h=c.trim(k[f]),d="ui-resizable-"+h;var g=c('<div class="ui-resizable-handle '+d+'"></div>');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.after(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement);return this},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return !this.options.disabled&&f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidth<k.width),l=a(k.height)&&h.maxHeight&&(h.maxHeight<k.height),g=a(k.width)&&h.minWidth&&(h.minWidth>k.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e<this._proportionallyResizeElements.length;e++){var g=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],h=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=c.map(d,function(k,m){var l=parseInt(k,10)||0,n=parseInt(h[m],10)||0;return l+n})}if(c.browser.msie&&!(!(c(f).is(":hidden")||c(f).parents(":hidden").length))){continue}g.css({height:(f.height()-this.borderDif[0]-this.borderDif[2])||0,width:(f.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var e=this.element,h=this.options;this.elementOffset=e.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8"});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),h=d.options;var g=function(i){c(i).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(h.alsoResize)=="object"&&!h.alsoResize.parentNode){if(h.alsoResize.length){h.alsoResize=h.alsoResize[0];g(h.alsoResize)}else{c.each(h.alsoResize,function(i,j){g(i)})}}else{g(h.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,u){var s=(q[u]||0)+(j[u]||0);if(s&&s>=0){o[u]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);(function(a){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.right<d||j.top>g||j.bottom<h))}else{if(e.tolerance=="fit"){k=(j.left>d&&j.right<b&&j.top>h&&j.bottom<g)}}if(k){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",i,{selecting:j.element})}}else{if(j.selecting){if(i.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",i,{unselecting:j.element})}}if(j.selected){if(!i.metaKey&&!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",i,{unselecting:j.element})}}}});return false},_mouseStop:function(d){var b=this;this.dragged=false;var c=this.options;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;b._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;b._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}});a.extend(a.ui.selectable,{version:"1.8"})})(jQuery);(function(a){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}return this},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;(g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt));this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions();return this},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var p=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];var l=this._connectWith();if(l){for(var e=l.length-1;e>=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d<n;d++){var o=a(c[d]);o.data("sortable-item",k);h.push({item:o,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}return this},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(b){var d=null,k=null;for(var f=this.containers.length-1;f>=0;f--){if(a.ui.contains(this.currentItem[0],this.containers[f].element[0])){continue}if(this._intersectsWith(this.containers[f].containerCache)){if(d&&a.ui.contains(this.containers[f].element[0],d.element[0])){continue}d=this.containers[f];k=f}else{if(this.containers[f].containerCache.over){this.containers[f]._trigger("out",b,this._uiHash(this));this.containers[f].containerCache.over=0}}}if(!d){return}if(this.containers.length===1){this.containers[k]._trigger("over",b,this._uiHash(this));this.containers[k].containerCache.over=1}else{if(this.currentContainer!=this.containers[k]){var h=10000;var g=null;var c=this.positionAbs[this.containers[k].floating?"left":"top"];for(var e=this.items.length-1;e>=0;e--){if(!a.ui.contains(this.containers[k].element[0],this.items[e].item[0])){continue}var l=this.items[e][this.containers[k].floating?"left":"top"];if(Math.abs(l-c)<h){h=Math.abs(l-c);g=this.items[e]}}if(!g&&!this.options.dropOnEmpty){return}this.currentContainer=this.containers[k];g?this._rearrange(b,g,null,true):this._rearrange(b,null,this.containers[k].element,true);this._trigger("change",b,this._uiHash());this.containers[k]._trigger("change",b,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[k]._trigger("over",b,this._uiHash(this));this.containers[k].containerCache.over=1}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort&&this.currentItem[0].parentNode){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.Widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}});a.extend(a.ui.sortable,{version:"1.8"})})(jQuery);jQuery.effects||(function(g){g.effects={};g.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(l,k){g.fx.step[k]=function(m){if(!m.colorInit){m.start=j(m.elem,k);m.end=i(m.end);m.colorInit=true}m.elem.style[k]="rgb("+Math.max(Math.min(parseInt((m.pos*(m.end[0]-m.start[0]))+m.start[0],10),255),0)+","+Math.max(Math.min(parseInt((m.pos*(m.end[1]-m.start[1]))+m.start[1],10),255),0)+","+Math.max(Math.min(parseInt((m.pos*(m.end[2]-m.start[2]))+m.start[2],10),255),0)+")"}});function i(l){var k;if(l&&l.constructor==Array&&l.length==3){return l}if(k=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(l)){return[parseInt(k[1],10),parseInt(k[2],10),parseInt(k[3],10)]}if(k=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(l)){return[parseFloat(k[1])*2.55,parseFloat(k[2])*2.55,parseFloat(k[3])*2.55]}if(k=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(l)){return[parseInt(k[1],16),parseInt(k[2],16),parseInt(k[3],16)]}if(k=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(l)){return[parseInt(k[1]+k[1],16),parseInt(k[2]+k[2],16),parseInt(k[3]+k[3],16)]}if(k=/rgba\(0, 0, 0, 0\)/.exec(l)){return a.transparent}return a[g.trim(l).toLowerCase()]}function j(m,k){var l;do{l=g.curCSS(m,k);if(l!=""&&l!="transparent"||g.nodeName(m,"body")){break}k="backgroundColor"}while(m=m.parentNode);return i(l)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};var e=["add","remove","toggle"],c={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function f(){var n=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,o={},l,m;if(n&&n.length&&n[0]&&n[n[0]]){var k=n.length;while(k--){l=n[k];if(typeof n[l]=="string"){m=l.replace(/\-(\w)/g,function(p,q){return q.toUpperCase()});o[m]=n[l]}}}else{for(l in n){if(typeof n[l]==="string"){o[l]=n[l]}}}return o}function b(l){var k,m;for(k in l){m=l[k];if(m==null||g.isFunction(m)||k in c||(/scrollbar/).test(k)||(!(/color/i).test(k)&&isNaN(parseFloat(m)))){delete l[k]}}return l}function h(k,m){var n={_:0},l;for(l in m){if(k[l]!=m[l]){n[l]=m[l]}}return n}g.effects.animateClass=function(k,l,n,m){if(g.isFunction(n)){m=n;n=null}return this.each(function(){var r=g(this),o=r.attr("style")||" ",s=b(f.call(this)),q,p=r.attr("className");g.each(e,function(u,v){if(k[v]){r[v+"Class"](k[v])}});q=b(f.call(this));r.attr("className",p);r.animate(h(s,q),l,n,function(){g.each(e,function(u,v){if(k[v]){r[v+"Class"](k[v])}});if(typeof r.attr("style")=="object"){r.attr("style").cssText="";r.attr("style").cssText=o}else{r.attr("style",o)}if(m){m.apply(this,arguments)}})})};g.fn.extend({_addClass:g.fn.addClass,addClass:function(l,k,n,m){return k?g.effects.animateClass.apply(this,[{add:l},k,n,m]):this._addClass(l)},_removeClass:g.fn.removeClass,removeClass:function(l,k,n,m){return k?g.effects.animateClass.apply(this,[{remove:l},k,n,m]):this._removeClass(l)},_toggleClass:g.fn.toggleClass,toggleClass:function(m,l,k,o,n){if(typeof l=="boolean"||l===undefined){if(!k){return this._toggleClass(m,l)}else{return g.effects.animateClass.apply(this,[(l?{add:m}:{remove:m}),k,o,n])}}else{return g.effects.animateClass.apply(this,[{toggle:m},l,k,o])}},switchClass:function(k,m,l,o,n){return g.effects.animateClass.apply(this,[{add:m,remove:k},l,o,n])}});g.extend(g.effects,{version:"1.8",save:function(l,m){for(var k=0;k<m.length;k++){if(m[k]!==null){l.data("ec.storage."+m[k],l[0].style[m[k]])}}},restore:function(l,m){for(var k=0;k<m.length;k++){if(m[k]!==null){l.css(m[k],l.data("ec.storage."+m[k]))}}},setMode:function(k,l){if(l=="toggle"){l=k.is(":hidden")?"show":"hide"}return l},getBaseline:function(l,m){var n,k;switch(l[0]){case"top":n=0;break;case"middle":n=0.5;break;case"bottom":n=1;break;default:n=l[0]/m.height}switch(l[1]){case"left":k=0;break;case"center":k=0.5;break;case"right":k=1;break;default:k=l[1]/m.width}return{x:k,y:n}},createWrapper:function(k){if(k.parent().is(".ui-effects-wrapper")){return k.parent()}var l={width:k.outerWidth(true),height:k.outerHeight(true),"float":k.css("float")},m=g("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});k.wrap(m);m=k.parent();if(k.css("position")=="static"){m.css({position:"relative"});k.css({position:"relative"})}else{g.extend(l,{position:k.css("position"),zIndex:k.css("z-index")});g.each(["top","left","bottom","right"],function(n,o){l[o]=k.css(o);if(isNaN(parseInt(l[o],10))){l[o]="auto"}});k.css({position:"relative",top:0,left:0})}return m.css(l).show()},removeWrapper:function(k){if(k.parent().is(".ui-effects-wrapper")){return k.parent().replaceWith(k)}return k},setTransition:function(l,n,k,m){m=m||{};g.each(n,function(p,o){unit=l.cssUnit(o);if(unit[0]>0){m[o]=unit[0]*k+unit[1]}});return m}});function d(l,k,m,n){if(typeof l=="object"){n=k;m=null;k=l;l=k.effect}if(g.isFunction(k)){n=k;m=null;k={}}if(g.isFunction(m)){n=m;m=null}if(typeof k=="number"||g.fx.speeds[k]){n=m;m=k;k={}}k=k||{};m=m||k.duration;m=g.fx.off?0:typeof m=="number"?m:g.fx.speeds[m]||g.fx.speeds._default;n=n||k.complete;return[l,k,m,n]}g.fn.extend({effect:function(n,m,p,q){var l=d.apply(this,arguments),o={options:l[1],duration:l[2],callback:l[3]},k=g.effects[n];return k&&!g.fx.off?k.call(this,o):this},_show:g.fn.show,show:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]){return this._show.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="show";return this.effect.apply(this,k)}},_hide:g.fn.hide,hide:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]){return this._hide.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:g.fn.toggle,toggle:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]||typeof l=="boolean"||g.isFunction(l)){return this.__toggle.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(k){var l=this.css(k),m=[];g.each(["em","px","%","pt"],function(n,o){if(l.indexOf(o)>0){m=[parseFloat(l),o]}});return m}});g.easing.jswing=g.easing.swing;g.extend(g.easing,{def:"easeOutQuad",swing:function(l,m,k,o,n){return g.easing[g.easing.def](l,m,k,o,n)},easeInQuad:function(l,m,k,o,n){return o*(m/=n)*m+k},easeOutQuad:function(l,m,k,o,n){return -o*(m/=n)*(m-2)+k},easeInOutQuad:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m+k}return -o/2*((--m)*(m-2)-1)+k},easeInCubic:function(l,m,k,o,n){return o*(m/=n)*m*m+k},easeOutCubic:function(l,m,k,o,n){return o*((m=m/n-1)*m*m+1)+k},easeInOutCubic:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m+k}return o/2*((m-=2)*m*m+2)+k},easeInQuart:function(l,m,k,o,n){return o*(m/=n)*m*m*m+k},easeOutQuart:function(l,m,k,o,n){return -o*((m=m/n-1)*m*m*m-1)+k},easeInOutQuart:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m*m+k}return -o/2*((m-=2)*m*m*m-2)+k},easeInQuint:function(l,m,k,o,n){return o*(m/=n)*m*m*m*m+k},easeOutQuint:function(l,m,k,o,n){return o*((m=m/n-1)*m*m*m*m+1)+k},easeInOutQuint:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m*m*m+k}return o/2*((m-=2)*m*m*m*m+2)+k},easeInSine:function(l,m,k,o,n){return -o*Math.cos(m/n*(Math.PI/2))+o+k},easeOutSine:function(l,m,k,o,n){return o*Math.sin(m/n*(Math.PI/2))+k},easeInOutSine:function(l,m,k,o,n){return -o/2*(Math.cos(Math.PI*m/n)-1)+k},easeInExpo:function(l,m,k,o,n){return(m==0)?k:o*Math.pow(2,10*(m/n-1))+k},easeOutExpo:function(l,m,k,o,n){return(m==n)?k+o:o*(-Math.pow(2,-10*m/n)+1)+k},easeInOutExpo:function(l,m,k,o,n){if(m==0){return k}if(m==n){return k+o}if((m/=n/2)<1){return o/2*Math.pow(2,10*(m-1))+k}return o/2*(-Math.pow(2,-10*--m)+2)+k},easeInCirc:function(l,m,k,o,n){return -o*(Math.sqrt(1-(m/=n)*m)-1)+k},easeOutCirc:function(l,m,k,o,n){return o*Math.sqrt(1-(m=m/n-1)*m)+k},easeInOutCirc:function(l,m,k,o,n){if((m/=n/2)<1){return -o/2*(Math.sqrt(1-m*m)-1)+k}return o/2*(Math.sqrt(1-(m-=2)*m)+1)+k},easeInElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r)==1){return k+u}if(!q){q=r*0.3}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}return -(m*Math.pow(2,10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q))+k},easeOutElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r)==1){return k+u}if(!q){q=r*0.3}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}return m*Math.pow(2,-10*n)*Math.sin((n*r-o)*(2*Math.PI)/q)+u+k},easeInOutElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r/2)==2){return k+u}if(!q){q=r*(0.3*1.5)}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}if(n<1){return -0.5*(m*Math.pow(2,10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q))+k}return m*Math.pow(2,-10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q)*0.5+u+k},easeInBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}return p*(m/=o)*m*((n+1)*m-n)+k},easeOutBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}return p*((m=m/o-1)*m*((n+1)*m+n)+1)+k},easeInOutBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}if((m/=o/2)<1){return p/2*(m*m*(((n*=(1.525))+1)*m-n))+k}return p/2*((m-=2)*m*(((n*=(1.525))+1)*m+n)+2)+k},easeInBounce:function(l,m,k,o,n){return o-g.easing.easeOutBounce(l,n-m,0,o,n)+k},easeOutBounce:function(l,m,k,o,n){if((m/=n)<(1/2.75)){return o*(7.5625*m*m)+k}else{if(m<(2/2.75)){return o*(7.5625*(m-=(1.5/2.75))*m+0.75)+k}else{if(m<(2.5/2.75)){return o*(7.5625*(m-=(2.25/2.75))*m+0.9375)+k}else{return o*(7.5625*(m-=(2.625/2.75))*m+0.984375)+k}}}},easeInOutBounce:function(l,m,k,o,n){if(m<n/2){return g.easing.easeInBounce(l,m*2,0,o,n)*0.5+k}return g.easing.easeOutBounce(l,m*2-n,0,o,n)*0.5+o*0.5+k}})})(jQuery);(function(a){a.effects.blind=function(b){return this.queue(function(){var d=a(this),c=["position","top","left"];var h=a.effects.setMode(d,b.options.mode||"hide");var g=b.options.direction||"vertical";a.effects.save(d,c);d.show();var j=a.effects.createWrapper(d).css({overflow:"hidden"});var e=(g=="vertical")?"height":"width";var i=(g=="vertical")?j.height():j.width();if(h=="show"){j.css(e,0)}var f={};f[e]=h=="show"?i:0;j.animate(f,b.duration,b.options.easing,function(){if(h=="hide"){d.hide()}a.effects.restore(d,c);a.effects.removeWrapper(d);if(b.callback){b.callback.apply(d[0],arguments)}d.dequeue()})})}})(jQuery);(function(a){a.effects.bounce=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"up";var c=b.options.distance||20;var d=b.options.times||5;var g=b.duration||250;if(/show|hide/.test(k)){l.push("opacity")}a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var c=b.options.distance||(f=="top"?e.outerHeight({margin:true})/3:e.outerWidth({margin:true})/3);if(k=="show"){e.css("opacity",0).css(f,p=="pos"?-c:c)}if(k=="hide"){c=c/(d*2)}if(k!="hide"){d--}if(k=="show"){var h={opacity:1};h[f]=(p=="pos"?"+=":"-=")+c;e.animate(h,g/2,b.options.easing);c=c/2;d--}for(var j=0;j<d;j++){var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing);c=(k=="hide")?c*2:c/2}if(k=="hide"){var h={opacity:0};h[f]=(p=="pos"?"-=":"+=")+c;e.animate(h,g/2,b.options.easing,function(){e.hide();a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}else{var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);(function(a){a.effects.clip=function(b){return this.queue(function(){var f=a(this),j=["position","top","left","height","width"];var i=a.effects.setMode(f,b.options.mode||"hide");var k=b.options.direction||"vertical";a.effects.save(f,j);f.show();var c=a.effects.createWrapper(f).css({overflow:"hidden"});var e=f[0].tagName=="IMG"?c:f;var g={size:(k=="vertical")?"height":"width",position:(k=="vertical")?"top":"left"};var d=(k=="vertical")?e.height():e.width();if(i=="show"){e.css(g.size,0);e.css(g.position,d/2)}var h={};h[g.size]=i=="show"?d:0;h[g.position]=i=="show"?0:d/2;e.animate(h,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){f.hide()}a.effects.restore(f,j);a.effects.removeWrapper(f);if(b.callback){b.callback.apply(f[0],arguments)}f.dequeue()}})})}})(jQuery);(function(a){a.effects.drop=function(b){return this.queue(function(){var e=a(this),d=["position","top","left","opacity"];var i=a.effects.setMode(e,b.options.mode||"hide");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e);var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true})/2:e.outerWidth({margin:true})/2);if(i=="show"){e.css("opacity",0).css(f,c=="pos"?-j:j)}var g={opacity:i=="show"?1:0};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.explode=function(b){return this.queue(function(){var k=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;var e=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?(a(this).is(":visible")?"hide":"show"):b.options.mode;var h=a(this).show().css("visibility","hidden");var l=h.offset();l.top-=parseInt(h.css("marginTop"),10)||0;l.left-=parseInt(h.css("marginLeft"),10)||0;var g=h.outerWidth(true);var c=h.outerHeight(true);for(var f=0;f<k;f++){for(var d=0;d<e;d++){h.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-d*(g/e),top:-f*(c/k)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/e,height:c/k,left:l.left+d*(g/e)+(b.options.mode=="show"?(d-Math.floor(e/2))*(g/e):0),top:l.top+f*(c/k)+(b.options.mode=="show"?(f-Math.floor(k/2))*(c/k):0),opacity:b.options.mode=="show"?0:1}).animate({left:l.left+d*(g/e)+(b.options.mode=="show"?0:(d-Math.floor(e/2))*(g/e)),top:l.top+f*(c/k)+(b.options.mode=="show"?0:(f-Math.floor(k/2))*(c/k)),opacity:b.options.mode=="show"?1:0},b.duration||500)}}setTimeout(function(){b.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();if(b.callback){b.callback.apply(h[0])}h.dequeue();a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);(function(a){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){(b.callback&&b.callback.apply(this,arguments));c.dequeue()}})})}})(jQuery);(function(a){a.effects.fold=function(b){return this.queue(function(){var e=a(this),k=["position","top","left"];var h=a.effects.setMode(e,b.options.mode||"hide");var o=b.options.size||15;var n=!(!b.options.horizFirst);var g=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(e,k);e.show();var d=a.effects.createWrapper(e).css({overflow:"hidden"});var i=((h=="show")!=n);var f=i?["width","height"]:["height","width"];var c=i?[d.width(),d.height()]:[d.height(),d.width()];var j=/([0-9]+)%/.exec(o);if(j){o=parseInt(j[1],10)/100*c[h=="hide"?0:1]}if(h=="show"){d.css(n?{height:0,width:o}:{height:o,width:0})}var m={},l={};m[f[0]]=h=="show"?c[0]:o;l[f[1]]=h=="show"?c[1]:0;d.animate(m,g,b.options.easing).animate(l,g,b.options.easing,function(){if(h=="hide"){e.hide()}a.effects.restore(e,k);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(e[0],arguments)}e.dequeue()})})}})(jQuery);(function(a){a.effects.highlight=function(b){return this.queue(function(){var d=a(this),c=["backgroundImage","backgroundColor","opacity"],f=a.effects.setMode(d,b.options.mode||"show"),e={backgroundColor:d.css("backgroundColor")};if(f=="hide"){e.opacity=0}a.effects.save(d,c);d.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(e,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){(f=="hide"&&d.hide());a.effects.restore(d,c);(f=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"));(b.callback&&b.callback.apply(this,arguments));d.dequeue()}})})}})(jQuery);(function(a){a.effects.pulsate=function(b){return this.queue(function(){var d=a(this),e=a.effects.setMode(d,b.options.mode||"show");times=((b.options.times||5)*2)-1;duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=d.is(":visible"),animateTo=0;if(!isVisible){d.css("opacity",0).show();animateTo=1}if((e=="hide"&&isVisible)||(e=="show"&&!isVisible)){times--}for(var c=0;c<times;c++){d.animate({opacity:animateTo},duration,b.options.easing);animateTo=(animateTo+1)%2}d.animate({opacity:animateTo},duration,b.options.easing,function(){if(animateTo==0){d.hide()}(b.callback&&b.callback.apply(this,arguments))});d.queue("fx",function(){d.dequeue()}).dequeue()})}})(jQuery);(function(a){a.effects.puff=function(b){return this.queue(function(){var f=a(this),g=a.effects.setMode(f,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,d=e/100,c={height:f.height(),width:f.width()};a.extend(b.options,{fade:true,mode:g,percent:g=="hide"?e:100,from:g=="hide"?c:{height:c.height*d,width:c.width*d}});f.effect("scale",b.options,b.duration,b.callback);f.dequeue()})};a.effects.scale=function(b){return this.queue(function(){var g=a(this);var d=a.extend(true,{},b.options);var j=a.effects.setMode(g,b.options.mode||"effect");var h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:(j=="hide"?0:100));var i=b.options.direction||"both";var c=b.options.origin;if(j!="effect"){d.origin=c||["middle","center"];d.restore=true}var f={height:g.height(),width:g.width()};g.from=b.options.from||(j=="show"?{height:0,width:0}:f);var e={y:i!="horizontal"?(h/100):1,x:i!="vertical"?(h/100):1};g.to={height:f.height*e.y,width:f.width*e.x};if(b.options.fade){if(j=="show"){g.from.opacity=0;g.to.opacity=1}if(j=="hide"){g.from.opacity=1;g.to.opacity=0}}d.from=g.from;d.to=g.to;d.mode=j;g.effect("size",d,b.duration,b.callback);g.dequeue()})};a.effects.size=function(b){return this.queue(function(){var c=a(this),n=["position","top","left","width","height","overflow","opacity"];var m=["position","top","left","overflow","opacity"];var j=["width","height","overflow"];var p=["fontSize"];var k=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"];var f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"];var g=a.effects.setMode(c,b.options.mode||"effect");var i=b.options.restore||false;var e=b.options.scale||"both";var o=b.options.origin;var d={height:c.height(),width:c.width()};c.from=b.options.from||d;c.to=b.options.to||d;if(o){var h=a.effects.getBaseline(o,d);c.from.top=(d.height-c.from.height)*h.y;c.from.left=(d.width-c.from.width)*h.x;c.to.top=(d.height-c.to.height)*h.y;c.to.left=(d.width-c.to.width)*h.x}var l={from:{y:c.from.height/d.height,x:c.from.width/d.width},to:{y:c.to.height/d.height,x:c.to.width/d.width}};if(e=="box"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(k);c.from=a.effects.setTransition(c,k,l.from.y,c.from);c.to=a.effects.setTransition(c,k,l.to.y,c.to)}if(l.from.x!=l.to.x){n=n.concat(f);c.from=a.effects.setTransition(c,f,l.from.x,c.from);c.to=a.effects.setTransition(c,f,l.to.x,c.to)}}if(e=="content"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(p);c.from=a.effects.setTransition(c,p,l.from.y,c.from);c.to=a.effects.setTransition(c,p,l.to.y,c.to)}}a.effects.save(c,i?n:m);c.show();a.effects.createWrapper(c);c.css("overflow","hidden").css(c.from);if(e=="content"||e=="both"){k=k.concat(["marginTop","marginBottom"]).concat(p);f=f.concat(["marginLeft","marginRight"]);j=n.concat(k).concat(f);c.find("*[width]").each(function(){child=a(this);if(i){a.effects.save(child,j)}var q={height:child.height(),width:child.width()};child.from={height:q.height*l.from.y,width:q.width*l.from.x};child.to={height:q.height*l.to.y,width:q.width*l.to.x};if(l.from.y!=l.to.y){child.from=a.effects.setTransition(child,k,l.from.y,child.from);child.to=a.effects.setTransition(child,k,l.to.y,child.to)}if(l.from.x!=l.to.x){child.from=a.effects.setTransition(child,f,l.from.x,child.from);child.to=a.effects.setTransition(child,f,l.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){if(i){a.effects.restore(child,j)}})})}c.animate(c.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(c.to.opacity===0){c.css("opacity",c.from.opacity)}if(g=="hide"){c.hide()}a.effects.restore(c,i?n:m);a.effects.removeWrapper(c);if(b.callback){b.callback.apply(this,arguments)}c.dequeue()}})})}})(jQuery);(function(a){a.effects.shake=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"left";var c=b.options.distance||20;var d=b.options.times||3;var g=b.duration||b.options.duration||140;a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var h={},o={},m={};h[f]=(p=="pos"?"-=":"+=")+c;o[f]=(p=="pos"?"+=":"-=")+c*2;m[f]=(p=="pos"?"-=":"+=")+c*2;e.animate(h,g,b.options.easing);for(var j=1;j<d;j++){e.animate(o,g,b.options.easing).animate(m,g,b.options.easing)}e.animate(o,g,b.options.easing).animate(h,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}});e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);(function(a){a.effects.slide=function(b){return this.queue(function(){var e=a(this),d=["position","top","left"];var i=a.effects.setMode(e,b.options.mode||"show");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e).css({overflow:"hidden"});var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true}):e.outerWidth({margin:true}));if(i=="show"){e.css(f,c=="pos"?-j:j)}var g={};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);(function(a){a.effects.transfer=function(b){return this.queue(function(){var f=a(this),h=a(b.options.to),e=h.offset(),g={top:e.top,left:e.left,height:h.innerHeight(),width:h.innerWidth()},d=f.offset(),c=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);(function(a){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},_create:function(){var d=this.options,b=this;this.running=0;this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL"){this.element.children("li").addClass("ui-accordion-li-fix")}this.headers=this.element.find(d.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){a(this).removeClass("ui-state-focus")});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(d.navigation){var c=this.element.find("a").filter(d.navigationFilter);if(c.length){var e=c.closest(".ui-accordion-header");if(e.length){this.active=e}else{this.active=c.closest(".ui-accordion-content").prev()}}}this.active=this._findActive(this.active||d.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active");this._createIcons();if(a.browser.msie){this.element.find("a").css("zoom","1")}this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(f){return b._keydown(f)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();if(!this.active.length){this.headers.eq(0).attr("tabIndex","0")}else{this.active.attr("aria-expanded","true").attr("tabIndex","0")}if(!a.browser.safari){this.headers.find("a").attr("tabIndex","-1")}if(d.event){this.headers.bind((d.event)+".accordion",function(f){b._clickHandler.call(b,f,this);f.preventDefault()})}},_createIcons:function(){var b=this.options;if(b.icons){a("<span/>").addClass("ui-icon "+b.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var c=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");this.headers.find("a").removeAttr("tabindex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(c.autoHeight||c.fillHeight){b.css("height","")}return this},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b=="active"){this.activate(c)}if(b=="icons"){this._destroyIcons();if(c){this._createIcons()}}},_keydown:function(e){var g=this.options,f=a.ui.keyCode;if(g.disabled||e.altKey||e.ctrlKey){return}var d=this.headers.length;var b=this.headers.index(e.target);var c=false;switch(e.keyCode){case f.RIGHT:case f.DOWN:c=this.headers[(b+1)%d];break;case f.LEFT:case f.UP:c=this.headers[(b-1+d)%d];break;case f.SPACE:case f.ENTER:this._clickHandler({target:e.target},e.target);e.preventDefault()}if(c){a(e.target).attr("tabIndex","-1");a(c).attr("tabIndex","0");c.focus();return false}return true},resize:function(){var d=this.options,c;if(d.fillSpace){if(a.browser.msie){var b=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();if(a.browser.msie){this.element.parent().css("overflow",b)}this.headers.each(function(){c-=a(this).outerHeight(true)});this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else{if(d.autoHeight){c=0;this.headers.next().each(function(){c=Math.max(c,a(this).height())}).height(c)}}return this},activate:function(b){this.options.active=b;var c=this._findActive(b)[0];this._clickHandler({target:c},c);return this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,f){var d=this.options;if(d.disabled){return}if(!b.target){if(!d.collapsible){return}this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var h=this.active.next(),e={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:h},c=(this.active=a([]));this._toggle(c,h,e);return}var g=a(b.currentTarget||f);var i=g[0]==this.active[0];d.active=d.collapsible&&i?false:a(".ui-accordion-header",this.element).index(g);if(this.running||(!d.collapsible&&i)){return}this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!i){g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);g.next().addClass("ui-accordion-content-active")}var c=g.next(),h=this.active.next(),e={options:d,newHeader:i&&d.collapsible?a([]):g,oldHeader:this.active,newContent:i&&d.collapsible?a([]):c,oldContent:h},j=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=i?a([]):g;this._toggle(c,h,e,i,j);return},_toggle:function(b,i,g,j,k){var d=this.options,m=this;this.toShow=b;this.toHide=i;this.data=g;var c=function(){if(!m){return}return m._completed.apply(m,arguments)};this._trigger("changestart",null,this.data);this.running=i.size()===0?b.size():i.size();if(d.animated){var f={};if(d.collapsible&&j){f={toShow:a([]),toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}else{f={toShow:b,toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}if(!d.proxied){d.proxied=d.animated}if(!d.proxiedDuration){d.proxiedDuration=d.duration}d.animated=a.isFunction(d.proxied)?d.proxied(f):d.proxied;d.duration=a.isFunction(d.proxiedDuration)?d.proxiedDuration(f):d.proxiedDuration;var l=a.ui.accordion.animations,e=d.duration,h=d.animated;if(h&&!l[h]&&!a.easing[h]){h="slide"}if(!l[h]){l[h]=function(n){this.slide(n,{easing:h,duration:e||700})}}l[h](f)}else{if(d.collapsible&&j){b.toggle()}else{i.hide();b.show()}c(true)}i.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();b.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(b){var c=this.options;this.running=b?0:--this.running;if(this.running){return}if(c.clearStyle){this.toShow.add(this.toHide).css({height:"",overflow:""})}this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}});a.extend(a.ui.accordion,{version:"1.8",animations:{slide:function(j,h){j=a.extend({easing:"swing",duration:300},j,h);if(!j.toHide.size()){j.toShow.animate({height:"show"},j);return}if(!j.toShow.size()){j.toHide.animate({height:"hide"},j);return}var c=j.toShow.css("overflow"),g=0,d={},f={},e=["height","paddingTop","paddingBottom"],b;var i=j.toShow;b=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));a.each(e,function(k,m){f[m]="hide";var l=(""+a.css(j.toShow[0],m)).match(/^([\d+-.]+)(.*)$/);d[m]={value:l[1],unit:l[2]||"px"}});j.toShow.css({height:0,overflow:"hidden"}).show();j.toHide.filter(":hidden").each(j.complete).end().filter(":visible").animate(f,{step:function(k,l){if(l.prop=="height"){g=(l.end-l.start===0)?0:(l.now-l.start)/(l.end-l.start)}j.toShow[0].style[l.prop]=(g*d[l.prop].value)+d[l.prop].unit},duration:j.duration,easing:j.easing,complete:function(){if(!j.autoHeight){j.toShow.css("height","")}j.toShow.css("width",b);j.toShow.css({overflow:c});j.complete()}})},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1000:200})}}})})(jQuery);(function(a){a.widget("ui.autocomplete",{options:{minLength:1,delay:300},_create:function(){var b=this,c=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(d){var e=a.ui.keyCode;switch(d.keyCode){case e.PAGE_UP:b._move("previousPage",d);break;case e.PAGE_DOWN:b._move("nextPage",d);break;case e.UP:b._move("previous",d);d.preventDefault();break;case e.DOWN:b._move("next",d);d.preventDefault();break;case e.ENTER:if(b.menu.active){d.preventDefault()}case e.TAB:if(!b.menu.active){return}b.menu.select();break;case e.ESCAPE:b.element.val(b.term);b.close(d);break;case e.SHIFT:case e.CONTROL:case 18:break;default:clearTimeout(b.searching);b.searching=setTimeout(function(){b.search(null,d)},b.options.delay);break}}).bind("focus.autocomplete",function(){b.previous=b.element.val()}).bind("blur.autocomplete",function(d){clearTimeout(b.searching);b.closing=setTimeout(function(){b.close(d)},150)});this._initSource();this.response=function(){return b._response.apply(b,arguments)};this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo("body",c).menu({focus:function(e,f){var d=f.item.data("item.autocomplete");if(false!==b._trigger("focus",null,{item:d})){b.element.val(d.value)}},selected:function(e,f){var d=f.item.data("item.autocomplete");if(false!==b._trigger("select",e,{item:d})){b.element.val(d.value)}b.close(e);b.previous=b.element.val();if(b.element[0]!==c.activeElement){b.element.focus()}},blur:function(d,e){if(b.menu.element.is(":visible")){b.element.val(b.term)}}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");if(a.fn.bgiframe){this.menu.element.bgiframe()}},destroy:function(){this.element.removeClass("ui-autocomplete-input ui-widget ui-widget-content").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();a.Widget.prototype.destroy.call(this)},_setOption:function(b){a.Widget.prototype._setOption.apply(this,arguments);if(b==="source"){this._initSource()}},_initSource:function(){var c,b;if(a.isArray(this.options.source)){c=this.options.source;this.source=function(e,d){var f=new RegExp(a.ui.autocomplete.escapeRegex(e.term),"i");d(a.grep(c,function(g){return f.test(g.label||g.value||g)}))}}else{if(typeof this.options.source==="string"){b=this.options.source;this.source=function(e,d){a.getJSON(b,e,d)}}else{this.source=this.options.source}}},search:function(c,b){c=c!=null?c:this.element.val();if(c.length<this.options.minLength){return this.close(b)}clearTimeout(this.closing);if(this._trigger("search")===false){return}return this._search(c)},_search:function(b){this.term=this.element.addClass("ui-autocomplete-loading").val();this.source({term:b},this.response)},_response:function(b){if(b.length){b=this._normalize(b);this._suggest(b);this._trigger("open")}else{this.close()}this.element.removeClass("ui-autocomplete-loading")},close:function(b){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",b);this.menu.element.hide();this.menu.deactivate()}if(this.previous!==this.element.val()){this._trigger("change",b)}},_normalize:function(b){if(b.length&&b[0].label&&b[0].value){return b}return a.map(b,function(c){if(typeof c==="string"){return{label:c,value:c}}return a.extend({label:c.label||c.value,value:c.value||c.label},c)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1),d,e;this._renderMenu(c,b);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position({my:"left top",at:"left bottom",of:this.element,collision:"none"});d=c.width("").width();e=this.element.width();c.width(Math.max(d,e))},_renderMenu:function(d,c){var b=this;a.each(c,function(e,f){b._renderItem(d,f)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append("<a>"+c.label+"</a>").appendTo(b)},_move:function(c,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(c)||this.menu.last()&&/^next/.test(c)){this.element.val(this.term);this.menu.deactivate();return}this.menu[c]()},widget:function(){return this.menu.element}});a.extend(a.ui.autocomplete,{escapeRegex:function(b){return b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")}})}(jQuery));(function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){c.preventDefault();b.select()});this.refresh()},refresh:function(){var c=this;var b=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");b.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(){c.activate(a(this).parent())}).mouseleave(function(){c.deactivate()})},activate:function(d){this.deactivate();if(this.hasScroll()){var e=d.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),c=this.element.height();if(e<0){this.element.attr("scrollTop",b+e)}else{if(e>c){this.element.attr("scrollTop",b+e-c+d.height())}}}this.active=d.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",null,{item:d})},deactivate:function(){if(!this.active){return}this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null},next:function(){this.move("next","li:first")},previous:function(){this.move("prev","li:last")},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(d,c){if(!this.active){this.activate(this.element.children(c));return}var b=this.active[d]();if(b.length){this.activate(b)}else{this.activate(this.element.children(c))}},nextPage:function(){if(this.hasScroll()){if(!this.active||this.last()){this.activate(this.element.children(":first"));return}var d=this.active.offset().top,c=this.element.height(),b=this.element.children("li").filter(function(){var e=a(this).offset().top-d-c+a(this).height();return e<10&&e>-10});if(!b.length){b=this.element.children(":last")}this.activate(b)}else{this.activate(this.element.children(!this.active||this.last()?":first":":last"))}},previousPage:function(){if(this.hasScroll()){if(!this.active||this.first()){this.activate(this.element.children(":last"));return}var c=this.active.offset().top,b=this.element.height();result=this.element.children("li").filter(function(){var d=a(this).offset().top-c+b-a(this).height();return d<10&&d>-10});if(!result.length){result=this.element.children(":first")}this.activate(result)}else{this.activate(this.element.children(!this.active||this.first()?":last":":first"))}},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(){this._trigger("selected",null,{item:this.active})}})}(jQuery));(function(f){var d,c="ui-button ui-widget ui-state-default ui-corner-all",b="ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only",e=function(g){f(":ui-button",g.target.form).each(function(){var h=f(this).data("button");setTimeout(function(){h.refresh()},1)})},a=function(h){var g=h.name,i=h.form,j=f([]);if(g){if(i){j=f(i).find("[name='"+g+"']")}else{j=f("[name='"+g+"']",h.ownerDocument).filter(function(){return !this.form})}}return j};f.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",e);this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var g=this,i=this.options,j=this.type==="checkbox"||this.type==="radio",k="ui-state-hover"+(!j?" ui-state-active":""),h="ui-state-focus";if(i.label===null){i.label=this.buttonElement.html()}if(this.element.is(":disabled")){i.disabled=true}this.buttonElement.addClass(c).attr("role","button").bind("mouseenter.button",function(){if(i.disabled){return}f(this).addClass("ui-state-hover");if(this===d){f(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){if(i.disabled){return}f(this).removeClass(k)}).bind("focus.button",function(){f(this).addClass(h)}).bind("blur.button",function(){f(this).removeClass(h)});if(j){this.element.bind("change.button",function(){g.refresh()})}if(this.type==="checkbox"){this.buttonElement.bind("click.button",function(){if(i.disabled){return false}f(this).toggleClass("ui-state-active");g.buttonElement.attr("aria-pressed",g.element[0].checked)})}else{if(this.type==="radio"){this.buttonElement.bind("click.button",function(){if(i.disabled){return false}f(this).addClass("ui-state-active");g.buttonElement.attr("aria-pressed",true);var l=g.element[0];a(l).not(l).map(function(){return f(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)})}else{this.buttonElement.bind("mousedown.button",function(){if(i.disabled){return false}f(this).addClass("ui-state-active");d=this;f(document).one("mouseup",function(){d=null})}).bind("mouseup.button",function(){if(i.disabled){return false}f(this).removeClass("ui-state-active")}).bind("keydown.button",function(l){if(i.disabled){return false}if(l.keyCode==f.ui.keyCode.SPACE||l.keyCode==f.ui.keyCode.ENTER){f(this).addClass("ui-state-active")}}).bind("keyup.button",function(){f(this).removeClass("ui-state-active")});if(this.buttonElement.is("a")){this.buttonElement.keyup(function(l){if(l.keyCode===f.ui.keyCode.SPACE){f(this).click()}})}}}this._setOption("disabled",i.disabled)},_determineButtonType:function(){if(this.element.is(":checkbox")){this.type="checkbox"}else{if(this.element.is(":radio")){this.type="radio"}else{if(this.element.is("input")){this.type="input"}else{this.type="button"}}}if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var g=this.element.is(":checked");if(g){this.buttonElement.addClass("ui-state-active")}this.buttonElement.attr("aria-pressed",g)}else{this.buttonElement=this.element}},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass(c+" "+b).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());if(!this.hasTitle){this.buttonElement.removeAttr("title")}f.Widget.prototype.destroy.call(this)},_setOption:function(g,h){f.Widget.prototype._setOption.apply(this,arguments);if(g==="disabled"){if(h){this.element.attr("disabled",true)}else{this.element.removeAttr("disabled")}}this._resetButton()},refresh:function(){var g=this.element.is(":disabled");if(g!==this.options.disabled){this._setOption("disabled",g)}if(this.type==="radio"){a(this.element[0]).each(function(){if(f(this).is(":checked")){f(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true)}else{f(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)}})}else{if(this.type==="checkbox"){if(this.element.is(":checked")){this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true)}else{this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)}}}},_resetButton:function(){if(this.type==="input"){if(this.options.label){this.element.val(this.options.label)}return}var j=this.buttonElement,i=f("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(j.empty()).text(),h=this.options.icons,g=h.primary&&h.secondary;if(h.primary||h.secondary){j.addClass("ui-button-text-icon"+(g?"s":""));if(h.primary){j.prepend("<span class='ui-button-icon-primary ui-icon "+h.primary+"'></span>")}if(h.secondary){j.append("<span class='ui-button-icon-secondary ui-icon "+h.secondary+"'></span>")}if(!this.options.text){j.addClass(g?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon");if(!this.hasTitle){j.attr("title",i)}}}else{j.addClass("ui-button-text-only")}}});f.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(g,h){if(g==="disabled"){this.buttons.button("option",g,h)}f.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return f(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return f(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");f.Widget.prototype.destroy.call(this)}})}(jQuery));(function($){$.extend($.ui,{datepicker:{version:"1.8"}});var PROP_NAME="datepicker";var dpuuid=new Date().getTime();function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"_default",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}this._attachments(input,inst);input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});this._autoSize(inst);$.data(target,PROP_NAME,inst)},_attachments:function(input,inst){var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(inst.append){inst.append.remove()}if(appendText){inst.append=$('<span class="'+this._appendClass+'">'+appendText+"</span>");input[isRTL?"before":"after"](inst.append)}input.unbind("focus",this._showDatepicker);if(inst.trigger){inst.trigger.remove()}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==input[0]){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(input[0])}return false})}},_autoSize:function(inst){if(this._get(inst,"autoSize")&&!inst.inline){var date=new Date(2009,12-1,20);var dateFormat=this._get(inst,"dateFormat");if(dateFormat.match(/[DM]/)){var findMax=function(names){var max=0;var maxI=0;for(var i=0;i<names.length;i++){if(names[i].length>max){max=names[i].length;maxI=i}}return maxI};date.setMonth(findMax(this._get(inst,(dateFormat.match(/MM/)?"monthNames":"monthNamesShort"))));date.setDate(findMax(this._get(inst,(dateFormat.match(/DD/)?"dayNames":"dayNamesShort")))+20-date.getDay())}inst.input.attr("size",this._formatDate(inst,date).length)}},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst),true);this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,date,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});date=(date&&date.constructor==Date?this._formatDate(inst,date):date);this._dialogInput.val(date);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=document.documentElement.clientWidth;var browserHeight=document.documentElement.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",(this._pos[0]+20)+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target){return true}}return false},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var inst=this._getInst(target);if(arguments.length==2&&typeof name=="string"){return(name=="defaults"?$.extend({},$.datepicker._defaults):(inst?(name=="all"?$.extend({},inst.settings):this._get(inst,name)):null))}var settings=name||{};if(typeof name=="string"){settings={};settings[name]=value}if(inst){if(this._curInst==inst){this._hideDatepicker()}var date=this._getDateDatepicker(target,true);extendRemove(inst.settings,settings);this._attachments($(target),inst);this._autoSize(inst);this._setDateDatepicker(target,date);this._updateDatepicker(inst)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date){var inst=this._getInst(target);if(inst){this._setDate(inst,date);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target,noDefault){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst,noDefault)}return(inst?this._getDate(inst):null)},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is(".ui-datepicker-rtl");inst._keyEvent=true;if($.datepicker._datepickerShowing){switch(event.keyCode){case 9:$.datepicker._hideDatepicker();handled=false;break;case 13:var sel=$("td."+$.datepicker._dayOverClass,inst.dpDiv).add($("td."+$.datepicker._currentClass,inst.dpDiv));if(sel[0]){$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0])}else{$.datepicker._hideDatepicker()}return false;break;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput")){var chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat"));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<" "||!chars||chars.indexOf(chr)>-1)}},_doKeyUp:function(event){var inst=$.datepicker._getInst(event.target);if(inst.input.val()!=inst.lastVal){try{var date=$.datepicker.parseDate($.datepicker._get(inst,"dateFormat"),(inst.input?inst.input.val():null),$.datepicker._getFormatConfig(inst));if(date){$.datepicker._setDateFromField(inst);$.datepicker._updateAlternate(inst);$.datepicker._updateDatepicker(inst)}}catch(event){$.datepicker.log(event)}}return true},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);if($.datepicker._curInst&&$.datepicker._curInst!=inst){$.datepicker._curInst.dpDiv.stop(true,true)}var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));inst.lastVal=null;$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim");var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;var borders=$.datepicker._getBorders(inst.dpDiv);inst.dpDiv.find("iframe.ui-datepicker-cover").css({left:-borders[0],top:-borders[1],width:inst.dpDiv.outerWidth(),height:inst.dpDiv.outerHeight()})};inst.dpDiv.zIndex($(input).zIndex()+1);if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim||"show"]((showAnim?duration:null),postProcess)}if(!showAnim||!duration){postProcess()}if(inst.input.is(":visible")&&!inst.input.is(":disabled")){inst.input.focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var self=this;var borders=$.datepicker._getBorders(inst.dpDiv);inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({left:-borders[0],top:-borders[1],width:inst.dpDiv.outerWidth(),height:inst.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst==$.datepicker._curInst&&$.datepicker._datepickerShowing&&inst.input&&inst.input.is(":visible")&&!inst.input.is(":disabled")){inst.input.focus()}},_getBorders:function(elem){var convert=function(value){return{thin:1,medium:2,thick:3}[value]||value};return[parseFloat(convert(elem.css("border-left-width"))),parseFloat(convert(elem.css("border-top-width")))]},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=document.documentElement.clientWidth+$(document).scrollLeft();var viewHeight=document.documentElement.clientHeight+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=Math.min(offset.left,(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0);offset.top-=Math.min(offset.top,(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(dpHeight+inputHeight):0);return offset},_findPos:function(obj){var inst=this._getInst(obj);var isRTL=this._get(inst,"isRTL");while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj[isRTL?"previousSibling":"nextSibling"]}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(this._datepickerShowing){var showAnim=this._get(inst,"showAnim");var duration=this._get(inst,"duration");var postProcess=function(){$.datepicker._tidyDialog(inst);this._curInst=null};if($.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide"))]((showAnim?duration:null),postProcess)}if(!showAnim){postProcess()}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if($target[0].id!=$.datepicker._mainDivId&&$target.parents("#"+$.datepicker._mainDivId).length==0&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker()}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input.focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{this._hideDatepicker();this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input.focus()}this._lastInput=null}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);var dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getTime());checkDate.setDate(checkDate.getDate()+4-(checkDate.getDay()||7));var time=checkDate.getTime();checkDate.setMonth(0);checkDate.setDate(1);return Math.floor(Math.round((time-checkDate)/86400000)/7)+1},parseDate:function(format,value,settings){if(format==null||value==null){throw"Invalid arguments"}value=(typeof value=="object"?value.toString():value+"");if(value==""){return null}var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var getNumber=function(match){lookAhead(match);var size=(match=="@"?14:(match=="!"?20:(match=="y"?4:(match=="o"?3:2))));var digits=new RegExp("^\\d{1,"+size+"}");var num=value.substring(iValue).match(digits);if(!num){throw"Missing number at position "+iValue}iValue+=num[0].length;return parseInt(num[0],10)};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);for(var i=0;i<names.length;i++){if(value.substr(iValue,names[i].length)==names[i]){iValue+=names[i].length;return i+1}}throw"Unknown name at position "+iValue};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)){throw"Unexpected literal at position "+iValue}iValue++};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{checkLiteral()}}else{switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":var date=new Date(getNumber("@"));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"!":var date=new Date((getNumber("!")-this._ticksTo1970)/10000);year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")){checkLiteral()}else{literal=true}break;default:checkLiteral()}}}if(year==-1){year=new Date().getFullYear()}else{if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100)}}if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(((1970-1)*365+Math.floor(1970/4)-Math.floor(1970/100)+Math.floor(1970/400))*24*60*60*10000000),formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value])};var output="";var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{output+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":output+=formatNumber("o",(date.getTime()-new Date(date.getFullYear(),0,0).getTime())/86400000,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"!":output+=date.getTime()*10000+this._ticksTo1970;break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{chars+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst,noDefault){if(inst.input.val()==inst.lastVal){return}var dateFormat=this._get(inst,"dateFormat");var dates=inst.lastVal=inst.input?inst.input.val():null;var date,defaultDate;date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){this.log(event);dates=(noDefault?"":dates)}inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst)},_getDefaultDate:function(inst){return this._restrictMinMax(inst,this._determineDate(inst,this._get(inst,"defaultDate"),new Date()))},_determineDate:function(inst,date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset){try{return $.datepicker.parseDate($.datepicker._get(inst,"dateFormat"),offset,$.datepicker._getFormatConfig(inst))}catch(e){}var date=(offset.toLowerCase().match(/^c/)?$.datepicker._getDate(inst):null)||new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,$.datepicker._getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,$.datepicker._getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,noChange){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._restrictMinMax(inst,this._determineDate(inst,date,new Date()));inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if((origMonth!=inst.selectedMonth||origYear!=inst.selectedYear)&&!noChange){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-(numMonths[0]*numMonths[1])+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+inst.id+"', -"+stepMonths+", 'M');\" title=\""+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>"));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+inst.id+"', +"+stepMonths+", 'M');\" title=\""+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>"));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(inst,"closeText")+"</button>":"");var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+inst.id+"');\">"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var showWeek=this._get(inst,"showWeek");var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var selectOtherMonths=this._get(inst,"selectOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row<numMonths[0];row++){var group="";for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=" ui-corner-all";var calender="";if(isMultiMonth){calender+='<div class="ui-datepicker-group';if(numMonths[1]>1){switch(col){case 0:calender+=" ui-datepicker-group-first";cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+=" ui-datepicker-group-last";cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+=" ui-datepicker-group-middle";cornerClass="";break}}calender+='">'}calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead=(showWeek?'<th class="ui-datepicker-week-col">'+this._get(inst,"weekHeader")+"</th>":"");for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="<th"+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+dayNames[day]+'">'+dayNamesMin[day]+"</span></th>"}calender+=thead+"</tr></thead><tbody>";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody=(!showWeek?"":'<td class="ui-datepicker-week-col">'+this._get(inst,"calculateWeek")(printDate)+"</td>");for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=(otherMonth&&!selectOtherMonths)||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()==currentDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+inst.id+"',"+printDate.getMonth()+","+printDate.getFullYear()+', this);return false;"')+">"+(otherMonth&&!showOtherMonths?" ":(unselectable?'<span class="ui-state-default">'+printDate.getDate()+"</span>":'<a class="ui-state-default'+(printDate.getTime()==today.getTime()?" ui-state-highlight":"")+(printDate.getTime()==currentDate.getTime()?" ui-state-active":"")+(otherMonth?" ui-priority-secondary":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+"</tr>"}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="</tbody></table>"+(isMultiMonth?"</div>"+((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,secondary,monthNames,monthNamesShort){var changeMonth=this._get(inst,"changeMonth");var changeYear=this._get(inst,"changeYear");var showMonthAfterYear=this._get(inst,"showMonthAfterYear");var html='<div class="ui-datepicker-title">';var monthHtml="";if(secondary||!changeMonth){monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+"</span>"}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+inst.id+"', this, 'M');\" onclick=\"DP_jQuery_"+dpuuid+".datepicker._clickMonthYear('#"+inst.id+"');\">";for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){monthHtml+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':"")+">"+monthNamesShort[month]+"</option>"}}monthHtml+="</select>"}if(!showMonthAfterYear){html+=monthHtml+(secondary||!(changeMonth&&changeYear)?" ":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{var years=this._get(inst,"yearRange").split(":");var thisYear=new Date().getFullYear();var determineYear=function(value){var year=(value.match(/c[+-].*/)?drawYear+parseInt(value.substring(1),10):(value.match(/[+-].*/)?thisYear+parseInt(value,10):parseInt(value,10)));return(isNaN(year)?thisYear:year)};var year=determineYear(years[0]);var endYear=Math.max(year,determineYear(years[1]||""));year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+inst.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+dpuuid+".datepicker._clickMonthYear('#"+inst.id+"');\">";for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':"")+">"+year+"</option>"}html+="</select>"}html+=this._get(inst,"yearSuffix");if(showMonthAfterYear){html+=(secondary||!(changeMonth&&changeYear)?" ":"")+monthHtml}html+="</div>";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._restrictMinMax(inst,this._daylightSavingAdjust(new Date(year,month,day)));inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_restrictMinMax:function(inst,date){var minDate=this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax){return this._determineDate(inst,this._get(inst,minMax+"Date"),null)},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[0]*numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var minDate=this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");return((!minDate||date.getTime()>=minDate.getTime())&&(!maxDate||date.getTime()<=maxDate.getTime()))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate"||options=="widget")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.8";window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(b){var a="ui-dialog ui-widget ui-widget-content ui-corner-all ";b.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1000},_create:function(){this.originalTitle=this.element.attr("title");var k=this,l=k.options,i=l.title||k.originalTitle||" ",d=b.ui.dialog.getTitleId(k.element),j=(k.uiDialog=b("<div></div>")).appendTo(document.body).hide().addClass(a+l.dialogClass).css({zIndex:l.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(m){if(l.closeOnEscape&&m.keyCode&&m.keyCode===b.ui.keyCode.ESCAPE){k.close(m);m.preventDefault()}}).attr({role:"dialog","aria-labelledby":d}).mousedown(function(m){k.moveToTop(false,m)}),f=k.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j),e=(k.uiDialogTitlebar=b("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j),h=b('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(m){k.close(m);return false}).appendTo(e),g=(k.uiDialogTitlebarCloseText=b("<span></span>")).addClass("ui-icon ui-icon-closethick").text(l.closeText).appendTo(h),c=b("<span></span>").addClass("ui-dialog-title").attr("id",d).html(i).prependTo(e);if(b.isFunction(l.beforeclose)&&!b.isFunction(l.beforeClose)){l.beforeClose=l.beforeclose}e.find("*").add(e).disableSelection();if(l.draggable&&b.fn.draggable){k._makeDraggable()}if(l.resizable&&b.fn.resizable){k._makeResizable()}k._createButtons(l.buttons);k._isOpen=false;if(b.fn.bgiframe){j.bgiframe()}},_init:function(){if(this.options.autoOpen){this.open()}},destroy:function(){var c=this;if(c.overlay){c.overlay.destroy()}c.uiDialog.hide();c.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");c.uiDialog.remove();if(c.originalTitle){c.element.attr("title",c.originalTitle)}return c},widget:function(){return this.uiDialog},close:function(e){var c=this,d;if(false===c._trigger("beforeClose",e)){return}if(c.overlay){c.overlay.destroy()}c.uiDialog.unbind("keypress.ui-dialog");c._isOpen=false;if(c.options.hide){c.uiDialog.hide(c.options.hide,function(){c._trigger("close",e)})}else{c.uiDialog.hide();c._trigger("close",e)}b.ui.dialog.overlay.resize();if(c.options.modal){d=0;b(".ui-dialog").each(function(){if(this!==c.uiDialog[0]){d=Math.max(d,b(this).css("z-index"))}});b.ui.dialog.maxZ=d}return c},isOpen:function(){return this._isOpen},moveToTop:function(g,f){var c=this,e=c.options,d;if((e.modal&&!g)||(!e.stack&&!e.modal)){return c._trigger("focus",f)}if(e.zIndex>b.ui.dialog.maxZ){b.ui.dialog.maxZ=e.zIndex}if(c.overlay){b.ui.dialog.maxZ+=1;c.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ)}d={scrollTop:c.element.attr("scrollTop"),scrollLeft:c.element.attr("scrollLeft")};b.ui.dialog.maxZ+=1;c.uiDialog.css("z-index",b.ui.dialog.maxZ);c.element.attr(d);c._trigger("focus",f);return c},open:function(){if(this._isOpen){return}var d=this,e=d.options,c=d.uiDialog;d.overlay=e.modal?new b.ui.dialog.overlay(d):null;if(c.next().length){c.appendTo("body")}d._size();d._position(e.position);c.show(e.show);d.moveToTop(true);if(e.modal){c.bind("keypress.ui-dialog",function(h){if(h.keyCode!==b.ui.keyCode.TAB){return}var g=b(":tabbable",this),i=g.filter(":first"),f=g.filter(":last");if(h.target===f[0]&&!h.shiftKey){i.focus(1);return false}else{if(h.target===i[0]&&h.shiftKey){f.focus(1);return false}}})}b([]).add(c.find(".ui-dialog-content :tabbable:first")).add(c.find(".ui-dialog-buttonpane :tabbable:first")).add(c).filter(":first").focus();d._trigger("open");d._isOpen=true;return d},_createButtons:function(f){var e=this,c=false,d=b("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");e.uiDialog.find(".ui-dialog-buttonpane").remove();if(typeof f==="object"&&f!==null){b.each(f,function(){return !(c=true)})}if(c){b.each(f,function(g,i){var h=b('<button type="button"></button>').text(g).click(function(){i.apply(e.element[0],arguments)}).appendTo(d);if(b.fn.button){h.button()}});d.appendTo(e.uiDialog)}},_makeDraggable:function(){var c=this,f=c.options,g=b(document),e;function d(h){return{position:h.position,offset:h.offset}}c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(h,i){e=f.height==="auto"?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",h,d(i))},drag:function(h,i){c._trigger("drag",h,d(i))},stop:function(h,i){f.position=[i.position.left-g.scrollLeft(),i.position.top-g.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(e);c._trigger("dragStop",h,d(i));b.ui.dialog.overlay.resize()}})},_makeResizable:function(h){h=(h===undefined?this.options.resizable:h);var d=this,g=d.options,c=d.uiDialog.css("position"),f=(typeof h==="string"?h:"n,e,s,w,se,sw,ne,nw");function e(i){return{originalPosition:i.originalPosition,originalSize:i.originalSize,position:i.position,size:i.size}}d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:g.maxWidth,maxHeight:g.maxHeight,minWidth:g.minWidth,minHeight:d._minHeight(),handles:f,start:function(i,j){b(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",i,e(j))},resize:function(i,j){d._trigger("resize",i,e(j))},stop:function(i,j){b(this).removeClass("ui-dialog-resizing");g.height=b(this).height();g.width=b(this).width();d._trigger("resizeStop",i,e(j));b.ui.dialog.overlay.resize()}}).css("position",c).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var c=this.options;if(c.height==="auto"){return c.minHeight}else{return Math.min(c.minHeight,c.height)}},_position:function(d){var e=[],f=[0,0],c;d=d||b.ui.dialog.prototype.options.position;if(typeof d==="string"||(typeof d==="object"&&"0" in d)){e=d.split?d.split(" "):[d[0],d[1]];if(e.length===1){e[1]=e[0]}b.each(["left","top"],function(h,g){if(+e[h]===e[h]){f[h]=e[h];e[h]=g}})}else{if(typeof d==="object"){if("left" in d){e[0]="left";f[0]=d.left}else{if("right" in d){e[0]="right";f[0]=-d.right}}if("top" in d){e[1]="top";f[1]=d.top}else{if("bottom" in d){e[1]="bottom";f[1]=-d.bottom}}}}c=this.uiDialog.is(":visible");if(!c){this.uiDialog.show()}this.uiDialog.css({top:0,left:0}).position({my:e.join(" "),at:e.join(" "),offset:f.join(" "),of:window,collision:"fit",using:function(h){var g=b(this).css(h).offset().top;if(g<0){b(this).css("top",h.top-g)}}});if(!c){this.uiDialog.hide()}},_setOption:function(f,g){var d=this,c=d.uiDialog,h=c.is(":data(resizable)"),e=false;switch(f){case"beforeclose":f="beforeClose";break;case"buttons":d._createButtons(g);break;case"closeText":d.uiDialogTitlebarCloseText.text(""+g);break;case"dialogClass":c.removeClass(d.options.dialogClass).addClass(a+g);break;case"disabled":if(g){c.addClass("ui-dialog-disabled")}else{c.removeClass("ui-dialog-disabled")}break;case"draggable":if(g){d._makeDraggable()}else{c.draggable("destroy")}break;case"height":e=true;break;case"maxHeight":if(h){c.resizable("option","maxHeight",g)}e=true;break;case"maxWidth":if(h){c.resizable("option","maxWidth",g)}e=true;break;case"minHeight":if(h){c.resizable("option","minHeight",g)}e=true;break;case"minWidth":if(h){c.resizable("option","minWidth",g)}e=true;break;case"position":d._position(g);break;case"resizable":if(h&&!g){c.resizable("destroy")}if(h&&typeof g==="string"){c.resizable("option","handles",g)}if(!h&&g!==false){d._makeResizable(g)}break;case"title":b(".ui-dialog-title",d.uiDialogTitlebar).html(""+(g||" "));break;case"width":e=true;break}b.Widget.prototype._setOption.apply(d,arguments);if(e){d._size()}},_size:function(){var d=this.options,c;this.element.css("width","auto").hide();c=this.uiDialog.css({height:"auto",width:d.width}).height();this.element.css(d.height==="auto"?{minHeight:Math.max(d.minHeight-c,0),height:"auto"}:{minHeight:0,height:Math.max(d.height-c,0)}).show();if(this.uiDialog.is(":data(resizable)")){this.uiDialog.resizable("option","minHeight",this._minHeight())}}});b.extend(b.ui.dialog,{version:"1.8",uuid:0,maxZ:0,getTitleId:function(c){var d=c.attr("id");if(!d){this.uuid+=1;d=this.uuid}return"ui-dialog-title-"+d},overlay:function(c){this.$el=b.ui.dialog.overlay.create(c)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(c){return c+".dialog-overlay"}).join(" "),create:function(d){if(this.instances.length===0){setTimeout(function(){if(b.ui.dialog.overlay.instances.length){b(document).bind(b.ui.dialog.overlay.events,function(e){return(b(e.target).zIndex()>=b.ui.dialog.overlay.maxZ)})}},1);b(document).bind("keydown.dialog-overlay",function(e){if(d.options.closeOnEscape&&e.keyCode&&e.keyCode===b.ui.keyCode.ESCAPE){d.close(e);e.preventDefault()}});b(window).bind("resize.dialog-overlay",b.ui.dialog.overlay.resize)}var c=(this.oldInstances.pop()||b("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});if(b.fn.bgiframe){c.bgiframe()}this.instances.push(c);return c},destroy:function(c){this.oldInstances.push(this.instances.splice(b.inArray(c,this.instances),1)[0]);if(this.instances.length===0){b([document,window]).unbind(".dialog-overlay")}c.remove();var d=0;b.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var d,c;if(b.browser.msie&&b.browser.version<7){d=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(d<c){return b(window).height()+"px"}else{return d+"px"}}else{return b(document).height()+"px"}},width:function(){var c,d;if(b.browser.msie&&b.browser.version<7){c=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);d=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(c<d){return b(window).width()+"px"}else{return c+"px"}}else{return b(document).width()+"px"}},resize:function(){var c=b([]);b.each(b.ui.dialog.overlay.instances,function(){c=c.add(this)});c.css({width:0,height:0}).css({width:b.ui.dialog.overlay.width(),height:b.ui.dialog.overlay.height()})}});b.extend(b.ui.dialog.overlay.prototype,{destroy:function(){b.ui.dialog.overlay.destroy(this.$el)}})}(jQuery));(function(f){f.ui=f.ui||{};var c=/left|center|right/,e="center",d=/top|center|bottom/,g="center",a=f.fn.position,b=f.fn.offset;f.fn.position=function(i){if(!i||!i.of){return a.apply(this,arguments)}i=f.extend({},i);var l=f(i.of),n=(i.collision||"flip").split(" "),m=i.offset?i.offset.split(" "):[0,0],k,h,j;if(i.of.nodeType===9){k=l.width();h=l.height();j={top:0,left:0}}else{if(i.of.scrollTo&&i.of.document){k=l.width();h=l.height();j={top:l.scrollTop(),left:l.scrollLeft()}}else{if(i.of.preventDefault){i.at="left top";k=h=0;j={top:i.of.pageY,left:i.of.pageX}}else{k=l.outerWidth();h=l.outerHeight();j=l.offset()}}}f.each(["my","at"],function(){var o=(i[this]||"").split(" ");if(o.length===1){o=c.test(o[0])?o.concat([g]):d.test(o[0])?[e].concat(o):[e,g]}o[0]=c.test(o[0])?o[0]:e;o[1]=d.test(o[1])?o[1]:g;i[this]=o});if(n.length===1){n[1]=n[0]}m[0]=parseInt(m[0],10)||0;if(m.length===1){m[1]=m[0]}m[1]=parseInt(m[1],10)||0;if(i.at[0]==="right"){j.left+=k}else{if(i.at[0]===e){j.left+=k/2}}if(i.at[1]==="bottom"){j.top+=h}else{if(i.at[1]===g){j.top+=h/2}}j.left+=m[0];j.top+=m[1];return this.each(function(){var r=f(this),q=r.outerWidth(),p=r.outerHeight(),o=f.extend({},j);if(i.my[0]==="right"){o.left-=q}else{if(i.my[0]===e){o.left-=q/2}}if(i.my[1]==="bottom"){o.top-=p}else{if(i.my[1]===g){o.top-=p/2}}f.each(["left","top"],function(u,s){if(f.ui.position[n[u]]){f.ui.position[n[u]][s](o,{targetWidth:k,targetHeight:h,elemWidth:q,elemHeight:p,offset:m,my:i.my,at:i.at})}});if(f.fn.bgiframe){r.bgiframe()}r.offset(f.extend(o,{using:i.using}))})};f.ui.position={fit:{left:function(h,i){var k=f(window),j=h.left+i.elemWidth-k.width()-k.scrollLeft();h.left=j>0?h.left-j:Math.max(0,h.left)},top:function(h,i){var k=f(window),j=h.top+i.elemHeight-k.height()-k.scrollTop();h.top=j>0?h.top-j:Math.max(0,h.top)}},flip:{left:function(i,j){if(j.at[0]==="center"){return}var l=f(window),k=i.left+j.elemWidth-l.width()-l.scrollLeft(),h=j.my[0]==="left"?-j.elemWidth:j.my[0]==="right"?j.elemWidth:0,m=-2*j.offset[0];i.left+=i.left<0?h+j.targetWidth+m:k>0?h-j.targetWidth+m:0},top:function(i,k){if(k.at[1]==="center"){return}var m=f(window),l=i.top+k.elemHeight-m.height()-m.scrollTop(),h=k.my[1]==="top"?-k.elemHeight:k.my[1]==="bottom"?k.elemHeight:0,j=k.at[1]==="top"?k.targetHeight:-k.targetHeight,n=-2*k.offset[1];i.top+=i.top<0?h+k.targetHeight+n:l>0?h+j+n:0}}};if(!f.offset.setOffset){f.offset.setOffset=function(l,i){if(/static/.test(f.curCSS(l,"position"))){l.style.position="relative"}var k=f(l),n=k.offset(),h=parseInt(f.curCSS(l,"top",true),10)||0,m=parseInt(f.curCSS(l,"left",true),10)||0,j={top:(i.top-n.top)+h,left:(i.left-n.left)+m};if("using" in i){i.using.call(l,j)}else{k.css(j)}};f.fn.offset=function(h){var i=this[0];if(!i||!i.ownerDocument){return null}if(h){return this.each(function(){f.offset.setOffset(this,h)})}return b.call(this)}}}(jQuery));(function(a){a.widget("ui.progressbar",{options:{value:0},_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");this.valueDiv.remove();a.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===undefined){return this._value()}this._setOption("value",b);return this},_setOption:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change");break}a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var b=this.options.value;if(typeof b!=="number"){b=0}if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_valueMin:function(){return 0},_valueMax:function(){return 100},_refreshValue:function(){var b=this.value();this.valueDiv[b===this._valueMax()?"addClass":"removeClass"]("ui-corner-right").width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.8"})})(jQuery);(function(b){var a=5;b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var c=this,d=this.options;this._keySliding=false;this._mouseSliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");if(d.disabled){this.element.addClass("ui-slider-disabled ui-disabled")}this.range=b([]);if(d.range){if(d.range===true){this.range=b("<div></div>");if(!d.values){d.values=[this._valueMin(),this._valueMin()]}if(d.values.length&&d.values.length!=2){d.values=[d.values[0],d.values[0]]}}else{this.range=b("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(d.range=="min"||d.range=="max"){this.range.addClass("ui-slider-range-"+d.range)}this.range.addClass("ui-widget-header")}if(b(".ui-slider-handle",this.element).length==0){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(d.values&&d.values.length){while(b(".ui-slider-handle",this.element).length<d.values.length){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=b(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).hover(function(){if(!d.disabled){b(this).addClass("ui-state-hover")}},function(){b(this).removeClass("ui-state-hover")}).focus(function(){if(!d.disabled){b(".ui-slider .ui-state-focus").removeClass("ui-state-focus");b(this).addClass("ui-state-focus")}else{b(this).blur()}}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(e){b(this).data("index.ui-slider-handle",e)});this.handles.keydown(function(j){var g=true;var f=b(this).data("index.ui-slider-handle");if(c.options.disabled){return}switch(j.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:g=false;if(!c._keySliding){c._keySliding=true;b(this).addClass("ui-state-active");c._start(j,f)}break}var h,e,i=c._step();if(c.options.values&&c.options.values.length){h=e=c.values(f)}else{h=e=c.value()}switch(j.keyCode){case b.ui.keyCode.HOME:e=c._valueMin();break;case b.ui.keyCode.END:e=c._valueMax();break;case b.ui.keyCode.PAGE_UP:e=h+((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.PAGE_DOWN:e=h-((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(h==c._valueMax()){return}e=h+i;break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(h==c._valueMin()){return}e=h-i;break}c._slide(j,f,e);return g}).keyup(function(f){var e=b(this).data("index.ui-slider-handle");if(c._keySliding){c._keySliding=false;c._stop(f,e);c._change(f,e);b(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(e){var f=this.options;if(f.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var i={x:e.pageX,y:e.pageY};var k=this._normValueFromMouse(i);var d=this._valueMax()-this._valueMin()+1,g;var l=this,j;this.handles.each(function(m){var n=Math.abs(k-l.values(m));if(d>n){d=n;g=b(this);j=m}});if(f.range==true&&this.values(1)==f.min){g=b(this.handles[++j])}this._start(e,j);this._mouseSliding=true;l._handleIndex=j;g.addClass("ui-state-active").focus();var h=g.offset();var c=!b(e.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=c?{left:0,top:0}:{left:e.pageX-h.left-(g.width()/2),top:e.pageY-h.top-(g.height()/2)-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};k=this._normValueFromMouse(i);this._slide(e,j,k);this._animateOff=true;return true},_mouseStart:function(c){return true},_mouseDrag:function(e){var c={x:e.pageX,y:e.pageY};var d=this._normValueFromMouse(c);this._slide(e,this._handleIndex,d);return false},_mouseStop:function(c){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(c,this._handleIndex);this._change(c,this._handleIndex);this._handleIndex=null;this._clickOffset=null;this._animateOff=false;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var d,i;if("horizontal"==this.orientation){d=this.elementSize.width;i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{d=this.elementSize.height;i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var g=(i/d);if(g>1){g=1}if(g<0){g=0}if("vertical"==this.orientation){g=1-g}var f=this._valueMax()-this._valueMin(),j=g*f,c=j%this.options.step,h=this._valueMin()+j-c;if(c>(this.options.step/2)){h+=this.options.step}return parseFloat(h.toFixed(5))},_start:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("start",e,c)},_slide:function(g,f,e){var h=this.handles[f];if(this.options.values&&this.options.values.length){var c=this.values(f?0:1);if((this.options.values.length==2&&this.options.range===true)&&((f==0&&e>c)||(f==1&&e<c))){e=c}if(e!=this.values(f)){var d=this.values();d[f]=e;var i=this._trigger("slide",g,{handle:this.handles[f],value:e,values:d});var c=this.values(f?0:1);if(i!==false){this.values(f,e,true)}}}else{if(e!=this.value()){var i=this._trigger("slide",g,{handle:this.handles[f],value:e});if(i!==false){this.value(e)}}}},_stop:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("stop",e,c)},_change:function(e,d){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("change",e,c)}},value:function(c){if(arguments.length){this.options.value=this._trimValue(c);this._refreshValue();this._change(null,0)}return this._value()},values:function(e,h){if(arguments.length>1){this.options.values[e]=this._trimValue(h);this._refreshValue();this._change(null,e)}if(arguments.length){if(b.isArray(arguments[0])){var g=this.options.values,d=arguments[0];for(var f=0,c=g.length;f<c;f++){g[f]=this._trimValue(d[f]);this._change(null,f)}this._refreshValue()}else{if(this.options.values&&this.options.values.length){return this._values(e)}else{return this.value()}}}else{return this._values()}},_setOption:function(d,e){var c,f=0;if(jQuery.isArray(this.options.values)){f=this.options.values.length}b.Widget.prototype._setOption.apply(this,arguments);switch(d){case"disabled":if(e){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c++){this._change(null,c)}this._animateOff=false;break}},_step:function(){var c=this.options.step;return c},_value:function(){var c=this.options.value;c=this._trimValue(c);return c},_values:function(d){if(arguments.length){var g=this.options.values[d];g=this._trimValue(g);return g}else{var f=this.options.values.slice();for(var e=0,c=f.length;e<c;e++){f[e]=this._trimValue(f[e])}return f}},_trimValue:function(c){if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c},_valueMin:function(){var c=this.options.min;return c},_valueMax:function(){var c=this.options.max;return c},_refreshValue:function(){var g=this.options.range,e=this.options,m=this;var d=(!this._animateOff)?e.animate:false;if(this.options.values&&this.options.values.length){var j,i;this.handles.each(function(q,o){var p=(m.values(q)-m._valueMin())/(m._valueMax()-m._valueMin())*100;var n={};n[m.orientation=="horizontal"?"left":"bottom"]=p+"%";b(this).stop(1,1)[d?"animate":"css"](n,e.animate);if(m.options.range===true){if(m.orientation=="horizontal"){(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({left:p+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({width:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}else{(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({bottom:(p)+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({height:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}}lastValPercent=p})}else{var k=this.value(),h=this._valueMin(),l=this._valueMax(),f=l!=h?(k-h)/(l-h)*100:0;var c={};c[m.orientation=="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[d?"animate":"css"](c,e.animate);(g=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[d?"animate":"css"]({width:f+"%"},e.animate);(g=="max")&&(this.orientation=="horizontal")&&this.range[d?"animate":"css"]({width:(100-f)+"%"},{queue:false,duration:e.animate});(g=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[d?"animate":"css"]({height:f+"%"},e.animate);(g=="max")&&(this.orientation=="vertical")&&this.range[d?"animate":"css"]({height:(100-f)+"%"},{queue:false,duration:e.animate})}}});b.extend(b.ui.slider,{version:"1.8"})})(jQuery);(function(c){var b=0,a=0;c.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'},_create:function(){this._tabify(true)},_setOption:function(d,e){if(d=="selected"){if(this.options.collapsible&&e==this.options.selected){return}this.select(e)}else{this.options[d]=e;this._tabify()}},_tabId:function(d){return d.title&&d.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+(++b)},_sanitizeSelector:function(d){return d.replace(/:/g,"\\:")},_cookie:function(){var d=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+(++a));return c.cookie.apply(null,[d].concat(c.makeArray(arguments)))},_ui:function(e,d){return{tab:e,panel:d,index:this.anchors.index(e)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var d=c(this);d.html(d.data("label.tabs")).removeData("label.tabs")})},_tabify:function(q){this.list=this.element.find("ol,ul").eq(0);this.lis=c("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return c("a",this)[0]});this.panels=c([]);var r=this,f=this.options;var e=/^#.+/;this.anchors.each(function(u,o){var s=c(o).attr("href");var v=s.split("#")[0],w;if(v&&(v===location.toString().split("#")[0]||(w=c("base")[0])&&v===w.href)){s=o.hash;o.href=s}if(e.test(s)){r.panels=r.panels.add(r._sanitizeSelector(s))}else{if(s!="#"){c.data(o,"href.tabs",s);c.data(o,"load.tabs",s.replace(/#.*$/,""));var y=r._tabId(o);o.href="#"+y;var x=c("#"+y);if(!x.length){x=c(f.panelTemplate).attr("id",y).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(r.panels[u-1]||r.list);x.data("destroy.tabs",true)}r.panels=r.panels.add(x)}else{f.disabled.push(u)}}});if(q){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(f.selected===undefined){if(location.hash){this.anchors.each(function(s,o){if(o.hash==location.hash){f.selected=s;return false}})}if(typeof f.selected!="number"&&f.cookie){f.selected=parseInt(r._cookie(),10)}if(typeof f.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}f.selected=f.selected||(this.lis.length?0:-1)}else{if(f.selected===null){f.selected=-1}}f.selected=((f.selected>=0&&this.anchors[f.selected])||f.selected<0)?f.selected:0;f.disabled=c.unique(f.disabled.concat(c.map(this.lis.filter(".ui-state-disabled"),function(s,o){return r.lis.index(s)}))).sort();if(c.inArray(f.selected,f.disabled)!=-1){f.disabled.splice(c.inArray(f.selected,f.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(f.selected>=0&&this.anchors.length){this.panels.eq(f.selected).removeClass("ui-tabs-hide");this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active");r.element.queue("tabs",function(){r._trigger("show",null,r._ui(r.anchors[f.selected],r.panels[f.selected]))});this.load(f.selected)}c(window).bind("unload",function(){r.lis.add(r.anchors).unbind(".tabs");r.lis=r.anchors=r.panels=null})}else{f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(f.cookie){this._cookie(f.selected,f.cookie)}for(var j=0,p;(p=this.lis[j]);j++){c(p)[c.inArray(j,f.disabled)!=-1&&!c(p).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(f.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(f.event!="mouseover"){var h=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var l=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){h("hover",c(this))});this.lis.bind("mouseout.tabs",function(){l("hover",c(this))});this.anchors.bind("focus.tabs",function(){h("focus",c(this).closest("li"))});this.anchors.bind("blur.tabs",function(){l("focus",c(this).closest("li"))})}var d,k;if(f.fx){if(c.isArray(f.fx)){d=f.fx[0];k=f.fx[1]}else{d=k=f.fx}}function g(i,o){i.css({display:""});if(!c.support.opacity&&o.opacity){i[0].style.removeAttribute("filter")}}var m=k?function(i,o){c(i).closest("li").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(k,k.duration||"normal",function(){g(o,k);r._trigger("show",null,r._ui(i,o[0]))})}:function(i,o){c(i).closest("li").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");r._trigger("show",null,r._ui(i,o[0]))};var n=d?function(o,i){i.animate(d,d.duration||"normal",function(){r.lis.removeClass("ui-tabs-selected ui-state-active");i.addClass("ui-tabs-hide");g(i,d);r.element.dequeue("tabs")})}:function(o,i,s){r.lis.removeClass("ui-tabs-selected ui-state-active");i.addClass("ui-tabs-hide");r.element.dequeue("tabs")};this.anchors.bind(f.event+".tabs",function(){var o=this,u=c(this).closest("li"),i=r.panels.filter(":not(.ui-tabs-hide)"),s=c(r._sanitizeSelector(this.hash));if((u.hasClass("ui-tabs-selected")&&!f.collapsible)||u.hasClass("ui-state-disabled")||u.hasClass("ui-state-processing")||r._trigger("select",null,r._ui(this,s[0]))===false){this.blur();return false}f.selected=r.anchors.index(this);r.abort();if(f.collapsible){if(u.hasClass("ui-tabs-selected")){f.selected=-1;if(f.cookie){r._cookie(f.selected,f.cookie)}r.element.queue("tabs",function(){n(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(f.cookie){r._cookie(f.selected,f.cookie)}r.element.queue("tabs",function(){m(o,s)});r.load(r.anchors.index(this));this.blur();return false}}}if(f.cookie){r._cookie(f.selected,f.cookie)}if(s.length){if(i.length){r.element.queue("tabs",function(){n(o,i)})}r.element.queue("tabs",function(){m(o,s)});r.load(r.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(c.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var d=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=c.data(this,"href.tabs");if(e){this.href=e}var f=c(this).unbind(".tabs");c.each(["href","load","cache"],function(g,h){f.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(c.data(this,"destroy.tabs")){c(this).remove()}else{c(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(d.cookie){this._cookie(null,d.cookie)}return this},add:function(g,f,e){if(e===undefined){e=this.anchors.length}var d=this,i=this.options,k=c(i.tabTemplate.replace(/#\{href\}/g,g).replace(/#\{label\}/g,f)),j=!g.indexOf("#")?g.replace("#",""):this._tabId(c("a",k)[0]);k.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var h=c("#"+j);if(!h.length){h=c(i.panelTemplate).attr("id",j).data("destroy.tabs",true)}h.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(e>=this.lis.length){k.appendTo(this.list);h.appendTo(this.list[0].parentNode)}else{k.insertBefore(this.lis[e]);h.insertBefore(this.panels[e])}i.disabled=c.map(i.disabled,function(m,l){return m>=e?++m:m});this._tabify();if(this.anchors.length==1){i.selected=0;k.addClass("ui-tabs-selected ui-state-active");h.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[0],d.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(d){var f=this.options,g=this.lis.eq(d).remove(),e=this.panels.eq(d).remove();if(g.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(d+(d+1<this.anchors.length?1:-1))}f.disabled=c.map(c.grep(f.disabled,function(j,h){return j!=d}),function(j,h){return j>=d?--j:j});this._tabify();this._trigger("remove",null,this._ui(g.find("a")[0],e[0]));return this},enable:function(d){var e=this.options;if(c.inArray(d,e.disabled)==-1){return}this.lis.eq(d).removeClass("ui-state-disabled");e.disabled=c.grep(e.disabled,function(g,f){return g!=d});this._trigger("enable",null,this._ui(this.anchors[d],this.panels[d]));return this},disable:function(e){var d=this,f=this.options;if(e!=f.selected){this.lis.eq(e).addClass("ui-state-disabled");f.disabled.push(e);f.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[e],this.panels[e]))}return this},select:function(d){if(typeof d=="string"){d=this.anchors.index(this.anchors.filter("[href$="+d+"]"))}else{if(d===null){d=-1}}if(d==-1&&this.options.collapsible){d=this.options.selected}this.anchors.eq(d).trigger(this.options.event+".tabs");return this},load:function(g){var e=this,i=this.options,d=this.anchors.eq(g)[0],f=c.data(d,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&c.data(d,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(g).addClass("ui-state-processing");if(i.spinner){var h=c("span",d);h.data("label.tabs",h.html()).html(i.spinner)}this.xhr=c.ajax(c.extend({},i.ajaxOptions,{url:f,success:function(k,j){c(e._sanitizeSelector(d.hash)).html(k);e._cleanup();if(i.cache){c.data(d,"cache.tabs",true)}e._trigger("load",null,e._ui(e.anchors[g],e.panels[g]));try{i.ajaxOptions.success(k,j)}catch(l){}},error:function(l,j,k){e._cleanup();e._trigger("load",null,e._ui(e.anchors[g],e.panels[g]));try{i.ajaxOptions.error(l,j,g,d)}catch(k){}}}));e.element.dequeue("tabs");return this},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(e,d){this.anchors.eq(e).removeData("cache.tabs").data("load.tabs",d);return this},length:function(){return this.anchors.length}});c.extend(c.ui.tabs,{version:"1.8"});c.extend(c.ui.tabs.prototype,{rotation:null,rotate:function(f,h){var d=this,i=this.options;var e=d._rotate||(d._rotate=function(j){clearTimeout(d.rotation);d.rotation=setTimeout(function(){var k=i.selected;d.select(++k<d.anchors.length?k:0)},f);if(j){j.stopPropagation()}});var g=d._unrotate||(d._unrotate=!h?function(j){if(j.clientX){d.rotate(null)}}:function(j){t=i.selected;e()});if(f){this.element.bind("tabsshow",e);this.anchors.bind(i.event+".tabs",g);e()}else{clearTimeout(d.rotation);this.element.unbind("tabsshow",e);this.anchors.unbind(i.event+".tabs",g);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
|
js/varien/jquery.fancybox-1.3.1.js
ADDED
@@ -0,0 +1,1079 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* FancyBox - jQuery Plugin
|
3 |
+
* Simple and fancy lightbox alternative
|
4 |
+
*
|
5 |
+
* Examples and documentation at: http://fancybox.net
|
6 |
+
*
|
7 |
+
* Copyright (c) 2008 - 2010 Janis Skarnelis
|
8 |
+
*
|
9 |
+
* Version: 1.3.1 (05/03/2010)
|
10 |
+
* Requires: jQuery v1.3+
|
11 |
+
*
|
12 |
+
* Dual licensed under the MIT and GPL licenses:
|
13 |
+
* http://www.opensource.org/licenses/mit-license.php
|
14 |
+
* http://www.gnu.org/licenses/gpl.html
|
15 |
+
*/
|
16 |
+
|
17 |
+
(function($) {
|
18 |
+
|
19 |
+
var tmp, loading, overlay, wrap, outer, inner, close, nav_left, nav_right,
|
20 |
+
|
21 |
+
selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
|
22 |
+
|
23 |
+
ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
|
24 |
+
|
25 |
+
loadingTimer, loadingFrame = 1,
|
26 |
+
|
27 |
+
start_pos, final_pos, busy = false, shadow = 20, fx = $.extend($('<div/>')[0], { prop: 0 }), titleh = 0,
|
28 |
+
|
29 |
+
isIE6 = !$.support.opacity && !window.XMLHttpRequest,
|
30 |
+
|
31 |
+
/*
|
32 |
+
* Private methods
|
33 |
+
*/
|
34 |
+
|
35 |
+
fancybox_abort = function() {
|
36 |
+
loading.hide();
|
37 |
+
|
38 |
+
imgPreloader.onerror = imgPreloader.onload = null;
|
39 |
+
|
40 |
+
if (ajaxLoader) {
|
41 |
+
ajaxLoader.abort();
|
42 |
+
}
|
43 |
+
|
44 |
+
tmp.empty();
|
45 |
+
},
|
46 |
+
|
47 |
+
fancybox_error = function() {
|
48 |
+
$.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>', {
|
49 |
+
'scrolling' : 'no',
|
50 |
+
'padding' : 20,
|
51 |
+
'transitionIn' : 'none',
|
52 |
+
'transitionOut' : 'none'
|
53 |
+
});
|
54 |
+
},
|
55 |
+
|
56 |
+
fancybox_get_viewport = function() {
|
57 |
+
return [ $(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];
|
58 |
+
},
|
59 |
+
|
60 |
+
fancybox_get_zoom_to = function () {
|
61 |
+
var view = fancybox_get_viewport(),
|
62 |
+
to = {},
|
63 |
+
|
64 |
+
margin = currentOpts.margin,
|
65 |
+
resize = currentOpts.autoScale,
|
66 |
+
|
67 |
+
horizontal_space = (shadow + margin) * 2,
|
68 |
+
vertical_space = (shadow + margin) * 2,
|
69 |
+
double_padding = (currentOpts.padding * 2),
|
70 |
+
|
71 |
+
ratio;
|
72 |
+
|
73 |
+
if (currentOpts.width.toString().indexOf('%') > -1) {
|
74 |
+
to.width = ((view[0] * parseFloat(currentOpts.width)) / 100) - (shadow * 2) ;
|
75 |
+
resize = false;
|
76 |
+
|
77 |
+
} else {
|
78 |
+
to.width = currentOpts.width + double_padding;
|
79 |
+
}
|
80 |
+
|
81 |
+
if (currentOpts.height.toString().indexOf('%') > -1) {
|
82 |
+
to.height = ((view[1] * parseFloat(currentOpts.height)) / 100) - (shadow * 2);
|
83 |
+
resize = false;
|
84 |
+
|
85 |
+
} else {
|
86 |
+
to.height = currentOpts.height + double_padding;
|
87 |
+
}
|
88 |
+
|
89 |
+
if (resize && (to.width > (view[0] - horizontal_space) || to.height > (view[1] - vertical_space))) {
|
90 |
+
if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
|
91 |
+
horizontal_space += double_padding;
|
92 |
+
vertical_space += double_padding;
|
93 |
+
|
94 |
+
ratio = Math.min(Math.min( view[0] - horizontal_space, currentOpts.width) / currentOpts.width, Math.min( view[1] - vertical_space, currentOpts.height) / currentOpts.height);
|
95 |
+
|
96 |
+
to.width = Math.round(ratio * (to.width - double_padding)) + double_padding;
|
97 |
+
to.height = Math.round(ratio * (to.height - double_padding)) + double_padding;
|
98 |
+
|
99 |
+
} else {
|
100 |
+
to.width = Math.min(to.width, (view[0] - horizontal_space));
|
101 |
+
to.height = Math.min(to.height, (view[1] - vertical_space));
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
to.top = view[3] + ((view[1] - (to.height + (shadow * 2 ))) * 0.5);
|
106 |
+
to.left = view[2] + ((view[0] - (to.width + (shadow * 2 ))) * 0.5);
|
107 |
+
|
108 |
+
if (currentOpts.autoScale === false) {
|
109 |
+
to.top = Math.max(view[3] + margin, to.top);
|
110 |
+
to.left = Math.max(view[2] + margin, to.left);
|
111 |
+
}
|
112 |
+
|
113 |
+
return to;
|
114 |
+
},
|
115 |
+
|
116 |
+
fancybox_format_title = function(title) {
|
117 |
+
if (title && title.length) {
|
118 |
+
switch (currentOpts.titlePosition) {
|
119 |
+
case 'inside':
|
120 |
+
return title;
|
121 |
+
case 'over':
|
122 |
+
return '<span id="fancybox-title-over">' + title + '</span>';
|
123 |
+
default:
|
124 |
+
return '<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">' + title + '</span><span id="fancybox-title-right"></span></span>';
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
return false;
|
129 |
+
},
|
130 |
+
|
131 |
+
fancybox_process_title = function() {
|
132 |
+
var title = currentOpts.title,
|
133 |
+
width = final_pos.width - (currentOpts.padding * 2),
|
134 |
+
titlec = 'fancybox-title-' + currentOpts.titlePosition;
|
135 |
+
|
136 |
+
$('#fancybox-title').remove();
|
137 |
+
|
138 |
+
titleh = 0;
|
139 |
+
|
140 |
+
if (currentOpts.titleShow === false) {
|
141 |
+
return;
|
142 |
+
}
|
143 |
+
|
144 |
+
title = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(title, currentArray, currentIndex, currentOpts) : fancybox_format_title(title);
|
145 |
+
|
146 |
+
if (!title || title === '') {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
|
150 |
+
$('<div id="fancybox-title" class="' + titlec + '" />').css({
|
151 |
+
'width' : width,
|
152 |
+
'paddingLeft' : currentOpts.padding,
|
153 |
+
'paddingRight' : currentOpts.padding
|
154 |
+
}).html(title).appendTo('body');
|
155 |
+
|
156 |
+
switch (currentOpts.titlePosition) {
|
157 |
+
case 'inside':
|
158 |
+
titleh = $("#fancybox-title").outerHeight(true) - currentOpts.padding;
|
159 |
+
final_pos.height += titleh;
|
160 |
+
break;
|
161 |
+
|
162 |
+
case 'over':
|
163 |
+
$('#fancybox-title').css('bottom', currentOpts.padding);
|
164 |
+
break;
|
165 |
+
|
166 |
+
default:
|
167 |
+
$('#fancybox-title').css('bottom', $("#fancybox-title").outerHeight(true) * -1);
|
168 |
+
break;
|
169 |
+
}
|
170 |
+
|
171 |
+
$('#fancybox-title').appendTo( outer ).hide();
|
172 |
+
},
|
173 |
+
|
174 |
+
fancybox_set_navigation = function() {
|
175 |
+
$(document).unbind('keydown.fb').bind('keydown.fb', function(e) {
|
176 |
+
if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
|
177 |
+
e.preventDefault();
|
178 |
+
$.fancybox.close();
|
179 |
+
|
180 |
+
} else if (e.keyCode == 37) {
|
181 |
+
e.preventDefault();
|
182 |
+
$.fancybox.prev();
|
183 |
+
|
184 |
+
} else if (e.keyCode == 39) {
|
185 |
+
e.preventDefault();
|
186 |
+
$.fancybox.next();
|
187 |
+
}
|
188 |
+
});
|
189 |
+
|
190 |
+
if ($.fn.mousewheel) {
|
191 |
+
wrap.unbind('mousewheel.fb');
|
192 |
+
|
193 |
+
if (currentArray.length > 1) {
|
194 |
+
wrap.bind('mousewheel.fb', function(e, delta) {
|
195 |
+
e.preventDefault();
|
196 |
+
|
197 |
+
if (busy || delta === 0) {
|
198 |
+
return;
|
199 |
+
}
|
200 |
+
|
201 |
+
if (delta > 0) {
|
202 |
+
$.fancybox.prev();
|
203 |
+
} else {
|
204 |
+
$.fancybox.next();
|
205 |
+
}
|
206 |
+
});
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
if (!currentOpts.showNavArrows) { return; }
|
211 |
+
|
212 |
+
if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
|
213 |
+
nav_left.show();
|
214 |
+
}
|
215 |
+
|
216 |
+
if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
|
217 |
+
nav_right.show();
|
218 |
+
}
|
219 |
+
},
|
220 |
+
|
221 |
+
fancybox_preload_images = function() {
|
222 |
+
var href,
|
223 |
+
objNext;
|
224 |
+
|
225 |
+
if ((currentArray.length -1) > currentIndex) {
|
226 |
+
href = currentArray[ currentIndex + 1 ].href;
|
227 |
+
|
228 |
+
if (typeof href !== 'undefined' && href.match(imgRegExp)) {
|
229 |
+
objNext = new Image();
|
230 |
+
objNext.src = href;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
if (currentIndex > 0) {
|
235 |
+
href = currentArray[ currentIndex - 1 ].href;
|
236 |
+
|
237 |
+
if (typeof href !== 'undefined' && href.match(imgRegExp)) {
|
238 |
+
objNext = new Image();
|
239 |
+
objNext.src = href;
|
240 |
+
}
|
241 |
+
}
|
242 |
+
},
|
243 |
+
|
244 |
+
_finish = function () {
|
245 |
+
inner.css('overflow', (currentOpts.scrolling == 'auto' ? (currentOpts.type == 'image' || currentOpts.type == 'iframe' || currentOpts.type == 'swf' ? 'hidden' : 'auto') : (currentOpts.scrolling == 'yes' ? 'auto' : 'visible')));
|
246 |
+
|
247 |
+
if (!$.support.opacity) {
|
248 |
+
inner.get(0).style.removeAttribute('filter');
|
249 |
+
wrap.get(0).style.removeAttribute('filter');
|
250 |
+
}
|
251 |
+
|
252 |
+
$('#fancybox-title').show();
|
253 |
+
|
254 |
+
if (currentOpts.hideOnContentClick) {
|
255 |
+
inner.one('click', $.fancybox.close);
|
256 |
+
}
|
257 |
+
if (currentOpts.hideOnOverlayClick) {
|
258 |
+
overlay.one('click', $.fancybox.close);
|
259 |
+
}
|
260 |
+
|
261 |
+
if (currentOpts.showCloseButton) {
|
262 |
+
close.show();
|
263 |
+
}
|
264 |
+
|
265 |
+
fancybox_set_navigation();
|
266 |
+
|
267 |
+
$(window).bind("resize.fb", $.fancybox.center);
|
268 |
+
|
269 |
+
if (currentOpts.centerOnScroll) {
|
270 |
+
$(window).bind("scroll.fb", $.fancybox.center);
|
271 |
+
} else {
|
272 |
+
$(window).unbind("scroll.fb");
|
273 |
+
}
|
274 |
+
|
275 |
+
if ($.isFunction(currentOpts.onComplete)) {
|
276 |
+
currentOpts.onComplete(currentArray, currentIndex, currentOpts);
|
277 |
+
}
|
278 |
+
|
279 |
+
busy = false;
|
280 |
+
|
281 |
+
fancybox_preload_images();
|
282 |
+
},
|
283 |
+
|
284 |
+
fancybox_draw = function(pos) {
|
285 |
+
var width = Math.round(start_pos.width + (final_pos.width - start_pos.width) * pos),
|
286 |
+
height = Math.round(start_pos.height + (final_pos.height - start_pos.height) * pos),
|
287 |
+
|
288 |
+
top = Math.round(start_pos.top + (final_pos.top - start_pos.top) * pos),
|
289 |
+
left = Math.round(start_pos.left + (final_pos.left - start_pos.left) * pos);
|
290 |
+
|
291 |
+
wrap.css({
|
292 |
+
'width' : width + 'px',
|
293 |
+
'height' : height + 'px',
|
294 |
+
'top' : top + 'px',
|
295 |
+
'left' : left + 'px'
|
296 |
+
});
|
297 |
+
|
298 |
+
width = Math.max(width - currentOpts.padding * 2, 0);
|
299 |
+
height = Math.max(height - (currentOpts.padding * 2 + (titleh * pos)), 0);
|
300 |
+
|
301 |
+
inner.css({
|
302 |
+
'width' : width + 'px',
|
303 |
+
'height' : height + 'px'
|
304 |
+
});
|
305 |
+
|
306 |
+
if (typeof final_pos.opacity !== 'undefined') {
|
307 |
+
wrap.css('opacity', (pos < 0.5 ? 0.5 : pos));
|
308 |
+
}
|
309 |
+
},
|
310 |
+
|
311 |
+
fancybox_get_obj_pos = function(obj) {
|
312 |
+
var pos = obj.offset();
|
313 |
+
|
314 |
+
pos.top += parseFloat( obj.css('paddingTop') ) || 0;
|
315 |
+
pos.left += parseFloat( obj.css('paddingLeft') ) || 0;
|
316 |
+
|
317 |
+
pos.top += parseFloat( obj.css('border-top-width') ) || 0;
|
318 |
+
pos.left += parseFloat( obj.css('border-left-width') ) || 0;
|
319 |
+
|
320 |
+
pos.width = obj.width();
|
321 |
+
pos.height = obj.height();
|
322 |
+
|
323 |
+
return pos;
|
324 |
+
},
|
325 |
+
|
326 |
+
fancybox_get_zoom_from = function() {
|
327 |
+
var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
|
328 |
+
from = {},
|
329 |
+
pos,
|
330 |
+
view;
|
331 |
+
|
332 |
+
if (orig && orig.length) {
|
333 |
+
pos = fancybox_get_obj_pos(orig);
|
334 |
+
|
335 |
+
from = {
|
336 |
+
width : (pos.width + (currentOpts.padding * 2)),
|
337 |
+
height : (pos.height + (currentOpts.padding * 2)),
|
338 |
+
top : (pos.top - currentOpts.padding - shadow),
|
339 |
+
left : (pos.left - currentOpts.padding - shadow)
|
340 |
+
};
|
341 |
+
|
342 |
+
} else {
|
343 |
+
view = fancybox_get_viewport();
|
344 |
+
|
345 |
+
from = {
|
346 |
+
width : 1,
|
347 |
+
height : 1,
|
348 |
+
top : view[3] + view[1] * 0.5,
|
349 |
+
left : view[2] + view[0] * 0.5
|
350 |
+
};
|
351 |
+
}
|
352 |
+
|
353 |
+
return from;
|
354 |
+
},
|
355 |
+
|
356 |
+
fancybox_show = function() {
|
357 |
+
loading.hide();
|
358 |
+
|
359 |
+
if (wrap.is(":visible") && $.isFunction(currentOpts.onCleanup)) {
|
360 |
+
if (currentOpts.onCleanup(currentArray, currentIndex, currentOpts) === false) {
|
361 |
+
$.event.trigger('fancybox-cancel');
|
362 |
+
|
363 |
+
busy = false;
|
364 |
+
return;
|
365 |
+
}
|
366 |
+
}
|
367 |
+
|
368 |
+
currentArray = selectedArray;
|
369 |
+
currentIndex = selectedIndex;
|
370 |
+
currentOpts = selectedOpts;
|
371 |
+
|
372 |
+
inner.get(0).scrollTop = 0;
|
373 |
+
inner.get(0).scrollLeft = 0;
|
374 |
+
|
375 |
+
if (currentOpts.overlayShow) {
|
376 |
+
if (isIE6) {
|
377 |
+
$('select:not(#fancybox-tmp select)').filter(function() {
|
378 |
+
return this.style.visibility !== 'hidden';
|
379 |
+
}).css({'visibility':'hidden'}).one('fancybox-cleanup', function() {
|
380 |
+
this.style.visibility = 'inherit';
|
381 |
+
});
|
382 |
+
}
|
383 |
+
|
384 |
+
overlay.css({
|
385 |
+
'background-color' : currentOpts.overlayColor,
|
386 |
+
'opacity' : currentOpts.overlayOpacity
|
387 |
+
}).unbind().show();
|
388 |
+
}
|
389 |
+
|
390 |
+
final_pos = fancybox_get_zoom_to();
|
391 |
+
|
392 |
+
fancybox_process_title();
|
393 |
+
|
394 |
+
if (wrap.is(":visible")) {
|
395 |
+
$( close.add( nav_left ).add( nav_right ) ).hide();
|
396 |
+
|
397 |
+
var pos = wrap.position(),
|
398 |
+
equal;
|
399 |
+
|
400 |
+
start_pos = {
|
401 |
+
top : pos.top ,
|
402 |
+
left : pos.left,
|
403 |
+
width : wrap.width(),
|
404 |
+
height : wrap.height()
|
405 |
+
};
|
406 |
+
|
407 |
+
equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
|
408 |
+
|
409 |
+
inner.fadeOut(currentOpts.changeFade, function() {
|
410 |
+
var finish_resizing = function() {
|
411 |
+
inner.html( tmp.contents() ).fadeIn(currentOpts.changeFade, _finish);
|
412 |
+
};
|
413 |
+
|
414 |
+
$.event.trigger('fancybox-change');
|
415 |
+
|
416 |
+
inner.empty().css('overflow', 'hidden');
|
417 |
+
|
418 |
+
if (equal) {
|
419 |
+
inner.css({
|
420 |
+
top : currentOpts.padding,
|
421 |
+
left : currentOpts.padding,
|
422 |
+
width : Math.max(final_pos.width - (currentOpts.padding * 2), 1),
|
423 |
+
height : Math.max(final_pos.height - (currentOpts.padding * 2) - titleh, 1)
|
424 |
+
});
|
425 |
+
|
426 |
+
finish_resizing();
|
427 |
+
|
428 |
+
} else {
|
429 |
+
inner.css({
|
430 |
+
top : currentOpts.padding,
|
431 |
+
left : currentOpts.padding,
|
432 |
+
width : Math.max(start_pos.width - (currentOpts.padding * 2), 1),
|
433 |
+
height : Math.max(start_pos.height - (currentOpts.padding * 2), 1)
|
434 |
+
});
|
435 |
+
|
436 |
+
fx.prop = 0;
|
437 |
+
|
438 |
+
$(fx).animate({ prop: 1 }, {
|
439 |
+
duration : currentOpts.changeSpeed,
|
440 |
+
easing : currentOpts.easingChange,
|
441 |
+
step : fancybox_draw,
|
442 |
+
complete : finish_resizing
|
443 |
+
});
|
444 |
+
}
|
445 |
+
});
|
446 |
+
|
447 |
+
return;
|
448 |
+
}
|
449 |
+
|
450 |
+
wrap.css('opacity', 1);
|
451 |
+
|
452 |
+
if (currentOpts.transitionIn == 'elastic') {
|
453 |
+
start_pos = fancybox_get_zoom_from();
|
454 |
+
|
455 |
+
inner.css({
|
456 |
+
top : currentOpts.padding,
|
457 |
+
left : currentOpts.padding,
|
458 |
+
width : Math.max(start_pos.width - (currentOpts.padding * 2), 1),
|
459 |
+
height : Math.max(start_pos.height - (currentOpts.padding * 2), 1)
|
460 |
+
})
|
461 |
+
.html( tmp.contents() );
|
462 |
+
|
463 |
+
wrap.css(start_pos).show();
|
464 |
+
|
465 |
+
if (currentOpts.opacity) {
|
466 |
+
final_pos.opacity = 0;
|
467 |
+
}
|
468 |
+
|
469 |
+
fx.prop = 0;
|
470 |
+
|
471 |
+
$(fx).animate({ prop: 1 }, {
|
472 |
+
duration : currentOpts.speedIn,
|
473 |
+
easing : currentOpts.easingIn,
|
474 |
+
step : fancybox_draw,
|
475 |
+
complete : _finish
|
476 |
+
});
|
477 |
+
|
478 |
+
} else {
|
479 |
+
inner.css({
|
480 |
+
top : currentOpts.padding,
|
481 |
+
left : currentOpts.padding,
|
482 |
+
width : Math.max(final_pos.width - (currentOpts.padding * 2), 1),
|
483 |
+
height : Math.max(final_pos.height - (currentOpts.padding * 2) - titleh, 1)
|
484 |
+
})
|
485 |
+
.html( tmp.contents() );
|
486 |
+
|
487 |
+
wrap.css( final_pos ).fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
|
488 |
+
}
|
489 |
+
},
|
490 |
+
|
491 |
+
fancybox_process_inline = function() {
|
492 |
+
tmp.width( selectedOpts.width );
|
493 |
+
tmp.height( selectedOpts.height );
|
494 |
+
|
495 |
+
if (selectedOpts.width == 'auto') {
|
496 |
+
selectedOpts.width = tmp.width();
|
497 |
+
}
|
498 |
+
if (selectedOpts.height == 'auto') {
|
499 |
+
selectedOpts.height = tmp.height();
|
500 |
+
}
|
501 |
+
|
502 |
+
fancybox_show();
|
503 |
+
},
|
504 |
+
|
505 |
+
fancybox_process_image = function() {
|
506 |
+
busy = true;
|
507 |
+
|
508 |
+
selectedOpts.width = imgPreloader.width;
|
509 |
+
selectedOpts.height = imgPreloader.height;
|
510 |
+
|
511 |
+
$("<img />").attr({
|
512 |
+
'id' : 'fancybox-img',
|
513 |
+
'src' : imgPreloader.src,
|
514 |
+
'alt' : selectedOpts.title
|
515 |
+
}).appendTo( tmp );
|
516 |
+
|
517 |
+
fancybox_show();
|
518 |
+
},
|
519 |
+
|
520 |
+
fancybox_start = function() {
|
521 |
+
fancybox_abort();
|
522 |
+
|
523 |
+
var obj = selectedArray[ selectedIndex ],
|
524 |
+
href,
|
525 |
+
type,
|
526 |
+
title,
|
527 |
+
str,
|
528 |
+
emb,
|
529 |
+
selector,
|
530 |
+
data;
|
531 |
+
|
532 |
+
selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
|
533 |
+
title = obj.title || $(obj).title || selectedOpts.title || '';
|
534 |
+
|
535 |
+
if (obj.nodeName && !selectedOpts.orig) {
|
536 |
+
selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
|
537 |
+
}
|
538 |
+
|
539 |
+
if (title === '' && selectedOpts.orig) {
|
540 |
+
title = selectedOpts.orig.attr('alt');
|
541 |
+
}
|
542 |
+
|
543 |
+
if (obj.nodeName && (/^(?:javascript|#)/i).test(obj.href)) {
|
544 |
+
href = selectedOpts.href || null;
|
545 |
+
} else {
|
546 |
+
href = selectedOpts.href || obj.href || null;
|
547 |
+
}
|
548 |
+
|
549 |
+
if (selectedOpts.type) {
|
550 |
+
type = selectedOpts.type;
|
551 |
+
|
552 |
+
if (!href) {
|
553 |
+
href = selectedOpts.content;
|
554 |
+
}
|
555 |
+
|
556 |
+
} else if (selectedOpts.content) {
|
557 |
+
type = 'html';
|
558 |
+
|
559 |
+
} else if (href) {
|
560 |
+
if (href.match(imgRegExp)) {
|
561 |
+
type = 'image';
|
562 |
+
|
563 |
+
} else if (href.match(swfRegExp)) {
|
564 |
+
type = 'swf';
|
565 |
+
|
566 |
+
} else if ($(obj).hasClass("iframe")) {
|
567 |
+
type = 'iframe';
|
568 |
+
|
569 |
+
} else if (href.match(/#/)) {
|
570 |
+
obj = href.substr(href.indexOf("#"));
|
571 |
+
|
572 |
+
type = $(obj).length > 0 ? 'inline' : 'ajax';
|
573 |
+
} else {
|
574 |
+
type = 'ajax';
|
575 |
+
}
|
576 |
+
} else {
|
577 |
+
type = 'inline';
|
578 |
+
}
|
579 |
+
|
580 |
+
selectedOpts.type = type;
|
581 |
+
selectedOpts.href = href;
|
582 |
+
selectedOpts.title = title;
|
583 |
+
|
584 |
+
if (selectedOpts.autoDimensions && selectedOpts.type !== 'iframe' && selectedOpts.type !== 'swf') {
|
585 |
+
selectedOpts.width = 'auto';
|
586 |
+
selectedOpts.height = 'auto';
|
587 |
+
}
|
588 |
+
|
589 |
+
if (selectedOpts.modal) {
|
590 |
+
selectedOpts.overlayShow = true;
|
591 |
+
selectedOpts.hideOnOverlayClick = false;
|
592 |
+
selectedOpts.hideOnContentClick = false;
|
593 |
+
selectedOpts.enableEscapeButton = false;
|
594 |
+
selectedOpts.showCloseButton = false;
|
595 |
+
}
|
596 |
+
|
597 |
+
if ($.isFunction(selectedOpts.onStart)) {
|
598 |
+
if (selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts) === false) {
|
599 |
+
busy = false;
|
600 |
+
return;
|
601 |
+
}
|
602 |
+
}
|
603 |
+
|
604 |
+
|
605 |
+
tmp.css('padding', (shadow + selectedOpts.padding + selectedOpts.margin));
|
606 |
+
|
607 |
+
$('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
|
608 |
+
$(this).replaceWith(inner.children());
|
609 |
+
});
|
610 |
+
|
611 |
+
switch (type) {
|
612 |
+
case 'html' :
|
613 |
+
tmp.html( selectedOpts.content );
|
614 |
+
fancybox_process_inline();
|
615 |
+
break;
|
616 |
+
|
617 |
+
case 'inline' :
|
618 |
+
$('<div class="fancybox-inline-tmp" />').hide().insertBefore( $(obj) ).bind('fancybox-cleanup', function() {
|
619 |
+
$(this).replaceWith(inner.children());
|
620 |
+
}).bind('fancybox-cancel', function() {
|
621 |
+
$(this).replaceWith(tmp.children());
|
622 |
+
});
|
623 |
+
|
624 |
+
$(obj).appendTo(tmp);
|
625 |
+
|
626 |
+
fancybox_process_inline();
|
627 |
+
break;
|
628 |
+
|
629 |
+
case 'image':
|
630 |
+
busy = false;
|
631 |
+
|
632 |
+
$.fancybox.showActivity();
|
633 |
+
|
634 |
+
imgPreloader = new Image();
|
635 |
+
|
636 |
+
imgPreloader.onerror = function() {
|
637 |
+
fancybox_error();
|
638 |
+
};
|
639 |
+
|
640 |
+
imgPreloader.onload = function() {
|
641 |
+
imgPreloader.onerror = null;
|
642 |
+
imgPreloader.onload = null;
|
643 |
+
fancybox_process_image();
|
644 |
+
};
|
645 |
+
|
646 |
+
imgPreloader.src = href;
|
647 |
+
|
648 |
+
break;
|
649 |
+
|
650 |
+
case 'swf':
|
651 |
+
str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
|
652 |
+
emb = '';
|
653 |
+
|
654 |
+
$.each(selectedOpts.swf, function(name, val) {
|
655 |
+
str += '<param name="' + name + '" value="' + val + '"></param>';
|
656 |
+
emb += ' ' + name + '="' + val + '"';
|
657 |
+
});
|
658 |
+
|
659 |
+
str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
|
660 |
+
|
661 |
+
tmp.html(str);
|
662 |
+
|
663 |
+
fancybox_process_inline();
|
664 |
+
break;
|
665 |
+
|
666 |
+
case 'ajax':
|
667 |
+
selector = href.split('#', 2);
|
668 |
+
data = selectedOpts.ajax.data || {};
|
669 |
+
|
670 |
+
if (selector.length > 1) {
|
671 |
+
href = selector[0];
|
672 |
+
|
673 |
+
if (typeof data == "string") {
|
674 |
+
data += '&selector=' + selector[1];
|
675 |
+
} else {
|
676 |
+
data.selector = selector[1];
|
677 |
+
}
|
678 |
+
}
|
679 |
+
|
680 |
+
busy = false;
|
681 |
+
$.fancybox.showActivity();
|
682 |
+
|
683 |
+
ajaxLoader = $.ajax($.extend(selectedOpts.ajax, {
|
684 |
+
url : href,
|
685 |
+
data : data,
|
686 |
+
error : fancybox_error,
|
687 |
+
success : function(data, textStatus, XMLHttpRequest) {
|
688 |
+
if (ajaxLoader.status == 200) {
|
689 |
+
tmp.html( data );
|
690 |
+
fancybox_process_inline();
|
691 |
+
}
|
692 |
+
}
|
693 |
+
}));
|
694 |
+
|
695 |
+
break;
|
696 |
+
|
697 |
+
case 'iframe' :
|
698 |
+
$('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" scrolling="' + selectedOpts.scrolling + '" src="' + selectedOpts.href + '"></iframe>').appendTo(tmp);
|
699 |
+
fancybox_show();
|
700 |
+
break;
|
701 |
+
}
|
702 |
+
},
|
703 |
+
|
704 |
+
fancybox_animate_loading = function() {
|
705 |
+
if (!loading.is(':visible')){
|
706 |
+
clearInterval(loadingTimer);
|
707 |
+
return;
|
708 |
+
}
|
709 |
+
|
710 |
+
$('div', loading).css('top', (loadingFrame * -40) + 'px');
|
711 |
+
|
712 |
+
loadingFrame = (loadingFrame + 1) % 12;
|
713 |
+
},
|
714 |
+
|
715 |
+
fancybox_init = function() {
|
716 |
+
if ($("#fancybox-wrap").length) {
|
717 |
+
return;
|
718 |
+
}
|
719 |
+
|
720 |
+
$('body').append(
|
721 |
+
tmp = $('<div id="fancybox-tmp"></div>'),
|
722 |
+
loading = $('<div id="fancybox-loading"><div></div></div>'),
|
723 |
+
overlay = $('<div id="fancybox-overlay"></div>'),
|
724 |
+
wrap = $('<div id="fancybox-wrap"></div>')
|
725 |
+
);
|
726 |
+
|
727 |
+
if (!$.support.opacity) {
|
728 |
+
wrap.addClass('fancybox-ie');
|
729 |
+
loading.addClass('fancybox-ie');
|
730 |
+
}
|
731 |
+
|
732 |
+
outer = $('<div id="fancybox-outer"></div>')
|
733 |
+
.append('<div class="fancy-bg" id="fancy-bg-n"></div><div class="fancy-bg" id="fancy-bg-ne"></div><div class="fancy-bg" id="fancy-bg-e"></div><div class="fancy-bg" id="fancy-bg-se"></div><div class="fancy-bg" id="fancy-bg-s"></div><div class="fancy-bg" id="fancy-bg-sw"></div><div class="fancy-bg" id="fancy-bg-w"></div><div class="fancy-bg" id="fancy-bg-nw"></div>')
|
734 |
+
.appendTo( wrap );
|
735 |
+
|
736 |
+
outer.append(
|
737 |
+
inner = $('<div id="fancybox-inner"></div>'),
|
738 |
+
close = $('<a id="fancybox-close"></a>'),
|
739 |
+
|
740 |
+
nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
|
741 |
+
nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
|
742 |
+
);
|
743 |
+
|
744 |
+
close.click($.fancybox.close);
|
745 |
+
loading.click($.fancybox.cancel);
|
746 |
+
|
747 |
+
nav_left.click(function(e) {
|
748 |
+
e.preventDefault();
|
749 |
+
$.fancybox.prev();
|
750 |
+
});
|
751 |
+
|
752 |
+
nav_right.click(function(e) {
|
753 |
+
e.preventDefault();
|
754 |
+
$.fancybox.next();
|
755 |
+
});
|
756 |
+
|
757 |
+
if (isIE6) {
|
758 |
+
overlay.get(0).style.setExpression('height', "document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");
|
759 |
+
loading.get(0).style.setExpression('top', "(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");
|
760 |
+
|
761 |
+
outer.prepend('<iframe id="fancybox-hide-sel-frame" src="javascript:\'\';" scrolling="no" frameborder="0" ></iframe>');
|
762 |
+
}
|
763 |
+
};
|
764 |
+
|
765 |
+
/*
|
766 |
+
* Public methods
|
767 |
+
*/
|
768 |
+
|
769 |
+
$.fn.fancybox = function(options) {
|
770 |
+
$(this)
|
771 |
+
.data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
|
772 |
+
.unbind('click.fb').bind('click.fb', function(e) {
|
773 |
+
e.preventDefault();
|
774 |
+
|
775 |
+
if (busy) {
|
776 |
+
return;
|
777 |
+
}
|
778 |
+
|
779 |
+
busy = true;
|
780 |
+
|
781 |
+
$(this).blur();
|
782 |
+
|
783 |
+
selectedArray = [];
|
784 |
+
selectedIndex = 0;
|
785 |
+
|
786 |
+
var rel = $(this).attr('rel') || '';
|
787 |
+
|
788 |
+
if (!rel || rel == '' || rel === 'nofollow') {
|
789 |
+
selectedArray.push(this);
|
790 |
+
|
791 |
+
} else {
|
792 |
+
selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
|
793 |
+
selectedIndex = selectedArray.index( this );
|
794 |
+
}
|
795 |
+
|
796 |
+
fancybox_start();
|
797 |
+
|
798 |
+
return false;
|
799 |
+
});
|
800 |
+
|
801 |
+
return this;
|
802 |
+
};
|
803 |
+
|
804 |
+
$.fancybox = function(obj) {
|
805 |
+
if (busy) {
|
806 |
+
return;
|
807 |
+
}
|
808 |
+
|
809 |
+
busy = true;
|
810 |
+
|
811 |
+
var opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
|
812 |
+
|
813 |
+
selectedArray = [];
|
814 |
+
selectedIndex = opts.index || 0;
|
815 |
+
|
816 |
+
if ($.isArray(obj)) {
|
817 |
+
for (var i = 0, j = obj.length; i < j; i++) {
|
818 |
+
if (typeof obj[i] == 'object') {
|
819 |
+
$(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
|
820 |
+
} else {
|
821 |
+
obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
|
822 |
+
}
|
823 |
+
}
|
824 |
+
|
825 |
+
selectedArray = jQuery.merge(selectedArray, obj);
|
826 |
+
|
827 |
+
} else {
|
828 |
+
if (typeof obj == 'object') {
|
829 |
+
$(obj).data('fancybox', $.extend({}, opts, obj));
|
830 |
+
} else {
|
831 |
+
obj = $({}).data('fancybox', $.extend({content : obj}, opts));
|
832 |
+
}
|
833 |
+
|
834 |
+
selectedArray.push(obj);
|
835 |
+
}
|
836 |
+
|
837 |
+
if (selectedIndex > selectedArray.length || selectedIndex < 0) {
|
838 |
+
selectedIndex = 0;
|
839 |
+
}
|
840 |
+
|
841 |
+
fancybox_start();
|
842 |
+
};
|
843 |
+
|
844 |
+
$.fancybox.showActivity = function() {
|
845 |
+
clearInterval(loadingTimer);
|
846 |
+
|
847 |
+
loading.show();
|
848 |
+
loadingTimer = setInterval(fancybox_animate_loading, 66);
|
849 |
+
};
|
850 |
+
|
851 |
+
$.fancybox.hideActivity = function() {
|
852 |
+
loading.hide();
|
853 |
+
};
|
854 |
+
|
855 |
+
$.fancybox.next = function() {
|
856 |
+
return $.fancybox.pos( currentIndex + 1);
|
857 |
+
};
|
858 |
+
|
859 |
+
$.fancybox.prev = function() {
|
860 |
+
return $.fancybox.pos( currentIndex - 1);
|
861 |
+
};
|
862 |
+
|
863 |
+
$.fancybox.pos = function(pos) {
|
864 |
+
if (busy) {
|
865 |
+
return;
|
866 |
+
}
|
867 |
+
|
868 |
+
pos = parseInt(pos, 10);
|
869 |
+
|
870 |
+
if (pos > -1 && currentArray.length > pos) {
|
871 |
+
selectedIndex = pos;
|
872 |
+
fancybox_start();
|
873 |
+
}
|
874 |
+
|
875 |
+
if (currentOpts.cyclic && currentArray.length > 1 && pos < 0) {
|
876 |
+
selectedIndex = currentArray.length - 1;
|
877 |
+
fancybox_start();
|
878 |
+
}
|
879 |
+
|
880 |
+
if (currentOpts.cyclic && currentArray.length > 1 && pos >= currentArray.length) {
|
881 |
+
selectedIndex = 0;
|
882 |
+
fancybox_start();
|
883 |
+
}
|
884 |
+
|
885 |
+
return;
|
886 |
+
};
|
887 |
+
|
888 |
+
$.fancybox.cancel = function() {
|
889 |
+
if (busy) {
|
890 |
+
return;
|
891 |
+
}
|
892 |
+
|
893 |
+
busy = true;
|
894 |
+
|
895 |
+
$.event.trigger('fancybox-cancel');
|
896 |
+
|
897 |
+
fancybox_abort();
|
898 |
+
|
899 |
+
if (selectedOpts && $.isFunction(selectedOpts.onCancel)) {
|
900 |
+
selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
|
901 |
+
}
|
902 |
+
|
903 |
+
busy = false;
|
904 |
+
};
|
905 |
+
|
906 |
+
// Note: within an iframe use - parent.$.fancybox.close();
|
907 |
+
$.fancybox.close = function() {
|
908 |
+
if (busy || wrap.is(':hidden')) {
|
909 |
+
return;
|
910 |
+
|
911 |
+
}
|
912 |
+
|
913 |
+
busy = true;
|
914 |
+
|
915 |
+
if (currentOpts && $.isFunction(currentOpts.onCleanup)) {
|
916 |
+
if (currentOpts.onCleanup(currentArray, currentIndex, currentOpts) === false) {
|
917 |
+
busy = false;
|
918 |
+
return;
|
919 |
+
}
|
920 |
+
}
|
921 |
+
|
922 |
+
fancybox_abort();
|
923 |
+
|
924 |
+
$(close.add( nav_left ).add( nav_right )).hide();
|
925 |
+
|
926 |
+
$('#fancybox-title').remove();
|
927 |
+
|
928 |
+
wrap.add(inner).add(overlay).unbind();
|
929 |
+
|
930 |
+
$(window).unbind("resize.fb scroll.fb");
|
931 |
+
$(document).unbind('keydown.fb');
|
932 |
+
|
933 |
+
function _cleanup() {
|
934 |
+
overlay.fadeOut('fast');
|
935 |
+
|
936 |
+
wrap.hide();
|
937 |
+
|
938 |
+
$.event.trigger('fancybox-cleanup');
|
939 |
+
|
940 |
+
inner.empty();
|
941 |
+
|
942 |
+
if ($.isFunction(currentOpts.onClosed)) {
|
943 |
+
currentOpts.onClosed(currentArray, currentIndex, currentOpts);
|
944 |
+
}
|
945 |
+
|
946 |
+
currentArray = selectedOpts = [];
|
947 |
+
currentIndex = selectedIndex = 0;
|
948 |
+
currentOpts = selectedOpts = {};
|
949 |
+
|
950 |
+
busy = false;
|
951 |
+
}
|
952 |
+
|
953 |
+
inner.css('overflow', 'hidden');
|
954 |
+
|
955 |
+
if (currentOpts.transitionOut == 'elastic') {
|
956 |
+
start_pos = fancybox_get_zoom_from();
|
957 |
+
|
958 |
+
var pos = wrap.position();
|
959 |
+
|
960 |
+
final_pos = {
|
961 |
+
top : pos.top ,
|
962 |
+
left : pos.left,
|
963 |
+
width : wrap.width(),
|
964 |
+
height : wrap.height()
|
965 |
+
};
|
966 |
+
|
967 |
+
if (currentOpts.opacity) {
|
968 |
+
final_pos.opacity = 1;
|
969 |
+
}
|
970 |
+
|
971 |
+
fx.prop = 1;
|
972 |
+
|
973 |
+
$(fx).animate({ prop: 0 }, {
|
974 |
+
duration : currentOpts.speedOut,
|
975 |
+
easing : currentOpts.easingOut,
|
976 |
+
step : fancybox_draw,
|
977 |
+
complete : _cleanup
|
978 |
+
});
|
979 |
+
|
980 |
+
} else {
|
981 |
+
wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
|
982 |
+
}
|
983 |
+
};
|
984 |
+
|
985 |
+
$.fancybox.resize = function() {
|
986 |
+
var c, h;
|
987 |
+
|
988 |
+
if (busy || wrap.is(':hidden')) {
|
989 |
+
return;
|
990 |
+
}
|
991 |
+
|
992 |
+
busy = true;
|
993 |
+
|
994 |
+
c = inner.wrapInner("<div style='overflow:auto'></div>").children();
|
995 |
+
h = c.height();
|
996 |
+
|
997 |
+
wrap.css({height: h + (currentOpts.padding * 2) + titleh});
|
998 |
+
inner.css({height: h});
|
999 |
+
|
1000 |
+
c.replaceWith(c.children());
|
1001 |
+
|
1002 |
+
$.fancybox.center();
|
1003 |
+
};
|
1004 |
+
|
1005 |
+
$.fancybox.center = function() {
|
1006 |
+
busy = true;
|
1007 |
+
|
1008 |
+
var view = fancybox_get_viewport(),
|
1009 |
+
margin = currentOpts.margin,
|
1010 |
+
to = {};
|
1011 |
+
|
1012 |
+
to.top = view[3] + ((view[1] - ((wrap.height() - titleh) + (shadow * 2 ))) * 0.5);
|
1013 |
+
to.left = view[2] + ((view[0] - (wrap.width() + (shadow * 2 ))) * 0.5);
|
1014 |
+
|
1015 |
+
to.top = Math.max(view[3] + margin, to.top);
|
1016 |
+
to.left = Math.max(view[2] + margin, to.left);
|
1017 |
+
|
1018 |
+
wrap.css(to);
|
1019 |
+
|
1020 |
+
busy = false;
|
1021 |
+
};
|
1022 |
+
|
1023 |
+
$.fn.fancybox.defaults = {
|
1024 |
+
padding : 10,
|
1025 |
+
margin : 20,
|
1026 |
+
opacity : false,
|
1027 |
+
modal : false,
|
1028 |
+
cyclic : false,
|
1029 |
+
scrolling : 'no', // 'auto', 'yes' or 'no'
|
1030 |
+
|
1031 |
+
width : 480,
|
1032 |
+
height : 400,
|
1033 |
+
|
1034 |
+
autoScale : true,
|
1035 |
+
autoDimensions : false,
|
1036 |
+
centerOnScroll : true,
|
1037 |
+
|
1038 |
+
ajax : {},
|
1039 |
+
swf : { wmode: 'transparent' },
|
1040 |
+
|
1041 |
+
hideOnOverlayClick : true,
|
1042 |
+
hideOnContentClick : false,
|
1043 |
+
|
1044 |
+
overlayShow : true,
|
1045 |
+
overlayOpacity : 0.3,
|
1046 |
+
overlayColor : '#666',
|
1047 |
+
|
1048 |
+
titleShow : true,
|
1049 |
+
titlePosition : 'outside', // 'outside', 'inside' or 'over'
|
1050 |
+
titleFormat : null,
|
1051 |
+
|
1052 |
+
transitionIn : 'fade', // 'elastic', 'fade' or 'none'
|
1053 |
+
transitionOut : 'fade', // 'elastic', 'fade' or 'none'
|
1054 |
+
|
1055 |
+
speedIn : 300,
|
1056 |
+
speedOut : 300,
|
1057 |
+
|
1058 |
+
changeSpeed : 300,
|
1059 |
+
changeFade : 'fast',
|
1060 |
+
|
1061 |
+
easingIn : 'swing',
|
1062 |
+
easingOut : 'swing',
|
1063 |
+
|
1064 |
+
showCloseButton : true,
|
1065 |
+
showNavArrows : true,
|
1066 |
+
enableEscapeButton : true,
|
1067 |
+
|
1068 |
+
onStart : null,
|
1069 |
+
onCancel : null,
|
1070 |
+
onComplete : null,
|
1071 |
+
onCleanup : null,
|
1072 |
+
onClosed : null
|
1073 |
+
};
|
1074 |
+
|
1075 |
+
$(document).ready(function() {
|
1076 |
+
fancybox_init();
|
1077 |
+
});
|
1078 |
+
|
1079 |
+
})(jQuery);
|
js/varien/jquery.js
ADDED
@@ -0,0 +1,4376 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* jQuery JavaScript Library v1.3.2
|
3 |
+
* http://jquery.com/
|
4 |
+
*
|
5 |
+
* Copyright (c) 2009 John Resig
|
6 |
+
* Dual licensed under the MIT and GPL licenses.
|
7 |
+
* http://docs.jquery.com/License
|
8 |
+
*
|
9 |
+
* Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
|
10 |
+
* Revision: 6246
|
11 |
+
*/
|
12 |
+
(function(){
|
13 |
+
|
14 |
+
var
|
15 |
+
// Will speed up references to window, and allows munging its name.
|
16 |
+
window = this,
|
17 |
+
// Will speed up references to undefined, and allows munging its name.
|
18 |
+
undefined,
|
19 |
+
// Map over jQuery in case of overwrite
|
20 |
+
_jQuery = window.jQuery,
|
21 |
+
// Map over the $ in case of overwrite
|
22 |
+
_$ = window.$,
|
23 |
+
|
24 |
+
jQuery = window.jQuery = window.$ = function( selector, context ) {
|
25 |
+
// The jQuery object is actually just the init constructor 'enhanced'
|
26 |
+
return new jQuery.fn.init( selector, context );
|
27 |
+
},
|
28 |
+
|
29 |
+
// A simple way to check for HTML strings or ID strings
|
30 |
+
// (both of which we optimize for)
|
31 |
+
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
|
32 |
+
// Is it a simple selector
|
33 |
+
isSimple = /^.[^:#\[\.,]*$/;
|
34 |
+
|
35 |
+
jQuery.fn = jQuery.prototype = {
|
36 |
+
init: function( selector, context ) {
|
37 |
+
// Make sure that a selection was provided
|
38 |
+
selector = selector || document;
|
39 |
+
|
40 |
+
// Handle $(DOMElement)
|
41 |
+
if ( selector.nodeType ) {
|
42 |
+
this[0] = selector;
|
43 |
+
this.length = 1;
|
44 |
+
this.context = selector;
|
45 |
+
return this;
|
46 |
+
}
|
47 |
+
// Handle HTML strings
|
48 |
+
if ( typeof selector === "string" ) {
|
49 |
+
// Are we dealing with HTML string or an ID?
|
50 |
+
var match = quickExpr.exec( selector );
|
51 |
+
|
52 |
+
// Verify a match, and that no context was specified for #id
|
53 |
+
if ( match && (match[1] || !context) ) {
|
54 |
+
|
55 |
+
// HANDLE: $(html) -> $(array)
|
56 |
+
if ( match[1] )
|
57 |
+
selector = jQuery.clean( [ match[1] ], context );
|
58 |
+
|
59 |
+
// HANDLE: $("#id")
|
60 |
+
else {
|
61 |
+
var elem = document.getElementById( match[3] );
|
62 |
+
|
63 |
+
// Handle the case where IE and Opera return items
|
64 |
+
// by name instead of ID
|
65 |
+
if ( elem && elem.id != match[3] )
|
66 |
+
return jQuery().find( selector );
|
67 |
+
|
68 |
+
// Otherwise, we inject the element directly into the jQuery object
|
69 |
+
var ret = jQuery( elem || [] );
|
70 |
+
ret.context = document;
|
71 |
+
ret.selector = selector;
|
72 |
+
return ret;
|
73 |
+
}
|
74 |
+
|
75 |
+
// HANDLE: $(expr, [context])
|
76 |
+
// (which is just equivalent to: $(content).find(expr)
|
77 |
+
} else
|
78 |
+
return jQuery( context ).find( selector );
|
79 |
+
|
80 |
+
// HANDLE: $(function)
|
81 |
+
// Shortcut for document ready
|
82 |
+
} else if ( jQuery.isFunction( selector ) )
|
83 |
+
return jQuery( document ).ready( selector );
|
84 |
+
|
85 |
+
// Make sure that old selector state is passed along
|
86 |
+
if ( selector.selector && selector.context ) {
|
87 |
+
this.selector = selector.selector;
|
88 |
+
this.context = selector.context;
|
89 |
+
}
|
90 |
+
|
91 |
+
return this.setArray(jQuery.isArray( selector ) ?
|
92 |
+
selector :
|
93 |
+
jQuery.makeArray(selector));
|
94 |
+
},
|
95 |
+
|
96 |
+
// Start with an empty selector
|
97 |
+
selector: "",
|
98 |
+
|
99 |
+
// The current version of jQuery being used
|
100 |
+
jquery: "1.3.2",
|
101 |
+
|
102 |
+
// The number of elements contained in the matched element set
|
103 |
+
size: function() {
|
104 |
+
return this.length;
|
105 |
+
},
|
106 |
+
|
107 |
+
// Get the Nth element in the matched element set OR
|
108 |
+
// Get the whole matched element set as a clean array
|
109 |
+
get: function( num ) {
|
110 |
+
return num === undefined ?
|
111 |
+
|
112 |
+
// Return a 'clean' array
|
113 |
+
Array.prototype.slice.call( this ) :
|
114 |
+
|
115 |
+
// Return just the object
|
116 |
+
this[ num ];
|
117 |
+
},
|
118 |
+
|
119 |
+
// Take an array of elements and push it onto the stack
|
120 |
+
// (returning the new matched element set)
|
121 |
+
pushStack: function( elems, name, selector ) {
|
122 |
+
// Build a new jQuery matched element set
|
123 |
+
var ret = jQuery( elems );
|
124 |
+
|
125 |
+
// Add the old object onto the stack (as a reference)
|
126 |
+
ret.prevObject = this;
|
127 |
+
|
128 |
+
ret.context = this.context;
|
129 |
+
|
130 |
+
if ( name === "find" )
|
131 |
+
ret.selector = this.selector + (this.selector ? " " : "") + selector;
|
132 |
+
else if ( name )
|
133 |
+
ret.selector = this.selector + "." + name + "(" + selector + ")";
|
134 |
+
|
135 |
+
// Return the newly-formed element set
|
136 |
+
return ret;
|
137 |
+
},
|
138 |
+
|
139 |
+
// Force the current matched set of elements to become
|
140 |
+
// the specified array of elements (destroying the stack in the process)
|
141 |
+
// You should use pushStack() in order to do this, but maintain the stack
|
142 |
+
setArray: function( elems ) {
|
143 |
+
// Resetting the length to 0, then using the native Array push
|
144 |
+
// is a super-fast way to populate an object with array-like properties
|
145 |
+
this.length = 0;
|
146 |
+
Array.prototype.push.apply( this, elems );
|
147 |
+
|
148 |
+
return this;
|
149 |
+
},
|
150 |
+
|
151 |
+
// Execute a callback for every element in the matched set.
|
152 |
+
// (You can seed the arguments with an array of args, but this is
|
153 |
+
// only used internally.)
|
154 |
+
each: function( callback, args ) {
|
155 |
+
return jQuery.each( this, callback, args );
|
156 |
+
},
|
157 |
+
|
158 |
+
// Determine the position of an element within
|
159 |
+
// the matched set of elements
|
160 |
+
index: function( elem ) {
|
161 |
+
// Locate the position of the desired element
|
162 |
+
return jQuery.inArray(
|
163 |
+
// If it receives a jQuery object, the first element is used
|
164 |
+
elem && elem.jquery ? elem[0] : elem
|
165 |
+
, this );
|
166 |
+
},
|
167 |
+
|
168 |
+
attr: function( name, value, type ) {
|
169 |
+
var options = name;
|
170 |
+
|
171 |
+
// Look for the case where we're accessing a style value
|
172 |
+
if ( typeof name === "string" )
|
173 |
+
if ( value === undefined )
|
174 |
+
return this[0] && jQuery[ type || "attr" ]( this[0], name );
|
175 |
+
|
176 |
+
else {
|
177 |
+
options = {};
|
178 |
+
options[ name ] = value;
|
179 |
+
}
|
180 |
+
|
181 |
+
// Check to see if we're setting style values
|
182 |
+
return this.each(function(i){
|
183 |
+
// Set all the styles
|
184 |
+
for ( name in options )
|
185 |
+
jQuery.attr(
|
186 |
+
type ?
|
187 |
+
this.style :
|
188 |
+
this,
|
189 |
+
name, jQuery.prop( this, options[ name ], type, i, name )
|
190 |
+
);
|
191 |
+
});
|
192 |
+
},
|
193 |
+
|
194 |
+
css: function( key, value ) {
|
195 |
+
// ignore negative width and height values
|
196 |
+
if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
|
197 |
+
value = undefined;
|
198 |
+
return this.attr( key, value, "curCSS" );
|
199 |
+
},
|
200 |
+
|
201 |
+
text: function( text ) {
|
202 |
+
if ( typeof text !== "object" && text != null )
|
203 |
+
return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
|
204 |
+
|
205 |
+
var ret = "";
|
206 |
+
|
207 |
+
jQuery.each( text || this, function(){
|
208 |
+
jQuery.each( this.childNodes, function(){
|
209 |
+
if ( this.nodeType != 8 )
|
210 |
+
ret += this.nodeType != 1 ?
|
211 |
+
this.nodeValue :
|
212 |
+
jQuery.fn.text( [ this ] );
|
213 |
+
});
|
214 |
+
});
|
215 |
+
|
216 |
+
return ret;
|
217 |
+
},
|
218 |
+
|
219 |
+
wrapAll: function( html ) {
|
220 |
+
if ( this[0] ) {
|
221 |
+
// The elements to wrap the target around
|
222 |
+
var wrap = jQuery( html, this[0].ownerDocument ).clone();
|
223 |
+
|
224 |
+
if ( this[0].parentNode )
|
225 |
+
wrap.insertBefore( this[0] );
|
226 |
+
|
227 |
+
wrap.map(function(){
|
228 |
+
var elem = this;
|
229 |
+
|
230 |
+
while ( elem.firstChild )
|
231 |
+
elem = elem.firstChild;
|
232 |
+
|
233 |
+
return elem;
|
234 |
+
}).append(this);
|
235 |
+
}
|
236 |
+
|
237 |
+
return this;
|
238 |
+
},
|
239 |
+
|
240 |
+
wrapInner: function( html ) {
|
241 |
+
return this.each(function(){
|
242 |
+
jQuery( this ).contents().wrapAll( html );
|
243 |
+
});
|
244 |
+
},
|
245 |
+
|
246 |
+
wrap: function( html ) {
|
247 |
+
return this.each(function(){
|
248 |
+
jQuery( this ).wrapAll( html );
|
249 |
+
});
|
250 |
+
},
|
251 |
+
|
252 |
+
append: function() {
|
253 |
+
return this.domManip(arguments, true, function(elem){
|
254 |
+
if (this.nodeType == 1)
|
255 |
+
this.appendChild( elem );
|
256 |
+
});
|
257 |
+
},
|
258 |
+
|
259 |
+
prepend: function() {
|
260 |
+
return this.domManip(arguments, true, function(elem){
|
261 |
+
if (this.nodeType == 1)
|
262 |
+
this.insertBefore( elem, this.firstChild );
|
263 |
+
});
|
264 |
+
},
|
265 |
+
|
266 |
+
before: function() {
|
267 |
+
return this.domManip(arguments, false, function(elem){
|
268 |
+
this.parentNode.insertBefore( elem, this );
|
269 |
+
});
|
270 |
+
},
|
271 |
+
|
272 |
+
after: function() {
|
273 |
+
return this.domManip(arguments, false, function(elem){
|
274 |
+
this.parentNode.insertBefore( elem, this.nextSibling );
|
275 |
+
});
|
276 |
+
},
|
277 |
+
|
278 |
+
end: function() {
|
279 |
+
return this.prevObject || jQuery( [] );
|
280 |
+
},
|
281 |
+
|
282 |
+
// For internal use only.
|
283 |
+
// Behaves like an Array's method, not like a jQuery method.
|
284 |
+
push: [].push,
|
285 |
+
sort: [].sort,
|
286 |
+
splice: [].splice,
|
287 |
+
|
288 |
+
find: function( selector ) {
|
289 |
+
if ( this.length === 1 ) {
|
290 |
+
var ret = this.pushStack( [], "find", selector );
|
291 |
+
ret.length = 0;
|
292 |
+
jQuery.find( selector, this[0], ret );
|
293 |
+
return ret;
|
294 |
+
} else {
|
295 |
+
return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
|
296 |
+
return jQuery.find( selector, elem );
|
297 |
+
})), "find", selector );
|
298 |
+
}
|
299 |
+
},
|
300 |
+
|
301 |
+
clone: function( events ) {
|
302 |
+
// Do the clone
|
303 |
+
var ret = this.map(function(){
|
304 |
+
if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
|
305 |
+
// IE copies events bound via attachEvent when
|
306 |
+
// using cloneNode. Calling detachEvent on the
|
307 |
+
// clone will also remove the events from the orignal
|
308 |
+
// In order to get around this, we use innerHTML.
|
309 |
+
// Unfortunately, this means some modifications to
|
310 |
+
// attributes in IE that are actually only stored
|
311 |
+
// as properties will not be copied (such as the
|
312 |
+
// the name attribute on an input).
|
313 |
+
var html = this.outerHTML;
|
314 |
+
if ( !html ) {
|
315 |
+
var div = this.ownerDocument.createElement("div");
|
316 |
+
div.appendChild( this.cloneNode(true) );
|
317 |
+
html = div.innerHTML;
|
318 |
+
}
|
319 |
+
|
320 |
+
return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
|
321 |
+
} else
|
322 |
+
return this.cloneNode(true);
|
323 |
+
});
|
324 |
+
|
325 |
+
// Copy the events from the original to the clone
|
326 |
+
if ( events === true ) {
|
327 |
+
var orig = this.find("*").andSelf(), i = 0;
|
328 |
+
|
329 |
+
ret.find("*").andSelf().each(function(){
|
330 |
+
if ( this.nodeName !== orig[i].nodeName )
|
331 |
+
return;
|
332 |
+
|
333 |
+
var events = jQuery.data( orig[i], "events" );
|
334 |
+
|
335 |
+
for ( var type in events ) {
|
336 |
+
for ( var handler in events[ type ] ) {
|
337 |
+
jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
i++;
|
342 |
+
});
|
343 |
+
}
|
344 |
+
|
345 |
+
// Return the cloned set
|
346 |
+
return ret;
|
347 |
+
},
|
348 |
+
|
349 |
+
filter: function( selector ) {
|
350 |
+
return this.pushStack(
|
351 |
+
jQuery.isFunction( selector ) &&
|
352 |
+
jQuery.grep(this, function(elem, i){
|
353 |
+
return selector.call( elem, i );
|
354 |
+
}) ||
|
355 |
+
|
356 |
+
jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
|
357 |
+
return elem.nodeType === 1;
|
358 |
+
}) ), "filter", selector );
|
359 |
+
},
|
360 |
+
|
361 |
+
closest: function( selector ) {
|
362 |
+
var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
|
363 |
+
closer = 0;
|
364 |
+
|
365 |
+
return this.map(function(){
|
366 |
+
var cur = this;
|
367 |
+
while ( cur && cur.ownerDocument ) {
|
368 |
+
if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
|
369 |
+
jQuery.data(cur, "closest", closer);
|
370 |
+
return cur;
|
371 |
+
}
|
372 |
+
cur = cur.parentNode;
|
373 |
+
closer++;
|
374 |
+
}
|
375 |
+
});
|
376 |
+
},
|
377 |
+
|
378 |
+
not: function( selector ) {
|
379 |
+
if ( typeof selector === "string" )
|
380 |
+
// test special case where just one selector is passed in
|
381 |
+
if ( isSimple.test( selector ) )
|
382 |
+
return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
|
383 |
+
else
|
384 |
+
selector = jQuery.multiFilter( selector, this );
|
385 |
+
|
386 |
+
var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
|
387 |
+
return this.filter(function() {
|
388 |
+
return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
|
389 |
+
});
|
390 |
+
},
|
391 |
+
|
392 |
+
add: function( selector ) {
|
393 |
+
return this.pushStack( jQuery.unique( jQuery.merge(
|
394 |
+
this.get(),
|
395 |
+
typeof selector === "string" ?
|
396 |
+
jQuery( selector ) :
|
397 |
+
jQuery.makeArray( selector )
|
398 |
+
)));
|
399 |
+
},
|
400 |
+
|
401 |
+
is: function( selector ) {
|
402 |
+
return !!selector && jQuery.multiFilter( selector, this ).length > 0;
|
403 |
+
},
|
404 |
+
|
405 |
+
hasClass: function( selector ) {
|
406 |
+
return !!selector && this.is( "." + selector );
|
407 |
+
},
|
408 |
+
|
409 |
+
val: function( value ) {
|
410 |
+
if ( value === undefined ) {
|
411 |
+
var elem = this[0];
|
412 |
+
|
413 |
+
if ( elem ) {
|
414 |
+
if( jQuery.nodeName( elem, 'option' ) )
|
415 |
+
return (elem.attributes.value || {}).specified ? elem.value : elem.text;
|
416 |
+
|
417 |
+
// We need to handle select boxes special
|
418 |
+
if ( jQuery.nodeName( elem, "select" ) ) {
|
419 |
+
var index = elem.selectedIndex,
|
420 |
+
values = [],
|
421 |
+
options = elem.options,
|
422 |
+
one = elem.type == "select-one";
|
423 |
+
|
424 |
+
// Nothing was selected
|
425 |
+
if ( index < 0 )
|
426 |
+
return null;
|
427 |
+
|
428 |
+
// Loop through all the selected options
|
429 |
+
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
|
430 |
+
var option = options[ i ];
|
431 |
+
|
432 |
+
if ( option.selected ) {
|
433 |
+
// Get the specifc value for the option
|
434 |
+
value = jQuery(option).val();
|
435 |
+
|
436 |
+
// We don't need an array for one selects
|
437 |
+
if ( one )
|
438 |
+
return value;
|
439 |
+
|
440 |
+
// Multi-Selects return an array
|
441 |
+
values.push( value );
|
442 |
+
}
|
443 |
+
}
|
444 |
+
|
445 |
+
return values;
|
446 |
+
}
|
447 |
+
|
448 |
+
// Everything else, we just grab the value
|
449 |
+
return (elem.value || "").replace(/\r/g, "");
|
450 |
+
|
451 |
+
}
|
452 |
+
|
453 |
+
return undefined;
|
454 |
+
}
|
455 |
+
|
456 |
+
if ( typeof value === "number" )
|
457 |
+
value += '';
|
458 |
+
|
459 |
+
return this.each(function(){
|
460 |
+
if ( this.nodeType != 1 )
|
461 |
+
return;
|
462 |
+
|
463 |
+
if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
|
464 |
+
this.checked = (jQuery.inArray(this.value, value) >= 0 ||
|
465 |
+
jQuery.inArray(this.name, value) >= 0);
|
466 |
+
|
467 |
+
else if ( jQuery.nodeName( this, "select" ) ) {
|
468 |
+
var values = jQuery.makeArray(value);
|
469 |
+
|
470 |
+
jQuery( "option", this ).each(function(){
|
471 |
+
this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
|
472 |
+
jQuery.inArray( this.text, values ) >= 0);
|
473 |
+
});
|
474 |
+
|
475 |
+
if ( !values.length )
|
476 |
+
this.selectedIndex = -1;
|
477 |
+
|
478 |
+
} else
|
479 |
+
this.value = value;
|
480 |
+
});
|
481 |
+
},
|
482 |
+
|
483 |
+
html: function( value ) {
|
484 |
+
return value === undefined ?
|
485 |
+
(this[0] ?
|
486 |
+
this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
|
487 |
+
null) :
|
488 |
+
this.empty().append( value );
|
489 |
+
},
|
490 |
+
|
491 |
+
replaceWith: function( value ) {
|
492 |
+
return this.after( value ).remove();
|
493 |
+
},
|
494 |
+
|
495 |
+
eq: function( i ) {
|
496 |
+
return this.slice( i, +i + 1 );
|
497 |
+
},
|
498 |
+
|
499 |
+
slice: function() {
|
500 |
+
return this.pushStack( Array.prototype.slice.apply( this, arguments ),
|
501 |
+
"slice", Array.prototype.slice.call(arguments).join(",") );
|
502 |
+
},
|
503 |
+
|
504 |
+
map: function( callback ) {
|
505 |
+
return this.pushStack( jQuery.map(this, function(elem, i){
|
506 |
+
return callback.call( elem, i, elem );
|
507 |
+
}));
|
508 |
+
},
|
509 |
+
|
510 |
+
andSelf: function() {
|
511 |
+
return this.add( this.prevObject );
|
512 |
+
},
|
513 |
+
|
514 |
+
domManip: function( args, table, callback ) {
|
515 |
+
if ( this[0] ) {
|
516 |
+
var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
|
517 |
+
scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
|
518 |
+
first = fragment.firstChild;
|
519 |
+
|
520 |
+
if ( first )
|
521 |
+
for ( var i = 0, l = this.length; i < l; i++ )
|
522 |
+
callback.call( root(this[i], first), this.length > 1 || i > 0 ?
|
523 |
+
fragment.cloneNode(true) : fragment );
|
524 |
+
|
525 |
+
if ( scripts )
|
526 |
+
jQuery.each( scripts, evalScript );
|
527 |
+
}
|
528 |
+
|
529 |
+
return this;
|
530 |
+
|
531 |
+
function root( elem, cur ) {
|
532 |
+
return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
|
533 |
+
(elem.getElementsByTagName("tbody")[0] ||
|
534 |
+
elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
|
535 |
+
elem;
|
536 |
+
}
|
537 |
+
}
|
538 |
+
};
|
539 |
+
|
540 |
+
// Give the init function the jQuery prototype for later instantiation
|
541 |
+
jQuery.fn.init.prototype = jQuery.fn;
|
542 |
+
|
543 |
+
function evalScript( i, elem ) {
|
544 |
+
if ( elem.src )
|
545 |
+
jQuery.ajax({
|
546 |
+
url: elem.src,
|
547 |
+
async: false,
|
548 |
+
dataType: "script"
|
549 |
+
});
|
550 |
+
|
551 |
+
else
|
552 |
+
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
|
553 |
+
|
554 |
+
if ( elem.parentNode )
|
555 |
+
elem.parentNode.removeChild( elem );
|
556 |
+
}
|
557 |
+
|
558 |
+
function now(){
|
559 |
+
return +new Date;
|
560 |
+
}
|
561 |
+
|
562 |
+
jQuery.extend = jQuery.fn.extend = function() {
|
563 |
+
// copy reference to target object
|
564 |
+
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
|
565 |
+
|
566 |
+
// Handle a deep copy situation
|
567 |
+
if ( typeof target === "boolean" ) {
|
568 |
+
deep = target;
|
569 |
+
target = arguments[1] || {};
|
570 |
+
// skip the boolean and the target
|
571 |
+
i = 2;
|
572 |
+
}
|
573 |
+
|
574 |
+
// Handle case when target is a string or something (possible in deep copy)
|
575 |
+
if ( typeof target !== "object" && !jQuery.isFunction(target) )
|
576 |
+
target = {};
|
577 |
+
|
578 |
+
// extend jQuery itself if only one argument is passed
|
579 |
+
if ( length == i ) {
|
580 |
+
target = this;
|
581 |
+
--i;
|
582 |
+
}
|
583 |
+
|
584 |
+
for ( ; i < length; i++ )
|
585 |
+
// Only deal with non-null/undefined values
|
586 |
+
if ( (options = arguments[ i ]) != null )
|
587 |
+
// Extend the base object
|
588 |
+
for ( var name in options ) {
|
589 |
+
var src = target[ name ], copy = options[ name ];
|
590 |
+
|
591 |
+
// Prevent never-ending loop
|
592 |
+
if ( target === copy )
|
593 |
+
continue;
|
594 |
+
|
595 |
+
// Recurse if we're merging object values
|
596 |
+
if ( deep && copy && typeof copy === "object" && !copy.nodeType )
|
597 |
+
target[ name ] = jQuery.extend( deep,
|
598 |
+
// Never move original objects, clone them
|
599 |
+
src || ( copy.length != null ? [ ] : { } )
|
600 |
+
, copy );
|
601 |
+
|
602 |
+
// Don't bring in undefined values
|
603 |
+
else if ( copy !== undefined )
|
604 |
+
target[ name ] = copy;
|
605 |
+
|
606 |
+
}
|
607 |
+
|
608 |
+
// Return the modified object
|
609 |
+
return target;
|
610 |
+
};
|
611 |
+
|
612 |
+
// exclude the following css properties to add px
|
613 |
+
var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
|
614 |
+
// cache defaultView
|
615 |
+
defaultView = document.defaultView || {},
|
616 |
+
toString = Object.prototype.toString;
|
617 |
+
|
618 |
+
jQuery.extend({
|
619 |
+
noConflict: function( deep ) {
|
620 |
+
window.$ = _$;
|
621 |
+
|
622 |
+
if ( deep )
|
623 |
+
window.jQuery = _jQuery;
|
624 |
+
|
625 |
+
return jQuery;
|
626 |
+
},
|
627 |
+
|
628 |
+
// See test/unit/core.js for details concerning isFunction.
|
629 |
+
// Since version 1.3, DOM methods and functions like alert
|
630 |
+
// aren't supported. They return false on IE (#2968).
|
631 |
+
isFunction: function( obj ) {
|
632 |
+
return toString.call(obj) === "[object Function]";
|
633 |
+
},
|
634 |
+
|
635 |
+
isArray: function( obj ) {
|
636 |
+
return toString.call(obj) === "[object Array]";
|
637 |
+
},
|
638 |
+
|
639 |
+
// check if an element is in a (or is an) XML document
|
640 |
+
isXMLDoc: function( elem ) {
|
641 |
+
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
|
642 |
+
!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
|
643 |
+
},
|
644 |
+
|
645 |
+
// Evalulates a script in a global context
|
646 |
+
globalEval: function( data ) {
|
647 |
+
if ( data && /\S/.test(data) ) {
|
648 |
+
// Inspired by code by Andrea Giammarchi
|
649 |
+
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
|
650 |
+
var head = document.getElementsByTagName("head")[0] || document.documentElement,
|
651 |
+
script = document.createElement("script");
|
652 |
+
|
653 |
+
script.type = "text/javascript";
|
654 |
+
if ( jQuery.support.scriptEval )
|
655 |
+
script.appendChild( document.createTextNode( data ) );
|
656 |
+
else
|
657 |
+
script.text = data;
|
658 |
+
|
659 |
+
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
|
660 |
+
// This arises when a base node is used (#2709).
|
661 |
+
head.insertBefore( script, head.firstChild );
|
662 |
+
head.removeChild( script );
|
663 |
+
}
|
664 |
+
},
|
665 |
+
|
666 |
+
nodeName: function( elem, name ) {
|
667 |
+
return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
|
668 |
+
},
|
669 |
+
|
670 |
+
// args is for internal usage only
|
671 |
+
each: function( object, callback, args ) {
|
672 |
+
var name, i = 0, length = object.length;
|
673 |
+
|
674 |
+
if ( args ) {
|
675 |
+
if ( length === undefined ) {
|
676 |
+
for ( name in object )
|
677 |
+
if ( callback.apply( object[ name ], args ) === false )
|
678 |
+
break;
|
679 |
+
} else
|
680 |
+
for ( ; i < length; )
|
681 |
+
if ( callback.apply( object[ i++ ], args ) === false )
|
682 |
+
break;
|
683 |
+
|
684 |
+
// A special, fast, case for the most common use of each
|
685 |
+
} else {
|
686 |
+
if ( length === undefined ) {
|
687 |
+
for ( name in object )
|
688 |
+
if ( callback.call( object[ name ], name, object[ name ] ) === false )
|
689 |
+
break;
|
690 |
+
} else
|
691 |
+
for ( var value = object[0];
|
692 |
+
i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
|
693 |
+
}
|
694 |
+
|
695 |
+
return object;
|
696 |
+
},
|
697 |
+
|
698 |
+
prop: function( elem, value, type, i, name ) {
|
699 |
+
// Handle executable functions
|
700 |
+
if ( jQuery.isFunction( value ) )
|
701 |
+
value = value.call( elem, i );
|
702 |
+
|
703 |
+
// Handle passing in a number to a CSS property
|
704 |
+
return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
|
705 |
+
value + "px" :
|
706 |
+
value;
|
707 |
+
},
|
708 |
+
|
709 |
+
className: {
|
710 |
+
// internal only, use addClass("class")
|
711 |
+
add: function( elem, classNames ) {
|
712 |
+
jQuery.each((classNames || "").split(/\s+/), function(i, className){
|
713 |
+
if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
|
714 |
+
elem.className += (elem.className ? " " : "") + className;
|
715 |
+
});
|
716 |
+
},
|
717 |
+
|
718 |
+
// internal only, use removeClass("class")
|
719 |
+
remove: function( elem, classNames ) {
|
720 |
+
if (elem.nodeType == 1)
|
721 |
+
elem.className = classNames !== undefined ?
|
722 |
+
jQuery.grep(elem.className.split(/\s+/), function(className){
|
723 |
+
return !jQuery.className.has( classNames, className );
|
724 |
+
}).join(" ") :
|
725 |
+
"";
|
726 |
+
},
|
727 |
+
|
728 |
+
// internal only, use hasClass("class")
|
729 |
+
has: function( elem, className ) {
|
730 |
+
return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
|
731 |
+
}
|
732 |
+
},
|
733 |
+
|
734 |
+
// A method for quickly swapping in/out CSS properties to get correct calculations
|
735 |
+
swap: function( elem, options, callback ) {
|
736 |
+
var old = {};
|
737 |
+
// Remember the old values, and insert the new ones
|
738 |
+
for ( var name in options ) {
|
739 |
+
old[ name ] = elem.style[ name ];
|
740 |
+
elem.style[ name ] = options[ name ];
|
741 |
+
}
|
742 |
+
|
743 |
+
callback.call( elem );
|
744 |
+
|
745 |
+
// Revert the old values
|
746 |
+
for ( var name in options )
|
747 |
+
elem.style[ name ] = old[ name ];
|
748 |
+
},
|
749 |
+
|
750 |
+
css: function( elem, name, force, extra ) {
|
751 |
+
if ( name == "width" || name == "height" ) {
|
752 |
+
var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
|
753 |
+
|
754 |
+
function getWH() {
|
755 |
+
val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
|
756 |
+
|
757 |
+
if ( extra === "border" )
|
758 |
+
return;
|
759 |
+
|
760 |
+
jQuery.each( which, function() {
|
761 |
+
if ( !extra )
|
762 |
+
val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
|
763 |
+
if ( extra === "margin" )
|
764 |
+
val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
|
765 |
+
else
|
766 |
+
val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
|
767 |
+
});
|
768 |
+
}
|
769 |
+
|
770 |
+
if ( elem.offsetWidth !== 0 )
|
771 |
+
getWH();
|
772 |
+
else
|
773 |
+
jQuery.swap( elem, props, getWH );
|
774 |
+
|
775 |
+
return Math.max(0, Math.round(val));
|
776 |
+
}
|
777 |
+
|
778 |
+
return jQuery.curCSS( elem, name, force );
|
779 |
+
},
|
780 |
+
|
781 |
+
curCSS: function( elem, name, force ) {
|
782 |
+
var ret, style = elem.style;
|
783 |
+
|
784 |
+
// We need to handle opacity special in IE
|
785 |
+
if ( name == "opacity" && !jQuery.support.opacity ) {
|
786 |
+
ret = jQuery.attr( style, "opacity" );
|
787 |
+
|
788 |
+
return ret == "" ?
|
789 |
+
"1" :
|
790 |
+
ret;
|
791 |
+
}
|
792 |
+
|
793 |
+
// Make sure we're using the right name for getting the float value
|
794 |
+
if ( name.match( /float/i ) )
|
795 |
+
name = styleFloat;
|
796 |
+
|
797 |
+
if ( !force && style && style[ name ] )
|
798 |
+
ret = style[ name ];
|
799 |
+
|
800 |
+
else if ( defaultView.getComputedStyle ) {
|
801 |
+
|
802 |
+
// Only "float" is needed here
|
803 |
+
if ( name.match( /float/i ) )
|
804 |
+
name = "float";
|
805 |
+
|
806 |
+
name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
|
807 |
+
|
808 |
+
var computedStyle = defaultView.getComputedStyle( elem, null );
|
809 |
+
|
810 |
+
if ( computedStyle )
|
811 |
+
ret = computedStyle.getPropertyValue( name );
|
812 |
+
|
813 |
+
// We should always get a number back from opacity
|
814 |
+
if ( name == "opacity" && ret == "" )
|
815 |
+
ret = "1";
|
816 |
+
|
817 |
+
} else if ( elem.currentStyle ) {
|
818 |
+
var camelCase = name.replace(/\-(\w)/g, function(all, letter){
|
819 |
+
return letter.toUpperCase();
|
820 |
+
});
|
821 |
+
|
822 |
+
ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
|
823 |
+
|
824 |
+
// From the awesome hack by Dean Edwards
|
825 |
+
// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
|
826 |
+
|
827 |
+
// If we're not dealing with a regular pixel number
|
828 |
+
// but a number that has a weird ending, we need to convert it to pixels
|
829 |
+
if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
|
830 |
+
// Remember the original values
|
831 |
+
var left = style.left, rsLeft = elem.runtimeStyle.left;
|
832 |
+
|
833 |
+
// Put in the new values to get a computed value out
|
834 |
+
elem.runtimeStyle.left = elem.currentStyle.left;
|
835 |
+
style.left = ret || 0;
|
836 |
+
ret = style.pixelLeft + "px";
|
837 |
+
|
838 |
+
// Revert the changed values
|
839 |
+
style.left = left;
|
840 |
+
elem.runtimeStyle.left = rsLeft;
|
841 |
+
}
|
842 |
+
}
|
843 |
+
|
844 |
+
return ret;
|
845 |
+
},
|
846 |
+
|
847 |
+
clean: function( elems, context, fragment ) {
|
848 |
+
context = context || document;
|
849 |
+
|
850 |
+
// !context.createElement fails in IE with an error but returns typeof 'object'
|
851 |
+
if ( typeof context.createElement === "undefined" )
|
852 |
+
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
|
853 |
+
|
854 |
+
// If a single string is passed in and it's a single tag
|
855 |
+
// just do a createElement and skip the rest
|
856 |
+
if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
|
857 |
+
var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
|
858 |
+
if ( match )
|
859 |
+
return [ context.createElement( match[1] ) ];
|
860 |
+
}
|
861 |
+
|
862 |
+
var ret = [], scripts = [], div = context.createElement("div");
|
863 |
+
|
864 |
+
jQuery.each(elems, function(i, elem){
|
865 |
+
if ( typeof elem === "number" )
|
866 |
+
elem += '';
|
867 |
+
|
868 |
+
if ( !elem )
|
869 |
+
return;
|
870 |
+
|
871 |
+
// Convert html string into DOM nodes
|
872 |
+
if ( typeof elem === "string" ) {
|
873 |
+
// Fix "XHTML"-style tags in all browsers
|
874 |
+
elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
|
875 |
+
return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
|
876 |
+
all :
|
877 |
+
front + "></" + tag + ">";
|
878 |
+
});
|
879 |
+
|
880 |
+
// Trim whitespace, otherwise indexOf won't work as expected
|
881 |
+
var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
|
882 |
+
|
883 |
+
var wrap =
|
884 |
+
// option or optgroup
|
885 |
+
!tags.indexOf("<opt") &&
|
886 |
+
[ 1, "<select multiple='multiple'>", "</select>" ] ||
|
887 |
+
|
888 |
+
!tags.indexOf("<leg") &&
|
889 |
+
[ 1, "<fieldset>", "</fieldset>" ] ||
|
890 |
+
|
891 |
+
tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
|
892 |
+
[ 1, "<table>", "</table>" ] ||
|
893 |
+
|
894 |
+
!tags.indexOf("<tr") &&
|
895 |
+
[ 2, "<table><tbody>", "</tbody></table>" ] ||
|
896 |
+
|
897 |
+
// <thead> matched above
|
898 |
+
(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
|
899 |
+
[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
|
900 |
+
|
901 |
+
!tags.indexOf("<col") &&
|
902 |
+
[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
|
903 |
+
|
904 |
+
// IE can't serialize <link> and <script> tags normally
|
905 |
+
!jQuery.support.htmlSerialize &&
|
906 |
+
[ 1, "div<div>", "</div>" ] ||
|
907 |
+
|
908 |
+
[ 0, "", "" ];
|
909 |
+
|
910 |
+
// Go to html and back, then peel off extra wrappers
|
911 |
+
div.innerHTML = wrap[1] + elem + wrap[2];
|
912 |
+
|
913 |
+
// Move to the right depth
|
914 |
+
while ( wrap[0]-- )
|
915 |
+
div = div.lastChild;
|
916 |
+
|
917 |
+
// Remove IE's autoinserted <tbody> from table fragments
|
918 |
+
if ( !jQuery.support.tbody ) {
|
919 |
+
|
920 |
+
// String was a <table>, *may* have spurious <tbody>
|
921 |
+
var hasBody = /<tbody/i.test(elem),
|
922 |
+
tbody = !tags.indexOf("<table") && !hasBody ?
|
923 |
+
div.firstChild && div.firstChild.childNodes :
|
924 |
+
|
925 |
+
// String was a bare <thead> or <tfoot>
|
926 |
+
wrap[1] == "<table>" && !hasBody ?
|
927 |
+
div.childNodes :
|
928 |
+
[];
|
929 |
+
|
930 |
+
for ( var j = tbody.length - 1; j >= 0 ; --j )
|
931 |
+
if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
|
932 |
+
tbody[ j ].parentNode.removeChild( tbody[ j ] );
|
933 |
+
|
934 |
+
}
|
935 |
+
|
936 |
+
// IE completely kills leading whitespace when innerHTML is used
|
937 |
+
if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
|
938 |
+
div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
|
939 |
+
|
940 |
+
elem = jQuery.makeArray( div.childNodes );
|
941 |
+
}
|
942 |
+
|
943 |
+
if ( elem.nodeType )
|
944 |
+
ret.push( elem );
|
945 |
+
else
|
946 |
+
ret = jQuery.merge( ret, elem );
|
947 |
+
|
948 |
+
});
|
949 |
+
|
950 |
+
if ( fragment ) {
|
951 |
+
for ( var i = 0; ret[i]; i++ ) {
|
952 |
+
if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
|
953 |
+
scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
|
954 |
+
} else {
|
955 |
+
if ( ret[i].nodeType === 1 )
|
956 |
+
ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
|
957 |
+
fragment.appendChild( ret[i] );
|
958 |
+
}
|
959 |
+
}
|
960 |
+
|
961 |
+
return scripts;
|
962 |
+
}
|
963 |
+
|
964 |
+
return ret;
|
965 |
+
},
|
966 |
+
|
967 |
+
attr: function( elem, name, value ) {
|
968 |
+
// don't set attributes on text and comment nodes
|
969 |
+
if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
|
970 |
+
return undefined;
|
971 |
+
|
972 |
+
var notxml = !jQuery.isXMLDoc( elem ),
|
973 |
+
// Whether we are setting (or getting)
|
974 |
+
set = value !== undefined;
|
975 |
+
|
976 |
+
// Try to normalize/fix the name
|
977 |
+
name = notxml && jQuery.props[ name ] || name;
|
978 |
+
|
979 |
+
// Only do all the following if this is a node (faster for style)
|
980 |
+
// IE elem.getAttribute passes even for style
|
981 |
+
if ( elem.tagName ) {
|
982 |
+
|
983 |
+
// These attributes require special treatment
|
984 |
+
var special = /href|src|style/.test( name );
|
985 |
+
|
986 |
+
// Safari mis-reports the default selected property of a hidden option
|
987 |
+
// Accessing the parent's selectedIndex property fixes it
|
988 |
+
if ( name == "selected" && elem.parentNode )
|
989 |
+
elem.parentNode.selectedIndex;
|
990 |
+
|
991 |
+
// If applicable, access the attribute via the DOM 0 way
|
992 |
+
if ( name in elem && notxml && !special ) {
|
993 |
+
if ( set ){
|
994 |
+
// We can't allow the type property to be changed (since it causes problems in IE)
|
995 |
+
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
|
996 |
+
throw "type property can't be changed";
|
997 |
+
|
998 |
+
elem[ name ] = value;
|
999 |
+
}
|
1000 |
+
|
1001 |
+
// browsers index elements by id/name on forms, give priority to attributes.
|
1002 |
+
if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
|
1003 |
+
return elem.getAttributeNode( name ).nodeValue;
|
1004 |
+
|
1005 |
+
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
1006 |
+
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
1007 |
+
if ( name == "tabIndex" ) {
|
1008 |
+
var attributeNode = elem.getAttributeNode( "tabIndex" );
|
1009 |
+
return attributeNode && attributeNode.specified
|
1010 |
+
? attributeNode.value
|
1011 |
+
: elem.nodeName.match(/(button|input|object|select|textarea)/i)
|
1012 |
+
? 0
|
1013 |
+
: elem.nodeName.match(/^(a|area)$/i) && elem.href
|
1014 |
+
? 0
|
1015 |
+
: undefined;
|
1016 |
+
}
|
1017 |
+
|
1018 |
+
return elem[ name ];
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
if ( !jQuery.support.style && notxml && name == "style" )
|
1022 |
+
return jQuery.attr( elem.style, "cssText", value );
|
1023 |
+
|
1024 |
+
if ( set )
|
1025 |
+
// convert the value to a string (all browsers do this but IE) see #1070
|
1026 |
+
elem.setAttribute( name, "" + value );
|
1027 |
+
|
1028 |
+
var attr = !jQuery.support.hrefNormalized && notxml && special
|
1029 |
+
// Some attributes require a special call on IE
|
1030 |
+
? elem.getAttribute( name, 2 )
|
1031 |
+
: elem.getAttribute( name );
|
1032 |
+
|
1033 |
+
// Non-existent attributes return null, we normalize to undefined
|
1034 |
+
return attr === null ? undefined : attr;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
// elem is actually elem.style ... set the style
|
1038 |
+
|
1039 |
+
// IE uses filters for opacity
|
1040 |
+
if ( !jQuery.support.opacity && name == "opacity" ) {
|
1041 |
+
if ( set ) {
|
1042 |
+
// IE has trouble with opacity if it does not have layout
|
1043 |
+
// Force it by setting the zoom level
|
1044 |
+
elem.zoom = 1;
|
1045 |
+
|
1046 |
+
// Set the alpha filter to set the opacity
|
1047 |
+
elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
|
1048 |
+
(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
|
1049 |
+
}
|
1050 |
+
|
1051 |
+
return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
|
1052 |
+
(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
|
1053 |
+
"";
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
name = name.replace(/-([a-z])/ig, function(all, letter){
|
1057 |
+
return letter.toUpperCase();
|
1058 |
+
});
|
1059 |
+
|
1060 |
+
if ( set )
|
1061 |
+
elem[ name ] = value;
|
1062 |
+
|
1063 |
+
return elem[ name ];
|
1064 |
+
},
|
1065 |
+
|
1066 |
+
trim: function( text ) {
|
1067 |
+
return (text || "").replace( /^\s+|\s+$/g, "" );
|
1068 |
+
},
|
1069 |
+
|
1070 |
+
makeArray: function( array ) {
|
1071 |
+
var ret = [];
|
1072 |
+
|
1073 |
+
if( array != null ){
|
1074 |
+
var i = array.length;
|
1075 |
+
// The window, strings (and functions) also have 'length'
|
1076 |
+
if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
|
1077 |
+
ret[0] = array;
|
1078 |
+
else
|
1079 |
+
while( i )
|
1080 |
+
ret[--i] = array[i];
|
1081 |
+
}
|
1082 |
+
|
1083 |
+
return ret;
|
1084 |
+
},
|
1085 |
+
|
1086 |
+
inArray: function( elem, array ) {
|
1087 |
+
for ( var i = 0, length = array.length; i < length; i++ )
|
1088 |
+
// Use === because on IE, window == document
|
1089 |
+
if ( array[ i ] === elem )
|
1090 |
+
return i;
|
1091 |
+
|
1092 |
+
return -1;
|
1093 |
+
},
|
1094 |
+
|
1095 |
+
merge: function( first, second ) {
|
1096 |
+
// We have to loop this way because IE & Opera overwrite the length
|
1097 |
+
// expando of getElementsByTagName
|
1098 |
+
var i = 0, elem, pos = first.length;
|
1099 |
+
// Also, we need to make sure that the correct elements are being returned
|
1100 |
+
// (IE returns comment nodes in a '*' query)
|
1101 |
+
if ( !jQuery.support.getAll ) {
|
1102 |
+
while ( (elem = second[ i++ ]) != null )
|
1103 |
+
if ( elem.nodeType != 8 )
|
1104 |
+
first[ pos++ ] = elem;
|
1105 |
+
|
1106 |
+
} else
|
1107 |
+
while ( (elem = second[ i++ ]) != null )
|
1108 |
+
first[ pos++ ] = elem;
|
1109 |
+
|
1110 |
+
return first;
|
1111 |
+
},
|
1112 |
+
|
1113 |
+
unique: function( array ) {
|
1114 |
+
var ret = [], done = {};
|
1115 |
+
|
1116 |
+
try {
|
1117 |
+
|
1118 |
+
for ( var i = 0, length = array.length; i < length; i++ ) {
|
1119 |
+
var id = jQuery.data( array[ i ] );
|
1120 |
+
|
1121 |
+
if ( !done[ id ] ) {
|
1122 |
+
done[ id ] = true;
|
1123 |
+
ret.push( array[ i ] );
|
1124 |
+
}
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
} catch( e ) {
|
1128 |
+
ret = array;
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
return ret;
|
1132 |
+
},
|
1133 |
+
|
1134 |
+
grep: function( elems, callback, inv ) {
|
1135 |
+
var ret = [];
|
1136 |
+
|
1137 |
+
// Go through the array, only saving the items
|
1138 |
+
// that pass the validator function
|
1139 |
+
for ( var i = 0, length = elems.length; i < length; i++ )
|
1140 |
+
if ( !inv != !callback( elems[ i ], i ) )
|
1141 |
+
ret.push( elems[ i ] );
|
1142 |
+
|
1143 |
+
return ret;
|
1144 |
+
},
|
1145 |
+
|
1146 |
+
map: function( elems, callback ) {
|
1147 |
+
var ret = [];
|
1148 |
+
|
1149 |
+
// Go through the array, translating each of the items to their
|
1150 |
+
// new value (or values).
|
1151 |
+
for ( var i = 0, length = elems.length; i < length; i++ ) {
|
1152 |
+
var value = callback( elems[ i ], i );
|
1153 |
+
|
1154 |
+
if ( value != null )
|
1155 |
+
ret[ ret.length ] = value;
|
1156 |
+
}
|
1157 |
+
|
1158 |
+
return ret.concat.apply( [], ret );
|
1159 |
+
}
|
1160 |
+
});
|
1161 |
+
|
1162 |
+
// Use of jQuery.browser is deprecated.
|
1163 |
+
// It's included for backwards compatibility and plugins,
|
1164 |
+
// although they should work to migrate away.
|
1165 |
+
|
1166 |
+
var userAgent = navigator.userAgent.toLowerCase();
|
1167 |
+
|
1168 |
+
// Figure out what browser is being used
|
1169 |
+
jQuery.browser = {
|
1170 |
+
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
|
1171 |
+
safari: /webkit/.test( userAgent ),
|
1172 |
+
opera: /opera/.test( userAgent ),
|
1173 |
+
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
|
1174 |
+
mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
|
1175 |
+
};
|
1176 |
+
|
1177 |
+
jQuery.each({
|
1178 |
+
parent: function(elem){return elem.parentNode;},
|
1179 |
+
parents: function(elem){return jQuery.dir(elem,"parentNode");},
|
1180 |
+
next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
|
1181 |
+
prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
|
1182 |
+
nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
|
1183 |
+
prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
|
1184 |
+
siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
|
1185 |
+
children: function(elem){return jQuery.sibling(elem.firstChild);},
|
1186 |
+
contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
|
1187 |
+
}, function(name, fn){
|
1188 |
+
jQuery.fn[ name ] = function( selector ) {
|
1189 |
+
var ret = jQuery.map( this, fn );
|
1190 |
+
|
1191 |
+
if ( selector && typeof selector == "string" )
|
1192 |
+
ret = jQuery.multiFilter( selector, ret );
|
1193 |
+
|
1194 |
+
return this.pushStack( jQuery.unique( ret ), name, selector );
|
1195 |
+
};
|
1196 |
+
});
|
1197 |
+
|
1198 |
+
jQuery.each({
|
1199 |
+
appendTo: "append",
|
1200 |
+
prependTo: "prepend",
|
1201 |
+
insertBefore: "before",
|
1202 |
+
insertAfter: "after",
|
1203 |
+
replaceAll: "replaceWith"
|
1204 |
+
}, function(name, original){
|
1205 |
+
jQuery.fn[ name ] = function( selector ) {
|
1206 |
+
var ret = [], insert = jQuery( selector );
|
1207 |
+
|
1208 |
+
for ( var i = 0, l = insert.length; i < l; i++ ) {
|
1209 |
+
var elems = (i > 0 ? this.clone(true) : this).get();
|
1210 |
+
jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
|
1211 |
+
ret = ret.concat( elems );
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
return this.pushStack( ret, name, selector );
|
1215 |
+
};
|
1216 |
+
});
|
1217 |
+
|
1218 |
+
jQuery.each({
|
1219 |
+
removeAttr: function( name ) {
|
1220 |
+
jQuery.attr( this, name, "" );
|
1221 |
+
if (this.nodeType == 1)
|
1222 |
+
this.removeAttribute( name );
|
1223 |
+
},
|
1224 |
+
|
1225 |
+
addClass: function( classNames ) {
|
1226 |
+
jQuery.className.add( this, classNames );
|
1227 |
+
},
|
1228 |
+
|
1229 |
+
removeClass: function( classNames ) {
|
1230 |
+
jQuery.className.remove( this, classNames );
|
1231 |
+
},
|
1232 |
+
|
1233 |
+
toggleClass: function( classNames, state ) {
|
1234 |
+
if( typeof state !== "boolean" )
|
1235 |
+
state = !jQuery.className.has( this, classNames );
|
1236 |
+
jQuery.className[ state ? "add" : "remove" ]( this, classNames );
|
1237 |
+
},
|
1238 |
+
|
1239 |
+
remove: function( selector ) {
|
1240 |
+
if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
|
1241 |
+
// Prevent memory leaks
|
1242 |
+
jQuery( "*", this ).add([this]).each(function(){
|
1243 |
+
jQuery.event.remove(this);
|
1244 |
+
jQuery.removeData(this);
|
1245 |
+
});
|
1246 |
+
if (this.parentNode)
|
1247 |
+
this.parentNode.removeChild( this );
|
1248 |
+
}
|
1249 |
+
},
|
1250 |
+
|
1251 |
+
empty: function() {
|
1252 |
+
// Remove element nodes and prevent memory leaks
|
1253 |
+
jQuery(this).children().remove();
|
1254 |
+
|
1255 |
+
// Remove any remaining nodes
|
1256 |
+
while ( this.firstChild )
|
1257 |
+
this.removeChild( this.firstChild );
|
1258 |
+
}
|
1259 |
+
}, function(name, fn){
|
1260 |
+
jQuery.fn[ name ] = function(){
|
1261 |
+
return this.each( fn, arguments );
|
1262 |
+
};
|
1263 |
+
});
|
1264 |
+
|
1265 |
+
// Helper function used by the dimensions and offset modules
|
1266 |
+
function num(elem, prop) {
|
1267 |
+
return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
|
1268 |
+
}
|
1269 |
+
var expando = "jQuery" + now(), uuid = 0, windowData = {};
|
1270 |
+
|
1271 |
+
jQuery.extend({
|
1272 |
+
cache: {},
|
1273 |
+
|
1274 |
+
data: function( elem, name, data ) {
|
1275 |
+
elem = elem == window ?
|
1276 |
+
windowData :
|
1277 |
+
elem;
|
1278 |
+
|
1279 |
+
var id = elem[ expando ];
|
1280 |
+
|
1281 |
+
// Compute a unique ID for the element
|
1282 |
+
if ( !id )
|
1283 |
+
id = elem[ expando ] = ++uuid;
|
1284 |
+
|
1285 |
+
// Only generate the data cache if we're
|
1286 |
+
// trying to access or manipulate it
|
1287 |
+
if ( name && !jQuery.cache[ id ] )
|
1288 |
+
jQuery.cache[ id ] = {};
|
1289 |
+
|
1290 |
+
// Prevent overriding the named cache with undefined values
|
1291 |
+
if ( data !== undefined )
|
1292 |
+
jQuery.cache[ id ][ name ] = data;
|
1293 |
+
|
1294 |
+
// Return the named cache data, or the ID for the element
|
1295 |
+
return name ?
|
1296 |
+
jQuery.cache[ id ][ name ] :
|
1297 |
+
id;
|
1298 |
+
},
|
1299 |
+
|
1300 |
+
removeData: function( elem, name ) {
|
1301 |
+
elem = elem == window ?
|
1302 |
+
windowData :
|
1303 |
+
elem;
|
1304 |
+
|
1305 |
+
var id = elem[ expando ];
|
1306 |
+
|
1307 |
+
// If we want to remove a specific section of the element's data
|
1308 |
+
if ( name ) {
|
1309 |
+
if ( jQuery.cache[ id ] ) {
|
1310 |
+
// Remove the section of cache data
|
1311 |
+
delete jQuery.cache[ id ][ name ];
|
1312 |
+
|
1313 |
+
// If we've removed all the data, remove the element's cache
|
1314 |
+
name = "";
|
1315 |
+
|
1316 |
+
for ( name in jQuery.cache[ id ] )
|
1317 |
+
break;
|
1318 |
+
|
1319 |
+
if ( !name )
|
1320 |
+
jQuery.removeData( elem );
|
1321 |
+
}
|
1322 |
+
|
1323 |
+
// Otherwise, we want to remove all of the element's data
|
1324 |
+
} else {
|
1325 |
+
// Clean up the element expando
|
1326 |
+
try {
|
1327 |
+
delete elem[ expando ];
|
1328 |
+
} catch(e){
|
1329 |
+
// IE has trouble directly removing the expando
|
1330 |
+
// but it's ok with using removeAttribute
|
1331 |
+
if ( elem.removeAttribute )
|
1332 |
+
elem.removeAttribute( expando );
|
1333 |
+
}
|
1334 |
+
|
1335 |
+
// Completely remove the data cache
|
1336 |
+
delete jQuery.cache[ id ];
|
1337 |
+
}
|
1338 |
+
},
|
1339 |
+
queue: function( elem, type, data ) {
|
1340 |
+
if ( elem ){
|
1341 |
+
|
1342 |
+
type = (type || "fx") + "queue";
|
1343 |
+
|
1344 |
+
var q = jQuery.data( elem, type );
|
1345 |
+
|
1346 |
+
if ( !q || jQuery.isArray(data) )
|
1347 |
+
q = jQuery.data( elem, type, jQuery.makeArray(data) );
|
1348 |
+
else if( data )
|
1349 |
+
q.push( data );
|
1350 |
+
|
1351 |
+
}
|
1352 |
+
return q;
|
1353 |
+
},
|
1354 |
+
|
1355 |
+
dequeue: function( elem, type ){
|
1356 |
+
var queue = jQuery.queue( elem, type ),
|
1357 |
+
fn = queue.shift();
|
1358 |
+
|
1359 |
+
if( !type || type === "fx" )
|
1360 |
+
fn = queue[0];
|
1361 |
+
|
1362 |
+
if( fn !== undefined )
|
1363 |
+
fn.call(elem);
|
1364 |
+
}
|
1365 |
+
});
|
1366 |
+
|
1367 |
+
jQuery.fn.extend({
|
1368 |
+
data: function( key, value ){
|
1369 |
+
var parts = key.split(".");
|
1370 |
+
parts[1] = parts[1] ? "." + parts[1] : "";
|
1371 |
+
|
1372 |
+
if ( value === undefined ) {
|
1373 |
+
var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
|
1374 |
+
|
1375 |
+
if ( data === undefined && this.length )
|
1376 |
+
data = jQuery.data( this[0], key );
|
1377 |
+
|
1378 |
+
return data === undefined && parts[1] ?
|
1379 |
+
this.data( parts[0] ) :
|
1380 |
+
data;
|
1381 |
+
} else
|
1382 |
+
return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
|
1383 |
+
jQuery.data( this, key, value );
|
1384 |
+
});
|
1385 |
+
},
|
1386 |
+
|
1387 |
+
removeData: function( key ){
|
1388 |
+
return this.each(function(){
|
1389 |
+
jQuery.removeData( this, key );
|
1390 |
+
});
|
1391 |
+
},
|
1392 |
+
queue: function(type, data){
|
1393 |
+
if ( typeof type !== "string" ) {
|
1394 |
+
data = type;
|
1395 |
+
type = "fx";
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
if ( data === undefined )
|
1399 |
+
return jQuery.queue( this[0], type );
|
1400 |
+
|
1401 |
+
return this.each(function(){
|
1402 |
+
var queue = jQuery.queue( this, type, data );
|
1403 |
+
|
1404 |
+
if( type == "fx" && queue.length == 1 )
|
1405 |
+
queue[0].call(this);
|
1406 |
+
});
|
1407 |
+
},
|
1408 |
+
dequeue: function(type){
|
1409 |
+
return this.each(function(){
|
1410 |
+
jQuery.dequeue( this, type );
|
1411 |
+
});
|
1412 |
+
}
|
1413 |
+
});/*!
|
1414 |
+
* Sizzle CSS Selector Engine - v0.9.3
|
1415 |
+
* Copyright 2009, The Dojo Foundation
|
1416 |
+
* Released under the MIT, BSD, and GPL Licenses.
|
1417 |
+
* More information: http://sizzlejs.com/
|
1418 |
+
*/
|
1419 |
+
(function(){
|
1420 |
+
|
1421 |
+
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
|
1422 |
+
done = 0,
|
1423 |
+
toString = Object.prototype.toString;
|
1424 |
+
|
1425 |
+
var Sizzle = function(selector, context, results, seed) {
|
1426 |
+
results = results || [];
|
1427 |
+
context = context || document;
|
1428 |
+
|
1429 |
+
if ( context.nodeType !== 1 && context.nodeType !== 9 )
|
1430 |
+
return [];
|
1431 |
+
|
1432 |
+
if ( !selector || typeof selector !== "string" ) {
|
1433 |
+
return results;
|
1434 |
+
}
|
1435 |
+
|
1436 |
+
var parts = [], m, set, checkSet, check, mode, extra, prune = true;
|
1437 |
+
|
1438 |
+
// Reset the position of the chunker regexp (start from head)
|
1439 |
+
chunker.lastIndex = 0;
|
1440 |
+
|
1441 |
+
while ( (m = chunker.exec(selector)) !== null ) {
|
1442 |
+
parts.push( m[1] );
|
1443 |
+
|
1444 |
+
if ( m[2] ) {
|
1445 |
+
extra = RegExp.rightContext;
|
1446 |
+
break;
|
1447 |
+
}
|
1448 |
+
}
|
1449 |
+
|
1450 |
+
if ( parts.length > 1 && origPOS.exec( selector ) ) {
|
1451 |
+
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
|
1452 |
+
set = posProcess( parts[0] + parts[1], context );
|
1453 |
+
} else {
|
1454 |
+
set = Expr.relative[ parts[0] ] ?
|
1455 |
+
[ context ] :
|
1456 |
+
Sizzle( parts.shift(), context );
|
1457 |
+
|
1458 |
+
while ( parts.length ) {
|
1459 |
+
selector = parts.shift();
|
1460 |
+
|
1461 |
+
if ( Expr.relative[ selector ] )
|
1462 |
+
selector += parts.shift();
|
1463 |
+
|
1464 |
+
set = posProcess( selector, set );
|
1465 |
+
}
|
1466 |
+
}
|
1467 |
+
} else {
|
1468 |
+
var ret = seed ?
|
1469 |
+
{ expr: parts.pop(), set: makeArray(seed) } :
|
1470 |
+
Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
|
1471 |
+
set = Sizzle.filter( ret.expr, ret.set );
|
1472 |
+
|
1473 |
+
if ( parts.length > 0 ) {
|
1474 |
+
checkSet = makeArray(set);
|
1475 |
+
} else {
|
1476 |
+
prune = false;
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
while ( parts.length ) {
|
1480 |
+
var cur = parts.pop(), pop = cur;
|
1481 |
+
|
1482 |
+
if ( !Expr.relative[ cur ] ) {
|
1483 |
+
cur = "";
|
1484 |
+
} else {
|
1485 |
+
pop = parts.pop();
|
1486 |
+
}
|
1487 |
+
|
1488 |
+
if ( pop == null ) {
|
1489 |
+
pop = context;
|
1490 |
+
}
|
1491 |
+
|
1492 |
+
Expr.relative[ cur ]( checkSet, pop, isXML(context) );
|
1493 |
+
}
|
1494 |
+
}
|
1495 |
+
|
1496 |
+
if ( !checkSet ) {
|
1497 |
+
checkSet = set;
|
1498 |
+
}
|
1499 |
+
|
1500 |
+
if ( !checkSet ) {
|
1501 |
+
throw "Syntax error, unrecognized expression: " + (cur || selector);
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
if ( toString.call(checkSet) === "[object Array]" ) {
|
1505 |
+
if ( !prune ) {
|
1506 |
+
results.push.apply( results, checkSet );
|
1507 |
+
} else if ( context.nodeType === 1 ) {
|
1508 |
+
for ( var i = 0; checkSet[i] != null; i++ ) {
|
1509 |
+
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
|
1510 |
+
results.push( set[i] );
|
1511 |
+
}
|
1512 |
+
}
|
1513 |
+
} else {
|
1514 |
+
for ( var i = 0; checkSet[i] != null; i++ ) {
|
1515 |
+
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
|
1516 |
+
results.push( set[i] );
|
1517 |
+
}
|
1518 |
+
}
|
1519 |
+
}
|
1520 |
+
} else {
|
1521 |
+
makeArray( checkSet, results );
|
1522 |
+
}
|
1523 |
+
|
1524 |
+
if ( extra ) {
|
1525 |
+
Sizzle( extra, context, results, seed );
|
1526 |
+
|
1527 |
+
if ( sortOrder ) {
|
1528 |
+
hasDuplicate = false;
|
1529 |
+
results.sort(sortOrder);
|
1530 |
+
|
1531 |
+
if ( hasDuplicate ) {
|
1532 |
+
for ( var i = 1; i < results.length; i++ ) {
|
1533 |
+
if ( results[i] === results[i-1] ) {
|
1534 |
+
results.splice(i--, 1);
|
1535 |
+
}
|
1536 |
+
}
|
1537 |
+
}
|
1538 |
+
}
|
1539 |
+
}
|
1540 |
+
|
1541 |
+
return results;
|
1542 |
+
};
|
1543 |
+
|
1544 |
+
Sizzle.matches = function(expr, set){
|
1545 |
+
return Sizzle(expr, null, null, set);
|
1546 |
+
};
|
1547 |
+
|
1548 |
+
Sizzle.find = function(expr, context, isXML){
|
1549 |
+
var set, match;
|
1550 |
+
|
1551 |
+
if ( !expr ) {
|
1552 |
+
return [];
|
1553 |
+
}
|
1554 |
+
|
1555 |
+
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
|
1556 |
+
var type = Expr.order[i], match;
|
1557 |
+
|
1558 |
+
if ( (match = Expr.match[ type ].exec( expr )) ) {
|
1559 |
+
var left = RegExp.leftContext;
|
1560 |
+
|
1561 |
+
if ( left.substr( left.length - 1 ) !== "\\" ) {
|
1562 |
+
match[1] = (match[1] || "").replace(/\\/g, "");
|
1563 |
+
set = Expr.find[ type ]( match, context, isXML );
|
1564 |
+
if ( set != null ) {
|
1565 |
+
expr = expr.replace( Expr.match[ type ], "" );
|
1566 |
+
break;
|
1567 |
+
}
|
1568 |
+
}
|
1569 |
+
}
|
1570 |
+
}
|
1571 |
+
|
1572 |
+
if ( !set ) {
|
1573 |
+
set = context.getElementsByTagName("*");
|
1574 |
+
}
|
1575 |
+
|
1576 |
+
return {set: set, expr: expr};
|
1577 |
+
};
|
1578 |
+
|
1579 |
+
Sizzle.filter = function(expr, set, inplace, not){
|
1580 |
+
var old = expr, result = [], curLoop = set, match, anyFound,
|
1581 |
+
isXMLFilter = set && set[0] && isXML(set[0]);
|
1582 |
+
|
1583 |
+
while ( expr && set.length ) {
|
1584 |
+
for ( var type in Expr.filter ) {
|
1585 |
+
if ( (match = Expr.match[ type ].exec( expr )) != null ) {
|
1586 |
+
var filter = Expr.filter[ type ], found, item;
|
1587 |
+
anyFound = false;
|
1588 |
+
|
1589 |
+
if ( curLoop == result ) {
|
1590 |
+
result = [];
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
if ( Expr.preFilter[ type ] ) {
|
1594 |
+
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
|
1595 |
+
|
1596 |
+
if ( !match ) {
|
1597 |
+
anyFound = found = true;
|
1598 |
+
} else if ( match === true ) {
|
1599 |
+
continue;
|
1600 |
+
}
|
1601 |
+
}
|
1602 |
+
|
1603 |
+
if ( match ) {
|
1604 |
+
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
|
1605 |
+
if ( item ) {
|
1606 |
+
found = filter( item, match, i, curLoop );
|
1607 |
+
var pass = not ^ !!found;
|
1608 |
+
|
1609 |
+
if ( inplace && found != null ) {
|
1610 |
+
if ( pass ) {
|
1611 |
+
anyFound = true;
|
1612 |
+
} else {
|
1613 |
+
curLoop[i] = false;
|
1614 |
+
}
|
1615 |
+
} else if ( pass ) {
|
1616 |
+
result.push( item );
|
1617 |
+
anyFound = true;
|
1618 |
+
}
|
1619 |
+
}
|
1620 |
+
}
|
1621 |
+
}
|
1622 |
+
|
1623 |
+
if ( found !== undefined ) {
|
1624 |
+
if ( !inplace ) {
|
1625 |
+
curLoop = result;
|
1626 |
+
}
|
1627 |
+
|
1628 |
+
expr = expr.replace( Expr.match[ type ], "" );
|
1629 |
+
|
1630 |
+
if ( !anyFound ) {
|
1631 |
+
return [];
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
break;
|
1635 |
+
}
|
1636 |
+
}
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
// Improper expression
|
1640 |
+
if ( expr == old ) {
|
1641 |
+
if ( anyFound == null ) {
|
1642 |
+
throw "Syntax error, unrecognized expression: " + expr;
|
1643 |
+
} else {
|
1644 |
+
break;
|
1645 |
+
}
|
1646 |
+
}
|
1647 |
+
|
1648 |
+
old = expr;
|
1649 |
+
}
|
1650 |
+
|
1651 |
+
return curLoop;
|
1652 |
+
};
|
1653 |
+
|
1654 |
+
var Expr = Sizzle.selectors = {
|
1655 |
+
order: [ "ID", "NAME", "TAG" ],
|
1656 |
+
match: {
|
1657 |
+
ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
|
1658 |
+
CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
|
1659 |
+
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
|
1660 |
+
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
|
1661 |
+
TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
|
1662 |
+
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
|
1663 |
+
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
|
1664 |
+
PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
|
1665 |
+
},
|
1666 |
+
attrMap: {
|
1667 |
+
"class": "className",
|
1668 |
+
"for": "htmlFor"
|
1669 |
+
},
|
1670 |
+
attrHandle: {
|
1671 |
+
href: function(elem){
|
1672 |
+
return elem.getAttribute("href");
|
1673 |
+
}
|
1674 |
+
},
|
1675 |
+
relative: {
|
1676 |
+
"+": function(checkSet, part, isXML){
|
1677 |
+
var isPartStr = typeof part === "string",
|
1678 |
+
isTag = isPartStr && !/\W/.test(part),
|
1679 |
+
isPartStrNotTag = isPartStr && !isTag;
|
1680 |
+
|
1681 |
+
if ( isTag && !isXML ) {
|
1682 |
+
part = part.toUpperCase();
|
1683 |
+
}
|
1684 |
+
|
1685 |
+
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
|
1686 |
+
if ( (elem = checkSet[i]) ) {
|
1687 |
+
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
|
1688 |
+
|
1689 |
+
checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
|
1690 |
+
elem || false :
|
1691 |
+
elem === part;
|
1692 |
+
}
|
1693 |
+
}
|
1694 |
+
|
1695 |
+
if ( isPartStrNotTag ) {
|
1696 |
+
Sizzle.filter( part, checkSet, true );
|
1697 |
+
}
|
1698 |
+
},
|
1699 |
+
">": function(checkSet, part, isXML){
|
1700 |
+
var isPartStr = typeof part === "string";
|
1701 |
+
|
1702 |
+
if ( isPartStr && !/\W/.test(part) ) {
|
1703 |
+
part = isXML ? part : part.toUpperCase();
|
1704 |
+
|
1705 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
1706 |
+
var elem = checkSet[i];
|
1707 |
+
if ( elem ) {
|
1708 |
+
var parent = elem.parentNode;
|
1709 |
+
checkSet[i] = parent.nodeName === part ? parent : false;
|
1710 |
+
}
|
1711 |
+
}
|
1712 |
+
} else {
|
1713 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
1714 |
+
var elem = checkSet[i];
|
1715 |
+
if ( elem ) {
|
1716 |
+
checkSet[i] = isPartStr ?
|
1717 |
+
elem.parentNode :
|
1718 |
+
elem.parentNode === part;
|
1719 |
+
}
|
1720 |
+
}
|
1721 |
+
|
1722 |
+
if ( isPartStr ) {
|
1723 |
+
Sizzle.filter( part, checkSet, true );
|
1724 |
+
}
|
1725 |
+
}
|
1726 |
+
},
|
1727 |
+
"": function(checkSet, part, isXML){
|
1728 |
+
var doneName = done++, checkFn = dirCheck;
|
1729 |
+
|
1730 |
+
if ( !part.match(/\W/) ) {
|
1731 |
+
var nodeCheck = part = isXML ? part : part.toUpperCase();
|
1732 |
+
checkFn = dirNodeCheck;
|
1733 |
+
}
|
1734 |
+
|
1735 |
+
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
|
1736 |
+
},
|
1737 |
+
"~": function(checkSet, part, isXML){
|
1738 |
+
var doneName = done++, checkFn = dirCheck;
|
1739 |
+
|
1740 |
+
if ( typeof part === "string" && !part.match(/\W/) ) {
|
1741 |
+
var nodeCheck = part = isXML ? part : part.toUpperCase();
|
1742 |
+
checkFn = dirNodeCheck;
|
1743 |
+
}
|
1744 |
+
|
1745 |
+
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
|
1746 |
+
}
|
1747 |
+
},
|
1748 |
+
find: {
|
1749 |
+
ID: function(match, context, isXML){
|
1750 |
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
1751 |
+
var m = context.getElementById(match[1]);
|
1752 |
+
return m ? [m] : [];
|
1753 |
+
}
|
1754 |
+
},
|
1755 |
+
NAME: function(match, context, isXML){
|
1756 |
+
if ( typeof context.getElementsByName !== "undefined" ) {
|
1757 |
+
var ret = [], results = context.getElementsByName(match[1]);
|
1758 |
+
|
1759 |
+
for ( var i = 0, l = results.length; i < l; i++ ) {
|
1760 |
+
if ( results[i].getAttribute("name") === match[1] ) {
|
1761 |
+
ret.push( results[i] );
|
1762 |
+
}
|
1763 |
+
}
|
1764 |
+
|
1765 |
+
return ret.length === 0 ? null : ret;
|
1766 |
+
}
|
1767 |
+
},
|
1768 |
+
TAG: function(match, context){
|
1769 |
+
return context.getElementsByTagName(match[1]);
|
1770 |
+
}
|
1771 |
+
},
|
1772 |
+
preFilter: {
|
1773 |
+
CLASS: function(match, curLoop, inplace, result, not, isXML){
|
1774 |
+
match = " " + match[1].replace(/\\/g, "") + " ";
|
1775 |
+
|
1776 |
+
if ( isXML ) {
|
1777 |
+
return match;
|
1778 |
+
}
|
1779 |
+
|
1780 |
+
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
|
1781 |
+
if ( elem ) {
|
1782 |
+
if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
|
1783 |
+
if ( !inplace )
|
1784 |
+
result.push( elem );
|
1785 |
+
} else if ( inplace ) {
|
1786 |
+
curLoop[i] = false;
|
1787 |
+
}
|
1788 |
+
}
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
return false;
|
1792 |
+
},
|
1793 |
+
ID: function(match){
|
1794 |
+
return match[1].replace(/\\/g, "");
|
1795 |
+
},
|
1796 |
+
TAG: function(match, curLoop){
|
1797 |
+
for ( var i = 0; curLoop[i] === false; i++ ){}
|
1798 |
+
return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
|
1799 |
+
},
|
1800 |
+
CHILD: function(match){
|
1801 |
+
if ( match[1] == "nth" ) {
|
1802 |
+
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
|
1803 |
+
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
|
1804 |
+
match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
|
1805 |
+
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
|
1806 |
+
|
1807 |
+
// calculate the numbers (first)n+(last) including if they are negative
|
1808 |
+
match[2] = (test[1] + (test[2] || 1)) - 0;
|
1809 |
+
match[3] = test[3] - 0;
|
1810 |
+
}
|
1811 |
+
|
1812 |
+
// TODO: Move to normal caching system
|
1813 |
+
match[0] = done++;
|
1814 |
+
|
1815 |
+
return match;
|
1816 |
+
},
|
1817 |
+
ATTR: function(match, curLoop, inplace, result, not, isXML){
|
1818 |
+
var name = match[1].replace(/\\/g, "");
|
1819 |
+
|
1820 |
+
if ( !isXML && Expr.attrMap[name] ) {
|
1821 |
+
match[1] = Expr.attrMap[name];
|
1822 |
+
}
|
1823 |
+
|
1824 |
+
if ( match[2] === "~=" ) {
|
1825 |
+
match[4] = " " + match[4] + " ";
|
1826 |
+
}
|
1827 |
+
|
1828 |
+
return match;
|
1829 |
+
},
|
1830 |
+
PSEUDO: function(match, curLoop, inplace, result, not){
|
1831 |
+
if ( match[1] === "not" ) {
|
1832 |
+
// If we're dealing with a complex expression, or a simple one
|
1833 |
+
if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
|
1834 |
+
match[3] = Sizzle(match[3], null, null, curLoop);
|
1835 |
+
} else {
|
1836 |
+
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
|
1837 |
+
if ( !inplace ) {
|
1838 |
+
result.push.apply( result, ret );
|
1839 |
+
}
|
1840 |
+
return false;
|
1841 |
+
}
|
1842 |
+
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
|
1843 |
+
return true;
|
1844 |
+
}
|
1845 |
+
|
1846 |
+
return match;
|
1847 |
+
},
|
1848 |
+
POS: function(match){
|
1849 |
+
match.unshift( true );
|
1850 |
+
return match;
|
1851 |
+
}
|
1852 |
+
},
|
1853 |
+
filters: {
|
1854 |
+
enabled: function(elem){
|
1855 |
+
return elem.disabled === false && elem.type !== "hidden";
|
1856 |
+
},
|
1857 |
+
disabled: function(elem){
|
1858 |
+
return elem.disabled === true;
|
1859 |
+
},
|
1860 |
+
checked: function(elem){
|
1861 |
+
return elem.checked === true;
|
1862 |
+
},
|
1863 |
+
selected: function(elem){
|
1864 |
+
// Accessing this property makes selected-by-default
|
1865 |
+
// options in Safari work properly
|
1866 |
+
elem.parentNode.selectedIndex;
|
1867 |
+
return elem.selected === true;
|
1868 |
+
},
|
1869 |
+
parent: function(elem){
|
1870 |
+
return !!elem.firstChild;
|
1871 |
+
},
|
1872 |
+
empty: function(elem){
|
1873 |
+
return !elem.firstChild;
|
1874 |
+
},
|
1875 |
+
has: function(elem, i, match){
|
1876 |
+
return !!Sizzle( match[3], elem ).length;
|
1877 |
+
},
|
1878 |
+
header: function(elem){
|
1879 |
+
return /h\d/i.test( elem.nodeName );
|
1880 |
+
},
|
1881 |
+
text: function(elem){
|
1882 |
+
return "text" === elem.type;
|
1883 |
+
},
|
1884 |
+
radio: function(elem){
|
1885 |
+
return "radio" === elem.type;
|
1886 |
+
},
|
1887 |
+
checkbox: function(elem){
|
1888 |
+
return "checkbox" === elem.type;
|
1889 |
+
},
|
1890 |
+
file: function(elem){
|
1891 |
+
return "file" === elem.type;
|
1892 |
+
},
|
1893 |
+
password: function(elem){
|
1894 |
+
return "password" === elem.type;
|
1895 |
+
},
|
1896 |
+
submit: function(elem){
|
1897 |
+
return "submit" === elem.type;
|
1898 |
+
},
|
1899 |
+
image: function(elem){
|
1900 |
+
return "image" === elem.type;
|
1901 |
+
},
|
1902 |
+
reset: function(elem){
|
1903 |
+
return "reset" === elem.type;
|
1904 |
+
},
|
1905 |
+
button: function(elem){
|
1906 |
+
return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
|
1907 |
+
},
|
1908 |
+
input: function(elem){
|
1909 |
+
return /input|select|textarea|button/i.test(elem.nodeName);
|
1910 |
+
}
|
1911 |
+
},
|
1912 |
+
setFilters: {
|
1913 |
+
first: function(elem, i){
|
1914 |
+
return i === 0;
|
1915 |
+
},
|
1916 |
+
last: function(elem, i, match, array){
|
1917 |
+
return i === array.length - 1;
|
1918 |
+
},
|
1919 |
+
even: function(elem, i){
|
1920 |
+
return i % 2 === 0;
|
1921 |
+
},
|
1922 |
+
odd: function(elem, i){
|
1923 |
+
return i % 2 === 1;
|
1924 |
+
},
|
1925 |
+
lt: function(elem, i, match){
|
1926 |
+
return i < match[3] - 0;
|
1927 |
+
},
|
1928 |
+
gt: function(elem, i, match){
|
1929 |
+
return i > match[3] - 0;
|
1930 |
+
},
|
1931 |
+
nth: function(elem, i, match){
|
1932 |
+
return match[3] - 0 == i;
|
1933 |
+
},
|
1934 |
+
eq: function(elem, i, match){
|
1935 |
+
return match[3] - 0 == i;
|
1936 |
+
}
|
1937 |
+
},
|
1938 |
+
filter: {
|
1939 |
+
PSEUDO: function(elem, match, i, array){
|
1940 |
+
var name = match[1], filter = Expr.filters[ name ];
|
1941 |
+
|
1942 |
+
if ( filter ) {
|
1943 |
+
return filter( elem, i, match, array );
|
1944 |
+
} else if ( name === "contains" ) {
|
1945 |
+
return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
|
1946 |
+
} else if ( name === "not" ) {
|
1947 |
+
var not = match[3];
|
1948 |
+
|
1949 |
+
for ( var i = 0, l = not.length; i < l; i++ ) {
|
1950 |
+
if ( not[i] === elem ) {
|
1951 |
+
return false;
|
1952 |
+
}
|
1953 |
+
}
|
1954 |
+
|
1955 |
+
return true;
|
1956 |
+
}
|
1957 |
+
},
|
1958 |
+
CHILD: function(elem, match){
|
1959 |
+
var type = match[1], node = elem;
|
1960 |
+
switch (type) {
|
1961 |
+
case 'only':
|
1962 |
+
case 'first':
|
1963 |
+
while (node = node.previousSibling) {
|
1964 |
+
if ( node.nodeType === 1 ) return false;
|
1965 |
+
}
|
1966 |
+
if ( type == 'first') return true;
|
1967 |
+
node = elem;
|
1968 |
+
case 'last':
|
1969 |
+
while (node = node.nextSibling) {
|
1970 |
+
if ( node.nodeType === 1 ) return false;
|
1971 |
+
}
|
1972 |
+
return true;
|
1973 |
+
case 'nth':
|
1974 |
+
var first = match[2], last = match[3];
|
1975 |
+
|
1976 |
+
if ( first == 1 && last == 0 ) {
|
1977 |
+
return true;
|
1978 |
+
}
|
1979 |
+
|
1980 |
+
var doneName = match[0],
|
1981 |
+
parent = elem.parentNode;
|
1982 |
+
|
1983 |
+
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
|
1984 |
+
var count = 0;
|
1985 |
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
|
1986 |
+
if ( node.nodeType === 1 ) {
|
1987 |
+
node.nodeIndex = ++count;
|
1988 |
+
}
|
1989 |
+
}
|
1990 |
+
parent.sizcache = doneName;
|
1991 |
+
}
|
1992 |
+
|
1993 |
+
var diff = elem.nodeIndex - last;
|
1994 |
+
if ( first == 0 ) {
|
1995 |
+
return diff == 0;
|
1996 |
+
} else {
|
1997 |
+
return ( diff % first == 0 && diff / first >= 0 );
|
1998 |
+
}
|
1999 |
+
}
|
2000 |
+
},
|
2001 |
+
ID: function(elem, match){
|
2002 |
+
return elem.nodeType === 1 && elem.getAttribute("id") === match;
|
2003 |
+
},
|
2004 |
+
TAG: function(elem, match){
|
2005 |
+
return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
|
2006 |
+
},
|
2007 |
+
CLASS: function(elem, match){
|
2008 |
+
return (" " + (elem.className || elem.getAttribute("class")) + " ")
|
2009 |
+
.indexOf( match ) > -1;
|
2010 |
+
},
|
2011 |
+
ATTR: function(elem, match){
|
2012 |
+
var name = match[1],
|
2013 |
+
result = Expr.attrHandle[ name ] ?
|
2014 |
+
Expr.attrHandle[ name ]( elem ) :
|
2015 |
+
elem[ name ] != null ?
|
2016 |
+
elem[ name ] :
|
2017 |
+
elem.getAttribute( name ),
|
2018 |
+
value = result + "",
|
2019 |
+
type = match[2],
|
2020 |
+
check = match[4];
|
2021 |
+
|
2022 |
+
return result == null ?
|
2023 |
+
type === "!=" :
|
2024 |
+
type === "=" ?
|
2025 |
+
value === check :
|
2026 |
+
type === "*=" ?
|
2027 |
+
value.indexOf(check) >= 0 :
|
2028 |
+
type === "~=" ?
|
2029 |
+
(" " + value + " ").indexOf(check) >= 0 :
|
2030 |
+
!check ?
|
2031 |
+
value && result !== false :
|
2032 |
+
type === "!=" ?
|
2033 |
+
value != check :
|
2034 |
+
type === "^=" ?
|
2035 |
+
value.indexOf(check) === 0 :
|
2036 |
+
type === "$=" ?
|
2037 |
+
value.substr(value.length - check.length) === check :
|
2038 |
+
type === "|=" ?
|
2039 |
+
value === check || value.substr(0, check.length + 1) === check + "-" :
|
2040 |
+
false;
|
2041 |
+
},
|
2042 |
+
POS: function(elem, match, i, array){
|
2043 |
+
var name = match[2], filter = Expr.setFilters[ name ];
|
2044 |
+
|
2045 |
+
if ( filter ) {
|
2046 |
+
return filter( elem, i, match, array );
|
2047 |
+
}
|
2048 |
+
}
|
2049 |
+
}
|
2050 |
+
};
|
2051 |
+
|
2052 |
+
var origPOS = Expr.match.POS;
|
2053 |
+
|
2054 |
+
for ( var type in Expr.match ) {
|
2055 |
+
Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
|
2056 |
+
}
|
2057 |
+
|
2058 |
+
var makeArray = function(array, results) {
|
2059 |
+
array = Array.prototype.slice.call( array );
|
2060 |
+
|
2061 |
+
if ( results ) {
|
2062 |
+
results.push.apply( results, array );
|
2063 |
+
return results;
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
return array;
|
2067 |
+
};
|
2068 |
+
|
2069 |
+
// Perform a simple check to determine if the browser is capable of
|
2070 |
+
// converting a NodeList to an array using builtin methods.
|
2071 |
+
try {
|
2072 |
+
Array.prototype.slice.call( document.documentElement.childNodes );
|
2073 |
+
|
2074 |
+
// Provide a fallback method if it does not work
|
2075 |
+
} catch(e){
|
2076 |
+
makeArray = function(array, results) {
|
2077 |
+
var ret = results || [];
|
2078 |
+
|
2079 |
+
if ( toString.call(array) === "[object Array]" ) {
|
2080 |
+
Array.prototype.push.apply( ret, array );
|
2081 |
+
} else {
|
2082 |
+
if ( typeof array.length === "number" ) {
|
2083 |
+
for ( var i = 0, l = array.length; i < l; i++ ) {
|
2084 |
+
ret.push( array[i] );
|
2085 |
+
}
|
2086 |
+
} else {
|
2087 |
+
for ( var i = 0; array[i]; i++ ) {
|
2088 |
+
ret.push( array[i] );
|
2089 |
+
}
|
2090 |
+
}
|
2091 |
+
}
|
2092 |
+
|
2093 |
+
return ret;
|
2094 |
+
};
|
2095 |
+
}
|
2096 |
+
|
2097 |
+
var sortOrder;
|
2098 |
+
|
2099 |
+
if ( document.documentElement.compareDocumentPosition ) {
|
2100 |
+
sortOrder = function( a, b ) {
|
2101 |
+
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
|
2102 |
+
if ( ret === 0 ) {
|
2103 |
+
hasDuplicate = true;
|
2104 |
+
}
|
2105 |
+
return ret;
|
2106 |
+
};
|
2107 |
+
} else if ( "sourceIndex" in document.documentElement ) {
|
2108 |
+
sortOrder = function( a, b ) {
|
2109 |
+
var ret = a.sourceIndex - b.sourceIndex;
|
2110 |
+
if ( ret === 0 ) {
|
2111 |
+
hasDuplicate = true;
|
2112 |
+
}
|
2113 |
+
return ret;
|
2114 |
+
};
|
2115 |
+
} else if ( document.createRange ) {
|
2116 |
+
sortOrder = function( a, b ) {
|
2117 |
+
var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
|
2118 |
+
aRange.selectNode(a);
|
2119 |
+
aRange.collapse(true);
|
2120 |
+
bRange.selectNode(b);
|
2121 |
+
bRange.collapse(true);
|
2122 |
+
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
|
2123 |
+
if ( ret === 0 ) {
|
2124 |
+
hasDuplicate = true;
|
2125 |
+
}
|
2126 |
+
return ret;
|
2127 |
+
};
|
2128 |
+
}
|
2129 |
+
|
2130 |
+
// Check to see if the browser returns elements by name when
|
2131 |
+
// querying by getElementById (and provide a workaround)
|
2132 |
+
(function(){
|
2133 |
+
// We're going to inject a fake input element with a specified name
|
2134 |
+
var form = document.createElement("form"),
|
2135 |
+
id = "script" + (new Date).getTime();
|
2136 |
+
form.innerHTML = "<input name='" + id + "'/>";
|
2137 |
+
|
2138 |
+
// Inject it into the root element, check its status, and remove it quickly
|
2139 |
+
var root = document.documentElement;
|
2140 |
+
root.insertBefore( form, root.firstChild );
|
2141 |
+
|
2142 |
+
// The workaround has to do additional checks after a getElementById
|
2143 |
+
// Which slows things down for other browsers (hence the branching)
|
2144 |
+
if ( !!document.getElementById( id ) ) {
|
2145 |
+
Expr.find.ID = function(match, context, isXML){
|
2146 |
+
if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
2147 |
+
var m = context.getElementById(match[1]);
|
2148 |
+
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
|
2149 |
+
}
|
2150 |
+
};
|
2151 |
+
|
2152 |
+
Expr.filter.ID = function(elem, match){
|
2153 |
+
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
2154 |
+
return elem.nodeType === 1 && node && node.nodeValue === match;
|
2155 |
+
};
|
2156 |
+
}
|
2157 |
+
|
2158 |
+
root.removeChild( form );
|
2159 |
+
})();
|
2160 |
+
|
2161 |
+
(function(){
|
2162 |
+
// Check to see if the browser returns only elements
|
2163 |
+
// when doing getElementsByTagName("*")
|
2164 |
+
|
2165 |
+
// Create a fake element
|
2166 |
+
var div = document.createElement("div");
|
2167 |
+
div.appendChild( document.createComment("") );
|
2168 |
+
|
2169 |
+
// Make sure no comments are found
|
2170 |
+
if ( div.getElementsByTagName("*").length > 0 ) {
|
2171 |
+
Expr.find.TAG = function(match, context){
|
2172 |
+
var results = context.getElementsByTagName(match[1]);
|
2173 |
+
|
2174 |
+
// Filter out possible comments
|
2175 |
+
if ( match[1] === "*" ) {
|
2176 |
+
var tmp = [];
|
2177 |
+
|
2178 |
+
for ( var i = 0; results[i]; i++ ) {
|
2179 |
+
if ( results[i].nodeType === 1 ) {
|
2180 |
+
tmp.push( results[i] );
|
2181 |
+
}
|
2182 |
+
}
|
2183 |
+
|
2184 |
+
results = tmp;
|
2185 |
+
}
|
2186 |
+
|
2187 |
+
return results;
|
2188 |
+
};
|
2189 |
+
}
|
2190 |
+
|
2191 |
+
// Check to see if an attribute returns normalized href attributes
|
2192 |
+
div.innerHTML = "<a href='#'></a>";
|
2193 |
+
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
|
2194 |
+
div.firstChild.getAttribute("href") !== "#" ) {
|
2195 |
+
Expr.attrHandle.href = function(elem){
|
2196 |
+
return elem.getAttribute("href", 2);
|
2197 |
+
};
|
2198 |
+
}
|
2199 |
+
})();
|
2200 |
+
|
2201 |
+
if ( document.querySelectorAll ) (function(){
|
2202 |
+
var oldSizzle = Sizzle, div = document.createElement("div");
|
2203 |
+
div.innerHTML = "<p class='TEST'></p>";
|
2204 |
+
|
2205 |
+
// Safari can't handle uppercase or unicode characters when
|
2206 |
+
// in quirks mode.
|
2207 |
+
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
|
2208 |
+
return;
|
2209 |
+
}
|
2210 |
+
|
2211 |
+
Sizzle = function(query, context, extra, seed){
|
2212 |
+
context = context || document;
|
2213 |
+
|
2214 |
+
// Only use querySelectorAll on non-XML documents
|
2215 |
+
// (ID selectors don't work in non-HTML documents)
|
2216 |
+
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
|
2217 |
+
try {
|
2218 |
+
return makeArray( context.querySelectorAll(query), extra );
|
2219 |
+
} catch(e){}
|
2220 |
+
}
|
2221 |
+
|
2222 |
+
return oldSizzle(query, context, extra, seed);
|
2223 |
+
};
|
2224 |
+
|
2225 |
+
Sizzle.find = oldSizzle.find;
|
2226 |
+
Sizzle.filter = oldSizzle.filter;
|
2227 |
+
Sizzle.selectors = oldSizzle.selectors;
|
2228 |
+
Sizzle.matches = oldSizzle.matches;
|
2229 |
+
})();
|
2230 |
+
|
2231 |
+
if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
|
2232 |
+
var div = document.createElement("div");
|
2233 |
+
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
|
2234 |
+
|
2235 |
+
// Opera can't find a second classname (in 9.6)
|
2236 |
+
if ( div.getElementsByClassName("e").length === 0 )
|
2237 |
+
return;
|
2238 |
+
|
2239 |
+
// Safari caches class attributes, doesn't catch changes (in 3.2)
|
2240 |
+
div.lastChild.className = "e";
|
2241 |
+
|
2242 |
+
if ( div.getElementsByClassName("e").length === 1 )
|
2243 |
+
return;
|
2244 |
+
|
2245 |
+
Expr.order.splice(1, 0, "CLASS");
|
2246 |
+
Expr.find.CLASS = function(match, context, isXML) {
|
2247 |
+
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
|
2248 |
+
return context.getElementsByClassName(match[1]);
|
2249 |
+
}
|
2250 |
+
};
|
2251 |
+
})();
|
2252 |
+
|
2253 |
+
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
2254 |
+
var sibDir = dir == "previousSibling" && !isXML;
|
2255 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
2256 |
+
var elem = checkSet[i];
|
2257 |
+
if ( elem ) {
|
2258 |
+
if ( sibDir && elem.nodeType === 1 ){
|
2259 |
+
elem.sizcache = doneName;
|
2260 |
+
elem.sizset = i;
|
2261 |
+
}
|
2262 |
+
elem = elem[dir];
|
2263 |
+
var match = false;
|
2264 |
+
|
2265 |
+
while ( elem ) {
|
2266 |
+
if ( elem.sizcache === doneName ) {
|
2267 |
+
match = checkSet[elem.sizset];
|
2268 |
+
break;
|
2269 |
+
}
|
2270 |
+
|
2271 |
+
if ( elem.nodeType === 1 && !isXML ){
|
2272 |
+
elem.sizcache = doneName;
|
2273 |
+
elem.sizset = i;
|
2274 |
+
}
|
2275 |
+
|
2276 |
+
if ( elem.nodeName === cur ) {
|
2277 |
+
match = elem;
|
2278 |
+
break;
|
2279 |
+
}
|
2280 |
+
|
2281 |
+
elem = elem[dir];
|
2282 |
+
}
|
2283 |
+
|
2284 |
+
checkSet[i] = match;
|
2285 |
+
}
|
2286 |
+
}
|
2287 |
+
}
|
2288 |
+
|
2289 |
+
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
2290 |
+
var sibDir = dir == "previousSibling" && !isXML;
|
2291 |
+
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
2292 |
+
var elem = checkSet[i];
|
2293 |
+
if ( elem ) {
|
2294 |
+
if ( sibDir && elem.nodeType === 1 ) {
|
2295 |
+
elem.sizcache = doneName;
|
2296 |
+
elem.sizset = i;
|
2297 |
+
}
|
2298 |
+
elem = elem[dir];
|
2299 |
+
var match = false;
|
2300 |
+
|
2301 |
+
while ( elem ) {
|
2302 |
+
if ( elem.sizcache === doneName ) {
|
2303 |
+
match = checkSet[elem.sizset];
|
2304 |
+
break;
|
2305 |
+
}
|
2306 |
+
|
2307 |
+
if ( elem.nodeType === 1 ) {
|
2308 |
+
if ( !isXML ) {
|
2309 |
+
elem.sizcache = doneName;
|
2310 |
+
elem.sizset = i;
|
2311 |
+
}
|
2312 |
+
if ( typeof cur !== "string" ) {
|
2313 |
+
if ( elem === cur ) {
|
2314 |
+
match = true;
|
2315 |
+
break;
|
2316 |
+
}
|
2317 |
+
|
2318 |
+
} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
|
2319 |
+
match = elem;
|
2320 |
+
break;
|
2321 |
+
}
|
2322 |
+
}
|
2323 |
+
|
2324 |
+
elem = elem[dir];
|
2325 |
+
}
|
2326 |
+
|
2327 |
+
checkSet[i] = match;
|
2328 |
+
}
|
2329 |
+
}
|
2330 |
+
}
|
2331 |
+
|
2332 |
+
var contains = document.compareDocumentPosition ? function(a, b){
|
2333 |
+
return a.compareDocumentPosition(b) & 16;
|
2334 |
+
} : function(a, b){
|
2335 |
+
return a !== b && (a.contains ? a.contains(b) : true);
|
2336 |
+
};
|
2337 |
+
|
2338 |
+
var isXML = function(elem){
|
2339 |
+
return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
|
2340 |
+
!!elem.ownerDocument && isXML( elem.ownerDocument );
|
2341 |
+
};
|
2342 |
+
|
2343 |
+
var posProcess = function(selector, context){
|
2344 |
+
var tmpSet = [], later = "", match,
|
2345 |
+
root = context.nodeType ? [context] : context;
|
2346 |
+
|
2347 |
+
// Position selectors must be done after the filter
|
2348 |
+
// And so must :not(positional) so we move all PSEUDOs to the end
|
2349 |
+
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
|
2350 |
+
later += match[0];
|
2351 |
+
selector = selector.replace( Expr.match.PSEUDO, "" );
|
2352 |
+
}
|
2353 |
+
|
2354 |
+
selector = Expr.relative[selector] ? selector + "*" : selector;
|
2355 |
+
|
2356 |
+
for ( var i = 0, l = root.length; i < l; i++ ) {
|
2357 |
+
Sizzle( selector, root[i], tmpSet );
|
2358 |
+
}
|
2359 |
+
|
2360 |
+
return Sizzle.filter( later, tmpSet );
|
2361 |
+
};
|
2362 |
+
|
2363 |
+
// EXPOSE
|
2364 |
+
jQuery.find = Sizzle;
|
2365 |
+
jQuery.filter = Sizzle.filter;
|
2366 |
+
jQuery.expr = Sizzle.selectors;
|
2367 |
+
jQuery.expr[":"] = jQuery.expr.filters;
|
2368 |
+
|
2369 |
+
Sizzle.selectors.filters.hidden = function(elem){
|
2370 |
+
return elem.offsetWidth === 0 || elem.offsetHeight === 0;
|
2371 |
+
};
|
2372 |
+
|
2373 |
+
Sizzle.selectors.filters.visible = function(elem){
|
2374 |
+
return elem.offsetWidth > 0 || elem.offsetHeight > 0;
|
2375 |
+
};
|
2376 |
+
|
2377 |
+
Sizzle.selectors.filters.animated = function(elem){
|
2378 |
+
return jQuery.grep(jQuery.timers, function(fn){
|
2379 |
+
return elem === fn.elem;
|
2380 |
+
}).length;
|
2381 |
+
};
|
2382 |
+
|
2383 |
+
jQuery.multiFilter = function( expr, elems, not ) {
|
2384 |
+
if ( not ) {
|
2385 |
+
expr = ":not(" + expr + ")";
|
2386 |
+
}
|
2387 |
+
|
2388 |
+
return Sizzle.matches(expr, elems);
|
2389 |
+
};
|
2390 |
+
|
2391 |
+
jQuery.dir = function( elem, dir ){
|
2392 |
+
var matched = [], cur = elem[dir];
|
2393 |
+
while ( cur && cur != document ) {
|
2394 |
+
if ( cur.nodeType == 1 )
|
2395 |
+
matched.push( cur );
|
2396 |
+
cur = cur[dir];
|
2397 |
+
}
|
2398 |
+
return matched;
|
2399 |
+
};
|
2400 |
+
|
2401 |
+
jQuery.nth = function(cur, result, dir, elem){
|
2402 |
+
result = result || 1;
|
2403 |
+
var num = 0;
|
2404 |
+
|
2405 |
+
for ( ; cur; cur = cur[dir] )
|
2406 |
+
if ( cur.nodeType == 1 && ++num == result )
|
2407 |
+
break;
|
2408 |
+
|
2409 |
+
return cur;
|
2410 |
+
};
|
2411 |
+
|
2412 |
+
jQuery.sibling = function(n, elem){
|
2413 |
+
var r = [];
|
2414 |
+
|
2415 |
+
for ( ; n; n = n.nextSibling ) {
|
2416 |
+
if ( n.nodeType == 1 && n != elem )
|
2417 |
+
r.push( n );
|
2418 |
+
}
|
2419 |
+
|
2420 |
+
return r;
|
2421 |
+
};
|
2422 |
+
|
2423 |
+
return;
|
2424 |
+
|
2425 |
+
window.Sizzle = Sizzle;
|
2426 |
+
|
2427 |
+
})();
|
2428 |
+
/*
|
2429 |
+
* A number of helper functions used for managing events.
|
2430 |
+
* Many of the ideas behind this code originated from
|
2431 |
+
* Dean Edwards' addEvent library.
|
2432 |
+
*/
|
2433 |
+
jQuery.event = {
|
2434 |
+
|
2435 |
+
// Bind an event to an element
|
2436 |
+
// Original by Dean Edwards
|
2437 |
+
add: function(elem, types, handler, data) {
|
2438 |
+
if ( elem.nodeType == 3 || elem.nodeType == 8 )
|
2439 |
+
return;
|
2440 |
+
|
2441 |
+
// For whatever reason, IE has trouble passing the window object
|
2442 |
+
// around, causing it to be cloned in the process
|
2443 |
+
if ( elem.setInterval && elem != window )
|
2444 |
+
elem = window;
|
2445 |
+
|
2446 |
+
// Make sure that the function being executed has a unique ID
|
2447 |
+
if ( !handler.guid )
|
2448 |
+
handler.guid = this.guid++;
|
2449 |
+
|
2450 |
+
// if data is passed, bind to handler
|
2451 |
+
if ( data !== undefined ) {
|
2452 |
+
// Create temporary function pointer to original handler
|
2453 |
+
var fn = handler;
|
2454 |
+
|
2455 |
+
// Create unique handler function, wrapped around original handler
|
2456 |
+
handler = this.proxy( fn );
|
2457 |
+
|
2458 |
+
// Store data in unique handler
|
2459 |
+
handler.data = data;
|
2460 |
+
}
|
2461 |
+
|
2462 |
+
// Init the element's event structure
|
2463 |
+
var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
|
2464 |
+
handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
|
2465 |
+
// Handle the second event of a trigger and when
|
2466 |
+
// an event is called after a page has unloaded
|
2467 |
+
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
|
2468 |
+
jQuery.event.handle.apply(arguments.callee.elem, arguments) :
|
2469 |
+
undefined;
|
2470 |
+
});
|
2471 |
+
// Add elem as a property of the handle function
|
2472 |
+
// This is to prevent a memory leak with non-native
|
2473 |
+
// event in IE.
|
2474 |
+
handle.elem = elem;
|
2475 |
+
|
2476 |
+
// Handle multiple events separated by a space
|
2477 |
+
// jQuery(...).bind("mouseover mouseout", fn);
|
2478 |
+
jQuery.each(types.split(/\s+/), function(index, type) {
|
2479 |
+
// Namespaced event handlers
|
2480 |
+
var namespaces = type.split(".");
|
2481 |
+
type = namespaces.shift();
|
2482 |
+
handler.type = namespaces.slice().sort().join(".");
|
2483 |
+
|
2484 |
+
// Get the current list of functions bound to this event
|
2485 |
+
var handlers = events[type];
|
2486 |
+
|
2487 |
+
if ( jQuery.event.specialAll[type] )
|
2488 |
+
jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
|
2489 |
+
|
2490 |
+
// Init the event handler queue
|
2491 |
+
if (!handlers) {
|
2492 |
+
handlers = events[type] = {};
|
2493 |
+
|
2494 |
+
// Check for a special event handler
|
2495 |
+
// Only use addEventListener/attachEvent if the special
|
2496 |
+
// events handler returns false
|
2497 |
+
if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
|
2498 |
+
// Bind the global event handler to the element
|
2499 |
+
if (elem.addEventListener)
|
2500 |
+
elem.addEventListener(type, handle, false);
|
2501 |
+
else if (elem.attachEvent)
|
2502 |
+
elem.attachEvent("on" + type, handle);
|
2503 |
+
}
|
2504 |
+
}
|
2505 |
+
|
2506 |
+
// Add the function to the element's handler list
|
2507 |
+
handlers[handler.guid] = handler;
|
2508 |
+
|
2509 |
+
// Keep track of which events have been used, for global triggering
|
2510 |
+
jQuery.event.global[type] = true;
|
2511 |
+
});
|
2512 |
+
|
2513 |
+
// Nullify elem to prevent memory leaks in IE
|
2514 |
+
elem = null;
|
2515 |
+
},
|
2516 |
+
|
2517 |
+
guid: 1,
|
2518 |
+
global: {},
|
2519 |
+
|
2520 |
+
// Detach an event or set of events from an element
|
2521 |
+
remove: function(elem, types, handler) {
|
2522 |
+
// don't do events on text and comment nodes
|
2523 |
+
if ( elem.nodeType == 3 || elem.nodeType == 8 )
|
2524 |
+
return;
|
2525 |
+
|
2526 |
+
var events = jQuery.data(elem, "events"), ret, index;
|
2527 |
+
|
2528 |
+
if ( events ) {
|
2529 |
+
// Unbind all events for the element
|
2530 |
+
if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
|
2531 |
+
for ( var type in events )
|
2532 |
+
this.remove( elem, type + (types || "") );
|
2533 |
+
else {
|
2534 |
+
// types is actually an event object here
|
2535 |
+
if ( types.type ) {
|
2536 |
+
handler = types.handler;
|
2537 |
+
types = types.type;
|
2538 |
+
}
|
2539 |
+
|
2540 |
+
// Handle multiple events seperated by a space
|
2541 |
+
// jQuery(...).unbind("mouseover mouseout", fn);
|
2542 |
+
jQuery.each(types.split(/\s+/), function(index, type){
|
2543 |
+
// Namespaced event handlers
|
2544 |
+
var namespaces = type.split(".");
|
2545 |
+
type = namespaces.shift();
|
2546 |
+
var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
|
2547 |
+
|
2548 |
+
if ( events[type] ) {
|
2549 |
+
// remove the given handler for the given type
|
2550 |
+
if ( handler )
|
2551 |
+
delete events[type][handler.guid];
|
2552 |
+
|
2553 |
+
// remove all handlers for the given type
|
2554 |
+
else
|
2555 |
+
for ( var handle in events[type] )
|
2556 |
+
// Handle the removal of namespaced events
|
2557 |
+
if ( namespace.test(events[type][handle].type) )
|
2558 |
+
delete events[type][handle];
|
2559 |
+
|
2560 |
+
if ( jQuery.event.specialAll[type] )
|
2561 |
+
jQuery.event.specialAll[type].teardown.call(elem, namespaces);
|
2562 |
+
|
2563 |
+
// remove generic event handler if no more handlers exist
|
2564 |
+
for ( ret in events[type] ) break;
|
2565 |
+
if ( !ret ) {
|
2566 |
+
if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
|
2567 |
+
if (elem.removeEventListener)
|
2568 |
+
elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
|
2569 |
+
else if (elem.detachEvent)
|
2570 |
+
elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
|
2571 |
+
}
|
2572 |
+
ret = null;
|
2573 |
+
delete events[type];
|
2574 |
+
}
|
2575 |
+
}
|
2576 |
+
});
|
2577 |
+
}
|
2578 |
+
|
2579 |
+
// Remove the expando if it's no longer used
|
2580 |
+
for ( ret in events ) break;
|
2581 |
+
if ( !ret ) {
|
2582 |
+
var handle = jQuery.data( elem, "handle" );
|
2583 |
+
if ( handle ) handle.elem = null;
|
2584 |
+
jQuery.removeData( elem, "events" );
|
2585 |
+
jQuery.removeData( elem, "handle" );
|
2586 |
+
}
|
2587 |
+
}
|
2588 |
+
},
|
2589 |
+
|
2590 |
+
// bubbling is internal
|
2591 |
+
trigger: function( event, data, elem, bubbling ) {
|
2592 |
+
// Event object or event type
|
2593 |
+
var type = event.type || event;
|
2594 |
+
|
2595 |
+
if( !bubbling ){
|
2596 |
+
event = typeof event === "object" ?
|
2597 |
+
// jQuery.Event object
|
2598 |
+
event[expando] ? event :
|
2599 |
+
// Object literal
|
2600 |
+
jQuery.extend( jQuery.Event(type), event ) :
|
2601 |
+
// Just the event type (string)
|
2602 |
+
jQuery.Event(type);
|
2603 |
+
|
2604 |
+
if ( type.indexOf("!") >= 0 ) {
|
2605 |
+
event.type = type = type.slice(0, -1);
|
2606 |
+
event.exclusive = true;
|
2607 |
+
}
|
2608 |
+
|
2609 |
+
// Handle a global trigger
|
2610 |
+
if ( !elem ) {
|
2611 |
+
// Don't bubble custom events when global (to avoid too much overhead)
|
2612 |
+
event.stopPropagation();
|
2613 |
+
// Only trigger if we've ever bound an event for it
|
2614 |
+
if ( this.global[type] )
|
2615 |
+
jQuery.each( jQuery.cache, function(){
|
2616 |
+
if ( this.events && this.events[type] )
|
2617 |
+
jQuery.event.trigger( event, data, this.handle.elem );
|
2618 |
+
});
|
2619 |
+
}
|
2620 |
+
|
2621 |
+
// Handle triggering a single element
|
2622 |
+
|
2623 |
+
// don't do events on text and comment nodes
|
2624 |
+
if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
|
2625 |
+
return undefined;
|
2626 |
+
|
2627 |
+
// Clean up in case it is reused
|
2628 |
+
event.result = undefined;
|
2629 |
+
event.target = elem;
|
2630 |
+
|
2631 |
+
// Clone the incoming data, if any
|
2632 |
+
data = jQuery.makeArray(data);
|
2633 |
+
data.unshift( event );
|
2634 |
+
}
|
2635 |
+
|
2636 |
+
event.currentTarget = elem;
|
2637 |
+
|
2638 |
+
// Trigger the event, it is assumed that "handle" is a function
|
2639 |
+
var handle = jQuery.data(elem, "handle");
|
2640 |
+
if ( handle )
|
2641 |
+
handle.apply( elem, data );
|
2642 |
+
|
2643 |
+
// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
|
2644 |
+
if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
|
2645 |
+
event.result = false;
|
2646 |
+
|
2647 |
+
// Trigger the native events (except for clicks on links)
|
2648 |
+
if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
|
2649 |
+
this.triggered = true;
|
2650 |
+
try {
|
2651 |
+
elem[ type ]();
|
2652 |
+
// prevent IE from throwing an error for some hidden elements
|
2653 |
+
} catch (e) {}
|
2654 |
+
}
|
2655 |
+
|
2656 |
+
this.triggered = false;
|
2657 |
+
|
2658 |
+
if ( !event.isPropagationStopped() ) {
|
2659 |
+
var parent = elem.parentNode || elem.ownerDocument;
|
2660 |
+
if ( parent )
|
2661 |
+
jQuery.event.trigger(event, data, parent, true);
|
2662 |
+
}
|
2663 |
+
},
|
2664 |
+
|
2665 |
+
handle: function(event) {
|
2666 |
+
// returned undefined or false
|
2667 |
+
var all, handlers;
|
2668 |
+
|
2669 |
+
event = arguments[0] = jQuery.event.fix( event || window.event );
|
2670 |
+
event.currentTarget = this;
|
2671 |
+
|
2672 |
+
// Namespaced event handlers
|
2673 |
+
var namespaces = event.type.split(".");
|
2674 |
+
event.type = namespaces.shift();
|
2675 |
+
|
2676 |
+
// Cache this now, all = true means, any handler
|
2677 |
+
all = !namespaces.length && !event.exclusive;
|
2678 |
+
|
2679 |
+
var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
|
2680 |
+
|
2681 |
+
handlers = ( jQuery.data(this, "events") || {} )[event.type];
|
2682 |
+
|
2683 |
+
for ( var j in handlers ) {
|
2684 |
+
var handler = handlers[j];
|
2685 |
+
|
2686 |
+
// Filter the functions by class
|
2687 |
+
if ( all || namespace.test(handler.type) ) {
|
2688 |
+
// Pass in a reference to the handler function itself
|
2689 |
+
// So that we can later remove it
|
2690 |
+
event.handler = handler;
|
2691 |
+
event.data = handler.data;
|
2692 |
+
|
2693 |
+
var ret = handler.apply(this, arguments);
|
2694 |
+
|
2695 |
+
if( ret !== undefined ){
|
2696 |
+
event.result = ret;
|
2697 |
+
if ( ret === false ) {
|
2698 |
+
event.preventDefault();
|
2699 |
+
event.stopPropagation();
|
2700 |
+
}
|
2701 |
+
}
|
2702 |
+
|
2703 |
+
if( event.isImmediatePropagationStopped() )
|
2704 |
+
break;
|
2705 |
+
|
2706 |
+
}
|
2707 |
+
}
|
2708 |
+
},
|
2709 |
+
|
2710 |
+
props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
2711 |
+
|
2712 |
+
fix: function(event) {
|
2713 |
+
if ( event[expando] )
|
2714 |
+
return event;
|
2715 |
+
|
2716 |
+
// store a copy of the original event object
|
2717 |
+
// and "clone" to set read-only properties
|
2718 |
+
var originalEvent = event;
|
2719 |
+
event = jQuery.Event( originalEvent );
|
2720 |
+
|
2721 |
+
for ( var i = this.props.length, prop; i; ){
|
2722 |
+
prop = this.props[ --i ];
|
2723 |
+
event[ prop ] = originalEvent[ prop ];
|
2724 |
+
}
|
2725 |
+
|
2726 |
+
// Fix target property, if necessary
|
2727 |
+
if ( !event.target )
|
2728 |
+
event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
|
2729 |
+
|
2730 |
+
// check if target is a textnode (safari)
|
2731 |
+
if ( event.target.nodeType == 3 )
|
2732 |
+
event.target = event.target.parentNode;
|
2733 |
+
|
2734 |
+
// Add relatedTarget, if necessary
|
2735 |
+
if ( !event.relatedTarget && event.fromElement )
|
2736 |
+
event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
|
2737 |
+
|
2738 |
+
// Calculate pageX/Y if missing and clientX/Y available
|
2739 |
+
if ( event.pageX == null && event.clientX != null ) {
|
2740 |
+
var doc = document.documentElement, body = document.body;
|
2741 |
+
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
|
2742 |
+
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
|
2743 |
+
}
|
2744 |
+
|
2745 |
+
// Add which for key events
|
2746 |
+
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
|
2747 |
+
event.which = event.charCode || event.keyCode;
|
2748 |
+
|
2749 |
+
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
|
2750 |
+
if ( !event.metaKey && event.ctrlKey )
|
2751 |
+
event.metaKey = event.ctrlKey;
|
2752 |
+
|
2753 |
+
// Add which for click: 1 == left; 2 == middle; 3 == right
|
2754 |
+
// Note: button is not normalized, so don't use it
|
2755 |
+
if ( !event.which && event.button )
|
2756 |
+
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
|
2757 |
+
|
2758 |
+
return event;
|
2759 |
+
},
|
2760 |
+
|
2761 |
+
proxy: function( fn, proxy ){
|
2762 |
+
proxy = proxy || function(){ return fn.apply(this, arguments); };
|
2763 |
+
// Set the guid of unique handler to the same of original handler, so it can be removed
|
2764 |
+
proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
|
2765 |
+
// So proxy can be declared as an argument
|
2766 |
+
return proxy;
|
2767 |
+
},
|
2768 |
+
|
2769 |
+
special: {
|
2770 |
+
ready: {
|
2771 |
+
// Make sure the ready event is setup
|
2772 |
+
setup: bindReady,
|
2773 |
+
teardown: function() {}
|
2774 |
+
}
|
2775 |
+
},
|
2776 |
+
|
2777 |
+
specialAll: {
|
2778 |
+
live: {
|
2779 |
+
setup: function( selector, namespaces ){
|
2780 |
+
jQuery.event.add( this, namespaces[0], liveHandler );
|
2781 |
+
},
|
2782 |
+
teardown: function( namespaces ){
|
2783 |
+
if ( namespaces.length ) {
|
2784 |
+
var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
|
2785 |
+
|
2786 |
+
jQuery.each( (jQuery.data(this, "events").live || {}), function(){
|
2787 |
+
if ( name.test(this.type) )
|
2788 |
+
remove++;
|
2789 |
+
});
|
2790 |
+
|
2791 |
+
if ( remove < 1 )
|
2792 |
+
jQuery.event.remove( this, namespaces[0], liveHandler );
|
2793 |
+
}
|
2794 |
+
}
|
2795 |
+
}
|
2796 |
+
}
|
2797 |
+
};
|
2798 |
+
|
2799 |
+
jQuery.Event = function( src ){
|
2800 |
+
// Allow instantiation without the 'new' keyword
|
2801 |
+
if( !this.preventDefault )
|
2802 |
+
return new jQuery.Event(src);
|
2803 |
+
|
2804 |
+
// Event object
|
2805 |
+
if( src && src.type ){
|
2806 |
+
this.originalEvent = src;
|
2807 |
+
this.type = src.type;
|
2808 |
+
// Event type
|
2809 |
+
}else
|
2810 |
+
this.type = src;
|
2811 |
+
|
2812 |
+
// timeStamp is buggy for some events on Firefox(#3843)
|
2813 |
+
// So we won't rely on the native value
|
2814 |
+
this.timeStamp = now();
|
2815 |
+
|
2816 |
+
// Mark it as fixed
|
2817 |
+
this[expando] = true;
|
2818 |
+
};
|
2819 |
+
|
2820 |
+
function returnFalse(){
|
2821 |
+
return false;
|
2822 |
+
}
|
2823 |
+
function returnTrue(){
|
2824 |
+
return true;
|
2825 |
+
}
|
2826 |
+
|
2827 |
+
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
2828 |
+
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
2829 |
+
jQuery.Event.prototype = {
|
2830 |
+
preventDefault: function() {
|
2831 |
+
this.isDefaultPrevented = returnTrue;
|
2832 |
+
|
2833 |
+
var e = this.originalEvent;
|
2834 |
+
if( !e )
|
2835 |
+
return;
|
2836 |
+
// if preventDefault exists run it on the original event
|
2837 |
+
if (e.preventDefault)
|
2838 |
+
e.preventDefault();
|
2839 |
+
// otherwise set the returnValue property of the original event to false (IE)
|
2840 |
+
e.returnValue = false;
|
2841 |
+
},
|
2842 |
+
stopPropagation: function() {
|
2843 |
+
this.isPropagationStopped = returnTrue;
|
2844 |
+
|
2845 |
+
var e = this.originalEvent;
|
2846 |
+
if( !e )
|
2847 |
+
return;
|
2848 |
+
// if stopPropagation exists run it on the original event
|
2849 |
+
if (e.stopPropagation)
|
2850 |
+
e.stopPropagation();
|
2851 |
+
// otherwise set the cancelBubble property of the original event to true (IE)
|
2852 |
+
e.cancelBubble = true;
|
2853 |
+
},
|
2854 |
+
stopImmediatePropagation:function(){
|
2855 |
+
this.isImmediatePropagationStopped = returnTrue;
|
2856 |
+
this.stopPropagation();
|
2857 |
+
},
|
2858 |
+
isDefaultPrevented: returnFalse,
|
2859 |
+
isPropagationStopped: returnFalse,
|
2860 |
+
isImmediatePropagationStopped: returnFalse
|
2861 |
+
};
|
2862 |
+
// Checks if an event happened on an element within another element
|
2863 |
+
// Used in jQuery.event.special.mouseenter and mouseleave handlers
|
2864 |
+
var withinElement = function(event) {
|
2865 |
+
// Check if mouse(over|out) are still within the same parent element
|
2866 |
+
var parent = event.relatedTarget;
|
2867 |
+
// Traverse up the tree
|
2868 |
+
while ( parent && parent != this )
|
2869 |
+
try { parent = parent.parentNode; }
|
2870 |
+
catch(e) { parent = this; }
|
2871 |
+
|
2872 |
+
if( parent != this ){
|
2873 |
+
// set the correct event type
|
2874 |
+
event.type = event.data;
|
2875 |
+
// handle event if we actually just moused on to a non sub-element
|
2876 |
+
jQuery.event.handle.apply( this, arguments );
|
2877 |
+
}
|
2878 |
+
};
|
2879 |
+
|
2880 |
+
jQuery.each({
|
2881 |
+
mouseover: 'mouseenter',
|
2882 |
+
mouseout: 'mouseleave'
|
2883 |
+
}, function( orig, fix ){
|
2884 |
+
jQuery.event.special[ fix ] = {
|
2885 |
+
setup: function(){
|
2886 |
+
jQuery.event.add( this, orig, withinElement, fix );
|
2887 |
+
},
|
2888 |
+
teardown: function(){
|
2889 |
+
jQuery.event.remove( this, orig, withinElement );
|
2890 |
+
}
|
2891 |
+
};
|
2892 |
+
});
|
2893 |
+
|
2894 |
+
jQuery.fn.extend({
|
2895 |
+
bind: function( type, data, fn ) {
|
2896 |
+
return type == "unload" ? this.one(type, data, fn) : this.each(function(){
|
2897 |
+
jQuery.event.add( this, type, fn || data, fn && data );
|
2898 |
+
});
|
2899 |
+
},
|
2900 |
+
|
2901 |
+
one: function( type, data, fn ) {
|
2902 |
+
var one = jQuery.event.proxy( fn || data, function(event) {
|
2903 |
+
jQuery(this).unbind(event, one);
|
2904 |
+
return (fn || data).apply( this, arguments );
|
2905 |
+
});
|
2906 |
+
return this.each(function(){
|
2907 |
+
jQuery.event.add( this, type, one, fn && data);
|
2908 |
+
});
|
2909 |
+
},
|
2910 |
+
|
2911 |
+
unbind: function( type, fn ) {
|
2912 |
+
return this.each(function(){
|
2913 |
+
jQuery.event.remove( this, type, fn );
|
2914 |
+
});
|
2915 |
+
},
|
2916 |
+
|
2917 |
+
trigger: function( type, data ) {
|
2918 |
+
return this.each(function(){
|
2919 |
+
jQuery.event.trigger( type, data, this );
|
2920 |
+
});
|
2921 |
+
},
|
2922 |
+
|
2923 |
+
triggerHandler: function( type, data ) {
|
2924 |
+
if( this[0] ){
|
2925 |
+
var event = jQuery.Event(type);
|
2926 |
+
event.preventDefault();
|
2927 |
+
event.stopPropagation();
|
2928 |
+
jQuery.event.trigger( event, data, this[0] );
|
2929 |
+
return event.result;
|
2930 |
+
}
|
2931 |
+
},
|
2932 |
+
|
2933 |
+
toggle: function( fn ) {
|
2934 |
+
// Save reference to arguments for access in closure
|
2935 |
+
var args = arguments, i = 1;
|
2936 |
+
|
2937 |
+
// link all the functions, so any of them can unbind this click handler
|
2938 |
+
while( i < args.length )
|
2939 |
+
jQuery.event.proxy( fn, args[i++] );
|
2940 |
+
|
2941 |
+
return this.click( jQuery.event.proxy( fn, function(event) {
|
2942 |
+
// Figure out which function to execute
|
2943 |
+
this.lastToggle = ( this.lastToggle || 0 ) % i;
|
2944 |
+
|
2945 |
+
// Make sure that clicks stop
|
2946 |
+
event.preventDefault();
|
2947 |
+
|
2948 |
+
// and execute the function
|
2949 |
+
return args[ this.lastToggle++ ].apply( this, arguments ) || false;
|
2950 |
+
}));
|
2951 |
+
},
|
2952 |
+
|
2953 |
+
hover: function(fnOver, fnOut) {
|
2954 |
+
return this.mouseenter(fnOver).mouseleave(fnOut);
|
2955 |
+
},
|
2956 |
+
|
2957 |
+
ready: function(fn) {
|
2958 |
+
// Attach the listeners
|
2959 |
+
bindReady();
|
2960 |
+
|
2961 |
+
// If the DOM is already ready
|
2962 |
+
if ( jQuery.isReady )
|
2963 |
+
// Execute the function immediately
|
2964 |
+
fn.call( document, jQuery );
|
2965 |
+
|
2966 |
+
// Otherwise, remember the function for later
|
2967 |
+
else
|
2968 |
+
// Add the function to the wait list
|
2969 |
+
jQuery.readyList.push( fn );
|
2970 |
+
|
2971 |
+
return this;
|
2972 |
+
},
|
2973 |
+
|
2974 |
+
live: function( type, fn ){
|
2975 |
+
var proxy = jQuery.event.proxy( fn );
|
2976 |
+
proxy.guid += this.selector + type;
|
2977 |
+
|
2978 |
+
jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
|
2979 |
+
|
2980 |
+
return this;
|
2981 |
+
},
|
2982 |
+
|
2983 |
+
die: function( type, fn ){
|
2984 |
+
jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
|
2985 |
+
return this;
|
2986 |
+
}
|
2987 |
+
});
|
2988 |
+
|
2989 |
+
function liveHandler( event ){
|
2990 |
+
var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
|
2991 |
+
stop = true,
|
2992 |
+
elems = [];
|
2993 |
+
|
2994 |
+
jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
|
2995 |
+
if ( check.test(fn.type) ) {
|
2996 |
+
var elem = jQuery(event.target).closest(fn.data)[0];
|
2997 |
+
if ( elem )
|
2998 |
+
elems.push({ elem: elem, fn: fn });
|
2999 |
+
}
|
3000 |
+
});
|
3001 |
+
|
3002 |
+
elems.sort(function(a,b) {
|
3003 |
+
return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
|
3004 |
+
});
|
3005 |
+
|
3006 |
+
jQuery.each(elems, function(){
|
3007 |
+
if ( this.fn.call(this.elem, event, this.fn.data) === false )
|
3008 |
+
return (stop = false);
|
3009 |
+
});
|
3010 |
+
|
3011 |
+
return stop;
|
3012 |
+
}
|
3013 |
+
|
3014 |
+
function liveConvert(type, selector){
|
3015 |
+
return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
|
3016 |
+
}
|
3017 |
+
|
3018 |
+
jQuery.extend({
|
3019 |
+
isReady: false,
|
3020 |
+
readyList: [],
|
3021 |
+
// Handle when the DOM is ready
|
3022 |
+
ready: function() {
|
3023 |
+
// Make sure that the DOM is not already loaded
|
3024 |
+
if ( !jQuery.isReady ) {
|
3025 |
+
// Remember that the DOM is ready
|
3026 |
+
jQuery.isReady = true;
|
3027 |
+
|
3028 |
+
// If there are functions bound, to execute
|
3029 |
+
if ( jQuery.readyList ) {
|
3030 |
+
// Execute all of them
|
3031 |
+
jQuery.each( jQuery.readyList, function(){
|
3032 |
+
this.call( document, jQuery );
|
3033 |
+
});
|
3034 |
+
|
3035 |
+
// Reset the list of functions
|
3036 |
+
jQuery.readyList = null;
|
3037 |
+
}
|
3038 |
+
|
3039 |
+
// Trigger any bound ready events
|
3040 |
+
jQuery(document).triggerHandler("ready");
|
3041 |
+
}
|
3042 |
+
}
|
3043 |
+
});
|
3044 |
+
|
3045 |
+
var readyBound = false;
|
3046 |
+
|
3047 |
+
function bindReady(){
|
3048 |
+
if ( readyBound ) return;
|
3049 |
+
readyBound = true;
|
3050 |
+
|
3051 |
+
// Mozilla, Opera and webkit nightlies currently support this event
|
3052 |
+
if ( document.addEventListener ) {
|
3053 |
+
// Use the handy event callback
|
3054 |
+
document.addEventListener( "DOMContentLoaded", function(){
|
3055 |
+
document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
|
3056 |
+
jQuery.ready();
|
3057 |
+
}, false );
|
3058 |
+
|
3059 |
+
// If IE event model is used
|
3060 |
+
} else if ( document.attachEvent ) {
|
3061 |
+
// ensure firing before onload,
|
3062 |
+
// maybe late but safe also for iframes
|
3063 |
+
document.attachEvent("onreadystatechange", function(){
|
3064 |
+
if ( document.readyState === "complete" ) {
|
3065 |
+
document.detachEvent( "onreadystatechange", arguments.callee );
|
3066 |
+
jQuery.ready();
|
3067 |
+
}
|
3068 |
+
});
|
3069 |
+
|
3070 |
+
// If IE and not an iframe
|
3071 |
+
// continually check to see if the document is ready
|
3072 |
+
if ( document.documentElement.doScroll && window == window.top ) (function(){
|
3073 |
+
if ( jQuery.isReady ) return;
|
3074 |
+
|
3075 |
+
try {
|
3076 |
+
// If IE is used, use the trick by Diego Perini
|
3077 |
+
// http://javascript.nwbox.com/IEContentLoaded/
|
3078 |
+
document.documentElement.doScroll("left");
|
3079 |
+
} catch( error ) {
|
3080 |
+
setTimeout( arguments.callee, 0 );
|
3081 |
+
return;
|
3082 |
+
}
|
3083 |
+
|
3084 |
+
// and execute any waiting functions
|
3085 |
+
jQuery.ready();
|
3086 |
+
})();
|
3087 |
+
}
|
3088 |
+
|
3089 |
+
// A fallback to window.onload, that will always work
|
3090 |
+
jQuery.event.add( window, "load", jQuery.ready );
|
3091 |
+
}
|
3092 |
+
|
3093 |
+
jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
|
3094 |
+
"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
|
3095 |
+
"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
|
3096 |
+
|
3097 |
+
// Handle event binding
|
3098 |
+
jQuery.fn[name] = function(fn){
|
3099 |
+
return fn ? this.bind(name, fn) : this.trigger(name);
|
3100 |
+
};
|
3101 |
+
});
|
3102 |
+
|
3103 |
+
// Prevent memory leaks in IE
|
3104 |
+
// And prevent errors on refresh with events like mouseover in other browsers
|
3105 |
+
// Window isn't included so as not to unbind existing unload events
|
3106 |
+
jQuery( window ).bind( 'unload', function(){
|
3107 |
+
for ( var id in jQuery.cache )
|
3108 |
+
// Skip the window
|
3109 |
+
if ( id != 1 && jQuery.cache[ id ].handle )
|
3110 |
+
jQuery.event.remove( jQuery.cache[ id ].handle.elem );
|
3111 |
+
});
|
3112 |
+
(function(){
|
3113 |
+
|
3114 |
+
jQuery.support = {};
|
3115 |
+
|
3116 |
+
var root = document.documentElement,
|
3117 |
+
script = document.createElement("script"),
|
3118 |
+
div = document.createElement("div"),
|
3119 |
+
id = "script" + (new Date).getTime();
|
3120 |
+
|
3121 |
+
div.style.display = "none";
|
3122 |
+
div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
|
3123 |
+
|
3124 |
+
var all = div.getElementsByTagName("*"),
|
3125 |
+
a = div.getElementsByTagName("a")[0];
|
3126 |
+
|
3127 |
+
// Can't get basic test support
|
3128 |
+
if ( !all || !all.length || !a ) {
|
3129 |
+
return;
|
3130 |
+
}
|
3131 |
+
|
3132 |
+
jQuery.support = {
|
3133 |
+
// IE strips leading whitespace when .innerHTML is used
|
3134 |
+
leadingWhitespace: div.firstChild.nodeType == 3,
|
3135 |
+
|
3136 |
+
// Make sure that tbody elements aren't automatically inserted
|
3137 |
+
// IE will insert them into empty tables
|
3138 |
+
tbody: !div.getElementsByTagName("tbody").length,
|
3139 |
+
|
3140 |
+
// Make sure that you can get all elements in an <object> element
|
3141 |
+
// IE 7 always returns no results
|
3142 |
+
objectAll: !!div.getElementsByTagName("object")[0]
|
3143 |
+
.getElementsByTagName("*").length,
|
3144 |
+
|
3145 |
+
// Make sure that link elements get serialized correctly by innerHTML
|
3146 |
+
// This requires a wrapper element in IE
|
3147 |
+
htmlSerialize: !!div.getElementsByTagName("link").length,
|
3148 |
+
|
3149 |
+
// Get the style information from getAttribute
|
3150 |
+
// (IE uses .cssText insted)
|
3151 |
+
style: /red/.test( a.getAttribute("style") ),
|
3152 |
+
|
3153 |
+
// Make sure that URLs aren't manipulated
|
3154 |
+
// (IE normalizes it by default)
|
3155 |
+
hrefNormalized: a.getAttribute("href") === "/a",
|
3156 |
+
|
3157 |
+
// Make sure that element opacity exists
|
3158 |
+
// (IE uses filter instead)
|
3159 |
+
opacity: a.style.opacity === "0.5",
|
3160 |
+
|
3161 |
+
// Verify style float existence
|
3162 |
+
// (IE uses styleFloat instead of cssFloat)
|
3163 |
+
cssFloat: !!a.style.cssFloat,
|
3164 |
+
|
3165 |
+
// Will be defined later
|
3166 |
+
scriptEval: false,
|
3167 |
+
noCloneEvent: true,
|
3168 |
+
boxModel: null
|
3169 |
+
};
|
3170 |
+
|
3171 |
+
script.type = "text/javascript";
|
3172 |
+
try {
|
3173 |
+
script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
|
3174 |
+
} catch(e){}
|
3175 |
+
|
3176 |
+
root.insertBefore( script, root.firstChild );
|
3177 |
+
|
3178 |
+
// Make sure that the execution of code works by injecting a script
|
3179 |
+
// tag with appendChild/createTextNode
|
3180 |
+
// (IE doesn't support this, fails, and uses .text instead)
|
3181 |
+
if ( window[ id ] ) {
|
3182 |
+
jQuery.support.scriptEval = true;
|
3183 |
+
delete window[ id ];
|
3184 |
+
}
|
3185 |
+
|
3186 |
+
root.removeChild( script );
|
3187 |
+
|
3188 |
+
if ( div.attachEvent && div.fireEvent ) {
|
3189 |
+
div.attachEvent("onclick", function(){
|
3190 |
+
// Cloning a node shouldn't copy over any
|
3191 |
+
// bound event handlers (IE does this)
|
3192 |
+
jQuery.support.noCloneEvent = false;
|
3193 |
+
div.detachEvent("onclick", arguments.callee);
|
3194 |
+
});
|
3195 |
+
div.cloneNode(true).fireEvent("onclick");
|
3196 |
+
}
|
3197 |
+
|
3198 |
+
// Figure out if the W3C box model works as expected
|
3199 |
+
// document.body must exist before we can do this
|
3200 |
+
jQuery(function(){
|
3201 |
+
var div = document.createElement("div");
|
3202 |
+
div.style.width = div.style.paddingLeft = "1px";
|
3203 |
+
|
3204 |
+
document.body.appendChild( div );
|
3205 |
+
jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
|
3206 |
+
document.body.removeChild( div ).style.display = 'none';
|
3207 |
+
});
|
3208 |
+
})();
|
3209 |
+
|
3210 |
+
var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
|
3211 |
+
|
3212 |
+
jQuery.props = {
|
3213 |
+
"for": "htmlFor",
|
3214 |
+
"class": "className",
|
3215 |
+
"float": styleFloat,
|
3216 |
+
cssFloat: styleFloat,
|
3217 |
+
styleFloat: styleFloat,
|
3218 |
+
readonly: "readOnly",
|
3219 |
+
maxlength: "maxLength",
|
3220 |
+
cellspacing: "cellSpacing",
|
3221 |
+
rowspan: "rowSpan",
|
3222 |
+
tabindex: "tabIndex"
|
3223 |
+
};
|
3224 |
+
jQuery.fn.extend({
|
3225 |
+
// Keep a copy of the old load
|
3226 |
+
_load: jQuery.fn.load,
|
3227 |
+
|
3228 |
+
load: function( url, params, callback ) {
|
3229 |
+
if ( typeof url !== "string" )
|
3230 |
+
return this._load( url );
|
3231 |
+
|
3232 |
+
var off = url.indexOf(" ");
|
3233 |
+
if ( off >= 0 ) {
|
3234 |
+
var selector = url.slice(off, url.length);
|
3235 |
+
url = url.slice(0, off);
|
3236 |
+
}
|
3237 |
+
|
3238 |
+
// Default to a GET request
|
3239 |
+
var type = "GET";
|
3240 |
+
|
3241 |
+
// If the second parameter was provided
|
3242 |
+
if ( params )
|
3243 |
+
// If it's a function
|
3244 |
+
if ( jQuery.isFunction( params ) ) {
|
3245 |
+
// We assume that it's the callback
|
3246 |
+
callback = params;
|
3247 |
+
params = null;
|
3248 |
+
|
3249 |
+
// Otherwise, build a param string
|
3250 |
+
} else if( typeof params === "object" ) {
|
3251 |
+
params = jQuery.param( params );
|
3252 |
+
type = "POST";
|
3253 |
+
}
|
3254 |
+
|
3255 |
+
var self = this;
|
3256 |
+
|
3257 |
+
// Request the remote document
|
3258 |
+
jQuery.ajax({
|
3259 |
+
url: url,
|
3260 |
+
type: type,
|
3261 |
+
dataType: "html",
|
3262 |
+
data: params,
|
3263 |
+
complete: function(res, status){
|
3264 |
+
// If successful, inject the HTML into all the matched elements
|
3265 |
+
if ( status == "success" || status == "notmodified" )
|
3266 |
+
// See if a selector was specified
|
3267 |
+
self.html( selector ?
|
3268 |
+
// Create a dummy div to hold the results
|
3269 |
+
jQuery("<div/>")
|
3270 |
+
// inject the contents of the document in, removing the scripts
|
3271 |
+
// to avoid any 'Permission Denied' errors in IE
|
3272 |
+
.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
|
3273 |
+
|
3274 |
+
// Locate the specified elements
|
3275 |
+
.find(selector) :
|
3276 |
+
|
3277 |
+
// If not, just inject the full result
|
3278 |
+
res.responseText );
|
3279 |
+
|
3280 |
+
if( callback )
|
3281 |
+
self.each( callback, [res.responseText, status, res] );
|
3282 |
+
}
|
3283 |
+
});
|
3284 |
+
return this;
|
3285 |
+
},
|
3286 |
+
|
3287 |
+
serialize: function() {
|
3288 |
+
return jQuery.param(this.serializeArray());
|
3289 |
+
},
|
3290 |
+
serializeArray: function() {
|
3291 |
+
return this.map(function(){
|
3292 |
+
return this.elements ? jQuery.makeArray(this.elements) : this;
|
3293 |
+
})
|
3294 |
+
.filter(function(){
|
3295 |
+
return this.name && !this.disabled &&
|
3296 |
+
(this.checked || /select|textarea/i.test(this.nodeName) ||
|
3297 |
+
/text|hidden|password|search/i.test(this.type));
|
3298 |
+
})
|
3299 |
+
.map(function(i, elem){
|
3300 |
+
var val = jQuery(this).val();
|
3301 |
+
return val == null ? null :
|
3302 |
+
jQuery.isArray(val) ?
|
3303 |
+
jQuery.map( val, function(val, i){
|
3304 |
+
return {name: elem.name, value: val};
|
3305 |
+
}) :
|
3306 |
+
{name: elem.name, value: val};
|
3307 |
+
}).get();
|
3308 |
+
}
|
3309 |
+
});
|
3310 |
+
|
3311 |
+
// Attach a bunch of functions for handling common AJAX events
|
3312 |
+
jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
|
3313 |
+
jQuery.fn[o] = function(f){
|
3314 |
+
return this.bind(o, f);
|
3315 |
+
};
|
3316 |
+
});
|
3317 |
+
|
3318 |
+
var jsc = now();
|
3319 |
+
|
3320 |
+
jQuery.extend({
|
3321 |
+
|
3322 |
+
get: function( url, data, callback, type ) {
|
3323 |
+
// shift arguments if data argument was ommited
|
3324 |
+
if ( jQuery.isFunction( data ) ) {
|
3325 |
+
callback = data;
|
3326 |
+
data = null;
|
3327 |
+
}
|
3328 |
+
|
3329 |
+
return jQuery.ajax({
|
3330 |
+
type: "GET",
|
3331 |
+
url: url,
|
3332 |
+
data: data,
|
3333 |
+
success: callback,
|
3334 |
+
dataType: type
|
3335 |
+
});
|
3336 |
+
},
|
3337 |
+
|
3338 |
+
getScript: function( url, callback ) {
|
3339 |
+
return jQuery.get(url, null, callback, "script");
|
3340 |
+
},
|
3341 |
+
|
3342 |
+
getJSON: function( url, data, callback ) {
|
3343 |
+
return jQuery.get(url, data, callback, "json");
|
3344 |
+
},
|
3345 |
+
|
3346 |
+
post: function( url, data, callback, type ) {
|
3347 |
+
if ( jQuery.isFunction( data ) ) {
|
3348 |
+
callback = data;
|
3349 |
+
data = {};
|
3350 |
+
}
|
3351 |
+
|
3352 |
+
return jQuery.ajax({
|
3353 |
+
type: "POST",
|
3354 |
+
url: url,
|
3355 |
+
data: data,
|
3356 |
+
success: callback,
|
3357 |
+
dataType: type
|
3358 |
+
});
|
3359 |
+
},
|
3360 |
+
|
3361 |
+
ajaxSetup: function( settings ) {
|
3362 |
+
jQuery.extend( jQuery.ajaxSettings, settings );
|
3363 |
+
},
|
3364 |
+
|
3365 |
+
ajaxSettings: {
|
3366 |
+
url: location.href,
|
3367 |
+
global: true,
|
3368 |
+
type: "GET",
|
3369 |
+
contentType: "application/x-www-form-urlencoded",
|
3370 |
+
processData: true,
|
3371 |
+
async: true,
|
3372 |
+
/*
|
3373 |
+
timeout: 0,
|
3374 |
+
data: null,
|
3375 |
+
username: null,
|
3376 |
+
password: null,
|
3377 |
+
*/
|
3378 |
+
// Create the request object; Microsoft failed to properly
|
3379 |
+
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
|
3380 |
+
// This function can be overriden by calling jQuery.ajaxSetup
|
3381 |
+
xhr:function(){
|
3382 |
+
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
|
3383 |
+
},
|
3384 |
+
accepts: {
|
3385 |
+
xml: "application/xml, text/xml",
|
3386 |
+
html: "text/html",
|
3387 |
+
script: "text/javascript, application/javascript",
|
3388 |
+
json: "application/json, text/javascript",
|
3389 |
+
text: "text/plain",
|
3390 |
+
_default: "*/*"
|
3391 |
+
}
|
3392 |
+
},
|
3393 |
+
|
3394 |
+
// Last-Modified header cache for next request
|
3395 |
+
lastModified: {},
|
3396 |
+
|
3397 |
+
ajax: function( s ) {
|
3398 |
+
// Extend the settings, but re-extend 's' so that it can be
|
3399 |
+
// checked again later (in the test suite, specifically)
|
3400 |
+
s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
|
3401 |
+
|
3402 |
+
var jsonp, jsre = /=\?(&|$)/g, status, data,
|
3403 |
+
type = s.type.toUpperCase();
|
3404 |
+
|
3405 |
+
// convert data if not already a string
|
3406 |
+
if ( s.data && s.processData && typeof s.data !== "string" )
|
3407 |
+
s.data = jQuery.param(s.data);
|
3408 |
+
|
3409 |
+
// Handle JSONP Parameter Callbacks
|
3410 |
+
if ( s.dataType == "jsonp" ) {
|
3411 |
+
if ( type == "GET" ) {
|
3412 |
+
if ( !s.url.match(jsre) )
|
3413 |
+
s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
|
3414 |
+
} else if ( !s.data || !s.data.match(jsre) )
|
3415 |
+
s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
|
3416 |
+
s.dataType = "json";
|
3417 |
+
}
|
3418 |
+
|
3419 |
+
// Build temporary JSONP function
|
3420 |
+
if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
|
3421 |
+
jsonp = "jsonp" + jsc++;
|
3422 |
+
|
3423 |
+
// Replace the =? sequence both in the query string and the data
|
3424 |
+
if ( s.data )
|
3425 |
+
s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
|
3426 |
+
s.url = s.url.replace(jsre, "=" + jsonp + "$1");
|
3427 |
+
|
3428 |
+
// We need to make sure
|
3429 |
+
// that a JSONP style response is executed properly
|
3430 |
+
s.dataType = "script";
|
3431 |
+
|
3432 |
+
// Handle JSONP-style loading
|
3433 |
+
window[ jsonp ] = function(tmp){
|
3434 |
+
data = tmp;
|
3435 |
+
success();
|
3436 |
+
complete();
|
3437 |
+
// Garbage collect
|
3438 |
+
window[ jsonp ] = undefined;
|
3439 |
+
try{ delete window[ jsonp ]; } catch(e){}
|
3440 |
+
if ( head )
|
3441 |
+
head.removeChild( script );
|
3442 |
+
};
|
3443 |
+
}
|
3444 |
+
|
3445 |
+
if ( s.dataType == "script" && s.cache == null )
|
3446 |
+
s.cache = false;
|
3447 |
+
|
3448 |
+
if ( s.cache === false && type == "GET" ) {
|
3449 |
+
var ts = now();
|
3450 |
+
// try replacing _= if it is there
|
3451 |
+
var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
|
3452 |
+
// if nothing was replaced, add timestamp to the end
|
3453 |
+
s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
|
3454 |
+
}
|
3455 |
+
|
3456 |
+
// If data is available, append data to url for get requests
|
3457 |
+
if ( s.data && type == "GET" ) {
|
3458 |
+
s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
|
3459 |
+
|
3460 |
+
// IE likes to send both get and post data, prevent this
|
3461 |
+
s.data = null;
|
3462 |
+
}
|
3463 |
+
|
3464 |
+
// Watch for a new set of requests
|
3465 |
+
if ( s.global && ! jQuery.active++ )
|
3466 |
+
jQuery.event.trigger( "ajaxStart" );
|
3467 |
+
|
3468 |
+
// Matches an absolute URL, and saves the domain
|
3469 |
+
var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
|
3470 |
+
|
3471 |
+
// If we're requesting a remote document
|
3472 |
+
// and trying to load JSON or Script with a GET
|
3473 |
+
if ( s.dataType == "script" && type == "GET" && parts
|
3474 |
+
&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
|
3475 |
+
|
3476 |
+
var head = document.getElementsByTagName("head")[0];
|
3477 |
+
var script = document.createElement("script");
|
3478 |
+
script.src = s.url;
|
3479 |
+
if (s.scriptCharset)
|
3480 |
+
script.charset = s.scriptCharset;
|
3481 |
+
|
3482 |
+
// Handle Script loading
|
3483 |
+
if ( !jsonp ) {
|
3484 |
+
var done = false;
|
3485 |
+
|
3486 |
+
// Attach handlers for all browsers
|
3487 |
+
script.onload = script.onreadystatechange = function(){
|
3488 |
+
if ( !done && (!this.readyState ||
|
3489 |
+
this.readyState == "loaded" || this.readyState == "complete") ) {
|
3490 |
+
done = true;
|
3491 |
+
success();
|
3492 |
+
complete();
|
3493 |
+
|
3494 |
+
// Handle memory leak in IE
|
3495 |
+
script.onload = script.onreadystatechange = null;
|
3496 |
+
head.removeChild( script );
|
3497 |
+
}
|
3498 |
+
};
|
3499 |
+
}
|
3500 |
+
|
3501 |
+
head.appendChild(script);
|
3502 |
+
|
3503 |
+
// We handle everything using the script element injection
|
3504 |
+
return undefined;
|
3505 |
+
}
|
3506 |
+
|
3507 |
+
var requestDone = false;
|
3508 |
+
|
3509 |
+
// Create the request object
|
3510 |
+
var xhr = s.xhr();
|
3511 |
+
|
3512 |
+
// Open the socket
|
3513 |
+
// Passing null username, generates a login popup on Opera (#2865)
|
3514 |
+
if( s.username )
|
3515 |
+
xhr.open(type, s.url, s.async, s.username, s.password);
|
3516 |
+
else
|
3517 |
+
xhr.open(type, s.url, s.async);
|
3518 |
+
|
3519 |
+
// Need an extra try/catch for cross domain requests in Firefox 3
|
3520 |
+
try {
|
3521 |
+
// Set the correct header, if data is being sent
|
3522 |
+
if ( s.data )
|
3523 |
+
xhr.setRequestHeader("Content-Type", s.contentType);
|
3524 |
+
|
3525 |
+
// Set the If-Modified-Since header, if ifModified mode.
|
3526 |
+
if ( s.ifModified )
|
3527 |
+
xhr.setRequestHeader("If-Modified-Since",
|
3528 |
+
jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
|
3529 |
+
|
3530 |
+
// Set header so the called script knows that it's an XMLHttpRequest
|
3531 |
+
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
3532 |
+
|
3533 |
+
// Set the Accepts header for the server, depending on the dataType
|
3534 |
+
xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
|
3535 |
+
s.accepts[ s.dataType ] + ", */*" :
|
3536 |
+
s.accepts._default );
|
3537 |
+
} catch(e){}
|
3538 |
+
|
3539 |
+
// Allow custom headers/mimetypes and early abort
|
3540 |
+
if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
|
3541 |
+
// Handle the global AJAX counter
|
3542 |
+
if ( s.global && ! --jQuery.active )
|
3543 |
+
jQuery.event.trigger( "ajaxStop" );
|
3544 |
+
// close opended socket
|
3545 |
+
xhr.abort();
|
3546 |
+
return false;
|
3547 |
+
}
|
3548 |
+
|
3549 |
+
if ( s.global )
|
3550 |
+
jQuery.event.trigger("ajaxSend", [xhr, s]);
|
3551 |
+
|
3552 |
+
// Wait for a response to come back
|
3553 |
+
var onreadystatechange = function(isTimeout){
|
3554 |
+
// The request was aborted, clear the interval and decrement jQuery.active
|
3555 |
+
if (xhr.readyState == 0) {
|
3556 |
+
if (ival) {
|
3557 |
+
// clear poll interval
|
3558 |
+
clearInterval(ival);
|
3559 |
+
ival = null;
|
3560 |
+
// Handle the global AJAX counter
|
3561 |
+
if ( s.global && ! --jQuery.active )
|
3562 |
+
jQuery.event.trigger( "ajaxStop" );
|
3563 |
+
}
|
3564 |
+
// The transfer is complete and the data is available, or the request timed out
|
3565 |
+
} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
|
3566 |
+
requestDone = true;
|
3567 |
+
|
3568 |
+
// clear poll interval
|
3569 |
+
if (ival) {
|
3570 |
+
clearInterval(ival);
|
3571 |
+
ival = null;
|
3572 |
+
}
|
3573 |
+
|
3574 |
+
status = isTimeout == "timeout" ? "timeout" :
|
3575 |
+
!jQuery.httpSuccess( xhr ) ? "error" :
|
3576 |
+
s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
|
3577 |
+
"success";
|
3578 |
+
|
3579 |
+
if ( status == "success" ) {
|
3580 |
+
// Watch for, and catch, XML document parse errors
|
3581 |
+
try {
|
3582 |
+
// process the data (runs the xml through httpData regardless of callback)
|
3583 |
+
data = jQuery.httpData( xhr, s.dataType, s );
|
3584 |
+
} catch(e) {
|
3585 |
+
status = "parsererror";
|
3586 |
+
}
|
3587 |
+
}
|
3588 |
+
|
3589 |
+
// Make sure that the request was successful or notmodified
|
3590 |
+
if ( status == "success" ) {
|
3591 |
+
// Cache Last-Modified header, if ifModified mode.
|
3592 |
+
var modRes;
|
3593 |
+
try {
|
3594 |
+
modRes = xhr.getResponseHeader("Last-Modified");
|
3595 |
+
} catch(e) {} // swallow exception thrown by FF if header is not available
|
3596 |
+
|
3597 |
+
if ( s.ifModified && modRes )
|
3598 |
+
jQuery.lastModified[s.url] = modRes;
|
3599 |
+
|
3600 |
+
// JSONP handles its own success callback
|
3601 |
+
if ( !jsonp )
|
3602 |
+
success();
|
3603 |
+
} else
|
3604 |
+
jQuery.handleError(s, xhr, status);
|
3605 |
+
|
3606 |
+
// Fire the complete handlers
|
3607 |
+
complete();
|
3608 |
+
|
3609 |
+
if ( isTimeout )
|
3610 |
+
xhr.abort();
|
3611 |
+
|
3612 |
+
// Stop memory leaks
|
3613 |
+
if ( s.async )
|
3614 |
+
xhr = null;
|
3615 |
+
}
|
3616 |
+
};
|
3617 |
+
|
3618 |
+
if ( s.async ) {
|
3619 |
+
// don't attach the handler to the request, just poll it instead
|
3620 |
+
var ival = setInterval(onreadystatechange, 13);
|
3621 |
+
|
3622 |
+
// Timeout checker
|
3623 |
+
if ( s.timeout > 0 )
|
3624 |
+
setTimeout(function(){
|
3625 |
+
// Check to see if the request is still happening
|
3626 |
+
if ( xhr && !requestDone )
|
3627 |
+
onreadystatechange( "timeout" );
|
3628 |
+
}, s.timeout);
|
3629 |
+
}
|
3630 |
+
|
3631 |
+
// Send the data
|
3632 |
+
try {
|
3633 |
+
xhr.send(s.data);
|
3634 |
+
} catch(e) {
|
3635 |
+
jQuery.handleError(s, xhr, null, e);
|
3636 |
+
}
|
3637 |
+
|
3638 |
+
// firefox 1.5 doesn't fire statechange for sync requests
|
3639 |
+
if ( !s.async )
|
3640 |
+
onreadystatechange();
|
3641 |
+
|
3642 |
+
function success(){
|
3643 |
+
// If a local callback was specified, fire it and pass it the data
|
3644 |
+
if ( s.success )
|
3645 |
+
s.success( data, status );
|
3646 |
+
|
3647 |
+
// Fire the global callback
|
3648 |
+
if ( s.global )
|
3649 |
+
jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
|
3650 |
+
}
|
3651 |
+
|
3652 |
+
function complete(){
|
3653 |
+
// Process result
|
3654 |
+
if ( s.complete )
|
3655 |
+
s.complete(xhr, status);
|
3656 |
+
|
3657 |
+
// The request was completed
|
3658 |
+
if ( s.global )
|
3659 |
+
jQuery.event.trigger( "ajaxComplete", [xhr, s] );
|
3660 |
+
|
3661 |
+
// Handle the global AJAX counter
|
3662 |
+
if ( s.global && ! --jQuery.active )
|
3663 |
+
jQuery.event.trigger( "ajaxStop" );
|
3664 |
+
}
|
3665 |
+
|
3666 |
+
// return XMLHttpRequest to allow aborting the request etc.
|
3667 |
+
return xhr;
|
3668 |
+
},
|
3669 |
+
|
3670 |
+
handleError: function( s, xhr, status, e ) {
|
3671 |
+
// If a local callback was specified, fire it
|
3672 |
+
if ( s.error ) s.error( xhr, status, e );
|
3673 |
+
|
3674 |
+
// Fire the global callback
|
3675 |
+
if ( s.global )
|
3676 |
+
jQuery.event.trigger( "ajaxError", [xhr, s, e] );
|
3677 |
+
},
|
3678 |
+
|
3679 |
+
// Counter for holding the number of active queries
|
3680 |
+
active: 0,
|
3681 |
+
|
3682 |
+
// Determines if an XMLHttpRequest was successful or not
|
3683 |
+
httpSuccess: function( xhr ) {
|
3684 |
+
try {
|
3685 |
+
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
|
3686 |
+
return !xhr.status && location.protocol == "file:" ||
|
3687 |
+
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
|
3688 |
+
} catch(e){}
|
3689 |
+
return false;
|
3690 |
+
},
|
3691 |
+
|
3692 |
+
// Determines if an XMLHttpRequest returns NotModified
|
3693 |
+
httpNotModified: function( xhr, url ) {
|
3694 |
+
try {
|
3695 |
+
var xhrRes = xhr.getResponseHeader("Last-Modified");
|
3696 |
+
|
3697 |
+
// Firefox always returns 200. check Last-Modified date
|
3698 |
+
return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
|
3699 |
+
} catch(e){}
|
3700 |
+
return false;
|
3701 |
+
},
|
3702 |
+
|
3703 |
+
httpData: function( xhr, type, s ) {
|
3704 |
+
var ct = xhr.getResponseHeader("content-type"),
|
3705 |
+
xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
|
3706 |
+
data = xml ? xhr.responseXML : xhr.responseText;
|
3707 |
+
|
3708 |
+
if ( xml && data.documentElement.tagName == "parsererror" )
|
3709 |
+
throw "parsererror";
|
3710 |
+
|
3711 |
+
// Allow a pre-filtering function to sanitize the response
|
3712 |
+
// s != null is checked to keep backwards compatibility
|
3713 |
+
if( s && s.dataFilter )
|
3714 |
+
data = s.dataFilter( data, type );
|
3715 |
+
|
3716 |
+
// The filter can actually parse the response
|
3717 |
+
if( typeof data === "string" ){
|
3718 |
+
|
3719 |
+
// If the type is "script", eval it in global context
|
3720 |
+
if ( type == "script" )
|
3721 |
+
jQuery.globalEval( data );
|
3722 |
+
|
3723 |
+
// Get the JavaScript object, if JSON is used.
|
3724 |
+
if ( type == "json" )
|
3725 |
+
data = window["eval"]("(" + data + ")");
|
3726 |
+
}
|
3727 |
+
|
3728 |
+
return data;
|
3729 |
+
},
|
3730 |
+
|
3731 |
+
// Serialize an array of form elements or a set of
|
3732 |
+
// key/values into a query string
|
3733 |
+
param: function( a ) {
|
3734 |
+
var s = [ ];
|
3735 |
+
|
3736 |
+
function add( key, value ){
|
3737 |
+
s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
|
3738 |
+
};
|
3739 |
+
|
3740 |
+
// If an array was passed in, assume that it is an array
|
3741 |
+
// of form elements
|
3742 |
+
if ( jQuery.isArray(a) || a.jquery )
|
3743 |
+
// Serialize the form elements
|
3744 |
+
jQuery.each( a, function(){
|
3745 |
+
add( this.name, this.value );
|
3746 |
+
});
|
3747 |
+
|
3748 |
+
// Otherwise, assume that it's an object of key/value pairs
|
3749 |
+
else
|
3750 |
+
// Serialize the key/values
|
3751 |
+
for ( var j in a )
|
3752 |
+
// If the value is an array then the key names need to be repeated
|
3753 |
+
if ( jQuery.isArray(a[j]) )
|
3754 |
+
jQuery.each( a[j], function(){
|
3755 |
+
add( j, this );
|
3756 |
+
});
|
3757 |
+
else
|
3758 |
+
add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
|
3759 |
+
|
3760 |
+
// Return the resulting serialization
|
3761 |
+
return s.join("&").replace(/%20/g, "+");
|
3762 |
+
}
|
3763 |
+
|
3764 |
+
});
|
3765 |
+
var elemdisplay = {},
|
3766 |
+
timerId,
|
3767 |
+
fxAttrs = [
|
3768 |
+
// height animations
|
3769 |
+
[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
|
3770 |
+
// width animations
|
3771 |
+
[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
|
3772 |
+
// opacity animations
|
3773 |
+
[ "opacity" ]
|
3774 |
+
];
|
3775 |
+
|
3776 |
+
function genFx( type, num ){
|
3777 |
+
var obj = {};
|
3778 |
+
jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
|
3779 |
+
obj[ this ] = type;
|
3780 |
+
});
|
3781 |
+
return obj;
|
3782 |
+
}
|
3783 |
+
|
3784 |
+
jQuery.fn.extend({
|
3785 |
+
show: function(speed,callback){
|
3786 |
+
if ( speed ) {
|
3787 |
+
return this.animate( genFx("show", 3), speed, callback);
|
3788 |
+
} else {
|
3789 |
+
for ( var i = 0, l = this.length; i < l; i++ ){
|
3790 |
+
var old = jQuery.data(this[i], "olddisplay");
|
3791 |
+
|
3792 |
+
this[i].style.display = old || "";
|
3793 |
+
|
3794 |
+
if ( jQuery.css(this[i], "display") === "none" ) {
|
3795 |
+
var tagName = this[i].tagName, display;
|
3796 |
+
|
3797 |
+
if ( elemdisplay[ tagName ] ) {
|
3798 |
+
display = elemdisplay[ tagName ];
|
3799 |
+
} else {
|
3800 |
+
var elem = jQuery("<" + tagName + " />").appendTo("body");
|
3801 |
+
|
3802 |
+
display = elem.css("display");
|
3803 |
+
if ( display === "none" )
|
3804 |
+
display = "block";
|
3805 |
+
|
3806 |
+
elem.remove();
|
3807 |
+
|
3808 |
+
elemdisplay[ tagName ] = display;
|
3809 |
+
}
|
3810 |
+
|
3811 |
+
jQuery.data(this[i], "olddisplay", display);
|
3812 |
+
}
|
3813 |
+
}
|
3814 |
+
|
3815 |
+
// Set the display of the elements in a second loop
|
3816 |
+
// to avoid the constant reflow
|
3817 |
+
for ( var i = 0, l = this.length; i < l; i++ ){
|
3818 |
+
this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
|
3819 |
+
}
|
3820 |
+
|
3821 |
+
return this;
|
3822 |
+
}
|
3823 |
+
},
|
3824 |
+
|
3825 |
+
hide: function(speed,callback){
|
3826 |
+
if ( speed ) {
|
3827 |
+
return this.animate( genFx("hide", 3), speed, callback);
|
3828 |
+
} else {
|
3829 |
+
for ( var i = 0, l = this.length; i < l; i++ ){
|
3830 |
+
var old = jQuery.data(this[i], "olddisplay");
|
3831 |
+
if ( !old && old !== "none" )
|
3832 |
+
jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
|
3833 |
+
}
|
3834 |
+
|
3835 |
+
// Set the display of the elements in a second loop
|
3836 |
+
// to avoid the constant reflow
|
3837 |
+
for ( var i = 0, l = this.length; i < l; i++ ){
|
3838 |
+
this[i].style.display = "none";
|
3839 |
+
}
|
3840 |
+
|
3841 |
+
return this;
|
3842 |
+
}
|
3843 |
+
},
|
3844 |
+
|
3845 |
+
// Save the old toggle function
|
3846 |
+
_toggle: jQuery.fn.toggle,
|
3847 |
+
|
3848 |
+
toggle: function( fn, fn2 ){
|
3849 |
+
var bool = typeof fn === "boolean";
|
3850 |
+
|
3851 |
+
return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
|
3852 |
+
this._toggle.apply( this, arguments ) :
|
3853 |
+
fn == null || bool ?
|
3854 |
+
this.each(function(){
|
3855 |
+
var state = bool ? fn : jQuery(this).is(":hidden");
|
3856 |
+
jQuery(this)[ state ? "show" : "hide" ]();
|
3857 |
+
}) :
|
3858 |
+
this.animate(genFx("toggle", 3), fn, fn2);
|
3859 |
+
},
|
3860 |
+
|
3861 |
+
fadeTo: function(speed,to,callback){
|
3862 |
+
return this.animate({opacity: to}, speed, callback);
|
3863 |
+
},
|
3864 |
+
|
3865 |
+
animate: function( prop, speed, easing, callback ) {
|
3866 |
+
var optall = jQuery.speed(speed, easing, callback);
|
3867 |
+
|
3868 |
+
return this[ optall.queue === false ? "each" : "queue" ](function(){
|
3869 |
+
|
3870 |
+
var opt = jQuery.extend({}, optall), p,
|
3871 |
+
hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
|
3872 |
+
self = this;
|
3873 |
+
|
3874 |
+
for ( p in prop ) {
|
3875 |
+
if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
|
3876 |
+
return opt.complete.call(this);
|
3877 |
+
|
3878 |
+
if ( ( p == "height" || p == "width" ) && this.style ) {
|
3879 |
+
// Store display property
|
3880 |
+
opt.display = jQuery.css(this, "display");
|
3881 |
+
|
3882 |
+
// Make sure that nothing sneaks out
|
3883 |
+
opt.overflow = this.style.overflow;
|
3884 |
+
}
|
3885 |
+
}
|
3886 |
+
|
3887 |
+
if ( opt.overflow != null )
|
3888 |
+
this.style.overflow = "hidden";
|
3889 |
+
|
3890 |
+
opt.curAnim = jQuery.extend({}, prop);
|
3891 |
+
|
3892 |
+
jQuery.each( prop, function(name, val){
|
3893 |
+
var e = new jQuery.fx( self, opt, name );
|
3894 |
+
|
3895 |
+
if ( /toggle|show|hide/.test(val) )
|
3896 |
+
e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
|
3897 |
+
else {
|
3898 |
+
var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
|
3899 |
+
start = e.cur(true) || 0;
|
3900 |
+
|
3901 |
+
if ( parts ) {
|
3902 |
+
var end = parseFloat(parts[2]),
|
3903 |
+
unit = parts[3] || "px";
|
3904 |
+
|
3905 |
+
// We need to compute starting value
|
3906 |
+
if ( unit != "px" ) {
|
3907 |
+
self.style[ name ] = (end || 1) + unit;
|
3908 |
+
start = ((end || 1) / e.cur(true)) * start;
|
3909 |
+
self.style[ name ] = start + unit;
|
3910 |
+
}
|
3911 |
+
|
3912 |
+
// If a +=/-= token was provided, we're doing a relative animation
|
3913 |
+
if ( parts[1] )
|
3914 |
+
end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
|
3915 |
+
|
3916 |
+
e.custom( start, end, unit );
|
3917 |
+
} else
|
3918 |
+
e.custom( start, val, "" );
|
3919 |
+
}
|
3920 |
+
});
|
3921 |
+
|
3922 |
+
// For JS strict compliance
|
3923 |
+
return true;
|
3924 |
+
});
|
3925 |
+
},
|
3926 |
+
|
3927 |
+
stop: function(clearQueue, gotoEnd){
|
3928 |
+
var timers = jQuery.timers;
|
3929 |
+
|
3930 |
+
if (clearQueue)
|
3931 |
+
this.queue([]);
|
3932 |
+
|
3933 |
+
this.each(function(){
|
3934 |
+
// go in reverse order so anything added to the queue during the loop is ignored
|
3935 |
+
for ( var i = timers.length - 1; i >= 0; i-- )
|
3936 |
+
if ( timers[i].elem == this ) {
|
3937 |
+
if (gotoEnd)
|
3938 |
+
// force the next step to be the last
|
3939 |
+
timers[i](true);
|
3940 |
+
timers.splice(i, 1);
|
3941 |
+
}
|
3942 |
+
});
|
3943 |
+
|
3944 |
+
// start the next in the queue if the last step wasn't forced
|
3945 |
+
if (!gotoEnd)
|
3946 |
+
this.dequeue();
|
3947 |
+
|
3948 |
+
return this;
|
3949 |
+
}
|
3950 |
+
|
3951 |
+
});
|
3952 |
+
|
3953 |
+
// Generate shortcuts for custom animations
|
3954 |
+
jQuery.each({
|
3955 |
+
slideDown: genFx("show", 1),
|
3956 |
+
slideUp: genFx("hide", 1),
|
3957 |
+
slideToggle: genFx("toggle", 1),
|
3958 |
+
fadeIn: { opacity: "show" },
|
3959 |
+
fadeOut: { opacity: "hide" }
|
3960 |
+
}, function( name, props ){
|
3961 |
+
jQuery.fn[ name ] = function( speed, callback ){
|
3962 |
+
return this.animate( props, speed, callback );
|
3963 |
+
};
|
3964 |
+
});
|
3965 |
+
|
3966 |
+
jQuery.extend({
|
3967 |
+
|
3968 |
+
speed: function(speed, easing, fn) {
|
3969 |
+
var opt = typeof speed === "object" ? speed : {
|
3970 |
+
complete: fn || !fn && easing ||
|
3971 |
+
jQuery.isFunction( speed ) && speed,
|
3972 |
+
duration: speed,
|
3973 |
+
easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
|
3974 |
+
};
|
3975 |
+
|
3976 |
+
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
|
3977 |
+
jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
|
3978 |
+
|
3979 |
+
// Queueing
|
3980 |
+
opt.old = opt.complete;
|
3981 |
+
opt.complete = function(){
|
3982 |
+
if ( opt.queue !== false )
|
3983 |
+
jQuery(this).dequeue();
|
3984 |
+
if ( jQuery.isFunction( opt.old ) )
|
3985 |
+
opt.old.call( this );
|
3986 |
+
};
|
3987 |
+
|
3988 |
+
return opt;
|
3989 |
+
},
|
3990 |
+
|
3991 |
+
easing: {
|
3992 |
+
linear: function( p, n, firstNum, diff ) {
|
3993 |
+
return firstNum + diff * p;
|
3994 |
+
},
|
3995 |
+
swing: function( p, n, firstNum, diff ) {
|
3996 |
+
return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
|
3997 |
+
}
|
3998 |
+
},
|
3999 |
+
|
4000 |
+
timers: [],
|
4001 |
+
|
4002 |
+
fx: function( elem, options, prop ){
|
4003 |
+
this.options = options;
|
4004 |
+
this.elem = elem;
|
4005 |
+
this.prop = prop;
|
4006 |
+
|
4007 |
+
if ( !options.orig )
|
4008 |
+
options.orig = {};
|
4009 |
+
}
|
4010 |
+
|
4011 |
+
});
|
4012 |
+
|
4013 |
+
jQuery.fx.prototype = {
|
4014 |
+
|
4015 |
+
// Simple function for setting a style value
|
4016 |
+
update: function(){
|
4017 |
+
if ( this.options.step )
|
4018 |
+
this.options.step.call( this.elem, this.now, this );
|
4019 |
+
|
4020 |
+
(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
|
4021 |
+
|
4022 |
+
// Set display property to block for height/width animations
|
4023 |
+
if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
|
4024 |
+
this.elem.style.display = "block";
|
4025 |
+
},
|
4026 |
+
|
4027 |
+
// Get the current size
|
4028 |
+
cur: function(force){
|
4029 |
+
if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
|
4030 |
+
return this.elem[ this.prop ];
|
4031 |
+
|
4032 |
+
var r = parseFloat(jQuery.css(this.elem, this.prop, force));
|
4033 |
+
return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
|
4034 |
+
},
|
4035 |
+
|
4036 |
+
// Start an animation from one number to another
|
4037 |
+
custom: function(from, to, unit){
|
4038 |
+
this.startTime = now();
|
4039 |
+
this.start = from;
|
4040 |
+
this.end = to;
|
4041 |
+
this.unit = unit || this.unit || "px";
|
4042 |
+
this.now = this.start;
|
4043 |
+
this.pos = this.state = 0;
|
4044 |
+
|
4045 |
+
var self = this;
|
4046 |
+
function t(gotoEnd){
|
4047 |
+
return self.step(gotoEnd);
|
4048 |
+
}
|
4049 |
+
|
4050 |
+
t.elem = this.elem;
|
4051 |
+
|
4052 |
+
if ( t() && jQuery.timers.push(t) && !timerId ) {
|
4053 |
+
timerId = setInterval(function(){
|
4054 |
+
var timers = jQuery.timers;
|
4055 |
+
|
4056 |
+
for ( var i = 0; i < timers.length; i++ )
|
4057 |
+
if ( !timers[i]() )
|
4058 |
+
timers.splice(i--, 1);
|
4059 |
+
|
4060 |
+
if ( !timers.length ) {
|
4061 |
+
clearInterval( timerId );
|
4062 |
+
timerId = undefined;
|
4063 |
+
}
|
4064 |
+
}, 13);
|
4065 |
+
}
|
4066 |
+
},
|
4067 |
+
|
4068 |
+
// Simple 'show' function
|
4069 |
+
show: function(){
|
4070 |
+
// Remember where we started, so that we can go back to it later
|
4071 |
+
this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
|
4072 |
+
this.options.show = true;
|
4073 |
+
|
4074 |
+
// Begin the animation
|
4075 |
+
// Make sure that we start at a small width/height to avoid any
|
4076 |
+
// flash of content
|
4077 |
+
this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
|
4078 |
+
|
4079 |
+
// Start by showing the element
|
4080 |
+
jQuery(this.elem).show();
|
4081 |
+
},
|
4082 |
+
|
4083 |
+
// Simple 'hide' function
|
4084 |
+
hide: function(){
|
4085 |
+
// Remember where we started, so that we can go back to it later
|
4086 |
+
this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
|
4087 |
+
this.options.hide = true;
|
4088 |
+
|
4089 |
+
// Begin the animation
|
4090 |
+
this.custom(this.cur(), 0);
|
4091 |
+
},
|
4092 |
+
|
4093 |
+
// Each step of an animation
|
4094 |
+
step: function(gotoEnd){
|
4095 |
+
var t = now();
|
4096 |
+
|
4097 |
+
if ( gotoEnd || t >= this.options.duration + this.startTime ) {
|
4098 |
+
this.now = this.end;
|
4099 |
+
this.pos = this.state = 1;
|
4100 |
+
this.update();
|
4101 |
+
|
4102 |
+
this.options.curAnim[ this.prop ] = true;
|
4103 |
+
|
4104 |
+
var done = true;
|
4105 |
+
for ( var i in this.options.curAnim )
|
4106 |
+
if ( this.options.curAnim[i] !== true )
|
4107 |
+
done = false;
|
4108 |
+
|
4109 |
+
if ( done ) {
|
4110 |
+
if ( this.options.display != null ) {
|
4111 |
+
// Reset the overflow
|
4112 |
+
this.elem.style.overflow = this.options.overflow;
|
4113 |
+
|
4114 |
+
// Reset the display
|
4115 |
+
this.elem.style.display = this.options.display;
|
4116 |
+
if ( jQuery.css(this.elem, "display") == "none" )
|
4117 |
+
this.elem.style.display = "block";
|
4118 |
+
}
|
4119 |
+
|
4120 |
+
// Hide the element if the "hide" operation was done
|
4121 |
+
if ( this.options.hide )
|
4122 |
+
jQuery(this.elem).hide();
|
4123 |
+
|
4124 |
+
// Reset the properties, if the item has been hidden or shown
|
4125 |
+
if ( this.options.hide || this.options.show )
|
4126 |
+
for ( var p in this.options.curAnim )
|
4127 |
+
jQuery.attr(this.elem.style, p, this.options.orig[p]);
|
4128 |
+
|
4129 |
+
// Execute the complete function
|
4130 |
+
this.options.complete.call( this.elem );
|
4131 |
+
}
|
4132 |
+
|
4133 |
+
return false;
|
4134 |
+
} else {
|
4135 |
+
var n = t - this.startTime;
|
4136 |
+
this.state = n / this.options.duration;
|
4137 |
+
|
4138 |
+
// Perform the easing function, defaults to swing
|
4139 |
+
this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
|
4140 |
+
this.now = this.start + ((this.end - this.start) * this.pos);
|
4141 |
+
|
4142 |
+
// Perform the next step of the animation
|
4143 |
+
this.update();
|
4144 |
+
}
|
4145 |
+
|
4146 |
+
return true;
|
4147 |
+
}
|
4148 |
+
|
4149 |
+
};
|
4150 |
+
|
4151 |
+
jQuery.extend( jQuery.fx, {
|
4152 |
+
speeds:{
|
4153 |
+
slow: 600,
|
4154 |
+
fast: 200,
|
4155 |
+
// Default speed
|
4156 |
+
_default: 400
|
4157 |
+
},
|
4158 |
+
step: {
|
4159 |
+
|
4160 |
+
opacity: function(fx){
|
4161 |
+
jQuery.attr(fx.elem.style, "opacity", fx.now);
|
4162 |
+
},
|
4163 |
+
|
4164 |
+
_default: function(fx){
|
4165 |
+
if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
|
4166 |
+
fx.elem.style[ fx.prop ] = fx.now + fx.unit;
|
4167 |
+
else
|
4168 |
+
fx.elem[ fx.prop ] = fx.now;
|
4169 |
+
}
|
4170 |
+
}
|
4171 |
+
});
|
4172 |
+
if ( document.documentElement["getBoundingClientRect"] )
|
4173 |
+
jQuery.fn.offset = function() {
|
4174 |
+
if ( !this[0] ) return { top: 0, left: 0 };
|
4175 |
+
if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
|
4176 |
+
var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
|
4177 |
+
clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
|
4178 |
+
top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
|
4179 |
+
left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
|
4180 |
+
return { top: top, left: left };
|
4181 |
+
};
|
4182 |
+
else
|
4183 |
+
jQuery.fn.offset = function() {
|
4184 |
+
if ( !this[0] ) return { top: 0, left: 0 };
|
4185 |
+
if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
|
4186 |
+
jQuery.offset.initialized || jQuery.offset.initialize();
|
4187 |
+
|
4188 |
+
var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
|
4189 |
+
doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
|
4190 |
+
body = doc.body, defaultView = doc.defaultView,
|
4191 |
+
prevComputedStyle = defaultView.getComputedStyle(elem, null),
|
4192 |
+
top = elem.offsetTop, left = elem.offsetLeft;
|
4193 |
+
|
4194 |
+
while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
|
4195 |
+
computedStyle = defaultView.getComputedStyle(elem, null);
|
4196 |
+
top -= elem.scrollTop, left -= elem.scrollLeft;
|
4197 |
+
if ( elem === offsetParent ) {
|
4198 |
+
top += elem.offsetTop, left += elem.offsetLeft;
|
4199 |
+
if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
|
4200 |
+
top += parseInt( computedStyle.borderTopWidth, 10) || 0,
|
4201 |
+
left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
|
4202 |
+
prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
|
4203 |
+
}
|
4204 |
+
if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
|
4205 |
+
top += parseInt( computedStyle.borderTopWidth, 10) || 0,
|
4206 |
+
left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
|
4207 |
+
prevComputedStyle = computedStyle;
|
4208 |
+
}
|
4209 |
+
|
4210 |
+
if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
|
4211 |
+
top += body.offsetTop,
|
4212 |
+
left += body.offsetLeft;
|
4213 |
+
|
4214 |
+
if ( prevComputedStyle.position === "fixed" )
|
4215 |
+
top += Math.max(docElem.scrollTop, body.scrollTop),
|
4216 |
+
left += Math.max(docElem.scrollLeft, body.scrollLeft);
|
4217 |
+
|
4218 |
+
return { top: top, left: left };
|
4219 |
+
};
|
4220 |
+
|
4221 |
+
jQuery.offset = {
|
4222 |
+
initialize: function() {
|
4223 |
+
if ( this.initialized ) return;
|
4224 |
+
var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
|
4225 |
+
html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
|
4226 |
+
|
4227 |
+
rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
|
4228 |
+
for ( prop in rules ) container.style[prop] = rules[prop];
|
4229 |
+
|
4230 |
+
container.innerHTML = html;
|
4231 |
+
body.insertBefore(container, body.firstChild);
|
4232 |
+
innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
|
4233 |
+
|
4234 |
+
this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
|
4235 |
+
this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
|
4236 |
+
|
4237 |
+
innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
|
4238 |
+
this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
|
4239 |
+
|
4240 |
+
body.style.marginTop = '1px';
|
4241 |
+
this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
|
4242 |
+
body.style.marginTop = bodyMarginTop;
|
4243 |
+
|
4244 |
+
body.removeChild(container);
|
4245 |
+
this.initialized = true;
|
4246 |
+
},
|
4247 |
+
|
4248 |
+
bodyOffset: function(body) {
|
4249 |
+
jQuery.offset.initialized || jQuery.offset.initialize();
|
4250 |
+
var top = body.offsetTop, left = body.offsetLeft;
|
4251 |
+
if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
|
4252 |
+
top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
|
4253 |
+
left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
|
4254 |
+
return { top: top, left: left };
|
4255 |
+
}
|
4256 |
+
};
|
4257 |
+
|
4258 |
+
|
4259 |
+
jQuery.fn.extend({
|
4260 |
+
position: function() {
|
4261 |
+
var left = 0, top = 0, results;
|
4262 |
+
|
4263 |
+
if ( this[0] ) {
|
4264 |
+
// Get *real* offsetParent
|
4265 |
+
var offsetParent = this.offsetParent(),
|
4266 |
+
|
4267 |
+
// Get correct offsets
|
4268 |
+
offset = this.offset(),
|
4269 |
+
parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
|
4270 |
+
|
4271 |
+
// Subtract element margins
|
4272 |
+
// note: when an element has margin: auto the offsetLeft and marginLeft
|
4273 |
+
// are the same in Safari causing offset.left to incorrectly be 0
|
4274 |
+
offset.top -= num( this, 'marginTop' );
|
4275 |
+
offset.left -= num( this, 'marginLeft' );
|
4276 |
+
|
4277 |
+
// Add offsetParent borders
|
4278 |
+
parentOffset.top += num( offsetParent, 'borderTopWidth' );
|
4279 |
+
parentOffset.left += num( offsetParent, 'borderLeftWidth' );
|
4280 |
+
|
4281 |
+
// Subtract the two offsets
|
4282 |
+
results = {
|
4283 |
+
top: offset.top - parentOffset.top,
|
4284 |
+
left: offset.left - parentOffset.left
|
4285 |
+
};
|
4286 |
+
}
|
4287 |
+
|
4288 |
+
return results;
|
4289 |
+
},
|
4290 |
+
|
4291 |
+
offsetParent: function() {
|
4292 |
+
var offsetParent = this[0].offsetParent || document.body;
|
4293 |
+
while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
|
4294 |
+
offsetParent = offsetParent.offsetParent;
|
4295 |
+
return jQuery(offsetParent);
|
4296 |
+
}
|
4297 |
+
});
|
4298 |
+
|
4299 |
+
|
4300 |
+
// Create scrollLeft and scrollTop methods
|
4301 |
+
jQuery.each( ['Left', 'Top'], function(i, name) {
|
4302 |
+
var method = 'scroll' + name;
|
4303 |
+
|
4304 |
+
jQuery.fn[ method ] = function(val) {
|
4305 |
+
if (!this[0]) return null;
|
4306 |
+
|
4307 |
+
return val !== undefined ?
|
4308 |
+
|
4309 |
+
// Set the scroll offset
|
4310 |
+
this.each(function() {
|
4311 |
+
this == window || this == document ?
|
4312 |
+
window.scrollTo(
|
4313 |
+
!i ? val : jQuery(window).scrollLeft(),
|
4314 |
+
i ? val : jQuery(window).scrollTop()
|
4315 |
+
) :
|
4316 |
+
this[ method ] = val;
|
4317 |
+
}) :
|
4318 |
+
|
4319 |
+
// Return the scroll offset
|
4320 |
+
this[0] == window || this[0] == document ?
|
4321 |
+
self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
|
4322 |
+
jQuery.boxModel && document.documentElement[ method ] ||
|
4323 |
+
document.body[ method ] :
|
4324 |
+
this[0][ method ];
|
4325 |
+
};
|
4326 |
+
});
|
4327 |
+
// Create innerHeight, innerWidth, outerHeight and outerWidth methods
|
4328 |
+
jQuery.each([ "Height", "Width" ], function(i, name){
|
4329 |
+
|
4330 |
+
var tl = i ? "Left" : "Top", // top or left
|
4331 |
+
br = i ? "Right" : "Bottom", // bottom or right
|
4332 |
+
lower = name.toLowerCase();
|
4333 |
+
|
4334 |
+
// innerHeight and innerWidth
|
4335 |
+
jQuery.fn["inner" + name] = function(){
|
4336 |
+
return this[0] ?
|
4337 |
+
jQuery.css( this[0], lower, false, "padding" ) :
|
4338 |
+
null;
|
4339 |
+
};
|
4340 |
+
|
4341 |
+
// outerHeight and outerWidth
|
4342 |
+
jQuery.fn["outer" + name] = function(margin) {
|
4343 |
+
return this[0] ?
|
4344 |
+
jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
|
4345 |
+
null;
|
4346 |
+
};
|
4347 |
+
|
4348 |
+
var type = name.toLowerCase();
|
4349 |
+
|
4350 |
+
jQuery.fn[ type ] = function( size ) {
|
4351 |
+
// Get window width or height
|
4352 |
+
return this[0] == window ?
|
4353 |
+
// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
|
4354 |
+
document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
|
4355 |
+
document.body[ "client" + name ] :
|
4356 |
+
|
4357 |
+
// Get document width or height
|
4358 |
+
this[0] == document ?
|
4359 |
+
// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
|
4360 |
+
Math.max(
|
4361 |
+
document.documentElement["client" + name],
|
4362 |
+
document.body["scroll" + name], document.documentElement["scroll" + name],
|
4363 |
+
document.body["offset" + name], document.documentElement["offset" + name]
|
4364 |
+
) :
|
4365 |
+
|
4366 |
+
// Get or set width or height on the element
|
4367 |
+
size === undefined ?
|
4368 |
+
// Get width or height on the element
|
4369 |
+
(this.length ? jQuery.css( this[0], type ) : null) :
|
4370 |
+
|
4371 |
+
// Set the width or height on the element (default to pixels if value is unitless)
|
4372 |
+
this.css( type, typeof size === "string" ? size : size + "px" );
|
4373 |
+
};
|
4374 |
+
|
4375 |
+
});
|
4376 |
+
})();
|
package.xml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>bagproductbydraganddrop</name>
|
4 |
+
<version>1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.opensource.org/licenses/osl-3.0.php">Extension license name (OSL v3.0)</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>This facilitates you to bag your products, simply by drag & drop of the product image into your bag.</summary>
|
10 |
+
<description>This facilitates you to bag your products, simply by drag & drop of the product image into your bag.
|
11 |
+
<br>
|
12 |
+
Description:
|
13 |
+
After installing it, on the listing page you will have the option of "Open Bag" which is droppable,movable container for the products.
|
14 |
+
<br>
|
15 |
+
By Dragging product image into your bag, you actually add product to your cart , you can directly check that which products are in your bag as well as in your cart.
|
16 |
+
<br>
|
17 |
+
This is extremely the user friendly fuction. User can easily add product to his/her bag.</description>
|
18 |
+
<notes>This extension will update your listing page, css, js, and CartController.php</notes>
|
19 |
+
<authors><author><name>Amit Shah</name><user>auto-converted</user><email>amitshah2007@gmail.com</email></author></authors>
|
20 |
+
<date>2010-04-09</date>
|
21 |
+
<time>12:46:50</time>
|
22 |
+
<contents><target name="mageskin"><dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="css"><file name="jquery.fancybox-1.3.1.css" hash="67e3c342885fc13fc8aaf0d915ccbfc2"/></dir><dir name="images"><file name="fancybox-x.png" hash="168696d8a694214090ef90e029cdf393"/><file name="fancybox-y.png" hash="36a58859beb9a6b19322a37466b9f78e"/><file name="fancybox.png" hash="11e57e492ee0311540967cc7a1e6e3e2"/><file name="fancy_close.png" hash="6e2879a324a76e9972ebc98201aae1d8"/><file name="fancy_loading.png" hash="b1d54c240cf06e7f41e372d56919b738"/><file name="fancy_nav_left.png" hash="3f3e406102152cd8236383568a40ba35"/><file name="fancy_nav_right.png" hash="216e4bde5bddeeaa60dc3d692890a68e"/><file name="fancy_shadow_e.png" hash="fd4f491080d29fade5080877f1ba4c8b"/><file name="fancy_shadow_n.png" hash="18cde16379b2ceadef714d9b346d09ec"/><file name="fancy_shadow_ne.png" hash="63adf788acf193d4e4f3642d7d793125"/><file name="fancy_shadow_nw.png" hash="c820c878aedb7a7f9ebd7135a58e7c65"/><file name="fancy_shadow_s.png" hash="9b9e5c888028aaef40fe5b6a363f1e29"/><file name="fancy_shadow_se.png" hash="a8afd5a008884380ee712d177105268f"/><file name="fancy_shadow_sw.png" hash="f81cc0fee5581d76ad3cebe47e7e791b"/><file name="fancy_shadow_w.png" hash="59b0e63eb059e58d932cfd53da4d87e6"/><file name="fancy_title_left.png" hash="1582ac2d3bef6a6445bf02ceca2741cd"/><file name="fancy_title_main.png" hash="38dad6c1ed4bdc81c0bec721b2deb8c2"/><file name="fancy_title_over.png" hash="b886fd165d4b7ac77d41fb52d87ffc60"/><file name="fancy_title_right.png" hash="6cbe0c935511e7f9a2555ccb6a7324c4"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="catalog"><dir name="product"><file name="list.phtml" hash="631e24701fbefb4a1315c29e02e1a3fa"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="varien"><file name="interface.js" hash="148ec7aaeb7a75d43cc34e02768caf9c"/><file name="jquery.fancybox-1.3.1.js" hash="8eeb837e2a084703f5f1c413aa4d8845"/><file name="jquery.js" hash="92d4f1412222f2dc12627ab42b66fc1c"/></dir></dir></dir></target><target name="magecore"><dir><dir name="Mage"><dir name="Checkout"><dir name="controllers"><file name="CartController.php" hash="9c8ffe1b7969f2f70f205c480446786e"/></dir></dir></dir></dir></target></contents>
|
23 |
+
<compatible/>
|
24 |
+
<dependencies/>
|
25 |
+
</package>
|
skin/frontend/default/default/css/jquery.fancybox-1.3.1.css
ADDED
@@ -0,0 +1,364 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* FancyBox - jQuery Plugin
|
3 |
+
* Simple and fancy lightbox alternative
|
4 |
+
*
|
5 |
+
* Examples and documentation at: http://fancybox.net
|
6 |
+
*
|
7 |
+
* Copyright (c) 2008 - 2010 Janis Skarnelis
|
8 |
+
*
|
9 |
+
* Version: 1.3.1 (05/03/2010)
|
10 |
+
* Requires: jQuery v1.3+
|
11 |
+
*
|
12 |
+
* Dual licensed under the MIT and GPL licenses:
|
13 |
+
* http://www.opensource.org/licenses/mit-license.php
|
14 |
+
* http://www.gnu.org/licenses/gpl.html
|
15 |
+
*/
|
16 |
+
|
17 |
+
#fancybox-loading {
|
18 |
+
position: fixed;
|
19 |
+
top: 50%;
|
20 |
+
left: 50%;
|
21 |
+
height: 40px;
|
22 |
+
width: 40px;
|
23 |
+
margin-top: -20px;
|
24 |
+
margin-left: -20px;
|
25 |
+
cursor: pointer;
|
26 |
+
overflow: hidden;
|
27 |
+
z-index: 1104;
|
28 |
+
display: none;
|
29 |
+
}
|
30 |
+
|
31 |
+
* html #fancybox-loading { /* IE6 */
|
32 |
+
position: absolute;
|
33 |
+
margin-top: 0;
|
34 |
+
}
|
35 |
+
|
36 |
+
#fancybox-loading div {
|
37 |
+
position: absolute;
|
38 |
+
top: 0;
|
39 |
+
left: 0;
|
40 |
+
width: 40px;
|
41 |
+
height: 480px;
|
42 |
+
background-image: url('../images/fancybox.png');
|
43 |
+
}
|
44 |
+
|
45 |
+
#fancybox-overlay {
|
46 |
+
position: fixed;
|
47 |
+
top: 0;
|
48 |
+
left: 0;
|
49 |
+
bottom: 0;
|
50 |
+
right: 0;
|
51 |
+
background: #000;
|
52 |
+
z-index: 1100;
|
53 |
+
display: none;
|
54 |
+
}
|
55 |
+
|
56 |
+
* html #fancybox-overlay { /* IE6 */
|
57 |
+
position: absolute;
|
58 |
+
width: 100%;
|
59 |
+
}
|
60 |
+
|
61 |
+
#fancybox-tmp {
|
62 |
+
padding: 0;
|
63 |
+
margin: 0;
|
64 |
+
border: 0;
|
65 |
+
overflow: auto;
|
66 |
+
display: none;
|
67 |
+
}
|
68 |
+
|
69 |
+
#fancybox-wrap {
|
70 |
+
position: absolute;
|
71 |
+
top: 0;
|
72 |
+
left: 0;
|
73 |
+
margin: 0;
|
74 |
+
padding: 20px;
|
75 |
+
z-index: 1101;
|
76 |
+
display: none;
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
#fancybox-outer {
|
81 |
+
position: relative;
|
82 |
+
width: 100%;
|
83 |
+
height: 100%;
|
84 |
+
background: #FFF;
|
85 |
+
}
|
86 |
+
|
87 |
+
#fancybox-inner {
|
88 |
+
position: absolute;
|
89 |
+
top: 0;
|
90 |
+
left: 0;
|
91 |
+
width: 1px;
|
92 |
+
height: 1px;
|
93 |
+
padding: 0;
|
94 |
+
margin: 0;
|
95 |
+
outline: none;
|
96 |
+
overflow: hidden;
|
97 |
+
}
|
98 |
+
|
99 |
+
#fancybox-hide-sel-frame {
|
100 |
+
position: absolute;
|
101 |
+
top: 0;
|
102 |
+
left: 0;
|
103 |
+
width: 100%;
|
104 |
+
height: 100%;
|
105 |
+
background: transparent;
|
106 |
+
}
|
107 |
+
|
108 |
+
#fancybox-close {
|
109 |
+
position: absolute;
|
110 |
+
top: -15px;
|
111 |
+
right: -15px;
|
112 |
+
width: 30px;
|
113 |
+
height: 30px;
|
114 |
+
background-image: url('../images/fancybox.png');
|
115 |
+
background-position: -40px 0px;
|
116 |
+
cursor: pointer;
|
117 |
+
z-index: 1103;
|
118 |
+
display: none;
|
119 |
+
}
|
120 |
+
|
121 |
+
#fancybox_error {
|
122 |
+
color: #444;
|
123 |
+
font: normal 12px/20px Arial;
|
124 |
+
padding: 7px;
|
125 |
+
margin: 0;
|
126 |
+
}
|
127 |
+
|
128 |
+
#fancybox-content {
|
129 |
+
height: auto;
|
130 |
+
width: auto;
|
131 |
+
padding: 0;
|
132 |
+
margin: 0;
|
133 |
+
}
|
134 |
+
|
135 |
+
#fancybox-img {
|
136 |
+
width: 100%;
|
137 |
+
height: 100%;
|
138 |
+
padding: 0;
|
139 |
+
margin: 0;
|
140 |
+
border: none;
|
141 |
+
outline: none;
|
142 |
+
line-height: 0;
|
143 |
+
vertical-align: top;
|
144 |
+
-ms-interpolation-mode: bicubic;
|
145 |
+
}
|
146 |
+
|
147 |
+
#fancybox-frame {
|
148 |
+
position: relative;
|
149 |
+
width: 100%;
|
150 |
+
height: 100%;
|
151 |
+
border: none;
|
152 |
+
display: block;
|
153 |
+
}
|
154 |
+
|
155 |
+
#fancybox-title {
|
156 |
+
position: absolute;
|
157 |
+
bottom: 0;
|
158 |
+
left: 0;
|
159 |
+
font-family: Arial;
|
160 |
+
font-size: 12px;
|
161 |
+
z-index: 1102;
|
162 |
+
}
|
163 |
+
|
164 |
+
.fancybox-title-inside {
|
165 |
+
padding: 10px 0;
|
166 |
+
text-align: center;
|
167 |
+
color: #333;
|
168 |
+
}
|
169 |
+
|
170 |
+
.fancybox-title-outside {
|
171 |
+
padding-top: 5px;
|
172 |
+
color: #FFF;
|
173 |
+
text-align: center;
|
174 |
+
font-weight: bold;
|
175 |
+
}
|
176 |
+
|
177 |
+
.fancybox-title-over {
|
178 |
+
color: #FFF;
|
179 |
+
text-align: left;
|
180 |
+
}
|
181 |
+
|
182 |
+
#fancybox-title-over {
|
183 |
+
padding: 10px;
|
184 |
+
background-image: url('../images/fancy_title_over.png');
|
185 |
+
display: block;
|
186 |
+
}
|
187 |
+
|
188 |
+
#fancybox-title-wrap {
|
189 |
+
display: inline-block;
|
190 |
+
}
|
191 |
+
|
192 |
+
#fancybox-title-wrap span {
|
193 |
+
height: 32px;
|
194 |
+
float: left;
|
195 |
+
}
|
196 |
+
|
197 |
+
#fancybox-title-left {
|
198 |
+
padding-left: 15px;
|
199 |
+
background-image: url('../images/fancybox.png');
|
200 |
+
background-position: -40px -90px;
|
201 |
+
background-repeat: no-repeat;
|
202 |
+
}
|
203 |
+
|
204 |
+
#fancybox-title-main {
|
205 |
+
font-weight: bold;
|
206 |
+
line-height: 29px;
|
207 |
+
background-image: url('../images/fancybox-x.png');
|
208 |
+
background-position: 0px -40px;
|
209 |
+
color: #FFF;
|
210 |
+
}
|
211 |
+
|
212 |
+
#fancybox-title-right {
|
213 |
+
padding-left: 15px;
|
214 |
+
background-image: url('../images/fancybox.png');
|
215 |
+
background-position: -55px -90px;
|
216 |
+
background-repeat: no-repeat;
|
217 |
+
}
|
218 |
+
|
219 |
+
#fancybox-left, #fancybox-right {
|
220 |
+
position: absolute;
|
221 |
+
bottom: 0px;
|
222 |
+
height: 100%;
|
223 |
+
width: 35%;
|
224 |
+
cursor: pointer;
|
225 |
+
outline: none;
|
226 |
+
background-image: url('../images/blank.gif');
|
227 |
+
z-index: 1102;
|
228 |
+
display: none;
|
229 |
+
}
|
230 |
+
|
231 |
+
#fancybox-left {
|
232 |
+
left: 0px;
|
233 |
+
}
|
234 |
+
|
235 |
+
#fancybox-right {
|
236 |
+
right: 0px;
|
237 |
+
}
|
238 |
+
|
239 |
+
#fancybox-left-ico, #fancybox-right-ico {
|
240 |
+
position: absolute;
|
241 |
+
top: 50%;
|
242 |
+
left: -9999px;
|
243 |
+
width: 30px;
|
244 |
+
height: 30px;
|
245 |
+
margin-top: -15px;
|
246 |
+
cursor: pointer;
|
247 |
+
z-index: 1102;
|
248 |
+
display: block;
|
249 |
+
}
|
250 |
+
|
251 |
+
#fancybox-left-ico {
|
252 |
+
background-image: url('../images/fancybox.png');
|
253 |
+
background-position: -40px -30px;
|
254 |
+
}
|
255 |
+
|
256 |
+
#fancybox-right-ico {
|
257 |
+
background-image: url('../images/fancybox.png');
|
258 |
+
background-position: -40px -60px;
|
259 |
+
}
|
260 |
+
|
261 |
+
#fancybox-left:hover, #fancybox-right:hover {
|
262 |
+
visibility: visible; /* IE6 */
|
263 |
+
}
|
264 |
+
|
265 |
+
#fancybox-left:hover span {
|
266 |
+
left: 20px;
|
267 |
+
}
|
268 |
+
|
269 |
+
#fancybox-right:hover span {
|
270 |
+
left: auto;
|
271 |
+
right: 20px;
|
272 |
+
}
|
273 |
+
|
274 |
+
.fancy-bg {
|
275 |
+
position: absolute;
|
276 |
+
padding: 0;
|
277 |
+
margin: 0;
|
278 |
+
border: 0;
|
279 |
+
width: 20px;
|
280 |
+
height: 20px;
|
281 |
+
z-index: 1001;
|
282 |
+
}
|
283 |
+
|
284 |
+
#fancy-bg-n {
|
285 |
+
top: -20px;
|
286 |
+
left: 0;
|
287 |
+
width: 100%;
|
288 |
+
background-image: url('../images/fancybox-x.png');
|
289 |
+
}
|
290 |
+
|
291 |
+
#fancy-bg-ne {
|
292 |
+
top: -20px;
|
293 |
+
right: -20px;
|
294 |
+
background-image: url('../images/fancybox.png');
|
295 |
+
background-position: -40px -162px;
|
296 |
+
}
|
297 |
+
|
298 |
+
#fancy-bg-e {
|
299 |
+
top: 0;
|
300 |
+
right: -20px;
|
301 |
+
height: 100%;
|
302 |
+
background-image: url('../images/fancybox-y.png');
|
303 |
+
background-position: -20px 0px;
|
304 |
+
}
|
305 |
+
|
306 |
+
#fancy-bg-se {
|
307 |
+
bottom: -20px;
|
308 |
+
right: -20px;
|
309 |
+
background-image: url('../images/fancybox.png');
|
310 |
+
background-position: -40px -182px;
|
311 |
+
}
|
312 |
+
|
313 |
+
#fancy-bg-s {
|
314 |
+
bottom: -20px;
|
315 |
+
left: 0;
|
316 |
+
width: 100%;
|
317 |
+
background-image: url('../images/fancybox-x.png');
|
318 |
+
background-position: 0px -20px;
|
319 |
+
}
|
320 |
+
|
321 |
+
#fancy-bg-sw {
|
322 |
+
bottom: -20px;
|
323 |
+
left: -20px;
|
324 |
+
background-image: url('../images/fancybox.png');
|
325 |
+
background-position: -40px -142px;
|
326 |
+
}
|
327 |
+
|
328 |
+
#fancy-bg-w {
|
329 |
+
top: 0;
|
330 |
+
left: -20px;
|
331 |
+
height: 100%;
|
332 |
+
background-image: url('../images/fancybox-y.png');
|
333 |
+
}
|
334 |
+
|
335 |
+
#fancy-bg-nw {
|
336 |
+
top: -20px;
|
337 |
+
left: -20px;
|
338 |
+
background-image: url('../images/fancybox.png');
|
339 |
+
background-position: -40px -122px;
|
340 |
+
}
|
341 |
+
|
342 |
+
/* IE */
|
343 |
+
|
344 |
+
#fancybox-loading.fancybox-ie div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_loading.png', sizingMethod='scale'); }
|
345 |
+
.fancybox-ie #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_close.png', sizingMethod='scale'); }
|
346 |
+
|
347 |
+
.fancybox-ie #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
|
348 |
+
.fancybox-ie #fancybox-title-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_title_left.png', sizingMethod='scale'); }
|
349 |
+
.fancybox-ie #fancybox-title-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_title_main.png', sizingMethod='scale'); }
|
350 |
+
.fancybox-ie #fancybox-title-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_title_right.png', sizingMethod='scale'); }
|
351 |
+
|
352 |
+
.fancybox-ie #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_nav_left.png', sizingMethod='scale'); }
|
353 |
+
.fancybox-ie #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_nav_right.png', sizingMethod='scale'); }
|
354 |
+
|
355 |
+
.fancybox-ie .fancy-bg { background: transparent !important; }
|
356 |
+
|
357 |
+
.fancybox-ie #fancy-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_n.png', sizingMethod='scale'); }
|
358 |
+
.fancybox-ie #fancy-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_ne.png', sizingMethod='scale'); }
|
359 |
+
.fancybox-ie #fancy-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_e.png', sizingMethod='scale'); }
|
360 |
+
.fancybox-ie #fancy-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_se.png', sizingMethod='scale'); }
|
361 |
+
.fancybox-ie #fancy-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_s.png', sizingMethod='scale'); }
|
362 |
+
.fancybox-ie #fancy-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_sw.png', sizingMethod='scale'); }
|
363 |
+
.fancybox-ie #fancy-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_w.png', sizingMethod='scale'); }
|
364 |
+
.fancybox-ie #fancy-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/fancy_shadow_nw.png', sizingMethod='scale'); }
|
skin/frontend/default/default/images/fancy_close.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_loading.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_nav_left.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_nav_right.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_e.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_n.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_ne.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_nw.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_s.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_se.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_sw.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_shadow_w.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_title_left.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_title_main.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_title_over.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancy_title_right.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancybox-x.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancybox-y.png
ADDED
Binary file
|
skin/frontend/default/default/images/fancybox.png
ADDED
Binary file
|