From 69f0119c7262602af46fd6a80e4558089835fa01 Mon Sep 17 00:00:00 2001 From: Jayaram R Pai Date: Thu, 31 Jul 2014 17:13:33 +0530 Subject: initial commit --- README.txt | 127 + STARTERKIT.info.txt | 96 + css/README.txt | 134 + css/block-editing-rtl.css | 10 + css/block-editing.css | 25 + css/blocks.css | 96 + css/comments.css | 79 + css/dropdown-menu.css | 146 + css/drupal6-reference.css | 1983 ++++++ css/fields.css | 44 + css/font-style.css | 6 + css/forms-rtl.css | 46 + css/forms.css | 134 + css/html-reset-rtl.css | 37 + css/html-reset.css | 291 + css/ie.css | 47 + css/ie6-rtl.css | 12 + css/ie6.css | 105 + css/layout-fixed-rtl.css | 74 + css/layout-fixed.css | 212 + css/layout-liquid-rtl.css | 68 + css/layout-liquid.css | 202 + css/messages-rtl.css | 13 + css/messages.css | 53 + css/mytheme-fixed-rtl.css | 243 + css/mytheme-fixed.css | 1615 +++++ css/navigation.css | 44 + css/nice-bar.css | 40 + css/nodes.css | 81 + css/page-backgrounds.css | 38 + css/pages-rtl.css | 19 + css/pages.css | 314 + css/panels-styles.css | 6 + css/print.css | 73 + css/style (copy).css | 739 +++ css/style.css | 723 +++ css/style.less | 31 + css/tabs-rtl.css | 22 + css/tabs.css | 128 + css/testimonials.css | 50 + css/testimonials_front.css | 31 + css/theme-settings.css | 69 + css/views-styles.css | 6 + css/wireframes.css | 24 + favicon.ico | Bin 0 -> 15086 bytes images-source/messages.psd | Bin 0 -> 199810 bytes images-source/panels-layouts.psd | Bin 0 -> 78724 bytes images-source/screenshot.psd | Bin 0 -> 196125 bytes images-source/tabs.psd | Bin 0 -> 56436 bytes images/arrow_new.png | Bin 0 -> 6537 bytes images/content_line.png | Bin 0 -> 264 bytes images/content_line1.png | Bin 0 -> 490 bytes images/content_line12.png | Bin 0 -> 490 bytes images/divider.png | Bin 0 -> 4346 bytes images/divider1.png | Bin 0 -> 346 bytes images/footer_line.png | Bin 0 -> 325 bytes images/footer_line1.png | Bin 0 -> 198 bytes images/footer_line2.png | Bin 0 -> 185 bytes images/image1.jpeg | Bin 0 -> 10139 bytes images/image1.png | Bin 0 -> 9663 bytes images/image2.gif | Bin 0 -> 11918 bytes images/image2.png | Bin 0 -> 12105 bytes images/image3.jpeg | Bin 0 -> 39044 bytes images/image3.png | Bin 0 -> 32239 bytes images/image4-old.png | Bin 0 -> 63598 bytes images/image4.jpg | Bin 0 -> 36693 bytes images/image4.png | Bin 0 -> 64243 bytes images/image5-old.png | Bin 0 -> 29870 bytes images/image5-older.png | Bin 0 -> 17396 bytes images/image5.png | Bin 0 -> 182107 bytes images/img1.jpg | Bin 0 -> 457900 bytes images/img2.jpg | Bin 0 -> 424055 bytes images/img3.jpg | Bin 0 -> 234292 bytes images/li-bg.png | Bin 0 -> 619 bytes images/line.png | Bin 0 -> 259 bytes images/linez.png | Bin 0 -> 265 bytes images/loading.gif | Bin 0 -> 39507 bytes images/login-button.png | Bin 0 -> 2317 bytes images/login-button3.png | Bin 0 -> 1415 bytes images/messages-error-ie6.png | Bin 0 -> 719 bytes images/messages-error.png | Bin 0 -> 727 bytes images/messages-status-ie6.png | Bin 0 -> 610 bytes images/messages-status.png | Bin 0 -> 560 bytes images/messages-warning-ie6.png | Bin 0 -> 693 bytes images/messages-warning.png | Bin 0 -> 664 bytes images/open-quote.png | Bin 0 -> 520 bytes images/scilab_logo.png | Bin 0 -> 4982 bytes images/search-btn.png | Bin 0 -> 615 bytes images/shadow.png | Bin 0 -> 4950 bytes images/side_b.png | Bin 0 -> 198 bytes images/tab-bar.png | Bin 0 -> 160 bytes images/tab-left-ie6.png | Bin 0 -> 331 bytes images/tab-left.png | Bin 0 -> 303 bytes images/tab-right-ie6.png | Bin 0 -> 473 bytes images/tab-right.png | Bin 0 -> 685 bytes images/tab-secondary-bg.png | Bin 0 -> 166 bytes images/tab-secondary.png | Bin 0 -> 195 bytes images/tshirt1.png | Bin 0 -> 23561 bytes images/tshirt2.png | Bin 0 -> 42983 bytes js/README.txt | 14 + js/dropdown-menu.min.js | 3 + js/jquery-1.8.3.min.js | 408 ++ js/jquery-1.9.1.js | 9597 ++++++++++++++++++++++++++++ js/menu.js | 37 + js/nice-bar.js | 6 + js/scilab.js | 7 + js/slideshow.js | 14 + js/testimonials_script.js | 25 + logo.png | Bin 0 -> 1027 bytes orbit-1.2.3/demo/demo-style.css | 46 + orbit-1.2.3/demo/demo.html | 72 + orbit-1.2.3/demo/dummy-images/captions.jpg | Bin 0 -> 457900 bytes orbit-1.2.3/demo/dummy-images/coffee.jpg | Bin 0 -> 299080 bytes orbit-1.2.3/demo/dummy-images/features.jpg | Bin 0 -> 424055 bytes orbit-1.2.3/demo/dummy-images/overflow.jpg | Bin 0 -> 234292 bytes orbit-1.2.3/jquery-1.5.1.min.js | 16 + orbit-1.2.3/jquery.orbit-1.2.3.js | 400 ++ orbit-1.2.3/jquery.orbit-1.2.3.min.js | 17 + orbit-1.2.3/orbit-1.2.3.css | 201 + orbit-1.2.3/orbit/bullets.jpg | Bin 0 -> 657 bytes orbit-1.2.3/orbit/left-arrow.png | Bin 0 -> 679 bytes orbit-1.2.3/orbit/loading.gif | Bin 0 -> 2608 bytes orbit-1.2.3/orbit/mask-black.png | Bin 0 -> 705 bytes orbit-1.2.3/orbit/pause-black.png | Bin 0 -> 330 bytes orbit-1.2.3/orbit/right-arrow.png | Bin 0 -> 664 bytes orbit-1.2.3/orbit/rotator-black.png | Bin 0 -> 733 bytes orbit-1.2.3/orbit/timer-black.png | Bin 0 -> 705 bytes orbit/demo/demo-style.css | 46 + orbit/demo/demo.html | 72 + orbit/demo/dummy-images/captions.jpg | Bin 0 -> 457900 bytes orbit/demo/dummy-images/coffee.jpg | Bin 0 -> 299080 bytes orbit/demo/dummy-images/features.jpg | Bin 0 -> 424055 bytes orbit/demo/dummy-images/overflow.jpg | Bin 0 -> 234292 bytes orbit/jquery-1.5.1.min.js | 16 + orbit/jquery.orbit-1.2.3.js | 400 ++ orbit/jquery.orbit-1.2.3.min.js | 17 + orbit/orbit-1.2.3.css | 227 + orbit/orbit-1.2.3.css~ | 227 + orbit/orbit/bullets.jpg | Bin 0 -> 657 bytes orbit/orbit/left-arrow.png | Bin 0 -> 679 bytes orbit/orbit/loading.gif | Bin 0 -> 2608 bytes orbit/orbit/mask-black.png | Bin 0 -> 705 bytes orbit/orbit/pause-black.png | Bin 0 -> 330 bytes orbit/orbit/right-arrow.png | Bin 0 -> 664 bytes orbit/orbit/rotator-black.png | Bin 0 -> 733 bytes orbit/orbit/timer-black.png | Bin 0 -> 705 bytes scilab.info | 113 + screenshot.png | Bin 0 -> 1119 bytes template.php | 155 + templates/.page-front.tpl.php.swp | Bin 0 -> 16384 bytes templates/README.txt | 82 + templates/page-front.tpl.php | 411 ++ templates/page-front.tpl.php.backup | 352 + templates/page.tpl.php | 293 + theme-settings.php | 43 + 155 files changed, 21653 insertions(+) create mode 100755 README.txt create mode 100755 STARTERKIT.info.txt create mode 100755 css/README.txt create mode 100755 css/block-editing-rtl.css create mode 100755 css/block-editing.css create mode 100755 css/blocks.css create mode 100755 css/comments.css create mode 100755 css/dropdown-menu.css create mode 100755 css/drupal6-reference.css create mode 100755 css/fields.css create mode 100755 css/font-style.css create mode 100755 css/forms-rtl.css create mode 100755 css/forms.css create mode 100755 css/html-reset-rtl.css create mode 100755 css/html-reset.css create mode 100755 css/ie.css create mode 100755 css/ie6-rtl.css create mode 100755 css/ie6.css create mode 100755 css/layout-fixed-rtl.css create mode 100755 css/layout-fixed.css create mode 100755 css/layout-liquid-rtl.css create mode 100755 css/layout-liquid.css create mode 100755 css/messages-rtl.css create mode 100755 css/messages.css create mode 100755 css/mytheme-fixed-rtl.css create mode 100755 css/mytheme-fixed.css create mode 100755 css/navigation.css create mode 100755 css/nice-bar.css create mode 100755 css/nodes.css create mode 100755 css/page-backgrounds.css create mode 100755 css/pages-rtl.css create mode 100755 css/pages.css create mode 100755 css/panels-styles.css create mode 100755 css/print.css create mode 100755 css/style (copy).css create mode 100755 css/style.css create mode 100755 css/style.less create mode 100755 css/tabs-rtl.css create mode 100755 css/tabs.css create mode 100755 css/testimonials.css create mode 100755 css/testimonials_front.css create mode 100755 css/theme-settings.css create mode 100755 css/views-styles.css create mode 100755 css/wireframes.css create mode 100755 favicon.ico create mode 100755 images-source/messages.psd create mode 100755 images-source/panels-layouts.psd create mode 100755 images-source/screenshot.psd create mode 100755 images-source/tabs.psd create mode 100755 images/arrow_new.png create mode 100755 images/content_line.png create mode 100755 images/content_line1.png create mode 100755 images/content_line12.png create mode 100755 images/divider.png create mode 100755 images/divider1.png create mode 100755 images/footer_line.png create mode 100755 images/footer_line1.png create mode 100755 images/footer_line2.png create mode 100755 images/image1.jpeg create mode 100755 images/image1.png create mode 100755 images/image2.gif create mode 100755 images/image2.png create mode 100755 images/image3.jpeg create mode 100755 images/image3.png create mode 100755 images/image4-old.png create mode 100755 images/image4.jpg create mode 100755 images/image4.png create mode 100755 images/image5-old.png create mode 100755 images/image5-older.png create mode 100755 images/image5.png create mode 100755 images/img1.jpg create mode 100755 images/img2.jpg create mode 100755 images/img3.jpg create mode 100755 images/li-bg.png create mode 100755 images/line.png create mode 100755 images/linez.png create mode 100755 images/loading.gif create mode 100755 images/login-button.png create mode 100755 images/login-button3.png create mode 100755 images/messages-error-ie6.png create mode 100755 images/messages-error.png create mode 100755 images/messages-status-ie6.png create mode 100755 images/messages-status.png create mode 100755 images/messages-warning-ie6.png create mode 100755 images/messages-warning.png create mode 100755 images/open-quote.png create mode 100755 images/scilab_logo.png create mode 100755 images/search-btn.png create mode 100755 images/shadow.png create mode 100755 images/side_b.png create mode 100755 images/tab-bar.png create mode 100755 images/tab-left-ie6.png create mode 100755 images/tab-left.png create mode 100755 images/tab-right-ie6.png create mode 100755 images/tab-right.png create mode 100755 images/tab-secondary-bg.png create mode 100755 images/tab-secondary.png create mode 100755 images/tshirt1.png create mode 100755 images/tshirt2.png create mode 100755 js/README.txt create mode 100755 js/dropdown-menu.min.js create mode 100755 js/jquery-1.8.3.min.js create mode 100755 js/jquery-1.9.1.js create mode 100755 js/menu.js create mode 100755 js/nice-bar.js create mode 100755 js/scilab.js create mode 100755 js/slideshow.js create mode 100755 js/testimonials_script.js create mode 100755 logo.png create mode 100755 orbit-1.2.3/demo/demo-style.css create mode 100755 orbit-1.2.3/demo/demo.html create mode 100755 orbit-1.2.3/demo/dummy-images/captions.jpg create mode 100755 orbit-1.2.3/demo/dummy-images/coffee.jpg create mode 100755 orbit-1.2.3/demo/dummy-images/features.jpg create mode 100755 orbit-1.2.3/demo/dummy-images/overflow.jpg create mode 100755 orbit-1.2.3/jquery-1.5.1.min.js create mode 100755 orbit-1.2.3/jquery.orbit-1.2.3.js create mode 100755 orbit-1.2.3/jquery.orbit-1.2.3.min.js create mode 100755 orbit-1.2.3/orbit-1.2.3.css create mode 100755 orbit-1.2.3/orbit/bullets.jpg create mode 100755 orbit-1.2.3/orbit/left-arrow.png create mode 100755 orbit-1.2.3/orbit/loading.gif create mode 100755 orbit-1.2.3/orbit/mask-black.png create mode 100755 orbit-1.2.3/orbit/pause-black.png create mode 100755 orbit-1.2.3/orbit/right-arrow.png create mode 100755 orbit-1.2.3/orbit/rotator-black.png create mode 100755 orbit-1.2.3/orbit/timer-black.png create mode 100755 orbit/demo/demo-style.css create mode 100755 orbit/demo/demo.html create mode 100755 orbit/demo/dummy-images/captions.jpg create mode 100755 orbit/demo/dummy-images/coffee.jpg create mode 100755 orbit/demo/dummy-images/features.jpg create mode 100755 orbit/demo/dummy-images/overflow.jpg create mode 100755 orbit/jquery-1.5.1.min.js create mode 100755 orbit/jquery.orbit-1.2.3.js create mode 100755 orbit/jquery.orbit-1.2.3.min.js create mode 100755 orbit/orbit-1.2.3.css create mode 100755 orbit/orbit-1.2.3.css~ create mode 100755 orbit/orbit/bullets.jpg create mode 100755 orbit/orbit/left-arrow.png create mode 100755 orbit/orbit/loading.gif create mode 100755 orbit/orbit/mask-black.png create mode 100755 orbit/orbit/pause-black.png create mode 100755 orbit/orbit/right-arrow.png create mode 100755 orbit/orbit/rotator-black.png create mode 100755 orbit/orbit/timer-black.png create mode 100755 scilab.info create mode 100755 screenshot.png create mode 100755 template.php create mode 100755 templates/.page-front.tpl.php.swp create mode 100755 templates/README.txt create mode 100755 templates/page-front.tpl.php create mode 100755 templates/page-front.tpl.php.backup create mode 100755 templates/page.tpl.php create mode 100755 theme-settings.php diff --git a/README.txt b/README.txt new file mode 100755 index 0000000..d5c3515 --- /dev/null +++ b/README.txt @@ -0,0 +1,127 @@ +BUILD YOUR OWN SUB-THEME +------------------------ + +*** IMPORTANT *** + +* In Drupal 6, the theme system caches template files and which theme functions + should be called. What that means is if you add a new theme or preprocess + function to your template.php file or add a new template (.tpl.php) file to + your sub-theme, you will need to rebuild the "theme registry." See + http://drupal.org/node/173880#theme-registry + +* Drupal 6 also stores a cache of the data in .info files. If you modify any + lines in your sub-theme's .info file, you MUST refresh Drupal 6's cache by + simply visiting the admin/build/themes page. + + +The base Zen theme is designed to be easily extended by its sub-themes. You +shouldn't modify any of the CSS or PHP files in the zen/ folder; but instead you +should create a sub-theme of zen which is located in a folder outside of the +root zen/ folder. The examples below assume zen and your sub-theme will be +installed in sites/all/themes/, but any valid theme directory is acceptable +(read the sites/default/default.settings.php for more info.) + + Why? To learn why you shouldn't modify any of the files in the zen/ folder, + see http://drupal.org/node/245802 + + 1. Copy the STARTERKIT folder out of the zen/ folder and rename it to be your + new sub-theme. IMPORTANT: The name of your sub-theme must start with an + alphabetic character and can only contain lowercase letters, numbers and + underscores. + + For example, copy the sites/all/themes/zen/STARTERKIT folder and rename it + as sites/all/themes/foo. + + Why? Each theme should reside in its own folder. To make it easier to + upgrade Zen, sub-themes should reside in a folder separate from their base + theme. + + 2. In your new sub-theme folder, rename the STARTERKIT.info.txt file to include + the name of your new sub-theme and remove the ".txt" extension. Then edit + the .info file by editing the name and description field. + + For example, rename the foo/STARTERKIT.info.txt file to foo/foo.info. Edit + the foo.info file and change "name = Zen Sub-theme Starter Kit" to + "name = Foo" and "description = Read..." to "description = A Zen sub-theme". + + Why? The .info file describes the basic things about your theme: its + name, description, features, template regions, CSS files, and JavaScript + files. See the Drupal 6 Theme Guide for more info: + http://drupal.org/node/171205 + + Then, visit your site's admin/build/themes to refresh Drupal 6's cache of + .info file data. + + 3. By default your new sub-theme is using a fixed-width layout. If you want a + liquid layout for your theme, delete the unneeded layout-fixed.css and + layout-fixed-rtl.css files and edit your sub-theme's .info file and replace + the reference to layout-fixed.css with layout-liquid.css. + + For example, edit foo/foo.info and change this line: + stylesheets[all][] = css/layout-fixed.css + to: + stylesheets[all][] = css/layout-liquid.css + + Why? The "stylesheets" lines in your .info file describe the media type + and path to the CSS file you want to include. The format for these lines + is: stylesheets[MEDIA][] = path/to/file.css + + Then, visit your site's admin/build/themes to refresh Drupal 6's cache of + .info file data. + + Alternatively, if you are more familiar with a different CSS layout method, + such as Blueprint or 960.gs, you can replace the "css/layout-fixed.css" line + in your .info file with a line pointing at your choice of layout CSS file. + + 4. Edit the template.php and theme-settings.php files in your sub-theme's + folder; replace ALL occurrences of "STARTERKIT" with the name of your + sub-theme. + + For example, edit foo/template.php and foo/theme-settings.php and replace + every occurrence of "STARTERKIT" with "foo". + + It is recommended to use a text editing application with search and + "replace all" functionality. + + 5. Log in as an administrator on your Drupal site and go to Administer > Site + building > Themes (admin/build/themes) and enable your new sub-theme. + + 6. Internet explorer has a nasty bug that limits you to 31 stylsheets total. To + get around this limitation during theme development, download, install and + configure the "IE CSS Optimizer" module. + + http://drupal.org/project/ie_css_optimizer + + On a production server, you should enable full optimization of the "Optimize + CSS files" option on the Admin Performance page at + admin/settings/performance. + + +Optional: + + 7. MODIFYING ZEN CORE TEMPLATE FILES: + If you decide you want to modify any of the .tpl.php template files in the + zen folder, copy them to your sub-theme's folder before making any changes. + And then rebuild the theme registry. + + For example, copy zen/templates/page.tpl.php to foo/templates/page.tpl.php. + + 8. THEMEING DRUPAL'S SEARCH FORM: + Copy the search-theme-form.tpl.php template file from the modules/search/ + folder and place it in your sub-theme's folder. And then rebuild the theme + registry. + + You can find a full list of Drupal templates that you can override in the + templates/README.txt file or http://drupal.org/node/190815 + + Why? In Drupal 6 theming, if you want to modify a template included by a + module, you should copy the template file from the module's directory to + your sub-theme's directory and then rebuild the theme registry. See the + Drupal 6 Theme Guide for more info: http://drupal.org/node/173880 + + 9. FURTHER EXTENSIONS OF YOUR SUB-THEME: + Discover further ways to extend your sub-theme by reading Zen's + documentation online at: + http://drupal.org/node/193318 + and Drupal 6's Theme Guide online at: + http://drupal.org/theme-guide diff --git a/STARTERKIT.info.txt b/STARTERKIT.info.txt new file mode 100755 index 0000000..4492544 --- /dev/null +++ b/STARTERKIT.info.txt @@ -0,0 +1,96 @@ + ; The name and description of the theme used on the admin/build/themes page. +name = Zen Sub-theme Starter Kit +description = Read the online docs or the included README.txt on how to create a Zen sub-theme. + + ; The screenshot used on the admin/build/themes page. +screenshot = screenshot.png + + ; "core" specifies the version of Drupal that this theme is compatible with. + ; "base theme" specifies that this is a theme that uses the "zen" theme as its + ; base theme. Its unlikely you will ever need to change these, but they are + ; required fields for a Zen sub-theme. The "engine" field is not used in a + ; sub-theme since the engine is inherited from its base theme. +core = 6.x +base theme = zen + + ; This section adds CSS files to your theme. The media type is specified in + ; the brackets. Typical CSS media types include "all", "screen", "print", and + ; "handheld". See http://www.w3.org/TR/CSS21/media.html#media-types for a full + ; list of stylesheet media types in CSS 2.1. The iPhone's preferred media type + ; is based on the CSS3 Media queries. http://www.w3.org/TR/css3-mediaqueries/ + ; + ; You can also override any of Zen's stylesheets or any module's stylesheets, + ; an /extremely/ useful feature. See the excellent Drupal 6 Theme Guide at + ; http://drupal.org/node/263967 for more details. +stylesheets[all][] = css/html-reset.css +stylesheets[all][] = css/wireframes.css +stylesheets[all][] = css/layout-fixed.css +stylesheets[all][] = css/page-backgrounds.css +stylesheets[all][] = css/tabs.css +stylesheets[all][] = css/messages.css +stylesheets[all][] = css/pages.css +stylesheets[all][] = css/block-editing.css +stylesheets[all][] = css/blocks.css +stylesheets[all][] = css/navigation.css +stylesheets[all][] = css/panels-styles.css +stylesheets[all][] = css/views-styles.css +stylesheets[all][] = css/nodes.css +stylesheets[all][] = css/comments.css +stylesheets[all][] = css/forms.css +stylesheets[all][] = css/fields.css +stylesheets[print][] = css/print.css +; stylesheets[handheld][] = css/mobile.css +; stylesheets[only screen and (max-device-width: 480px)][] = css/iphone.css + + ; Set the conditional stylesheets that are processed by IE. +conditional-stylesheets[if IE][all][] = css/ie.css +conditional-stylesheets[if lte IE 6][all][] = css/ie6.css + + ; Optionally add some JavaScripts to your theme. +; scripts[] = js/script.js + + ; The regions defined in Zen's default page.tpl.php file. The name in + ; brackets is the name of the variable in the page.tpl.php file, (e.g. + ; "[content_top]" in the .info file means there should be a $content_top + ; variable in the page.tpl.php file.) The text after the equals sign is a + ; descriptive text used on the admin/build/blocks page. + ; + ; To add a new region, copy Zen's page.tpl.php to your sub-theme's directory, + ; add a line line to this file, and then add the new variable to your + ; page.tpl.php template. +regions[sidebar_first] = First sidebar +regions[sidebar_second] = Second sidebar +regions[navigation] = Navigation bar +regions[highlight] = Highlighted content +regions[content_top] = Content top +regions[content_bottom] = Content bottom +regions[header] = Header +regions[footer] = Footer +regions[page_closure] = Page closure + + ; Various page elements output by the theme can be toggled on and off. The + ; "features" control which of these check boxes display on the + ; admin/build/themes config page. This is useful for suppressing check boxes + ; for elements not used by your sub-theme. To suppress a check box, omit the + ; entry for it below. See the Drupal 6 Theme Guide for more info: + ; http://drupal.org/node/171205#features +features[] = logo +features[] = name +features[] = slogan +features[] = mission +features[] = node_user_picture +features[] = comment_user_picture +features[] = search +features[] = favicon +features[] = primary_links +features[] = secondary_links + + ; Set the default settings to be used in theme-settings.php +settings[zen_block_editing] = 1 +settings[zen_breadcrumb] = yes +settings[zen_breadcrumb_separator] = ' › ' +settings[zen_breadcrumb_home] = 1 +settings[zen_breadcrumb_trailing] = 1 +settings[zen_breadcrumb_title] = 0 +settings[zen_rebuild_registry] = 1 +settings[zen_wireframes] = 0 diff --git a/css/README.txt b/css/README.txt new file mode 100755 index 0000000..3a128ae --- /dev/null +++ b/css/README.txt @@ -0,0 +1,134 @@ +ZEN'S STYLESHEETS +----------------- + +Don't panic! + +There are 28 CSS files in this sub-theme, but its not as bad as it first seems: +- The drupal6-reference.css is just a reference file and isn't used directly by + your sub-theme. See below. +- There are 9 CSS files whose names end in "-rtl.css". Those are CSS files + needed to style content written in Right-to-Left languages, such as Arabic and + Hebrew. If your website doesn't use such languages, you can safely delete all + of those CSS files. +- If you aren't using this theme while doing wireframes of the functionality of + your sub-theme, you can remove wireframes.css from your sub-theme's .info file + and delete the file as well. + +That leaves just 17 CSS files. (Okay, still quite a few, but better than 28.) + +- Instead of one monolithic stylesheet, your sub-theme's CSS files are organized + into several smaller stylesheets that are grouped to allow cascading across + common Drupal template files. +- The order of the stylesheets is designed to allow CSS authors to use the + lowest specificity possible to achieve the required styling. + + +ORDER AND PURPOSE OF DEFAULT STYLESHEETS +---------------------------------------- + +First off, if you find you don't like this organization of stylesheets, you are +free to change it; simply edit the stylesheet declarations in your sub-theme's +.info file. This structure was crafted based on several years of experience +theming Drupal websites. + +- html-reset.css: + This is the place where you should set the default styling for all HTML + elements and standardize the styling across browsers. If you prefer a specific + reset method, feel free to add it. + +- layout-fixed.css: +- layout-liquid.css: + Zen's default layout is based on the Zen Columns layout method. The + layout-fixed.css file is used by default and can be swapped with the + layout-liquid.css file. These files are designed to be easily replaced. If you + are more familiar with a different CSS layout method, such as Blueprint or + 960.gs, you can replace these files with your choice of layout CSS file. + +- page-backgrounds.css: + Layered backgrounds across scattered divs can be easier to manage if they are + centralized in one location. + +- tabs.css: +- messages.css: + While most of the CSS rulesets in your sub-theme are guidelines without any + actual properties, the tabs and messages stylesheets contain actual styling + for Drupal tabs and Drupal status messages; two common Drupal elements that + are often neglected by site desiners. Zen provides some basic styling which + you are free to use or to rip out and replace. + +- pages.css: + Page styling for the markup in the page.tpl.php template. + +- blocks.css: + Block styling for the markup in the block.tpl.php template. + +- navigation.css: + The styling for your site's menus can get quite bulky and its easier to see + all the styles if they are grouped together rather then across the + header/footer sections of pages.css and in blocks.css. + +- views-styles.css: + Views styling for the markup in various views templates. You'll notice this + stylesheet isn't called "views.css" as that would override (remove) the Views + module's stylesheet. + +- nodes.css: + Node styling for the markkup in the node.tpl.php template. + +- comments.css: + Comment styling for the markup in the comment-wrapper.tpl.php and + comments.tpl.php templates. + +- forms.css: + Form styling for the markup in various Drupal forms. + +- fields.css: + Field styling for the markup produced by theme_field(). + +- print.css: + The print styles for all markup. + +- ie.css: +- ie6.css: + The Internet Explorer stylesheets are added via conditional comments. Many CSS + authors find using IE "conditional stylesheets" much easier then writing + rulesets with CSS hacks that are known to only apply to various versions of + IE. An alternative method presented by Paul Irish can be found at + http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ + +In these stylesheets, we have included all of the classes and IDs from this +theme's tpl.php files. We have also included many of the useful Drupal core +styles to make it easier for theme developers to see them. + + +DRUPAL CORE'S STYLESHEETS +------------------------- + +Many of these styles are over-riding Drupal's core stylesheets, so if you remove +a declaration from them, the styles may still not be what you want since +Drupal's core stylesheets are still styling the element. See the +drupal6-reference.css file for a complete list of all Drupal 6.x core styles. + +In addition to the style declarations in these stylesheets, other Drupal styles +that you might want to override or augment are those for: + + Book Navigation See line 74 of drupal6-reference.css file + Forum See line 197 of drupal6-reference.css file + Menus See line 667 of drupal6-reference.css file + News Aggregator See line 20 of drupal6-reference.css file + Polls See line 287 of drupal6-reference.css file + Search See line 320 of drupal6-reference.css file + User Profiles See line 945 of drupal6-reference.css file + + +INTERNET EXLORER HATES YOU +-------------------------- + +All versions of IE limit you to 31 stylesheets total. What that means is that +only the first 31 stylesheets will load, ignoring the others. So you'll have +missing styles in IE7 and later and a broken layout in IE6. + +This is a known bug in IE: http://support.microsoft.com/kb/262161 + +Please read http://john.albin.net/css/ie-stylesheets-not-loading for the gory +details. diff --git a/css/block-editing-rtl.css b/css/block-editing-rtl.css new file mode 100755 index 0000000..2b7cc47 --- /dev/null +++ b/css/block-editing-rtl.css @@ -0,0 +1,10 @@ +/** + * @file + * RTL companion for the block-editing.css file. + */ + + +div.block.with-block-editing div.edit { + left: 0; + right: auto; +} diff --git a/css/block-editing.css b/css/block-editing.css new file mode 100755 index 0000000..ba86d71 --- /dev/null +++ b/css/block-editing.css @@ -0,0 +1,25 @@ +/** + * @file + * Zen's rollover edit links for blocks. + */ + + +div.block.with-block-editing { + position: relative; +} + +div.block.with-block-editing div.edit { + display: none; + position: absolute; + right: 0; /* LTR */ + top: 0; + z-index: 40; + border: 1px solid #eee; + padding: 0 2px; + font-size: 0.75em; + background-color: #fff; +} + +div.block.with-block-editing:hover div.edit { + display: block; +} diff --git a/css/blocks.css b/css/blocks.css new file mode 100755 index 0000000..1a050be --- /dev/null +++ b/css/blocks.css @@ -0,0 +1,96 @@ +/** + * @file + * Block Styling + */ + + +.block /* Block wrapper */ { + margin-bottom: 1em; +} + +.block.first /* The first block in the region */ { +} + +.block.last /* The last block in the region */ { +} + +.block.region-odd /* Zebra striping for each block in the region */ { +} + +.block.region-even /* Zebra striping for each block in the region */ { +} + +.block.odd /* Zebra striping independent of each region */ { +} + +.block.even /* Zebra striping independent of each region */ { +} + +.region-count-1 /* Incremental count for each block in the region */ { +} + +.count-1 /* Incremental count independent of each region */ { +} + +.block h2.title /* Block title */ { +} + +.block .content /* Block's content wrapper */ { +} + +#block-aggregator-category-1 /* Block for the latest news items in the first category */ { +} + +#block-aggregator-feed-1 /* Block for the latest news items in the first feed */ { +} + +#block-block-1 /* First administrator-defined block */ { +} + +#block-blog-0 /* "Recent blog posts" block */ { +} + +#block-book-0 /* "Book navigation" block for the current book's table of contents */ { +} + +#block-comment-0 /* "Recent comments" block */ { +} + +#block-forum-0 /* "Active forum topics" block */ { +} + +#block-forum-1 /* "New forum topics" block */ { +} + +#block-menu-primary-links /* "Primary links" block */ { +} + +#block-menu-secondary-links /* "Secondary links" block */ { +} + +#block-node-0 /* "Syndicate" block for primary RSS feed */ { +} + +#block-poll-0 /* "Most recent poll" block */ { +} + +#block-profile-0 /* "Author information" block for the profile of the page's author */ { +} + +#block-search-0 /* "Search form" block */ { +} + +#block-statistics-0 /* "Popular content" block */ { +} + +#block-user-0 /* "User login form" block */ { +} + +#block-user-1 /* "Navigation" block for Drupal navigation menu */ { +} + +#block-user-2 /* "Who's new" block for a list of the newest users */ { +} + +#block-user-3 /* "Who's online" block for a list of the online users */ { +} diff --git a/css/comments.css b/css/comments.css new file mode 100755 index 0000000..0eed0cb --- /dev/null +++ b/css/comments.css @@ -0,0 +1,79 @@ +/** + * @file + * Comment Styling + */ + + +#comments /* Wrapper for the list of comments and its title */ { + margin: 1em 0; +} + +#comments h2.title /* Heading for the list of comments */ { +} + +.comment /* Wrapper for a single comment */ { +} + +.comment-preview /* Preview of the comment before submitting new or updated comment */ { +} + +.comment.new /* A new comment since the user last viewed the page. */ { +} + +.comment.first /* The first comment in the list of comments */ { +} + +.comment.last /* The last comment in the list of comments */ { +} + +.comment.odd /* An odd-numbered comment in the list of comments */ { +} + +.comment.even /* An even-numbered comment in the list of comments */ { +} + +.comment-unpublished /* Unpublished comments */ { + /* background-color: #fff4f4; */ /* Drupal core uses a #fff4f4 background */ +} + +.comment-unpublished div.unpublished /* The word "Unpublished" displayed underneath the content. See also the div.unpublished declaration in the nodes.css. */ { +} + +.comment-by-anonymous /* A comment created by an anonymous user */ { +} + +.comment-by-node-author /* A comment created by the node's author */ { +} + +.comment-by-viewer /* A comment created by the current user */ { +} + +.comment h3.title /* Comment title */ { +} + +.new /* "New" marker for comments that are new for the current user */ { + color: #c00; +} + +.comment .picture /* The picture of the comment author */ { +} + +.comment .submitted /* The "posted by" information */ { +} + +.comment .content /* Comment's content wrapper */ { +} + +.comment .user-signature /* The user's signature */ { +} + +.comment ul.links /* Comment links. See also the ul.links declaration in the pages.css. */ { +} + +.indented /* Nested comments are indented */ { + /* margin-left: 25px; */ /* Drupal core uses a 25px left margin */ +} + +.preview .comment /* Preview of the comment before submitting new or updated comment */ { + /* background-color: #ffffea; */ /* Drupal core uses a #ffffea background */ +} diff --git a/css/dropdown-menu.css b/css/dropdown-menu.css new file mode 100755 index 0000000..5b94657 --- /dev/null +++ b/css/dropdown-menu.css @@ -0,0 +1,146 @@ +/*** DEFAULT COLORS/STYLES ***/ +/* Root menu */ +.dropdown-menu { + background: transparent; +} +/* Root links */ +.dropdown-menu a, +.dropdown-menu a:link, +.dropdown-menu a:visited { + text-decoration: none; + color: #FFFFFF; +/* padding: 3px 11px;*/ + padding:3px 19px 4px 7px; + text-align:center; + font-weight:bold; +} +/* Root link hover */ +.dropdown-menu a:hover, +.dropdown-menu li.dropdown-menu-hover > a { + color: #000; +} +/* Root menu item hover */ +.dropdown-menu li:hover, +.dropdown-menu li.dropdown-menu-hover { + background: #e0e2e2; +} +/* Submenus */ +.dropdown-menu ul { + border: 1px solid #c4c7c8; + background: #e0e2e2; +} +/* Submenu item hover */ +.dropdown-menu ul li:hover, +.dropdown-menu ul li.dropdown-menu-hover { + background: #c4c7c8; +} + +/* Optional submenu drop shadow */ +.dropdown-menu-shadow { + -webkit-box-shadow: 3px 3px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 3px 3px 2px rgba(0, 0, 0, 0.3); + -ms-box-shadow: 3px 3px 2px rgba(0, 0, 0, 0.3); + -o-box-shadow: 3px 3px 2px rgba(0, 0, 0, 0.3); + box-shadow: 3px 3px 2px rgba(0, 0, 0, 0.3); +} + +/*** ESSENTIAL STYLES ***/ +.dropdown-menu { + white-space: nowrap; + display: inline-block; + /* IE7 inline-block fix */ + *display: inline; + *zoom: 1; +} +.dropdown-menu, +.dropdown-menu ul { + margin: 0; + padding: 0; + list-style: none; +} +.dropdown-menu ul { + display: none; + position: absolute; + z-index: 1000000; +} +.dropdown-menu ul ul { + top: 0; + left: 100%; +} +.dropdown-menu li { + margin: 0; + padding: 0; + display: inline-block; + /* IE7 inline-block and padding fix */ + *display: inline; + *zoom: 1; + *vertical-align: bottom; +} +.dropdown-menu li a { + display: block; +} +.dropdown-menu ul li { + position: relative; + display: block; +} + +/* Optional submenu arrows */ +span.dropdown-menu-sub-indicator { + margin-left: .4em; + display: inline-block; + vertical-align: baseline; + /* Image Replacement */ + background-color: transparent; + background-image: url('arrows-000000.png'); + background-repeat: no-repeat; + background-position: 0 -100px; + width: 10px; + height: 10px; + border: 0; + overflow: hidden; + /* IE7 image replacement fix */ + *text-indent: -9999px; + /* IE7 inline-block fix */ + *display: inline; + *zoom: 1; + *vertical-align: middle; +} +span.dropdown-menu-sub-indicator:before { + /* Image replacement */ + content: ""; + display: block; + width: 0; + height: 100%; +} +/* Arrow hovers */ +.dropdown-menu li:hover > a > span.dropdown-menu-sub-indicator, +.dropdown-menu li.dropdown-menu-hover > a > span.dropdown-menu-sub-indicator { + background-position: -10px -100px; +} +/* Point arrows to the right for anchors in subs */ +.dropdown-menu ul span.dropdown-menu-sub-indicator { + background-position: 0 0; +} +.dropdown-menu ul li:hover > a > span.dropdown-menu-sub-indicator, +.dropdown-menu ul li.dropdown-menu-hover > a > span.dropdown-menu-sub-indicator { + background-position: -10px 0; +} + +/* Vertical-style menu with default width */ +.dropdown-menu-vertical { + width: 250px; +} +.dropdown-menu-vertical li { + display: block; + position: relative; + /* IE7 fix */ + *float: left; + *width: 100%; +} +.dropdown-menu-vertical span.dropdown-menu-sub-indicator { + background-position: 0 0; +} +.dropdown-menu-vertical li:hover > a > span.dropdown-menu-sub-indicator, +.dropdown-menu-vertical li.dropdown-menu-hover > a > span.dropdown-menu-sub-indicator { + background-position: -10px 0; +} diff --git a/css/drupal6-reference.css b/css/drupal6-reference.css new file mode 100755 index 0000000..14df3ef --- /dev/null +++ b/css/drupal6-reference.css @@ -0,0 +1,1983 @@ +/** + * @file + * DRUPAL 6.x Reference CSS + * + * THIS FILE IS FOR REFERENCE ONLY AND IS NOT USED IN ANY WAY BY THE ZEN THEME. + * + * Drupal has very modular CSS. Which means that only the CSS that is needed + * for a particular page is loaded. This is a good thing. + * + * However, this makes it difficult for theme developers to discover how and + * where a particular style is coming from. So, here in all its glory is the + * complete CSS included with Drupal core 6.x. + * + * And, if you're not already, you should check out the free Firebug extension + * for Firefox. With it, you can inspect elements and easily view and play with + * its CSS styles. http://www.getfirebug.com + */ + + +/* + * modules/aggregator/aggregator-rtl.css + */ + +#aggregator .feed-source .feed-icon { + float: left; +} + + +/* + * modules/aggregator/aggregator.css + */ + +#aggregator .feed-source .feed-title { + margin-top: 0; +} +#aggregator .feed-source .feed-image img { + margin-bottom: 0.75em; +} +#aggregator .feed-source .feed-icon { + float: right; /* LTR */ + display: block; +} +#aggregator .feed-item { + margin-bottom: 1.5em; +} +#aggregator .feed-item-title { + margin-bottom: 0; + font-size: 1.3em; +} +#aggregator .feed-item-meta, #aggregator .feed-item-body { + margin-bottom: 0.5em; +} +#aggregator .feed-item-categories { + font-size: 0.9em; +} +#aggregator td { + vertical-align: bottom; +} +#aggregator td.categorize-item { + white-space: nowrap; +} +#aggregator .categorize-item .news-item .body { + margin-top: 0; +} +#aggregator .categorize-item h3 { + margin-bottom: 1em; + margin-top: 0; +} + + +/* + * modules/block/block.css + */ + +#blocks td.region { + font-weight: bold; +} +#blocks tr.region-message { + font-weight: normal; + color: #999; +} +#blocks tr.region-populated { + display: none; +} +.block-region { + background-color: #ff6; + margin-top: 4px; + margin-bottom: 4px; + padding: 3px; +} + + +/* + * modules/book/book-rtl.css + */ + +.book-navigation .page-previous { + float: right; +} +.book-navigation .page-up { + float: right; +} + + +/* + * modules/book/book.css + */ + +.book-navigation .menu { + border-top: 1px solid #888; + padding: 1em 0 0 3em; +} +.book-navigation .page-links { + border-top: 1px solid #888; + border-bottom: 1px solid #888; + text-align: center; + padding: 0.5em; +} +.book-navigation .page-previous { + text-align: left; + width: 42%; + display: block; + float: left; /* LTR */ +} +.book-navigation .page-up { + margin: 0 5%; + width: 4%; + display: block; + float: left; /* LTR */ +} +.book-navigation .page-next { + text-align: right; + width: 42%; + display: block; + float: right; +} +#book-outline { + min-width: 56em; +} +.book-outline-form .form-item { + margin-top: 0; + margin-bottom: 0; +} +#edit-book-bid-wrapper .description { + clear: both; +} +#book-admin-edit select { + margin-right: 24px; +} +#book-admin-edit select.progress-disabled { + margin-right: 0; +} +#book-admin-edit tr.ahah-new-content { + background-color: #ffd; +} +#book-admin-edit .form-item { + float: left; +} + + +/* + * modules/color/color-rtl.css + */ + +#placeholder { + left: 0; + right: auto; +} + +/* Palette */ +.color-form .form-item { + padding-left: 0; + padding-right: 1em; +} +.color-form label { + float: right; + clear: right; +} +.color-form .form-text, .color-form .form-select { + float: right; +} +.color-form .form-text { + margin-right: 0; + margin-left: 5px; +} + +#palette .hook { + float: right; +} +#palette .down, #palette .up, #palette .both { + background: url(images/hook-rtl.png) no-repeat 0 0; +} +#palette .up { + background-position: 0 -27px; +} +#palette .both { + background-position: 0 -54px; +} + +#palette .lock { + float: right; + right: -10px; +} +html.js #preview { + float: right; +} + + +/* + * modules/color/color.css + */ + +/* Farbtastic placement */ +.color-form { + max-width: 50em; + position: relative; +} +#placeholder { + position: absolute; + top: 0; + right: 0; /* LTR */ +} + +/* Palette */ +.color-form .form-item { + height: 2em; + line-height: 2em; + padding-left: 1em; /* LTR */ + margin: 0.5em 0; +} +.color-form label { + float: left; /* LTR */ + clear: left; /* LTR */ + width: 10em; +} +.color-form .form-text, .color-form .form-select { + float: left; /* LTR */ +} +.color-form .form-text { + text-align: center; + margin-right: 5px; /* LTR */ + cursor: pointer; +} + +#palette .hook { + float: left; /* LTR */ + margin-top: 3px; + width: 16px; + height: 16px; +} +#palette .down, #palette .up, #palette .both { + background: url(images/hook.png) no-repeat 100% 0; /* LTR */ +} +#palette .up { + background-position: 100% -27px; /* LTR */ +} +#palette .both { + background-position: 100% -54px; /* LTR */ +} + +#palette .lock { + float: left; /* LTR */ + position: relative; + top: -1.4em; + left: -10px; /* LTR */ + width: 20px; + height: 25px; + background: url(images/lock.png) no-repeat 50% 2px; + cursor: pointer; +} +#palette .unlocked { + background-position: 50% -22px; +} +#palette .form-item { + width: 20em; +} +#palette .item-selected { + background: #eee; +} + +/* Preview */ +#preview { + display: none; +} +html.js #preview { + display: block; + position: relative; + float: left; /* LTR */ +} + + +/* + * modules/comment/comment-rtl.css + */ + +.indented { + margin-left: 0; + margin-right: 25px; +} + + +/* + * modules/comment/comment.css + */ + +.indented { + margin-left: 25px; /* LTR */ +} +.comment-unpublished { + background-color: #fff4f4; +} +.preview .comment { + background-color: #ffffea; +} + + +/* + * modules/dblog/dblog-rtl.css + */ + +#edit-type-wrapper, #edit-severity-wrapper { + float: right; + padding-right: 0; + padding-left: .8em; +} + + +/* + * modules/dblog/dblog.css + */ + +#edit-type-wrapper, #edit-severity-wrapper { + float: left; /* LTR */ + padding-right: .8em; /* LTR */ + margin: 0.1em; + /** + * In Opera 9, DOM elements with the property of "overflow: auto" + * will partially hide its contents with unnecessary scrollbars when + * its immediate child is floated without an explicit width set. + */ + width: 15em; +} +#dblog-filter-form .form-item select.form-select { + width: 100%; +} +tr.dblog-user { + background: #ffd; +} +tr.dblog-user .active { + background: #eed; +} +tr.dblog-content { + background: #ddf; +} +tr.dblog-content .active { + background: #cce; +} +tr.dblog-page-not-found, tr.dblog-access-denied { + background: #dfd; +} +tr.dblog-page-not-found .active, tr.dblog-access-denied .active { + background: #cec; +} +tr.dblog-error { + background: #ffc9c9; +} +tr.dblog-error .active { + background: #eeb9b9; +} + + +/* + * modules/forum/forum-rtl.css + */ + +#forum tr td.forum { + padding-left: 0.5em; + padding-right: 25px; + background-position: 98% 2px; +} +.forum-topic-navigation { + padding: 1em 3em 0 0; +} +.forum-topic-navigation .topic-previous { + text-align: left; + float: right; +} +.forum-topic-navigation .topic-next { + text-align: right; + float: left; +} + + +/* + * modules/forum/forum.css + */ + +#forum .description { + font-size: 0.9em; + margin: 0.5em; +} +#forum td.created, #forum td.posts, #forum td.topics, #forum td.last-reply, #forum td.replies, #forum td.pager { + white-space: nowrap; +} +#forum td.posts, #forum td.topics, #forum td.replies, #forum td.pager { + text-align: center; +} +#forum tr td.forum { + padding-left: 25px; /* LTR */ + background-position: 2px 2px; /* LTR */ + background-image: url(../../misc/forum-default.png); + background-repeat: no-repeat; +} +#forum tr.new-topics td.forum { + background-image: url(../../misc/forum-new.png); +} +#forum div.indent { + margin-left: 20px; +} + +.forum-topic-navigation { + padding: 1em 0 0 3em; /* LTR */ + border-top: 1px solid #888; + border-bottom: 1px solid #888; + text-align: center; + padding: 0.5em; +} +.forum-topic-navigation .topic-previous { + text-align: right; /* LTR */ + float: left; /* LTR */ + width: 46%; +} +.forum-topic-navigation .topic-next { + text-align: left; /* LTR */ + float: right; /* LTR */ + width: 46%; +} + + +/* + * modules/help/help-rtl.css + */ + +.help-items { + float: right; + padding-right: 0; + padding-left: 3%; +} +.help-items-last { + padding-right: 0; + padding-left: 0; +} + + +/* + * modules/help/help.css + */ + +.help-items { + float: left; /* LTR */ + width: 22%; + padding-right: 3%; /* LTR */ +} +.help-items-last { + padding-right: 0; /* LTR */ +} + + +/* + * modules/locale/locale.css + */ + +.locale-untranslated { + font-style: normal; + text-decoration: line-through; +} + + +/* + * modules/node/node-rtl.css + */ + +#node-admin-buttons { + float: right; + margin-left: 0; + margin-right: 0.5em; + clear: left; +} + + +/* + * modules/node/node.css + */ + +.node-unpublished { + background-color: #fff4f4; +} +.preview .node { + background-color: #ffffea; +} +#node-admin-filter ul { + list-style-type: none; + padding: 0; + margin: 0; + width: 100%; +} +#node-admin-buttons { + float: left; /* LTR */ + margin-left: 0.5em; /* LTR */ + clear: right; /* LTR */ +} +td.revision-current { + background: #ffc; +} +.node-form .form-text { + display: block; + width: 95%; +} +.node-form .container-inline .form-text { + display: inline; + width: auto; +} +.node-form .standard { + clear: both; +} +.node-form textarea { + display: block; + width: 95%; +} +.node-form .attachments fieldset { + float: none; + display: block; +} +.terms-inline { + display: inline; +} + + +/* + * modules/openid/openid.css + */ + +#edit-openid-identifier { + background-image: url("login-bg.png"); + background-position: 0% 50%; + background-repeat: no-repeat; + padding-left: 20px; +} +div#edit-openid-identifier-wrapper { + display: block; +} +html.js #user-login-form div#edit-openid-identifier-wrapper, +html.js #user-login div#edit-openid-identifier-wrapper { + display: none; +} +html.js #user-login-form li.openid-link, +html.js #user-login li.openid-link { + display : block; + list-style: none; +} +#user-login-form ul { + margin-top: 0; +} +#user-login ul { + margin: 0 0 5px; +} +#user-login ul li { + margin: 0; +} +#user-login-form li.openid-link, +#user-login-form li.user-link, +#user-login li.openid-link, +#user-login li.user-link { + display: none; +} +#user-login-form li.openid-link a, +#user-login li.openid-link a { + background: transparent url("login-bg.png") no-repeat 0 2px; + padding: 0 20px; +} + + +/* + * modules/poll/poll-rtl.css + */ + +.poll .bar .foreground { + float: right; +} +.poll .percent { + text-align: left; +} +.poll .vote-form .choices { + text-align: right; +} + + +/* + * modules/poll/poll.css + */ + +.poll .bar { + height: 1em; + margin: 1px 0; + background-color: #ddd; +} +.poll .bar .foreground { + background-color: #000; + height: 1em; + float: left; /* LTR */ +} +.poll .links { + text-align: center; +} +.poll .percent { + text-align: right; /* LTR */ +} +.poll .total { + text-align: center; +} +.poll .vote-form { + text-align: center; +} +.poll .vote-form .choices { + text-align: left; /* LTR */ + margin: 0 auto; + display: table; +} +.poll .vote-form .choices .title { + font-weight: bold; +} +.node-form #edit-poll-more { + margin: 0; +} +td.poll-chtext { + width: 80%; +} +td.poll-chvotes .form-text { + width: 85%; +} + + +/* + * modules/profile/profile.css + */ + +#profile-fields td.category { + font-weight: bold; +} +#profile-fields tr.category-message { + color: #999; +} +#profile-fields tr.category-populated { + display: none; +} + + +/* + * modules/search/search-rtl.css + */ + +.search-advanced .criterion { + float: right; + margin-right: 0; + margin-left: 2em; +} +.search-advanced .action { + float: right; + clear: right; +} + + +/* + * modules/search/search.css + */ + +.search-form { + margin-bottom: 1em; +} +.search-form input { + margin-top: 0; + margin-bottom: 0; +} +.search-results p { + margin-top: 0; +} +.search-results dt { + font-size: 1.1em; +} +.search-results dd { + margin-bottom: 1em; +} +.search-results .search-info { + font-size: 0.85em; +} +.search-advanced .criterion { + float: left; /* LTR */ + margin-right: 2em; /* LTR */ +} +.search-advanced .action { + float: left; /* LTR */ + clear: left; /* LTR */ +} + + +/* + * modules/system/admin-rtl.css + */ + +div.admin-panel .body { + padding: 0 8px 2px 4px; +} + +div.admin .expert-link { + text-align: left; + margin-right: 0; + margin-left: 1em; + padding-right: 0; + padding-left: 4px; +} + +table.system-status-report th, table.system-status-report tr.merge-up td { + padding-right: 30px; +} + +table.system-status-report th { + background-position: 95% 50%; +} + +table.screenshot { + margin-left: 1em; +} + +.date-container { + clear: right; +} +.date-container .select-container, .date-container .custom-container { + float: right; +} +.date-container .custom-container { + margin-left: 0; + margin-right: 15px; +} + + +/* + * modules/system/admin.css + */ + +/* +** Formatting for administration page +*/ +div.admin-panel { + margin: 0; + padding: 5px 5px 15px 5px; +} + +div.admin-panel .description { + margin: 0 0 3px; + padding: 2px 0 3px 0; +} + +div.admin-panel .body { + padding: 0 4px 2px 8px; /* LTR */ +} + +div.admin { + padding-top: 15px; +} + +div.admin .left { + float: left; + width: 47%; + margin-left: 1em; +} +div.admin .right { + float: right; + width: 47%; + margin-right: 1em; +} + +div.admin .expert-link { + text-align: right; /* LTR */ + margin-right: 1em; /* LTR */ + padding-right: 4px; /* LTR */ +} + +table.package { + width: 100%; +} +table.package .description { + width: 100%; +} +table.package .version { + direction: ltr; +} +div.admin-dependencies, div.admin-required { + font-size: 0.9em; + color: #444; +} +span.admin-disabled { + color: #800; +} +span.admin-enabled { + color: #080; +} +span.admin-missing { + color: #f00; +} + +/** + * Formatting for status report + */ +table.system-status-report th { + border-bottom: 1px solid #ccc; +} +table.system-status-report th, table.system-status-report tr.merge-up td { + padding-left: 30px; /* LTR */ +} +table.system-status-report th { + background-repeat: no-repeat; + background-position: 5px 50%; /* LTR */ + padding-top: 6px; + padding-bottom: 6px; +} +table.system-status-report tr.error th { + background-image: url(../../misc/watchdog-error.png); +} +table.system-status-report tr.warning th { + background-image: url(../../misc/watchdog-warning.png); +} +table.system-status-report tr.ok th { + background-image: url(../../misc/watchdog-ok.png); +} + +/** + * Formatting for theme configuration + */ +.theme-settings-left { + float: left; + width: 49%; +} +.theme-settings-right { + float: right; + width: 49%; +} +.theme-settings-bottom { + clear: both; +} + +/** + * Formatting for theme overview + */ +table.screenshot { + margin-right: 1em; /* LTR */ +} +.theme-info h2 { + margin-bottom: 0; +} +.theme-info p { + margin-top: 0; +} + + +/** + * Date and time settings page + */ +.date-container { + overflow: auto; + clear: left; /* LTR */ +} +.date-container .form-item { + margin-top: 0; +} +.date-container .select-container, .date-container .custom-container { + float: left; /* LTR */ +} +.date-container .custom-container { + margin-left: 15px; /* LTR */ + width: 50%; +} +html.js .custom-container label { + visibility: hidden; +} + + +/* + * modules/system/defaults-rtl.css + */ + +th { + text-align: right; + padding-right: 0; + padding-left: 1em; +} + + +/* + * modules/system/defaults.css + */ + +/* +** HTML elements +*/ +fieldset { + margin-bottom: 1em; + padding: .5em; +} +form { + margin: 0; + padding: 0; +} +hr { + height: 1px; + border: 1px solid gray; +} +img { + border: 0; +} +table { + border-collapse: collapse; +} +th { + text-align: left; /* LTR */ + padding-right: 1em; /* LTR */ + border-bottom: 3px solid #ccc; +} + +/* +** Markup free clearing +** Details: http://www.positioniseverything.net/easyclearing.html +*/ +.clear-block:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.clear-block { + display: inline-block; +} + +/* Hides from IE-mac \*/ +* html .clear-block { + height: 1%; +} +.clear-block { + display: block; +} +/* End hide from IE-mac */ + + +/* + * modules/system/maintenance.css + */ + +/* Update styles */ +#update-results { + margin-top: 3em; + padding: 0.25em; + border: 1px solid #ccc; + background: #eee; + font-size: smaller; +} +#update-results h2 { + margin-top: 0.25em; +} +#update-results h4 { + margin-bottom: 0.25em; +} +#update-results li.none { + color: #888; + font-style: italic; +} +#update-results li.failure strong { + color: #b63300; +} + + +/* + * modules/system/system-menus-rtl.css + */ + +ul.menu { + text-align:right; +} +ul.menu li { + margin: 0 0.5em 0 0; +} +li.expanded { + padding: 0.2em 0 0 0.5em; +} +li.collapsed { + list-style-image: url(../../misc/menu-collapsed-rtl.png); + padding: 0.2em 0 0 0.5em; +} +li.leaf { + padding: 0.2em 0 0 0.5em; +} + + +/* + * modules/system/system-menus.css + */ + +ul.menu { + list-style: none; + border: none; + text-align:left; /* LTR */ +} +ul.menu li { + margin: 0 0 0 0.5em; /* LTR */ +} +li.expanded { + list-style-type: circle; + list-style-image: url(../../misc/menu-expanded.png); + padding: 0.2em 0.5em 0 0; /* LTR */ + margin: 0; +} +li.collapsed { + list-style-type: disc; + list-style-image: url(../../misc/menu-collapsed.png); /* LTR */ + padding: 0.2em 0.5em 0 0; /* LTR */ + margin: 0; +} +li.leaf { + list-style-type: square; + list-style-image: url(../../misc/menu-leaf.png); + padding: 0.2em 0.5em 0 0; /* LTR */ + margin: 0; +} +li a.active { + color: #000; +} +td.menu-disabled { + background: #ccc; +} +ul.links { + margin: 0; + padding: 0; +} +ul.links.inline { + display: inline; +} +ul.links li { + display: inline; + list-style-type: none; + padding: 0 0.5em; +} +.block ul { + margin: 0; + padding: 0 0 0.25em 1em; /* LTR */ +} + + +/* + * modules/system/system-rtl.css + */ + +thead th { + text-align: right; + padding-left: 1em; + padding-right: 0.5em; +} + +.item-list .icon { + float: left; + padding-left: 0; + padding-right: 0.25em; + clear: left; +} +.item-list ul li { + margin: 0 1.5em 0.25em 0; +} + +.more-link { + text-align: left; +} +.more-help-link { + text-align: left; +} + +dl.multiselect dt, dl.multiselect dd { + float: right; + margin: 0 0 0 1em; +} + +.block ul { + padding: 0 1em 0.25em 0; +} + +ul.primary { + padding: 0 1em 0 0; +} +ul.primary li a { + margin-right: 5px; + margin-left: 0.5em; +} +ul.secondary li { + display: inline; + padding: 0 1em; + border-right: none; + border-left: 1px solid #ccc; +} +html.js input.form-autocomplete { + background-position: 0% 2px; +} +html.js input.throbbing { + background-position: 0% -18px; +} + +html.js fieldset.collapsible legend a { + padding-left: 0; + padding-right: 15px; + background-position: 98% 75%; +} +html.js fieldset.collapsed legend a { + background-image: url(../../misc/menu-collapsed-rtl.png); + background-position: 98% 50%; +} + +div.teaser-button-wrapper { + float: left; + padding-right: 0; + padding-left: 5%; +} +.teaser-checkbox div.form-item { + float: left; + margin: 0 0 0 5%; +} +.progress .percentage { + float: left; +} +.progess-disabled { + float: right; +} +.ahah-progress { + float: right; +} +.ahah-progress .throbber { + float: right; +} +input.password-field { + margin-left: 10px; + margin-right: 0; +} +input.password-confirm { + margin-left: 10px; + margin-right: 0; +} + +.draggable a.tabledrag-handle { + float: right; + margin: -0.4em -0.5em -0.4em 0; + padding: 0.42em 0.5em 0.42em 1.5em; +} +div.indentation { + margin: -0.4em -0.4em -0.4em 0.2em; + padding: 0.42em 0.6em 0.42em 0; + float: right; +} +div.tree-child, div.tree-child-last { + background-position: -65px center; +} + + +/* + * modules/system/system.css + */ + +/* +** HTML elements +*/ +body.drag { + cursor: move; +} +th.active img { + display: inline; +} +tr.even, tr.odd { + background-color: #eee; + border-bottom: 1px solid #ccc; + padding: 0.1em 0.6em; +} +tr.drag { + background-color: #fffff0; +} +tr.drag-previous { + background-color: #ffd; +} +td.active { + background-color: #ddd; +} +td.checkbox, th.checkbox { + text-align: center; +} +tbody { + border-top: 1px solid #ccc; +} +tbody th { + border-bottom: 1px solid #ccc; +} +thead th { + text-align: left; /* LTR */ + padding-right: 1em; /* LTR */ + border-bottom: 3px solid #ccc; +} + +/* +** Other common styles +*/ +.breadcrumb { + padding-bottom: .5em +} +div.indentation { + width: 20px; + height: 1.7em; + margin: -0.4em 0.2em -0.4em -0.4em; /* LTR */ + padding: 0.42em 0 0.42em 0.6em; /* LTR */ + float: left; /* LTR */ +} +div.tree-child { + background: url(../../misc/tree.png) no-repeat 11px center; /* LTR */ +} +div.tree-child-last { + background: url(../../misc/tree-bottom.png) no-repeat 11px center; /* LTR */ +} +div.tree-child-horizontal { + background: url(../../misc/tree.png) no-repeat -11px center; +} +.error { + color: #e55; +} +div.error { + border: 1px solid #d77; +} +div.error, tr.error { + background: #fcc; + color: #200; + padding: 2px; +} +.warning { + color: #e09010; +} +div.warning { + border: 1px solid #f0c020; +} +div.warning, tr.warning { + background: #ffd; + color: #220; + padding: 2px; +} +.ok { + color: #008000; +} +div.ok { + border: 1px solid #00aa00; +} +div.ok, tr.ok { + background: #dfd; + color: #020; + padding: 2px; +} +.item-list .icon { + color: #555; + float: right; /* LTR */ + padding-left: 0.25em; /* LTR */ + clear: right; /* LTR */ +} +.item-list .title { + font-weight: bold; +} +.item-list ul { + margin: 0 0 0.75em 0; + padding: 0; +} +.item-list ul li { + margin: 0 0 0.25em 1.5em; /* LTR */ + padding: 0; + list-style: disc; +} +ol.task-list li.active { + font-weight: bold; +} +.form-item { + margin-top: 1em; + margin-bottom: 1em; +} +tr.odd .form-item, tr.even .form-item { + margin-top: 0; + margin-bottom: 0; + white-space: nowrap; +} +tr.merge-down, tr.merge-down td, tr.merge-down th { + border-bottom-width: 0 !important; +} +tr.merge-up, tr.merge-up td, tr.merge-up th { + border-top-width: 0 !important; +} +.form-item input.error, .form-item textarea.error, .form-item select.error { + border: 2px solid red; +} +.form-item .description { + font-size: 0.85em; +} +.form-item label { + display: block; + font-weight: bold; +} +.form-item label.option { + display: inline; + font-weight: normal; +} +.form-checkboxes, .form-radios { + margin: 1em 0; +} +.form-checkboxes .form-item, .form-radios .form-item { + margin-top: 0.4em; + margin-bottom: 0.4em; +} +.marker, .form-required { + color: #f00; +} +.more-link { + text-align: right; /* LTR */ +} +.more-help-link { + font-size: 0.85em; + text-align: right; /* LTR */ +} +.nowrap { + white-space: nowrap; +} +.item-list .pager { + clear: both; + text-align: center; +} +.item-list .pager li { + background-image:none; + display:inline; + list-style-type:none; + padding: 0.5em; +} +.pager-current { + font-weight:bold; +} +.tips { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + font-size: 0.9em; +} +dl.multiselect dd.b, dl.multiselect dd.b .form-item, dl.multiselect dd.b select { + font-family: inherit; + font-size: inherit; + width: 14em; +} +dl.multiselect dd.a, dl.multiselect dd.a .form-item { + width: 8em; +} +dl.multiselect dt, dl.multiselect dd { + float: left; /* LTR */ + line-height: 1.75em; + padding: 0; + margin: 0 1em 0 0; /* LTR */ +} +dl.multiselect .form-item { + height: 1.75em; + margin: 0; +} + +/* +** Inline items (need to override above) +*/ +.container-inline div, .container-inline label { + display: inline; +} + +/* +** Tab navigation +*/ +ul.primary { + border-collapse: collapse; + padding: 0 0 0 1em; /* LTR */ + white-space: nowrap; + list-style: none; + margin: 5px; + height: auto; + line-height: normal; + border-bottom: 1px solid #bbb; +} +ul.primary li { + display: inline; +} +ul.primary li a { + background-color: #ddd; + border-color: #bbb; + border-width: 1px; + border-style: solid solid none solid; + height: auto; + margin-right: 0.5em; /* LTR */ + padding: 0 1em; + text-decoration: none; +} +ul.primary li.active a { + background-color: #fff; + border: 1px solid #bbb; + border-bottom: #fff 1px solid; +} +ul.primary li a:hover { + background-color: #eee; + border-color: #ccc; + border-bottom-color: #eee; +} +ul.secondary { + border-bottom: 1px solid #bbb; + padding: 0.5em 1em; + margin: 5px; +} +ul.secondary li { + display: inline; + padding: 0 1em; + border-right: 1px solid #ccc; /* LTR */ +} +ul.secondary a { + padding: 0; + text-decoration: none; +} +ul.secondary a.active { + border-bottom: 4px solid #999; +} + +/* +** Autocomplete styles +*/ +/* Suggestion list */ +#autocomplete { + position: absolute; + border: 1px solid; + overflow: hidden; + z-index: 100; +} +#autocomplete ul { + margin: 0; + padding: 0; + list-style: none; +} +#autocomplete li { + background: #fff; + color: #000; + white-space: pre; + cursor: default; +} +#autocomplete li.selected { + background: #0072b9; + color: #fff; +} +/* Animated throbber */ +html.js input.form-autocomplete { + background-image: url(../../misc/throbber.gif); + background-repeat: no-repeat; + background-position: 100% 2px; /* LTR */ +} +html.js input.throbbing { + background-position: 100% -18px; /* LTR */ +} + +/* +** Collapsing fieldsets +*/ +html.js fieldset.collapsed { + border-bottom-width: 0; + border-left-width: 0; + border-right-width: 0; + margin-bottom: 0; + height: 1em; +} +html.js fieldset.collapsed * { + display: none; +} +html.js fieldset.collapsed legend { + display: block; +} +html.js fieldset.collapsible legend a { + padding-left: 15px; /* LTR */ + background: url(../../misc/menu-expanded.png) 5px 75% no-repeat; /* LTR */ +} +html.js fieldset.collapsed legend a { + background-image: url(../../misc/menu-collapsed.png); /* LTR */ + background-position: 5px 50%; /* LTR */ +} +/* Note: IE-only fix due to '* html' (breaks Konqueror otherwise). */ +* html.js fieldset.collapsed legend, +* html.js fieldset.collapsed legend *, +* html.js fieldset.collapsed table * { + display: inline; +} +/* For Safari 2 to prevent collapsible fieldsets containing tables from dissapearing due to tableheader.js. */ +html.js fieldset.collapsible { + position: relative; +} +html.js fieldset.collapsible legend a { + display: block; +} +/* Avoid jumping around due to margins collapsing into collapsible fieldset border */ +html.js fieldset.collapsible .fieldset-wrapper { + overflow: auto; +} + +/* +** Resizable text areas +*/ +.resizable-textarea { + width: 95%; +} +.resizable-textarea .grippie { + height: 9px; + overflow: hidden; + background: #eee url(../../misc/grippie.png) no-repeat center 2px; + border: 1px solid #ddd; + border-top-width: 0; + cursor: s-resize; +} +html.js .resizable-textarea textarea { + margin-bottom: 0; + width: 100%; + display: block; +} + +/* +** Table drag and drop. +*/ +.draggable a.tabledrag-handle { + cursor: move; + float: left; /* LTR */ + height: 1.7em; + margin: -0.4em 0 -0.4em -0.5em; /* LTR */ + padding: 0.42em 1.5em 0.42em 0.5em; /* LTR */ + text-decoration: none; +} +a.tabledrag-handle:hover { + text-decoration: none; +} +a.tabledrag-handle .handle { + margin-top: 4px; + height: 13px; + width: 13px; + background: url(../../misc/draggable.png) no-repeat 0 0; +} +a.tabledrag-handle-hover .handle { + background-position: 0 -20px; +} + +/* +** Teaser splitter +*/ +.joined + .grippie { + height: 5px; + background-position: center 1px; + margin-bottom: -2px; +} +/* Keeps inner content contained in Opera 9. */ +.teaser-checkbox { + padding-top: 1px; +} +div.teaser-button-wrapper { + float: right; /* LTR */ + padding-right: 5%; /* LTR */ + margin: 0; +} +.teaser-checkbox div.form-item { + float: right; /* LTR */ + margin: 0 5% 0 0; /* LTR */ + padding: 0; +} +textarea.teaser { + display: none; +} +html.js .no-js { + display: none; +} + +/* +** Progressbar styles +*/ +.progress { + font-weight: bold; +} +.progress .bar { + background: #fff url(../../misc/progress.gif); + border: 1px solid #00375a; + height: 1.5em; + margin: 0 0.2em; +} +.progress .filled { + background: #0072b9; + height: 1em; + border-bottom: 0.5em solid #004a73; + width: 0%; +} +.progress .percentage { + float: right; /* LTR */ +} +.progress-disabled { + float: left; /* LTR */ +} +.ahah-progress { + float: left; /* LTR */ +} +.ahah-progress .throbber { + width: 15px; + height: 15px; + margin: 2px; + background: transparent url(../../misc/throbber.gif) no-repeat 0px -18px; + float: left; /* LTR */ +} +tr .ahah-progress .throbber { + margin: 0 2px; +} +.ahah-progress-bar { + width: 16em; +} + +/* +** Formatting for welcome page +*/ +#first-time strong { + display: block; + padding: 1.5em 0 .5em; +} + +/* +** To be used with tableselect.js +*/ +tr.selected td { + background: #ffc; +} + +/* +** Floating header for tableheader.js +*/ +table.sticky-header { + margin-top: 0; + background: #fff; +} + +/* +** Installation clean URLs +*/ +#clean-url.install { + display: none; +} + +/* +** For anything you want to hide on page load when JS is enabled, so +** that you can use the JS to control visibility and avoid flicker. +*/ +html.js .js-hide { + display: none; +} + +/* +** Styles for the system modules page (admin/build/modules) +*/ +#system-modules div.incompatible { + font-weight: bold; +} + +/* +** Styles for the system themes page (admin/build/themes) +*/ +#system-themes-form div.incompatible { + font-weight: bold; +} + +/* +** Password strength indicator +*/ +span.password-strength { + visibility: hidden; +} +input.password-field { + margin-right: 10px; /* LTR */ +} +div.password-description { + padding: 0 2px; + margin: 4px 0 0 0; + font-size: 0.85em; + max-width: 500px; +} +div.password-description ul { + margin-bottom: 0; +} +.password-parent { + margin: 0 0 0 0; +} +/* +** Password confirmation checker +*/ +input.password-confirm { + margin-right: 10px; /* LTR */ +} +.confirm-parent { + margin: 5px 0 0 0; +} +span.password-confirm { + visibility: hidden; +} +span.password-confirm span { + font-weight: normal; +} + + +/* + * modules/taxonomy/taxonomy.css + */ + +tr.taxonomy-term-preview { + background-color: #EEE; +} +tr.taxonomy-term-divider-top { + border-bottom: none; +} +tr.taxonomy-term-divider-bottom { + border-top: 1px dotted #CCC; +} +.taxonomy-term-description { + margin: 5px 0 20px; +} + + +/* + * modules/tracker/tracker.css + */ + +#tracker td.replies { + text-align: center; +} +#tracker table { + width: 100%; +} + + +/* + * modules/update/update-rtl.css + */ + +.update .project { + padding-right: .25em; +} + +.update .version-status { + float: left; + padding-left: 10px; +} + +.update .version-status .icon { + padding-right: .5em; +} + +.update table.version .version-title { + padding-left: 1em; +} + +.update table.version .version-details { + padding-left: .5em; + direction: ltr; +} + +.update table.version .version-links { + text-align: left; + padding-left: 1em; +} + +.update .check-manually { + padding-right: 1em; +} + + +/* + * modules/update/update.css + */ + +.update .project { + font-weight: bold; + font-size: 110%; + padding-left: .25em; /* LTR */ + height: 22px; +} + +.update .version-status { + float: right; /* LTR */ + padding-right: 10px; /* LTR */ + font-size: 110%; + height: 20px; +} + +.update .version-status .icon { + padding-left: .5em; /* LTR */ +} + +.update .version-date { + white-space: nowrap; +} + +.update .info { + margin: 0; + padding: 1em 1em .25em 1em; +} + +.update tr td { + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +.update tr.error { + background: #fcc; +} + +.update tr.error .version-recommended { + background: #fdd; +} + +.update tr.ok { + background: #dfd; +} + +.update tr.warning { + background: #ffd; +} + +.update tr.warning .version-recommended { + background: #ffe; +} + +.current-version, .new-version { + direction: ltr; /* Note: version numbers should always be LTR. */ +} + +.update tr.unknown { + background: #ddd; +} + +table.update, +.update table.version { + width: 100%; + margin-top: .5em; +} + +.update table.version tbody { + border: none; +} + +.update table.version tr, +.update table.version td { + line-height: .9em; + padding: 0; + margin: 0; + border: none; +} + +.update table.version .version-title { + padding-left: 1em; /* LTR */ + width: 14em; +} + +.update table.version .version-details { + padding-right: .5em; /* LTR */ +} + +.update table.version .version-links { + text-align: right; /* LTR */ + padding-right: 1em; /* LTR */ +} + +.update table.version-security .version-title { + color: #970F00; +} + +.update table.version-recommended-strong .version-title { + font-weight: bold; +} + +.update .security-error { + font-weight: bold; + color: #970F00; +} + +.update .check-manually { + padding-left: 1em; /* LTR */ +} + + +/* + * modules/user/user-rtl.css + */ + +#permissions td.permission { + padding-left: 0; + padding-right: 1.5em; +} +#access-rules .access-type, #access-rules .rule-type { + margin-right: 0; + margin-left: 1em; + float: right; +} +#user-admin-buttons { + float: right; + margin-left: 0; + margin-right: 0.5em; + clear: left; +} + +.profile .picture { + float: left; + margin: 0 0 1em 1em; +} + + +/* + * modules/user/user.css + */ + +#permissions td.module { + font-weight: bold; +} +#permissions td.permission { + padding-left: 1.5em; /* LTR */ +} +#access-rules .access-type, #access-rules .rule-type { + margin-right: 1em; /* LTR */ + float: left; /* LTR */ +} +#access-rules .access-type .form-item, #access-rules .rule-type .form-item { + margin-top: 0; +} +#access-rules .mask { + clear: both; +} +#user-login-form { + text-align: center; +} +#user-admin-filter ul { + list-style-type: none; + padding: 0; + margin: 0; + width: 100%; +} +#user-admin-buttons { + float: left; /* LTR */ + margin-left: 0.5em; /* LTR */ + clear: right; /* LTR */ +} +#user-admin-settings fieldset .description { + font-size: 0.85em; + padding-bottom: .5em; +} + +/* Generated by user.module but used by profile.module: */ +.profile { + clear: both; + margin: 1em 0; +} +.profile .picture { + float: right; /* LTR */ + margin: 0 1em 1em 0; /* LTR */ +} +.profile h3 { + border-bottom: 1px solid #ccc; +} +.profile dl { + margin: 0 0 1.5em 0; +} +.profile dt { + margin: 0 0 0.2em 0; + font-weight: bold; +} +.profile dd { + margin: 0 0 1em 0; +} diff --git a/css/fields.css b/css/fields.css new file mode 100755 index 0000000..a3d1c18 --- /dev/null +++ b/css/fields.css @@ -0,0 +1,44 @@ +/** + * @file + * Field Styling + */ + + +/* + * Field types + */ + +.field /* Wrapper for any CCK field. */ { +} + +.field-type-datetime /* Always use "datetime" when creating new CCK date fields. "date" and "datestamp" are legacy types. */ { +} + +.field-type-filefield /* Field from filefield module */ { +} + +.field-type-nodereference { +} + +.field-type-number-decimal { +} + +.field-type-number-float { +} + +.field-type-number-integer { +} + +.field-type-text { +} + +.field-type-userreference { +} + + +/* + * Named fields + */ + +.field-field-FIELDNAME /* Underscores in field name are replaced with dashes. */ { +} diff --git a/css/font-style.css b/css/font-style.css new file mode 100755 index 0000000..14ab266 --- /dev/null +++ b/css/font-style.css @@ -0,0 +1,6 @@ +h1, h2, h3, h4, h5, h6 { +margin: 0; +padding: 0; +font-weight: normal; +font-family: Helvetica, Arial, sans-serif; +} diff --git a/css/forms-rtl.css b/css/forms-rtl.css new file mode 100755 index 0000000..4e4318e --- /dev/null +++ b/css/forms-rtl.css @@ -0,0 +1,46 @@ +/** + * @file + * RTL companion for the forms.css file. + */ + + +/* + * Drupal's default login form block + */ +#user-login-form { + text-align: right; +} + + +/* + * OpenID + * + * The default styling for the OpenID login link seems to assume Garland's + * styling of list items. + */ + +#user-login-form li.openid-link /* The "Log in using OpenID" link. */ { + margin-left: 0; + margin-right: -20px; /* Un-do some of the padding on the ul list. */ +} + +#user-login li.openid-link, +#user-login li.user-link /* The OpenID links on the /user form. */ { + margin-left: 0; + margin-right: -2em; /* Un-do all of the padding on the ul list. */ +} + + +/* + * Drupal admin tables + * + * We overrode these styles in html-elements.css, but restore them for the admin + * section of the site. + */ + +form th, +form thead th { + text-align: right; + padding-left: 1em; + padding-right: 0; +} diff --git a/css/forms.css b/css/forms.css new file mode 100755 index 0000000..696702f --- /dev/null +++ b/css/forms.css @@ -0,0 +1,134 @@ +/** + * @file + * Form Styling + */ + + +.form-item, +.form-checkboxes, +.form-radios /* Wrapper for a form element (or group of form elements) and its label */ { + margin: 1em 0; +} + +.form-item input.error, +.form-item textarea.error, +.form-item select.error /* Highlight the form elements that caused a form submission error */ { + border: 2px solid #c00; +} + +.form-item label /* The label for a form element */ { + display: block; + font-weight: bold; +} + +.form-item label.option /* The label for a radio button or checkbox */ { + display: inline; + font-weight: normal; +} + +.form-required /* The part of the label that indicates a required field */ { + color: #c00; +} + +.form-item .description /* The descriptive help text (separate from the label) */ { + font-size: 0.85em; +} + +.form-checkboxes .form-item, +.form-radios .form-item /* Pack groups of checkboxes and radio buttons closer together */ { + margin: 0.4em 0; +} + +.form-submit /* The submit button */ { +} + +.container-inline div, +.container-inline label /* Inline labels and form divs */ { + display: inline; +} + +.tips /* Tips for Drupal's input formats */ { +} + + +/* + * Search (search-theme-form.tpl.php) + */ +#search-box /* Wrapper for the search form */ { +} + +#edit-search-theme-form-1-wrapper label /* Label that says "Search this site:" */ { + display: none; +} + + +/* + * Search (search-block-form.tpl.php) + */ +#search-block-form /* Wrapper for the search form */ { +} + +#edit-search-block-form-1-wrapper label /* Label that says "Search this site:" */ { + display: none; +} + + +/* + * Drupal's default login form block + */ +#user-login-form { + text-align: left; /* LTR */ +} + + +/* + * OpenID + * + * The default styling for the OpenID login link seems to assume Garland's + * styling of list items. + */ + +#user-login-form ul /* OpenID creates a new ul above the login form's links. */ { + margin-bottom: 0; /* Position OpenID's ul next to the rest of the links. */ +} + +#user-login-form li.openid-link /* The "Log in using OpenID" link. */ { + margin-top: 1em; + margin-left: -20px; /* LTR */ /* Un-do some of the padding on the ul list. */ +} + +#user-login-form li.user-link /* The "Cancel OpenID login" link. */ { + margin-top: 1em; +} + +#user-login ul { + margin: 1em 0; +} + +#user-login li.openid-link, +#user-login li.user-link /* The OpenID links on the /user form. */ { + margin-left: -2em; /* LTR */ /* Un-do all of the padding on the ul list. */ +} + + +/* + * Drupal admin tables + * + * We overrode these styles in html-elements.css, but restore them for the admin + * section of the site. + */ + +form tbody { + border-top: 1px solid #ccc; +} + +form th, +form thead th { + text-align: left; /* LTR */ + padding-right: 1em; /* LTR */ + border-bottom: 3px solid #ccc; +} + +form tbody th { + border-bottom: 1px solid #ccc; +} diff --git a/css/html-reset-rtl.css b/css/html-reset-rtl.css new file mode 100755 index 0000000..0260d5e --- /dev/null +++ b/css/html-reset-rtl.css @@ -0,0 +1,37 @@ +/** + * @file + * RTL companion for the html-reset.css file. + */ + + +/* + * Lists + * + * We need to standardize the list item indentation. + */ +ul, +ol { + padding-left: 0; + padding-right: 2em; +} + +.block ul, +.item-list ul /* Drupal overrides */ { + padding: 0 2em 0 0; +} + +dd { + margin: 0 2em 0 0; +} + +/* + * Tables + * + * Drupal provides table styling which is only useful for its admin section + * forms, so we override this default CSS. (We set it back in forms.css.) + */ +th, +thead th, +tbody th { + text-align: right; +} diff --git a/css/html-reset.css b/css/html-reset.css new file mode 100755 index 0000000..d57fa3a --- /dev/null +++ b/css/html-reset.css @@ -0,0 +1,291 @@ +/** + * @file + * HTML Element Styling + * + * Ok, I admit it. I fooled you. This isn't a "reset" stylesheet. Instead this + * is the place where you should set (not reset) the default styling for all + * HTML elements. + * + * @see http://meiert.com/en/blog/20080419/reset-style-sheets-are-bad/ + * @see http://snook.ca/archives/html_and_css/no_css_reset/ + */ + + +/* + * Fonts + * + * Our font size and line height declarations are based on the following ALA + * article: + * http://www.alistapart.com/articles/howtosizetextincss + * + * All modern browsrs use a 16px default font size. Specifying the font-size + * and line-height in ems (relative to the 16px default font) allows the user + * to resize the font in the browser and produces the most consistent results + * across different browsers. + */ +body { + font-size: 100%; /* Fixes exaggerated text resizing in IE6 and IE7 */ +} + +#skip-link, +#page { + /* + * To use a 12px font size on the page, delete the 14px declarations. + * to use a 14px font size on the page, delete the 12px declarations. + */ + + /* Use a 12px base font size with a 16px line height */ + font-size: 0.75em; /* 16px x .75 = 12px */ + line-height: 1.333em; /* 12px x 1.333 = 16px */ + + /* Use a 14px base font size with a 18px line height */ + font-size: 0.875em; /* 16px x .875 = 14px */ + line-height: 1.286em; /* 14px x 1.286 = 18px */ +} + +body, +caption, +th, +td, +input, +textarea, +select, +option, +legend, +fieldset { + /* The following font family declarations are based on the Microsoft core web + * fonts which are common fonts available on most computer systems. The DejaVu + * fonts are commonly available on Linux systems where the MS fonts are less + * common. Tahoma and Helvetica are also widely available. + * + * A user's web browser will look at the comma-separated list and will + * attempt to use each font in turn until it finds one that is available + * on the user's computer. The final "generic" font (sans-serif or serif) + * hints at what type of font to use if the web browser doesn't find any + * of the fonts in the list. + + font-family: "Times New Roman", Times, Georgia, "DejaVu Serif", serif; + font-family: Times, "Times New Roman", Georgia, "DejaVu Serif", serif; + font-family: Georgia, "Times New Roman", "DejaVu Serif", serif; + + font-family: Verdana, Tahoma, "DejaVu Sans", sans-serif; + font-family: Tahoma, Verdana, "DejaVu Sans", sans-serif; + font-family: Helvetica, Arial, "Nimbus Sans L", sans-serif; + font-family: Arial, Helvetica, "Nimbus Sans L", sans-serif; + + font-family: "Courier New", "DejaVu Sans Mono", monospace; + + */ + + font-family: Verdana, Tahoma, "DejaVu Sans", sans-serif; +} + +pre, +code { + font-size: 1.1em; /* Monospace fonts can be hard to read */ + font-family: "Courier New", "DejaVu Sans Mono", monospace; +} + +/* + * Headings + */ +h1 { + font-size: 2em; + line-height: 1.3em; + margin-top: 0; + margin-bottom: 0.5em; /* 0.5em is equavalent to 1em in the page's base font. + Remember, a margin specified in ems is relative to + the element's font-size, not to the pages' base + font size. So, for example, if we want a 1em margin + (relative to the base font), we have to divide that + length by the element's font-size: + 1em / 2em = 0.5em */ +} + +h2 { + font-size: 1.5em; + line-height: 1.3em; + margin-top: 0.667em; /* Equivalent to 1em in the page's base font: 1 / 1.5 = 0.667em */ + margin-bottom: 0.667em; +} + +h3 { + font-size: 1.3em; + line-height: 1.3em; + margin-top: 0.769em; /* Equivalent to 1em in the page's base font: 1 / 1.3 = 0.769 */ + margin-bottom: 0.769em; +} + +h4, +h5, +h6 { + font-size: 1.1em; + line-height: 1.3em; + margin-top: 0.909em; /* Equivalent to 1em in the page's base font: 1 / 1.1 = 0.909 */ + margin-bottom: 0.909em; +} + +/* + * Block-level elements + */ +p, +ul, +ol, +dl, +pre, +table, +fieldset { + margin: 1em 0; +} + +blockquote { + margin: 1em 2em; +} + +/* + * Lists + * + * We need to standardize the list item indentation. + */ +ul, +ol { + margin-left: 0; + padding-left: 2em; /* LTR */ +} + +.block ul, +.item-list ul /* Drupal overrides */ { + margin: 1em 0; + padding: 0 0 0 2em; /* LTR */ +} + +ul ul, ul ol, +ol ol, ol ul, +.block ul ul, .block ul ol, +.block ol ol, .block ol ul, +.item-list ul ul, .item-list ul ol, +.item-list ol ol, .item-list ol ul { + margin: 0; +} + +li { + margin: 0; + padding: 0; +} + +.item-list ul li /* Drupal override */ { + margin: 0; + padding: 0; + list-style: inherit; +} + +ul.menu li, +li.expanded, +li.collapsed, +li.leaf /* Drupal override */ { + margin: 0; + padding: 0; +} + +ul { list-style-type: disc; } +ul ul { list-style-type: circle; } +ul ul ul { list-style-type: square; } +ul ul ul ul { list-style-type: circle; } +ol { list-style-type: decimal; } +ol ol { list-style-type: lower-alpha; } +ol ol ol { list-style-type: decimal; } + +dt { + margin: 0; + padding: 0; +} + +dd { + margin: 0 0 0 2em; + padding: 0; +} + +/* + * Links + * + * The order of link states are based on Eric Meyer's article: + * http://meyerweb.com/eric/thoughts/2007/06/11/who-ordered-the-link-states + */ +a:link { +} + +a:visited { +} + +a:hover, +a:focus { +} + +a:active { +} + +/* + * Tables + * + * Drupal provides table styling which is only useful for its admin section + * forms, so we override this default CSS. (We set it back in forms.css.) + */ +table { + border-collapse: collapse; + /* width: 100%; */ /* Prevent cramped-looking tables */ +} + +th, +thead th, +tbody th { + text-align: left; /* LTR */ + padding: 0; + border-bottom: none; +} + +tbody { + border-top: none; +} + +/* + * Abbreviations + */ +abbr { + border-bottom: 1px dotted #666; + cursor: help; + white-space: nowrap; +} + +abbr.created /* Date-based "abbreviations" show computer-friendly timestamps which are not human-friendly. */ { + border: none; + cursor: auto; + white-space: normal; +} + +/* + * Images + */ +img { + border: 0; +} + +/* + * Horizontal rules + */ +hr { + height: 1px; + border: 1px solid #666; +} + +/* + * Forms + */ +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 1em 0; + padding: 0.5em; +} diff --git a/css/ie.css b/css/ie.css new file mode 100755 index 0000000..9eb0bb7 --- /dev/null +++ b/css/ie.css @@ -0,0 +1,47 @@ +/** + * @file + * CSS targeted specifically for Internet Explorer for Windows. + * + * Any CSS in this file will apply to all versions of IE. You can target + * specific versions of IE by using conditional comments. See your sub-theme's + * .info file for an easy way to use them. + * + * While building your theme, you should be aware that IE limits Drupal to 31 + * stylesheets total. The work-around for the bug is to enable CSS aggregation + * under: admin / settings / performance. + */ + + +/* + * Tabs + */ +ul.primary li a, +ul.primary li a .tab, +ul.secondary li a, +ul.secondary li a .tab { + cursor: pointer; +} + +/* + * Drupal nodes + */ +.node-unpublished .node-inner>* { + position: relative; /* Otherwise these elements will appear below the "Unpublished" text. */ +} + +/* + * Drupal admin tables + */ +tr.even th, +tr.even td, +tr.odd th, +tr.odd td { + border-bottom: 1px solid #ccc; /* IE doesn't display borders on table rows */ +} + +/* + * Markup free clearing + */ +.clearfix { + zoom: 1; +} diff --git a/css/ie6-rtl.css b/css/ie6-rtl.css new file mode 100755 index 0000000..4d6f40c --- /dev/null +++ b/css/ie6-rtl.css @@ -0,0 +1,12 @@ +/** + * @file + * RTL companion for the ie6.css file. + */ + + +/* + * Layout CSS + */ +#page { + text-align: right; /* 2nd part of IE5/IE6quirks centering hack */ +} diff --git a/css/ie6.css b/css/ie6.css new file mode 100755 index 0000000..4441e47 --- /dev/null +++ b/css/ie6.css @@ -0,0 +1,105 @@ +/** + * @file + * CSS targeted specifically for Internet Explorer 5 and 6 for Windows. + * + * Any CSS in this file will override the rules specified in the ie.css file. + */ + + +/* + * Layout CSS + */ + +body { + text-align: center; /* 1st part of IE5/IE6quirks centering hack */ +} + +#page { + text-align: left; /* LTR */ /* 2nd part of IE5/IE6quirks centering hack */ +} + +#main-wrapper { + zoom: 1; /* Otherwise with a liquid layout, sidebars disappear when resizing the windows in IE6 */ +} + +#content, +#navigation, +.region-sidebar-first, +.region-sidebar-second /* Floating divs */ { + display: inline; /* display inline or double your floated margin! [1] */ + overflow: hidden; /* in ie6, overflow auto is broken [2] and so is overflow visible [3] */ + overflow-y: visible; +} + +/* + * Tabs - IE 5 and 6 don't support PNGs with alpha transparency. + */ + +ul.primary li a, +ul.primary li a .tab, +ul.secondary li a, +ul.secondary li a .tab { + display: inline-block; /* Otherwise the blocks mistakenly get 100% width in IE6 */ +} + +ul.primary li a { + background: url(../images/tab-left-ie6.png) no-repeat left -38px; +} + +ul.primary li a .tab { + background: url(../images/tab-right-ie6.png) no-repeat right -38px; +} + +ul.primary li a:hover, +ul.primary li a:focus { + background: url(../images/tab-left-ie6.png) no-repeat left -76px; +} + +ul.primary li a:hover .tab, +ul.primary li a:focus .tab { + background: url(../images/tab-right-ie6.png) no-repeat right -76px; +} + +ul.primary li.active a, +ul.primary li.active a:hover, +ul.primary li.active a:focus { + background: url(../images/tab-left-ie6.png) no-repeat left 0; +} + +ul.primary li.active a .tab, +ul.primary li.active a:hover .tab, +ul.primary li.active a:focus .tab { + background: url(../images/tab-right-ie6.png) no-repeat right 0; +} + +/* + * Messages - IE 5 and 6 don't support PNGs with alpha transparency. + */ + +div.messages, +div.status, +div.warning, +div.error /* Important messages (status, warning, and error) for the user */ { + background-image: url(../images/messages-status-ie6.png); +} + +div.warning /* Medium priority messages */ { + background-image: url(../images/messages-warning-ie6.png); +} + +div.error /* High priority messages. See also the .error declaration below. */ { + background-image: url(../images/messages-error-ie6.png); +} + + +/* + * REFERENCES + * + +1. http://www.positioniseverything.net/explorer/doubled-margin.html +2. http://browservulsel.blogspot.com/2005/04/ie-overflow-auto-scrollbar-overlap.html +3. http://www.howtocreate.co.uk/wrongWithIE/?chapter=overflow%3Avisible%3B +4. http://www.ryanbrill.com/archives/multiple-classes-in-ie + + * + */ diff --git a/css/layout-fixed-rtl.css b/css/layout-fixed-rtl.css new file mode 100755 index 0000000..7e12e0b --- /dev/null +++ b/css/layout-fixed-rtl.css @@ -0,0 +1,74 @@ +/** + * @file + * RTL companion for the layout-fixed.css file. + */ + + +/* + * Content + */ +#content, +.no-sidebars #content { + float: right; + margin-left: -960px; /* Negative value of #content's width + right margin. */ + margin-right: 0; +} + +.sidebar-first #content { + margin-left: -960px; /* Negative value of #content's width + right margin. */ + margin-right: 200px; /* The width of .region-sidebar-first. */ +} + +.sidebar-second #content { + margin-left: -760px; /* Negative value of #content's width + right margin. */ + margin-right: 0; +} + +.two-sidebars #content { + margin-left: -760px; /* Negative value of #content's width + right margin. */ + margin-right: 200px; /* The width of .region-sidebar-first */ +} + +/* + * Navigation + */ +#navigation { + float: right; + margin-left: -100%; /* Negative value of #navigation's width + right margin. */ + margin-right: 0; +} + +#navigation ul /* Primary and secondary links */ { + text-align: right; +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: right; + padding: 0 0 0 10px; +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: right; + margin-left: -200px; /* Negative value of .region-sidebar-first's width + right margin. */ + margin-right: 0; +} + +.region-sidebar-first .section { + margin: 0 0 0 20px; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: right; + margin-left: -960px; /* Negative value of .region-sidebar-second's width + right margin. */ + margin-right: 760px; /* Width of content + sidebar-first. */ +} + +.region-sidebar-second .section { + margin: 0 20px 0 0; +} diff --git a/css/layout-fixed.css b/css/layout-fixed.css new file mode 100755 index 0000000..4cf5b36 --- /dev/null +++ b/css/layout-fixed.css @@ -0,0 +1,212 @@ +/** + * @file + * Layout Styling (DIV Positioning) + * + * Define CSS classes to create a table-free, 3-column, 2-column, or single + * column layout depending on whether blocks are enabled in the left or right + * columns. + * + * This layout is based on the Zen Columns layout method. + * http://drupal.org/node/201428 + * + * Only CSS that affects the layout (positioning) of major elements should be + * listed here. Such as: + * display, position, float, clear, width, height, min-width, min-height + * margin, border, padding, overflow + */ + + +/* + * Body + */ +body { +} + +#page-wrapper, +.region-page-closure { + /* + * If you want to make the page a fixed width and centered in the viewport, + * this is the standards-compliant way to do that. See also the ie6.css file + * for the necessary IE5/IE6quirks hack to center a div. + */ + margin-left: auto; + margin-right: auto; + width: 960px; +} + +#page { +} + +/* + * Header + */ +#header { +} + +#header .section { +} + +#search-box { +} + +.region-header { + clear: both; /* Clear the logo */ +} + +/* + * Main (container for everything else) + */ +#main-wrapper { + position: relative; +} + +#main { +} + +/* + * Content + */ +#content, +.no-sidebars #content { + float: left; /* LTR */ + width: 960px; + margin-left: 0; /* LTR */ + margin-right: -960px; /* LTR */ /* Negative value of #content's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #content .section. */ +} + +.sidebar-first #content { + width: 760px; + margin-left: 200px; /* LTR */ /* The width of .region-sidebar-first. */ + margin-right: -960px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +.sidebar-second #content { + width: 760px; + margin-left: 0; /* LTR */ + margin-right: -760px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +.two-sidebars #content { + width: 560px; + margin-left: 200px; /* LTR */ /* The width of .region-sidebar-first */ + margin-right: -760px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +#content .section { + margin: 0; + padding: 0; +} + +/* + * Navigation + */ +#navigation { + float: left; /* LTR */ + width: 100%; + margin-left: 0; /* LTR */ + margin-right: -100%; /* LTR */ /* Negative value of #navigation's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #navigation .section. */ + height: 2.3em; /* The navigation can have any arbritrary height. We picked one + that is the line-height plus 1em: 1.3 + 1 = 2.3 + Set this to the same value as the margin-top below. */ +} + +.with-navigation #content, +.with-navigation .region-sidebar-first, +.with-navigation .region-sidebar-second { + margin-top: 2.3em; /* Set this to the same value as the navigation height above. */ +} + +#navigation .section { +} + +#navigation ul /* Primary and secondary links */ { + margin: 0; + padding: 0; + text-align: left; /* LTR */ +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: left; /* LTR */ + padding: 0 10px 0 0; /* LTR */ +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: left; /* LTR */ + width: 200px; + margin-left: 0; /* LTR */ + margin-right: -200px; /* LTR */ /* Negative value of .region-sidebar-first's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-first .section. */ +} + +.region-sidebar-first .section { + margin: 0 20px 0 0; /* LTR */ + padding: 0; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: left; /* LTR */ + width: 200px; + margin-left: 760px; /* LTR */ /* Width of content + sidebar-first. */ + margin-right: -960px; /* LTR */ /* Negative value of .region-sidebar-second's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-second .section. */ +} + +.region-sidebar-second .section { + margin: 0 0 0 20px; /* LTR */ + padding: 0; +} + +/* + * Footer + */ +#footer { +} + +#footer .section { +} + +/* + * Closure + */ +.region-page-closure /* See also the #page-wrapper declaration above that this div shares. */ { +} + +/* + * Prevent overflowing content + */ +#header, +#content, +#navigation, +.region-sidebar-first, +.region-sidebar-second, +#footer, +.region-page-closure { + overflow: visible; + word-wrap: break-word; /* A very nice CSS3 property */ +} + +#navigation { + overflow: hidden; /* May need to be removed if using a dynamic drop-down menu */ +} + +/* + * If a div.clearfix doesn't have any content after it and its bottom edge + * touches the bottom of the viewport, Firefox and Safari will mistakenly + * place several pixels worth of space between the bottom of the div and the + * bottom of the viewport. Uncomment this CSS property to fix this. + * Note: with some over-large content, this property might cause scrollbars + * to appear on the #page-wrapper div. + */ +/* +#page-wrapper { + overflow-y: hidden; +} +*/ diff --git a/css/layout-liquid-rtl.css b/css/layout-liquid-rtl.css new file mode 100755 index 0000000..c3aed02 --- /dev/null +++ b/css/layout-liquid-rtl.css @@ -0,0 +1,68 @@ +/** + * @file + * RTL companion for the layout-liquid.css file. + */ + + +/* + * Content + */ +#content { + float: right; + margin-left: -100%; /* Negative value of #content's width + right margin. */ + margin-right: 0; +} + +.sidebar-first #content .section { + padding-left: 0; + padding-right: 200px; /* The width + right margin of .region-sidebar-first. */ +} + +.sidebar-second #content .section { + padding-left: 200px; /* The width + left margin of .region-sidebar-second. */ + padding-right: 0; +} + +/* + * Navigation + */ +#navigation { + float: right; + margin-left: -100%; /* Negative value of #navigation's width + right margin. */ + margin-right: 0; +} + +#navigation ul /* Primary and secondary links */ { + text-align: right; +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: right; + padding: 0 0 0 10px; +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: right; + margin-left: -200px; /* Negative value of .region-sidebar-first's width + right margin. */ + margin-right: 0; +} + +.region-sidebar-first .section { + margin: 0 0 0 20px; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: left; + margin-left: 0; + margin-right: -200px; /* Negative value of .region-sidebar-second's width + left margin. */ +} + +.region-sidebar-second .section { + margin: 0 20px 0 0; +} diff --git a/css/layout-liquid.css b/css/layout-liquid.css new file mode 100755 index 0000000..e5aefad --- /dev/null +++ b/css/layout-liquid.css @@ -0,0 +1,202 @@ +/** + * @file + * Layout Styling (DIV Positioning) + * + * Define CSS classes to create a table-free, 3-column, 2-column, or single + * column layout depending on whether blocks are enabled in the left or right + * columns. + * + * This layout is based on the Zen Columns layout method. + * http://drupal.org/node/201428 + * + * Only CSS that affects the layout (positioning) of major elements should be + * listed here. Such as: + * display, position, float, clear, width, height, min-width, min-height + * margin, border, padding, overflow + */ + + +/* + * Body + */ +body { +} + +#page-wrapper, +.region-page-closure { + min-width: 960px; /* Don't allow the browser to make the site unreadable. */ +} + +#page { +} + +/* + * Header + */ +#header { +} + +#header .section { +} + +#search-box { +} + +.region-header { + clear: both; /* Clear the logo */ +} + +/* + * Main (container for everything else) + */ +#main-wrapper { + position: relative; +} + +#main { +} + +/* + * Content + */ +#content { + float: left; /* LTR */ + width: 100%; + margin-left: 0; /* LTR */ + margin-right: -100%; /* LTR */ /* Negative value of #content's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #content .section. */ +} + +#content .section, +.no-sidebars #content .section { + margin: 0; + padding: 0; +} + +.sidebar-first #content .section { + padding-left: 200px; /* LTR */ /* The width + left margin of .region-sidebar-first. */ + padding-right: 0; /* LTR */ +} + +.sidebar-second #content .section { + padding-left: 0; /* LTR */ + padding-right: 200px; /* LTR */ /* The width + right margin of .region-sidebar-second. */ +} + +.two-sidebars #content .section { + padding-left: 200px; /* The width + left margin of .region-sidebar-first. */ + padding-right: 200px; /* The width + right margin of .region-sidebar-second. */ +} + +/* + * Navigation + */ +#navigation { + float: left; /* LTR */ + width: 100%; + margin-left: 0; /* LTR */ + margin-right: -100%; /* LTR */ /* Negative value of #navigation's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #navigation .section. */ + height: 2.3em; /* The navigation can have any arbritrary height. We picked one + that is the line-height plus 1em: 1.3 + 1 = 2.3 + Set this to the same value as the margin-top below. */ +} + +.with-navigation #content, +.with-navigation .region-sidebar-first, +.with-navigation .region-sidebar-second { + margin-top: 2.3em; /* Set this to the same value as the navigation height above. */ +} + +#navigation .section { +} + +#navigation ul /* Primary and secondary links */ { + margin: 0; + padding: 0; + text-align: left; /* LTR */ +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: left; /* LTR */ + padding: 0 10px 0 0; /* LTR */ +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: left; /* LTR */ + width: 200px; + margin-left: 0; /* LTR */ + margin-right: -200px; /* LTR */ /* Negative value of .region-sidebar-first's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-first .section. */ +} + +.region-sidebar-first .section { + margin: 0 20px 0 0; /* LTR */ + padding: 0; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: right; /* LTR */ + width: 200px; + margin-left: -200px; /* LTR */ /* Negative value of .region-sidebar-second's width + right margin. */ + margin-right: 0; /* LTR */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-second .section. */ +} + +.region-sidebar-second .section { + margin: 0 0 0 20px; /* LTR */ + padding: 0; +} + +/* + * Footer + */ +#footer { +} + +#footer .section { +} + +/* + * Closure + */ +.region-page-closure /* See also the #page-wrapper declaration above that this div shares. */ { +} + +/* + * Prevent overflowing content + */ +#header, +#content, +#navigation, +.region-sidebar-first, +.region-sidebar-second, +#footer, +.region-page-closure { + overflow: visible; + word-wrap: break-word; /* A very nice CSS3 property */ +} + +#navigation { + overflow: hidden; /* May need to be removed if using a dynamic drop-down menu */ +} + +/* + * If a div.clearfix doesn't have any content after it and its bottom edge + * touches the bottom of the viewport, Firefox and Safari will mistakenly + * place several pixels worth of space between the bottom of the div and the + * bottom of the viewport. Uncomment this CSS property to fix this. + * Note: with some over-large content, this property might cause scrollbars + * to appear on the #page-wrapper div. + */ +/* +#page-wrapper { + overflow-y: hidden; +} +*/ diff --git a/css/messages-rtl.css b/css/messages-rtl.css new file mode 100755 index 0000000..681f838 --- /dev/null +++ b/css/messages-rtl.css @@ -0,0 +1,13 @@ +/** + * @file + * RTL companion for the messages.css file. + */ + + +div.messages, +div.status, +div.warning, +div.error /* Important messages (status, warning, and error) for the user */ { + padding: 5px 35px 5px 5px; + background-position: 99.5% 5px; +} diff --git a/css/messages.css b/css/messages.css new file mode 100755 index 0000000..ed47ee0 --- /dev/null +++ b/css/messages.css @@ -0,0 +1,53 @@ +/** + * @file + * Message Styling + * + * Sensible styling for Drupal's error/warning/status messages. + */ + + +div.messages, +div.status, +div.warning, +div.error /* Important messages (status, warning, and error) for the user */ { + min-height: 21px; + margin: 0 1em 5px 1em; + border: 2px solid #ff7; + padding: 5px 5px 5px 35px; /* LTR */ + color: #000; + background-color: #ffc; + background-image: url(../images/messages-status.png); + background-repeat: no-repeat; + background-position: 5px 5px; /* LTR */ +} + +div.status /* Normal priority messages */ { +} + +div.warning /* Medium priority messages */ { + border-color: #fc0; + background-image: url(../images/messages-warning.png); +} + +div.warning, +tr.warning { + color: #000; /* Drupal core uses #220 */ + background-color: #ffc; +} + +div.error /* High priority messages. See also the .error declaration in pages.css. */ { + /* border: 1px solid #d77; */ /* Drupal core uses: 1px solid #d77 */ + border-color: #c00; + background-image: url(../images/messages-error.png); +} + +div.error, +tr.error { + color: #900; /* Drupal core uses #200 */ + background-color: #fee; +} + +div.messages ul { + margin-top: 0; + margin-bottom: 0; +} diff --git a/css/mytheme-fixed-rtl.css b/css/mytheme-fixed-rtl.css new file mode 100755 index 0000000..6be9693 --- /dev/null +++ b/css/mytheme-fixed-rtl.css @@ -0,0 +1,243 @@ + + +/* html-reset-rtl.css */ + +/** + * @file + * RTL companion for the html-reset.css file. + */ + + +/* + * Lists + * + * We need to standardize the list item indentation. + */ +ul, +ol { + padding-left: 0; + padding-right: 2em; +} + +.block ul, +.item-list ul /* Drupal overrides */ { + padding: 0 2em 0 0; +} + +dd { + margin: 0 2em 0 0; +} + +/* + * Tables + * + * Drupal provides table styling which is only useful for its admin section + * forms, so we override this default CSS. (We set it back in forms.css.) + */ +th, +thead th, +tbody th { + text-align: right; +} + +/* layout-fixed-rtl.css */ + +/** + * @file + * RTL companion for the layout-fixed.css file. + */ + + +/* + * Content + */ +#content, +.no-sidebars #content { + float: right; + margin-left: -960px; /* Negative value of #content's width + right margin. */ + margin-right: 0; +} + +.sidebar-first #content { + margin-left: -960px; /* Negative value of #content's width + right margin. */ + margin-right: 200px; /* The width of .region-sidebar-first. */ +} + +.sidebar-second #content { + margin-left: -760px; /* Negative value of #content's width + right margin. */ + margin-right: 0; +} + +.two-sidebars #content { + margin-left: -760px; /* Negative value of #content's width + right margin. */ + margin-right: 200px; /* The width of .region-sidebar-first */ +} + +/* + * Navigation + */ +#navigation { + float: right; + margin-left: -100%; /* Negative value of #navigation's width + right margin. */ + margin-right: 0; +} + +#navigation ul /* Primary and secondary links */ { + text-align: right; +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: right; + padding: 0 0 0 10px; +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: right; + margin-left: -200px; /* Negative value of .region-sidebar-first's width + right margin. */ + margin-right: 0; +} + +.region-sidebar-first .section { + margin: 0 0 0 20px; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: right; + margin-left: -960px; /* Negative value of .region-sidebar-second's width + right margin. */ + margin-right: 760px; /* Width of content + sidebar-first. */ +} + +.region-sidebar-second .section { + margin: 0 20px 0 0; +} + +/* tabs-rtl.css */ + +/** + * @file + * RTL companion for the tabs.css file. + */ + + +ul.primary { + padding: 0 10px 0 0; +} + +ul.primary li { + float: right; +} + +ul.secondary { + padding: 0 5px 0 0; +} + +ul.secondary li { + float: right; + border-left: none; +} + +/* messages-rtl.css */ + +/** + * @file + * RTL companion for the messages.css file. + */ + + +div.messages, +div.status, +div.warning, +div.error /* Important messages (status, warning, and error) for the user */ { + padding: 5px 35px 5px 5px; + background-position: 99.5% 5px; +} + +/* pages-rtl.css */ + +/** + * @file + * RTL companion for the pages.css file. + */ + + +/* + * Header + */ +#logo /* Wrapping link for logo */ { + float: right; +} + +/* + * Content + */ +.more-link /* Aggregator, blog, and forum more link */ { + text-align: left; +} + +/* block-editing-rtl.css */ + +/** + * @file + * RTL companion for the block-editing.css file. + */ + + +div.block.with-block-editing div.edit { + left: 0; + right: auto; +} + +/* forms-rtl.css */ + +/** + * @file + * RTL companion for the forms.css file. + */ + + +/* + * Drupal's default login form block + */ +#user-login-form { + text-align: right; +} + + +/* + * OpenID + * + * The default styling for the OpenID login link seems to assume Garland's + * styling of list items. + */ + +#user-login-form li.openid-link /* The "Log in using OpenID" link. */ { + margin-left: 0; + margin-right: -20px; /* Un-do some of the padding on the ul list. */ +} + +#user-login li.openid-link, +#user-login li.user-link /* The OpenID links on the /user form. */ { + margin-left: 0; + margin-right: -2em; /* Un-do all of the padding on the ul list. */ +} + + +/* + * Drupal admin tables + * + * We overrode these styles in html-elements.css, but restore them for the admin + * section of the site. + */ + +form th, +form thead th { + text-align: right; + padding-left: 1em; + padding-right: 0; +} diff --git a/css/mytheme-fixed.css b/css/mytheme-fixed.css new file mode 100755 index 0000000..29db6c2 --- /dev/null +++ b/css/mytheme-fixed.css @@ -0,0 +1,1615 @@ + + +/* html-reset.css */ + +/** + * @file + * HTML Element Styling + * + * Ok, I admit it. I fooled you. This isn't a "reset" stylesheet. Instead this + * is the place where you should set (not reset) the default styling for all + * HTML elements. + * + * @see http://meiert.com/en/blog/20080419/reset-style-sheets-are-bad/ + * @see http://snook.ca/archives/html_and_css/no_css_reset/ + */ + + +/* + * Fonts + * + * Our font size and line height declarations are based on the following ALA + * article: + * http://www.alistapart.com/articles/howtosizetextincss + * + * All modern browsrs use a 16px default font size. Specifying the font-size + * and line-height in ems (relative to the 16px default font) allows the user + * to resize the font in the browser and produces the most consistent results + * across different browsers. + */ +body { + font-size: 100%; /* Fixes exaggerated text resizing in IE6 and IE7 */ +} + +#skip-link, +#page { + /* + * To use a 12px font size on the page, delete the 14px declarations. + * to use a 14px font size on the page, delete the 12px declarations. + */ + + /* Use a 12px base font size with a 16px line height */ + font-size: 0.75em; /* 16px x .75 = 12px */ + line-height: 1.333em; /* 12px x 1.333 = 16px */ + + /* Use a 14px base font size with a 18px line height */ + font-size: 0.875em; /* 16px x .875 = 14px */ + line-height: 1.286em; /* 14px x 1.286 = 18px */ +} + +body, +caption, +th, +td, +input, +textarea, +select, +option, +legend, +fieldset { + /* The following font family declarations are based on the Microsoft core web + * fonts which are common fonts available on most computer systems. The DejaVu + * fonts are commonly available on Linux systems where the MS fonts are less + * common. Tahoma and Helvetica are also widely available. + * + * A user's web browser will look at the comma-separated list and will + * attempt to use each font in turn until it finds one that is available + * on the user's computer. The final "generic" font (sans-serif or serif) + * hints at what type of font to use if the web browser doesn't find any + * of the fonts in the list. + + font-family: "Times New Roman", Times, Georgia, "DejaVu Serif", serif; + font-family: Times, "Times New Roman", Georgia, "DejaVu Serif", serif; + font-family: Georgia, "Times New Roman", "DejaVu Serif", serif; + + font-family: Verdana, Tahoma, "DejaVu Sans", sans-serif; + font-family: Tahoma, Verdana, "DejaVu Sans", sans-serif; + font-family: Helvetica, Arial, "Nimbus Sans L", sans-serif; + font-family: Arial, Helvetica, "Nimbus Sans L", sans-serif; + + font-family: "Courier New", "DejaVu Sans Mono", monospace; + + */ + + font-family: Verdana, Tahoma, "DejaVu Sans", sans-serif; +} + +pre, +code { + font-size: 1.1em; /* Monospace fonts can be hard to read */ + font-family: "Courier New", "DejaVu Sans Mono", monospace; +} + +/* + * Headings + */ +h1 { + font-size: 2em; + line-height: 1.3em; + margin-top: 0; + margin-bottom: 0.5em; /* 0.5em is equavalent to 1em in the page's base font. + Remember, a margin specified in ems is relative to + the element's font-size, not to the pages' base + font size. So, for example, if we want a 1em margin + (relative to the base font), we have to divide that + length by the element's font-size: + 1em / 2em = 0.5em */ +} + +h2 { + font-size: 1.5em; + line-height: 1.3em; + margin-top: 0.667em; /* Equivalent to 1em in the page's base font: 1 / 1.5 = 0.667em */ + margin-bottom: 0.667em; +} + +h3 { + font-size: 1.3em; + line-height: 1.3em; + margin-top: 0.769em; /* Equivalent to 1em in the page's base font: 1 / 1.3 = 0.769 */ + margin-bottom: 0.769em; +} + +h4, +h5, +h6 { + font-size: 1.1em; + line-height: 1.3em; + margin-top: 0.909em; /* Equivalent to 1em in the page's base font: 1 / 1.1 = 0.909 */ + margin-bottom: 0.909em; +} + +/* + * Block-level elements + */ +p, +ul, +ol, +dl, +pre, +table, +fieldset { + margin: 1em 0; +} + +blockquote { + margin: 1em 2em; +} + +/* + * Lists + * + * We need to standardize the list item indentation. + */ +ul, +ol { + margin-left: 0; + padding-left: 2em; /* LTR */ +} + +.block ul, +.item-list ul /* Drupal overrides */ { + margin: 1em 0; + padding: 0 0 0 2em; /* LTR */ +} + +ul ul, ul ol, +ol ol, ol ul, +.block ul ul, .block ul ol, +.block ol ol, .block ol ul, +.item-list ul ul, .item-list ul ol, +.item-list ol ol, .item-list ol ul { + margin: 0; +} + +li { + margin: 0; + padding: 0; +} + +.item-list ul li /* Drupal override */ { + margin: 0; + padding: 0; + list-style: inherit; +} + +ul.menu li, +li.expanded, +li.collapsed, +li.leaf /* Drupal override */ { + margin: 0; + padding: 0; +} + +ul { list-style-type: disc; } +ul ul { list-style-type: circle; } +ul ul ul { list-style-type: square; } +ul ul ul ul { list-style-type: circle; } +ol { list-style-type: decimal; } +ol ol { list-style-type: lower-alpha; } +ol ol ol { list-style-type: decimal; } + +dt { + margin: 0; + padding: 0; +} + +dd { + margin: 0 0 0 2em; + padding: 0; +} + +/* + * Links + * + * The order of link states are based on Eric Meyer's article: + * http://meyerweb.com/eric/thoughts/2007/06/11/who-ordered-the-link-states + */ +a:link { +} + +a:visited { +} + +a:hover, +a:focus { +} + +a:active { +} + +/* + * Tables + * + * Drupal provides table styling which is only useful for its admin section + * forms, so we override this default CSS. (We set it back in forms.css.) + */ +table { + border-collapse: collapse; + /* width: 100%; */ /* Prevent cramped-looking tables */ +} + +th, +thead th, +tbody th { + text-align: left; /* LTR */ + padding: 0; + border-bottom: none; +} + +tbody { + border-top: none; +} + +/* + * Abbreviations + */ +abbr { + border-bottom: 1px dotted #666; + cursor: help; + white-space: nowrap; +} + +abbr.created /* Date-based "abbreviations" show computer-friendly timestamps which are not human-friendly. */ { + border: none; + cursor: auto; + white-space: normal; +} + +/* + * Images + */ +img { + border: 0; +} + +/* + * Horizontal rules + */ +hr { + height: 1px; + border: 1px solid #666; +} + +/* + * Forms + */ +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 1em 0; + padding: 0.5em; +} + +/* wireframes.css */ + +/** + * @file + * Wireframes Styling + * + * Add wireframes to the basic layout elements. + */ + + +.with-wireframes #header .section, +.with-wireframes #content .section, +.with-wireframes #navigation .section, +.with-wireframes .region-sidebar-first .section, +.with-wireframes .region-sidebar-second .section, +.with-wireframes #footer .section { + margin: 1px; + padding: 2px; + border: 1px solid #ccc; +} + +.with-wireframes .region-page-closure { + margin-top: 1px; + padding: 2px; + border: 1px solid #ccc; +} + +/* layout-fixed.css */ + +/** + * @file + * Layout Styling (DIV Positioning) + * + * Define CSS classes to create a table-free, 3-column, 2-column, or single + * column layout depending on whether blocks are enabled in the left or right + * columns. + * + * This layout is based on the Zen Columns layout method. + * http://drupal.org/node/201428 + * + * Only CSS that affects the layout (positioning) of major elements should be + * listed here. Such as: + * display, position, float, clear, width, height, min-width, min-height + * margin, border, padding, overflow + */ + + +/* + * Body + */ +body { +} + +#page-wrapper, +.region-page-closure { + /* + * If you want to make the page a fixed width and centered in the viewport, + * this is the standards-compliant way to do that. See also the ie6.css file + * for the necessary IE5/IE6quirks hack to center a div. + */ + margin-left: auto; + margin-right: auto; + width: 960px; +} + +#page { +} + +/* + * Header + */ +#header { +} + +#header .section { +} + +#search-box { +} + +.region-header { + clear: both; /* Clear the logo */ +} + +/* + * Main (container for everything else) + */ +#main-wrapper { + position: relative; +} + +#main { +} + +/* + * Content + */ +#content, +.no-sidebars #content { + float: left; /* LTR */ + width: 960px; + margin-left: 0; /* LTR */ + margin-right: -960px; /* LTR */ /* Negative value of #content's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #content .section. */ +} + +.sidebar-first #content { + width: 760px; + margin-left: 200px; /* LTR */ /* The width of .region-sidebar-first. */ + margin-right: -960px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +.sidebar-second #content { + width: 760px; + margin-left: 0; /* LTR */ + margin-right: -760px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +.two-sidebars #content { + width: 560px; + margin-left: 200px; /* LTR */ /* The width of .region-sidebar-first */ + margin-right: -760px; /* LTR */ /* Negative value of #content's width + left margin. */ +} + +#content .section { + margin: 0; + padding: 0; +} + +/* + * Navigation + */ +#navigation { + float: left; /* LTR */ + width: 100%; + margin-left: 0; /* LTR */ + margin-right: -100%; /* LTR */ /* Negative value of #navigation's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to #navigation .section. */ + height: 2.3em; /* The navigation can have any arbritrary height. We picked one + that is the line-height plus 1em: 1.3 + 1 = 2.3 + Set this to the same value as the margin-top below. */ +} + +.with-navigation #content, +.with-navigation .region-sidebar-first, +.with-navigation .region-sidebar-second { + margin-top: 2.3em; /* Set this to the same value as the navigation height above. */ +} + +#navigation .section { +} + +#navigation ul /* Primary and secondary links */ { + margin: 0; + padding: 0; + text-align: left; /* LTR */ +} + +#navigation li /* A simple method to get navigation links to appear in one line. */ { + float: left; /* LTR */ + padding: 0 10px 0 0; /* LTR */ +} + +/* + * First sidebar + */ +.region-sidebar-first { + float: left; /* LTR */ + width: 200px; + margin-left: 0; /* LTR */ + margin-right: -200px; /* LTR */ /* Negative value of .region-sidebar-first's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-first .section. */ +} + +.region-sidebar-first .section { + margin: 0 20px 0 0; /* LTR */ + padding: 0; +} + +/* + * Second sidebar + */ +.region-sidebar-second { + float: left; /* LTR */ + width: 200px; + margin-left: 760px; /* LTR */ /* Width of content + sidebar-first. */ + margin-right: -960px; /* LTR */ /* Negative value of .region-sidebar-second's width + left margin. */ + padding: 0; /* DO NOT CHANGE. Add padding or margin to .region-sidebar-second .section. */ +} + +.region-sidebar-second .section { + margin: 0 0 0 20px; /* LTR */ + padding: 0; +} + +/* + * Footer + */ +#footer { +} + +#footer .section { +} + +/* + * Closure + */ +.region-page-closure /* See also the #page-wrapper declaration above that this div shares. */ { +} + +/* + * Prevent overflowing content + */ +#header, +#content, +#navigation, +.region-sidebar-first, +.region-sidebar-second, +#footer, +.region-page-closure { + overflow: visible; + word-wrap: break-word; /* A very nice CSS3 property */ +} + +#navigation { + overflow: hidden; /* May need to be removed if using a dynamic drop-down menu */ +} + +/* + * If a div.clearfix doesn't have any content after it and its bottom edge + * touches the bottom of the viewport, Firefox and Safari will mistakenly + * place several pixels worth of space between the bottom of the div and the + * bottom of the viewport. Uncomment this CSS property to fix this. + * Note: with some over-large content, this property might cause scrollbars + * to appear on the #page-wrapper div. + */ +/* +#page-wrapper { + overflow-y: hidden; +} +*/ + +/* page-backgrounds.css */ + +/** + * @file + * Page Background Styling + * + * The default layout method of Zen doesn't give themers equal-height columns. + * However, equal-height columns are difficult to achieve and totally + * unnecessary. Instead, use the Faux Columns method described in the following + * ALA article: + * http://www.alistapart.com/articles/fauxcolumns/ + */ + + +body { +} + +#page-wrapper { +} + +#page { +} + +#header { +} + +#header .section { +} + +#main-wrapper { +} + +#main { +} + +#footer { +} + +#footer .section { +} + +/* tabs.css */ + +/** + * @file + * Tabs Styling + * + * Adds styles for the primary and secondary tabs. + * + * Compare this with default CSS found in the system module's stylesheet (a copy + * of which is in drupal6-reference.css, line 510.) + */ + + +div.tabs { + margin: 0 0 5px 0; +} + +ul.primary { + margin: 0; + padding: 0 0 0 10px; /* LTR */ + border-width: 0; + list-style: none; + white-space: nowrap; + line-height: normal; + background: url(../images/tab-bar.png) repeat-x left bottom; +} + +ul.primary li { + float: left; /* LTR */ + margin: 0; + padding: 0; +} + +ul.primary li a { + display: block; + height: 24px; + margin: 0; + padding: 0 0 0 5px; /* width of tab-left.png */ + border-width: 0; + font-weight: bold; + text-decoration: none; + color: #777; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left -38px; +} + +ul.primary li a .tab { + display: block; + height: 20px; /* 24px (parent) - 4px (padding) */ + margin: 0; + padding: 4px 13px 0 6px; + border-width: 0; + line-height: 20px; + background: url(../images/tab-right.png) no-repeat right -38px; +} + +ul.primary li a:hover, +ul.primary li a:focus { + border-width: 0; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left -76px; +} + +ul.primary li a:hover .tab, +ul.primary li a:focus .tab { + background: url(../images/tab-right.png) no-repeat right -76px; +} + +ul.primary li.active a, +ul.primary li.active a:hover, +ul.primary li.active a:focus { + border-width: 0; + color: #000; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left 0; +} + +ul.primary li.active a .tab, +ul.primary li.active a:hover .tab, +ul.primary li.active a:focus .tab { + background: url(../images/tab-right.png) no-repeat right 0; +} + +ul.secondary { + margin: 0; + padding: 0 0 0 5px; /* LTR */ + border-bottom: 1px solid #c0c0c0; + list-style: none; + white-space: nowrap; + background: url(../images/tab-secondary-bg.png) repeat-x left bottom; +} + +ul.secondary li { + float: left; /* LTR */ + margin: 0 5px 0 0; + padding: 5px 0; + border-right: none; /* LTR */ +} + +ul.secondary a { + display: block; + height: 24px; + margin: 0; + padding: 0; + border: 1px solid #c0c0c0; + text-decoration: none; + color: #777; + background: url(../images/tab-secondary.png) repeat-x left -56px; +} + +ul.secondary a .tab { + display: block; + height: 18px; /* 24px (parent) - 6px (padding) */ + margin: 0; + padding: 3px 8px; + line-height: 18px; +} + +ul.secondary a:hover, +ul.secondary a:focus { + background: url(../images/tab-secondary.png) repeat-x left bottom; +} + +ul.secondary a.active, +ul.secondary a.active:hover, +ul.secondary a.active:focus { + border: 1px solid #c0c0c0; + color: #000; + background: url(../images/tab-secondary.png) repeat-x left top; +} + +/* messages.css */ + +/** + * @file + * Message Styling + * + * Sensible styling for Drupal's error/warning/status messages. + */ + + +div.messages, +div.status, +div.warning, +div.error /* Important messages (status, warning, and error) for the user */ { + min-height: 21px; + margin: 0 1em 5px 1em; + border: 2px solid #ff7; + padding: 5px 5px 5px 35px; /* LTR */ + color: #000; + background-color: #ffc; + background-image: url(../images/messages-status.png); + background-repeat: no-repeat; + background-position: 5px 5px; /* LTR */ +} + +div.status /* Normal priority messages */ { +} + +div.warning /* Medium priority messages */ { + border-color: #fc0; + background-image: url(../images/messages-warning.png); +} + +div.warning, +tr.warning { + color: #000; /* Drupal core uses #220 */ + background-color: #ffc; +} + +div.error /* High priority messages. See also the .error declaration in pages.css. */ { + /* border: 1px solid #d77; */ /* Drupal core uses: 1px solid #d77 */ + border-color: #c00; + background-image: url(../images/messages-error.png); +} + +div.error, +tr.error { + color: #900; /* Drupal core uses #200 */ + background-color: #fee; +} + +div.messages ul { + margin-top: 0; + margin-bottom: 0; +} + +/* pages.css */ + +/** + * @file + * Page Styling + * + * Style the markup found in page.tpl.php. Also includes some styling of + * miscellaneous Drupal elements that appear in the $content variable, such as + * ul.links, .pager, .more-link, etc. + */ + + +/* + * Body + */ +body { + margin: 0; + padding: 0; +} + +#page-wrapper { +} + +#page { +} + +/* + * The skip navigation link will be completely hidden until a user tabs to the + * link. See http://www.webaim.org/techniques/skipnav/ + */ +#skip-link a, +#skip-link a:visited { + position: absolute; + display: block; + left: 0; + top: -500px; + width: 1px; + height: 1px; + overflow: hidden; + text-align: center; + background-color: #666; + color: #fff; +} + +#skip-link a:hover, +#skip-link a:active, +#skip-link a:focus { + position: static; + width: 100%; + height: auto; + padding: 2px 0 3px 0; +} + +/* + * Header + */ +#header { +} + +#header .section { +} + +#logo /* Wrapping link for logo */ { + float: left; /* LTR */ + margin: 0; + padding: 0; +} + +#logo img { + vertical-align: bottom; +} + +#name-and-slogan /* Wrapper for website name and slogan */ { +} + +h1#site-name, +div#site-name /* The name of the website */ { + margin: 0; + font-size: 2em; + line-height: 1.3em; +} + +#site-name a:link, +#site-name a:visited { + color: #000; + text-decoration: none; +} + +#site-name a:hover, +#site-name a:focus { + text-decoration: underline; +} + +#site-slogan /* The slogan (or tagline) of a website */ { +} + +.region-header /* Wrapper for any blocks placed in the header region */ { +} + +/* + * Main (container for everything else) + */ +#main-wrapper { +} + +#main { +} + +/* + * Content + */ +#content { +} + +#content .section { +} + +#mission /* The mission statement of the site (displayed on homepage) */ { +} + +.region-content-top /* Wrapper for any blocks placed in the "content top" region */ { +} + +.breadcrumb /* The path to the current page in the form of a list of links */ { + padding-bottom: 0; /* Undo system.css */ +} + +h1.title, /* The title of the page */ +h2.title, /* Block title or the title of a piece of content when it is given in a list of content */ +h3.title /* Comment title */ { + margin: 0; +} + +tr.even /* Some tables have rows marked even or odd. */ { + /* background-color: #eee; */ /* Drupal core uses a #eee background */ +} + +tr.odd { + /* background-color: #eee; */ /* Drupal core uses a #eee background */ +} + +div.messages /* Important messages (status, warning, and error) for the user. See also the declarations in messages.css. */ { +} + +div.status /* Normal priority messages */ { +} + +div.warning, +tr.warning /* Medium priority messages */ { + /* border: 1px solid #f0c020; */ /* Drupal core uses: 1px solid #f0c020 */ +} + +div.error, +tr.error /* High priority messages. See also the .error declaration below. */ { +} + +.error /* Errors that are separate from div.messages status messages. */ { + /* color: #e55; */ /* Drupal core uses a #e55 background */ +} + +.warning /* Warnings that are separate from div.messages status messages. */ { + /* color: #e09010; */ /* Drupal core uses a #e09010 background */ +} + +div.tabs /* See also the tabs.css file. */ { +} + +.help /* Help text on a page */ { + margin: 1em 0; +} + +.more-help-link /* Link to more help */ { + font-size: 0.85em; + text-align: right; +} + +#content-area /* Wrapper for the actual page content */ { +} + +ul.links /* List of links */ { + margin: 1em 0; + padding: 0; +} + +ul.links.inline { + margin: 0; + display: inline; +} + +ul.links li { + display: inline; + list-style-type: none; + padding: 0 0.5em; +} + +.pager /* A list of page numbers when more than 1 page of content is available */ { + clear: both; + margin: 1em 0; + text-align: center; +} + +.pager a, +.pager strong.pager-current /* Each page number in the pager list */ { + padding: 0.5em; +} + +.feed-icons /* The links to the RSS or Atom feeds for the current list of content */ { + margin: 1em 0; +} + +.more-link /* Aggregator, blog, and forum more link */ { + text-align: right; /* LTR */ +} + +.region-content-bottom /* Wrapper for any blocks placed in the "content bottom" region */ { +} + +/* + * First sidebar (on left in LTR languages, on right in RTL) + * + * Remember to NOT add padding or margin to your .region-sidebar-first + * (see the layout.css file.) + */ +.region-sidebar-first { +} + +.region-sidebar-first .section { +} + +/* + * Second sidebar (on right in LTR languages, on left in RTL) + * + * Remember to NOT add padding or margin to your .region-sidebar-second + * (see the layout.css file.) + */ +.region-sidebar-second { +} + +.region-sidebar-second .section { +} + +/* + * Footer + */ +#footer { +} + +#footer .section { +} + +#footer-message /* Wrapper for the footer message from Drupal's "Site information" + and for any blocks placed in the footer region */ { +} + +.region-footer { +} + +/* + * Closure + */ +.region-page-closure /* Wrapper for any blocks placed in the closure region */ { +} + +/* + * Drupal boxes + * + * Wrapper for Comment form, Comment viewing options, Menu admin, and + * Search results. + */ +.box /* Wrapper for box */ { +} + +.box h2 /* Box title */ { +} + +.box .content /* Box's content wrapper */ { +} + +/* + * Markup free clearing (See: http://www.positioniseverything.net/easyclearing.html ) + */ +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +/** + * Hide elements from all users. + * + * Used for elements which should not be immediately displayed to any user. An + * example would be a collapsible fieldset that will be expanded with a click + * from a user. The effect of this class can be toggled with the jQuery show() + * and hide() functions. + */ +.element-hidden { + display: none; +} + +/** + * Hide elements visually, but keep them available for screen-readers. + * + * Used for information required for screen-reader users to understand and use + * the site where visual display is undesirable. Information provided in this + * manner should be kept concise, to avoid unnecessary burden on the user. Must + * not be used for focusable elements (such as links and form elements) as this + * causes issues for keyboard only or voice recognition users. "!important" is + * used to prevent unintentional overrides. + */ +.element-invisible { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); +} + +/* block-editing.css */ + +/** + * @file + * Zen's rollover edit links for blocks. + */ + + +div.block.with-block-editing { + position: relative; +} + +div.block.with-block-editing div.edit { + display: none; + position: absolute; + right: 0; /* LTR */ + top: 0; + z-index: 40; + border: 1px solid #eee; + padding: 0 2px; + font-size: 0.75em; + background-color: #fff; +} + +div.block.with-block-editing:hover div.edit { + display: block; +} + +/* blocks.css */ + +/** + * @file + * Block Styling + */ + + +.block /* Block wrapper */ { + margin-bottom: 1em; +} + +.block.first /* The first block in the region */ { +} + +.block.last /* The last block in the region */ { +} + +.block.region-odd /* Zebra striping for each block in the region */ { +} + +.block.region-even /* Zebra striping for each block in the region */ { +} + +.block.odd /* Zebra striping independent of each region */ { +} + +.block.even /* Zebra striping independent of each region */ { +} + +.region-count-1 /* Incremental count for each block in the region */ { +} + +.count-1 /* Incremental count independent of each region */ { +} + +.block h2.title /* Block title */ { +} + +.block .content /* Block's content wrapper */ { +} + +#block-aggregator-category-1 /* Block for the latest news items in the first category */ { +} + +#block-aggregator-feed-1 /* Block for the latest news items in the first feed */ { +} + +#block-block-1 /* First administrator-defined block */ { +} + +#block-blog-0 /* "Recent blog posts" block */ { +} + +#block-book-0 /* "Book navigation" block for the current book's table of contents */ { +} + +#block-comment-0 /* "Recent comments" block */ { +} + +#block-forum-0 /* "Active forum topics" block */ { +} + +#block-forum-1 /* "New forum topics" block */ { +} + +#block-menu-primary-links /* "Primary links" block */ { +} + +#block-menu-secondary-links /* "Secondary links" block */ { +} + +#block-node-0 /* "Syndicate" block for primary RSS feed */ { +} + +#block-poll-0 /* "Most recent poll" block */ { +} + +#block-profile-0 /* "Author information" block for the profile of the page's author */ { +} + +#block-search-0 /* "Search form" block */ { +} + +#block-statistics-0 /* "Popular content" block */ { +} + +#block-user-0 /* "User login form" block */ { +} + +#block-user-1 /* "Navigation" block for Drupal navigation menu */ { +} + +#block-user-2 /* "Who's new" block for a list of the newest users */ { +} + +#block-user-3 /* "Who's online" block for a list of the online users */ { +} + +/* navigation.css */ + +/** + * @file + * Navigation Styling + * + * Default menu styling (ul.menu) is defined in system-menus.css. + */ + + +/* + * The active item in a Drupal menu + */ +li a.active { + color: #000; +} + +/* + * Navigation bar + */ +#navigation { +} + +.region-navigation { +} + +/* + * Primary and Secondary menu links + */ +#main-menu { +} + +#secondary-menu { +} + +/* + * Menu blocks + */ +.block-menu { +} + +/* + * "Menu block" blocks. See http://drupal.org/project/menu_block + */ +.block-menu_block { +} + +/* views-styles.css */ + +/** + * @file + * Views Styling + */ + + + +/* nodes.css */ + +/** + * @file + * Node Styling + * + * Style anything that isn't in the $content variable. + */ + + +.node /* Node wrapper */ { +} + +.node-sticky /* A sticky node (displayed before others in a list) */ { +} + +.node-unpublished /* Unpublished nodes */ { + /* background-color: #fff4f4; */ /* Drupal core uses a #fff4f4 background */ +} + +.node-unpublished div.unpublished, +.comment-unpublished div.unpublished /* The word "Unpublished" displayed underneath the content. */ { + height: 0; + overflow: visible; + color: #d8d8d8; + font-size: 75px; + line-height: 1; + font-family: Impact, "Arial Narrow", Helvetica, sans-serif; + font-weight: bold; + text-transform: uppercase; + text-align: center; + word-wrap: break-word; /* A very nice CSS3 property */ +} + +.node-by-viewer /* A node created by the current user */ { +} + +.node-teaser /* A node displayed as teaser */ { +} + +/* All nodes are given a node-type-FOO class that describes the type of + * content that it is. If you create a new content type called + * "my-custom-type", it will receive a "node-type-my-custom-type" class. + */ +.node-type-page /* Page content node */ { +} + +.node-type-story /* Story content node */ { +} + +.node h2.title /* Node title */ { +} + +.marker /* "New" or "Updated" marker for content that is new or updated for the current user */ { + color: #c00; +} + +.node .picture /* The picture of the node author */ { +} + +.node.node-unpublished .picture, +.comment.comment-unpublished .picture { + position: relative; /* Otherwise floated pictures will appear below the "Unpublished" text. */ +} + +.node .meta /* Wrapper for submitted and terms data */ { +} + +.node .submitted /* The "posted by" information */ { +} + +.node .terms /* Node terms (taxonomy) */ { +} + +.node .content /* Node's content wrapper */ { +} + +.node ul.links /* Node links. See also the ul.links declaration in the pages.css. */ { +} + +.preview .node /* Preview of the content before submitting new or updated content */ { + /* background-color: #ffffea; */ /* Drupal core uses a #ffffea background */ +} + +/* comments.css */ + +/** + * @file + * Comment Styling + */ + + +#comments /* Wrapper for the list of comments and its title */ { + margin: 1em 0; +} + +#comments h2.title /* Heading for the list of comments */ { +} + +.comment /* Wrapper for a single comment */ { +} + +.comment-preview /* Preview of the comment before submitting new or updated comment */ { +} + +.comment.new /* A new comment since the user last viewed the page. */ { +} + +.comment.first /* The first comment in the list of comments */ { +} + +.comment.last /* The last comment in the list of comments */ { +} + +.comment.odd /* An odd-numbered comment in the list of comments */ { +} + +.comment.even /* An even-numbered comment in the list of comments */ { +} + +.comment-unpublished /* Unpublished comments */ { + /* background-color: #fff4f4; */ /* Drupal core uses a #fff4f4 background */ +} + +.comment-unpublished div.unpublished /* The word "Unpublished" displayed underneath the content. See also the div.unpublished declaration in the nodes.css. */ { +} + +.comment-by-anonymous /* A comment created by an anonymous user */ { +} + +.comment-by-node-author /* A comment created by the node's author */ { +} + +.comment-by-viewer /* A comment created by the current user */ { +} + +.comment h3.title /* Comment title */ { +} + +.new /* "New" marker for comments that are new for the current user */ { + color: #c00; +} + +.comment .picture /* The picture of the comment author */ { +} + +.comment .submitted /* The "posted by" information */ { +} + +.comment .content /* Comment's content wrapper */ { +} + +.comment .user-signature /* The user's signature */ { +} + +.comment ul.links /* Comment links. See also the ul.links declaration in the pages.css. */ { +} + +.indented /* Nested comments are indented */ { + /* margin-left: 25px; */ /* Drupal core uses a 25px left margin */ +} + +.preview .comment /* Preview of the comment before submitting new or updated comment */ { + /* background-color: #ffffea; */ /* Drupal core uses a #ffffea background */ +} + +/* forms.css */ + +/** + * @file + * Form Styling + */ + + +.form-item, +.form-checkboxes, +.form-radios /* Wrapper for a form element (or group of form elements) and its label */ { + margin: 1em 0; +} + +.form-item input.error, +.form-item textarea.error, +.form-item select.error /* Highlight the form elements that caused a form submission error */ { + border: 2px solid #c00; +} + +.form-item label /* The label for a form element */ { + display: block; + font-weight: bold; +} + +.form-item label.option /* The label for a radio button or checkbox */ { + display: inline; + font-weight: normal; +} + +.form-required /* The part of the label that indicates a required field */ { + color: #c00; +} + +.form-item .description /* The descriptive help text (separate from the label) */ { + font-size: 0.85em; +} + +.form-checkboxes .form-item, +.form-radios .form-item /* Pack groups of checkboxes and radio buttons closer together */ { + margin: 0.4em 0; +} + +.form-submit /* The submit button */ { +} + +.container-inline div, +.container-inline label /* Inline labels and form divs */ { + display: inline; +} + +.tips /* Tips for Drupal's input formats */ { +} + + +/* + * Search (search-theme-form.tpl.php) + */ +#search-box /* Wrapper for the search form */ { +} + +#edit-search-theme-form-1-wrapper label /* Label that says "Search this site:" */ { + display: none; +} + + +/* + * Search (search-block-form.tpl.php) + */ +#search-block-form /* Wrapper for the search form */ { +} + +#edit-search-block-form-1-wrapper label /* Label that says "Search this site:" */ { + display: none; +} + + +/* + * Drupal's default login form block + */ +#user-login-form { + text-align: left; /* LTR */ +} + + +/* + * OpenID + * + * The default styling for the OpenID login link seems to assume Garland's + * styling of list items. + */ + +#user-login-form ul /* OpenID creates a new ul above the login form's links. */ { + margin-bottom: 0; /* Position OpenID's ul next to the rest of the links. */ +} + +#user-login-form li.openid-link /* The "Log in using OpenID" link. */ { + margin-top: 1em; + margin-left: -20px; /* LTR */ /* Un-do some of the padding on the ul list. */ +} + +#user-login-form li.user-link /* The "Cancel OpenID login" link. */ { + margin-top: 1em; +} + +#user-login ul { + margin: 1em 0; +} + +#user-login li.openid-link, +#user-login li.user-link /* The OpenID links on the /user form. */ { + margin-left: -2em; /* LTR */ /* Un-do all of the padding on the ul list. */ +} + + +/* + * Drupal admin tables + * + * We overrode these styles in html-elements.css, but restore them for the admin + * section of the site. + */ + +form tbody { + border-top: 1px solid #ccc; +} + +form th, +form thead th { + text-align: left; /* LTR */ + padding-right: 1em; /* LTR */ + border-bottom: 3px solid #ccc; +} + +form tbody th { + border-bottom: 1px solid #ccc; +} + +/* fields.css */ + +/** + * @file + * Field Styling + */ + + +/* + * Field types + */ + +.field /* Wrapper for any CCK field. */ { +} + +.field-type-datetime /* Always use "datetime" when creating new CCK date fields. "date" and "datestamp" are legacy types. */ { +} + +.field-type-filefield /* Field from filefield module */ { +} + +.field-type-nodereference { +} + +.field-type-number-decimal { +} + +.field-type-number-float { +} + +.field-type-number-integer { +} + +.field-type-text { +} + +.field-type-userreference { +} + + +/* + * Named fields + */ + +.field-field-FIELDNAME /* Underscores in field name are replaced with dashes. */ { +} diff --git a/css/navigation.css b/css/navigation.css new file mode 100755 index 0000000..49d8f72 --- /dev/null +++ b/css/navigation.css @@ -0,0 +1,44 @@ +/** + * @file + * Navigation Styling + * + * Default menu styling (ul.menu) is defined in system-menus.css. + */ + + +/* + * The active item in a Drupal menu + */ +li a.active { + color: #000; +} + +/* + * Navigation bar + */ +#navigation { +} + +.region-navigation { +} + +/* + * Primary and Secondary menu links + */ +#main-menu { +} + +#secondary-menu { +} + +/* + * Menu blocks + */ +.block-menu { +} + +/* + * "Menu block" blocks. See http://drupal.org/project/menu_block + */ +.block-menu_block { +} diff --git a/css/nice-bar.css b/css/nice-bar.css new file mode 100755 index 0000000..d7e74ae --- /dev/null +++ b/css/nice-bar.css @@ -0,0 +1,40 @@ +.nice-bar { + display: none; + width: 100%; + background: #215870; + border-bottom: 3px solid #ffffff; +} +.nice-bar .nice-text { + width: 960px; + margin: 0 auto; + padding: 12px 0; + color: #ffffff; + font-weight: bold; +} +.nice-bar .nice-button { + padding: 2px 5px; + background: #111111; + color: #ffffff; + margin: 0 0 0 10px; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.nice-bar .nice-close { + float: right; + padding: 1px 7px 2px 7px; + background: #111111; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} +.nice-bar .nice-close:hover { + cursor: pointer; +} +.nice-bar span.ext{ + display: none; +} + diff --git a/css/nodes.css b/css/nodes.css new file mode 100755 index 0000000..c1e4929 --- /dev/null +++ b/css/nodes.css @@ -0,0 +1,81 @@ +/** + * @file + * Node Styling + * + * Style anything that isn't in the $content variable. + */ + + +.node /* Node wrapper */ { +} + +.node-sticky /* A sticky node (displayed before others in a list) */ { +} + +.node-unpublished /* Unpublished nodes */ { + /* background-color: #fff4f4; */ /* Drupal core uses a #fff4f4 background */ +} + +.node-unpublished div.unpublished, +.comment-unpublished div.unpublished /* The word "Unpublished" displayed underneath the content. */ { + height: 0; + overflow: visible; + color: #d8d8d8; + font-size: 75px; + line-height: 1; + font-family: Impact, "Arial Narrow", Helvetica, sans-serif; + font-weight: bold; + text-transform: uppercase; + text-align: center; + word-wrap: break-word; /* A very nice CSS3 property */ +} + +.node-by-viewer /* A node created by the current user */ { +} + +.node-teaser /* A node displayed as teaser */ { +} + +/* All nodes are given a node-type-FOO class that describes the type of + * content that it is. If you create a new content type called + * "my-custom-type", it will receive a "node-type-my-custom-type" class. + */ +.node-type-page /* Page content node */ { +} + +.node-type-story /* Story content node */ { +} + +.node h2.title /* Node title */ { +} + +.marker /* "New" or "Updated" marker for content that is new or updated for the current user */ { + color: #c00; +} + +.node .picture /* The picture of the node author */ { +} + +.node.node-unpublished .picture, +.comment.comment-unpublished .picture { + position: relative; /* Otherwise floated pictures will appear below the "Unpublished" text. */ +} + +.node .meta /* Wrapper for submitted and terms data */ { +} + +.node .submitted /* The "posted by" information */ { +} + +.node .terms /* Node terms (taxonomy) */ { +} + +.node .content /* Node's content wrapper */ { +} + +.node ul.links /* Node links. See also the ul.links declaration in the pages.css. */ { +} + +.preview .node /* Preview of the content before submitting new or updated content */ { + /* background-color: #ffffea; */ /* Drupal core uses a #ffffea background */ +} diff --git a/css/page-backgrounds.css b/css/page-backgrounds.css new file mode 100755 index 0000000..5a8559d --- /dev/null +++ b/css/page-backgrounds.css @@ -0,0 +1,38 @@ +/** + * @file + * Page Background Styling + * + * The default layout method of Zen doesn't give themers equal-height columns. + * However, equal-height columns are difficult to achieve and totally + * unnecessary. Instead, use the Faux Columns method described in the following + * ALA article: + * http://www.alistapart.com/articles/fauxcolumns/ + */ + + +body { +} + +#page-wrapper { +} + +#page { +} + +#header { +} + +#header .section { +} + +#main-wrapper { +} + +#main { +} + +#footer { +} + +#footer .section { +} diff --git a/css/pages-rtl.css b/css/pages-rtl.css new file mode 100755 index 0000000..08f35af --- /dev/null +++ b/css/pages-rtl.css @@ -0,0 +1,19 @@ +/** + * @file + * RTL companion for the pages.css file. + */ + + +/* + * Header + */ +#logo /* Wrapping link for logo */ { + float: right; +} + +/* + * Content + */ +.more-link /* Aggregator, blog, and forum more link */ { + text-align: left; +} diff --git a/css/pages.css b/css/pages.css new file mode 100755 index 0000000..3a59538 --- /dev/null +++ b/css/pages.css @@ -0,0 +1,314 @@ +/** + * @file + * Page Styling + * + * Style the markup found in page.tpl.php. Also includes some styling of + * miscellaneous Drupal elements that appear in the $content variable, such as + * ul.links, .pager, .more-link, etc. + */ + + +/* + * Body + */ +body { + margin: 0; + padding: 0; +} + +#page-wrapper { +} + +#page { +} + +/* + * The skip navigation link will be completely hidden until a user tabs to the + * link. See http://www.webaim.org/techniques/skipnav/ + */ +#skip-link a, +#skip-link a:visited { + position: absolute; + display: block; + left: 0; + top: -500px; + width: 1px; + height: 1px; + overflow: hidden; + text-align: center; + background-color: #666; + color: #fff; +} + +#skip-link a:hover, +#skip-link a:active, +#skip-link a:focus { + position: static; + width: 100%; + height: auto; + padding: 2px 0 3px 0; +} + +/* + * Header + */ +#header { +} + +#header .section { +} + +#logo /* Wrapping link for logo */ { + float: left; /* LTR */ + margin: 0; + padding: 0; +} + +#logo img { + vertical-align: bottom; +} + +#name-and-slogan /* Wrapper for website name and slogan */ { +} + +h1#site-name, +div#site-name /* The name of the website */ { + margin: 0; + font-size: 2em; + line-height: 1.3em; +} + +#site-name a:link, +#site-name a:visited { + color: #000; + text-decoration: none; +} + +#site-name a:hover, +#site-name a:focus { + text-decoration: underline; +} + +#site-slogan /* The slogan (or tagline) of a website */ { +} + +.region-header /* Wrapper for any blocks placed in the header region */ { +} + +/* + * Main (container for everything else) + */ +#main-wrapper { +} + +#main { +} + +/* + * Content + */ +#content { +} + +#content .section { +} + +#mission /* The mission statement of the site (displayed on homepage) */ { +} + +.region-content-top /* Wrapper for any blocks placed in the "content top" region */ { +} + +.breadcrumb /* The path to the current page in the form of a list of links */ { + padding-bottom: 0; /* Undo system.css */ +} + +h1.title, /* The title of the page */ +h2.title, /* Block title or the title of a piece of content when it is given in a list of content */ +h3.title /* Comment title */ { + margin: 0; +} + +tr.even /* Some tables have rows marked even or odd. */ { + /* background-color: #eee; */ /* Drupal core uses a #eee background */ +} + +tr.odd { + /* background-color: #eee; */ /* Drupal core uses a #eee background */ +} + +div.messages /* Important messages (status, warning, and error) for the user. See also the declarations in messages.css. */ { +} + +div.status /* Normal priority messages */ { +} + +div.warning, +tr.warning /* Medium priority messages */ { + /* border: 1px solid #f0c020; */ /* Drupal core uses: 1px solid #f0c020 */ +} + +div.error, +tr.error /* High priority messages. See also the .error declaration below. */ { +} + +.error /* Errors that are separate from div.messages status messages. */ { + /* color: #e55; */ /* Drupal core uses a #e55 background */ +} + +.warning /* Warnings that are separate from div.messages status messages. */ { + /* color: #e09010; */ /* Drupal core uses a #e09010 background */ +} + +div.tabs /* See also the tabs.css file. */ { +} + +.help /* Help text on a page */ { + margin: 1em 0; +} + +.more-help-link /* Link to more help */ { + font-size: 0.85em; + text-align: right; +} + +#content-area /* Wrapper for the actual page content */ { +} + +ul.links /* List of links */ { + margin: 1em 0; + padding: 0; +} + +ul.links.inline { + margin: 0; + display: inline; +} + +ul.links li { + display: inline; + list-style-type: none; + padding: 0 0.5em; +} + +.pager /* A list of page numbers when more than 1 page of content is available */ { + clear: both; + margin: 1em 0; + text-align: center; +} + +.pager a, +.pager strong.pager-current /* Each page number in the pager list */ { + padding: 0.5em; +} + +.feed-icons /* The links to the RSS or Atom feeds for the current list of content */ { + margin: 1em 0; +} + +.more-link /* Aggregator, blog, and forum more link */ { + text-align: right; /* LTR */ +} + +.region-content-bottom /* Wrapper for any blocks placed in the "content bottom" region */ { +} + +/* + * First sidebar (on left in LTR languages, on right in RTL) + * + * Remember to NOT add padding or margin to your .region-sidebar-first + * (see the layout.css file.) + */ +.region-sidebar-first { +} + +.region-sidebar-first .section { +} + +/* + * Second sidebar (on right in LTR languages, on left in RTL) + * + * Remember to NOT add padding or margin to your .region-sidebar-second + * (see the layout.css file.) + */ +.region-sidebar-second { +} + +.region-sidebar-second .section { +} + +/* + * Footer + */ +#footer { +} + +#footer .section { +} + +#footer-message /* Wrapper for the footer message from Drupal's "Site information" + and for any blocks placed in the footer region */ { +} + +.region-footer { +} + +/* + * Closure + */ +.region-page-closure /* Wrapper for any blocks placed in the closure region */ { +} + +/* + * Drupal boxes + * + * Wrapper for Comment form, Comment viewing options, Menu admin, and + * Search results. + */ +.box /* Wrapper for box */ { +} + +.box h2 /* Box title */ { +} + +.box .content /* Box's content wrapper */ { +} + +/* + * Markup free clearing (See: http://www.positioniseverything.net/easyclearing.html ) + */ +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +/** + * Hide elements from all users. + * + * Used for elements which should not be immediately displayed to any user. An + * example would be a collapsible fieldset that will be expanded with a click + * from a user. The effect of this class can be toggled with the jQuery show() + * and hide() functions. + */ +.element-hidden { + display: none; +} + +/** + * Hide elements visually, but keep them available for screen-readers. + * + * Used for information required for screen-reader users to understand and use + * the site where visual display is undesirable. Information provided in this + * manner should be kept concise, to avoid unnecessary burden on the user. Must + * not be used for focusable elements (such as links and form elements) as this + * causes issues for keyboard only or voice recognition users. "!important" is + * used to prevent unintentional overrides. + */ +.element-invisible { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); +} diff --git a/css/panels-styles.css b/css/panels-styles.css new file mode 100755 index 0000000..df3475c --- /dev/null +++ b/css/panels-styles.css @@ -0,0 +1,6 @@ +/** + * @file + * Panels Styling + */ + + diff --git a/css/print.css b/css/print.css new file mode 100755 index 0000000..8e8cd30 --- /dev/null +++ b/css/print.css @@ -0,0 +1,73 @@ +/** + * @file + * Print styling + * + * We provide some sane print styling for Drupal using Zen's layout method. + */ + + +/* underline all links */ +a:link, +a:visited { + text-decoration: underline !important; +} + +/* Don't underline header */ +#site-name a:link, +#site-name a:visited { + text-decoration: none !important; +} + +/* CSS2 selector to add visible href after links */ +#content a:link:after, +#content a:visited:after { + content: " (" attr(href) ") "; + font-size: 0.8em; + font-weight: normal; +} + +/* Un-float the content */ +#content, +#content .section { + float: none; + width: 100%; + margin: 0 !important; + padding: 0 !important; +} + +/* Turn off any background colors or images */ +body, +#page-wrapper, +#page, +#main-wrapper, +#main, +#content, +#content .section { + color: #000; + background-color: transparent !important; + background-image: none !important; +} + +/* Hide sidebars and nav elements */ +#skip-link, +#navigation, +.region-sidebar-first, +.region-sidebar-second, +#footer, +.breadcrumb, +div.tabs, +.links, +.taxonomy, +.book-navigation, +.forum-topic-navigation, +.pager, +.feed-icons { + visibility: hidden; + display: none; +} + +/* If you un-comment the "page { overflow-y: hidden; }" ruleset, Firefox clips + the content after the first page. */ +#page-wrapper { + overflow-y: visible; +} diff --git a/css/style (copy).css b/css/style (copy).css new file mode 100755 index 0000000..8e2cdbe --- /dev/null +++ b/css/style (copy).css @@ -0,0 +1,739 @@ +/*#search { + float: right !important; + width: 27% !important; +} +#navigation { + float: left !important; + width: 77% !important; +} +#block-search-0block block-search first last region-odd even region-count-1 count-2 with-block-editing h2.title { + display: none; +} +#navigation { + margin-left: 20%; +} +#navigation li { + border: 1px solid #000; + background-color: #0EC; + padding: 5px 10px 6px 10px; +} +/*#page +{ + background-image:url('/theme/sites/default/files/kiran _ Wix.com.png'); +}*/ +/*body{ + margin: 0px; + font-size: 14px; +} +p{ + font-size: 14px; + line-height: 18px; +}*/ + +/* commaon css */ + +body{ + font-size: 14px; + font-family: 'Open Sans', sans-serif; +} +p{ + font-size: 13px; + line-height: 20px; + color: black; +} +h4{ + font-size: 16px; + font-weight: bold; +} +strong{ + font-weight: bold; +} +ol li,ul li{ + margin: 5px 0; + font-size: 13px; + line-height: 22px; +} + +a{ + font-size: 13px; + color: #800000; + text-decoration: none; +} + +table{ + width: 100%; + width: 680px; +} +td{ + padding: 5px; +} +td a{ + font-size: 12px; +} +th, thead th, tbody th{ + padding: 5px; +} +tr.even{ + background-color: #eee; +} +tr.odd{ + background-color: white; +} +#content .content table{ + width: 680px; +} +select{ + max-width: 660px; +} +/* others */ + +#content .content ul, #content .content ul li{ + padding-left: 10px; + list-style: none; +} +#content .content ul li, #content .content li{ + background: url('../images/li-bg.png') no-repeat; + padding-left: 22px; + background-position: 0 2px; +} +#content .content ol li{ + background: none !important; +} + +.inner{ + width:960px; + margin:auto; +} +#header{ +background-image:url('../images/line.png'); +background-repeat:repeat-x; +height:110px; +} +#navigation h2.element-invisible{ + display:none; +} +#search h2.title{ + display:none; +} +#edit-search-block-form-1-wrapper label{ + display:none; +} +#edit-search-block-form-1-wrapper input{ + width:156px; +} +#main-menu{ + width: 54%; + float: left; + margin-left: 28%; +} +.inner_content{ + width:960px; + margin:auto; + overflow:hidden; + background-color:#FFFFFF; + border:1px solid #000; + border-radius:6px; + margin-top:3px; + padding-bottom:5px; + clear:both; +} +#sidebarfst/*.region.region-sidebar-first.column.sidebar*/ +{ + float:left; + width:230px; + font-size:12px; + margin-top: 25px; + margin-bottom: 5px; + padding-left:15px; + /*box-shadow:13px 9px 22px #88876F;*/ +} + +#block-menu-menu-custom +{ + background-image: url('../images/divider1.png'); + background-position: bottom center; + background-repeat: no-repeat; + margin: 0px; + height: auto; + background-size: 105px 4px; + margin-top:10%; + position:relative; + padding-bottom:8%; +} +#block-menu-menu-fossee +{ + margin-top:10%; +} +#sidebarfstsub +{ + background-image: url('../images/side_b.png'); + border-radius: 4px; + position: relative; + border:1.5px solid #000; +} +#sidebarfstsub li a{ + text-decoration:none; + color:#FFFFFF; +} +.content +{ + /* font: normal normal normal 13px/1.4em 'Open Sans', sans-serif; */ + /*color: #005252;*/ + color:#000; + margin: 0px; + line-height: normal; + letter-spacing: normal; +} +.content p +{ + text-align:justify; +} +#sidsub1{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +/*padding: 28px 0px 208px 52%;*/ +z-index: 2; +background-position: -10px 0; +float: left; +height:30px; +width:50%; +} +#sidsub2{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +/*padding: 0px 0px 148px 48%;*/ +z-index: 2; +background-position: -206px 0px; +float: right; +height:30px; +width:50%; +} + +/*#sidsub1{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 11px 38px 126px 24%; +z-index: 2; +background-position: -48px 88px; +float: left; +} +#sidsub2{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 0px 37px 162px 40%; +z-index: 2; +background-position: -192px 88px; +float: right; +}*/ + +/*.region.region-sidebar-first.column.sidebar:before, +.region.region-sidebar-first.column.sidebar:after +{ +z-index: 1; +position: absolute; +content: ""; +bottom: 15px; +left: 10px; +width: 50%; +top: 80%; +max-width: 300px; +-webkit-box-shadow: 0 15px 10px #777; +-moz-box-shadow: 0 15px 10px #777; +box-shadow: 0 15px 10px #777; +-webkit-transform: rotate(-3deg); +-moz-transform: rotate(-3deg); +-o-transform: rotate(-3deg); +-ms-transform: rotate(-3deg); +transform: rotate(-3deg); +} +.region.region-sidebar-first.column.sidebar:after +{ +-webkit-transform: rotate(3deg); +-moz-transform: rotate(3deg); +-o-transform: rotate(3deg); +-ms-transform: rotate(3deg); +transform: rotate(3deg); +right: 10px; +left: auto; +}*/ + +.region.region-sidebar-second.column.sidebar{ + float:left; + width:19%; +} +#content.column{ + float: right; + width: 680px; + padding-right: 15px; +} +.inner_footer +{ + width:960px; + margin:auto; + height:40px; +} +#footer{ +background-image:url('../images/footer_line2.png'); +margin-top:-0.85%; +} +#main-menu.links.clearfix li a{ +color:#FFFFFF; +text-decoration:none; +} +#main-wrapper{ +background-image:url('../images/content_line.png'); +background-repeat:repeat; +height:auto; +/*padding-bottom:20px;*/ +z-index:3; +} +h1{ +font-size:1.5em; +} +a.block-config span +{ + display:none; +} +a.block-edit-menu span +{ + display:none; +} +a.block-edit span +{ + display:none; +} + +#login{ + float:right; + margin-top:1%; + background-image:url('../images/login-button3.png'); + height:27px; + border-radius: 6px; + color: #FFFFFF; + background-repeat:repeat-y; + padding:4px 10px 0px 14px; + line-height: 20px; +} +#login1{ + float:right; + margin-top:1%; + height:27px; + color: #FFFFFF; + padding:2px 18px 2px 17px; +} + +#login:hover{ + float:right; + margin-top:1%; + background-image:url('../images/login-button3.png') no-repeat; + height:27px; + border-radius: 6px; + color: #FFFFFF; + background-repeat:repeat-y; + padding:4px 10px 0px 14px; + background-position: 0 -30px; + margin-left:1%; +} +span#loginb a:active{ + /*color:#B8EBF8;*/ + color:#000; +} +span#loginb a:hover{ + /*color:#B8EBF8;*/ + color:#000; +} + +span#registerb a:active{ + /*color:#B8EBF8;*/ + color:#000; +} +span#registerb a:hover{ + /*color:#B8EBF8;*/ + color:#000; +} + +/*#logout_c1:hover{ +background-image:url('../images/login-button3.png'); +height:30px; +border-radius: 6px; +color: #FFFFFF; +background-repeat:repeat-y; +padding:2px 18px 6px 17px; +background-position:50% 90%; +-ms-background-position:50% 90%; +}*/ + +#login_c a +{ + text-decoration:none; + color:#FFFFFF; + font-size:12px; + padding: 0 4px; +} +#login_c a:hover +{ + color:#FFFFFF; + text-decoration:none; + font-size:12px; +} +#logout_c1 a strong +{ + text-decoration:none; + color:#000; + font-size:14px; +} +#logout_c1 a strong:hover +{ + color:#FFFFFF; + text-decoration:none; + font-size:14px; +} +#search-block-form input#edit-submit-1,#search-block-form #edit-submit-3,#search-block-form #edit-submit-2,#search-block-form #edit-submit{ +text-indent: -9999px; +height: 19px; +background-image: url('../images/search-btn.png'); +width: 20px; +text-shadow: 1px 1px 0px #ffffff; +/*box-shadow: inset 0px 0px 0px 0px #ffffff;*/ +background-color: #FFFFFF; +border: 0px; +margin-left: -25px; +} + +#search-block-form #edit-search-block-form-1-wrapper +{ + /*margin-left:90px;*/ +} +.orbit-wrapper div.slider-nav span { +width: 27px !important; +height: 48px !important; +margin-top:-34px !important; +} +.orbit-wrapper span.left { +/*background-size: 53px 71px !important;*/ +background-size: 66px 48px !important; +} + +.orbit-wrapper span.right { +/*background-size: 53px 71px !important;*/ +background-size: 66px 48px !important; +} +#block-tblock-0{ +width: 43%; +margin-top: 6px; +float:right; +} +#block-tblock1-0{ +width: 53%; +margin-top: 6px; +float:left; +} +#node-12 .title{ +text-align:center; +} +#node-14 .title{ +text-align:center; +} + +#node-12 .node_read_more.first.last.first.last a +{ + /*margin-left:190px;*/ + float:right; + color:#000000; +} +#node-14 .node_read_more.first.last a +{ + /*margin-left:262px;*/ + float:right; + color:#000000; +} + +body.front #content h1.title +{ + visibility:hidden; +} +#node-14 .title a,#node-12 .title a,#block-views-event-block_1 h2.title,#block-views-Story-block_1 h2.title +{ + text-decoration:none; + font-weight:bold; + color:#000; +} +#block-views-event-block_1 .views_view.view.view-event.view-id-event.view-display-id-block_1.view-dom-id-1 +{ + width:54%; +} +/*#block-views-event-block_1 h2.title +{ + margin-left:168px; +}*/ +#block-views-event-block_1 +{ + float:left; + width:53%; + +} +/*.content label,.region.region-content-bottom .content,#content-area .content li a:link,.node_read_more.first.last a,.content p a:link +{ + color:#ae8a8e; +}*/ +.region.region-content-bottom +{ + padding-right:9px; +} +#content_down { +width: 1000px; +margin: auto; +height: 18px; +} +#content_dn1 +{ + background-image:url('../images/shadow.png'); + background-repeat: no-repeat; + padding: 17px 0px 0px 17%; + z-index: 2; + background-position: -5px 0px; + float: left; +} + +#content_dn2 { +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 17px 0px 0px 14%; +z-index: 2; +background-position: -186px -0.3px; +float:right; +} +/* Main Menu CSS */ +#main-menu ul { + padding-left: 0px; + margin: 0; + display: block; + position: relative; + border-radius: 7px; +/* background: lightslategrey;*/ + color: white; + height: 30px; +} +#main-menu ul li { + height: 30px; + position: relative; + float: left; + margin: 0; + list-style: none; + padding: 0 3px; +} +#main-menu ul li a { + color: white; + display: block; + padding: 3px 15px; + background-color:transparent; + font-family: Helvetica, Arial, sans-serif; + text-decoration: none; + color: #ffffff; + /* Effects */ + + -webkit-transition: all .8s; + -moz-transition: all .8s; + -ms-transition: all .8s; + -o-transition: all .8s; + transition: all .8s; +} +#main-menu ul li a:active { + margin: 0; +/* background: #c1defe;*/ + background-color:transparent; + color: #000000; + margin-top: 3px; + padding-top: 4px; + padding-bottom: 4px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + -o-border-radius: 10px; + border-radius: 10px; +} +#main-menu ul li ul { + display: none; + width: 180px; + z-index: 1125; + border-radius: 10px; +} +#main-menu ul li ul li { + width: 192px; + +} +#main-menu ul li:hover a { + margin: 0; + color: #EA9C4D; + background-color:transparent; + margin-top: 3px; + padding-top: 4px; + padding-bottom: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; +} +#main-menu ul li:hover { + position: relative; +} +#main-menu ul li:hover ul { + display: block; + position: absolute; + left: 0px; + z-index: 1000px; + border-radius: 10px; + height: auto; + overflow: hidden; +} +#main-menu ul li:hover ul a { + margin: 0; +/*background: lightslategrey;*/ + background-image:url('../images/line.png'); + color: #fff; + font-size: 11px; + padding-top: 4px; + padding-bottom: 4px; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; +} +#main-menu ul li:hover ul li { + /*padding-top: 4px;*/ + /*background: lightslategrey;*/ + background-image:url('../images/line.png'); + height: 23px; + padding-bottom:3px; +} +#main-menu ul li:hover ul li:hover a { + margin: 0; + /*background: #c1defe;*/ + background-image:url('../images/line.png'); + color: #000000; + padding-top: 4px; + padding-bottom: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; +} + +#block-user-1 h2.title +{ + padding-left:12%; +} +#block-menu-menu-horizontal h2.title,#block-user-1 h2.title +{ + display:none; +} +#block-menu-menu-fossee h2.title +{ + text-align:center; + color:rgb(255, 203, 5); + font-weight:bold; +} +/*Front page teaser block */ +#teaser_block_main +{ + width:100%; + height:auto; +} + +#teaser_block_left h2,#teaser_block_right h2 +{ + text-align:center; +} +#teaser_block_left +{ + width:46%; + float:left; + text-align:justify; +} +#teaser_block_right +{ + width:47%; + float:right; + text-align:justify; +} +#teaser_block_right a,#teaser_block_left a +{ + padding-left:71%; + text-decoration:none; +} +/* Feedback Form*/ +#fb_heading +{ + width:100%; + border:1px solid #000; + border-radius:5px; + background-color:#DCDCDC; +} +#fb_heading h2 +{ + padding-bottom: 2%; + padding-top: 2%; + padding-left: 2%; + font-weight:bold; + color:#000; +} +#fb_description +{ + text-align:justify; +} +#fbhead +{ + color:#000; + font-size: 21px; + font-weight: bold; +} +#fb_mainlink +{ + width:100%; +} +#fb_leftlink +{ + width:60%; + float:left; + border:1px solid #000; + border-radius:5px; + background-color:#DCDCDC; + padding-bottom: 2%; + padding-top: 2%; + padding-left: 2%; + line-height:10px; + color:#000; +} +#fb_notify +{ + font-size:10px; +} +#edit-submitted-used-scilab-1-wrapper,#edit-submitted-used-scilab-2-wrapper,#edit-submitted-lab-use-scilab-1-wrapper,#edit-submitted-lab-use-scilab-2-wrapper,#edit-submitted-classroom-instruction-1-wrapper,#edit-submitted-classroom-instruction-2-wrapper,#edit-submitted-tbc-objective-1-wrapper,#edit-submitted-tbc-objective-2-wrapper,#edit-submitted-tbc-objective-3-wrapper,#edit-submitted-tbc-teacher-1-wrapper,#edit-submitted-tbc-teacher-2-wrapper,#edit-submitted-tbc-teacher-find-1-wrapper,#edit-submitted-tbc-teacher-find-2-wrapper,#edit-submitted-tbc-teacher-find-3-wrapper,#edit-submitted-tbc-useful-1-wrapper,#edit-submitted-tbc-useful-2-wrapper,#edit-submitted-tbc-recommend-1-wrapper,#edit-submitted-tbc-recommend-2-wrapper,#edit-submitted-tbc-recommend-3-wrapper,#edit-submitted-tbc-recommend-academic-1-wrapper,#edit-submitted-tbc-recommend-academic-2-wrapper,#edit-submitted-tbc-recommend-academic-3-wrapper,#edit-submitted-tbc-improve-1-wrapper,#edit-submitted-tbc-improve-2-wrapper,#edit-submitted-tbc-improve-3-wrapper,#edit-submitted-tbc-participate-1-wrapper,#edit-submitted-tbc-participate-2-wrapper,#edit-submitted-tbc-participate-friends-1-wrapper,#edit-submitted-tbc-participate-friends-2-wrapper,#edit-submitted-tbc-procedure-1-wrapper,#edit-submitted-tbc-procedure-2-wrapper +{ + float:left; +} +#webform-component-lab-use-scilab,#webform-component-classroom-instruction,#webform-component-active-participation,#webform-component-rate-org,#webform-component-tbc-teacher-find,#webform-component-tbc-support-teacher,#webform-component-tbc-recommend,#webform-component-tbc-recommend-academic,#webform-component-tbc-improve,#webform-component-tbc-participate,#webform-component-tbc-participate-friends,#webform-component-tbc-procedure,#webform-component-tbc-codes-useful +{ + clear:both; +} +.orbit-caption +{ + text-align:justify; +} + +#slideshow{ + margin-bottom: 10px; +} + +.home-slider{ + border:1px solid #000; + margin-bottom: 10px; +} +hr +{ + height: 1px; + border: 1px solid #522900; +} diff --git a/css/style.css b/css/style.css new file mode 100755 index 0000000..94a85be --- /dev/null +++ b/css/style.css @@ -0,0 +1,723 @@ +/*#search { + float: right !important; + width: 27% !important; +} +#navigation { + float: left !important; + width: 77% !important; +} +#block-search-0block block-search first last region-odd even region-count-1 count-2 with-block-editing h2.title { + display: none; +} +#navigation { + margin-left: 20%; +} +#navigation li { + border: 1px solid #000; + background-color: #0EC; + padding: 5px 10px 6px 10px; +} +/*#page +{ + background-image:url('/theme/sites/default/files/kiran _ Wix.com.png'); +}*/ +/*body{ + margin: 0px; + font-size: 14px; +} +p{ + font-size: 14px; + line-height: 18px; +}*/ + +/* commaon css */ + +body{ + margin: 0px; + font-size: 14px; + font-family: 'Open Sans', sans-serif; +} +p{ + font-size: 13px; + line-height: 20px; + color: black; +} +h4{ + font-size: 16px; + font-weight: bold; +} +strong{ + font-weight: bold; +} +ol li,ul li{ + margin: 5px 0; + font-size: 13px; + line-height: 22px; +} + +a{ + font-size: 13px; + color: #800000; + text-decoration: none; +} + +table{ + width: 100%; + width: 680px; +} +td{ + padding: 5px; +} +td a{ + font-size: 12px; +} +th, thead th, tbody th{ + padding: 5px; +} +tr.even{ + background-color: #eee; +} +tr.odd{ + background-color: white; +} +#content .content table{ + width: 680px; +} +select{ + max-width: 660px; +} +/* others */ + +.container-inline{ + position: relative; +} + +#content .content ul, #content .content ul li{ + padding-left: 10px; + /*list-style: none;*/ +} +#content .content ul +{ + margin-left:10px; +} +#content .content ul li, #content .content li{ + /* background: url('../images/li-bg.png') no-repeat; + padding-left: 22px; + background-position: 0 2px;*/ + +} +#content .content ol li{ + background: none !important; +} + +.inner{ + width:960px; + margin:auto; +} +#header{ +background-image:url('../images/line.png'); +background-repeat:repeat-x; +height:110px; +} +#navigation h2.element-invisible{ + display:none; +} +#search{ + float: right; + margin: -1px 5px 0 0; +} +#search h2.title{ + display:none; +} +#edit-search-block-form-1-wrapper label{ + display:none; +} +#edit-search-block-form-1-wrapper input{ + width:156px; +} + +.inner_content{ + width:960px; + margin:auto; + overflow:hidden; + background-color:#FFFFFF; + border:1px solid #000; + border-radius:6px; + margin-top:3px; + padding-bottom:5px; + clear:both; +} +#sidebarfst/*.region.region-sidebar-first.column.sidebar*/ +{ + float:left; + width:230px; + font-size:12px; + margin-top: 15px; + margin-bottom: 5px; + padding-left:15px; + /*box-shadow:13px 9px 22px #88876F;*/ +} + +#block-menu-menu-custom +{ + background-image: url('../images/divider1.png'); + background-position: bottom center; + background-repeat: no-repeat; + margin: 0px; + height: auto; + background-size: 105px 4px; + margin-top:10%; + position:relative; + padding-bottom:8%; +} +#block-menu-menu-fossee +{ + margin-top:10%; +} +#sidebarfstsub +{ + background-image: url('../images/side_b.png'); + border-radius: 4px; + position: relative; + border:1.5px solid #000; +} +#sidebarfstsub li a{ + text-decoration:none; + color:#FFFFFF; + font-size: 12px; +} +.content +{ + /* font: normal normal normal 13px/1.4em 'Open Sans', sans-serif; */ + /*color: #005252;*/ + color:#000; + margin: 0px; + line-height: normal; + letter-spacing: normal; +} +.content p +{ + text-align:justify; +} +#sidsub1{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +/*padding: 28px 0px 208px 52%;*/ +z-index: 2; +background-position: -10px 0; +float: left; +height:30px; +width:50%; +} +#sidsub2{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +/*padding: 0px 0px 148px 48%;*/ +z-index: 2; +background-position: -206px 0px; +float: right; +height:30px; +width:50%; +} + +/*#sidsub1{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 11px 38px 126px 24%; +z-index: 2; +background-position: -48px 88px; +float: left; +} +#sidsub2{ +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 0px 37px 162px 40%; +z-index: 2; +background-position: -192px 88px; +float: right; +}*/ + +/*.region.region-sidebar-first.column.sidebar:before, +.region.region-sidebar-first.column.sidebar:after +{ +z-index: 1; +position: absolute; +content: ""; +bottom: 15px; +left: 10px; +width: 50%; +top: 80%; +max-width: 300px; +-webkit-box-shadow: 0 15px 10px #777; +-moz-box-shadow: 0 15px 10px #777; +box-shadow: 0 15px 10px #777; +-webkit-transform: rotate(-3deg); +-moz-transform: rotate(-3deg); +-o-transform: rotate(-3deg); +-ms-transform: rotate(-3deg); +transform: rotate(-3deg); +} +.region.region-sidebar-first.column.sidebar:after +{ +-webkit-transform: rotate(3deg); +-moz-transform: rotate(3deg); +-o-transform: rotate(3deg); +-ms-transform: rotate(3deg); +transform: rotate(3deg); +right: 10px; +left: auto; +}*/ + +.region.region-sidebar-second.column.sidebar{ + float:left; + width:19%; +} +#content.column{ + padding-top: 15px; + float: right; + width: 680px; + padding-right: 15px; +} +.inner_footer +{ + width:960px; + margin:auto; + height:40px; +} +#footer{ +background-image:url('../images/footer_line2.png'); +margin-top:-0.85%; +} +#main-menu.links.clearfix li a{ +color:#FFFFFF; +text-decoration:none; +} +#main-wrapper{ +background-image:url('../images/content_line.png'); +background-repeat:repeat; +height:auto; +/*padding-bottom:20px;*/ +z-index:3; +} +h1{ +font-size:1.5em; +padding:5px 0px; +} +a.block-config span +{ + display:none; +} +a.block-edit-menu span +{ + display:none; +} +a.block-edit span +{ + display:none; +} + +#login{ + float:right; + margin-top:1%; + background-image:url('../images/login-button3.png'); + height:27px; + border-radius: 6px; + color: #FFFFFF; + background-repeat:repeat-y; + padding:4px 10px 0px 14px; + line-height: 20px; +} +#login1{ + float:right; + margin-top:1%; + height:27px; + color: #FFFFFF; + padding:2px 18px 2px 17px; +} + +#login:hover{ + float:right; + margin-top:1%; + background-image:url('../images/login-button3.png') no-repeat; + height:27px; + border-radius: 6px; + color: #FFFFFF; + background-repeat:repeat-y; + padding:4px 10px 0px 14px; + background-position: 0 -30px; + margin-left:1%; +} +span#loginb a:active{ + /*color:#B8EBF8;*/ + color:#000; +} +span#loginb a:hover{ + /*color:#B8EBF8;*/ + color:#000; +} + +span#registerb a:active{ + /*color:#B8EBF8;*/ + color:#000; +} +span#registerb a:hover{ + /*color:#B8EBF8;*/ + color:#000; +} + +/*#logout_c1:hover{ +background-image:url('../images/login-button3.png'); +height:30px; +border-radius: 6px; +color: #FFFFFF; +background-repeat:repeat-y; +padding:2px 18px 6px 17px; +background-position:50% 90%; +-ms-background-position:50% 90%; +}*/ + +#login_c a +{ + text-decoration:none; + color:#FFFFFF; + font-size:12px; + padding: 0 4px; +} +#login_c a:hover +{ + color:#FFFFFF; + text-decoration:none; + font-size:12px; +} +#logout_c1 a strong +{ + text-decoration:none; + color:#000; + font-size:14px; +} +#logout_c1 a strong:hover +{ + color:#FFFFFF; + text-decoration:none; + font-size:14px; +} +#search-block-form input#edit-submit-1,#search-block-form #edit-submit-3,#search-block-form #edit-submit-2,#search-block-form #edit-submit{ +text-indent: -9999px; +height: 19px; +background-image: url('../images/search-btn.png'); +width: 20px; +text-shadow: 1px 1px 0px #ffffff; +/*box-shadow: inset 0px 0px 0px 0px #ffffff;*/ +background-color: #FFFFFF; +border: 0px; +right: 3px; +position: absolute; +top: 4px; + +} + +#search-block-form #edit-search-block-form-1-wrapper +{ + /*margin-left:90px;*/ +} +.orbit-wrapper div.slider-nav span { +width: 27px !important; +height: 48px !important; +margin-top:-34px !important; +} +.orbit-wrapper span.left { +/*background-size: 53px 71px !important;*/ +background-size: 66px 48px !important; +} + +.orbit-wrapper span.right { +/*background-size: 53px 71px !important;*/ +background-size: 66px 48px !important; +} +#block-tblock-0{ +width: 43%; +margin-top: 6px; +float:right; +} +#block-tblock1-0{ +width: 53%; +margin-top: 6px; +float:left; +} +#node-12 .title{ +text-align:center; +} +#node-14 .title{ +text-align:center; +} + +#node-12 .node_read_more.first.last.first.last a +{ + /*margin-left:190px;*/ + float:right; + color:#000000; +} +#node-14 .node_read_more.first.last a +{ + /*margin-left:262px;*/ + float:right; + color:#000000; +} + +body.front #content h1.title +{ + visibility:hidden; +} +#node-14 .title a,#node-12 .title a,#block-views-event-block_1 h2.title,#block-views-Story-block_1 h2.title +{ + text-decoration:none; + font-weight:bold; + color:#000; +} +#block-views-event-block_1 .views_view.view.view-event.view-id-event.view-display-id-block_1.view-dom-id-1 +{ + width:54%; +} +/*#block-views-event-block_1 h2.title +{ + margin-left:168px; +}*/ +#block-views-event-block_1 +{ + float:left; + width:53%; + +} +/*.content label,.region.region-content-bottom .content,#content-area .content li a:link,.node_read_more.first.last a,.content p a:link +{ + color:#ae8a8e; +}*/ +.region.region-content-bottom +{ + padding-right:9px; +} +#content_down { +width: 1000px; +margin: auto; +height: 18px; +} +#content_dn1 +{ + background-image:url('../images/shadow.png'); + background-repeat: no-repeat; + padding: 17px 0px 0px 17%; + z-index: 2; + background-position: -5px 0px; + float: left; +} + +#content_dn2 { +background-image: url('../images/shadow.png'); +background-repeat: no-repeat; +padding: 17px 0px 0px 14%; +z-index: 2; +background-position: -186px -0.3px; +float:right; +} +/* manu bar */ + +#main-menu li{ + list-style: none !important; +} +#main-menu +{ + color:#FFF; + position:relative; + font-family:Arial, Helvetica, sans-serif; + font-size:13px; + text-align: center; + margin-left: 250px; + float: left; +} +#main-menu ul +{ + padding:0px; + margin:0; + list-style:none; + display: inline-block; + margin-top: 1px; +} +#main-menu ul li +{ + padding:0; + margin:0; + float:left; +} +#main-menu ul li a +{ + color:#FFF; + display:block; + text-decoration:none; + padding:0 20px; + padding-bottom: 7px; +} +#main-menu ul li a:hover +{ + color:#EA9C4D; +} +#main-menu ul li ul +{ + display: none; + width: auto; + position:absolute; + padding:0px; + margin:0px; + background: #9C6833; + z-index: 9999; +} +#main-menu ul li.hover ul +{ + display: block; + position: absolute; +} +#main-menu ul li.hover li +{ + float: none; + list-style:none; + margin:0px; + padding: 2px 0; +} +#main-menu ul li.hover li a +{ + padding:0 5px 0 10px; + display:block; + width:180px; +} + + +/* menu bar end */ + + + +#block-user-1 h2.title +{ + padding-left:12%; +} +#block-menu-menu-horizontal h2.title,#block-user-1 h2.title +{ + display:none; +} +#block-menu-menu-fossee h2.title +{ + text-align:center; + color:rgb(255, 203, 5); + font-weight:bold; +} +/*Front page teaser block */ +#teaser_block_main +{ + width:100%; + height:auto; +} + +#teaser_block_left h2,#teaser_block_right h2 +{ + text-align:center; +} +#teaser_block_left +{ + width:46%; + float:left; + text-align:justify; +} +#teaser_block_right +{ + width:47%; + float:right; + text-align:justify; +} +a.read_more +{ + float:right; +} +/* Feedback Form*/ +#fb_heading +{ + width:100%; + border:1px solid #000; + border-radius:5px; + background-color:#DCDCDC; +} +#fb_heading h2 +{ + padding-bottom: 2%; + padding-top: 2%; + padding-left: 2%; + font-weight:bold; + color:#000; +} +#fb_description +{ + text-align:justify; +} +#fbhead +{ + color:#000; + font-size: 21px; + font-weight: bold; +} +#fb_mainlink +{ + width:100%; +} +#fb_leftlink +{ + width:60%; + float:left; + border:1px solid #000; + border-radius:5px; + background-color:#DCDCDC; + padding-bottom: 2%; + padding-top: 2%; + padding-left: 2%; + line-height:10px; + color:#000; +} +#fb_notify +{ + font-size:10px; +} +#edit-submitted-used-scilab-1-wrapper,#edit-submitted-used-scilab-2-wrapper,#edit-submitted-lab-use-scilab-1-wrapper,#edit-submitted-lab-use-scilab-2-wrapper,#edit-submitted-classroom-instruction-1-wrapper,#edit-submitted-classroom-instruction-2-wrapper,#edit-submitted-tbc-objective-1-wrapper,#edit-submitted-tbc-objective-2-wrapper,#edit-submitted-tbc-objective-3-wrapper,#edit-submitted-tbc-teacher-1-wrapper,#edit-submitted-tbc-teacher-2-wrapper,#edit-submitted-tbc-teacher-find-1-wrapper,#edit-submitted-tbc-teacher-find-2-wrapper,#edit-submitted-tbc-teacher-find-3-wrapper,#edit-submitted-tbc-useful-1-wrapper,#edit-submitted-tbc-useful-2-wrapper,#edit-submitted-tbc-recommend-1-wrapper,#edit-submitted-tbc-recommend-2-wrapper,#edit-submitted-tbc-recommend-3-wrapper,#edit-submitted-tbc-recommend-academic-1-wrapper,#edit-submitted-tbc-recommend-academic-2-wrapper,#edit-submitted-tbc-recommend-academic-3-wrapper,#edit-submitted-tbc-improve-1-wrapper,#edit-submitted-tbc-improve-2-wrapper,#edit-submitted-tbc-improve-3-wrapper,#edit-submitted-tbc-participate-1-wrapper,#edit-submitted-tbc-participate-2-wrapper,#edit-submitted-tbc-participate-friends-1-wrapper,#edit-submitted-tbc-participate-friends-2-wrapper,#edit-submitted-tbc-procedure-1-wrapper,#edit-submitted-tbc-procedure-2-wrapper +{ + float:left; +} +#webform-component-lab-use-scilab,#webform-component-classroom-instruction,#webform-component-active-participation,#webform-component-rate-org,#webform-component-tbc-teacher-find,#webform-component-tbc-support-teacher,#webform-component-tbc-recommend,#webform-component-tbc-recommend-academic,#webform-component-tbc-improve,#webform-component-tbc-participate,#webform-component-tbc-participate-friends,#webform-component-tbc-procedure,#webform-component-tbc-codes-useful +{ + clear:both; +} +.orbit-caption +{ + text-align:justify; +} + +#slideshow{ + margin-bottom: 10px; +} + +.home-slider{ + border:1px solid #000; + margin-bottom: 10px; +} +hr +{ + height: 1px; + border: 1px solid #522900; +} +.tableHeader-processed #content.column .sticky-enabled.sticky-table +{ + font-size:11px; +} +h1#frnt.title +{ + display:none; +} +.statistics_counter { + display: none !important; +} + + diff --git a/css/style.less b/css/style.less new file mode 100755 index 0000000..e39e207 --- /dev/null +++ b/css/style.less @@ -0,0 +1,31 @@ +.region.region-top-content-1 { + float:left; + width:31%; +} +.region.region-top-content-2 { + float:left; + width:31%; +} +#search { + float:right !important; + width:27% !important; +} +#navigation {float:left !important;width:77% !important;} +#block-search-0block block-search first last region-odd even region-count-1 count-2 with-block-editing h2.title +{ + display:none; +} +#navigation +{ + margin-left:20%; +} +#navigation li +{ + border:1px solid #000; + background-color:#0EC; + padding:5px 10px 6px 10px; +} +/*#page +{ + background-image:url('/theme/sites/default/files/kiran _ Wix.com.png'); +}*/ diff --git a/css/tabs-rtl.css b/css/tabs-rtl.css new file mode 100755 index 0000000..6e7fb0e --- /dev/null +++ b/css/tabs-rtl.css @@ -0,0 +1,22 @@ +/** + * @file + * RTL companion for the tabs.css file. + */ + + +ul.primary { + padding: 0 10px 0 0; +} + +ul.primary li { + float: right; +} + +ul.secondary { + padding: 0 5px 0 0; +} + +ul.secondary li { + float: right; + border-left: none; +} diff --git a/css/tabs.css b/css/tabs.css new file mode 100755 index 0000000..db59568 --- /dev/null +++ b/css/tabs.css @@ -0,0 +1,128 @@ +/** + * @file + * Tabs Styling + * + * Adds styles for the primary and secondary tabs. + * + * Compare this with default CSS found in the system module's stylesheet (a copy + * of which is in drupal6-reference.css, line 510.) + */ + + +div.tabs { + margin: 0 0 5px 0; +} + +ul.primary { + margin: 0; + padding: 0 0 0 10px; /* LTR */ + border-width: 0; + list-style: none; + white-space: nowrap; + line-height: normal; + background: url(../images/tab-bar.png) repeat-x left bottom; +} + +ul.primary li { + float: left; /* LTR */ + margin: 0; + padding: 0; +} + +ul.primary li a { + display: block; + height: 24px; + margin: 0; + padding: 0 0 0 5px; /* width of tab-left.png */ + border-width: 0; + font-weight: bold; + text-decoration: none; + color: #777; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left -38px; +} + +ul.primary li a .tab { + display: block; + height: 20px; /* 24px (parent) - 4px (padding) */ + margin: 0; + padding: 4px 13px 0 6px; + border-width: 0; + line-height: 20px; + background: url(../images/tab-right.png) no-repeat right -38px; +} + +ul.primary li a:hover, +ul.primary li a:focus { + border-width: 0; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left -76px; +} + +ul.primary li a:hover .tab, +ul.primary li a:focus .tab { + background: url(../images/tab-right.png) no-repeat right -76px; +} + +ul.primary li.active a, +ul.primary li.active a:hover, +ul.primary li.active a:focus { + border-width: 0; + color: #000; + background-color: transparent; + background: url(../images/tab-left.png) no-repeat left 0; +} + +ul.primary li.active a .tab, +ul.primary li.active a:hover .tab, +ul.primary li.active a:focus .tab { + background: url(../images/tab-right.png) no-repeat right 0; +} + +ul.secondary { + margin: 0; + padding: 0 0 0 5px; /* LTR */ + border-bottom: 1px solid #c0c0c0; + list-style: none; + white-space: nowrap; + background: url(../images/tab-secondary-bg.png) repeat-x left bottom; +} + +ul.secondary li { + float: left; /* LTR */ + margin: 0 5px 0 0; + padding: 5px 0; + border-right: none; /* LTR */ +} + +ul.secondary a { + display: block; + height: 24px; + margin: 0; + padding: 0; + border: 1px solid #c0c0c0; + text-decoration: none; + color: #777; + background: url(../images/tab-secondary.png) repeat-x left -56px; +} + +ul.secondary a .tab { + display: block; + height: 18px; /* 24px (parent) - 6px (padding) */ + margin: 0; + padding: 3px 8px; + line-height: 18px; +} + +ul.secondary a:hover, +ul.secondary a:focus { + background: url(../images/tab-secondary.png) repeat-x left bottom; +} + +ul.secondary a.active, +ul.secondary a.active:hover, +ul.secondary a.active:focus { + border: 1px solid #c0c0c0; + color: #000; + background: url(../images/tab-secondary.png) repeat-x left top; +} diff --git a/css/testimonials.css b/css/testimonials.css new file mode 100755 index 0000000..4edbeac --- /dev/null +++ b/css/testimonials.css @@ -0,0 +1,50 @@ + +.testimonial{ + position: relative; + text-align: justify; + margin: 25px 0 0 0; + padding: 0 0 10px 0; + background: #e5e5e5; + padding: 10px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.testimonial > .author{ + text-align: right; + font-weight: bolder; + margin: 15px 0 0 0; + background: #ffffff; + padding: 10px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} +.page-nav{ + position: relative; + padding: 25px 0; +} +.page-next{ + position: absolute; + right: 0; + top: 25px; +} +.page-prev{ + position: absolute; + left: 0; + top: 25px; +} +.page-nos{ + position: relative; + left: 275px; + top: -47px; +} +.page-nos1{ + position: relative; + left: 275px; + top: -47px; + color: #424242; + font-weight: 900; +} diff --git a/css/testimonials_front.css b/css/testimonials_front.css new file mode 100755 index 0000000..a91c89a --- /dev/null +++ b/css/testimonials_front.css @@ -0,0 +1,31 @@ +*{ + margin:0; + padding:0; +} + + +#testimonials_front{ + padding: 20px 20px 15px 40px; + margin-top: 30px; + margin-bottom: 30px; + background:url('../images/open-quote.png') no-repeat ; + min-height:90px; + -moz-border-radius:12px; + -webkit-border-radius:12px; + border-radius:12px; + box-shadow: 1px 1px 4px 1px #888888; + height:135px; + overflow:auto; +} + +#testimonials_front li{ display:none;} +#testimonials_front li:first-child{ display:block;} + +#testimonials_front ul{ list-style:none;} + + +#testimonials_front h4{ +color:#424242; +margin-top:-20px; + +} diff --git a/css/theme-settings.css b/css/theme-settings.css new file mode 100755 index 0000000..567b6e3 --- /dev/null +++ b/css/theme-settings.css @@ -0,0 +1,69 @@ +/** + * @file + * Theme settings styling + * + * This file is only loaded on the Theme Settings page for Zen and its + * subthemes: admin/build/themes/settings + */ + + +#zen-settings fieldset .form-item +{ + padding-left: 200px; /* LTR */ +} + +#zen-settings fieldset .form-checkboxes .form-item, +#zen-settings fieldset .form-radios .form-item +{ + padding-left: 0; /* LTR */ +} + +#zen-settings fieldset .form-item label +{ + float: left; /* LTR */ + width: 190px; + margin-left: -200px; /* LTR */ + margin-right: 10px; /* LTR */ + text-align: right; /* LTR */ + _display: inline-block; /* IE6 is dumb. */ +} + +#zen-settings fieldset .form-item label.option +{ + float: none; + width: auto; + margin-left: 0; + margin-right: 0; + text-align: left; /* LTR */ +} + +#div-zen-registry, +#div-zen-wireframes +{ + margin: 1em 0; +} + +#div-zen-registry strong, +#div-zen-wireframes strong +{ + float: left; /* LTR */ + width: 190px; + margin-left: 0; /* LTR */ + margin-right: 10px; /* LTR */ + text-align: right; /* LTR */ +} + +#div-zen-registry fieldset .form-item, +#div-zen-wireframes fieldset .form-item +{ + display: inline; + margin-left: 0; /* LTR */ + padding-left: 0; /* LTR */ +} + +#div-zen-registry fieldset .form-item .description, +#div-zen-wireframes fieldset .form-item .description +{ + display: block; + margin-left: 200px; /* LTR */ +} diff --git a/css/views-styles.css b/css/views-styles.css new file mode 100755 index 0000000..909edd9 --- /dev/null +++ b/css/views-styles.css @@ -0,0 +1,6 @@ +/** + * @file + * Views Styling + */ + + diff --git a/css/wireframes.css b/css/wireframes.css new file mode 100755 index 0000000..0bf3058 --- /dev/null +++ b/css/wireframes.css @@ -0,0 +1,24 @@ +/** + * @file + * Wireframes Styling + * + * Add wireframes to the basic layout elements. + */ + + +.with-wireframes #header .section, +.with-wireframes #content .section, +.with-wireframes #navigation .section, +.with-wireframes .region-sidebar-first .section, +.with-wireframes .region-sidebar-second .section, +.with-wireframes #footer .section { + margin: 1px; + padding: 2px; + border: 1px solid #ccc; +} + +.with-wireframes .region-page-closure { + margin-top: 1px; + padding: 2px; + border: 1px solid #ccc; +} diff --git a/favicon.ico b/favicon.ico new file mode 100755 index 0000000..0f9909a Binary files /dev/null and b/favicon.ico differ diff --git a/images-source/messages.psd b/images-source/messages.psd new file mode 100755 index 0000000..a155d1c Binary files /dev/null and b/images-source/messages.psd differ diff --git a/images-source/panels-layouts.psd b/images-source/panels-layouts.psd new file mode 100755 index 0000000..1f0aecb Binary files /dev/null and b/images-source/panels-layouts.psd differ diff --git a/images-source/screenshot.psd b/images-source/screenshot.psd new file mode 100755 index 0000000..6762e48 Binary files /dev/null and b/images-source/screenshot.psd differ diff --git a/images-source/tabs.psd b/images-source/tabs.psd new file mode 100755 index 0000000..dfd82aa Binary files /dev/null and b/images-source/tabs.psd differ diff --git a/images/arrow_new.png b/images/arrow_new.png new file mode 100755 index 0000000..577f8d4 Binary files /dev/null and b/images/arrow_new.png differ diff --git a/images/content_line.png b/images/content_line.png new file mode 100755 index 0000000..0740dd4 Binary files /dev/null and b/images/content_line.png differ diff --git a/images/content_line1.png b/images/content_line1.png new file mode 100755 index 0000000..5a1b3f0 Binary files /dev/null and b/images/content_line1.png differ diff --git a/images/content_line12.png b/images/content_line12.png new file mode 100755 index 0000000..b47164a Binary files /dev/null and b/images/content_line12.png differ diff --git a/images/divider.png b/images/divider.png new file mode 100755 index 0000000..3535fad Binary files /dev/null and b/images/divider.png differ diff --git a/images/divider1.png b/images/divider1.png new file mode 100755 index 0000000..2a16196 Binary files /dev/null and b/images/divider1.png differ diff --git a/images/footer_line.png b/images/footer_line.png new file mode 100755 index 0000000..5d77720 Binary files /dev/null and b/images/footer_line.png differ diff --git a/images/footer_line1.png b/images/footer_line1.png new file mode 100755 index 0000000..4733cd1 Binary files /dev/null and b/images/footer_line1.png differ diff --git a/images/footer_line2.png b/images/footer_line2.png new file mode 100755 index 0000000..43a92c1 Binary files /dev/null and b/images/footer_line2.png differ diff --git a/images/image1.jpeg b/images/image1.jpeg new file mode 100755 index 0000000..b52bad6 Binary files /dev/null and b/images/image1.jpeg differ diff --git a/images/image1.png b/images/image1.png new file mode 100755 index 0000000..bc35794 Binary files /dev/null and b/images/image1.png differ diff --git a/images/image2.gif b/images/image2.gif new file mode 100755 index 0000000..b9a976b Binary files /dev/null and b/images/image2.gif differ diff --git a/images/image2.png b/images/image2.png new file mode 100755 index 0000000..48d9865 Binary files /dev/null and b/images/image2.png differ diff --git a/images/image3.jpeg b/images/image3.jpeg new file mode 100755 index 0000000..e3e7759 Binary files /dev/null and b/images/image3.jpeg differ diff --git a/images/image3.png b/images/image3.png new file mode 100755 index 0000000..207cd84 Binary files /dev/null and b/images/image3.png differ diff --git a/images/image4-old.png b/images/image4-old.png new file mode 100755 index 0000000..678bbd7 Binary files /dev/null and b/images/image4-old.png differ diff --git a/images/image4.jpg b/images/image4.jpg new file mode 100755 index 0000000..f601da1 Binary files /dev/null and b/images/image4.jpg differ diff --git a/images/image4.png b/images/image4.png new file mode 100755 index 0000000..27d93d0 Binary files /dev/null and b/images/image4.png differ diff --git a/images/image5-old.png b/images/image5-old.png new file mode 100755 index 0000000..0967a0a Binary files /dev/null and b/images/image5-old.png differ diff --git a/images/image5-older.png b/images/image5-older.png new file mode 100755 index 0000000..58b9c0a Binary files /dev/null and b/images/image5-older.png differ diff --git a/images/image5.png b/images/image5.png new file mode 100755 index 0000000..8a33bd5 Binary files /dev/null and b/images/image5.png differ diff --git a/images/img1.jpg b/images/img1.jpg new file mode 100755 index 0000000..bc05ee7 Binary files /dev/null and b/images/img1.jpg differ diff --git a/images/img2.jpg b/images/img2.jpg new file mode 100755 index 0000000..266c5e8 Binary files /dev/null and b/images/img2.jpg differ diff --git a/images/img3.jpg b/images/img3.jpg new file mode 100755 index 0000000..f5bfc5d Binary files /dev/null and b/images/img3.jpg differ diff --git a/images/li-bg.png b/images/li-bg.png new file mode 100755 index 0000000..2ca4e0c Binary files /dev/null and b/images/li-bg.png differ diff --git a/images/line.png b/images/line.png new file mode 100755 index 0000000..e60ae4f Binary files /dev/null and b/images/line.png differ diff --git a/images/linez.png b/images/linez.png new file mode 100755 index 0000000..e7bed50 Binary files /dev/null and b/images/linez.png differ diff --git a/images/loading.gif b/images/loading.gif new file mode 100755 index 0000000..780423b Binary files /dev/null and b/images/loading.gif differ diff --git a/images/login-button.png b/images/login-button.png new file mode 100755 index 0000000..7b05b20 Binary files /dev/null and b/images/login-button.png differ diff --git a/images/login-button3.png b/images/login-button3.png new file mode 100755 index 0000000..17cc403 Binary files /dev/null and b/images/login-button3.png differ diff --git a/images/messages-error-ie6.png b/images/messages-error-ie6.png new file mode 100755 index 0000000..054b9f2 Binary files /dev/null and b/images/messages-error-ie6.png differ diff --git a/images/messages-error.png b/images/messages-error.png new file mode 100755 index 0000000..012813b Binary files /dev/null and b/images/messages-error.png differ diff --git a/images/messages-status-ie6.png b/images/messages-status-ie6.png new file mode 100755 index 0000000..f9eb63f Binary files /dev/null and b/images/messages-status-ie6.png differ diff --git a/images/messages-status.png b/images/messages-status.png new file mode 100755 index 0000000..9f07a42 Binary files /dev/null and b/images/messages-status.png differ diff --git a/images/messages-warning-ie6.png b/images/messages-warning-ie6.png new file mode 100755 index 0000000..551a9db Binary files /dev/null and b/images/messages-warning-ie6.png differ diff --git a/images/messages-warning.png b/images/messages-warning.png new file mode 100755 index 0000000..e727711 Binary files /dev/null and b/images/messages-warning.png differ diff --git a/images/open-quote.png b/images/open-quote.png new file mode 100755 index 0000000..80f9c49 Binary files /dev/null and b/images/open-quote.png differ diff --git a/images/scilab_logo.png b/images/scilab_logo.png new file mode 100755 index 0000000..a6801db Binary files /dev/null and b/images/scilab_logo.png differ diff --git a/images/search-btn.png b/images/search-btn.png new file mode 100755 index 0000000..62243b2 Binary files /dev/null and b/images/search-btn.png differ diff --git a/images/shadow.png b/images/shadow.png new file mode 100755 index 0000000..e884783 Binary files /dev/null and b/images/shadow.png differ diff --git a/images/side_b.png b/images/side_b.png new file mode 100755 index 0000000..0a9eb06 Binary files /dev/null and b/images/side_b.png differ diff --git a/images/tab-bar.png b/images/tab-bar.png new file mode 100755 index 0000000..0b380be Binary files /dev/null and b/images/tab-bar.png differ diff --git a/images/tab-left-ie6.png b/images/tab-left-ie6.png new file mode 100755 index 0000000..5c512ae Binary files /dev/null and b/images/tab-left-ie6.png differ diff --git a/images/tab-left.png b/images/tab-left.png new file mode 100755 index 0000000..dd925f7 Binary files /dev/null and b/images/tab-left.png differ diff --git a/images/tab-right-ie6.png b/images/tab-right-ie6.png new file mode 100755 index 0000000..1c00281 Binary files /dev/null and b/images/tab-right-ie6.png differ diff --git a/images/tab-right.png b/images/tab-right.png new file mode 100755 index 0000000..9ed9cb2 Binary files /dev/null and b/images/tab-right.png differ diff --git a/images/tab-secondary-bg.png b/images/tab-secondary-bg.png new file mode 100755 index 0000000..a5a617e Binary files /dev/null and b/images/tab-secondary-bg.png differ diff --git a/images/tab-secondary.png b/images/tab-secondary.png new file mode 100755 index 0000000..bf4e8d2 Binary files /dev/null and b/images/tab-secondary.png differ diff --git a/images/tshirt1.png b/images/tshirt1.png new file mode 100755 index 0000000..4e337bd Binary files /dev/null and b/images/tshirt1.png differ diff --git a/images/tshirt2.png b/images/tshirt2.png new file mode 100755 index 0000000..1fe7625 Binary files /dev/null and b/images/tshirt2.png differ diff --git a/js/README.txt b/js/README.txt new file mode 100755 index 0000000..a8b446a --- /dev/null +++ b/js/README.txt @@ -0,0 +1,14 @@ +Your theme can add JavaScript files in two ways: + +1. To add a JavaScript file to all pages on your website, edit your sub-theme's + .info file and add a line like this one: + + scripts[] = js/my-jquery-script.js + +2. To add a JavaScript file depending on a certain condition, you can add it + using some PHP code in a preprocess function: + + drupal_add_js('js/my-jquery-script.js', 'theme'); + + For the full documentation of drupal_add_js(), see: + http://api.drupal.org/api/function/drupal_add_js diff --git a/js/dropdown-menu.min.js b/js/dropdown-menu.min.js new file mode 100755 index 0000000..70a7343 --- /dev/null +++ b/js/dropdown-menu.min.js @@ -0,0 +1,3 @@ +// jQuery().dropdown_menu() by Daniel Upshaw 2012-2013 +// http://danielupshaw.com/jquery-css-dropdown-plugin/readme.html +(function(a,b){a.fn.extend({dropdown_menu:function(c){var e={sub_indicator_class:"dropdown-menu-sub-indicator",vertical_class:"dropdown-menu-vertical",shadow_class:"dropdown-menu-shadow",hover_class:"dropdown-menu-hover",open_delay:150,close_delay:300,animation_open:{opacity:"show"},speed_open:"fast",animation_close:{opacity:"hide"},speed_close:"fast",sub_indicators:!1,drop_shadows:!1,vertical:!1,viewport_overflow:"auto",init:function(){}},f=a.browser.msie&&8>a.browser.version;return this.each(function(){var g=a(this),h=g.data("options"),i=a.extend({},e,c,h),j=a('»');i.vertical&&g.addClass(i.vertical_class),a(">li",g).css({"font-size":g.css("font-size")}),g.css({"font-size":"0"}),g.find("li:has(ul)").each(function(){a(this).addClass(i.sub_indicator_class),i.sub_indicators&&a(">a:first-child",this).append(j.clone());var c=a(">ul",this).css({visibility:"hidden",display:"block"});i.drop_shadows&&c.addClass(i.shadow_class),f&&setTimeout(function(){c.css({width:c.width()})},0),a(this).on({mouseenter:function(){clearTimeout(a(this).data("close_timer")),clearTimeout(a(this).data("open_timer")),a(this).hasClass(i.hover_class)||a(this).data("open_timer",setTimeout(a.proxy(function(){if(a(this).addClass(i.hover_class),i.vertical?c.css({top:0,left:a(this).width()}):c.css({top:"",left:""}),c.css({visibility:"hidden",display:"block"}),overflow_x=c.offset().left+c.width()>a(b).scrollLeft()+a(b).width(),overflow_y=c.offset().top+c.height()>a(b).scrollTop()+a(b).height(),overflow=overflow_x||overflow_y,overflow&&i.viewport_overflow){var d=10;switch("auto"===i.viewport_overflow&&(i.viewport_overflow=f?"scroll":"move"),i.viewport_overflow){case"move":var e=overflow_x?a(b).scrollLeft()+a(b).width()-c.width()-d:c.offset().left,g=overflow_y?a(b).scrollTop()+a(b).height()-c.height()-d:c.offset().top;c.offset({left:e,top:g});break;case"scroll":if(overflow_x){var h=c.offset().left-a(b).width()+c.width()+d;a("html").animate({scrollLeft:h},"fast")}if(overflow_y){var j=c.offset().top-a(b).height()+c.height()+d;a("html").animate({scrollTop:j},"fast")}}}c.hide().css({visibility:"visible"}),i.animation_open?c.animate(i.animation_open,i.speed_open):c.show()},this),i.open_delay))},mouseleave:function(){clearTimeout(a(this).data("close_timer")),clearTimeout(a(this).data("open_timer")),a(this).data("close_timer",setTimeout(a.proxy(function(){a(this).removeClass(i.hover_class),i.animation_close?c.animate(i.animation_close,i.speed_close,function(){c.css({visibility:"hidden"})}):c.hide().css({visibility:"hidden"})},this),i.close_delay))},touchstart:function(){a(">a:first-child",this).one("click",a.proxy(function(b){return a(this).hasClass(i.hover_class)?!0:(b.preventDefault(),d)},this))}})}),setTimeout(function(){a("ul",g).hide(1).promise().done(function(){i.init.call(g[0])})},0)})}})})(jQuery,window,document); diff --git a/js/jquery-1.8.3.min.js b/js/jquery-1.8.3.min.js new file mode 100755 index 0000000..39fdc42 --- /dev/null +++ b/js/jquery-1.8.3.min.js @@ -0,0 +1,408 @@ +/*! + * jQuery UI 1.8.13 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){function c(g,e){var i=g.nodeName.toLowerCase();if("area"===i){e=g.parentNode;i=e.name;if(!g.href||!i||e.nodeName.toLowerCase()!=="map")return false;g=a("img[usemap=#"+i+"]")[0];return!!g&&f(g)}return(/input|select|textarea|button|object/.test(i)?!g.disabled:"a"==i?g.href||e:e)&&f(g)}function f(g){return!a(g).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(!a.ui.version){a.extend(a.ui,{version:"1.8.13", +keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}});a.fn.extend({_focus:a.fn.focus,focus:function(g,e){return typeof g==="number"?this.each(function(){var i=this;setTimeout(function(){a(i).focus(); +e&&e.call(i)},g)}):this._focus.apply(this,arguments)},scrollParent:function(){var g;g=a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?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):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"))||!g.length?a(document):g},zIndex:function(g){if(g!==d)return this.css("zIndex",g);if(this.length){g=a(this[0]);for(var e;g.length&&g[0]!==document;){e=g.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){e=parseInt(g.css("zIndex"),10);if(!isNaN(e)&&e!==0)return e}g=g.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", +function(g){g.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){function i(l,o,n,k){a.each(b,function(){o-=parseFloat(a.curCSS(l,"padding"+this,true))||0;if(n)o-=parseFloat(a.curCSS(l,"border"+this+"Width",true))||0;if(k)o-=parseFloat(a.curCSS(l,"margin"+this,true))||0});return o}var b=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),j={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth, +outerHeight:a.fn.outerHeight};a.fn["inner"+e]=function(l){if(l===d)return j["inner"+e].call(this);return this.each(function(){a(this).css(h,i(this,l)+"px")})};a.fn["outer"+e]=function(l,o){if(typeof l!=="number")return j["outer"+e].call(this,l);return this.each(function(){a(this).css(h,i(this,l,true,o)+"px")})}});a.extend(a.expr[":"],{data:function(g,e,i){return!!a.data(g,i[3])},focusable:function(g){return c(g,!isNaN(a.attr(g,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),i=isNaN(e); +return(i||e>=0)&&c(g,!i)}});a(function(){var g=document.body,e=g.appendChild(e=document.createElement("div"));a.extend(e.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=e.offsetHeight===100;a.support.selectstart="onselectstart"in e;g.removeChild(e).style.display="none"});a.extend(a.ui,{plugin:{add:function(g,e,i){g=a.ui[g].prototype;for(var b in i){g.plugins[b]=g.plugins[b]||[];g.plugins[b].push([e,i[b]])}},call:function(g,e,i){if((e=g.plugins[e])&&g.element[0].parentNode)for(var b= +0;b0)return true;g[e]=1;i=g[e]>0;g[e]=0;return i},isOverAxis:function(g,e,i){return g>e&&g=9)&&!c.button)return this._mouseUp(c);if(this._mouseStarted){this._mouseDrag(c);return c.preventDefault()}if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,c)!==false)?this._mouseDrag(c):this._mouseUp(c);return!this._mouseStarted},_mouseUp:function(c){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= +false;c.target==this._mouseDownEvent.target&&a.data(c.target,this.widgetName+".preventClickEvent",true);this._mouseStop(c)}return false},_mouseDistanceMet:function(c){return Math.max(Math.abs(this._mouseDownEvent.pageX-c.pageX),Math.abs(this._mouseDownEvent.pageY-c.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){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")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(d){var c= +this.options;if(this.helper||c.disabled||a(d.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(d);if(!this.handle)return false;a(c.iframeFix===true?"iframe":c.iframeFix).each(function(){a('
').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(d){var c=this.options;this.helper= +this._createHelper(d);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:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); +this.originalPosition=this.position=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(this._trigger("start",d)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(d,true);return true},_mouseDrag:function(d,c){this.position=this._generatePosition(d); +this.positionAbs=this._convertPositionTo("absolute");if(!c){c=this._uiHash();if(this._trigger("drag",d,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";a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);return false},_mouseStop:function(d){var c=false;if(a.ui.ddmanager&&!this.options.dropBehaviour)c= +a.ui.ddmanager.drop(this,d);if(this.dropped){c=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",d)!==false&&f._clear()})}else this._trigger("stop", +d)!==false&&this._clear();return false},_mouseUp:function(d){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});return a.ui.mouse.prototype._mouseUp.call(this,d)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(d){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== +d.target)c=true});return c},_createHelper:function(d){var c=this.options;d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[d])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo);d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(d){if(typeof d=="string")d=d.split(" ");if(a.isArray(d))d= +{left:+d[0],top:+d[1]||0};if("left"in d)this.offset.click.left=d.left+this.margins.left;if("right"in d)this.offset.click.left=this.helperProportions.width-d.right+this.margins.left;if("top"in d)this.offset.click.top=d.top+this.margins.top;if("bottom"in d)this.offset.click.top=this.helperProportions.height-d.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var d=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&& +a.ui.contains(this.scrollParent[0],this.offsetParent[0])){d.left+=this.scrollParent.scrollLeft();d.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)d={top:0,left:0};return{top:d.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:d.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var d= +this.element.position();return{top:d.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:d.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,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions= +{width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var d=this.options;if(d.containment=="parent")d.containment=this.helper[0].parentNode;if(d.containment=="document"||d.containment=="window")this.containment=[(d.containment=="document"?0:a(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(d.containment=="document"?0:a(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(d.containment=="document"?0:a(window).scrollLeft())+ +a(d.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d.containment=="document"?0:a(window).scrollTop())+(a(d.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(d.containment)&&d.containment.constructor!=Array){d=a(d.containment);var c=d[0];if(c){d.offset();var f=a(c).css("overflow")!="hidden";this.containment=[(parseInt(a(c).css("borderLeftWidth"), +10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0),(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0),(f?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-this.margins.right,(f?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-this.margins.bottom];this.relative_container=d}}else if(d.containment.constructor==Array)this.containment=d.containment},_convertPositionTo:function(d,c){if(!c)c=this.position;d=d=="absolute"?1:-1;var f=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(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&& +a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(d){var c=this.options,f=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(f[0].tagName),e=d.pageX,i=d.pageY;if(this.originalPosition){var b;if(this.containment){if(this.relative_container){b=this.relative_container.offset();b=[this.containment[0]+b.left,this.containment[1]+b.top,this.containment[2]+b.left,this.containment[3]+b.top]}else b=this.containment;if(d.pageX-this.offset.click.leftb[2])e=b[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>b[3])i=b[3]+this.offset.click.top}if(c.grid){i=this.originalPageY+Math.round((i-this.originalPageY)/c.grid[1])*c.grid[1];i=b?!(i-this.offset.click.topb[3])?i:!(i-this.offset.click.topb[2])?e:!(e-this.offset.click.left< +b[0])?e-c.grid[0]:e+c.grid[0]:e}}return{top:i-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():g?0:f.scrollTop()),left:e-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():g?0:f.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(d,c,f){f=f||this._uiHash();a.ui.plugin.call(this,d,[c,f]);if(d=="drag")this.positionAbs=this._convertPositionTo("absolute");return a.Widget.prototype._trigger.call(this,d,c,f)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.13"}); +a.ui.plugin.add("draggable","connectToSortable",{start:function(d,c){var f=a(this).data("draggable"),g=f.options,e=a.extend({},c,{item:f.element});f.sortables=[];a(g.connectToSortable).each(function(){var i=a.data(this,"sortable");if(i&&!i.options.disabled){f.sortables.push({instance:i,shouldRevert:i.options.revert});i.refreshPositions();i._trigger("activate",d,e)}})},stop:function(d,c){var f=a(this).data("draggable"),g=a.extend({},c,{item:f.element});a.each(f.sortables,function(){if(this.instance.isOver){this.instance.isOver= +0;f.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(d);this.instance.options.helper=this.instance.options._helper;f.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",d,g)}})},drag:function(d,c){var f=a(this).data("draggable"),g=this;a.each(f.sortables,function(){this.instance.positionAbs= +f.positionAbs;this.instance.helperProportions=f.helperProportions;this.instance.offset.click=f.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return c.helper[0]};d.target=this.instance.currentItem[0];this.instance._mouseCapture(d, +true);this.instance._mouseStart(d,true,true);this.instance.offset.click.top=f.offset.click.top;this.instance.offset.click.left=f.offset.click.left;this.instance.offset.parent.left-=f.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=f.offset.parent.top-this.instance.offset.parent.top;f._trigger("toSortable",d);f.dropped=this.instance.element;f.currentItem=f.element;this.instance.fromOutside=f}this.instance.currentItem&&this.instance._mouseDrag(d)}else if(this.instance.isOver){this.instance.isOver= +0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",d,this.instance._uiHash(this.instance));this.instance._mouseStop(d,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();f._trigger("fromSortable",d);f.dropped=false}})}});a.ui.plugin.add("draggable","cursor",{start:function(){var d=a("body"),c=a(this).data("draggable").options;if(d.css("cursor"))c._cursor= +d.css("cursor");d.css("cursor",c.cursor)},stop:function(){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(d,c){d=a(c.helper);c=a(this).data("draggable").options;if(d.css("opacity"))c._opacity=d.css("opacity");d.css("opacity",c.opacity)},stop:function(d,c){d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var d=a(this).data("draggable"); +if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML")d.overflowOffset=d.scrollParent.offset()},drag:function(d){var c=a(this).data("draggable"),f=c.options,g=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=0;l--){var o=f.snapElements[l].left,n=o+f.snapElements[l].width,k=f.snapElements[l].top,m=k+f.snapElements[l].height;if(o-e=l&&i<=o||b>=l&&b<=o||io)&&(g>= +h&&g<=j||e>=h&&e<=j||gj);default:return false}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(d,c){var f=a.ui.ddmanager.droppables[d.options.scope]||[],g=c?c.type:null,e=(d.currentItem||d.element).find(":data(droppable)").andSelf(),i=0;a:for(;i').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=g.handles||(!a(".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 e=this.handles.split(",");this.handles={};for(var i=0;i');/sw|se|ne|nw/.test(b)&&h.css({zIndex:++g.zIndex});"se"==b&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[b]=".ui-resizable-"+b;this.element.append(h)}}this._renderAxis=function(j){j=j||this.element;for(var l in this.handles){if(this.handles[l].constructor== +String)this.handles[l]=a(this.handles[l],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=a(this.handles[l],this.element),n=0;n=/sw|ne|nw|se|n|s/.test(l)?o.outerHeight():o.outerWidth();o=["padding",/ne|nw|n/.test(l)?"Top":/se|sw|s/.test(l)?"Bottom":/^e$/.test(l)?"Right":"Left"].join("");j.css(o,n);this._proportionallyResize()}a(this.handles[l])}};this._renderAxis(this.element);this._handles=a(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!f.resizing){if(this.className)var j=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);f.axis=j&&j[1]?j[1]:"se"}});if(g.autoHide){this._handles.hide();a(this.element).addClass("ui-resizable-autohide").hover(function(){if(!g.disabled){a(this).removeClass("ui-resizable-autohide");f._handles.show()}},function(){if(!g.disabled)if(!f.resizing){a(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); +var f=function(e){a(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){f(this.element);var g=this.element;g.after(this.originalElement.css({position:g.css("position"),width:g.outerWidth(),height:g.outerHeight(),top:g.css("top"),left:g.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);f(this.originalElement);return this},_mouseCapture:function(f){var g= +false;for(var e in this.handles)if(a(this.handles[e])[0]==f.target)g=true;return!this.options.disabled&&g},_mouseStart:function(f){var g=this.options,e=this.element.position(),i=this.element;this.resizing=true;this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()};if(i.is(".ui-draggable")||/absolute/.test(i.css("position")))i.css({position:"absolute",top:e.top,left:e.left});a.browser.opera&&/relative/.test(i.css("position"))&&i.css({position:"relative",top:"auto",left:"auto"}); +this._renderProxy();e=d(this.helper.css("left"));var b=d(this.helper.css("top"));if(g.containment){e+=a(g.containment).scrollLeft()||0;b+=a(g.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:e,top:b};this.size=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalSize=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalPosition={left:e,top:b};this.sizeDiff= +{width:i.outerWidth()-i.width(),height:i.outerHeight()-i.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=typeof g.aspectRatio=="number"?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",g=="auto"?this.axis+"-resize":g);i.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(f){var g=this.helper,e=this.originalMousePosition,i=this._change[this.axis]; +if(!i)return false;e=i.apply(this,[f,f.pageX-e.left||0,f.pageY-e.top||0]);if(this._aspectRatio||f.shiftKey)e=this._updateRatio(e,f);e=this._respectSize(e,f);this._propagate("resize",f);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(e);this._trigger("resize",f,this.ui());return false},_mouseStop:function(f){this.resizing= +false;var g=this.options,e=this;if(this._helper){var i=this._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName);i=b&&a.ui.hasScroll(i[0],"left")?0:e.sizeDiff.height;b=b?0:e.sizeDiff.width;b={width:e.helper.width()-b,height:e.helper.height()-i};i=parseInt(e.element.css("left"),10)+(e.position.left-e.originalPosition.left)||null;var h=parseInt(e.element.css("top"),10)+(e.position.top-e.originalPosition.top)||null;g.animate||this.element.css(a.extend(b,{top:h,left:i}));e.helper.height(e.size.height); +e.helper.width(e.size.width);this._helper&&!g.animate&&this._proportionallyResize()}a("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",f);this._helper&&this.helper.remove();return false},_updateCache:function(f){this.offset=this.helper.offset();if(c(f.left))this.position.left=f.left;if(c(f.top))this.position.top=f.top;if(c(f.height))this.size.height=f.height;if(c(f.width))this.size.width=f.width},_updateRatio:function(f){var g=this.position,e=this.size, +i=this.axis;if(f.height)f.width=e.height*this.aspectRatio;else if(f.width)f.height=e.width/this.aspectRatio;if(i=="sw"){f.left=g.left+(e.width-f.width);f.top=null}if(i=="nw"){f.top=g.top+(e.height-f.height);f.left=g.left+(e.width-f.width)}return f},_respectSize:function(f){var g=this.options,e=this.axis,i=c(f.width)&&g.maxWidth&&g.maxWidthf.width,j=c(f.height)&&g.minHeight&&g.minHeight>f.height;if(h)f.width= +g.minWidth;if(j)f.height=g.minHeight;if(i)f.width=g.maxWidth;if(b)f.height=g.maxHeight;var l=this.originalPosition.left+this.originalSize.width,o=this.position.top+this.size.height,n=/sw|nw|w/.test(e);e=/nw|ne|n/.test(e);if(h&&n)f.left=l-g.minWidth;if(i&&n)f.left=l-g.maxWidth;if(j&&e)f.top=o-g.minHeight;if(b&&e)f.top=o-g.maxHeight;if((g=!f.width&&!f.height)&&!f.left&&f.top)f.top=null;else if(g&&!f.top&&f.left)f.left=null;return f},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var f= +this.helper||this.element,g=0;g');var g=a.browser.msie&&a.browser.version<7,e=g?1:0;g=g?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left- +e+"px",top:this.elementOffset.top-e+"px",zIndex:++f.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(f,g){return{width:this.originalSize.width+g}},w:function(f,g){return{left:this.originalPosition.left+g,width:this.originalSize.width-g}},n:function(f,g,e){return{top:this.originalPosition.top+e,height:this.originalSize.height-e}},s:function(f,g,e){return{height:this.originalSize.height+e}},se:function(f,g,e){return a.extend(this._change.s.apply(this, +arguments),this._change.e.apply(this,[f,g,e]))},sw:function(f,g,e){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,g,e]))},ne:function(f,g,e){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,g,e]))},nw:function(f,g,e){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,g,e]))}},_propagate:function(f,g){a.ui.plugin.call(this,f,[g,this.ui()]);f!="resize"&&this._trigger(f,g,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}}});a.extend(a.ui.resizable,{version:"1.8.13"});a.ui.plugin.add("resizable","alsoResize",{start:function(){var f=a(this).data("resizable").options,g=function(e){a(e).each(function(){var i=a(this);i.data("resizable-alsoresize",{width:parseInt(i.width(),10),height:parseInt(i.height(),10),left:parseInt(i.css("left"),10),top:parseInt(i.css("top"),10),position:i.css("position")})})}; +if(typeof f.alsoResize=="object"&&!f.alsoResize.parentNode)if(f.alsoResize.length){f.alsoResize=f.alsoResize[0];g(f.alsoResize)}else a.each(f.alsoResize,function(e){g(e)});else g(f.alsoResize)},resize:function(f,g){var e=a(this).data("resizable");f=e.options;var i=e.originalSize,b=e.originalPosition,h={height:e.size.height-i.height||0,width:e.size.width-i.width||0,top:e.position.top-b.top||0,left:e.position.left-b.left||0},j=function(l,o){a(l).each(function(){var n=a(this),k=a(this).data("resizable-alsoresize"), +m={},p=o&&o.length?o:n.parents(g.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(p,function(q,s){if((q=(k[s]||0)+(h[s]||0))&&q>=0)m[s]=q||null});if(a.browser.opera&&/relative/.test(n.css("position"))){e._revertToRelativePosition=true;n.css({position:"absolute",top:"auto",left:"auto"})}n.css(m)})};typeof f.alsoResize=="object"&&!f.alsoResize.nodeType?a.each(f.alsoResize,function(l,o){j(l,o)}):j(f.alsoResize)},stop:function(){var f=a(this).data("resizable"),g=f.options, +e=function(i){a(i).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};if(f._revertToRelativePosition){f._revertToRelativePosition=false;typeof g.alsoResize=="object"&&!g.alsoResize.nodeType?a.each(g.alsoResize,function(i){e(i)}):e(g.alsoResize)}a(this).removeData("resizable-alsoresize")}});a.ui.plugin.add("resizable","animate",{stop:function(f){var g=a(this).data("resizable"),e=g.options,i=g._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName), +h=b&&a.ui.hasScroll(i[0],"left")?0:g.sizeDiff.height;b={width:g.size.width-(b?0:g.sizeDiff.width),height:g.size.height-h};h=parseInt(g.element.css("left"),10)+(g.position.left-g.originalPosition.left)||null;var j=parseInt(g.element.css("top"),10)+(g.position.top-g.originalPosition.top)||null;g.element.animate(a.extend(b,j&&h?{top:j,left:h}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var l={width:parseInt(g.element.css("width"),10),height:parseInt(g.element.css("height"), +10),top:parseInt(g.element.css("top"),10),left:parseInt(g.element.css("left"),10)};i&&i.length&&a(i[0]).css({width:l.width,height:l.height});g._updateCache(l);g._propagate("resize",f)}})}});a.ui.plugin.add("resizable","containment",{start:function(){var f=a(this).data("resizable"),g=f.element,e=f.options.containment;if(g=e instanceof a?e.get(0):/parent/.test(e)?g.parent().get(0):e){f.containerElement=a(g);if(/document/.test(e)||e==document){f.containerOffset={left:0,top:0};f.containerPosition={left:0, +top:0};f.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight}}else{var i=a(g),b=[];a(["Top","Right","Left","Bottom"]).each(function(l,o){b[l]=d(i.css("padding"+o))});f.containerOffset=i.offset();f.containerPosition=i.position();f.containerSize={height:i.innerHeight()-b[3],width:i.innerWidth()-b[1]};e=f.containerOffset;var h=f.containerSize.height,j=f.containerSize.width;j=a.ui.hasScroll(g,"left")?g.scrollWidth:j; +h=a.ui.hasScroll(g)?g.scrollHeight:h;f.parentData={element:g,left:e.left,top:e.top,width:j,height:h}}}},resize:function(f){var g=a(this).data("resizable"),e=g.options,i=g.containerOffset,b=g.position;f=g._aspectRatio||f.shiftKey;var h={top:0,left:0},j=g.containerElement;if(j[0]!=document&&/static/.test(j.css("position")))h=i;if(b.left<(g._helper?i.left:0)){g.size.width+=g._helper?g.position.left-i.left:g.position.left-h.left;if(f)g.size.height=g.size.width/e.aspectRatio;g.position.left=e.helper?i.left: +0}if(b.top<(g._helper?i.top:0)){g.size.height+=g._helper?g.position.top-i.top:g.position.top;if(f)g.size.width=g.size.height*e.aspectRatio;g.position.top=g._helper?i.top:0}g.offset.left=g.parentData.left+g.position.left;g.offset.top=g.parentData.top+g.position.top;e=Math.abs((g._helper?g.offset.left-h.left:g.offset.left-h.left)+g.sizeDiff.width);i=Math.abs((g._helper?g.offset.top-h.top:g.offset.top-i.top)+g.sizeDiff.height);b=g.containerElement.get(0)==g.element.parent().get(0);h=/relative|absolute/.test(g.containerElement.css("position")); +if(b&&h)e-=g.parentData.left;if(e+g.size.width>=g.parentData.width){g.size.width=g.parentData.width-e;if(f)g.size.height=g.size.width/g.aspectRatio}if(i+g.size.height>=g.parentData.height){g.size.height=g.parentData.height-i;if(f)g.size.width=g.size.height*g.aspectRatio}},stop:function(){var f=a(this).data("resizable"),g=f.options,e=f.containerOffset,i=f.containerPosition,b=f.containerElement,h=a(f.helper),j=h.offset(),l=h.outerWidth()-f.sizeDiff.width;h=h.outerHeight()-f.sizeDiff.height;f._helper&& +!g.animate&&/relative/.test(b.css("position"))&&a(this).css({left:j.left-i.left-e.left,width:l,height:h});f._helper&&!g.animate&&/static/.test(b.css("position"))&&a(this).css({left:j.left-i.left-e.left,width:l,height:h})}});a.ui.plugin.add("resizable","ghost",{start:function(){var f=a(this).data("resizable"),g=f.options,e=f.size;f.ghost=f.originalElement.clone();f.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 g.ghost== +"string"?g.ghost:"");f.ghost.appendTo(f.helper)},resize:function(){var f=a(this).data("resizable");f.ghost&&f.ghost.css({position:"relative",height:f.size.height,width:f.size.width})},stop:function(){var f=a(this).data("resizable");f.ghost&&f.helper&&f.helper.get(0).removeChild(f.ghost.get(0))}});a.ui.plugin.add("resizable","grid",{resize:function(){var f=a(this).data("resizable"),g=f.options,e=f.size,i=f.originalSize,b=f.originalPosition,h=f.axis;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid; +var j=Math.round((e.width-i.width)/(g.grid[0]||1))*(g.grid[0]||1);g=Math.round((e.height-i.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(h)){f.size.width=i.width+j;f.size.height=i.height+g}else if(/^(ne)$/.test(h)){f.size.width=i.width+j;f.size.height=i.height+g;f.position.top=b.top-g}else{if(/^(sw)$/.test(h)){f.size.width=i.width+j;f.size.height=i.height+g}else{f.size.width=i.width+j;f.size.height=i.height+g;f.position.top=b.top-g}f.position.left=b.left-j}}});var d=function(f){return parseInt(f, +10)||0},c=function(f){return!isNaN(parseInt(f,10))}})(jQuery); +(function(a){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var d=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(d.options.filter,d.element[0]);c.each(function(){var f=a(this),g=f.offset();a.data(this,"selectable-item",{element:this,$element:f,left:g.left,top:g.top,right:g.left+f.outerWidth(),bottom:g.top+f.outerHeight(),startselected:false,selected:f.hasClass("ui-selected"), +selecting:f.hasClass("ui-selecting"),unselecting:f.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a("
")},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 c=this;this.opos=[d.pageX, +d.pageY];if(!this.options.disabled){var f=this.options;this.selectees=a(f.filter,this.element[0]);this._trigger("start",d);a(f.appendTo).append(this.helper);this.helper.css({left:d.clientX,top:d.clientY,width:0,height:0});f.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var g=a.data(this,"selectable-item");g.startselected=true;if(!d.metaKey){g.$element.removeClass("ui-selected");g.selected=false;g.$element.addClass("ui-unselecting");g.unselecting=true;c._trigger("unselecting", +d,{unselecting:g.element})}});a(d.target).parents().andSelf().each(function(){var g=a.data(this,"selectable-item");if(g){var e=!d.metaKey||!g.$element.hasClass("ui-selected");g.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting");g.unselecting=!e;g.selecting=e;(g.selected=e)?c._trigger("selecting",d,{selecting:g.element}):c._trigger("unselecting",d,{unselecting:g.element});return false}})}},_mouseDrag:function(d){var c=this;this.dragged=true;if(!this.options.disabled){var f= +this.options,g=this.opos[0],e=this.opos[1],i=d.pageX,b=d.pageY;if(g>i){var h=i;i=g;g=h}if(e>b){h=b;b=e;e=h}this.helper.css({left:g,top:e,width:i-g,height:b-e});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!(!j||j.element==c.element[0])){var l=false;if(f.tolerance=="touch")l=!(j.left>i||j.rightb||j.bottomg&&j.righte&&j.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var d=this.options;this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?d.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):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 d=this.items.length-1;d>=0;d--)this.items[d].item.removeData("sortable-item");return this},_setOption:function(d,c){if(d=== +"disabled"){this.options[d]=c;this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")}else a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(d,c){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(d);var f=null,g=this;a(d.target).parents().each(function(){if(a.data(this,"sortable-item")==g){f=a(this);return false}});if(a.data(d.target,"sortable-item")==g)f=a(d.target);if(!f)return false;if(this.options.handle&& +!c){var e=false;a(this.options.handle,f).find("*").andSelf().each(function(){if(this==d.target)e=true});if(!e)return false}this.currentItem=f;this._removeCurrentsFromItems();return true},_mouseStart:function(d,c,f){c=this.options;var g=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(d);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:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; +this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();c.containment&&this._setContainment();if(c.cursor){if(a("body").css("cursor"))this._storedCursor=a("body").css("cursor");a("body").css("cursor",c.cursor)}if(c.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",c.opacity)}if(c.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",c.zIndex)}if(this.scrollParent[0]!= +document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",d,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!f)for(f=this.containers.length-1;f>=0;f--)this.containers[f]._trigger("activate",d,g._uiHash(this));if(a.ui.ddmanager)a.ui.ddmanager.current=this;a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(d); +return true},_mouseDrag:function(d){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var c=this.options,f=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-d.pageY=0;c--){f=this.items[c];var g=f.item[0],e=this._intersectsWithPointer(f);if(e)if(g!=this.currentItem[0]&&this.placeholder[e==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0], +g):true)){this.direction=e==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(d,f);else break;this._trigger("change",d,this._uiHash());break}}this._contactContainers(d);a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);this._trigger("sort",d,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(d,c){if(d){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,d);if(this.options.revert){var f=this;c=f.placeholder.offset(); +f.reverting=true;a(this.helper).animate({left:c.left-this.offset.parent.left-f.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:c.top-this.offset.parent.top-f.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){f._clear(d)})}else this._clear(d,c);return false}},cancel:function(){var d=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): +this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,d._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,d._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();a.extend(this,{helper:null, +dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(d){var c=this._getItemsAsjQuery(d&&d.connected),f=[];d=d||{};a(c).each(function(){var g=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||/(.+)[-=_](.+)/);if(g)f.push((d.key||g[1]+"[]")+"="+(d.key&&d.expression?g[1]:g[2]))});!f.length&&d.key&&f.push(d.key+"=");return f.join("&")}, +toArray:function(d){var c=this._getItemsAsjQuery(d&&d.connected),f=[];d=d||{};c.each(function(){f.push(a(d.item||this).attr(d.attribute||"id")||"")});return f},_intersectsWith:function(d){var c=this.positionAbs.left,f=c+this.helperProportions.width,g=this.positionAbs.top,e=g+this.helperProportions.height,i=d.left,b=i+d.width,h=d.top,j=h+d.height,l=this.offset.click.top,o=this.offset.click.left;l=g+l>h&&g+li&&c+od[this.floating?"width":"height"]?l:i0?"down":"up")},_getDragHorizontalDirection:function(){var d=this.positionAbs.left-this.lastPositionAbs.left;return d!=0&&(d>0?"right":"left")},refresh:function(d){this._refreshItems(d);this.refreshPositions();return this},_connectWith:function(){var d=this.options;return d.connectWith.constructor==String?[d.connectWith]:d.connectWith},_getItemsAsjQuery:function(d){var c=[],f=[],g=this._connectWith(); +if(g&&d)for(d=g.length-1;d>=0;d--)for(var e=a(g[d]),i=e.length-1;i>=0;i--){var b=a.data(e[i],"sortable");if(b&&b!=this&&!b.options.disabled)f.push([a.isFunction(b.options.items)?b.options.items.call(b.element):a(b.options.items,b.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),b])}f.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(d=f.length-1;d>=0;d--)f[d][0].each(function(){c.push(this)});return a(c)},_removeCurrentsFromItems:function(){for(var d=this.currentItem.find(":data(sortable-item)"),c=0;c=0;e--)for(var i=a(g[e]),b=i.length-1;b>=0;b--){var h=a.data(i[b],"sortable");if(h&&h!=this&&!h.options.disabled){f.push([a.isFunction(h.options.items)?h.options.items.call(h.element[0],d,{item:this.currentItem}):a(h.options.items,h.element),h]);this.containers.push(h)}}for(e=f.length-1;e>=0;e--){d=f[e][1];g=f[e][0];b=0;for(i=g.length;b=0;c--){var f=this.items[c];if(!(f.instance!=this.currentContainer&&this.currentContainer&&f.item[0]!=this.currentItem[0])){var g=this.options.toleranceElement?a(this.options.toleranceElement,f.item):f.item;if(!d){f.width=g.outerWidth();f.height=g.outerHeight()}g=g.offset();f.left=g.left;f.top=g.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c= +this.containers.length-1;c>=0;c--){g=this.containers[c].element.offset();this.containers[c].containerCache.left=g.left;this.containers[c].containerCache.top=g.top;this.containers[c].containerCache.width=this.containers[c].element.outerWidth();this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(d){var c=d||this,f=c.options;if(!f.placeholder||f.placeholder.constructor==String){var g=f.placeholder;f.placeholder={element:function(){var e= +a(document.createElement(c.currentItem[0].nodeName)).addClass(g||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!g)e.style.visibility="hidden";return e},update:function(e,i){if(!(g&&!f.forcePlaceholderSize)){i.height()||i.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10));i.width()||i.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")|| +0,10))}}}}c.placeholder=a(f.placeholder.element.call(c.element,c.currentItem));c.currentItem.after(c.placeholder);f.placeholder.update(c,c.placeholder)},_contactContainers:function(d){for(var c=null,f=null,g=this.containers.length-1;g>=0;g--)if(!a.ui.contains(this.currentItem[0],this.containers[g].element[0]))if(this._intersectsWith(this.containers[g].containerCache)){if(!(c&&a.ui.contains(this.containers[g].element[0],c.element[0]))){c=this.containers[g];f=g}}else if(this.containers[g].containerCache.over){this.containers[g]._trigger("out", +d,this._uiHash(this));this.containers[g].containerCache.over=0}if(c)if(this.containers.length===1){this.containers[f]._trigger("over",d,this._uiHash(this));this.containers[f].containerCache.over=1}else if(this.currentContainer!=this.containers[f]){c=1E4;g=null;for(var e=this.positionAbs[this.containers[f].floating?"left":"top"],i=this.items.length-1;i>=0;i--)if(a.ui.contains(this.containers[f].element[0],this.items[i].item[0])){var b=this.items[i][this.containers[f].floating?"left":"top"];if(Math.abs(b- +e)this.containment[2])e=this.containment[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>this.containment[3])i=this.containment[3]+this.offset.click.top}if(c.grid){i=this.originalPageY+Math.round((i- +this.originalPageY)/c.grid[1])*c.grid[1];i=this.containment?!(i-this.offset.click.topthis.containment[3])?i:!(i-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left=0;g--)if(a.ui.contains(this.containers[g].element[0],this.currentItem[0])&&!c){f.push(function(e){return function(i){e._trigger("receive",i,this._uiHash(this))}}.call(this,this.containers[g]));f.push(function(e){return function(i){e._trigger("update",i,this._uiHash(this))}}.call(this,this.containers[g]))}}for(g=this.containers.length-1;g>=0;g--){c||f.push(function(e){return function(i){e._trigger("deactivate",i,this._uiHash(this))}}.call(this, +this.containers[g]));if(this.containers[g].containerCache.over){f.push(function(e){return function(i){e._trigger("out",i,this._uiHash(this))}}.call(this,this.containers[g]));this.containers[g].containerCache.over=0}}this._storedCursor&&a("body").css("cursor",this._storedCursor);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(!c){this._trigger("beforeStop", +d,this._uiHash());for(g=0;g").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}); +n.wrap(m);m=n.parent();if(n.css("position")=="static"){m.css({position:"relative"});n.css({position:"relative"})}else{a.extend(k,{position:n.css("position"),zIndex:n.css("z-index")});a.each(["top","left","bottom","right"],function(p,q){k[q]=n.css(q);if(isNaN(parseInt(k[q],10)))k[q]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return m.css(k).show()},removeWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent().replaceWith(n);return n},setTransition:function(n, +k,m,p){p=p||{};a.each(k,function(q,s){unit=n.cssUnit(s);if(unit[0]>0)p[s]=unit[0]*m+unit[1]});return p}});a.fn.extend({effect:function(n){var k=b.apply(this,arguments),m={options:k[1],duration:k[2],callback:k[3]};k=m.options.mode;var p=a.effects[n];if(a.fx.off||!p)return k?this[k](m.duration,m.callback):this.each(function(){m.callback&&m.callback.call(this)});return p.call(this,m)},_show:a.fn.show,show:function(n){if(h(n))return this._show.apply(this,arguments);else{var k=b.apply(this,arguments); +k[1].mode="show";return this.effect.apply(this,k)}},_hide:a.fn.hide,hide:function(n){if(h(n))return this._hide.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:a.fn.toggle,toggle:function(n){if(h(n)||typeof n==="boolean"||a.isFunction(n))return this.__toggle.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(n){var k=this.css(n),m=[];a.each(["em","px","%", +"pt"],function(p,q){if(k.indexOf(q)>0)m=[parseFloat(k),q]});return m}});a.easing.jswing=a.easing.swing;a.extend(a.easing,{def:"easeOutQuad",swing:function(n,k,m,p,q){return a.easing[a.easing.def](n,k,m,p,q)},easeInQuad:function(n,k,m,p,q){return p*(k/=q)*k+m},easeOutQuad:function(n,k,m,p,q){return-p*(k/=q)*(k-2)+m},easeInOutQuad:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k+m;return-p/2*(--k*(k-2)-1)+m},easeInCubic:function(n,k,m,p,q){return p*(k/=q)*k*k+m},easeOutCubic:function(n,k,m,p,q){return p* +((k=k/q-1)*k*k+1)+m},easeInOutCubic:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k+m;return p/2*((k-=2)*k*k+2)+m},easeInQuart:function(n,k,m,p,q){return p*(k/=q)*k*k*k+m},easeOutQuart:function(n,k,m,p,q){return-p*((k=k/q-1)*k*k*k-1)+m},easeInOutQuart:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k+m;return-p/2*((k-=2)*k*k*k-2)+m},easeInQuint:function(n,k,m,p,q){return p*(k/=q)*k*k*k*k+m},easeOutQuint:function(n,k,m,p,q){return p*((k=k/q-1)*k*k*k*k+1)+m},easeInOutQuint:function(n,k,m,p,q){if((k/= +q/2)<1)return p/2*k*k*k*k*k+m;return p/2*((k-=2)*k*k*k*k+2)+m},easeInSine:function(n,k,m,p,q){return-p*Math.cos(k/q*(Math.PI/2))+p+m},easeOutSine:function(n,k,m,p,q){return p*Math.sin(k/q*(Math.PI/2))+m},easeInOutSine:function(n,k,m,p,q){return-p/2*(Math.cos(Math.PI*k/q)-1)+m},easeInExpo:function(n,k,m,p,q){return k==0?m:p*Math.pow(2,10*(k/q-1))+m},easeOutExpo:function(n,k,m,p,q){return k==q?m+p:p*(-Math.pow(2,-10*k/q)+1)+m},easeInOutExpo:function(n,k,m,p,q){if(k==0)return m;if(k==q)return m+p;if((k/= +q/2)<1)return p/2*Math.pow(2,10*(k-1))+m;return p/2*(-Math.pow(2,-10*--k)+2)+m},easeInCirc:function(n,k,m,p,q){return-p*(Math.sqrt(1-(k/=q)*k)-1)+m},easeOutCirc:function(n,k,m,p,q){return p*Math.sqrt(1-(k=k/q-1)*k)+m},easeInOutCirc:function(n,k,m,p,q){if((k/=q/2)<1)return-p/2*(Math.sqrt(1-k*k)-1)+m;return p/2*(Math.sqrt(1-(k-=2)*k)+1)+m},easeInElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r").css({position:"absolute",visibility:"visible",left:-j*(i/f),top:-h*(b/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:i/f,height:b/c,left:e.left+j*(i/f)+(d.options.mode=="show"?(j-Math.floor(f/2))*(i/f):0),top:e.top+h*(b/c)+(d.options.mode=="show"?(h-Math.floor(c/2))*(b/c):0),opacity:d.options.mode=="show"?0:1}).animate({left:e.left+j*(i/f)+(d.options.mode=="show"?0:(j-Math.floor(f/2))*(i/f)),top:e.top+ +h*(b/c)+(d.options.mode=="show"?0:(h-Math.floor(c/2))*(b/c)),opacity:d.options.mode=="show"?1:0},d.duration||500);setTimeout(function(){d.options.mode=="show"?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();d.callback&&d.callback.apply(g[0]);g.dequeue();a("div.ui-effects-explode").remove()},d.duration||500)})}})(jQuery); +(function(a){a.effects.fade=function(d){return this.queue(function(){var c=a(this),f=a.effects.setMode(c,d.options.mode||"hide");c.animate({opacity:f},{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(a){a.effects.fold=function(d){return this.queue(function(){var c=a(this),f=["position","top","bottom","left","right"],g=a.effects.setMode(c,d.options.mode||"hide"),e=d.options.size||15,i=!!d.options.horizFirst,b=d.duration?d.duration/2:a.fx.speeds._default/2;a.effects.save(c,f);c.show();var h=a.effects.createWrapper(c).css({overflow:"hidden"}),j=g=="show"!=i,l=j?["width","height"]:["height","width"];j=j?[h.width(),h.height()]:[h.height(),h.width()];var o=/([0-9]+)%/.exec(e);if(o)e=parseInt(o[1], +10)/100*j[g=="hide"?0:1];if(g=="show")h.css(i?{height:0,width:e}:{height:e,width:0});i={};o={};i[l[0]]=g=="show"?j[0]:e;o[l[1]]=g=="show"?j[1]:0;h.animate(i,b,d.options.easing).animate(o,b,d.options.easing,function(){g=="hide"&&c.hide();a.effects.restore(c,f);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(a){a.effects.highlight=function(d){return this.queue(function(){var c=a(this),f=["backgroundImage","backgroundColor","opacity"],g=a.effects.setMode(c,d.options.mode||"show"),e={backgroundColor:c.css("backgroundColor")};if(g=="hide")e.opacity=0;a.effects.save(c,f);c.show().css({backgroundImage:"none",backgroundColor:d.options.color||"#ffff99"}).animate(e,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){g=="hide"&&c.hide();a.effects.restore(c,f);g=="show"&&!a.support.opacity&& +this.style.removeAttribute("filter");d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(a){a.effects.pulsate=function(d){return this.queue(function(){var c=a(this),f=a.effects.setMode(c,d.options.mode||"show");times=(d.options.times||5)*2-1;duration=d.duration?d.duration/2:a.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;if(!isVisible){c.css("opacity",0).show();animateTo=1}if(f=="hide"&&isVisible||f=="show"&&!isVisible)times--;for(f=0;f').appendTo(document.body).addClass(d.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,d.duration,d.options.easing,function(){e.remove();d.callback&&d.callback.apply(c[0],arguments); +c.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,c=d.options;d.running=0;d.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");d.headers= +d.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")});d.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var f=d.element.find("a").filter(c.navigationFilter).eq(0);if(f.length){var g=f.closest(".ui-accordion-header");d.active=g.length?g:f.closest(".ui-accordion-content").prev()}}d.active=d._findActive(d.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");d.active.next().addClass("ui-accordion-content-active");d._createIcons();d.resize();d.element.attr("role","tablist");d.headers.attr("role","tab").bind("keydown.accordion", +function(e){return d._keydown(e)}).next().attr("role","tabpanel");d.headers.not(d.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();d.active.length?d.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):d.headers.eq(0).attr("tabIndex",0);a.browser.safari||d.headers.find("a").attr("tabIndex",-1);c.event&&d.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(e){d._clickHandler.call(d,e,this);e.preventDefault()})},_createIcons:function(){var d= +this.options;if(d.icons){a("").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(d.icons.header).toggleClass(d.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 d=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(d.autoHeight||d.fillHeight)c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(d,c){a.Widget.prototype._setOption.apply(this,arguments);d=="active"&&this.activate(c);if(d=="icons"){this._destroyIcons(); +c&&this._createIcons()}if(d=="disabled")this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(d){if(!(this.options.disabled||d.altKey||d.ctrlKey)){var c=a.ui.keyCode,f=this.headers.length,g=this.headers.index(d.target),e=false;switch(d.keyCode){case c.RIGHT:case c.DOWN:e=this.headers[(g+1)%f];break;case c.LEFT:case c.UP:e=this.headers[(g-1+f)%f];break;case c.SPACE:case c.ENTER:this._clickHandler({target:d.target},d.target); +d.preventDefault()}if(e){a(d.target).attr("tabIndex",-1);a(e).attr("tabIndex",0);e.focus();return false}return true}},resize:function(){var d=this.options,c;if(d.fillSpace){if(a.browser.msie){var f=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();a.browser.msie&&this.element.parent().css("overflow",f);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())}).height(c)}return this},activate:function(d){this.options.active=d;d=this._findActive(d)[0];this._clickHandler({target:d},d);return this},_findActive:function(d){return d?typeof d==="number"?this.headers.filter(":eq("+d+")"):this.headers.not(this.headers.not(d)):d===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(d,c){var f=this.options; +if(!f.disabled)if(d.target){d=a(d.currentTarget||c);c=d[0]===this.active[0];f.active=f.collapsible&&c?false:this.headers.index(d);if(!(this.running||!f.collapsible&&c)){var g=this.active;h=d.next();i=this.active.next();b={options:f,newHeader:c&&f.collapsible?a([]):d,oldHeader:this.active,newContent:c&&f.collapsible?a([]):h,oldContent:i};var e=this.headers.index(this.active[0])>this.headers.index(d[0]);this.active=c?a([]):d;this._toggle(h,i,b,c,e);g.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(f.icons.headerSelected).addClass(f.icons.header); +if(!c){d.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(f.icons.header).addClass(f.icons.headerSelected);d.next().addClass("ui-accordion-content-active")}}}else if(f.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(f.icons.headerSelected).addClass(f.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +b={options:f,newHeader:a([]),oldHeader:f.active,newContent:a([]),oldContent:i},h=this.active=a([]);this._toggle(h,i,b)}},_toggle:function(d,c,f,g,e){var i=this,b=i.options;i.toShow=d;i.toHide=c;i.data=f;var h=function(){if(i)return i._completed.apply(i,arguments)};i._trigger("changestart",null,i.data);i.running=c.size()===0?d.size():c.size();if(b.animated){f={};f=b.collapsible&&g?{toShow:a([]),toHide:c,complete:h,down:e,autoHeight:b.autoHeight||b.fillSpace}:{toShow:d,toHide:c,complete:h,down:e,autoHeight:b.autoHeight|| +b.fillSpace};if(!b.proxied)b.proxied=b.animated;if(!b.proxiedDuration)b.proxiedDuration=b.duration;b.animated=a.isFunction(b.proxied)?b.proxied(f):b.proxied;b.duration=a.isFunction(b.proxiedDuration)?b.proxiedDuration(f):b.proxiedDuration;g=a.ui.accordion.animations;var j=b.duration,l=b.animated;if(l&&!g[l]&&!a.easing[l])l="slide";g[l]||(g[l]=function(o){this.slide(o,{easing:l,duration:j||700})});g[l](f)}else{if(b.collapsible&&g)d.toggle();else{c.hide();d.show()}h(true)}c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();d.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(d){this.running=d?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});a.extend(a.ui.accordion,{version:"1.8.13", +animations:{slide:function(d,c){d=a.extend({easing:"swing",duration:300},d,c);if(d.toHide.size())if(d.toShow.size()){var f=d.toShow.css("overflow"),g=0,e={},i={},b;c=d.toShow;b=c[0].style.width;c.width(parseInt(c.parent().width(),10)-parseInt(c.css("paddingLeft"),10)-parseInt(c.css("paddingRight"),10)-(parseInt(c.css("borderLeftWidth"),10)||0)-(parseInt(c.css("borderRightWidth"),10)||0));a.each(["height","paddingTop","paddingBottom"],function(h,j){i[j]="hide";h=(""+a.css(d.toShow[0],j)).match(/^([\d+-.]+)(.*)$/); +e[j]={value:h[1],unit:h[2]||"px"}});d.toShow.css({height:0,overflow:"hidden"}).show();d.toHide.filter(":hidden").each(d.complete).end().filter(":visible").animate(i,{step:function(h,j){if(j.prop=="height")g=j.end-j.start===0?0:(j.now-j.start)/(j.end-j.start);d.toShow[0].style[j.prop]=g*e[j.prop].value+e[j.prop].unit},duration:d.duration,easing:d.easing,complete:function(){d.autoHeight||d.toShow.css("height","");d.toShow.css({width:b,overflow:f});d.complete()}})}else d.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},d);else d.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},d)},bounceslide:function(d){this.slide(d,{easing:d.down?"easeOutBounce":"swing",duration:d.down?1E3:200})}}})})(jQuery); +(function(a){var d=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,f=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(e){if(!(c.options.disabled||c.element.attr("readonly"))){g= +false;var i=a.ui.keyCode;switch(e.keyCode){case i.PAGE_UP:c._move("previousPage",e);break;case i.PAGE_DOWN:c._move("nextPage",e);break;case i.UP:c._move("previous",e);e.preventDefault();break;case i.DOWN:c._move("next",e);e.preventDefault();break;case i.ENTER:case i.NUMPAD_ENTER:if(c.menu.active){g=true;e.preventDefault()}case i.TAB:if(!c.menu.active)return;c.menu.select(e);break;case i.ESCAPE:c.element.val(c.term);c.close(e);break;default:clearTimeout(c.searching);c.searching=setTimeout(function(){if(c.term!= +c.element.val()){c.selectedItem=null;c.search(null,e)}},c.options.delay);break}}}).bind("keypress.autocomplete",function(e){if(g){g=false;e.preventDefault()}}).bind("focus.autocomplete",function(){if(!c.options.disabled){c.selectedItem=null;c.previous=c.element.val()}}).bind("blur.autocomplete",function(e){if(!c.options.disabled){clearTimeout(c.searching);c.closing=setTimeout(function(){c.close(e);c._change(e)},150)}});this._initSource();this.response=function(){return c._response.apply(c,arguments)}; +this.menu=a("
    ").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",f)[0]).mousedown(function(e){var i=c.menu.element[0];a(e.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(b){b.target!==c.element[0]&&b.target!==i&&!a.ui.contains(i,b.target)&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(e,i){i=i.item.data("item.autocomplete");false!==c._trigger("focus",e,{item:i})&&/^key/.test(e.originalEvent.type)&& +c.element.val(i.value)},selected:function(e,i){var b=i.item.data("item.autocomplete"),h=c.previous;if(c.element[0]!==f.activeElement){c.element.focus();c.previous=h;setTimeout(function(){c.previous=h;c.selectedItem=b},1)}false!==c._trigger("select",e,{item:b})&&c.element.val(b.value);c.term=c.element.val();c.close(e);c.selectedItem=b},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); +a.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();a.Widget.prototype.destroy.call(this)},_setOption:function(c,f){a.Widget.prototype._setOption.apply(this,arguments);c==="source"&&this._initSource();if(c==="appendTo")this.menu.element.appendTo(a(f||"body",this.element[0].ownerDocument)[0]);c==="disabled"&& +f&&this.xhr&&this.xhr.abort()},_initSource:function(){var c=this,f,g;if(a.isArray(this.options.source)){f=this.options.source;this.source=function(e,i){i(a.ui.autocomplete.filter(f,e.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(e,i){c.xhr&&c.xhr.abort();c.xhr=a.ajax({url:g,data:e,dataType:"json",autocompleteRequest:++d,success:function(b){this.autocompleteRequest===d&&i(b)},error:function(){this.autocompleteRequest===d&&i([])}})}}else this.source= +this.options.source},search:function(c,f){c=c!=null?c:this.element.val();this.term=this.element.val();if(c.length").data("item.autocomplete",f).append(a("").text(f.label)).appendTo(c)},_move:function(c,f){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(c)||this.menu.last()&&/^next/.test(c)){this.element.val(this.term);this.menu.deactivate()}else this.menu[c](f);else this.search(null,f)},widget:function(){return this.menu.element}});a.extend(a.ui.autocomplete,{escapeRegex:function(c){return c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, +"\\$&")},filter:function(c,f){var g=new RegExp(a.ui.autocomplete.escapeRegex(f),"i");return a.grep(c,function(e){return g.test(e.label||e.value||e)})}})})(jQuery); +(function(a){a.widget("ui.menu",{_create:function(){var d=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){if(a(c.target).closest(".ui-menu-item a").length){c.preventDefault();d.select(c)}});this.refresh()},refresh:function(){var d=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){d.activate(c,a(this).parent())}).mouseleave(function(){d.deactivate()})},activate:function(d,c){this.deactivate();if(this.hasScroll()){var f=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),e=this.element.height();if(f<0)this.element.scrollTop(g+f);else f>=e&&this.element.scrollTop(g+f-e+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",d,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(d){this.move("next",".ui-menu-item:first",d)},previous:function(d){this.move("prev",".ui-menu-item:last",d)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(d,c,f){if(this.active){d=this.active[d+"All"](".ui-menu-item").eq(0);d.length?this.activate(f,d):this.activate(f,this.element.children(c))}else this.activate(f, +this.element.children(c))},nextPage:function(d){if(this.hasScroll())if(!this.active||this.last())this.activate(d,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,f=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var e=a(this).offset().top-c-f+a(this).height();return e<10&&e>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(d,g)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active|| +this.last()?":first":":last"))},previousPage:function(d){if(this.hasScroll())if(!this.active||this.first())this.activate(d,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=a(this).offset().top-c+f-a(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(d,result)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active|| +this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(g.empty()).text(),i=this.options.icons,b=i.primary&&i.secondary,h=[];if(i.primary||i.secondary){if(this.options.text)h.push("ui-button-text-icon"+(b?"s":i.primary?"-primary":"-secondary"));i.primary&&g.prepend("");i.secondary&&g.append("");if(!this.options.text){h.push(b?"ui-button-icons-only": +"ui-button-icon-only");this.hasTitle||g.attr("title",e)}}else h.push("ui-button-text-only");g.addClass(h.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(g,e){g==="disabled"&&this.buttons.button("option",g,e);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(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 a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(a,d){function c(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=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:"fadeIn",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:"fast",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};a.extend(this._defaults,this.regional[""]);this.dpDiv=f(a('
    '))}function f(b){return b.delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a", +"mouseout",function(){a(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&a(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&a(this).removeClass("ui-datepicker-next-hover")}).delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a","mouseover",function(){if(!a.datepicker._isDisabledDatepicker(i.inline?b.parent()[0]:i.input[0])){a(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); +a(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&a(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&a(this).addClass("ui-datepicker-next-hover")}})}function g(b,h){a.extend(b,h);for(var j in h)if(h[j]==null||h[j]==d)b[j]=h[j];return b}a.extend(a.ui,{datepicker:{version:"1.8.13"}});var e=(new Date).getTime(),i;a.extend(c.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)}, +_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(b,h){var j=null;for(var l in this._defaults){var o=b.getAttribute("date:"+l);if(o){j=j||{};try{j[l]=eval(o)}catch(n){j[l]=o}}}l=b.nodeName.toLowerCase();o=l=="div"||l=="span";if(!b.id){this.uuid+=1;b.id="dp"+this.uuid}var k=this._newInst(a(b),o);k.settings=a.extend({},h||{},j||{});if(l=="input")this._connectDatepicker(b,k);else o&&this._inlineDatepicker(b,k)},_newInst:function(b, +h){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:b,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:h,dpDiv:!h?this.dpDiv:f(a('
    '))}},_connectDatepicker:function(b,h){var j=a(b);h.append=a([]);h.trigger=a([]);if(!j.hasClass(this.markerClassName)){this._attachments(j,h);j.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", +function(l,o,n){h.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(h,o)});this._autoSize(h);a.data(b,"datepicker",h)}},_attachments:function(b,h){var j=this._get(h,"appendText"),l=this._get(h,"isRTL");h.append&&h.append.remove();if(j){h.append=a(''+j+"");b[l?"before":"after"](h.append)}b.unbind("focus",this._showDatepicker);h.trigger&&h.trigger.remove();j=this._get(h,"showOn");if(j=="focus"||j=="both")b.focus(this._showDatepicker); +if(j=="button"||j=="both"){j=this._get(h,"buttonText");var o=this._get(h,"buttonImage");h.trigger=a(this._get(h,"buttonImageOnly")?a("").addClass(this._triggerClass).attr({src:o,alt:j,title:j}):a('').addClass(this._triggerClass).html(o==""?j:a("").attr({src:o,alt:j,title:j})));b[l?"before":"after"](h.trigger);h.trigger.click(function(){a.datepicker._datepickerShowing&&a.datepicker._lastInput==b[0]?a.datepicker._hideDatepicker():a.datepicker._showDatepicker(b[0]); +return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var h=new Date(2009,11,20),j=this._get(b,"dateFormat");if(j.match(/[DM]/)){var l=function(o){for(var n=0,k=0,m=0;mn){n=o[m].length;k=m}return k};h.setMonth(l(this._get(b,j.match(/MM/)?"monthNames":"monthNamesShort")));h.setDate(l(this._get(b,j.match(/DD/)?"dayNames":"dayNamesShort"))+20-h.getDay())}b.input.attr("size",this._formatDate(b,h).length)}},_inlineDatepicker:function(b,h){var j=a(b); +if(!j.hasClass(this.markerClassName)){j.addClass(this.markerClassName).append(h.dpDiv).bind("setData.datepicker",function(l,o,n){h.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(h,o)});a.data(b,"datepicker",h);this._setDate(h,this._getDefaultDate(h),true);this._updateDatepicker(h);this._updateAlternate(h);h.dpDiv.show()}},_dialogDatepicker:function(b,h,j,l,o){b=this._dialogInst;if(!b){this.uuid+=1;this._dialogInput=a(''); +this._dialogInput.keydown(this._doKeyDown);a("body").append(this._dialogInput);b=this._dialogInst=this._newInst(this._dialogInput,false);b.settings={};a.data(this._dialogInput[0],"datepicker",b)}g(b.settings,l||{});h=h&&h.constructor==Date?this._formatDate(b,h):h;this._dialogInput.val(h);this._pos=o?o.length?o:[o.pageX,o.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/ +2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");b.settings.onSelect=j;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);a.blockUI&&a.blockUI(this.dpDiv);a.data(this._dialogInput[0],"datepicker",b);return this},_destroyDatepicker:function(b){var h=a(b),j=a.data(b,"datepicker");if(h.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();a.removeData(b, +"datepicker");if(l=="input"){j.append.remove();j.trigger.remove();h.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(l=="div"||l=="span")h.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(b){var h=a(b),j=a.data(b,"datepicker");if(h.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=false;j.trigger.filter("button").each(function(){this.disabled= +false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(l=="div"||l=="span"){h=h.children("."+this._inlineClass);h.children().removeClass("ui-state-disabled");h.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o})}},_disableDatepicker:function(b){var h=a(b),j=a.data(b,"datepicker");if(h.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled= +true;j.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(l=="div"||l=="span"){h=h.children("."+this._inlineClass);h.children().addClass("ui-state-disabled");h.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o});this._disabledInputs[this._disabledInputs.length]=b}},_isDisabledDatepicker:function(b){if(!b)return false; +for(var h=0;h-1}},_doKeyUp:function(b){b=a.datepicker._getInst(b.target);if(b.input.val()!=b.lastVal)try{if(a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,a.datepicker._getFormatConfig(b))){a.datepicker._setDateFromField(b); +a.datepicker._updateAlternate(b);a.datepicker._updateDatepicker(b)}}catch(h){a.datepicker.log(h)}return true},_showDatepicker:function(b){b=b.target||b;if(b.nodeName.toLowerCase()!="input")b=a("input",b.parentNode)[0];if(!(a.datepicker._isDisabledDatepicker(b)||a.datepicker._lastInput==b)){var h=a.datepicker._getInst(b);a.datepicker._curInst&&a.datepicker._curInst!=h&&a.datepicker._curInst.dpDiv.stop(true,true);var j=a.datepicker._get(h,"beforeShow");g(h.settings,j?j.apply(b,[b,h]):{});h.lastVal= +null;a.datepicker._lastInput=b;a.datepicker._setDateFromField(h);if(a.datepicker._inDialog)b.value="";if(!a.datepicker._pos){a.datepicker._pos=a.datepicker._findPos(b);a.datepicker._pos[1]+=b.offsetHeight}var l=false;a(b).parents().each(function(){l|=a(this).css("position")=="fixed";return!l});if(l&&a.browser.opera){a.datepicker._pos[0]-=document.documentElement.scrollLeft;a.datepicker._pos[1]-=document.documentElement.scrollTop}j={left:a.datepicker._pos[0],top:a.datepicker._pos[1]};a.datepicker._pos= +null;h.dpDiv.empty();h.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});a.datepicker._updateDatepicker(h);j=a.datepicker._checkOffset(h,j,l);h.dpDiv.css({position:a.datepicker._inDialog&&a.blockUI?"static":l?"fixed":"absolute",display:"none",left:j.left+"px",top:j.top+"px"});if(!h.inline){j=a.datepicker._get(h,"showAnim");var o=a.datepicker._get(h,"duration"),n=function(){var k=h.dpDiv.find("iframe.ui-datepicker-cover");if(k.length){var m=a.datepicker._getBorders(h.dpDiv);k.css({left:-m[0], +top:-m[1],width:h.dpDiv.outerWidth(),height:h.dpDiv.outerHeight()})}};h.dpDiv.zIndex(a(b).zIndex()+1);a.datepicker._datepickerShowing=true;a.effects&&a.effects[j]?h.dpDiv.show(j,a.datepicker._get(h,"showOptions"),o,n):h.dpDiv[j||"show"](j?o:null,n);if(!j||!o)n();h.input.is(":visible")&&!h.input.is(":disabled")&&h.input.focus();a.datepicker._curInst=h}}},_updateDatepicker:function(b){var h=a.datepicker._getBorders(b.dpDiv);i=b;b.dpDiv.empty().append(this._generateHTML(b));var j=b.dpDiv.find("iframe.ui-datepicker-cover"); +j.length&&j.css({left:-h[0],top:-h[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()});b.dpDiv.find("."+this._dayOverClass+" a").mouseover();h=this._getNumberOfMonths(b);j=h[1];b.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");j>1&&b.dpDiv.addClass("ui-datepicker-multi-"+j).css("width",17*j+"em");b.dpDiv[(h[0]!=1||h[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");b.dpDiv[(this._get(b,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"); +b==a.datepicker._curInst&&a.datepicker._datepickerShowing&&b.input&&b.input.is(":visible")&&!b.input.is(":disabled")&&b.input[0]!=document.activeElement&&b.input.focus();if(b.yearshtml){var l=b.yearshtml;setTimeout(function(){l===b.yearshtml&&b.yearshtml&&b.dpDiv.find("select.ui-datepicker-year:first").replaceWith(b.yearshtml);l=b.yearshtml=null},0)}},_getBorders:function(b){var h=function(j){return{thin:1,medium:2,thick:3}[j]||j};return[parseFloat(h(b.css("border-left-width"))),parseFloat(h(b.css("border-top-width")))]}, +_checkOffset:function(b,h,j){var l=b.dpDiv.outerWidth(),o=b.dpDiv.outerHeight(),n=b.input?b.input.outerWidth():0,k=b.input?b.input.outerHeight():0,m=document.documentElement.clientWidth+a(document).scrollLeft(),p=document.documentElement.clientHeight+a(document).scrollTop();h.left-=this._get(b,"isRTL")?l-n:0;h.left-=j&&h.left==b.input.offset().left?a(document).scrollLeft():0;h.top-=j&&h.top==b.input.offset().top+k?a(document).scrollTop():0;h.left-=Math.min(h.left,h.left+l>m&&m>l?Math.abs(h.left+l- +m):0);h.top-=Math.min(h.top,h.top+o>p&&p>o?Math.abs(o+k):0);return h},_findPos:function(b){for(var h=this._get(this._getInst(b),"isRTL");b&&(b.type=="hidden"||b.nodeType!=1||a.expr.filters.hidden(b));)b=b[h?"previousSibling":"nextSibling"];b=a(b).offset();return[b.left,b.top]},_hideDatepicker:function(b){var h=this._curInst;if(!(!h||b&&h!=a.data(b,"datepicker")))if(this._datepickerShowing){b=this._get(h,"showAnim");var j=this._get(h,"duration"),l=function(){a.datepicker._tidyDialog(h);this._curInst= +null};a.effects&&a.effects[b]?h.dpDiv.hide(b,a.datepicker._get(h,"showOptions"),j,l):h.dpDiv[b=="slideDown"?"slideUp":b=="fadeIn"?"fadeOut":"hide"](b?j:null,l);b||l();if(b=this._get(h,"onClose"))b.apply(h.input?h.input[0]:null,[h.input?h.input.val():"",h]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(a.blockUI){a.unblockUI();a("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(b){b.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(b){if(a.datepicker._curInst){b=a(b.target);b[0].id!=a.datepicker._mainDivId&&b.parents("#"+a.datepicker._mainDivId).length==0&&!b.hasClass(a.datepicker.markerClassName)&&!b.hasClass(a.datepicker._triggerClass)&&a.datepicker._datepickerShowing&&!(a.datepicker._inDialog&&a.blockUI)&&a.datepicker._hideDatepicker()}},_adjustDate:function(b,h,j){b=a(b);var l=this._getInst(b[0]);if(!this._isDisabledDatepicker(b[0])){this._adjustInstDate(l,h+(j=="M"?this._get(l,"showCurrentAtPos"): +0),j);this._updateDatepicker(l)}},_gotoToday:function(b){b=a(b);var h=this._getInst(b[0]);if(this._get(h,"gotoCurrent")&&h.currentDay){h.selectedDay=h.currentDay;h.drawMonth=h.selectedMonth=h.currentMonth;h.drawYear=h.selectedYear=h.currentYear}else{var j=new Date;h.selectedDay=j.getDate();h.drawMonth=h.selectedMonth=j.getMonth();h.drawYear=h.selectedYear=j.getFullYear()}this._notifyChange(h);this._adjustDate(b)},_selectMonthYear:function(b,h,j){b=a(b);var l=this._getInst(b[0]);l._selectingMonthYear= +false;l["selected"+(j=="M"?"Month":"Year")]=l["draw"+(j=="M"?"Month":"Year")]=parseInt(h.options[h.selectedIndex].value,10);this._notifyChange(l);this._adjustDate(b)},_clickMonthYear:function(b){var h=this._getInst(a(b)[0]);h.input&&h._selectingMonthYear&&setTimeout(function(){h.input.focus()},0);h._selectingMonthYear=!h._selectingMonthYear},_selectDay:function(b,h,j,l){var o=a(b);if(!(a(l).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))){o=this._getInst(o[0]);o.selectedDay=o.currentDay= +a("a",l).html();o.selectedMonth=o.currentMonth=h;o.selectedYear=o.currentYear=j;this._selectDate(b,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear))}},_clearDate:function(b){b=a(b);this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(b,h){b=this._getInst(a(b)[0]);h=h!=null?h:this._formatDate(b);b.input&&b.input.val(h);this._updateAlternate(b);var j=this._get(b,"onSelect");if(j)j.apply(b.input?b.input[0]:null,[h,b]);else b.input&&b.input.trigger("change");if(b.inline)this._updateDatepicker(b); +else{this._hideDatepicker();this._lastInput=b.input[0];typeof b.input[0]!="object"&&b.input.focus();this._lastInput=null}},_updateAlternate:function(b){var h=this._get(b,"altField");if(h){var j=this._get(b,"altFormat")||this._get(b,"dateFormat"),l=this._getDate(b),o=this.formatDate(j,l,this._getFormatConfig(b));a(h).each(function(){a(this).val(o)})}},noWeekends:function(b){b=b.getDay();return[b>0&&b<6,""]},iso8601Week:function(b){b=new Date(b.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var h= +b.getTime();b.setMonth(0);b.setDate(1);return Math.floor(Math.round((h-b)/864E5)/7)+1},parseDate:function(b,h,j){if(b==null||h==null)throw"Invalid arguments";h=typeof h=="object"?h.toString():h+"";if(h=="")return null;var l=(j?j.shortYearCutoff:null)||this._defaults.shortYearCutoff;l=typeof l!="string"?l:(new Date).getFullYear()%100+parseInt(l,10);for(var o=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,n=(j?j.dayNames:null)||this._defaults.dayNames,k=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort, +m=(j?j.monthNames:null)||this._defaults.monthNames,p=j=-1,q=-1,s=-1,r=false,u=function(y){(y=G+1-1){p=1;q=s;do{l=this._getDaysInMonth(j,p-1);if(q<=l)break;p++;q-=l}while(1)}C=this._daylightSavingAdjust(new Date(j,p-1,q));if(C.getFullYear()!= +j||C.getMonth()+1!=p||C.getDate()!=q)throw"Invalid date";return C},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:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(b,h,j){if(!h)return"";var l=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,o=(j?j.dayNames:null)||this._defaults.dayNames, +n=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort;j=(j?j.monthNames:null)||this._defaults.monthNames;var k=function(u){(u=r+112?b.getHours()+2:0);return b},_setDate:function(b,h,j){var l=!h,o=b.selectedMonth,n=b.selectedYear;h=this._restrictMinMax(b,this._determineDate(b,h,new Date));b.selectedDay=b.currentDay=h.getDate();b.drawMonth=b.selectedMonth=b.currentMonth=h.getMonth();b.drawYear=b.selectedYear=b.currentYear=h.getFullYear();if((o!=b.selectedMonth||n!=b.selectedYear)&&!j)this._notifyChange(b);this._adjustInstDate(b);if(b.input)b.input.val(l?"":this._formatDate(b))},_getDate:function(b){return!b.currentYear|| +b.input&&b.input.val()==""?null:this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay))},_generateHTML:function(b){var h=new Date;h=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth(),h.getDate()));var j=this._get(b,"isRTL"),l=this._get(b,"showButtonPanel"),o=this._get(b,"hideIfNoPrevNext"),n=this._get(b,"navigationAsDateFormat"),k=this._getNumberOfMonths(b),m=this._get(b,"showCurrentAtPos"),p=this._get(b,"stepMonths"),q=k[0]!=1||k[1]!=1,s=this._daylightSavingAdjust(!b.currentDay? +new Date(9999,9,9):new Date(b.currentYear,b.currentMonth,b.currentDay)),r=this._getMinMaxDate(b,"min"),u=this._getMinMaxDate(b,"max");m=b.drawMonth-m;var v=b.drawYear;if(m<0){m+=12;v--}if(u){var w=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-k[0]*k[1]+1,u.getDate()));for(w=r&&ww;){m--;if(m<0){m=11;v--}}}b.drawMonth=m;b.drawYear=v;w=this._get(b,"prevText");w=!n?w:this.formatDate(w,this._daylightSavingAdjust(new Date(v,m-p,1)),this._getFormatConfig(b)); +w=this._canAdjustMonth(b,-1,v,m)?''+w+"":o?"":''+w+"";var x=this._get(b,"nextText");x=!n?x:this.formatDate(x,this._daylightSavingAdjust(new Date(v, +m+p,1)),this._getFormatConfig(b));o=this._canAdjustMonth(b,+1,v,m)?''+x+"":o?"":''+x+"";p=this._get(b,"currentText");x=this._get(b,"gotoCurrent")&& +b.currentDay?s:h;p=!n?p:this.formatDate(p,x,this._getFormatConfig(b));n=!b.inline?'":"";l=l?'
    '+(j?n:"")+(this._isInRange(b,x)?'":"")+(j?"":n)+"
    ":"";n=parseInt(this._get(b,"firstDay"),10);n=isNaN(n)?0:n;p=this._get(b,"showWeek");x=this._get(b,"dayNames");this._get(b,"dayNamesShort");var z=this._get(b,"dayNamesMin"),G=this._get(b,"monthNames"),C=this._get(b,"monthNamesShort"),y=this._get(b,"beforeShowDay"),H=this._get(b,"showOtherMonths"),N=this._get(b,"selectOtherMonths");this._get(b,"calculateWeek");for(var J=this._getDefaultDate(b),D="",E=0;E1)switch(L){case 0:F+=" ui-datepicker-group-first";B=" ui-corner-"+(j?"right":"left");break;case k[1]-1:F+=" ui-datepicker-group-last";B=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle";B="";break}F+='">'}F+='
    '+(/all|left/.test(B)&&E==0?j? +o:w:"")+(/all|right/.test(B)&&E==0?j?w:o:"")+this._generateMonthYearHeader(b,m,v,r,u,E>0||L>0,G,C)+'
    ';var I=p?'":"";for(B=0;B<7;B++){var A=(B+n)%7;I+="=5?' class="ui-datepicker-week-end"':"")+'>'+z[A]+""}F+=I+"";I=this._getDaysInMonth(v,m);if(v==b.selectedYear&&m==b.selectedMonth)b.selectedDay=Math.min(b.selectedDay, +I);B=(this._getFirstDayOfMonth(v,m)-n+7)%7;I=q?6:Math.ceil((B+I)/7);A=this._daylightSavingAdjust(new Date(v,m,1-B));for(var R=0;R";var S=!p?"":'";for(B=0;B<7;B++){var M=y?y.apply(b.input?b.input[0]:null,[A]):[true,""],K=A.getMonth()!=m,O=K&&!N||!M[0]||r&&Au;S+='";A.setDate(A.getDate()+1);A=this._daylightSavingAdjust(A)}F+=S+""}m++;if(m>11){m=0;v++}F+="
    '+this._get(b,"weekHeader")+"
    '+this._get(b,"calculateWeek")(A)+""+(K&&!H?" ":O?''+A.getDate()+ +"":''+A.getDate()+"")+"
    "+(q?""+(k[0]>0&&L==k[1]-1?'
    ':""):"");P+=F}D+=P}D+=l+(a.browser.msie&&parseInt(a.browser.version,10)<7&&!b.inline?'': +"");b._keyEvent=false;return D},_generateMonthYearHeader:function(b,h,j,l,o,n,k,m){var p=this._get(b,"changeMonth"),q=this._get(b,"changeYear"),s=this._get(b,"showMonthAfterYear"),r='
    ',u="";if(n||!p)u+=''+k[h]+"";else{k=l&&l.getFullYear()==j;var v=o&&o.getFullYear()==j;u+='"}s||(r+=u+(n||!(p&&q)?" ":""));if(!b.yearshtml){b.yearshtml="";if(n||!q)r+=''+j+"";else{m=this._get(b,"yearRange").split(":");var x=(new Date).getFullYear();k=function(z){z=z.match(/c[+-].*/)?j+parseInt(z.substring(1),10):z.match(/[+-].*/)?x+parseInt(z,10):parseInt(z,10);return isNaN(z)? +x:z};h=k(m[0]);m=Math.max(h,k(m[1]||""));h=l?Math.max(h,l.getFullYear()):h;m=o?Math.min(m,o.getFullYear()):m;for(b.yearshtml+='";r+=b.yearshtml;b.yearshtml=null}}r+=this._get(b,"yearSuffix");if(s)r+= +(n||!(p&&q)?" ":"")+u;r+="
    ";return r},_adjustInstDate:function(b,h,j){var l=b.drawYear+(j=="Y"?h:0),o=b.drawMonth+(j=="M"?h:0);h=Math.min(b.selectedDay,this._getDaysInMonth(l,o))+(j=="D"?h:0);l=this._restrictMinMax(b,this._daylightSavingAdjust(new Date(l,o,h)));b.selectedDay=l.getDate();b.drawMonth=b.selectedMonth=l.getMonth();b.drawYear=b.selectedYear=l.getFullYear();if(j=="M"||j=="Y")this._notifyChange(b)},_restrictMinMax:function(b,h){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b, +"max");h=j&&hb?b:h},_notifyChange:function(b){var h=this._get(b,"onChangeMonthYear");if(h)h.apply(b.input?b.input[0]:null,[b.selectedYear,b.selectedMonth+1,b])},_getNumberOfMonths:function(b){b=this._get(b,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(b,h){return this._determineDate(b,this._get(b,h+"Date"),null)},_getDaysInMonth:function(b,h){return 32-this._daylightSavingAdjust(new Date(b,h,32)).getDate()},_getFirstDayOfMonth:function(b, +h){return(new Date(b,h,1)).getDay()},_canAdjustMonth:function(b,h,j,l){var o=this._getNumberOfMonths(b);j=this._daylightSavingAdjust(new Date(j,l+(h<0?h:o[0]*o[1]),1));h<0&&j.setDate(this._getDaysInMonth(j.getFullYear(),j.getMonth()));return this._isInRange(b,j)},_isInRange:function(b,h){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");return(!j||h.getTime()>=j.getTime())&&(!b||h.getTime()<=b.getTime())},_getFormatConfig:function(b){var h=this._get(b,"shortYearCutoff");h=typeof h!= +"string"?h:(new Date).getFullYear()%100+parseInt(h,10);return{shortYearCutoff:h,dayNamesShort:this._get(b,"dayNamesShort"),dayNames:this._get(b,"dayNames"),monthNamesShort:this._get(b,"monthNamesShort"),monthNames:this._get(b,"monthNames")}},_formatDate:function(b,h,j,l){if(!h){b.currentDay=b.selectedDay;b.currentMonth=b.selectedMonth;b.currentYear=b.selectedYear}h=h?typeof h=="object"?h:this._daylightSavingAdjust(new Date(l,j,h)):this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay)); +return this.formatDate(this._get(b,"dateFormat"),h,this._getFormatConfig(b))}});a.fn.datepicker=function(b){if(!this.length)return this;if(!a.datepicker.initialized){a(document).mousedown(a.datepicker._checkExternalClick).find("body").append(a.datepicker.dpDiv);a.datepicker.initialized=true}var h=Array.prototype.slice.call(arguments,1);if(typeof b=="string"&&(b=="isDisabled"||b=="getDate"||b=="widget"))return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(h));if(b=="option"&& +arguments.length==2&&typeof arguments[1]=="string")return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(h));return this.each(function(){typeof b=="string"?a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this].concat(h)):a.datepicker._attachDatepicker(this,b)})};a.datepicker=new c;a.datepicker.initialized=false;a.datepicker.uuid=(new Date).getTime();a.datepicker.version="1.8.13";window["DP_jQuery_"+e]=a})(jQuery); +(function(a,d){var c={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},f={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},g=a.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};a.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:{my:"center",at:"center",collision:"fit",using:function(e){var i=a(this).css(e).offset().top;i<0&&a(this).css("top",e.top-i)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var e=this,i=e.options,b=i.title||" ",h=a.ui.dialog.getTitleId(e.element),j=(e.uiDialog=a("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +i.dialogClass).css({zIndex:i.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){if(i.closeOnEscape&&n.keyCode&&n.keyCode===a.ui.keyCode.ESCAPE){e.close(n);n.preventDefault()}}).attr({role:"dialog","aria-labelledby":h}).mousedown(function(n){e.moveToTop(false,n)});e.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j);var l=(e.uiDialogTitlebar=a("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j), +o=a('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){o.addClass("ui-state-hover")},function(){o.removeClass("ui-state-hover")}).focus(function(){o.addClass("ui-state-focus")}).blur(function(){o.removeClass("ui-state-focus")}).click(function(n){e.close(n);return false}).appendTo(l);(e.uiDialogTitlebarCloseText=a("")).addClass("ui-icon ui-icon-closethick").text(i.closeText).appendTo(o);a("").addClass("ui-dialog-title").attr("id", +h).html(b).prependTo(l);if(a.isFunction(i.beforeclose)&&!a.isFunction(i.beforeClose))i.beforeClose=i.beforeclose;l.find("*").add(l).disableSelection();i.draggable&&a.fn.draggable&&e._makeDraggable();i.resizable&&a.fn.resizable&&e._makeResizable();e._createButtons(i.buttons);e._isOpen=false;a.fn.bgiframe&&j.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var e=this;e.overlay&&e.overlay.destroy();e.uiDialog.hide();e.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +e.uiDialog.remove();e.originalTitle&&e.element.attr("title",e.originalTitle);return e},widget:function(){return this.uiDialog},close:function(e){var i=this,b,h;if(false!==i._trigger("beforeClose",e)){i.overlay&&i.overlay.destroy();i.uiDialog.unbind("keypress.ui-dialog");i._isOpen=false;if(i.options.hide)i.uiDialog.hide(i.options.hide,function(){i._trigger("close",e)});else{i.uiDialog.hide();i._trigger("close",e)}a.ui.dialog.overlay.resize();if(i.options.modal){b=0;a(".ui-dialog").each(function(){if(this!== +i.uiDialog[0]){h=a(this).css("z-index");isNaN(h)||(b=Math.max(b,h))}});a.ui.dialog.maxZ=b}return i}},isOpen:function(){return this._isOpen},moveToTop:function(e,i){var b=this,h=b.options;if(h.modal&&!e||!h.stack&&!h.modal)return b._trigger("focus",i);if(h.zIndex>a.ui.dialog.maxZ)a.ui.dialog.maxZ=h.zIndex;if(b.overlay){a.ui.dialog.maxZ+=1;b.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)}e={scrollTop:b.element.attr("scrollTop"),scrollLeft:b.element.attr("scrollLeft")};a.ui.dialog.maxZ+= +1;b.uiDialog.css("z-index",a.ui.dialog.maxZ);b.element.attr(e);b._trigger("focus",i);return b},open:function(){if(!this._isOpen){var e=this,i=e.options,b=e.uiDialog;e.overlay=i.modal?new a.ui.dialog.overlay(e):null;e._size();e._position(i.position);b.show(i.show);e.moveToTop(true);i.modal&&b.bind("keypress.ui-dialog",function(h){if(h.keyCode===a.ui.keyCode.TAB){var j=a(":tabbable",this),l=j.filter(":first");j=j.filter(":last");if(h.target===j[0]&&!h.shiftKey){l.focus(1);return false}else if(h.target=== +l[0]&&h.shiftKey){j.focus(1);return false}}});a(e.element.find(":tabbable").get().concat(b.find(".ui-dialog-buttonpane :tabbable").get().concat(b.get()))).eq(0).focus();e._isOpen=true;e._trigger("open");return e}},_createButtons:function(e){var i=this,b=false,h=a("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=a("
    ").addClass("ui-dialog-buttonset").appendTo(h);i.uiDialog.find(".ui-dialog-buttonpane").remove();typeof e==="object"&&e!==null&&a.each(e, +function(){return!(b=true)});if(b){a.each(e,function(l,o){o=a.isFunction(o)?{click:o,text:l}:o;var n=a('').click(function(){o.click.apply(i.element[0],arguments)}).appendTo(j);a.each(o,function(k,m){if(k!=="click")k in g?n[k](m):n.attr(k,m)});a.fn.button&&n.button()});h.appendTo(i.uiDialog)}},_makeDraggable:function(){function e(l){return{position:l.position,offset:l.offset}}var i=this,b=i.options,h=a(document),j;i.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(l,o){j=b.height==="auto"?"auto":a(this).height();a(this).height(a(this).height()).addClass("ui-dialog-dragging");i._trigger("dragStart",l,e(o))},drag:function(l,o){i._trigger("drag",l,e(o))},stop:function(l,o){b.position=[o.position.left-h.scrollLeft(),o.position.top-h.scrollTop()];a(this).removeClass("ui-dialog-dragging").height(j);i._trigger("dragStop",l,e(o));a.ui.dialog.overlay.resize()}})},_makeResizable:function(e){function i(l){return{originalPosition:l.originalPosition, +originalSize:l.originalSize,position:l.position,size:l.size}}e=e===d?this.options.resizable:e;var b=this,h=b.options,j=b.uiDialog.css("position");e=typeof e==="string"?e:"n,e,s,w,se,sw,ne,nw";b.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:b.element,maxWidth:h.maxWidth,maxHeight:h.maxHeight,minWidth:h.minWidth,minHeight:b._minHeight(),handles:e,start:function(l,o){a(this).addClass("ui-dialog-resizing");b._trigger("resizeStart",l,i(o))},resize:function(l,o){b._trigger("resize", +l,i(o))},stop:function(l,o){a(this).removeClass("ui-dialog-resizing");h.height=a(this).height();h.width=a(this).width();b._trigger("resizeStop",l,i(o));a.ui.dialog.overlay.resize()}}).css("position",j).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(e){var i=[],b=[0,0],h;if(e){if(typeof e==="string"||typeof e==="object"&&"0"in e){i=e.split?e.split(" "): +[e[0],e[1]];if(i.length===1)i[1]=i[0];a.each(["left","top"],function(j,l){if(+i[j]===i[j]){b[j]=i[j];i[j]=l}});e={my:i.join(" "),at:i.join(" "),offset:b.join(" ")}}e=a.extend({},a.ui.dialog.prototype.options.position,e)}else e=a.ui.dialog.prototype.options.position;(h=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},e));h||this.uiDialog.hide()},_setOptions:function(e){var i=this,b={},h=false;a.each(e,function(j,l){i._setOption(j,l); +if(j in c)h=true;if(j in f)b[j]=l});h&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",b)},_setOption:function(e,i){var b=this,h=b.uiDialog;switch(e){case "beforeclose":e="beforeClose";break;case "buttons":b._createButtons(i);break;case "closeText":b.uiDialogTitlebarCloseText.text(""+i);break;case "dialogClass":h.removeClass(b.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+i);break;case "disabled":i?h.addClass("ui-dialog-disabled"): +h.removeClass("ui-dialog-disabled");break;case "draggable":var j=h.is(":data(draggable)");j&&!i&&h.draggable("destroy");!j&&i&&b._makeDraggable();break;case "position":b._position(i);break;case "resizable":(j=h.is(":data(resizable)"))&&!i&&h.resizable("destroy");j&&typeof i==="string"&&h.resizable("option","handles",i);!j&&i!==false&&b._makeResizable(i);break;case "title":a(".ui-dialog-title",b.uiDialogTitlebar).html(""+(i||" "));break}a.Widget.prototype._setOption.apply(b,arguments)},_size:function(){var e= +this.options,i,b,h=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(e.minWidth>e.width)e.width=e.minWidth;i=this.uiDialog.css({height:"auto",width:e.width}).height();b=Math.max(0,e.minHeight-i);if(e.height==="auto")if(a.support.minHeight)this.element.css({minHeight:b,height:"auto"});else{this.uiDialog.show();e=this.element.css("height","auto").height();h||this.uiDialog.hide();this.element.height(Math.max(e,b))}else this.element.height(Math.max(e.height- +i,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});a.extend(a.ui.dialog,{version:"1.8.13",uuid:0,maxZ:0,getTitleId:function(e){e=e.attr("id");if(!e){this.uuid+=1;e=this.uuid}return"ui-dialog-title-"+e},overlay:function(e){this.$el=a.ui.dialog.overlay.create(e)}});a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "), +create:function(e){if(this.instances.length===0){setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});a.fn.bgiframe&&i.bgiframe();this.instances.push(i);return i},destroy:function(e){var i=a.inArray(e,this.instances);i!=-1&&this.oldInstances.push(this.instances.splice(i,1)[0]);this.instances.length===0&&a([document,window]).unbind(".dialog-overlay");e.remove();var b=0;a.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var e,i;if(a.browser.msie&&a.browser.version<7){e=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return e0?e.left-b:Math.max(e.left-i.collisionPosition.left,e.left)},top:function(e,i){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();e.top=b>0?e.top-b:Math.max(e.top-i.collisionPosition.top,e.top)}},flip:{left:function(e,i){if(i.at[0]!=="center"){var b=a(window);b=i.collisionPosition.left+i.collisionWidth-b.width()-b.scrollLeft();var h=i.my[0]==="left"?-i.elemWidth:i.my[0]==="right"?i.elemWidth:0,j=i.at[0]==="left"?i.targetWidth:-i.targetWidth,l=-2*i.offset[0];e.left+= +i.collisionPosition.left<0?h+j+l:b>0?h+j+l:0}},top:function(e,i){if(i.at[1]!=="center"){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();var h=i.my[1]==="top"?-i.elemHeight:i.my[1]==="bottom"?i.elemHeight:0,j=i.at[1]==="top"?i.targetHeight:-i.targetHeight,l=-2*i.offset[1];e.top+=i.collisionPosition.top<0?h+j+l:b>0?h+j+l:0}}}};if(!a.offset.setOffset){a.offset.setOffset=function(e,i){if(/static/.test(a.curCSS(e,"position")))e.style.position="relative";var b=a(e), +h=b.offset(),j=parseInt(a.curCSS(e,"top",true),10)||0,l=parseInt(a.curCSS(e,"left",true),10)||0;h={top:i.top-h.top+j,left:i.left-h.left+l};"using"in i?i.using.call(e,h):b.css(h)};a.fn.offset=function(e){var i=this[0];if(!i||!i.ownerDocument)return null;if(e)return this.each(function(){a.offset.setOffset(this,e)});return g.call(this)}}})(jQuery); +(function(a,d){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=a("
    ").appendTo(this.element);this.oldValue=this._value();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(c){if(c===d)return this._value();this._setOption("value",c);return this},_setOption:function(c,f){if(c==="value"){this.options.value=f;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var c=this.options.value;if(typeof c!=="number")c=0;return Math.min(this.options.max,Math.max(this.min,c))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var c=this.value(),f=this._percentage();if(this.oldValue!==c){this.oldValue=c;this._trigger("change")}this.valueDiv.toggle(c>this.min).toggleClass("ui-corner-right",c===this.options.max).width(f.toFixed(0)+"%");this.element.attr("aria-valuenow",c)}});a.extend(a.ui.progressbar,{version:"1.8.13"})})(jQuery); +(function(a){a.widget("ui.slider",a.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 d=this,c=this.options,f=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),g=c.values&&c.values.length||1,e=[];this._mouseSliding=this._keySliding=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"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);if(c.range){if(c.range===true){if(!c.values)c.values=[this._valueMin(),this._valueMin()];if(c.values.length&&c.values.length!==2)c.values=[c.values[0],c.values[0]]}this.range=a("
    ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(c.range==="min"||c.range==="max"?" ui-slider-range-"+c.range:""))}for(var i=f.length;i"); +this.handles=f.add(a(e.join("")).appendTo(d.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(c.disabled)a(this).blur();else{a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(b){a(this).data("index.ui-slider-handle", +b)});this.handles.keydown(function(b){var h=true,j=a(this).data("index.ui-slider-handle"),l,o,n;if(!d.options.disabled){switch(b.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:h=false;if(!d._keySliding){d._keySliding=true;a(this).addClass("ui-state-active");l=d._start(b,j);if(l===false)return}break}n=d.options.step;l=d.options.values&&d.options.values.length? +(o=d.values(j)):(o=d.value());switch(b.keyCode){case a.ui.keyCode.HOME:o=d._valueMin();break;case a.ui.keyCode.END:o=d._valueMax();break;case a.ui.keyCode.PAGE_UP:o=d._trimAlignValue(l+(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:o=d._trimAlignValue(l-(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(l===d._valueMax())return;o=d._trimAlignValue(l+n);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(l===d._valueMin())return;o=d._trimAlignValue(l- +n);break}d._slide(b,j,o);return h}}).keyup(function(b){var h=a(this).data("index.ui-slider-handle");if(d._keySliding){d._keySliding=false;d._stop(b,h);d._change(b,h);a(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(d){var c=this.options,f,g,e,i,b;if(c.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();f=this._normValueFromMouse({x:d.pageX,y:d.pageY});g=this._valueMax()-this._valueMin()+1;i=this;this.handles.each(function(h){var j=Math.abs(f-i.values(h));if(g>j){g=j;e=a(this);b=h}});if(c.range===true&&this.values(1)===c.min){b+=1;e=a(this.handles[b])}if(this._start(d,b)===false)return false; +this._mouseSliding=true;i._handleIndex=b;e.addClass("ui-state-active").focus();c=e.offset();this._clickOffset=!a(d.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:d.pageX-c.left-e.width()/2,top:d.pageY-c.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(d,b,f);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(d){var c= +this._normValueFromMouse({x:d.pageX,y:d.pageY});this._slide(d,this._handleIndex,c);return false},_mouseStop:function(d){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(d,this._handleIndex);this._change(d,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c;if(this.orientation==="horizontal"){c= +this.elementSize.width;d=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;d=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}c=d/c;if(c>1)c=1;if(c<0)c=0;if(this.orientation==="vertical")c=1-c;d=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*d)},_start:function(d,c){var f={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){f.value=this.values(c); +f.values=this.values()}return this._trigger("start",d,f)},_slide:function(d,c,f){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(this.options.values.length===2&&this.options.range===true&&(c===0&&f>g||c===1&&f1){this.options.values[d]=this._trimAlignValue(c);this._refreshValue();this._change(null,d)}else if(arguments.length)if(a.isArray(arguments[0])){f=this.options.values;g=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var c=this.options.step>0?this.options.step:1,f=(d-this._valueMin())%c;alignValue=d-f;if(Math.abs(f)*2>=c)alignValue+=f>0?c:-c;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var d=this.options.range,c=this.options,f=this,g=!this._animateOff?c.animate:false,e,i={},b,h,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(o){e=(f.values(o)-f._valueMin())/(f._valueMax()-f._valueMin())*100;i[f.orientation==="horizontal"?"left":"bottom"]=e+"%";a(this).stop(1,1)[g?"animate":"css"](i,c.animate);if(f.options.range===true)if(f.orientation==="horizontal"){if(o===0)f.range.stop(1,1)[g?"animate":"css"]({left:e+"%"},c.animate); +if(o===1)f.range[g?"animate":"css"]({width:e-b+"%"},{queue:false,duration:c.animate})}else{if(o===0)f.range.stop(1,1)[g?"animate":"css"]({bottom:e+"%"},c.animate);if(o===1)f.range[g?"animate":"css"]({height:e-b+"%"},{queue:false,duration:c.animate})}b=e});else{h=this.value();j=this._valueMin();l=this._valueMax();e=l!==j?(h-j)/(l-j)*100:0;i[f.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[g?"animate":"css"](i,c.animate);if(d==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[g?"animate":"css"]({width:e+"%"},c.animate);if(d==="max"&&this.orientation==="horizontal")this.range[g?"animate":"css"]({width:100-e+"%"},{queue:false,duration:c.animate});if(d==="min"&&this.orientation==="vertical")this.range.stop(1,1)[g?"animate":"css"]({height:e+"%"},c.animate);if(d==="max"&&this.orientation==="vertical")this.range[g?"animate":"css"]({height:100-e+"%"},{queue:false,duration:c.animate})}}});a.extend(a.ui.slider,{version:"1.8.13"})})(jQuery); +(function(a,d){function c(){return++g}function f(){return++e}var g=0,e=0;a.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:"
    ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
  • #{label}
  • "},_create:function(){this._tabify(true)},_setOption:function(i,b){if(i=="selected")this.options.collapsible&& +b==this.options.selected||this.select(b);else{this.options[i]=b;this._tabify()}},_tabId:function(i){return i.title&&i.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+c()},_sanitizeSelector:function(i){return i.replace(/:/g,"\\:")},_cookie:function(){var i=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[i].concat(a.makeArray(arguments)))},_ui:function(i,b){return{tab:i,panel:b,index:this.anchors.index(i)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var i= +a(this);i.html(i.data("label.tabs")).removeData("label.tabs")})},_tabify:function(i){function b(r,u){r.css("display","");!a.support.opacity&&u.opacity&&r[0].style.removeAttribute("filter")}var h=this,j=this.options,l=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=a(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);this.anchors.each(function(r,u){var v=a(u).attr("href"),w=v.split("#")[0],x;if(w&&(w===location.toString().split("#")[0]|| +(x=a("base")[0])&&w===x.href)){v=u.hash;u.href=v}if(l.test(v))h.panels=h.panels.add(h.element.find(h._sanitizeSelector(v)));else if(v&&v!=="#"){a.data(u,"href.tabs",v);a.data(u,"load.tabs",v.replace(/#.*$/,""));v=h._tabId(u);u.href="#"+v;u=h.element.find("#"+v);if(!u.length){u=a(j.panelTemplate).attr("id",v).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(h.panels[r-1]||h.list);u.data("destroy.tabs",true)}h.panels=h.panels.add(u)}else j.disabled.push(r)});if(i){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(j.selected===d){location.hash&&this.anchors.each(function(r,u){if(u.hash==location.hash){j.selected=r;return false}});if(typeof j.selected!=="number"&&j.cookie)j.selected=parseInt(h._cookie(),10);if(typeof j.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)j.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));j.selected=j.selected||(this.lis.length?0:-1)}else if(j.selected===null)j.selected=-1;j.selected=j.selected>=0&&this.anchors[j.selected]||j.selected<0?j.selected:0;j.disabled=a.unique(j.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(r){return h.lis.index(r)}))).sort();a.inArray(j.selected,j.disabled)!=-1&&j.disabled.splice(a.inArray(j.selected,j.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(j.selected>=0&&this.anchors.length){h.element.find(h._sanitizeSelector(h.anchors[j.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(j.selected).addClass("ui-tabs-selected ui-state-active");h.element.queue("tabs",function(){h._trigger("show",null,h._ui(h.anchors[j.selected],h.element.find(h._sanitizeSelector(h.anchors[j.selected].hash))[0]))});this.load(j.selected)}a(window).bind("unload",function(){h.lis.add(h.anchors).unbind(".tabs");h.lis=h.anchors=h.panels=null})}else j.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[j.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");j.cookie&&this._cookie(j.selected,j.cookie);i=0;for(var o;o=this.lis[i];i++)a(o)[a.inArray(i,j.disabled)!=-1&&!a(o).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");j.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(j.event!=="mouseover"){var n=function(r,u){u.is(":not(.ui-state-disabled)")&&u.addClass("ui-state-"+r)},k=function(r,u){u.removeClass("ui-state-"+ +r)};this.lis.bind("mouseover.tabs",function(){n("hover",a(this))});this.lis.bind("mouseout.tabs",function(){k("hover",a(this))});this.anchors.bind("focus.tabs",function(){n("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){k("focus",a(this).closest("li"))})}var m,p;if(j.fx)if(a.isArray(j.fx)){m=j.fx[0];p=j.fx[1]}else m=p=j.fx;var q=p?function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.hide().removeClass("ui-tabs-hide").animate(p,p.duration||"normal", +function(){b(u,p);h._trigger("show",null,h._ui(r,u[0]))})}:function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.removeClass("ui-tabs-hide");h._trigger("show",null,h._ui(r,u[0]))},s=m?function(r,u){u.animate(m,m.duration||"normal",function(){h.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");b(u,m);h.element.dequeue("tabs")})}:function(r,u){h.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");h.element.dequeue("tabs")}; +this.anchors.bind(j.event+".tabs",function(){var r=this,u=a(r).closest("li"),v=h.panels.filter(":not(.ui-tabs-hide)"),w=h.element.find(h._sanitizeSelector(r.hash));if(u.hasClass("ui-tabs-selected")&&!j.collapsible||u.hasClass("ui-state-disabled")||u.hasClass("ui-state-processing")||h.panels.filter(":animated").length||h._trigger("select",null,h._ui(this,w[0]))===false){this.blur();return false}j.selected=h.anchors.index(this);h.abort();if(j.collapsible)if(u.hasClass("ui-tabs-selected")){j.selected= +-1;j.cookie&&h._cookie(j.selected,j.cookie);h.element.queue("tabs",function(){s(r,v)}).dequeue("tabs");this.blur();return false}else if(!v.length){j.cookie&&h._cookie(j.selected,j.cookie);h.element.queue("tabs",function(){q(r,w)});h.load(h.anchors.index(this));this.blur();return false}j.cookie&&h._cookie(j.selected,j.cookie);if(w.length){v.length&&h.element.queue("tabs",function(){s(r,v)});h.element.queue("tabs",function(){q(r,w)});h.load(h.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +a.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(i){if(typeof i=="string")i=this.anchors.index(this.anchors.filter("[href$="+i+"]"));return i},destroy:function(){var i=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 b= +a.data(this,"href.tabs");if(b)this.href=b;var h=a(this).unbind(".tabs");a.each(["href","load","cache"],function(j,l){h.removeData(l+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(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")});i.cookie&&this._cookie(null,i.cookie);return this},add:function(i, +b,h){if(h===d)h=this.anchors.length;var j=this,l=this.options;b=a(l.tabTemplate.replace(/#\{href\}/g,i).replace(/#\{label\}/g,b));i=!i.indexOf("#")?i.replace("#",""):this._tabId(a("a",b)[0]);b.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var o=j.element.find("#"+i);o.length||(o=a(l.panelTemplate).attr("id",i).data("destroy.tabs",true));o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(h>=this.lis.length){b.appendTo(this.list);o.appendTo(this.list[0].parentNode)}else{b.insertBefore(this.lis[h]); +o.insertBefore(this.panels[h])}l.disabled=a.map(l.disabled,function(n){return n>=h?++n:n});this._tabify();if(this.anchors.length==1){l.selected=0;b.addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){j._trigger("show",null,j._ui(j.anchors[0],j.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[h],this.panels[h]));return this},remove:function(i){i=this._getIndex(i);var b=this.options,h=this.lis.eq(i).remove(),j=this.panels.eq(i).remove(); +if(h.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(i+(i+1=i?--l:l});this._tabify();this._trigger("remove",null,this._ui(h.find("a")[0],j[0]));return this},enable:function(i){i=this._getIndex(i);var b=this.options;if(a.inArray(i,b.disabled)!=-1){this.lis.eq(i).removeClass("ui-state-disabled");b.disabled=a.grep(b.disabled,function(h){return h!=i});this._trigger("enable",null, +this._ui(this.anchors[i],this.panels[i]));return this}},disable:function(i){i=this._getIndex(i);var b=this.options;if(i!=b.selected){this.lis.eq(i).addClass("ui-state-disabled");b.disabled.push(i);b.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[i],this.panels[i]))}return this},select:function(i){i=this._getIndex(i);if(i==-1)if(this.options.collapsible&&this.options.selected!=-1)i=this.options.selected;else return this;this.anchors.eq(i).trigger(this.options.event+".tabs");return this}, +load:function(i){i=this._getIndex(i);var b=this,h=this.options,j=this.anchors.eq(i)[0],l=a.data(j,"load.tabs");this.abort();if(!l||this.element.queue("tabs").length!==0&&a.data(j,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(i).addClass("ui-state-processing");if(h.spinner){var o=a("span",j);o.data("label.tabs",o.html()).html(h.spinner)}this.xhr=a.ajax(a.extend({},h.ajaxOptions,{url:l,success:function(n,k){b.element.find(b._sanitizeSelector(j.hash)).html(n);b._cleanup();h.cache&&a.data(j, +"cache.tabs",true);b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{h.ajaxOptions.success(n,k)}catch(m){}},error:function(n,k){b._cleanup();b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{h.ajaxOptions.error(n,k,i,j)}catch(m){}}}));b.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(i,b){this.anchors.eq(i).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.8.13"});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(i,b){var h=this,j=this.options,l=h._rotate||(h._rotate=function(o){clearTimeout(h.rotation);h.rotation=setTimeout(function(){var n=j.selected;h.select(++n type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.9.1", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, all, a, + input, select, fragment, + opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
    a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: div.firstChild.nodeType === 3, + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: a.getAttribute("href") === "/a", + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + checkOn: !!input.value, + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: document.compatMode === "CSS1Compat", + + // Will be defined later + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
    "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})(); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var i, l, thisCache, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + // Try to fetch any internally stored data first + return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + } + + this.each(function() { + jQuery.data( this, key, value ); + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, notxml, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( rboolean.test( name ) ) { + // Set corresponding property to false for boolean attributes + // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 + if ( !getSetAttribute && ruseDefault.test( name ) ) { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } else { + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + var + // Use .prop to determine if this attribute is understood as boolean + prop = jQuery.prop( elem, name ), + + // Fetch it accordingly + attr = typeof prop === "boolean" && elem.getAttribute( name ), + detail = typeof prop === "boolean" ? + + getSetInput && getSetAttribute ? + attr != null : + // oldIE fabricates an empty string for missing boolean attributes + // and conflates checked/selected into attroperties + ruseDefault.test( name ) ? + elem[ jQuery.camelCase( "default-" + name ) ] : + !!attr : + + // fetch an attribute node for properties not recognized as boolean + elem.getAttributeNode( name ); + + return detail && detail.value !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; + +// fix oldIE value attroperty +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return jQuery.nodeName( elem, "input" ) ? + + // Ignore the value *property* by using defaultValue + elem.defaultValue : + + ret && ret.specified ? ret.value : undefined; + }, + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret == null ? undefined : ret; + } + }); + }); + + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + event.isTrigger = true; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + hasDuplicate, + outermostContext, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + sortOrder, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Use a stripped-down slice if we can't use a native one +try { + slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + while ( (elem = this[i++]) ) { + results.push( elem ); + } + return results; + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
    "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + support.getIdNotName = !doc.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getIdNotName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + var compare; + + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { + if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { + if ( a === doc || contains( preferredDoc, a ) ) { + return -1; + } + if ( b === doc || contains( preferredDoc, b ) ) { + return 1; + } + return 0; + } + return compare & 4 ? -1 : 1; + } + + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + // Always assume the presence of duplicates if sort doesn't + // pass them to our comparison function (as in Google Chrome). + hasDuplicate = false; + [0, 0].sort( sortOrder ); + support.detectDuplicates = hasDuplicate; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Initialize with the default document +setDocument(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, ret, self, + len = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + ret = []; + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, this[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + col: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunc = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunc && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("