Easy Video Player - Version 1.0.1

Version Description

  • First commit
Download this release

Release Info

Developer naa986
Plugin Icon 128x128 Easy Video Player
Version 1.0.1
Comparing to
See all releases

Version 1.0.1

easy-video-player.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Easy Video Player
4
+ Version: 1.0.1
5
+ Plugin URI: http://easywpguide.wordpress.com/?p=25
6
+ Author: naa986
7
+ Author URI: http://easywpguide.wordpress.com/
8
+ Description: Easily embed videos into your WordPress blog
9
+ */
10
+
11
+ if(!defined('ABSPATH')) exit;
12
+ if(!class_exists('EASY_VIDEO_PLAYER'))
13
+ {
14
+ class EASY_VIDEO_PLAYER
15
+ {
16
+ var $plugin_version = '1.0.1';
17
+ function __construct()
18
+ {
19
+ define('EASY_VIDEO_PLAYER_VERSION', $this->plugin_version);
20
+ $this->plugin_includes();
21
+ }
22
+ function plugin_includes()
23
+ {
24
+ if(is_admin( ) )
25
+ {
26
+ add_filter('plugin_action_links', array(&$this,'easy_video_player_plugin_action_links'), 10, 2 );
27
+ }
28
+ add_action('wp_enqueue_scripts', 'easy_video_player_enqueue_scripts');
29
+ add_action('admin_menu', array( &$this, 'easy_video_player_add_options_menu' ));
30
+ add_shortcode('evp_embed_video','evp_embed_video_handler');
31
+ }
32
+ function plugin_url()
33
+ {
34
+ if($this->plugin_url) return $this->plugin_url;
35
+ return $this->plugin_url = plugins_url( basename( plugin_dir_path(__FILE__) ), basename( __FILE__ ) );
36
+ }
37
+ function easy_video_player_plugin_action_links($links, $file)
38
+ {
39
+ if ( $file == plugin_basename( dirname( __FILE__ ) . '/easy-video-player.php' ) )
40
+ {
41
+ $links[] = '<a href="options-general.php?page=easy-video-player-settings">Settings</a>';
42
+ }
43
+ return $links;
44
+ }
45
+
46
+ function easy_video_player_add_options_menu()
47
+ {
48
+ if(is_admin())
49
+ {
50
+ add_options_page('Easy Video Player Settings', 'Easy Video Player', 'manage_options', 'easy-video-player-settings', array(&$this, 'easy_video_player_options_page'));
51
+ }
52
+ add_action('admin_init', array(&$this, 'easy_video_player_add_settings'));
53
+ }
54
+ function easy_video_player_add_settings()
55
+ {
56
+ register_setting('easy-video-player-settings-group', 'evp_enable_jquery');
57
+ }
58
+ function easy_video_player_options_page()
59
+ {
60
+
61
+ ?>
62
+ <div class="wrap">
63
+ <div id="poststuff"><div id="post-body">
64
+
65
+ <h2>Easy Video Player - v<?php echo $this->plugin_version;?></h2>
66
+ <div class="postbox">
67
+ <h3><label for="title">Setup Guide</label></h3>
68
+ <div class="inside">
69
+ <p>For detailed documentation please visit the plugin homepage <a href="http://easywpguide.wordpress.com/?p=25" target="_blank">here</a></p>
70
+ </div></div>
71
+ <div class="postbox">
72
+ <h3><label for="title">General Settings</label></h3>
73
+ <div class="inside">
74
+ <form method="post" action="options.php">
75
+ <?php settings_fields('easy-video-player-settings-group'); ?>
76
+ <table class="form-table">
77
+ <tr valign="top">
78
+ <th scope="row">Enable jQuery</th>
79
+ <td><input type="checkbox" id="evp_enable_jquery" name="evp_enable_jquery" value="1" <?php echo checked(1, get_option('evp_enable_jquery'), false) ?> />
80
+ <p><i>By default this option should always be checked.</i></p>
81
+ </td>
82
+ </tr>
83
+ </table>
84
+
85
+ <p class="submit">
86
+ <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
87
+ </p>
88
+ </form>
89
+ </div></div>
90
+
91
+ </div></div>
92
+ </div>
93
+ <?php
94
+ }
95
+ }
96
+ $GLOBALS['easy_video_player'] = new EASY_VIDEO_PLAYER();
97
+ }
98
+
99
+ function easy_video_player_enqueue_scripts()
100
+ {
101
+ if (!is_admin())
102
+ {
103
+ $plugin_url = plugins_url('',__FILE__);
104
+ $enable_jquery = get_option('evp_enable_jquery');
105
+ if($enable_jquery)
106
+ {
107
+ wp_enqueue_script('jquery');
108
+ }
109
+ wp_register_script('flowplayer-js', $plugin_url.'/lib/flowplayer.js');
110
+ wp_enqueue_script('flowplayer-js');
111
+ wp_register_style('flowplayer-css', $plugin_url.'/lib/minimalist.css');
112
+ wp_enqueue_style('flowplayer-css');
113
+ }
114
+ }
115
+
116
+ function evp_embed_video_handler($atts)
117
+ {
118
+ extract(shortcode_atts(array(
119
+ 'url' => '',
120
+ ), $atts));
121
+ $output = <<<EOT
122
+ <div data-ratio="0.417" class="flowplayer">
123
+ <video>
124
+ <source type="video/mp4" src="$url"/>
125
+ </video>
126
+ </div>
127
+ EOT;
128
+ return $output;
129
+ }
lib/all-skins.css ADDED
@@ -0,0 +1,475 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .minimalist{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
+ .minimalist *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
+ .minimalist a:focus{outline:0}
4
+ .minimalist video{width:100%}
5
+ .minimalist.is-ipad video{-webkit-transform:translateX(-2048px);}
6
+ .is-ready.minimalist.is-ipad video{-webkit-transform:translateX(0)}
7
+ .minimalist .fp-engine,.minimalist .fp-ui,.minimalist .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
+ .minimalist .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
+ .minimalist .fp-message h2{font-size:120%;margin-bottom:1em}
10
+ .minimalist .fp-message p{color:#666;font-size:95%}
11
+ .minimalist .fp-controls{position:absolute;bottom:0;width:100%;}
12
+ .no-background.minimalist .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
+ .is-fullscreen.minimalist .fp-controls{bottom:3px}
14
+ .is-mouseover.minimalist .fp-controls{bottom:0}
15
+ .minimalist .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
+ .minimalist .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
+ .minimalist .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
+ .minimalist .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
+ .minimalist .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
+ .minimalist .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
+ .minimalist .fp-waiting p{color:#ccc;font-weight:bold}
22
+ .minimalist .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
+ .minimalist .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
+ .minimalist .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
+ .is-help.minimalist .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
+ .minimalist .fp-help .fp-help-section{margin:3%}
27
+ .minimalist .fp-help .fp-help-basics{margin-top:6%}
28
+ .minimalist .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
+ .minimalist .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
+ .minimalist .fp-help small{font-size:90%;color:#aaa}
31
+ .minimalist .fp-help .fp-close{display:block}
32
+ @media (max-width: 600px){.minimalist .fp-help p{font-size:9px}
33
+ }.minimalist .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
+ .minimalist .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
+ .minimalist .fp-subtitle p:after{content:'';clear:both}
36
+ .minimalist .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
+ .minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-mute,.minimalist .fp-embed,.minimalist .fp-close,.minimalist .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
+ .color-light.minimalist .fp-fullscreen,.color-light.minimalist .fp-unload,.color-light.minimalist .fp-mute,.color-light.minimalist .fp-embed,.color-light.minimalist .fp-close,.color-light.minimalist .fp-play{background-image:url(img/black.png);}
39
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.minimalist .fp-fullscreen,.color-light.minimalist .fp-unload,.color-light.minimalist .fp-mute,.color-light.minimalist .fp-embed,.color-light.minimalist .fp-close,.color-light.minimalist .fp-play{background-image:url(img/black@x2.png)}
40
+ }@media (-webkit-min-device-pixel-ratio: 2){.minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-mute,.minimalist .fp-embed,.minimalist .fp-close,.minimalist .fp-play{background-image:url(img/white@x2.png)}
41
+ }.is-splash.minimalist .fp-ui,.is-paused.minimalist .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
42
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.minimalist .fp-ui,.is-paused.minimalist .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
43
+ }.color-light.is-splash.minimalist .fp-ui,.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black.png)}
44
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.minimalist .fp-ui,.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black@x2.png)}
45
+ }.is-fullscreen.minimalist .fp-ui{background-size:auto}
46
+ .is-seeking.minimalist .fp-ui,.is-loading.minimalist .fp-ui{background-image:none}
47
+ .minimalist .fp-logo{position:absolute;top:auto;left:15px;bottom:30px;cursor:pointer;display:none;z-index:100;}
48
+ .minimalist .fp-logo img{width:100%}
49
+ .is-embedded.minimalist .fp-logo{display:block}
50
+ .fixed-controls.minimalist .fp-logo{bottom:15px}
51
+ .minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-close{position:absolute;top:5px;left:auto;right:5px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
52
+ .minimalist .fp-unload,.minimalist .fp-close{background-position:14px -175px;display:none}
53
+ .minimalist .fp-play{display:none;width:27px;height:20px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
54
+ .play-button.minimalist .fp-play{display:block}
55
+ .is-paused.minimalist .fp-play{background-position:9px 7px}
56
+ .minimalist.is-ready.is-closeable .fp-unload{display:block}
57
+ .minimalist.is-ready.is-closeable .fp-fullscreen{display:none}
58
+ .minimalist.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
59
+ .minimalist.is-fullscreen .fp-unload,.minimalist.is-fullscreen .fp-close{display:none !important}
60
+ .minimalist .fp-timeline{height:3px;position:relative;overflow:hidden;top:5px;height:10px;margin:0 150px 0 45px;}
61
+ .no-volume.minimalist .fp-timeline{margin-right:60px}
62
+ .no-mute.minimalist .fp-timeline{margin-right:45px}
63
+ .play-button.minimalist .fp-timeline{margin-left:67px}
64
+ .is-long.minimalist .fp-timeline{margin:0 180px 0 75px;}
65
+ .no-volume.is-long.minimalist .fp-timeline{margin-right:90px}
66
+ .no-mute.is-long.minimalist .fp-timeline{margin-right:75px}
67
+ .play-button.is-long.minimalist .fp-timeline{margin-left:97px}
68
+ .aside-time.minimalist .fp-timeline,.no-time.minimalist .fp-timeline{margin:0 110px 0 5px}
69
+ .aside-time.no-volume.minimalist .fp-timeline,.no-time.no-volume.minimalist .fp-timeline{margin-right:20px}
70
+ .aside-time.no-mute.minimalist .fp-timeline,.no-time.no-mute.minimalist .fp-timeline{margin-right:5px}
71
+ .play-button.no-time.minimalist .fp-timeline,.play-button.aside-time.minimalist .fp-timeline{margin-left:27px}
72
+ .minimalist .fp-buffer,.minimalist .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
73
+ .minimalist .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
74
+ .minimalist .fp-volume{position:absolute;top:7.5px;right:5px}
75
+ .minimalist .fp-mute{width:10px;height:15px;float:left;position:relative;top:-5px;left:;cursor:pointer;background-position:-2px -99px;}
76
+ .no-mute.minimalist .fp-mute{display:none}
77
+ .minimalist .fp-volumeslider{width:90px;height:5px;cursor:col-resize;float:left;}
78
+ .no-volume.minimalist .fp-volumeslider{display:none}
79
+ .minimalist .fp-volumelevel{height:100%}
80
+ .minimalist .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
81
+ .minimalist .fp-time.is-inverted .fp-duration{display:none}
82
+ .minimalist .fp-time.is-inverted .fp-remaining{display:inline}
83
+ .minimalist .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:5px}
84
+ .no-time.minimalist .fp-time{display:none}
85
+ .is-long.minimalist .fp-time em{width:65px}
86
+ .minimalist .fp-elapsed{left:5px;}
87
+ .play-button.minimalist .fp-elapsed{left:27px}
88
+ .minimalist .fp-remaining,.minimalist .fp-duration{right:110px;color:#eee;}
89
+ .no-volume.minimalist .fp-remaining,.no-volume.minimalist .fp-duration{right:20px}
90
+ .no-mute.minimalist .fp-remaining,.no-mute.minimalist .fp-duration{right:5px}
91
+ .minimalist .fp-remaining{display:none}
92
+ .minimalist.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
93
+ .minimalist.color-light .fp-remaining,.minimalist.color-light .fp-duration{color:#666}
94
+ .minimalist.aside-time .fp-time{position:absolute;top:5px;left:5px;bottom:auto !important;width:85px;}
95
+ .minimalist.aside-time .fp-time strong,.minimalist.aside-time .fp-time em{position:static}
96
+ .minimalist.aside-time .fp-time .fp-elapsed{margin-right:5px}
97
+ .minimalist.is-long.aside-time .fp-time{width:130px}
98
+ .minimalist.is-splash,.minimalist.is-poster{cursor:pointer;}
99
+ .minimalist.is-splash .fp-controls,.minimalist.is-poster .fp-controls,.minimalist.is-splash .fp-fullscreen,.minimalist.is-poster .fp-fullscreen,.minimalist.is-splash .fp-unload,.minimalist.is-poster .fp-unload,.minimalist.is-splash .fp-time,.minimalist.is-poster .fp-time,.minimalist.is-splash .fp-embed,.minimalist.is-poster .fp-embed{display:none !important}
100
+ .minimalist.is-poster .fp-engine{top:-9999em}
101
+ .minimalist.is-loading .fp-waiting{display:block}
102
+ .minimalist.is-loading .fp-controls,.minimalist.is-loading .fp-time{display:none}
103
+ .minimalist.is-loading .fp-ui{background-position:-9999em}
104
+ .minimalist.is-seeking .fp-waiting{display:block}
105
+ .minimalist.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
106
+ .minimalist.is-error{border:1px solid #909090;background:#fdfdfd !important;}
107
+ .minimalist.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
108
+ .minimalist.is-error .fp-message{display:block}
109
+ .minimalist.is-error object,.minimalist.is-error video,.minimalist.is-error .fp-controls,.minimalist.is-error .fp-time,.minimalist.is-error .fp-subtitle{display:none}
110
+ .minimalist.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
111
+ .minimalist.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
112
+ .minimalist.is-mouseout .fp-timeline{margin:0 !important}
113
+ .minimalist.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
114
+ .minimalist.is-mouseout .fp-fullscreen,.minimalist.is-mouseout .fp-unload,.minimalist.is-mouseout .fp-elapsed,.minimalist.is-mouseout .fp-remaining,.minimalist.is-mouseout .fp-duration,.minimalist.is-mouseout .fp-embed,.minimalist.is-mouseout .fp-volume,.minimalist.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
115
+ .minimalist.is-mouseover .fp-controls,.minimalist.fixed-controls .fp-controls{height:20px}
116
+ .minimalist.is-mouseover .fp-fullscreen,.minimalist.fixed-controls .fp-fullscreen,.minimalist.is-mouseover .fp-unload,.minimalist.fixed-controls .fp-unload,.minimalist.is-mouseover .fp-elapsed,.minimalist.fixed-controls .fp-elapsed,.minimalist.is-mouseover .fp-remaining,.minimalist.fixed-controls .fp-remaining,.minimalist.is-mouseover .fp-duration,.minimalist.fixed-controls .fp-duration,.minimalist.is-mouseover .fp-embed,.minimalist.fixed-controls .fp-embed,.minimalist.is-mouseover .fp-logo,.minimalist.fixed-controls .fp-logo,.minimalist.is-mouseover .fp-volume,.minimalist.fixed-controls .fp-volume,.minimalist.is-mouseover .fp-play,.minimalist.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
117
+ .minimalist.fixed-controls .fp-volume{display:block}
118
+ .minimalist.fixed-controls .fp-controls{bottom:-20px;}
119
+ .is-fullscreen.minimalist.fixed-controls .fp-controls{bottom:0}
120
+ .minimalist.fixed-controls .fp-time em{bottom:-15px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
121
+ .is-fullscreen.minimalist.fixed-controls .fp-time em{bottom:5px}
122
+ .minimalist.is-disabled .fp-progress{background-color:#999}
123
+ .minimalist .fp-embed{position:absolute;top:5px;left:5px;display:block;width:25px;height:20px;background-position:3px -237px}
124
+ .minimalist .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
125
+ .minimalist .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
126
+ .minimalist .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
127
+ .minimalist .fp-embed-code label{display:block;color:#999}
128
+ .minimalist.is-embedding .fp-embed,.minimalist.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
129
+ .minimalist.aside-time .fp-embed{left:85px}
130
+ .minimalist.aside-time .fp-embed-code{left:115px}
131
+ .minimalist.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
132
+ .minimalist.is-long.aside-time .fp-embed{left:130px}
133
+ .minimalist.no-time .fp-embed{left:5px !important}
134
+ @-moz-keyframes pulse{0%{opacity:0}
135
+ 100%{opacity:1}
136
+ }@-webkit-keyframes pulse{0%{opacity:0}
137
+ 100%{opacity:1}
138
+ }@-o-keyframes pulse{0%{opacity:0}
139
+ 100%{opacity:1}
140
+ }@-ms-keyframes pulse{0%{opacity:0}
141
+ 100%{opacity:1}
142
+ }@keyframes pulse{0%{opacity:0}
143
+ 100%{opacity:1}
144
+ }.minimalist .fp-controls{background-color:#333;background-color:rgba(51,51,51,0.6)}
145
+ .minimalist.fixed-controls .fp-controls{background-color:#333}
146
+ .minimalist .fp-timeline{background-color:#666}
147
+ .minimalist .fp-buffer{background-color:#eee}
148
+ .minimalist .fp-progress{background-color:#00a7c8}
149
+ .minimalist .fp-volumeslider{background-color:#000}
150
+ .minimalist .fp-volumelevel{background-color:#fff}
151
+ .minimalist .fp-play{height:24px}
152
+ .minimalist.color-light .fp-controls{background-color:rgba(255,255,255,0.6)}
153
+ .minimalist.color-light.fixed-controls .fp-controls{background-color:#fff}
154
+ .minimalist.color-light .fp-volumeslider{background-color:#ddd}
155
+ .minimalist.color-light .fp-volumelevel{background-color:#222}
156
+ .minimalist.color-alt .fp-progress{background-color:#fff}
157
+ .minimalist.color-alt .fp-buffer{background-color:#999}
158
+ .minimalist.color-alt2 .fp-progress{background-color:#900}
159
+ .functional{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
160
+ .functional *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
161
+ .functional a:focus{outline:0}
162
+ .functional video{width:100%}
163
+ .functional.is-ipad video{-webkit-transform:translateX(-2048px);}
164
+ .is-ready.functional.is-ipad video{-webkit-transform:translateX(0)}
165
+ .functional .fp-engine,.functional .fp-ui,.functional .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
166
+ .functional .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
167
+ .functional .fp-message h2{font-size:120%;margin-bottom:1em}
168
+ .functional .fp-message p{color:#666;font-size:95%}
169
+ .functional .fp-controls{position:absolute;bottom:0;width:100%;}
170
+ .no-background.functional .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
171
+ .is-fullscreen.functional .fp-controls{bottom:3px}
172
+ .is-mouseover.functional .fp-controls{bottom:0}
173
+ .functional .fp-waiting{display:none;margin:19% auto;text-align:center;}
174
+ .functional .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
175
+ .functional .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
176
+ .functional .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
177
+ .functional .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
178
+ .functional .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
179
+ .functional .fp-waiting p{color:#ccc;font-weight:bold}
180
+ .functional .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
181
+ .functional .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
182
+ .functional .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
183
+ .is-help.functional .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
184
+ .functional .fp-help .fp-help-section{margin:3%}
185
+ .functional .fp-help .fp-help-basics{margin-top:6%}
186
+ .functional .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
187
+ .functional .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
188
+ .functional .fp-help small{font-size:90%;color:#aaa}
189
+ .functional .fp-help .fp-close{display:block}
190
+ @media (max-width: 600px){.functional .fp-help p{font-size:9px}
191
+ }.functional .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
192
+ .functional .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
193
+ .functional .fp-subtitle p:after{content:'';clear:both}
194
+ .functional .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
195
+ .functional .fp-fullscreen,.functional .fp-unload,.functional .fp-mute,.functional .fp-embed,.functional .fp-close,.functional .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
196
+ .color-light.functional .fp-fullscreen,.color-light.functional .fp-unload,.color-light.functional .fp-mute,.color-light.functional .fp-embed,.color-light.functional .fp-close,.color-light.functional .fp-play{background-image:url(img/black.png);}
197
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.functional .fp-fullscreen,.color-light.functional .fp-unload,.color-light.functional .fp-mute,.color-light.functional .fp-embed,.color-light.functional .fp-close,.color-light.functional .fp-play{background-image:url(img/black@x2.png)}
198
+ }@media (-webkit-min-device-pixel-ratio: 2){.functional .fp-fullscreen,.functional .fp-unload,.functional .fp-mute,.functional .fp-embed,.functional .fp-close,.functional .fp-play{background-image:url(img/white@x2.png)}
199
+ }.is-splash.functional .fp-ui,.is-paused.functional .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
200
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.functional .fp-ui,.is-paused.functional .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
201
+ }.color-light.is-splash.functional .fp-ui,.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black.png)}
202
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.functional .fp-ui,.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black@x2.png)}
203
+ }.is-fullscreen.functional .fp-ui{background-size:auto}
204
+ .is-seeking.functional .fp-ui,.is-loading.functional .fp-ui{background-image:none}
205
+ .functional .fp-logo{position:absolute;top:auto;left:15px;bottom:40px;cursor:pointer;display:none;z-index:100;}
206
+ .functional .fp-logo img{width:100%}
207
+ .is-embedded.functional .fp-logo{display:block}
208
+ .fixed-controls.functional .fp-logo{bottom:15px}
209
+ .functional .fp-fullscreen,.functional .fp-unload,.functional .fp-close{position:absolute;top:10px;left:auto;right:10px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
210
+ .functional .fp-unload,.functional .fp-close{background-position:14px -175px;display:none}
211
+ .functional .fp-play{display:none;width:27px;height:30px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
212
+ .play-button.functional .fp-play{display:block}
213
+ .is-paused.functional .fp-play{background-position:9px 7px}
214
+ .functional.is-ready.is-closeable .fp-unload{display:block}
215
+ .functional.is-ready.is-closeable .fp-fullscreen{display:none}
216
+ .functional.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
217
+ .functional.is-fullscreen .fp-unload,.functional.is-fullscreen .fp-close{display:none !important}
218
+ .functional .fp-timeline{height:3px;position:relative;overflow:hidden;top:10px;height:10px;margin:0 165px 0 55px;}
219
+ .no-volume.functional .fp-timeline{margin-right:75px}
220
+ .no-mute.functional .fp-timeline{margin-right:55px}
221
+ .play-button.functional .fp-timeline{margin-left:72px}
222
+ .is-long.functional .fp-timeline{margin:0 195px 0 85px;}
223
+ .no-volume.is-long.functional .fp-timeline{margin-right:105px}
224
+ .no-mute.is-long.functional .fp-timeline{margin-right:85px}
225
+ .play-button.is-long.functional .fp-timeline{margin-left:102px}
226
+ .aside-time.functional .fp-timeline,.no-time.functional .fp-timeline{margin:0 120px 0 10px}
227
+ .aside-time.no-volume.functional .fp-timeline,.no-time.no-volume.functional .fp-timeline{margin-right:30px}
228
+ .aside-time.no-mute.functional .fp-timeline,.no-time.no-mute.functional .fp-timeline{margin-right:10px}
229
+ .play-button.no-time.functional .fp-timeline,.play-button.aside-time.functional .fp-timeline{margin-left:27px}
230
+ .functional .fp-buffer,.functional .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
231
+ .functional .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
232
+ .functional .fp-volume{position:absolute;top:11px;right:10px}
233
+ .functional .fp-mute{width:10px;height:15px;float:left;position:relative;top:-3.5px;left:;cursor:pointer;background-position:-2px -99px;}
234
+ .no-mute.functional .fp-mute{display:none}
235
+ .functional .fp-volumeslider{width:90px;height:8px;cursor:col-resize;float:left;}
236
+ .no-volume.functional .fp-volumeslider{display:none}
237
+ .functional .fp-volumelevel{height:100%}
238
+ .functional .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
239
+ .functional .fp-time.is-inverted .fp-duration{display:none}
240
+ .functional .fp-time.is-inverted .fp-remaining{display:inline}
241
+ .functional .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:10px}
242
+ .no-time.functional .fp-time{display:none}
243
+ .is-long.functional .fp-time em{width:65px}
244
+ .functional .fp-elapsed{left:10px;}
245
+ .play-button.functional .fp-elapsed{left:27px}
246
+ .functional .fp-remaining,.functional .fp-duration{right:120px;color:#eee;}
247
+ .no-volume.functional .fp-remaining,.no-volume.functional .fp-duration{right:30px}
248
+ .no-mute.functional .fp-remaining,.no-mute.functional .fp-duration{right:10px}
249
+ .functional .fp-remaining{display:none}
250
+ .functional.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
251
+ .functional.color-light .fp-remaining,.functional.color-light .fp-duration{color:#666}
252
+ .functional.aside-time .fp-time{position:absolute;top:10px;left:10px;bottom:auto !important;width:100px;}
253
+ .functional.aside-time .fp-time strong,.functional.aside-time .fp-time em{position:static}
254
+ .functional.aside-time .fp-time .fp-elapsed{margin-right:10px}
255
+ .functional.is-long.aside-time .fp-time{width:130px}
256
+ .functional.is-splash,.functional.is-poster{cursor:pointer;}
257
+ .functional.is-splash .fp-controls,.functional.is-poster .fp-controls,.functional.is-splash .fp-fullscreen,.functional.is-poster .fp-fullscreen,.functional.is-splash .fp-unload,.functional.is-poster .fp-unload,.functional.is-splash .fp-time,.functional.is-poster .fp-time,.functional.is-splash .fp-embed,.functional.is-poster .fp-embed{display:none !important}
258
+ .functional.is-poster .fp-engine{top:-9999em}
259
+ .functional.is-loading .fp-waiting{display:block}
260
+ .functional.is-loading .fp-controls,.functional.is-loading .fp-time{display:none}
261
+ .functional.is-loading .fp-ui{background-position:-9999em}
262
+ .functional.is-seeking .fp-waiting{display:block}
263
+ .functional.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
264
+ .functional.is-error{border:1px solid #909090;background:#fdfdfd !important;}
265
+ .functional.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
266
+ .functional.is-error .fp-message{display:block}
267
+ .functional.is-error object,.functional.is-error video,.functional.is-error .fp-controls,.functional.is-error .fp-time,.functional.is-error .fp-subtitle{display:none}
268
+ .functional.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
269
+ .functional.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
270
+ .functional.is-mouseout .fp-timeline{margin:0 !important}
271
+ .functional.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
272
+ .functional.is-mouseout .fp-fullscreen,.functional.is-mouseout .fp-unload,.functional.is-mouseout .fp-elapsed,.functional.is-mouseout .fp-remaining,.functional.is-mouseout .fp-duration,.functional.is-mouseout .fp-embed,.functional.is-mouseout .fp-volume,.functional.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
273
+ .functional.is-mouseover .fp-controls,.functional.fixed-controls .fp-controls{height:30px}
274
+ .functional.is-mouseover .fp-fullscreen,.functional.fixed-controls .fp-fullscreen,.functional.is-mouseover .fp-unload,.functional.fixed-controls .fp-unload,.functional.is-mouseover .fp-elapsed,.functional.fixed-controls .fp-elapsed,.functional.is-mouseover .fp-remaining,.functional.fixed-controls .fp-remaining,.functional.is-mouseover .fp-duration,.functional.fixed-controls .fp-duration,.functional.is-mouseover .fp-embed,.functional.fixed-controls .fp-embed,.functional.is-mouseover .fp-logo,.functional.fixed-controls .fp-logo,.functional.is-mouseover .fp-volume,.functional.fixed-controls .fp-volume,.functional.is-mouseover .fp-play,.functional.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
275
+ .functional.fixed-controls .fp-volume{display:block}
276
+ .functional.fixed-controls .fp-controls{bottom:-30px;}
277
+ .is-fullscreen.functional.fixed-controls .fp-controls{bottom:0}
278
+ .functional.fixed-controls .fp-time em{bottom:-20px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
279
+ .is-fullscreen.functional.fixed-controls .fp-time em{bottom:10px}
280
+ .functional.is-disabled .fp-progress{background-color:#999}
281
+ .functional .fp-embed{position:absolute;top:10px;left:10px;display:block;width:25px;height:20px;background-position:3px -237px}
282
+ .functional .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
283
+ .functional .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
284
+ .functional .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
285
+ .functional .fp-embed-code label{display:block;color:#999}
286
+ .functional.is-embedding .fp-embed,.functional.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
287
+ .functional.aside-time .fp-embed{left:100px}
288
+ .functional.aside-time .fp-embed-code{left:130px}
289
+ .functional.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
290
+ .functional.is-long.aside-time .fp-embed{left:130px}
291
+ .functional.no-time .fp-embed{left:10px !important}
292
+ @-moz-keyframes pulse{0%{opacity:0}
293
+ 100%{opacity:1}
294
+ }@-webkit-keyframes pulse{0%{opacity:0}
295
+ 100%{opacity:1}
296
+ }@-o-keyframes pulse{0%{opacity:0}
297
+ 100%{opacity:1}
298
+ }@-ms-keyframes pulse{0%{opacity:0}
299
+ 100%{opacity:1}
300
+ }@keyframes pulse{0%{opacity:0}
301
+ 100%{opacity:1}
302
+ }.functional .fp-controls{background-color:#111}
303
+ .functional .fp-timeline{background-color:#555}
304
+ .functional .fp-buffer{background-color:#eee}
305
+ .functional .fp-progress{background-color:#4da5d8}
306
+ .functional .fp-volumelevel{background-color:#fff}
307
+ .functional .fp-volumeslider{background-color:#555}
308
+ .functional .fp-timeline,.functional .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.2) rgba(17,17,17,0.05)}
309
+ .functional .fp-controls,.functional .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.4)),to(rgba(255,255,255,0.01)))}
310
+ .functional .fp-timeline,.functional .fp-buffer,.functional .fp-progress,.functional .fp-volumeslider,.functional .fp-volumelevel{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}
311
+ .functional.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
312
+ .functional.color-light .fp-timeline,.functional.color-light .fp-volumeslider{border-color:#eee #ccc}
313
+ .functional.color-light .fp-timeline,.functional.color-light .fp-volumeslider{background-color:#ccc;font-size:10px}
314
+ .functional.color-alt .fp-progress{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
315
+ .functional.color-alt .fp-timeline,.functional.color-alt .fp-volumeslider{background-color:#111}
316
+ .functional.color-alt2 .fp-progress{background-color:#900}
317
+ .playful{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
318
+ .playful *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
319
+ .playful a:focus{outline:0}
320
+ .playful video{width:100%}
321
+ .playful.is-ipad video{-webkit-transform:translateX(-2048px);}
322
+ .is-ready.playful.is-ipad video{-webkit-transform:translateX(0)}
323
+ .playful .fp-engine,.playful .fp-ui,.playful .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
324
+ .playful .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
325
+ .playful .fp-message h2{font-size:120%;margin-bottom:1em}
326
+ .playful .fp-message p{color:#666;font-size:95%}
327
+ .playful .fp-controls{position:absolute;bottom:0;width:100%;}
328
+ .no-background.playful .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
329
+ .is-fullscreen.playful .fp-controls{bottom:3px}
330
+ .is-mouseover.playful .fp-controls{bottom:0}
331
+ .playful .fp-waiting{display:none;margin:19% auto;text-align:center;}
332
+ .playful .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
333
+ .playful .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
334
+ .playful .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
335
+ .playful .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
336
+ .playful .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
337
+ .playful .fp-waiting p{color:#ccc;font-weight:bold}
338
+ .playful .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
339
+ .playful .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
340
+ .playful .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
341
+ .is-help.playful .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
342
+ .playful .fp-help .fp-help-section{margin:3%}
343
+ .playful .fp-help .fp-help-basics{margin-top:6%}
344
+ .playful .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
345
+ .playful .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
346
+ .playful .fp-help small{font-size:90%;color:#aaa}
347
+ .playful .fp-help .fp-close{display:block}
348
+ @media (max-width: 600px){.playful .fp-help p{font-size:9px}
349
+ }.playful .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
350
+ .playful .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
351
+ .playful .fp-subtitle p:after{content:'';clear:both}
352
+ .playful .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
353
+ .playful .fp-fullscreen,.playful .fp-unload,.playful .fp-mute,.playful .fp-embed,.playful .fp-close,.playful .fp-play{background-image:url(img/playful_white.png);background-size:37px 300px;}
354
+ .color-light.playful .fp-fullscreen,.color-light.playful .fp-unload,.color-light.playful .fp-mute,.color-light.playful .fp-embed,.color-light.playful .fp-close,.color-light.playful .fp-play{background-image:url(img/playful_black.png);}
355
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.playful .fp-fullscreen,.color-light.playful .fp-unload,.color-light.playful .fp-mute,.color-light.playful .fp-embed,.color-light.playful .fp-close,.color-light.playful .fp-play{background-image:url(img/playful_black@x2.png)}
356
+ }@media (-webkit-min-device-pixel-ratio: 2){.playful .fp-fullscreen,.playful .fp-unload,.playful .fp-mute,.playful .fp-embed,.playful .fp-close,.playful .fp-play{background-image:url(img/playful_white@x2.png)}
357
+ }.is-splash.playful .fp-ui,.is-paused.playful .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
358
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.playful .fp-ui,.is-paused.playful .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
359
+ }.color-light.is-splash.playful .fp-ui,.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black.png)}
360
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.playful .fp-ui,.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black@x2.png)}
361
+ }.is-fullscreen.playful .fp-ui{background-size:auto}
362
+ .is-seeking.playful .fp-ui,.is-loading.playful .fp-ui{background-image:none}
363
+ .playful .fp-logo{position:absolute;top:auto;left:15px;bottom:45px;cursor:pointer;display:none;z-index:100;}
364
+ .playful .fp-logo img{width:100%}
365
+ .is-embedded.playful .fp-logo{display:block}
366
+ .fixed-controls.playful .fp-logo{bottom:15px}
367
+ .playful .fp-fullscreen,.playful .fp-unload,.playful .fp-close{position:absolute;top:12px;left:auto;right:12px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
368
+ .playful .fp-unload,.playful .fp-close{background-position:14px -175px;display:none}
369
+ .playful .fp-play{display:none;width:27px;height:35px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
370
+ .play-button.playful .fp-play{display:block}
371
+ .is-paused.playful .fp-play{background-position:9px 7px}
372
+ .playful.is-ready.is-closeable .fp-unload{display:block}
373
+ .playful.is-ready.is-closeable .fp-fullscreen{display:none}
374
+ .playful.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
375
+ .playful.is-fullscreen .fp-unload,.playful.is-fullscreen .fp-close{display:none !important}
376
+ .playful .fp-timeline{height:3px;position:relative;overflow:hidden;top:12px;height:11px;margin:0 199px 0 59px;}
377
+ .no-volume.playful .fp-timeline{margin-right:109px}
378
+ .no-mute.playful .fp-timeline{margin-right:59px}
379
+ .play-button.playful .fp-timeline{margin-left:74px}
380
+ .is-long.playful .fp-timeline{margin:0 229px 0 89px;}
381
+ .no-volume.is-long.playful .fp-timeline{margin-right:139px}
382
+ .no-mute.is-long.playful .fp-timeline{margin-right:89px}
383
+ .play-button.is-long.playful .fp-timeline{margin-left:104px}
384
+ .aside-time.playful .fp-timeline,.no-time.playful .fp-timeline{margin:0 152px 0 12px}
385
+ .aside-time.no-volume.playful .fp-timeline,.no-time.no-volume.playful .fp-timeline{margin-right:62px}
386
+ .aside-time.no-mute.playful .fp-timeline,.no-time.no-mute.playful .fp-timeline{margin-right:12px}
387
+ .play-button.no-time.playful .fp-timeline,.play-button.aside-time.playful .fp-timeline{margin-left:27px}
388
+ .playful .fp-buffer,.playful .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
389
+ .playful .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
390
+ .playful .fp-volume{position:absolute;top:12px;right:12px}
391
+ .playful .fp-mute{width:38px;height:20px;float:left;position:relative;top:-4.5px;left:;cursor:pointer;background-position:-2px -99px;}
392
+ .no-mute.playful .fp-mute{display:none}
393
+ .playful .fp-volumeslider{width:90px;height:11px;cursor:col-resize;float:left;}
394
+ .no-volume.playful .fp-volumeslider{display:none}
395
+ .playful .fp-volumelevel{height:100%}
396
+ .playful .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
397
+ .playful .fp-time.is-inverted .fp-duration{display:none}
398
+ .playful .fp-time.is-inverted .fp-remaining{display:inline}
399
+ .playful .fp-time em{width:35px;height:11px;line-height:11px;text-align:center;position:absolute;bottom:12px}
400
+ .no-time.playful .fp-time{display:none}
401
+ .is-long.playful .fp-time em{width:65px}
402
+ .playful .fp-elapsed{left:12px;}
403
+ .play-button.playful .fp-elapsed{left:27px}
404
+ .playful .fp-remaining,.playful .fp-duration{right:152px;color:#eee;}
405
+ .no-volume.playful .fp-remaining,.no-volume.playful .fp-duration{right:62px}
406
+ .no-mute.playful .fp-remaining,.no-mute.playful .fp-duration{right:12px}
407
+ .playful .fp-remaining{display:none}
408
+ .playful.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
409
+ .playful.color-light .fp-remaining,.playful.color-light .fp-duration{color:#666}
410
+ .playful.aside-time .fp-time{position:absolute;top:12px;left:12px;bottom:auto !important;width:110px;}
411
+ .playful.aside-time .fp-time strong,.playful.aside-time .fp-time em{position:static}
412
+ .playful.aside-time .fp-time .fp-elapsed{margin-right:12px}
413
+ .playful.is-long.aside-time .fp-time{width:130px}
414
+ .playful.is-splash,.playful.is-poster{cursor:pointer;}
415
+ .playful.is-splash .fp-controls,.playful.is-poster .fp-controls,.playful.is-splash .fp-fullscreen,.playful.is-poster .fp-fullscreen,.playful.is-splash .fp-unload,.playful.is-poster .fp-unload,.playful.is-splash .fp-time,.playful.is-poster .fp-time,.playful.is-splash .fp-embed,.playful.is-poster .fp-embed{display:none !important}
416
+ .playful.is-poster .fp-engine{top:-9999em}
417
+ .playful.is-loading .fp-waiting{display:block}
418
+ .playful.is-loading .fp-controls,.playful.is-loading .fp-time{display:none}
419
+ .playful.is-loading .fp-ui{background-position:-9999em}
420
+ .playful.is-seeking .fp-waiting{display:block}
421
+ .playful.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
422
+ .playful.is-error{border:1px solid #909090;background:#fdfdfd !important;}
423
+ .playful.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
424
+ .playful.is-error .fp-message{display:block}
425
+ .playful.is-error object,.playful.is-error video,.playful.is-error .fp-controls,.playful.is-error .fp-time,.playful.is-error .fp-subtitle{display:none}
426
+ .playful.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
427
+ .playful.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
428
+ .playful.is-mouseout .fp-timeline{margin:0 !important}
429
+ .playful.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
430
+ .playful.is-mouseout .fp-fullscreen,.playful.is-mouseout .fp-unload,.playful.is-mouseout .fp-elapsed,.playful.is-mouseout .fp-remaining,.playful.is-mouseout .fp-duration,.playful.is-mouseout .fp-embed,.playful.is-mouseout .fp-volume,.playful.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
431
+ .playful.is-mouseover .fp-controls,.playful.fixed-controls .fp-controls{height:35px}
432
+ .playful.is-mouseover .fp-fullscreen,.playful.fixed-controls .fp-fullscreen,.playful.is-mouseover .fp-unload,.playful.fixed-controls .fp-unload,.playful.is-mouseover .fp-elapsed,.playful.fixed-controls .fp-elapsed,.playful.is-mouseover .fp-remaining,.playful.fixed-controls .fp-remaining,.playful.is-mouseover .fp-duration,.playful.fixed-controls .fp-duration,.playful.is-mouseover .fp-embed,.playful.fixed-controls .fp-embed,.playful.is-mouseover .fp-logo,.playful.fixed-controls .fp-logo,.playful.is-mouseover .fp-volume,.playful.fixed-controls .fp-volume,.playful.is-mouseover .fp-play,.playful.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
433
+ .playful.fixed-controls .fp-volume{display:block}
434
+ .playful.fixed-controls .fp-controls{bottom:-35px;}
435
+ .is-fullscreen.playful.fixed-controls .fp-controls{bottom:0}
436
+ .playful.fixed-controls .fp-time em{bottom:-23px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
437
+ .is-fullscreen.playful.fixed-controls .fp-time em{bottom:12px}
438
+ .playful.is-disabled .fp-progress{background-color:#999}
439
+ .playful .fp-embed{position:absolute;top:12px;left:12px;display:block;width:25px;height:20px;background-position:3px -237px}
440
+ .playful .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
441
+ .playful .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
442
+ .playful .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
443
+ .playful .fp-embed-code label{display:block;color:#999}
444
+ .playful.is-embedding .fp-embed,.playful.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
445
+ .playful.aside-time .fp-embed{left:110px}
446
+ .playful.aside-time .fp-embed-code{left:140px}
447
+ .playful.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
448
+ .playful.is-long.aside-time .fp-embed{left:130px}
449
+ .playful.no-time .fp-embed{left:12px !important}
450
+ @-moz-keyframes pulse{0%{opacity:0}
451
+ 100%{opacity:1}
452
+ }@-webkit-keyframes pulse{0%{opacity:0}
453
+ 100%{opacity:1}
454
+ }@-o-keyframes pulse{0%{opacity:0}
455
+ 100%{opacity:1}
456
+ }@-ms-keyframes pulse{0%{opacity:0}
457
+ 100%{opacity:1}
458
+ }@keyframes pulse{0%{opacity:0}
459
+ 100%{opacity:1}
460
+ }.playful .fp-controls{background-color:#111}
461
+ .playful .fp-timeline,.playful .fp-volumeslider{background-color:#555;background-image:-moz-linear-gradient(rgba(255,255,255,0.01),rgba(255,255,255,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.01)),to(rgba(255,255,255,0.3)))}
462
+ .playful .fp-buffer{background-color:#eee}
463
+ .playful .fp-progress{background-color:#008000}
464
+ .playful .fp-volumelevel{background-color:#fff}
465
+ .playful .fp-mute{display:block;width:38px;height:20px;background-position:0 -79px;}
466
+ .is-muted.playful .fp-mute{background-position:0 -109px;opacity:.85;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85)}
467
+ .playful .fp-play{background-position:9px -20px;}
468
+ .is-paused.playful .fp-play{background-position:9px 11px}
469
+ .playful .fp-timeline,.playful .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.3) rgba(17,17,17,0.05)}
470
+ .playful .fp-controls,.playful .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.3)),to(rgba(255,255,255,0.01)))}
471
+ .playful .fp-timeline,.playful .fp-progress,.playful .fp-buffer,.playful .fp-volumeslider,.playful .fp-volumelevel{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
472
+ .playful.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
473
+ .playful.color-light .fp-timeline,.playful.color-light .fp-volumeslider{border-color:#eee #ccc}
474
+ .playful.color-alt .fp-progress,.playful.color-alt .fp-volumelevel{background-color:#111}
475
+ .playful.color-alt2 .fp-progress,.playful.color-alt2 .fp-volumelevel{background-color:#900}
lib/flowplayer.js ADDED
@@ -0,0 +1,2222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+
3
+ Flowplayer v5.3.2 (Monday, 28. January 2013 10:02AM) | flowplayer.org/license
4
+
5
+ */
6
+ !function($) {
7
+
8
+ /*
9
+ jQuery.browser for 1.9+
10
+
11
+ We all love feature detection but that's sometimes not enough.
12
+
13
+ @author Tero Piirainen
14
+ */
15
+ !function($) {
16
+
17
+ if (!$.browser) {
18
+
19
+ var b = $.browser = {},
20
+ ua = navigator.userAgent.toLowerCase(),
21
+ match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
22
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
23
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
24
+ /(msie) ([\w.]+)/.exec(ua) ||
25
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || [];
26
+
27
+ if (match[1]) {
28
+ b[match[1]] = true;
29
+ b.version = match[2] || "0";
30
+ }
31
+
32
+ }
33
+
34
+ }(jQuery);
35
+ // auto-install (any video tag with parent .flowplayer)
36
+ $(function() {
37
+ if (typeof $.fn.flowplayer == 'function') {
38
+ $("video").parent(".flowplayer").flowplayer();
39
+ }
40
+ });
41
+
42
+ var instances = [],
43
+ extensions = [],
44
+ UA = navigator.userAgent,
45
+ use_native = /Android/.test(UA) && /Firefox/.test(UA);
46
+
47
+
48
+ /* flowplayer() */
49
+ window.flowplayer = function(fn) {
50
+ return use_native ? 0 :
51
+ $.isFunction(fn) ? extensions.push(fn) :
52
+ typeof fn == 'number' || fn === undefined ? instances[fn || 0] :
53
+ $(fn).data("flowplayer");
54
+ };
55
+
56
+
57
+ $.extend(flowplayer, {
58
+
59
+ version: '5.3.2',
60
+
61
+ engine: {},
62
+
63
+ conf: {},
64
+
65
+ support: {},
66
+
67
+ defaults: {
68
+
69
+ debug: false,
70
+
71
+ // true = forced playback
72
+ disabled: false,
73
+
74
+ // first engine to try
75
+ engine: 'html5',
76
+
77
+ fullscreen: window == window.top,
78
+
79
+ // keyboard shortcuts
80
+ keyboard: true,
81
+
82
+ // default aspect ratio
83
+ ratio: 9 / 16,
84
+
85
+ // scale flash object to video's aspect ratio in normal mode?
86
+ flashfit: false,
87
+
88
+ rtmp: 0,
89
+
90
+ splash: false,
91
+
92
+ swf: "http://releases.flowplayer.org/5.3.2/flowplayer.swf",
93
+
94
+ speeds: [0.25, 0.5, 1, 1.5, 2],
95
+
96
+ tooltip: true,
97
+
98
+ // initial volume level
99
+ volume: 1,
100
+
101
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#error-codes
102
+ errors: [
103
+
104
+ // video exceptions
105
+ '',
106
+ 'Video loading aborted',
107
+ 'Network error',
108
+ 'Video not properly encoded',
109
+ 'Video file not found',
110
+
111
+ // player exceptions
112
+ 'Unsupported video',
113
+ 'Skin not found',
114
+ 'SWF file not found',
115
+ 'Subtitles not found',
116
+ 'Invalid RTMP URL',
117
+ 'Unsupported video format. Try installing Adobe Flash.'
118
+ ],
119
+ errorUrls: ['','','','','','','','','','',
120
+ 'http://get.adobe.com/flashplayer/'
121
+ ]
122
+
123
+ }
124
+
125
+ });
126
+
127
+ // smartphones simply use native controls
128
+ if (use_native) {
129
+ return $(function() { $("video").attr("controls", "controls"); });
130
+ }
131
+
132
+ // keep track of players
133
+ var playerCount = 0;
134
+
135
+ // jQuery plugin
136
+ $.fn.flowplayer = function(opts, callback) {
137
+
138
+ if (typeof opts == 'string') opts = { swf: opts }
139
+ if ($.isFunction(opts)) { callback = opts; opts = {} }
140
+
141
+ return !opts && this.data("flowplayer") || this.each(function() {
142
+
143
+ // private variables
144
+ var root = $(this).addClass("is-loading"),
145
+ conf = $.extend({}, flowplayer.defaults, flowplayer.conf, opts, root.data()),
146
+ videoTag = $("video", root).addClass("fp-engine").removeAttr("controls"),
147
+ urlResolver = new URLResolver(videoTag),
148
+ storage = {},
149
+ lastSeekPosition,
150
+ engine;
151
+
152
+ root.data('fp-player_id', root.data('fp-player_id') || playerCount++);
153
+
154
+ try {
155
+ storage = window.localStorage || storage;
156
+ } catch(e) {}
157
+
158
+ /*** API ***/
159
+ var api = {
160
+
161
+ // properties
162
+ conf: conf,
163
+ currentSpeed: 1,
164
+ volumeLevel: storage.volume * 1 || conf.volume,
165
+ video: {},
166
+
167
+ // states
168
+ disabled: false,
169
+ finished: false,
170
+ loading: false,
171
+ muted: storage.muted == "true" || conf.muted,
172
+ paused: false,
173
+ playing: false,
174
+ ready: false,
175
+ splash: false,
176
+
177
+ // methods
178
+ load: function(video, callback) {
179
+
180
+ if (api.error || api.loading || api.disabled) return;
181
+
182
+ // resolve URL
183
+ video = urlResolver.resolve(video);
184
+ $.extend(video, engine.pick(video.sources));
185
+
186
+ if (video.src) {
187
+ var e = $.Event("load");
188
+ root.trigger(e, [api, video, engine]);
189
+
190
+ if (!e.isDefaultPrevented()) {
191
+ engine.load(video);
192
+
193
+ // callback
194
+ if ($.isFunction(video)) callback = video;
195
+ if (callback) root.one("ready", callback);
196
+ }
197
+ }
198
+
199
+ return api;
200
+ },
201
+
202
+ pause: function(fn) {
203
+ if (api.ready && !api.seeking && !api.disabled && !api.loading) {
204
+ engine.pause();
205
+ api.one("pause", fn);
206
+ }
207
+ return api;
208
+ },
209
+
210
+ resume: function() {
211
+
212
+ if (api.ready && api.paused && !api.disabled) {
213
+ engine.resume();
214
+
215
+ // Firefox (+others?) does not fire "resume" after finish
216
+ if (api.finished) {
217
+ api.trigger("resume");
218
+ api.finished = false;
219
+ }
220
+ }
221
+
222
+ return api;
223
+ },
224
+
225
+ toggle: function() {
226
+ return api.ready ? api.paused ? api.resume() : api.pause() : api.load();
227
+ },
228
+
229
+ /*
230
+ seek(1.4) -> 1.4s time
231
+ seek(true) -> 10% forward
232
+ seek(false) -> 10% backward
233
+ */
234
+ seek: function(time, callback) {
235
+ if (api.ready) {
236
+
237
+ if (typeof time == "boolean") {
238
+ var delta = api.video.duration * 0.1;
239
+ time = api.video.time + (time ? delta : -delta);
240
+ }
241
+
242
+ time = lastSeekPosition = Math.min(Math.max(time, 0), api.video.duration);
243
+ engine.seek(time);
244
+ if ($.isFunction(callback)) root.one("seek", callback);
245
+ }
246
+ return api;
247
+ },
248
+
249
+ /*
250
+ seekTo(1) -> 10%
251
+ seekTo(2) -> 20%
252
+ seekTo(3) -> 30%
253
+ ...
254
+ seekTo() -> last position
255
+ */
256
+ seekTo: function(position, fn) {
257
+ var time = position === undefined ? lastSeekPosition : api.video.duration * 0.1 * position;
258
+ return api.seek(time, fn);
259
+ },
260
+
261
+ mute: function(flag) {
262
+ if (flag == undefined) flag = !api.muted;
263
+ storage.muted = api.muted = flag;
264
+ api.volume(flag ? 0 : storage.volume);
265
+ api.trigger("mute", flag);
266
+ },
267
+
268
+ volume: function(level) {
269
+ if (api.ready) {
270
+ level = Math.min(Math.max(level, 0), 1);
271
+ storage.volume = level;
272
+ engine.volume(level);
273
+ }
274
+
275
+ return api;
276
+ },
277
+
278
+ speed: function(val, callback) {
279
+
280
+ if (api.ready) {
281
+
282
+ // increase / decrease
283
+ if (typeof val == "boolean") {
284
+ val = conf.speeds[$.inArray(api.currentSpeed, conf.speeds) + (val ? 1 : -1)] || api.currentSpeed;
285
+ }
286
+
287
+ engine.speed(val);
288
+ if (callback) root.one("speed", callback);
289
+ }
290
+
291
+ return api;
292
+ },
293
+
294
+
295
+ stop: function() {
296
+ if (api.ready) {
297
+ api.pause();
298
+ api.seek(0, function() {
299
+ root.trigger("stop");
300
+ });
301
+ }
302
+ return api;
303
+ },
304
+
305
+ unload: function() {
306
+ if (!root.hasClass("is-embedding")) {
307
+
308
+ if (conf.splash) {
309
+ api.trigger("unload");
310
+ engine.unload();
311
+ } else {
312
+ api.stop();
313
+ }
314
+ }
315
+ return api;
316
+ },
317
+
318
+ disable: function(flag) {
319
+ if (flag === undefined) flag = !api.disabled;
320
+
321
+ if (flag != api.disabled) {
322
+ api.disabled = flag;
323
+ api.trigger("disable", flag);
324
+ }
325
+ }
326
+
327
+ };
328
+
329
+
330
+ /* event binding / unbinding */
331
+ $.each(['bind', 'one', 'unbind'], function(i, key) {
332
+ api[key] = function(type, fn) {
333
+ root[key](type, fn);
334
+ return api;
335
+ };
336
+ });
337
+
338
+ api.trigger = function(event, arg) {
339
+ root.trigger(event, [api, arg]);
340
+ return api;
341
+ };
342
+
343
+
344
+ /*** Behaviour ***/
345
+
346
+ root.bind("boot", function() {
347
+
348
+ // conf
349
+ $.each(['autoplay', 'loop', 'preload', 'poster'], function(i, key) {
350
+ var val = videoTag.attr(key);
351
+ if (val !== undefined) conf[key] = val ? val : true;
352
+ });
353
+
354
+ // splash
355
+ if (conf.splash || root.hasClass("is-splash") || !flowplayer.support.firstframe) {
356
+ api.splash = conf.splash = conf.autoplay = true;
357
+ root.addClass("is-splash");
358
+ videoTag.attr("preload", "none");
359
+ }
360
+
361
+ // extensions
362
+ $.each(extensions, function(i) {
363
+ this(api, root);
364
+ });
365
+
366
+ // 1. use the configured engine
367
+ engine = flowplayer.engine[conf.engine];
368
+ if (engine) engine = engine(api, root);
369
+
370
+ if (engine.pick(urlResolver.initialSources)) {
371
+ api.engine = conf.engine;
372
+
373
+ // 2. failed -> try another
374
+ } else {
375
+ $.each(flowplayer.engine, function(name, impl) {
376
+ if (name != conf.engine) {
377
+ engine = this(api, root);
378
+ if (engine.pick(urlResolver.initialSources)) api.engine = name;
379
+ return false;
380
+ }
381
+ });
382
+ }
383
+
384
+ // no engine
385
+ if (!api.engine) return api.trigger("error", { code: flowplayer.support.flash ? 5 : 10 });
386
+
387
+ // start
388
+ conf.splash ? api.unload() : api.load();
389
+
390
+ // disabled
391
+ if (conf.disabled) api.disable();
392
+
393
+ // initial callback
394
+ root.one("ready", callback);
395
+
396
+ // instances
397
+ instances.push(api);
398
+
399
+
400
+ }).bind("load", function(e, api, video) {
401
+
402
+ // unload others
403
+ if (conf.splash) {
404
+ $(".flowplayer").filter(".is-ready, .is-loading").not(root).each(function() {
405
+ var api = $(this).data("flowplayer");
406
+ if (api.conf.splash) api.unload();
407
+ });
408
+ }
409
+
410
+ // loading
411
+ root.addClass("is-loading");
412
+ api.loading = true;
413
+
414
+
415
+ }).bind("ready", function(e, api, video) {
416
+ video.time = 0;
417
+ api.video = video;
418
+
419
+ function notLoading() {
420
+ root.removeClass("is-loading");
421
+ api.loading = false;
422
+ }
423
+
424
+ if (conf.splash) root.one("progress", notLoading);
425
+ else notLoading();
426
+
427
+ // saved state
428
+ if (api.muted) api.mute(true);
429
+ else api.volume(api.volumeLevel);
430
+
431
+
432
+ }).bind("unload", function(e) {
433
+ if (conf.splash) videoTag.remove();
434
+ root.removeClass("is-loading");
435
+ api.loading = false;
436
+
437
+
438
+ }).bind("ready unload", function(e) {
439
+ var is_ready = e.type == "ready";
440
+ root.toggleClass("is-splash", !is_ready).toggleClass("is-ready", is_ready);
441
+ api.ready = is_ready;
442
+ api.splash = !is_ready;
443
+
444
+
445
+ }).bind("progress", function(e, api, time) {
446
+ api.video.time = time;
447
+
448
+
449
+ }).bind("speed", function(e, api, val) {
450
+ api.currentSpeed = val;
451
+
452
+ }).bind("volume", function(e, api, level) {
453
+ api.volumeLevel = Math.round(level * 100) / 100;
454
+ if (!api.muted) storage.volume = level;
455
+ else if (level) api.mute(false);
456
+
457
+
458
+ }).bind("beforeseek seek", function(e) {
459
+ api.seeking = e.type == "beforeseek";
460
+ root.toggleClass("is-seeking", api.seeking);
461
+
462
+ }).bind("ready pause resume unload finish stop", function(e, _api, video) {
463
+
464
+ // PAUSED: pause / finish
465
+ api.paused = /pause|finish|unload|stop/.test(e.type);
466
+
467
+ // SHAKY HACK: first-frame / preload=none
468
+ if (e.type == "ready") {
469
+ if (video) {
470
+ api.paused = !video.duration || !conf.autoplay && (conf.preload != 'none' || api.engine == 'flash');
471
+ }
472
+ }
473
+
474
+ // the opposite
475
+ api.playing = !api.paused;
476
+
477
+ // CSS classes
478
+ root.toggleClass("is-paused", api.paused).toggleClass("is-playing", api.playing);
479
+
480
+ // sanity check
481
+ if (!api.load.ed) api.pause();
482
+
483
+ }).bind("finish", function(e) {
484
+ api.finished = true;
485
+
486
+ }).bind("error", function() {
487
+ videoTag.remove();
488
+ });
489
+
490
+ // boot
491
+ root.trigger("boot", [api, root]).data("flowplayer", api);
492
+
493
+ });
494
+
495
+ };
496
+
497
+ !function() {
498
+
499
+ var s = flowplayer.support,
500
+ browser = $.browser,
501
+ video = $("<video loop autoplay preload/>")[0],
502
+ IS_IE = browser.msie,
503
+ UA = navigator.userAgent,
504
+ IS_IPAD = /iPad|MeeGo/.test(UA),
505
+ IS_IPHONE = /iP(hone|od)/i.test(UA),
506
+ IS_ANDROID = /Android/.test(UA),
507
+ IS_SILK = /Silk/.test(UA),
508
+ IPAD_VER = IS_IPAD ? parseFloat(/Version\/(\d\.\d)/.exec(UA)[1], 10) : 0;
509
+
510
+
511
+ $.extend(s, {
512
+ video: !!video.canPlayType,
513
+ subtitles: !!video.addTextTrack,
514
+ fullscreen: typeof document.webkitCancelFullScreen == 'function'
515
+ && !/Mac OS X 10_5.+Version\/5\.0\.\d Safari/.test(UA) || document.mozFullScreenEnabled,
516
+ fullscreen_keyboard: !browser.safari || browser.version > "536",
517
+ inlineBlock: !(IS_IE && browser.version < 8),
518
+ touch: ('ontouchstart' in window),
519
+ dataload: !IS_IPAD && !IS_IPHONE,
520
+ zeropreload: !IS_IE && !IS_ANDROID, // IE supports only preload=metadata
521
+ volume: !IS_IPAD && !IS_ANDROID && !IS_IPHONE && !IS_SILK,
522
+ cachedVideoTag: !IS_IPAD && !IS_IPHONE,
523
+ firstframe: !IS_IPHONE && !IS_IPAD && !IS_ANDROID && !IS_SILK
524
+ });
525
+
526
+ // flashVideo
527
+ try {
528
+ var ver = IS_IE ? new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable('$version') :
529
+ navigator.plugins["Shockwave Flash"].description;
530
+
531
+ ver = ver.split(/\D+/);
532
+ if (ver.length && !ver[0]) ver = ver.slice(1);
533
+
534
+ s.flashVideo = ver[0] > 9 || ver[0] == 9 && ver[3] >= 115;
535
+
536
+ } catch (ignored) {}
537
+
538
+ // animation
539
+ s.animation = (function() {
540
+ var vendors = ['','Webkit','Moz','O','ms','Khtml'], el = $("<p/>")[0];
541
+
542
+ for (var i = 0; i < vendors.length; i++) {
543
+ if (el.style[vendors[i] + 'AnimationName'] !== 'undefined') return true;
544
+ }
545
+ })();
546
+
547
+
548
+
549
+ }();
550
+
551
+
552
+ /* The most minimal Flash embedding */
553
+
554
+ // movie required in opts
555
+ function embed(swf, flashvars) {
556
+
557
+ var id = "obj" + ("" + Math.random()).slice(2, 15),
558
+ tag = '<object class="fp-engine" id="' + id+ '" name="' + id + '" ';
559
+
560
+ tag += $.browser.msie ? 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">' :
561
+ ' data="' + swf + '" type="application/x-shockwave-flash">';
562
+
563
+ var opts = {
564
+ width: "100%",
565
+ height: "100%",
566
+ allowscriptaccess: "always",
567
+ wmode: "transparent",
568
+ quality: "high",
569
+ flashvars: "",
570
+
571
+ // https://github.com/flowplayer/flowplayer/issues/13#issuecomment-9369919
572
+ movie: swf + ($.browser.msie ? "?" + id : ""),
573
+ name: id
574
+ };
575
+
576
+ // flashvars
577
+ $.each(flashvars, function(key, value) {
578
+ opts.flashvars += key + "=" + value + "&";
579
+ });
580
+
581
+ // parameters
582
+ $.each(opts, function(key, value) {
583
+ tag += '<param name="' + key + '" value="'+ value +'"/>';
584
+ });
585
+
586
+ tag += "</object>";
587
+
588
+ return $(tag);
589
+ }
590
+
591
+
592
+ // Flash is buggy allover
593
+ if (window.attachEvent) {
594
+ window.attachEvent("onbeforeunload", function() {
595
+ __flash_savedUnloadHandler = __flash_unloadHandler = function() {};
596
+ });
597
+ }
598
+
599
+
600
+ flowplayer.engine.flash = function(player, root) {
601
+
602
+ var conf = player.conf,
603
+ video = player.video,
604
+ callbackId,
605
+ objectTag,
606
+ api;
607
+
608
+ var engine = {
609
+
610
+ pick: function(sources) {
611
+
612
+ if (flowplayer.support.flashVideo) {
613
+
614
+ // always pick video/flash first
615
+ var flash = $.grep(sources, function(source) { return source.type == 'flash'; })[0];
616
+ if (flash) return flash;
617
+
618
+ for (var i = 0, source; i < sources.length; i++) {
619
+ source = sources[i];
620
+ if (/mp4|flv/.test(source.type)) return source;
621
+ }
622
+ }
623
+ },
624
+
625
+ load: function(video) {
626
+
627
+ var html5Tag = $("video", root),
628
+ url = video.src.replace(/&amp;/g, '%26').replace(/&/g, '%26').replace(/=/g, '%3D'),
629
+ is_absolute = /^https?:/.test(url);
630
+
631
+ // html5 tag not needed (pause needed for firefox)
632
+ if (html5Tag.length > 0 && flowplayer.support.video) html5Tag[0].pause();
633
+ html5Tag.remove();
634
+
635
+ // convert to absolute
636
+ if (!is_absolute && !conf.rtmp) url = $("<a/>").attr("href", url)[0].href;
637
+
638
+ if (api) {
639
+ api.__play(url);
640
+
641
+ } else {
642
+
643
+ callbackId = "fp" + ("" + Math.random()).slice(3, 15);
644
+
645
+ var opts = {
646
+ hostname: conf.embedded ? conf.hostname : location.hostname,
647
+ url: url,
648
+ callback: "jQuery."+ callbackId
649
+ };
650
+
651
+ if (is_absolute) delete conf.rtmp;
652
+
653
+ // optional conf
654
+ $.each(['key', 'autoplay', 'preload', 'rtmp', 'loop', 'debug'], function(i, key) {
655
+ if (conf[key]) opts[key] = conf[key];
656
+ });
657
+
658
+ objectTag = embed(conf.swf, opts);
659
+
660
+ objectTag.prependTo(root);
661
+
662
+ api = objectTag[0];
663
+
664
+ // throw error if no loading occurs
665
+ setTimeout(function() {
666
+ try {
667
+ if (!api.PercentLoaded()) {
668
+ return root.trigger("error", [player, { code: 7, url: conf.swf }]);
669
+ }
670
+ } catch (e) {}
671
+ }, 5000);
672
+
673
+ // listen
674
+ $[callbackId] = function(type, arg) {
675
+
676
+ if (conf.debug && type != "status") console.log("--", type, arg);
677
+
678
+ var event = $.Event(type);
679
+
680
+ switch (type) {
681
+
682
+ // RTMP sends a lot of finish events in vain
683
+ // case "finish": if (conf.rtmp) return;
684
+ case "ready": arg = $.extend(video, arg); break;
685
+ case "click": event.flash = true; break;
686
+ case "keydown": event.which = arg; break;
687
+ case "seek": video.time = arg; break;
688
+ case "buffered": video.buffered = true; break;
689
+
690
+ case "status":
691
+ player.trigger("progress", arg.time);
692
+
693
+ if (arg.buffer <= video.bytes && !video.buffered) {
694
+ video.buffer = arg.buffer / video.bytes * video.duration;
695
+ player.trigger("buffer", video.buffer);
696
+
697
+ } else if (video.buffered) player.trigger("buffered");
698
+
699
+ break;
700
+
701
+ }
702
+
703
+ // add some delay to that player is truly ready after an event
704
+ setTimeout(function() { player.trigger(event, arg); }, 1)
705
+
706
+ };
707
+
708
+ }
709
+
710
+ },
711
+
712
+ // not supported yet
713
+ speed: $.noop,
714
+
715
+
716
+ unload: function() {
717
+ api && api.__unload && api.__unload();
718
+ delete $[callbackId];
719
+ $("object", root).remove();
720
+ api = 0;
721
+ }
722
+
723
+ };
724
+
725
+ $.each("pause,resume,seek,volume".split(","), function(i, name) {
726
+
727
+ engine[name] = function(arg) {
728
+
729
+ if (player.ready) {
730
+
731
+ if (name == 'seek' && player.video.time && !player.paused) {
732
+ player.trigger("beforeseek");
733
+ }
734
+
735
+ if (arg === undefined) {
736
+ api["__" + name]();
737
+
738
+ } else {
739
+ api["__" + name](arg);
740
+ }
741
+
742
+ }
743
+ };
744
+
745
+ });
746
+
747
+ var win = $(window),
748
+ origH = root.height(),
749
+ origW = root.width();
750
+
751
+ // handle Flash object aspect ratio
752
+ player.bind("ready fullscreen fullscreen-exit", function(e) {
753
+ if (player.conf.flashfit || /full/.test(e.type)) {
754
+
755
+ var fs = player.isFullscreen,
756
+ truefs = fs && FS_SUPPORT,
757
+ ie7 = !flowplayer.support.inlineBlock,
758
+ screenW = fs ? (truefs ? screen.availWidth : win.width()) : origW,
759
+ screenH = fs ? (truefs ? screen.availHeight : win.height()) : origH,
760
+
761
+ // default values for fullscreen-exit without flashfit
762
+ hmargin = truefs ? screen.width - screen.availWidth : 0,
763
+ vmargin = truefs ? screen.height - screen.availHeight : 0,
764
+ objwidth = ie7 ? origW : '',
765
+ objheight = ie7 ? origH : '',
766
+
767
+ aspectratio, dataratio;
768
+
769
+ if (player.conf.flashfit || e.type === "fullscreen") {
770
+ aspectratio = player.video.width / player.video.height,
771
+ dataratio = player.video.height / player.video.width,
772
+ objheight = Math.max(dataratio * screenW),
773
+ objwidth = Math.max(aspectratio * screenH);
774
+ objheight = objheight > screenH ? objwidth * dataratio : objheight;
775
+ objheight = Math.min(Math.round(objheight), screenH);
776
+ objwidth = objwidth > screenW ? objheight * aspectratio : objwidth;
777
+ objwidth = Math.min(Math.round(objwidth), screenW);
778
+ vmargin = Math.max(Math.round((screenH + vmargin - objheight) / 2), 0);
779
+ hmargin = Math.max(Math.round((screenW + hmargin - objwidth) / 2), 0);
780
+ }
781
+
782
+ $("object", root).css({
783
+ width: objwidth,
784
+ height: objheight,
785
+ marginTop: vmargin,
786
+ marginLeft: hmargin
787
+ });
788
+ }
789
+ });
790
+
791
+ return engine;
792
+
793
+ };
794
+
795
+
796
+ var VIDEO = $('<video/>')[0];
797
+
798
+ // HTML5 --> Flowplayer event
799
+ var EVENTS = {
800
+
801
+ // fired
802
+ ended: 'finish',
803
+ pause: 'pause',
804
+ play: 'resume',
805
+ progress: 'buffer',
806
+ timeupdate: 'progress',
807
+ volumechange: 'volume',
808
+ ratechange: 'speed',
809
+ seeking: 'beforeseek',
810
+ seeked: 'seek',
811
+ // abort: 'resume',
812
+
813
+ // not fired
814
+ loadeddata: 'ready',
815
+ // loadedmetadata: 0,
816
+ // canplay: 0,
817
+
818
+ // error events
819
+ // load: 0,
820
+ // emptied: 0,
821
+ // empty: 0,
822
+ error: 'error',
823
+ dataunavailable: 'error'
824
+
825
+ };
826
+
827
+ function round(val) {
828
+ return Math.round(val * 100) / 100;
829
+ }
830
+
831
+ function getType(type) {
832
+ return /mpegurl/i.test(type) ? "application/x-mpegurl" : "video/" + type;
833
+ }
834
+
835
+ function canPlay(type) {
836
+ if (!/^(video|application)/.test(type))
837
+ type = getType(type);
838
+ return !!VIDEO.canPlayType(type).replace("no", '');
839
+ }
840
+
841
+ var videoTagCache;
842
+ var createVideoTag = function(video) {
843
+ if (videoTagCache) {
844
+ return videoTagCache.attr({type: getType(video.type), src: video.src});
845
+ }
846
+ return (videoTagCache = $("<video/>", {
847
+ src: video.src,
848
+ type: getType(video.type),
849
+ 'class': 'fp-engine',
850
+ 'autoplay': 'autoplay',
851
+ preload: 'none'
852
+ }));
853
+ }
854
+
855
+ flowplayer.engine.html5 = function(player, root) {
856
+
857
+ var videoTag = $("video", root),
858
+ support = flowplayer.support,
859
+ track = $("track", videoTag),
860
+ conf = player.conf,
861
+ self,
862
+ timer,
863
+ api;
864
+
865
+ return self = {
866
+
867
+ pick: function(sources) {
868
+ if (support.video) {
869
+ for (var i = 0, source; i < sources.length; i++) {
870
+ if (canPlay(sources[i].type)) return sources[i];
871
+ }
872
+ }
873
+ },
874
+
875
+ load: function(video) {
876
+
877
+ if (conf.splash && !api) {
878
+
879
+ videoTag = createVideoTag(video).prependTo(root);
880
+
881
+ if (track.length) videoTag.append(track.attr("default", ""));
882
+
883
+ if (conf.loop) videoTag.attr("loop", "loop");
884
+
885
+ api = videoTag[0];
886
+
887
+ } else {
888
+
889
+ api = videoTag[0];
890
+
891
+ // change of clip
892
+ if (player.video.src && video.src != player.video.src) {
893
+ videoTag.attr("autoplay", "autoplay");
894
+ api.src = video.src;
895
+
896
+ // preload=none or no initial "loadeddata" event
897
+ } else if (conf.preload == 'none' || !support.dataload) {
898
+
899
+ if (support.zeropreload) {
900
+ player.trigger("ready", video).trigger("pause").one("ready", function() {
901
+ root.trigger("resume");
902
+ });
903
+
904
+ } else {
905
+ player.one("ready", function() {
906
+ root.trigger("pause");
907
+ });
908
+ }
909
+ }
910
+
911
+ }
912
+
913
+ listen(api, $("source", videoTag).add(videoTag), video);
914
+
915
+ // iPad (+others?) demands load()
916
+ if (conf.preload != 'none' || !support.zeropreload || !support.dataload) api.load();
917
+ if (conf.splash) api.load();
918
+ },
919
+
920
+ pause: function() {
921
+ api.pause();
922
+ },
923
+
924
+ resume: function() {
925
+ api.play();
926
+ },
927
+
928
+ speed: function(val) {
929
+ api.playbackRate = val;
930
+ },
931
+
932
+ seek: function(time) {
933
+ try {
934
+ api.currentTime = time;
935
+ } catch (ignored) {}
936
+ },
937
+
938
+ volume: function(level) {
939
+ api.volume = level;
940
+ },
941
+
942
+ unload: function() {
943
+ $("video", root).remove();
944
+ if (!support.cachedVideoTag) videoTagCache = null;
945
+ timer = clearInterval(timer);
946
+ api = 0;
947
+ }
948
+
949
+ };
950
+
951
+ function listen(api, sources, video) {
952
+ // listen only once
953
+
954
+ if (api.listeners && api.listeners.hasOwnProperty(root.data('fp-player_id'))) return;
955
+ (api.listeners || (api.listeners = {}))[root.data('fp-player_id')] = true;
956
+
957
+ sources.bind("error", function(e) {
958
+ try {
959
+ if (e.originalEvent && $(e.originalEvent.originalTarget).is('img')) return e.preventDefault();
960
+ if (canPlay($(e.target).attr("type"))) {
961
+ player.trigger("error", { code: 4 });
962
+ }
963
+ } catch (er) {
964
+ // Most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427
965
+ }
966
+ });
967
+
968
+ $.each(EVENTS, function(type, flow) {
969
+
970
+ api.addEventListener(type, function(e) {
971
+
972
+ // safari hack for bad URL (10s before fails)
973
+ if (flow == "progress" && e.srcElement && e.srcElement.readyState === 0) {
974
+ setTimeout(function() {
975
+ if (!player.video.duration) {
976
+ flow = "error";
977
+ player.trigger(flow, { code: 4 });
978
+ }
979
+ }, 10000);
980
+ }
981
+
982
+ if (conf.debug && !/progress/.test(flow)) console.log(type, "->", flow, e);
983
+
984
+ // no events if player not ready
985
+ if (!player.ready && !/ready|error/.test(flow) || !flow || !$("video", root).length) { return; }
986
+
987
+ var event = $.Event(flow), arg;
988
+
989
+ switch (flow) {
990
+
991
+ case "ready":
992
+
993
+ arg = $.extend(video, {
994
+ duration: api.duration,
995
+ width: api.videoWidth,
996
+ height: api.videoHeight,
997
+ url: api.currentSrc,
998
+ src: api.currentSrc
999
+ });
1000
+
1001
+ try {
1002
+ arg.seekable = api.seekable && api.seekable.end(null);
1003
+
1004
+ } catch (ignored) {}
1005
+
1006
+ // buffer
1007
+ timer = timer || setInterval(function() {
1008
+
1009
+ try {
1010
+ arg.buffer = api.buffered.end(null);
1011
+
1012
+ } catch (ignored) {}
1013
+
1014
+ if (arg.buffer) {
1015
+ if (arg.buffer <= arg.duration && !arg.buffered) {
1016
+ player.trigger("buffer", e);
1017
+
1018
+ } else if (!arg.buffered) {
1019
+ arg.buffered = true;
1020
+ player.trigger("buffer", e).trigger("buffered", e);
1021
+ clearInterval(timer);
1022
+ timer = 0;
1023
+ }
1024
+ }
1025
+
1026
+ }, 250);
1027
+
1028
+ break;
1029
+
1030
+ case "progress": case "seek":
1031
+
1032
+ var dur = player.video.duration
1033
+
1034
+ if (api.currentTime > 0) {
1035
+ arg = Math.max(api.currentTime, 0);
1036
+ if (dur && arg && arg >= dur) event.type = "finish";
1037
+ break;
1038
+
1039
+ } else if (flow == 'progress') {
1040
+ return;
1041
+ }
1042
+
1043
+
1044
+ case "speed":
1045
+ arg = round(api.playbackRate);
1046
+ break;
1047
+
1048
+ case "volume":
1049
+ arg = round(api.volume);
1050
+ break;
1051
+
1052
+ case "error":
1053
+ try {
1054
+ arg = (e.srcElement || e.originalTarget).error;
1055
+ } catch (er) {
1056
+ // Most likely https://bugzilla.mozilla.org/show_bug.cgi?id=208427
1057
+ return;
1058
+ }
1059
+ }
1060
+
1061
+ player.trigger(event, arg);
1062
+
1063
+ }, false);
1064
+
1065
+ });
1066
+
1067
+ }
1068
+
1069
+ };
1070
+ var TYPE_RE = /.(\w{3,4})$/i;
1071
+
1072
+ function parseSource(el) {
1073
+
1074
+ var src = el.attr("src"),
1075
+ type = el.attr("type") || "",
1076
+ suffix = src.split(TYPE_RE)[1];
1077
+
1078
+ type = /mpegurl/.test(type) ? "mpegurl" : type.replace("video/", "");
1079
+
1080
+ return { src: src, suffix: suffix || type, type: type || suffix };
1081
+ }
1082
+
1083
+ /* Resolves video object from initial configuration and from load() method */
1084
+ function URLResolver(videoTag) {
1085
+
1086
+ var self = this,
1087
+ sources = [];
1088
+
1089
+ // initial sources
1090
+ $("source", videoTag).each(function() {
1091
+ sources.push(parseSource($(this)));
1092
+ });
1093
+
1094
+ if (!sources.length) sources.push(parseSource(videoTag));
1095
+
1096
+ self.initialSources = sources;
1097
+
1098
+ self.resolve = function(video) {
1099
+ if (!video) return { sources: sources };
1100
+
1101
+ if ($.isArray(video)) {
1102
+
1103
+ video = { sources: $.map(video, function(el) {
1104
+ var type; $.each(el, function(key, value) { type = key; });
1105
+ el.type = type;
1106
+ el.src = el[type];
1107
+ delete el[type];
1108
+ return el;
1109
+ })};
1110
+
1111
+ } else if (typeof video == 'string') {
1112
+
1113
+ video = { src: video, sources: [] };
1114
+
1115
+ $.each(sources, function(i, source) {
1116
+ if (source.type != 'flash') {
1117
+ video.sources.push({
1118
+ type: source.type,
1119
+ src: video.src.replace(TYPE_RE, "") + "." + source.suffix
1120
+ });
1121
+ }
1122
+ });
1123
+ }
1124
+
1125
+ return video;
1126
+ };
1127
+
1128
+ };
1129
+ /* A minimal jQuery Slider plugin with all goodies */
1130
+
1131
+ // skip IE policies
1132
+ // document.ondragstart = function () { return false; };
1133
+
1134
+
1135
+ // execute function every <delay> ms
1136
+ $.throttle = function(fn, delay) {
1137
+ var locked;
1138
+
1139
+ return function () {
1140
+ if (!locked) {
1141
+ fn.apply(this, arguments);
1142
+ locked = 1;
1143
+ setTimeout(function () { locked = 0; }, delay);
1144
+ }
1145
+ };
1146
+ };
1147
+
1148
+
1149
+ $.fn.slider2 = function() {
1150
+
1151
+ var IS_IPAD = /iPad/.test(navigator.userAgent);
1152
+
1153
+ return this.each(function() {
1154
+
1155
+ var root = $(this),
1156
+ doc = $(document),
1157
+ progress = root.children(":last"),
1158
+ disabled,
1159
+ offset,
1160
+ width,
1161
+ height,
1162
+ vertical,
1163
+ size,
1164
+ maxValue,
1165
+ max,
1166
+
1167
+ /* private */
1168
+ calc = function() {
1169
+ offset = root.offset();
1170
+ width = root.width();
1171
+ height = root.height();
1172
+
1173
+ /* exit from fullscreen can mess this up.*/
1174
+ // vertical = height > width;
1175
+
1176
+ size = vertical ? height : width;
1177
+ max = toDelta(maxValue);
1178
+ },
1179
+
1180
+ fire = function(value) {
1181
+ if (!disabled && value != api.value && (!maxValue || value < maxValue)) {
1182
+ root.trigger("slide", [ value ]);
1183
+ api.value = value;
1184
+ }
1185
+ },
1186
+
1187
+ mousemove = function(e) {
1188
+ var delta = vertical ? e.pageY - offset.top : e.pageX - offset.left;
1189
+ delta = Math.max(0, Math.min(max || size, delta));
1190
+
1191
+ var value = delta / size;
1192
+ if (vertical) value = 1 - value;
1193
+ return move(value, 0, true);
1194
+ },
1195
+
1196
+ move = function(value, speed) {
1197
+ if (speed === undefined) { speed = 0; }
1198
+ if (value > 1) value = 1;
1199
+
1200
+ var to = (Math.round(value * 1000) / 10) + "%";
1201
+
1202
+ if (!maxValue || value <= maxValue) {
1203
+ if (!IS_IPAD) progress.stop(); // stop() broken on iPad
1204
+ progress.animate(vertical ? { height: to } : { width: to }, speed, "linear");
1205
+ }
1206
+
1207
+ return value;
1208
+ },
1209
+
1210
+ toDelta = function(value) {
1211
+ return Math.max(0, Math.min(size, vertical ? (1 - value) * height : value * width));
1212
+ },
1213
+
1214
+ /* public */
1215
+ api = {
1216
+
1217
+ max: function(value) {
1218
+ maxValue = value;
1219
+ },
1220
+
1221
+ disable: function(flag) {
1222
+ disabled = flag;
1223
+ },
1224
+
1225
+ slide: function(value, speed, fireEvent) {
1226
+ calc();
1227
+ if (fireEvent) fire(value);
1228
+ move(value, speed);
1229
+ }
1230
+
1231
+ };
1232
+
1233
+ calc();
1234
+
1235
+ // bound dragging into document
1236
+ root.data("api", api).bind("mousedown.sld", function(e) {
1237
+
1238
+ e.preventDefault();
1239
+
1240
+ if (!disabled) {
1241
+
1242
+ // begin --> recalculate. allows dynamic resizing of the slider
1243
+ var delayedFire = $.throttle(fire, 100);
1244
+ calc();
1245
+ api.dragging = true;
1246
+ fire(mousemove(e));
1247
+
1248
+ doc.bind("mousemove.sld", function(e) {
1249
+ e.preventDefault();
1250
+ delayedFire(mousemove(e));
1251
+
1252
+ }).one("mouseup", function() {
1253
+ api.dragging = false;
1254
+ doc.unbind("mousemove.sld");
1255
+ });
1256
+
1257
+ }
1258
+
1259
+ });
1260
+
1261
+ });
1262
+
1263
+ };
1264
+
1265
+ function zeropad(val) {
1266
+ val = parseInt(val, 10);
1267
+ return val >= 10 ? val : "0" + val;
1268
+ }
1269
+
1270
+ // display seconds in hh:mm:ss format
1271
+ function format(sec) {
1272
+
1273
+ sec = sec || 0;
1274
+
1275
+ var h = Math.floor(sec / 3600),
1276
+ min = Math.floor(sec / 60);
1277
+
1278
+ sec = sec - (min * 60);
1279
+
1280
+ if (h >= 1) {
1281
+ min -= h * 60;
1282
+ return h + ":" + zeropad(min) + ":" + zeropad(sec);
1283
+ }
1284
+
1285
+ return zeropad(min) + ":" + zeropad(sec);
1286
+ }
1287
+
1288
+ flowplayer(function(api, root) {
1289
+
1290
+ var conf = api.conf,
1291
+ support = flowplayer.support,
1292
+ hovertimer;
1293
+
1294
+ root.addClass("flowplayer").append('\
1295
+ <div class="ratio"/>\
1296
+ <div class="ui">\
1297
+ <div class="waiting"><em/><em/><em/></div>\
1298
+ <a class="fullscreen"/>\
1299
+ <a class="unload"/>\
1300
+ <p class="speed"/>\
1301
+ <div class="controls">\
1302
+ <a class="play"></a>\
1303
+ <div class="timeline">\
1304
+ <div class="buffer"/>\
1305
+ <div class="progress"/>\
1306
+ </div>\
1307
+ <div class="volume">\
1308
+ <a class="mute"></a>\
1309
+ <div class="volumeslider">\
1310
+ <div class="volumelevel"/>\
1311
+ </div>\
1312
+ </div>\
1313
+ </div>\
1314
+ <div class="time">\
1315
+ <em class="elapsed">00:00</em>\
1316
+ <em class="remaining"/>\
1317
+ <em class="duration">00:00</em>\
1318
+ </div>\
1319
+ <div class="message"><h2/><p/></div>\
1320
+ </div>'.replace(/class="/g, 'class="fp-')
1321
+ );
1322
+
1323
+ function find(klass) {
1324
+ return $(".fp-" + klass, root);
1325
+ }
1326
+
1327
+ // widgets
1328
+ var progress = find("progress"),
1329
+ buffer = find("buffer"),
1330
+ elapsed = find("elapsed"),
1331
+ remaining = find("remaining"),
1332
+ waiting = find("waiting"),
1333
+ ratio = find("ratio"),
1334
+ speed = find("speed"),
1335
+ durationEl = find("duration"),
1336
+ origRatio = ratio.css("paddingTop"),
1337
+
1338
+ // sliders
1339
+ timeline = find("timeline").slider2(),
1340
+ timelineApi = timeline.data("api"),
1341
+
1342
+ volume = find("volume"),
1343
+ fullscreen = find("fullscreen"),
1344
+ volumeSlider = find("volumeslider").slider2(),
1345
+ volumeApi = volumeSlider.data("api"),
1346
+ noToggle = root.is(".fixed-controls, .no-toggle");
1347
+
1348
+ // aspect ratio
1349
+ function setRatio(val) {
1350
+ if (!parseInt(origRatio, 10)) ratio.css("paddingTop", val * 100 + "%");
1351
+ if (!support.inlineBlock) $("object", root).height(root.height());
1352
+ }
1353
+
1354
+ function hover(flag) {
1355
+ root.toggleClass("is-mouseover", flag).toggleClass("is-mouseout", !flag);
1356
+ }
1357
+
1358
+ // loading...
1359
+ if (!support.animation) waiting.html("<p>loading &hellip;</p>");
1360
+
1361
+ setRatio(conf.ratio);
1362
+
1363
+ // no fullscreen in IFRAME
1364
+ try {
1365
+ if (!conf.fullscreen) fullscreen.remove();
1366
+
1367
+ } catch (e) {
1368
+ fullscreen.remove();
1369
+ }
1370
+
1371
+
1372
+ api.bind("ready", function() {
1373
+
1374
+ var duration = api.video.duration;
1375
+
1376
+ timelineApi.disable(!duration);
1377
+
1378
+ setRatio(api.video.videoHeight / api.video.videoWidth);
1379
+
1380
+ // initial time & volume
1381
+ durationEl.add(remaining).html(format(duration));
1382
+
1383
+ // do we need additional space for showing hour
1384
+ ((duration >= 3600) && root.addClass('is-long')) || root.removeClass('is-long');
1385
+ volumeApi.slide(api.volumeLevel);
1386
+
1387
+
1388
+ }).bind("unload", function() {
1389
+ if (!origRatio) ratio.css("paddingTop", "");
1390
+
1391
+ // buffer
1392
+ }).bind("buffer", function() {
1393
+ var video = api.video,
1394
+ max = video.buffer / video.duration;
1395
+
1396
+ if (!video.seekable) timelineApi.max(max);
1397
+ if (max < 1) buffer.css("width", (max * 100) + "%");
1398
+ else buffer.css({ width: '100%' });
1399
+
1400
+ }).bind("speed", function(e, api, val) {
1401
+ speed.text(val + "x").addClass("fp-hilite");
1402
+ setTimeout(function() { speed.removeClass("fp-hilite") }, 1000);
1403
+
1404
+ }).bind("buffered", function() {
1405
+ buffer.css({ width: '100%' });
1406
+ timelineApi.max(1);
1407
+
1408
+ // progress
1409
+ }).bind("progress", function() {
1410
+
1411
+ var time = api.video.time,
1412
+ duration = api.video.duration;
1413
+
1414
+ if (!timelineApi.dragging) {
1415
+ timelineApi.slide(time / duration, api.seeking ? 0 : 250);
1416
+ }
1417
+
1418
+ elapsed.html(format(time));
1419
+ remaining.html("-" + format(duration - time));
1420
+
1421
+ }).bind("finish resume seek", function(e) {
1422
+ root.toggleClass("is-finished", e.type == "finish");
1423
+
1424
+ }).bind("stop", function() {
1425
+ elapsed.html(format(0));
1426
+ timelineApi.slide(0, 100);
1427
+
1428
+ }).bind("finish", function() {
1429
+ elapsed.html(format(api.video.duration));
1430
+ timelineApi.slide(1, 100);
1431
+ root.removeClass("is-seeking");
1432
+
1433
+ // misc
1434
+ }).bind("beforeseek", function() {
1435
+ progress.stop();
1436
+
1437
+ }).bind("volume", function() {
1438
+ volumeApi.slide(api.volumeLevel);
1439
+
1440
+
1441
+ }).bind("disable", function() {
1442
+ var flag = api.disabled;
1443
+ timelineApi.disable(flag);
1444
+ volumeApi.disable(flag);
1445
+ root.toggleClass("is-disabled", api.disabled);
1446
+
1447
+ }).bind("mute", function(e, api, flag) {
1448
+ root.toggleClass("is-muted", flag);
1449
+
1450
+ }).bind("error", function(e, api, error) {
1451
+ root.removeClass("is-loading").addClass("is-error");
1452
+
1453
+ if (error) {
1454
+ error.message = conf.errors[error.code];
1455
+ api.error = true;
1456
+
1457
+ var el = $(".fp-message", root);
1458
+ $("h2", el).text(api.engine + ": " + error.message);
1459
+ $("p", el).text(error.url || api.video.url || api.video.src || conf.errorUrls[error.code]);
1460
+ root.unbind("mouseenter click").removeClass("is-mouseover");
1461
+ }
1462
+
1463
+
1464
+ // hover
1465
+ }).bind("mouseenter mouseleave", function(e) {
1466
+ if (noToggle) return;
1467
+
1468
+ var is_over = e.type == "mouseenter",
1469
+ lastMove;
1470
+
1471
+ // is-mouseover/out
1472
+ hover(is_over);
1473
+
1474
+ if (is_over) {
1475
+
1476
+ root.bind("pause.x mousemove.x volume.x", function() {
1477
+ hover(true);
1478
+ lastMove = new Date;
1479
+ });
1480
+
1481
+ hovertimer = setInterval(function() {
1482
+ if (new Date - lastMove > 5000) {
1483
+ hover(false)
1484
+ lastMove = new Date;
1485
+ }
1486
+ }, 100);
1487
+
1488
+ } else {
1489
+ root.unbind(".x");
1490
+ clearInterval(hovertimer);
1491
+ }
1492
+
1493
+
1494
+ // allow dragging over the player edge
1495
+ }).bind("mouseleave", function() {
1496
+
1497
+ if (timelineApi.dragging || volumeApi.dragging) {
1498
+ root.addClass("is-mouseover").removeClass("is-mouseout");
1499
+ }
1500
+
1501
+ // click
1502
+ }).bind("click.player", function(e) {
1503
+ if ($(e.target).is(".fp-ui, .fp-engine") || e.flash) {
1504
+ e.preventDefault();
1505
+ return api.toggle();
1506
+ }
1507
+ });
1508
+
1509
+ // poster -> background image
1510
+ if (conf.poster) root.css("backgroundImage", "url(" + conf.poster + ")");
1511
+
1512
+ var bc = root.css("backgroundColor"),
1513
+ has_bg = root.css("backgroundImage") != "none" || bc && bc != "rgba(0, 0, 0, 0)" && bc != "transparent";
1514
+
1515
+ // is-poster class
1516
+ if (has_bg && !conf.splash && !conf.autoplay) {
1517
+
1518
+ api.bind("ready stop", function() {
1519
+ root.addClass("is-poster").one("ready progress", function() {
1520
+ root.removeClass("is-poster");
1521
+ });
1522
+ });
1523
+
1524
+ }
1525
+
1526
+ // default background color if not present
1527
+ if (!has_bg && !support.firstframe) {
1528
+ root.css("backgroundColor", "#555");
1529
+ }
1530
+
1531
+ $(".fp-toggle, .fp-play", root).click(api.toggle);
1532
+
1533
+ /* controlbar elements */
1534
+ $.each(['mute', 'fullscreen', 'unload'], function(i, key) {
1535
+ find(key).click(function() {
1536
+ api[key]();
1537
+ });
1538
+ });
1539
+
1540
+ timeline.bind("slide", function(e, val) {
1541
+ api.seeking = true;
1542
+ api.seek(val * api.video.duration);
1543
+ });
1544
+
1545
+ volumeSlider.bind("slide", function(e, val) {
1546
+ api.volume(val);
1547
+ });
1548
+
1549
+ // times
1550
+ find("time").click(function(e) {
1551
+ $(this).toggleClass("is-inverted");
1552
+ });
1553
+
1554
+ hover(noToggle);
1555
+
1556
+ });
1557
+
1558
+ var focused,
1559
+ focusedRoot,
1560
+ IS_HELP = "is-help";
1561
+
1562
+ // keyboard. single global listener
1563
+ $(document).bind("keydown.fp", function(e) {
1564
+
1565
+ var el = focused,
1566
+ metaKeyPressed = e.ctrlKey || e.metaKey || e.altKey,
1567
+ key = e.which,
1568
+ conf = el && el.conf;
1569
+
1570
+ if (!el || !conf.keyboard || el.disabled) return;
1571
+
1572
+ // help dialog (shift key not truly required)
1573
+ if ($.inArray(key, [63, 187, 191, 219]) != -1) {
1574
+ focusedRoot.toggleClass(IS_HELP);
1575
+ return false;
1576
+ }
1577
+
1578
+ // close help / unload
1579
+ if (key == 27 && focusedRoot.hasClass(IS_HELP)) {
1580
+ focusedRoot.toggleClass(IS_HELP);
1581
+ return false;
1582
+ }
1583
+
1584
+ if (!metaKeyPressed && el.ready) {
1585
+
1586
+ e.preventDefault();
1587
+
1588
+ // slow motion / fast forward
1589
+ if (e.shiftKey) {
1590
+ if (key == 39) el.speed(true);
1591
+ else if (key == 37) el.speed(false);
1592
+ return;
1593
+ }
1594
+
1595
+ // 1, 2, 3, 4 ..
1596
+ if (key < 58 && key > 47) return el.seekTo(key - 48);
1597
+
1598
+ switch (key) {
1599
+ case 38: case 75: el.volume(el.volumeLevel + 0.15); break; // volume up
1600
+ case 40: case 74: el.volume(el.volumeLevel - 0.15); break; // volume down
1601
+ case 39: case 76: el.seeking = true; el.seek(true); break; // forward
1602
+ case 37: case 72: el.seeking = true; el.seek(false); break; // backward
1603
+ case 190: el.seekTo(); break; // to last seek position
1604
+ case 32: el.toggle(); break; // spacebar
1605
+ case 70: conf.fullscreen && el.fullscreen(); break; // toggle fullscreen
1606
+ case 77: el.mute(); break; // mute
1607
+ case 27: el[el.isFullscreen ? "fullscreen" : "unload"](); break; // esc
1608
+ }
1609
+
1610
+ }
1611
+
1612
+ });
1613
+
1614
+ flowplayer(function(api, root) {
1615
+
1616
+ // no keyboard configured
1617
+ if (!api.conf.keyboard) return;
1618
+
1619
+ // hover
1620
+ root.bind("mouseenter mouseleave", function(e) {
1621
+ focused = !api.disabled && e.type == 'mouseenter' ? api : 0;
1622
+ if (focused) focusedRoot = root;
1623
+ });
1624
+
1625
+ // TODO: add to player-layout.html
1626
+ root.append('\
1627
+ <div class="fp-help">\
1628
+ <a class="fp-close"></a>\
1629
+ <div class="fp-help-section fp-help-basics">\
1630
+ <p><em>space</em>play / pause</p>\
1631
+ <p><em>esc</em>stop</p>\
1632
+ <p><em>f</em>fullscreen</p>\
1633
+ <p><em>shift</em> + <em>&#8592;</em><em>&#8594;</em>slower / faster <small>(latest Chrome and Safari)</small></p>\
1634
+ </div>\
1635
+ <div class="fp-help-section">\
1636
+ <p><em>&#8593;</em><em>&#8595;</em>volume</p>\
1637
+ <p><em>m</em>mute</p>\
1638
+ </div>\
1639
+ <div class="fp-help-section">\
1640
+ <p><em>&#8592;</em><em>&#8594;</em>seek</p>\
1641
+ <p><em>&nbsp;. </em>seek to previous\
1642
+ </p><p><em>1</em><em>2</em>&hellip;<em>6</em> seek to 10%, 20%, &hellip;60% </p>\
1643
+ </div>\
1644
+ </div>\
1645
+ ');
1646
+
1647
+ if (api.conf.tooltip) {
1648
+ $(".fp-ui", root).attr("title", "Hit ? for help").on("mouseout.tip", function() {
1649
+ $(this).removeAttr("title").off("mouseout.tip");
1650
+ });
1651
+ }
1652
+
1653
+ $(".fp-close", root).click(function() {
1654
+ root.toggleClass(IS_HELP);
1655
+ });
1656
+
1657
+ });
1658
+
1659
+ var VENDOR = $.browser.mozilla ? "moz": "webkit",
1660
+ FS_ENTER = "fullscreen",
1661
+ FS_EXIT = "fullscreen-exit",
1662
+ FULL_PLAYER,
1663
+ FS_SUPPORT = flowplayer.support.fullscreen;
1664
+
1665
+
1666
+ // esc button
1667
+ $(document).bind(VENDOR + "fullscreenchange", function(e) {
1668
+ var el = $(document.webkitCurrentFullScreenElement || document.mozFullScreenElement);
1669
+
1670
+ if (el.length) {
1671
+ FULL_PLAYER = el.trigger(FS_ENTER, [el]);
1672
+ } else {
1673
+ FULL_PLAYER.trigger(FS_EXIT, [FULL_PLAYER]);
1674
+ }
1675
+
1676
+ });
1677
+
1678
+
1679
+ flowplayer(function(player, root) {
1680
+
1681
+ if (!player.conf.fullscreen) return;
1682
+
1683
+ var win = $(window),
1684
+ fsSeek = {pos: 0, play: false},
1685
+ scrollTop;
1686
+
1687
+ player.isFullscreen = false;
1688
+
1689
+ player.fullscreen = function(flag) {
1690
+
1691
+ if (player.disabled) return;
1692
+
1693
+ if (flag === undefined) flag = !player.isFullscreen;
1694
+
1695
+ if (flag) scrollTop = win.scrollTop();
1696
+
1697
+ if (FS_SUPPORT) {
1698
+
1699
+ if (flag) {
1700
+ root[0][VENDOR + 'RequestFullScreen'](
1701
+ flowplayer.support.fullscreen_keyboard ? Element.ALLOW_KEYBOARD_INPUT : undefined
1702
+ );
1703
+
1704
+ } else {
1705
+ document[VENDOR + 'CancelFullScreen']();
1706
+ }
1707
+
1708
+ } else {
1709
+ if (player.engine === "flash" && player.conf.rtmp)
1710
+ fsSeek = {pos: player.video.time, play: player.playing};
1711
+ player.trigger(flag ? FS_ENTER : FS_EXIT, [player])
1712
+ }
1713
+
1714
+ return player;
1715
+ };
1716
+
1717
+ var lastClick;
1718
+
1719
+ root.bind("mousedown.fs", function() {
1720
+ if (+new Date - lastClick < 150 && player.ready) player.fullscreen();
1721
+ lastClick = +new Date;
1722
+ });
1723
+
1724
+ player.bind(FS_ENTER, function(e) {
1725
+ root.addClass("is-fullscreen");
1726
+ player.isFullscreen = true;
1727
+
1728
+ }).bind(FS_EXIT, function(e) {
1729
+ root.removeClass("is-fullscreen");
1730
+ player.isFullscreen = false;
1731
+ win.scrollTop(scrollTop);
1732
+
1733
+ }).bind("ready", function () {
1734
+ if (fsSeek.pos && !isNaN(fsSeek.pos)) {
1735
+ setTimeout(function () {
1736
+ player.play(); // avoid hang in buffering state
1737
+ player.seek(fsSeek.pos);
1738
+ if (!fsSeek.play) {
1739
+ setTimeout(function () {
1740
+ player.pause();
1741
+ }, 100);
1742
+ }
1743
+ fsSeek = {pos: 0, play: false};
1744
+ }, 250);
1745
+ }
1746
+ });
1747
+
1748
+ });
1749
+
1750
+
1751
+ flowplayer(function(player, root) {
1752
+
1753
+ var conf = $.extend({ active: 'is-active', advance: true, query: ".fp-playlist a" }, player.conf),
1754
+ klass = conf.active;
1755
+
1756
+ // getters
1757
+ function els() {
1758
+ return $(conf.query, root);
1759
+ }
1760
+
1761
+ function active() {
1762
+ return $(conf.query + "." + klass, root);
1763
+ }
1764
+
1765
+
1766
+ player.play = function(i) {
1767
+ if (i === undefined) player.resume();
1768
+ else if (typeof i != 'number') player.load.apply(null, arguments);
1769
+ else els().eq(i).click();
1770
+ return player;
1771
+ };
1772
+
1773
+
1774
+ if (els().length) {
1775
+
1776
+ /* click -> play */
1777
+ root.on("click", conf.query, function(e) {
1778
+ var el = $(e.target).closest(conf.query);
1779
+ el.is("." + klass) ? player.toggle() : player.load(el.attr("href"));
1780
+ e.preventDefault();
1781
+ });
1782
+
1783
+ // disable single clip looping
1784
+ player.conf.loop = false;
1785
+
1786
+ // playlist wide cuepoint support
1787
+ var has_cuepoints = els().filter("[data-cuepoints]").length;
1788
+
1789
+ // highlight
1790
+ player.bind("load", function(e, api, video) {
1791
+
1792
+ // active
1793
+ var prev = active().removeClass(klass),
1794
+ el = $("a[href*='" + video.src.replace(TYPE_RE, "") + ".']", root).addClass(klass),
1795
+ clips = els(),
1796
+ index = clips.index(el),
1797
+ is_last = index == clips.length - 1;
1798
+
1799
+ // index
1800
+ root.removeClass("video" + clips.index(prev)).addClass("video" + index).toggleClass("last-video", is_last);
1801
+
1802
+ // video properties
1803
+ video.index = index;
1804
+ video.is_last = is_last;
1805
+
1806
+ // cuepoints
1807
+ if (has_cuepoints) player.cuepoints = el.data("cuepoints");
1808
+
1809
+
1810
+ // without namespace callback called only once. unknown rason.
1811
+ }).bind("unload.pl", function() {
1812
+ active().toggleClass(klass);
1813
+
1814
+ });
1815
+
1816
+ // api.next() / api.prev()
1817
+ $.each(['next', 'prev'], function(i, key) {
1818
+
1819
+ player[key] = function(e) {
1820
+ e && e.preventDefault();
1821
+
1822
+ // next (or previous) entry
1823
+ var el = active()[key]();
1824
+
1825
+ // cycle
1826
+ if (!el.length) el = els().filter(key == 'next' ? ':first' : ':last');;
1827
+
1828
+ el.click();
1829
+ };
1830
+
1831
+ $(".fp-" + key, root).click(player[key]);
1832
+ });
1833
+
1834
+ if (conf.advance) {
1835
+ root.unbind("finish.pl").bind("finish.pl", function() {
1836
+
1837
+ // next clip is found or loop
1838
+ if (active().next().length || conf.loop) {
1839
+ player.next();
1840
+
1841
+ // stop to last clip, play button starts from 1:st clip
1842
+ } else {
1843
+ root.addClass("is-playing"); // show play button
1844
+
1845
+ player.one("resume", function() {
1846
+ player.next();
1847
+ return false;
1848
+ });
1849
+ }
1850
+ });
1851
+ }
1852
+
1853
+ }
1854
+
1855
+
1856
+ });
1857
+
1858
+ var CUE_RE = / ?cue\d+ ?/;
1859
+
1860
+ flowplayer(function(player, root) {
1861
+
1862
+ var lastTime = 0;
1863
+
1864
+ player.cuepoints = player.conf.cuepoints || [];
1865
+
1866
+ function setClass(index) {
1867
+ root[0].className = root[0].className.replace(CUE_RE, " ");
1868
+ if (index >= 0) root.addClass("cue" + index);
1869
+ }
1870
+
1871
+ player.bind("progress", function(e, api, time) {
1872
+
1873
+ // avoid throwing multiple times
1874
+ if (lastTime && time - lastTime < 0.015) return lastTime = time;
1875
+ lastTime = time;
1876
+
1877
+ var cues = player.cuepoints || [];
1878
+
1879
+ for (var i = 0, cue; i < cues.length; i++) {
1880
+
1881
+ cue = cues[i];
1882
+ if (1 * cue) cue = { time: cue }
1883
+ if (cue.time < 0) cue.time = player.video.duration + cue.time;
1884
+ cue.index = i;
1885
+
1886
+ // progress_interval / 2 = 0.125
1887
+ if (Math.abs(cue.time - time) < 0.125 * player.currentSpeed) {
1888
+ setClass(i);
1889
+ root.trigger("cuepoint", [player, cue]);
1890
+ }
1891
+
1892
+ }
1893
+
1894
+ // no CSS class name
1895
+ }).bind("unload seek", setClass);
1896
+
1897
+ if (player.conf.generate_cuepoints) {
1898
+
1899
+ player.bind("ready", function() {
1900
+
1901
+ var cues = player.cuepoints || [],
1902
+ duration = player.video.duration,
1903
+ timeline = $(".fp-timeline", root).css("overflow", "visible");
1904
+
1905
+ $.each(cues, function(i, cue) {
1906
+
1907
+ var time = cue.time || cue;
1908
+ if (time < 0) time = duration + cue;
1909
+
1910
+ var el = $("<a/>").addClass("fp-cuepoint fp-cuepoint" + i)
1911
+ .css("left", (time / duration * 100) + "%");
1912
+
1913
+ el.appendTo(timeline).mousedown(function() {
1914
+ player.seek(time);
1915
+
1916
+ // preventDefault() doesn't work
1917
+ return false;
1918
+ });
1919
+
1920
+ });
1921
+
1922
+ });
1923
+
1924
+ }
1925
+
1926
+ });
1927
+ flowplayer(function(player, root, engine) {
1928
+
1929
+ var track = $("track", root),
1930
+ conf = player.conf;
1931
+
1932
+ if (flowplayer.support.subtitles) {
1933
+
1934
+ player.subtitles = track.length && track[0].track;
1935
+
1936
+ // use native when supported
1937
+ if (conf.nativesubtitles && conf.engine == 'html5') return;
1938
+ }
1939
+
1940
+ // avoid duplicate loads
1941
+ track.remove();
1942
+
1943
+ var TIMECODE_RE = /^(([0-9]{2}:)?[0-9]{2}:[0-9]{2}[,.]{1}[0-9]{3}) --\> (([0-9]{2}:)?[0-9]{2}:[0-9]{2}[,.]{1}[0-9]{3})(.*)/;
1944
+
1945
+ function seconds(timecode) {
1946
+ var els = timecode.split(':');
1947
+ if (els.length == 2) els.unshift(0);
1948
+ return els[0] * 60 * 60 + els[1] * 60 + parseFloat(els[2].replace(',','.'));
1949
+ }
1950
+
1951
+ player.subtitles = [];
1952
+
1953
+ var url = track.attr("src");
1954
+
1955
+ if (!url) return;
1956
+
1957
+ $.get(url, function(txt) {
1958
+
1959
+ for (var i = 0, lines = txt.split("\n"), len = lines.length, entry = {}, title, timecode, text, cue; i < len; i++) {
1960
+
1961
+ timecode = TIMECODE_RE.exec(lines[i]);
1962
+
1963
+ if (timecode) {
1964
+
1965
+ // title
1966
+ title = lines[i - 1];
1967
+
1968
+ // text
1969
+ text = "<p>" + lines[++i] + "</p><br/>";
1970
+ while ($.trim(lines[++i]) && i < lines.length) text += "<p>" + lines[i] + "</p><br/>";
1971
+
1972
+ // entry
1973
+ entry = {
1974
+ title: title,
1975
+ startTime: seconds(timecode[1]),
1976
+ endTime: seconds(timecode[2] || timecode[3]),
1977
+ text: text
1978
+ };
1979
+
1980
+ cue = { time: entry.startTime, subtitle: entry };
1981
+
1982
+ player.subtitles.push(entry);
1983
+ player.cuepoints.push(cue);
1984
+ player.cuepoints.push({ time: entry.endTime, subtitleEnd: title });
1985
+
1986
+ // initial cuepoint
1987
+ if (entry.startTime === 0) {
1988
+ player.trigger("cuepoint", cue);
1989
+ }
1990
+
1991
+ }
1992
+
1993
+ }
1994
+
1995
+ }).fail(function() {
1996
+ player.trigger("error", {code: 8, url: url });
1997
+ return false;
1998
+ });
1999
+
2000
+ var wrap = $("<div class='fp-subtitle'/>", root).appendTo(root),
2001
+ currentPoint;
2002
+
2003
+ player.bind("cuepoint", function(e, api, cue) {
2004
+
2005
+ if (cue.subtitle) {
2006
+ currentPoint = cue.index;
2007
+ wrap.html(cue.subtitle.text).addClass("fp-active");
2008
+
2009
+ } else if (cue.subtitleEnd) {
2010
+ wrap.removeClass("fp-active");
2011
+ }
2012
+
2013
+ }).bind("seek", function(e, api, time) {
2014
+
2015
+ $.each(player.cuepoints || [], function(i, cue) {
2016
+ var entry = cue.subtitle;
2017
+
2018
+ if (entry && currentPoint != cue.index) {
2019
+ if (time >= cue.time && time <= entry.endTime) player.trigger("cuepoint", cue);
2020
+ else wrap.removeClass("fp-active");
2021
+ }
2022
+
2023
+ });
2024
+
2025
+ });
2026
+
2027
+ });
2028
+
2029
+
2030
+
2031
+ flowplayer(function(player, root) {
2032
+
2033
+ var id = player.conf.analytics, time = 0, last = 0;
2034
+
2035
+ if (id) {
2036
+
2037
+ // load Analytics script if needed
2038
+ if (typeof _gat == 'undefined') $.getScript("http://www.google-analytics.com/ga.js");
2039
+
2040
+ function track(e) {
2041
+
2042
+ if (time && typeof _gat != 'undefined') {
2043
+ var tracker = _gat._getTracker(id),
2044
+ video = player.video;
2045
+
2046
+ tracker._setAllowLinker(true);
2047
+
2048
+ // http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html
2049
+ tracker._trackEvent(
2050
+ "Video / Seconds played",
2051
+ player.engine + "/" + video.type,
2052
+ root.attr("title") || video.src.split("/").slice(-1)[0].replace(TYPE_RE, ''),
2053
+ Math.round(time / 1000)
2054
+ );
2055
+ time = 0;
2056
+ }
2057
+
2058
+ }
2059
+
2060
+ player.bind("load unload", track).bind("progress", function() {
2061
+
2062
+ if (!player.seeking) {
2063
+ time += last ? (+new Date - last) : 0;
2064
+ last = +new Date;
2065
+ }
2066
+
2067
+ }).bind("pause", function() {
2068
+ last = 0;
2069
+ });
2070
+
2071
+ $(window).unload(track);
2072
+
2073
+ }
2074
+
2075
+ });
2076
+ if (flowplayer.support.touch) {
2077
+
2078
+ flowplayer(function(player, root) {
2079
+ var isAndroid = /Android/.test(UA),
2080
+ isSilk = /Silk/.test(UA);
2081
+
2082
+ // hide volume
2083
+ if (!flowplayer.support.volume) {
2084
+ root.addClass("no-volume no-mute");
2085
+ }
2086
+
2087
+ // fake mouseover effect with click
2088
+ root.one("touchstart", function() {
2089
+ isAndroid && player.toggle();
2090
+
2091
+ }).bind("touchstart", function(e) {
2092
+
2093
+ if (player.playing && !root.hasClass("is-mouseover")) {
2094
+ root.addClass("is-mouseover").removeClass("is-mouseout");
2095
+ return false;
2096
+ }
2097
+
2098
+ if (player.paused && root.hasClass("is-mouseout")) {
2099
+ player.toggle();
2100
+ }
2101
+
2102
+ });
2103
+
2104
+ // native fullscreen
2105
+ if (player.conf.native_fullscreen && $.browser.webkit) {
2106
+ player.fullscreen = function() {
2107
+ $('video', root)[0].webkitEnterFullScreen();
2108
+ }
2109
+ }
2110
+
2111
+
2112
+ // Android browser gives video.duration == 1 until second 'timeupdate' event
2113
+ (isAndroid || isSilk) && player.bind("ready", function() {
2114
+
2115
+ var video = $('video', root);
2116
+ video.one('canplay', function() {
2117
+ video[0].play();
2118
+ });
2119
+ video[0].play();
2120
+
2121
+ player.bind("progress.dur", function() {
2122
+
2123
+ var duration = video[0].duration;
2124
+
2125
+ if (duration !== 1) {
2126
+ player.video.duration = duration;
2127
+ $(".fp-duration", root).html(format(duration));
2128
+ player.unbind("progress.dur");
2129
+ }
2130
+ });
2131
+ });
2132
+
2133
+
2134
+ });
2135
+
2136
+ }
2137
+
2138
+ flowplayer(function(player, root) {
2139
+
2140
+ // no embedding
2141
+ if (player.conf.embed === false) return;
2142
+
2143
+ var conf = player.conf,
2144
+ ui = $(".fp-ui", root),
2145
+ trigger = $("<a/>", { "class": "fp-embed", title: 'Copy to your site'}).appendTo(ui),
2146
+ target = $("<div/>", { 'class': 'fp-embed-code'})
2147
+ .append("<label>Paste this HTML code on your site to embed.</label><textarea/>").appendTo(ui),
2148
+ area = $("textarea", target);
2149
+
2150
+ player.embedCode = function() {
2151
+
2152
+ var video = player.video,
2153
+ width = video.width || root.width(),
2154
+ height = video.height || root.height(),
2155
+ el = $("<div/>", { 'class': 'flowplayer', css: { width: width, height: height }}),
2156
+ tag = $("<video/>").appendTo(el);
2157
+
2158
+ // configuration
2159
+ $.each(['origin', 'analytics', 'logo', 'key', 'rtmp'], function(i, key) {
2160
+ if (conf[key]) el.attr("data-" + key, conf[key]);
2161
+ });
2162
+
2163
+ // sources
2164
+ $.each(video.sources, function(i, src) {
2165
+ tag.append($("<source/>", { type: "video/" + src.type, src: src.src }));
2166
+ });
2167
+
2168
+ var code = $("<foo/>", { src: "http://embed.flowplayer.org/5.3.2/embed.min.js" }).append(el);
2169
+ return $("<p/>").append(code).html().replace(/<(\/?)foo/g, "<$1script");
2170
+ };
2171
+
2172
+ root.fptip(".fp-embed", "is-embedding");
2173
+
2174
+ area.click(function() {
2175
+ this.select();
2176
+ });
2177
+
2178
+ trigger.click(function() {
2179
+ area.text(player.embedCode());
2180
+ area[0].focus();
2181
+ area[0].select();
2182
+ });
2183
+
2184
+ });
2185
+
2186
+
2187
+ $.fn.fptip = function(trigger, active) {
2188
+
2189
+ return this.each(function() {
2190
+
2191
+ var root = $(this);
2192
+
2193
+ function close() {
2194
+ root.removeClass(active);
2195
+ $(document).unbind(".st");
2196
+ }
2197
+
2198
+ $(trigger || "a", this).click(function(e) {
2199
+
2200
+ e.preventDefault();
2201
+
2202
+ root.toggleClass(active);
2203
+
2204
+ if (root.hasClass(active)) {
2205
+
2206
+ $(document).bind("keydown.st", function(e) {
2207
+ if (e.which == 27) close();
2208
+
2209
+ // click:close
2210
+ }).bind("click.st", function(e) {
2211
+ if (!$(e.target).parents("." + active).length) close();
2212
+ });
2213
+ }
2214
+
2215
+ });
2216
+
2217
+ });
2218
+
2219
+ };
2220
+
2221
+ }(jQuery);
2222
+ flowplayer(function(a,b){function j(a){var b=c("<a/>")[0];return b.href=a,b.hostname}var c=jQuery,d=a.conf,e=d.swf.indexOf("flowplayer.org")&&d.e&&d.origin,f=e?j(e):location.hostname,g=d.key;location.protocol=="file:"&&(f="localhost"),a.load.ed=1,d.hostname=f,d.origin=e||location.href,e&&b.addClass("is-embedded"),typeof g=="string"&&(g=g.split(/,\s*/));if(g&&typeof key_check=="function"&&key_check(g,f))d.logo&&b.append(c("<a>",{"class":"fp-logo",href:e,target:"_top"}).append(c("<img/>",{src:d.logo})));else{var h=c("<a/>",{href:"http://flowplayer.org",target:"_top"}).appendTo(b),i=c(".fp-controls",b);a.bind("pause resume finish unload",function(b){/pause|resume/.test(b.type)&&a.engine!="flash"?(h.show().css({position:"absolute",left:16,bottom:36,zIndex:99999,width:100,height:20,backgroundImage:"url("+[".png","logo","/",".org",".flowplayer","stream","//"].reverse().join("")+")"}),a.load.ed=h.is(":visible")):h.hide()})}});
lib/flowplayer.swf ADDED
Binary file
lib/functional.css ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .flowplayer{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
+ .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
+ .flowplayer a:focus{outline:0}
4
+ .flowplayer video{width:100%}
5
+ .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
+ .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
+ .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
+ .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
+ .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
+ .flowplayer .fp-message p{color:#666;font-size:95%}
11
+ .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
+ .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
+ .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
+ .is-mouseover.flowplayer .fp-controls{bottom:0}
15
+ .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
+ .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
+ .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
+ .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
+ .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
+ .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
+ .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
+ .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
+ .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
+ .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
+ .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
+ .flowplayer .fp-help .fp-help-section{margin:3%}
27
+ .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
+ .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
+ .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
+ .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
+ .flowplayer .fp-help .fp-close{display:block}
32
+ @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
+ }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
+ .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
+ .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
+ .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
+ .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black.png);}
39
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black@x2.png)}
40
+ }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white@x2.png)}
41
+ }.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
42
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
43
+ }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png)}
44
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png)}
45
+ }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
46
+ .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
47
+ .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:40px;cursor:pointer;display:none;z-index:100;}
48
+ .flowplayer .fp-logo img{width:100%}
49
+ .is-embedded.flowplayer .fp-logo{display:block}
50
+ .fixed-controls.flowplayer .fp-logo{bottom:15px}
51
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:10px;left:auto;right:10px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
52
+ .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none}
53
+ .flowplayer .fp-play{display:none;width:27px;height:30px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
54
+ .play-button.flowplayer .fp-play{display:block}
55
+ .is-paused.flowplayer .fp-play{background-position:9px 7px}
56
+ .flowplayer.is-ready.is-closeable .fp-unload{display:block}
57
+ .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
58
+ .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
59
+ .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
60
+ .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:10px;height:10px;margin:0 165px 0 55px;}
61
+ .no-volume.flowplayer .fp-timeline{margin-right:75px}
62
+ .no-mute.flowplayer .fp-timeline{margin-right:55px}
63
+ .play-button.flowplayer .fp-timeline{margin-left:72px}
64
+ .is-long.flowplayer .fp-timeline{margin:0 195px 0 85px;}
65
+ .no-volume.is-long.flowplayer .fp-timeline{margin-right:105px}
66
+ .no-mute.is-long.flowplayer .fp-timeline{margin-right:85px}
67
+ .play-button.is-long.flowplayer .fp-timeline{margin-left:102px}
68
+ .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 120px 0 10px}
69
+ .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:30px}
70
+ .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:10px}
71
+ .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
72
+ .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
73
+ .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
74
+ .flowplayer .fp-volume{position:absolute;top:11px;right:10px}
75
+ .flowplayer .fp-mute{width:10px;height:15px;float:left;position:relative;top:-3.5px;left:;cursor:pointer;background-position:-2px -99px;}
76
+ .no-mute.flowplayer .fp-mute{display:none}
77
+ .flowplayer .fp-volumeslider{width:90px;height:8px;cursor:col-resize;float:left;}
78
+ .no-volume.flowplayer .fp-volumeslider{display:none}
79
+ .flowplayer .fp-volumelevel{height:100%}
80
+ .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
81
+ .flowplayer .fp-time.is-inverted .fp-duration{display:none}
82
+ .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
83
+ .flowplayer .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:10px}
84
+ .no-time.flowplayer .fp-time{display:none}
85
+ .is-long.flowplayer .fp-time em{width:65px}
86
+ .flowplayer .fp-elapsed{left:10px;}
87
+ .play-button.flowplayer .fp-elapsed{left:27px}
88
+ .flowplayer .fp-remaining,.flowplayer .fp-duration{right:120px;color:#eee;}
89
+ .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:30px}
90
+ .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:10px}
91
+ .flowplayer .fp-remaining{display:none}
92
+ .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
93
+ .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
94
+ .flowplayer.aside-time .fp-time{position:absolute;top:10px;left:10px;bottom:auto !important;width:100px;}
95
+ .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
96
+ .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:10px}
97
+ .flowplayer.is-long.aside-time .fp-time{width:130px}
98
+ .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
99
+ .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
100
+ .flowplayer.is-poster .fp-engine{top:-9999em}
101
+ .flowplayer.is-loading .fp-waiting{display:block}
102
+ .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
103
+ .flowplayer.is-loading .fp-ui{background-position:-9999em}
104
+ .flowplayer.is-seeking .fp-waiting{display:block}
105
+ .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
106
+ .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
107
+ .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
108
+ .flowplayer.is-error .fp-message{display:block}
109
+ .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
110
+ .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
111
+ .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
112
+ .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
113
+ .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
114
+ .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
115
+ .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:30px}
116
+ .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
117
+ .flowplayer.fixed-controls .fp-volume{display:block}
118
+ .flowplayer.fixed-controls .fp-controls{bottom:-30px;}
119
+ .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
120
+ .flowplayer.fixed-controls .fp-time em{bottom:-20px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
121
+ .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:10px}
122
+ .flowplayer.is-disabled .fp-progress{background-color:#999}
123
+ .flowplayer .fp-embed{position:absolute;top:10px;left:10px;display:block;width:25px;height:20px;background-position:3px -237px}
124
+ .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
125
+ .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
126
+ .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
127
+ .flowplayer .fp-embed-code label{display:block;color:#999}
128
+ .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
129
+ .flowplayer.aside-time .fp-embed{left:100px}
130
+ .flowplayer.aside-time .fp-embed-code{left:130px}
131
+ .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
132
+ .flowplayer.is-long.aside-time .fp-embed{left:130px}
133
+ .flowplayer.no-time .fp-embed{left:10px !important}
134
+ @-moz-keyframes pulse{0%{opacity:0}
135
+ 100%{opacity:1}
136
+ }@-webkit-keyframes pulse{0%{opacity:0}
137
+ 100%{opacity:1}
138
+ }@-o-keyframes pulse{0%{opacity:0}
139
+ 100%{opacity:1}
140
+ }@-ms-keyframes pulse{0%{opacity:0}
141
+ 100%{opacity:1}
142
+ }@keyframes pulse{0%{opacity:0}
143
+ 100%{opacity:1}
144
+ }.flowplayer .fp-controls{background-color:#111}
145
+ .flowplayer .fp-timeline{background-color:#555}
146
+ .flowplayer .fp-buffer{background-color:#eee}
147
+ .flowplayer .fp-progress{background-color:#4da5d8}
148
+ .flowplayer .fp-volumelevel{background-color:#fff}
149
+ .flowplayer .fp-volumeslider{background-color:#555}
150
+ .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.2) rgba(17,17,17,0.05)}
151
+ .flowplayer .fp-controls,.flowplayer .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.4)),to(rgba(255,255,255,0.01)))}
152
+ .flowplayer .fp-timeline,.flowplayer .fp-buffer,.flowplayer .fp-progress,.flowplayer .fp-volumeslider,.flowplayer .fp-volumelevel{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}
153
+ .flowplayer.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
154
+ .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{border-color:#eee #ccc}
155
+ .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{background-color:#ccc;font-size:10px}
156
+ .flowplayer.color-alt .fp-progress{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
157
+ .flowplayer.color-alt .fp-timeline,.flowplayer.color-alt .fp-volumeslider{background-color:#111}
158
+ .flowplayer.color-alt2 .fp-progress{background-color:#900}
lib/img/Thumbs.db ADDED
Binary file
lib/img/black.png ADDED
Binary file
lib/img/black@x2.png ADDED
Binary file
lib/img/play_black.png ADDED
Binary file
lib/img/play_black@x2.png ADDED
Binary file
lib/img/play_white.png ADDED
Binary file
lib/img/play_white@x2.png ADDED
Binary file
lib/img/playful_black.png ADDED
Binary file
lib/img/playful_black@x2.png ADDED
Binary file
lib/img/playful_white.png ADDED
Binary file
lib/img/playful_white@x2.png ADDED
Binary file
lib/img/white.png ADDED
Binary file
lib/img/white@x2.png ADDED
Binary file
lib/minimalist.css ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .flowplayer{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
+ .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
+ .flowplayer a:focus{outline:0}
4
+ .flowplayer video{width:100%}
5
+ .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
+ .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
+ .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
+ .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
+ .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
+ .flowplayer .fp-message p{color:#666;font-size:95%}
11
+ .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
+ .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
+ .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
+ .is-mouseover.flowplayer .fp-controls{bottom:0}
15
+ .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
+ .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
+ .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
+ .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
+ .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
+ .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
+ .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
+ .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
+ .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
+ .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
+ .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
+ .flowplayer .fp-help .fp-help-section{margin:3%}
27
+ .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
+ .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
+ .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
+ .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
+ .flowplayer .fp-help .fp-close{display:block}
32
+ @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
+ }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
+ .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
+ .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
+ .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
+ .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black.png);}
39
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black@x2.png)}
40
+ }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white@x2.png)}
41
+ }.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
42
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
43
+ }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png)}
44
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png)}
45
+ }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
46
+ .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
47
+ .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:30px;cursor:pointer;display:none;z-index:100;}
48
+ .flowplayer .fp-logo img{width:100%}
49
+ .is-embedded.flowplayer .fp-logo{display:block}
50
+ .fixed-controls.flowplayer .fp-logo{bottom:15px}
51
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:5px;left:auto;right:5px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
52
+ .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none}
53
+ .flowplayer .fp-play{display:none;width:27px;height:20px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
54
+ .play-button.flowplayer .fp-play{display:block}
55
+ .is-paused.flowplayer .fp-play{background-position:9px 7px}
56
+ .flowplayer.is-ready.is-closeable .fp-unload{display:block}
57
+ .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
58
+ .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
59
+ .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
60
+ .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:5px;height:10px;margin:0 150px 0 45px;}
61
+ .no-volume.flowplayer .fp-timeline{margin-right:60px}
62
+ .no-mute.flowplayer .fp-timeline{margin-right:45px}
63
+ .play-button.flowplayer .fp-timeline{margin-left:67px}
64
+ .is-long.flowplayer .fp-timeline{margin:0 180px 0 75px;}
65
+ .no-volume.is-long.flowplayer .fp-timeline{margin-right:90px}
66
+ .no-mute.is-long.flowplayer .fp-timeline{margin-right:75px}
67
+ .play-button.is-long.flowplayer .fp-timeline{margin-left:97px}
68
+ .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 110px 0 5px}
69
+ .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:20px}
70
+ .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:5px}
71
+ .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
72
+ .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
73
+ .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
74
+ .flowplayer .fp-volume{position:absolute;top:7.5px;right:5px}
75
+ .flowplayer .fp-mute{width:10px;height:15px;float:left;position:relative;top:-5px;left:;cursor:pointer;background-position:-2px -99px;}
76
+ .no-mute.flowplayer .fp-mute{display:none}
77
+ .flowplayer .fp-volumeslider{width:90px;height:5px;cursor:col-resize;float:left;}
78
+ .no-volume.flowplayer .fp-volumeslider{display:none}
79
+ .flowplayer .fp-volumelevel{height:100%}
80
+ .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
81
+ .flowplayer .fp-time.is-inverted .fp-duration{display:none}
82
+ .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
83
+ .flowplayer .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:5px}
84
+ .no-time.flowplayer .fp-time{display:none}
85
+ .is-long.flowplayer .fp-time em{width:65px}
86
+ .flowplayer .fp-elapsed{left:5px;}
87
+ .play-button.flowplayer .fp-elapsed{left:27px}
88
+ .flowplayer .fp-remaining,.flowplayer .fp-duration{right:110px;color:#eee;}
89
+ .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:20px}
90
+ .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:5px}
91
+ .flowplayer .fp-remaining{display:none}
92
+ .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
93
+ .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
94
+ .flowplayer.aside-time .fp-time{position:absolute;top:5px;left:5px;bottom:auto !important;width:85px;}
95
+ .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
96
+ .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:5px}
97
+ .flowplayer.is-long.aside-time .fp-time{width:130px}
98
+ .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
99
+ .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
100
+ .flowplayer.is-poster .fp-engine{top:-9999em}
101
+ .flowplayer.is-loading .fp-waiting{display:block}
102
+ .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
103
+ .flowplayer.is-loading .fp-ui{background-position:-9999em}
104
+ .flowplayer.is-seeking .fp-waiting{display:block}
105
+ .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
106
+ .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
107
+ .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
108
+ .flowplayer.is-error .fp-message{display:block}
109
+ .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
110
+ .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
111
+ .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
112
+ .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
113
+ .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
114
+ .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
115
+ .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:20px}
116
+ .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
117
+ .flowplayer.fixed-controls .fp-volume{display:block}
118
+ .flowplayer.fixed-controls .fp-controls{bottom:-20px;}
119
+ .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
120
+ .flowplayer.fixed-controls .fp-time em{bottom:-15px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
121
+ .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:5px}
122
+ .flowplayer.is-disabled .fp-progress{background-color:#999}
123
+ .flowplayer .fp-embed{position:absolute;top:5px;left:5px;display:block;width:25px;height:20px;background-position:3px -237px}
124
+ .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
125
+ .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
126
+ .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
127
+ .flowplayer .fp-embed-code label{display:block;color:#999}
128
+ .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
129
+ .flowplayer.aside-time .fp-embed{left:85px}
130
+ .flowplayer.aside-time .fp-embed-code{left:115px}
131
+ .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
132
+ .flowplayer.is-long.aside-time .fp-embed{left:130px}
133
+ .flowplayer.no-time .fp-embed{left:5px !important}
134
+ @-moz-keyframes pulse{0%{opacity:0}
135
+ 100%{opacity:1}
136
+ }@-webkit-keyframes pulse{0%{opacity:0}
137
+ 100%{opacity:1}
138
+ }@-o-keyframes pulse{0%{opacity:0}
139
+ 100%{opacity:1}
140
+ }@-ms-keyframes pulse{0%{opacity:0}
141
+ 100%{opacity:1}
142
+ }@keyframes pulse{0%{opacity:0}
143
+ 100%{opacity:1}
144
+ }.flowplayer .fp-controls{background-color:#333;background-color:rgba(51,51,51,0.6)}
145
+ .flowplayer.fixed-controls .fp-controls{background-color:#333}
146
+ .flowplayer .fp-timeline{background-color:#666}
147
+ .flowplayer .fp-buffer{background-color:#eee}
148
+ .flowplayer .fp-progress{background-color:#00a7c8}
149
+ .flowplayer .fp-volumeslider{background-color:#000}
150
+ .flowplayer .fp-volumelevel{background-color:#fff}
151
+ .flowplayer .fp-play{height:24px}
152
+ .flowplayer.color-light .fp-controls{background-color:rgba(255,255,255,0.6)}
153
+ .flowplayer.color-light.fixed-controls .fp-controls{background-color:#fff}
154
+ .flowplayer.color-light .fp-volumeslider{background-color:#ddd}
155
+ .flowplayer.color-light .fp-volumelevel{background-color:#222}
156
+ .flowplayer.color-alt .fp-progress{background-color:#fff}
157
+ .flowplayer.color-alt .fp-buffer{background-color:#999}
158
+ .flowplayer.color-alt2 .fp-progress{background-color:#900}
lib/playful.css ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .flowplayer{position:relative;width:100%;text-align:left;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
+ .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
+ .flowplayer a:focus{outline:0}
4
+ .flowplayer video{width:100%}
5
+ .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
+ .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
+ .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
+ .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
+ .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
+ .flowplayer .fp-message p{color:#666;font-size:95%}
11
+ .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
+ .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
+ .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
+ .is-mouseover.flowplayer .fp-controls{bottom:0}
15
+ .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
+ .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
+ .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
+ .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
+ .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
+ .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
+ .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
+ .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
+ .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
+ .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
+ .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
+ .flowplayer .fp-help .fp-help-section{margin:3%}
27
+ .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
+ .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
+ .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
+ .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
+ .flowplayer .fp-help .fp-close{display:block}
32
+ @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
+ }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
+ .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
+ .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
+ .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/playful_white.png);background-size:37px 300px;}
38
+ .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/playful_black.png);}
39
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/playful_black@x2.png)}
40
+ }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/playful_white@x2.png)}
41
+ }.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
42
+ @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
43
+ }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png)}
44
+ @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png)}
45
+ }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
46
+ .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
47
+ .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:45px;cursor:pointer;display:none;z-index:100;}
48
+ .flowplayer .fp-logo img{width:100%}
49
+ .is-embedded.flowplayer .fp-logo{display:block}
50
+ .fixed-controls.flowplayer .fp-logo{bottom:15px}
51
+ .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:12px;left:auto;right:12px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer}
52
+ .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none}
53
+ .flowplayer .fp-play{display:none;width:27px;height:35px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
54
+ .play-button.flowplayer .fp-play{display:block}
55
+ .is-paused.flowplayer .fp-play{background-position:9px 7px}
56
+ .flowplayer.is-ready.is-closeable .fp-unload{display:block}
57
+ .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
58
+ .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important}
59
+ .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
60
+ .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:12px;height:11px;margin:0 199px 0 59px;}
61
+ .no-volume.flowplayer .fp-timeline{margin-right:109px}
62
+ .no-mute.flowplayer .fp-timeline{margin-right:59px}
63
+ .play-button.flowplayer .fp-timeline{margin-left:74px}
64
+ .is-long.flowplayer .fp-timeline{margin:0 229px 0 89px;}
65
+ .no-volume.is-long.flowplayer .fp-timeline{margin-right:139px}
66
+ .no-mute.is-long.flowplayer .fp-timeline{margin-right:89px}
67
+ .play-button.is-long.flowplayer .fp-timeline{margin-left:104px}
68
+ .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 152px 0 12px}
69
+ .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:62px}
70
+ .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:12px}
71
+ .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
72
+ .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
73
+ .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
74
+ .flowplayer .fp-volume{position:absolute;top:12px;right:12px}
75
+ .flowplayer .fp-mute{width:38px;height:20px;float:left;position:relative;top:-4.5px;left:;cursor:pointer;background-position:-2px -99px;}
76
+ .no-mute.flowplayer .fp-mute{display:none}
77
+ .flowplayer .fp-volumeslider{width:90px;height:11px;cursor:col-resize;float:left;}
78
+ .no-volume.flowplayer .fp-volumeslider{display:none}
79
+ .flowplayer .fp-volumelevel{height:100%}
80
+ .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
81
+ .flowplayer .fp-time.is-inverted .fp-duration{display:none}
82
+ .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
83
+ .flowplayer .fp-time em{width:35px;height:11px;line-height:11px;text-align:center;position:absolute;bottom:12px}
84
+ .no-time.flowplayer .fp-time{display:none}
85
+ .is-long.flowplayer .fp-time em{width:65px}
86
+ .flowplayer .fp-elapsed{left:12px;}
87
+ .play-button.flowplayer .fp-elapsed{left:27px}
88
+ .flowplayer .fp-remaining,.flowplayer .fp-duration{right:152px;color:#eee;}
89
+ .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:62px}
90
+ .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:12px}
91
+ .flowplayer .fp-remaining{display:none}
92
+ .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
93
+ .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
94
+ .flowplayer.aside-time .fp-time{position:absolute;top:12px;left:12px;bottom:auto !important;width:110px;}
95
+ .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
96
+ .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:12px}
97
+ .flowplayer.is-long.aside-time .fp-time{width:130px}
98
+ .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
99
+ .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
100
+ .flowplayer.is-poster .fp-engine{top:-9999em}
101
+ .flowplayer.is-loading .fp-waiting{display:block}
102
+ .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
103
+ .flowplayer.is-loading .fp-ui{background-position:-9999em}
104
+ .flowplayer.is-seeking .fp-waiting{display:block}
105
+ .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333}
106
+ .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
107
+ .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
108
+ .flowplayer.is-error .fp-message{display:block}
109
+ .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
110
+ .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
111
+ .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
112
+ .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
113
+ .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
114
+ .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
115
+ .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:35px}
116
+ .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
117
+ .flowplayer.fixed-controls .fp-volume{display:block}
118
+ .flowplayer.fixed-controls .fp-controls{bottom:-35px;}
119
+ .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
120
+ .flowplayer.fixed-controls .fp-time em{bottom:-23px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
121
+ .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:12px}
122
+ .flowplayer.is-disabled .fp-progress{background-color:#999}
123
+ .flowplayer .fp-embed{position:absolute;top:12px;left:12px;display:block;width:25px;height:20px;background-position:3px -237px}
124
+ .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
125
+ .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
126
+ .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
127
+ .flowplayer .fp-embed-code label{display:block;color:#999}
128
+ .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
129
+ .flowplayer.aside-time .fp-embed{left:110px}
130
+ .flowplayer.aside-time .fp-embed-code{left:140px}
131
+ .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
132
+ .flowplayer.is-long.aside-time .fp-embed{left:130px}
133
+ .flowplayer.no-time .fp-embed{left:12px !important}
134
+ @-moz-keyframes pulse{0%{opacity:0}
135
+ 100%{opacity:1}
136
+ }@-webkit-keyframes pulse{0%{opacity:0}
137
+ 100%{opacity:1}
138
+ }@-o-keyframes pulse{0%{opacity:0}
139
+ 100%{opacity:1}
140
+ }@-ms-keyframes pulse{0%{opacity:0}
141
+ 100%{opacity:1}
142
+ }@keyframes pulse{0%{opacity:0}
143
+ 100%{opacity:1}
144
+ }.flowplayer .fp-controls{background-color:#111}
145
+ .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{background-color:#555;background-image:-moz-linear-gradient(rgba(255,255,255,0.01),rgba(255,255,255,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.01)),to(rgba(255,255,255,0.3)))}
146
+ .flowplayer .fp-buffer{background-color:#eee}
147
+ .flowplayer .fp-progress{background-color:#008000}
148
+ .flowplayer .fp-volumelevel{background-color:#fff}
149
+ .flowplayer .fp-mute{display:block;width:38px;height:20px;background-position:0 -79px;}
150
+ .is-muted.flowplayer .fp-mute{background-position:0 -109px;opacity:.85;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85)}
151
+ .flowplayer .fp-play{background-position:9px -20px;}
152
+ .is-paused.flowplayer .fp-play{background-position:9px 11px}
153
+ .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.3) rgba(17,17,17,0.05)}
154
+ .flowplayer .fp-controls,.flowplayer .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.3)),to(rgba(255,255,255,0.01)))}
155
+ .flowplayer .fp-timeline,.flowplayer .fp-progress,.flowplayer .fp-buffer,.flowplayer .fp-volumeslider,.flowplayer .fp-volumelevel{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
156
+ .flowplayer.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
157
+ .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{border-color:#eee #ccc}
158
+ .flowplayer.color-alt .fp-progress,.flowplayer.color-alt .fp-volumelevel{background-color:#111}
159
+ .flowplayer.color-alt2 .fp-progress,.flowplayer.color-alt2 .fp-volumelevel{background-color:#900}
readme.txt ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Easy Video Player ===
2
+ Contributors: naa986
3
+ Donate link: http://easywpguide.wordpress.com/
4
+ Tags: video, wpvideo, flash, html5, iPad, iphone, ipod, mobile, playlists, embed video, flowplayer, video html5, flash player, player, video player
5
+ Requires at least: 3.0.1
6
+ Tested up to: 3.5.1
7
+ Stable tag: 1.0.1
8
+ License: GPLv3 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
+
11
+ Easy Video Player allows you to embed videos into your WordPress site.
12
+
13
+ == Description ==
14
+
15
+ Easy Video Player is a user-friendly WordPress plugin to showcase your videos. You can embed both self-hosted videos or videos that are external hosted using direct links.
16
+
17
+ = Easy Video Player Features =
18
+
19
+ * Embed MP4 videos into your blog.
20
+ * Embed responsive videos for a better user experience while viewing from a mobile device.
21
+ * Embed HTML5 videos which are compatible with all major browsers.
22
+
23
+ = Easy Video Player Plugin Usage =
24
+
25
+ *Settings Configuration*
26
+
27
+ It's pretty easy to set up this plugin. Once you have installed the plugin simply navigate to the Settings menu where you will be able to configure some options. Mostly you just to need check the "Enable jQuery" option. That will allow the plugin to make use of jQuery library.
28
+
29
+ *Embedding Shortcodes for the Videos*
30
+
31
+ Now it's time to finally embed a video shortcode. To do this create a new post/page and use the following shortcode:
32
+
33
+ `[evp_embed_video url="http://example.com/wp-content/uploads/videos/myvid.mp4"]`
34
+
35
+ here, url is a shortcode parameter that you need to replace the actual URL of the video file.
36
+
37
+ For detailed documentation please visit the [Easy Video Player](http://easywpguide.wordpress.com/?p=25) plugin page
38
+
39
+
40
+ == Installation ==
41
+
42
+ 1. Go to the Add New plugins screen in your WordPress Dashboard
43
+ 1. Click the upload tab
44
+ 1. Browse for the plugin file (easy-video-player.zip) on your computer
45
+ 1. Click "Install Now" and then hit the activate button
46
+ 1. Now, go to the settings menu of the plugin and follow the instructions for embedding videos.
47
+
48
+ == Frequently Asked Questions ==
49
+
50
+ = Can this plugin be used to embed videos on my WordPress blog? =
51
+
52
+ Yes.
53
+
54
+ = Are the videos embedded by this plugin playable on iOS devices? =
55
+
56
+ Yes.
57
+
58
+ == Screenshots ==
59
+
60
+ For screenshots please visit the [Easy Video Player](http://easywpguide.wordpress.com/?p=25) plugin page
61
+
62
+ == Changelog ==
63
+
64
+ = 1.0.1 =
65
+ * First commit