r79022 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r79021‎ | r79022 | r79023 >
Date:20:26, 26 December 2010
Author:dale
Status:deferred
Tags:
Comment:
more sync with kaltura updates:
* mostly some resolved merge issues from r78947
Modified paths:
  • /branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayer.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayerKplayer.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mvpcf/mw.style.PlayerSkinMvpcf.css (modified) (history)
  • /branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mw.PlayerControlBuilder.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/MiroSubs/mw.MiroSubsConfig.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/Playlist/mw.Playlist.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/SmilPlayer/mw.EmbedPlayerSmil.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/TimedText/loader.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/TimedText/mw.TimedText.js (modified) (history)
  • /branches/MwEmbedStandAlone/modules/TimedText/remotes/RemoteMwTimedText.js (modified) (history)
  • /branches/MwEmbedStandAlone/remotes/mediaWiki.js (modified) (history)
  • /branches/MwEmbedStandAlone/skins/common/images/player_big_play_button.png (modified) (history)
  • /branches/MwEmbedStandAlone/skins/common/images/player_big_play_button_hover.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/common/mw.style.mwCommon.css (modified) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_diagonals-medium_25_111111_40x40.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_100_222222_40x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_30_cccccc_40x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_50_5c5c5c_40x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_70_333333_40x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_glass_40_ffc73d_1x400.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_35_222222_1x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_50_262626_1x100.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_loop_25_000000_21x21.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_4b8e0b_256x240.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_a83300_256x240.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_cccccc_256x240.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_ffffff_256x240.png (added) (history)
  • /branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/jquery-ui-1.7.2.css (added) (history)

