diff options
Diffstat (limited to 'Js/jquery')
39 files changed, 12275 insertions, 0 deletions
diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png Binary files differnew file mode 100755 index 0000000..82524ab --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png Binary files differnew file mode 100755 index 0000000..6aed97a --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png Binary files differnew file mode 100755 index 0000000..f11ca67 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png Binary files differnew file mode 100755 index 0000000..68306d1 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png Binary files differnew file mode 100755 index 0000000..f567c28 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png Binary files differnew file mode 100755 index 0000000..29e9965 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png Binary files differnew file mode 100755 index 0000000..9a46d19 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png Binary files differnew file mode 100755 index 0000000..f811f30 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png Binary files differnew file mode 100755 index 0000000..755fe99 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png Binary files differnew file mode 100755 index 0000000..98705f9 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png Binary files differnew file mode 100755 index 0000000..2179078 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png Binary files differnew file mode 100755 index 0000000..de76ce2 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png Binary files differnew file mode 100755 index 0000000..42f8f99 --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png diff --git a/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css new file mode 100755 index 0000000..c4ed3ea --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css @@ -0,0 +1,315 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, 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/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, 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/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } +.ui-widget-header a { color: #e69700; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } +.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-right {  -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } + +/* Overlays */ +.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* + * jQuery UI Dialog @VERSION + * + * Copyright 2010, 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/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative;  } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }  +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js new file mode 100755 index 0000000..7469ef3 --- /dev/null +++ b/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,87 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, 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(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a, +b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)},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}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable", +"off").css("MozUserSelect","")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none")},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this, +"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-= +parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+ +b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"== +b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, 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/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/* + * jQuery UI Position 1.8.4 + * + * Copyright 2010, 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/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Dialog 1.8.4 + * + * Copyright 2010, 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/Dialog + * + * Depends: + *	jquery.ui.core.js + *	jquery.ui.widget.js + *  jquery.ui.button.js + *	jquery.ui.draggable.js + *	jquery.ui.mouse.js + *	jquery.ui.position.js + *	jquery.ui.resizable.js + */ +(function(c,j){c.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",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},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="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, +i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); +return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& +g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); +b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= +f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); +a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, +f=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('<button type="button"></button>').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, +offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); +b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), +handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, +a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); +f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? +d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& +d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- +b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances, +function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery); +;
\ No newline at end of file diff --git a/Js/jquery/images/ajax-loader.png b/Js/jquery/images/ajax-loader.png Binary files differnew file mode 100644 index 0000000..811a2cd --- /dev/null +++ b/Js/jquery/images/ajax-loader.png diff --git a/Js/jquery/images/icon-search-black.png b/Js/jquery/images/icon-search-black.png Binary files differnew file mode 100644 index 0000000..5721120 --- /dev/null +++ b/Js/jquery/images/icon-search-black.png diff --git a/Js/jquery/images/icons-18-black.png b/Js/jquery/images/icons-18-black.png Binary files differnew file mode 100644 index 0000000..1ecfd26 --- /dev/null +++ b/Js/jquery/images/icons-18-black.png diff --git a/Js/jquery/images/icons-18-white.png b/Js/jquery/images/icons-18-white.png Binary files differnew file mode 100644 index 0000000..0c70831 --- /dev/null +++ b/Js/jquery/images/icons-18-white.png diff --git a/Js/jquery/images/icons-36-black.png b/Js/jquery/images/icons-36-black.png Binary files differnew file mode 100644 index 0000000..4c72adf --- /dev/null +++ b/Js/jquery/images/icons-36-black.png diff --git a/Js/jquery/images/icons-36-white.png b/Js/jquery/images/icons-36-white.png Binary files differnew file mode 100644 index 0000000..84ea9fb --- /dev/null +++ b/Js/jquery/images/icons-36-white.png diff --git a/Js/jquery/jquery-1.7.1.min.js b/Js/jquery/jquery-1.7.1.min.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/Js/jquery/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file diff --git a/Js/jquery/jquery.mobile-1.1.0.css b/Js/jquery/jquery.mobile-1.1.0.css new file mode 100644 index 0000000..06dbf8f --- /dev/null +++ b/Js/jquery/jquery.mobile-1.1.0.css @@ -0,0 +1,2053 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { +	border: 1px solid 		#333 /*{a-bar-border}*/; +	background: 			#111111 /*{a-bar-background-color}*/; +	color: 					#ffffff /*{a-bar-color}*/; +	font-weight: bold; +	text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a,  +.ui-bar-a input,  +.ui-bar-a select,  +.ui-bar-a textarea,  +.ui-bar-a button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { +	color: #fff /*{a-bar-color}*/; +} +.ui-bar-a .ui-link { +	color: #7cc4e7 /*{a-bar-link-color}*/; +	font-weight: bold; +} +.ui-bar-a .ui-link:hover { +	color: #2489CE /*{a-bar-link-hover}*/; +} +.ui-bar-a .ui-link:active { +	color: #2489CE /*{a-bar-link-active}*/; +} +.ui-bar-a .ui-link:visited { +    color: #2489CE /*{a-bar-link-visited}*/; +} +.ui-body-a, +.ui-overlay-a { +	border: 1px solid 		#444 /*{a-body-border}*/; +	background: 			#222 /*{a-body-background-color}*/; +	color: 					#fff /*{a-body-color}*/; +	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; +	font-weight: normal; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);	 +} +.ui-overlay-a { +	background-image: none; +	border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { +	color: 	#fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { +	color: #2489CE /*{a-body-link-color}*/; +	font-weight: bold; +} +.ui-body-a .ui-link:hover { +	color: #2489CE /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { +	color: #2489CE /*{a-body-link-active}*/; +} +.ui-body-a .ui-link:visited { +    color: #2489CE /*{a-body-link-visited}*/; +} +.ui-btn-up-a { +	border: 1px solid 		#111 /*{a-bup-border}*/; +	background: 			#333 /*{a-bup-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{a-bup-color}*/; +	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a a.ui-link-inherit { +	color: 					#fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { +	border: 1px solid 		#000 /*{a-bhover-border}*/; +	background: 			#444444 /*{a-bhover-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{a-bhover-color}*/; +	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a a.ui-link-inherit { +	color: 					#fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { +	border: 1px solid 		#000 /*{a-bdown-border}*/; +	background: 			#222 /*{a-bdown-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{a-bdown-color}*/; +	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a a.ui-link-inherit { +	color: 					#fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +	text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { +	border: 1px solid 		#456f9a /*{b-bar-border}*/; +	background: 			#5e87b0 /*{b-bar-background-color}*/; +	color: 					#fff /*{b-bar-color}*/; +	font-weight: bold; +	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { +	color: 	#fff /*{b-bar-color}*/; +} +.ui-bar-b .ui-link { +	color: #ddf0f8 /*{b-bar-link-color}*/; +	font-weight: bold; +} +.ui-bar-b .ui-link:hover { +	color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b .ui-link:active { +	color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-bar-b .ui-link:visited { +    color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-body-b, +.ui-overlay-b { +	border: 1px solid 		#999 /*{b-body-border}*/; +	background: 			#f3f3f3 /*{b-body-background-color}*/; +	color: 					#222222 /*{b-body-color}*/; +	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; +	font-weight: normal; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { +	background-image: none; +	border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { +	color: 	#333333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { +	color: #2489CE /*{b-body-link-color}*/; +	font-weight: bold; +} +.ui-body-b .ui-link:hover { +	color: #2489CE /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { +	color: #2489CE /*{b-body-link-active}*/; +} +.ui-body-b .ui-link:visited { +    color: #2489CE /*{b-body-link-visited}*/; +} +.ui-btn-up-b { +	border: 1px solid 		#044062 /*{b-bup-border}*/; +	background: 			#396b9e /*{b-bup-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{b-bup-color}*/; +	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b a.ui-link-inherit { +	color: 					#fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { +	border: 1px solid 		#00415e /*{b-bhover-border}*/; +	background: 			#4b88b6 /*{b-bhover-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{b-bhover-color}*/; +	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b a.ui-link-inherit { +	color: 					#fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { +	border: 1px solid 		#225377 /*{b-bdown-border}*/; +	background: 			#4e89c5 /*{b-bdown-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{b-bdown-color}*/; +	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b a.ui-link-inherit { +	color: 					#fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +	text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { +	border: 1px solid 		#B3B3B3 /*{c-bar-border}*/; +	background: 			#eeeeee /*{c-bar-background-color}*/; +	color: 					#3E3E3E /*{c-bar-color}*/; +	font-weight: bold; +	text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ 	#fff /*{c-bar-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { +	color: 	#3E3E3E /*{c-bar-color}*/; +} +.ui-bar-c .ui-link { +	color: #7cc4e7 /*{c-bar-link-color}*/; +	font-weight: bold; +} +.ui-bar-c .ui-link:hover { +	color: #2489CE /*{c-bar-link-hover}*/; +} +.ui-bar-c .ui-link:active { +	color: #2489CE /*{c-bar-link-active}*/; +} +.ui-bar-c .ui-link:visited { +    color: #2489CE /*{c-bar-link-visited}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { +	border: 1px solid 		#aaa /*{c-body-border}*/; +	color: 					#333333 /*{c-body-color}*/; +	text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; +	background: 			#f9f9f9 /*{c-body-background-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); +} +.ui-overlay-c { +	background-image: none; +	border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { +	color: 	#333333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { +	color: #2489CE /*{c-body-link-color}*/; +	font-weight: bold; +} +.ui-body-c .ui-link:hover { +	color: #2489CE /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { +	color: #2489CE /*{c-body-link-active}*/; +} +.ui-body-c .ui-link:visited { +    color: #2489CE /*{c-body-link-visited}*/; +} +.ui-btn-up-c { +	border: 1px solid 		#ccc /*{c-bup-border}*/; +	background: 			#eee /*{c-bup-background-color}*/; +	font-weight: bold; +	color: 					#222 /*{c-bup-color}*/; +	text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c a.ui-link-inherit { +	color: 					#2F3E46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { +	border: 1px solid 		#bbb /*{c-bhover-border}*/; +	background: 			#dfdfdf /*{c-bhover-background-color}*/; +	font-weight: bold; +	color: 					#222 /*{c-bhover-color}*/; +	text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c a.ui-link-inherit { +	color: 					#2F3E46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { +	border: 1px solid 		#bbb /*{c-bdown-border}*/; +	background: 			#d6d6d6 /*{c-bdown-background-color}*/; +	font-weight: bold; +	color: 					#222 /*{c-bdown-color}*/; +	text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c a.ui-link-inherit { +	color: 					#2F3E46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +	text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { +	border: 1px solid 		#bbb /*{d-bar-border}*/; +	background: 			#bbb /*{d-bar-background-color}*/; +	color: 					#333 /*{d-bar-color}*/; +	text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { +	color: 	#333333 /*{d-bar-color}*/; +} +.ui-bar-d .ui-link { +	color: #2489CE /*{d-bar-link-color}*/; +	font-weight: bold; +} +.ui-bar-d .ui-link:hover { +	color: #2489CE /*{d-bar-link-hover}*/; +} +.ui-bar-d .ui-link:active { +	color: #2489CE /*{d-bar-link-active}*/; +} +.ui-bar-d .ui-link:visited { +    color: #2489CE /*{d-bar-link-visited}*/; +} +.ui-body-d, +.ui-overlay-d { +	border: 1px solid 		#bbb /*{d-body-border}*/; +	color: 					#333333 /*{d-body-color}*/; +	text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ 	#fff /*{d-body-shadow-color}*/; +	background: 			#ffffff /*{d-body-background-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { +	background-image: none; +	border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { +	color: 	#333333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { +	color: #2489CE /*{d-body-link-color}*/; +	font-weight: bold; +} +.ui-body-d .ui-link:hover { +	color: #2489CE /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { +	color: #2489CE /*{d-body-link-active}*/; +} +.ui-body-d .ui-link:visited { +    color: #2489CE /*{d-body-link-visited}*/; +} +.ui-btn-up-d { +	border: 1px solid 		#bbb /*{d-bup-border}*/; +	background: 			#fff /*{d-bup-background-color}*/; +	font-weight: bold; +	color: 					#333 /*{d-bup-color}*/; +	text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d a.ui-link-inherit { +	color: 					#333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { +	border: 1px solid 		#aaa /*{d-bhover-border}*/; +	background: 			#eeeeee /*{d-bhover-background-color}*/; +	font-weight: bold; +	color: 					#333 /*{d-bhover-color}*/; +	cursor: pointer; +	text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ 	#fff /*{d-bhover-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d a.ui-link-inherit { +	color: 					#333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { +	border: 1px solid 		#aaa /*{d-bdown-border}*/; +	background: 			#eee /*{d-bdown-background-color}*/; +	font-weight: bold; +	color: 					#333 /*{d-bdown-color}*/; +	text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ 	#ffffff /*{d-bdown-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d a.ui-link-inherit { +	color: 					#333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +	text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { +	border: 1px solid 		#F7C942 /*{e-bar-border}*/; +	background: 			#fadb4e /*{e-bar-background-color}*/; +	color: 					#333 /*{e-bar-color}*/; +	text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ 	#fff /*{e-bar-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { +	color: 	#333333 /*{e-bar-color}*/; +} +.ui-bar-e .ui-link { +	color: #2489CE /*{e-bar-link-color}*/; +	font-weight: bold; +} +.ui-bar-e .ui-link:hover { +	color: #2489CE /*{e-bar-link-hover}*/; +} +.ui-bar-e .ui-link:active { +	color: #2489CE /*{e-bar-link-active}*/; +} +.ui-bar-e .ui-link:visited { +    color: #2489CE /*{e-bar-link-visited}*/; +} +.ui-body-e, +.ui-overlay-e { +	border: 1px solid 		#F7C942 /*{e-body-border}*/; +	color: 					#222222 /*{e-body-color}*/; +	text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ 	#fff /*{e-body-shadow-color}*/; +	background: 			#fff9df /*{e-body-background-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { +	background-image: none; +	border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { +	color: 	#333333 /*{e-body-color}*/; +} +.ui-body-e .ui-link { +	color: #2489CE /*{e-body-link-color}*/; +	font-weight: bold; +} +.ui-body-e .ui-link:hover { +	color: #2489CE /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { +	color: #2489CE /*{e-body-link-active}*/; +} +.ui-body-e .ui-link:visited { +    color: #2489CE /*{e-body-link-visited}*/; +} +.ui-btn-up-e { +	border: 1px solid 		#F4C63f /*{e-bup-border}*/; +	background: 			#fadb4e /*{e-bup-background-color}*/; +	font-weight: bold; +	color: 					#222 /*{e-bup-color}*/; +	text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ 	#fff /*{e-bup-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e a.ui-link-inherit { +	color: 					#222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { +	border: 1px solid 		#F2C43d /*{e-bhover-border}*/; +	background: 			#fbe26f /*{e-bhover-background-color}*/; +	font-weight: bold; +	color: 					#111 /*{e-bhover-color}*/; +	text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ 	#fff /*{e-bhover-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e a.ui-link-inherit { +	color: 					#333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { +	border: 1px solid 		#F2C43d /*{e-bdown-border}*/; +	background: 			#fceda7 /*{e-bdown-background-color}*/; +	font-weight: bold; +	color: 					#111 /*{e-bdown-color}*/; +	text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ 	#ffffff /*{e-bdown-shadow-color}*/; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e a.ui-link-inherit { +	color: 					#333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +	text-decoration: none; +} +/* Structure */ +/* links within "buttons"  +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { +	text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { +	border: 1px solid 		#2373a5 /*{global-active-border}*/; +	background: 			#5393c5 /*{global-active-background-color}*/; +	font-weight: bold; +	color: 					#fff /*{global-active-color}*/; +	cursor: pointer; +	text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; +	text-decoration: none; +	background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ +	background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ +	background-image:    -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ +	background-image:     -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ +	background-image:      -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ +	background-image:         linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); +	font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active a.ui-link-inherit { +	color: 					#fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { +	border-top: 1px solid 	#fff; +	border-color: 			rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-tl { +	-moz-border-radius-topleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-left-radius: 			.6em /*{global-radii-blocks}*/; +} +.ui-corner-tr { +	-moz-border-radius-topright: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-right-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-right-radius: 			.6em /*{global-radii-blocks}*/; +} +.ui-corner-bl { +	-moz-border-radius-bottomleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-bottom-left-radius: 			.6em /*{global-radii-blocks}*/; +} +.ui-corner-br { +	-moz-border-radius-bottomright: 	.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +	border-bottom-right-radius: 		.6em /*{global-radii-blocks}*/; +} +.ui-corner-top { +	-moz-border-radius-topleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-left-radius: 			.6em /*{global-radii-blocks}*/; +	-moz-border-radius-topright: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-right-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-right-radius: 			.6em /*{global-radii-blocks}*/; +} +.ui-corner-bottom { +	-moz-border-radius-bottomleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-bottom-left-radius: 			.6em /*{global-radii-blocks}*/; +	-moz-border-radius-bottomright: 	.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +	border-bottom-right-radius: 		.6em /*{global-radii-blocks}*/; +	} +.ui-corner-right { +	-moz-border-radius-topright: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-right-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-right-radius: 			.6em /*{global-radii-blocks}*/; +	-moz-border-radius-bottomright: 	.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +	border-bottom-right-radius: 		.6em /*{global-radii-blocks}*/; +} +.ui-corner-left { +	-moz-border-radius-topleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-top-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-top-left-radius: 			.6em /*{global-radii-blocks}*/; +	-moz-border-radius-bottomleft: 		.6em /*{global-radii-blocks}*/; +	-webkit-border-bottom-left-radius: 	.6em /*{global-radii-blocks}*/; +	border-bottom-left-radius: 			.6em /*{global-radii-blocks}*/; +} +.ui-corner-all { +	-moz-border-radius: 				.6em /*{global-radii-blocks}*/; +	-webkit-border-radius: 				.6em /*{global-radii-blocks}*/; +	border-radius: 						.6em /*{global-radii-blocks}*/; +} +.ui-corner-none { +	-moz-border-radius: 				   0; +	-webkit-border-radius: 				   0; +	border-radius: 						   0; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { +	border-bottom: rgb(130,130,130); +	border-bottom: rgba(130,130,130,.3); +	border-bottom-width: 1px; +	border-bottom-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { +	opacity: 							.3; +} +.ui-disabled, +.ui-disabled a { +	cursor: default !important; +	pointer-events: none; +} +.ui-disabled .ui-btn-text { +	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; +	filter: alpha(opacity=30); +	zoom: 1; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { +	background: 						#666 /*{global-icon-color}*/; +	background: 						rgba(0,0,0,.4) /*{global-icon-disc}*/; +	background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; +	background-repeat: no-repeat; +	-moz-border-radius: 				9px; +	-webkit-border-radius: 				9px; +	border-radius: 						9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt { +	background: 						#fff; +	background: 						rgba(255,255,255,.3); +	background-image: url(images/icons-18-black.png); +	background-repeat: no-repeat; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), +       only screen and (min--moz-device-pixel-ratio: 1.5), +       only screen and (min-resolution: 240dpi) { +	 +	.ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, +	.ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, +	.ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, +	.ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after,  +	.ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { +		background-image: url(images/icons-36-white.png); +		-moz-background-size: 776px 18px; +		-o-background-size: 776px 18px; +		-webkit-background-size: 776px 18px; +		background-size: 776px 18px; +	} +	.ui-icon-alt { +		background-image: url(images/icons-36-black.png); +	} +} +/* plus minus */ +.ui-icon-plus { +	background-position: 	-0 50%; +} +.ui-icon-minus { +	background-position: 	-36px 50%; +} +/* delete/close */ +.ui-icon-delete { +	background-position: 	-72px 50%; +} +/* arrows */ +.ui-icon-arrow-r { +	background-position: 	-108px 50%; +} +.ui-icon-arrow-l { +	background-position: 	-144px 50%; +} +.ui-icon-arrow-u { +	background-position: 	-180px 50%; +} +.ui-icon-arrow-d { +	background-position: 	-216px 50%; +} +/* misc */ +.ui-icon-check { +	background-position: 	-252px 50%; +} +.ui-icon-gear { +	background-position: 	-288px 50%; +} +.ui-icon-refresh { +	background-position: 	-324px 50%; +} +.ui-icon-forward { +	background-position: 	-360px 50%; +} +.ui-icon-back { +	background-position: 	-396px 50%; +} +.ui-icon-grid { +	background-position: 	-432px 50%; +} +.ui-icon-star { +	background-position: 	-468px 50%; +} +.ui-icon-alert { +	background-position: 	-504px 50%; +} +.ui-icon-info { +	background-position: 	-540px 50%; +} +.ui-icon-home { +	background-position: 	-576px 50%; +} +.ui-icon-search, +.ui-icon-searchfield:after { +	background-position: 	-612px 50%; +} +.ui-icon-checkbox-off { +	background-position: 	-684px 50%; +} +.ui-icon-checkbox-on { +	background-position: 	-648px 50%; +} +.ui-icon-radio-off { +	background-position: 	-756px 50%; +} +.ui-icon-radio-on { +	background-position: 	-720px 50%; +} +/* checks,radios */ +.ui-checkbox .ui-icon { +	-moz-border-radius: 3px; +	-webkit-border-radius: 3px; +	border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { +	background-color: transparent;	 +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { +	background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { +	background: url(images/ajax-loader.gif); +	background-size: 46px 46px; +} +/* Button corner classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-tl { +	-moz-border-radius-topleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-left-radius: 	1em /*{global-radii-buttons}*/; +	border-top-left-radius: 			1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-tr { +	-moz-border-radius-topright: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-right-radius: 	1em /*{global-radii-buttons}*/; +	border-top-right-radius: 			1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bl { +	-moz-border-radius-bottomleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-left-radius: 	1em /*{global-radii-buttons}*/; +	border-bottom-left-radius: 			1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-br { +	-moz-border-radius-bottomright: 	1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +	border-bottom-right-radius: 		1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-top { +	-moz-border-radius-topleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-left-radius: 	1em /*{global-radii-buttons}*/; +	border-top-left-radius: 			1em /*{global-radii-buttons}*/; +	-moz-border-radius-topright: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-right-radius: 	1em /*{global-radii-buttons}*/; +	border-top-right-radius: 			1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bottom { +	-moz-border-radius-bottomleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-left-radius: 	1em /*{global-radii-buttons}*/; +	border-bottom-left-radius: 			1em /*{global-radii-buttons}*/; +	-moz-border-radius-bottomright: 	1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +	border-bottom-right-radius: 		1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-right { +	 -moz-border-radius-topright: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-right-radius: 	1em /*{global-radii-buttons}*/; +	border-top-right-radius: 			1em /*{global-radii-buttons}*/; +	-moz-border-radius-bottomright: 	1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +	border-bottom-right-radius: 		1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-left { +	-moz-border-radius-topleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-top-left-radius: 	1em /*{global-radii-buttons}*/; +	border-top-left-radius: 			1em /*{global-radii-buttons}*/; +	-moz-border-radius-bottomleft: 		1em /*{global-radii-buttons}*/; +	-webkit-border-bottom-left-radius: 	1em /*{global-radii-buttons}*/; +	border-bottom-left-radius: 			1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-all { +	-moz-border-radius: 				1em /*{global-radii-buttons}*/; +	-webkit-border-radius: 				1em /*{global-radii-buttons}*/; +	border-radius: 						1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-tl, +.ui-corner-tr, +.ui-corner-bl,  +.ui-corner-br, +.ui-corner-top, +.ui-corner-bottom,  +.ui-corner-right, +.ui-corner-left, +.ui-corner-all, +.ui-btn-corner-tl, +.ui-btn-corner-tr, +.ui-btn-corner-bl,  +.ui-btn-corner-br, +.ui-btn-corner-top, +.ui-btn-corner-bottom,  +.ui-btn-corner-right, +.ui-btn-corner-left, +.ui-btn-corner-all { +  -webkit-background-clip: padding-box; +     -moz-background-clip: padding; +          background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { +	background: #666; +	opacity: .5; +	filter: Alpha(Opacity=50); +	position: absolute; +	width: 100%; +	height: 100%; +} +.ui-overlay-shadow { +	-moz-box-shadow: 0px 0px 12px 			rgba(0,0,0,.6); +	-webkit-box-shadow: 0px 0px 12px 		rgba(0,0,0,.6); +	box-shadow: 0px 0px 12px 				rgba(0,0,0,.6); +} +.ui-shadow { +	-moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ 			rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +	-webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +	box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow  { +	-moz-box-shadow: 0px 1px 0 				rgba(255,255,255,.3); +	-webkit-box-shadow: 0px 1px 0 			rgba(255,255,255,.3); +	box-shadow: 0px 1px 0 					rgba(255,255,255,.3); +} +.ui-shadow-inset { +	-moz-box-shadow: inset 0px 1px 4px 		rgba(0,0,0,.2); +	-webkit-box-shadow: inset 0px 1px 4px 	rgba(0,0,0,.2); +	box-shadow: inset 0px 1px 4px 			rgba(0,0,0,.2); +} +.ui-icon-shadow { +	-moz-box-shadow: 0px 1px 0 				rgba(255,255,255,.4) /*{global-icon-shadow}*/; +	-webkit-box-shadow: 0px 1px 0 			rgba(255,255,255,.4) /*{global-icon-shadow}*/; +	box-shadow: 0px 1px 0 					rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus { +	outline: 0; +} +.ui-focus, +.ui-btn:focus { +	-moz-box-shadow: 0px 0px 12px 		#387bbe /*{global-active-background-color}*/; +	-webkit-box-shadow: 0px 0px 12px 	#387bbe /*{global-active-background-color}*/; +	box-shadow: 0px 0px 12px 			#387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { +	-moz-box-shadow: none !important; +	-webkit-box-shadow: none !important; +	box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus { +	outline-width: 1px; +	outline-style: dotted; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport {  margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } +.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px;  } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px;  overflow: hidden; display: block;  clear:both;  } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right { position: absolute; top: 3px; } +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer .ui-btn-icon-notext, +.ui-header .ui-btn-icon-notext { top: 6px; } +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em;  padding: 0;  text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em;  } +/*content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { +	width: 100%; +	height: 100%; +	overflow: hidden; +} +.in { +	-webkit-animation-timing-function: ease-out; +	-webkit-animation-duration: 350ms; +	-moz-animation-timing-function: ease-out; +	-moz-animation-duration: 350ms; +} +.out { +	-webkit-animation-timing-function: ease-in; +	-webkit-animation-duration: 225ms; +	-moz-animation-timing-function: ease-in; +	-moz-animation-duration: 225; +} +@-webkit-keyframes fadein { +    from { opacity: 0; } +    to { opacity: 1; } +} +@-moz-keyframes fadein { +    from { opacity: 0; } +    to { opacity: 1; } +} +@-webkit-keyframes fadeout { +    from { opacity: 1; } +    to { opacity: 0; } +} +@-moz-keyframes fadeout { +    from { opacity: 1; } +    to { opacity: 0; } +} +.fade.out { +	opacity: 0; +	-webkit-animation-duration: 125ms; +	-webkit-animation-name: fadeout; +	-moz-animation-duration: 125ms; +	-moz-animation-name: fadeout; +} +.fade.in { +	opacity: 1; +	-webkit-animation-duration: 225ms; +	-webkit-animation-name: fadein; +	-moz-animation-duration: 225ms; +	-moz-animation-name: fadein; +} +.pop { +	-webkit-transform-origin: 50% 50%; +	-moz-transform-origin: 50% 50%; +} +.pop.in { +	-webkit-transform: scale(1); +	-moz-transform: scale(1); +    opacity: 1; +	-webkit-animation-name: popin; +	-moz-animation-name: popin; +	-webkit-animation-duration: 350ms; +	-moz-animation-duration: 350ms; +} +.pop.out { +	-webkit-animation-name: fadeout; +	-moz-animation-name: fadeout; +	opacity: 0; +	-webkit-animation-duration: 100ms; +	-moz-animation-duration: 100ms; +} +.pop.in.reverse { +	-webkit-animation-name: fadein; +	-moz-animation-name: fadein; +} +.pop.out.reverse { +	-webkit-transform: scale(.8); +	-moz-transform: scale(.8); +	-webkit-animation-name: popout; +	-moz-animation-name: popout; +} +@-webkit-keyframes popin { +    from { +        -webkit-transform: scale(.8); +        opacity: 0; +    } +    to { +        -webkit-transform: scale(1); +        opacity: 1; +    } +} +@-moz-keyframes popin { +    from { +        -moz-transform: scale(.8); +        opacity: 0; +    } +    to { +        -moz-transform: scale(1); +        opacity: 1; +    } +} +@-webkit-keyframes popout { +    from { +        -webkit-transform: scale(1); +        opacity: 1; +    } +    to { +        -webkit-transform: scale(.8); +        opacity: 0; +    } +} +@-moz-keyframes popout { +    from { +        -moz-transform: scale(1); +        opacity: 1; +    } +    to { +        -moz-transform: scale(.8); +        opacity: 0; +    } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { +    from { -webkit-transform: translateX(100%); } +    to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromright { +    from { -moz-transform: translateX(100%); } +    to { -moz-transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { +    from { -webkit-transform: translateX(-100%); } +    to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromleft { +    from { -moz-transform: translateX(-100%); } +    to { -moz-transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { +    from { -webkit-transform: translateX(0); } +    to { -webkit-transform: translateX(-100%); } +} +@-moz-keyframes slideouttoleft { +    from { -moz-transform: translateX(0); } +    to { -moz-transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { +    from { -webkit-transform: translateX(0); } +    to { -webkit-transform: translateX(100%); } +} +@-moz-keyframes slideouttoright { +    from { -moz-transform: translateX(0); } +    to { -moz-transform: translateX(100%); } +} +.slide.out, .slide.in { +	-webkit-animation-timing-function: ease-out; +	-webkit-animation-duration: 350ms; +	-moz-animation-timing-function: ease-out; +	-moz-animation-duration: 350ms; +} +.slide.out { +	-webkit-transform: translateX(-100%); +	-webkit-animation-name: slideouttoleft; +	-moz-transform: translateX(-100%); +	-moz-animation-name: slideouttoleft; +} +.slide.in { +	-webkit-transform: translateX(0); +	-webkit-animation-name: slideinfromright; +	-moz-transform: translateX(0); +	-moz-animation-name: slideinfromright; +} +.slide.out.reverse { +	-webkit-transform: translateX(100%); +	-webkit-animation-name: slideouttoright; +	-moz-transform: translateX(100%); +	-moz-animation-name: slideouttoright; +} +.slide.in.reverse { +	-webkit-transform: translateX(0); +	-webkit-animation-name: slideinfromleft; +	-moz-transform: translateX(0); +	-moz-animation-name: slideinfromleft; +} +.slidefade.out { +	-webkit-transform: translateX(-100%); +	-webkit-animation-name: slideouttoleft; +	-moz-transform: translateX(-100%); +	-moz-animation-name: slideouttoleft; +	-webkit-animation-duration: 225ms; +	-moz-animation-duration: 225ms; +} +.slidefade.in { +	-webkit-transform: translateX(0); +	-webkit-animation-name: fadein; +	-moz-transform: translateX(0); +	-moz-animation-name: fadein; +	-webkit-animation-duration: 200ms; +	-moz-animation-duration: 200ms; +} +.slidefade.out.reverse { +	-webkit-transform: translateX(100%); +	-webkit-animation-name: slideouttoright; +	-moz-transform: translateX(100%); +	-moz-animation-name: slideouttoright; +	-webkit-animation-duration: 200ms; +	-moz-animation-duration: 200ms; +} +.slidefade.in.reverse { +	-webkit-transform: translateX(0); +	-webkit-animation-name: fadein; +	-moz-transform: translateX(0); +	-moz-animation-name: fadein; +	-webkit-animation-duration: 200ms; +	-moz-animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { +	-webkit-animation-name: fadeout; +	-moz-animation-name: fadeout; +	-webkit-animation-duration: 100ms; +	-moz-animation-duration: 100ms; +} +.slidedown.in { +	-webkit-transform: translateY(0); +	-webkit-animation-name: slideinfromtop; +	-moz-transform: translateY(0); +	-moz-animation-name: slideinfromtop; +	-webkit-animation-duration: 250ms; +	-moz-animation-duration: 250ms; +} +.slidedown.in.reverse { +	-webkit-animation-name: fadein; +	-moz-animation-name: fadein; +	-webkit-animation-duration: 150ms; +	-moz-animation-duration: 150ms; +} +.slidedown.out.reverse { +	-webkit-transform: translateY(-100%); +	-moz-transform: translateY(-100%); +	-webkit-animation-name: slideouttotop; +	-moz-animation-name: slideouttotop; +	-webkit-animation-duration: 200ms; +	-moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { +    from { -webkit-transform: translateY(-100%); } +    to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { +    from { -moz-transform: translateY(-100%); } +    to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { +    from { -webkit-transform: translateY(0); } +    to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { +    from { -moz-transform: translateY(0); } +    to { -moz-transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { +	-webkit-animation-name: fadeout; +	-moz-animation-name: fadeout; +	-webkit-animation-duration: 100ms; +	-moz-animation-duration: 100ms; +} +.slideup.in { +	-webkit-transform: translateY(0); +	-webkit-animation-name: slideinfrombottom; +	-moz-transform: translateY(0); +	-moz-animation-name: slideinfrombottom; +	-webkit-animation-duration: 250ms; +	-moz-animation-duration: 250ms; +} +.slideup.in.reverse { +	-webkit-animation-name: fadein; +	-moz-animation-name: fadein; +	-webkit-animation-duration: 150ms; +	-moz-animation-duration: 150ms; +} +.slideup.out.reverse { +	-webkit-transform: translateY(100%); +	-moz-transform: translateY(100%); +	-webkit-animation-name: slideouttobottom; +	-moz-animation-name: slideouttobottom; +	-webkit-animation-duration: 200ms; +	-moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { +    from { -webkit-transform: translateY(100%); } +    to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { +    from { -moz-transform: translateY(100%); } +    to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { +    from { -webkit-transform: translateY(0); } +    to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { +    from { -moz-transform: translateY(0); } +    to { -moz-transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { +	-webkit-perspective: 1000; +	-moz-perspective: 1000; +	position: absolute; +} +.flip { +	-webkit-backface-visibility:hidden; +	-webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ +	-moz-backface-visibility:hidden; +	-moz-transform:translateX(0); +} +.flip.out { +	-webkit-transform: rotateY(-90deg) scale(.9); +	-webkit-animation-name: flipouttoleft; +	-webkit-animation-duration: 175ms; +	-moz-transform: rotateY(-90deg) scale(.9); +	-moz-animation-name: flipouttoleft; +	-moz-animation-duration: 175ms; +} +.flip.in { +	-webkit-animation-name: flipintoright; +	-webkit-animation-duration: 225ms; +	-moz-animation-name: flipintoright; +	-moz-animation-duration: 225ms; +} +.flip.out.reverse { +	-webkit-transform: rotateY(90deg) scale(.9); +	-webkit-animation-name: flipouttoright; +	-moz-transform: rotateY(90deg) scale(.9); +	-moz-animation-name: flipouttoright; +} +.flip.in.reverse { +	-webkit-animation-name: flipintoleft; +	-moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { +    from { -webkit-transform: rotateY(0); } +    to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { +    from { -moz-transform: rotateY(0); } +    to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { +    from { -webkit-transform: rotateY(0) ; } +    to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { +    from { -moz-transform: rotateY(0); } +    to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { +    from { -webkit-transform: rotateY(-90deg) scale(.9); } +    to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { +    from { -moz-transform: rotateY(-90deg) scale(.9); } +    to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { +    from { -webkit-transform: rotateY(90deg) scale(.9); } +    to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { +    from { -moz-transform: rotateY(90deg) scale(.9); } +    to { -moz-transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { +	-webkit-perspective: 1000; +	-moz-perspective: 1000; +	position: absolute; +} +.turn { +	-webkit-backface-visibility:hidden; +	-webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ +	-webkit-transform-origin: 0; +	 +	-moz-backface-visibility:hidden; +	-moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ +	-moz-transform-origin: 0; +} +.turn.out { +	-webkit-transform: rotateY(-90deg) scale(.9); +	-webkit-animation-name: flipouttoleft; +	-moz-transform: rotateY(-90deg) scale(.9); +	-moz-animation-name: flipouttoleft; +	-webkit-animation-duration: 125ms; +	-moz-animation-duration: 125ms; +} +.turn.in { +	-webkit-animation-name: flipintoright; +	-moz-animation-name: flipintoright; +	-webkit-animation-duration: 250ms; +	-moz-animation-duration: 250ms; +	 +} +.turn.out.reverse { +	-webkit-transform: rotateY(90deg) scale(.9); +	-webkit-animation-name: flipouttoright; +	-moz-transform: rotateY(90deg) scale(.9); +	-moz-animation-name: flipouttoright; +} +.turn.in.reverse { +	-webkit-animation-name: flipintoleft; +	-moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { +    from { -webkit-transform: rotateY(0); } +    to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { +    from { -moz-transform: rotateY(0); } +    to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { +    from { -webkit-transform: rotateY(0) ; } +    to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { +    from { -moz-transform: rotateY(0); } +    to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { +    from { -webkit-transform: rotateY(-90deg) scale(.9); } +    to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { +    from { -moz-transform: rotateY(-90deg) scale(.9); } +    to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { +    from { -webkit-transform: rotateY(90deg) scale(.9); } +    to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { +    from { -moz-transform: rotateY(90deg) scale(.9); } +    to { -moz-transform: rotateY(0); } +} +/* flow transition */ +.flow { +	-webkit-transform-origin: 50% 30%; +	-moz-transform-origin: 50% 30%;	 +	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); +	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { +	-webkit-transform-origin: none; +	-moz-transform-origin: none;	 +	-webkit-box-shadow: none; +	-moz-box-shadow: none; +} +.flow.out { +	-webkit-transform: translateX(-100%) scale(.7); +	-webkit-animation-name: flowouttoleft; +	-webkit-animation-timing-function: ease; +	-webkit-animation-duration: 350ms; +	-moz-transform: translateX(-100%) scale(.7); +	-moz-animation-name: flowouttoleft; +	-moz-animation-timing-function: ease; +	-moz-animation-duration: 350ms; +} +.flow.in { +	-webkit-transform: translateX(0) scale(1); +	-webkit-animation-name: flowinfromright; +	-webkit-animation-timing-function: ease; +	-webkit-animation-duration: 350ms; +	-moz-transform: translateX(0) scale(1); +	-moz-animation-name: flowinfromright; +	-moz-animation-timing-function: ease; +	-moz-animation-duration: 350ms; +} +.flow.out.reverse { +	-webkit-transform: translateX(100%); +	-webkit-animation-name: flowouttoright; +	-moz-transform: translateX(100%); +	-moz-animation-name: flowouttoright; +} +.flow.in.reverse { +	-webkit-animation-name: flowinfromleft; +	-moz-animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { +    0% { -webkit-transform: translateX(0) scale(1); } +	60%, 70% { -webkit-transform: translateX(0) scale(.7); } +    100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { +    0% { -moz-transform: translateX(0) scale(1); } +	60%, 70% { -moz-transform: translateX(0) scale(.7); } +    100% { -moz-transform:  translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { +    0% { -webkit-transform: translateX(0) scale(1); } +	60%, 70% { -webkit-transform: translateX(0) scale(.7); } +    100% { -webkit-transform:  translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { +    0% { -moz-transform: translateX(0) scale(1); } +	60%, 70% { -moz-transform: translateX(0) scale(.7); } +    100% { -moz-transform:  translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { +    0% { -webkit-transform: translateX(-100%) scale(.7); } +	30%, 40% { -webkit-transform: translateX(0) scale(.7); } +    100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { +    0% { -moz-transform: translateX(-100%) scale(.7); } +	30%, 40% { -moz-transform: translateX(0) scale(.7); } +    100% { -moz-transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { +    0% { -webkit-transform: translateX(100%) scale(.7); } +	30%, 40% { -webkit-transform: translateX(0) scale(.7); } +    100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { +    0% { -moz-transform: translateX(100%) scale(.7); } +	30%, 40% { -moz-transform: translateX(0) scale(.7); } +    100% { -moz-transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { width: 100%; float: none; } +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { +	left: 0; +	right: 0; +	width: 100%; +	position: fixed; +	z-index: 1000; +} +.ui-header-fixed { +	top: 0; +} +.ui-footer-fixed { +	bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { +	opacity: .9; +} +.ui-page-header-fixed { +	padding-top: 2.5em; +} +.ui-page-footer-fixed { +	padding-bottom: 3em; +} +.ui-page-header-fullscreen .ui-content, +.ui-page-footer-fullscreen .ui-content { +	padding: 0; +} +.ui-fixed-hidden { +	position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { +	left: -99999em; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn {  +	z-index: 10; +} +.ui-navbar { overflow: hidden;  } +.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } +.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } +.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } +.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } +.ui-navbar li .ui-btn {  margin-right: -1px; } +.ui-navbar li .ui-btn:last-child { margin-right: 0; } +.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, +.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } +.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } +.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } +/*expanded page styles*/ +.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } +.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px;  } +.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } +.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } +.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } +.ui-btn { display: block; text-align: center; cursor:pointer;  position: relative; margin: .5em 5px; padding: 0; } +.ui-mini { margin: .25em 5px; } +.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } +.ui-btn-block { display: block; } +.ui-header .ui-btn, +.ui-footer .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-header .ui-fullsize .ui-btn-inner, +.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%;  margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } +.ui-collapsible { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } +.ui-collapsible-heading a { text-align: left; margin: 0;  } +.ui-collapsible-heading .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } +.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } +.ui-collapsible-content { +	display: block; +	margin:  0 -8px; +	padding: 10px 16px; +	border-top:  none;      /* Overrides ui-btn-up-* */ +	background-image: none; /* Overrides ui-btn-up-* */ +	font-weight: normal;    /* Overrides ui-btn-up-* */ +} +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } +.ui-bar .ui-controlgroup { margin: 0 .3em; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls { display: block; width: 100%;} +.ui-controlgroup li { list-style: none; } +.ui-controlgroup-vertical .ui-btn, +.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0;  } +.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } +.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } +.ui-controlgroup-horizontal { padding: 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } +.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } +.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px;  } +/* conflicts with listview.. +.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner {  padding: 5px 6px 5px 5px; } +*/ +@media all and (min-width: 450px){ +	.ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block;  width: 20%;  margin: 0 2% 0 0;  } +	.ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } +	.ui-field-contain .ui-controlgroup .ui-select { width: 100%; }  +	.ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } +}	 +.ui-dialog { +	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } +.ui-dialog .ui-header { +	margin-top: 15%; +	border: none; +	overflow: hidden; +} +.ui-dialog .ui-header,  +.ui-dialog .ui-content,  +.ui-dialog .ui-footer {  +	display: block; +	position: relative;  +	width: auto; +} +.ui-dialog .ui-header,  +.ui-dialog .ui-footer  {  +	z-index: 10;  +	padding: 0; +} +.ui-dialog .ui-footer { +	padding: 0 15px;  +} +.ui-dialog .ui-content {  +	padding: 15px;  +} +.ui-dialog {  +	margin-top: -15px;   +} +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1;  } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px;  margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:first-child { border-top-width: 0; } +.ui-header .ui-field-contain-left, +.ui-header .ui-field-contain-right { +	position: absolute; +	top: 0; +	width: 25%; +} +.ui-header .ui-field-contain-left { +	left: 1em; +} +.ui-header .ui-field-contain-right { +	right: 1em; +} +@media all and (min-width: 450px){ +	.ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } +/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%;  min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }  +.ui-select .ui-btn-icon-right .ui-icon { right: 15px;  } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px;  } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4;  font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-selectmenu-hidden { top: -9999px; left: -9999px; } +.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%;  z-index: 99; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 450px){	 +	.ui-field-contain label.ui-select { vertical-align: top;  display: inline-block;  width: 20%;  margin: 0 2% 0 0; } +	.ui-field-contain .ui-select { width: 60%; display: inline-block; } +}	 +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } +.ui-header input.ui-input-text, +.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ + input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +.ui-input-search { padding: 0 30px; background-image: none; position: relative; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden { display: none; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +textarea.ui-mini { height: 45px; } +/* orientation adjustments - incomplete!*/ +@media all and (min-width: 450px){ +	.ui-field-contain label.ui-input-text  { vertical-align: top; display: inline-block;  width: 20%;  margin: 0 2% 0 0 } +	.ui-field-contain input.ui-input-text,  +	.ui-field-contain textarea.ui-input-text,  +	.ui-field-contain .ui-input-search { width: 60%; display: inline-block; }  +	.ui-field-contain .ui-input-search { width: 50%; } +	.ui-hide-label input.ui-input-text,  +	.ui-hide-label textarea.ui-input-text,  +	.ui-hide-label .ui-input-search { padding: .4em; width: 97%; }  +	.ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } +} +.ui-listview { margin: 0; counter-reset: listnumbering; } +.ui-content .ui-listview { margin: -15px; } +.ui-content .ui-listview-inset { margin: 1em 0;  } +.ui-listview, .ui-li { list-style:none; padding:0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap;  } +.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold;  } +.ui-li-divider { counter-reset: listnumbering;  } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 60px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon {  min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-has-count .ui-btn-text { padding-right: 15px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;  } +.ui-li-desc {  font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ +	 .ui-li-aside { width: 45%; } +}	  +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } +.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } +.ui-li-has-alt .ui-li-count { right: 55px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px;  } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } +.ui-li.ui-screen-hidden{display:none;} +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { +    .ui-li .ui-btn-text { overflow:  visible; } +} +label.ui-slider { font-size: 16px; line-height: 1.4;  font-weight: normal; margin: 0 0 .3em; display: block; } +input.ui-slider-input, +.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } +select.ui-slider-switch { display: none; } +div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } +div.ui-slider-mini { height: 12px; margin-left: 10px; } +div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } +.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1;  top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } +a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } +div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } +div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } +@media all and (min-width: 450px){ +	.ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } +	.ui-field-contain div.ui-slider { width: 43%; } +	.ui-field-contain div.ui-slider-switch { width: 5.5em; } +}	 +div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } +a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } +div.ui-slider-switch .ui-slider-handle {  margin-top: 1px;  } +.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } +div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } +div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } +span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } +.ui-slider-mini span.ui-slider-label { font-size: 14px; } +span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } +span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} +.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/Js/jquery/jquery.mobile-1.1.0.js b/Js/jquery/jquery.mobile-1.1.0.js new file mode 100644 index 0000000..c12426c --- /dev/null +++ b/Js/jquery/jquery.mobile-1.1.0.js @@ -0,0 +1,7551 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +(function ( root, doc, factory ) { +	if ( typeof define === "function" && define.amd ) { +		// AMD. Register as an anonymous module. +		define( [ "jquery" ], function ( $ ) { +			factory( $, root, doc ); +			return $.mobile; +		}); +	} else { +		// Browser globals +		factory( root.jQuery, root, doc ); +	} +}( this, document, function ( $, window, document, undefined ) { + + +// This plugin is an experiment for abstracting away the touch and mouse +// events so that developers don't have to worry about which method of input +// the device their document is loaded on supports. +// +// The idea here is to allow the developer to register listeners for the +// basic mouse events, such as mousedown, mousemove, mouseup, and click, +// and the plugin will take care of registering the correct listeners +// behind the scenes to invoke the listener at the fastest possible time +// for that device, while still retaining the order of event firing in +// the traditional mouse environment, should multiple handlers be registered +// on the same element for different events. +// +// The current version exposes the following virtual events to jQuery bind methods: +// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" + +(function( $, window, document, undefined ) { + +var dataPropertyName = "virtualMouseBindings", +	touchTargetPropertyName = "virtualTouchID", +	virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), +	touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), +	mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], +	mouseEventProps = $.event.props.concat( mouseHookProps ), +	activeDocHandlers = {}, +	resetTimerID = 0, +	startX = 0, +	startY = 0, +	didScroll = false, +	clickBlockList = [], +	blockMouseTriggers = false, +	blockTouchTriggers = false, +	eventCaptureSupported = "addEventListener" in document, +	$document = $( document ), +	nextTouchID = 1, +	lastTouchID = 0; + +$.vmouse = { +	moveDistanceThreshold: 10, +	clickDistanceThreshold: 10, +	resetTimerDuration: 1500 +}; + +function getNativeEvent( event ) { + +	while ( event && typeof event.originalEvent !== "undefined" ) { +		event = event.originalEvent; +	} +	return event; +} + +function createVirtualEvent( event, eventType ) { + +	var t = event.type, +		oe, props, ne, prop, ct, touch, i, j; + +	event = $.Event(event); +	event.type = eventType; + +	oe = event.originalEvent; +	props = $.event.props; + +	// addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 +	// https://github.com/jquery/jquery-mobile/issues/3280 +	if ( t.search( /^(mouse|click)/ ) > -1 ) { +		props = mouseEventProps; +	} + +	// copy original event properties over to the new event +	// this would happen if we could call $.event.fix instead of $.Event +	// but we don't have a way to force an event to be fixed multiple times +	if ( oe ) { +		for ( i = props.length, prop; i; ) { +			prop = props[ --i ]; +			event[ prop ] = oe[ prop ]; +		} +	} + +	// make sure that if the mouse and click virtual events are generated +	// without a .which one is defined +	if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ +		event.which = 1; +	} + +	if ( t.search(/^touch/) !== -1 ) { +		ne = getNativeEvent( oe ); +		t = ne.touches; +		ct = ne.changedTouches; +		touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); + +		if ( touch ) { +			for ( j = 0, len = touchEventProps.length; j < len; j++){ +				prop = touchEventProps[ j ]; +				event[ prop ] = touch[ prop ]; +			} +		} +	} + +	return event; +} + +function getVirtualBindingFlags( element ) { + +	var flags = {}, +		b, k; + +	while ( element ) { + +		b = $.data( element, dataPropertyName ); + +		for (  k in b ) { +			if ( b[ k ] ) { +				flags[ k ] = flags.hasVirtualBinding = true; +			} +		} +		element = element.parentNode; +	} +	return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { +	var b; +	while ( element ) { + +		b = $.data( element, dataPropertyName ); + +		if ( b && ( !eventType || b[ eventType ] ) ) { +			return element; +		} +		element = element.parentNode; +	} +	return null; +} + +function enableTouchBindings() { +	blockTouchTriggers = false; +} + +function disableTouchBindings() { +	blockTouchTriggers = true; +} + +function enableMouseBindings() { +	lastTouchID = 0; +	clickBlockList.length = 0; +	blockMouseTriggers = false; + +	// When mouse bindings are enabled, our +	// touch bindings are disabled. +	disableTouchBindings(); +} + +function disableMouseBindings() { +	// When mouse bindings are disabled, our +	// touch bindings are enabled. +	enableTouchBindings(); +} + +function startResetTimer() { +	clearResetTimer(); +	resetTimerID = setTimeout(function(){ +		resetTimerID = 0; +		enableMouseBindings(); +	}, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { +	if ( resetTimerID ){ +		clearTimeout( resetTimerID ); +		resetTimerID = 0; +	} +} + +function triggerVirtualEvent( eventType, event, flags ) { +	var ve; + +	if ( ( flags && flags[ eventType ] ) || +				( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + +		ve = createVirtualEvent( event, eventType ); + +		$( event.target).trigger( ve ); +	} + +	return ve; +} + +function mouseEventCallback( event ) { +	var touchID = $.data(event.target, touchTargetPropertyName); + +	if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ +		var ve = triggerVirtualEvent( "v" + event.type, event ); +		if ( ve ) { +			if ( ve.isDefaultPrevented() ) { +				event.preventDefault(); +			} +			if ( ve.isPropagationStopped() ) { +				event.stopPropagation(); +			} +			if ( ve.isImmediatePropagationStopped() ) { +				event.stopImmediatePropagation(); +			} +		} +	} +} + +function handleTouchStart( event ) { + +	var touches = getNativeEvent( event ).touches, +		target, flags; + +	if ( touches && touches.length === 1 ) { + +		target = event.target; +		flags = getVirtualBindingFlags( target ); + +		if ( flags.hasVirtualBinding ) { + +			lastTouchID = nextTouchID++; +			$.data( target, touchTargetPropertyName, lastTouchID ); + +			clearResetTimer(); + +			disableMouseBindings(); +			didScroll = false; + +			var t = getNativeEvent( event ).touches[ 0 ]; +			startX = t.pageX; +			startY = t.pageY; + +			triggerVirtualEvent( "vmouseover", event, flags ); +			triggerVirtualEvent( "vmousedown", event, flags ); +		} +	} +} + +function handleScroll( event ) { +	if ( blockTouchTriggers ) { +		return; +	} + +	if ( !didScroll ) { +		triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); +	} + +	didScroll = true; +	startResetTimer(); +} + +function handleTouchMove( event ) { +	if ( blockTouchTriggers ) { +		return; +	} + +	var t = getNativeEvent( event ).touches[ 0 ], +		didCancel = didScroll, +		moveThreshold = $.vmouse.moveDistanceThreshold; +		didScroll = didScroll || +			( Math.abs(t.pageX - startX) > moveThreshold || +				Math.abs(t.pageY - startY) > moveThreshold ), +		flags = getVirtualBindingFlags( event.target ); + +	if ( didScroll && !didCancel ) { +		triggerVirtualEvent( "vmousecancel", event, flags ); +	} + +	triggerVirtualEvent( "vmousemove", event, flags ); +	startResetTimer(); +} + +function handleTouchEnd( event ) { +	if ( blockTouchTriggers ) { +		return; +	} + +	disableTouchBindings(); + +	var flags = getVirtualBindingFlags( event.target ), +		t; +	triggerVirtualEvent( "vmouseup", event, flags ); + +	if ( !didScroll ) { +		var ve = triggerVirtualEvent( "vclick", event, flags ); +		if ( ve && ve.isDefaultPrevented() ) { +			// The target of the mouse events that follow the touchend +			// event don't necessarily match the target used during the +			// touch. This means we need to rely on coordinates for blocking +			// any click that is generated. +			t = getNativeEvent( event ).changedTouches[ 0 ]; +			clickBlockList.push({ +				touchID: lastTouchID, +				x: t.clientX, +				y: t.clientY +			}); + +			// Prevent any mouse events that follow from triggering +			// virtual event notifications. +			blockMouseTriggers = true; +		} +	} +	triggerVirtualEvent( "vmouseout", event, flags); +	didScroll = false; + +	startResetTimer(); +} + +function hasVirtualBindings( ele ) { +	var bindings = $.data( ele, dataPropertyName ), +		k; + +	if ( bindings ) { +		for ( k in bindings ) { +			if ( bindings[ k ] ) { +				return true; +			} +		} +	} +	return false; +} + +function dummyMouseHandler(){} + +function getSpecialEventObject( eventType ) { +	var realType = eventType.substr( 1 ); + +	return { +		setup: function( data, namespace ) { +			// If this is the first virtual mouse binding for this element, +			// add a bindings object to its data. + +			if ( !hasVirtualBindings( this ) ) { +				$.data( this, dataPropertyName, {}); +			} + +			// If setup is called, we know it is the first binding for this +			// eventType, so initialize the count for the eventType to zero. +			var bindings = $.data( this, dataPropertyName ); +			bindings[ eventType ] = true; + +			// If this is the first virtual mouse event for this type, +			// register a global handler on the document. + +			activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + +			if ( activeDocHandlers[ eventType ] === 1 ) { +				$document.bind( realType, mouseEventCallback ); +			} + +			// Some browsers, like Opera Mini, won't dispatch mouse/click events +			// for elements unless they actually have handlers registered on them. +			// To get around this, we register dummy handlers on the elements. + +			$( this ).bind( realType, dummyMouseHandler ); + +			// For now, if event capture is not supported, we rely on mouse handlers. +			if ( eventCaptureSupported ) { +				// If this is the first virtual mouse binding for the document, +				// register our touchstart handler on the document. + +				activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + +				if (activeDocHandlers[ "touchstart" ] === 1) { +					$document.bind( "touchstart", handleTouchStart ) +						.bind( "touchend", handleTouchEnd ) + +						// On touch platforms, touching the screen and then dragging your finger +						// causes the window content to scroll after some distance threshold is +						// exceeded. On these platforms, a scroll prevents a click event from being +						// dispatched, and on some platforms, even the touchend is suppressed. To +						// mimic the suppression of the click event, we need to watch for a scroll +						// event. Unfortunately, some platforms like iOS don't dispatch scroll +						// events until *AFTER* the user lifts their finger (touchend). This means +						// we need to watch both scroll and touchmove events to figure out whether +						// or not a scroll happenens before the touchend event is fired. + +						.bind( "touchmove", handleTouchMove ) +						.bind( "scroll", handleScroll ); +				} +			} +		}, + +		teardown: function( data, namespace ) { +			// If this is the last virtual binding for this eventType, +			// remove its global handler from the document. + +			--activeDocHandlers[ eventType ]; + +			if ( !activeDocHandlers[ eventType ] ) { +				$document.unbind( realType, mouseEventCallback ); +			} + +			if ( eventCaptureSupported ) { +				// If this is the last virtual mouse binding in existence, +				// remove our document touchstart listener. + +				--activeDocHandlers[ "touchstart" ]; + +				if ( !activeDocHandlers[ "touchstart" ] ) { +					$document.unbind( "touchstart", handleTouchStart ) +						.unbind( "touchmove", handleTouchMove ) +						.unbind( "touchend", handleTouchEnd ) +						.unbind( "scroll", handleScroll ); +				} +			} + +			var $this = $( this ), +				bindings = $.data( this, dataPropertyName ); + +			// teardown may be called when an element was +			// removed from the DOM. If this is the case, +			// jQuery core may have already stripped the element +			// of any data bindings so we need to check it before +			// using it. +			if ( bindings ) { +				bindings[ eventType ] = false; +			} + +			// Unregister the dummy event handler. + +			$this.unbind( realType, dummyMouseHandler ); + +			// If this is the last virtual mouse binding on the +			// element, remove the binding data from the element. + +			if ( !hasVirtualBindings( this ) ) { +				$this.removeData( dataPropertyName ); +			} +		} +	}; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( var i = 0; i < virtualEventNames.length; i++ ){ +	$.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { +	document.addEventListener( "click", function( e ){ +		var cnt = clickBlockList.length, +			target = e.target, +			x, y, ele, i, o, touchID; + +		if ( cnt ) { +			x = e.clientX; +			y = e.clientY; +			threshold = $.vmouse.clickDistanceThreshold; + +			// The idea here is to run through the clickBlockList to see if +			// the current click event is in the proximity of one of our +			// vclick events that had preventDefault() called on it. If we find +			// one, then we block the click. +			// +			// Why do we have to rely on proximity? +			// +			// Because the target of the touch event that triggered the vclick +			// can be different from the target of the click event synthesized +			// by the browser. The target of a mouse/click event that is syntehsized +			// from a touch event seems to be implementation specific. For example, +			// some browsers will fire mouse/click events for a link that is near +			// a touch event, even though the target of the touchstart/touchend event +			// says the user touched outside the link. Also, it seems that with most +			// browsers, the target of the mouse/click event is not calculated until the +			// time it is dispatched, so if you replace an element that you touched +			// with another element, the target of the mouse/click will be the new +			// element underneath that point. +			// +			// Aside from proximity, we also check to see if the target and any +			// of its ancestors were the ones that blocked a click. This is necessary +			// because of the strange mouse/click target calculation done in the +			// Android 2.1 browser, where if you click on an element, and there is a +			// mouse/click handler on one of its ancestors, the target will be the +			// innermost child of the touched element, even if that child is no where +			// near the point of touch. + +			ele = target; + +			while ( ele ) { +				for ( i = 0; i < cnt; i++ ) { +					o = clickBlockList[ i ]; +					touchID = 0; + +					if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || +								$.data( ele, touchTargetPropertyName ) === o.touchID ) { +						// XXX: We may want to consider removing matches from the block list +						//      instead of waiting for the reset timer to fire. +						e.preventDefault(); +						e.stopPropagation(); +						return; +					} +				} +				ele = ele.parentNode; +			} +		} +	}, true); +} +})( jQuery, window, document ); + + + +// Script: jQuery hashchange event +//  +// *Version: 1.3, Last updated: 7/21/2010* +//  +// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ +// GitHub       - http://github.com/cowboy/jquery-hashchange/ +// Source       - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js +// (Minified)   - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) +//  +// About: License +//  +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +//  +// About: Examples +//  +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +//  +// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ +// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ +//  +// About: Support and Testing +//  +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +//  +// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, +//                   Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. +// Unit Tests      - http://benalman.com/code/projects/jquery-hashchange/unit/ +//  +// About: Known issues +//  +// While this jQuery hashchange event implementation is quite stable and +// robust, there are a few unfortunate browser bugs surrounding expected +// hashchange event-based behaviors, independent of any JavaScript +// window.onhashchange abstraction. See the following examples for more +// information: +//  +// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ +// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ +// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ +// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ +//  +// Also note that should a browser natively support the window.onhashchange  +// event, but not report that it does, the fallback polling loop will be used. +//  +// About: Release History +//  +// 1.3   - (7/21/2010) Reorganized IE6/7 Iframe code to make it more +//         "removable" for mobile-only development. Added IE6/7 document.title +//         support. Attempted to make Iframe as hidden as possible by using +//         techniques from http://www.paciellogroup.com/blog/?p=604. Added  +//         support for the "shortcut" format $(window).hashchange( fn ) and +//         $(window).hashchange() like jQuery provides for built-in events. +//         Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and +//         lowered its default value to 50. Added <jQuery.fn.hashchange.domain> +//         and <jQuery.fn.hashchange.src> properties plus document-domain.html +//         file to address access denied issues when setting document.domain in +//         IE6/7. +// 1.2   - (2/11/2010) Fixed a bug where coming back to a page using this plugin +//         from a page on another domain would cause an error in Safari 4. Also, +//         IE6/7 Iframe is now inserted after the body (this actually works), +//         which prevents the page from scrolling when the event is first bound. +//         Event can also now be bound before DOM ready, but it won't be usable +//         before then in IE6/7. +// 1.1   - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug +//         where browser version is incorrectly reported as 8.0, despite +//         inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. +// 1.0   - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special +//         window.onhashchange functionality into a separate plugin for users +//         who want just the basic event & back button support, without all the +//         extra awesomeness that BBQ provides. This plugin will be included as +//         part of jQuery BBQ, but also be available separately. + +(function($,window,undefined){ +  // Reused string. +  var str_hashchange = 'hashchange', +     +    // Method / object references. +    doc = document, +    fake_onhashchange, +    special = $.event.special, +     +    // Does the browser support window.onhashchange? Note that IE8 running in +    // IE7 compatibility mode reports true for 'onhashchange' in window, even +    // though the event isn't supported, so also test document.documentMode. +    doc_mode = doc.documentMode, +    supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); +   +  // Get location.hash (or what you'd expect location.hash to be) sans any +  // leading #. Thanks for making this necessary, Firefox! +  function get_fragment( url ) { +    url = url || location.href; +    return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); +  }; +   +  // Method: jQuery.fn.hashchange +  //  +  // Bind a handler to the window.onhashchange event or trigger all bound +  // window.onhashchange event handlers. This behavior is consistent with +  // jQuery's built-in event handlers. +  //  +  // Usage: +  //  +  // > jQuery(window).hashchange( [ handler ] ); +  //  +  // Arguments: +  //  +  //  handler - (Function) Optional handler to be bound to the hashchange +  //    event. This is a "shortcut" for the more verbose form: +  //    jQuery(window).bind( 'hashchange', handler ). If handler is omitted, +  //    all bound window.onhashchange event handlers will be triggered. This +  //    is a shortcut for the more verbose +  //    jQuery(window).trigger( 'hashchange' ). These forms are described in +  //    the <hashchange event> section. +  //  +  // Returns: +  //  +  //  (jQuery) The initial jQuery collection of elements. +   +  // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and +  // $(elem).hashchange() for triggering, like jQuery does for built-in events. +  $.fn[ str_hashchange ] = function( fn ) { +    return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); +  }; +   +  // Property: jQuery.fn.hashchange.delay +  //  +  // The numeric interval (in milliseconds) at which the <hashchange event> +  // polling loop executes. Defaults to 50. +   +  // Property: jQuery.fn.hashchange.domain +  //  +  // If you're setting document.domain in your JavaScript, and you want hash +  // history to work in IE6/7, not only must this property be set, but you must +  // also set document.domain BEFORE jQuery is loaded into the page. This +  // property is only applicable if you are supporting IE6/7 (or IE8 operating +  // in "IE7 compatibility" mode). +  //  +  // In addition, the <jQuery.fn.hashchange.src> property must be set to the +  // path of the included "document-domain.html" file, which can be renamed or +  // modified if necessary (note that the document.domain specified must be the +  // same in both your main JavaScript as well as in this file). +  //  +  // Usage: +  //  +  // jQuery.fn.hashchange.domain = document.domain; +   +  // Property: jQuery.fn.hashchange.src +  //  +  // If, for some reason, you need to specify an Iframe src file (for example, +  // when setting document.domain as in <jQuery.fn.hashchange.domain>), you can +  // do so using this property. Note that when using this property, history +  // won't be recorded in IE6/7 until the Iframe src file loads. This property +  // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 +  // compatibility" mode). +  //  +  // Usage: +  //  +  // jQuery.fn.hashchange.src = 'path/to/file.html'; +   +  $.fn[ str_hashchange ].delay = 50; +  /* +  $.fn[ str_hashchange ].domain = null; +  $.fn[ str_hashchange ].src = null; +  */ +   +  // Event: hashchange event +  //  +  // Fired when location.hash changes. In browsers that support it, the native +  // HTML5 window.onhashchange event is used, otherwise a polling loop is +  // initialized, running every <jQuery.fn.hashchange.delay> milliseconds to +  // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 +  // compatibility" mode), a hidden Iframe is created to allow the back button +  // and hash-based history to work. +  //  +  // Usage as described in <jQuery.fn.hashchange>: +  //  +  // > // Bind an event handler. +  // > jQuery(window).hashchange( function(e) { +  // >   var hash = location.hash; +  // >   ... +  // > }); +  // >  +  // > // Manually trigger the event handler. +  // > jQuery(window).hashchange(); +  //  +  // A more verbose usage that allows for event namespacing: +  //  +  // > // Bind an event handler. +  // > jQuery(window).bind( 'hashchange', function(e) { +  // >   var hash = location.hash; +  // >   ... +  // > }); +  // >  +  // > // Manually trigger the event handler. +  // > jQuery(window).trigger( 'hashchange' ); +  //  +  // Additional Notes: +  //  +  // * The polling loop and Iframe are not created until at least one handler +  //   is actually bound to the 'hashchange' event. +  // * If you need the bound handler(s) to execute immediately, in cases where +  //   a location.hash exists on page load, via bookmark or page refresh for +  //   example, use jQuery(window).hashchange() or the more verbose  +  //   jQuery(window).trigger( 'hashchange' ). +  // * The event can be bound before DOM ready, but since it won't be usable +  //   before then in IE6/7 (due to the necessary Iframe), recommended usage is +  //   to bind it inside a DOM ready handler. +   +  // Override existing $.event.special.hashchange methods (allowing this plugin +  // to be defined after jQuery BBQ in BBQ's source code). +  special[ str_hashchange ] = $.extend( special[ str_hashchange ], { +     +    // Called only when the first 'hashchange' event is bound to window. +    setup: function() { +      // If window.onhashchange is supported natively, there's nothing to do.. +      if ( supports_onhashchange ) { return false; } +       +      // Otherwise, we need to create our own. And we don't want to call this +      // until the user binds to the event, just in case they never do, since it +      // will create a polling loop and possibly even a hidden Iframe. +      $( fake_onhashchange.start ); +    }, +     +    // Called only when the last 'hashchange' event is unbound from window. +    teardown: function() { +      // If window.onhashchange is supported natively, there's nothing to do.. +      if ( supports_onhashchange ) { return false; } +       +      // Otherwise, we need to stop ours (if possible). +      $( fake_onhashchange.stop ); +    } +     +  }); +   +  // fake_onhashchange does all the work of triggering the window.onhashchange +  // event for browsers that don't natively support it, including creating a +  // polling loop to watch for hash changes and in IE 6/7 creating a hidden +  // Iframe to enable back and forward. +  fake_onhashchange = (function(){ +    var self = {}, +      timeout_id, +       +      // Remember the initial hash so it doesn't get triggered immediately. +      last_hash = get_fragment(), +       +      fn_retval = function(val){ return val; }, +      history_set = fn_retval, +      history_get = fn_retval; +     +    // Start the polling loop. +    self.start = function() { +      timeout_id || poll(); +    }; +     +    // Stop the polling loop. +    self.stop = function() { +      timeout_id && clearTimeout( timeout_id ); +      timeout_id = undefined; +    }; +     +    // This polling loop checks every $.fn.hashchange.delay milliseconds to see +    // if location.hash has changed, and triggers the 'hashchange' event on +    // window when necessary. +    function poll() { +      var hash = get_fragment(), +        history_hash = history_get( last_hash ); +       +      if ( hash !== last_hash ) { +        history_set( last_hash = hash, history_hash ); +         +        $(window).trigger( str_hashchange ); +         +      } else if ( history_hash !== last_hash ) { +        location.href = location.href.replace( /#.*/, '' ) + history_hash; +      } +       +      timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); +    }; +     +    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +    // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv +    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +    $.browser.msie && !supports_onhashchange && (function(){ +      // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 +      // when running in "IE7 compatibility" mode. +       +      var iframe, +        iframe_src; +       +      // When the event is bound and polling starts in IE 6/7, create a hidden +      // Iframe for history handling. +      self.start = function(){ +        if ( !iframe ) { +          iframe_src = $.fn[ str_hashchange ].src; +          iframe_src = iframe_src && iframe_src + get_fragment(); +           +          // Create hidden Iframe. Attempt to make Iframe as hidden as possible +          // by using techniques from http://www.paciellogroup.com/blog/?p=604. +          iframe = $('<iframe tabindex="-1" title="empty"/>').hide() +             +            // When Iframe has completely loaded, initialize the history and +            // start polling. +            .one( 'load', function(){ +              iframe_src || history_set( get_fragment() ); +              poll(); +            }) +             +            // Load Iframe src if specified, otherwise nothing. +            .attr( 'src', iframe_src || 'javascript:0' ) +             +            // Append Iframe after the end of the body to prevent unnecessary +            // initial page scrolling (yes, this works). +            .insertAfter( 'body' )[0].contentWindow; +           +          // Whenever `document.title` changes, update the Iframe's title to +          // prettify the back/next history menu entries. Since IE sometimes +          // errors with "Unspecified error" the very first time this is set +          // (yes, very useful) wrap this with a try/catch block. +          doc.onpropertychange = function(){ +            try { +              if ( event.propertyName === 'title' ) { +                iframe.document.title = doc.title; +              } +            } catch(e) {} +          }; +           +        } +      }; +       +      // Override the "stop" method since an IE6/7 Iframe was created. Even +      // if there are no longer any bound event handlers, the polling loop +      // is still necessary for back/next to work at all! +      self.stop = fn_retval; +       +      // Get history by looking at the hidden Iframe's location.hash. +      history_get = function() { +        return get_fragment( iframe.location.href ); +      }; +       +      // Set a new history item by opening and then closing the Iframe +      // document, *then* setting its location.hash. If document.domain has +      // been set, update that as well. +      history_set = function( hash, history_hash ) { +        var iframe_doc = iframe.document, +          domain = $.fn[ str_hashchange ].domain; +         +        if ( hash !== history_hash ) { +          // Update Iframe with any initial `document.title` that might be set. +          iframe_doc.title = doc.title; +           +          // Opening the Iframe's document after it has been closed is what +          // actually adds a history entry. +          iframe_doc.open(); +           +          // Set document.domain for the Iframe document as well, if necessary. +          domain && iframe_doc.write( '<script>document.domain="' + domain + '"</script>' ); +           +          iframe_doc.close(); +           +          // Update the Iframe's hash, for great justice. +          iframe.location.hash = hash; +        } +      }; +       +    })(); +    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +    // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^ +    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +     +    return self; +  })(); +   +})(jQuery,this); + +/*! + * jQuery UI Widget @VERSION + * + * Copyright 2010, 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/Widget + */ + +(function( $, undefined ) { + +// jQuery 1.4+ +if ( $.cleanData ) { +	var _cleanData = $.cleanData; +	$.cleanData = function( elems ) { +		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { +			$( elem ).triggerHandler( "remove" ); +		} +		_cleanData( elems ); +	}; +} else { +	var _remove = $.fn.remove; +	$.fn.remove = function( selector, keepData ) { +		return this.each(function() { +			if ( !keepData ) { +				if ( !selector || $.filter( selector, [ this ] ).length ) { +					$( "*", this ).add( [ this ] ).each(function() { +						$( this ).triggerHandler( "remove" ); +					}); +				} +			} +			return _remove.call( $(this), selector, keepData ); +		}); +	}; +} + +$.widget = function( name, base, prototype ) { +	var namespace = name.split( "." )[ 0 ], +		fullName; +	name = name.split( "." )[ 1 ]; +	fullName = namespace + "-" + name; + +	if ( !prototype ) { +		prototype = base; +		base = $.Widget; +	} + +	// create selector for plugin +	$.expr[ ":" ][ fullName ] = function( elem ) { +		return !!$.data( elem, name ); +	}; + +	$[ namespace ] = $[ namespace ] || {}; +	$[ namespace ][ name ] = function( options, element ) { +		// allow instantiation without initializing for simple inheritance +		if ( arguments.length ) { +			this._createWidget( options, element ); +		} +	}; + +	var basePrototype = new base(); +	// we need to make the options hash a property directly on the new instance +	// otherwise we'll modify the options hash on the prototype that we're +	// inheriting from +//	$.each( basePrototype, function( key, val ) { +//		if ( $.isPlainObject(val) ) { +//			basePrototype[ key ] = $.extend( {}, val ); +//		} +//	}); +	basePrototype.options = $.extend( true, {}, basePrototype.options ); +	$[ namespace ][ name ].prototype = $.extend( true, basePrototype, { +		namespace: namespace, +		widgetName: name, +		widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name, +		widgetBaseClass: fullName +	}, prototype ); + +	$.widget.bridge( name, $[ namespace ][ name ] ); +}; + +$.widget.bridge = function( name, object ) { +	$.fn[ name ] = function( options ) { +		var isMethodCall = typeof options === "string", +			args = Array.prototype.slice.call( arguments, 1 ), +			returnValue = this; + +		// allow multiple hashes to be passed on init +		options = !isMethodCall && args.length ? +			$.extend.apply( null, [ true, options ].concat(args) ) : +			options; + +		// prevent calls to internal methods +		if ( isMethodCall && options.charAt( 0 ) === "_" ) { +			return returnValue; +		} + +		if ( isMethodCall ) { +			this.each(function() { +				var instance = $.data( this, name ); +				if ( !instance ) { +					throw "cannot call methods on " + name + " prior to initialization; " + +						"attempted to call method '" + options + "'"; +				} +				if ( !$.isFunction( instance[options] ) ) { +					throw "no such method '" + options + "' for " + name + " widget instance"; +				} +				var methodValue = instance[ options ].apply( instance, args ); +				if ( methodValue !== instance && methodValue !== undefined ) { +					returnValue = methodValue; +					return false; +				} +			}); +		} else { +			this.each(function() { +				var instance = $.data( this, name ); +				if ( instance ) { +					instance.option( options || {} )._init(); +				} else { +					$.data( this, name, new object( options, this ) ); +				} +			}); +		} + +		return returnValue; +	}; +}; + +$.Widget = function( options, element ) { +	// allow instantiation without initializing for simple inheritance +	if ( arguments.length ) { +		this._createWidget( options, element ); +	} +}; + +$.Widget.prototype = { +	widgetName: "widget", +	widgetEventPrefix: "", +	options: { +		disabled: false +	}, +	_createWidget: function( options, element ) { +		// $.widget.bridge stores the plugin instance, but we do it anyway +		// so that it's stored even before the _create function runs +		$.data( element, this.widgetName, this ); +		this.element = $( element ); +		this.options = $.extend( true, {}, +			this.options, +			this._getCreateOptions(), +			options ); + +		var self = this; +		this.element.bind( "remove." + this.widgetName, function() { +			self.destroy(); +		}); + +		this._create(); +		this._trigger( "create" ); +		this._init(); +	}, +	_getCreateOptions: function() { +		var options = {}; +		if ( $.metadata ) { +			options = $.metadata.get( element )[ this.widgetName ]; +		} +		return options; +	}, +	_create: function() {}, +	_init: function() {}, + +	destroy: function() { +		this.element +			.unbind( "." + this.widgetName ) +			.removeData( this.widgetName ); +		this.widget() +			.unbind( "." + this.widgetName ) +			.removeAttr( "aria-disabled" ) +			.removeClass( +				this.widgetBaseClass + "-disabled " + +				"ui-state-disabled" ); +	}, + +	widget: function() { +		return this.element; +	}, + +	option: function( key, value ) { +		var options = key; + +		if ( arguments.length === 0 ) { +			// don't return a reference to the internal hash +			return $.extend( {}, this.options ); +		} + +		if  (typeof key === "string" ) { +			if ( value === undefined ) { +				return this.options[ key ]; +			} +			options = {}; +			options[ key ] = value; +		} + +		this._setOptions( options ); + +		return this; +	}, +	_setOptions: function( options ) { +		var self = this; +		$.each( options, function( key, value ) { +			self._setOption( key, value ); +		}); + +		return this; +	}, +	_setOption: function( key, value ) { +		this.options[ key ] = value; + +		if ( key === "disabled" ) { +			this.widget() +				[ value ? "addClass" : "removeClass"]( +					this.widgetBaseClass + "-disabled" + " " + +					"ui-state-disabled" ) +				.attr( "aria-disabled", value ); +		} + +		return this; +	}, + +	enable: function() { +		return this._setOption( "disabled", false ); +	}, +	disable: function() { +		return this._setOption( "disabled", true ); +	}, + +	_trigger: function( type, event, data ) { +		var callback = this.options[ type ]; + +		event = $.Event( event ); +		event.type = ( type === this.widgetEventPrefix ? +			type : +			this.widgetEventPrefix + type ).toLowerCase(); +		data = data || {}; + +		// copy original event properties over to the new event +		// this would happen if we could call $.event.fix instead of $.Event +		// but we don't have a way to force an event to be fixed multiple times +		if ( event.originalEvent ) { +			for ( var i = $.event.props.length, prop; i; ) { +				prop = $.event.props[ --i ]; +				event[ prop ] = event.originalEvent[ prop ]; +			} +		} + +		this.element.trigger( event, data ); + +		return !( $.isFunction(callback) && +			callback.call( this.element[0], event, data ) === false || +			event.isDefaultPrevented() ); +	} +}; + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.widget", { +	// decorate the parent _createWidget to trigger `widgetinit` for users +	// who wish to do post post `widgetcreate` alterations/additions +	// +	// TODO create a pull request for jquery ui to trigger this event +	// in the original _createWidget +	_createWidget: function() { +		$.Widget.prototype._createWidget.apply( this, arguments ); +		this._trigger( 'init' ); +	}, + +	_getCreateOptions: function() { + +		var elem = this.element, +			options = {}; + +		$.each( this.options, function( option ) { + +			var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { +							return "-" + c.toLowerCase(); +						}) +					); + +			if ( value !== undefined ) { +				options[ option ] = value; +			} +		}); + +		return options; +	}, + +	enhanceWithin: function( target, useKeepNative ) { +		this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); +	}, + +	enhance: function( targets, useKeepNative ) { +		var page, keepNative, $widgetElements = $( targets ), self = this; + +		// if ignoreContentEnabled is set to true the framework should +		// only enhance the selected elements when they do NOT have a +		// parent with the data-namespace-ignore attribute +		$widgetElements = $.mobile.enhanceable( $widgetElements ); + +		if ( useKeepNative && $widgetElements.length ) { +			// TODO remove dependency on the page widget for the keepNative. +			// Currently the keepNative value is defined on the page prototype so +			// the method is as well +			page = $.mobile.closestPageData( $widgetElements ); +			keepNative = (page && page.keepNativeSelector()) || ""; + +			$widgetElements = $widgetElements.not( keepNative ); +		} + +		$widgetElements[ this.widgetName ](); +	}, + +	raise: function( msg ) { +		throw "Widget [" + this.widgetName + "]: " + msg; +	} +}); + +})( jQuery ); + +(function( $, window, undefined ) { + +	var nsNormalizeDict = {}; + +	// jQuery.mobile configurable options +	$.mobile = $.extend( {}, { + +		// Version of the jQuery Mobile Framework +		version: "1.1.0", + +		// Namespace used framework-wide for data-attrs. Default is no namespace +		ns: "", + +		// Define the url parameter used for referencing widget-generated sub-pages. +		// Translates to to example.html&ui-page=subpageIdentifier +		// hash segment before &ui-page= is used to make Ajax request +		subPageUrlKey: "ui-page", + +		// Class assigned to page currently in view, and during transitions +		activePageClass: "ui-page-active", + +		// Class used for "active" button state, from CSS framework +		activeBtnClass: "ui-btn-active", + +		// Class used for "focus" form element state, from CSS framework +		focusClass: "ui-focus", + +		// Automatically handle clicks and form submissions through Ajax, when same-domain +		ajaxEnabled: true, + +		// Automatically load and show pages based on location.hash +		hashListeningEnabled: true, + +		// disable to prevent jquery from bothering with links +		linkBindingEnabled: true, + +		// Set default page transition - 'none' for no transitions +		defaultPageTransition: "fade", + +		// Set maximum window width for transitions to apply - 'false' for no limit +		maxTransitionWidth: false, + +		// Minimum scroll distance that will be remembered when returning to a page +		minScrollBack: 250, + +		// DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts +		touchOverflowEnabled: false, + +		// Set default dialog transition - 'none' for no transitions +		defaultDialogTransition: "pop", + +		// Show loading message during Ajax requests +		// if false, message will not appear, but loading classes will still be toggled on html el +		loadingMessage: "loading", + +		// Error response message - appears when an Ajax page request fails +		pageLoadErrorMessage: "Error Loading Page", + +		// Should the text be visble in the loading message? +		loadingMessageTextVisible: false, + +		// When the text is visible, what theme does the loading box use? +		loadingMessageTheme: "a", + +		// For error messages, which theme does the box uses? +		pageLoadErrorMessageTheme: "e", + +		//automatically initialize the DOM when it's ready +		autoInitializePage: true, + +		pushStateEnabled: true, + +		// allows users to opt in to ignoring content by marking a parent element as +		// data-ignored +		ignoreContentEnabled: false, + +		// turn of binding to the native orientationchange due to android orientation behavior +		orientationChangeEnabled: true, + +		buttonMarkup: { +			hoverDelay: 200 +		}, + +		// TODO might be useful upstream in jquery itself ? +		keyCode: { +			ALT: 18, +			BACKSPACE: 8, +			CAPS_LOCK: 20, +			COMMA: 188, +			COMMAND: 91, +			COMMAND_LEFT: 91, // COMMAND +			COMMAND_RIGHT: 93, +			CONTROL: 17, +			DELETE: 46, +			DOWN: 40, +			END: 35, +			ENTER: 13, +			ESCAPE: 27, +			HOME: 36, +			INSERT: 45, +			LEFT: 37, +			MENU: 93, // COMMAND_RIGHT +			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 // COMMAND +		}, + +		// Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value +		silentScroll: function( ypos ) { +			if ( $.type( ypos ) !== "number" ) { +				ypos = $.mobile.defaultHomeScroll; +			} + +			// prevent scrollstart and scrollstop events +			$.event.special.scrollstart.enabled = false; + +			setTimeout(function() { +				window.scrollTo( 0, ypos ); +				$( document ).trigger( "silentscroll", { x: 0, y: ypos }); +			}, 20 ); + +			setTimeout(function() { +				$.event.special.scrollstart.enabled = true; +			}, 150 ); +		}, + +		// Expose our cache for testing purposes. +		nsNormalizeDict: nsNormalizeDict, + +		// Take a data attribute property, prepend the namespace +		// and then camel case the attribute string. Add the result +		// to our nsNormalizeDict so we don't have to do this again. +		nsNormalize: function( prop ) { +			if ( !prop ) { +				return; +			} + +			return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); +		}, + +		getInheritedTheme: function( el, defaultTheme ) { + +			// Find the closest parent with a theme class on it. Note that +			// we are not using $.fn.closest() on purpose here because this +			// method gets called quite a bit and we need it to be as fast +			// as possible. + +			var e = el[ 0 ], +				ltr = "", +				re = /ui-(bar|body|overlay)-([a-z])\b/, +				c, m; + +			while ( e ) { +				var c = e.className || ""; +				if ( ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { +					// We found a parent with a theme class +					// on it so bail from this loop. +					break; +				} +				e = e.parentNode; +			} + +			// Return the theme letter we found, if none, return the +			// specified default. + +			return ltr || defaultTheme || "a"; +		}, + +		// TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers +		// +		// Find the closest javascript page element to gather settings data jsperf test +		// http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit +		// possibly naive, but it shows that the parsing overhead for *just* the page selector vs +		// the page and dialog selector is negligable. This could probably be speed up by +		// doing a similar parent node traversal to the one found in the inherited theme code above +		closestPageData: function( $target ) { +			return $target +				.closest(':jqmData(role="page"), :jqmData(role="dialog")') +				.data("page"); +		}, + +		enhanceable: function( $set ) { +			return this.haveParents( $set, "enhance" ); +		}, + +		hijackable: function( $set ) { +			return this.haveParents( $set, "ajax" ); +		}, + +		haveParents: function( $set, attr ) { +			if( !$.mobile.ignoreContentEnabled ){ +				return $set; +			} + +			var count = $set.length, +				$newSet = $(), +				e, $element, excluded; + +			for ( var i = 0; i < count; i++ ) { +				$element = $set.eq( i ); +				excluded = false; +				e = $set[ i ]; + +				while ( e ) { +					var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; + +					if ( c === "false" ) { +						excluded = true; +						break; +					} + +					e = e.parentNode; +				} + +				if ( !excluded ) { +					$newSet = $newSet.add( $element ); +				} +			} + +			return $newSet; +		} +	}, $.mobile ); + +	// Mobile version of data and removeData and hasData methods +	// ensures all data is set and retrieved using jQuery Mobile's data namespace +	$.fn.jqmData = function( prop, value ) { +		var result; +		if ( typeof prop != "undefined" ) { +			if ( prop ) { +				prop = $.mobile.nsNormalize( prop ); +			} +			result = this.data.apply( this, arguments.length < 2 ? [ prop ] : [ prop, value ] ); +		} +		return result; +	}; + +	$.jqmData = function( elem, prop, value ) { +		var result; +		if ( typeof prop != "undefined" ) { +			result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); +		} +		return result; +	}; + +	$.fn.jqmRemoveData = function( prop ) { +		return this.removeData( $.mobile.nsNormalize( prop ) ); +	}; + +	$.jqmRemoveData = function( elem, prop ) { +		return $.removeData( elem, $.mobile.nsNormalize( prop ) ); +	}; + +	$.fn.removeWithDependents = function() { +		$.removeWithDependents( this ); +	}; + +	$.removeWithDependents = function( elem ) { +		var $elem = $( elem ); + +		( $elem.jqmData('dependents') || $() ).remove(); +		$elem.remove(); +	}; + +	$.fn.addDependents = function( newDependents ) { +		$.addDependents( $(this), newDependents ); +	}; + +	$.addDependents = function( elem, newDependents ) { +		var dependents = $(elem).jqmData( 'dependents' ) || $(); + +		$(elem).jqmData( 'dependents', $.merge(dependents, newDependents) ); +	}; + +	// note that this helper doesn't attempt to handle the callback +	// or setting of an html elements text, its only purpose is +	// to return the html encoded version of the text in all cases. (thus the name) +	$.fn.getEncodedText = function() { +		return $( "<div/>" ).text( $(this).text() ).html(); +	}; + +	// fluent helper function for the mobile namespaced equivalent +	$.fn.jqmEnhanceable = function() { +		return $.mobile.enhanceable( this ); +	}; + +	$.fn.jqmHijackable = function() { +		return $.mobile.hijackable( this ); +	}; + +	// Monkey-patching Sizzle to filter the :jqmData selector +	var oldFind = $.find, +		jqmDataRE = /:jqmData\(([^)]*)\)/g; + +	$.find = function( selector, context, ret, extra ) { +		selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); + +		return oldFind.call( this, selector, context, ret, extra ); +	}; + +	$.extend( $.find, oldFind ); + +	$.find.matches = function( expr, set ) { +		return $.find( expr, null, null, set ); +	}; + +	$.find.matchesSelector = function( node, expr ) { +		return $.find( expr, null, null, [ node ] ).length > 0; +	}; +})( jQuery, this ); + + +(function( $, undefined ) { + +var $window = $( window ), +	$html = $( "html" ); + +/* $.mobile.media method: pass a CSS media type or query and get a bool return +	note: this feature relies on actual media query support for media queries, though types will work most anywhere +	examples: +		$.mobile.media('screen') // tests for screen media type +		$.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px +		$.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) +*/ +$.mobile.media = (function() { +	// TODO: use window.matchMedia once at least one UA implements it +	var cache = {}, +		testDiv = $( "<div id='jquery-mediatest'>" ), +		fakeBody = $( "<body>" ).append( testDiv ); + +	return function( query ) { +		if ( !( query in cache ) ) { +			var styleBlock = document.createElement( "style" ), +				cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; + +			//must set type for IE! +			styleBlock.type = "text/css"; + +			if ( styleBlock.styleSheet  ){ +				styleBlock.styleSheet.cssText = cssrule; +			} else { +				styleBlock.appendChild( document.createTextNode(cssrule) ); +			} + +			$html.prepend( fakeBody ).prepend( styleBlock ); +			cache[ query ] = testDiv.css( "position" ) === "absolute"; +			fakeBody.add( styleBlock ).remove(); +		} +		return cache[ query ]; +	}; +})(); + +})(jQuery); + +(function( $, undefined ) { + +var fakeBody = $( "<body>" ).prependTo( "html" ), +	fbCSS = fakeBody[ 0 ].style, +	vendors = [ "Webkit", "Moz", "O" ], +	webos = "palmGetResource" in window, //only used to rule out scrollTop +	operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", +	bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB + +// thx Modernizr +function propExists( prop ) { +	var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), +		props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); + +	for ( var v in props ){ +		if ( fbCSS[ props[ v ] ] !== undefined ) { +			return true; +		} +	} +} + +function validStyle( prop, value, check_vend ) { +	var div = document.createElement('div'), +		uc = function( txt ) { +			return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ) +		}, +		vend_pref = function( vend ) { +			return  "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; +		}, +		check_style = function( vend ) { +			var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", +				uc_vend = uc( vend ), +				propStyle = uc_vend + uc( prop ); +		 +			div.setAttribute( "style", vend_prop ); +		 +			if( !!div.style[ propStyle ] ) { +				ret = true; +			} +		}, +		check_vends = check_vend ? [ check_vend ] : vendors, +		ret; + +	for( i = 0; i < check_vends.length; i++ ) { +		check_style( check_vends[i] ); +	} +	return !!ret; +} + +// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. +function transform3dTest() { +	var prop = "transform-3d"; +	return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); +} + +// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) +function baseTagTest() { +	var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", +		base = $( "head base" ), +		fauxEle = null, +		href = "", +		link, rebase; + +	if ( !base.length ) { +		base = fauxEle = $( "<base>", { "href": fauxBase }).appendTo( "head" ); +	} else { +		href = base.attr( "href" ); +	} + +	link = $( "<a href='testurl' />" ).prependTo( fakeBody ); +	rebase = link[ 0 ].href; +	base[ 0 ].href = href || location.pathname; + +	if ( fauxEle ) { +		fauxEle.remove(); +	} +	return rebase.indexOf( fauxBase ) === 0; +} + + +// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 +// allows for inclusion of IE 6+, including Windows Mobile 7 +$.extend( $.mobile, { browser: {} } ); +$.mobile.browser.ie = (function() { +	var v = 3, +	div = document.createElement( "div" ), +	a = div.all || []; + +	// added {} to silence closure compiler warnings. registering my dislike of all things +	// overly clever here for future reference +	while ( div.innerHTML = "<!--[if gt IE " + ( ++v ) + "]><br><![endif]-->", a[ 0 ] ){}; + +	return v > 4 ? v : !v; +})(); + + +$.extend( $.support, { +	orientation: "orientation" in window && "onorientationchange" in window, +	touch: "ontouchend" in document, +	cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ), +	pushState: "pushState" in history && "replaceState" in history, +	mediaquery: $.mobile.media( "only all" ), +	cssPseudoElement: !!propExists( "content" ), +	touchOverflow: !!propExists( "overflowScrolling" ), +	cssTransform3d: transform3dTest(), +	boxShadow: !!propExists( "boxShadow" ) && !bb, +	scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, +	dynamicBaseTag: baseTagTest() +}); + +fakeBody.remove(); + + +// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian) +// or that generally work better browsing in regular http for full page refreshes (Opera Mini) +// Note: This detection below is used as a last resort. +// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible +var nokiaLTE7_3 = (function(){ + +	var ua = window.navigator.userAgent; + +	//The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older +	return ua.indexOf( "Nokia" ) > -1 && +			( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) && +			ua.indexOf( "AppleWebKit" ) > -1 && +			ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ ); +})(); + +// Support conditions that must be met in order to proceed +// default enhanced qualifications are media query support OR IE 7+ +$.mobile.gradeA = function(){ +	return $.support.mediaquery || $.mobile.browser.ie && $.mobile.browser.ie >= 7; +}; + +$.mobile.ajaxBlacklist = +			// BlackBerry browsers, pre-webkit +			window.blackberry && !window.WebKitPoint || +			// Opera Mini +			operamini || +			// Symbian webkits pre 7.3 +			nokiaLTE7_3; + +// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices +// to render the stylesheets when they're referenced before this script, as we'd recommend doing. +// This simply reappends the CSS in place, which for some reason makes it apply +if ( nokiaLTE7_3 ) { +	$(function() { +		$( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); +	}); +} + +// For ruling out shadows via css +if ( !$.support.boxShadow ) { +	$( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); +} + +})( jQuery ); + +(function( $, window, undefined ) { + +// add new event shortcuts +$.each( ( "touchstart touchmove touchend orientationchange throttledresize " + +					"tap taphold swipe swipeleft swiperight scrollstart scrollstop" ).split( " " ), function( i, name ) { + +	$.fn[ name ] = function( fn ) { +		return fn ? this.bind( name, fn ) : this.trigger( name ); +	}; + +	$.attrFn[ name ] = true; +}); + +var supportTouch = $.support.touch, +	scrollEvent = "touchmove scroll", +	touchStartEvent = supportTouch ? "touchstart" : "mousedown", +	touchStopEvent = supportTouch ? "touchend" : "mouseup", +	touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; + +function triggerCustomEvent( obj, eventType, event ) { +	var originalType = event.type; +	event.type = eventType; +	$.event.handle.call( obj, event ); +	event.type = originalType; +} + +// also handles scrollstop +$.event.special.scrollstart = { + +	enabled: true, + +	setup: function() { + +		var thisObject = this, +			$this = $( thisObject ), +			scrolling, +			timer; + +		function trigger( event, state ) { +			scrolling = state; +			triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); +		} + +		// iPhone triggers scroll after a small delay; use touchmove instead +		$this.bind( scrollEvent, function( event ) { + +			if ( !$.event.special.scrollstart.enabled ) { +				return; +			} + +			if ( !scrolling ) { +				trigger( event, true ); +			} + +			clearTimeout( timer ); +			timer = setTimeout(function() { +				trigger( event, false ); +			}, 50 ); +		}); +	} +}; + +// also handles taphold +$.event.special.tap = { +	setup: function() { +		var thisObject = this, +			$this = $( thisObject ); + +		$this.bind( "vmousedown", function( event ) { + +			if ( event.which && event.which !== 1 ) { +				return false; +			} + +			var origTarget = event.target, +				origEvent = event.originalEvent, +				timer; + +			function clearTapTimer() { +				clearTimeout( timer ); +			} + +			function clearTapHandlers() { +				clearTapTimer(); + +				$this.unbind( "vclick", clickHandler ) +					.unbind( "vmouseup", clearTapTimer ); +				$( document ).unbind( "vmousecancel", clearTapHandlers ); +			} + +			function clickHandler(event) { +				clearTapHandlers(); + +				// ONLY trigger a 'tap' event if the start target is +				// the same as the stop target. +				if ( origTarget == event.target ) { +					triggerCustomEvent( thisObject, "tap", event ); +				} +			} + +			$this.bind( "vmouseup", clearTapTimer ) +				.bind( "vclick", clickHandler ); +			$( document ).bind( "vmousecancel", clearTapHandlers ); + +			timer = setTimeout(function() { +					triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); +			}, 750 ); +		}); +	} +}; + +// also handles swipeleft, swiperight +$.event.special.swipe = { +	scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling. + +	durationThreshold: 1000, // More time than this, and it isn't a swipe. + +	horizontalDistanceThreshold: 30,  // Swipe horizontal displacement must be more than this. + +	verticalDistanceThreshold: 75,  // Swipe vertical displacement must be less than this. + +	setup: function() { +		var thisObject = this, +			$this = $( thisObject ); + +		$this.bind( touchStartEvent, function( event ) { +			var data = event.originalEvent.touches ? +								event.originalEvent.touches[ 0 ] : event, +				start = { +					time: ( new Date() ).getTime(), +					coords: [ data.pageX, data.pageY ], +					origin: $( event.target ) +				}, +				stop; + +			function moveHandler( event ) { + +				if ( !start ) { +					return; +				} + +				var data = event.originalEvent.touches ? +						event.originalEvent.touches[ 0 ] : event; + +				stop = { +					time: ( new Date() ).getTime(), +					coords: [ data.pageX, data.pageY ] +				}; + +				// prevent scrolling +				if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { +					event.preventDefault(); +				} +			} + +			$this.bind( touchMoveEvent, moveHandler ) +				.one( touchStopEvent, function( event ) { +					$this.unbind( touchMoveEvent, moveHandler ); + +					if ( start && stop ) { +						if ( stop.time - start.time < $.event.special.swipe.durationThreshold && +								Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && +								Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + +							start.origin.trigger( "swipe" ) +								.trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); +						} +					} +					start = stop = undefined; +				}); +		}); +	} +}; + +(function( $, window ) { +	// "Cowboy" Ben Alman + +	var win = $( window ), +		special_event, +		get_orientation, +		last_orientation, +		initial_orientation_is_landscape, +		initial_orientation_is_default, +		portrait_map = { "0": true, "180": true }; + +	// It seems that some device/browser vendors use window.orientation values 0 and 180 to +	// denote the "default" orientation. For iOS devices, and most other smart-phones tested, +	// the default orientation is always "portrait", but in some Android and RIM based tablets, +	// the default orientation is "landscape". The following code attempts to use the window +	// dimensions to figure out what the current orientation is, and then makes adjustments +	// to the to the portrait_map if necessary, so that we can properly decode the +	// window.orientation value whenever get_orientation() is called. +	// +	// Note that we used to use a media query to figure out what the orientation the browser +	// thinks it is in: +	// +	//     initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); +	// +	// but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, +	// where the browser *ALWAYS* applied the landscape media query. This bug does not +	// happen on iPad. + +	if ( $.support.orientation ) { + +		// Check the window width and height to figure out what the current orientation +		// of the device is at this moment. Note that we've initialized the portrait map +		// values to 0 and 180, *AND* we purposely check for landscape so that if we guess +		// wrong, , we default to the assumption that portrait is the default orientation. +		// We use a threshold check below because on some platforms like iOS, the iPhone +		// form-factor can report a larger width than height if the user turns on the +		// developer console. The actual threshold value is somewhat arbitrary, we just +		// need to make sure it is large enough to exclude the developer console case. + +		var ww = window.innerWidth || $( window ).width(), +			wh = window.innerHeight || $( window ).height(), +			landscape_threshold = 50; + +		initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; + + +		// Now check to see if the current window.orientation is 0 or 180. +		initial_orientation_is_default = portrait_map[ window.orientation ]; + +		// If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* +		// if the initial orientation is portrait, but window.orientation reports 90 or -90, we +		// need to flip our portrait_map values because landscape is the default orientation for +		// this device/browser. +		if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { +			portrait_map = { "-90": true, "90": true }; +		} +	} + +	$.event.special.orientationchange = special_event = { +		setup: function() { +			// If the event is supported natively, return false so that jQuery +			// will bind to the event using DOM methods. +			if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { +				return false; +			} + +			// Get the current orientation to avoid initial double-triggering. +			last_orientation = get_orientation(); + +			// Because the orientationchange event doesn't exist, simulate the +			// event by testing window dimensions on resize. +			win.bind( "throttledresize", handler ); +		}, +		teardown: function(){ +			// If the event is not supported natively, return false so that +			// jQuery will unbind the event using DOM methods. +			if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { +				return false; +			} + +			// Because the orientationchange event doesn't exist, unbind the +			// resize event handler. +			win.unbind( "throttledresize", handler ); +		}, +		add: function( handleObj ) { +			// Save a reference to the bound event handler. +			var old_handler = handleObj.handler; + + +			handleObj.handler = function( event ) { +				// Modify event object, adding the .orientation property. +				event.orientation = get_orientation(); + +				// Call the originally-bound event handler and return its result. +				return old_handler.apply( this, arguments ); +			}; +		} +	}; + +	// If the event is not supported natively, this handler will be bound to +	// the window resize event to simulate the orientationchange event. +	function handler() { +		// Get the current orientation. +		var orientation = get_orientation(); + +		if ( orientation !== last_orientation ) { +			// The orientation has changed, so trigger the orientationchange event. +			last_orientation = orientation; +			win.trigger( "orientationchange" ); +		} +	} + +	// Get the current page orientation. This method is exposed publicly, should it +	// be needed, as jQuery.event.special.orientationchange.orientation() +	$.event.special.orientationchange.orientation = get_orientation = function() { +		var isPortrait = true, elem = document.documentElement; + +		// prefer window orientation to the calculation based on screensize as +		// the actual screen resize takes place before or after the orientation change event +		// has been fired depending on implementation (eg android 2.3 is before, iphone after). +		// More testing is required to determine if a more reliable method of determining the new screensize +		// is possible when orientationchange is fired. (eg, use media queries + element + opacity) +		if ( $.support.orientation ) { +			// if the window orientation registers as 0 or 180 degrees report +			// portrait, otherwise landscape +			isPortrait = portrait_map[ window.orientation ]; +		} else { +			isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; +		} + +		return isPortrait ? "portrait" : "landscape"; +	}; + +})( jQuery, window ); + + +// throttled resize event +(function() { + +	$.event.special.throttledresize = { +		setup: function() { +			$( this ).bind( "resize", handler ); +		}, +		teardown: function(){ +			$( this ).unbind( "resize", handler ); +		} +	}; + +	var throttle = 250, +		handler = function() { +			curr = ( new Date() ).getTime(); +			diff = curr - lastCall; + +			if ( diff >= throttle ) { + +				lastCall = curr; +				$( this ).trigger( "throttledresize" ); + +			} else { + +				if ( heldCall ) { +					clearTimeout( heldCall ); +				} + +				// Promise a held call will still execute +				heldCall = setTimeout( handler, throttle - diff ); +			} +		}, +		lastCall = 0, +		heldCall, +		curr, +		diff; +})(); + + +$.each({ +	scrollstop: "scrollstart", +	taphold: "tap", +	swipeleft: "swipe", +	swiperight: "swipe" +}, function( event, sourceEvent ) { + +	$.event.special[ event ] = { +		setup: function() { +			$( this ).bind( sourceEvent, $.noop ); +		} +	}; +}); + +})( jQuery, this ); + +(function( $, undefined ) { + +$.widget( "mobile.page", $.mobile.widget, { +	options: { +		theme: "c", +		domCache: false, +		keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" +	}, + +	_create: function() { +		 +		var self = this; +		 +		// if false is returned by the callbacks do not create the page +		if( self._trigger( "beforecreate" ) === false ){ +			return false; +		} + +		self.element +			.attr( "tabindex", "0" ) +			.addClass( "ui-page ui-body-" + self.options.theme ) +			.bind( "pagebeforehide", function(){ +				self.removeContainerBackground(); +			} ) +			.bind( "pagebeforeshow", function(){ +				self.setContainerBackground(); +			} ); + +	}, +	 +	removeContainerBackground: function(){ +		$.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); +	}, +	 +	// set the page container background to the page theme +	setContainerBackground: function( theme ){ +		if( this.options.theme ){ +			$.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); +		} +	}, + +	keepNativeSelector: function() { +		var options = this.options, +			keepNativeDefined = options.keepNative && $.trim(options.keepNative); + +		if( keepNativeDefined && options.keepNative !== options.keepNativeDefault ){ +			return [options.keepNative, options.keepNativeDefault].join(", "); +		} + +		return options.keepNativeDefault; +	} +}); +})( jQuery ); + + +(function( $, window, undefined ) { + +var createHandler = function( sequential ){ +	 +	// Default to sequential +	if( sequential === undefined ){ +		sequential = true; +	} +	 +	return function( name, reverse, $to, $from ) { + +		var deferred = new $.Deferred(), +			reverseClass = reverse ? " reverse" : "", +			active	= $.mobile.urlHistory.getActive(), +			toScroll = active.lastScroll || $.mobile.defaultHomeScroll, +			screenHeight = $.mobile.getScreenHeight(), +			maxTransitionOverride = $.mobile.maxTransitionWidth !== false && $( window ).width() > $.mobile.maxTransitionWidth, +			none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none", +			toggleViewportClass = function(){ +				$.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + name ); +			}, +			scrollPage = function(){ +				// By using scrollTo instead of silentScroll, we can keep things better in order +				// Just to be precautios, disable scrollstart listening like silentScroll would +				$.event.special.scrollstart.enabled = false; +				 +				window.scrollTo( 0, toScroll ); +				 +				// reenable scrollstart listening like silentScroll would +				setTimeout(function() { +					$.event.special.scrollstart.enabled = true; +				}, 150 ); +			}, +			cleanFrom = function(){ +				$from +					.removeClass( $.mobile.activePageClass + " out in reverse " + name ) +					.height( "" ); +			}, +			startOut = function(){ +				// if it's not sequential, call the doneOut transition to start the TO page animating in simultaneously +				if( !sequential ){ +					doneOut(); +				} +				else { +					$from.animationComplete( doneOut );	 +				} +				 +				// Set the from page's height and start it transitioning out +				// Note: setting an explicit height helps eliminate tiling in the transitions +				$from +					.height( screenHeight + $(window ).scrollTop() ) +					.addClass( name + " out" + reverseClass ); +			}, +			 +			doneOut = function() { + +				if ( $from && sequential ) { +					cleanFrom(); +				} +				 +				startIn(); +			}, +			 +			startIn = function(){	 +			 +				$to.addClass( $.mobile.activePageClass );				 +			 +				// Send focus to page as it is now display: block +				$.mobile.focusPage( $to ); + +				// Set to page height +				$to.height( screenHeight + toScroll ); +				 +				scrollPage(); +				 +				if( !none ){ +					$to.animationComplete( doneIn ); +				} +				 +				$to.addClass( name + " in" + reverseClass ); +				 +				if( none ){ +					doneIn(); +				} +				 +			}, +		 +			doneIn = function() { +			 +				if ( !sequential ) { +					 +					if( $from ){ +						cleanFrom(); +					} +				} +			 +				$to +					.removeClass( "out in reverse " + name ) +					.height( "" ); +				 +				toggleViewportClass(); +				 +				// In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition +				// This ensures we jump to that spot after the fact, if we aren't there already. +				if( $( window ).scrollTop() !== toScroll ){ +					scrollPage(); +				} + +				deferred.resolve( name, reverse, $to, $from, true ); +			}; + +		toggleViewportClass(); +	 +		if ( $from && !none ) { +			startOut(); +		} +		else { +			doneOut(); +		} + +		return deferred.promise(); +	}; +} + +// generate the handlers from the above +var sequentialHandler = createHandler(), +	simultaneousHandler = createHandler( false ); + +// Make our transition handler the public default. +$.mobile.defaultTransitionHandler = sequentialHandler; + +//transition handler dictionary for 3rd party transitions +$.mobile.transitionHandlers = { +	"default": $.mobile.defaultTransitionHandler, +	"sequential": sequentialHandler, +	"simultaneous": simultaneousHandler +}; + +$.mobile.transitionFallbacks = {}; + +})( jQuery, this ); + +( function( $, undefined ) { + +	//define vars for interal use +	var $window = $( window ), +		$html = $( 'html' ), +		$head = $( 'head' ), + +		//url path helpers for use in relative url management +		path = { + +			// This scary looking regular expression parses an absolute URL or its relative +			// variants (protocol, site, document, query, and hash), into the various +			// components (protocol, host, path, query, fragment, etc that make up the +			// URL as well as some other commonly used sub-parts. When used with RegExp.exec() +			// or String.match, it parses the URL into a results array that looks like this: +			// +			//     [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content +			//     [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread +			//     [2]: http://jblas:password@mycompany.com:8080/mail/inbox +			//     [3]: http://jblas:password@mycompany.com:8080 +			//     [4]: http: +			//     [5]: // +			//     [6]: jblas:password@mycompany.com:8080 +			//     [7]: jblas:password +			//     [8]: jblas +			//     [9]: password +			//    [10]: mycompany.com:8080 +			//    [11]: mycompany.com +			//    [12]: 8080 +			//    [13]: /mail/inbox +			//    [14]: /mail/ +			//    [15]: inbox +			//    [16]: ?msg=1234&type=unread +			//    [17]: #msg-content +			// +			urlParseRE: /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/, + +			//Parse a URL into a structure that allows easy access to +			//all of the URL components by name. +			parseUrl: function( url ) { +				// If we're passed an object, we'll assume that it is +				// a parsed url object and just return it back to the caller. +				if ( $.type( url ) === "object" ) { +					return url; +				} + +				var matches = path.urlParseRE.exec( url || "" ) || []; + +					// Create an object that allows the caller to access the sub-matches +					// by name. Note that IE returns an empty string instead of undefined, +					// like all other browsers do, so we normalize everything so its consistent +					// no matter what browser we're running on. +					return { +						href:         matches[  0 ] || "", +						hrefNoHash:   matches[  1 ] || "", +						hrefNoSearch: matches[  2 ] || "", +						domain:       matches[  3 ] || "", +						protocol:     matches[  4 ] || "", +						doubleSlash:  matches[  5 ] || "", +						authority:    matches[  6 ] || "", +						username:     matches[  8 ] || "", +						password:     matches[  9 ] || "", +						host:         matches[ 10 ] || "", +						hostname:     matches[ 11 ] || "", +						port:         matches[ 12 ] || "", +						pathname:     matches[ 13 ] || "", +						directory:    matches[ 14 ] || "", +						filename:     matches[ 15 ] || "", +						search:       matches[ 16 ] || "", +						hash:         matches[ 17 ] || "" +					}; +			}, + +			//Turn relPath into an asbolute path. absPath is +			//an optional absolute path which describes what +			//relPath is relative to. +			makePathAbsolute: function( relPath, absPath ) { +				if ( relPath && relPath.charAt( 0 ) === "/" ) { +					return relPath; +				} + +				relPath = relPath || ""; +				absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : ""; + +				var absStack = absPath ? absPath.split( "/" ) : [], +					relStack = relPath.split( "/" ); +				for ( var i = 0; i < relStack.length; i++ ) { +					var d = relStack[ i ]; +					switch ( d ) { +						case ".": +							break; +						case "..": +							if ( absStack.length ) { +								absStack.pop(); +							} +							break; +						default: +							absStack.push( d ); +							break; +					} +				} +				return "/" + absStack.join( "/" ); +			}, + +			//Returns true if both urls have the same domain. +			isSameDomain: function( absUrl1, absUrl2 ) { +				return path.parseUrl( absUrl1 ).domain === path.parseUrl( absUrl2 ).domain; +			}, + +			//Returns true for any relative variant. +			isRelativeUrl: function( url ) { +				// All relative Url variants have one thing in common, no protocol. +				return path.parseUrl( url ).protocol === ""; +			}, + +			//Returns true for an absolute url. +			isAbsoluteUrl: function( url ) { +				return path.parseUrl( url ).protocol !== ""; +			}, + +			//Turn the specified realtive URL into an absolute one. This function +			//can handle all relative variants (protocol, site, document, query, fragment). +			makeUrlAbsolute: function( relUrl, absUrl ) { +				if ( !path.isRelativeUrl( relUrl ) ) { +					return relUrl; +				} + +				var relObj = path.parseUrl( relUrl ), +					absObj = path.parseUrl( absUrl ), +					protocol = relObj.protocol || absObj.protocol, +					doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ), +					authority = relObj.authority || absObj.authority, +					hasPath = relObj.pathname !== "", +					pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ), +					search = relObj.search || ( !hasPath && absObj.search ) || "", +					hash = relObj.hash; + +				return protocol + doubleSlash + authority + pathname + search + hash; +			}, + +			//Add search (aka query) params to the specified url. +			addSearchParams: function( url, params ) { +				var u = path.parseUrl( url ), +					p = ( typeof params === "object" ) ? $.param( params ) : params, +					s = u.search || "?"; +				return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" ); +			}, + +			convertUrlToDataUrl: function( absUrl ) { +				var u = path.parseUrl( absUrl ); +				if ( path.isEmbeddedPage( u ) ) { +				    // For embedded pages, remove the dialog hash key as in getFilePath(), +				    // otherwise the Data Url won't match the id of the embedded Page. +					return u.hash.split( dialogHashKey )[0].replace( /^#/, "" ); +				} else if ( path.isSameDomain( u, documentBase ) ) { +					return u.hrefNoHash.replace( documentBase.domain, "" ); +				} +				return absUrl; +			}, + +			//get path from current hash, or from a file path +			get: function( newPath ) { +				if( newPath === undefined ) { +					newPath = location.hash; +				} +				return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' ); +			}, + +			//return the substring of a filepath before the sub-page key, for making a server request +			getFilePath: function( path ) { +				var splitkey = '&' + $.mobile.subPageUrlKey; +				return path && path.split( splitkey )[0].split( dialogHashKey )[0]; +			}, + +			//set location hash to path +			set: function( path ) { +				location.hash = path; +			}, + +			//test if a given url (string) is a path +			//NOTE might be exceptionally naive +			isPath: function( url ) { +				return ( /\// ).test( url ); +			}, + +			//return a url path with the window's location protocol/hostname/pathname removed +			clean: function( url ) { +				return url.replace( documentBase.domain, "" ); +			}, + +			//just return the url without an initial # +			stripHash: function( url ) { +				return url.replace( /^#/, "" ); +			}, + +			//remove the preceding hash, any query params, and dialog notations +			cleanHash: function( hash ) { +				return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) ); +			}, + +			//check whether a url is referencing the same domain, or an external domain or different protocol +			//could be mailto, etc +			isExternal: function( url ) { +				var u = path.parseUrl( url ); +				return u.protocol && u.domain !== documentUrl.domain ? true : false; +			}, + +			hasProtocol: function( url ) { +				return ( /^(:?\w+:)/ ).test( url ); +			}, + +			//check if the specified url refers to the first page in the main application document. +			isFirstPageUrl: function( url ) { +				// We only deal with absolute paths. +				var u = path.parseUrl( path.makeUrlAbsolute( url, documentBase ) ), + +					// Does the url have the same path as the document? +					samePath = u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ), + +					// Get the first page element. +					fp = $.mobile.firstPage, + +					// Get the id of the first page element if it has one. +					fpId = fp && fp[0] ? fp[0].id : undefined; + +					// The url refers to the first page if the path matches the document and +					// it either has no hash value, or the hash is exactly equal to the id of the +					// first page element. +					return samePath && ( !u.hash || u.hash === "#" || ( fpId && u.hash.replace( /^#/, "" ) === fpId ) ); +			}, + +			isEmbeddedPage: function( url ) { +				var u = path.parseUrl( url ); + +				//if the path is absolute, then we need to compare the url against +				//both the documentUrl and the documentBase. The main reason for this +				//is that links embedded within external documents will refer to the +				//application document, whereas links embedded within the application +				//document will be resolved against the document base. +				if ( u.protocol !== "" ) { +					return ( u.hash && ( u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ) ) ); +				} +				return (/^#/).test( u.href ); +			} +		}, + +		//will be defined when a link is clicked and given an active class +		$activeClickedLink = null, + +		//urlHistory is purely here to make guesses at whether the back or forward button was clicked +		//and provide an appropriate transition +		urlHistory = { +			// Array of pages that are visited during a single page load. +			// Each has a url and optional transition, title, and pageUrl (which represents the file path, in cases where URL is obscured, such as dialogs) +			stack: [], + +			//maintain an index number for the active page in the stack +			activeIndex: 0, + +			//get active +			getActive: function() { +				return urlHistory.stack[ urlHistory.activeIndex ]; +			}, + +			getPrev: function() { +				return urlHistory.stack[ urlHistory.activeIndex - 1 ]; +			}, + +			getNext: function() { +				return urlHistory.stack[ urlHistory.activeIndex + 1 ]; +			}, + +			// addNew is used whenever a new page is added +			addNew: function( url, transition, title, pageUrl, role ) { +				//if there's forward history, wipe it +				if( urlHistory.getNext() ) { +					urlHistory.clearForward(); +				} + +				urlHistory.stack.push( {url : url, transition: transition, title: title, pageUrl: pageUrl, role: role } ); + +				urlHistory.activeIndex = urlHistory.stack.length - 1; +			}, + +			//wipe urls ahead of active index +			clearForward: function() { +				urlHistory.stack = urlHistory.stack.slice( 0, urlHistory.activeIndex + 1 ); +			}, + +			directHashChange: function( opts ) { +				var back , forward, newActiveIndex, prev = this.getActive(); + +				// check if url isp in history and if it's ahead or behind current page +				$.each( urlHistory.stack, function( i, historyEntry ) { + +					//if the url is in the stack, it's a forward or a back +					if( opts.currentUrl === historyEntry.url ) { +						//define back and forward by whether url is older or newer than current page +						back = i < urlHistory.activeIndex; +						forward = !back; +						newActiveIndex = i; +					} +				}); + +				// save new page index, null check to prevent falsey 0 result +				this.activeIndex = newActiveIndex !== undefined ? newActiveIndex : this.activeIndex; + +				if( back ) { +					( opts.either || opts.isBack )( true ); +				} else if( forward ) { +					( opts.either || opts.isForward )( false ); +				} +			}, + +			//disable hashchange event listener internally to ignore one change +			//toggled internally when location.hash is updated to match the url of a successful page load +			ignoreNextHashChange: false +		}, + +		//define first selector to receive focus when a page is shown +		focusable = "[tabindex],a,button:visible,select:visible,input", + +		//queue to hold simultanious page transitions +		pageTransitionQueue = [], + +		//indicates whether or not page is in process of transitioning +		isPageTransitioning = false, + +		//nonsense hash change key for dialogs, so they create a history entry +		dialogHashKey = "&ui-state=dialog", + +		//existing base tag? +		$base = $head.children( "base" ), + +		//tuck away the original document URL minus any fragment. +		documentUrl = path.parseUrl( location.href ), + +		//if the document has an embedded base tag, documentBase is set to its +		//initial value. If a base tag does not exist, then we default to the documentUrl. +		documentBase = $base.length ? path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), documentUrl.href ) ) : documentUrl, + +		//cache the comparison once. +		documentBaseDiffers = ( documentUrl.hrefNoHash !== documentBase.hrefNoHash ); + +		//base element management, defined depending on dynamic base tag support +		var base = $.support.dynamicBaseTag ? { + +			//define base element, for use in routing asset urls that are referenced in Ajax-requested markup +			element: ( $base.length ? $base : $( "<base>", { href: documentBase.hrefNoHash } ).prependTo( $head ) ), + +			//set the generated BASE element's href attribute to a new page's base path +			set: function( href ) { +				base.element.attr( "href", path.makeUrlAbsolute( href, documentBase ) ); +			}, + +			//set the generated BASE element's href attribute to a new page's base path +			reset: function() { +				base.element.attr( "href", documentBase.hrefNoHash ); +			} + +		} : undefined; + +/* +	internal utility functions +--------------------------------------*/ + + +	//direct focus to the page title, or otherwise first focusable element +	$.mobile.focusPage = function ( page ) { +		var autofocus = page.find("[autofocus]"), +			pageTitle = page.find( ".ui-title:eq(0)" ); + +		if( autofocus.length ) { +			autofocus.focus(); +			return; +		} + +		if( pageTitle.length ) { +			pageTitle.focus(); +		} +		else{ +			page.focus(); +		} +	} + +	//remove active classes after page transition or error +	function removeActiveLinkClass( forceRemoval ) { +		if( !!$activeClickedLink && ( !$activeClickedLink.closest( '.ui-page-active' ).length || forceRemoval ) ) { +			$activeClickedLink.removeClass( $.mobile.activeBtnClass ); +		} +		$activeClickedLink = null; +	} + +	function releasePageTransitionLock() { +		isPageTransitioning = false; +		if( pageTransitionQueue.length > 0 ) { +			$.mobile.changePage.apply( null, pageTransitionQueue.pop() ); +		} +	} + +	// Save the last scroll distance per page, before it is hidden +	var setLastScrollEnabled = true, +		setLastScroll, delayedSetLastScroll; + +	setLastScroll = function() { +		// this barrier prevents setting the scroll value based on the browser +		// scrolling the window based on a hashchange +		if( !setLastScrollEnabled ) { +			return; +		} + +		var active = $.mobile.urlHistory.getActive(); + +		if( active ) { +			var lastScroll = $window.scrollTop(); + +			// Set active page's lastScroll prop. +			// If the location we're scrolling to is less than minScrollBack, let it go. +			active.lastScroll = lastScroll < $.mobile.minScrollBack ? $.mobile.defaultHomeScroll : lastScroll; +		} +	}; + +	// bind to scrollstop to gather scroll position. The delay allows for the hashchange +	// event to fire and disable scroll recording in the case where the browser scrolls +	// to the hash targets location (sometimes the top of the page). once pagechange fires +	// getLastScroll is again permitted to operate +	delayedSetLastScroll = function() { +		setTimeout( setLastScroll, 100 ); +	}; + +	// disable an scroll setting when a hashchange has been fired, this only works +	// because the recording of the scroll position is delayed for 100ms after +	// the browser might have changed the position because of the hashchange +	$window.bind( $.support.pushState ? "popstate" : "hashchange", function() { +	 	setLastScrollEnabled = false; +	}); + +	// handle initial hashchange from chrome :( +	$window.one( $.support.pushState ? "popstate" : "hashchange", function() { +		setLastScrollEnabled = true; +	}); + +	// wait until the mobile page container has been determined to bind to pagechange +	$window.one( "pagecontainercreate", function(){ +		// once the page has changed, re-enable the scroll recording +		$.mobile.pageContainer.bind( "pagechange", function() { + +	 		setLastScrollEnabled = true; + +			// remove any binding that previously existed on the get scroll +			// which may or may not be different than the scroll element determined for +			// this page previously +			$window.unbind( "scrollstop", delayedSetLastScroll ); + +			// determine and bind to the current scoll element which may be the window +			// or in the case of touch overflow the element with touch overflow +			$window.bind( "scrollstop", delayedSetLastScroll ); +		}); +	}); + +	// bind to scrollstop for the first page as "pagechange" won't be fired in that case +	$window.bind( "scrollstop", delayedSetLastScroll ); + +	//function for transitioning between two existing pages +	function transitionPages( toPage, fromPage, transition, reverse ) { + +		if( fromPage ) { +			//trigger before show/hide events +			fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } ); +		} + +		toPage.data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); + +		//clear page loader +		$.mobile.hidePageLoadingMsg(); +		 +		// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified +		if( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ){ +			transition = $.mobile.transitionFallbacks[ transition ]; +		} +		 +		//find the transition handler for the specified transition. If there +		//isn't one in our transitionHandlers dictionary, use the default one. +		//call the handler immediately to kick-off the transition. +		var th = $.mobile.transitionHandlers[ transition || "default" ] || $.mobile.defaultTransitionHandler, +			promise = th( transition, reverse, toPage, fromPage ); + +		promise.done(function() { + +			//trigger show/hide events +			if( fromPage ) { +				fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } ); +			} + +			//trigger pageshow, define prevPage as either fromPage or empty jQuery obj +			toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); +		}); + +		return promise; +	} + +	//simply set the active page's minimum height to screen height, depending on orientation +	function getScreenHeight(){ +		// Native innerHeight returns more accurate value for this across platforms,  +		// jQuery version is here as a normalized fallback for platforms like Symbian +		return window.innerHeight || $( window ).height(); +	} + +	$.mobile.getScreenHeight = getScreenHeight; + +	//simply set the active page's minimum height to screen height, depending on orientation +	function resetActivePageHeight(){ +		var aPage = $( "." + $.mobile.activePageClass ), +			aPagePadT = parseFloat( aPage.css( "padding-top" ) ), +			aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ); +				 +		aPage.css( "min-height", getScreenHeight() - aPagePadT - aPagePadB ); +	} + +	//shared page enhancements +	function enhancePage( $page, role ) { +		// If a role was specified, make sure the data-role attribute +		// on the page element is in sync. +		if( role ) { +			$page.attr( "data-" + $.mobile.ns + "role", role ); +		} + +		//run page plugin +		$page.page(); +	} + +/* exposed $.mobile methods	 */ + +	//animation complete callback +	$.fn.animationComplete = function( callback ) { +		if( $.support.cssTransitions ) { +			return $( this ).one( 'webkitAnimationEnd animationend', callback ); +		} +		else{ +			// defer execution for consistency between webkit/non webkit +			setTimeout( callback, 0 ); +			return $( this ); +		} +	}; + +	//expose path object on $.mobile +	$.mobile.path = path; + +	//expose base object on $.mobile +	$.mobile.base = base; + +	//history stack +	$.mobile.urlHistory = urlHistory; + +	$.mobile.dialogHashKey = dialogHashKey; + + + +	//enable cross-domain page support +	$.mobile.allowCrossDomainPages = false; + +	//return the original document url +	$.mobile.getDocumentUrl = function(asParsedObject) { +		return asParsedObject ? $.extend( {}, documentUrl ) : documentUrl.href; +	}; + +	//return the original document base url +	$.mobile.getDocumentBase = function(asParsedObject) { +		return asParsedObject ? $.extend( {}, documentBase ) : documentBase.href; +	}; + +	$.mobile._bindPageRemove = function() { +		var page = $(this); + +		// when dom caching is not enabled or the page is embedded bind to remove the page on hide +		if( !page.data("page").options.domCache +				&& page.is(":jqmData(external-page='true')") ) { + +			page.bind( 'pagehide.remove', function() { +				var $this = $( this ), +					prEvent = new $.Event( "pageremove" ); + +				$this.trigger( prEvent ); + +				if( !prEvent.isDefaultPrevented() ){ +					$this.removeWithDependents(); +				} +			}); +		} +	}; + +	// Load a page into the DOM. +	$.mobile.loadPage = function( url, options ) { +		// This function uses deferred notifications to let callers +		// know when the page is done loading, or if an error has occurred. +		var deferred = $.Deferred(), + +			// The default loadPage options with overrides specified by +			// the caller. +			settings = $.extend( {}, $.mobile.loadPage.defaults, options ), + +			// The DOM element for the page after it has been loaded. +			page = null, + +			// If the reloadPage option is true, and the page is already +			// in the DOM, dupCachedPage will be set to the page element +			// so that it can be removed after the new version of the +			// page is loaded off the network. +			dupCachedPage = null, + +			// determine the current base url +			findBaseWithDefault = function(){ +				var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) ); +				return closestBase || documentBase.hrefNoHash; +			}, + +			// The absolute version of the URL passed into the function. This +			// version of the URL may contain dialog/subpage params in it. +			absUrl = path.makeUrlAbsolute( url, findBaseWithDefault() ); + + +		// If the caller provided data, and we're using "get" request, +		// append the data to the URL. +		if ( settings.data && settings.type === "get" ) { +			absUrl = path.addSearchParams( absUrl, settings.data ); +			settings.data = undefined; +		} + +		// If the caller is using a "post" request, reloadPage must be true +		if(  settings.data && settings.type === "post" ){ +			settings.reloadPage = true; +		} + +			// The absolute version of the URL minus any dialog/subpage params. +			// In otherwords the real URL of the page to be loaded. +		var fileUrl = path.getFilePath( absUrl ), + +			// The version of the Url actually stored in the data-url attribute of +			// the page. For embedded pages, it is just the id of the page. For pages +			// within the same domain as the document base, it is the site relative +			// path. For cross-domain pages (Phone Gap only) the entire absolute Url +			// used to load the page. +			dataUrl = path.convertUrlToDataUrl( absUrl ); + +		// Make sure we have a pageContainer to work with. +		settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; + +		// Check to see if the page already exists in the DOM. +		page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); + +		// If we failed to find the page, check to see if the url is a +		// reference to an embedded page. If so, it may have been dynamically +		// injected by a developer, in which case it would be lacking a data-url +		// attribute and in need of enhancement. +		if ( page.length === 0 && dataUrl && !path.isPath( dataUrl ) ) { +			page = settings.pageContainer.children( "#" + dataUrl ) +				.attr( "data-" + $.mobile.ns + "url", dataUrl ); +		} + +		// If we failed to find a page in the DOM, check the URL to see if it +		// refers to the first page in the application. If it isn't a reference +		// to the first page and refers to non-existent embedded page, error out. +		if ( page.length === 0 ) { +			if ( $.mobile.firstPage && path.isFirstPageUrl( fileUrl ) ) { +				// Check to make sure our cached-first-page is actually +				// in the DOM. Some user deployed apps are pruning the first +				// page from the DOM for various reasons, we check for this +				// case here because we don't want a first-page with an id +				// falling through to the non-existent embedded page error +				// case. If the first-page is not in the DOM, then we let +				// things fall through to the ajax loading code below so +				// that it gets reloaded. +				if ( $.mobile.firstPage.parent().length ) { +					page = $( $.mobile.firstPage ); +				} +			} else if ( path.isEmbeddedPage( fileUrl )  ) { +				deferred.reject( absUrl, options ); +				return deferred.promise(); +			} +		} + +		// Reset base to the default document base. +		if ( base ) { +			base.reset(); +		} + +		// If the page we are interested in is already in the DOM, +		// and the caller did not indicate that we should force a +		// reload of the file, we are done. Otherwise, track the +		// existing page as a duplicated. +		if ( page.length ) { +			if ( !settings.reloadPage ) { +				enhancePage( page, settings.role ); +				deferred.resolve( absUrl, options, page ); +				return deferred.promise(); +			} +			dupCachedPage = page; +		} + +		var mpc = settings.pageContainer, +			pblEvent = new $.Event( "pagebeforeload" ), +			triggerData = { url: url, absUrl: absUrl, dataUrl: dataUrl, deferred: deferred, options: settings }; + +		// Let listeners know we're about to load a page. +		mpc.trigger( pblEvent, triggerData ); + +		// If the default behavior is prevented, stop here! +		if( pblEvent.isDefaultPrevented() ){ +			return deferred.promise(); +		} + +		if ( settings.showLoadMsg ) { + +			// This configurable timeout allows cached pages a brief delay to load without showing a message +			var loadMsgDelay = setTimeout(function(){ +					$.mobile.showPageLoadingMsg(); +				}, settings.loadMsgDelay ), + +				// Shared logic for clearing timeout and removing message. +				hideMsg = function(){ + +					// Stop message show timer +					clearTimeout( loadMsgDelay ); + +					// Hide loading message +					$.mobile.hidePageLoadingMsg(); +				}; +		} + +		if ( !( $.mobile.allowCrossDomainPages || path.isSameDomain( documentUrl, absUrl ) ) ) { +			deferred.reject( absUrl, options ); +		} else { +			// Load the new page. +			$.ajax({ +				url: fileUrl, +				type: settings.type, +				data: settings.data, +				dataType: "html", +				success: function( html, textStatus, xhr ) { +					//pre-parse html to check for a data-url, +					//use it as the new fileUrl, base path, etc +					var all = $( "<div></div>" ), + +						//page title regexp +						newPageTitle = html.match( /<title[^>]*>([^<]*)/ ) && RegExp.$1, + +						// TODO handle dialogs again +						pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + $.mobile.ns + "role=[\"']?page[\"']?[^>]*>)" ), +						dataUrlRegex = new RegExp( "\\bdata-" + $.mobile.ns + "url=[\"']?([^\"'>]*)[\"']?" ); + + +					// data-url must be provided for the base tag so resource requests can be directed to the +					// correct url. loading into a temprorary element makes these requests immediately +					if( pageElemRegex.test( html ) +							&& RegExp.$1 +							&& dataUrlRegex.test( RegExp.$1 ) +							&& RegExp.$1 ) { +						url = fileUrl = path.getFilePath( RegExp.$1 ); +					} + +					if ( base ) { +						base.set( fileUrl ); +					} + +					//workaround to allow scripts to execute when included in page divs +					all.get( 0 ).innerHTML = html; +					page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first(); + +					//if page elem couldn't be found, create one and insert the body element's contents +					if( !page.length ){ +						page = $( "<div data-" + $.mobile.ns + "role='page'>" + html.split( /<\/?body[^>]*>/gmi )[1] + "</div>" ); +					} + +					if ( newPageTitle && !page.jqmData( "title" ) ) { +						if ( ~newPageTitle.indexOf( "&" ) ) { +							newPageTitle = $( "<div>" + newPageTitle + "</div>" ).text(); +						} +						page.jqmData( "title", newPageTitle ); +					} + +					//rewrite src and href attrs to use a base url +					if( !$.support.dynamicBaseTag ) { +						var newPath = path.get( fileUrl ); +						page.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each(function() { +							var thisAttr = $( this ).is( '[href]' ) ? 'href' : +									$(this).is('[src]') ? 'src' : 'action', +								thisUrl = $( this ).attr( thisAttr ); + +							// XXX_jblas: We need to fix this so that it removes the document +							//            base URL, and then prepends with the new page URL. +							//if full path exists and is same, chop it - helps IE out +							thisUrl = thisUrl.replace( location.protocol + '//' + location.host + location.pathname, '' ); + +							if( !/^(\w+:|#|\/)/.test( thisUrl ) ) { +								$( this ).attr( thisAttr, newPath + thisUrl ); +							} +						}); +					} + +					//append to page and enhance +					// TODO taging a page with external to make sure that embedded pages aren't removed +					//      by the various page handling code is bad. Having page handling code in many +					//      places is bad. Solutions post 1.0 +					page +						.attr( "data-" + $.mobile.ns + "url", path.convertUrlToDataUrl( fileUrl ) ) +						.attr( "data-" + $.mobile.ns + "external-page", true ) +						.appendTo( settings.pageContainer ); + +					// wait for page creation to leverage options defined on widget +					page.one( 'pagecreate', $.mobile._bindPageRemove ); + +					enhancePage( page, settings.role ); + +					// Enhancing the page may result in new dialogs/sub pages being inserted +					// into the DOM. If the original absUrl refers to a sub-page, that is the +					// real page we are interested in. +					if ( absUrl.indexOf( "&" + $.mobile.subPageUrlKey ) > -1 ) { +						page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); +					} + +					//bind pageHide to removePage after it's hidden, if the page options specify to do so + +					// Remove loading message. +					if ( settings.showLoadMsg ) { +						hideMsg(); +					} + +					// Add the page reference and xhr to our triggerData. +					triggerData.xhr = xhr; +					triggerData.textStatus = textStatus; +					triggerData.page = page; + +					// Let listeners know the page loaded successfully. +					settings.pageContainer.trigger( "pageload", triggerData ); + +					deferred.resolve( absUrl, options, page, dupCachedPage ); +				}, +				error: function( xhr, textStatus, errorThrown ) { +					//set base back to current path +					if( base ) { +						base.set( path.get() ); +					} + +					// Add error info to our triggerData. +					triggerData.xhr = xhr; +					triggerData.textStatus = textStatus; +					triggerData.errorThrown = errorThrown; + +					var plfEvent = new $.Event( "pageloadfailed" ); + +					// Let listeners know the page load failed. +					settings.pageContainer.trigger( plfEvent, triggerData ); + +					// If the default behavior is prevented, stop here! +					// Note that it is the responsibility of the listener/handler +					// that called preventDefault(), to resolve/reject the +					// deferred object within the triggerData. +					if( plfEvent.isDefaultPrevented() ){ +						return; +					} + +					// Remove loading message. +					if ( settings.showLoadMsg ) { + +						// Remove loading message. +						hideMsg(); + +						// show error message +						$.mobile.showPageLoadingMsg( $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true ); + +						// hide after delay +						setTimeout( $.mobile.hidePageLoadingMsg, 1500 ); +					} + +					deferred.reject( absUrl, options ); +				} +			}); +		} + +		return deferred.promise(); +	}; + +	$.mobile.loadPage.defaults = { +		type: "get", +		data: undefined, +		reloadPage: false, +		role: undefined, // By default we rely on the role defined by the @data-role attribute. +		showLoadMsg: false, +		pageContainer: undefined, +		loadMsgDelay: 50 // This delay allows loads that pull from browser cache to occur without showing the loading message. +	}; + +	// Show a specific page in the page container. +	$.mobile.changePage = function( toPage, options ) { +		// If we are in the midst of a transition, queue the current request. +		// We'll call changePage() once we're done with the current transition to +		// service the request. +		if( isPageTransitioning ) { +			pageTransitionQueue.unshift( arguments ); +			return; +		} + +		var settings = $.extend( {}, $.mobile.changePage.defaults, options ); + +		// Make sure we have a pageContainer to work with. +		settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; + +		// Make sure we have a fromPage. +		settings.fromPage = settings.fromPage || $.mobile.activePage; + +		var mpc = settings.pageContainer, +			pbcEvent = new $.Event( "pagebeforechange" ), +			triggerData = { toPage: toPage, options: settings }; + +		// Let listeners know we're about to change the current page. +		mpc.trigger( pbcEvent, triggerData ); + +		// If the default behavior is prevented, stop here! +		if( pbcEvent.isDefaultPrevented() ){ +			return; +		} + +		// We allow "pagebeforechange" observers to modify the toPage in the trigger +		// data to allow for redirects. Make sure our toPage is updated. + +		toPage = triggerData.toPage; + +		// Set the isPageTransitioning flag to prevent any requests from +		// entering this method while we are in the midst of loading a page +		// or transitioning. + +		isPageTransitioning = true; + +		// If the caller passed us a url, call loadPage() +		// to make sure it is loaded into the DOM. We'll listen +		// to the promise object it returns so we know when +		// it is done loading or if an error ocurred. +		if ( typeof toPage == "string" ) { +			$.mobile.loadPage( toPage, settings ) +				.done(function( url, options, newPage, dupCachedPage ) { +					isPageTransitioning = false; +					options.duplicateCachedPage = dupCachedPage; +					$.mobile.changePage( newPage, options ); +				}) +				.fail(function( url, options ) { +					isPageTransitioning = false; + +					//clear out the active button state +					removeActiveLinkClass( true ); + +					//release transition lock so navigation is free again +					releasePageTransitionLock(); +					settings.pageContainer.trigger( "pagechangefailed", triggerData ); +				}); +			return; +		} + +		// If we are going to the first-page of the application, we need to make +		// sure settings.dataUrl is set to the application document url. This allows +		// us to avoid generating a document url with an id hash in the case where the +		// first-page of the document has an id attribute specified. +		if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) { +			settings.dataUrl = documentUrl.hrefNoHash; +		} + +		// The caller passed us a real page DOM element. Update our +		// internal state and then trigger a transition to the page. +		var fromPage = settings.fromPage, +			url = ( settings.dataUrl && path.convertUrlToDataUrl( settings.dataUrl ) ) || toPage.jqmData( "url" ), +			// The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path +			pageUrl = url, +			fileUrl = path.getFilePath( url ), +			active = urlHistory.getActive(), +			activeIsInitialPage = urlHistory.activeIndex === 0, +			historyDir = 0, +			pageTitle = document.title, +			isDialog = settings.role === "dialog" || toPage.jqmData( "role" ) === "dialog"; + +		// By default, we prevent changePage requests when the fromPage and toPage +		// are the same element, but folks that generate content manually/dynamically +		// and reuse pages want to be able to transition to the same page. To allow +		// this, they will need to change the default value of allowSamePageTransition +		// to true, *OR*, pass it in as an option when they manually call changePage(). +		// It should be noted that our default transition animations assume that the +		// formPage and toPage are different elements, so they may behave unexpectedly. +		// It is up to the developer that turns on the allowSamePageTransitiona option +		// to either turn off transition animations, or make sure that an appropriate +		// animation transition is used. +		if( fromPage && fromPage[0] === toPage[0] && !settings.allowSamePageTransition ) { +			isPageTransitioning = false; +			mpc.trigger( "pagechange", triggerData ); +			return; +		} + +		// We need to make sure the page we are given has already been enhanced. +		enhancePage( toPage, settings.role ); + +		// If the changePage request was sent from a hashChange event, check to see if the +		// page is already within the urlHistory stack. If so, we'll assume the user hit +		// the forward/back button and will try to match the transition accordingly. +		if( settings.fromHashChange ) { +			urlHistory.directHashChange({ +				currentUrl:	url, +				isBack:		function() { historyDir = -1; }, +				isForward:	function() { historyDir = 1; } +			}); +		} + +		// Kill the keyboard. +		// XXX_jblas: We need to stop crawling the entire document to kill focus. Instead, +		//            we should be tracking focus with a delegate() handler so we already have +		//            the element in hand at this point. +		// Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement +		// is undefined when we are in an IFrame. +		try { +			if(document.activeElement && document.activeElement.nodeName.toLowerCase() != 'body') { +				$(document.activeElement).blur(); +			} else { +				$( "input:focus, textarea:focus, select:focus" ).blur(); +			} +		} catch(e) {} + +		// If we're displaying the page as a dialog, we don't want the url +		// for the dialog content to be used in the hash. Instead, we want +		// to append the dialogHashKey to the url of the current page. +		if ( isDialog && active ) { +			// on the initial page load active.url is undefined and in that case should +			// be an empty string. Moving the undefined -> empty string back into +			// urlHistory.addNew seemed imprudent given undefined better represents +			// the url state +			url = ( active.url || "" ) + dialogHashKey; +		} + +		// Set the location hash. +		if( settings.changeHash !== false && url ) { +			//disable hash listening temporarily +			urlHistory.ignoreNextHashChange = true; +			//update hash and history +			path.set( url ); +		} + +		// if title element wasn't found, try the page div data attr too +		// If this is a deep-link or a reload ( active === undefined ) then just use pageTitle +		var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children(":jqmData(role='header')").find(".ui-title" ).getEncodedText(); +		if( !!newPageTitle && pageTitle == document.title ) { +			pageTitle = newPageTitle; +		} +		if ( !toPage.jqmData( "title" ) ) { +			toPage.jqmData( "title", pageTitle ); +		} + +		// Make sure we have a transition defined. +		settings.transition = settings.transition +			|| ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) +			|| ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition ); + +		//add page to history stack if it's not back or forward +		if( !historyDir ) { +			urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role ); +		} + +		//set page title +		document.title = urlHistory.getActive().title; + +		//set "toPage" as activePage +		$.mobile.activePage = toPage; + +		// If we're navigating back in the URL history, set reverse accordingly. +		settings.reverse = settings.reverse || historyDir < 0; + +		transitionPages( toPage, fromPage, settings.transition, settings.reverse ) +			.done(function( name, reverse, $to, $from, alreadyFocused ) { +				removeActiveLinkClass(); + +				//if there's a duplicateCachedPage, remove it from the DOM now that it's hidden +				if ( settings.duplicateCachedPage ) { +					settings.duplicateCachedPage.remove(); +				} + +				// Send focus to the newly shown page. Moved from promise .done binding in transitionPages +				// itself to avoid ie bug that reports offsetWidth as > 0 (core check for visibility) +				// despite visibility: hidden addresses issue #2965 +				// https://github.com/jquery/jquery-mobile/issues/2965 +				if( !alreadyFocused ){ +					$.mobile.focusPage( toPage ); +				} + +				releasePageTransitionLock(); + +				// Let listeners know we're all done changing the current page. +				mpc.trigger( "pagechange", triggerData ); +			}); +	}; + +	$.mobile.changePage.defaults = { +		transition: undefined, +		reverse: false, +		changeHash: true, +		fromHashChange: false, +		role: undefined, // By default we rely on the role defined by the @data-role attribute. +		duplicateCachedPage: undefined, +		pageContainer: undefined, +		showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage +		dataUrl: undefined, +		fromPage: undefined, +		allowSamePageTransition: false +	}; + +/* Event Bindings - hashchange, submit, and click */ +	function findClosestLink( ele ) +	{ +		while ( ele ) { +			// Look for the closest element with a nodeName of "a". +			// Note that we are checking if we have a valid nodeName +			// before attempting to access it. This is because the +			// node we get called with could have originated from within +			// an embedded SVG document where some symbol instance elements +			// don't have nodeName defined on them, or strings are of type +			// SVGAnimatedString. +			if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() == "a" ) { +				break; +			} +			ele = ele.parentNode; +		} +		return ele; +	} + +	// The base URL for any given element depends on the page it resides in. +	function getClosestBaseUrl( ele ) +	{ +		// Find the closest page and extract out its url. +		var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ), +			base = documentBase.hrefNoHash; + +		if ( !url || !path.isPath( url ) ) { +			url = base; +		} + +		return path.makeUrlAbsolute( url, base); +	} + + +	//The following event bindings should be bound after mobileinit has been triggered +	//the following function is called in the init file +	$.mobile._registerInternalEvents = function(){ + +		//bind to form submit events, handle with Ajax +		$( document ).delegate( "form", "submit", function( event ) { +			var $this = $( this ); + +			if( !$.mobile.ajaxEnabled || +					// test that the form is, itself, ajax false +					$this.is(":jqmData(ajax='false')") || +					// test that $.mobile.ignoreContentEnabled is set and +					// the form or one of it's parents is ajax=false +					!$this.jqmHijackable().length ) { +				return; +			} + +			var type = $this.attr( "method" ), +				target = $this.attr( "target" ), +				url = $this.attr( "action" ); + +			// If no action is specified, browsers default to using the +			// URL of the document containing the form. Since we dynamically +			// pull in pages from external documents, the form should submit +			// to the URL for the source document of the page containing +			// the form. +			if ( !url ) { +				// Get the @data-url for the page containing the form. +				url = getClosestBaseUrl( $this ); +				if ( url === documentBase.hrefNoHash ) { +					// The url we got back matches the document base, +					// which means the page must be an internal/embedded page, +					// so default to using the actual document url as a browser +					// would. +					url = documentUrl.hrefNoSearch; +				} +			} + +			url = path.makeUrlAbsolute(  url, getClosestBaseUrl($this) ); + +			//external submits use regular HTTP +			if( path.isExternal( url ) || target ) { +				return; +			} + +			$.mobile.changePage( +				url, +				{ +					type:		type && type.length && type.toLowerCase() || "get", +					data:		$this.serialize(), +					transition:	$this.jqmData( "transition" ), +					direction:	$this.jqmData( "direction" ), +					reloadPage:	true +				} +			); +			event.preventDefault(); +		}); + +		//add active state on vclick +		$( document ).bind( "vclick", function( event ) { +			// if this isn't a left click we don't care. Its important to note +			// that when the virtual event is generated it will create the which attr +			if ( event.which > 1 || !$.mobile.linkBindingEnabled ) { +				return; +			} + +			var link = findClosestLink( event.target ); + +			// split from the previous return logic to avoid find closest where possible +			// TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping +			// can be avoided +			if ( !$(link).jqmHijackable().length ) { +				return; +			} + +			if ( link ) { +				if ( path.parseUrl( link.getAttribute( "href" ) || "#" ).hash !== "#" ) { +					removeActiveLinkClass( true ); +					$activeClickedLink = $( link ).closest( ".ui-btn" ).not( ".ui-disabled" ); +					$activeClickedLink.addClass( $.mobile.activeBtnClass ); +					$( "." + $.mobile.activePageClass + " .ui-btn" ).not( link ).blur(); + +					// By caching the href value to data and switching the href to a #, we can avoid address bar showing in iOS. The click handler resets the href during its initial steps if this data is present +					$( link ) +						.jqmData( "href", $( link  ).attr( "href" )  ) +						.attr( "href", "#" ); +				} +			} +		}); + +		// click routing - direct to HTTP or Ajax, accordingly +		$( document ).bind( "click", function( event ) { +			if( !$.mobile.linkBindingEnabled ){ +				return; +			} + +			var link = findClosestLink( event.target ), $link = $( link ), httpCleanup; + +			// If there is no link associated with the click or its not a left +			// click we want to ignore the click +			// TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping +			// can be avoided +			if ( !link || event.which > 1 || !$link.jqmHijackable().length ) { +				return; +			} + +			//remove active link class if external (then it won't be there if you come back) +			httpCleanup = function(){ +				window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 ); +			}; + +			// If there's data cached for the real href value, set the link's href back to it again. This pairs with an address bar workaround from the vclick handler +			if( $link.jqmData( "href" ) ){ +				$link.attr( "href", $link.jqmData( "href" ) ); +			} + +			//if there's a data-rel=back attr, go back in history +			if( $link.is( ":jqmData(rel='back')" ) ) { +				window.history.back(); +				return false; +			} + +			var baseUrl = getClosestBaseUrl( $link ), + +				//get href, if defined, otherwise default to empty hash +				href = path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl ); + +			//if ajax is disabled, exit early +			if( !$.mobile.ajaxEnabled && !path.isEmbeddedPage( href ) ){ +				httpCleanup(); +				//use default click handling +				return; +			} + +			// XXX_jblas: Ideally links to application pages should be specified as +			//            an url to the application document with a hash that is either +			//            the site relative path or id to the page. But some of the +			//            internal code that dynamically generates sub-pages for nested +			//            lists and select dialogs, just write a hash in the link they +			//            create. This means the actual URL path is based on whatever +			//            the current value of the base tag is at the time this code +			//            is called. For now we are just assuming that any url with a +			//            hash in it is an application page reference. +			if ( href.search( "#" ) != -1 ) { +				href = href.replace( /[^#]*#/, "" ); +				if ( !href ) { +					//link was an empty hash meant purely +					//for interaction, so we ignore it. +					event.preventDefault(); +					return; +				} else if ( path.isPath( href ) ) { +					//we have apath so make it the href we want to load. +					href = path.makeUrlAbsolute( href, baseUrl ); +				} else { +					//we have a simple id so use the documentUrl as its base. +					href = path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash ); +				} +			} + +				// Should we handle this link, or let the browser deal with it? +			var useDefaultUrlHandling = $link.is( "[rel='external']" ) || $link.is( ":jqmData(ajax='false')" ) || $link.is( "[target]" ), + +				// Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR +				// requests if the document doing the request was loaded via the file:// protocol. +				// This is usually to allow the application to "phone home" and fetch app specific +				// data. We normally let the browser handle external/cross-domain urls, but if the +				// allowCrossDomainPages option is true, we will allow cross-domain http/https +				// requests to go through our page loading logic. +				isCrossDomainPageLoad = ( $.mobile.allowCrossDomainPages && documentUrl.protocol === "file:" && href.search( /^https?:/ ) != -1 ), + +				//check for protocol or rel and its not an embedded page +				//TODO overlap in logic from isExternal, rel=external check should be +				//     moved into more comprehensive isExternalLink +				isExternal = useDefaultUrlHandling || ( path.isExternal( href ) && !isCrossDomainPageLoad ); + +			if( isExternal ) { +				httpCleanup(); +				//use default click handling +				return; +			} + +			//use ajax +			var transition = $link.jqmData( "transition" ), +				direction = $link.jqmData( "direction" ), +				reverse = ( direction && direction === "reverse" ) || +							// deprecated - remove by 1.0 +							$link.jqmData( "back" ), + +				//this may need to be more specific as we use data-rel more +				role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined; + +			$.mobile.changePage( href, { transition: transition, reverse: reverse, role: role } ); +			event.preventDefault(); +		}); + +		//prefetch pages when anchors with data-prefetch are encountered +		$( document ).delegate( ".ui-page", "pageshow.prefetch", function() { +			var urls = []; +			$( this ).find( "a:jqmData(prefetch)" ).each(function(){ +				var $link = $(this), +					url = $link.attr( "href" ); + +				if ( url && $.inArray( url, urls ) === -1 ) { +					urls.push( url ); + +					$.mobile.loadPage( url, {role: $link.attr("data-" + $.mobile.ns + "rel")} ); +				} +			}); +		}); + +		$.mobile._handleHashChange = function( hash ) { +			//find first page via hash +			var to = path.stripHash( hash ), +				//transition is false if it's the first page, undefined otherwise (and may be overridden by default) +				transition = $.mobile.urlHistory.stack.length === 0 ? "none" : undefined, + +				// default options for the changPage calls made after examining the current state +				// of the page and the hash +				changePageOptions = { +					transition: transition, +					changeHash: false, +					fromHashChange: true +				}; + +			//if listening is disabled (either globally or temporarily), or it's a dialog hash +			if( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) { +				urlHistory.ignoreNextHashChange = false; +				return; +			} + +			// special case for dialogs +			if( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 ) { + +				// If current active page is not a dialog skip the dialog and continue +				// in the same direction +				if(!$.mobile.activePage.is( ".ui-dialog" )) { +					//determine if we're heading forward or backward and continue accordingly past +					//the current dialog +					urlHistory.directHashChange({ +						currentUrl: to, +						isBack: function() { window.history.back(); }, +						isForward: function() { window.history.forward(); } +					}); + +					// prevent changePage() +					return; +				} else { +					// if the current active page is a dialog and we're navigating +					// to a dialog use the dialog objected saved in the stack +					urlHistory.directHashChange({ +						currentUrl: to, + +						// regardless of the direction of the history change +						// do the following +						either: function( isBack ) { +							var active = $.mobile.urlHistory.getActive(); + +							to = active.pageUrl; + +							// make sure to set the role, transition and reversal +							// as most of this is lost by the domCache cleaning +							$.extend( changePageOptions, { +								role: active.role, +								transition:	 active.transition, +								reverse: isBack +							}); +						} +					}); +				} +			} + +			//if to is defined, load it +			if ( to ) { +				// At this point, 'to' can be one of 3 things, a cached page element from +				// a history stack entry, an id, or site-relative/absolute URL. If 'to' is +				// an id, we need to resolve it against the documentBase, not the location.href, +				// since the hashchange could've been the result of a forward/backward navigation +				// that crosses from an external page/dialog to an internal page/dialog. +				to = ( typeof to === "string" && !path.isPath( to ) ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to; +				$.mobile.changePage( to, changePageOptions ); +			}	else { +				//there's no hash, go to the first page in the dom +				$.mobile.changePage( $.mobile.firstPage, changePageOptions ); +			} +		}; + +		//hashchange event handler +		$window.bind( "hashchange", function( e, triggered ) { +			$.mobile._handleHashChange( location.hash ); +		}); + +		//set page min-heights to be device specific +		$( document ).bind( "pageshow", resetActivePageHeight ); +		$( window ).bind( "throttledresize", resetActivePageHeight ); + +	};//_registerInternalEvents callback + +})( jQuery ); + +( function( $, window ) { +	// For now, let's Monkeypatch this onto the end of $.mobile._registerInternalEvents +	// Scope self to pushStateHandler so we can reference it sanely within the +	// methods handed off as event handlers +	var	pushStateHandler = {}, +		self = pushStateHandler, +		$win = $( window ), +		url = $.mobile.path.parseUrl( location.href ); + +	$.extend( pushStateHandler, { +		// TODO move to a path helper, this is rather common functionality +		initialFilePath: (function() { +			return url.pathname + url.search; +		})(), + +		initialHref: url.hrefNoHash, + +		state: function() { +			return { +				hash: location.hash || "#" + self.initialFilePath, +				title: document.title, + +				// persist across refresh +				initialHref: self.initialHref +			}; +		}, + +		resetUIKeys: function( url ) { +			var dialog = $.mobile.dialogHashKey, +				subkey = "&" + $.mobile.subPageUrlKey, +				dialogIndex = url.indexOf( dialog ); + +			if( dialogIndex > -1 ) { +				url = url.slice( 0, dialogIndex ) + "#" + url.slice( dialogIndex ); +			} else if( url.indexOf( subkey ) > -1 ) { +				url = url.split( subkey ).join( "#" + subkey ); +			} + +			return url; +		}, + +		hashValueAfterReset: function( url ) { +			var resetUrl = self.resetUIKeys( url ); +			return $.mobile.path.parseUrl( resetUrl ).hash; +		}, + +		// TODO sort out a single barrier to hashchange functionality +		nextHashChangePrevented: function( value ) { +			$.mobile.urlHistory.ignoreNextHashChange = value; +			self.onHashChangeDisabled = value; +		}, + +		// on hash change we want to clean up the url +		// NOTE this takes place *after* the vanilla navigation hash change +		// handling has taken place and set the state of the DOM +		onHashChange: function( e ) { +			// disable this hash change +			if( self.onHashChangeDisabled ){ +				return; +			} + +			var href, state, +				hash = location.hash, +				isPath = $.mobile.path.isPath( hash ), +				resolutionUrl = isPath ? location.href : $.mobile.getDocumentUrl(); + +			hash = isPath ? hash.replace( "#", "" ) : hash; + + +			// propulate the hash when its not available +			state = self.state(); + +			// make the hash abolute with the current href +			href = $.mobile.path.makeUrlAbsolute( hash, resolutionUrl ); + +			if ( isPath ) { +				href = self.resetUIKeys( href ); +			} + +			// replace the current url with the new href and store the state +			// Note that in some cases we might be replacing an url with the +			// same url. We do this anyways because we need to make sure that +			// all of our history entries have a state object associated with +			// them. This allows us to work around the case where window.history.back() +			// is called to transition from an external page to an embedded page. +			// In that particular case, a hashchange event is *NOT* generated by the browser. +			// Ensuring each history entry has a state object means that onPopState() +			// will always trigger our hashchange callback even when a hashchange event +			// is not fired. +			history.replaceState( state, document.title, href ); +		}, + +		// on popstate (ie back or forward) we need to replace the hash that was there previously +		// cleaned up by the additional hash handling +		onPopState: function( e ) { +			var poppedState = e.originalEvent.state, +				timeout, fromHash, toHash, hashChanged; + +			// if there's no state its not a popstate we care about, eg chrome's initial popstate +			if( poppedState ) { +				// the active url in the history stack will still be from the previous state +				// so we can use it to verify if a hashchange will be fired from the popstate +				fromHash = self.hashValueAfterReset( $.mobile.urlHistory.getActive().url ); + +				// the hash stored in the state popped off the stack will be our currenturl or +				// the url to which we wish to navigate +				toHash = self.hashValueAfterReset( poppedState.hash.replace("#", "") ); + +				// if the hashes of the urls are different we must assume that the browser +				// will fire a hashchange +				hashChanged = fromHash !== toHash; + +				// unlock hash handling once the hashchange caused be the popstate has fired +				if( hashChanged ) { +					$win.one( "hashchange.pushstate", function() { +						self.nextHashChangePrevented( false ); +					}); +				} + +				// enable hash handling for the the _handleHashChange call +				self.nextHashChangePrevented( false ); + +				// change the page based on the hash +				$.mobile._handleHashChange( poppedState.hash ); + +				// only prevent another hash change handling if a hash change will be fired +				// by the browser +				if( hashChanged ) { +					// disable hash handling until one of the above timers fires +					self.nextHashChangePrevented( true ); +				} +			} +		}, + +		init: function() { +			$win.bind( "hashchange", self.onHashChange ); + +			// Handle popstate events the occur through history changes +			$win.bind( "popstate", self.onPopState ); + +			// if there's no hash, we need to replacestate for returning to home +			if ( location.hash === "" ) { +				history.replaceState( self.state(), document.title, location.href ); +			} +		} +	}); + +	$( function() { +		if( $.mobile.pushStateEnabled && $.support.pushState ){ +			pushStateHandler.init(); +		} +	}); +})( jQuery, this ); + +/* +* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.pop = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +// Use the simultaneous transition handler for slide transitions +$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; + +// Set the slide transition's fallback to "fade" +$.mobile.transitionFallbacks.slide = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.slidedown = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.slideup = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.flip = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.flow = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.turn = "fade"; + +})( jQuery, this ); + +(function( $, undefined ) { + +$.mobile.page.prototype.options.degradeInputs = { +	color: false, +	date: false, +	datetime: false, +	"datetime-local": false, +	email: false, +	month: false, +	number: false, +	range: "number", +	search: "text", +	tel: false, +	time: false, +	url: false, +	week: false +}; + + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ + +	var page = $.mobile.closestPageData($(e.target)), options; + +	if( !page ) { +		return; +	} + +	options = page.options; + +	// degrade inputs to avoid poorly implemented native functionality +	$( e.target ).find( "input" ).not( page.keepNativeSelector() ).each(function() { +		var $this = $( this ), +			type = this.getAttribute( "type" ), +			optType = options.degradeInputs[ type ] || "text"; + +		if ( options.degradeInputs[ type ] ) { +			var html = $( "<div>" ).html( $this.clone() ).html(), +				// In IE browsers, the type sometimes doesn't exist in the cloned markup, so we replace the closing tag instead +				hasType = html.indexOf( " type=" ) > -1, +				findstr = hasType ? /\s+type=["']?\w+['"]?/ : /\/?>/, +				repstr = " type=\"" + optType + "\" data-" + $.mobile.ns + "type=\"" + type + "\"" + ( hasType ? "" : ">" ); + +			$this.replaceWith( html.replace( findstr, repstr ) ); +		} +	}); + +}); + +})( jQuery ); + +(function( $, window, undefined ) { + +$.widget( "mobile.dialog", $.mobile.widget, { +	options: { +		closeBtnText 	: "Close", +		overlayTheme	: "a", +		initSelector	: ":jqmData(role='dialog')" +	}, +	_create: function() { +		var self = this, +			$el = this.element, +			headerCloseButton = $( "<a href='#' data-" + $.mobile.ns + "icon='delete' data-" + $.mobile.ns + "iconpos='notext'>"+ this.options.closeBtnText + "</a>" ), +			dialogWrap = $("<div/>", { +					"role" : "dialog", +					"class" : "ui-dialog-contain ui-corner-all ui-overlay-shadow" +				}); + +		$el.addClass( "ui-dialog ui-overlay-" + this.options.overlayTheme ); +		 +		// Class the markup for dialog styling +		// Set aria role +		$el +			.wrapInner( dialogWrap ) +			.children() +				.find( ":jqmData(role='header')" ) +					.prepend( headerCloseButton ) +				.end() +				.children( ':first-child') +					.addClass( "ui-corner-top" ) +				.end() +				.children( ":last-child" ) +					.addClass( "ui-corner-bottom" ); + +		// this must be an anonymous function so that select menu dialogs can replace +		// the close method. This is a change from previously just defining data-rel=back +		// on the button and letting nav handle it +		// +		// Use click rather than vclick in order to prevent the possibility of unintentionally +		// reopening the dialog if the dialog opening item was directly under the close button. +		headerCloseButton.bind( "click", function() { +			self.close(); +		}); + +		/* bind events +			- clicks and submits should use the closing transition that the dialog opened with +			  unless a data-transition is specified on the link/form +			- if the click was on the close button, or the link has a data-rel="back" it'll go back in history naturally +		*/ +		$el.bind( "vclick submit", function( event ) { +			var $target = $( event.target ).closest( event.type === "vclick" ? "a" : "form" ), +				active; + +			if ( $target.length && !$target.jqmData( "transition" ) ) { + +				active = $.mobile.urlHistory.getActive() || {}; + +				$target.attr( "data-" + $.mobile.ns + "transition", ( active.transition || $.mobile.defaultDialogTransition ) ) +					.attr( "data-" + $.mobile.ns + "direction", "reverse" ); +			} +		}) +		.bind( "pagehide", function( e, ui ) { +			$( this ).find( "." + $.mobile.activeBtnClass ).removeClass( $.mobile.activeBtnClass ); +		}) +		// Override the theme set by the page plugin on pageshow +		.bind( "pagebeforeshow", function(){ +			if( self.options.overlayTheme ){ +				self.element +					.page( "removeContainerBackground" ) +					.page( "setContainerBackground", self.options.overlayTheme ); +			} +		}); +	}, + +	// Close method goes back in history +	close: function() { +		window.history.back(); +	} +}); + +//auto self-init widgets +$( document ).delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function(){ +	$.mobile.dialog.prototype.enhance( this ); +}); + +})( jQuery, this ); + +(function( $, undefined ) { + +$.fn.fieldcontain = function( options ) { +	return this.addClass( "ui-field-contain ui-body ui-br" ); +}; + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$( ":jqmData(role='fieldcontain')", e.target ).jqmEnhanceable().fieldcontain(); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.fn.grid = function( options ) { +	return this.each(function() { + +		var $this = $( this ), +			o = $.extend({ +				grid: null +			},options), +			$kids = $this.children(), +			gridCols = {solo:1, a:2, b:3, c:4, d:5}, +			grid = o.grid, +			iterator; + +			if ( !grid ) { +				if ( $kids.length <= 5 ) { +					for ( var letter in gridCols ) { +						if ( gridCols[ letter ] === $kids.length ) { +							grid = letter; +						} +					} +				} else { +					grid = "a"; +				} +			} +			iterator = gridCols[grid]; + +		$this.addClass( "ui-grid-" + grid ); + +		$kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" ); + +		if ( iterator > 1 ) { +			$kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" ); +		} +		if ( iterator > 2 ) { +			$kids.filter( ":nth-child(3n+3)" ).addClass( "ui-block-c" ); +		} +		if ( iterator > 3 ) { +			$kids.filter( ":nth-child(4n+4)" ).addClass( "ui-block-d" ); +		} +		if ( iterator > 4 ) { +			$kids.filter( ":nth-child(5n+5)" ).addClass( "ui-block-e" ); +		} +	}); +}; +})( jQuery ); + +(function( $, undefined ) { + +$( document ).bind( "pagecreate create", function( e ){ +	$( ":jqmData(role='nojs')", e.target ).addClass( "ui-nojs" ); +	 +}); + +})( jQuery ); + +( function( $, undefined ) { + +$.fn.buttonMarkup = function( options ) { +	var $workingSet = this; + +	// Enforce options to be of type string +	options = ( options && ( $.type( options ) == "object" ) )? options : {}; +	for ( var i = 0; i < $workingSet.length; i++ ) { +		var el = $workingSet.eq( i ), +			e = el[ 0 ], +			o = $.extend( {}, $.fn.buttonMarkup.defaults, { +				icon:       options.icon       !== undefined ? options.icon       : el.jqmData( "icon" ), +				iconpos:    options.iconpos    !== undefined ? options.iconpos    : el.jqmData( "iconpos" ), +				theme:      options.theme      !== undefined ? options.theme      : el.jqmData( "theme" ) || $.mobile.getInheritedTheme( el, "c" ), +				inline:     options.inline     !== undefined ? options.inline     : el.jqmData( "inline" ), +				shadow:     options.shadow     !== undefined ? options.shadow     : el.jqmData( "shadow" ), +				corners:    options.corners    !== undefined ? options.corners    : el.jqmData( "corners" ), +				iconshadow: options.iconshadow !== undefined ? options.iconshadow : el.jqmData( "iconshadow" ), +				mini:       options.mini       !== undefined ? options.mini       : el.jqmData( "mini" ) +			}, options ), + +			// Classes Defined +			innerClass = "ui-btn-inner", +			textClass = "ui-btn-text", +			buttonClass, iconClass, +			// Button inner markup +			buttonInner, +			buttonText, +			buttonIcon, +			buttonElements; + +		$.each(o, function(key, value) { +			e.setAttribute( "data-" + $.mobile.ns + key, value ); +			el.jqmData(key, value); +		}); + +		// Check if this element is already enhanced +		buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements"); + +		if (buttonElements) { +			e = buttonElements.outer; +			el = $(e); +			buttonInner = buttonElements.inner; +			buttonText = buttonElements.text; +			// We will recreate this icon below +			$(buttonElements.icon).remove(); +			buttonElements.icon = null; +		} +		else { +			buttonInner = document.createElement( o.wrapperEls ); +			buttonText = document.createElement( o.wrapperEls ); +		} +		buttonIcon = o.icon ? document.createElement( "span" ) : null; + +		if ( attachEvents && !buttonElements) { +			attachEvents(); +		} +		 +		// if not, try to find closest theme container	 +		if ( !o.theme ) { +			o.theme = $.mobile.getInheritedTheme( el, "c" );	 +		}		 + +		buttonClass = "ui-btn ui-btn-up-" + o.theme; +		buttonClass += o.inline ? " ui-btn-inline" : ""; +		buttonClass += o.shadow ? " ui-shadow" : ""; +		buttonClass += o.corners ? " ui-btn-corner-all" : ""; + +		if ( o.mini !== undefined ) { +			// Used to control styling in headers/footers, where buttons default to `mini` style. +			buttonClass += o.mini ? " ui-mini" : " ui-fullsize"; +		} +		 +		if ( o.inline !== undefined ) {			 +			// Used to control styling in headers/footers, where buttons default to `mini` style. +			buttonClass += o.inline === false ? " ui-btn-block" : " ui-btn-inline"; +		} +		 +		 +		if ( o.icon ) { +			o.icon = "ui-icon-" + o.icon; +			o.iconpos = o.iconpos || "left"; + +			iconClass = "ui-icon " + o.icon; + +			if ( o.iconshadow ) { +				iconClass += " ui-icon-shadow"; +			} +		} + +		if ( o.iconpos ) { +			buttonClass += " ui-btn-icon-" + o.iconpos; + +			if ( o.iconpos == "notext" && !el.attr( "title" ) ) { +				el.attr( "title", el.getEncodedText() ); +			} +		} +     +		innerClass += o.corners ? " ui-btn-corner-all" : ""; + +		if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) { +			el.attr( "title", el.getEncodedText() ); +		} + +		if ( buttonElements ) { +			el.removeClass( buttonElements.bcls || "" ); +		} +		el.removeClass( "ui-link" ).addClass( buttonClass ); + +		buttonInner.className = innerClass; + +		buttonText.className = textClass; +		if ( !buttonElements ) { +			buttonInner.appendChild( buttonText ); +		} +		if ( buttonIcon ) { +			buttonIcon.className = iconClass; +			if ( !(buttonElements && buttonElements.icon) ) { +				buttonIcon.appendChild( document.createTextNode("\u00a0") ); +				buttonInner.appendChild( buttonIcon ); +			} +		} + +		while ( e.firstChild && !buttonElements) { +			buttonText.appendChild( e.firstChild ); +		} + +		if ( !buttonElements ) { +			e.appendChild( buttonInner ); +		} + +		// Assign a structure containing the elements of this button to the elements of this button. This +		// will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup(). +		buttonElements = { +			bcls  : buttonClass, +			outer : e, +			inner : buttonInner, +			text  : buttonText, +			icon  : buttonIcon +		}; + +		$.data(e,           'buttonElements', buttonElements); +		$.data(buttonInner, 'buttonElements', buttonElements); +		$.data(buttonText,  'buttonElements', buttonElements); +		if (buttonIcon) { +			$.data(buttonIcon, 'buttonElements', buttonElements); +		} +	} + +	return this; +}; + +$.fn.buttonMarkup.defaults = { +	corners: true, +	shadow: true, +	iconshadow: true, +	wrapperEls: "span" +}; + +function closestEnabledButton( element ) { +    var cname; + +    while ( element ) { +		// Note that we check for typeof className below because the element we +		// handed could be in an SVG DOM where className on SVG elements is defined to +		// be of a different type (SVGAnimatedString). We only operate on HTML DOM +		// elements, so we look for plain "string". +        cname = ( typeof element.className === 'string' ) && (element.className + ' '); +        if ( cname && cname.indexOf("ui-btn ") > -1 && cname.indexOf("ui-disabled ") < 0 ) { +            break; +        } + +        element = element.parentNode; +    } + +    return element; +} + +var attachEvents = function() { +	var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc; + +	$( document ).bind( { +		"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) { +			var theme, +				$btn = $( closestEnabledButton( event.target ) ), +				evt = event.type; +		 +			if ( $btn.length ) { +				theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); +		 +				if ( evt === "vmousedown" ) { +					if ( $.support.touch ) { +						hov = setTimeout(function() { +							$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); +						}, hoverDelay ); +					} else { +						$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); +					} +				} else if ( evt === "vmousecancel" || evt === "vmouseup" ) { +					$btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); +				} else if ( evt === "vmouseover" || evt === "focus" ) { +					if ( $.support.touch ) { +						foc = setTimeout(function() { +							$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); +						}, hoverDelay ); +					} else { +						$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); +					} +				} else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) { +					$btn.removeClass( "ui-btn-hover-" + theme  + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); +					if ( hov ) { +						clearTimeout( hov ); +					} +					if ( foc ) { +						clearTimeout( foc ); +					} +				} +			} +		}, +		"focusin focus": function( event ){ +			$( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass ); +		}, +		"focusout blur": function( event ){ +			$( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass ); +		} +	}); + +	attachEvents = null; +}; + +//links in bars, or those with  data-role become buttons +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ + +	$( ":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a", e.target ) +		.not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) +		.buttonMarkup(); +}); + +})( jQuery ); + + +(function( $, undefined ) { + +$.mobile.page.prototype.options.backBtnText  = "Back"; +$.mobile.page.prototype.options.addBackBtn   = false; +$.mobile.page.prototype.options.backBtnTheme = null; +$.mobile.page.prototype.options.headerTheme  = "a"; +$.mobile.page.prototype.options.footerTheme  = "a"; +$.mobile.page.prototype.options.contentTheme = null; + +$( document ).delegate( ":jqmData(role='page'), :jqmData(role='dialog')", "pagecreate", function( e ) { + +	var $page = $( this ), +		o = $page.data( "page" ).options, +		pageRole = $page.jqmData( "role" ), +		pageTheme = o.theme; + +	$( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", this ) +		.jqmEnhanceable() +		.each(function() { + +		var $this = $( this ), +			role = $this.jqmData( "role" ), +			theme = $this.jqmData( "theme" ), +			contentTheme = theme || o.contentTheme || ( pageRole === "dialog" && pageTheme ), +			$headeranchors, +			leftbtn, +			rightbtn, +			backBtn; + +		$this.addClass( "ui-" + role ); + +		//apply theming and markup modifications to page,header,content,footer +		if ( role === "header" || role === "footer" ) { + +			var thisTheme = theme || ( role === "header" ? o.headerTheme : o.footerTheme ) || pageTheme; + +			$this +				//add theme class +				.addClass( "ui-bar-" + thisTheme ) +				// Add ARIA role +				.attr( "role", role === "header" ? "banner" : "contentinfo" ); + +			if( role === "header") { +				// Right,left buttons +				$headeranchors	= $this.children( "a" ); +				leftbtn	= $headeranchors.hasClass( "ui-btn-left" ); +				rightbtn = $headeranchors.hasClass( "ui-btn-right" ); + +				leftbtn = leftbtn || $headeranchors.eq( 0 ).not( ".ui-btn-right" ).addClass( "ui-btn-left" ).length; + +				rightbtn = rightbtn || $headeranchors.eq( 1 ).addClass( "ui-btn-right" ).length; +			} + +			// Auto-add back btn on pages beyond first view +			if ( o.addBackBtn && +				role === "header" && +				$( ".ui-page" ).length > 1 && +				$page.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) && +				!leftbtn ) { + +				backBtn = $( "<a href='#' class='ui-btn-left' data-"+ $.mobile.ns +"rel='back' data-"+ $.mobile.ns +"icon='arrow-l'>"+ o.backBtnText +"</a>" ) +					// If theme is provided, override default inheritance +					.attr( "data-"+ $.mobile.ns +"theme", o.backBtnTheme || thisTheme ) +					.prependTo( $this ); +			} + +			// Page title +			$this.children( "h1, h2, h3, h4, h5, h6" ) +				.addClass( "ui-title" ) +				// Regardless of h element number in src, it becomes h1 for the enhanced page +				.attr({ +					"role": "heading", +					"aria-level": "1" +				}); + +		} else if ( role === "content" ) { +			if ( contentTheme ) { +			    $this.addClass( "ui-body-" + ( contentTheme ) ); +			} + +			// Add ARIA role +			$this.attr( "role", "main" ); +		} +	}); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.collapsible", $.mobile.widget, { +	options: { +		expandCueText: " click to expand contents", +		collapseCueText: " click to collapse contents", +		collapsed: true, +		heading: "h1,h2,h3,h4,h5,h6,legend", +		theme: null, +		contentTheme: null, +		iconTheme: "d", +		mini: false, +		initSelector: ":jqmData(role='collapsible')" +	}, +	_create: function() { + +		var $el = this.element, +			o = this.options, +			collapsible = $el.addClass( "ui-collapsible" ), +			collapsibleHeading = $el.children( o.heading ).first(), +			collapsibleContent = collapsible.wrapInner( "<div class='ui-collapsible-content'></div>" ).find( ".ui-collapsible-content" ), +			collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ); + +		// Replace collapsibleHeading if it's a legend +		if ( collapsibleHeading.is( "legend" ) ) { +			collapsibleHeading = $( "<div role='heading'>"+ collapsibleHeading.html() +"</div>" ).insertBefore( collapsibleHeading ); +			collapsibleHeading.next().remove(); +		} + +		// If we are in a collapsible set +		if ( collapsibleSet.length ) { +			// Inherit the theme from collapsible-set +			if ( !o.theme ) { +				o.theme = collapsibleSet.jqmData("theme") || $.mobile.getInheritedTheme( collapsibleSet, "c" ); +			} +			// Inherit the content-theme from collapsible-set +			if ( !o.contentTheme ) { +				o.contentTheme = collapsibleSet.jqmData( "content-theme" ); +			} + +			// Gets the preference icon position in the set +			if ( !o.iconPos ) { +				o.iconPos = collapsibleSet.jqmData( "iconpos" ); +			} + +			if( !o.mini ) { +				o.mini = collapsibleSet.jqmData( "mini" ); +			} +		} +		collapsibleContent.addClass( ( o.contentTheme ) ? ( "ui-body-" + o.contentTheme ) : ""); + +		collapsibleHeading +			//drop heading in before content +			.insertBefore( collapsibleContent ) +			//modify markup & attributes +			.addClass( "ui-collapsible-heading" ) +			.append( "<span class='ui-collapsible-heading-status'></span>" ) +			.wrapInner( "<a href='#' class='ui-collapsible-heading-toggle'></a>" ) +			.find( "a" ) +				.first() +				.buttonMarkup({ +					shadow: false, +					corners: false, +					iconpos: $el.jqmData( "iconpos" ) || o.iconPos || "left", +					icon: "plus", +					mini: o.mini, +					theme: o.theme +				}) +			.add( ".ui-btn-inner", $el ) +				.addClass( "ui-corner-top ui-corner-bottom" ); + +		//events +		collapsible +			.bind( "expand collapse", function( event ) { +				if ( !event.isDefaultPrevented() ) { + +					event.preventDefault(); + +					var $this = $( this ), +						isCollapse = ( event.type === "collapse" ), +					    contentTheme = o.contentTheme; + +					collapsibleHeading +						.toggleClass( "ui-collapsible-heading-collapsed", isCollapse) +						.find( ".ui-collapsible-heading-status" ) +							.text( isCollapse ? o.expandCueText : o.collapseCueText ) +						.end() +						.find( ".ui-icon" ) +							.toggleClass( "ui-icon-minus", !isCollapse ) +							.toggleClass( "ui-icon-plus", isCollapse ); + +					$this.toggleClass( "ui-collapsible-collapsed", isCollapse ); +					collapsibleContent.toggleClass( "ui-collapsible-content-collapsed", isCollapse ).attr( "aria-hidden", isCollapse ); + +					if ( contentTheme && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) { +						collapsibleHeading +							.find( "a" ).first().add( collapsibleHeading.find( ".ui-btn-inner" ) ) +							.toggleClass( "ui-corner-bottom", isCollapse ); +						collapsibleContent.toggleClass( "ui-corner-bottom", !isCollapse ); +					} +					collapsibleContent.trigger( "updatelayout" ); +				} +			}) +			.trigger( o.collapsed ? "collapse" : "expand" ); + +		collapsibleHeading +			.bind( "click", function( event ) { + +				var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? +										"expand" : "collapse"; + +				collapsible.trigger( type ); + +				event.preventDefault(); +			}); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.collapsible.prototype.enhanceWithin( e.target ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.collapsibleset", $.mobile.widget, { +	options: { +		initSelector: ":jqmData(role='collapsible-set')" +	}, +	_create: function() { +		var $el = this.element.addClass( "ui-collapsible-set" ), +			o = this.options; + +		// Inherit the theme from collapsible-set +		if ( !o.theme ) { +			o.theme = $.mobile.getInheritedTheme( $el, "c" ); +		} +		// Inherit the content-theme from collapsible-set +		if ( !o.contentTheme ) { +			o.contentTheme = $el.jqmData( "content-theme" ); +		} + +		if ( !o.corners ) { +			o.corners = $el.jqmData( "corners" ) === undefined ? true : false; +		} + +		// Initialize the collapsible set if it's not already initialized +		if ( !$el.jqmData( "collapsiblebound" ) ) { +			$el +				.jqmData( "collapsiblebound", true ) +				.bind( "expand collapse", function( event ) { +					var isCollapse = ( event.type === "collapse" ), +						collapsible = $( event.target ).closest( ".ui-collapsible" ), +						widget = collapsible.data( "collapsible" ), +					    contentTheme = widget.options.contentTheme; +					if ( contentTheme && collapsible.jqmData( "collapsible-last" ) ) { +						collapsible.find( widget.options.heading ).first() +							.find( "a" ).first() +							.add( ".ui-btn-inner" ) +							.toggleClass( "ui-corner-bottom", isCollapse ); +						collapsible.find( ".ui-collapsible-content" ).toggleClass( "ui-corner-bottom", !isCollapse ); +					} +				}) +				.bind( "expand", function( event ) { +					$( event.target ) +						.closest( ".ui-collapsible" ) +						.siblings( ".ui-collapsible" ) +						.trigger( "collapse" ); +				}); +		} +	}, + +	_init: function() { +		this.refresh(); +	}, + +	refresh: function() { +		var $el = this.element, +			o = this.options, +			collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" ); + +		$.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) ); + +		// clean up borders +		collapsiblesInSet.each( function() { +			$( this ).find( $.mobile.collapsible.prototype.options.heading ) +				.find( "a" ).first() +				.add( ".ui-btn-inner" ) +				.removeClass( "ui-corner-top ui-corner-bottom" ); +		}); + +		collapsiblesInSet.first() +			.find( "a" ) +				.first() +				.addClass( o.corners ? "ui-corner-top" : "" ) +				.find( ".ui-btn-inner" ) +					.addClass( "ui-corner-top" ); + +		collapsiblesInSet.last() +			.jqmData( "collapsible-last", true ) +			.find( "a" ) +				.first() +				.addClass( o.corners ? "ui-corner-bottom" : "" ) +				.find( ".ui-btn-inner" ) +					.addClass( "ui-corner-bottom" ); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.collapsibleset.prototype.enhanceWithin( e.target ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.navbar", $.mobile.widget, { +	options: { +		iconpos: "top", +		grid: null, +		initSelector: ":jqmData(role='navbar')" +	}, + +	_create: function(){ + +		var $navbar = this.element, +			$navbtns = $navbar.find( "a" ), +			iconpos = $navbtns.filter( ":jqmData(icon)" ).length ? +									this.options.iconpos : undefined; + +		$navbar.addClass( "ui-navbar" ) +			.attr( "role","navigation" ) +			.find( "ul" ) +			.jqmEnhanceable() +			.grid({ grid: this.options.grid }); + +		if ( !iconpos ) { +			$navbar.addClass( "ui-navbar-noicons" ); +		} + +		$navbtns.buttonMarkup({ +			corners:	false, +			shadow:		false, +			inline:     true, +			iconpos:	iconpos +		}); + +		$navbar.delegate( "a", "vclick", function( event ) { +			if( !$(event.target).hasClass("ui-disabled") ) { +				$navbtns.removeClass( $.mobile.activeBtnClass ); +				$( this ).addClass( $.mobile.activeBtnClass ); +			} +		}); + +		// Buttons in the navbar with ui-state-persist class should regain their active state before page show +		$navbar.closest( ".ui-page" ).bind( "pagebeforeshow", function() { +			$navbtns.filter( ".ui-state-persist" ).addClass( $.mobile.activeBtnClass ); +		}); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.navbar.prototype.enhanceWithin( e.target ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +//Keeps track of the number of lists per page UID +//This allows support for multiple nested list in the same page +//https://github.com/jquery/jquery-mobile/issues/1617 +var listCountPerPage = {}; + +$.widget( "mobile.listview", $.mobile.widget, { + +	options: { +		theme: null, +		countTheme: "c", +		headerTheme: "b", +		dividerTheme: "b", +		splitIcon: "arrow-r", +		splitTheme: "b", +		mini: false, +		inset: false, +		initSelector: ":jqmData(role='listview')" +	}, + +	_create: function() { +		var t = this, +			listviewClasses = ""; +			 +		listviewClasses += t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : ""; +		listviewClasses += t.element.jqmData( "mini" ) || t.options.mini === true ? " ui-mini" : ""; +		 +		// create listview markup +		t.element.addClass(function( i, orig ) { +			return orig + " ui-listview " + listviewClasses; +		}); + +		t.refresh( true ); +	}, + +	_removeCorners: function( li, which ) { +		var top = "ui-corner-top ui-corner-tr ui-corner-tl", +			bot = "ui-corner-bottom ui-corner-br ui-corner-bl"; + +		li = li.add( li.find( ".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb" ) ); + +		if ( which === "top" ) { +			li.removeClass( top ); +		} else if ( which === "bottom" ) { +			li.removeClass( bot ); +		} else { +			li.removeClass( top + " " + bot ); +		} +	}, + +	_refreshCorners: function( create ) { +		var $li, +			$visibleli, +			$topli, +			$bottomli; + +		if ( this.options.inset ) { +			$li = this.element.children( "li" ); +			// at create time the li are not visible yet so we need to rely on .ui-screen-hidden +			$visibleli = create?$li.not( ".ui-screen-hidden" ):$li.filter( ":visible" ); + +			this._removeCorners( $li ); + +			// Select the first visible li element +			$topli = $visibleli.first() +				.addClass( "ui-corner-top" ); + +			$topli.add( $topli.find( ".ui-btn-inner" ) +					.not( ".ui-li-link-alt span:first-child" ) ) +                                .addClass( "ui-corner-top" ) +                                .end() +				.find( ".ui-li-link-alt, .ui-li-link-alt span:first-child" ) +					.addClass( "ui-corner-tr" ) +				.end() +				.find( ".ui-li-thumb" ) +					.not(".ui-li-icon") +					.addClass( "ui-corner-tl" ); + +			// Select the last visible li element +			$bottomli = $visibleli.last() +				.addClass( "ui-corner-bottom" ); + +			$bottomli.add( $bottomli.find( ".ui-btn-inner" ) ) +				.find( ".ui-li-link-alt" ) +					.addClass( "ui-corner-br" ) +				.end() +				.find( ".ui-li-thumb" ) +					.not(".ui-li-icon") +					.addClass( "ui-corner-bl" ); +		} +		if ( !create ) { +			this.element.trigger( "updatelayout" ); +		} +	}, + +	// This is a generic utility method for finding the first +	// node with a given nodeName. It uses basic DOM traversal +	// to be fast and is meant to be a substitute for simple +	// $.fn.closest() and $.fn.children() calls on a single +	// element. Note that callers must pass both the lowerCase +	// and upperCase version of the nodeName they are looking for. +	// The main reason for this is that this function will be +	// called many times and we want to avoid having to lowercase +	// the nodeName from the element every time to ensure we have +	// a match. Note that this function lives here for now, but may +	// be moved into $.mobile if other components need a similar method. +	_findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) +	{ +		var dict = {}; +		dict[ lcName ] = dict[ ucName ] = true; +		while ( ele ) { +			if ( dict[ ele.nodeName ] ) { +				return ele; +			} +			ele = ele[ nextProp ]; +		} +		return null; +	}, +	_getChildrenByTagName: function( ele, lcName, ucName ) +	{ +		var results = [], +			dict = {}; +		dict[ lcName ] = dict[ ucName ] = true; +		ele = ele.firstChild; +		while ( ele ) { +			if ( dict[ ele.nodeName ] ) { +				results.push( ele ); +			} +			ele = ele.nextSibling; +		} +		return $( results ); +	}, + +	_addThumbClasses: function( containers ) +	{ +		var i, img, len = containers.length; +		for ( i = 0; i < len; i++ ) { +			img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) ); +			if ( img.length ) { +				img.addClass( "ui-li-thumb" ); +				$( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" ); +			} +		} +	}, + +	refresh: function( create ) { +		this.parentPage = this.element.closest( ".ui-page" ); +		this._createSubPages(); + +		var o = this.options, +			$list = this.element, +			self = this, +			dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme, +			listsplittheme = $list.jqmData( "splittheme" ), +			listspliticon = $list.jqmData( "spliticon" ), +			li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), +			counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1, +			itemClassDict = {}, +			item, itemClass, itemTheme, +			a, last, splittheme, countParent, icon, imgParents, img, linkIcon; + +		if ( counter ) { +			$list.find( ".ui-li-dec" ).remove(); +		} + +		if ( !o.theme ) { +			o.theme = $.mobile.getInheritedTheme( this.element, "c" ); +		} + +		for ( var pos = 0, numli = li.length; pos < numli; pos++ ) { +			item = li.eq( pos ); +			itemClass = "ui-li"; + +			// If we're creating the element, we update it regardless +			if ( create || !item.hasClass( "ui-li" ) ) { +				itemTheme = item.jqmData("theme") || o.theme; +				a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); + +				if ( a.length ) { +					icon = item.jqmData("icon"); + +					item.buttonMarkup({ +						wrapperEls: "div", +						shadow: false, +						corners: false, +						iconpos: "right", +						icon: a.length > 1 || icon === false ? false : icon || "arrow-r", +						theme: itemTheme +					}); + +					if ( ( icon != false ) && ( a.length == 1 ) ) { +						item.addClass( "ui-li-has-arrow" ); +					} + +					a.first().removeClass( "ui-link" ).addClass( "ui-link-inherit" ); + +					if ( a.length > 1 ) { +						itemClass += " ui-li-has-alt"; + +						last = a.last(); +						splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme; +						linkIcon = last.jqmData("icon"); + +						last.appendTo(item) +							.attr( "title", last.getEncodedText() ) +							.addClass( "ui-li-link-alt" ) +							.empty() +							.buttonMarkup({ +								shadow: false, +								corners: false, +								theme: itemTheme, +								icon: false, +								iconpos: false +							}) +							.find( ".ui-btn-inner" ) +								.append( +									$( document.createElement( "span" ) ).buttonMarkup({ +										shadow: true, +										corners: true, +										theme: splittheme, +										iconpos: "notext", +										// link icon overrides list item icon overrides ul element overrides options +										icon: linkIcon || icon || listspliticon || o.splitIcon +									}) +								); +					} +				} else if ( item.jqmData( "role" ) === "list-divider" ) { + +					itemClass += " ui-li-divider ui-bar-" + dividertheme; +					item.attr( "role", "heading" ); + +					//reset counter when a divider heading is encountered +					if ( counter ) { +						counter = 1; +					} + +				} else { +					itemClass += " ui-li-static ui-body-" + itemTheme; +				} +			} + +			if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) { +				countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" ); + +				countParent.addClass( "ui-li-jsnumbering" ) +					.prepend( "<span class='ui-li-dec'>" + (counter++) + ". </span>" ); +			} + +			// Instead of setting item class directly on the list item and its +			// btn-inner at this point in time, push the item into a dictionary +			// that tells us what class to set on it so we can do this after this +			// processing loop is finished. + +			if ( !itemClassDict[ itemClass ] ) { +				itemClassDict[ itemClass ] = []; +			} + +			itemClassDict[ itemClass ].push( item[ 0 ] ); +		} + +		// Set the appropriate listview item classes on each list item +		// and their btn-inner elements. The main reason we didn't do this +		// in the for-loop above is because we can eliminate per-item function overhead +		// by calling addClass() and children() once or twice afterwards. This +		// can give us a significant boost on platforms like WP7.5. + +		for ( itemClass in itemClassDict ) { +			$( itemClassDict[ itemClass ] ).addClass( itemClass ).children( ".ui-btn-inner" ).addClass( itemClass ); +		} + +		$list.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ) +			.end() + +			.find( "p, dl" ).addClass( "ui-li-desc" ) +			.end() + +			.find( ".ui-li-aside" ).each(function() { +					var $this = $(this); +					$this.prependTo( $this.parent() ); //shift aside to front for css float +				}) +			.end() + +			.find( ".ui-li-count" ).each( function() { +					$( this ).closest( "li" ).addClass( "ui-li-has-count" ); +				}).addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme) + " ui-btn-corner-all" ); + +		// The idea here is to look at the first image in the list item +		// itself, and any .ui-link-inherit element it may contain, so we +		// can place the appropriate classes on the image and list item. +		// Note that we used to use something like: +		// +		//    li.find(">img:eq(0), .ui-link-inherit>img:eq(0)").each( ... ); +		// +		// But executing a find() like that on Windows Phone 7.5 took a +		// really long time. Walking things manually with the code below +		// allows the 400 listview item page to load in about 3 seconds as +		// opposed to 30 seconds. + +		this._addThumbClasses( li ); +		this._addThumbClasses( $list.find( ".ui-link-inherit" ) ); + +		this._refreshCorners( create ); +	}, + +	//create a string for ID/subpage url creation +	_idStringEscape: function( str ) { +		return str.replace(/[^a-zA-Z0-9]/g, '-'); +	}, + +	_createSubPages: function() { +		var parentList = this.element, +			parentPage = parentList.closest( ".ui-page" ), +			parentUrl = parentPage.jqmData( "url" ), +			parentId = parentUrl || parentPage[ 0 ][ $.expando ], +			parentListId = parentList.attr( "id" ), +			o = this.options, +			dns = "data-" + $.mobile.ns, +			self = this, +			persistentFooterID = parentPage.find( ":jqmData(role='footer')" ).jqmData( "id" ), +			hasSubPages; + +		if ( typeof listCountPerPage[ parentId ] === "undefined" ) { +			listCountPerPage[ parentId ] = -1; +		} + +		parentListId = parentListId || ++listCountPerPage[ parentId ]; + +		$( parentList.find( "li>ul, li>ol" ).toArray().reverse() ).each(function( i ) { +			var self = this, +				list = $( this ), +				listId = list.attr( "id" ) || parentListId + "-" + i, +				parent = list.parent(), +				nodeEls = $( list.prevAll().toArray().reverse() ), +				nodeEls = nodeEls.length ? nodeEls : $( "<span>" + $.trim(parent.contents()[ 0 ].nodeValue) + "</span>" ), +				title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text +				id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId, +				theme = list.jqmData( "theme" ) || o.theme, +				countTheme = list.jqmData( "counttheme" ) || parentList.jqmData( "counttheme" ) || o.countTheme, +				newPage, anchor; + +			//define hasSubPages for use in later removal +			hasSubPages = true; + +			newPage = list.detach() +						.wrap( "<div " + dns + "role='page' " +	dns + "url='" + id + "' " + dns + "theme='" + theme + "' " + dns + "count-theme='" + countTheme + "'><div " + dns + "role='content'></div></div>" ) +						.parent() +							.before( "<div " + dns + "role='header' " + dns + "theme='" + o.headerTheme + "'><div class='ui-title'>" + title + "</div></div>" ) +							.after( persistentFooterID ? $( "<div " + dns + "role='footer' " + dns + "id='"+ persistentFooterID +"'>") : "" ) +							.parent() +								.appendTo( $.mobile.pageContainer ); + +			newPage.page(); + +			anchor = parent.find('a:first'); + +			if ( !anchor.length ) { +				anchor = $( "<a/>" ).html( nodeEls || title ).prependTo( parent.empty() ); +			} + +			anchor.attr( "href", "#" + id ); + +		}).listview(); + +		// on pagehide, remove any nested pages along with the parent page, as long as they aren't active +		// and aren't embedded +		if( hasSubPages && +			parentPage.is( ":jqmData(external-page='true')" ) && +			parentPage.data("page").options.domCache === false ) { + +			var newRemove = function( e, ui ){ +				var nextPage = ui.nextPage, npURL; + +				if( ui.nextPage ){ +					npURL = nextPage.jqmData( "url" ); +					if( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ){ +						self.childPages().remove(); +						parentPage.remove(); +					} +				} +			}; + +			// unbind the original page remove and replace with our specialized version +			parentPage +				.unbind( "pagehide.remove" ) +				.bind( "pagehide.remove", newRemove); +		} +	}, + +	// TODO sort out a better way to track sub pages of the listview this is brittle +	childPages: function(){ +		var parentUrl = this.parentPage.jqmData( "url" ); + +		return $( ":jqmData(url^='"+  parentUrl + "&" + $.mobile.subPageUrlKey +"')"); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.listview.prototype.enhanceWithin( e.target ); +}); + +})( jQuery ); + +/* +* "checkboxradio" plugin +*/ + +(function( $, undefined ) { + +$.widget( "mobile.checkboxradio", $.mobile.widget, { +	options: { +		theme: null, +		initSelector: "input[type='checkbox'],input[type='radio']" +	}, +	_create: function() { +		var self = this, +			input = this.element, +			inheritAttr = function( input, dataAttr ) { +				return input.jqmData( dataAttr ) || input.closest( "form,fieldset" ).jqmData( dataAttr ) +			}, +			// NOTE: Windows Phone could not find the label through a selector +			// filter works though. +			parentLabel = $( input ).closest( "label" ), +			label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ), +			inputtype = input[0].type, +			mini = inheritAttr( input, "mini" ), +			checkedState = inputtype + "-on", +			uncheckedState = inputtype + "-off", +			icon = input.parents( ":jqmData(type='horizontal')" ).length ? undefined : uncheckedState, +			iconpos = inheritAttr( input, "iconpos" ), +			activeBtn = icon ? "" : " " + $.mobile.activeBtnClass, +			checkedClass = "ui-" + checkedState + activeBtn, +			uncheckedClass = "ui-" + uncheckedState, +			checkedicon = "ui-icon-" + checkedState, +			uncheckedicon = "ui-icon-" + uncheckedState; + +		if ( inputtype !== "checkbox" && inputtype !== "radio" ) { +			return; +		} + +		// Expose for other methods +		$.extend( this, { +			label: label, +			inputtype: inputtype, +			checkedClass: checkedClass, +			uncheckedClass: uncheckedClass, +			checkedicon: checkedicon, +			uncheckedicon: uncheckedicon +		}); + +		// If there's no selected theme check the data attr +		if( !this.options.theme ) { +			this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); +		} + +		label.buttonMarkup({ +			theme: this.options.theme, +			icon: icon, +			shadow: false, +			mini: mini, +			iconpos: iconpos +		}); + +		// Wrap the input + label in a div +		var wrapper = document.createElement('div'); +		wrapper.className = 'ui-' + inputtype; + +		input.add( label ).wrapAll( wrapper ); + +		label.bind({ +			vmouseover: function( event ) { +				if ( $( this ).parent().is( ".ui-disabled" ) ) { +					event.stopPropagation(); +				} +			}, + +			vclick: function( event ) { +				if ( input.is( ":disabled" ) ) { +					event.preventDefault(); +					return; +				} + +				self._cacheVals(); + +				input.prop( "checked", inputtype === "radio" && true || !input.prop( "checked" ) ); + +				// trigger click handler's bound directly to the input as a substitute for +				// how label clicks behave normally in the browsers +				// TODO: it would be nice to let the browser's handle the clicks and pass them +				//       through to the associate input. we can swallow that click at the parent +				//       wrapper element level +				input.triggerHandler( 'click' ); + +				// Input set for common radio buttons will contain all the radio +				// buttons, but will not for checkboxes. clearing the checked status +				// of other radios ensures the active button state is applied properly +				self._getInputSet().not( input ).prop( "checked", false ); + +				self._updateAll(); +				return false; +			} +		}); + +		input +			.bind({ +				vmousedown: function() { +					self._cacheVals(); +				}, + +				vclick: function() { +					var $this = $(this); + +					// Adds checked attribute to checked input when keyboard is used +					if ( $this.is( ":checked" ) ) { + +						$this.prop( "checked", true); +						self._getInputSet().not($this).prop( "checked", false ); +					} else { + +						$this.prop( "checked", false ); +					} + +					self._updateAll(); +				}, + +				focus: function() { +					label.addClass( $.mobile.focusClass ); +				}, + +				blur: function() { +					label.removeClass( $.mobile.focusClass ); +				} +			}); + +		this.refresh(); +	}, + +	_cacheVals: function() { +		this._getInputSet().each(function() { +			$(this).jqmData( "cacheVal", this.checked ); +		}); +	}, + +	//returns either a set of radios with the same name attribute, or a single checkbox +	_getInputSet: function(){ +		if(this.inputtype === "checkbox") { +			return this.element; +		} + +		return this.element.closest( "form,fieldset,:jqmData(role='page')" ) +			.find( "input[name='"+ this.element[0].name +"'][type='"+ this.inputtype +"']" ); +	}, + +	_updateAll: function() { +		var self = this; + +		this._getInputSet().each(function() { +			var $this = $(this); + +			if ( this.checked || self.inputtype === "checkbox" ) { +				$this.trigger( "change" ); +			} +		}) +		.checkboxradio( "refresh" ); +	}, + +	refresh: function() { +		var input = this.element[0], +			label = this.label, +			icon = label.find( ".ui-icon" ); + +		if ( input.checked ) { +			label.addClass( this.checkedClass ).removeClass( this.uncheckedClass ); +			icon.addClass( this.checkedicon ).removeClass( this.uncheckedicon ); +		} else { +			label.removeClass( this.checkedClass ).addClass( this.uncheckedClass ); +			icon.removeClass( this.checkedicon ).addClass( this.uncheckedicon ); +		} + +		if ( input.disabled ) { +			this.disable(); +		} else { +			this.enable(); +		} +	}, + +	disable: function() { +		this.element.prop( "disabled", true ).parent().addClass( "ui-disabled" ); +	}, + +	enable: function() { +		this.element.prop( "disabled", false ).parent().removeClass( "ui-disabled" ); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.checkboxradio.prototype.enhanceWithin( e.target, true ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.button", $.mobile.widget, { +	options: { +		theme: null, +		icon: null, +		iconpos: null, +		inline: false, +		corners: true, +		shadow: true, +		iconshadow: true, +		initSelector: "button, [type='button'], [type='submit'], [type='reset'], [type='image']", +		mini: false +	}, +	_create: function() { +		var $el = this.element, +			$button, +			o = this.options, +			type, +			name, +			classes = "", +			$buttonPlaceholder; + +		// if this is a link, check if it's been enhanced and, if not, use the right function +		if( $el[ 0 ].tagName === "A" ) { +	 	 	!$el.hasClass( "ui-btn" ) && $el.buttonMarkup(); +	 	 	return; + 	 	} + +		// get the inherited theme +		// TODO centralize for all widgets +		if ( !this.options.theme ) { +			this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); +		} + +		// TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 +		/* if( $el[0].className.length ) { +			classes = $el[0].className; +		} */ +		if( !!~$el[0].className.indexOf( "ui-btn-left" ) ) { +			classes = "ui-btn-left"; +		} + +		if(  !!~$el[0].className.indexOf( "ui-btn-right" ) ) { +			classes = "ui-btn-right"; +		} + +		// Add ARIA role +		this.button = $( "<div></div>" ) +			.text( $el.text() || $el.val() ) +			.insertBefore( $el ) +			.buttonMarkup({ +				theme: o.theme, +				icon: o.icon, +				iconpos: o.iconpos, +				inline: o.inline, +				corners: o.corners, +				shadow: o.shadow, +				iconshadow: o.iconshadow, +				mini: o.mini +			}) +			.addClass( classes ) +			.append( $el.addClass( "ui-btn-hidden" ) ); + +        $button = this.button; +		type = $el.attr( "type" ); +		name = $el.attr( "name" ); + +		// Add hidden input during submit if input type="submit" has a name. +		if ( type !== "button" && type !== "reset" && name ) { +				$el.bind( "vclick", function() { +					// Add hidden input if it doesn’t already exist. +					if( $buttonPlaceholder === undefined ) { +						$buttonPlaceholder = $( "<input>", { +							type: "hidden", +							name: $el.attr( "name" ), +							value: $el.attr( "value" ) +						}).insertBefore( $el ); + +						// Bind to doc to remove after submit handling +						$( document ).one("submit", function(){ +							$buttonPlaceholder.remove(); + +							// reset the local var so that the hidden input +							// will be re-added on subsequent clicks +							$buttonPlaceholder = undefined; +						}); +					} +				}); +		} + +        $el.bind({ +            focus: function() { +                $button.addClass( $.mobile.focusClass ); +            }, + +            blur: function() { +                $button.removeClass( $.mobile.focusClass ); +            } +        }); + +		this.refresh(); +	}, + +	enable: function() { +		this.element.attr( "disabled", false ); +		this.button.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); +		return this._setOption( "disabled", false ); +	}, + +	disable: function() { +		this.element.attr( "disabled", true ); +		this.button.addClass( "ui-disabled" ).attr( "aria-disabled", true ); +		return this._setOption( "disabled", true ); +	}, + +	refresh: function() { +		var $el = this.element; + +		if ( $el.prop("disabled") ) { +			this.disable(); +		} else { +			this.enable(); +		} + +		// Grab the button's text element from its implementation-independent data item +		$( this.button.data( 'buttonElements' ).text ).text( $el.text() || $el.val() ); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.button.prototype.enhanceWithin( e.target, true ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.fn.controlgroup = function( options ) { +	function flipClasses( els, flCorners  ) { +		els.removeClass( "ui-btn-corner-all ui-shadow" ) +			.eq( 0 ).addClass( flCorners[ 0 ] ) +			.end() +			.last().addClass( flCorners[ 1 ] ).addClass( "ui-controlgroup-last" ); +	} + +	return this.each(function() { +		var $el = $( this ), +			o = $.extend({ +						direction: $el.jqmData( "type" ) || "vertical", +						shadow: false, +						excludeInvisible: true, +						mini: $el.jqmData( "mini" ) +					}, options ), +			groupheading = $el.children( "legend" ), +			flCorners = o.direction == "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ], +			type = $el.find( "input" ).first().attr( "type" ); + +		// Replace legend with more stylable replacement div +		if ( groupheading.length ) { +			$el.wrapInner( "<div class='ui-controlgroup-controls'></div>" ); +			$( "<div role='heading' class='ui-controlgroup-label'>" + groupheading.html() + "</div>" ).insertBefore( $el.children(0) ); +			groupheading.remove(); +		} + +		$el.addClass( "ui-corner-all ui-controlgroup ui-controlgroup-" + o.direction ); + +		flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not('.ui-slider-handle'), flCorners ); +		flipClasses( $el.find( ".ui-btn-inner" ), flCorners ); + +		if ( o.shadow ) { +			$el.addClass( "ui-shadow" ); +		} + +		if ( o.mini ) { +			$el.addClass( "ui-mini" ); +		} + +	}); +}; + +// The pagecreate handler for controlgroup is in jquery.mobile.init because of the soft-dependency on the wrapped widgets + +})(jQuery); + +(function( $, undefined ) { + +$( document ).bind( "pagecreate create", function( e ){ + +	//links within content areas, tests included with page +	$( e.target ) +		.find( "a" ) +		.jqmEnhanceable() +		.not( ".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')" ) +		.addClass( "ui-link" ); + +}); + +})( jQuery ); + + +( function( $ ) { +	var	meta = $( "meta[name=viewport]" ), +        initialContent = meta.attr( "content" ), +        disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no", +        enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes", +		disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent ); +	 +	$.mobile.zoom = $.extend( {}, { +		enabled: !disabledInitially, +		locked: false, +		disable: function( lock ) { +			if( !disabledInitially && !$.mobile.zoom.locked ){ +	        	meta.attr( "content", disabledZoom ); +	        	$.mobile.zoom.enabled = false; +				$.mobile.zoom.locked = lock || false; +			} +		}, +		enable: function( unlock ) { +			if( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ){ +		        meta.attr( "content", enabledZoom ); +		        $.mobile.zoom.enabled = true; +				$.mobile.zoom.locked = false; +			} +		}, +		restore: function() { +			if( !disabledInitially ){ +	        	meta.attr( "content", initialContent ); +	        	$.mobile.zoom.enabled = true; +			} +		} +	}); + +}( jQuery )); + +(function( $, undefined ) { + +$.widget( "mobile.textinput", $.mobile.widget, { +	options: { +		theme: null, +		// This option defaults to true on iOS devices. +		preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, +		initSelector: "input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])", +		clearSearchButtonText: "clear text" +	}, + +	_create: function() { + +		var input = this.element, +			o = this.options, +			theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ), +			themeclass  = " ui-body-" + theme, +			mini = input.jqmData("mini") == true, +			miniclass = mini ? " ui-mini" : "", +			focusedEl, clearbtn; + +		$( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" ); + +		focusedEl = input.addClass("ui-input-text ui-body-"+ theme ); + +		// XXX: Temporary workaround for issue 785 (Apple bug 8910589). +		//      Turn off autocorrect and autocomplete on non-iOS 5 devices +		//      since the popup they use can't be dismissed by the user. Note +		//      that we test for the presence of the feature by looking for +		//      the autocorrect property on the input element. We currently +		//      have no test for iOS 5 or newer so we're temporarily using +		//      the touchOverflow support flag for jQM 1.0. Yes, I feel dirty. - jblas +		if ( typeof input[0].autocorrect !== "undefined" && !$.support.touchOverflow ) { +			// Set the attribute instead of the property just in case there +			// is code that attempts to make modifications via HTML. +			input[0].setAttribute( "autocorrect", "off" ); +			input[0].setAttribute( "autocomplete", "off" ); +		} + + +		//"search" input widget +		if ( input.is( "[type='search'],:jqmData(type='search')" ) ) { + +			focusedEl = input.wrap( "<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield" + themeclass + miniclass + "'></div>" ).parent(); +			clearbtn = $( "<a href='#' class='ui-input-clear' title='" + o.clearSearchButtonText + "'>" + o.clearSearchButtonText + "</a>" ) +				.bind('click', function( event ) { +					input +						.val( "" ) +						.focus() +						.trigger( "change" ); +					clearbtn.addClass( "ui-input-clear-hidden" ); +					event.preventDefault(); +				}) +				.appendTo( focusedEl ) +				.buttonMarkup({ +					icon: "delete", +					iconpos: "notext", +					corners: true, +					shadow: true, +					mini: mini +				}); + +			function toggleClear() { +				setTimeout(function() { +					clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); +				}, 0); +			} + +			toggleClear(); + +			input.bind('paste cut keyup focus change blur', toggleClear); + +		} else { +			input.addClass( "ui-corner-all ui-shadow-inset" + themeclass + miniclass ); +		} + +		input.focus(function() { +				focusedEl.addClass( $.mobile.focusClass ); +			}) +			.blur(function(){ +				focusedEl.removeClass( $.mobile.focusClass ); +			}) +			// In many situations, iOS will zoom into the select upon tap, this prevents that from happening +			.bind( "focus", function() { +				if( o.preventFocusZoom ){ +					$.mobile.zoom.disable( true ); +				} +			}) +			.bind( "blur", function() { +				if( o.preventFocusZoom ){ +					$.mobile.zoom.enable( true ); +				} +			}); + +		// Autogrow +		if ( input.is( "textarea" ) ) { +			var extraLineHeight = 15, +				keyupTimeoutBuffer = 100, +				keyup = function() { +					var scrollHeight = input[ 0 ].scrollHeight, +						clientHeight = input[ 0 ].clientHeight; + +					if ( clientHeight < scrollHeight ) { +						input.height(scrollHeight + extraLineHeight); +					} +				}, +				keyupTimeout; + +			input.keyup(function() { +				clearTimeout( keyupTimeout ); +				keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer ); +			}); + +			// binding to pagechange here ensures that for pages loaded via +			// ajax the height is recalculated without user input +			$( document ).one( "pagechange", keyup ); + +			// Issue 509: the browser is not providing scrollHeight properly until the styles load +			if ( $.trim( input.val() ) ) { +				// bind to the window load to make sure the height is calculated based on BOTH +				// the DOM and CSS +				$( window ).load( keyup ); +			} +		} +	}, + +	disable: function(){ +		( this.element.attr( "disabled", true ).is( "[type='search'],:jqmData(type='search')" ) ? +			this.element.parent() : this.element ).addClass( "ui-disabled" ); +	}, + +	enable: function(){ +		( this.element.attr( "disabled", false).is( "[type='search'],:jqmData(type='search')" ) ? +			this.element.parent() : this.element ).removeClass( "ui-disabled" ); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.textinput.prototype.enhanceWithin( e.target, true ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.mobile.listview.prototype.options.filter = false; +$.mobile.listview.prototype.options.filterPlaceholder = "Filter items..."; +$.mobile.listview.prototype.options.filterTheme = "c"; +$.mobile.listview.prototype.options.filterCallback = function( text, searchValue ){ +	return text.toLowerCase().indexOf( searchValue ) === -1; +}; + +$( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function() { + +	var list = $( this ), +		listview = list.data( "listview" ); + +	if ( !listview.options.filter ) { +		return; +	} + +	var wrapper = $( "<form>", { +			"class": "ui-listview-filter ui-bar-" + listview.options.filterTheme, +			"role": "search" +		}), +		search = $( "<input>", { +			placeholder: listview.options.filterPlaceholder +		}) +		.attr( "data-" + $.mobile.ns + "type", "search" ) +		.jqmData( "lastval", "" ) +		.bind( "keyup change", function() { + +			var $this = $(this), +				val = this.value.toLowerCase(), +				listItems = null, +				lastval = $this.jqmData( "lastval" ) + "", +				childItems = false, +				itemtext = "", +				item; + +			// Change val as lastval for next execution +			$this.jqmData( "lastval" , val ); +			if ( val.length < lastval.length || val.indexOf(lastval) !== 0 ) { + +				// Removed chars or pasted something totally different, check all items +				listItems = list.children(); +			} else { + +				// Only chars added, not removed, only use visible subset +				listItems = list.children( ":not(.ui-screen-hidden)" ); +			} + +			if ( val ) { + +				// This handles hiding regular rows without the text we search for +				// and any list dividers without regular rows shown under it + +				for ( var i = listItems.length - 1; i >= 0; i-- ) { +					item = $( listItems[ i ] ); +					itemtext = item.jqmData( "filtertext" ) || item.text(); + +					if ( item.is( "li:jqmData(role=list-divider)" ) ) { + +						item.toggleClass( "ui-filter-hidequeue" , !childItems ); + +						// New bucket! +						childItems = false; + +					} else if ( listview.options.filterCallback( itemtext, val ) ) { + +						//mark to be hidden +						item.toggleClass( "ui-filter-hidequeue" , true ); +					} else { + +						// There's a shown item in the bucket +						childItems = true; +					} +				} + +				// Show items, not marked to be hidden +				listItems +					.filter( ":not(.ui-filter-hidequeue)" ) +					.toggleClass( "ui-screen-hidden", false ); + +				// Hide items, marked to be hidden +				listItems +					.filter( ".ui-filter-hidequeue" ) +					.toggleClass( "ui-screen-hidden", true ) +					.toggleClass( "ui-filter-hidequeue", false ); + +			} else { + +				//filtervalue is empty => show all +				listItems.toggleClass( "ui-screen-hidden", false ); +			} +			listview._refreshCorners(); +		}) +		.appendTo( wrapper ) +		.textinput(); + +	if ( listview.options.inset ) { +		wrapper.addClass( "ui-listview-filter-inset" ); +	} + +	wrapper.bind( "submit", function() { +		return false; +	}) +	.insertBefore( list ); +}); + +})( jQuery ); + +( function( $, undefined ) { + +$.widget( "mobile.slider", $.mobile.widget, { +	options: { +		theme: null, +		trackTheme: null, +		disabled: false, +		initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')", +		mini: false +	}, + +	_create: function() { + +		// TODO: Each of these should have comments explain what they're for +		var self = this, + +			control = this.element, + +			parentTheme = $.mobile.getInheritedTheme( control, "c" ), + +			theme = this.options.theme || parentTheme, + +			trackTheme = this.options.trackTheme || parentTheme, + +			cType = control[ 0 ].nodeName.toLowerCase(), + +			selectClass = ( cType == "select" ) ? "ui-slider-switch" : "", + +			controlID = control.attr( "id" ), + +			labelID = controlID + "-label", + +			label = $( "[for='"+ controlID +"']" ).attr( "id", labelID ), + +			val = function() { +				return  cType == "input"  ? parseFloat( control.val() ) : control[0].selectedIndex; +			}, + +			min =  cType == "input" ? parseFloat( control.attr( "min" ) ) : 0, + +			max =  cType == "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, + +			step = window.parseFloat( control.attr( "step" ) || 1 ), + +			inlineClass = ( this.options.inline || control.jqmData("inline") == true ) ? " ui-slider-inline" : "", + +			miniClass = ( this.options.mini || control.jqmData("mini") ) ? " ui-slider-mini" : "", + + +			domHandle = document.createElement('a'), +			handle = $( domHandle ), +			domSlider = document.createElement('div'), +			slider = $( domSlider ), + +			valuebg = control.jqmData("highlight") && cType != "select" ? (function() { +				var bg = document.createElement('div'); +				bg.className = 'ui-slider-bg ui-btn-active ui-btn-corner-all'; +				return $( bg ).prependTo( slider ); +			})() : false, + +			options; + +        domHandle.setAttribute( 'href', "#" ); +		domSlider.setAttribute('role','application'); +		domSlider.className = ['ui-slider ',selectClass," ui-btn-down-",trackTheme,' ui-btn-corner-all', inlineClass, miniClass].join(""); +		domHandle.className = 'ui-slider-handle'; +		domSlider.appendChild(domHandle); + +		handle.buttonMarkup({ corners: true, theme: theme, shadow: true }) +				.attr({ +					"role": "slider", +					"aria-valuemin": min, +					"aria-valuemax": max, +					"aria-valuenow": val(), +					"aria-valuetext": val(), +					"title": val(), +					"aria-labelledby": labelID +				}); + +		$.extend( this, { +			slider: slider, +			handle: handle, +			valuebg: valuebg, +			dragging: false, +			beforeStart: null, +			userModified: false, +			mouseMoved: false +		}); + +		if ( cType == "select" ) { +			var wrapper = document.createElement('div'); +			wrapper.className = 'ui-slider-inneroffset'; + +			for(var j = 0,length = domSlider.childNodes.length;j < length;j++){ +				wrapper.appendChild(domSlider.childNodes[j]); +			} + +			domSlider.appendChild(wrapper); + +			// slider.wrapInner( "<div class='ui-slider-inneroffset'></div>" ); + +			// make the handle move with a smooth transition +			handle.addClass( "ui-slider-handle-snapping" ); + +			options = control.find( "option" ); + +			for(var i = 0, optionsCount = options.length; i < optionsCount; i++){ +				var side = !i ? "b":"a", +					sliderTheme = !i ? " ui-btn-down-" + trackTheme :( " " + $.mobile.activeBtnClass ), +					sliderLabel = document.createElement('div'), +					sliderImg = document.createElement('span'); + +				sliderImg.className = ['ui-slider-label ui-slider-label-',side,sliderTheme," ui-btn-corner-all"].join(""); +				sliderImg.setAttribute('role','img'); +				sliderImg.appendChild(document.createTextNode(options[i].innerHTML)); +				$(sliderImg).prependTo( slider ); +			} + +			self._labels = $( ".ui-slider-label", slider ); + +		} + +		label.addClass( "ui-slider" ); + +		// monitor the input for updated values +		control.addClass( cType === "input" ? "ui-slider-input" : "ui-slider-switch" ) +			.change( function() { +				// if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again +				if (!self.mouseMoved) { +					self.refresh( val(), true ); +				} +			}) +			.keyup( function() { // necessary? +				self.refresh( val(), true, true ); +			}) +			.blur( function() { +				self.refresh( val(), true ); +			}); + +		// prevent screen drag when slider activated +		$( document ).bind( "vmousemove", function( event ) { +			if ( self.dragging ) { +				// self.mouseMoved must be updated before refresh() because it will be used in the control "change" event +				self.mouseMoved = true; + +				if ( cType === "select" ) { +					// make the handle move in sync with the mouse +					handle.removeClass( "ui-slider-handle-snapping" ); +				} + +				self.refresh( event ); + +				// only after refresh() you can calculate self.userModified +				self.userModified = self.beforeStart !== control[0].selectedIndex; +				return false; +			} +		}); + +		slider.bind( "vmousedown", function( event ) { +			self.dragging = true; +			self.userModified = false; +			self.mouseMoved = false; + +			if ( cType === "select" ) { +				self.beforeStart = control[0].selectedIndex; +			} + +			self.refresh( event ); +			return false; +		}) +		.bind( "vclick", false ); + +		slider.add( document ) +			.bind( "vmouseup", function() { +				if ( self.dragging ) { + +					self.dragging = false; + +					if ( cType === "select") { + +						// make the handle move with a smooth transition +						handle.addClass( "ui-slider-handle-snapping" ); + +						if ( self.mouseMoved ) { + +							// this is a drag, change the value only if user dragged enough +							if ( self.userModified ) { +								self.refresh( self.beforeStart == 0 ? 1 : 0 ); +							} +							else { +								self.refresh( self.beforeStart ); +							} + +						} +						else { +							// this is just a click, change the value +							self.refresh( self.beforeStart == 0 ? 1 : 0 ); +						} + +					} + +					self.mouseMoved = false; + +					return false; +				} +			}); + +		slider.insertAfter( control ); + +		// Only add focus class to toggle switch, sliders get it automatically from ui-btn +		if( cType == 'select' ) { +			this.handle.bind({ +				focus: function() { +					slider.addClass( $.mobile.focusClass ); +				}, + +				blur: function() { +					slider.removeClass( $.mobile.focusClass ); +				} +			}); +		} + +		this.handle.bind({ +			// NOTE force focus on handle +			vmousedown: function() { +				$( this ).focus(); +			}, + +			vclick: false, + +			keydown: function( event ) { +				var index = val(); + +				if ( self.options.disabled ) { +					return; +				} + +				// In all cases prevent the default and mark the handle as active +				switch ( event.keyCode ) { +					case $.mobile.keyCode.HOME: +					case $.mobile.keyCode.END: +					case $.mobile.keyCode.PAGE_UP: +					case $.mobile.keyCode.PAGE_DOWN: +					case $.mobile.keyCode.UP: +					case $.mobile.keyCode.RIGHT: +					case $.mobile.keyCode.DOWN: +					case $.mobile.keyCode.LEFT: +						event.preventDefault(); + +						if ( !self._keySliding ) { +							self._keySliding = true; +							$( this ).addClass( "ui-state-active" ); +						} +						break; +				} + +				// move the slider according to the keypress +				switch ( event.keyCode ) { +					case $.mobile.keyCode.HOME: +						self.refresh( min ); +						break; +					case $.mobile.keyCode.END: +						self.refresh( max ); +						break; +					case $.mobile.keyCode.PAGE_UP: +					case $.mobile.keyCode.UP: +					case $.mobile.keyCode.RIGHT: +						self.refresh( index + step ); +						break; +					case $.mobile.keyCode.PAGE_DOWN: +					case $.mobile.keyCode.DOWN: +					case $.mobile.keyCode.LEFT: +						self.refresh( index - step ); +						break; +				} +			}, // remove active mark + +			keyup: function( event ) { +				if ( self._keySliding ) { +					self._keySliding = false; +					$( this ).removeClass( "ui-state-active" ); +				} +			} +			}); + +		this.refresh(undefined, undefined, true); +	}, + +	refresh: function( val, isfromControl, preventInputUpdate ) { + +		if ( this.options.disabled || this.element.attr('disabled')) { +			this.disable(); +		} + +		var control = this.element, percent, +			cType = control[0].nodeName.toLowerCase(), +			min = cType === "input" ? parseFloat( control.attr( "min" ) ) : 0, +			max = cType === "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length - 1, +			step = (cType === "input" && parseFloat( control.attr( "step" ) ) > 0) ? parseFloat(control.attr("step")) : 1; + +		if ( typeof val === "object" ) { +			var data = val, +				// a slight tolerance helped get to the ends of the slider +				tol = 8; +			if ( !this.dragging || +					data.pageX < this.slider.offset().left - tol || +					data.pageX > this.slider.offset().left + this.slider.width() + tol ) { +				return; +			} +			percent = Math.round( ( ( data.pageX - this.slider.offset().left ) / this.slider.width() ) * 100 ); +		} else { +			if ( val == null ) { +				val = cType === "input" ? parseFloat( control.val() || 0 ) : control[0].selectedIndex; +			} +			percent = ( parseFloat( val ) - min ) / ( max - min ) * 100; +		} + +		if ( isNaN( percent ) ) { +			return; +		} + +		if ( percent < 0 ) { +			percent = 0; +		} + +		if ( percent > 100 ) { +			percent = 100; +		} + +		var newval = ( percent / 100 ) * ( max - min ) + min; + +		//from jQuery UI slider, the following source will round to the nearest step +		var valModStep = ( newval - min ) % step; +		var alignValue = newval - valModStep; + +		if ( Math.abs( valModStep ) * 2 >= step ) { +			alignValue += ( valModStep > 0 ) ? step : ( -step ); +		} +		// Since JavaScript has problems with large floats, round +		// the final value to 5 digits after the decimal point (see jQueryUI: #4124) +		newval = parseFloat( alignValue.toFixed(5) ); + +		if ( newval < min ) { +			newval = min; +		} + +		if ( newval > max ) { +			newval = max; +		} + +		this.handle.css( "left", percent + "%" ); +		this.handle.attr( { +				"aria-valuenow": cType === "input" ? newval : control.find( "option" ).eq( newval ).attr( "value" ), +				"aria-valuetext": cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText(), +				title: cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText() +			}); +		this.valuebg && this.valuebg.css( "width", percent + "%" ); + +		// drag the label widths +		if ( this._labels ) { +			var handlePercent = this.handle.width() / this.slider.width() * 100, +				aPercent = percent && handlePercent + ( 100 - handlePercent ) * percent / 100, +				bPercent = percent === 100 ? 0 : Math.min( handlePercent + 100 - aPercent, 100 ); + +			this._labels.each(function(){ +				var ab = $(this).is( ".ui-slider-label-a" ); +				$( this ).width( ( ab ? aPercent : bPercent  ) + "%" ); +			}); +		} + +		if ( !preventInputUpdate ) { +			var valueChanged = false; + +			// update control"s value +			if ( cType === "input" ) { +				valueChanged = control.val() !== newval; +				control.val( newval ); +			} else { +				valueChanged = control[ 0 ].selectedIndex !== newval; +				control[ 0 ].selectedIndex = newval; +			} +			if ( !isfromControl && valueChanged ) { +				control.trigger( "change" ); +			} +		} +	}, + +	enable: function() { +		this.element.attr( "disabled", false ); +		this.slider.removeClass( "ui-disabled" ).attr( "aria-disabled", false ); +		return this._setOption( "disabled", false ); +	}, + +	disable: function() { +		this.element.attr( "disabled", true ); +		this.slider.addClass( "ui-disabled" ).attr( "aria-disabled", true ); +		return this._setOption( "disabled", true ); +	} + +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.slider.prototype.enhanceWithin( e.target, true ); +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.selectmenu", $.mobile.widget, { +	options: { +		theme: null, +		disabled: false, +		icon: "arrow-d", +		iconpos: "right", +		inline: false, +		corners: true, +		shadow: true, +		iconshadow: true, +		overlayTheme: "a", +		hidePlaceholderMenuItems: true, +		closeText: "Close", +		nativeMenu: true, +		// This option defaults to true on iOS devices. +		preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, +		initSelector: "select:not(:jqmData(role='slider'))", +		mini: false +	}, + +	_button: function(){ +		return $( "<div/>" ); +	}, + +	_setDisabled: function( value ) { +		this.element.attr( "disabled", value ); +		this.button.attr( "aria-disabled", value ); +		return this._setOption( "disabled", value ); +	}, + +	_focusButton : function() { +		var self = this; + +		setTimeout( function() { +			self.button.focus(); +		}, 40); +	}, + +  _selectOptions: function() { +    return this.select.find( "option" ); +  }, + +	// setup items that are generally necessary for select menu extension +	_preExtension: function(){ +		var classes = ""; +		// TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 +		/* if( $el[0].className.length ) { +			classes = $el[0].className; +		} */ +		if( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) { +			classes =  " ui-btn-left"; +		} +		 +		if(  !!~this.element[0].className.indexOf( "ui-btn-right" ) ) { +			classes = " ui-btn-right"; +		} +		 +		this.select = this.element.wrap( "<div class='ui-select" + classes + "'>" ); +		this.selectID  = this.select.attr( "id" ); +		this.label = $( "label[for='"+ this.selectID +"']" ).addClass( "ui-select" ); +		this.isMultiple = this.select[ 0 ].multiple; +		if ( !this.options.theme ) { +			this.options.theme = $.mobile.getInheritedTheme( this.select, "c" ); +		} +	}, + +	_create: function() { +		this._preExtension(); + + 		// Allows for extension of the native select for custom selects and other plugins +		// see select.custom for example extension +		// TODO explore plugin registration +		this._trigger( "beforeCreate" ); + +		this.button = this._button(); + +		var self = this, + +			options = this.options, + +			// IE throws an exception at options.item() function when +			// there is no selected item +			// select first in this case +			selectedIndex = this.select[ 0 ].selectedIndex == -1 ? 0 : this.select[ 0 ].selectedIndex, + +			// TODO values buttonId and menuId are undefined here +			button = this.button +				.text( $( this.select[ 0 ].options.item( selectedIndex ) ).text() ) +				.insertBefore( this.select ) +				.buttonMarkup( { +					theme: options.theme, +					icon: options.icon, +					iconpos: options.iconpos, +					inline: options.inline, +					corners: options.corners, +					shadow: options.shadow, +					iconshadow: options.iconshadow, +					mini: options.mini +				}); + +		// Opera does not properly support opacity on select elements +		// In Mini, it hides the element, but not its text +		// On the desktop,it seems to do the opposite +		// for these reasons, using the nativeMenu option results in a full native select in Opera +		if ( options.nativeMenu && window.opera && window.opera.version ) { +			this.select.addClass( "ui-select-nativeonly" ); +		} + +		// Add counter for multi selects +		if ( this.isMultiple ) { +			this.buttonCount = $( "<span>" ) +				.addClass( "ui-li-count ui-btn-up-c ui-btn-corner-all" ) +				.hide() +				.appendTo( button.addClass('ui-li-has-count') ); +		} + +		// Disable if specified +		if ( options.disabled || this.element.attr('disabled')) { +			this.disable(); +		} + +		// Events on native select +		this.select.change( function() { +			self.refresh(); +		}); + +		this.build(); +	}, + +	build: function() { +		var self = this; + +		this.select +			.appendTo( self.button ) +			.bind( "vmousedown", function() { +				// Add active class to button +				self.button.addClass( $.mobile.activeBtnClass ); +			}) +            .bind( "focus", function() { +                self.button.addClass( $.mobile.focusClass ); +            }) +            .bind( "blur", function() { +                self.button.removeClass( $.mobile.focusClass ); +            }) +			.bind( "focus vmouseover", function() { +				self.button.trigger( "vmouseover" ); +			}) +			.bind( "vmousemove", function() { +				// Remove active class on scroll/touchmove +				self.button.removeClass( $.mobile.activeBtnClass ); +			}) +			.bind( "change blur vmouseout", function() { +				self.button.trigger( "vmouseout" ) +					.removeClass( $.mobile.activeBtnClass ); +			}) +			.bind( "change blur", function() { +				self.button.removeClass( "ui-btn-down-" + self.options.theme ); +			}); + +		// In many situations, iOS will zoom into the select upon tap, this prevents that from happening +		self.button.bind( "vmousedown", function() { +			if( self.options.preventFocusZoom ){ +				$.mobile.zoom.disable( true ); +			} +		}) +		.bind( "mouseup", function() { +			if( self.options.preventFocusZoom ){ +				$.mobile.zoom.enable( true ); +			} +		}); +	}, + +	selected: function() { +		return this._selectOptions().filter( ":selected" ); +	}, + +	selectedIndices: function() { +		var self = this; + +		return this.selected().map( function() { +			return self._selectOptions().index( this ); +		}).get(); +	}, + +	setButtonText: function() { +		var self = this, selected = this.selected(); + +		this.button.find( ".ui-btn-text" ).text( function() { +			if ( !self.isMultiple ) { +				return selected.text(); +			} + +			return selected.length ? selected.map( function() { +				return $( this ).text(); +			}).get().join( ", " ) : self.placeholder; +		}); +	}, + +	setButtonCount: function() { +		var selected = this.selected(); + +		// multiple count inside button +		if ( this.isMultiple ) { +			this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length ); +		} +	}, + +	refresh: function() { +		this.setButtonText(); +		this.setButtonCount(); +	}, + +	// open and close preserved in native selects +	// to simplify users code when looping over selects +	open: $.noop, +	close: $.noop, + +	disable: function() { +		this._setDisabled( true ); +		this.button.addClass( "ui-disabled" ); +	}, + +	enable: function() { +		this._setDisabled( false ); +		this.button.removeClass( "ui-disabled" ); +	} +}); + +//auto self-init widgets +$( document ).bind( "pagecreate create", function( e ){ +	$.mobile.selectmenu.prototype.enhanceWithin( e.target, true ); +}); +})( jQuery ); + +/* +* custom "selectmenu" plugin +*/ + +(function( $, undefined ) { +	var extendSelect = function( widget ){ + +		var select = widget.select, +			selectID  = widget.selectID, +			label = widget.label, +			thisPage = widget.select.closest( ".ui-page" ), +			screen = $( "<div>", {"class": "ui-selectmenu-screen ui-screen-hidden"} ).appendTo( thisPage ), +			selectOptions = widget._selectOptions(), +			isMultiple = widget.isMultiple = widget.select[ 0 ].multiple, +			buttonId = selectID + "-button", +			menuId = selectID + "-menu", +			menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' data-" +$.mobile.ns + "theme='"+ widget.options.theme +"' data-" +$.mobile.ns + "overlay-theme='"+ widget.options.overlayTheme +"'>" + +				"<div data-" + $.mobile.ns + "role='header'>" + +				"<div class='ui-title'>" + label.getEncodedText() + "</div>"+ +				"</div>"+ +				"<div data-" + $.mobile.ns + "role='content'></div>"+ +				"</div>" ), + +			listbox =  $("<div>", { "class": "ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-" + widget.options.overlayTheme + " " + $.mobile.defaultDialogTransition } ).insertAfter(screen), + +			list = $( "<ul>", { +				"class": "ui-selectmenu-list", +				"id": menuId, +				"role": "listbox", +				"aria-labelledby": buttonId +			}).attr( "data-" + $.mobile.ns + "theme", widget.options.theme ).appendTo( listbox ), + +			header = $( "<div>", { +				"class": "ui-header ui-bar-" + widget.options.theme +			}).prependTo( listbox ), + +			headerTitle = $( "<h1>", { +				"class": "ui-title" +			}).appendTo( header ), + +			menuPageContent, +			menuPageClose, +			headerClose; + +		if( widget.isMultiple ) { +			headerClose = $( "<a>", { +				"text": widget.options.closeText, +				"href": "#", +				"class": "ui-btn-left" +			}).attr( "data-" + $.mobile.ns + "iconpos", "notext" ).attr( "data-" + $.mobile.ns + "icon", "delete" ).appendTo( header ).buttonMarkup(); +		} + +		$.extend( widget, { +			select: widget.select, +			selectID: selectID, +			buttonId: buttonId, +			menuId: menuId, +			thisPage: thisPage, +			menuPage: menuPage, +			label: label, +			screen: screen, +			selectOptions: selectOptions, +			isMultiple: isMultiple, +			theme: widget.options.theme, +			listbox: listbox, +			list: list, +			header: header, +			headerTitle: headerTitle, +			headerClose: headerClose, +			menuPageContent: menuPageContent, +			menuPageClose: menuPageClose, +			placeholder: "", + +			build: function() { +				var self = this; + +				// Create list from select, update state +				self.refresh(); + +				self.select.attr( "tabindex", "-1" ).focus(function() { +					$( this ).blur(); +					self.button.focus(); +				}); + +				// Button events +				self.button.bind( "vclick keydown" , function( event ) { +					if ( event.type == "vclick" || +							 event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER || +																	event.keyCode === $.mobile.keyCode.SPACE ) ) { + +						self.open(); +						event.preventDefault(); +					} +				}); + +				// Events for list items +				self.list.attr( "role", "listbox" ) +					.bind( "focusin", function( e ){ +						$( e.target ) +							.attr( "tabindex", "0" ) +							.trigger( "vmouseover" ); + +					}) +					.bind( "focusout", function( e ){ +						$( e.target ) +							.attr( "tabindex", "-1" ) +							.trigger( "vmouseout" ); +					}) +					.delegate( "li:not(.ui-disabled, .ui-li-divider)", "click", function( event ) { + +						// index of option tag to be selected +						var oldIndex = self.select[ 0 ].selectedIndex, +							newIndex = self.list.find( "li:not(.ui-li-divider)" ).index( this ), +							option = self._selectOptions().eq( newIndex )[ 0 ]; + +						// toggle selected status on the tag for multi selects +						option.selected = self.isMultiple ? !option.selected : true; + +						// toggle checkbox class for multiple selects +						if ( self.isMultiple ) { +							$( this ).find( ".ui-icon" ) +								.toggleClass( "ui-icon-checkbox-on", option.selected ) +								.toggleClass( "ui-icon-checkbox-off", !option.selected ); +						} + +						// trigger change if value changed +						if ( self.isMultiple || oldIndex !== newIndex ) { +							self.select.trigger( "change" ); +						} + +						//hide custom select for single selects only +						if ( !self.isMultiple ) { +							self.close(); +						} + +						event.preventDefault(); +					}) +					.keydown(function( event ) {  //keyboard events for menu items +						var target = $( event.target ), +							li = target.closest( "li" ), +							prev, next; + +						// switch logic based on which key was pressed +						switch ( event.keyCode ) { +							// up or left arrow keys +						 case 38: +							prev = li.prev().not( ".ui-selectmenu-placeholder" ); + +							if( prev.is( ".ui-li-divider" ) ) { +								prev = prev.prev(); +							} + +							// if there's a previous option, focus it +							if ( prev.length ) { +								target +									.blur() +									.attr( "tabindex", "-1" ); + +								prev.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); +							} + +							return false; +							break; + +							// down or right arrow keys +						 case 40: +							next = li.next(); + +							if( next.is( ".ui-li-divider" ) ) { +								next = next.next(); +							} + +							// if there's a next option, focus it +							if ( next.length ) { +								target +									.blur() +									.attr( "tabindex", "-1" ); + +								next.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus(); +							} + +							return false; +							break; + +							// If enter or space is pressed, trigger click +						 case 13: +						 case 32: +							target.trigger( "click" ); + +							return false; +							break; +						} +					}); + +				// button refocus ensures proper height calculation +				// by removing the inline style and ensuring page inclusion +				self.menuPage.bind( "pagehide", function() { +					self.list.appendTo( self.listbox ); +					self._focusButton(); + +					// TODO centralize page removal binding / handling in the page plugin. +					// Suggestion from @jblas to do refcounting +					// +					// TODO extremely confusing dependency on the open method where the pagehide.remove +					// bindings are stripped to prevent the parent page from disappearing. The way +					// we're keeping pages in the DOM right now sucks +					// +					// rebind the page remove that was unbound in the open function +					// to allow for the parent page removal from actions other than the use +					// of a dialog sized custom select +					// +					// doing this here provides for the back button on the custom select dialog +					$.mobile._bindPageRemove.call( self.thisPage ); +				}); + +				// Events on "screen" overlay +				self.screen.bind( "vclick", function( event ) { +					self.close(); +				}); + +				// Close button on small overlays +				if( self.isMultiple ){ +					self.headerClose.click( function() { +						if ( self.menuType == "overlay" ) { +							self.close(); +							return false; +						} +					}); +				} + +				// track this dependency so that when the parent page +				// is removed on pagehide it will also remove the menupage +				self.thisPage.addDependents( this.menuPage ); +			}, + +			_isRebuildRequired: function() { +				var list = this.list.find( "li" ), +					options = this._selectOptions(); + +				// TODO exceedingly naive method to determine difference +				// ignores value changes etc in favor of a forcedRebuild +				// from the user in the refresh method +				return options.text() !== list.text(); +			}, + +			refresh: function( forceRebuild , foo ){ +				var self = this, +				select = this.element, +				isMultiple = this.isMultiple, +				options = this._selectOptions(), +				selected = this.selected(), +				// return an array of all selected index's +				indicies = this.selectedIndices(); + +				if (  forceRebuild || this._isRebuildRequired() ) { +					self._buildList(); +				} + +				self.setButtonText(); +				self.setButtonCount(); + +				self.list.find( "li:not(.ui-li-divider)" ) +					.removeClass( $.mobile.activeBtnClass ) +					.attr( "aria-selected", false ) +					.each(function( i ) { + +						if ( $.inArray( i, indicies ) > -1 ) { +							var item = $( this ); + +							// Aria selected attr +							item.attr( "aria-selected", true ); + +							// Multiple selects: add the "on" checkbox state to the icon +							if ( self.isMultiple ) { +								item.find( ".ui-icon" ).removeClass( "ui-icon-checkbox-off" ).addClass( "ui-icon-checkbox-on" ); +							} else { +								if( item.is( ".ui-selectmenu-placeholder" ) ) { +									item.next().addClass( $.mobile.activeBtnClass ); +								} else { +									item.addClass( $.mobile.activeBtnClass ); +								} +							} +						} +					}); +			}, + +			close: function() { +				if ( this.options.disabled || !this.isOpen ) { +					return; +				} + +				var self = this; + +				if ( self.menuType == "page" ) { +					// doesn't solve the possible issue with calling change page +					// where the objects don't define data urls which prevents dialog key +					// stripping - changePage has incoming refactor +					window.history.back(); +				} else { +					self.screen.addClass( "ui-screen-hidden" ); +					self.listbox.addClass( "ui-selectmenu-hidden" ).removeAttr( "style" ).removeClass( "in" ); +					self.list.appendTo( self.listbox ); +					self._focusButton(); +				} + +				// allow the dialog to be closed again +				self.isOpen = false; +			}, + +			open: function() { +				if ( this.options.disabled ) { +					return; +				} + +				var self = this, +          $window = $( window ), +          selfListParent = self.list.parent(), +					menuHeight = selfListParent.outerHeight(), +					menuWidth = selfListParent.outerWidth(), +					activePage = $( ".ui-page-active" ), +					tScrollElem = activePage, +					scrollTop = $window.scrollTop(), +					btnOffset = self.button.offset().top, +					screenHeight = $window.height(), +					screenWidth = $window.width(); + +				//add active class to button +				self.button.addClass( $.mobile.activeBtnClass ); + +				//remove after delay +				setTimeout( function() { +					self.button.removeClass( $.mobile.activeBtnClass ); +				}, 300); + +				function focusMenuItem() { +					self.list.find( "." + $.mobile.activeBtnClass + " a" ).focus(); +				} + +				if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) { + +					self.menuPage.appendTo( $.mobile.pageContainer ).page(); +					self.menuPageContent = menuPage.find( ".ui-content" ); +					self.menuPageClose = menuPage.find( ".ui-header a" ); + +					// prevent the parent page from being removed from the DOM, +					// otherwise the results of selecting a list item in the dialog +					// fall into a black hole +					self.thisPage.unbind( "pagehide.remove" ); + +					//for WebOS/Opera Mini (set lastscroll using button offset) +					if ( scrollTop == 0 && btnOffset > screenHeight ) { +						self.thisPage.one( "pagehide", function() { +							$( this ).jqmData( "lastScroll", btnOffset ); +						}); +					} + +					self.menuPage.one( "pageshow", function() { +						focusMenuItem(); +						self.isOpen = true; +					}); + +					self.menuType = "page"; +					self.menuPageContent.append( self.list ); +					self.menuPage.find("div .ui-title").text(self.label.text()); +					$.mobile.changePage( self.menuPage, { +						transition: $.mobile.defaultDialogTransition +					}); +				} else { +					self.menuType = "overlay"; + +					self.screen.height( $(document).height() ) +						.removeClass( "ui-screen-hidden" ); + +					// Try and center the overlay over the button +					var roomtop = btnOffset - scrollTop, +						roombot = scrollTop + screenHeight - btnOffset, +						halfheight = menuHeight / 2, +						maxwidth = parseFloat( self.list.parent().css( "max-width" ) ), +						newtop, newleft; + +					if ( roomtop > menuHeight / 2 && roombot > menuHeight / 2 ) { +						newtop = btnOffset + ( self.button.outerHeight() / 2 ) - halfheight; +					} else { +						// 30px tolerance off the edges +						newtop = roomtop > roombot ? scrollTop + screenHeight - menuHeight - 30 : scrollTop + 30; +					} + +					// If the menuwidth is smaller than the screen center is +					if ( menuWidth < maxwidth ) { +						newleft = ( screenWidth - menuWidth ) / 2; +					} else { + +						//otherwise insure a >= 30px offset from the left +						newleft = self.button.offset().left + self.button.outerWidth() / 2 - menuWidth / 2; + +						// 30px tolerance off the edges +						if ( newleft < 30 ) { +							newleft = 30; +						} else if ( (newleft + menuWidth) > screenWidth ) { +							newleft = screenWidth - menuWidth - 30; +						} +					} + +					self.listbox.append( self.list ) +						.removeClass( "ui-selectmenu-hidden" ) +						.css({ +							top: newtop, +							left: newleft +						}) +						.addClass( "in" ); + +					focusMenuItem(); + +					// duplicate with value set in page show for dialog sized selects +					self.isOpen = true; +				} +			}, + +			_buildList: function() { +				var self = this, +					o = this.options, +					placeholder = this.placeholder, +					needPlaceholder = true, +					optgroups = [], +					lis = [], +					dataIcon = self.isMultiple ? "checkbox-off" : "false"; + +				self.list.empty().filter( ".ui-listview" ).listview( "destroy" ); + +				var $options = self.select.find("option"), +					numOptions = $options.length, +					select = this.select[ 0 ], +					dataPrefix = 'data-' + $.mobile.ns, +					dataIndexAttr = dataPrefix + 'option-index', +					dataIconAttr = dataPrefix + 'icon', +					dataRoleAttr = dataPrefix + 'role', +					fragment = document.createDocumentFragment(), +					optGroup; + +				for (var i = 0; i < numOptions;i++){ +					var option = $options[i], +						$option = $(option), +						parent = option.parentNode, +						text = $option.text(), +						anchor  = document.createElement('a'), +						classes = []; + +					anchor.setAttribute('href','#'); +					anchor.appendChild(document.createTextNode(text)); + +					// Are we inside an optgroup? +					if (parent !== select && parent.nodeName.toLowerCase() === "optgroup"){ +						var optLabel = parent.getAttribute('label'); +						if ( optLabel != optGroup) { +							var divider = document.createElement('li'); +							divider.setAttribute(dataRoleAttr,'list-divider'); +							divider.setAttribute('role','option'); +							divider.setAttribute('tabindex','-1'); +							divider.appendChild(document.createTextNode(optLabel)); +							fragment.appendChild(divider); +							optGroup = optLabel; +						} +					} + +					if (needPlaceholder && (!option.getAttribute( "value" ) || text.length == 0 || $option.jqmData( "placeholder" ))) { +						needPlaceholder = false; +						if ( o.hidePlaceholderMenuItems ) { +							classes.push( "ui-selectmenu-placeholder" ); +						} +						if (!placeholder) { +							placeholder = self.placeholder = text; +						} +					} + +					var item = document.createElement('li'); +					if ( option.disabled ) { +						classes.push( "ui-disabled" ); +						item.setAttribute('aria-disabled',true); +					} +					item.setAttribute(dataIndexAttr,i); +					item.setAttribute(dataIconAttr,dataIcon); +					item.className = classes.join(" "); +					item.setAttribute('role','option'); +					anchor.setAttribute('tabindex','-1'); +					item.appendChild(anchor); +					fragment.appendChild(item); +				} + +				self.list[0].appendChild(fragment); + +				// Hide header if it's not a multiselect and there's no placeholder +				if ( !this.isMultiple && !placeholder.length ) { +					this.header.hide(); +				} else { +					this.headerTitle.text( this.placeholder ); +				} + +				// Now populated, create listview +				self.list.listview(); +			}, + +			_button: function(){ +				return $( "<a>", { +					"href": "#", +					"role": "button", +					// TODO value is undefined at creation +					"id": this.buttonId, +					"aria-haspopup": "true", + +					// TODO value is undefined at creation +					"aria-owns": this.menuId +				}); +			} +		}); +	}; + +	// issue #3894 - core doesn't triggered events on disabled delegates +	$( document ).bind( "selectmenubeforecreate", function( event ){ +		var selectmenuWidget = $( event.target ).data( "selectmenu" ); + +		if( !selectmenuWidget.options.nativeMenu ){ +			extendSelect( selectmenuWidget ); +		} +	}); +})( jQuery ); + +(function( $, undefined ) { + + +	$.widget( "mobile.fixedtoolbar", $.mobile.widget, { +		options: { +			visibleOnPageShow: true, +			disablePageZoom: true, +			transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown) +			fullscreen: false, +			tapToggle: true, +			tapToggleBlacklist: "a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed", +			hideDuringFocus: "input, textarea, select", +			updatePagePadding: true, +			trackPersistentToolbars: true, + +			// Browser detection! Weeee, here we go... +			// Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately. +			// Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience. +			// Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window +			// The following function serves to rule out some popular browsers with known fixed-positioning issues +			// This is a plugin option like any other, so feel free to improve or overwrite it +			supportBlacklist: function(){ +				var w = window, +					ua = navigator.userAgent, +					platform = navigator.platform, +					// Rendering engine is Webkit, and capture major version +					wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ), +					wkversion = !!wkmatch && wkmatch[ 1 ], +					ffmatch = ua.match( /Fennec\/([0-9]+)/ ), +					ffversion = !!ffmatch && ffmatch[ 1 ], +					operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ), +					omversion = !!operammobilematch && operammobilematch[ 1 ]; + +				if( +					// iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5) +					( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) +					|| +					// Opera Mini +					( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) +					|| +					( operammobilematch && omversion < 7458 ) +					|| +					//Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2) +					( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) +					|| +					// Firefox Mobile before 6.0 - +					( ffversion && ffversion < 6 ) +					|| +					// WebOS less than 3 +					( "palmGetResource" in window && wkversion && wkversion < 534 ) +					|| +					// MeeGo +					( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) +				){ +					return true; +				} + +				return false; +			}, +			initSelector: ":jqmData(position='fixed')" +		}, + +		_create: function() { + +			var self = this, +				o = self.options, +				$el = self.element, +				tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer", +				$page = $el.closest(".ui-page"); + +			// Feature detecting support for +			if( o.supportBlacklist() ){ +				self.destroy(); +				return; +			} + +			$el.addClass( "ui-"+ tbtype +"-fixed" ); + +			// "fullscreen" overlay positioning +			if( o.fullscreen ){ +				$el.addClass( "ui-"+ tbtype +"-fullscreen" ); +				$page.addClass( "ui-page-" + tbtype + "-fullscreen" ); +			} +			// If not fullscreen, add class to page to set top or bottom padding +			else{ +				$page.addClass( "ui-page-" + tbtype + "-fixed" ); +			} + +			self._addTransitionClass(); +			self._bindPageEvents(); +			self._bindToggleHandlers(); +		}, + +		_addTransitionClass: function(){ +			var tclass = this.options.transition; + +			if( tclass && tclass !== "none" ){ +				// use appropriate slide for header or footer +				if( tclass === "slide" ){ +					tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup"; +				} + +				this.element.addClass( tclass ); +			} +		}, + +		_bindPageEvents: function(){ +			var self = this, +				o = self.options, +				$el = self.element; + +			//page event bindings +			// Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up +			// This method is meant to disable zoom while a fixed-positioned toolbar page is visible +			$el.closest( ".ui-page" ) +				.bind( "pagebeforeshow", function(){ +					if( o.disablePageZoom ){ +						$.mobile.zoom.disable( true ); +					} +					if( !o.visibleOnPageShow ){ +						self.hide( true ); +					} +				} ) +				.bind( "webkitAnimationStart animationstart updatelayout", function(){ +					if( o.updatePagePadding ){ +						self.updatePagePadding(); +					} +				}) +				.bind( "pageshow", function(){ +					self.updatePagePadding(); +					if( o.updatePagePadding ){ +						$( window ).bind( "throttledresize." + self.widgetName, function(){ +						 	self.updatePagePadding(); +						}); +					} +				}) +				.bind( "pagebeforehide", function( e, ui ){ +					if( o.disablePageZoom ){ +						$.mobile.zoom.enable( true ); +					} +					if( o.updatePagePadding ){ +						$( window ).unbind( "throttledresize." + self.widgetName ); +					} + +					if( o.trackPersistentToolbars ){ +						var thisFooter = $( ".ui-footer-fixed:jqmData(id)", this ), +							thisHeader = $( ".ui-header-fixed:jqmData(id)", this ), +							nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ), +							nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ); + +						nextFooter = nextFooter || $(); + +							if( nextFooter.length || nextHeader.length ){ + +								nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer ); + +								ui.nextPage.one( "pageshow", function(){ +									nextFooter.add( nextHeader ).appendTo( this ); +								}); +							} +					} +				}); +		}, + +		_visible: true, + +		// This will set the content element's top or bottom padding equal to the toolbar's height +		updatePagePadding: function() { +			var $el = this.element, +				header = $el.is( ".ui-header" ); + +			// This behavior only applies to "fixed", not "fullscreen" +			if( this.options.fullscreen ){ return; } + +			$el.closest( ".ui-page" ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() ); +		}, +		 +		_useTransition: function( notransition ){ +			var $win = $( window ), +				$el = this.element, +				scroll = $win.scrollTop(), +				elHeight = $el.height(), +				pHeight = $el.closest( ".ui-page" ).height(), +				viewportHeight = $.mobile.getScreenHeight(), +				tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer"; +				 +			return !notransition && +				( this.options.transition && this.options.transition !== "none" && +				( +					( tbtype === "header" && !this.options.fullscreen && scroll > elHeight ) || +					( tbtype === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight ) +				) || this.options.fullscreen +				); +		}, + +		show: function( notransition ){ +			var hideClass = "ui-fixed-hidden", +				$el = this.element; + +				if( this._useTransition( notransition ) ){ +				$el +					.removeClass( "out " + hideClass ) +					.addClass( "in" ); +			} +			else { +				$el.removeClass( hideClass ); +			} +			this._visible = true; +		}, + +		hide: function( notransition ){ +			var hideClass = "ui-fixed-hidden", +				$el = this.element, +				// if it's a slide transition, our new transitions need the reverse class as well to slide outward +				outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" ); + +			if( this._useTransition( notransition ) ){ +				$el +					.addClass( outclass ) +					.removeClass( "in" ) +					.animationComplete( function(){ +						$el.addClass( hideClass ).removeClass( outclass ); +					}); +			} +			else { +				$el.addClass( hideClass ).removeClass( outclass ); +			} +			this._visible = false; +		}, + +		toggle: function(){ +			this[ this._visible ? "hide" : "show" ](); +		}, + +		_bindToggleHandlers: function(){ +			var self = this, +				o = self.options, +				$el = self.element; + +			// tap toggle +			$el.closest( ".ui-page" ) +				.bind( "vclick", function( e ){ +					if( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ){ +						self.toggle(); +					} +				}) +				.bind( "focusin focusout", function( e ){ +					if( screen.width < 500 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ){ +						self[ ( e.type === "focusin" && self._visible ) ? "hide" : "show" ](); +					} +				}); +		}, + +		destroy: function(){ +			this.element.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" ); +			this.element.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" ); +		} + +	}); + +	//auto self-init widgets +	$( document ) +		.bind( "pagecreate create", function( e ){ +			 +			// DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element. +			// This line ensures it still works, but we recommend moving the attribute to the toolbars themselves. +			if( $( e.target ).jqmData( "fullscreen" ) ){ +				$( $.mobile.fixedtoolbar.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true ); +			} +			 +			$.mobile.fixedtoolbar.prototype.enhanceWithin( e.target ); +		}); + +})( jQuery ); + +( function( $, window ) { +	 +	// This fix addresses an iOS bug, so return early if the UA claims it's something else. +	if( !(/iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ){ +		return; +	} +	 +    var zoom = $.mobile.zoom, +		evt, x, y, z, aig; +	 +    function checkTilt( e ){ +		evt = e.originalEvent; +		aig = evt.accelerationIncludingGravity; +		 +		x = Math.abs( aig.x ); +		y = Math.abs( aig.y ); +		z = Math.abs( aig.z ); +				 +		// If portrait orientation and in one of the danger zones +        if( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){ +			if( zoom.enabled ){ +				zoom.disable(); +			}        	 +        } +		else if( !zoom.enabled ){ +			zoom.enable(); +        } +    } + +    $( window ) +		.bind( "orientationchange.iosorientationfix", zoom.enable ) +		.bind( "devicemotion.iosorientationfix", checkTilt ); + +}( jQuery, this )); + +( function( $, window, undefined ) { +	var	$html = $( "html" ), +			$head = $( "head" ), +			$window = $( window ); + + 	// trigger mobileinit event - useful hook for configuring $.mobile settings before they're used +	$( window.document ).trigger( "mobileinit" ); + +	// support conditions +	// if device support condition(s) aren't met, leave things as they are -> a basic, usable experience, +	// otherwise, proceed with the enhancements +	if ( !$.mobile.gradeA() ) { +		return; +	} + +	// override ajaxEnabled on platforms that have known conflicts with hash history updates +	// or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini) +	if ( $.mobile.ajaxBlacklist ) { +		$.mobile.ajaxEnabled = false; +	} + +	// Add mobile, initial load "rendering" classes to docEl +	$html.addClass( "ui-mobile ui-mobile-rendering" ); + +	// This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire, +	// this ensures the rendering class is removed after 5 seconds, so content is visible and accessible +	setTimeout( hideRenderingClass, 5000 ); + +	// loading div which appears during Ajax requests +	// will not appear if $.mobile.loadingMessage is false +	var loaderClass = "ui-loader", +		$loader = $( "<div class='" + loaderClass + "'><span class='ui-icon ui-icon-loading'></span><h1></h1></div>" ); + +	// For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top +	function fakeFixLoader(){ +		var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); + +		$loader +			.css({ +				top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || +				activeBtn.length && activeBtn.offset().top || 100 +			}); +	} + +	// check position of loader to see if it appears to be "fixed" to center +	// if not, use abs positioning +	function checkLoaderPosition(){ +		var offset = $loader.offset(), +			scrollTop = $window.scrollTop(), +			screenHeight = $.mobile.getScreenHeight(); + +		if( offset.top < scrollTop || (offset.top - scrollTop) > screenHeight ) { +			$loader.addClass( "ui-loader-fakefix" ); +			fakeFixLoader(); +			$window +				.unbind( "scroll", checkLoaderPosition ) +				.bind( "scroll", fakeFixLoader ); +		} +	} + +	//remove initial build class (only present on first pageshow) +	function hideRenderingClass(){ +		$html.removeClass( "ui-mobile-rendering" ); +	} + +	$.extend($.mobile, { +		// turn on/off page loading message. +		showPageLoadingMsg: function( theme, msgText, textonly ) { +			$html.addClass( "ui-loading" ); + +			if ( $.mobile.loadingMessage ) { +				// text visibility from argument takes priority +				var textVisible = textonly || $.mobile.loadingMessageTextVisible; + +				theme = theme || $.mobile.loadingMessageTheme, + +				$loader +					.attr( "class", loaderClass + " ui-corner-all ui-body-" + ( theme || "a" ) + " ui-loader-" + ( textVisible ? "verbose" : "default" ) + ( textonly ? " ui-loader-textonly" : "" ) ) +					.find( "h1" ) +						.text( msgText || $.mobile.loadingMessage ) +						.end() +					.appendTo( $.mobile.pageContainer ); + +				checkLoaderPosition(); +				$window.bind( "scroll", checkLoaderPosition ); +			} +		}, + +		hidePageLoadingMsg: function() { +			$html.removeClass( "ui-loading" ); + +			if( $.mobile.loadingMessage ){ +				$loader.removeClass( "ui-loader-fakefix" ); +			} + +			$( window ).unbind( "scroll", fakeFixLoader ); +			$( window ).unbind( "scroll", checkLoaderPosition ); +		}, + +		// find and enhance the pages in the dom and transition to the first page. +		initializePage: function() { +			// find present pages +			var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ); + +			// if no pages are found, create one with body's inner html +			if ( !$pages.length ) { +				$pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 ); +			} + +			// add dialogs, set data-url attrs +			$pages.each(function() { +				var $this = $(this); + +				// unless the data url is already set set it to the pathname +				if ( !$this.jqmData("url") ) { +					$this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) || location.pathname + location.search ); +				} +			}); + +			// define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback) +			$.mobile.firstPage = $pages.first(); + +			// define page container +			$.mobile.pageContainer = $pages.first().parent().addClass( "ui-mobile-viewport" ); + +			// alert listeners that the pagecontainer has been determined for binding +			// to events triggered on it +			$window.trigger( "pagecontainercreate" ); + +			// cue page loading message +			$.mobile.showPageLoadingMsg(); + +			//remove initial build class (only present on first pageshow) +			hideRenderingClass(); + +			// if hashchange listening is disabled or there's no hash deeplink, change to the first page in the DOM +			if ( !$.mobile.hashListeningEnabled || !$.mobile.path.stripHash( location.hash ) ) { +				$.mobile.changePage( $.mobile.firstPage, { transition: "none", reverse: true, changeHash: false, fromHashChange: true } ); +			} +			// otherwise, trigger a hashchange to load a deeplink +			else { +				$window.trigger( "hashchange", [ true ] ); +			} +		} +	}); + +	// initialize events now, after mobileinit has occurred +	$.mobile._registerInternalEvents(); + +	// check which scrollTop value should be used by scrolling to 1 immediately at domready +	// then check what the scroll top is. Android will report 0... others 1 +	// note that this initial scroll won't hide the address bar. It's just for the check. +	$(function() { +		window.scrollTo( 0, 1 ); + +		// if defaultHomeScroll hasn't been set yet, see if scrollTop is 1 +		// it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar) +		// so if it's 1, use 0 from now on +		$.mobile.defaultHomeScroll = ( !$.support.scrollTop || $(window).scrollTop() === 1 ) ? 0 : 1; + + +		// TODO: Implement a proper registration mechanism with dependency handling in order to not have exceptions like the one below +		//auto self-init widgets for those widgets that have a soft dependency on others +		if ( $.fn.controlgroup ) { +			$( document ).bind( "pagecreate create", function( e ){ +				$( ":jqmData(role='controlgroup')", e.target ) +					.jqmEnhanceable() +					.controlgroup({ excludeInvisible: false }); +			}); +		} + +		//dom-ready inits +		if( $.mobile.autoInitializePage ){ +			$.mobile.initializePage(); +		} + +		// window load event +		// hide iOS browser chrome on load +		$window.load( $.mobile.silentScroll ); +	}); +}( jQuery, this )); + + +})); diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png Binary files differnew file mode 100755 index 0000000..82524ab --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png Binary files differnew file mode 100755 index 0000000..6aed97a --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png Binary files differnew file mode 100755 index 0000000..f11ca67 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png Binary files differnew file mode 100755 index 0000000..68306d1 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png Binary files differnew file mode 100755 index 0000000..f567c28 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png Binary files differnew file mode 100755 index 0000000..29e9965 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png Binary files differnew file mode 100755 index 0000000..9a46d19 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png Binary files differnew file mode 100755 index 0000000..f811f30 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png Binary files differnew file mode 100755 index 0000000..755fe99 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png Binary files differnew file mode 100755 index 0000000..98705f9 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png Binary files differnew file mode 100755 index 0000000..2179078 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png Binary files differnew file mode 100755 index 0000000..de76ce2 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png diff --git a/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png b/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png Binary files differnew file mode 100755 index 0000000..42f8f99 --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png diff --git a/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css b/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css new file mode 100644 index 0000000..dc3c9bc --- /dev/null +++ b/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css @@ -0,0 +1,328 @@ +/* + * jQuery UI CSS Framework 1.8.14 + * + * 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/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.14 + * + * 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/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } +.ui-widget-header a { color: #e69700; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6; font-weight: bold; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700; font-weight: bold; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-left-radius: 3px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } + +/* Overlays */ +.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* + * jQuery UI Dialog 1.8.14 + * + * 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/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }  +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Tabs 1.8.14 + * + * 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/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 0.6em 0.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js b/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js new file mode 100644 index 0000000..42413ed --- /dev/null +++ b/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js @@ -0,0 +1,1937 @@ +/*! + * jQuery UI 1.8.21 + * + * Copyright 2012, 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( $, undefined ) { + +// prevent duplicate loading +// this is only a problem because we proxy existing functions +// and we don't want to double proxy them +$.ui = $.ui || {}; +if ( $.ui.version ) { +	return; +} + +$.extend( $.ui, { +	version: "1.8.21", + +	keyCode: { +		ALT: 18, +		BACKSPACE: 8, +		CAPS_LOCK: 20, +		COMMA: 188, +		COMMAND: 91, +		COMMAND_LEFT: 91, // COMMAND +		COMMAND_RIGHT: 93, +		CONTROL: 17, +		DELETE: 46, +		DOWN: 40, +		END: 35, +		ENTER: 13, +		ESCAPE: 27, +		HOME: 36, +		INSERT: 45, +		LEFT: 37, +		MENU: 93, // COMMAND_RIGHT +		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 // COMMAND +	} +}); + +// plugins +$.fn.extend({ +	propAttr: $.fn.prop || $.fn.attr, + +	_focus: $.fn.focus, +	focus: function( delay, fn ) { +		return typeof delay === "number" ? +			this.each(function() { +				var elem = this; +				setTimeout(function() { +					$( elem ).focus(); +					if ( fn ) { +						fn.call( elem ); +					} +				}, delay ); +			}) : +			this._focus.apply( this, arguments ); +	}, + +	scrollParent: function() { +		var scrollParent; +		if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { +			scrollParent = this.parents().filter(function() { +				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); +			}).eq(0); +		} else { +			scrollParent = this.parents().filter(function() { +				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); +			}).eq(0); +		} + +		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; +	}, + +	zIndex: function( zIndex ) { +		if ( zIndex !== undefined ) { +			return this.css( "zIndex", zIndex ); +		} + +		if ( this.length ) { +			var elem = $( this[ 0 ] ), position, value; +			while ( elem.length && elem[ 0 ] !== document ) { +				// Ignore z-index if position is set to a value where z-index is ignored by the browser +				// This makes behavior of this function consistent across browsers +				// WebKit always returns auto if the element is positioned +				position = elem.css( "position" ); +				if ( position === "absolute" || position === "relative" || position === "fixed" ) { +					// IE returns 0 when zIndex is not specified +					// other browsers return a string +					// we ignore the case of nested elements with an explicit value of 0 +					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div> +					value = parseInt( elem.css( "zIndex" ), 10 ); +					if ( !isNaN( value ) && value !== 0 ) { +						return value; +					} +				} +				elem = elem.parent(); +			} +		} + +		return 0; +	}, + +	disableSelection: function() { +		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + +			".ui-disableSelection", function( event ) { +				event.preventDefault(); +			}); +	}, + +	enableSelection: function() { +		return this.unbind( ".ui-disableSelection" ); +	} +}); + +$.each( [ "Width", "Height" ], function( i, name ) { +	var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], +		type = name.toLowerCase(), +		orig = { +			innerWidth: $.fn.innerWidth, +			innerHeight: $.fn.innerHeight, +			outerWidth: $.fn.outerWidth, +			outerHeight: $.fn.outerHeight +		}; + +	function reduce( elem, size, border, margin ) { +		$.each( side, function() { +			size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0; +			if ( border ) { +				size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0; +			} +			if ( margin ) { +				size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0; +			} +		}); +		return size; +	} + +	$.fn[ "inner" + name ] = function( size ) { +		if ( size === undefined ) { +			return orig[ "inner" + name ].call( this ); +		} + +		return this.each(function() { +			$( this ).css( type, reduce( this, size ) + "px" ); +		}); +	}; + +	$.fn[ "outer" + name] = function( size, margin ) { +		if ( typeof size !== "number" ) { +			return orig[ "outer" + name ].call( this, size ); +		} + +		return this.each(function() { +			$( this).css( type, reduce( this, size, true, margin ) + "px" ); +		}); +	}; +}); + +// selectors +function focusable( element, isTabIndexNotNaN ) { +	var nodeName = element.nodeName.toLowerCase(); +	if ( "area" === nodeName ) { +		var map = element.parentNode, +			mapName = map.name, +			img; +		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { +			return false; +		} +		img = $( "img[usemap=#" + mapName + "]" )[0]; +		return !!img && visible( img ); +	} +	return ( /input|select|textarea|button|object/.test( nodeName ) +		? !element.disabled +		: "a" == nodeName +			? element.href || isTabIndexNotNaN +			: isTabIndexNotNaN) +		// the element and all of its ancestors must be visible +		&& visible( element ); +} + +function visible( element ) { +	return !$( element ).parents().andSelf().filter(function() { +		return $.curCSS( this, "visibility" ) === "hidden" || +			$.expr.filters.hidden( this ); +	}).length; +} + +$.extend( $.expr[ ":" ], { +	data: function( elem, i, match ) { +		return !!$.data( elem, match[ 3 ] ); +	}, + +	focusable: function( element ) { +		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); +	}, + +	tabbable: function( element ) { +		var tabIndex = $.attr( element, "tabindex" ), +			isTabIndexNaN = isNaN( tabIndex ); +		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); +	} +}); + +// support +$(function() { +	var body = document.body, +		div = body.appendChild( div = document.createElement( "div" ) ); + +	// access offsetHeight before setting the style to prevent a layout bug +	// in IE 9 which causes the elemnt to continue to take up space even +	// after it is removed from the DOM (#8026) +	div.offsetHeight; + +	$.extend( div.style, { +		minHeight: "100px", +		height: "auto", +		padding: 0, +		borderWidth: 0 +	}); + +	$.support.minHeight = div.offsetHeight === 100; +	$.support.selectstart = "onselectstart" in div; + +	// set display to none to avoid a layout bug in IE +	// http://dev.jquery.com/ticket/4014 +	body.removeChild( div ).style.display = "none"; +}); + + + + + +// deprecated +$.extend( $.ui, { +	// $.ui.plugin is deprecated.  Use the proxy pattern instead. +	plugin: { +		add: function( module, option, set ) { +			var proto = $.ui[ module ].prototype; +			for ( var i in set ) { +				proto.plugins[ i ] = proto.plugins[ i ] || []; +				proto.plugins[ i ].push( [ option, set[ i ] ] ); +			} +		}, +		call: function( instance, name, args ) { +			var set = instance.plugins[ name ]; +			if ( !set || !instance.element[ 0 ].parentNode ) { +				return; +			} +	 +			for ( var i = 0; i < set.length; i++ ) { +				if ( instance.options[ set[ i ][ 0 ] ] ) { +					set[ i ][ 1 ].apply( instance.element, args ); +				} +			} +		} +	}, +	 +	// will be deprecated when we switch to jQuery 1.4 - use jQuery.contains() +	contains: function( a, b ) { +		return document.compareDocumentPosition ? +			a.compareDocumentPosition( b ) & 16 : +			a !== b && a.contains( b ); +	}, +	 +	// only used by resizable +	hasScroll: function( el, a ) { +	 +		//If overflow is hidden, the element might have extra content, but the user wants to hide it +		if ( $( el ).css( "overflow" ) === "hidden") { +			return false; +		} +	 +		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", +			has = false; +	 +		if ( el[ scroll ] > 0 ) { +			return true; +		} +	 +		// TODO: determine which cases actually cause this to happen +		// if the element doesn't have the scroll set, see if it's possible to +		// set the scroll +		el[ scroll ] = 1; +		has = ( el[ scroll ] > 0 ); +		el[ scroll ] = 0; +		return has; +	}, +	 +	// these are odd functions, fix the API or move into individual plugins +	isOverAxis: function( x, reference, size ) { +		//Determines when x coordinate is over "b" element axis +		return ( x > reference ) && ( x < ( reference + size ) ); +	}, +	isOver: function( y, x, top, left, height, width ) { +		//Determines when x, y coordinates is over "b" element +		return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width ); +	} +}); + +})( jQuery ); +/*! + * jQuery UI Widget 1.8.21 + * + * Copyright 2012, 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/Widget + */ +(function( $, undefined ) { + +// jQuery 1.4+ +if ( $.cleanData ) { +	var _cleanData = $.cleanData; +	$.cleanData = function( elems ) { +		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { +			try { +				$( elem ).triggerHandler( "remove" ); +			// http://bugs.jquery.com/ticket/8235 +			} catch( e ) {} +		} +		_cleanData( elems ); +	}; +} else { +	var _remove = $.fn.remove; +	$.fn.remove = function( selector, keepData ) { +		return this.each(function() { +			if ( !keepData ) { +				if ( !selector || $.filter( selector, [ this ] ).length ) { +					$( "*", this ).add( [ this ] ).each(function() { +						try { +							$( this ).triggerHandler( "remove" ); +						// http://bugs.jquery.com/ticket/8235 +						} catch( e ) {} +					}); +				} +			} +			return _remove.call( $(this), selector, keepData ); +		}); +	}; +} + +$.widget = function( name, base, prototype ) { +	var namespace = name.split( "." )[ 0 ], +		fullName; +	name = name.split( "." )[ 1 ]; +	fullName = namespace + "-" + name; + +	if ( !prototype ) { +		prototype = base; +		base = $.Widget; +	} + +	// create selector for plugin +	$.expr[ ":" ][ fullName ] = function( elem ) { +		return !!$.data( elem, name ); +	}; + +	$[ namespace ] = $[ namespace ] || {}; +	$[ namespace ][ name ] = function( options, element ) { +		// allow instantiation without initializing for simple inheritance +		if ( arguments.length ) { +			this._createWidget( options, element ); +		} +	}; + +	var basePrototype = new base(); +	// we need to make the options hash a property directly on the new instance +	// otherwise we'll modify the options hash on the prototype that we're +	// inheriting from +//	$.each( basePrototype, function( key, val ) { +//		if ( $.isPlainObject(val) ) { +//			basePrototype[ key ] = $.extend( {}, val ); +//		} +//	}); +	basePrototype.options = $.extend( true, {}, basePrototype.options ); +	$[ namespace ][ name ].prototype = $.extend( true, basePrototype, { +		namespace: namespace, +		widgetName: name, +		widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name, +		widgetBaseClass: fullName +	}, prototype ); + +	$.widget.bridge( name, $[ namespace ][ name ] ); +}; + +$.widget.bridge = function( name, object ) { +	$.fn[ name ] = function( options ) { +		var isMethodCall = typeof options === "string", +			args = Array.prototype.slice.call( arguments, 1 ), +			returnValue = this; + +		// allow multiple hashes to be passed on init +		options = !isMethodCall && args.length ? +			$.extend.apply( null, [ true, options ].concat(args) ) : +			options; + +		// prevent calls to internal methods +		if ( isMethodCall && options.charAt( 0 ) === "_" ) { +			return returnValue; +		} + +		if ( isMethodCall ) { +			this.each(function() { +				var instance = $.data( this, name ), +					methodValue = instance && $.isFunction( instance[options] ) ? +						instance[ options ].apply( instance, args ) : +						instance; +				// TODO: add this back in 1.9 and use $.error() (see #5972) +//				if ( !instance ) { +//					throw "cannot call methods on " + name + " prior to initialization; " + +//						"attempted to call method '" + options + "'"; +//				} +//				if ( !$.isFunction( instance[options] ) ) { +//					throw "no such method '" + options + "' for " + name + " widget instance"; +//				} +//				var methodValue = instance[ options ].apply( instance, args ); +				if ( methodValue !== instance && methodValue !== undefined ) { +					returnValue = methodValue; +					return false; +				} +			}); +		} else { +			this.each(function() { +				var instance = $.data( this, name ); +				if ( instance ) { +					instance.option( options || {} )._init(); +				} else { +					$.data( this, name, new object( options, this ) ); +				} +			}); +		} + +		return returnValue; +	}; +}; + +$.Widget = function( options, element ) { +	// allow instantiation without initializing for simple inheritance +	if ( arguments.length ) { +		this._createWidget( options, element ); +	} +}; + +$.Widget.prototype = { +	widgetName: "widget", +	widgetEventPrefix: "", +	options: { +		disabled: false +	}, +	_createWidget: function( options, element ) { +		// $.widget.bridge stores the plugin instance, but we do it anyway +		// so that it's stored even before the _create function runs +		$.data( element, this.widgetName, this ); +		this.element = $( element ); +		this.options = $.extend( true, {}, +			this.options, +			this._getCreateOptions(), +			options ); + +		var self = this; +		this.element.bind( "remove." + this.widgetName, function() { +			self.destroy(); +		}); + +		this._create(); +		this._trigger( "create" ); +		this._init(); +	}, +	_getCreateOptions: function() { +		return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; +	}, +	_create: function() {}, +	_init: function() {}, + +	destroy: function() { +		this.element +			.unbind( "." + this.widgetName ) +			.removeData( this.widgetName ); +		this.widget() +			.unbind( "." + this.widgetName ) +			.removeAttr( "aria-disabled" ) +			.removeClass( +				this.widgetBaseClass + "-disabled " + +				"ui-state-disabled" ); +	}, + +	widget: function() { +		return this.element; +	}, + +	option: function( key, value ) { +		var options = key; + +		if ( arguments.length === 0 ) { +			// don't return a reference to the internal hash +			return $.extend( {}, this.options ); +		} + +		if  (typeof key === "string" ) { +			if ( value === undefined ) { +				return this.options[ key ]; +			} +			options = {}; +			options[ key ] = value; +		} + +		this._setOptions( options ); + +		return this; +	}, +	_setOptions: function( options ) { +		var self = this; +		$.each( options, function( key, value ) { +			self._setOption( key, value ); +		}); + +		return this; +	}, +	_setOption: function( key, value ) { +		this.options[ key ] = value; + +		if ( key === "disabled" ) { +			this.widget() +				[ value ? "addClass" : "removeClass"]( +					this.widgetBaseClass + "-disabled" + " " + +					"ui-state-disabled" ) +				.attr( "aria-disabled", value ); +		} + +		return this; +	}, + +	enable: function() { +		return this._setOption( "disabled", false ); +	}, +	disable: function() { +		return this._setOption( "disabled", true ); +	}, + +	_trigger: function( type, event, data ) { +		var prop, orig, +			callback = this.options[ type ]; + +		data = data || {}; +		event = $.Event( event ); +		event.type = ( type === this.widgetEventPrefix ? +			type : +			this.widgetEventPrefix + type ).toLowerCase(); +		// the original event may come from any element +		// so we need to reset the target on the new event +		event.target = this.element[ 0 ]; + +		// copy original event properties over to the new event +		orig = event.originalEvent; +		if ( orig ) { +			for ( prop in orig ) { +				if ( !( prop in event ) ) { +					event[ prop ] = orig[ prop ]; +				} +			} +		} + +		this.element.trigger( event, data ); + +		return !( $.isFunction(callback) && +			callback.call( this.element[0], event, data ) === false || +			event.isDefaultPrevented() ); +	} +}; + +})( jQuery ); +/*! + * jQuery UI Mouse 1.8.21 + * + * Copyright 2012, 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/Mouse + * + * Depends: + *	jquery.ui.widget.js + */ +(function( $, undefined ) { + +var mouseHandled = false; +$( document ).mouseup( function( e ) { +	mouseHandled = false; +}); + +$.widget("ui.mouse", { +	options: { +		cancel: ':input,option', +		distance: 1, +		delay: 0 +	}, +	_mouseInit: function() { +		var self = this; + +		this.element +			.bind('mousedown.'+this.widgetName, function(event) { +				return self._mouseDown(event); +			}) +			.bind('click.'+this.widgetName, function(event) { +				if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) { +				    $.removeData(event.target, self.widgetName + '.preventClickEvent'); +					event.stopImmediatePropagation(); +					return false; +				} +			}); + +		this.started = false; +	}, + +	// TODO: make sure destroying one instance of mouse doesn't mess with +	// other instances of mouse +	_mouseDestroy: function() { +		this.element.unbind('.'+this.widgetName); +		$(document) +			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) +			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); +	}, + +	_mouseDown: function(event) { +		// don't let more than one widget handle mouseStart +		if( mouseHandled ) { return }; + +		// we may have missed mouseup (out of window) +		(this._mouseStarted && this._mouseUp(event)); + +		this._mouseDownEvent = event; + +		var self = this, +			btnIsLeft = (event.which == 1), +			// event.target.nodeName works around a bug in IE 8 with +			// disabled inputs (#7620) +			elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); +		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { +			return true; +		} + +		this.mouseDelayMet = !this.options.delay; +		if (!this.mouseDelayMet) { +			this._mouseDelayTimer = setTimeout(function() { +				self.mouseDelayMet = true; +			}, this.options.delay); +		} + +		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { +			this._mouseStarted = (this._mouseStart(event) !== false); +			if (!this._mouseStarted) { +				event.preventDefault(); +				return true; +			} +		} + +		// Click event may never have fired (Gecko & Opera) +		if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { +			$.removeData(event.target, this.widgetName + '.preventClickEvent'); +		} + +		// these delegates are required to keep context +		this._mouseMoveDelegate = function(event) { +			return self._mouseMove(event); +		}; +		this._mouseUpDelegate = function(event) { +			return self._mouseUp(event); +		}; +		$(document) +			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) +			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate); + +		event.preventDefault(); +		 +		mouseHandled = true; +		return true; +	}, + +	_mouseMove: function(event) { +		// IE mouseup check - mouseup happened when mouse was out of window +		if ($.browser.msie && !(document.documentMode >= 9) && !event.button) { +			return this._mouseUp(event); +		} + +		if (this._mouseStarted) { +			this._mouseDrag(event); +			return event.preventDefault(); +		} + +		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { +			this._mouseStarted = +				(this._mouseStart(this._mouseDownEvent, event) !== false); +			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); +		} + +		return !this._mouseStarted; +	}, + +	_mouseUp: function(event) { +		$(document) +			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) +			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); + +		if (this._mouseStarted) { +			this._mouseStarted = false; + +			if (event.target == this._mouseDownEvent.target) { +			    $.data(event.target, this.widgetName + '.preventClickEvent', true); +			} + +			this._mouseStop(event); +		} + +		return false; +	}, + +	_mouseDistanceMet: function(event) { +		return (Math.max( +				Math.abs(this._mouseDownEvent.pageX - event.pageX), +				Math.abs(this._mouseDownEvent.pageY - event.pageY) +			) >= this.options.distance +		); +	}, + +	_mouseDelayMet: function(event) { +		return this.mouseDelayMet; +	}, + +	// These are placeholder methods, to be overriden by extending plugin +	_mouseStart: function(event) {}, +	_mouseDrag: function(event) {}, +	_mouseStop: function(event) {}, +	_mouseCapture: function(event) { return true; } +}); + +})(jQuery); +/*! + * jQuery UI Position 1.8.21 + * + * Copyright 2012, 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/Position + */ +(function( $, undefined ) { + +$.ui = $.ui || {}; + +var horizontalPositions = /left|center|right/, +	verticalPositions = /top|center|bottom/, +	center = "center", +	support = {}, +	_position = $.fn.position, +	_offset = $.fn.offset; + +$.fn.position = function( options ) { +	if ( !options || !options.of ) { +		return _position.apply( this, arguments ); +	} + +	// make a copy, we don't want to modify arguments +	options = $.extend( {}, options ); + +	var target = $( options.of ), +		targetElem = target[0], +		collision = ( options.collision || "flip" ).split( " " ), +		offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ], +		targetWidth, +		targetHeight, +		basePosition; + +	if ( targetElem.nodeType === 9 ) { +		targetWidth = target.width(); +		targetHeight = target.height(); +		basePosition = { top: 0, left: 0 }; +	// TODO: use $.isWindow() in 1.9 +	} else if ( targetElem.setTimeout ) { +		targetWidth = target.width(); +		targetHeight = target.height(); +		basePosition = { top: target.scrollTop(), left: target.scrollLeft() }; +	} else if ( targetElem.preventDefault ) { +		// force left top to allow flipping +		options.at = "left top"; +		targetWidth = targetHeight = 0; +		basePosition = { top: options.of.pageY, left: options.of.pageX }; +	} else { +		targetWidth = target.outerWidth(); +		targetHeight = target.outerHeight(); +		basePosition = target.offset(); +	} + +	// force my and at to have valid horizontal and veritcal positions +	// if a value is missing or invalid, it will be converted to center  +	$.each( [ "my", "at" ], function() { +		var pos = ( options[this] || "" ).split( " " ); +		if ( pos.length === 1) { +			pos = horizontalPositions.test( pos[0] ) ? +				pos.concat( [center] ) : +				verticalPositions.test( pos[0] ) ? +					[ center ].concat( pos ) : +					[ center, center ]; +		} +		pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center; +		pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center; +		options[ this ] = pos; +	}); + +	// normalize collision option +	if ( collision.length === 1 ) { +		collision[ 1 ] = collision[ 0 ]; +	} + +	// normalize offset option +	offset[ 0 ] = parseInt( offset[0], 10 ) || 0; +	if ( offset.length === 1 ) { +		offset[ 1 ] = offset[ 0 ]; +	} +	offset[ 1 ] = parseInt( offset[1], 10 ) || 0; + +	if ( options.at[0] === "right" ) { +		basePosition.left += targetWidth; +	} else if ( options.at[0] === center ) { +		basePosition.left += targetWidth / 2; +	} + +	if ( options.at[1] === "bottom" ) { +		basePosition.top += targetHeight; +	} else if ( options.at[1] === center ) { +		basePosition.top += targetHeight / 2; +	} + +	basePosition.left += offset[ 0 ]; +	basePosition.top += offset[ 1 ]; + +	return this.each(function() { +		var elem = $( this ), +			elemWidth = elem.outerWidth(), +			elemHeight = elem.outerHeight(), +			marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0, +			marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0, +			collisionWidth = elemWidth + marginLeft + +				( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ), +			collisionHeight = elemHeight + marginTop + +				( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ), +			position = $.extend( {}, basePosition ), +			collisionPosition; + +		if ( options.my[0] === "right" ) { +			position.left -= elemWidth; +		} else if ( options.my[0] === center ) { +			position.left -= elemWidth / 2; +		} + +		if ( options.my[1] === "bottom" ) { +			position.top -= elemHeight; +		} else if ( options.my[1] === center ) { +			position.top -= elemHeight / 2; +		} + +		// prevent fractions if jQuery version doesn't support them (see #5280) +		if ( !support.fractions ) { +			position.left = Math.round( position.left ); +			position.top = Math.round( position.top ); +		} + +		collisionPosition = { +			left: position.left - marginLeft, +			top: position.top - marginTop +		}; + +		$.each( [ "left", "top" ], function( i, dir ) { +			if ( $.ui.position[ collision[i] ] ) { +				$.ui.position[ collision[i] ][ dir ]( position, { +					targetWidth: targetWidth, +					targetHeight: targetHeight, +					elemWidth: elemWidth, +					elemHeight: elemHeight, +					collisionPosition: collisionPosition, +					collisionWidth: collisionWidth, +					collisionHeight: collisionHeight, +					offset: offset, +					my: options.my, +					at: options.at +				}); +			} +		}); + +		if ( $.fn.bgiframe ) { +			elem.bgiframe(); +		} +		elem.offset( $.extend( position, { using: options.using } ) ); +	}); +}; + +$.ui.position = { +	fit: { +		left: function( position, data ) { +			var win = $( window ), +				over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(); +			position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left ); +		}, +		top: function( position, data ) { +			var win = $( window ), +				over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(); +			position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top ); +		} +	}, + +	flip: { +		left: function( position, data ) { +			if ( data.at[0] === center ) { +				return; +			} +			var win = $( window ), +				over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(), +				myOffset = data.my[ 0 ] === "left" ? +					-data.elemWidth : +					data.my[ 0 ] === "right" ? +						data.elemWidth : +						0, +				atOffset = data.at[ 0 ] === "left" ? +					data.targetWidth : +					-data.targetWidth, +				offset = -2 * data.offset[ 0 ]; +			position.left += data.collisionPosition.left < 0 ? +				myOffset + atOffset + offset : +				over > 0 ? +					myOffset + atOffset + offset : +					0; +		}, +		top: function( position, data ) { +			if ( data.at[1] === center ) { +				return; +			} +			var win = $( window ), +				over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(), +				myOffset = data.my[ 1 ] === "top" ? +					-data.elemHeight : +					data.my[ 1 ] === "bottom" ? +						data.elemHeight : +						0, +				atOffset = data.at[ 1 ] === "top" ? +					data.targetHeight : +					-data.targetHeight, +				offset = -2 * data.offset[ 1 ]; +			position.top += data.collisionPosition.top < 0 ? +				myOffset + atOffset + offset : +				over > 0 ? +					myOffset + atOffset + offset : +					0; +		} +	} +}; + +// offset setter from jQuery 1.4 +if ( !$.offset.setOffset ) { +	$.offset.setOffset = function( elem, options ) { +		// set position first, in-case top/left are set even on static elem +		if ( /static/.test( $.curCSS( elem, "position" ) ) ) { +			elem.style.position = "relative"; +		} +		var curElem   = $( elem ), +			curOffset = curElem.offset(), +			curTop    = parseInt( $.curCSS( elem, "top",  true ), 10 ) || 0, +			curLeft   = parseInt( $.curCSS( elem, "left", true ), 10)  || 0, +			props     = { +				top:  (options.top  - curOffset.top)  + curTop, +				left: (options.left - curOffset.left) + curLeft +			}; +		 +		if ( 'using' in options ) { +			options.using.call( elem, props ); +		} else { +			curElem.css( props ); +		} +	}; + +	$.fn.offset = function( options ) { +		var elem = this[ 0 ]; +		if ( !elem || !elem.ownerDocument ) { return null; } +		if ( options ) { +			if ( $.isFunction( options ) ) { +				return this.each(function( i ) { +					$( this ).offset( options.call( this, i, $( this ).offset() ) ); +				}); +			} +			return this.each(function() { +				$.offset.setOffset( this, options ); +			}); +		} +		return _offset.call( this ); +	}; +} + +// fraction support test (older versions of jQuery don't support fractions) +(function () { +	var body = document.getElementsByTagName( "body" )[ 0 ],  +		div = document.createElement( "div" ), +		testElement, testElementParent, testElementStyle, offset, offsetTotal; + +	//Create a "fake body" for testing based on method used in jQuery.support +	testElement = document.createElement( body ? "div" : "body" ); +	testElementStyle = { +		visibility: "hidden", +		width: 0, +		height: 0, +		border: 0, +		margin: 0, +		background: "none" +	}; +	if ( body ) { +		$.extend( testElementStyle, { +			position: "absolute", +			left: "-1000px", +			top: "-1000px" +		}); +	} +	for ( var i in testElementStyle ) { +		testElement.style[ i ] = testElementStyle[ i ]; +	} +	testElement.appendChild( div ); +	testElementParent = body || document.documentElement; +	testElementParent.insertBefore( testElement, testElementParent.firstChild ); + +	div.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;"; + +	offset = $( div ).offset( function( _, offset ) { +		return offset; +	}).offset(); + +	testElement.innerHTML = ""; +	testElementParent.removeChild( testElement ); + +	offsetTotal = offset.top + offset.left + ( body ? 2000 : 0 ); +	support.fractions = offsetTotal > 21 && offsetTotal < 22; +})(); + +}( jQuery )); +/*! + * jQuery UI Dialog 1.8.21 + * + * Copyright 2012, 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/Dialog + * + * Depends: + *	jquery.ui.core.js + *	jquery.ui.widget.js + *  jquery.ui.button.js + *	jquery.ui.draggable.js + *	jquery.ui.mouse.js + *	jquery.ui.position.js + *	jquery.ui.resizable.js + */ +(function( $, undefined ) { + +var uiDialogClasses = +		'ui-dialog ' + +		'ui-widget ' + +		'ui-widget-content ' + +		'ui-corner-all ', +	sizeRelatedOptions = { +		buttons: true, +		height: true, +		maxHeight: true, +		maxWidth: true, +		minHeight: true, +		minWidth: true, +		width: true +	}, +	resizableRelatedOptions = { +		maxHeight: true, +		maxWidth: true, +		minHeight: true, +		minWidth: true +	}, +	// support for jQuery 1.3.2 - handle common attrFn methods for dialog +	attrFn = $.attrFn || { +		val: true, +		css: true, +		html: true, +		text: true, +		data: true, +		width: true, +		height: true, +		offset: true, +		click: true +	}; + +$.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', +			// ensure that the titlebar is never outside the document +			using: function(pos) { +				var topOffset = $(this).css(pos).offset().top; +				if (topOffset < 0) { +					$(this).css('top', pos.top - topOffset); +				} +			} +		}, +		resizable: true, +		show: null, +		stack: true, +		title: '', +		width: 300, +		zIndex: 1000 +	}, + +	_create: function() { +		this.originalTitle = this.element.attr('title'); +		// #5742 - .attr() might return a DOMElement +		if ( typeof this.originalTitle !== "string" ) { +			this.originalTitle = ""; +		} + +		this.options.title = this.options.title || this.originalTitle; +		var self = this, +			options = self.options, + +			title = options.title || ' ', +			titleId = $.ui.dialog.getTitleId(self.element), + +			uiDialog = (self.uiDialog = $('<div></div>')) +				.appendTo(document.body) +				.hide() +				.addClass(uiDialogClasses + options.dialogClass) +				.css({ +					zIndex: options.zIndex +				}) +				// setting tabIndex makes the div focusable +				// setting outline to 0 prevents a border on focus in Mozilla +				.attr('tabIndex', -1).css('outline', 0).keydown(function(event) { +					if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && +						event.keyCode === $.ui.keyCode.ESCAPE) { +						 +						self.close(event); +						event.preventDefault(); +					} +				}) +				.attr({ +					role: 'dialog', +					'aria-labelledby': titleId +				}) +				.mousedown(function(event) { +					self.moveToTop(false, event); +				}), + +			uiDialogContent = self.element +				.show() +				.removeAttr('title') +				.addClass( +					'ui-dialog-content ' + +					'ui-widget-content') +				.appendTo(uiDialog), + +			uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>')) +				.addClass( +					'ui-dialog-titlebar ' + +					'ui-widget-header ' + +					'ui-corner-all ' + +					'ui-helper-clearfix' +				) +				.prependTo(uiDialog), + +			uiDialogTitlebarClose = $('<a href="#"></a>') +				.addClass( +					'ui-dialog-titlebar-close ' + +					'ui-corner-all' +				) +				.attr('role', 'button') +				.hover( +					function() { +						uiDialogTitlebarClose.addClass('ui-state-hover'); +					}, +					function() { +						uiDialogTitlebarClose.removeClass('ui-state-hover'); +					} +				) +				.focus(function() { +					uiDialogTitlebarClose.addClass('ui-state-focus'); +				}) +				.blur(function() { +					uiDialogTitlebarClose.removeClass('ui-state-focus'); +				}) +				.click(function(event) { +					self.close(event); +					return false; +				}) +				.appendTo(uiDialogTitlebar), + +			uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>')) +				.addClass( +					'ui-icon ' + +					'ui-icon-closethick' +				) +				.text(options.closeText) +				.appendTo(uiDialogTitlebarClose), + +			uiDialogTitle = $('<span></span>') +				.addClass('ui-dialog-title') +				.attr('id', titleId) +				.html(title) +				.prependTo(uiDialogTitlebar); + +		//handling of deprecated beforeclose (vs beforeClose) option +		//Ticket #4669 http://dev.jqueryui.com/ticket/4669 +		//TODO: remove in 1.9pre +		if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) { +			options.beforeClose = options.beforeclose; +		} + +		uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); + +		if (options.draggable && $.fn.draggable) { +			self._makeDraggable(); +		} +		if (options.resizable && $.fn.resizable) { +			self._makeResizable(); +		} + +		self._createButtons(options.buttons); +		self._isOpen = false; + +		if ($.fn.bgiframe) { +			uiDialog.bgiframe(); +		} +	}, + +	_init: function() { +		if ( this.options.autoOpen ) { +			this.open(); +		} +	}, + +	destroy: function() { +		var self = this; +		 +		if (self.overlay) { +			self.overlay.destroy(); +		} +		self.uiDialog.hide(); +		self.element +			.unbind('.dialog') +			.removeData('dialog') +			.removeClass('ui-dialog-content ui-widget-content') +			.hide().appendTo('body'); +		self.uiDialog.remove(); + +		if (self.originalTitle) { +			self.element.attr('title', self.originalTitle); +		} + +		return self; +	}, + +	widget: function() { +		return this.uiDialog; +	}, + +	close: function(event) { +		var self = this, +			maxZ, thisZ; +		 +		if (false === self._trigger('beforeClose', event)) { +			return; +		} + +		if (self.overlay) { +			self.overlay.destroy(); +		} +		self.uiDialog.unbind('keypress.ui-dialog'); + +		self._isOpen = false; + +		if (self.options.hide) { +			self.uiDialog.hide(self.options.hide, function() { +				self._trigger('close', event); +			}); +		} else { +			self.uiDialog.hide(); +			self._trigger('close', event); +		} + +		$.ui.dialog.overlay.resize(); + +		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309) +		if (self.options.modal) { +			maxZ = 0; +			$('.ui-dialog').each(function() { +				if (this !== self.uiDialog[0]) { +					thisZ = $(this).css('z-index'); +					if(!isNaN(thisZ)) { +						maxZ = Math.max(maxZ, thisZ); +					} +				} +			}); +			$.ui.dialog.maxZ = maxZ; +		} + +		return self; +	}, + +	isOpen: function() { +		return this._isOpen; +	}, + +	// the force parameter allows us to move modal dialogs to their correct +	// position on open +	moveToTop: function(force, event) { +		var self = this, +			options = self.options, +			saveScroll; + +		if ((options.modal && !force) || +			(!options.stack && !options.modal)) { +			return self._trigger('focus', event); +		} + +		if (options.zIndex > $.ui.dialog.maxZ) { +			$.ui.dialog.maxZ = options.zIndex; +		} +		if (self.overlay) { +			$.ui.dialog.maxZ += 1; +			self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ); +		} + +		//Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed. +		//  http://ui.jquery.com/bugs/ticket/3193 +		saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() }; +		$.ui.dialog.maxZ += 1; +		self.uiDialog.css('z-index', $.ui.dialog.maxZ); +		self.element.attr(saveScroll); +		self._trigger('focus', event); + +		return self; +	}, + +	open: function() { +		if (this._isOpen) { return; } + +		var self = this, +			options = self.options, +			uiDialog = self.uiDialog; + +		self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null; +		self._size(); +		self._position(options.position); +		uiDialog.show(options.show); +		self.moveToTop(true); + +		// prevent tabbing out of modal dialogs +		if ( options.modal ) { +			uiDialog.bind( "keydown.ui-dialog", function( event ) { +				if ( event.keyCode !== $.ui.keyCode.TAB ) { +					return; +				} + +				var tabbables = $(':tabbable', this), +					first = tabbables.filter(':first'), +					last  = tabbables.filter(':last'); + +				if (event.target === last[0] && !event.shiftKey) { +					first.focus(1); +					return false; +				} else if (event.target === first[0] && event.shiftKey) { +					last.focus(1); +					return false; +				} +			}); +		} + +		// set focus to the first tabbable element in the content area or the first button +		// if there are no tabbable elements, set focus on the dialog itself +		$(self.element.find(':tabbable').get().concat( +			uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat( +				uiDialog.get()))).eq(0).focus(); + +		self._isOpen = true; +		self._trigger('open'); + +		return self; +	}, + +	_createButtons: function(buttons) { +		var self = this, +			hasButtons = false, +			uiDialogButtonPane = $('<div></div>') +				.addClass( +					'ui-dialog-buttonpane ' + +					'ui-widget-content ' + +					'ui-helper-clearfix' +				), +			uiButtonSet = $( "<div></div>" ) +				.addClass( "ui-dialog-buttonset" ) +				.appendTo( uiDialogButtonPane ); + +		// if we already have a button pane, remove it +		self.uiDialog.find('.ui-dialog-buttonpane').remove(); + +		if (typeof buttons === 'object' && buttons !== null) { +			$.each(buttons, function() { +				return !(hasButtons = true); +			}); +		} +		if (hasButtons) { +			$.each(buttons, function(name, props) { +				props = $.isFunction( props ) ? +					{ click: props, text: name } : +					props; +				var button = $('<button type="button"></button>') +					.click(function() { +						props.click.apply(self.element[0], arguments); +					}) +					.appendTo(uiButtonSet); +				// can't use .attr( props, true ) with jQuery 1.3.2. +				$.each( props, function( key, value ) { +					if ( key === "click" ) { +						return; +					} +					if ( key in attrFn ) { +						button[ key ]( value ); +					} else { +						button.attr( key, value ); +					} +				}); +				if ($.fn.button) { +					button.button(); +				} +			}); +			uiDialogButtonPane.appendTo(self.uiDialog); +		} +	}, + +	_makeDraggable: function() { +		var self = this, +			options = self.options, +			doc = $(document), +			heightBeforeDrag; + +		function filteredUi(ui) { +			return { +				position: ui.position, +				offset: ui.offset +			}; +		} + +		self.uiDialog.draggable({ +			cancel: '.ui-dialog-content, .ui-dialog-titlebar-close', +			handle: '.ui-dialog-titlebar', +			containment: 'document', +			start: function(event, ui) { +				heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height(); +				$(this).height($(this).height()).addClass("ui-dialog-dragging"); +				self._trigger('dragStart', event, filteredUi(ui)); +			}, +			drag: function(event, ui) { +				self._trigger('drag', event, filteredUi(ui)); +			}, +			stop: function(event, ui) { +				options.position = [ui.position.left - doc.scrollLeft(), +					ui.position.top - doc.scrollTop()]; +				$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag); +				self._trigger('dragStop', event, filteredUi(ui)); +				$.ui.dialog.overlay.resize(); +			} +		}); +	}, + +	_makeResizable: function(handles) { +		handles = (handles === undefined ? this.options.resizable : handles); +		var self = this, +			options = self.options, +			// .ui-resizable has position: relative defined in the stylesheet +			// but dialogs have to use absolute or fixed positioning +			position = self.uiDialog.css('position'), +			resizeHandles = (typeof handles === 'string' ? +				handles	: +				'n,e,s,w,se,sw,ne,nw' +			); + +		function filteredUi(ui) { +			return { +				originalPosition: ui.originalPosition, +				originalSize: ui.originalSize, +				position: ui.position, +				size: ui.size +			}; +		} + +		self.uiDialog.resizable({ +			cancel: '.ui-dialog-content', +			containment: 'document', +			alsoResize: self.element, +			maxWidth: options.maxWidth, +			maxHeight: options.maxHeight, +			minWidth: options.minWidth, +			minHeight: self._minHeight(), +			handles: resizeHandles, +			start: function(event, ui) { +				$(this).addClass("ui-dialog-resizing"); +				self._trigger('resizeStart', event, filteredUi(ui)); +			}, +			resize: function(event, ui) { +				self._trigger('resize', event, filteredUi(ui)); +			}, +			stop: function(event, ui) { +				$(this).removeClass("ui-dialog-resizing"); +				options.height = $(this).height(); +				options.width = $(this).width(); +				self._trigger('resizeStop', event, filteredUi(ui)); +				$.ui.dialog.overlay.resize(); +			} +		}) +		.css('position', position) +		.find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se'); +	}, + +	_minHeight: function() { +		var options = this.options; + +		if (options.height === 'auto') { +			return options.minHeight; +		} else { +			return Math.min(options.minHeight, options.height); +		} +	}, + +	_position: function(position) { +		var myAt = [], +			offset = [0, 0], +			isVisible; + +		if (position) { +			// deep extending converts arrays to objects in jQuery <= 1.3.2 :-( +	//		if (typeof position == 'string' || $.isArray(position)) { +	//			myAt = $.isArray(position) ? position : position.split(' '); + +			if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) { +				myAt = position.split ? position.split(' ') : [position[0], position[1]]; +				if (myAt.length === 1) { +					myAt[1] = myAt[0]; +				} + +				$.each(['left', 'top'], function(i, offsetPosition) { +					if (+myAt[i] === myAt[i]) { +						offset[i] = myAt[i]; +						myAt[i] = offsetPosition; +					} +				}); + +				position = { +					my: myAt.join(" "), +					at: myAt.join(" "), +					offset: offset.join(" ") +				}; +			}  + +			position = $.extend({}, $.ui.dialog.prototype.options.position, position); +		} else { +			position = $.ui.dialog.prototype.options.position; +		} + +		// need to show the dialog to get the actual offset in the position plugin +		isVisible = this.uiDialog.is(':visible'); +		if (!isVisible) { +			this.uiDialog.show(); +		} +		this.uiDialog +			// workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781 +			.css({ top: 0, left: 0 }) +			.position($.extend({ of: window }, position)); +		if (!isVisible) { +			this.uiDialog.hide(); +		} +	}, + +	_setOptions: function( options ) { +		var self = this, +			resizableOptions = {}, +			resize = false; + +		$.each( options, function( key, value ) { +			self._setOption( key, value ); +			 +			if ( key in sizeRelatedOptions ) { +				resize = true; +			} +			if ( key in resizableRelatedOptions ) { +				resizableOptions[ key ] = value; +			} +		}); + +		if ( resize ) { +			this._size(); +		} +		if ( this.uiDialog.is( ":data(resizable)" ) ) { +			this.uiDialog.resizable( "option", resizableOptions ); +		} +	}, + +	_setOption: function(key, value){ +		var self = this, +			uiDialog = self.uiDialog; + +		switch (key) { +			//handling of deprecated beforeclose (vs beforeClose) option +			//Ticket #4669 http://dev.jqueryui.com/ticket/4669 +			//TODO: remove in 1.9pre +			case "beforeclose": +				key = "beforeClose"; +				break; +			case "buttons": +				self._createButtons(value); +				break; +			case "closeText": +				// ensure that we always pass a string +				self.uiDialogTitlebarCloseText.text("" + value); +				break; +			case "dialogClass": +				uiDialog +					.removeClass(self.options.dialogClass) +					.addClass(uiDialogClasses + value); +				break; +			case "disabled": +				if (value) { +					uiDialog.addClass('ui-dialog-disabled'); +				} else { +					uiDialog.removeClass('ui-dialog-disabled'); +				} +				break; +			case "draggable": +				var isDraggable = uiDialog.is( ":data(draggable)" ); +				if ( isDraggable && !value ) { +					uiDialog.draggable( "destroy" ); +				} +				 +				if ( !isDraggable && value ) { +					self._makeDraggable(); +				} +				break; +			case "position": +				self._position(value); +				break; +			case "resizable": +				// currently resizable, becoming non-resizable +				var isResizable = uiDialog.is( ":data(resizable)" ); +				if (isResizable && !value) { +					uiDialog.resizable('destroy'); +				} + +				// currently resizable, changing handles +				if (isResizable && typeof value === 'string') { +					uiDialog.resizable('option', 'handles', value); +				} + +				// currently non-resizable, becoming resizable +				if (!isResizable && value !== false) { +					self._makeResizable(value); +				} +				break; +			case "title": +				// convert whatever was passed in o a string, for html() to not throw up +				$(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || ' ')); +				break; +		} + +		$.Widget.prototype._setOption.apply(self, arguments); +	}, + +	_size: function() { +		/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content +		 * divs will both have width and height set, so we need to reset them +		 */ +		var options = this.options, +			nonContentHeight, +			minContentHeight, +			isVisible = this.uiDialog.is( ":visible" ); + +		// reset content sizing +		this.element.show().css({ +			width: 'auto', +			minHeight: 0, +			height: 0 +		}); + +		if (options.minWidth > options.width) { +			options.width = options.minWidth; +		} + +		// reset wrapper sizing +		// determine the height of all the non-content elements +		nonContentHeight = this.uiDialog.css({ +				height: 'auto', +				width: options.width +			}) +			.height(); +		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); +		 +		if ( options.height === "auto" ) { +			// only needed for IE6 support +			if ( $.support.minHeight ) { +				this.element.css({ +					minHeight: minContentHeight, +					height: "auto" +				}); +			} else { +				this.uiDialog.show(); +				var autoHeight = this.element.css( "height", "auto" ).height(); +				if ( !isVisible ) { +					this.uiDialog.hide(); +				} +				this.element.height( Math.max( autoHeight, minContentHeight ) ); +			} +		} else { +			this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); +		} + +		if (this.uiDialog.is(':data(resizable)')) { +			this.uiDialog.resizable('option', 'minHeight', this._minHeight()); +		} +	} +}); + +$.extend($.ui.dialog, { +	version: "1.8.21", + +	uuid: 0, +	maxZ: 0, + +	getTitleId: function($el) { +		var id = $el.attr('id'); +		if (!id) { +			this.uuid += 1; +			id = this.uuid; +		} +		return 'ui-dialog-title-' + id; +	}, + +	overlay: function(dialog) { +		this.$el = $.ui.dialog.overlay.create(dialog); +	} +}); + +$.extend($.ui.dialog.overlay, { +	instances: [], +	// reuse old instances due to IE memory leak with alpha transparency (see #5185) +	oldInstances: [], +	maxZ: 0, +	events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), +		function(event) { return event + '.dialog-overlay'; }).join(' '), +	create: function(dialog) { +		if (this.instances.length === 0) { +			// prevent use of anchors and inputs +			// we use a setTimeout in case the overlay is created from an +			// event that we're going to be cancelling (see #2804) +			setTimeout(function() { +				// handle $(el).dialog().dialog('close') (see #4065) +				if ($.ui.dialog.overlay.instances.length) { +					$(document).bind($.ui.dialog.overlay.events, function(event) { +						// stop events if the z-index of the target is < the z-index of the overlay +						// we cannot return true when we don't want to cancel the event (#3523) +						if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) { +							return false; +						} +					}); +				} +			}, 1); + +			// allow closing by pressing the escape key +			$(document).bind('keydown.dialog-overlay', function(event) { +				if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && +					event.keyCode === $.ui.keyCode.ESCAPE) { +					 +					dialog.close(event); +					event.preventDefault(); +				} +			}); + +			// handle window resize +			$(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize); +		} + +		var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay')) +			.appendTo(document.body) +			.css({ +				width: this.width(), +				height: this.height() +			}); + +		if ($.fn.bgiframe) { +			$el.bgiframe(); +		} + +		this.instances.push($el); +		return $el; +	}, + +	destroy: function($el) { +		var indexOf = $.inArray($el, this.instances); +		if (indexOf != -1){ +			this.oldInstances.push(this.instances.splice(indexOf, 1)[0]); +		} + +		if (this.instances.length === 0) { +			$([document, window]).unbind('.dialog-overlay'); +		} + +		$el.remove(); +		 +		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309) +		var maxZ = 0; +		$.each(this.instances, function() { +			maxZ = Math.max(maxZ, this.css('z-index')); +		}); +		this.maxZ = maxZ; +	}, + +	height: function() { +		var scrollHeight, +			offsetHeight; +		// handle IE 6 +		if ($.browser.msie && $.browser.version < 7) { +			scrollHeight = Math.max( +				document.documentElement.scrollHeight, +				document.body.scrollHeight +			); +			offsetHeight = Math.max( +				document.documentElement.offsetHeight, +				document.body.offsetHeight +			); + +			if (scrollHeight < offsetHeight) { +				return $(window).height() + 'px'; +			} else { +				return scrollHeight + 'px'; +			} +		// handle "good" browsers +		} else { +			return $(document).height() + 'px'; +		} +	}, + +	width: function() { +		var scrollWidth, +			offsetWidth; +		// handle IE +		if ( $.browser.msie ) { +			scrollWidth = Math.max( +				document.documentElement.scrollWidth, +				document.body.scrollWidth +			); +			offsetWidth = Math.max( +				document.documentElement.offsetWidth, +				document.body.offsetWidth +			); + +			if (scrollWidth < offsetWidth) { +				return $(window).width() + 'px'; +			} else { +				return scrollWidth + 'px'; +			} +		// handle "good" browsers +		} else { +			return $(document).width() + 'px'; +		} +	}, + +	resize: function() { +		/* If the dialog is draggable and the user drags it past the +		 * right edge of the window, the document becomes wider so we +		 * need to stretch the overlay. If the user then drags the +		 * dialog back to the left, the document will become narrower, +		 * so we need to shrink the overlay to the appropriate size. +		 * This is handled by shrinking the overlay before setting it +		 * to the full document size. +		 */ +		var $overlays = $([]); +		$.each($.ui.dialog.overlay.instances, function() { +			$overlays = $overlays.add(this); +		}); + +		$overlays.css({ +			width: 0, +			height: 0 +		}).css({ +			width: $.ui.dialog.overlay.width(), +			height: $.ui.dialog.overlay.height() +		}); +	} +}); + +$.extend($.ui.dialog.overlay.prototype, { +	destroy: function() { +		$.ui.dialog.overlay.destroy(this.$el); +	} +}); + +}(jQuery));  | 