Diff [purge]

Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/jquery-ui-1.7.2.css
@@ -0,0 +1,310 @@
 2+/*
 3+ * jQuery UI CSS Framework 1.8.7
 4+ *
 5+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
 6+ * Dual licensed under the MIT or GPL Version 2 licenses.
 7+ * http://jquery.org/license
 8+ *
 9+ * http://docs.jquery.com/UI/Theming/API
 10+ */
 11+
 12+/* Layout helpers
 13+----------------------------------*/
 14+.ui-helper-hidden { display: none; }
 15+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
 16+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
 17+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
 18+.ui-helper-clearfix { display: inline-block; }
 19+/* required comment for clearfix to work in Opera \*/
 20+* html .ui-helper-clearfix { height:1%; }
 21+.ui-helper-clearfix { display:block; }
 22+/* end clearfix */
 23+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 24+
 25+/* Interaction Cues
 26+----------------------------------*/
 27+.ui-state-disabled { cursor: default !important; }
 28+
 29+
 30+/* Icons
 31+----------------------------------*/
 32+
 33+/* states and images */
 34+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 35+
 36+
 37+/* Misc visuals
 38+----------------------------------*/
 39+
 40+/* Overlays */
 41+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
 42+
 43+
 44+/*
 45+ * jQuery UI CSS Framework 1.8.7
 46+ *
 47+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
 48+ * Dual licensed under the MIT or GPL Version 2 licenses.
 49+ * http://jquery.org/license
 50+ *
 51+ * http://docs.jquery.com/UI/Theming/API
 52+ *
 53+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=11px&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=01_flat.png&bgImgOpacityHeader=70&borderColorHeader=828282&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=14_loop.png&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=262626&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=50&borderColorHover=828282&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=222222&bgTextureActive=01_flat.png&bgImgOpacityActive=100&borderColorActive=3d3d3d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=111111&bgTextureHighlight=07_diagonals_medium.png&bgImgOpacityHighlight=25&borderColorHighlight=828282&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
 54+ */
 55+
 56+
 57+/* Component containers
 58+----------------------------------*/
 59+.ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 11px; }
 60+.ui-widget .ui-widget { font-size: 1em; }
 61+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; }
 62+.ui-widget-content { border: 1px solid #555555; background: #000000; color: #ffffff; } /* url(images/ui-bg_loop_25_000000_21x21.png) 50% 50% repeat */
 63+.ui-widget-content a { color: #ffffff; }
 64+.ui-widget-header { border: 1px solid #828282; background: #333333 url(images/ui-bg_flat_70_333333_40x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
 65+.ui-widget-header a { color: #ffffff; }
 66+
 67+/* Interaction states
 68+----------------------------------*/
 69+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #606060; background: #222222 url(images/ui-bg_highlight-soft_35_222222_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #eeeeee; }
 70+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; }
 71+.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 #828282; background: #262626 url(images/ui-bg_highlight-soft_50_262626_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
 72+.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
 73+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #3d3d3d; background: #222222 url(images/ui-bg_flat_100_222222_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; }
 74+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
 75+.ui-widget :active { outline: none; }
 76+
 77+/* Interaction Cues
 78+----------------------------------*/
 79+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #828282; background: #111111 url(images/ui-bg_diagonals-medium_25_111111_40x40.png) 50% 50% repeat; color: #2e7db2; }
 80+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; }
 81+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; }
 82+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #111111; }
 83+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #111111; }
 84+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
 85+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
 86+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
 87+
 88+/* Icons
 89+----------------------------------*/
 90+
 91+/* states and images */
 92+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); }
 93+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
 94+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
 95+.ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); }
 96+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
 97+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
 98+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); }
 99+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); }
 100+
 101+/* positioning */
 102+.ui-icon-carat-1-n { background-position: 0 0; }
 103+.ui-icon-carat-1-ne { background-position: -16px 0; }
 104+.ui-icon-carat-1-e { background-position: -32px 0; }
 105+.ui-icon-carat-1-se { background-position: -48px 0; }
 106+.ui-icon-carat-1-s { background-position: -64px 0; }
 107+.ui-icon-carat-1-sw { background-position: -80px 0; }
 108+.ui-icon-carat-1-w { background-position: -96px 0; }
 109+.ui-icon-carat-1-nw { background-position: -112px 0; }
 110+.ui-icon-carat-2-n-s { background-position: -128px 0; }
 111+.ui-icon-carat-2-e-w { background-position: -144px 0; }
 112+.ui-icon-triangle-1-n { background-position: 0 -16px; }
 113+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
 114+.ui-icon-triangle-1-e { background-position: -32px -16px; }
 115+.ui-icon-triangle-1-se { background-position: -48px -16px; }
 116+.ui-icon-triangle-1-s { background-position: -64px -16px; }
 117+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
 118+.ui-icon-triangle-1-w { background-position: -96px -16px; }
 119+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
 120+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
 121+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
 122+.ui-icon-arrow-1-n { background-position: 0 -32px; }
 123+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
 124+.ui-icon-arrow-1-e { background-position: -32px -32px; }
 125+.ui-icon-arrow-1-se { background-position: -48px -32px; }
 126+.ui-icon-arrow-1-s { background-position: -64px -32px; }
 127+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
 128+.ui-icon-arrow-1-w { background-position: -96px -32px; }
 129+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
 130+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
 131+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
 132+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
 133+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
 134+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
 135+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
 136+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
 137+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
 138+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
 139+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
 140+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
 141+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
 142+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
 143+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
 144+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
 145+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
 146+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
 147+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
 148+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
 149+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
 150+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
 151+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
 152+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
 153+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
 154+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
 155+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
 156+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
 157+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
 158+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
 159+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
 160+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
 161+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
 162+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
 163+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
 164+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
 165+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
 166+.ui-icon-arrow-4 { background-position: 0 -80px; }
 167+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
 168+.ui-icon-extlink { background-position: -32px -80px; }
 169+.ui-icon-newwin { background-position: -48px -80px; }
 170+.ui-icon-refresh { background-position: -64px -80px; }
 171+.ui-icon-shuffle { background-position: -80px -80px; }
 172+.ui-icon-transfer-e-w { background-position: -96px -80px; }
 173+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
 174+.ui-icon-folder-collapsed { background-position: 0 -96px; }
 175+.ui-icon-folder-open { background-position: -16px -96px; }
 176+.ui-icon-document { background-position: -32px -96px; }
 177+.ui-icon-document-b { background-position: -48px -96px; }
 178+.ui-icon-note { background-position: -64px -96px; }
 179+.ui-icon-mail-closed { background-position: -80px -96px; }
 180+.ui-icon-mail-open { background-position: -96px -96px; }
 181+.ui-icon-suitcase { background-position: -112px -96px; }
 182+.ui-icon-comment { background-position: -128px -96px; }
 183+.ui-icon-person { background-position: -144px -96px; }
 184+.ui-icon-print { background-position: -160px -96px; }
 185+.ui-icon-trash { background-position: -176px -96px; }
 186+.ui-icon-locked { background-position: -192px -96px; }
 187+.ui-icon-unlocked { background-position: -208px -96px; }
 188+.ui-icon-bookmark { background-position: -224px -96px; }
 189+.ui-icon-tag { background-position: -240px -96px; }
 190+.ui-icon-home { background-position: 0 -112px; }
 191+.ui-icon-flag { background-position: -16px -112px; }
 192+.ui-icon-calendar { background-position: -32px -112px; }
 193+.ui-icon-cart { background-position: -48px -112px; }
 194+.ui-icon-pencil { background-position: -64px -112px; }
 195+.ui-icon-clock { background-position: -80px -112px; }
 196+.ui-icon-disk { background-position: -96px -112px; }
 197+.ui-icon-calculator { background-position: -112px -112px; }
 198+.ui-icon-zoomin { background-position: -128px -112px; }
 199+.ui-icon-zoomout { background-position: -144px -112px; }
 200+.ui-icon-search { background-position: -160px -112px; }
 201+.ui-icon-wrench { background-position: -176px -112px; }
 202+.ui-icon-gear { background-position: -192px -112px; }
 203+.ui-icon-heart { background-position: -208px -112px; }
 204+.ui-icon-star { background-position: -224px -112px; }
 205+.ui-icon-link { background-position: -240px -112px; }
 206+.ui-icon-cancel { background-position: 0 -128px; }
 207+.ui-icon-plus { background-position: -16px -128px; }
 208+.ui-icon-plusthick { background-position: -32px -128px; }
 209+.ui-icon-minus { background-position: -48px -128px; }
 210+.ui-icon-minusthick { background-position: -64px -128px; }
 211+.ui-icon-close { background-position: -80px -128px; }
 212+.ui-icon-closethick { background-position: -96px -128px; }
 213+.ui-icon-key { background-position: -112px -128px; }
 214+.ui-icon-lightbulb { background-position: -128px -128px; }
 215+.ui-icon-scissors { background-position: -144px -128px; }
 216+.ui-icon-clipboard { background-position: -160px -128px; }
 217+.ui-icon-copy { background-position: -176px -128px; }
 218+.ui-icon-contact { background-position: -192px -128px; }
 219+.ui-icon-image { background-position: -208px -128px; }
 220+.ui-icon-video { background-position: -224px -128px; }
 221+.ui-icon-script { background-position: -240px -128px; }
 222+.ui-icon-alert { background-position: 0 -144px; }
 223+.ui-icon-info { background-position: -16px -144px; }
 224+.ui-icon-notice { background-position: -32px -144px; }
 225+.ui-icon-help { background-position: -48px -144px; }
 226+.ui-icon-check { background-position: -64px -144px; }
 227+.ui-icon-bullet { background-position: -80px -144px; }
 228+.ui-icon-radio-off { background-position: -96px -144px; }
 229+.ui-icon-radio-on { background-position: -112px -144px; }
 230+.ui-icon-pin-w { background-position: -128px -144px; }
 231+.ui-icon-pin-s { background-position: -144px -144px; }
 232+.ui-icon-play { background-position: 0 -160px; }
 233+.ui-icon-pause { background-position: -16px -160px; }
 234+.ui-icon-seek-next { background-position: -32px -160px; }
 235+.ui-icon-seek-prev { background-position: -48px -160px; }
 236+.ui-icon-seek-end { background-position: -64px -160px; }
 237+
 238+.ui-icon-seek-first { background-position: -80px -160px; }
 239+.ui-icon-stop { background-position: -96px -160px; }
 240+.ui-icon-eject { background-position: -112px -160px; }
 241+.ui-icon-volume-off { background-position: -128px -160px; }
 242+.ui-icon-volume-on { background-position: -144px -160px; }
 243+.ui-icon-power { background-position: 0 -176px; }
 244+.ui-icon-signal-diag { background-position: -16px -176px; }
 245+.ui-icon-signal { background-position: -32px -176px; }
 246+.ui-icon-battery-0 { background-position: -48px -176px; }
 247+.ui-icon-battery-1 { background-position: -64px -176px; }
 248+.ui-icon-battery-2 { background-position: -80px -176px; }
 249+.ui-icon-battery-3 { background-position: -96px -176px; }
 250+.ui-icon-circle-plus { background-position: 0 -192px; }
 251+.ui-icon-circle-minus { background-position: -16px -192px; }
 252+.ui-icon-circle-close { background-position: -32px -192px; }
 253+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
 254+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
 255+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
 256+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
 257+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
 258+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
 259+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
 260+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
 261+.ui-icon-circle-zoomin { background-position: -176px -192px; }
 262+.ui-icon-circle-zoomout { background-position: -192px -192px; }
 263+.ui-icon-circle-check { background-position: -208px -192px; }
 264+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
 265+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
 266+.ui-icon-circlesmall-close { background-position: -32px -208px; }
 267+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
 268+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
 269+.ui-icon-squaresmall-close { background-position: -80px -208px; }
 270+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
 271+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
 272+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
 273+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
 274+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
 275+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
 276+
 277+
 278+/* Misc visuals
 279+----------------------------------*/
 280+
 281+/* Corner radius */
 282+.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
 283+.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
 284+.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
 285+.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
 286+.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
 287+.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
 288+.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
 289+.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
 290+.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
 291+
 292+/* Overlays */
 293+.ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
 294+.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
 295+.ui-slider { position: relative; text-align: left; }
 296+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
 297+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
 298+
 299+.ui-slider-horizontal { height: .8em; }
 300+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
 301+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
 302+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
 303+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
 304+
 305+.ui-slider-vertical { width: .8em; height: 100px; }
 306+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
 307+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
 308+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
 309+.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs */
 310+
 311+.overlay-win { background: #222; } /* Custom */
\ No newline at end of file
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/jquery-ui-1.7.2.css
___________________________________________________________________
Added: svn:mime-type
1312 + text/plain
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_diagonals-medium_25_111111_40x40.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_diagonals-medium_25_111111_40x40.png
___________________________________________________________________
Added: svn:mime-type
2313 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_70_333333_40x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_70_333333_40x100.png
___________________________________________________________________
Added: svn:mime-type
3314 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_35_222222_1x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_35_222222_1x100.png
___________________________________________________________________
Added: svn:mime-type
4315 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_loop_25_000000_21x21.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_loop_25_000000_21x21.png
___________________________________________________________________
Added: svn:mime-type
5316 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_a83300_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_a83300_256x240.png
___________________________________________________________________
Added: svn:mime-type
6317 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_100_222222_40x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_100_222222_40x100.png
___________________________________________________________________
Added: svn:mime-type
7318 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_50_5c5c5c_40x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_50_5c5c5c_40x100.png
___________________________________________________________________
Added: svn:mime-type
8319 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_cccccc_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_cccccc_256x240.png
___________________________________________________________________
Added: svn:mime-type
9320 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_ffffff_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_ffffff_256x240.png
___________________________________________________________________
Added: svn:mime-type
10321 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_4b8e0b_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_4b8e0b_256x240.png
___________________________________________________________________
Added: svn:mime-type
11322 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_glass_40_ffc73d_1x400.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_glass_40_ffc73d_1x400.png
___________________________________________________________________
Added: svn:mime-type
12323 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_50_262626_1x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_50_262626_1x100.png
___________________________________________________________________
Added: svn:mime-type
13324 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_30_cccccc_40x100.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_30_cccccc_40x100.png
___________________________________________________________________
Added: svn:mime-type
14325 + application/octet-stream
Index: branches/MwEmbedStandAlone/skins/common/mw.style.mwCommon.css
@@ -186,11 +186,14 @@
187187 * ( without additional assets in the embedPlayer skins folder )
188188 */
189189 .play-btn-large {
190 - width : 130px;
191 - height : 96px;
192 - background : url(images/player_big_play_button.png);
 190+ width : 70px;
 191+ height : 53px;
 192+ background : url(images/player_big_play_button.png?1);
193193 position : absolute;
194194 cursor : pointer;
195195 border : none !important;
196196 z-index : 1;
 197+}
 198+.play-btn-large:hover {
 199+ background : url(images/player_big_play_button_hover.png?1);
197200 }
\ No newline at end of file
Index: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button_hover.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button_hover.png
___________________________________________________________________
Added: svn:mime-type
198201 + application/octet-stream
Index: branches/MwEmbedStandAlone/modules/Playlist/mw.Playlist.js
@@ -106,6 +106,7 @@
107107 // Empty the target and setup player and playerList divs
108108 $j( _this.target )
109109 .empty()
 110+ .addClass( 'ui-widget-content' )
110111 .css('position', 'relative' )
111112 .append(
112113 $j( '<span />' )
@@ -521,11 +522,11 @@
522523
523524 // Setup ondone playing binding to play next clip (if autoContinue is true )
524525 if( _this.sourceHandler.autoContinue == true ){
525 - $j( embedPlayer ).unbind('ended').bind( 'ended', function(event, onDoneActionObject ){
 526+ $j( embedPlayer ).unbind('ended').bind( 'ended', function(event ){
526527 // Play next clip
527528 if( _this.clipIndex + 1 < _this.sourceHandler.getClipCount() ){
528529 // Update the onDone action object to not run the base control done:
529 - onDoneActionObject.runBaseControlDone = false;
 530+ embedPlayer.onDoneInterfaceFlag = false;
530531 _this.clipIndex++;
531532
532533 // update the player and play the next clip
@@ -536,7 +537,7 @@
537538 } else {
538539 mw.log("Reached end of playlist run normal end action" );
539540 // Update the onDone action object to not run the base control done:
540 - onDoneActionObject.runBaseControlDone = true;
 541+ embedPlayer.onDoneInterfaceFlag = true;
541542 }
542543 })
543544 }
@@ -575,11 +576,12 @@
576577 'border': '0px',
577578 'width' : '100%'
578579 })
 580+ .addClass('ui-state-active')
579581 .append(
580582 $j('<tr />')
581583 .append(
582584 $j( '<td />')
583 - .css('width', _this.itemThumbWidth + 'px' )
 585+ .css('width', _this.itemThumbWidth + 'px' )
584586 .append(
585587 $j('<img />')
586588 .attr({
Index: branches/MwEmbedStandAlone/modules/SmilPlayer/mw.EmbedPlayerSmil.js
@@ -186,8 +186,8 @@
187187 // Zero out the pause time:
188188 _this.smilPauseTime = 0;
189189
190 - // Set thumbnail_disp to false
191 - this.thumbnail_disp = false;
 190+ // Set posterDisplayed to false
 191+ this.posterDisplayed = false;
192192
193193 // Start up monitor:
194194 _this.monitor();
Index: branches/MwEmbedStandAlone/modules/MiroSubs/mw.MiroSubsConfig.js
@@ -6,6 +6,7 @@
77 * http://dev.universalsubtitles.org/widget/api_demo.html
88 */
99 mw.MiroSubsConfig = {
 10+ config : null,
1011 openDialog: function( embedPlayer, dialogReadyCallback ){
1112 var _this = this;
1213 this.getConfig( embedPlayer , function( config ){
@@ -29,8 +30,8 @@
3031 getConfig : function( embedPlayer, callback ){
3132 var _this = this;
3233
33 - if( _this.isConfigReady() ){
34 - callback();
 34+ if( this.config ){
 35+ callback( this.config );
3536 // if config is ready stop chain
3637 return true;
3738 }
@@ -40,8 +41,14 @@
4142
4243 // Set initial config
4344 this.config = this.getDefaultConfig();
44 -
4545
 46+ // Check both the user name and subtitles have been set:
 47+ var isConfigReady = function(){
 48+ if( _this.config.username && _this.config.subtitles ){
 49+ callback( _this.config );
 50+ }
 51+ };
 52+
4653 // Make sure we are logged in::
4754 mw.getUserName( function( userName ){
4855 mw.log( "MiroSubsConfig::getUserName: " + userName );
@@ -51,13 +58,9 @@
5259 'content' : gM('mwe-mirosubs-subs-please-login-desc')
5360 });
5461 callback( false );
55 - return false;
5662 } else {
5763 _this.config.username = userName;
58 - if( _this.isConfigReady() ){
59 - callback();
60 - return true;
61 - }
 64+ isConfigReady();
6265 }
6366 });
6467 // Get the subtitles
@@ -65,29 +68,16 @@
6669 mw.log("MiroSubsConfig::getSubsInMiroFormat: got" + miroSubs.length + ' subs');
6770 // no failure for miro subs ( just an empty object )
6871 _this.config.subtitles = miroSubs;
69 -
70 - // Once everything is setup issue the callback with the miro config:
71 - if( _this.isConfigReady() ){
72 - callback();
73 - return true;
74 - }
 72+ isConfigReady();
7573 });
7674 },
77 - getTargetLanguage: function( callback ){
 75+ /**
 76+ * Present a dialog to get the target language
 77+ */
 78+ getTargetLanguageDialog: function( callback ){
7879
7980 },
80 - // Check all async values for config ready run the callback if its ready
81 - isConfigReady: function(){
82 - if( this.config
83 - &&
84 - this.config.subtitles
85 - &&
86 - this.config.username
87 - ){
88 - return true;
89 - }
90 - return false;
91 - },
 81+
9282 getDefaultConfig: function(){
9383 var _this = this;
9484 return {
Index: branches/MwEmbedStandAlone/modules/TimedText/loader.js
@@ -59,35 +59,43 @@
6060 // Update the player loader request with timedText library if the embedPlayer
6161 // includes timedText tracks.
6262 $j( mw ).bind( 'LoaderEmbedPlayerUpdateRequest', function( event, playerElement, classRequest ) {
63 -
64 - var mwLoadTimedTextFlag = false;
65 - // Check for the TimedText.showInterface config flag
66 - if( mw.getConfig( 'TimedText.showInterface' ) == 'always' ) {
67 - mwLoadTimedTextFlag = true;
 63+ if( mw.isTimedTextSupported( playerElement ) ) {
 64+ $j.merge( classRequest, mwTimedTextRequestSet );
6865 }
69 -
70 - // If add timed text flag not already set check for track, and sources
71 - if( ! mwLoadTimedTextFlag ) {
72 - if( $j( playerElement ).find( 'track' ).length != 0 ) {
73 - // Has an track child include timed text request
74 - mwLoadTimedTextFlag = true;
 66+ } );
 67+
 68+ // On new embed player check if we need to add timedText
 69+ $j( mw ).bind( 'newEmbedPlayerEvent', function( event, embedPlayer ){
 70+ if( mw.isTimedTextSupported( embedPlayer) ){
 71+ if( ! embedPlayer.timedText ) {
 72+ embedPlayer.timedText = new mw.TimedText( embedPlayer );
7573 }
76 - // Check for ROE pointer or apiTitleKey
77 - if ( $j( playerElement ).attr('roe')
78 - || $j( playerElement ).attr( 'apiTitleKey' ) )
79 - {
80 - mwLoadTimedTextFlag = true;
81 - }
8274 }
83 -
84 - // Add timed text items if flag set.
85 - // its oky if we merge in multiple times the loader can handle it
86 - if( mwLoadTimedTextFlag ) {
87 - $j.merge( classRequest, mwTimedTextRequestSet );
 75+ });
 76+
 77+ /**
 78+ * Check if we should load the timedText interface or not.
 79+ *
 80+ * Note we check for text sources outside of
 81+ */
 82+ mw.isTimedTextSupported = function( embedPlayer ) {
 83+ if( mw.getConfig( 'TimedText.showInterface' ) == 'always' ) {
 84+ return true;
8885 }
89 - } );
90 -
91 -
 86+ // Check for timed text sources or api/ roe url
 87+ if (
 88+ ( embedPlayer.roe || embedPlayer.apiTitleKey )
 89+ ||
 90+ ( embedPlayer.mediaElement && embedPlayer.mediaElement.textSourceExists() )
 91+ ||
 92+ $j( embedPlayer ).find( 'track' ).length != 0
 93+ ) {
 94+ return true;
 95+ } else {
 96+ return false;
 97+ }
 98+ };
 99+
92100 // TimedText editor:
93101 mw.addModuleLoader( 'TimedText.Edit', [
94102 [
Index: branches/MwEmbedStandAlone/modules/TimedText/mw.TimedText.js
@@ -124,9 +124,18 @@
125125 }
126126
127127 // Set up embedPlayer hooks:
 128+
 129+ // Check for timed text support:
 130+ $j( embedPlayer ).bind( 'addControlBarComponent', function(event, controlBar ){
 131+ if( mw.isTimedTextSupported( embedPlayer ) ){
 132+ controlBar.supportedComponets['timedText'] = true;
 133+ controlBar.components['timedText'] = _this.getTimedTextButton();
 134+ }
 135+ });
 136+
 137+
128138 $j( embedPlayer ).bind( 'monitorEvent', function() {
129139 _this.monitor();
130 - return false;
131140 } );
132141
133142 $j( embedPlayer ).bind( 'play', function() {
@@ -135,8 +144,15 @@
136145 } );
137146
138147 // Resize the timed text font size per window width
139 - $j( embedPlayer ).bind( 'closeFullScreen openFullScreen', function() {
 148+ $j( embedPlayer ).bind( 'onCloseFullScreen onOpenFullScreen', function() {
 149+
140150 var textOffset = _this.embedPlayer.controlBuilder.fullscreenMode ? 30 : 10;
 151+
 152+ mw.log( 'set text size to: ' + _this.getInterfaceSizeTextCss({
 153+ 'width' : embedPlayer.getWidth(),
 154+ 'height' : embedPlayer.$interface.height()
 155+ })['font-size'] );
 156+
141157 embedPlayer.$interface.find( '.track' ).css( _this.getInterfaceSizeTextCss({
142158 'width' : embedPlayer.getWidth(),
143159 'height' : embedPlayer.$interface.height()
@@ -149,6 +165,10 @@
150166
151167 // Update the timed text size
152168 $j( embedPlayer ).bind( 'onResizePlayer', function(e, size, animate) {
 169+ mw.log( 'set text size to: ' + _this.getInterfaceSizeTextCss({
 170+ 'width' : embedPlayer.getWidth(),
 171+ 'height' : embedPlayer.$interface.height()
 172+ })['font-size'] );
153173 if (animate) {
154174 embedPlayer.$interface.find( '.track' ).animate( _this.getInterfaceSizeTextCss( size ) );
155175 } else {
@@ -172,6 +192,32 @@
173193 });
174194
175195 },
 196+ /**
 197+ * The timed text button to be added to the interface
 198+ */
 199+ getTimedTextButton: function(){
 200+ var _this = this;
 201+ /**
 202+ * The closed captions button
 203+ */
 204+ return {
 205+ 'w': 28,
 206+ 'o': function( ctrlObj ) {
 207+ return $j( '<div />' )
 208+ .attr( 'title', gM( 'mwe-embedplayer-timed_text' ) )
 209+ .addClass( "ui-state-default ui-corner-all ui-icon_link rButton timed-text" )
 210+ .append(
 211+ $j( '<span />' )
 212+ .addClass( "ui-icon ui-icon-comment" )
 213+ )
 214+ // Captions binding:
 215+ .buttonHover()
 216+ .click( function() {
 217+ _this.showTextMenu();
 218+ } );
 219+ }
 220+ }
 221+ },
176222
177223 /**
178224 * Get the fullscreen text css
@@ -182,6 +228,44 @@
183229 'font-size' : this.getInterfaceSizePercent( size ) + '%'
184230 };
185231 },
 232+ /**
 233+ * Show the text interface library and show the text interface near the player.
 234+ */
 235+ showTextMenu: function() {
 236+ var embedPlayer = this.embedPlayer;
 237+ var loc = embedPlayer.$interface.find( '.rButton.timed-text' ).offset();
 238+ mw.log('showTextInterface::' + embedPlayer.id + ' t' + loc.top + ' r' + loc.right);
 239+
 240+ var $menu = $j( '#timedTextMenu_' + embedPlayer.id );
 241+ //This may be unnecessary .. we just need to show a spinner somewhere
 242+ if ( $menu.length != 0 ) {
 243+ // Hide show the menu:
 244+ if( $menu.is( ':visible' ) ) {
 245+ $menu.hide( "fast" );
 246+ }else{
 247+ // move the menu to proper location
 248+ $menu.show("fast");
 249+ }
 250+ }else{
 251+ //Setup the menu:
 252+ $j('body').append(
 253+ $j('<div>')
 254+ .addClass('ui-widget ui-widget-content ui-corner-all')
 255+ .attr( 'id', 'timedTextMenu_' + embedPlayer.id )
 256+ .css( {
 257+ 'position' : 'absolute',
 258+ 'z-index' : 10,
 259+ 'height' : '180px',
 260+ 'width' : '180px',
 261+ 'font-size' : '12px',
 262+ 'display' : 'none'
 263+ } )
 264+
 265+ );
 266+ // Load text interface ( if not already loaded )
 267+ $j( '#' + embedPlayer.id ).timedText( 'showMenu', '#timedTextMenu_' + embedPlayer.id );
 268+ }
 269+ },
186270 getInterfaceSizePercent: function( size ) {
187271 // Some arbitrary scale relative to window size ( 400px wide is text size 105% )
188272 var textSize = size.width / 5;
@@ -896,8 +980,10 @@
897981 var text = source.getTimedText( time );
898982
899983 // We do a type comparison so that "undefined" != "false"
900 - if( text === this.prevText[ source.category ] )
 984+ // ( check if we are updating the text )
 985+ if( text === this.prevText[ source.category ] ){
901986 return ;
 987+ }
902988
903989 //mw.log( 'mw.TimedText:: updateTextDisplay: ' + text );
904990
@@ -910,7 +996,6 @@
911997 $textTarget = $playerTarget.find( '.track_' + source.category + ' span' );
912998 }
913999
914 -
9151000 // If text is "false" fade out the subtitle:
9161001 if( text === false ) {
9171002 $textTarget.fadeOut('fast');
@@ -919,11 +1004,13 @@
9201005 if( ! $textTarget.is(':visible') ) {
9211006 $textTarget.fadeIn('fast');
9221007 }
923 - // Update text ( use "html" instead of "text" so that parsers can swap in html for formating
 1008+ // Update text ( use "html" instead of "text" so that subtitle format can
 1009+ // include html formating
 1010+ // TOOD we should scrub this for non-formating html
9241011 $textTarget.html( text );
9251012
926 - // Update any links to point to
927 - $textTarget.find( 'a' ).attr( 'target', '_new' );
 1013+ // Update any links to point to a new window
 1014+ $textTarget.find( 'a' ).attr( 'target', '_blank' );
9281015 }
9291016 // mw.log( ' len: ' + $textTarget.length + ' ' + $textTarget.html() );
9301017 // Update the prev text:
@@ -945,6 +1032,7 @@
9461033 // Setup the display text div:
9471034 var layoutMode = this.getLayoutMode();
9481035 if( layoutMode == 'ontop' ) {
 1036+ this.embedPlayer.controlBuilder.displayOptionsMenuFlag = false;
9491037 var $track = $j('<div>')
9501038 .addClass( 'track' + ' ' + 'track_' + category )
9511039 .css( {
@@ -970,12 +1058,15 @@
9711059 $playerTarget.append( $track );
9721060
9731061 } else if ( layoutMode == 'below') {
974 - // Set the belowBar size to 60 pxiles:
 1062+ this.embedPlayer.controlBuilder.displayOptionsMenuFlag = true;
 1063+ // Set the belowBar size to 60 pixels:
9751064 var belowBarHeight = 60;
9761065 // Append before controls:
9771066 $playerTarget.find( '.control-bar' ).before(
9781067 $j('<div>').addClass( 'track' + ' ' + 'track_' + category )
9791068 .css({
 1069+ 'position' : 'absolute',
 1070+ 'top' : this.embedPlayer.getHeight(),
9801071 'display' : 'block',
9811072 'width' : '100%',
9821073 'height' : belowBarHeight + 'px',
Index: branches/MwEmbedStandAlone/modules/TimedText/remotes/RemoteMwTimedText.js
@@ -7,8 +7,7 @@
88
99 mw.addMessageKeys( [
1010 "mwe-timedtext-language-subtitles-for-clip",
11 - "mwe-timedtext-language-no-subtitles-for-clip",
12 - "mwe-timedtext-all-subtitles"
 11+ "mwe-timedtext-language-no-subtitles-for-clip"
1312 ]);
1413
1514 RemoteMwTimedText = function( options ) {
@@ -82,8 +81,8 @@
8382 _this.embedPlayerLang();
8483 });
8584 },
86 - /*
87 - * embeds a player with the current language key pre selected
 85+ /**
 86+ * Embeds a player with the current language key pre selected
8887 */
8988 embedPlayerLang: function() {
9089 var _this = this;
@@ -124,16 +123,14 @@
125124 // Add the page msg to the top
126125 $j( _this.target ).prepend(
127126 $j('<h3>')
128 - .html(
129 - gM( pageMsgKey, [ mw.Language.names[ _this.langKey ], $fileLink.html() ] )
130 - )
 127+ .html(
 128+ gM( pageMsgKey, [ mw.Language.names[ _this.langKey ], $fileLink.html() ] )
 129+ )
131130 );
132131 // Select the language if possible:
133132 if( source ) {
134133 player.timedText.selectTextSource( source );
135134 }
136 - // Un-hide the player
137 - $j('.videoLoading').show();
138135 } );
139136 } );
140137 },
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayer.js
@@ -14,7 +14,44 @@
1515 mw.includeAllModuleMessages();
1616
1717
 18+/**
 19+ * The base source attribute checks also see:
 20+ * http://dev.w3.org/html5/spec/Overview.html#the-source-element
 21+ */
 22+mw.setDefaultConfig( 'EmbedPlayer.SourceAttributes', [
 23+ // source id
 24+ 'id',
1825
 26+ // media url
 27+ 'src',
 28+
 29+ // Title string for the source asset
 30+ 'title',
 31+
 32+ // boolean if we support temporal url requests on the source media
 33+ 'URLTimeEncoding',
 34+
 35+ // Media has a startOffset ( used for plugins that
 36+ // display ogg page time rather than presentation time
 37+ 'startOffset',
 38+
 39+ // A hint to the duration of the media file so that duration
 40+ // can be displayed in the player without loading the media file
 41+ 'durationHint',
 42+
 43+ // Media start time
 44+ 'start',
 45+
 46+ // Media end time
 47+ 'end',
 48+
 49+ // If the source is the default source
 50+ 'default',
 51+
 52+ // titleKey ( used for api lookups )
 53+ 'titleKey'
 54+] );
 55+
1956 /**
2057 * Adds jQuery binding for embedPlayer
2158 */
@@ -142,7 +179,7 @@
143180 }
144181
145182 });
146 - }
 183+ };
147184
148185 } )( jQuery );
149186
@@ -202,7 +239,6 @@
203240 * are called;
204241 *
205242 * _this.checkPlayerSources()
206 - * _this.checkForTimedText() // TODO Should be moved to TimedText module!!!
207243 * _this.setupSourcePlayer()
208244 * _this.inheritEmbedPlayer()
209245 * _this.selectedPlayer.load()
@@ -488,7 +524,7 @@
489525 }
490526 if ( is_ready ) {
491527 // Be sure to remove any player loader spinners
492 - $j('.playerLoadingSpinner').remove();
 528+ $j('.loadingSpinner').remove();
493529
494530 mw.log( "EmbedPlayer::All on-page players ready run playerManager callbacks" );
495531 // Run queued functions
@@ -565,6 +601,7 @@
566602 }
567603
568604 var sourceAttr = mw.getConfig( 'EmbedPlayer.SourceAttributes' );
 605+
569606 for ( var i = 0; i < sourceAttr.length; i++ ) { // array loop:
570607 var attr = sourceAttr[ i ];
571608 var attr_value = element.getAttribute( attr );
@@ -1231,8 +1268,8 @@
12321269 // being updated)
12331270 'thumbnail_updating' : false,
12341271
1235 - // Thumbnail display flag
1236 - 'thumbnail_disp' : true,
 1272+ // Poster display flag
 1273+ 'posterDisplayed' : true,
12371274
12381275 // Local variable to hold CMML meeta data about the current clip
12391276 // for more on CMML see: http://wiki.xiph.org/CMML
@@ -1259,6 +1296,9 @@
12601297 ,
12611298 // if player events should be Propagated
12621299 '_propagateEvents': true,
 1300+
 1301+ // If the onDone interface should be displayed
 1302+ 'onDoneInterfaceFlag': true,
12631303
12641304
12651305 /**
@@ -1403,8 +1443,8 @@
14041444 this._propagateEvents = false;
14051445 },
14061446 restoreEventPropagation: function(){
 1447+ this._propagateEvents = true;
14071448 this.startMonitor();
1408 - this._propagateEvents = true;
14091449 },
14101450
14111451 enableSeekBar: function(){
@@ -1420,7 +1460,7 @@
14211461 * For plugin-players to update supported features
14221462 */
14231463 updateFeatureSupport: function(){
1424 - $j( this ).trigger('updateFeatureSupport', this.supports );
 1464+ $j( this ).trigger('updateFeatureSupportEvent', this.supports );
14251465 return ;
14261466 },
14271467
@@ -1561,7 +1601,7 @@
15621602 // callback
15631603 // Run embedPlayer sources hook
15641604 $j( _this ).triggerQueueCallback( 'checkPlayerSourcesEvent', function(){
1565 - _this.checkForTimedText();
 1605+ _this.setupSourcePlayer();
15661606 });
15671607 };
15681608
@@ -1578,6 +1618,14 @@
15791619 finishCheckPlayerSources();
15801620 }
15811621 },
 1622+ /**
 1623+ * Empty the player sources
 1624+ */
 1625+ emptySources: function(){
 1626+ if( this.mediaElement ){
 1627+ this.mediaElement.sources = [];
 1628+ }
 1629+ },
15821630
15831631 /**
15841632 * Insert and play a video source ( useful for ads or bumper videos )
@@ -1668,38 +1716,6 @@
16691717 },
16701718
16711719 /**
1672 - * Check if we should load the timedText interface or not.
1673 - *
1674 - * Note we check for text sources outside of
1675 - */
1676 - isTimedTextSupported: function() {
1677 - // Check for timed text sources or api/ roe url
1678 - if ( ( this.roe || this.apiTitleKey ||
1679 - this.mediaElement.textSourceExists() ) ) {
1680 - return true;
1681 - } else {
1682 - return false;
1683 - }
1684 - },
1685 -
1686 - /**
1687 - * Check for timed Text support and load necessary libraries
1688 - */
1689 - checkForTimedText: function( ) {
1690 - var _this = this;
1691 - mw.log( 'EmbedPlayer::checkForTimedText: ' + _this.id );
1692 - // Check for timedText support
1693 - if( this.isTimedTextSupported() ) {
1694 - mw.load( 'TimedText', function() {
1695 - $j( '#' + _this.id ).timedText();
1696 - _this.setupSourcePlayer();
1697 - });
1698 - return ;
1699 - }
1700 - _this.setupSourcePlayer();
1701 - },
1702 -
1703 - /**
17041720 * Set up the select source player
17051721 *
17061722 * issues autoSelectSource call
@@ -1770,17 +1786,20 @@
17711787 _this.updateFeatureSupport();
17721788
17731789 _this.getDuration();
1774 -
1775 - _this.showPlayer();
1776 -
1777 - // Call the global player manager to inform this video interface is
1778 - // ready:
1779 - mw.playerManager.playerReady( _this );
1780 -
1781 - // Run the callback if provided
1782 - if ( typeof callback == 'function' ){
1783 - callback();
1784 - }
 1790+
 1791+ // Run player display with timeout to avoid function stacking
 1792+ setTimeout(function(){
 1793+ _this.showPlayer();
 1794+ // Call the global player manager to inform this video interface is
 1795+ // ready:
 1796+ mw.playerManager.playerReady( _this );
 1797+
 1798+ // Run the callback if provided
 1799+ if ( typeof callback == 'function' ){
 1800+ callback();
 1801+ }
 1802+ },1);
 1803+
17851804 } );
17861805 },
17871806
@@ -1824,7 +1843,7 @@
18251844 */
18261845 getTimeRange: function() {
18271846 var end_time = (this.controlBuilder.longTimeDisp)? '/' + mw.seconds2npt( this.getDuration() ) : '';
1828 - var default_time_range = '0:00:00' + end_time;
 1847+ var default_time_range = '0:00' + end_time;
18291848 if ( !this.mediaElement )
18301849 return default_time_range;
18311850 if ( !this.mediaElement.selectedSource )
@@ -1948,10 +1967,13 @@
19491968 // Run the ended trigger ( allow the ended object to prevent default
19501969 // actions )
19511970 mw.log("EmbedPlayer::onClipDone:Trigger ended");
1952 - $j( this ).trigger( 'ended', onDoneActionObject );
 1971+
 1972+ this.tempDisableEvents();
 1973+ // TOOD we should improve the end event flow
 1974+ $j( this ).trigger( 'ended' );
 1975+
 1976+ if( this.onDoneInterfaceFlag ){
19531977
1954 - if( onDoneActionObject.runBaseControlDone ){
1955 -
19561978 // Check if we have the "loop" property set
19571979 if( this.loop ) {
19581980 this.stop();
@@ -1983,7 +2005,7 @@
19842006 */
19852007 showThumbnail: function() {
19862008 var _this = this;
1987 - mw.log( 'EmbedPlayer::showThumbnail' + this.thumbnail_disp );
 2009+ mw.log( 'EmbedPlayer::showThumbnail' + this.posterDisplayed );
19882010
19892011 // Close Menu Overlay:
19902012 this.controlBuilder.closeMenuOverlay();
@@ -1992,7 +2014,7 @@
19932015 this.updatePosterHTML();
19942016
19952017 this.paused = true;
1996 - this.thumbnail_disp = true;
 2018+ this.posterDisplayed = true;
19972019 // Make sure the controlBuilder bindings are up-to-date
19982020 this.controlBuilder.addControlBindings();
19992021
@@ -2007,14 +2029,14 @@
20082030 /**
20092031 * Show the player
20102032 */
2011 - showPlayer : function () {
2012 - //alert( 'show player? :' + this.controls + ' is persist:' + this.isPersistentNativePlayer() );
 2033+ showPlayer: function () {
20132034 mw.log( 'EmbedPlayer:: Show player: ' + this.id + ' interace: w:' + this.width + ' h:' + this.height );
20142035 var _this = this;
20152036 // Set-up the local controlBuilder instance:
20162037 this.controlBuilder = new mw.PlayerControlBuilder( this );
20172038 var _this = this;
2018 -
 2039+
 2040+
20192041 // Make sure we have mwplayer_interface
20202042 if( $j( this ).parent( '.mwplayer_interface' ).length == 0 ) {
20212043 // Select "player"
@@ -2025,7 +2047,6 @@
20262048 'width' : this.width + 'px',
20272049 'height' : this.height + 'px',
20282050 'position' : 'relative',
2029 - 'background' : '#000'
20302051 })
20312052 )
20322053 // position the "player" absolute inside the relative interface
@@ -2044,6 +2065,12 @@
20452066 'left' : '0px',
20462067 'background': null
20472068 });
 2069+ // if controls are not overlay add controlBuilder height to interface
 2070+ if( !this.controlBuilder.checkOverlayControls() ){
 2071+ this.$interface.css('height', this.height + this.controlBuilder.getHeight() );
 2072+ }
 2073+
 2074+
20482075 $j( this ).show();
20492076 this.controls = true;
20502077 }
@@ -2065,7 +2092,7 @@
20662093 // Issue a non-blocking play request
20672094 setTimeout(function(){
20682095 _this.play();
2069 - },0)
 2096+ },1)
20702097 }
20712098
20722099 },
@@ -2230,7 +2257,7 @@
22312258 if ( this.thumbnail_updating == true )
22322259 $j( '#new_img_thumb_' + this.id ).stop().remove();
22332260
2234 - if ( this.thumbnail_disp ) {
 2261+ if ( this.posterDisplayed ) {
22352262 mw.log( 'set to thumb:' + src );
22362263 this.thumbnail_updating = true;
22372264 $j( this ).append(
@@ -2634,19 +2661,16 @@
26352662 this.controlBuilder.closeMenuOverlay();
26362663
26372664 // Check if thumbnail is being displayed and embed html
2638 - if ( this.thumbnail_disp ) {
 2665+ if ( this.posterDisplayed ) {
26392666 if ( !this.selectedPlayer ) {
26402667 this.showPluginMissingHTML();
26412668 return;
26422669 } else {
2643 - this.thumbnail_disp = false;
2644 - // hide any button if present:
 2670+ this.posterDisplayed = false;
 2671+ // Hide any button if present:
26452672 this.$interface.find( '.play-btn-large' ).remove();
26462673 this.doEmbedHTML();
26472674 }
2648 - } else {
2649 - // the plugin is already being displayed
2650 - this.seeking = false;
26512675 }
26522676
26532677 // If we previously finished playing this clip run the "replay hook"
@@ -2733,9 +2757,11 @@
27342758 .attr( 'title', gM( 'mwe-embedplayer-play_clip' ) );
27352759 },
27362760
 2761+ /**
 2762+ * Disable event _propagateEvents for 10ms ( helps avoid event stacking )
 2763+ */
27372764 tempDisableEvents: function(){
27382765 var _this = this;
2739 - // Disable event _propagateEvents for 10ms ( avoid pause play trigger stacking )
27402766 this._propagateEvents = false;
27412767 setTimeout( function(){
27422768 _this._propagateEvents = true;
@@ -2768,6 +2794,8 @@
27692795 // Reset current time and prev time and seek offset
27702796 this.currentTime = this.previousTime = this.serverSeekTime = 0;
27712797
 2798+ this.stopMonitor();
 2799+
27722800 // Issue pause to update interface (only call this parent)
27732801 if( !this.paused ){
27742802 this.paused = true;
@@ -2794,8 +2822,6 @@
27952823 mw.log("EmbedPlayer::Stop:: Reset play head")
27962824 this.updatePlayHead( 0 );
27972825
2798 - // Bind play-btn-large play
2799 - //this.addPlayBtnLarge();
28002826 }
28012827 },
28022828
@@ -2911,7 +2937,7 @@
29122938 * @return {Boolean} true if playing false if not playing
29132939 */
29142940 isPlaying : function() {
2915 - if ( this.thumbnail_disp ) {
 2941+ if ( this.posterDisplayed ) {
29162942 // in stopped state
29172943 return false;
29182944 } else if ( this.paused ) {
@@ -2937,16 +2963,17 @@
29382964 * @return {Boolean} true if stopped false if playing
29392965 */
29402966 isStopped: function() {
2941 - return this.thumbnail_disp;
 2967+ return this.posterDisplayed;
29422968 },
29432969
2944 - // xxx temporary hack we need a better stop monitor system
 2970+ // TODO temporary hack we need a better stop monitor system
29452971 stopMonitor: function(){
2946 - this.thumbnail_disp = true;
 2972+ clearInterval( this.monitorInterval );
 2973+ this.monitorInterval = 0;
29472974 },
2948 - // xxx temporary hack we need a better stop monitor system
 2975+ // TODO temporary hack we need a better stop monitor system
29492976 startMonitor: function(){
2950 - this.thumbnail_disp = false;
 2977+ this.monitor();
29512978 },
29522979
29532980 /**
@@ -3018,7 +3045,7 @@
30193046 }
30203047
30213048 //mw.log( 'Monitor:: ' + this.currentTime + ' duration: ' + ( parseInt(
3022 - // this.getDuration() ) + 1 ) + ' is seeking: ' + this.seeking );
 3049+ // this.getDuration() ) + 1 ) + ' is seeking: ' + this.seeking );
30233050
30243051 if ( this.currentTime >= 0 && this.duration ) {
30253052 if ( !this.userSlide && !this.seeking ) {
@@ -3078,8 +3105,7 @@
30793106 }
30803107 } else {
30813108 // If stopped "stop" monitor:
3082 - clearInterval( this.monitorInterval );
3083 - this.monitorInterval = 0;
 3109+ this.stopMonitor();
30843110 }
30853111
30863112 // mw.log('trigger:monitor:: ' + this.currentTime );
@@ -3140,12 +3166,12 @@
31413167 * perc Value between 0 and 1 for position of playhead
31423168 */
31433169 updatePlayHead: function( perc ) {
 3170+ //mw.log( 'EmbedPlayer: updatePlayHead: '+ perc);
31443171 $playHead = this.$interface.find( '.play_head' );
31453172 if ( this.controls && $playHead.length != 0 ) {
31463173 var val = parseInt( perc * 1000 );
31473174 $playHead.slider( 'value', val );
31483175 }
3149 - // @@todo should have 'progress' trigger the same as html5
31503176 $j( this ).trigger('updatePlayHeadPercent', perc);
31513177 },
31523178
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mw.PlayerControlBuilder.js
@@ -163,11 +163,8 @@
164164 mw.log( 'PlayerControlsBuilder:: addControlComponents into:' + this.available_width );
165165 // Build the supportedComponets list
166166 this.supportedComponets = $j.extend( this.supportedComponets, embedPlayer.supports );
167 -
168 - // Check for timed text support:
169 - if( embedPlayer.isTimedTextSupported() ){
170 - this.supportedComponets['timedText'] = true;
171 - }
 167+ $j(embedPlayer).trigger( 'addControlBarComponent', this);
 168+
172169 // Check for Attribution button
173170 if( mw.getConfig( 'EmbedPlayer.AttributionButton' ) && embedPlayer.attributionbutton ){
174171 this.supportedComponets[ 'attributionButton' ] = true;
@@ -177,7 +174,21 @@
178175 if( mw.getConfig( 'EmbedPlayer.EnableFullscreen' ) === false ){
179176 this.supportedComponets[ 'fullscreen'] = false;
180177 }
181 -
 178+
 179+ var addComponent = function( component_id ){
 180+ if ( _this.supportedComponets[ component_id ] ) {
 181+ if ( _this.available_width > _this.components[ component_id ].w ) {
 182+ // Append the component
 183+ $controlBar.append(
 184+ _this.getComponent( component_id )
 185+ );
 186+ _this.available_width -= _this.components[ component_id ].w;
 187+ } else {
 188+ mw.log( 'Not enough space for control component:' + component_id );
 189+ }
 190+ }
 191+ }
 192+
182193 // Output components
183194 for ( var component_id in this.components ) {
184195 // Check for (component === false ) and skip
@@ -185,8 +196,8 @@
186197 continue;
187198 }
188199
189 - // Special case with playhead skip if we have > 30px of space for it
190 - if ( component_id == 'playHead' && this.available_width < 30 ){
 200+ // Special case with playhead and time ( to make sure they are to the left of everything else )
 201+ if ( component_id == 'playHead' || component_id == 'timeDisplay'){
191202 continue;
192203 }
193204
@@ -194,20 +205,14 @@
195206 if( component_id == 'fullscreen' && this.embedPlayer.height == 0 ){
196207 continue;
197208 }
198 -
199 - // Make sure the given components is supported:
200 - if ( this.supportedComponets[ component_id ] ) {
201 - if ( this.available_width > this.components[ component_id ].w ) {
202 - // Append the component
203 - $controlBar.append(
204 - _this.getComponent( component_id )
205 - );
206 - this.available_width -= this.components[ component_id ].w;
207 - } else {
208 - mw.log( 'Not enough space for control component:' + component_id );
209 - }
210 - }
 209+ addComponent( component_id )
211210 }
 211+ // Add special case remaining components:
 212+ addComponent( 'timeDisplay' );
 213+ if( this.available_width > 30 ){
 214+ addComponent( 'playHead' );
 215+ }
 216+
212217 },
213218
214219 /**
@@ -265,19 +270,21 @@
266271 * restoreWindowPlayer to restore window mode
267272 */
268273 toggleFullscreen: function() {
 274+ var _this = this;
269275 if( this.fullscreenMode ){
270276 this.restoreWindowPlayer();
271 - $j( this.embedPlayer ).trigger( 'closeFullScreen' );
 277+ $j( this.embedPlayer ).trigger( 'onCloseFullScreen' );
272278 }else{
273 - this.doFullScreenPlayer();
274 - $j( this.embedPlayer ).trigger( 'openFullScreen' );
 279+ this.doFullScreenPlayer( function(){
 280+ $j( _this.embedPlayer ).trigger( 'onOpenFullScreen' );
 281+ });
275282 }
276283 },
277284
278285 /**
279286 * Do full-screen mode
280287 */
281 - doFullScreenPlayer: function() {
 288+ doFullScreenPlayer: function( callback) {
282289 mw.log(" controlBuilder :: toggle full-screen ");
283290 // Setup pointer to control builder :
284291 var _this = this;
@@ -312,7 +319,8 @@
313320 .hide()
314321 .fadeIn("slow")
315322 );
316 -
 323+
 324+
317325 // Change the interface to absolute positioned:
318326 this.windowPositionStyle = $interface.css( 'position' );
319327 this.windowZindex = $interface.css( 'z-index' );
@@ -329,6 +337,14 @@
330338 'top' : this.windowOffset.top,
331339 'left' : this.windowOffset.left
332340 } );
 341+
 342+ // If native persistent native player update z-index:
 343+ if( embedPlayer.isPersistentNativePlayer() ){
 344+ $j( embedPlayer.getPlayerElement() ).css( {
 345+ 'z-index': mw.getConfig( 'EmbedPlayer.fullScreenZIndex' ) + 1,
 346+ 'position': 'absolute'
 347+ });
 348+ }
333349
334350 // Empty out the parent absolute index
335351 _this.parentsAbsolute = [];
@@ -361,7 +377,7 @@
362378 'left' : leftOffset,
363379 'width' : $j( window ).width(),
364380 'height' : $j( window ).height()
365 - }, true);
 381+ }, true, callback);
366382
367383 // Remove absolute css of the interface parents
368384 $interface.parents().each( function() {
@@ -380,6 +396,7 @@
381397 $interface.mousemove( function(e){
382398 _this.mouseMovedFlag = true;
383399 });
 400+
384401 // Check every 2 seconds reset flag status:
385402 function checkMovedMouse(){
386403 if( _this.fullscreenMode ){
@@ -409,7 +426,7 @@
410427 }
411428 });
412429
413 - // Bind escape to restore clip resolution
 430+ // Bind escape to restore in page clip
414431 $j( window ).keyup( function(event) {
415432 // Escape check
416433 if( event.keyCode == 27 ){
@@ -439,12 +456,21 @@
440457 $j( embedPlayer ).animate( _this.getAspectPlayerWindowCss( size ), callback );
441458 // Update play button pos
442459 $interface.find('.play-btn-large').animate( _this.getFullscreenPlayButtonCss( size ) );
 460+
 461+ if( embedPlayer.isPersistentNativePlayer() ){
 462+ $j( embedPlayer.getPlayerElement() ).animate( _this.getAspectPlayerWindowCss( size ) );
 463+ }
443464 } else {
444465 $interface.css( interfaceCss );
445466 // Update player size
446467 $j( embedPlayer ).css( _this.getAspectPlayerWindowCss( size ) );
447468 // Update play button pos
448469 $interface.find('.play-btn-large').css( _this.getFullscreenPlayButtonCss( size ) );
 470+
 471+ if( embedPlayer.isPersistentNativePlayer() ){
 472+ $j( embedPlayer.getPlayerElement() ).css( _this.getAspectPlayerWindowCss( size ) );
 473+ }
 474+
449475 if( callback ){
450476 callback();
451477 }
@@ -498,6 +524,13 @@
499525
500526 // Restore the body scroll bar
501527 $j('body').css( 'overflow', 'auto' );
 528+
 529+ // If native player restore z-index:
 530+ if( embedPlayer.isPersistentNativePlayer() ){
 531+ $j( embedPlayer.getPlayerElement() ).css( {
 532+ 'z-index': 'auto'
 533+ });
 534+ }
502535 });
503536
504537 // Restore the play button
@@ -542,41 +575,16 @@
543576 return ;
544577 }
545578 bindFirstPlay = true;
546 - var dblClickEvent = false;
547 - var lastClickTime = 0;;
548 - var dblClickTime = 250;
549 - $j(embedPlayer).unbind( 'click.mwPlay' ).bind( 'click.mwPlay', function( event ) {
550 - // Don't support click pause / play when player is using native controls:
 579+ $j(embedPlayer).click( function() {
551580 if(embedPlayer.getPlayerElement().controls) {
552581 return ;
553582 }
554583
555 - // Check for double click:
556 - if( _this.supportedComponets['fullscreen']
557 - &&
558 - ( event.timeStamp - lastClickTime < dblClickTime )
559 - ){
560 - dblClickEvent = true;
561 - // wait dblClickTime before you can trigger the next dbl click
562 - setTimeout( function(){
563 - dblClickEvent = false;
564 - }, dblClickTime);
565 - // toggle fullscreen:
566 - _this.embedPlayer.fullscreen();
567 - return ;
 584+ if(embedPlayer.paused) {
 585+ embedPlayer.play();
 586+ } else {
 587+ embedPlayer.pause();
568588 }
569 - setTimeout( function(){
570 - if( !dblClickEvent ){
571 - // Else treat it as a single click:
572 - if(embedPlayer.paused) {
573 - embedPlayer.play();
574 - } else {
575 - embedPlayer.pause();
576 - }
577 - _this.showControlBar();
578 - }
579 - }, dblClickTime + 10);
580 - lastClickTime = event.timeStamp;
581589 });
582590 });
583591
@@ -685,7 +693,7 @@
686694 var animateDuration = 'fast';
687695 if(! this.embedPlayer )
688696 return ;
689 - if( this.embedPlayer.getPlayerElement ){
 697+ if( this.embedPlayer.getPlayerElement && ! this.embedPlayer.isPersistentNativePlayer() ){
690698 $j( this.embedPlayer.getPlayerElement() ).css( 'z-index', '1' );
691699 }
692700 mw.log( 'PlayerControlBuilder:: ShowControlBar' );
@@ -879,7 +887,7 @@
880888 doVolumeBinding: function( ) {
881889 var embedPlayer = this.embedPlayer;
882890 var _this = this;
883 - embedPlayer.$interface.find( '.volume_control span' ).unbind().buttonHover().click( function() {
 891+ embedPlayer.$interface.find( '.volume_control' ).unbind().buttonHover().click( function() {
884892 mw.log( 'Volume control toggle' );
885893 embedPlayer.toggleMute();
886894 } );
@@ -1122,7 +1130,6 @@
11231131 'top' : '2px',
11241132 'right' : '2px'
11251133 })
1126 - .buttonHover()
11271134 .click( function() {
11281135 _this.closeMenuOverlay();
11291136 } );
@@ -1280,7 +1287,7 @@
12811288 var is_selected = ( source.getSrc() == embedPlayer.mediaElement.selectedSource.getSrc() );
12821289
12831290 $playerSelect.append(
1284 - $j( '<h2 />' )
 1291+ $j( '<h3 />' )
12851292 .text( source.getTitle() )
12861293 );
12871294
@@ -1298,8 +1305,8 @@
12991306 $playerLine = $j( '<span />' )
13001307 .text(
13011308 supportingPlayers[i].getName()
1302 - )
1303 - .addClass( 'ui-state-highlight ui-corner-all' );
 1309+ );
 1310+ //.addClass( 'ui-state-highlight ui-corner-all' ); removed by ran
13041311 } else {
13051312 // Non active player add link to select:
13061313 $playerLine = $j( '<a />')
@@ -1367,51 +1374,8 @@
13681375 // Return the player select elements
13691376 return $playerSelect;
13701377 },
1371 -
 1378+
13721379 /**
1373 - * Show the text interface library and show the text interface near the player.
1374 - */
1375 - showTextInterface: function() {
1376 - var _this = this;
1377 - var embedPlayer = this.embedPlayer;
1378 - var loc = embedPlayer.$interface.find( '.rButton.timed-text' ).offset();
1379 - mw.log('showTextInterface::' + embedPlayer.id + ' t' + loc.top + ' r' + loc.right);
1380 -
1381 -
1382 - var $menu = $j( '#timedTextMenu_' + embedPlayer.id );
1383 - //This may be unnecessary .. we just need to show a spinner somewhere
1384 - if ( $menu.length != 0 ) {
1385 - // Hide show the menu:
1386 - if( $menu.is( ':visible' ) ) {
1387 - $menu.hide( "fast" );
1388 - }else{
1389 - // move the menu to proper location
1390 - $menu.show("fast");
1391 - }
1392 - }else{
1393 - //Setup the menu:
1394 - $j('body').append(
1395 - $j('<div>')
1396 - .addClass('ui-widget ui-widget-content ui-corner-all')
1397 - .attr( 'id', 'timedTextMenu_' + embedPlayer.id )
1398 - .css( {
1399 - 'position' : 'absolute',
1400 - 'z-index' : 10,
1401 - 'height' : '180px',
1402 - 'width' : '180px',
1403 - 'font-size' : '12px',
1404 - 'display' : 'none'
1405 - } )
1406 -
1407 - );
1408 - // Load text interface ( if not already loaded )
1409 - mw.load( 'TimedText', function() {
1410 - $j( '#' + embedPlayer.id ).timedText( 'showMenu', '#timedTextMenu_' + embedPlayer.id );
1411 - });
1412 - }
1413 - },
1414 -
1415 - /**
14161380 * Loads sources and calls showDownloadWithSources
14171381 * @param {Object} $target jQuery target to output to
14181382 */
@@ -1521,7 +1485,7 @@
15221486 {
15231487 return this.components[ component_id ].h;
15241488 }
1525 - return false;
 1489+ return 0;
15261490 },
15271491
15281492 /**
@@ -1535,7 +1499,7 @@
15361500 {
15371501 return this.components[ component_id ].w;
15381502 }
1539 - return false;
 1503+ return 0;
15401504 },
15411505
15421506 /**
@@ -1554,8 +1518,8 @@
15551519 * The large play button in center of the player
15561520 */
15571521 'playButtonLarge': {
1558 - 'w' : 130,
1559 - 'h' : 96,
 1522+ 'w' : 70,
 1523+ 'h' : 53,
15601524 'o' : function( ctrlObj ) {
15611525 return $j( '<div/>' )
15621526 .attr( {
@@ -1651,6 +1615,11 @@
16521616 'w': 28,
16531617 'o': function( ctrlObj ) {
16541618
 1619+ // Setup "dobuleclick" fullscreen binding to embedPlayer
 1620+ $j( ctrlObj.embedPlayer ).unbind("dblclick").bind("dblclick", function(){
 1621+ ctrlObj.embedPlayer.fullscreen();
 1622+ });
 1623+
16551624 return $j( '<div />' )
16561625 .attr( 'title', gM( 'mwe-embedplayer-player_fullscreen' ) )
16571626 .addClass( "ui-state-default ui-corner-all ui-icon_link rButton fullscreen-btn" )
@@ -1660,7 +1629,7 @@
16611630 )
16621631 // Fullscreen binding:
16631632 .buttonHover().click( function() {
1664 - ctrlObj.embedPlayer.fullscreen();
 1633+ ctrlObj.embedPlayer.fullscreen();
16651634 } );
16661635 }
16671636 },
@@ -1687,26 +1656,6 @@
16881657 }
16891658 },
16901659
1691 - /**
1692 - * The closed captions button
1693 - */
1694 - 'timedText': {
1695 - 'w': 28,
1696 - 'o': function( ctrlObj ) {
1697 - return $j( '<div />' )
1698 - .attr( 'title', gM( 'mwe-embedplayer-timed_text' ) )
1699 - .addClass( "ui-state-default ui-corner-all ui-icon_link rButton timed-text" )
1700 - .append(
1701 - $j( '<span />' )
1702 - .addClass( "ui-icon ui-icon-comment" )
1703 - )
1704 - // Captions binding:
1705 - .buttonHover()
1706 - .click( function() {
1707 - ctrlObj.showTextInterface();
1708 - } );
1709 - }
1710 - },
17111660
17121661 /**
17131662 * The volume control interface html
@@ -1774,27 +1723,7 @@
17751724 'w':0, // special case (takes up remaining space)
17761725 'o':function( ctrlObj ) {
17771726
1778 - // Set up the dissable playhead function:
1779 - // TODO this will move into the disableSeekBar binding in the new thmemeing framework
1780 - ctrlObj.disableSeekBar = function(){
1781 - ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", true );
1782 - }
1783 - ctrlObj.enableSeekBar = function(){
1784 - ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", false );
1785 - }
1786 -
1787 -
1788 - var embedPlayer = ctrlObj.embedPlayer;
1789 - var _this = this;
1790 - var $playHead = $j( '<div />' )
1791 - .addClass ( "play_head" )
1792 - .css({
1793 - "position" : 'absolute',
1794 - "left" : '33px',
1795 - "right" : ( ( embedPlayer.getPlayerWidth() - ctrlObj.available_width ) - 33) + 'px'
1796 - })
1797 - // Playhead binding
1798 - .slider( {
 1727+ var sliderConfig = {
17991728 range: "min",
18001729 value: 0,
18011730 min: 0,
@@ -1836,7 +1765,29 @@
18371766 embedPlayer.doSeek( perc );
18381767 }
18391768 }
1840 - } );
 1769+ };
 1770+
 1771+ // Set up the disable playhead function:
 1772+ // TODO this will move into the disableSeekBar binding in the new theme framework
 1773+ ctrlObj.disableSeekBar = function(){
 1774+ ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", true );
 1775+ }
 1776+ ctrlObj.enableSeekBar = function(){
 1777+ ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", false);
 1778+ }
 1779+
 1780+
 1781+ var embedPlayer = ctrlObj.embedPlayer;
 1782+ var _this = this;
 1783+ var $playHead = $j( '<div />' )
 1784+ .addClass ( "play_head" )
 1785+ .css({
 1786+ "position" : 'absolute',
 1787+ "left" : '33px',
 1788+ "right" : ( ( embedPlayer.getPlayerWidth() - ctrlObj.available_width ) - 33) + 'px'
 1789+ })
 1790+ // Playhead binding
 1791+ .slider( sliderConfig );
18411792
18421793 // Up the z-index of the default status indicator:
18431794 $playHead.find( '.ui-slider-handle' ).css( 'z-index', 4 );
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mvpcf/mw.style.PlayerSkinMvpcf.css
@@ -119,18 +119,15 @@
120120 cusror: move;
121121 }
122122
123 -
124123 .mv-player .overlay-win textarea {
125124 background:none repeat scroll 0 0 transparent;
126 - border-color:#333 -moz-use-text-color -moz-use-text-color #333;
127 - border-style:solid none none solid;
128 - border-width:2px medium medium 2px;
129 - color:#222;
130 - font:11px arial,sans-serif;
 125+ border: 2px solid #333;
 126+ color: #fff;
 127+ font: 11px arial,sans-serif;
131128 height:15px;
132129 overflow:hidden;
133130 padding-left:2px;
134 - width:100%;
 131+ width:97%;
135132 }
136133
137134 .mv-player .overlay-win div.ui-state-highlight {
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayerKplayer.js
@@ -93,13 +93,12 @@
9494 }, 100);
9595
9696 // Flash player loses its bindings once it changes sizes::
97 - $j(_this).bind('openFullScreen', function() {
 97+ $j(_this).bind('onOpenFullScreen', function() {
9898 _this.postEmbedJS();
9999 });
100 - $j(_this).bind('closeFullScreen', function() {
 100+ $j(_this).bind('onCloseFullScreen', function() {
101101 _this.postEmbedJS();
102 - })
103 -
 102+ });
104103 },
105104
106105 /**
Index: branches/MwEmbedStandAlone/remotes/mediaWiki.js
@@ -525,7 +525,7 @@
526526 if( $j( '#' + vidId ).parents( '.gallerybox,.filehistory' ).length ){
527527 $j( '#' + vidId ).after(
528528 $j( '<div />')
529 - .css( {
 529+ .css({
530530 'width' : $pimg.attr('width' ),
531531 'height' :$pimg.attr( 'height' ),
532532 'position' : 'relative',

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r78947sync with kaltura updates:...dale02:48, 24 December 2010

Status & tagging log